Commit graph

44 commits

Author SHA1 Message Date
Nathan Flurry
6cfe29f3f9 Avoid redundant Docker test image rebuilds 2026-03-15 17:55:19 -07:00
Nathan Flurry
abf9b1858f Add Docker-backed integration test rig 2026-03-15 17:55:19 -07:00
Nathan Flurry
d8b8b49f37
Fix Foundry UI bugs: org names, sessions, and repo selection (#250)
* Fix Foundry auth: migrate to Better Auth adapter, fix access token retrieval

- Remove @ts-nocheck from better-auth.ts, auth-user/index.ts, app-shell.ts
  and fix all type errors
- Fix getAccessTokenForSession: read GitHub token directly from account
  record instead of calling Better Auth's internal /get-access-token
  endpoint which returns 403 on server-side calls
- Re-implement workspaceAuth helper functions (workspaceAuthColumn,
  normalizeAuthValue, workspaceAuthClause, workspaceAuthWhere) that were
  accidentally deleted
- Remove all retry logic (withRetries, isRetryableAppActorError)
- Implement CORS origin allowlist from configured environment
- Document cachedAppWorkspace singleton pattern
- Add inline org sync fallback in buildAppSnapshot for post-OAuth flow
- Add no-retry rule to CLAUDE.md

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

* Add Foundry dev panel from fix-git-data branch

Port the dev panel component that was left out when PR #243 was replaced
by PR #247. Adapted to remove runtime/mock-debug references that don't
exist on the current branch.

- Toggle with Shift+D, persists visibility to localStorage
- Shows context, session, GitHub sync status sections
- Dev-only (import.meta.env.DEV)

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

* Add full Docker image defaults, fix actor deadlocks, and improve dev experience

- Add Dockerfile.full and --all flag to install-agent CLI for pre-built images
- Centralize Docker image constant (FULL_IMAGE) pinned to 0.3.1-full
- Remove examples/shared/Dockerfile{,.dev} and daytona snapshot example
- Expand Docker docs with full runnable Dockerfile
- Fix self-deadlock in createWorkbenchSession (fire-and-forget provisioning)
- Audit and convert 12 task actions from wait:true to wait:false
- Add bun --hot for dev backend hot reload
- Remove --force from pnpm install in dev Dockerfile for faster startup
- Add env_file support to compose.dev.yaml for automatic credential loading
- Add mock frontend compose config and dev panel
- Update CLAUDE.md with wait:true policy and dev environment setup

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

* WIP: async action fixes and interest manager

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

* Fix Foundry UI bugs: org names, hanging sessions, and wrong repo creation

- Fix org display name using GitHub description instead of name field
- Fix createWorkbenchSession hanging when sandbox is provisioning
- Fix auto-session creation retry storm on errors
- Fix task creation using wrong repo due to React state race conditions
- Remove Bun hot-reload from backend Dockerfile (causes port drift)
- Add GitHub sync/install status to dev panel

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 20:48:22 -07:00
Nathan Flurry
d2346bafb3
Configure lefthook formatter checks (#231)
* Add lefthook formatter checks

* Fix SDK mode hydration

* Stabilize SDK mode integration test
2026-03-10 23:03:11 -07:00
Nathan Flurry
6d7e67fe72 chore(release): update version to 0.3.1 2026-03-10 22:12:56 -07:00
Nathan Flurry
3d9476ed0b chore(release): update version to 0.3.0 2026-03-07 18:54:35 -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
e24b7cb140 fix: don't exclude cli-shared from library publishing
The startsWith("sdks/cli") filter was also matching sdks/cli-shared,
preventing it from being published. Use "sdks/cli/" (with trailing
slash) to only match the CLI directory itself.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 13:00:51 -08:00
Nathan Flurry
cb1f770b47 fix: bump missing packages to 0.2.0 and handle 404 in npmVersionExists
- Bump acp-http-client and persist-* packages from 0.1.0 to 0.2.0
- Fix npmVersionExists to handle 404 for never-published packages
2026-02-11 17:57:02 -08:00
Nathan Flurry
46193747e6 fix: dynamically discover packages in release script instead of hardcoding
- sdk.ts: discoverNpmPackages() + topoSort() for library packages
- sdk.ts: discoverCrates() via cargo metadata for workspace crates
- sdk.ts: publishNpmLibraries replaces publishNpmCliShared + publishNpmSdk
- sdk.ts: publishNpmCli now discovers CLI packages from filesystem
- update_version.ts: discovers SDK package.json files via glob
- update_version.ts: discovers internal crates from Cargo.toml path deps

This prevents packages like persist-*, acp-http-client from being
silently skipped during releases.
2026-02-11 17:51:38 -08:00
Nathan Flurry
8a1d17f165 fix: release pipeline for npm 2026-02-11 09:23:35 -08:00
Nathan Flurry
6b1950f9ab chore(release): update version to 0.2.0 2026-02-11 08:51:15 -08:00
Nathan Flurry
94353f7696 chore: fix bad merge 2026-02-11 07:57:02 -08:00
Nathan Flurry
7e6f7ac3c0 fix: correct gigacode crate path for crates.io publishing 2026-02-06 04:02:35 -08:00
Nathan Flurry
f0191579c0
chore: rename gigacode to @sandbox-agent/gigacode (#105) 2026-02-06 03:09:23 -08:00
Nathan Flurry
beacbbfdba
chore: update gigacode published packages (#104) 2026-02-06 03:07:24 -08:00
Nathan Flurry
a02393436c
feat: gigacode (#92) 2026-02-06 02:55:57 -08:00
Nathan Flurry
14f2743b9a fix: use absolute paths for file operations in release script 2026-02-05 00:08:20 -08:00
Topper Bowers
7378abee46
linux-arm64 support (#63)
docker on osx runs as linux-arm64 and there's no build for that. TBH, this is completely vibe coded but I did manually but I did look through this and seems right to me.
2026-02-04 23:36:23 -08:00
Nathan Flurry
02bb992b11
fix: fix bun install bug (#62)
* fix: fix bun install bug

* refactor: consolidate executable check into assertExecutable helper

- Add assertExecutable() to cli-shared that checks and attempts chmod
- Simplify CLI and SDK spawn code to use the shared helper
- Fix cli-shared package.json exports (.js not .mjs)
- Add global install instructions to SDK error message

* chore(release): update version to 0.1.6-rc.1

* fix: add cli-shared package to Dockerfiles

* chore(release): update version to 0.1.6-rc.1

* fix: add cli-shared publishing to release workflow

* chore(release): update version to 0.1.6-rc.1

* fix: handle already-exists error during crate publish

* chore(release): update version to 0.1.6-rc.1
2026-02-02 21:12:41 -08:00
Nathan Flurry
394945f319
fix: download binaries from R2 before npm publish (#40)
The npm CLI platform packages were being published without binaries
because publishNpmCli() wasn't downloading them from R2 first.

- Add downloadFromReleases() helper to utils.ts
- Update publishNpmCli() to download platform binaries before publish
- Add sdks/cli/platforms/*/bin/ to .gitignore
2026-01-30 00:05:24 -08:00
Nathan Flurry
0faa608822 fix: use sandbox-agent CLI for credential extraction in tests and add delay for permission approval 2026-01-29 07:39:07 -08:00
Nathan Flurry
2ada366623
chore: improve sandbox test infrastructure (#32)
Enhance the sandbox testing script with better error handling
and reporting capabilities.
2026-01-29 07:19:23 -08:00
Nathan Flurry
82ac0b3880
chore: update skill install command to use rivet-dev/skills (#20)
* chore: update skill install command to use rivet-dev/skills

* chore: improve skill structure per skill-creator guidelines

* chore: add bug report section and simplify description

* chore: add Discord link to bug report section
2026-01-29 06:04:07 -08:00
Nathan Flurry
27e93fcfa0 ci: add skill generator workflow and scripts 2026-01-29 05:25:14 -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
c7fbb33fed fix: skip Docker tagging gracefully when images don't exist 2026-01-27 22:02:08 -08:00
Nathan Flurry
5930137a85 fix: use --no-verify when publishing crates to skip verification 2026-01-27 21:07:47 -08:00
Nathan Flurry
6ab2909ac5 fix: update internal crate versions in workspace dependencies during release 2026-01-27 20:58:34 -08:00
Nathan Flurry
aac4a02ef3 fix: add update-version to complete-ci phase for reuse_engine_version 2026-01-27 20:49:14 -08:00
Nathan Flurry
665ace5e16 fix: make Docker image validation optional in release validation 2026-01-27 20:16:25 -08:00
Nathan Flurry
c627ff22f1 fix: use pnpm typecheck instead of check-types in release script 2026-01-27 19:33:16 -08:00
Nathan Flurry
2a922ef562 chore: copy and adapt rivet release scripts for sandbox-agent 2026-01-27 15:43:19 -08:00
Nathan Flurry
29b159ca20 wip 2026-01-27 13:56:09 -08:00
Nathan Flurry
34d4f3693e feat: add turn streaming and inspector updates 2026-01-27 06:18:43 -08:00
Nathan Flurry
f5d1a6383d feat: sync universal schema and sdk updates 2026-01-27 02:52:25 -08:00
Nathan Flurry
4083baa1c1 chore: sync workspace changes 2026-01-26 22:29:10 -08:00
Nathan Flurry
011ca27287 feat: expand api snapshots and schema tooling 2026-01-26 00:13:17 -08:00
Nathan Flurry
71ab40388c refactor: rename engine/ to server/ 2026-01-25 14:14:58 -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
a49ea094f3 refactor: rename sandbox-daemon to sandbox-agent 2026-01-25 02:30:12 -08:00
Nathan Flurry
f92ecd9b9a chore: sync workspace changes 2026-01-25 01:57:16 -08:00