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    DeleteSessionRequest => "session/delete",
21    #[cfg(feature = "unstable_session_fork")]
22    ForkSessionRequest => "session/fork",
23    ResumeSessionRequest => "session/resume",
24    CloseSessionRequest => "session/close",
25    SetSessionModeRequest => "session/set_mode",
26    SetSessionConfigOptionRequest => "session/set_config_option",
27    PromptRequest => "session/prompt",
28    #[cfg(feature = "unstable_mcp_over_acp")]
29    MessageMcpRequest => "mcp/message",
30    [ext] ExtMethodRequest,
31});
32
33impl_jsonrpc_response_enum!(AgentResponse {
34    InitializeResponse => "initialize",
35    AuthenticateResponse => "authenticate",
36    LogoutResponse => "logout",
37    NewSessionResponse => "session/new",
38    LoadSessionResponse => "session/load",
39    ListSessionsResponse => "session/list",
40    DeleteSessionResponse => "session/delete",
41    #[cfg(feature = "unstable_session_fork")]
42    ForkSessionResponse => "session/fork",
43    ResumeSessionResponse => "session/resume",
44    CloseSessionResponse => "session/close",
45    SetSessionModeResponse => "session/set_mode",
46    SetSessionConfigOptionResponse => "session/set_config_option",
47    PromptResponse => "session/prompt",
48    #[cfg(feature = "unstable_mcp_over_acp")]
49    MessageMcpResponse => "mcp/message",
50    [ext] ExtMethodResponse,
51});
52
53impl_jsonrpc_notification_enum!(ClientNotification {
54    CancelNotification => "session/cancel",
55    #[cfg(feature = "unstable_mcp_over_acp")]
56    MessageMcpNotification => "mcp/message",
57    [ext] ExtNotification,
58});
59
60// ============================================================================
61// Client side (messages that clients/editors receive)
62// ============================================================================
63
64impl_jsonrpc_request_enum!(AgentRequest {
65    WriteTextFileRequest => "fs/write_text_file",
66    ReadTextFileRequest => "fs/read_text_file",
67    RequestPermissionRequest => "session/request_permission",
68    CreateTerminalRequest => "terminal/create",
69    TerminalOutputRequest => "terminal/output",
70    ReleaseTerminalRequest => "terminal/release",
71    WaitForTerminalExitRequest => "terminal/wait_for_exit",
72    KillTerminalRequest => "terminal/kill",
73    #[cfg(feature = "unstable_elicitation")]
74    CreateElicitationRequest => "elicitation/create",
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_elicitation")]
94    CreateElicitationResponse => "elicitation/create",
95    #[cfg(feature = "unstable_mcp_over_acp")]
96    ConnectMcpResponse => "mcp/connect",
97    #[cfg(feature = "unstable_mcp_over_acp")]
98    MessageMcpResponse => "mcp/message",
99    #[cfg(feature = "unstable_mcp_over_acp")]
100    DisconnectMcpResponse => "mcp/disconnect",
101    [ext] ExtMethodResponse,
102});
103
104impl_jsonrpc_notification_enum!(AgentNotification {
105    SessionNotification => "session/update",
106    #[cfg(feature = "unstable_elicitation")]
107    CompleteElicitationNotification => "elicitation/complete",
108    #[cfg(feature = "unstable_mcp_over_acp")]
109    MessageMcpNotification => "mcp/message",
110    [ext] ExtNotification,
111});