From 2a00a03eca4f9c40c509290344d49a5b996f9695 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Fri, 6 Feb 2026 03:27:32 -0800 Subject: [PATCH] chore: cargo fmt --- Cargo.toml | 14 ++--- gigacode/src/main.rs | 2 +- sdks/cli-shared/package.json | 2 +- sdks/cli/package.json | 2 +- sdks/cli/platforms/darwin-arm64/package.json | 2 +- sdks/cli/platforms/darwin-x64/package.json | 2 +- sdks/cli/platforms/linux-arm64/package.json | 2 +- sdks/cli/platforms/linux-x64/package.json | 2 +- sdks/cli/platforms/win32-x64/package.json | 2 +- sdks/gigacode/package.json | 2 +- .../platforms/darwin-arm64/package.json | 2 +- .../platforms/darwin-x64/package.json | 2 +- .../platforms/linux-arm64/package.json | 2 +- .../gigacode/platforms/linux-x64/package.json | 2 +- .../gigacode/platforms/win32-x64/package.json | 2 +- sdks/typescript/package.json | 2 +- server/packages/sandbox-agent/src/cli.rs | 33 +++++++----- server/packages/sandbox-agent/src/daemon.rs | 11 +--- server/packages/sandbox-agent/src/lib.rs | 2 +- .../sandbox-agent/src/opencode_compat.rs | 51 +++++++++---------- server/packages/sandbox-agent/src/router.rs | 41 +++++++-------- .../packages/sandbox-agent/src/telemetry.rs | 7 ++- 22 files changed, 96 insertions(+), 93 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b6812cc..de0ee67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["server/packages/*", "gigacode"] [workspace.package] -version = "0.1.6" +version = "0.1.7-rc.1" edition = "2021" authors = [ "Rivet Gaming, LLC " ] license = "Apache-2.0" @@ -12,12 +12,12 @@ description = "Universal API for automatic coding agents in sandboxes. Supprots [workspace.dependencies] # Internal crates -sandbox-agent = { version = "0.1.6", path = "server/packages/sandbox-agent" } -sandbox-agent-error = { version = "0.1.6", path = "server/packages/error" } -sandbox-agent-agent-management = { version = "0.1.6", path = "server/packages/agent-management" } -sandbox-agent-agent-credentials = { version = "0.1.6", path = "server/packages/agent-credentials" } -sandbox-agent-universal-agent-schema = { version = "0.1.6", path = "server/packages/universal-agent-schema" } -sandbox-agent-extracted-agent-schemas = { version = "0.1.6", path = "server/packages/extracted-agent-schemas" } +sandbox-agent = { version = "0.1.7-rc.1", path = "server/packages/sandbox-agent" } +sandbox-agent-error = { version = "0.1.7-rc.1", path = "server/packages/error" } +sandbox-agent-agent-management = { version = "0.1.7-rc.1", path = "server/packages/agent-management" } +sandbox-agent-agent-credentials = { version = "0.1.7-rc.1", path = "server/packages/agent-credentials" } +sandbox-agent-universal-agent-schema = { version = "0.1.7-rc.1", path = "server/packages/universal-agent-schema" } +sandbox-agent-extracted-agent-schemas = { version = "0.1.7-rc.1", path = "server/packages/extracted-agent-schemas" } # Serialization serde = { version = "1.0", features = ["derive"] } diff --git a/gigacode/src/main.rs b/gigacode/src/main.rs index 5aa64c0..87e93aa 100644 --- a/gigacode/src/main.rs +++ b/gigacode/src/main.rs @@ -1,6 +1,6 @@ use clap::Parser; use sandbox_agent::cli::{ - CliConfig, CliError, Command, GigacodeCli, OpencodeArgs, init_logging, run_command, + init_logging, run_command, CliConfig, CliError, Command, GigacodeCli, OpencodeArgs, }; fn main() { diff --git a/sdks/cli-shared/package.json b/sdks/cli-shared/package.json index 0c041d1..38e3cf4 100644 --- a/sdks/cli-shared/package.json +++ b/sdks/cli-shared/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli-shared", - "version": "0.1.6", + "version": "0.1.7-rc.1", "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 fde9b8b..e04199f 100644 --- a/sdks/cli/package.json +++ b/sdks/cli/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/cli", - "version": "0.1.6", + "version": "0.1.7-rc.1", "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 cfff424..2b8a23c 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.1.6", + "version": "0.1.7-rc.1", "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 8fa6330..e0c51aa 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.1.6", + "version": "0.1.7-rc.1", "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 41db961..1305908 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.1.6", + "version": "0.1.7-rc.1", "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 28e3b13..e248dd2 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.1.6", + "version": "0.1.7-rc.1", "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 e1f3001..8c035db 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.1.6", + "version": "0.1.7-rc.1", "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 202a612..6423937 100644 --- a/sdks/gigacode/package.json +++ b/sdks/gigacode/package.json @@ -1,6 +1,6 @@ { "name": "@sandbox-agent/gigacode", - "version": "0.1.6", + "version": "0.1.7-rc.1", "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 2683489..8cb55c5 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.1.6", + "version": "0.1.7-rc.1", "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 bf13111..c3808d5 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.1.6", + "version": "0.1.7-rc.1", "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 ad00cf5..4030a6b 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.1.6", + "version": "0.1.7-rc.1", "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 02028dd..541eebc 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.1.6", + "version": "0.1.7-rc.1", "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 8e87ab9..b4f537c 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.1.6", + "version": "0.1.7-rc.1", "description": "gigacode CLI binary for Windows x64", "license": "Apache-2.0", "repository": { diff --git a/sdks/typescript/package.json b/sdks/typescript/package.json index 8b135bf..84606db 100644 --- a/sdks/typescript/package.json +++ b/sdks/typescript/package.json @@ -1,6 +1,6 @@ { "name": "sandbox-agent", - "version": "0.1.6", + "version": "0.1.7-rc.1", "description": "Universal API for automatic coding agents in sandboxes. Supprots Claude Code, Codex, OpenCode, and Amp.", "license": "Apache-2.0", "repository": { diff --git a/server/packages/sandbox-agent/src/cli.rs b/server/packages/sandbox-agent/src/cli.rs index 8390f46..0f7c50f 100644 --- a/server/packages/sandbox-agent/src/cli.rs +++ b/server/packages/sandbox-agent/src/cli.rs @@ -11,12 +11,10 @@ use clap::{Args, Parser, Subcommand}; mod build_version { include!(concat!(env!("OUT_DIR"), "/version.rs")); } -use reqwest::blocking::Client as HttpClient; -use reqwest::Method; use crate::router::{build_router_with_state, shutdown_servers}; use crate::router::{ - AgentInstallRequest, AppState, AuthConfig, BrandingMode, CreateSessionRequest, - MessageRequest, PermissionReply, PermissionReplyRequest, QuestionReplyRequest, + AgentInstallRequest, AppState, AuthConfig, BrandingMode, CreateSessionRequest, MessageRequest, + PermissionReply, PermissionReplyRequest, QuestionReplyRequest, }; use crate::router::{ AgentListResponse, AgentModelsResponse, AgentModesResponse, CreateSessionResponse, @@ -25,6 +23,8 @@ use crate::router::{ use crate::server_logs::ServerLogs; use crate::telemetry; use crate::ui; +use reqwest::blocking::Client as HttpClient; +use reqwest::Method; use sandbox_agent_agent_management::agents::{AgentId, AgentManager, InstallOptions}; use sandbox_agent_agent_management::credentials::{ extract_all_credentials, AuthType, CredentialExtractionOptions, ExtractedCredentials, @@ -459,7 +459,11 @@ pub fn run_sandbox_agent() -> Result<(), CliError> { token, no_token, } = cli; - let config = CliConfig { token, no_token, gigacode: false }; + let config = CliConfig { + token, + no_token, + gigacode: false, + }; if let Err(err) = init_logging(&command) { eprintln!("failed to init logging: {err}"); return Err(err); @@ -585,7 +589,11 @@ fn run_api(command: &ApiCommand, cli: &CliConfig) -> Result<(), CliError> { } fn run_opencode(cli: &CliConfig, args: &OpencodeArgs) -> Result<(), CliError> { - let name = if cli.gigacode { "Gigacode" } else { "OpenCode command" }; + let name = if cli.gigacode { + "Gigacode" + } else { + "OpenCode command" + }; write_stderr_line(&format!("\nEXPERIMENTAL: Please report bugs to:\n- GitHub: https://github.com/rivet-dev/sandbox-agent/issues\n- Discord: https://rivet.dev/discord\n\n{name} is powered by:\n- OpenCode (TUI): https://opencode.ai/\n- Sandbox Agent SDK (multi-agent compatibility): https://sandboxagent.dev/\n\n"))?; let token = cli.token.clone(); @@ -628,12 +636,8 @@ fn run_opencode(cli: &CliConfig, args: &OpencodeArgs) -> Result<(), CliError> { fn run_daemon(command: &DaemonCommand, cli: &CliConfig) -> Result<(), CliError> { let token = cli.token.as_deref(); match command { - DaemonCommand::Start(args) => { - crate::daemon::start(cli, &args.host, args.port, token) - } - DaemonCommand::Stop(args) => { - crate::daemon::stop(&args.host, args.port) - } + DaemonCommand::Start(args) => crate::daemon::start(cli, &args.host, args.port, token), + DaemonCommand::Stop(args) => crate::daemon::stop(&args.host, args.port), DaemonCommand::Status(args) => { let st = crate::daemon::status(&args.host, args.port, token)?; write_stderr_line(&st.to_string())?; @@ -848,7 +852,10 @@ fn resolve_opencode_bin(explicit: Option<&PathBuf>) -> Result return Ok(PathBuf::from(path)); } if let Some(path) = find_in_path("opencode") { - write_stderr_line(&format!("using opencode binary from PATH: {}", path.display()))?; + write_stderr_line(&format!( + "using opencode binary from PATH: {}", + path.display() + ))?; return Ok(path); } diff --git a/server/packages/sandbox-agent/src/daemon.rs b/server/packages/sandbox-agent/src/daemon.rs index f711f6f..e011d11 100644 --- a/server/packages/sandbox-agent/src/daemon.rs +++ b/server/packages/sandbox-agent/src/daemon.rs @@ -309,12 +309,7 @@ pub fn status(host: &str, port: u16, token: Option<&str>) -> Result, -) -> Result<(), CliError> { +pub fn start(cli: &CliConfig, host: &str, port: u16, token: Option<&str>) -> Result<(), CliError> { let base_url = format!("http://{host}:{port}"); let pid_path = daemon_pid_path(host, port); let log_path = daemon_log_path(host, port); @@ -451,9 +446,7 @@ pub fn ensure_running( // Check build version if !is_version_current(host, port) { let old = read_daemon_version(host, port).unwrap_or_else(|| "unknown".to_string()); - eprintln!( - "daemon outdated (build {old} -> {BUILD_ID}), restarting..." - ); + eprintln!("daemon outdated (build {old} -> {BUILD_ID}), restarting..."); stop(host, port)?; return start(cli, host, port, token); } diff --git a/server/packages/sandbox-agent/src/lib.rs b/server/packages/sandbox-agent/src/lib.rs index 1f9d62c..c77f909 100644 --- a/server/packages/sandbox-agent/src/lib.rs +++ b/server/packages/sandbox-agent/src/lib.rs @@ -1,6 +1,7 @@ //! Sandbox agent core utilities. mod agent_server_logs; +pub mod cli; pub mod credentials; pub mod daemon; pub mod opencode_compat; @@ -8,4 +9,3 @@ pub mod router; pub mod server_logs; pub mod telemetry; pub mod ui; -pub mod cli; diff --git a/server/packages/sandbox-agent/src/opencode_compat.rs b/server/packages/sandbox-agent/src/opencode_compat.rs index e756cce..97dffb6 100644 --- a/server/packages/sandbox-agent/src/opencode_compat.rs +++ b/server/packages/sandbox-agent/src/opencode_compat.rs @@ -414,17 +414,15 @@ async fn ensure_backing_session( .await { Ok(_) => Ok(()), - Err(SandboxError::SessionAlreadyExists { .. }) => { - state - .inner - .session_manager() - .set_session_overrides(session_id, model, variant) - .await - .or_else(|err| match err { - SandboxError::SessionNotFound { .. } => Ok(()), - other => Err(other), - }) - } + Err(SandboxError::SessionAlreadyExists { .. }) => state + .inner + .session_manager() + .set_session_overrides(session_id, model, variant) + .await + .or_else(|err| match err { + SandboxError::SessionNotFound { .. } => Ok(()), + other => Err(other), + }), Err(err) => Err(err), } } @@ -822,8 +820,8 @@ async fn resolve_session_agent( if resolved_agent.is_none() { provider_id = cache.default_group.clone(); model_id = default_model_id.clone(); - resolved_agent = - resolve_agent_from_model(&cache, &provider_id, &model_id).or_else(|| Some(default_agent_id())); + resolved_agent = resolve_agent_from_model(&cache, &provider_id, &model_id) + .or_else(|| Some(default_agent_id())); } let mut resolved_agent_id: Option = None; @@ -1998,7 +1996,11 @@ async fn apply_item_event( let input_value = runtime .tool_args_by_call .get(call_id) - .and_then(|args| tool_input_from_arguments(Some(args.as_str())).as_object().cloned()) + .and_then(|args| { + tool_input_from_arguments(Some(args.as_str())) + .as_object() + .cloned() + }) .map(Value::Object) .unwrap_or_else(|| json!({})); let state_value = json!({ @@ -2066,7 +2068,6 @@ async fn apply_item_event( _ => {} } } - } async fn apply_tool_item_event( @@ -2405,9 +2406,11 @@ async fn apply_item_delta( .unwrap_or_else(|| format!("{}_text", message_id)); let part = build_text_part_with_id(&session_id, &message_id, &part_id, &text); upsert_message_part(&state.opencode, &session_id, &message_id, part.clone()).await; - state - .opencode - .emit_event(part_event_with_delta("message.part.updated", &part, Some(&delta))); + state.opencode.emit_event(part_event_with_delta( + "message.part.updated", + &part, + Some(&delta), + )); let _ = state .opencode .update_runtime(&session_id, |runtime| { @@ -2623,9 +2626,7 @@ async fn oc_config_patch(Json(body): Json) -> impl IntoResponse { responses((status = 200)), tag = "opencode" )] -async fn oc_config_providers( - State(state): State>, -) -> impl IntoResponse { +async fn oc_config_providers(State(state): State>) -> impl IntoResponse { let cache = opencode_model_cache(&state).await; let mut grouped: BTreeMap> = BTreeMap::new(); for entry in &cache.entries { @@ -3950,9 +3951,7 @@ async fn oc_question_reject( responses((status = 200)), tag = "opencode" )] -async fn oc_provider_list( - State(state): State>, -) -> impl IntoResponse { +async fn oc_provider_list(State(state): State>) -> impl IntoResponse { let cache = opencode_model_cache(&state).await; let mut grouped: BTreeMap> = BTreeMap::new(); for entry in &cache.entries { @@ -3999,9 +3998,7 @@ async fn oc_provider_list( responses((status = 200)), tag = "opencode" )] -async fn oc_provider_auth( - State(state): State>, -) -> impl IntoResponse { +async fn oc_provider_auth(State(state): State>) -> impl IntoResponse { let cache = opencode_model_cache(&state).await; let mut auth_map = serde_json::Map::new(); for group_id in cache.group_names.keys() { diff --git a/server/packages/sandbox-agent/src/router.rs b/server/packages/sandbox-agent/src/router.rs index 1563bee..0910da4 100644 --- a/server/packages/sandbox-agent/src/router.rs +++ b/server/packages/sandbox-agent/src/router.rs @@ -91,7 +91,11 @@ impl AppState { Self::with_branding(auth, agent_manager, BrandingMode::default()) } - pub fn with_branding(auth: AuthConfig, agent_manager: AgentManager, branding: BrandingMode) -> Self { + pub fn with_branding( + auth: AuthConfig, + agent_manager: AgentManager, + branding: BrandingMode, + ) -> Self { let agent_manager = Arc::new(agent_manager); let session_manager = Arc::new(SessionManager::new(agent_manager.clone())); session_manager @@ -3392,11 +3396,12 @@ impl SessionManager { "limit": null } }); - let rx = server - .send_request(id, &request) - .ok_or_else(|| SandboxError::StreamError { - message: "failed to send model/list request".to_string(), - })?; + let rx = + server + .send_request(id, &request) + .ok_or_else(|| SandboxError::StreamError { + message: "failed to send model/list request".to_string(), + })?; let result = tokio::time::timeout(Duration::from_secs(30), rx).await; let value = match result { @@ -4758,10 +4763,7 @@ fn parse_opencode_models(value: &Value) -> Option { let mut default_model = None; for provider_id in provider_order { - if let Some(model_id) = default_map - .get(&provider_id) - .and_then(Value::as_str) - { + if let Some(model_id) = default_map.get(&provider_id).and_then(Value::as_str) { default_model = Some(format!("{provider_id}/{model_id}")); break; } @@ -7017,20 +7019,19 @@ fn build_anthropic_headers( AuthType::ApiKey => { let value = reqwest::header::HeaderValue::from_str(&credentials.api_key).map_err(|_| { - SandboxError::StreamError { - message: "invalid anthropic api key header".to_string(), - } - })?; + SandboxError::StreamError { + message: "invalid anthropic api key header".to_string(), + } + })?; headers.insert("x-api-key", value); } AuthType::Oauth => { let value = format!("Bearer {}", credentials.api_key); - let header = - reqwest::header::HeaderValue::from_str(&value).map_err(|_| { - SandboxError::StreamError { - message: "invalid anthropic oauth header".to_string(), - } - })?; + let header = reqwest::header::HeaderValue::from_str(&value).map_err(|_| { + SandboxError::StreamError { + message: "invalid anthropic oauth header".to_string(), + } + })?; headers.insert(reqwest::header::AUTHORIZATION, header); } } diff --git a/server/packages/sandbox-agent/src/telemetry.rs b/server/packages/sandbox-agent/src/telemetry.rs index 6bed31e..9e3079e 100644 --- a/server/packages/sandbox-agent/src/telemetry.rs +++ b/server/packages/sandbox-agent/src/telemetry.rs @@ -135,7 +135,12 @@ fn build_beacon_event(dt: i64) -> TelemetryEvent { ) } -fn new_event(dt: i64, entity_type: &str, event_name: &str, data: D) -> TelemetryEvent { +fn new_event( + dt: i64, + entity_type: &str, + event_name: &str, + data: D, +) -> TelemetryEvent { let eid = load_or_create_id(); TelemetryEvent { p: "sandbox-agent".to_string(),