# Raxol Agent Client Protocol v0.1.0 - Table of Contents > Elixir/OTP implementation of ACP (Agent Client Protocol) — the JSON-RPC 2.0 protocol between code editors and AI coding agents (agentclientprotocol.com). Bidirectional agent/client roles, stdio and in-process transports, supervised session processes, and resumable sessions (in-memory journal). ## Pages - [Raxol Agent Client Protocol](readme.md) - [Changelog](changelog.md) - [Provenance & attribution](notice.md) ## 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 . - [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`).