Skip to main content

agent_client_protocol/schema/
enum_impls.rs

1//! JsonRpcMessage and JsonRpcNotification/JsonRpcRequest implementations for
2//! the ACP enum types from agent-client-protocol-schema.
3
4use crate::schema::{
5    AgentNotification, AgentRequest, AgentResponse, ClientNotification, ClientRequest,
6    ClientResponse,
7};
8
9// ============================================================================
10// Agent side (messages that agents receive)
11// ============================================================================
12
13impl_jsonrpc_request_enum!(ClientRequest {
14    InitializeRequest => "initialize",
15    AuthenticateRequest => "authenticate",
16    LogoutRequest => "logout",
17    NewSessionRequest => "session/new",
18    LoadSessionRequest => "session/load",
19    ListSessionsRequest => "session/list",
20    #[cfg(feature = "unstable_session_delete")]
21    DeleteSessionRequest => "session/delete",
22    #[cfg(feature = "unstable_session_fork")]
23    ForkSessionRequest => "session/fork",
24    ResumeSessionRequest => "session/resume",
25    CloseSessionRequest => "session/close",
26    SetSessionModeRequest => "session/set_mode",
27    SetSessionConfigOptionRequest => "session/set_config_option",
28    PromptRequest => "session/prompt",
29    #[cfg(feature = "unstable_session_model")]
30    SetSessionModelRequest => "session/set_model",
31    #[cfg(feature = "unstable_mcp_over_acp")]
32    MessageMcpRequest => "mcp/message",
33    [ext] ExtMethodRequest,
34});
35
36impl_jsonrpc_response_enum!(AgentResponse {
37    InitializeResponse => "initialize",
38    AuthenticateResponse => "authenticate",
39    LogoutResponse => "logout",
40    NewSessionResponse => "session/new",
41    LoadSessionResponse => "session/load",
42    ListSessionsResponse => "session/list",
43    #[cfg(feature = "unstable_session_delete")]
44    DeleteSessionResponse => "session/delete",
45    #[cfg(feature = "unstable_session_fork")]
46    ForkSessionResponse => "session/fork",
47    ResumeSessionResponse => "session/resume",
48    CloseSessionResponse => "session/close",
49    SetSessionModeResponse => "session/set_mode",
50    SetSessionConfigOptionResponse => "session/set_config_option",
51    PromptResponse => "session/prompt",
52    #[cfg(feature = "unstable_session_model")]
53    SetSessionModelResponse => "session/set_model",
54    #[cfg(feature = "unstable_mcp_over_acp")]
55    MessageMcpResponse => "mcp/message",
56    [ext] ExtMethodResponse,
57});
58
59impl_jsonrpc_notification_enum!(ClientNotification {
60    CancelNotification => "session/cancel",
61    #[cfg(feature = "unstable_mcp_over_acp")]
62    MessageMcpNotification => "mcp/message",
63    [ext] ExtNotification,
64});
65
66// ============================================================================
67// Client side (messages that clients/editors receive)
68// ============================================================================
69
70impl_jsonrpc_request_enum!(AgentRequest {
71    WriteTextFileRequest => "fs/write_text_file",
72    ReadTextFileRequest => "fs/read_text_file",
73    RequestPermissionRequest => "session/request_permission",
74    CreateTerminalRequest => "terminal/create",
75    TerminalOutputRequest => "terminal/output",
76    ReleaseTerminalRequest => "terminal/release",
77    WaitForTerminalExitRequest => "terminal/wait_for_exit",
78    KillTerminalRequest => "terminal/kill",
79    #[cfg(feature = "unstable_mcp_over_acp")]
80    ConnectMcpRequest => "mcp/connect",
81    #[cfg(feature = "unstable_mcp_over_acp")]
82    MessageMcpRequest => "mcp/message",
83    #[cfg(feature = "unstable_mcp_over_acp")]
84    DisconnectMcpRequest => "mcp/disconnect",
85    [ext] ExtMethodRequest,
86});
87
88impl_jsonrpc_response_enum!(ClientResponse {
89    WriteTextFileResponse => "fs/write_text_file",
90    ReadTextFileResponse => "fs/read_text_file",
91    RequestPermissionResponse => "session/request_permission",
92    CreateTerminalResponse => "terminal/create",
93    TerminalOutputResponse => "terminal/output",
94    ReleaseTerminalResponse => "terminal/release",
95    WaitForTerminalExitResponse => "terminal/wait_for_exit",
96    KillTerminalResponse => "terminal/kill",
97    #[cfg(feature = "unstable_mcp_over_acp")]
98    ConnectMcpResponse => "mcp/connect",
99    #[cfg(feature = "unstable_mcp_over_acp")]
100    MessageMcpResponse => "mcp/message",
101    #[cfg(feature = "unstable_mcp_over_acp")]
102    DisconnectMcpResponse => "mcp/disconnect",
103    [ext] ExtMethodResponse,
104});
105
106impl_jsonrpc_notification_enum!(AgentNotification {
107    SessionNotification => "session/update",
108    #[cfg(feature = "unstable_mcp_over_acp")]
109    MessageMcpNotification => "mcp/message",
110    [ext] ExtNotification,
111});