mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 13:03:46 +00:00
Add Docker-style terminal support with -t (TTY) and -i (interactive) flags: Backend (Rust): - Add portable-pty dependency for PTY allocation on Unix - Extend StartProcessRequest with tty, interactive, and terminalSize options - Add PTY process spawning with TERM=xterm-256color - Add WebSocket endpoint for bidirectional terminal I/O - Add terminal resize endpoint (POST /process/:id/resize) - Add terminal input endpoint (POST /process/:id/input) - Support base64-encoded binary input - Process info now includes tty, interactive, and terminalSize fields - Terminal output is logged to combined.log for persistence Frontend (Inspector UI): - Add @xterm/xterm and addons for terminal rendering - Create Terminal component with xterm.js integration - Add tabbed view (Terminal/Logs) for PTY processes - Terminal auto-connects via WebSocket when process is expanded - Support terminal resize with ResizeObserver - Show PTY badge on processes with TTY enabled - Graceful handling of process exit and disconnection API: - GET /v1/process/:id/terminal - WebSocket for terminal I/O - POST /v1/process/:id/resize - Resize terminal (cols, rows) - POST /v1/process/:id/input - Write data to terminal WebSocket protocol: - type: 'data' - Terminal output (server -> client) - type: 'input' - Terminal input (client -> server) - type: 'resize' - Resize request (client -> server) - type: 'exit' - Process exited (server -> client) - type: 'error' - Error message (server -> client)
84 lines
2.4 KiB
TOML
84 lines
2.4 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = ["server/packages/*"]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
authors = [ "Rivet Gaming, LLC <developer@rivet.gg>" ]
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/rivet-dev/sandbox-agent"
|
|
description = "Universal API for automatic coding agents in sandboxes. Supprots Claude Code, Codex, OpenCode, and Amp."
|
|
|
|
[workspace.dependencies]
|
|
# Internal crates
|
|
sandbox-agent = { version = "0.1.0", path = "server/packages/sandbox-agent" }
|
|
sandbox-agent-error = { version = "0.1.0", path = "server/packages/error" }
|
|
sandbox-agent-agent-management = { version = "0.1.0", path = "server/packages/agent-management" }
|
|
sandbox-agent-agent-credentials = { version = "0.1.0", path = "server/packages/agent-credentials" }
|
|
sandbox-agent-universal-agent-schema = { version = "0.1.0", path = "server/packages/universal-agent-schema" }
|
|
sandbox-agent-extracted-agent-schemas = { version = "0.1.0", path = "server/packages/extracted-agent-schemas" }
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# Error handling
|
|
thiserror = "1.0"
|
|
|
|
# Schema generation
|
|
schemars = "0.8"
|
|
utoipa = { version = "4.2", features = ["axum_extras"] }
|
|
|
|
# Web framework
|
|
axum = "0.7"
|
|
tower = { version = "0.5", features = ["util"] }
|
|
tower-http = { version = "0.5", features = ["cors", "trace"] }
|
|
|
|
# Async runtime
|
|
tokio = { version = "1.36", features = ["macros", "rt-multi-thread", "signal", "time", "io-util", "sync"] }
|
|
tokio-stream = { version = "0.1", features = ["sync"] }
|
|
tokio-tungstenite = "0.21"
|
|
futures = "0.3"
|
|
|
|
# HTTP client
|
|
reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls", "stream"] }
|
|
|
|
# CLI
|
|
clap = { version = "4.5", features = ["derive"] }
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-logfmt = "0.3"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Time/date
|
|
time = { version = "0.3", features = ["parsing", "formatting"] }
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# Filesystem/paths
|
|
dirs = "5.0"
|
|
tempfile = "3.10"
|
|
|
|
# Archive handling
|
|
flate2 = "1.0"
|
|
tar = "0.4"
|
|
zip = { version = "0.6", default-features = false, features = ["deflate"] }
|
|
|
|
# Misc
|
|
url = "2.5"
|
|
regress = "0.10"
|
|
include_dir = "0.7"
|
|
base64 = "0.21"
|
|
|
|
# PTY support
|
|
portable-pty = "0.8"
|
|
|
|
# Code generation (build deps)
|
|
typify = "0.4"
|
|
prettyplease = "0.2"
|
|
syn = "2.0"
|
|
|
|
# Testing
|
|
http-body-util = "0.1"
|
|
insta = { version = "1.41", features = ["yaml"] }
|