Protocol Types
ACP protocol type definitions and enumerations
Overview
The ACP::Protocol module contains all JSON-RPC 2.0 and ACP schema types. All types use JSON::Serializable and many use discriminated unions for polymorphic deserialization.
Enumerations
StopReason
enum ACP :: Protocol :: StopReason
EndTurn
MaxTokens
MaxTurnRequests
Refusal
Cancelled
end
enum ACP :: Protocol :: ToolKind
Read
Edit
Delete
Move
Search
Execute
Think
Fetch
SwitchMode
Other
end
enum ACP :: Protocol :: ToolCallStatus
Pending
InProgress
Completed
Failed
end
PermissionOptionKind
enum ACP :: Protocol :: PermissionOptionKind
AllowOnce
AllowAlways
RejectOnce
RejectAlways
end
PlanEntryPriority
enum ACP :: Protocol :: PlanEntryPriority
High
Medium
Low
end
PlanEntryStatus
enum ACP :: Protocol :: PlanEntryStatus
Pending
InProgress
Completed
end
SessionConfigOptionCategory
enum ACP :: Protocol :: SessionConfigOptionCategory
Mode
Model
ThoughtLevel
Other
end
Role
enum ACP :: Protocol :: Role
Assistant
User
end
Content Blocks
Content blocks are used to construct prompts. They form a discriminated union (ContentBlock):
Type
Description
TextContentBlock
Plain text with optional annotations
ImageContentBlock
Base64 image with MIME type
AudioContentBlock
Base64 audio with MIME type
ResourceContentBlock
Embedded resource (URI + content)
ResourceLinkContentBlock
Resource link with metadata
FileContentBlock
Backward-compatible alias for ResourceLinkContentBlock
Tool Call Content
Types for tool call content within updates:
Type
Description
ToolCallContentBlock
Wraps a standard content block
ToolCallDiff
File modification diff (path, oldText, newText)
ToolCallTerminal
Embedded terminal reference by ID
ToolCallLocation
File location tracking (path, line)
Session Update Types
Session updates are received via the on_update callback. They form a discriminated union (SessionUpdate):
Type
Key Fields
AgentMessageChunkUpdate
delta : String
AgentThoughtChunkUpdate
delta : String
ToolCallUpdate
tool_name : String, tool_call_id : String
ToolCallStatusUpdate
status : ToolCallStatus, tool_call_id : String
PlanUpdate
entries : Array(PlanEntry)
UserMessageChunkUpdate
delta : String
AvailableCommandsUpdate
commands : Array(Command)
CurrentModeUpdate
mode_id : String
ConfigOptionUpdate
config_id : String, value : JSON::Any
Capabilities
ClientCapabilities
ACP :: Protocol :: ClientCapabilities .new(
fs : FsCapabilities ? = nil ,
terminal : Bool ? = nil
)
Field
Type
Description
fs
FsCapabilities?
File system capabilities
terminal
Bool?
Terminal support
FsCapabilities
ACP :: Protocol :: FsCapabilities .new(
read_text_file : Bool ? = nil ,
write_text_file : Bool ? = nil
)
AgentCapabilities
Field
Type
Description
load_session
Bool?
Session loading support
prompt_capabilities
PromptCapabilities?
Prompt format support
mcp_capabilities
McpCapabilities?
MCP support
session_capabilities
SessionCapabilities?
Session features
PromptCapabilities
Field
Type
Description
image
Bool?
Image content support
audio
Bool?
Audio content support
embedded_context
Bool?
Embedded context support
Client Methods
Types for agent-initiated requests:
File System
Method
Params
Result
fs/read_text_file
ReadTextFileParams
ReadTextFileResult
fs/write_text_file
WriteTextFileParams
WriteTextFileResult
Terminal
Method
Params
Result
terminal/create
CreateTerminalParams
CreateTerminalResult
terminal/output
TerminalOutputParams
TerminalOutputResult
terminal/release
ReleaseTerminalParams
ReleaseTerminalResult
terminal/wait_for_exit
WaitForTerminalExitParams
WaitForTerminalExitResult
terminal/kill
KillTerminalParams
KillTerminalResult
Error Codes
module ACP :: Protocol :: ErrorCode
PARSE_ERROR = -32700
INVALID_REQUEST = -32600
METHOD_NOT_FOUND = -32601
INVALID_PARAMS = -32602
INTERNAL_ERROR = -32603
AUTH_REQUIRED = -32000
RESOURCE_NOT_FOUND = -32002
end
Previous
Transport
Next
PromptBuilder