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