From 9f0da77d38e12f9f6a7744d9f3f00a1318d0aaf8 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sat, 23 May 2026 07:00:36 -0600 Subject: [PATCH] fix(deps): accept sandbox 0.2 runtime peer --- package.json | 6 ++--- pnpm-lock.yaml | 45 +++++++++++++++++++++++++++++++-- src/durable/execution-handle.ts | 9 +++---- src/model-resolution.ts | 1 - 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index e58428e..c761329 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tangle-network/agent-runtime", - "version": "0.17.0", + "version": "0.17.1", "description": "Reusable runtime lifecycle for domain-specific agents.", "homepage": "https://github.com/tangle-network/agent-runtime#readme", "repository": { @@ -57,7 +57,7 @@ }, "devDependencies": { "@biomejs/biome": "^2.4.0", - "@tangle-network/sandbox": "0.1.2", + "@tangle-network/sandbox": "^0.2.1", "@types/node": "^25.6.0", "tsup": "^8.0.0", "typescript": "^5.7.0", @@ -78,6 +78,6 @@ "license": "MIT", "packageManager": "pnpm@10.28.0", "peerDependencies": { - "@tangle-network/sandbox": "0.1.2" + "@tangle-network/sandbox": ">=0.1.2 <0.3.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 577582d..f1dd5e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ importers: specifier: ^2.4.0 version: 2.4.15 '@tangle-network/sandbox': - specifier: 0.1.2 - version: 0.1.2(viem@2.48.8(typescript@5.9.3)(zod@4.4.2)) + specifier: ^0.2.1 + version: 0.2.1(viem@2.48.8(typescript@5.9.3)(zod@4.4.2)) '@types/node': specifier: ^25.6.0 version: 25.6.0 @@ -72,24 +72,28 @@ packages: engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [musl] '@biomejs/cli-linux-arm64@2.4.15': resolution: {integrity: sha512-owaAMZD/T4LrD0ELNCk0Km3qrRHuM0X6EAyVE1FSqGY0rbLoiDLrO4Us2tllm6cAeB2Ioa9C2C08NZPdr8+0Ug==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [glibc] '@biomejs/cli-linux-x64-musl@2.4.15': resolution: {integrity: sha512-CNq/9W38SYSH023lfcQ4KKU8K0YX8T//FZUhcgtMMRABDojx5XsMV7jlweAvGSl389wJQB29Qo6Zb/a+jdvt+w==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [musl] '@biomejs/cli-linux-x64@2.4.15': resolution: {integrity: sha512-0jj7THz12GbUOLmMibktK6DZjqz2zV64KFxyBtcFTKPiiOIY0a7vns1elpO1dERvxpsZ5ik0oFfz0oGwFde1+g==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [glibc] '@biomejs/cli-win32-arm64@2.4.15': resolution: {integrity: sha512-ouhkYdlhp/1GghEJPdWwD/Vi3gQ1nFxuSpMolWsbq3Lsq3QUR4jl6UdhhscdCugKU5vOEuMiJhvKj66O0OCq+w==} @@ -336,66 +340,79 @@ packages: resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.60.2': resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.60.2': resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.60.2': resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.60.2': resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.60.2': resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.60.2': resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.60.2': resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.60.2': resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.60.2': resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.60.2': resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.60.2': resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.60.2': resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.60.2': resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} @@ -450,6 +467,11 @@ packages: engines: {node: '>=20'} hasBin: true + '@tangle-network/agent-integrations@0.25.7': + resolution: {integrity: sha512-5Iuymcoq6d1oZlyORfmVXiP2G/tJQe0ADYBUNwDlbk9uulSa3c6rztlr6sKm100NqDavVlJ0Jo75j9CsaemhIA==} + engines: {node: '>=20'} + hasBin: true + '@tangle-network/sandbox@0.1.2': resolution: {integrity: sha512-6TPH9QgCgou9Bhc1kzLNL4/PRiT1mjId6NONY5Le/KT2kh77cXH8KN3TTY/cU+/eW+WM5FYJOy32FWl2HShXbw==} peerDependencies: @@ -458,6 +480,17 @@ packages: viem: optional: true + '@tangle-network/sandbox@0.2.1': + resolution: {integrity: sha512-CQ3MdfnWcdjKa2UzyqDkjJarhkVDl4GqAKRhbQdHmHccl/pOm6qSRiPdu40XEA34A/SVPLpfE1ySxchU1rq6BQ==} + peerDependencies: + openai: ^6.36.0 + viem: ^2.0.0 + peerDependenciesMeta: + openai: + optional: true + viem: + optional: true + '@tangle-network/tcloud-attestation@0.1.1': resolution: {integrity: sha512-+TAF9s5t1jOWGyGHvKhIWe2FYmG7puVaxmmg0Et67ylAjGa7GqUAvISXGjG/6dzld7A170V0kQHK0WVdh2Wh0Q==} engines: {node: '>=18'} @@ -1211,10 +1244,18 @@ snapshots: - typescript - utf-8-validate + '@tangle-network/agent-integrations@0.25.7': {} + '@tangle-network/sandbox@0.1.2(viem@2.48.8(typescript@5.9.3)(zod@4.4.2))': optionalDependencies: viem: 2.48.8(typescript@5.9.3)(zod@4.4.2) + '@tangle-network/sandbox@0.2.1(viem@2.48.8(typescript@5.9.3)(zod@4.4.2))': + dependencies: + '@tangle-network/agent-integrations': 0.25.7 + optionalDependencies: + viem: 2.48.8(typescript@5.9.3)(zod@4.4.2) + '@tangle-network/tcloud-attestation@0.1.1': {} '@tangle-network/tcloud@0.4.6(typescript@5.9.3)(zod@4.4.2)': diff --git a/src/durable/execution-handle.ts b/src/durable/execution-handle.ts index cb27827..62ba4b6 100644 --- a/src/durable/execution-handle.ts +++ b/src/durable/execution-handle.ts @@ -10,12 +10,9 @@ * opaque id. Substrate executionIds are not a secrecy boundary. * * Wire integration: - * - `@tangle-network/sandbox@0.1.x` PromptOptions does not yet expose - * `executionId`. The SDK auto-reconnects in-call by extracting it - * from the response `execution.started` event; products do nothing. - * - For cross-process reconnect today, bypass the SDK and POST to the - * orchestrator's `/agents/run/stream` directly with this id in the - * `X-Execution-ID` header (see tax-agent's `sessions.ts`). + * - Sandbox PromptOptions accepts `executionId` and `lastEventId`. + * Products pass this id to make cross-process reconnect land on the + * same substrate execution instead of spawning a duplicate run. */ export function deriveExecutionId(input: { projectId: string diff --git a/src/model-resolution.ts b/src/model-resolution.ts index b886ab8..dfc3bc9 100644 --- a/src/model-resolution.ts +++ b/src/model-resolution.ts @@ -62,7 +62,6 @@ export async function getModels( return Array.isArray(body.data) ? body.data : [] } - /** Trim a candidate model id; `undefined` for non-strings and blanks. */ export function cleanModelId(value: unknown): string | undefined { if (typeof value !== 'string') return undefined