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::v1::{
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    #[cfg(feature = "unstable_llm_providers")]
17    ListProvidersRequest => "providers/list",
18    #[cfg(feature = "unstable_llm_providers")]
19    SetProviderRequest => "providers/set",
20    #[cfg(feature = "unstable_llm_providers")]
21    DisableProviderRequest => "providers/disable",
22    LogoutRequest => "logout",
23    NewSessionRequest => "session/new",
24    LoadSessionRequest => "session/load",
25    ListSessionsRequest => "session/list",
26    DeleteSessionRequest => "session/delete",
27    #[cfg(feature = "unstable_session_fork")]
28    ForkSessionRequest => "session/fork",
29    ResumeSessionRequest => "session/resume",
30    CloseSessionRequest => "session/close",
31    SetSessionModeRequest => "session/set_mode",
32    SetSessionConfigOptionRequest => "session/set_config_option",
33    PromptRequest => "session/prompt",
34    #[cfg(feature = "unstable_mcp_over_acp")]
35    MessageMcpRequest => "mcp/message",
36    [ext] ExtMethodRequest,
37});
38
39impl_jsonrpc_response_enum!(AgentResponse {
40    InitializeResponse => "initialize",
41    AuthenticateResponse => "authenticate",
42    #[cfg(feature = "unstable_llm_providers")]
43    ListProvidersResponse => "providers/list",
44    #[cfg(feature = "unstable_llm_providers")]
45    SetProviderResponse => "providers/set",
46    #[cfg(feature = "unstable_llm_providers")]
47    DisableProviderResponse => "providers/disable",
48    LogoutResponse => "logout",
49    NewSessionResponse => "session/new",
50    LoadSessionResponse => "session/load",
51    ListSessionsResponse => "session/list",
52    DeleteSessionResponse => "session/delete",
53    #[cfg(feature = "unstable_session_fork")]
54    ForkSessionResponse => "session/fork",
55    ResumeSessionResponse => "session/resume",
56    CloseSessionResponse => "session/close",
57    SetSessionModeResponse => "session/set_mode",
58    SetSessionConfigOptionResponse => "session/set_config_option",
59    PromptResponse => "session/prompt",
60    #[cfg(feature = "unstable_mcp_over_acp")]
61    MessageMcpResponse => "mcp/message",
62    [ext] ExtMethodResponse,
63});
64
65impl_jsonrpc_notification_enum!(ClientNotification {
66    CancelNotification => "session/cancel",
67    #[cfg(feature = "unstable_mcp_over_acp")]
68    MessageMcpNotification => "mcp/message",
69    [ext] ExtNotification,
70});
71
72// ============================================================================
73// Client side (messages that clients/editors receive)
74// ============================================================================
75
76impl_jsonrpc_request_enum!(AgentRequest {
77    WriteTextFileRequest => "fs/write_text_file",
78    ReadTextFileRequest => "fs/read_text_file",
79    RequestPermissionRequest => "session/request_permission",
80    CreateTerminalRequest => "terminal/create",
81    TerminalOutputRequest => "terminal/output",
82    ReleaseTerminalRequest => "terminal/release",
83    WaitForTerminalExitRequest => "terminal/wait_for_exit",
84    KillTerminalRequest => "terminal/kill",
85    CreateElicitationRequest => "elicitation/create",
86    #[cfg(feature = "unstable_mcp_over_acp")]
87    ConnectMcpRequest => "mcp/connect",
88    #[cfg(feature = "unstable_mcp_over_acp")]
89    MessageMcpRequest => "mcp/message",
90    #[cfg(feature = "unstable_mcp_over_acp")]
91    DisconnectMcpRequest => "mcp/disconnect",
92    [ext] ExtMethodRequest,
93});
94
95impl_jsonrpc_response_enum!(ClientResponse {
96    WriteTextFileResponse => "fs/write_text_file",
97    ReadTextFileResponse => "fs/read_text_file",
98    RequestPermissionResponse => "session/request_permission",
99    CreateTerminalResponse => "terminal/create",
100    TerminalOutputResponse => "terminal/output",
101    ReleaseTerminalResponse => "terminal/release",
102    WaitForTerminalExitResponse => "terminal/wait_for_exit",
103    KillTerminalResponse => "terminal/kill",
104    CreateElicitationResponse => "elicitation/create",
105    #[cfg(feature = "unstable_mcp_over_acp")]
106    ConnectMcpResponse => "mcp/connect",
107    #[cfg(feature = "unstable_mcp_over_acp")]
108    MessageMcpResponse => "mcp/message",
109    #[cfg(feature = "unstable_mcp_over_acp")]
110    DisconnectMcpResponse => "mcp/disconnect",
111    [ext] ExtMethodResponse,
112});
113
114impl_jsonrpc_notification_enum!(AgentNotification {
115    SessionNotification => "session/update",
116    CompleteElicitationNotification => "elicitation/complete",
117    #[cfg(feature = "unstable_mcp_over_acp")]
118    MessageMcpNotification => "mcp/message",
119    [ext] ExtNotification,
120});