Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@truefoundry/trueforge-core': patch
'@truefoundry/trueforge': patch
'@truefoundry/trueforge-ui': patch
---

Enable a standalone in-memory local sandbox fallback (no settings row), persist fancy `v1:type:raw` sandbox ids, and drop tenant-prefix ownership checks.
2 changes: 1 addition & 1 deletion .cursor/BUGBOT.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ If the diff changes code that ships in a published package and does not add a ne
Skip when:

- The PR already adds `.changeset/*.md`
- Changes are docs, `AGENTS.md`, CI/workflows, charts, docker-compose, or `packages/local-sandbox` only
- Changes are docs, `AGENTS.md`, CI/workflows, charts, or docker-compose only
- The PR is a Version Packages / `changeset-release/*` release PR

## CI and release wiring
Expand Down
2 changes: 1 addition & 1 deletion .github/fern/openapi/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -5996,7 +5996,7 @@
}
}
},
"description": "Caller is not the session creator, or sandbox belongs to another tenant."
"description": "Caller is not the session creator."
},
"404": {
"content": {
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ packages/trueforge/src/catalog/modelCatalog.gen.ts
packages/trueforge/src/catalog/mcpCatalog.gen.ts
packages/trueforge/src/catalog/skillCatalog.gen.ts
packages/trueforge/src/catalog/sandboxCatalog.gen.ts
packages/trueforge/src/sandbox/local/sandboxScripts.gen.ts
data/
# Helm subchart deps are fetched via `helm dependency build` (pinned by the
# committed Chart.lock); the downloaded .tgz/dirs are not committed.
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
- Workspace tasks MUST use `package.json` scripts; add a script when a missing workflow is repeatable like the existing commands, not ad hoc commands.
- CI package path filters, matrix package ids, and root scripts `test:*` in `.github/workflows/ci.yml` and root `package.json` MUST stay synchronized when a workspace package is added, renamed, or moved; the `store` filter sync rule lives in `packages/trueforge-core/src/agent-session/store/AGENTS.md`.
- Release wiring MUST keep dist-free host development, `pnpm smoke`, and packed CJS/ESM consumers of `@truefoundry/trueforge-core` working without changes.
- PRs that change published-package code (`packages/trueforge-core`, `packages/trueforge`, `packages/trueforge-ui`, `packages/trueforge-sdk`) or `packages/frontend` (ships inside `@truefoundry/trueforge`) MUST include a new `.changeset/*.md` file (`pnpm changeset`). Docs, CI/workflows, charts, docker-compose, and `packages/local-sandbox`-only changes do not. SDK regeneration already adds `@truefoundry/trueforge-sdk` via `pnpm changeset:sdk-regen`.
- PRs that change published-package code (`packages/trueforge-core`, `packages/trueforge`, `packages/trueforge-ui`, `packages/trueforge-sdk`) or `packages/frontend` (ships inside `@truefoundry/trueforge`) MUST include a new `.changeset/*.md` file (`pnpm changeset`). Docs, CI/workflows, charts, and docker-compose changes do not. SDK regeneration already adds `@truefoundry/trueforge-sdk` via `pnpm changeset:sdk-regen`.
- Shared Postgres/Redis settings in `docker-compose.yml` and `docker-compose.dev.yml` (image versions, health checks, `env_file`) MUST stay synchronized; intentional differences (app services, data paths, project `name`, host ports, in-network `POSTGRES_HOST` / `REDIS_URL`) MUST stay explicit. `packages/trueforge/.env` is the host-dev + secrets source; `docker-compose.yml` may read it but MUST override container connectivity so host-dev localhost values are not used inside the smoke-test stack.
- Changes to types or schemas MUST keep `packages/trueforge-core`, `packages/frontend`, `packages/trueforge`, and `patches` synchronized; they MUST NOT update only one affected layer.
- TypeScript code MUST NOT use assertion escapes such as `as T`, `as unknown as T`, non-null `!`, or `as never` to silence type errors; implementations MUST use sound contracts, guards, or corrected types.
Expand Down
2 changes: 1 addition & 1 deletion docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -5996,7 +5996,7 @@
}
}
},
"description": "Caller is not the session creator, or sandbox belongs to another tenant."
"description": "Caller is not the session creator."
},
"404": {
"content": {
Expand Down
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,15 @@
"test:frontend": "pnpm --filter frontend test",
"test:trueforge-core": "pnpm --filter @truefoundry/trueforge-core test",
"test:trueforge": "pnpm --filter @truefoundry/trueforge test",
"test:local-sandbox:contract": "pnpm --filter @truefoundry/trueforge test:local-sandbox:contract",
"smoke:local-sandbox": "pnpm --filter @truefoundry/trueforge smoke:local-sandbox",
"smoke:local-sandbox:lima": "pnpm --filter @truefoundry/trueforge smoke:local-sandbox:lima",
"test:store:local": "bash scripts/test-store-local.sh",
"test:store:postgres": "pnpm --filter @truefoundry/trueforge test:store:postgres",
"test:store:sqlite": "pnpm --filter @truefoundry/trueforge test:store:sqlite",
"test:trueforge-ui": "pnpm --filter @truefoundry/trueforge-ui test",
"test": "pnpm test:trueforge-core && pnpm test:trueforge-ui && pnpm test:trueforge && pnpm test:frontend",
"typecheck": "pnpm --filter @truefoundry/trueforge-core typecheck && pnpm --filter @truefoundry/trueforge-ui typecheck && pnpm --filter @truefoundry/trueforge typecheck && pnpm --filter frontend typecheck && pnpm --filter @truefoundry/local-sandbox typecheck",
"typecheck": "pnpm --filter @truefoundry/trueforge-core typecheck && pnpm --filter @truefoundry/trueforge-ui typecheck && pnpm --filter @truefoundry/trueforge typecheck && pnpm --filter frontend typecheck",
"version": "node scripts/version.mjs"
},
"devDependencies": {
Expand Down
5 changes: 0 additions & 5 deletions packages/local-sandbox/.gitignore

This file was deleted.

144 changes: 0 additions & 144 deletions packages/local-sandbox/fixtures/mcp_pipe_client.py

This file was deleted.

38 changes: 0 additions & 38 deletions packages/local-sandbox/jest.config.cjs

This file was deleted.

49 changes: 0 additions & 49 deletions packages/local-sandbox/package.json

This file was deleted.

5 changes: 0 additions & 5 deletions packages/local-sandbox/src/index.ts

This file was deleted.

19 changes: 0 additions & 19 deletions packages/local-sandbox/tsconfig.build.json

This file was deleted.

10 changes: 0 additions & 10 deletions packages/local-sandbox/tsconfig.json

This file was deleted.

21 changes: 0 additions & 21 deletions packages/local-sandbox/tsconfig.smoke.json

This file was deleted.

5 changes: 3 additions & 2 deletions packages/trueforge-core/src/core/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ export { PromiseTimeoutError, withTimeout } from './util/promiseUtils';
// Sandbox (concrete implementation; provider details exported for composition)
export { CodeModeDispatcher } from './sandbox/codeMode/CodeModeDispatcher';
export type { CodeModeLogger } from './sandbox/codeMode/CodeModeDispatcher';
export type { CodeModeTransport } from './sandbox/codeMode/CodeModeTransport';
export type { CodeModeClientInstall, CodeModeTransport } from './sandbox/codeMode/CodeModeTransport';
export { CodeModeErrorSourceSchema, CodeModeReplySchema, CodeModeRequestSchema } from './sandbox/codeMode/types';
export type { CodeModeErrorSource, CodeModeReply, CodeModeRequest } from './sandbox/codeMode/types';
export { DaytonaSandboxProvider } from './sandbox/provider/DaytonaProvider';
Expand All @@ -166,9 +166,10 @@ export {
SandboxNotAvailableError,
SandboxPathIsDirectoryError,
validateNoPathTraversal,
validateSandboxOwnedByTenant,
} from './sandbox/SandboxErrors';
export { SANDBOX_IMAGE_URI } from './sandbox/sandboxImage';
export { existingSandboxIdForProvider, formatSandboxId, parseSandboxId, rawSandboxId } from './sandbox/sandboxRef';
export type { SandboxRefParts } from './sandbox/sandboxRef';

// Skills: the ISkillMounter seam lets hosts plug in their own skill sources
export { InstructionBuilder } from './InstructionBuilder';
Expand Down
Loading
Loading