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