diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 946652f..d959135 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -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", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index c2e209b..9f9089a 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -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 } diff --git a/src-tauri/src/acp/connection.rs b/src-tauri/src/acp/connection.rs index 146b1ea..5f1af15 100644 --- a/src-tauri/src/acp/connection.rs +++ b/src-tauri/src/acp/connection.rs @@ -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, + async move |req: KillTerminalRequest, + responder: Responder, _cx: ConnectionTo| { 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)), ); diff --git a/src-tauri/src/acp/terminal_runtime.rs b/src-tauri/src/acp/terminal_runtime.rs index 30fe4c9..928f2da 100644 --- a/src-tauri/src/acp/terminal_runtime.rs +++ b/src-tauri/src/acp/terminal_runtime.rs @@ -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 { + request: KillTerminalRequest, + ) -> Result { 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( diff --git a/src-tauri/vendor/sacp-tokio/Cargo.toml b/src-tauri/vendor/sacp-tokio/Cargo.toml index dfa6a7c..4109be6 100644 --- a/src-tauri/vendor/sacp-tokio/Cargo.toml +++ b/src-tauri/vendor/sacp-tokio/Cargo.toml @@ -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" diff --git a/src-tauri/vendor/sacp-tokio/Cargo.toml.orig b/src-tauri/vendor/sacp-tokio/Cargo.toml.orig index 26b1a8c..c7c9842 100644 --- a/src-tauri/vendor/sacp-tokio/Cargo.toml.orig +++ b/src-tauri/vendor/sacp-tokio/Cargo.toml.orig @@ -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 diff --git a/src-tauri/vendor/sacp-tokio/src/lib.rs b/src-tauri/vendor/sacp-tokio/src/lib.rs index 7d5e07f..24c9229 100644 --- a/src-tauri/vendor/sacp-tokio/src/lib.rs +++ b/src-tauri/vendor/sacp-tokio/src/lib.rs @@ -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 ConnectTo for Stdio { - async fn connect_to(self, client: impl ConnectTo) -> Result<(), sacp::Error> { + async fn connect_to( + self, + client: impl ConnectTo, + ) -> Result<(), sacp::Error> { if let Some(callback) = self.debug_callback { use futures::AsyncBufReadExt; use futures::AsyncWriteExt; @@ -73,8 +76,11 @@ impl ConnectTo for Stdio { )) as std::pin::Pin + Send>>; - ConnectTo::::connect_to(sacp::Lines::new(outgoing_sink, incoming_lines), client) - .await + ConnectTo::::connect_to( + sacp::Lines::new(outgoing_sink, incoming_lines), + client, + ) + .await } else { // Without debug: use simple ByteStreams ConnectTo::::connect_to(