# `ReqManagedAgents.Providers.ClaudeManagedAgents.Stream`
[🔗](https://github.com/cash-mckeeman/req_managed_agents/blob/v0.13.0/req_managed_agents/lib/req_managed_agents/providers/claude_managed_agents/stream.ex#L1)

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}}

# `stream`

```elixir
@spec stream(
  ReqManagedAgents.Providers.ClaudeManagedAgents.Client.t()
  | 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).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
