Commit graph

34 commits

Author SHA1 Message Date
Nathan Flurry
0471214d65
Share chat UI components in @sandbox-agent/react (#228)
* Extract shared chat UI components

* chore(release): update version to 0.3.1

* Use shared chat UI in Foundry
2026-03-10 22:31:36 -07:00
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
febe8601f6
feat: add process management support (#207)
* feat: improve inspector UI for processes and fix PTY terminal

- Simplify ProcessRunTab layout: compact form with collapsible Advanced section for timeout/maxOutputBytes
- Rewrite ProcessesTab: collapsible create form, lightweight list items with status dots, clean detail panel with tabs
- Extract error details: use problem.detail instead of generic "Stream Error" title for better error messages
- Fix GhosttyTerminal binary frame parsing: handle server's binary ArrayBuffer control frames (ready/exit/error)
- Enable WebSocket proxying in Vite dev server with ws: true
- Set TERM=xterm-256color default for TTY processes so tools like tmux, vim, htop work out of the box
- Remove orange gradient background from terminal container for cleaner look
- Remove orange left border from selected process list items
- Update inspector CSS with new process/terminal styles

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: address review issues and add processes documentation

- Fix unstable onExit callback in ProcessesTab (useCallback)
- Fix SSE follow stream race condition (subscribe before history read)
- Update inspector.mdx with new process management features
- Change observability icon to avoid conflict with processes
- Add docs/processes.mdx covering the full process management API

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

* docs: simplify processes doc — rename sections, remove low-level protocol

- Rename "Interactive terminals" to "Terminals" with "Connect to a terminal" sub-heading
- Add TTY process creation step at top of Terminals section
- Remove low-level WebSocket protocol table and raw WebSocket example
- Keep browser terminal emulator reference with Ghostty link

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

* docs: update GhosttyTerminal permalink to latest commit

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

* docs: use main branch permalink for GhosttyTerminal reference

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

* feat: refine process API — WebSocket binary protocol, SDK terminal session, updated tests

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

* docs: update GhosttyTerminal permalink to 636eefb

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

* inspector: use websocket terminal API

* sdk: restore high-level terminal session

* docs: update inspector terminal permalink

* inspector: update run once placeholder

* Fix lazy install v1 API test fixture

* Add reusable React terminal component

* Fix terminal WebSocket ready state checks

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-07 17:58:31 -08:00
Nathan Flurry
c91791f88d
feat: add configuration for model, mode, and thought level (#205)
* feat: add configuration for model, mode, and thought level

* docs: document Claude effort-level filesystem config

* fix: prevent panic on empty modes/thoughtLevels in parse_agent_config

Use `.first()` with safe fallback instead of direct `[0]` index access,
which would panic if the Vec is empty and no default is set.

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

* fix: harden session lifecycle and align cli.mdx example with claude.json

- destroySession: wrap session/cancel RPC in try/catch so local cleanup
  always succeeds even when the agent is unreachable
- createSession/resumeOrCreateSession: clean up the remote session if
  post-creation config calls (setMode/setModel/setThoughtLevel) fail,
  preventing leaked orphan sessions
- cli.mdx: fix example output to match current claude.json (model name,
  model order, and populated modes)

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

* fix: harden session lifecycle and align config persistence logic

- resumeOrCreateSession: Remove destroy-on-error for the resume path. Config
  errors now propagate without destroying a pre-existing session. The destroy
  pattern remains in createSession (where the session is newly created and has
  no prior state to preserve).

- setSessionMode fallback: When session/set_mode returns -32601 and the
  fallback uses session/set_config_option, now keep modes.currentModeId
  in sync with the updated currentValue. Prevents stale cached state in
  getModes() when the fallback path is used.

- persistSessionStateFromMethod: Re-read the record from persistence instead
  of using a stale pre-await snapshot. Prevents race conditions where
  concurrent session/update events (processed by persistSessionStateFromEvent)
  are silently overwritten by optimistic updates.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: correct doc examples with valid Codex modes and update stable API list

- Replace invalid Codex mode values ("plan", "build") with valid ones
  ("auto", "full-access") in agent-sessions.mdx and sdk-overview.mdx
- Update CLAUDE.md stable method enumerations to include new session
  config methods (setSessionMode, setSessionModel, etc.)

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

* fix: add OpenAPI annotations for process endpoints and fix config persistence race

Add summary/description to all process management endpoint specs and the
not_found error type. Fix hydrateSessionConfigOptions to re-read from
persistence after the network call, and sync mode-category configOptions
on session/update current_mode_update events.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 00:24:32 -08:00
Nathan Flurry
94353f7696 chore: fix bad merge 2026-02-11 07:57:02 -08:00
NathanFlurry
e72eb9f611
acp spec (#155) 2026-02-11 14:47:41 +00:00
NathanFlurry
4c8d93e077
docs: add mcp and skill session config (#106) 2026-02-09 10:13:25 +00:00
Nathan Flurry
2b0507c3f5 feat: add session metadata (timestamps, directory, title) and use v1 SessionManager for OpenCode compat 2026-02-07 14:47:14 -08:00
Nathan Flurry
dc2a2b1687
chore: update readme (#98) 2026-02-06 03:03:24 -08:00
Nathan Flurry
b74539172b
feat: model list (#96) 2026-02-06 02:59:23 -08:00
Nathan Flurry
a02393436c
feat: gigacode (#92) 2026-02-06 02:55:57 -08:00
Nathan Flurry
ef3e811c94
feat: add opencode compatibility layer (#68) 2026-02-04 13:43:05 -08:00
Nathan Flurry
24de9e686c
i need to update the terminology of 'capabilities' to 'feature coverage' in the inspector ui and anywhere else its mentioned thats not in the actual api (#61) 2026-02-02 19:00:35 -08:00
Nathan Flurry
c0c3ef6c93 docs: merge universal schema and coverage matrix into session-transcript-schema 2026-01-29 09:08:35 -08:00
Nathan Flurry
7b1065f4f2 docs: remove README feature matrix reference from CLAUDE.md 2026-01-29 08:58:07 -08:00
Nathan Flurry
f79019e786 docs: add post-release testing agent and fix install URL 2026-01-28 05:46:08 -08:00
Nathan Flurry
08d299a3ef
docs: documentation overhaul and universal schema reference (#10)
* remove website .astro

* fix default origin

* docs: comprehensive documentation overhaul

- Add quickstart with multi-platform examples (E2B, Daytona, Docker, local)
- Add environment variables setup with platform-specific tabs
- Add Python SDK page (coming soon)
- Add local deployment guide
- Update E2B/Daytona/Docker guides with TypeScript examples
- Configure OpenAPI auto-generation for API reference
- Add CORS configuration guide
- Update manage-sessions with Rivet Actors examples
- Fix SDK method names and URLs throughout
- Add icons to main documentation pages
- Remove outdated universal-api and http-api pages

* docs: add universal schema and agent compatibility docs

- Create universal-schema.mdx with full event/item schema reference
- Create agent-compatibility.mdx mirroring README feature matrix
- Rename glossary.md to universal-schema.mdx
- Update CLAUDE.md with sync requirements for new docs
- Add links in README to building-chat-ui, manage-sessions, universal-schema
- Fix CLI docs link (rivet.dev -> sandboxagent.dev)

* docs: add inspector page and daytona network limits warning
2026-01-28 05:07:15 -08:00
Nathan Flurry
0bbe92b344 wip examples and content 2026-01-28 02:56:22 -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
34d4f3693e feat: add turn streaming and inspector updates 2026-01-27 06:18:43 -08:00
Nathan Flurry
bf58891edf chore: sync workspace changes 2026-01-27 05:06:33 -08:00
Nathan Flurry
d24f983e2c feat: add mock server mode for UI testing 2026-01-27 03:42:41 -08:00
Nathan Flurry
f5d1a6383d feat: sync universal schema and sdk updates 2026-01-27 02:52:25 -08:00
Nathan Flurry
79bb441287 chore: update docs and schemas 2026-01-26 23:20:33 -08:00
Nathan Flurry
c91595d338 fix: normalize claude system events and refresh tests 2026-01-26 20:44:58 -08:00
Nathan Flurry
011ca27287 feat: expand api snapshots and schema tooling 2026-01-26 00:13:17 -08:00
Nathan Flurry
016024c04b feat: add release pipeline for crates.io and npm publishing
- Add --check, --publish-crates, --publish-npm-sdk, --publish-npm-cli flags to release script
- Create CI workflow with pre-release checks (cargo fmt, clippy, test, tsc)
- Update release workflow to run checks, build binaries, and publish packages
- Add @sandbox-agent/cli npm package with platform-specific binaries (esbuild pattern)
- Configure TypeScript SDK for npm publishing (exports, files, types)
- Add crates.io metadata to Cargo.toml (repository, description)
- Rename @sandbox-agent/web to @sandbox-agent/inspector
2026-01-25 14:11:39 -08:00
Nathan Flurry
6e1b13c242 docs: add SDK modes (embedded vs server) to CLAUDE.md 2026-01-25 13:38:09 -08:00
Nathan Flurry
365cf262f3 feat: add sessions list API and frontend sidebar 2026-01-25 04:13:33 -08:00
Nathan Flurry
0fbf6272b1 feat: refresh docs and agent schema 2026-01-25 03:04:12 -08:00
Nathan Flurry
f92ecd9b9a chore: sync workspace changes 2026-01-25 01:57:16 -08:00
Nathan Flurry
55c45bfc12 feat: add sandbox-daemon agent management 2026-01-25 00:13:46 -08:00
Nathan Flurry
e693154fa9 docs: add CLAUDE.md with commit guidelines 2026-01-24 22:39:36 -08:00