# ACPex v0.1.1 - Table of Contents

> An Elixir implementation of the Agent Client Protocol (ACP) for editor-agent communication.
This library implements the JSON-RPC based protocol from agentclientprotocol.com.

## Pages

- [ACPex](readme.md)

- Guides
  - [Getting Started with ACPex](getting_started.md)
  - [Building Agents with ACPex](building_agents.md)
  - [Building Clients with ACPex](building_clients.md)
  - [Agent Client Protocol Overview](protocol_overview.md)
  - [Supervision Tree Architecture](supervision_tree.md)

## Modules

- [ACPex.Schema.Client.FsReadTextFileRequest](ACPex.Schema.Client.FsReadTextFileRequest.md): Request from agent to read a text file.
- [ACPex.Schema.Client.FsReadTextFileResponse](ACPex.Schema.Client.FsReadTextFileResponse.md): Response containing file contents.
- [ACPex.Schema.Client.FsWriteTextFileRequest](ACPex.Schema.Client.FsWriteTextFileRequest.md): Request from agent to write a text file.
- [ACPex.Schema.Client.FsWriteTextFileResponse](ACPex.Schema.Client.FsWriteTextFileResponse.md): Confirmation of file write.
- [ACPex.Schema.Client.Terminal.CreateRequest](ACPex.Schema.Client.Terminal.CreateRequest.md): Request from agent to create a terminal.
- [ACPex.Schema.Client.Terminal.CreateResponse](ACPex.Schema.Client.Terminal.CreateResponse.md): Response containing the created terminal ID.
- [ACPex.Schema.Client.Terminal.KillRequest](ACPex.Schema.Client.Terminal.KillRequest.md): Request from agent to kill a terminal process.
- [ACPex.Schema.Client.Terminal.KillResponse](ACPex.Schema.Client.Terminal.KillResponse.md): Confirmation of terminal kill.
- [ACPex.Schema.Client.Terminal.OutputRequest](ACPex.Schema.Client.Terminal.OutputRequest.md): Request from agent to get terminal output.
- [ACPex.Schema.Client.Terminal.OutputResponse](ACPex.Schema.Client.Terminal.OutputResponse.md): Response containing terminal output.
- [ACPex.Schema.Client.Terminal.ReleaseRequest](ACPex.Schema.Client.Terminal.ReleaseRequest.md): Request from agent to release a terminal.
- [ACPex.Schema.Client.Terminal.ReleaseResponse](ACPex.Schema.Client.Terminal.ReleaseResponse.md): Confirmation of terminal release.
- [ACPex.Schema.Client.Terminal.WaitForExitRequest](ACPex.Schema.Client.Terminal.WaitForExitRequest.md): Request from agent to wait for terminal exit.
- [ACPex.Schema.Client.Terminal.WaitForExitResponse](ACPex.Schema.Client.Terminal.WaitForExitResponse.md): Response containing terminal exit information.
- [ACPex.Schema.Connection.AuthenticateRequest](ACPex.Schema.Connection.AuthenticateRequest.md): Request to authenticate with the agent.
- [ACPex.Schema.Connection.AuthenticateResponse](ACPex.Schema.Connection.AuthenticateResponse.md): Response to an authentication request.
- [ACPex.Schema.Connection.InitializeRequest](ACPex.Schema.Connection.InitializeRequest.md): Request sent by the client to initialize the ACP connection.
- [ACPex.Schema.Connection.InitializeResponse](ACPex.Schema.Connection.InitializeResponse.md): Response from the agent with its capabilities.
- [ACPex.Schema.Session.CancelNotification](ACPex.Schema.Session.CancelNotification.md): Notification to cancel prompt processing.
- [ACPex.Schema.Session.NewRequest](ACPex.Schema.Session.NewRequest.md): Request to create a new conversation session.
- [ACPex.Schema.Session.NewResponse](ACPex.Schema.Session.NewResponse.md): Response with the created session ID.
- [ACPex.Schema.Session.PromptRequest](ACPex.Schema.Session.PromptRequest.md): User prompt sent to the agent.
- [ACPex.Schema.Session.PromptResponse](ACPex.Schema.Session.PromptResponse.md): Response to a prompt request.
- [ACPex.Schema.Session.UpdateNotification](ACPex.Schema.Session.UpdateNotification.md): Streaming update notification from the agent.
- [ACPex.Schema.Types.AgentCapabilities](ACPex.Schema.Types.AgentCapabilities.md): Agent capabilities for ACP protocol.
- [ACPex.Schema.Types.AuthMethod](ACPex.Schema.Types.AuthMethod.md): Authentication method information.
- [ACPex.Schema.Types.ClientCapabilities](ACPex.Schema.Types.ClientCapabilities.md): Client capabilities for ACP protocol.
- [ACPex.Schema.Types.ContentBlock](ACPex.Schema.Types.ContentBlock.md): Content block union type.
- [ACPex.Schema.Types.ContentBlock.Audio](ACPex.Schema.Types.ContentBlock.Audio.md): Audio content block.
- [ACPex.Schema.Types.ContentBlock.Image](ACPex.Schema.Types.ContentBlock.Image.md): Image content block.
- [ACPex.Schema.Types.ContentBlock.Resource](ACPex.Schema.Types.ContentBlock.Resource.md): Embedded resource content block.
- [ACPex.Schema.Types.ContentBlock.ResourceLink](ACPex.Schema.Types.ContentBlock.ResourceLink.md): Resource link content block.
- [ACPex.Schema.Types.ContentBlock.Text](ACPex.Schema.Types.ContentBlock.Text.md): Text content block.
- [ACPex.Schema.Types.EnvVariable](ACPex.Schema.Types.EnvVariable.md): Environment variable definition.
- [ACPex.Schema.Types.FileSystemCapability](ACPex.Schema.Types.FileSystemCapability.md): File system capabilities supported by the client.
- [ACPex.Schema.Types.McpCapabilities](ACPex.Schema.Types.McpCapabilities.md): MCP (Model Context Protocol) capabilities supported by the agent.
- [ACPex.Schema.Types.PromptCapabilities](ACPex.Schema.Types.PromptCapabilities.md): Prompt capabilities supported by the agent.
- [ACPex.Schema.Types.SessionUpdate](ACPex.Schema.Types.SessionUpdate.md): Session update union type.
- [ACPex.Schema.Types.SessionUpdate.AgentMessageChunk](ACPex.Schema.Types.SessionUpdate.AgentMessageChunk.md): Agent message chunk update.
- [ACPex.Schema.Types.SessionUpdate.AgentThoughtChunk](ACPex.Schema.Types.SessionUpdate.AgentThoughtChunk.md): Agent thought chunk update.
- [ACPex.Schema.Types.SessionUpdate.AvailableCommandsUpdate](ACPex.Schema.Types.SessionUpdate.AvailableCommandsUpdate.md): Available commands update.
- [ACPex.Schema.Types.SessionUpdate.CurrentModeUpdate](ACPex.Schema.Types.SessionUpdate.CurrentModeUpdate.md): Current mode update.
- [ACPex.Schema.Types.SessionUpdate.Plan](ACPex.Schema.Types.SessionUpdate.Plan.md): Plan update.
- [ACPex.Schema.Types.SessionUpdate.ToolCall](ACPex.Schema.Types.SessionUpdate.ToolCall.md): Tool call update.
- [ACPex.Schema.Types.SessionUpdate.ToolCallUpdate](ACPex.Schema.Types.SessionUpdate.ToolCallUpdate.md): Tool call update.
- [ACPex.Schema.Types.SessionUpdate.UserMessageChunk](ACPex.Schema.Types.SessionUpdate.UserMessageChunk.md): User message chunk update.
- [ACPex.Schema.Types.TerminalExitStatus](ACPex.Schema.Types.TerminalExitStatus.md): Terminal exit status information.

- Core API
  - [ACPex](ACPex.md): ACP (Agent Client Protocol) implementation for Elixir.

- Behaviours
  - [ACPex.Agent](ACPex.Agent.md): Behaviour for implementing an ACP agent (AI coding assistant).
  - [ACPex.Client](ACPex.Client.md): Behaviour for implementing an ACP client (typically a code editor).

- Protocol
  - [ACPex.Protocol.Connection](ACPex.Protocol.Connection.md): GenServer that manages the state for a single agent-client connection.
  - [ACPex.Protocol.ConnectionSupervisor](ACPex.Protocol.ConnectionSupervisor.md): DynamicSupervisor that manages all active ACP connections.
  - [ACPex.Protocol.Session](ACPex.Protocol.Session.md): GenServer that manages the state for a single conversation session.
  - [ACPex.Protocol.SessionSupervisor](ACPex.Protocol.SessionSupervisor.md): DynamicSupervisor that manages all active sessions for a single connection.

- Schema
  - [ACPex.Schema.Codec](ACPex.Schema.Codec.md): Encoding and decoding utilities for ACP schemas.

- Transport
  - [ACPex.Transport.Ndjson](ACPex.Transport.Ndjson.md): Newline-delimited JSON (ndjson) transport for ACP using Erlang Ports.

- Application
  - [ACPex.Application](ACPex.Application.md): The main OTP application for ACPex.

