diff --git a/Cargo.toml b/Cargo.toml index 5a0581e..eac5ecc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["server/packages/*", "gigacode"] [workspace.package] -version = "0.2.1" +version = "0.2.2" edition = "2021" authors = [ "Rivet Gaming, LLC " ] license = "Apache-2.0" @@ -12,13 +12,13 @@ description = "Universal API for automatic coding agents in sandboxes. Supports [workspace.dependencies] # Internal crates -sandbox-agent = { version = "0.2.1", path = "server/packages/sandbox-agent" } -sandbox-agent-error = { version = "0.2.1", path = "server/packages/error" } -sandbox-agent-agent-management = { version = "0.2.1", path = "server/packages/agent-management" } -sandbox-agent-agent-credentials = { version = "0.2.1", path = "server/packages/agent-credentials" } -sandbox-agent-opencode-adapter = { version = "0.2.1", path = "server/packages/opencode-adapter" } -sandbox-agent-opencode-server-manager = { version = "0.2.1", path = "server/packages/opencode-server-manager" } -acp-http-adapter = { version = "0.2.1", path = "server/packages/acp-http-adapter" } +sandbox-agent = { version = "0.2.2", path = "server/packages/sandbox-agent" } +sandbox-agent-error = { version = "0.2.2", path = "server/packages/error" } +sandbox-agent-agent-management = { version = "0.2.2", path = "server/packages/agent-management" } +sandbox-agent-agent-credentials = { version = "0.2.2", path = "server/packages/agent-credentials" } +sandbox-agent-opencode-adapter = { version = "0.2.2", path = "server/packages/opencode-adapter" } +sandbox-agent-opencode-server-manager = { version = "0.2.2", path = "server/packages/opencode-server-manager" } +acp-http-adapter = { version = "0.2.2", path = "server/packages/acp-http-adapter" } # Serialization serde = { version = "1.0", features = ["derive"] } diff --git a/sdks/acp-http-client/package.json b/sdks/acp-http-client/package.json index 1fd4fb6..e81c406 100644 --- a/sdks/acp-http-client/package.json +++ b/sdks/acp-http-client/package.json @@ -1,6 +1,6 @@ { "name": "acp-http-client", - "version": "0.2.1", + "version": "0.2.2", "description": "Protocol-faithful ACP JSON-RPC over streamable HTTP client.", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli-shared/package.json b/sdks/cli-shared/package.json index d878151..3f45e95 100644 --- a/sdks/cli-shared/package.json +++ b/sdks/cli-shared/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-shared", - "version": "0.2.1", + "version": "0.2.2", "description": "Shared helpers for sandbox-agent CLI and SDK", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli/package.json b/sdks/cli/package.json index e79e1cc..2afd1c7 100644 --- a/sdks/cli/package.json +++ b/sdks/cli/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli", - "version": "0.2.1", + "version": "0.2.2", "description": "CLI for sandbox-agent - run AI coding agents in sandboxes", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli/platforms/darwin-arm64/package.json b/sdks/cli/platforms/darwin-arm64/package.json index 74deca6..848650f 100644 --- a/sdks/cli/platforms/darwin-arm64/package.json +++ b/sdks/cli/platforms/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-darwin-arm64", - "version": "0.2.1", + "version": "0.2.2", "description": "sandbox-agent CLI binary for macOS ARM64", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli/platforms/darwin-x64/package.json b/sdks/cli/platforms/darwin-x64/package.json index d179804..7d6d0f1 100644 --- a/sdks/cli/platforms/darwin-x64/package.json +++ b/sdks/cli/platforms/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-darwin-x64", - "version": "0.2.1", + "version": "0.2.2", "description": "sandbox-agent CLI binary for macOS x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli/platforms/linux-arm64/package.json b/sdks/cli/platforms/linux-arm64/package.json index 684a4da..cb3e820 100644 --- a/sdks/cli/platforms/linux-arm64/package.json +++ b/sdks/cli/platforms/linux-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-linux-arm64", - "version": "0.2.1", + "version": "0.2.2", "description": "sandbox-agent CLI binary for Linux arm64", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli/platforms/linux-x64/package.json b/sdks/cli/platforms/linux-x64/package.json index 7c004fc..2e85819 100644 --- a/sdks/cli/platforms/linux-x64/package.json +++ b/sdks/cli/platforms/linux-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-linux-x64", - "version": "0.2.1", + "version": "0.2.2", "description": "sandbox-agent CLI binary for Linux x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/cli/platforms/win32-x64/package.json b/sdks/cli/platforms/win32-x64/package.json index 9166aee..a454722 100644 --- a/sdks/cli/platforms/win32-x64/package.json +++ b/sdks/cli/platforms/win32-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-win32-x64", - "version": "0.2.1", + "version": "0.2.2", "description": "sandbox-agent CLI binary for Windows x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/gigacode/package.json b/sdks/gigacode/package.json index 3c9c614..c3bd4c8 100644 --- a/sdks/gigacode/package.json +++ b/sdks/gigacode/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode", - "version": "0.2.1", + "version": "0.2.2", "description": "Gigacode CLI (sandbox-agent with OpenCode attach by default)", "license": "Apache-2.0", "repository": { diff --git a/sdks/gigacode/platforms/darwin-arm64/package.json b/sdks/gigacode/platforms/darwin-arm64/package.json index ed7aea7..6e379a0 100644 --- a/sdks/gigacode/platforms/darwin-arm64/package.json +++ b/sdks/gigacode/platforms/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode-darwin-arm64", - "version": "0.2.1", + "version": "0.2.2", "description": "gigacode CLI binary for macOS arm64", "license": "Apache-2.0", "repository": { diff --git a/sdks/gigacode/platforms/darwin-x64/package.json b/sdks/gigacode/platforms/darwin-x64/package.json index 2a14864..777ec37 100644 --- a/sdks/gigacode/platforms/darwin-x64/package.json +++ b/sdks/gigacode/platforms/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode-darwin-x64", - "version": "0.2.1", + "version": "0.2.2", "description": "gigacode CLI binary for macOS x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/gigacode/platforms/linux-arm64/package.json b/sdks/gigacode/platforms/linux-arm64/package.json index a97c711..ce97a5c 100644 --- a/sdks/gigacode/platforms/linux-arm64/package.json +++ b/sdks/gigacode/platforms/linux-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode-linux-arm64", - "version": "0.2.1", + "version": "0.2.2", "description": "gigacode CLI binary for Linux arm64", "license": "Apache-2.0", "repository": { diff --git a/sdks/gigacode/platforms/linux-x64/package.json b/sdks/gigacode/platforms/linux-x64/package.json index 3ba6cd1..61c5805 100644 --- a/sdks/gigacode/platforms/linux-x64/package.json +++ b/sdks/gigacode/platforms/linux-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode-linux-x64", - "version": "0.2.1", + "version": "0.2.2", "description": "gigacode CLI binary for Linux x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/gigacode/platforms/win32-x64/package.json b/sdks/gigacode/platforms/win32-x64/package.json index 1e48389..c9de4aa 100644 --- a/sdks/gigacode/platforms/win32-x64/package.json +++ b/sdks/gigacode/platforms/win32-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode-win32-x64", - "version": "0.2.1", + "version": "0.2.2", "description": "gigacode CLI binary for Windows x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/persist-indexeddb/package.json b/sdks/persist-indexeddb/package.json index ba6706d..259b61f 100644 --- a/sdks/persist-indexeddb/package.json +++ b/sdks/persist-indexeddb/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/persist-indexeddb", - "version": "0.2.1", + "version": "0.2.2", "description": "IndexedDB persistence driver for the Sandbox Agent TypeScript SDK", "license": "Apache-2.0", "repository": { diff --git a/sdks/persist-postgres/package.json b/sdks/persist-postgres/package.json index 245d820..250a198 100644 --- a/sdks/persist-postgres/package.json +++ b/sdks/persist-postgres/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/persist-postgres", - "version": "0.2.1", + "version": "0.2.2", "description": "PostgreSQL persistence driver for the Sandbox Agent TypeScript SDK", "license": "Apache-2.0", "repository": { diff --git a/sdks/persist-rivet/package.json b/sdks/persist-rivet/package.json index 4eb1791..fae7e7b 100644 --- a/sdks/persist-rivet/package.json +++ b/sdks/persist-rivet/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/persist-rivet", - "version": "0.2.1", + "version": "0.2.2", "description": "Rivet Actor persistence driver for the Sandbox Agent TypeScript SDK", "license": "Apache-2.0", "repository": { diff --git a/sdks/persist-sqlite/package.json b/sdks/persist-sqlite/package.json index 80623a1..ef73fff 100644 --- a/sdks/persist-sqlite/package.json +++ b/sdks/persist-sqlite/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/persist-sqlite", - "version": "0.2.1", + "version": "0.2.2", "description": "SQLite persistence driver for the Sandbox Agent TypeScript SDK", "license": "Apache-2.0", "repository": { diff --git a/sdks/typescript/package.json b/sdks/typescript/package.json index b9f3716..428ea0b 100644 --- a/sdks/typescript/package.json +++ b/sdks/typescript/package.json @@ -1,6 +1,6 @@ { "name": "sandbox-agent", - "version": "0.2.1", + "version": "0.2.2", "description": "Universal API for automatic coding agents in sandboxes. Supports Claude Code, Codex, OpenCode, and Amp.", "license": "Apache-2.0", "repository": { diff --git a/server/packages/sandbox-agent/src/router/support.rs b/server/packages/sandbox-agent/src/router/support.rs index 8a1ecf0..0e7a7b1 100644 --- a/server/packages/sandbox-agent/src/router/support.rs +++ b/server/packages/sandbox-agent/src/router/support.rs @@ -71,10 +71,7 @@ fn percent_decode(input: &str) -> String { let mut i = 0; while i < bytes.len() { if bytes[i] == b'%' && i + 2 < bytes.len() { - if let (Some(hi), Some(lo)) = ( - hex_nibble(bytes[i + 1]), - hex_nibble(bytes[i + 2]), - ) { + if let (Some(hi), Some(lo)) = (hex_nibble(bytes[i + 1]), hex_nibble(bytes[i + 2])) { output.push((hi << 4) | lo); i += 3; continue; diff --git a/server/packages/sandbox-agent/tests/v1_api.rs b/server/packages/sandbox-agent/tests/v1_api.rs index 3dbd5e7..9e5cc3b 100644 --- a/server/packages/sandbox-agent/tests/v1_api.rs +++ b/server/packages/sandbox-agent/tests/v1_api.rs @@ -65,8 +65,8 @@ impl LiveServer { let (shutdown_tx, shutdown_rx) = oneshot::channel::<()>(); let task = tokio::spawn(async move { - let server = axum::serve(listener, app.into_make_service()) - .with_graceful_shutdown(async { + let server = + axum::serve(listener, app.into_make_service()).with_graceful_shutdown(async { let _ = shutdown_rx.await; }); diff --git a/server/packages/sandbox-agent/tests/v1_api/processes.rs b/server/packages/sandbox-agent/tests/v1_api/processes.rs index aaf072d..3c02029 100644 --- a/server/packages/sandbox-agent/tests/v1_api/processes.rs +++ b/server/packages/sandbox-agent/tests/v1_api/processes.rs @@ -519,19 +519,14 @@ async fn v1_process_terminal_ws_e2e_is_deterministic() { .expect("create process response"); assert_eq!(create_response.status(), reqwest::StatusCode::OK); let create_body: Value = create_response.json().await.expect("create process json"); - let process_id = create_body["id"] - .as_str() - .expect("process id") - .to_string(); + let process_id = create_body["id"].as_str().expect("process id").to_string(); let ws_url = live_server.ws_url(&format!("/v1/processes/{process_id}/terminal/ws")); - let (mut ws, _) = connect_async(&ws_url) - .await - .expect("connect websocket"); + let (mut ws, _) = connect_async(&ws_url).await.expect("connect websocket"); let ready = recv_ws_message(&mut ws).await; - let ready_payload: Value = serde_json::from_str(ready.to_text().expect("ready text frame")) - .expect("ready json"); + let ready_payload: Value = + serde_json::from_str(ready.to_text().expect("ready text frame")).expect("ready json"); assert_eq!(ready_payload["type"], "ready"); assert_eq!(ready_payload["processId"], process_id); @@ -570,7 +565,10 @@ async fn v1_process_terminal_ws_e2e_is_deterministic() { } } - assert!(saw_binary_output, "expected pty binary output over websocket"); + assert!( + saw_binary_output, + "expected pty binary output over websocket" + ); assert!(saw_exit, "expected exit control frame over websocket"); let _ = ws.close(None).await; @@ -605,10 +603,7 @@ async fn v1_process_terminal_ws_auth_e2e() { .expect("create process response"); assert_eq!(create_response.status(), reqwest::StatusCode::OK); let create_body: Value = create_response.json().await.expect("create process json"); - let process_id = create_body["id"] - .as_str() - .expect("process id") - .to_string(); + let process_id = create_body["id"].as_str().expect("process id").to_string(); let unauth_ws_url = live_server.ws_url(&format!("/v1/processes/{process_id}/terminal/ws")); let unauth_err = connect_async(&unauth_ws_url) @@ -629,8 +624,8 @@ async fn v1_process_terminal_ws_auth_e2e() { .expect("authenticated websocket handshake"); let ready = recv_ws_message(&mut ws).await; - let ready_payload: Value = serde_json::from_str(ready.to_text().expect("ready text frame")) - .expect("ready json"); + let ready_payload: Value = + serde_json::from_str(ready.to_text().expect("ready text frame")).expect("ready json"); assert_eq!(ready_payload["type"], "ready"); assert_eq!(ready_payload["processId"], process_id); @@ -640,9 +635,7 @@ async fn v1_process_terminal_ws_auth_e2e() { let _ = ws.close(None).await; let kill_response = http - .post(live_server.http_url(&format!( - "/v1/processes/{process_id}/kill?waitMs=1000" - ))) + .post(live_server.http_url(&format!("/v1/processes/{process_id}/kill?waitMs=1000"))) .bearer_auth(token) .send() .await