# Raxol Agent Client Protocol v0.1.0 - API Reference

## Modules

- [Raxol.AgentClientProtocol](Raxol.AgentClientProtocol.md): Elixir/OTP implementation of **ACP (Agent Client Protocol)** — the JSON-RPC
2.0 protocol spoken between code editors ("clients") and AI coding agents
("agents"). See <https://agentclientprotocol.com>.
- [Raxol.AgentClientProtocol.Agent](Raxol.AgentClientProtocol.Agent.md): `use Raxol.AgentClientProtocol.Agent` to implement the **agent** side of
ACP: the process that answers `initialize`, creates/loads sessions, and
serves `session/prompt` turns.
- [Raxol.AgentClientProtocol.Capabilities](Raxol.AgentClientProtocol.Capabilities.md): The negotiated-capability PREDICATE: given a `Connection`'s snapshotted
capability tree, decide whether a wire method is negotiated and therefore
permitted.
- [Raxol.AgentClientProtocol.Client](Raxol.AgentClientProtocol.Client.md): `use Raxol.AgentClientProtocol.Client` to implement the **client** side of
ACP: the editor/host process that answers permission asks, filesystem, and
terminal requests, and receives `session/update` streaming notifications.
- [Raxol.AgentClientProtocol.Client.FsSandbox](Raxol.AgentClientProtocol.Client.FsSandbox.md): Confines `fs/read_text_file` / `fs/write_text_file` handling to a sandbox
directory -- backs `use Raxol.AgentClientProtocol.Client, fs_sandbox:
path` (see that module's moduledoc for the option). Not a general-purpose
path library: it exists solely to give a minimal client a working
filesystem story out of the box.
- [Raxol.AgentClientProtocol.Connection](Raxol.AgentClientProtocol.Connection.md): ONE GenServer per peer link, either role — the correlation + dispatch brain
of ACP.
- [Raxol.AgentClientProtocol.Connection.Ctx](Raxol.AgentClientProtocol.Connection.Ctx.md): Per-dispatch handler context.
- [Raxol.AgentClientProtocol.Connection.TurnState](Raxol.AgentClientProtocol.Connection.TurnState.md): Per-session open-turn state, populated only on a client-role Connection.
- [Raxol.AgentClientProtocol.Ctx](Raxol.AgentClientProtocol.Ctx.md): Ergonomic DX layer for agent handler code running **inside `session/prompt`
turn tasks** (the functions a `turn_runner` closure or one of its subagent
tasks actually calls). This module introduces **no new runtime semantics**:
every function here is a thin, documented wrapper over
`Raxol.AgentClientProtocol.Connection.request/4` (the agent->client
filesystem/terminal/permission requests) or
`Raxol.AgentClientProtocol.Session.post_update/2` /
`Session.request_permission/2` (the Session-owned turn primitives).
- [Raxol.AgentClientProtocol.Delivery](Raxol.AgentClientProtocol.Delivery.md): Delivery vocabulary shared by `Connection` (stamping + direct turn
delivery) and `Client` (turn consumption).
- [Raxol.AgentClientProtocol.Error](Raxol.AgentClientProtocol.Error.md): JSON-RPC 2.0 error object, plus the ACP-specific vendor error codes.
- [Raxol.AgentClientProtocol.Ext.AttachPolicy](Raxol.AgentClientProtocol.Ext.AttachPolicy.md): Fail-closed attach admission behaviour.
- [Raxol.AgentClientProtocol.Ext.AttachPolicy.Bridge](Raxol.AgentClientProtocol.Ext.AttachPolicy.Bridge.md): The BEAM-local `:authorize` bridge — make an in-process attach seam defer
to the SAME fail-closed admission funnel (`Ext.AttachPolicy.Runner`) the
untrusted ACP boundary uses.
- [Raxol.AgentClientProtocol.Ext.AttachPolicy.Grant](Raxol.AgentClientProtocol.Ext.AttachPolicy.Grant.md): A successful attach grant.
- [Raxol.AgentClientProtocol.Ext.AttachPolicy.LocalNode](Raxol.AgentClientProtocol.Ext.AttachPolicy.LocalNode.md): The DEFAULT deny-by-default attach policy.
- [Raxol.AgentClientProtocol.Ext.AttachPolicy.Runner](Raxol.AgentClientProtocol.Ext.AttachPolicy.Runner.md): THE single fail-closed admission funnel. There is exactly ONE funnel:
`authorize/2`. No second `try/catch` wrapper exists anywhere — a second funnel
with weaker timeout/crash semantics would be a dual-ownership hole.
- [Raxol.AgentClientProtocol.Ext.AttachPolicy.Token](Raxol.AgentClientProtocol.Ext.AttachPolicy.Token.md): The capability-token attach policy.
- [Raxol.AgentClientProtocol.Ext.Capability.Issuer](Raxol.AgentClientProtocol.Ext.Capability.Issuer.md): The signing side. Mints `RXC1` tokens.
- [Raxol.AgentClientProtocol.Ext.Capability.Keyring](Raxol.AgentClientProtocol.Ext.Capability.Keyring.md): Verifier-side keyring load + validation.
- [Raxol.AgentClientProtocol.Ext.Capability.Token](Raxol.AgentClientProtocol.Ext.Capability.Token.md): The `RXC1` capability token — offline-verifiable detached Ed25519 signature.
- [Raxol.AgentClientProtocol.Ext.Journal](Raxol.AgentClientProtocol.Ext.Journal.md): The durable session journal — behaviour + live-bus registration facade.
- [Raxol.AgentClientProtocol.Ext.Journal.Mem](Raxol.AgentClientProtocol.Ext.Journal.Mem.md): ETS-backed in-memory journal — an implementation of
`Raxol.AgentClientProtocol.Ext.Journal` bound by its OFFSET LAW.
- [Raxol.AgentClientProtocol.Ext.Journal.Record](Raxol.AgentClientProtocol.Ext.Journal.Record.md): One grow-only journal record.
- [Raxol.AgentClientProtocol.Ext.Journal.Writer](Raxol.AgentClientProtocol.Ext.Journal.Writer.md): ONE GenServer per `session_id` — the SINGLE PUBLISHER of a session's live
tail.
- [Raxol.AgentClientProtocol.Ext.Reattach](Raxol.AgentClientProtocol.Ext.Reattach.md): The register-before-`h` attach seam — the correctness core of the reattach
extension.
- [Raxol.AgentClientProtocol.Ext.Schema](Raxol.AgentClientProtocol.Ext.Schema.md): Wire schema structs for the reattach extension's `_raxol/*` notification
vocabulary.
- [Raxol.AgentClientProtocol.Ext.Schema.CaughtUpNotification](Raxol.AgentClientProtocol.Ext.Schema.CaughtUpNotification.md): `_raxol/session.caught_up`: the history→live boundary UX signal (`offset = h+1`). OPTIONAL, non-load-bearing.
- [Raxol.AgentClientProtocol.Ext.Schema.ClosedNotification](Raxol.AgentClientProtocol.Ext.Schema.ClosedNotification.md): `_raxol/session.closed`: terminate an ALREADY-REGISTERED subscriber mid-stream. `reason` is a grow-only string set.
- [Raxol.AgentClientProtocol.Ext.Schema.DetachNotification](Raxol.AgentClientProtocol.Ext.Schema.DetachNotification.md): `_raxol/session.detach`: client→agent voluntary unsubscribe. Idempotent.
- [Raxol.AgentClientProtocol.Ext.Schema.LaggedNotification](Raxol.AgentClientProtocol.Ext.Schema.LaggedNotification.md): `_raxol/session.lagged`: terminal drop-on-lag. `lastOffset` is the subscriber's own last forwarded offset; heal by reattaching from `lastOffset + 1`.
- [Raxol.AgentClientProtocol.Ext.Schema.SessionRecordNotification](Raxol.AgentClientProtocol.Ext.Schema.SessionRecordNotification.md): `_raxol/session.record`: the generic, self-describing delivery frame
for every record kind OTHER than `session_update` (`turn_started`,
`turn_completed`, `session_created`, and any kind added later). New record
kinds require NO new method rows — readers skip-unknown-kind as a fold.

- [Raxol.AgentClientProtocol.Ext.Schema.SteerRequest](Raxol.AgentClientProtocol.Ext.Schema.SteerRequest.md): `_raxol/session.steer` request: redirect a running turn with
new user input WITHOUT killing it, addressed by `sessionId`. A steer is the
sibling of interrupt (kill-now); it injects at the next turn boundary.
- [Raxol.AgentClientProtocol.Ext.Schema.SteerResponse](Raxol.AgentClientProtocol.Ext.Schema.SteerResponse.md): `_raxol/session.steer` response: the synchronous, honest CAS
outcome — the full vocabulary a Surface banner renders.
- [Raxol.AgentClientProtocol.MethodTable](Raxol.AgentClientProtocol.MethodTable.md): Single source of truth for the ACP method vocabulary: every wire method
string, its direction, its JSON-RPC kind, the callback atom used for both
the behaviour `@callback` and the `Router` dispatch clause, its
param/result schema modules, its capability gate, and its layer.
- [Raxol.AgentClientProtocol.Router](Raxol.AgentClientProtocol.Router.md): Table-driven JSON-RPC method routing for ACP: `decode/4` classifies and
type-decodes an inbound wire method + params into a tagged tuple,
`dispatch/4` calls the matching handler callback, and `result_marker/1`
tells the sending side how to decode a pending outbound request's
response.
- [Raxol.AgentClientProtocol.Rpc](Raxol.AgentClientProtocol.Rpc.md): JSON-RPC 2.0 primitives for the Agent Client Protocol.
- [Raxol.AgentClientProtocol.Rpc.Message](Raxol.AgentClientProtocol.Rpc.Message.md): Wraps a Request, Notification, or Response with the required
`"jsonrpc": "2.0"` field, and decodes a raw wire frame into whichever of
the three it turns out to be.
- [Raxol.AgentClientProtocol.Rpc.Notification](Raxol.AgentClientProtocol.Rpc.Notification.md): JSON-RPC 2.0 Notification object: `method` + optional `params`, no `id`,
no response expected.
- [Raxol.AgentClientProtocol.Rpc.Request](Raxol.AgentClientProtocol.Rpc.Request.md): JSON-RPC 2.0 Request object (`id` + `method` + optional `params`).
- [Raxol.AgentClientProtocol.Rpc.RequestId](Raxol.AgentClientProtocol.Rpc.RequestId.md): JSON-RPC request id: `null | integer | string`. Wire type is preserved
exactly (no coercion between string and integer ids).
- [Raxol.AgentClientProtocol.Rpc.Response](Raxol.AgentClientProtocol.Rpc.Response.md): JSON-RPC 2.0 Response object: either a result or an error, represented as
a tagged tuple `{:result, id, result}` | `{:error, id, error}` rather than
a struct (a Response is a discriminated union at the wire level, and the
two shapes are mutually exclusive per spec).
- [Raxol.AgentClientProtocol.Schema.AgentTypes](Raxol.AgentClientProtocol.Schema.AgentTypes.md): Agent-side types for the Agent Client Protocol: the `initialize`/
`authenticate` handshake, session lifecycle (`session/new`, `session/load`,
`session/set_mode`, `session/prompt`, `session/cancel`), capability
negotiation, and MCP server descriptors.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.AgentAuthCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.AgentAuthCapabilities.md): Authentication-related capabilities supported by the agent: currently
just the optional `logout` leaf. Not in f1729; ported from the pinned
oracle schema `$defs/AgentAuthCapabilities`.

- [Raxol.AgentClientProtocol.Schema.AgentTypes.AgentCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.AgentCapabilities.md): Capabilities declared by the agent in the `initialize` response.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.AgentResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.AgentResponse.md): Tagged union of every response the agent may send back to the client.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.AuthMethod](Raxol.AgentClientProtocol.Schema.AgentTypes.AuthMethod.md): A method by which a client may authenticate with an agent.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.AuthenticateRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.AuthenticateRequest.md): The `authenticate` request, sent by the client with the chosen auth method id.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.AuthenticateResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.AuthenticateResponse.md): The (empty, besides `_meta`) response to `authenticate`.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.CancelNotification](Raxol.AgentClientProtocol.Schema.AgentTypes.CancelNotification.md): The `session/cancel` notification.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.ClientNotification](Raxol.AgentClientProtocol.Schema.AgentTypes.ClientNotification.md): Tagged union of every notification the client may send to the agent, used
for JSON-RPC method-name routing.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.ClientRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.ClientRequest.md): Tagged union of every request the client may send to the agent, used for
JSON-RPC method-name routing.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.EnvVariable](Raxol.AgentClientProtocol.Schema.AgentTypes.EnvVariable.md): A single `name=value` environment variable for a stdio-launched MCP server.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.HttpHeader](Raxol.AgentClientProtocol.Schema.AgentTypes.HttpHeader.md): A single HTTP header for an HTTP/SSE MCP server.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.Implementation](Raxol.AgentClientProtocol.Schema.AgentTypes.Implementation.md): Identifies an agent or client implementation (name, version, optional title).
- [Raxol.AgentClientProtocol.Schema.AgentTypes.InitializeRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.InitializeRequest.md): The `initialize` request, sent by the client to negotiate protocol version
and capabilities.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.InitializeResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.InitializeResponse.md): The `initialize` response, sent by the agent with its capabilities and
supported authentication methods.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.LoadSessionRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.LoadSessionRequest.md): The `session/load` request: replays an existing session's history.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.LoadSessionResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.LoadSessionResponse.md): The `session/load` response: optional mode/model/config-option state.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.LogoutCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.LogoutCapabilities.md): Capability flag for `logout`: agent supports the logout method. Not in
f1729; ported from the pinned oracle schema `$defs/LogoutCapabilities`.

- [Raxol.AgentClientProtocol.Schema.AgentTypes.McpCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.McpCapabilities.md): MCP transports the agent supports for client-provided MCP servers.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.McpServer](Raxol.AgentClientProtocol.Schema.AgentTypes.McpServer.md): A client-provided MCP server descriptor: tagged union of `http`, `sse`
(both discriminated by a `"type"` wire field), and the untagged `stdio`
fallback.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.McpServerHttp](Raxol.AgentClientProtocol.Schema.AgentTypes.McpServerHttp.md): A streamable-HTTP MCP server descriptor.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.McpServerSse](Raxol.AgentClientProtocol.Schema.AgentTypes.McpServerSse.md): An SSE MCP server descriptor.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.McpServerStdio](Raxol.AgentClientProtocol.Schema.AgentTypes.McpServerStdio.md): A stdio-launched MCP server descriptor (the untagged wire variant: no
`"type"` field).
- [Raxol.AgentClientProtocol.Schema.AgentTypes.NewSessionRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.NewSessionRequest.md): The `session/new` request: creates a new session rooted at `cwd`, optionally
wiring up MCP servers.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.NewSessionResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.NewSessionResponse.md): The `session/new` response: the new session id plus optional mode/model/
config-option state (the latter two are unstable extensions).
- [Raxol.AgentClientProtocol.Schema.AgentTypes.PromptCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.PromptCapabilities.md): Content-block kinds the agent accepts in a `session/prompt`.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.PromptRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.PromptRequest.md): The `session/prompt` request: a turn's content blocks sent to the agent.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.PromptResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.PromptResponse.md): The `session/prompt` response: why the turn ended.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCapabilities.md): Session-lifecycle capabilities the agent supports, including the unstable
`list`/`fork`/`resume` extensions.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCloseCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.SessionCloseCapabilities.md): Capability flag for `session/close`: agent supports closing sessions.
Not in f1729; ported from the pinned oracle schema
`$defs/SessionCloseCapabilities`.

- [Raxol.AgentClientProtocol.Schema.AgentTypes.SessionDeleteCapabilities](Raxol.AgentClientProtocol.Schema.AgentTypes.SessionDeleteCapabilities.md): Capability flag for `session/delete`: agent supports deleting sessions
from `session/list`. Not in f1729; ported from the pinned oracle schema
`$defs/SessionDeleteCapabilities`.

- [Raxol.AgentClientProtocol.Schema.AgentTypes.SessionMode](Raxol.AgentClientProtocol.Schema.AgentTypes.SessionMode.md): A single selectable session mode (e.g. "code", "ask").
- [Raxol.AgentClientProtocol.Schema.AgentTypes.SessionModeState](Raxol.AgentClientProtocol.Schema.AgentTypes.SessionModeState.md): The set of available session modes and the one currently active.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.SetSessionModeRequest](Raxol.AgentClientProtocol.Schema.AgentTypes.SetSessionModeRequest.md): The `session/set_mode` request.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.SetSessionModeResponse](Raxol.AgentClientProtocol.Schema.AgentTypes.SetSessionModeResponse.md): The (empty, besides `_meta`) response to `session/set_mode`.
- [Raxol.AgentClientProtocol.Schema.AgentTypes.StopReason](Raxol.AgentClientProtocol.Schema.AgentTypes.StopReason.md): Why a `session/prompt` turn ended.
- [Raxol.AgentClientProtocol.Schema.Annotations](Raxol.AgentClientProtocol.Schema.Annotations.md): Optional annotations for the client (audience, priority, last-modified).
Every field is optional and decode-lenient: a malformed value defaults to
absent rather than failing the whole `Annotations`.
- [Raxol.AgentClientProtocol.Schema.AudioContent](Raxol.AgentClientProtocol.Schema.AudioContent.md): Audio provided to or from an LLM.
- [Raxol.AgentClientProtocol.Schema.AvailableCommand](Raxol.AgentClientProtocol.Schema.AvailableCommand.md): A single command the agent can execute, as advertised via
`AvailableCommandsUpdate`.
- [Raxol.AgentClientProtocol.Schema.AvailableCommandInput](Raxol.AgentClientProtocol.Schema.AvailableCommandInput.md): Input specification for an `AvailableCommand`: an untagged union with a
single documented variant, `unstructured` (free text typed after the
command name). Per package convention, tagged-tuple unions don't get a
`Jason.Encoder` impl of their own.
- [Raxol.AgentClientProtocol.Schema.AvailableCommandsUpdate](Raxol.AgentClientProtocol.Schema.AvailableCommandsUpdate.md): Payload for the `SessionUpdate` `available_commands_update` variant: the
set of commands the agent can execute has changed. `available_commands`
is decode-lenient, matching the oracle schema's
`x-deserialize-default-on-error` + `x-deserialize-skip-invalid-items`: a
missing/wrong-typed list defaults to `[]`, and items that individually
fail to decode are skipped rather than aborting the whole update.
- [Raxol.AgentClientProtocol.Schema.BlobResourceContents](Raxol.AgentClientProtocol.Schema.BlobResourceContents.md): Binary resource contents.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.AgentRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.AgentRequest.md): Enum of all possible agent->client requests, with their wire method names.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.ClientCapabilities](Raxol.AgentClientProtocol.Schema.ClientTypes.ClientCapabilities.md): Capabilities declared by the client at `initialize`.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.CreateTerminalRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.CreateTerminalRequest.md): Request to create a new terminal and execute a command (`terminal/create`).
- [Raxol.AgentClientProtocol.Schema.ClientTypes.CreateTerminalResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.CreateTerminalResponse.md): Response containing the ID of the newly created terminal.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.FileSystemCapability](Raxol.AgentClientProtocol.Schema.ClientTypes.FileSystemCapability.md): File-system capabilities supported by the client.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.KillTerminalRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.KillTerminalRequest.md): Request to kill a terminal command without releasing the terminal
(`terminal/kill`).
- [Raxol.AgentClientProtocol.Schema.ClientTypes.KillTerminalResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.KillTerminalResponse.md): Response to `terminal/kill`. Carries no data of its own.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.PermissionOption](Raxol.AgentClientProtocol.Schema.ClientTypes.PermissionOption.md): An option presented to the user when the agent requests permission for a
tool call.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.PermissionOptionKind](Raxol.AgentClientProtocol.Schema.ClientTypes.PermissionOptionKind.md): Hint about the nature of a `PermissionOption`, so clients can choose
appropriate icons/UI treatment.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.ReadTextFileRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.ReadTextFileRequest.md): Request to read content from a text file (`fs/read_text_file`). Only sent
if the client declared the `fs.readTextFile` capability.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.ReadTextFileResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.ReadTextFileResponse.md): Response containing the contents of a text file.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.ReleaseTerminalRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.ReleaseTerminalRequest.md): Request to release a terminal and free its resources (`terminal/release`).
- [Raxol.AgentClientProtocol.Schema.ClientTypes.ReleaseTerminalResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.ReleaseTerminalResponse.md): Response to `terminal/release`. Carries no data of its own.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.RequestPermissionOutcome](Raxol.AgentClientProtocol.Schema.ClientTypes.RequestPermissionOutcome.md): The outcome of a permission request: either the prompt turn was cancelled
before the user responded, or the user selected one of the offered
options. Tagged by the `outcome` discriminator field on the wire (not a
struct in its own right -- see `SelectedPermissionOutcome` for the
`_meta`-carrying payload of the `:selected` variant).
- [Raxol.AgentClientProtocol.Schema.ClientTypes.RequestPermissionRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.RequestPermissionRequest.md): Request from the agent asking the client for permission to perform a tool
call, sent before a sensitive operation.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.RequestPermissionResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.RequestPermissionResponse.md): Response to a `session/request_permission` request, carrying the user's
decision.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.SelectedPermissionOutcome](Raxol.AgentClientProtocol.Schema.ClientTypes.SelectedPermissionOutcome.md): A `RequestPermissionOutcome` variant: the user selected one of the
offered options.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.TerminalExitStatus](Raxol.AgentClientProtocol.Schema.ClientTypes.TerminalExitStatus.md): Exit status of a terminal command: an exit code (normal exit) and/or a
signal name (killed by signal), independently nullable per the
schema-oracle.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.TerminalOutputRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.TerminalOutputRequest.md): Request to get the current output and status of a terminal
(`terminal/output`).
- [Raxol.AgentClientProtocol.Schema.ClientTypes.TerminalOutputResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.TerminalOutputResponse.md): Response containing the terminal output captured so far, and its exit
status if the command has completed.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.WaitForTerminalExitRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.WaitForTerminalExitRequest.md): Request to wait for a terminal command to exit (`terminal/wait_for_exit`).
- [Raxol.AgentClientProtocol.Schema.ClientTypes.WaitForTerminalExitResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.WaitForTerminalExitResponse.md): Response containing the exit status of a terminal command.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.WriteTextFileRequest](Raxol.AgentClientProtocol.Schema.ClientTypes.WriteTextFileRequest.md): Request to write content to a text file (`fs/write_text_file`). Only sent
if the client declared the `fs.writeTextFile` capability.
- [Raxol.AgentClientProtocol.Schema.ClientTypes.WriteTextFileResponse](Raxol.AgentClientProtocol.Schema.ClientTypes.WriteTextFileResponse.md): Response to `fs/write_text_file`. Carries no data of its own.
- [Raxol.AgentClientProtocol.Schema.ContentBlock](Raxol.AgentClientProtocol.Schema.ContentBlock.md): Content blocks represent displayable information in ACP: a tagged union
discriminated by a `"type"` wire key (`text` | `image` | `audio` |
`resource_link` | `resource`). Named `ContentBlock` both upstream and
here (all other structs ported from `content.ex` -- `Role`, `Annotations`,
`TextContent`, `ImageContent`, `AudioContent`, `TextResourceContents`,
`BlobResourceContents`, `EmbeddedResourceResource`, `EmbeddedResource`,
`ResourceLink` -- are separate, bare `Schema.*` modules, not nested under
this one).
- [Raxol.AgentClientProtocol.Schema.ContentChunk](Raxol.AgentClientProtocol.Schema.ContentChunk.md): A single streamed content block, used as the payload for the
`SessionUpdate` `user_message_chunk`/`agent_message_chunk`/
`agent_thought_chunk` variants.
- [Raxol.AgentClientProtocol.Schema.Cost](Raxol.AgentClientProtocol.Schema.Cost.md): Cumulative session cost information -- the optional `cost` field of
`UsageUpdate`.
- [Raxol.AgentClientProtocol.Schema.CurrentModeUpdate](Raxol.AgentClientProtocol.Schema.CurrentModeUpdate.md): Payload for the `SessionUpdate` `current_mode_update` variant: the
session's active mode has changed.
- [Raxol.AgentClientProtocol.Schema.Diff](Raxol.AgentClientProtocol.Schema.Diff.md): A diff representing file modifications.
- [Raxol.AgentClientProtocol.Schema.EmbeddedResource](Raxol.AgentClientProtocol.Schema.EmbeddedResource.md): The contents of a resource, embedded into a prompt or tool call result.
- [Raxol.AgentClientProtocol.Schema.EmbeddedResourceResource](Raxol.AgentClientProtocol.Schema.EmbeddedResourceResource.md): Resource content that can be embedded in a message (untagged union,
discriminated by the presence of a `"text"` or `"blob"` wire key).
- [Raxol.AgentClientProtocol.Schema.Ext](Raxol.AgentClientProtocol.Schema.Ext.md): Extension types for ACP protocol extensibility.
- [Raxol.AgentClientProtocol.Schema.Ext.ExtNotification](Raxol.AgentClientProtocol.Schema.Ext.ExtNotification.md): An arbitrary `_`-prefixed extension notification, not part of the core
ACP spec. No reply is expected.
- [Raxol.AgentClientProtocol.Schema.Ext.ExtRequest](Raxol.AgentClientProtocol.Schema.Ext.ExtRequest.md): An arbitrary `_`-prefixed extension request, not part of the core ACP
spec. Carries the raw JSON-RPC `method` name and already-decoded `params`.
- [Raxol.AgentClientProtocol.Schema.Ext.ExtResponse](Raxol.AgentClientProtocol.Schema.Ext.ExtResponse.md): The reply to an `ExtRequest`.
- [Raxol.AgentClientProtocol.Schema.ImageContent](Raxol.AgentClientProtocol.Schema.ImageContent.md): An image provided to or from an LLM.
- [Raxol.AgentClientProtocol.Schema.LifecycleExtras](Raxol.AgentClientProtocol.Schema.LifecycleExtras.md): Minimal, oracle-derived param/result structs for v1.19.0 ACP methods that
had no home in the ported f1729 `Schema.*` layer: `session/close`,
`session/delete`, `logout`, `session/update` (the notification envelope),
and the protocol-level `$/cancel_request`.
- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.CancelRequestNotification](Raxol.AgentClientProtocol.Schema.LifecycleExtras.CancelRequestNotification.md): The protocol-level `$/cancel_request` notification: `{requestId, _meta}`,
where `requestId` is a JSON-RPC request id (`null | integer | string`,
see `Raxol.AgentClientProtocol.Rpc.RequestId`). Oracle-derived
(schema.json `CancelRequestNotification`); not a port of any upstream
f1729 module (f1729 has no `$/cancel_request` support).
- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.CloseSessionRequest](Raxol.AgentClientProtocol.Schema.LifecycleExtras.CloseSessionRequest.md): Request parameters for `session/close`: closes an active session, best-
effort cancelling any in-flight work first. Oracle-derived (schema.json
`CloseSessionRequest`); not a port of any upstream f1729 module.

- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.CloseSessionResponse](Raxol.AgentClientProtocol.Schema.LifecycleExtras.CloseSessionResponse.md): The (empty, besides `_meta`) response to `session/close`. Oracle-derived
(schema.json `CloseSessionResponse`).

- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.DeleteSessionRequest](Raxol.AgentClientProtocol.Schema.LifecycleExtras.DeleteSessionRequest.md): Request parameters for `session/delete`: deletes an existing session from
`session/list`. Oracle-derived (schema.json `DeleteSessionRequest`); not a
port of any upstream f1729 module.

- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.DeleteSessionResponse](Raxol.AgentClientProtocol.Schema.LifecycleExtras.DeleteSessionResponse.md): The (empty, besides `_meta`) response to `session/delete`. Oracle-derived
(schema.json `DeleteSessionResponse`).

- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.LogoutResponse](Raxol.AgentClientProtocol.Schema.LifecycleExtras.LogoutResponse.md): The (empty, besides `_meta`) response to `logout`. Oracle-derived
(schema.json `LogoutResponse`). See the module doc above for why there is
no sibling `LogoutRequest` in this file.

- [Raxol.AgentClientProtocol.Schema.LifecycleExtras.SessionNotification](Raxol.AgentClientProtocol.Schema.LifecycleExtras.SessionNotification.md): The `session/update` notification envelope: `{sessionId, update, _meta}`,
where `update` is the `Raxol.AgentClientProtocol.Schema.SessionUpdate`
discriminated union (ported separately, `session_update.ex`).
Oracle-derived (schema.json `SessionNotification`); not a port of any
upstream f1729 module — upstream's `ACP.SessionNotification` envelope was
explicitly left unported by `agent_types.ex`'s and `session_update.ex`'s
own moduledocs pending whoever wired the routing union it belongs to.

- [Raxol.AgentClientProtocol.Schema.MaybeUndefined](Raxol.AgentClientProtocol.Schema.MaybeUndefined.md): A three-state value type: `:undefined`, `nil` (null), or `{:value, term}`.
- [Raxol.AgentClientProtocol.Schema.Plan](Raxol.AgentClientProtocol.Schema.Plan.md): An execution plan for accomplishing complex tasks: an ordered list of
`PlanEntry` structs. Per the ACP schema, `entries` is decode-lenient
at both levels: a missing/wrong-typed `entries` field defaults to `[]`
(never fails the whole plan), and entries that individually fail to
decode are skipped rather than aborting the list
(`x-deserialize-skip-invalid-items`).
- [Raxol.AgentClientProtocol.Schema.PlanEntry](Raxol.AgentClientProtocol.Schema.PlanEntry.md): A single entry in the execution plan. `content`, `priority`, and `status`
are all required per the ACP schema (no `x-deserialize-default-on-error`
leniency for this struct's own fields) -- a malformed value for any of
them fails the whole entry's decode; the caller (`Plan.from_json/1`) skips
entries that fail to decode rather than failing the whole plan.
- [Raxol.AgentClientProtocol.Schema.ResourceLink](Raxol.AgentClientProtocol.Schema.ResourceLink.md): A resource that the server is capable of reading.
- [Raxol.AgentClientProtocol.Schema.Role](Raxol.AgentClientProtocol.Schema.Role.md): The sender or recipient of messages and data in a conversation.
- [Raxol.AgentClientProtocol.Schema.SessionUpdate](Raxol.AgentClientProtocol.Schema.SessionUpdate.md): The `session/update` notification's `sessionUpdate`-discriminated union:
real-time feedback the agent streams back to the client during a prompt
turn (message/thought chunks, tool call lifecycle, the execution plan,
available-command changes, mode changes, and the unstable config-option/
session-info updates).
- [Raxol.AgentClientProtocol.Schema.TextContent](Raxol.AgentClientProtocol.Schema.TextContent.md): Text provided to or from an LLM.
- [Raxol.AgentClientProtocol.Schema.TextResourceContents](Raxol.AgentClientProtocol.Schema.TextResourceContents.md): Text-based resource contents.
- [Raxol.AgentClientProtocol.Schema.ToolCall](Raxol.AgentClientProtocol.Schema.ToolCall.md): Represents a tool call that the language model has requested. Every other
type ported from `tool_call.ex` (`ToolKind`, `ToolCallStatus`,
`ToolCallLocation`, `Diff`, `ToolCallTerminal`, `ToolCallContentWrapper`,
`ToolCallContent`, `ToolCallUpdateFields`, `ToolCallUpdate`) is a separate,
bare `Schema.*` module, not nested under this one.
- [Raxol.AgentClientProtocol.Schema.ToolCallContent](Raxol.AgentClientProtocol.Schema.ToolCallContent.md): Content produced by a tool call: a tagged union discriminated by a
`"type"` wire key (`content` | `diff` | `terminal`).
- [Raxol.AgentClientProtocol.Schema.ToolCallContentWrapper](Raxol.AgentClientProtocol.Schema.ToolCallContentWrapper.md): Standard content block wrapper for tool call content (the `"content"`
variant of `ToolCallContent`; named `Content` in the official schema, but
kept as `ToolCallContentWrapper` here to avoid colliding with
`Schema.ContentBlock`, the tagged-union content block type).
- [Raxol.AgentClientProtocol.Schema.ToolCallLocation](Raxol.AgentClientProtocol.Schema.ToolCallLocation.md): A file location being accessed or modified by a tool.
- [Raxol.AgentClientProtocol.Schema.ToolCallStatus](Raxol.AgentClientProtocol.Schema.ToolCallStatus.md): Execution status of a tool call. Every place this enum is used in the ACP
schema (`ToolCall.status`, `ToolCallUpdateFields.status`) carries
`x-deserialize-default-on-error: true`, so -- like `ToolKind` -- decode is
total and infallible: an unrecognized wire value falls back to the
documented default, `:pending`, rather than failing the enclosing object.
- [Raxol.AgentClientProtocol.Schema.ToolCallTerminal](Raxol.AgentClientProtocol.Schema.ToolCallTerminal.md): Embeds a terminal created with `terminal/create`, by its id.
- [Raxol.AgentClientProtocol.Schema.ToolCallUpdate](Raxol.AgentClientProtocol.Schema.ToolCallUpdate.md): An update to an existing tool call. `ToolCallUpdateFields` is flattened
into the same wire object as `toolCallId` and `_meta` (a "serde flatten"),
not nested under its own key.
- [Raxol.AgentClientProtocol.Schema.ToolCallUpdateFields](Raxol.AgentClientProtocol.Schema.ToolCallUpdateFields.md): Optional fields that can be updated in a tool call. Every field is
optional and decode-lenient per the ACP schema
(`x-deserialize-default-on-error`, plus `x-deserialize-skip-invalid-items`
on the two list fields) -- decode of this struct never fails for a map
input. Flattened directly into `ToolCallUpdate`'s wire object (no nested
`"_meta"` of its own; unrecognized fields fold into the parent's `_meta`).
- [Raxol.AgentClientProtocol.Schema.ToolKind](Raxol.AgentClientProtocol.Schema.ToolKind.md): Categories of tools that can be invoked. An open enum: the ACP schema
documents `"other"` as its explicit default, so an unrecognized wire
value decodes to `:other` rather than failing (no `String.to_atom/1` is
ever used -- every value is an explicit, whitelisted clause).
- [Raxol.AgentClientProtocol.Schema.Unstable](Raxol.AgentClientProtocol.Schema.Unstable.md): Unstable ACP types that are not yet part of the stable protocol surface —
the Elixir counterpart of the Rust reference implementation's
`#[cfg(feature = "unstable_*")]`-gated types: session model selection
(`session/set_model`), generic session config options
(`session/set_config_option`), session fork/resume/list
(`session/fork`, `session/resume`, `session/list`), and their capability
flags. These may be removed or changed at any point; callers should gate
their use on the corresponding `Raxol.AgentClientProtocol.Schema.AgentTypes.
SessionCapabilities` fields (`:list`, `:fork`, `:resume`) rather than
assuming availability.
- [Raxol.AgentClientProtocol.Schema.Unstable.ConfigOptionUpdate](Raxol.AgentClientProtocol.Schema.Unstable.ConfigOptionUpdate.md): Payload for the `session/update` notification's `config_option_update`
variant: session configuration options have been updated. The variant
wiring itself lives in `SessionUpdate` (ported from `client_types.ex`, not
this file). (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ForkSessionRequest](Raxol.AgentClientProtocol.Schema.Unstable.ForkSessionRequest.md): Request to fork an existing session (`session/fork`). (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ForkSessionResponse](Raxol.AgentClientProtocol.Schema.Unstable.ForkSessionResponse.md): Response from forking a session: the new session id plus optional
mode/model/config-option state. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ListSessionsRequest](Raxol.AgentClientProtocol.Schema.Unstable.ListSessionsRequest.md): Request to list existing sessions (`session/list`). (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ListSessionsResponse](Raxol.AgentClientProtocol.Schema.Unstable.ListSessionsResponse.md): Response from listing sessions. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ModelInfo](Raxol.AgentClientProtocol.Schema.Unstable.ModelInfo.md): Information about a selectable model. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ResumeSessionRequest](Raxol.AgentClientProtocol.Schema.Unstable.ResumeSessionRequest.md): Request to resume an existing session without replaying its history
(`session/resume`). (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.ResumeSessionResponse](Raxol.AgentClientProtocol.Schema.Unstable.ResumeSessionResponse.md): Response from resuming a session: optional mode/model/config-option state.
(Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigKind](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigKind.md): Type-specific session configuration option payload: a tagged union by the
wire `"type"` field. Currently only `:select` is defined by the spec.
(Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigOption](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigOption.md): A session configuration option selector and its current state. The
`kind`-specific payload (currently only `select`) is flattened directly
into this struct's top-level wire object alongside `id`/`name`/etc.
(Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigOptionCategory](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigOptionCategory.md): Semantic category for a session configuration option. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelect](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelect.md): A single-value selector (dropdown) session configuration option payload.
(Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelectGroup](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelectGroup.md): A named group of `SessionConfigSelectOption`s. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelectOption](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelectOption.md): A possible value for a `select`-kind session configuration option.
(Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelectOptions](Raxol.AgentClientProtocol.Schema.Unstable.SessionConfigSelectOptions.md): Possible values for a `select`-kind session configuration option: an
untagged union of either a flat list of options (`{:ungrouped, [...]}`) or
a list of groups (`{:grouped, [...]}`), distinguished on decode by whether
the first list element has a `"group"` key. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionForkCapabilities](Raxol.AgentClientProtocol.Schema.Unstable.SessionForkCapabilities.md): Capability flag for `session/fork`. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionInfo](Raxol.AgentClientProtocol.Schema.Unstable.SessionInfo.md): Information about a session returned by `session/list`. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionInfoUpdate](Raxol.AgentClientProtocol.Schema.Unstable.SessionInfoUpdate.md): Payload for the `session/update` notification's `session_info_update`
variant: a partial update to session metadata. The variant wiring itself
lives in `SessionUpdate` (ported from `client_types.ex`, not this file).
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionListCapabilities](Raxol.AgentClientProtocol.Schema.Unstable.SessionListCapabilities.md): Capability flag for `session/list`. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionModelState](Raxol.AgentClientProtocol.Schema.Unstable.SessionModelState.md): The set of selectable models and the one currently active. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SessionResumeCapabilities](Raxol.AgentClientProtocol.Schema.Unstable.SessionResumeCapabilities.md): Capability flag for `session/resume`. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SetSessionConfigOptionRequest](Raxol.AgentClientProtocol.Schema.Unstable.SetSessionConfigOptionRequest.md): Request to set a session configuration option value
(`session/set_config_option`). (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SetSessionConfigOptionResponse](Raxol.AgentClientProtocol.Schema.Unstable.SetSessionConfigOptionResponse.md): Response to `session/set_config_option`: the full, refreshed set of config
options. (Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SetSessionModelRequest](Raxol.AgentClientProtocol.Schema.Unstable.SetSessionModelRequest.md): Request to set the active model for a session (`session/set_model`).
(Unstable)
- [Raxol.AgentClientProtocol.Schema.Unstable.SetSessionModelResponse](Raxol.AgentClientProtocol.Schema.Unstable.SetSessionModelResponse.md): The (empty, besides `_meta`) response to `session/set_model`. (Unstable)
- [Raxol.AgentClientProtocol.Schema.UnstructuredCommandInput](Raxol.AgentClientProtocol.Schema.UnstructuredCommandInput.md): Unstructured command input: raw free text typed after the command name,
as a `hint` for what's expected.
- [Raxol.AgentClientProtocol.Schema.UsageUpdate](Raxol.AgentClientProtocol.Schema.UsageUpdate.md): Payload for the `SessionUpdate` `usage_update` variant: a context-window
and cost update for a session -- tokens currently in context (`used`),
the total context window size (`size`), and an optional cumulative
session `cost`.
- [Raxol.AgentClientProtocol.Schema.Version](Raxol.AgentClientProtocol.Schema.Version.md): Protocol version identifier for ACP (`protocolVersion` on the wire).
- [Raxol.AgentClientProtocol.Session](Raxol.AgentClientProtocol.Session.md): One GenServer per `session_id`: the ACP turn state machine.
- [Raxol.AgentClientProtocol.Session.Emitter](Raxol.AgentClientProtocol.Session.Emitter.md): The Session emit seam — one injection point through which every
`session/update` and every turn boundary flows.
- [Raxol.AgentClientProtocol.Session.Emitter.Direct](Raxol.AgentClientProtocol.Session.Emitter.Direct.md): The DEFAULT emitter. `emit/2` forwards a `session/update` to
`Connection.notify` on the same FIFO lane as the eventual prompt reply; the
turn-boundary hooks are no-ops (it keeps no durable journal). Selecting this
emitter (or omitting `:emitter`) means the reattach extension is OFF.

- [Raxol.AgentClientProtocol.Session.Emitter.Journal](Raxol.AgentClientProtocol.Session.Emitter.Journal.md): The durable emitter — reroutes updates and turn boundaries through the
single-publisher Writer (`Ext.Journal.Writer`) so the session's durable,
offset-addressed journal is FILLED by live turns, and every attached
reattacher replays it.
- [Raxol.AgentClientProtocol.Session.SteerAdapter](Raxol.AgentClientProtocol.Session.SteerAdapter.md): The Session's steer seam — the one injection point through
which a live turn's compare-and-swap steer decision is driven.
- [Raxol.AgentClientProtocol.Session.SteerAdapter.Unsupported](Raxol.AgentClientProtocol.Session.SteerAdapter.Unsupported.md): The DEFAULT steer adapter — refuses. With no injected `:steer_adapter`, the
turn hooks are the identity function (they never touch `steer_state`, which
stays `nil`), and `resolve/2` answers `{:error, :no_steer_channel}` — an
honest refusal: no live steering owner is wired.

- [Raxol.AgentClientProtocol.Session.Supervisor](Raxol.AgentClientProtocol.Session.Supervisor.md): The per-connection `DynamicSupervisor` for `Raxol.AgentClientProtocol.Session`
processes.
- [Raxol.AgentClientProtocol.Session.Turn](Raxol.AgentClientProtocol.Session.Turn.md): Ephemeral per-turn state, held by a `Raxol.AgentClientProtocol.Session` only
while a `session/prompt` turn is in flight. `outcome` is written once by the
root leg; the cancel leg overwrites it.
- [Raxol.AgentClientProtocol.Telemetry](Raxol.AgentClientProtocol.Telemetry.md): The classified registry of every `:telemetry` event this package emits.
- [Raxol.AgentClientProtocol.Transport](Raxol.AgentClientProtocol.Transport.md): Behaviour for pluggable ACP message carriers.
- [Raxol.AgentClientProtocol.Transport.Envelope](Raxol.AgentClientProtocol.Transport.Envelope.md): A pure, process-free sequencing envelope for **unordered-carrier**
transports (no shipped transport uses it; see
`Raxol.AgentClientProtocol.Transport.Reassembly` for the receive-side
counterpart).
- [Raxol.AgentClientProtocol.Transport.Framer](Raxol.AgentClientProtocol.Transport.Framer.md): A pure, process-free NDJSON (newline-delimited JSON) line framer.
- [Raxol.AgentClientProtocol.Transport.Paired](Raxol.AgentClientProtocol.Transport.Paired.md): An in-process, zero-copy pair of `Raxol.AgentClientProtocol.Transport`
handles. This is the test backbone for the rest of the library and the
BEAM-local wiring for an agent/client pair that live in the same VM.
- [Raxol.AgentClientProtocol.Transport.Reassembly](Raxol.AgentClientProtocol.Transport.Reassembly.md): A pure, process-free reorder buffer for **unordered-carrier** transports
(pairs with `Raxol.AgentClientProtocol.Transport.Envelope` on the send
side; no shipped transport uses it).
- [Raxol.AgentClientProtocol.Transport.Stdio](Raxol.AgentClientProtocol.Transport.Stdio.md): Newline-delimited JSON (NDJSON) over a stdio pipe — either our OWN
process's real stdin/stdout (`:self` mode, when this BEAM process IS the
ACP agent/client speaking on its own stdio), or a spawned peer command's
stdio (`:spawn` mode, when we launch and speak to a subprocess).
- [RaxolAgentClientProtocol.Application](RaxolAgentClientProtocol.Application.md): The package OTP application — the single shared supervision tree that the
per-connection subtrees and the reattach extension depend on.

## Mix Tasks

- [mix acp.schema.verify](Mix.Tasks.Acp.Schema.Verify.md): Recomputes the SHA256 of the vendored ACP (Agent Client Protocol) schema
oracle files under `priv/schema-oracle/v1/` and compares them against the
hashes recorded at pin time (see `priv/schema-oracle/PINNED.md`).

