mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 20:03:11 +00:00
6.4 KiB
6.4 KiB
Instructions
ACP v1 Baseline
- v1 is ACP-native.
/v1/*is removed and returns410 Gone(application/problem+json)./opencode/*is disabled during ACP core phases and returns503.- Prompt/session traffic is ACP JSON-RPC over streamable HTTP on
/v1/rpc:POST /v1/rpcGET /v1/rpc(SSE)DELETE /v1/rpc
- Control-plane endpoints:
GET /v1/healthGET /v1/agentsPOST /v1/agents/{agent}/install
- Binary filesystem transfer endpoints (intentionally HTTP, not ACP extension methods):
GET /v1/fs/filePUT /v1/fs/filePOST /v1/fs/upload-batch
- Sandbox Agent ACP extension method naming:
- Custom ACP methods use
_sandboxagent/...(not_sandboxagent/v1/...). - Session detach method is
_sandboxagent/session/detach.
- Custom ACP methods use
API Scope
- ACP is the primary protocol for agent/session behavior and all functionality that talks directly to the agent.
- ACP extensions may be used for gaps (for example
skills,models, and related metadata), but the default is that agent-facing behavior is implemented by the agent through ACP. - Custom HTTP APIs are for non-agent/session platform services (for example filesystem, terminals, and other host/runtime capabilities).
- Filesystem and terminal APIs remain Sandbox Agent-specific HTTP contracts and are not ACP.
- Keep
GET /v1/fs/file,PUT /v1/fs/file, andPOST /v1/fs/upload-batchon HTTP:- These are Sandbox Agent host/runtime operations with cross-agent-consistent behavior.
- They may involve very large binary transfers that ACP JSON-RPC envelopes are not suited to stream.
- This is intentionally separate from ACP native
fs/read_text_fileandfs/write_text_file. - ACP extension variants may exist in parallel, but SDK defaults should prefer HTTP for these binary transfer operations.
Naming and Ownership
- This repository/product is Sandbox Agent.
- Gigacode is a separate user-facing UI/client, not the server product name.
- Gigacode integrates with Sandbox Agent via the OpenCode-compatible surface (
/opencode/*) when that compatibility layer is enabled. - Canonical extension namespace/domain string is
sandboxagent.dev(no hyphen). - Canonical custom ACP extension method prefix is
_sandboxagent/...(no hyphen).
Architecture (Brief)
- HTTP contract and problem/error mapping:
server/packages/sandbox-agent/src/router.rs - ACP client runtime and agent process bridge:
server/packages/sandbox-agent/src/acp_runtime/mod.rs - Agent/native + ACP agent process install and lazy install:
server/packages/agent-management/ - Inspector UI served at
/ui/and bound to ACP over HTTP fromfrontend/packages/inspector/
TypeScript SDK Architecture
- TypeScript clients are split into:
acp-http-client: protocol-pure ACP-over-HTTP (/v1/acp) with no Sandbox-specific HTTP helpers.sandbox-agent:SandboxAgentSDK wrapper that combines ACP session operations with Sandbox control-plane and filesystem helpers.
SandboxAgententry points areSandboxAgent.connect(...)andSandboxAgent.start(...).- Stable Sandbox session methods are
createSession,resumeSession,resumeOrCreateSession,destroySession,sendSessionMethod, andonSessionEvent. Sessionhelpers areprompt(...),send(...), andonEvent(...).- Cleanup is
sdk.dispose().
Docs Source Of Truth
- For TypeScript docs/examples, source of truth is implementation in:
sdks/typescript/src/client.tssdks/typescript/src/index.tssdks/acp-http-client/src/index.ts
- Do not document TypeScript APIs unless they are exported and implemented in those files.
- For HTTP/CLI docs/examples, source of truth is:
server/packages/sandbox-agent/src/router.rsserver/packages/sandbox-agent/src/cli.rs
- Keep docs aligned to implemented endpoints/commands only (for example ACP under
/v1/acp, not legacy/v1/sessionsAPIs).
Source Documents
~/misc/acp-docs/schema/schema.json~/misc/acp-docs/schema/meta.jsonresearch/acp/spec.mdresearch/acp/v1-schema-to-acp-mapping.mdresearch/acp/friction.mdresearch/acp/todo.md
Change Tracking
- Keep CLI subcommands and HTTP endpoints in sync.
- Update
docs/cli.mdxwhen CLI behavior changes. - Regenerate
docs/openapi.jsonwhen HTTP contracts change. - Keep
docs/inspector.mdxanddocs/sdks/typescript.mdxaligned with implementation. - Append blockers/decisions to
research/acp/friction.mdduring ACP work. - TypeScript SDK tests should run against a real running server/runtime over real
/v1HTTP APIs, typically using the realmockagent for deterministic behavior. - Do not use Vitest fetch/transport mocks to simulate server functionality in TypeScript SDK tests.
Docker Examples (Dev Testing)
- When manually testing bleeding-edge (unreleased) versions of sandbox-agent in
examples/, useSANDBOX_AGENT_DEV=1with the Docker-based examples. - This triggers
examples/shared/Dockerfile.devwhich builds the server binary from local source and packages it into the Docker image. - Example:
SANDBOX_AGENT_DEV=1 pnpm --filter @sandbox-agent/example-mcp start
Install Version References
- Channel policy:
- Sandbox Agent install/version references use a pinned minor channel
0.N.x(for curl URLs andsandbox-agent/@sandbox-agent/clinpm/bun installs). - Gigacode install/version references use
latest(for@sandbox-agent/gigacodeinstall/run commands andgigacode-install.*release promotion). - Release promotion policy:
latestreleases must still updatelatest; when a release islatest, Sandbox Agent must also be promoted to the matching minor channel0.N.x.
- Sandbox Agent install/version references use a pinned minor channel
- Keep every install-version reference below in sync whenever versions/channels change:
README.mddocs/acp-http-client.mdxdocs/cli.mdxdocs/quickstart.mdxdocs/sdk-overview.mdxdocs/session-persistence.mdxdocs/deploy/local.mdxdocs/deploy/cloudflare.mdxdocs/deploy/vercel.mdxdocs/deploy/daytona.mdxdocs/deploy/e2b.mdxdocs/deploy/docker.mdxfrontend/packages/website/src/components/GetStarted.tsx.claude/commands/post-release-testing.mdexamples/cloudflare/Dockerfileexamples/daytona/src/index.tsexamples/daytona/src/daytona-with-snapshot.tsexamples/docker/src/index.tsexamples/e2b/src/index.tsexamples/vercel/src/index.tsscripts/release/main.tsscripts/release/promote-artifacts.tsscripts/release/sdk.tsscripts/sandbox-testing/test-sandbox.ts