# `ACP.Connection`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L1)

GenServer managing a bidirectional JSON-RPC 2.0 connection over IO streams.

Handles line-delimited JSON over stdin/stdout (or any IO streams).
Manages request/response correlation and message routing via a Side module.

# `t`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L24)

```elixir
@type t() :: %ACP.Connection{
  handler_module: term(),
  handler_state: term(),
  input_port: term(),
  next_id: term(),
  output_io: term(),
  pending_responses: term(),
  side_module: term(),
  subscribers: term()
}
```

# `child_spec`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L9)

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `notify`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L51)

Send a notification (no response expected).

# `request`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L46)

Send a request and wait for a response.

# `respond`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L56)

Send a response to a received request.

# `start_link`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L39)

Start a connection GenServer.

Options:
  - `:side` - The side module (ACP.ClientSide or ACP.AgentSide)
  - `:handler` - Module implementing ACP.MessageHandler
  - `:handler_state` - State passed to handler callbacks
  - `:input` - Input IO device or port (default: :stdio)
  - `:output` - Output IO device (default: :stdio)
  - `:name` - Optional GenServer name

# `stop`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L66)

Stop the connection.

# `subscribe`
[🔗](https://github.com/f1729/agent-client-protocol-elixir/blob/main/lib/acp/connection.ex#L61)

Subscribe to stream messages. Returns a reference.

---

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