acp_dart library
A Dart implementation of the Agent Client Protocol (ACP).
This library provides a complete implementation of the ACP specification, enabling communication between AI agents and client applications.
Key Components
- ClientSideConnection and AgentSideConnection for managing ACP connections
- Client and Agent abstract interfaces for implementing protocol participants
- TerminalHandle for controlling terminal operations
- ndJsonStream for NDJSON-based communication
- Comprehensive schema definitions for all ACP messages
Example Usage
See the examples directory for complete implementations of agents and clients.
Protocol Documentation
For detailed protocol information, see: https://agentclientprotocol.com/
Classes
- AcpStream
- Stream interface for ACP connections.
- Agent
- Abstract base class defining the Agent interface for ACP connections.
- AgentAuthenticateResponse
- AgentCapabilities
- AgentCreateTerminalRequest
- AgentExtensionMethodRequest
- AgentExtensionMethodResponse
- AgentExtensionNotification
- AgentInitializeResponse
- AgentKillTerminalRequest
- AgentLoadSessionResponse
- AgentMessageChunkSessionUpdate
- AgentNewSessionResponse
- AgentNotification
- All possible notifications that an agent can send to a client.
- AgentNotificationUnion
- Base class for notifications sent by the agent.
- AgentPromptResponse
- AgentReadTextFileRequest
- AgentReleaseTerminalRequest
- AgentRequest
- All possible requests that an agent can send to a client.
- AgentRequestPermissionRequest
- AgentRequestUnion
- Base class for requests initiated by the agent (handled by the client).
- AgentResponse
- All possible responses that an agent can send to a client.
- AgentResponseUnion
- Base class for responses produced by the agent.
- AgentSetSessionModelResponse
- AgentSetSessionModeResponse
- AgentSideConnection
- An agent-side connection to a client.
- AgentTerminalOutputRequest
- AgentThoughtChunkSessionUpdate
- AgentWaitForTerminalExitRequest
- AgentWriteTextFileRequest
- Annotations
- Optional annotations for the client. The client can use annotations to inform how objects are used or displayed
- AudioContentBlock
- AuthenticateRequest
- AuthenticateResponse
- AuthMethod
- AvailableCommand
- Information about a command.
- AvailableCommandInput
- The input specification for a command.
- AvailableCommandsUpdateSessionUpdate
- BlobResourceContents
- Binary resource contents.
- CancelledOutcome
- CancelNotification
- Notification to cancel ongoing operations for a session.
- Client
- Abstract base class defining the Client interface for ACP connections.
- ClientAuthenticateRequest
- ClientCancelNotification
- ClientCapabilities
- ClientCreateTerminalResponse
- ClientExtensionMethodRequest
- ClientExtensionMethodResponse
- ClientExtensionNotification
- ClientInitializeRequest
- ClientKillTerminalResponse
- ClientLoadSessionRequest
- ClientNewSessionRequest
- ClientNotificationUnion
- Notifications sent by the client to the agent.
- ClientPromptRequest
- ClientReadTextFileResponse
- ClientReleaseTerminalResponse
- ClientRequestPermissionResponse
- ClientRequestUnion
- Requests initiated by the client (handled by the agent).
- ClientResponseUnion
- Responses returned by the client to the agent.
- ClientSetSessionModelRequest
- ClientSetSessionModeRequest
- ClientSideConnection
- A client-side connection to an agent.
- ClientTerminalOutputResponse
- ClientWaitForTerminalExitResponse
- ClientWriteTextFileResponse
- Connection
- Base connection class for managing JSON-RPC communication over ACP streams
- ContentBlock
- Content produced by a user or agent.
- ContentToolCallContent
- CreateTerminalRequest
- CreateTerminalResponse
- CurrentModeUpdateSessionUpdate
- DiffToolCallContent
- EmbeddedResource
- EmbeddedResourceResource
- Resource content that can be embedded in a message.
- EnvVariable
- ExtMethodRequest
- ExtMethodResponse
- ExtNotification
- FileSystemCapability
- HttpHeader
- HttpMcpServer
- ImageContentBlock
- InitializeRequest
- InitializeResponse
- KillTerminalCommandRequest
- KillTerminalCommandResponse
- LoadSessionRequest
- LoadSessionResponse
- McpCapabilities
- McpServerBase
- Base class for all MCP Server definitions (HTTP, SSE, Stdio).
- ModelInfo
- NewSessionRequest
- NewSessionResponse
- PermissionOption
- Plan
- PlanEntry
- A single entry in the execution plan.
- PlanSessionUpdate
- PromptCapabilities
- PromptRequest
- PromptResponse
- ReadTextFileRequest
- ReadTextFileResponse
- ReleaseTerminalRequest
- ReleaseTerminalResponse
- RequestPermissionOutcome
- RequestPermissionRequest
- RequestPermissionResponse
- ResourceContentBlock
- ResourceLinkContentBlock
- SelectedOutcome
- SessionAgentNotification
- SessionMode
- SessionModelState
- SessionModeState
- SessionNotification
- Notification containing a session update from the agent.
- SessionUpdate
- SetSessionModelRequest
- SetSessionModelResponse
- SetSessionModeRequest
- SetSessionModeResponse
- SseMcpServer
- StdioMcpServer
- TerminalExitStatus
- TerminalHandle
- A handle for managing terminal operations within a session.
- TerminalOutputRequest
- TerminalOutputResponse
- TerminalToolCallContent
- TextContentBlock
- TextResourceContents
- Text-based resource contents.
- ToolCall
- ToolCallContent
- Content produced by a tool call.
- ToolCallLocation
- A file location being accessed or modified by a tool.
- ToolCallSessionUpdate
- ToolCallUpdate
- ToolCallUpdateSessionUpdate
- UnknownSessionUpdate
- UnstructuredCommandInput
- All text that was typed after the command name is provided as input.
- UserMessageChunkSessionUpdate
- WaitForTerminalExitRequest
- WaitForTerminalExitResponse
- WriteTextFileRequest
- WriteTextFileResponse
Enums
- PermissionOptionKind
- PlanEntryPriority
- PlanEntryStatus
- Role
- The sender or recipient of messages and data in a conversation.
- StopReason
- Reasons why an agent stops processing a prompt turn.
- ToolCallStatus
- Execution status of a tool call.
- ToolKind
- Categories of tools that can be invoked.
Extensions
-
AgentRequestLookup
on Iterable<
AgentRequestUnion> - Convenience helpers to map methods back to union factories.
Constants
-
agentMethods
→ const Map<
String, String> - Protocol method constants for agent-side requests
-
clientMethods
→ const Map<
String, String> - Protocol method constants for client-side requests
Functions
-
ndJsonStream(
Stream< List< input, StreamSink<int> >List< output) → AcpStreamint> > - Creates an ACP Stream from a pair of newline-delimited JSON streams.
Typedefs
Exceptions / Errors
- RequestError
- Request error for ACP/JSON-RPC communication