BEAM-native A2A transport.
Uses GenServer.call/3 for unary requests (request-reply semantics are
a perfect fit; cross-node works natively) and Phoenix.PubSub for
streaming (server broadcasts events on a per-stream topic; client
subscribes and assembles a Stream).
Same semantic contract as A2aEngine.Transport.Http, sub-ms latency
for connected BEAM peers.
Server
Hosts add A2aEngine.Transport.BeamNative.Server to their supervision
tree (or start_link directly). See that module's docs.
Client
send_request/3 — unary call. target may be a local atom
(:my_agent), a remote tuple ({:my_agent, :"node@host"}), or a pid.
stream_request/3 — streaming call. Host-level opts must include
:pubsub naming a running Phoenix.PubSub.
Targeting
The standard Erlang GenServer call mechanics apply: atoms for local
names, {name, node} tuples for remote names, or pids.