--- title: "TypeScript SDK" description: "Generated types and a thin fetch-based client." --- The TypeScript SDK is generated from the OpenAPI spec produced by the Rust server. ## Generate types ```bash pnpm --filter sandbox-agent generate ``` This runs: - `cargo run -p sandbox-agent-openapi-gen` to emit OpenAPI JSON - `openapi-typescript` to generate types ## Usage ```ts import { SandboxDaemonClient } from "sandbox-agent"; const client = new SandboxDaemonClient({ baseUrl: "http://127.0.0.1:2468", token: process.env.SANDBOX_TOKEN, }); await client.createSession("my-session", { agent: "claude" }); await client.postMessage("my-session", { message: "Hello" }); const events = await client.getEvents("my-session", { offset: 0, limit: 50 }); ``` ## Autospawn (Node only) ```ts import { connectSandboxDaemonClient } from "sandbox-agent"; const client = await connectSandboxDaemonClient({ spawn: { enabled: true }, }); await client.createSession("my-session", { agent: "claude" }); await client.postMessage("my-session", { message: "Hello" }); await client.dispose(); ``` Autospawn uses the local `sandbox-agent` binary. Install `@sandbox-agent/cli` (recommended), or set `SANDBOX_AGENT_BIN` to the binary path. ## Endpoint mapping
client.listAgents() Maps to `GET /v1/agents`.
client.installAgent(agentId, body) Maps to `POST /v1/agents/{agentId}/install`.
client.getAgentModes(agentId) Maps to `GET /v1/agents/{agentId}/modes`.
client.createSession(sessionId, body) Maps to `POST /v1/sessions/{sessionId}`.
client.postMessage(sessionId, body) Maps to `POST /v1/sessions/{sessionId}/messages`.
client.getEvents(sessionId, params) Maps to `GET /v1/sessions/{sessionId}/events`.
client.getEventsSse(sessionId, params) Maps to `GET /v1/sessions/{sessionId}/events/sse` (raw SSE response).
client.streamEvents(sessionId, params) Helper that parses SSE into `UniversalEvent` objects.
client.replyQuestion(sessionId, questionId, body) Maps to `POST /v1/sessions/{sessionId}/questions/{questionId}/reply`.
client.rejectQuestion(sessionId, questionId) Maps to `POST /v1/sessions/{sessionId}/questions/{questionId}/reject`.
client.replyPermission(sessionId, permissionId, body) Maps to `POST /v1/sessions/{sessionId}/permissions/{permissionId}/reply`.