Commit graph

37 commits

Author SHA1 Message Date
Nathan Flurry
76586f409f
Add ACP permission mode support to the SDK (#224)
* chore: recover hamburg workspace state

* chore: drop workspace context files

* refactor: generalize permissions example

* refactor: parse permissions example flags

* docs: clarify why fs and terminal stay native

* feat: add interactive permission prompt UI to Inspector

Add permission request handling to the Inspector UI so users can
Allow, Always Allow, or Reject tool calls that require permissions
instead of having them auto-cancelled. Wires up SDK
onPermissionRequest/respondPermission through App → ChatPanel →
ChatMessages with proper toolCallId-to-pendingId mapping.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: prevent permission reply from silently escalating "once" to "always"

Remove allow_always from the fallback chain when the user replies "once",
aligning with the ACP spec which says "map by option kind first" with no
fallback for allow_once. Also fix Inspector to use rawSend, revert
hydration guard to accept empty configOptions, and handle respondPermission
errors by rejecting the pending promise.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:52:43 -07:00
Nathan Flurry
3d9476ed0b chore(release): update version to 0.3.0 2026-03-07 18:54:35 -08:00
Nathan Flurry
e7343e14bd
Add SDK health wait gate (#206)
* Add SDK health wait gate

* Default connect to waiting for health

* Document connect health wait default

* Add abort signal to connect health wait

* Refactor SDK health probe helper

* Update quickstart health wait note

* Remove example health polling

* Fix docker example codex startup
2026-03-06 00:05:06 -08:00
Nathan Flurry
c3a95c3611 chore: add boxlite 2026-02-25 02:18:16 -08:00
Nathan Flurry
a3fe0cc764 fix(cloudflare): fix streaming responses 2026-02-25 01:39:27 -08:00
NathanFlurry
4201bd204b
chore: simplify cloudflare compatibility (#191) 2026-02-23 19:31:54 +00:00
akalitenya
c68c614a57 fix timeout for e2b (docs) 2026-02-13 05:01:18 +05:00
Nathan Flurry
3c2a9cbbbb feat: add session persistence examples and SQLite driver 2026-02-11 20:35:14 -08:00
Nathan Flurry
89933c5f80 fix: use correct provider home dirs and make SSE failures non-fatal
- E2B: /home/user, Daytona: /home/daytona, Vercel: /home/vercel-sandbox, ComputeSDK: /home
- Docker-based examples keep /root (correct)
- Add missing install-agent steps to Daytona example and doc
- Make SSE loop failure non-fatal in acp-http-client transport
2026-02-11 09:29:14 -08:00
Nathan Flurry
94353f7696 chore: fix bad merge 2026-02-11 07:57:02 -08:00
Nathan Flurry
b9efe971ff chore: fix bad merge 2026-02-11 07:33:19 -08:00
NathanFlurry
e72eb9f611
acp spec (#155) 2026-02-11 14:47:41 +00:00
Franklin
11950d2a39 adding compute example 2026-02-10 22:14:56 -08:00
NathanFlurry
4c8d93e077
docs: add mcp and skill session config (#106) 2026-02-09 10:13:25 +00:00
Jordan Coeyman
cc5a9e0d73
docs: add Cloudflare Sandbox SDK deployment guide (#57)
* docs: add Cloudflare Sandbox SDK deployment guide

- Add docs/deploy/cloudflare.mdx with full deployment guide
- Add examples/cloudflare/ with working Worker code
- Update docs navigation to include Cloudflare option
- Update deploy index page with Cloudflare card

The example shows how to run sandbox-agent inside a Cloudflare Sandbox
with exposed ports for API access.

Co-authored-by: Shelley <shelley@exe.dev>

* fix: guard server startup to avoid port conflicts

Add health check before starting sandbox-agent to prevent 'address already
in use' errors on subsequent requests. The isServerRunning() function probes
the health endpoint to determine if setup should be skipped.

Co-authored-by: Shelley <shelley@exe.dev>

* fix: default cloudflare/sandbox:0.7.0 (latest does not exist)

* feat(cloudflare): add React frontend and improve deployment docs

- Add React + Vite frontend for Cloudflare example with sandbox-agent SDK
- Update ensureRunning to poll health endpoint instead of fixed wait
- Fix SDK fetch binding issue (globalThis.fetch.bind)
- Update docs with .dev.vars format warning and container caching tip
- Use containerFetch proxy pattern for reliable local dev

---------

Co-authored-by: Shelley <shelley@exe.dev>
Co-authored-by: Nathan Flurry <git@nathanflurry.com>
Co-authored-by: Nathan Flurry <developer@nathanflurry.com>
2026-02-03 02:15:34 -08:00
Nathan Flurry
a442efe4bd
chore: update examples to use bypass permissions and remove inspect.sandboxagent.dev (#51)
* chore: update examples to use bypass permissions and remove inspect.sandboxagent.dev

* chore: simplify examples and print UI URL in runPrompt

- Remove logInspectorUrl calls from all examples
- Remove isMainModule checks from e2b, docker, vercel examples
- Simplify e2b, docker, vercel to match daytona's direct execution style
- Print UI URL at start of runPrompt in shared module
2026-02-01 23:25:43 -08:00
Maky
63cef16adf
adding vercel sandbox with examples and docs (#47) 2026-02-01 23:05:38 -08:00
Nathan Flurry
e3c030f66d
fix: correct inspector package name in Dockerfiles and add .dockerignore (#50)
* chore: remove inspect.sandboxagent.dev in favor of /ui/

* chore: add 404 page

* fix: correct inspector package name in Dockerfiles and add .dockerignore

- Change @anthropic-ai/sdk-inspector to @sandbox-agent/inspector in all Dockerfiles
- Add .dockerignore to exclude target/, node_modules/, etc from Docker context

The wrong package name caused pnpm install --filter to match nothing, so the
inspector frontend was never built, resulting in binaries without the /ui/ endpoint.

* chore: cargo fmt

* chore(release): update version to 0.1.4-rc.7
2026-02-01 23:03:51 -08:00
Nathan Flurry
ab210fa38a refactor: move example tests to tests/ directories 2026-01-29 10:05:24 -08:00
Nathan Flurry
136926b445 refactor: split daytona example into two variants
- daytona.ts (default): Installs sandbox-agent at runtime. Faster to
  start but installs on each run. Use for quick testing.
- daytona-with-snapshot.ts: Builds custom image with sandbox-agent
  pre-installed. Slow first run (~2-3 min) but fast subsequent runs.
  Use for repeated development.

Run with: pnpm start (default) or pnpm start:snapshot
2026-01-29 10:04:02 -08:00
Nathan Flurry
387ab0840d fix: update daytona example with correct install URL and timeout
- Fix install URL from latest to 0.1.3
- Add 180s timeout for sandbox creation
- Add autoStopInterval: 0 to prevent auto-stop
- Add log message explaining first run may be slow
2026-01-29 10:03:07 -08:00
Nathan Flurry
bd8f6b9c97
refactor: consolidate example client code into shared package (#31)
Move common sandbox agent client code into examples/shared to reduce
duplication across example projects (daytona, docker, e2b).
2026-01-29 07:19:20 -08:00
Nathan Flurry
0ecf4cbe0d refactor: make docker and e2b examples testable with exported setup functions 2026-01-28 05:31:51 -08:00
Nathan Flurry
3552ff0683 fix: update Daytona SDK executeCommand result type 2026-01-28 04:34:25 -08:00
Nathan Flurry
9e9514f2e8 chore: update examples to use Alpine and improve test script
- Docker example uses Alpine for musl compatibility with 0.1.x releases
- Update test script binary path and E2B provider
- Minor example updates
2026-01-28 04:29:08 -08:00
Nathan Flurry
cbd36eeca8 fix: detect musl/glibc at runtime for correct Claude binary download
Previously used cfg!(target_env = "musl") which checks compile-time,
causing musl-compiled sandbox-agent to always download musl binaries
even on glibc systems like Debian/E2B.

Now checks for /lib/ld-musl-*.so.1 at runtime to detect the actual
system libc and download the correct Claude binary variant.
2026-01-28 04:19:35 -08:00
Nathan Flurry
0bbe92b344 wip examples and content 2026-01-28 02:56:22 -08:00
Nathan Flurry
fa89872d3b fix(examples): pass API keys to E2B sandbox and improve session end handling 2026-01-28 02:33:04 -08:00
Nathan Flurry
8af152f0b3 fix(examples): use SDK to install agents instead of CLI command 2026-01-28 02:31:43 -08:00
Nathan Flurry
e887b48e26 fix: skip OpenSSL build on arm64 (uses rustls instead) 2026-01-28 01:51:20 -08:00
Nathan Flurry
5dd8a13845 fix: add OpenSSL build for musl in runtime Dockerfile 2026-01-28 01:23:51 -08:00
Nathan Flurry
6aa591bd91 chore: sync workspace changes 2026-01-28 01:13:50 -08:00
Nathan Flurry
8a91b8e9aa feat: move api cli commands under api subcommand 2026-01-28 01:11:57 -08:00
Nathan Flurry
6d6f6d0272 refactor: split examples into separate packages and update Claude plan mode
- Restructure examples into individual packages per provider (daytona, docker, e2b, vercel) with shared utilities in @sandbox-agent/example-shared
- Make Claude plan mode prompt-only (no longer requires permissionMode=plan)
- Claude now defaults to bypass permission mode
- Add agent_file_edit_flow test for file editing capabilities
- Fix Daytona file permission setting to use executeCommand
2026-01-27 22:50:31 -08:00
Nathan Flurry
30c4ad6b39 chore: update landing and inspector content 2026-01-27 22:29:35 -08:00
Nathan Flurry
b49776145b fix: add docker-setup action, runtime Dockerfile, and align release workflow
- Add .github/actions/docker-setup composite action (from rivet)
- Add docker/runtime/Dockerfile for Docker image builds
- Update release.yaml to match rivet patterns:
  - Use corepack enable instead of pnpm/action-setup
  - Add reuse_engine_version input
  - Add Docker job with Depot runners
  - Use --no-frozen-lockfile for pnpm install
  - Add id-token permission for setup job
2026-01-27 19:29:54 -08:00
Nathan Flurry
29b159ca20 wip 2026-01-27 13:56:09 -08:00