A2aEngine.Transport.BeamNative (a2a_engine v0.1.0)

Copy Markdown View Source

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.