chore: upgrade sacp to 11.0.0 stable and agent-client-protocol-schema to 0.11

- Upgrade sacp/sacp-tokio from 11.0.0-alpha.1 to 11.0.0 stable
- Upgrade agent-client-protocol-schema from 0.10 to 0.11
- Rebase vendor/sacp-tokio patches (kill_tree, CREATE_NO_WINDOW, stderr
  truncation) onto official 11.0.0 baseline
- Adapt renamed types: FileSystemCapability → FileSystemCapabilities,
  KillTerminalCommandRequest/Response → KillTerminalRequest/Response

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
xintaofei
2026-04-03 22:10:15 +08:00
parent 56d6db7866
commit ac0d849a7b
7 changed files with 52 additions and 40 deletions

42
src-tauri/Cargo.lock generated
View File

@@ -21,16 +21,16 @@ dependencies = [
[[package]]
name = "agent-client-protocol-schema"
version = "0.10.8"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44bc1fef9c32f03bce2ab44af35b6f483bfd169bf55cc59beeb2e3b1a00ae4d1"
checksum = "ca68e7e55681ce56546c0cecc6bc8f20493d24b44c6d93ec46174f310730bba2"
dependencies = [
"anyhow",
"derive_more 2.1.1",
"schemars 1.2.1",
"serde",
"serde_json",
"strum 0.27.2",
"strum 0.28.0",
]
[[package]]
@@ -461,7 +461,7 @@ dependencies = [
"proc-macro2",
"quote",
"regex",
"rustc-hash",
"rustc-hash 1.1.0",
"shlex",
"syn 2.0.114",
"which 4.4.2",
@@ -4792,9 +4792,9 @@ dependencies = [
[[package]]
name = "rmcp"
version = "0.12.0"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "528d42f8176e6e5e71ea69182b17d1d0a19a6b3b894b564678b74cd7cab13cfa"
checksum = "2231b2c085b371c01bc90c0e6c1cab8834711b6394533375bdbf870b0166d419"
dependencies = [
"async-trait",
"base64 0.22.1",
@@ -4814,9 +4814,9 @@ dependencies = [
[[package]]
name = "rmcp-macros"
version = "0.12.0"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3f81daaa494eb8e985c9462f7d6ce1ab05e5299f48aafd76cdd3d8b060e6f59"
checksum = "36ea0e100fadf81be85d7ff70f86cd805c7572601d4ab2946207f36540854b43"
dependencies = [
"darling 0.23.0",
"proc-macro2",
@@ -4867,6 +4867,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustc-hash"
version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
[[package]]
name = "rustc_version"
version = "0.4.1"
@@ -4989,18 +4995,18 @@ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
[[package]]
name = "sacp"
version = "11.0.0-alpha.1"
version = "11.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "337fd4bd779e666b889032766bd57e46ffbe0fc07657444d67730c32398e20a2"
checksum = "b4c55e83008bb3aec4bc1348bf1a58dc5d42381ee704697dccb5c59553dce0fc"
dependencies = [
"agent-client-protocol-schema",
"anyhow",
"boxfnonce",
"futures",
"futures-concurrency",
"fxhash",
"jsonrpcmsg",
"rmcp",
"rustc-hash 2.1.2",
"sacp-derive",
"schemars 1.2.1",
"serde",
@@ -5014,9 +5020,9 @@ dependencies = [
[[package]]
name = "sacp-derive"
version = "11.0.0-alpha.1"
version = "11.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff639847b2093b2b6c441948f510f505cbcc17209e102ec321dc878901e42359"
checksum = "ab42f7ccff8ab957cb7eaee9727cfca1ba38ea390178cb3d1cdfc1ddbce1ddd8"
dependencies = [
"proc-macro2",
"quote",
@@ -5025,7 +5031,7 @@ dependencies = [
[[package]]
name = "sacp-tokio"
version = "11.0.0-alpha.1"
version = "11.0.0"
dependencies = [
"futures",
"kill_tree",
@@ -6052,18 +6058,18 @@ checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
[[package]]
name = "strum"
version = "0.27.2"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd"
dependencies = [
"strum_macros",
]
[[package]]
name = "strum_macros"
version = "0.27.2"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
dependencies = [
"heck 0.5.0",
"proc-macro2",

View File

@@ -53,8 +53,8 @@ chrono = { version = "0.4", features = ["serde"] }
thiserror = "2"
dirs = "6"
walkdir = "2"
sacp = "11.0.0-alpha.1"
sacp-tokio = "11.0.0-alpha.1"
sacp = "11.0.0"
sacp-tokio = "11.0.0"
tokio = { version = "1", features = ["process", "io-util", "sync", "macros", "rt", "net", "rt-multi-thread"] }
uuid = { version = "1", features = ["v4"] }
futures = "0.3"
@@ -72,7 +72,7 @@ sea-orm-migration = { version = "1.1", features = ["sqlx-sqlite", "runtime-tokio
toml = "0.8"
notify = "6"
base64 = "0.22"
agent-client-protocol-schema = { version = "0.10", features = ["unstable_session_usage", "unstable_session_fork"] }
agent-client-protocol-schema = { version = "0.11", features = ["unstable_session_usage", "unstable_session_fork"] }
kill_tree = { version = "0.2", features = ["tokio"] }
which = "7"
keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service"], optional = true }

View File

@@ -6,8 +6,8 @@ use sacp::schema::McpServerStdio;
use sacp::schema::{
BlobResourceContents, CancelNotification, ClientCapabilities, ContentBlock, ContentChunk,
CreateTerminalRequest, CreateTerminalResponse, EmbeddedResource, EmbeddedResourceResource,
FileSystemCapability, ImageContent, InitializeRequest, KillTerminalCommandRequest,
KillTerminalCommandResponse, LoadSessionRequest, NewSessionRequest, NewSessionResponse,
FileSystemCapabilities, ImageContent, InitializeRequest, KillTerminalRequest,
KillTerminalResponse, LoadSessionRequest, NewSessionRequest, NewSessionResponse,
PermissionOptionKind, Plan, PlanEntryPriority, PlanEntryStatus, PromptRequest, ProtocolVersion,
ReadTextFileRequest, ReadTextFileResponse, ReleaseTerminalRequest, ReleaseTerminalResponse,
RequestPermissionOutcome, RequestPermissionRequest, RequestPermissionResponse, ResourceLink,
@@ -656,8 +656,8 @@ async fn run_connection(
.on_receive_request(
{
let runtime = terminal_runtime.clone();
async move |req: KillTerminalCommandRequest,
responder: Responder<KillTerminalCommandResponse>,
async move |req: KillTerminalRequest,
responder: Responder<KillTerminalResponse>,
_cx: ConnectionTo<Agent>| {
respond_terminal_request(responder, runtime.kill_terminal(req).await)?;
Ok(())
@@ -677,12 +677,12 @@ async fn run_connection(
},
on_receive_request!(),
)
.connect_with(agent, async move |cx| {
.connect_with(agent, async move |cx| -> Result<(), sacp::Error> {
// Advertise filesystem + terminal capabilities for ACP tool execution.
let init_request = InitializeRequest::new(ProtocolVersion::LATEST).client_capabilities(
ClientCapabilities::new()
.terminal(true)
.fs(FileSystemCapability::new()
.fs(FileSystemCapabilities::new()
.read_text_file(true)
.write_text_file(true)),
);

View File

@@ -3,8 +3,8 @@ use std::process::Stdio;
use std::sync::Arc;
use sacp::schema::{
CreateTerminalRequest, CreateTerminalResponse, KillTerminalCommandRequest,
KillTerminalCommandResponse, ReleaseTerminalRequest, ReleaseTerminalResponse,
CreateTerminalRequest, CreateTerminalResponse, KillTerminalRequest,
KillTerminalResponse, ReleaseTerminalRequest, ReleaseTerminalResponse,
TerminalExitStatus, TerminalOutputRequest, TerminalOutputResponse, WaitForTerminalExitRequest,
WaitForTerminalExitResponse,
};
@@ -335,8 +335,8 @@ impl TerminalRuntime {
pub async fn kill_terminal(
&self,
request: KillTerminalCommandRequest,
) -> Result<KillTerminalCommandResponse, TerminalRuntimeError> {
request: KillTerminalRequest,
) -> Result<KillTerminalResponse, TerminalRuntimeError> {
let terminal = self
.find_terminal(
&request.terminal_id.to_string(),
@@ -344,7 +344,7 @@ impl TerminalRuntime {
)
.await?;
terminal.kill_command().await?;
Ok(KillTerminalCommandResponse::new())
Ok(KillTerminalResponse::new())
}
pub async fn release_terminal(

View File

@@ -12,7 +12,7 @@
[package]
edition = "2024"
name = "sacp-tokio"
version = "11.0.0-alpha.1"
version = "11.0.0"
build = false
autolib = false
autobins = false
@@ -45,7 +45,7 @@ path = "tests/debug_logging.rs"
version = "0.3.31"
[dependencies.sacp]
version = "11.0.0-alpha.1"
version = "11.0.0"
[dependencies.serde]
version = "1.0"

View File

@@ -1,6 +1,6 @@
[package]
name = "sacp-tokio"
version = "11.0.0-alpha.1"
version = "11.0.0"
edition = "2024"
description = "Tokio-based utilities for SACP (Symposium's extensions to ACP)"
license = "MIT OR Apache-2.0"
@@ -9,7 +9,7 @@ keywords = ["acp", "agent", "protocol", "ai", "tokio"]
categories = ["development-tools"]
[dependencies]
sacp = { version = "11.0.0-alpha.1", path = "../sacp" }
sacp = { version = "11.0.0", path = "../sacp" }
futures.workspace = true
serde.workspace = true

View File

@@ -7,7 +7,7 @@
mod acp_agent;
pub use acp_agent::{AcpAgent, LineDirection};
use sacp::{ByteStreams, Role, ConnectTo};
use sacp::{ByteStreams, ConnectTo, Role};
use std::sync::Arc;
use tokio_util::compat::{TokioAsyncReadCompatExt, TokioAsyncWriteCompatExt};
@@ -38,7 +38,10 @@ impl Default for Stdio {
}
impl<Counterpart: Role> ConnectTo<Counterpart> for Stdio {
async fn connect_to(self, client: impl ConnectTo<Counterpart::Counterpart>) -> Result<(), sacp::Error> {
async fn connect_to(
self,
client: impl ConnectTo<Counterpart::Counterpart>,
) -> Result<(), sacp::Error> {
if let Some(callback) = self.debug_callback {
use futures::AsyncBufReadExt;
use futures::AsyncWriteExt;
@@ -73,8 +76,11 @@ impl<Counterpart: Role> ConnectTo<Counterpart> for Stdio {
))
as std::pin::Pin<Box<dyn futures::Sink<String, Error = std::io::Error> + Send>>;
ConnectTo::<Counterpart>::connect_to(sacp::Lines::new(outgoing_sink, incoming_lines), client)
.await
ConnectTo::<Counterpart>::connect_to(
sacp::Lines::new(outgoing_sink, incoming_lines),
client,
)
.await
} else {
// Without debug: use simple ByteStreams
ConnectTo::<Counterpart>::connect_to(