From f95985a2c712c11c0f8ff8ff3439e324b2afa9e5 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sat, 1 Aug 2026 22:58:11 -0600 Subject: [PATCH 1/2] chore(release): 0.121.0 with Sandbox 0.16 --- CHANGELOG.md | 10 ++++++ docs/api/primitive-catalog.md | 2 +- docs/canonical-api.md | 4 +-- package.json | 4 +-- pnpm-lock.yaml | 33 ++++++++++--------- pnpm-workspace.yaml | 2 +- src/runtime/environment-provider.ts | 6 ++-- src/runtime/sandbox-backend.ts | 4 +-- .../fixtures/agent-improvement-proposal.json | 10 +++--- .../agent-profile-improvement-proposal.json | 6 ++-- 10 files changed, 46 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 652d7253..1ff3508a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,18 @@ ## Unreleased +## 0.121.0 + - `pnpm run check:version-bump` (new, in the `ci` job) fails any change that alters a consumer-visible package surface without raising that package's version. Compared: every field npm copies into the published manifest — `exports`, `files`, `bin`, `directories`, `engines`, `typesVersions`, `dependencies`, `peerDependencies`, install-lifecycle `scripts`, `private` — plus the `pnpm-workspace.yaml` catalog pins those resolve through. A `catalog:` specifier is compared by what it RESOLVES to, because a byte-identical `"catalog:"` hiding a moved version is exactly how 0.119.0 shipped its peer range twice. Packages are keyed by name, not path, so relocating one still compares against what that name already published. +### Runtime accepts the current Sandbox release + +`@tangle-network/sandbox@0.16.0` was published after Runtime 0.120.0 with execution-bound session controls, but Runtime's peer range still ended below 0.16.0. +An installation that explicitly selected every latest package therefore failed with `ERESOLVE` before application code could run. + +Runtime now requires Sandbox `>=0.16.0 <0.17.0`, and its development cohort tests against 0.16.0. +The narrow profile type adapter remains necessary because Sandbox 0.16.0 is compiled against Interface 0.38.0 while Runtime is compiled against Interface 0.40.0; the profile crosses that adapter unchanged as data. + ## 0.120.0 ### The runtime's own supervision journal is readable again diff --git a/docs/api/primitive-catalog.md b/docs/api/primitive-catalog.md index a360d70a..96ed481b 100644 --- a/docs/api/primitive-catalog.md +++ b/docs/api/primitive-catalog.md @@ -7,7 +7,7 @@ # Primitive catalog — the never-stale anti-reinvention inventory -> **GENERATED** from `@tangle-network/agent-runtime@0.120.0` and `@tangle-network/agent-eval@0.140.1` by `scripts/gen-primitive-catalog.mjs`. Do NOT hand-edit — run `pnpm run docs:api`. This is the mechanical companion to the JUDGMENT in `canonical-api.md` (§2 decision table + §1.5 AgentProfile law): that doc says WHICH primitive to reach for and what NOT to build; this catalog proves WHAT exists. Per-symbol signatures + `file:line` live in the per-module pages under `docs/api/`. +> **GENERATED** from `@tangle-network/agent-runtime@0.121.0` and `@tangle-network/agent-eval@0.140.1` by `scripts/gen-primitive-catalog.mjs`. Do NOT hand-edit — run `pnpm run docs:api`. This is the mechanical companion to the JUDGMENT in `canonical-api.md` (§2 decision table + §1.5 AgentProfile law): that doc says WHICH primitive to reach for and what NOT to build; this catalog proves WHAT exists. Per-symbol signatures + `file:line` live in the per-module pages under `docs/api/`. ## 1. agent-runtime — own public surface diff --git a/docs/canonical-api.md b/docs/canonical-api.md index ba715e8f..fd913f83 100644 --- a/docs/canonical-api.md +++ b/docs/canonical-api.md @@ -4,10 +4,10 @@ Generated signatures and the complete export list live in docs/api/. Run pnpm docs:freshness after editing this file. --> -> **Version 0.120.0.** +> **Version 0.121.0.** > [`docs/api/primitive-catalog.md`](./api/primitive-catalog.md) lists every export and import path. > `agent-eval` must satisfy `>=0.140.1 <0.141.0`. -> `sandbox` must satisfy `>=0.15.0 <0.16.0`. +> `sandbox` must satisfy `>=0.16.0 <0.17.0`. > Portable profile and tool-part types come from `@tangle-network/agent-interface` `>=0.40.0 <0.41.0`. > > **`./kernel` is the execution kernel**: `package.json` maps it to `src/runtime/index.ts`. Everything below labelled `/kernel` lives there — the recursive atom (`Scope`/`Supervisor`), the executor registry, budget conservation, the finalizer seam, analyst wiring, and the round-synchronous loop. diff --git a/package.json b/package.json index 2163c27e..29004a39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tangle-network/agent-runtime", - "version": "0.120.0", + "version": "0.121.0", "description": "Shared task-lifecycle skeleton for agents: a recursive loop kernel for chat turns, one-shot tasks, and multi-attempt loops, with trace capture and eval-gated self-improvement. Domain behavior lives in adapters; scoring and ship-gates in @tangle-network/agent-eval.", "homepage": "https://github.com/tangle-network/agent-runtime#readme", "repository": { @@ -171,7 +171,7 @@ "peerDependencies": { "@tangle-network/agent-eval": ">=0.140.1 <0.141.0", "@tangle-network/agent-interface": ">=0.40.0 <0.41.0", - "@tangle-network/sandbox": ">=0.15.0 <0.16.0", + "@tangle-network/sandbox": ">=0.16.0 <0.17.0", "playwright": "^1.40.0" }, "peerDependenciesMeta": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d504987f..3da12131 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,8 @@ catalogs: specifier: 0.9.4 version: 0.9.4 '@tangle-network/sandbox': - specifier: 0.15.2 - version: 0.15.2 + specifier: 0.16.0 + version: 0.16.0 '@types/node': specifier: 26.1.1 version: 26.1.1 @@ -68,7 +68,7 @@ importers: version: 0.40.0 '@tangle-network/sandbox': specifier: 'catalog:' - version: 0.15.2(viem@2.54.6(typescript@6.0.3)(zod@4.4.3)) + version: 0.16.0(viem@2.54.6(typescript@6.0.3)(zod@4.4.3)) '@types/node': specifier: 'catalog:' version: 26.1.1 @@ -125,7 +125,7 @@ importers: version: link:.. '@tangle-network/sandbox': specifier: 'catalog:' - version: 0.15.2(viem@2.54.6(typescript@6.0.3)(zod@4.4.3)) + version: 0.16.0(viem@2.54.6(typescript@6.0.3)(zod@4.4.3)) devDependencies: '@arethetypeswrong/cli': specifier: 'catalog:' @@ -1099,8 +1099,8 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@tangle-network/agent-core@0.4.25': - resolution: {integrity: sha512-3hfIs64b/1/C1ezYhSPu6NC449lO4XAq79uaol0z0eLXcXDM+2znXThTeMTEZUPJ4iAsR514xcHL2OrP3dsE3g==} + '@tangle-network/agent-core@0.4.27': + resolution: {integrity: sha512-gD3z0p+h8/XB2/vWQF6/RtKTLcoJOSrB85+ndYyX/3/l0pkUuVBTjm/RISiQBJyNVozgZz5iqhIV2O136keclA==} '@tangle-network/agent-core@0.4.29': resolution: {integrity: sha512-8RaZSTYU/HXZt48Mr0KfwLla0j3K6EH8H8xc0lI5qFggAMsNBic8Tk951CnFaNX680VSXGOma499zS1NgowqfA==} @@ -1110,8 +1110,8 @@ packages: engines: {node: '>=20'} hasBin: true - '@tangle-network/agent-interface@0.36.0': - resolution: {integrity: sha512-l48SiAY5Atx6ZTL86/XP2wSUPfJJ1sga82/F6V0KqwVkE5MHWiFql6wsLoqk0lc7s4EJe6+cKky+2zzxFuxDpg==} + '@tangle-network/agent-interface@0.38.0': + resolution: {integrity: sha512-4awwTtCeUyCAOlEqr4SKyqbj7ykvoRob6GXe9ZRk6KglTgnAU6VuEoMu1KudVvEYjmTHjBCCIHa3yL1FKgKJaA==} '@tangle-network/agent-interface@0.40.0': resolution: {integrity: sha512-4A6+bb5Ub22WJsVQRNuNIr6BSsfQG4ZZT436GZ2qUcZocjJ7186MEbN7kOmYq9TQ9qeMSUh/HbyYw2nsok5b+w==} @@ -1126,8 +1126,8 @@ packages: peerDependencies: '@tangle-network/agent-interface': '>=0.38.0 <0.41.0' - '@tangle-network/sandbox@0.15.2': - resolution: {integrity: sha512-haEdX9shY5jXQABwfipxmkrnz0Po42Dvtk41VTNCh88uw4iXcSgJdGBTBLYoriHZZZfJEenQPjlPjpgj8sm3NQ==} + '@tangle-network/sandbox@0.16.0': + resolution: {integrity: sha512-4L2Xvmy/9i9udI/ISV0YuB6/f6i5OICIvkiw/cKx1lxDNbnEIkk8l2X4OReGjUkPvFSI8TnOD7Gq7LADlYdmeQ==} peerDependencies: '@mastra/core': ^1.36.0 '@modelcontextprotocol/sdk': ^1.29.0 @@ -2790,9 +2790,9 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@tangle-network/agent-core@0.4.25': + '@tangle-network/agent-core@0.4.27': dependencies: - '@tangle-network/agent-interface': 0.36.0 + '@tangle-network/agent-interface': 0.38.0 zod: 4.4.3 '@tangle-network/agent-core@0.4.29': @@ -2811,9 +2811,10 @@ snapshots: re2js: 2.8.6 zod: 4.4.3 - '@tangle-network/agent-interface@0.36.0': + '@tangle-network/agent-interface@0.38.0': dependencies: '@noble/hashes': 1.8.0 + spdx-expression-parse: 5.0.0 zod: 4.4.3 '@tangle-network/agent-interface@0.40.0': @@ -2833,10 +2834,10 @@ snapshots: dependencies: '@tangle-network/agent-interface': 0.40.0 - '@tangle-network/sandbox@0.15.2(viem@2.54.6(typescript@6.0.3)(zod@4.4.3))': + '@tangle-network/sandbox@0.16.0(viem@2.54.6(typescript@6.0.3)(zod@4.4.3))': dependencies: - '@tangle-network/agent-core': 0.4.25 - '@tangle-network/agent-interface': 0.36.0 + '@tangle-network/agent-core': 0.4.27 + '@tangle-network/agent-interface': 0.38.0 zod: 4.4.3 optionalDependencies: viem: 2.54.6(typescript@6.0.3)(zod@4.4.3) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a7dce8b5..9188089f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,7 +22,7 @@ catalog: '@tangle-network/agent-interface': 0.40.0 '@tangle-network/agent-knowledge': 7.0.4 '@tangle-network/agent-profile-materialize': 0.9.4 - '@tangle-network/sandbox': 0.15.2 + '@tangle-network/sandbox': 0.16.0 publint: 0.3.22 tsdown: 0.22.14 tsx: 4.23.1 diff --git a/src/runtime/environment-provider.ts b/src/runtime/environment-provider.ts index 8e457a56..52a79f05 100644 --- a/src/runtime/environment-provider.ts +++ b/src/runtime/environment-provider.ts @@ -452,8 +452,8 @@ function createInputFromSandboxOptions( ...(options?.git?.ref ? { gitRef: options.git.ref } : {}), } return { - // sandboxProfileAsProfile: sandbox 0.15.2 types this profile against - // interface 0.36; it crosses as data (see sandbox-backend.ts). + // sandboxProfileAsProfile: sandbox 0.16.0 types this profile against + // interface 0.38; it crosses as data (see sandbox-backend.ts). ...(profile !== undefined ? { profile: sandboxProfileAsProfile(profile) } : {}), ...(backend ? { backend } : {}), ...(Object.keys(workspace).length > 0 ? { workspace } : {}), @@ -497,7 +497,7 @@ async function sandboxOptionsFromCreateInput( backend: { ...baseBackend, type: backendType, - // profileAsSandboxProfile: reverse hop of the interface 0.36/0.40 skew + // profileAsSandboxProfile: reverse hop of the interface 0.38/0.40 skew // (see sandbox-backend.ts); the profile crosses as data. profile: profileAsSandboxProfile(profile), }, diff --git a/src/runtime/sandbox-backend.ts b/src/runtime/sandbox-backend.ts index aa767c4a..3f8b262d 100644 --- a/src/runtime/sandbox-backend.ts +++ b/src/runtime/sandbox-backend.ts @@ -15,11 +15,11 @@ type BackendType = NonNullable['type'] type BackendOverride = NonNullable /** The AgentProfile type as @tangle-network/sandbox declares it — compiled - * against agent-interface 0.36, not this package's 0.40. */ + * against agent-interface 0.38, not this package's 0.40. */ export type SandboxAgentProfile = NonNullable /** - * Version-skew boundary: sandbox 0.15.2 types profiles against interface 0.36 + * Version-skew boundary: sandbox 0.16.0 types profiles against interface 0.38 * (MCP `args`/`env`/`headers` as plain strings), while this runtime is on 0.40 * (`AgentProfileConfigValue` objects). No published sandbox release is typed * against 0.40 yet, and the profile crosses this boundary as data — the values diff --git a/src/testing/fixtures/agent-improvement-proposal.json b/src/testing/fixtures/agent-improvement-proposal.json index 4b315d52..3c9e3bea 100644 --- a/src/testing/fixtures/agent-improvement-proposal.json +++ b/src/testing/fixtures/agent-improvement-proposal.json @@ -1,6 +1,6 @@ { "changedSurfaces": ["prompt"], - "digest": "sha256:62437295fe316041315ea506f1f32b35fc26ea505e7b203a906e0fa0e07cf2b4", + "digest": "sha256:3e02e3ad50802aba06d197876f9b9e5e51af4ea899f24b47a4fbf6f66516dd46", "evaluation": { "decision": { "contributingChecks": [ @@ -4810,7 +4810,7 @@ ], "metadata": { "fixture": "agent-improvement-proposal", - "runtimeVersion": "0.120.0" + "runtimeVersion": "0.121.0" }, "objectives": [ { @@ -4921,8 +4921,8 @@ "baselineContentHash": "sha256:5c21ee53e513fc604cb09754e21c392b24a424da0ef37dbf8f1ee4a8a0b08f09", "candidateContentHash": "sha256:60fcbb1c728194bd51d7d19cb732d1c3f1881dce7e0a6266b41c8b98cfd65693", "kind": "agent-eval-loop", - "recordDigest": "sha256:a68132746408aa98829aa6bbab094031961d7c180e00f7f87bf15c562585d5ac", - "runId": "agent-runtime-0.120.0-proposal-fixture", + "recordDigest": "sha256:75215d4401c0d9c8d7eef627c4db45eacc04aa2c22d26d5ea1ca7b63d3c2827d", + "runId": "agent-runtime-0.121.0-proposal-fixture", "schema": "agent-candidate-experiment" } }, @@ -4949,5 +4949,5 @@ ], "kind": "agent-improvement-proposal", "proposedAt": "2026-07-10T01:00:00.000Z", - "runId": "agent-runtime-0.120.0-proposal-fixture" + "runId": "agent-runtime-0.121.0-proposal-fixture" } diff --git a/src/testing/fixtures/agent-profile-improvement-proposal.json b/src/testing/fixtures/agent-profile-improvement-proposal.json index 76da1464..84a1dfbe 100644 --- a/src/testing/fixtures/agent-profile-improvement-proposal.json +++ b/src/testing/fixtures/agent-profile-improvement-proposal.json @@ -1,6 +1,6 @@ { "changedSurfaces": ["prompt", "skills"], - "digest": "sha256:07d8464e194b10487570d45bc9f91da367ca5e34e6a78e50dd6849a78a20e538", + "digest": "sha256:37369a278c75d6fd9fa66fa908fa8d286cd2005123268912c611817677c75c8e", "evaluation": { "decision": { "contributingChecks": [ @@ -1715,7 +1715,7 @@ ], "metadata": { "fixture": "agent-profile-improvement-proposal", - "runtimeVersion": "0.120.0" + "runtimeVersion": "0.121.0" }, "objectives": [ { @@ -1826,7 +1826,7 @@ "baselineContentHash": "sha256:21c495a37c418c10bde64fbaa188beddeed31f1f051ea60a6a6582a9ee0db704", "candidateContentHash": "sha256:103f77bc8481601eef1ad5fe6ba84a40dffabc3a44f421f8c8559121edab84e9", "kind": "agent-eval-loop", - "recordDigest": "sha256:0ec162db37e18ab5119a1dc8e02c8c7d65d0071484fd5bc2d177411d69c68014", + "recordDigest": "sha256:73686dac75ceee1456d2cf7154984e2b44d547c515c2f2c191a880b2d9c605fd", "runId": "profile-improvement-1", "schema": "agent-profile-improvement-experiment" } From 68e3ab8228481774d1bd860a57fbffc62345004b Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sat, 1 Aug 2026 22:58:51 -0600 Subject: [PATCH 2/2] chore(bench): release 0.6.0 with Sandbox 0.16 --- bench/CHANGELOG.md | 5 +++++ bench/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bench/CHANGELOG.md b/bench/CHANGELOG.md index 8f5640a3..9e67c632 100644 --- a/bench/CHANGELOG.md +++ b/bench/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.6.0 + +- Consume Runtime 0.121.0 with Sandbox 0.16.0 so a clean install no longer requires the superseded Sandbox 0.15 line. +- Release under a new minor because Sandbox is a pre-1.0 dependency moving across a minor boundary. + ## 0.5.0 - Consume Runtime 0.120.0 with Eval 0.140.1, Interface 0.40.0, Knowledge 7.0.4, and Sandbox 0.15.2. diff --git a/bench/package.json b/bench/package.json index 3ba42019..c6a0efa3 100644 --- a/bench/package.json +++ b/bench/package.json @@ -1,6 +1,6 @@ { "name": "@tangle-network/agent-bench", - "version": "0.5.0", + "version": "0.6.0", "type": "module", "description": "Benchmark adapters and execution for agent-runtime across coding, tool-use, RAG, memory, browser, and terminal tasks.", "repository": {