ReqManagedAgents.Stream (ReqManagedAgents v0.1.0)

Copy Markdown View Source

Long-lived SSE consumer for GET /v1/sessions/{id}/events/stream.

Uses Req with into: :self over an injectable Finch pool (default ReqManagedAgents.StreamFinch) so minutes-long streams don't stall the default pool. Blocks for the life of the connection — run it inside a Task owned by your session process.

Messages sent to subscriber, tagged with the caller-supplied ref:

{:managed_agents, ref, :connected}   # sent once, when the stream attaches, before any event
{:managed_agents, ref, {:event, decoded_map}}
{:managed_agents, ref, :done}
{:managed_agents, ref, {:error, reason}}

Summary

Functions

Open the stream for session_id and forward events to subscriber.

Functions

stream(client, session_id, subscriber, opts \\ [])

@spec stream(ReqManagedAgents.Client.t(), String.t(), pid(), keyword()) :: :ok

Open the stream for session_id and forward events to subscriber.

Options: :ref (term tagging each message; default make_ref()), :finch (Finch pool name; default ReqManagedAgents.StreamFinch), :receive_timeout (staleness guard; default 30 minutes).