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_mcp_over_acp")]
30    MessageMcpRequest => "mcp/message",
31    [ext] ExtMethodRequest,
32});
33
34impl_jsonrpc_response_enum!(AgentResponse {
35    InitializeResponse => "initialize",
36    AuthenticateResponse => "authenticate",
37    LogoutResponse => "logout",
38    NewSessionResponse => "session/new",
39    LoadSessionResponse => "session/load",
40    ListSessionsResponse => "session/list",
41    #[cfg(feature = "unstable_session_delete")]
42    DeleteSessionResponse => "session/delete",
43    #[cfg(feature = "unstable_session_fork")]
44    ForkSessionResponse => "session/fork",
45    ResumeSessionResponse => "session/resume",
46    CloseSessionResponse => "session/close",
47    SetSessionModeResponse => "session/set_mode",
48    SetSessionConfigOptionResponse => "session/set_config_option",
49    PromptResponse => "session/prompt",
50    #[cfg(feature = "unstable_mcp_over_acp")]
51    MessageMcpResponse => "mcp/message",
52    [ext] ExtMethodResponse,
53});
54
55impl_jsonrpc_notification_enum!(ClientNotification {
56    CancelNotification => "session/cancel",
57    #[cfg(feature = "unstable_mcp_over_acp")]
58    MessageMcpNotification => "mcp/message",
59    [ext] ExtNotification,
60});
61
62// ============================================================================
63// Client side (messages that clients/editors receive)
64// ============================================================================
65
66impl_jsonrpc_request_enum!(AgentRequest {
67    WriteTextFileRequest => "fs/write_text_file",
68    ReadTextFileRequest => "fs/read_text_file",
69    RequestPermissionRequest => "session/request_permission",
70    CreateTerminalRequest => "terminal/create",
71    TerminalOutputRequest => "terminal/output",
72    ReleaseTerminalRequest => "terminal/release",
73    WaitForTerminalExitRequest => "terminal/wait_for_exit",
74    KillTerminalRequest => "terminal/kill",
75    #[cfg(feature = "unstable_mcp_over_acp")]
76    ConnectMcpRequest => "mcp/connect",
77    #[cfg(feature = "unstable_mcp_over_acp")]
78    MessageMcpRequest => "mcp/message",
79    #[cfg(feature = "unstable_mcp_over_acp")]
80    DisconnectMcpRequest => "mcp/disconnect",
81    [ext] ExtMethodRequest,
82});
83
84impl_jsonrpc_response_enum!(ClientResponse {
85    WriteTextFileResponse => "fs/write_text_file",
86    ReadTextFileResponse => "fs/read_text_file",
87    RequestPermissionResponse => "session/request_permission",
88    CreateTerminalResponse => "terminal/create",
89    TerminalOutputResponse => "terminal/output",
90    ReleaseTerminalResponse => "terminal/release",
91    WaitForTerminalExitResponse => "terminal/wait_for_exit",
92    KillTerminalResponse => "terminal/kill",
93    #[cfg(feature = "unstable_mcp_over_acp")]
94    ConnectMcpResponse => "mcp/connect",
95    #[cfg(feature = "unstable_mcp_over_acp")]
96    MessageMcpResponse => "mcp/message",
97    #[cfg(feature = "unstable_mcp_over_acp")]
98    DisconnectMcpResponse => "mcp/disconnect",
99    [ext] ExtMethodResponse,
100});
101
102impl_jsonrpc_notification_enum!(AgentNotification {
103    SessionNotification => "session/update",
104    #[cfg(feature = "unstable_mcp_over_acp")]
105    MessageMcpNotification => "mcp/message",
106    [ext] ExtNotification,
107});