diff --git a/.claude/commands/post-release-testing.md b/.claude/commands/post-release-testing.md
index 771a1d8..09e2b6a 100644
--- a/.claude/commands/post-release-testing.md
+++ b/.claude/commands/post-release-testing.md
@@ -43,7 +43,7 @@ Manually verify the install script works in a fresh environment:
```bash
docker run --rm alpine:latest sh -c "
apk add --no-cache curl ca-certificates libstdc++ libgcc bash &&
- curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh &&
+ curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh &&
sandbox-agent --version
"
```
diff --git a/README.md b/README.md
index b7ac39a..535e5ad 100644
--- a/README.md
+++ b/README.md
@@ -80,11 +80,11 @@ Import the SDK directly into your Node or browser application. Full type safety
**Install**
```bash
-npm install sandbox-agent@0.2.x
+npm install sandbox-agent@0.3.x
```
```bash
-bun add sandbox-agent@0.2.x
+bun add sandbox-agent@0.3.x
# Optional: allow Bun to run postinstall scripts for native binaries (required for SandboxAgent.start()).
bun pm trust @sandbox-agent/cli-linux-x64 @sandbox-agent/cli-linux-arm64 @sandbox-agent/cli-darwin-arm64 @sandbox-agent/cli-darwin-x64 @sandbox-agent/cli-win32-x64
```
@@ -138,7 +138,7 @@ Run as an HTTP server and connect from any language. Deploy to E2B, Daytona, Ver
```bash
# Install it
-curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
# Run it
sandbox-agent server --token "$SANDBOX_TOKEN" --host 127.0.0.1 --port 2468
```
@@ -165,12 +165,12 @@ sandbox-agent server --no-token --host 127.0.0.1 --port 2468
Install the CLI wrapper (optional but convenient):
```bash
-npm install -g @sandbox-agent/cli@0.2.x
+npm install -g @sandbox-agent/cli@0.3.x
```
```bash
# Allow Bun to run postinstall scripts for native binaries.
-bun add -g @sandbox-agent/cli@0.2.x
+bun add -g @sandbox-agent/cli@0.3.x
bun pm -g trust @sandbox-agent/cli-linux-x64 @sandbox-agent/cli-linux-arm64 @sandbox-agent/cli-darwin-arm64 @sandbox-agent/cli-darwin-x64 @sandbox-agent/cli-win32-x64
```
@@ -185,11 +185,11 @@ sandbox-agent api sessions send-message-stream my-session --message "Hello" --en
You can also use npx like:
```bash
-npx @sandbox-agent/cli@0.2.x --help
+npx @sandbox-agent/cli@0.3.x --help
```
```bash
-bunx @sandbox-agent/cli@0.2.x --help
+bunx @sandbox-agent/cli@0.3.x --help
```
[CLI documentation](https://sandboxagent.dev/docs/cli)
diff --git a/docker/release/linux-aarch64.Dockerfile b/docker/release/linux-aarch64.Dockerfile
index ef70c14..412e6c0 100644
--- a/docker/release/linux-aarch64.Dockerfile
+++ b/docker/release/linux-aarch64.Dockerfile
@@ -11,6 +11,7 @@ COPY frontend/packages/inspector/package.json ./frontend/packages/inspector/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
COPY sdks/typescript/package.json ./sdks/typescript/
# Install dependencies
@@ -21,13 +22,15 @@ COPY docs/openapi.json ./docs/
COPY sdks/cli-shared ./sdks/cli-shared
COPY sdks/acp-http-client ./sdks/acp-http-client
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
+COPY sdks/react ./sdks/react
COPY sdks/typescript ./sdks/typescript
-# Build cli-shared, acp-http-client, SDK, then persist-indexeddb (depends on SDK)
+# Build cli-shared, acp-http-client, SDK, then persist-indexeddb and react (depends on SDK)
RUN cd sdks/cli-shared && pnpm exec tsup
RUN cd sdks/acp-http-client && pnpm exec tsup
RUN cd sdks/typescript && SKIP_OPENAPI_GEN=1 pnpm exec tsup
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+RUN cd sdks/react && pnpm exec tsup
# Copy inspector source and build
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/docker/release/linux-x86_64.Dockerfile b/docker/release/linux-x86_64.Dockerfile
index 262543b..323e471 100644
--- a/docker/release/linux-x86_64.Dockerfile
+++ b/docker/release/linux-x86_64.Dockerfile
@@ -11,6 +11,7 @@ COPY frontend/packages/inspector/package.json ./frontend/packages/inspector/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
COPY sdks/typescript/package.json ./sdks/typescript/
# Install dependencies
@@ -21,13 +22,15 @@ COPY docs/openapi.json ./docs/
COPY sdks/cli-shared ./sdks/cli-shared
COPY sdks/acp-http-client ./sdks/acp-http-client
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
+COPY sdks/react ./sdks/react
COPY sdks/typescript ./sdks/typescript
-# Build cli-shared, acp-http-client, SDK, then persist-indexeddb (depends on SDK)
+# Build cli-shared, acp-http-client, SDK, then persist-indexeddb and react (depends on SDK)
RUN cd sdks/cli-shared && pnpm exec tsup
RUN cd sdks/acp-http-client && pnpm exec tsup
RUN cd sdks/typescript && SKIP_OPENAPI_GEN=1 pnpm exec tsup
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+RUN cd sdks/react && pnpm exec tsup
# Copy inspector source and build
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/docker/release/macos-aarch64.Dockerfile b/docker/release/macos-aarch64.Dockerfile
index e93ab15..000157e 100644
--- a/docker/release/macos-aarch64.Dockerfile
+++ b/docker/release/macos-aarch64.Dockerfile
@@ -11,6 +11,7 @@ COPY frontend/packages/inspector/package.json ./frontend/packages/inspector/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
COPY sdks/typescript/package.json ./sdks/typescript/
# Install dependencies
@@ -21,13 +22,15 @@ COPY docs/openapi.json ./docs/
COPY sdks/cli-shared ./sdks/cli-shared
COPY sdks/acp-http-client ./sdks/acp-http-client
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
+COPY sdks/react ./sdks/react
COPY sdks/typescript ./sdks/typescript
-# Build cli-shared, acp-http-client, SDK, then persist-indexeddb (depends on SDK)
+# Build cli-shared, acp-http-client, SDK, then persist-indexeddb and react (depends on SDK)
RUN cd sdks/cli-shared && pnpm exec tsup
RUN cd sdks/acp-http-client && pnpm exec tsup
RUN cd sdks/typescript && SKIP_OPENAPI_GEN=1 pnpm exec tsup
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+RUN cd sdks/react && pnpm exec tsup
# Copy inspector source and build
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/docker/release/macos-x86_64.Dockerfile b/docker/release/macos-x86_64.Dockerfile
index af57336..9082018 100644
--- a/docker/release/macos-x86_64.Dockerfile
+++ b/docker/release/macos-x86_64.Dockerfile
@@ -11,6 +11,7 @@ COPY frontend/packages/inspector/package.json ./frontend/packages/inspector/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
COPY sdks/typescript/package.json ./sdks/typescript/
# Install dependencies
@@ -21,13 +22,15 @@ COPY docs/openapi.json ./docs/
COPY sdks/cli-shared ./sdks/cli-shared
COPY sdks/acp-http-client ./sdks/acp-http-client
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
+COPY sdks/react ./sdks/react
COPY sdks/typescript ./sdks/typescript
-# Build cli-shared, acp-http-client, SDK, then persist-indexeddb (depends on SDK)
+# Build cli-shared, acp-http-client, SDK, then persist-indexeddb and react (depends on SDK)
RUN cd sdks/cli-shared && pnpm exec tsup
RUN cd sdks/acp-http-client && pnpm exec tsup
RUN cd sdks/typescript && SKIP_OPENAPI_GEN=1 pnpm exec tsup
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+RUN cd sdks/react && pnpm exec tsup
# Copy inspector source and build
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/docker/release/windows.Dockerfile b/docker/release/windows.Dockerfile
index 83b3f37..9c7694d 100644
--- a/docker/release/windows.Dockerfile
+++ b/docker/release/windows.Dockerfile
@@ -11,6 +11,7 @@ COPY frontend/packages/inspector/package.json ./frontend/packages/inspector/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
COPY sdks/typescript/package.json ./sdks/typescript/
# Install dependencies
@@ -21,13 +22,15 @@ COPY docs/openapi.json ./docs/
COPY sdks/cli-shared ./sdks/cli-shared
COPY sdks/acp-http-client ./sdks/acp-http-client
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
+COPY sdks/react ./sdks/react
COPY sdks/typescript ./sdks/typescript
-# Build cli-shared, acp-http-client, SDK, then persist-indexeddb (depends on SDK)
+# Build cli-shared, acp-http-client, SDK, then persist-indexeddb and react (depends on SDK)
RUN cd sdks/cli-shared && pnpm exec tsup
RUN cd sdks/acp-http-client && pnpm exec tsup
RUN cd sdks/typescript && SKIP_OPENAPI_GEN=1 pnpm exec tsup
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+RUN cd sdks/react && pnpm exec tsup
# Copy inspector source and build
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/docker/runtime/Dockerfile b/docker/runtime/Dockerfile
index 029a969..27b9560 100644
--- a/docker/runtime/Dockerfile
+++ b/docker/runtime/Dockerfile
@@ -13,6 +13,7 @@ COPY frontend/packages/inspector/package.json ./frontend/packages/inspector/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
COPY sdks/typescript/package.json ./sdks/typescript/
# Install dependencies
@@ -23,13 +24,15 @@ COPY docs/openapi.json ./docs/
COPY sdks/cli-shared ./sdks/cli-shared
COPY sdks/acp-http-client ./sdks/acp-http-client
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
+COPY sdks/react ./sdks/react
COPY sdks/typescript ./sdks/typescript
-# Build cli-shared, acp-http-client, SDK, then persist-indexeddb (depends on SDK)
+# Build cli-shared, acp-http-client, SDK, then persist-indexeddb and react (depends on SDK)
RUN cd sdks/cli-shared && pnpm exec tsup
RUN cd sdks/acp-http-client && pnpm exec tsup
RUN cd sdks/typescript && SKIP_OPENAPI_GEN=1 pnpm exec tsup
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+RUN cd sdks/react && pnpm exec tsup
# Copy inspector source and build
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/docs/deploy/boxlite.mdx b/docs/deploy/boxlite.mdx
index fb2f8d0..115d8b8 100644
--- a/docs/deploy/boxlite.mdx
+++ b/docs/deploy/boxlite.mdx
@@ -20,7 +20,7 @@ that BoxLite can load directly (BoxLite has its own image store separate from Do
```dockerfile
FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
-RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
RUN sandbox-agent install-agent claude
RUN sandbox-agent install-agent codex
```
diff --git a/docs/deploy/cloudflare.mdx b/docs/deploy/cloudflare.mdx
index 0a19448..0dc1d1f 100644
--- a/docs/deploy/cloudflare.mdx
+++ b/docs/deploy/cloudflare.mdx
@@ -25,7 +25,7 @@ cd my-sandbox
```dockerfile
FROM cloudflare/sandbox:0.7.0
-RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
RUN sandbox-agent install-agent claude && sandbox-agent install-agent codex
EXPOSE 8000
diff --git a/docs/deploy/daytona.mdx b/docs/deploy/daytona.mdx
index e6d8dc8..5eb8f5d 100644
--- a/docs/deploy/daytona.mdx
+++ b/docs/deploy/daytona.mdx
@@ -28,7 +28,7 @@ if (process.env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = process.env.OPENAI_API_
const sandbox = await daytona.create({ envVars });
await sandbox.process.executeCommand(
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh"
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh"
);
await sandbox.process.executeCommand("sandbox-agent install-agent claude");
@@ -64,7 +64,7 @@ if (!hasSnapshot) {
name: SNAPSHOT,
image: Image.base("ubuntu:22.04").runCommands(
"apt-get update && apt-get install -y curl ca-certificates",
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh",
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh",
"sandbox-agent install-agent claude",
"sandbox-agent install-agent codex",
),
diff --git a/docs/deploy/docker.mdx b/docs/deploy/docker.mdx
index 1c64af8..988382a 100644
--- a/docs/deploy/docker.mdx
+++ b/docs/deploy/docker.mdx
@@ -17,7 +17,7 @@ docker run --rm -p 3000:3000 \
-e OPENAI_API_KEY="$OPENAI_API_KEY" \
alpine:latest sh -c "\
apk add --no-cache curl ca-certificates libstdc++ libgcc bash nodejs npm && \
- curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh && \
+ curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh && \
sandbox-agent server --no-token --host 0.0.0.0 --port 3000"
```
@@ -36,7 +36,7 @@ const container = await docker.createContainer({
"apt-get update",
"DEBIAN_FRONTEND=noninteractive apt-get install -y curl ca-certificates bash libstdc++6",
"rm -rf /var/lib/apt/lists/*",
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh",
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh",
`sandbox-agent server --no-token --host 0.0.0.0 --port ${PORT}`,
].join(" && ")],
Env: [
diff --git a/docs/deploy/e2b.mdx b/docs/deploy/e2b.mdx
index f7ac7ba..8ea4c74 100644
--- a/docs/deploy/e2b.mdx
+++ b/docs/deploy/e2b.mdx
@@ -21,7 +21,7 @@ if (process.env.OPENAI_API_KEY) envs.OPENAI_API_KEY = process.env.OPENAI_API_KEY
const sandbox = await Sandbox.create({ allowInternetAccess: true, envs });
await sandbox.commands.run(
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh"
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh"
);
await sandbox.commands.run("sandbox-agent install-agent claude");
diff --git a/docs/deploy/local.mdx b/docs/deploy/local.mdx
index 8af9f51..eab8f3f 100644
--- a/docs/deploy/local.mdx
+++ b/docs/deploy/local.mdx
@@ -9,7 +9,7 @@ For local development, run Sandbox Agent directly on your machine.
```bash
# Install
-curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
# Run
sandbox-agent server --no-token --host 127.0.0.1 --port 2468
@@ -20,12 +20,12 @@ Or with npm/Bun:
```bash
- npx @sandbox-agent/cli@0.2.x server --no-token --host 127.0.0.1 --port 2468
+ npx @sandbox-agent/cli@0.3.x server --no-token --host 127.0.0.1 --port 2468
```
```bash
- bunx @sandbox-agent/cli@0.2.x server --no-token --host 127.0.0.1 --port 2468
+ bunx @sandbox-agent/cli@0.3.x server --no-token --host 127.0.0.1 --port 2468
```
diff --git a/docs/deploy/vercel.mdx b/docs/deploy/vercel.mdx
index 4a840ee..2025d67 100644
--- a/docs/deploy/vercel.mdx
+++ b/docs/deploy/vercel.mdx
@@ -30,7 +30,7 @@ const run = async (cmd: string, args: string[] = []) => {
}
};
-await run("sh", ["-c", "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh"]);
+await run("sh", ["-c", "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh"]);
await run("sandbox-agent", ["install-agent", "claude"]);
await run("sandbox-agent", ["install-agent", "codex"]);
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index ad2c2ca..0654e61 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -84,7 +84,7 @@ icon: "rocket"
Install and run the binary directly.
```bash
- curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+ curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
sandbox-agent server --no-token --host 0.0.0.0 --port 2468
```
@@ -93,7 +93,7 @@ icon: "rocket"
Run without installing globally.
```bash
- npx @sandbox-agent/cli@0.2.x server --no-token --host 0.0.0.0 --port 2468
+ npx @sandbox-agent/cli@0.3.x server --no-token --host 0.0.0.0 --port 2468
```
@@ -101,7 +101,7 @@ icon: "rocket"
Run without installing globally.
```bash
- bunx @sandbox-agent/cli@0.2.x server --no-token --host 0.0.0.0 --port 2468
+ bunx @sandbox-agent/cli@0.3.x server --no-token --host 0.0.0.0 --port 2468
```
@@ -109,7 +109,7 @@ icon: "rocket"
Install globally, then run.
```bash
- npm install -g @sandbox-agent/cli@0.2.x
+ npm install -g @sandbox-agent/cli@0.3.x
sandbox-agent server --no-token --host 0.0.0.0 --port 2468
```
@@ -118,7 +118,7 @@ icon: "rocket"
Install globally, then run.
```bash
- bun add -g @sandbox-agent/cli@0.2.x
+ bun add -g @sandbox-agent/cli@0.3.x
# Allow Bun to run postinstall scripts for native binaries (required for SandboxAgent.start()).
bun pm -g trust @sandbox-agent/cli-linux-x64 @sandbox-agent/cli-linux-arm64 @sandbox-agent/cli-darwin-arm64 @sandbox-agent/cli-darwin-x64 @sandbox-agent/cli-win32-x64
sandbox-agent server --no-token --host 0.0.0.0 --port 2468
@@ -129,7 +129,7 @@ icon: "rocket"
For local development, use `SandboxAgent.start()` to spawn and manage the server as a subprocess.
```bash
- npm install sandbox-agent@0.2.x
+ npm install sandbox-agent@0.3.x
```
```typescript
@@ -143,7 +143,7 @@ icon: "rocket"
For local development, use `SandboxAgent.start()` to spawn and manage the server as a subprocess.
```bash
- bun add sandbox-agent@0.2.x
+ bun add sandbox-agent@0.3.x
# Allow Bun to run postinstall scripts for native binaries (required for SandboxAgent.start()).
bun pm trust @sandbox-agent/cli-linux-x64 @sandbox-agent/cli-linux-arm64 @sandbox-agent/cli-darwin-arm64 @sandbox-agent/cli-darwin-x64 @sandbox-agent/cli-win32-x64
```
diff --git a/docs/react-components.mdx b/docs/react-components.mdx
index e7298d0..e37e2a3 100644
--- a/docs/react-components.mdx
+++ b/docs/react-components.mdx
@@ -9,7 +9,7 @@ icon: "react"
## Install
```bash
-npm install @sandbox-agent/react@0.2.x
+npm install @sandbox-agent/react@0.3.x
```
## Full example
diff --git a/docs/sdk-overview.mdx b/docs/sdk-overview.mdx
index 627e440..5bd2a50 100644
--- a/docs/sdk-overview.mdx
+++ b/docs/sdk-overview.mdx
@@ -11,12 +11,12 @@ The TypeScript SDK is centered on `sandbox-agent` and its `SandboxAgent` class.
```bash
- npm install sandbox-agent@0.2.x
+ npm install sandbox-agent@0.3.x
```
```bash
- bun add sandbox-agent@0.2.x
+ bun add sandbox-agent@0.3.x
# Allow Bun to run postinstall scripts for native binaries (required for SandboxAgent.start()).
bun pm trust @sandbox-agent/cli-linux-x64 @sandbox-agent/cli-linux-arm64 @sandbox-agent/cli-darwin-arm64 @sandbox-agent/cli-darwin-x64 @sandbox-agent/cli-win32-x64
```
@@ -26,13 +26,13 @@ The TypeScript SDK is centered on `sandbox-agent` and its `SandboxAgent` class.
## Optional persistence drivers
```bash
-npm install @sandbox-agent/persist-indexeddb@0.2.x @sandbox-agent/persist-sqlite@0.2.x @sandbox-agent/persist-postgres@0.2.x
+npm install @sandbox-agent/persist-indexeddb@0.3.x @sandbox-agent/persist-sqlite@0.3.x @sandbox-agent/persist-postgres@0.3.x
```
## Optional React components
```bash
-npm install @sandbox-agent/react@0.2.x
+npm install @sandbox-agent/react@0.3.x
```
## Create a client
diff --git a/docs/session-persistence.mdx b/docs/session-persistence.mdx
index 676c948..eaa4de0 100644
--- a/docs/session-persistence.mdx
+++ b/docs/session-persistence.mdx
@@ -38,7 +38,7 @@ const sdk = await SandboxAgent.connect({
Recommended for sandbox orchestration with actor state.
```bash
-npm install @sandbox-agent/persist-rivet@0.2.x
+npm install @sandbox-agent/persist-rivet@0.3.x
```
```ts
@@ -90,7 +90,7 @@ export default actor({
Best for browser apps that should survive reloads.
```bash
-npm install @sandbox-agent/persist-indexeddb@0.2.x
+npm install @sandbox-agent/persist-indexeddb@0.3.x
```
```ts
@@ -112,7 +112,7 @@ const sdk = await SandboxAgent.connect({
Best for local/server Node apps that need durable storage without a DB server.
```bash
-npm install @sandbox-agent/persist-sqlite@0.2.x
+npm install @sandbox-agent/persist-sqlite@0.3.x
```
```ts
@@ -134,7 +134,7 @@ const sdk = await SandboxAgent.connect({
Use when you already run Postgres and want shared relational storage.
```bash
-npm install @sandbox-agent/persist-postgres@0.2.x
+npm install @sandbox-agent/persist-postgres@0.3.x
```
```ts
diff --git a/examples/boxlite-python/Dockerfile b/examples/boxlite-python/Dockerfile
index 4564417..3630511 100644
--- a/examples/boxlite-python/Dockerfile
+++ b/examples/boxlite-python/Dockerfile
@@ -1,5 +1,5 @@
FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
-RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
RUN sandbox-agent install-agent claude
RUN sandbox-agent install-agent codex
diff --git a/examples/boxlite/Dockerfile b/examples/boxlite/Dockerfile
index 4564417..3630511 100644
--- a/examples/boxlite/Dockerfile
+++ b/examples/boxlite/Dockerfile
@@ -1,5 +1,5 @@
FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
-RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
RUN sandbox-agent install-agent claude
RUN sandbox-agent install-agent codex
diff --git a/examples/cloudflare/Dockerfile b/examples/cloudflare/Dockerfile
index 17ddb78..d0796cb 100644
--- a/examples/cloudflare/Dockerfile
+++ b/examples/cloudflare/Dockerfile
@@ -1,7 +1,7 @@
FROM cloudflare/sandbox:0.7.0
# Install sandbox-agent
-RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh
+RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh
# Pre-install agents
RUN sandbox-agent install-agent claude && \
diff --git a/examples/daytona/src/daytona-with-snapshot.ts b/examples/daytona/src/daytona-with-snapshot.ts
index d6900df..2f6ac45 100644
--- a/examples/daytona/src/daytona-with-snapshot.ts
+++ b/examples/daytona/src/daytona-with-snapshot.ts
@@ -13,7 +13,7 @@ if (process.env.OPENAI_API_KEY)
// Build a custom image with sandbox-agent pre-installed (slower first run, faster subsequent runs)
const image = Image.base("ubuntu:22.04").runCommands(
"apt-get update && apt-get install -y curl ca-certificates",
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh",
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh",
);
console.log("Creating Daytona sandbox (first run builds the base image and may take a few minutes, subsequent runs are fast)...");
diff --git a/examples/daytona/src/index.ts b/examples/daytona/src/index.ts
index bbf9d6e..2982d13 100644
--- a/examples/daytona/src/index.ts
+++ b/examples/daytona/src/index.ts
@@ -17,7 +17,7 @@ const sandbox = await daytona.create({ envVars, autoStopInterval: 0 });
// Install sandbox-agent and start server
console.log("Installing sandbox-agent...");
await sandbox.process.executeCommand(
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh",
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh",
);
console.log("Installing agents...");
diff --git a/examples/docker/src/index.ts b/examples/docker/src/index.ts
index 593ef31..6890a1e 100644
--- a/examples/docker/src/index.ts
+++ b/examples/docker/src/index.ts
@@ -34,7 +34,7 @@ const container = await docker.createContainer({
"apt-get update",
"DEBIAN_FRONTEND=noninteractive apt-get install -y curl ca-certificates bash libstdc++6",
"rm -rf /var/lib/apt/lists/*",
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh",
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh",
`sandbox-agent server --no-token --host 0.0.0.0 --port ${PORT}`,
].join(" && ")],
Env: [
diff --git a/examples/e2b/src/index.ts b/examples/e2b/src/index.ts
index b02f239..7dd2882 100644
--- a/examples/e2b/src/index.ts
+++ b/examples/e2b/src/index.ts
@@ -16,7 +16,7 @@ const run = async (cmd: string) => {
};
console.log("Installing sandbox-agent...");
-await run("curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh");
+await run("curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh");
console.log("Installing agents...");
await run("sandbox-agent install-agent claude");
diff --git a/examples/shared/Dockerfile.dev b/examples/shared/Dockerfile.dev
index cac363d..53a9922 100644
--- a/examples/shared/Dockerfile.dev
+++ b/examples/shared/Dockerfile.dev
@@ -11,6 +11,7 @@ COPY sdks/typescript/ sdks/typescript/
COPY sdks/acp-http-client/ sdks/acp-http-client/
COPY sdks/cli-shared/ sdks/cli-shared/
COPY sdks/persist-indexeddb/ sdks/persist-indexeddb/
+COPY sdks/react/ sdks/react/
COPY frontend/packages/inspector/ frontend/packages/inspector/
COPY docs/openapi.json docs/
diff --git a/examples/vercel/src/index.ts b/examples/vercel/src/index.ts
index 258fbe4..4a63bfc 100644
--- a/examples/vercel/src/index.ts
+++ b/examples/vercel/src/index.ts
@@ -22,7 +22,7 @@ const run = async (cmd: string, args: string[] = []) => {
};
console.log("Installing sandbox-agent...");
-await run("sh", ["-c", "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh"]);
+await run("sh", ["-c", "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh"]);
console.log("Installing agents...");
await run("sandbox-agent", ["install-agent", "claude"]);
diff --git a/frontend/packages/inspector/Dockerfile b/frontend/packages/inspector/Dockerfile
index e57acf2..dff28db 100644
--- a/frontend/packages/inspector/Dockerfile
+++ b/frontend/packages/inspector/Dockerfile
@@ -9,6 +9,7 @@ COPY sdks/typescript/package.json ./sdks/typescript/
COPY sdks/cli-shared/package.json ./sdks/cli-shared/
COPY sdks/acp-http-client/package.json ./sdks/acp-http-client/
COPY sdks/persist-indexeddb/package.json ./sdks/persist-indexeddb/
+COPY sdks/react/package.json ./sdks/react/
# Install dependencies
RUN pnpm install --filter @sandbox-agent/inspector...
@@ -29,6 +30,10 @@ RUN cd sdks/typescript && pnpm exec tsup
COPY sdks/persist-indexeddb ./sdks/persist-indexeddb
RUN cd sdks/persist-indexeddb && pnpm exec tsup
+# Copy react and build (depends on SDK)
+COPY sdks/react ./sdks/react
+RUN cd sdks/react && pnpm exec tsup
+
# Copy inspector source
COPY frontend/packages/inspector ./frontend/packages/inspector
diff --git a/frontend/packages/website/src/components/GetStarted.tsx b/frontend/packages/website/src/components/GetStarted.tsx
index 63018e8..150c07e 100644
--- a/frontend/packages/website/src/components/GetStarted.tsx
+++ b/frontend/packages/website/src/components/GetStarted.tsx
@@ -87,7 +87,7 @@ function SdkCodeHighlighted() {
);
}
-const sandboxCommand = `curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh`;
+const sandboxCommand = `curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh`;
const sourceCommands = `git clone https://github.com/rivet-dev/sandbox-agent
cd sandbox-agent
@@ -180,7 +180,7 @@ export function GetStarted() {
curl -fsSL \
{"\n"}
{" "}
- https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh
+ https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh
|
sh
diff --git a/scripts/release/sdk.ts b/scripts/release/sdk.ts
index 1342978..f2b8679 100644
--- a/scripts/release/sdk.ts
+++ b/scripts/release/sdk.ts
@@ -302,8 +302,16 @@ export async function publishNpmLibraries(opts: ReleaseOpts) {
}
console.log(`==> Publishing to NPM: ${pkg.name}@${opts.version}`);
- await $({ stdio: "inherit", cwd: pkg.dir })`pnpm publish --access public --tag ${tag} --no-git-checks`;
- console.log(`✅ Published ${pkg.name}@${opts.version}`);
+ try {
+ await $({ stdio: "inherit", cwd: pkg.dir })`pnpm publish --access public --tag ${tag} --no-git-checks`;
+ console.log(`✅ Published ${pkg.name}@${opts.version}`);
+ } catch (err: any) {
+ if (err.stderr?.includes("You cannot publish over the previously published versions") || err.stderr?.includes("403")) {
+ console.log(`⚠️ ${pkg.name}@${opts.version} already published (npm registry). Skipping.`);
+ } else {
+ throw err;
+ }
+ }
}
console.log("✅ All library packages published");
@@ -384,9 +392,13 @@ export async function publishNpmCli(opts: ReleaseOpts) {
cwd: pkg.dir,
})`pnpm publish --access public --tag ${tag} --no-git-checks`;
console.log(`✅ Published ${pkg.name}@${opts.version}`);
- } catch (err) {
- console.error(`❌ Failed to publish ${pkg.name}`);
- throw err;
+ } catch (err: any) {
+ if (err.stderr?.includes("You cannot publish over the previously published versions") || err.stderr?.includes("403")) {
+ console.log(`⚠️ ${pkg.name}@${opts.version} already published (npm registry). Skipping.`);
+ } else {
+ console.error(`❌ Failed to publish ${pkg.name}`);
+ throw err;
+ }
}
}
diff --git a/scripts/sandbox-testing/test-sandbox.ts b/scripts/sandbox-testing/test-sandbox.ts
index a19224e..f85dbad 100644
--- a/scripts/sandbox-testing/test-sandbox.ts
+++ b/scripts/sandbox-testing/test-sandbox.ts
@@ -322,7 +322,7 @@ async function installSandboxAgent(sandbox: Sandbox, binaryPath: string): Promis
if (binaryPath === "RELEASE") {
log.info("Installing from releases.rivet.dev...");
const result = await sandbox.exec(
- "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.2.x/install.sh | sh",
+ "curl -fsSL https://releases.rivet.dev/sandbox-agent/0.3.x/install.sh | sh",
);
log.debug(`Install output: ${result.stdout}`);
if (result.exitCode !== 0) {