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::{AgentNotification, AgentRequest, ClientNotification, ClientRequest};
5
6// ============================================================================
7// Agent side (messages that agents receive)
8// ============================================================================
9
10impl_jsonrpc_request_enum!(ClientRequest {
11    InitializeRequest => "initialize",
12    AuthenticateRequest => "authenticate",
13    #[cfg(feature = "unstable_logout")]
14    LogoutRequest => "logout",
15    NewSessionRequest => "session/new",
16    LoadSessionRequest => "session/load",
17    ListSessionsRequest => "session/list",
18    #[cfg(feature = "unstable_session_fork")]
19    ForkSessionRequest => "session/fork",
20    #[cfg(feature = "unstable_session_resume")]
21    ResumeSessionRequest => "session/resume",
22    #[cfg(feature = "unstable_session_close")]
23    CloseSessionRequest => "session/close",
24    SetSessionModeRequest => "session/set_mode",
25    SetSessionConfigOptionRequest => "session/set_config_option",
26    PromptRequest => "session/prompt",
27    #[cfg(feature = "unstable_session_model")]
28    SetSessionModelRequest => "session/set_model",
29    [ext] ExtMethodRequest,
30});
31
32impl_jsonrpc_notification_enum!(ClientNotification {
33    CancelNotification => "session/cancel",
34    [ext] ExtNotification,
35});
36
37// ============================================================================
38// Client side (messages that clients/editors receive)
39// ============================================================================
40
41impl_jsonrpc_request_enum!(AgentRequest {
42    WriteTextFileRequest => "fs/write_text_file",
43    ReadTextFileRequest => "fs/read_text_file",
44    RequestPermissionRequest => "session/request_permission",
45    CreateTerminalRequest => "terminal/create",
46    TerminalOutputRequest => "terminal/output",
47    ReleaseTerminalRequest => "terminal/release",
48    WaitForTerminalExitRequest => "terminal/wait_for_exit",
49    KillTerminalRequest => "terminal/kill",
50    [ext] ExtMethodRequest,
51});
52
53impl_jsonrpc_notification_enum!(AgentNotification {
54    SessionNotification => "session/update",
55    [ext] ExtNotification,
56});