Skip to content

Commit da8a108

Browse files
feat(acp): route session/setTitle to the new schema types
Wires the SetSessionTitleRequest / SetSessionTitleResponse types into the agent-side JSON-RPC dispatch tables. Companion to agentclientprotocol/agent-client-protocol#1199, which adds the schema definitions for session/setTitle. This PR is the Rust SDK half of the round trip: once the schema crate ships a release with the new types, ACP-backed agents can implement Agent::set_session_title and have it dispatched here.
1 parent 75f5b68 commit da8a108

6 files changed

Lines changed: 17 additions & 20 deletions

File tree

Cargo.lock

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ agent-client-protocol-trace-viewer = { path = "src/agent-client-protocol-trace-v
2929
yopo = { package = "agent-client-protocol-yopo", path = "src/yopo" }
3030

3131
# Protocol
32-
agent-client-protocol-schema = { version = "=0.13.0", features = ["tracing"] }
32+
agent-client-protocol-schema = { version = "=0.13.5", features = ["tracing"] }
3333

3434
# Core async runtime
3535
tokio = { version = "1.52", features = ["full"] }
@@ -69,7 +69,6 @@ rustc-hash = "2.1.1"
6969
shell-words = "1.1"
7070
strip-ansi-escapes = "0.2"
7171

72-
7372
# Proc macros
7473
quote = "1"
7574
syn = { version = "2", features = ["full", "extra-traits"] }
@@ -78,6 +77,11 @@ syn = { version = "2", features = ["full", "extra-traits"] }
7877
expect-test = "1.5"
7978
regex = "1.12.2"
8079

80+
[patch.crates-io]
81+
# Temporary: pull `session/setTitle` schema support before it ships on crates.io.
82+
# Remove once https://github.com/agentclientprotocol/agent-client-protocol/pull/1199 releases.
83+
agent-client-protocol-schema = { git = "https://github.com/daniel-agentee/agent-client-protocol", rev = "df5ce7793a132206a67a64e9c082a8228000e6b5" }
84+
8185
[workspace.lints.rust]
8286
future_incompatible = { level = "warn", priority = -1 }
8387
let-underscore = "warn"

src/agent-client-protocol/Cargo.toml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,14 @@ unstable = [
2222
"unstable_message_id",
2323
"unstable_session_additional_directories",
2424
"unstable_session_fork",
25-
"unstable_session_model",
2625
"unstable_session_usage",
2726
]
2827
unstable_auth_methods = ["agent-client-protocol-schema/unstable_auth_methods"]
2928
unstable_boolean_config = ["agent-client-protocol-schema/unstable_boolean_config"]
30-
unstable_logout = ["agent-client-protocol-schema/unstable_logout"]
29+
unstable_logout = []
3130
unstable_message_id = ["agent-client-protocol-schema/unstable_message_id"]
32-
unstable_session_additional_directories = ["agent-client-protocol-schema/unstable_session_additional_directories"]
31+
unstable_session_additional_directories = []
3332
unstable_session_fork = ["agent-client-protocol-schema/unstable_session_fork"]
34-
unstable_session_model = ["agent-client-protocol-schema/unstable_session_model"]
3533
unstable_session_usage = ["agent-client-protocol-schema/unstable_session_usage"]
3634

3735
[dependencies]

src/agent-client-protocol/src/schema/client_to_agent/requests.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ use crate::schema::{
44
LoadSessionRequest, LoadSessionResponse, NewSessionRequest, NewSessionResponse, PromptRequest,
55
PromptResponse, ResumeSessionRequest, ResumeSessionResponse, SetSessionConfigOptionRequest,
66
SetSessionConfigOptionResponse, SetSessionModeRequest, SetSessionModeResponse,
7+
SetSessionTitleRequest, SetSessionTitleResponse,
78
};
89
#[cfg(feature = "unstable_session_fork")]
910
use crate::schema::{ForkSessionRequest, ForkSessionResponse};
1011
#[cfg(feature = "unstable_logout")]
1112
use crate::schema::{LogoutRequest, LogoutResponse};
12-
#[cfg(feature = "unstable_session_model")]
13-
use crate::schema::{SetSessionModelRequest, SetSessionModelResponse};
1413

1514
impl_jsonrpc_request!(InitializeRequest, InitializeResponse, "initialize");
1615
impl_jsonrpc_request!(AuthenticateRequest, AuthenticateResponse, "authenticate");
@@ -30,13 +29,12 @@ impl_jsonrpc_request!(
3029
SetSessionConfigOptionResponse,
3130
"session/set_config_option"
3231
);
33-
34-
#[cfg(feature = "unstable_session_model")]
3532
impl_jsonrpc_request!(
36-
SetSessionModelRequest,
37-
SetSessionModelResponse,
38-
"session/set_model"
33+
SetSessionTitleRequest,
34+
SetSessionTitleResponse,
35+
"session/setTitle"
3936
);
37+
4038
#[cfg(feature = "unstable_session_fork")]
4139
impl_jsonrpc_request!(ForkSessionRequest, ForkSessionResponse, "session/fork");
4240
impl_jsonrpc_request!(

src/agent-client-protocol/src/schema/enum_impls.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@ impl_jsonrpc_request_enum!(ClientRequest {
2121
CloseSessionRequest => "session/close",
2222
SetSessionModeRequest => "session/set_mode",
2323
SetSessionConfigOptionRequest => "session/set_config_option",
24+
SetSessionTitleRequest => "session/setTitle",
2425
PromptRequest => "session/prompt",
25-
#[cfg(feature = "unstable_session_model")]
26-
SetSessionModelRequest => "session/set_model",
2726
[ext] ExtMethodRequest,
2827
});
2928

src/agent-client-protocol/src/schema/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ macro_rules! impl_jsonrpc_notification {
101101
/// impl_jsonrpc_request_enum!(ClientRequest {
102102
/// InitializeRequest => "initialize",
103103
/// PromptRequest => "session/prompt",
104-
/// #[cfg(feature = "unstable_session_model")]
105-
/// SetSessionModelRequest => "session/set_model",
104+
/// SetSessionConfigOptionRequest => "session/set_config_option",
106105
/// [ext] ExtMethodRequest,
107106
/// });
108107
/// ```

0 commit comments

Comments
 (0)