stitchkit 0.93.0 → 0.94.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +198 -0
- package/README.md +5 -2
- package/dist/agent-runtime/children-control.d.ts +6 -0
- package/dist/agent-runtime/children-control.d.ts.map +1 -0
- package/dist/agent-runtime/children-spawn.d.ts +6 -0
- package/dist/agent-runtime/children-spawn.d.ts.map +1 -0
- package/dist/agent-runtime/children-state.d.ts +46 -0
- package/dist/agent-runtime/children-state.d.ts.map +1 -0
- package/dist/agent-runtime/children-usage.d.ts +8 -0
- package/dist/agent-runtime/children-usage.d.ts.map +1 -0
- package/dist/agent-runtime/children.d.ts +11 -14
- package/dist/agent-runtime/children.d.ts.map +1 -1
- package/dist/agent-runtime/coding-shell-process.d.ts.map +1 -1
- package/dist/agent-runtime/coding-tool-contract.d.ts +2 -1
- package/dist/agent-runtime/coding-tool-contract.d.ts.map +1 -1
- package/dist/agent-runtime/coding-tool-listing.d.ts.map +1 -1
- package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -1
- package/dist/agent-runtime/contained-darwin.d.ts +38 -0
- package/dist/agent-runtime/contained-darwin.d.ts.map +1 -0
- package/dist/agent-runtime/contained-files.d.ts +11 -26
- package/dist/agent-runtime/contained-files.d.ts.map +1 -1
- package/dist/agent-runtime/contained-scan.d.ts +21 -0
- package/dist/agent-runtime/contained-scan.d.ts.map +1 -0
- package/dist/agent-runtime/contained-write.d.ts +9 -0
- package/dist/agent-runtime/contained-write.d.ts.map +1 -0
- package/dist/agent-runtime/deferred-tool-types.d.ts +4 -3
- package/dist/agent-runtime/deferred-tool-types.d.ts.map +1 -1
- package/dist/agent-runtime/events.d.ts +1 -1
- package/dist/agent-runtime/events.d.ts.map +1 -1
- package/dist/agent-runtime/harness-control.d.ts +0 -1
- package/dist/agent-runtime/harness-control.d.ts.map +1 -1
- package/dist/agent-runtime/harness.d.ts +0 -5
- package/dist/agent-runtime/harness.d.ts.map +1 -1
- package/dist/agent-runtime/managed-tools.d.ts +3 -2
- package/dist/agent-runtime/managed-tools.d.ts.map +1 -1
- package/dist/agent-runtime/observability.d.ts +1 -1
- package/dist/agent-runtime/observability.d.ts.map +1 -1
- package/dist/agent-runtime/openrouter.d.ts +29 -0
- package/dist/agent-runtime/openrouter.d.ts.map +1 -0
- package/dist/agent-runtime/projections.d.ts +1 -1
- package/dist/agent-runtime/projections.d.ts.map +1 -1
- package/dist/agent-runtime/run-acquisition.d.ts +17 -0
- package/dist/agent-runtime/run-acquisition.d.ts.map +1 -0
- package/dist/agent-runtime/run-execution-state.d.ts +133 -0
- package/dist/agent-runtime/run-execution-state.d.ts.map +1 -0
- package/dist/agent-runtime/run-execution.d.ts +17 -33
- package/dist/agent-runtime/run-execution.d.ts.map +1 -1
- package/dist/agent-runtime/run-failure.d.ts +18 -0
- package/dist/agent-runtime/run-failure.d.ts.map +1 -0
- package/dist/agent-runtime/run-model-attempts.d.ts +6 -0
- package/dist/agent-runtime/run-model-attempts.d.ts.map +1 -0
- package/dist/agent-runtime/run-prompt-history.d.ts +58 -0
- package/dist/agent-runtime/run-prompt-history.d.ts.map +1 -0
- package/dist/agent-runtime/run-provider-ledger.d.ts +26 -0
- package/dist/agent-runtime/run-provider-ledger.d.ts.map +1 -0
- package/dist/agent-runtime/run-stream-parts.d.ts +17 -0
- package/dist/agent-runtime/run-stream-parts.d.ts.map +1 -0
- package/dist/agent-runtime/run-terminal.d.ts +11 -0
- package/dist/agent-runtime/run-terminal.d.ts.map +1 -0
- package/dist/agent-runtime/run-turn-preparation.d.ts +22 -0
- package/dist/agent-runtime/run-turn-preparation.d.ts.map +1 -0
- package/dist/agent-runtime/runtime-admission-gate.d.ts +29 -0
- package/dist/agent-runtime/runtime-admission-gate.d.ts.map +1 -0
- package/dist/agent-runtime/runtime-control.d.ts +9 -0
- package/dist/agent-runtime/runtime-control.d.ts.map +1 -0
- package/dist/agent-runtime/runtime-recovery.d.ts +10 -0
- package/dist/agent-runtime/runtime-recovery.d.ts.map +1 -0
- package/dist/agent-runtime/runtime-state.d.ts +36 -0
- package/dist/agent-runtime/runtime-state.d.ts.map +1 -0
- package/dist/agent-runtime/runtime-submit.d.ts +5 -0
- package/dist/agent-runtime/runtime-submit.d.ts.map +1 -0
- package/dist/agent-runtime/runtime.d.ts +10 -5
- package/dist/agent-runtime/runtime.d.ts.map +1 -1
- package/dist/agent-runtime/schedule-records.d.ts +34 -0
- package/dist/agent-runtime/schedule-records.d.ts.map +1 -0
- package/dist/agent-runtime/schedules.d.ts +34 -0
- package/dist/agent-runtime/schedules.d.ts.map +1 -1
- package/dist/agent-runtime/sqlite-bun.d.ts +12 -0
- package/dist/agent-runtime/sqlite-bun.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-events.d.ts +5 -0
- package/dist/agent-runtime/sqlite-events.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-history.d.ts +7 -0
- package/dist/agent-runtime/sqlite-history.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-ledger.d.ts +7 -0
- package/dist/agent-runtime/sqlite-ledger.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-node.d.ts +12 -0
- package/dist/agent-runtime/sqlite-node.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-reads.d.ts +14 -0
- package/dist/agent-runtime/sqlite-reads.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-rows.d.ts +178 -0
- package/dist/agent-runtime/sqlite-rows.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-schema.d.ts +7 -0
- package/dist/agent-runtime/sqlite-schema.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite-transactions.d.ts +25 -0
- package/dist/agent-runtime/sqlite-transactions.d.ts.map +1 -0
- package/dist/agent-runtime/sqlite.d.ts +10 -6
- package/dist/agent-runtime/sqlite.d.ts.map +1 -1
- package/dist/agent-runtime/store-archive.d.ts +16 -0
- package/dist/agent-runtime/store-archive.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance-lifecycle.d.ts +434 -0
- package/dist/agent-runtime/store-conformance-lifecycle.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance-ordering.d.ts +18 -0
- package/dist/agent-runtime/store-conformance-ordering.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance-support.d.ts +130 -0
- package/dist/agent-runtime/store-conformance-support.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance-terminal.d.ts +12 -0
- package/dist/agent-runtime/store-conformance-terminal.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance.d.ts +40 -0
- package/dist/agent-runtime/store-conformance.d.ts.map +1 -0
- package/dist/agent-runtime/store-create.d.ts +11 -0
- package/dist/agent-runtime/store-create.d.ts.map +1 -0
- package/dist/agent-runtime/store-driver-contract.d.ts +814 -0
- package/dist/agent-runtime/store-driver-contract.d.ts.map +1 -0
- package/dist/agent-runtime/store-events.d.ts +7 -89
- package/dist/agent-runtime/store-events.d.ts.map +1 -1
- package/dist/agent-runtime/store-memory.d.ts +4 -0
- package/dist/agent-runtime/store-memory.d.ts.map +1 -0
- package/dist/agent-runtime/store-mutate.d.ts +13 -0
- package/dist/agent-runtime/store-mutate.d.ts.map +1 -0
- package/dist/agent-runtime/store-purge.d.ts +1 -1
- package/dist/agent-runtime/store-purge.d.ts.map +1 -1
- package/dist/agent-runtime/store-reads.d.ts +29 -0
- package/dist/agent-runtime/store-reads.d.ts.map +1 -0
- package/dist/agent-runtime/store-reduce-history.d.ts +10 -0
- package/dist/agent-runtime/store-reduce-history.d.ts.map +1 -0
- package/dist/agent-runtime/store-reduce-run.d.ts +14 -0
- package/dist/agent-runtime/store-reduce-run.d.ts.map +1 -0
- package/dist/agent-runtime/store-reduce-shared.d.ts +76 -0
- package/dist/agent-runtime/store-reduce-shared.d.ts.map +1 -0
- package/dist/agent-runtime/store-reduce-terminal.d.ts +6 -0
- package/dist/agent-runtime/store-reduce-terminal.d.ts.map +1 -0
- package/dist/agent-runtime/store-reducer.d.ts +24 -0
- package/dist/agent-runtime/store-reducer.d.ts.map +1 -0
- package/dist/agent-runtime/store-snapshot.d.ts +19 -0
- package/dist/agent-runtime/store-snapshot.d.ts.map +1 -0
- package/dist/agent-runtime/store.d.ts +1 -1
- package/dist/agent-runtime/store.d.ts.map +1 -1
- package/dist/application/admission-rate.d.ts +21 -0
- package/dist/application/admission-rate.d.ts.map +1 -0
- package/dist/application/admission-run.d.ts +8 -0
- package/dist/application/admission-run.d.ts.map +1 -0
- package/dist/application/admission.d.ts +1 -1
- package/dist/application/admission.d.ts.map +1 -1
- package/dist/application/diagnostic-journal-lock.d.ts +9 -34
- package/dist/application/diagnostic-journal-lock.d.ts.map +1 -1
- package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
- package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
- package/dist/application/events.d.ts +1 -1
- package/dist/application/events.d.ts.map +1 -1
- package/dist/application/file-state-store.d.ts +23 -0
- package/dist/application/file-state-store.d.ts.map +1 -0
- package/dist/application/health.d.ts +1 -1
- package/dist/application/health.d.ts.map +1 -1
- package/dist/application/kernel-admission.d.ts +8 -0
- package/dist/application/kernel-admission.d.ts.map +1 -0
- package/dist/application/kernel-contract.d.ts +142 -0
- package/dist/application/kernel-contract.d.ts.map +1 -0
- package/dist/application/kernel-resource-context.d.ts +24 -0
- package/dist/application/kernel-resource-context.d.ts.map +1 -0
- package/dist/application/kernel-restart.d.ts +5 -0
- package/dist/application/kernel-restart.d.ts.map +1 -0
- package/dist/application/kernel-rollback.d.ts +4 -0
- package/dist/application/kernel-rollback.d.ts.map +1 -0
- package/dist/application/kernel-shutdown.d.ts +6 -0
- package/dist/application/kernel-shutdown.d.ts.map +1 -0
- package/dist/application/kernel-start.d.ts +20 -0
- package/dist/application/kernel-start.d.ts.map +1 -0
- package/dist/application/kernel-state.d.ts +116 -0
- package/dist/application/kernel-state.d.ts.map +1 -0
- package/dist/application/kernel.d.ts +9 -140
- package/dist/application/kernel.d.ts.map +1 -1
- package/dist/application/latest-sink.d.ts +1 -1
- package/dist/application/latest-sink.d.ts.map +1 -1
- package/dist/application/notification-outbox.d.ts.map +1 -1
- package/dist/application/opentelemetry.d.ts +1 -1
- package/dist/application/opentelemetry.d.ts.map +1 -1
- package/dist/application/schedule.d.ts +0 -1
- package/dist/application/schedule.d.ts.map +1 -1
- package/dist/application/watch-hub-core.d.ts +122 -0
- package/dist/application/watch-hub-core.d.ts.map +1 -0
- package/dist/application/watch-hub.d.ts +3 -3
- package/dist/application/watch-hub.d.ts.map +1 -1
- package/dist/browser/client-executors.d.ts +14 -0
- package/dist/browser/client-executors.d.ts.map +1 -0
- package/dist/browser/client-multipart.d.ts +1 -1
- package/dist/browser/client-multipart.d.ts.map +1 -1
- package/dist/browser/client-url.d.ts +1 -1
- package/dist/browser/client-url.d.ts.map +1 -1
- package/dist/browser/client.d.ts +3 -2
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/contract-stream.d.ts +1 -1
- package/dist/browser/contract-stream.d.ts.map +1 -1
- package/dist/browser/http-fetch.d.ts +22 -0
- package/dist/browser/http-fetch.d.ts.map +1 -0
- package/dist/browser/http.d.ts +2 -4
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/browser/live-state-core.d.ts +63 -0
- package/dist/browser/live-state-core.d.ts.map +1 -0
- package/dist/browser/live-state.d.ts.map +1 -1
- package/dist/browser/realtime-client.d.ts +26 -0
- package/dist/browser/realtime-client.d.ts.map +1 -0
- package/dist/browser/resumable.d.ts +1 -28
- package/dist/browser/resumable.d.ts.map +1 -1
- package/dist/browser/retained.d.ts.map +1 -0
- package/dist/browser/socket-io-connection.d.ts +82 -0
- package/dist/browser/socket-io-connection.d.ts.map +1 -0
- package/dist/browser/socket-io-peer.d.ts +20 -0
- package/dist/browser/socket-io-peer.d.ts.map +1 -0
- package/dist/browser/socket-io-trace.d.ts +31 -0
- package/dist/browser/socket-io-trace.d.ts.map +1 -0
- package/dist/browser/socket-io.d.ts +24 -18
- package/dist/browser/socket-io.d.ts.map +1 -1
- package/dist/browser/stream.d.ts +14 -2
- package/dist/browser/stream.d.ts.map +1 -1
- package/dist/contract/client-types.d.ts +134 -0
- package/dist/contract/client-types.d.ts.map +1 -0
- package/dist/contract/define-validation.d.ts +30 -0
- package/dist/contract/define-validation.d.ts.map +1 -0
- package/dist/contract/define.d.ts +47 -394
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/normalize.d.ts +56 -0
- package/dist/contract/normalize.d.ts.map +1 -0
- package/dist/contract/runtime-context.d.ts +131 -0
- package/dist/contract/runtime-context.d.ts.map +1 -0
- package/dist/contract/tool-options.d.ts +105 -0
- package/dist/contract/tool-options.d.ts.map +1 -0
- package/dist/contract/tool-view.d.ts +148 -0
- package/dist/contract/tool-view.d.ts.map +1 -0
- package/dist/declaration/declaration.d.ts.map +1 -0
- package/dist/durability/contract.d.ts +259 -0
- package/dist/durability/contract.d.ts.map +1 -0
- package/dist/durability/effect.d.ts +24 -0
- package/dist/durability/effect.d.ts.map +1 -0
- package/dist/durability/engine.d.ts +14 -0
- package/dist/durability/engine.d.ts.map +1 -0
- package/dist/durability/events.d.ts +103 -0
- package/dist/durability/events.d.ts.map +1 -0
- package/dist/durability/json.d.ts +3 -0
- package/dist/durability/json.d.ts.map +1 -0
- package/dist/durability/ledger.d.ts +27 -0
- package/dist/durability/ledger.d.ts.map +1 -0
- package/dist/durability/parks.d.ts +22 -0
- package/dist/durability/parks.d.ts.map +1 -0
- package/dist/durability/scheduler.d.ts +30 -0
- package/dist/durability/scheduler.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/browser.d.ts +5 -0
- package/dist/entrypoints/agent-runtime/browser.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/browser.js +124 -0
- package/dist/entrypoints/agent-runtime/coding-tools.d.ts +2 -0
- package/dist/entrypoints/agent-runtime/coding-tools.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/coding-tools.js +22 -0
- package/dist/entrypoints/agent-runtime/harness.d.ts +2 -0
- package/dist/entrypoints/agent-runtime/harness.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/harness.js +739 -0
- package/dist/entrypoints/agent-runtime/openrouter.d.ts +2 -0
- package/dist/entrypoints/agent-runtime/openrouter.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/openrouter.js +270 -0
- package/dist/entrypoints/agent-runtime/sandbox.d.ts +5 -0
- package/dist/entrypoints/agent-runtime/sandbox.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/sandbox.js +797 -0
- package/dist/entrypoints/agent-runtime/sqlite/bun.d.ts +2 -0
- package/dist/entrypoints/agent-runtime/sqlite/bun.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/sqlite/bun.js +44 -0
- package/dist/entrypoints/agent-runtime/sqlite/node.d.ts +2 -0
- package/dist/entrypoints/agent-runtime/sqlite/node.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/sqlite/node.js +46 -0
- package/dist/entrypoints/agent-runtime/testing.d.ts +4 -0
- package/dist/entrypoints/agent-runtime/testing.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/testing.js +1116 -0
- package/dist/entrypoints/agent-runtime.d.ts +42 -0
- package/dist/entrypoints/agent-runtime.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime.js +2670 -0
- package/dist/entrypoints/application/diagnostic-journal.d.ts +21 -0
- package/dist/entrypoints/application/diagnostic-journal.d.ts.map +1 -0
- package/dist/entrypoints/application/diagnostic-journal.js +492 -0
- package/dist/entrypoints/application/grammy.d.ts +2 -0
- package/dist/entrypoints/application/grammy.d.ts.map +1 -0
- package/dist/entrypoints/application/grammy.js +169 -0
- package/dist/entrypoints/application/opentelemetry.d.ts +2 -0
- package/dist/entrypoints/application/opentelemetry.d.ts.map +1 -0
- package/dist/entrypoints/application/opentelemetry.js +250 -0
- package/dist/entrypoints/application/schemas.d.ts +15 -0
- package/dist/entrypoints/application/schemas.d.ts.map +1 -0
- package/dist/entrypoints/application/schemas.js +27 -0
- package/dist/entrypoints/application.d.ts +23 -0
- package/dist/entrypoints/application.d.ts.map +1 -0
- package/dist/entrypoints/application.js +2016 -0
- package/dist/entrypoints/bin/upgrade-cli.d.ts.map +1 -0
- package/dist/entrypoints/bin/upgrade-cli.js +177 -0
- package/dist/entrypoints/cli.d.ts +44 -0
- package/dist/entrypoints/cli.d.ts.map +1 -0
- package/dist/entrypoints/cli.js +773 -0
- package/dist/entrypoints/contract.d.ts +12 -0
- package/dist/entrypoints/contract.d.ts.map +1 -0
- package/dist/entrypoints/contract.js +64 -0
- package/dist/entrypoints/declaration.d.ts +2 -0
- package/dist/entrypoints/declaration.d.ts.map +1 -0
- package/dist/entrypoints/declaration.js +183 -0
- package/dist/entrypoints/files.d.ts +5 -0
- package/dist/entrypoints/files.d.ts.map +1 -0
- package/dist/entrypoints/files.js +111 -0
- package/dist/entrypoints/geo.d.ts +3 -0
- package/dist/entrypoints/geo.d.ts.map +1 -0
- package/dist/entrypoints/geo.js +245 -0
- package/dist/entrypoints/google.d.ts +2 -0
- package/dist/entrypoints/google.d.ts.map +1 -0
- package/dist/entrypoints/google.js +175 -0
- package/dist/entrypoints/index.d.ts +17 -0
- package/dist/entrypoints/index.d.ts.map +1 -0
- package/dist/entrypoints/index.js +764 -0
- package/dist/entrypoints/live.d.ts +19 -0
- package/dist/entrypoints/live.d.ts.map +1 -0
- package/dist/entrypoints/live.js +302 -0
- package/dist/entrypoints/node.d.ts +19 -0
- package/dist/entrypoints/node.d.ts.map +1 -0
- package/dist/entrypoints/node.js +308 -0
- package/dist/entrypoints/oauth.d.ts +2 -0
- package/dist/entrypoints/oauth.d.ts.map +1 -0
- package/dist/entrypoints/oauth.js +170 -0
- package/dist/entrypoints/observability.d.ts +19 -0
- package/dist/entrypoints/observability.d.ts.map +1 -0
- package/dist/entrypoints/observability.js +567 -0
- package/dist/entrypoints/primitives.d.ts +3 -0
- package/dist/entrypoints/primitives.d.ts.map +1 -0
- package/dist/entrypoints/primitives.js +749 -0
- package/dist/entrypoints/react.d.ts +5 -0
- package/dist/entrypoints/react.d.ts.map +1 -0
- package/dist/entrypoints/react.js +403 -0
- package/dist/entrypoints/release.d.ts +15 -0
- package/dist/entrypoints/release.d.ts.map +1 -0
- package/dist/entrypoints/release.js +196 -0
- package/dist/entrypoints/remote.d.ts +9 -0
- package/dist/entrypoints/remote.d.ts.map +1 -0
- package/dist/entrypoints/remote.js +66 -0
- package/dist/entrypoints/server.d.ts +39 -0
- package/dist/entrypoints/server.d.ts.map +1 -0
- package/dist/entrypoints/server.js +2009 -0
- package/dist/entrypoints/telegram.d.ts +3 -0
- package/dist/entrypoints/telegram.d.ts.map +1 -0
- package/dist/entrypoints/telegram.js +224 -0
- package/dist/entrypoints/testing.d.ts +10 -0
- package/dist/entrypoints/testing.d.ts.map +1 -0
- package/dist/entrypoints/testing.js +1377 -0
- package/dist/entrypoints/tools/connections.d.ts +19 -0
- package/dist/entrypoints/tools/connections.d.ts.map +1 -0
- package/dist/entrypoints/tools/connections.js +1110 -0
- package/dist/entrypoints/tools/contract.d.ts +29 -0
- package/dist/entrypoints/tools/contract.d.ts.map +1 -0
- package/dist/entrypoints/tools/contract.js +24 -0
- package/dist/entrypoints/tools/invoker.d.ts +9 -0
- package/dist/entrypoints/tools/invoker.d.ts.map +1 -0
- package/dist/entrypoints/tools/invoker.js +20 -0
- package/dist/entrypoints/tools.d.ts +54 -0
- package/dist/entrypoints/tools.d.ts.map +1 -0
- package/dist/entrypoints/tools.js +3009 -0
- package/dist/entrypoints/tracking/server.d.ts +15 -0
- package/dist/entrypoints/tracking/server.d.ts.map +1 -0
- package/dist/entrypoints/tracking.d.ts +24 -0
- package/dist/entrypoints/tracking.d.ts.map +1 -0
- package/dist/entrypoints/tracking.js +1140 -0
- package/dist/files/boundary.d.ts.map +1 -1
- package/dist/files/file-io.d.ts +14 -0
- package/dist/files/file-io.d.ts.map +1 -0
- package/dist/google/google.d.ts.map +1 -0
- package/dist/index-0b1ess5e.js +38 -0
- package/dist/index-1j8pm5t0.js +412 -0
- package/dist/index-1zbbzgfh.js +89 -0
- package/dist/index-2bxbyab0.js +47 -0
- package/dist/index-2gxzjvyr.js +266 -0
- package/dist/index-35mh5bhj.js +177 -0
- package/dist/index-48ffdxgk.js +6 -0
- package/dist/index-4gcnakhx.js +82 -0
- package/dist/index-55hkhm67.js +343 -0
- package/dist/index-79z7m7dt.js +675 -0
- package/dist/index-7f68ghdn.js +3618 -0
- package/dist/index-7p1f0vp2.js +154 -0
- package/dist/index-83bdg97s.js +16 -0
- package/dist/index-863ea9jb.js +154 -0
- package/dist/index-8p52kd5p.js +242 -0
- package/dist/index-d9pk3td4.js +326 -0
- package/dist/index-dce5wxcq.js +63 -0
- package/dist/index-e01r054k.js +105 -0
- package/dist/index-ensd0r74.js +595 -0
- package/dist/index-eqqvgdb3.js +46 -0
- package/dist/index-gxrt5h6v.js +341 -0
- package/dist/index-h6eeys1v.js +211 -0
- package/dist/index-ham5sz8m.js +734 -0
- package/dist/index-het2he5g.js +1387 -0
- package/dist/index-hffjpmq9.js +30 -0
- package/dist/index-hmp4800j.js +51 -0
- package/dist/index-k30h66yd.js +317 -0
- package/dist/index-k5hsfc3j.js +31 -0
- package/dist/index-khtgb21r.js +92 -0
- package/dist/index-m9zn6cpq.js +51 -0
- package/dist/index-ndddxtyx.js +324 -0
- package/dist/index-ngfhvfpd.js +30 -0
- package/dist/index-np4m8hd3.js +1205 -0
- package/dist/index-p3vsv1fb.js +3493 -0
- package/dist/index-p5r7qpdd.js +85 -0
- package/dist/index-p9e0w8hs.js +1084 -0
- package/dist/index-p9sh0xx4.js +64 -0
- package/dist/index-paz6sgdp.js +371 -0
- package/dist/index-px2gm2jp.js +448 -0
- package/dist/index-qwhynv6x.js +103 -0
- package/dist/index-s812ycat.js +65 -0
- package/dist/index-sp1tzwnb.js +281 -0
- package/dist/index-t9rhjr9f.js +2306 -0
- package/dist/index-v260df89.js +342 -0
- package/dist/index-w906953s.js +946 -0
- package/dist/index-wdkt63w3.js +214 -0
- package/dist/index-wqgjfstn.js +18 -0
- package/dist/index-wsm5w4ee.js +1023 -0
- package/dist/index-xw3s75nj.js +100 -0
- package/dist/index-yw4fzmdz.js +268 -0
- package/dist/index-zfrhfn82.js +85 -0
- package/dist/index-znfs20ss.js +98 -0
- package/dist/internal/atomic-file.d.ts +23 -2
- package/dist/internal/atomic-file.d.ts.map +1 -1
- package/dist/internal/backoff.d.ts +29 -0
- package/dist/internal/backoff.d.ts.map +1 -0
- package/dist/internal/canonical-json.d.ts +21 -11
- package/dist/internal/canonical-json.d.ts.map +1 -1
- package/dist/internal/channel.d.ts.map +1 -0
- package/dist/internal/exclusive-lock.d.ts +51 -0
- package/dist/internal/exclusive-lock.d.ts.map +1 -0
- package/dist/internal/logger.d.ts.map +1 -0
- package/dist/internal/process-identity.d.ts +47 -0
- package/dist/internal/process-identity.d.ts.map +1 -0
- package/dist/internal/request.d.ts.map +1 -0
- package/dist/internal/stable-digest.d.ts +0 -43
- package/dist/internal/stable-digest.d.ts.map +1 -1
- package/dist/internal/typed.d.ts +0 -8
- package/dist/internal/typed.d.ts.map +1 -1
- package/dist/internal/with-exclusive-lock.d.ts +67 -0
- package/dist/internal/with-exclusive-lock.d.ts.map +1 -0
- package/dist/internal/zod-issues.d.ts +38 -0
- package/dist/internal/zod-issues.d.ts.map +1 -0
- package/dist/json-schema/dialect.d.ts +17 -0
- package/dist/json-schema/dialect.d.ts.map +1 -0
- package/dist/json-schema/json-schema.d.ts.map +1 -0
- package/dist/live/watch-client.d.ts.map +1 -1
- package/dist/live/watch-delta.d.ts.map +1 -1
- package/dist/oauth/authorization-code.d.ts +57 -0
- package/dist/oauth/authorization-code.d.ts.map +1 -0
- package/dist/observability/audit.d.ts +3 -3
- package/dist/observability/audit.d.ts.map +1 -1
- package/dist/observability/bounded-logger.d.ts +1 -1
- package/dist/observability/bounded-logger.d.ts.map +1 -1
- package/dist/observability/bounded-sink.d.ts +81 -0
- package/dist/observability/bounded-sink.d.ts.map +1 -0
- package/dist/observability/context.d.ts +1 -1
- package/dist/observability/context.d.ts.map +1 -1
- package/dist/observability/event.d.ts +2 -1
- package/dist/observability/event.d.ts.map +1 -1
- package/dist/observability/work.d.ts +1 -1
- package/dist/observability/work.d.ts.map +1 -1
- package/dist/primitives/audit.d.ts +1 -1
- package/dist/primitives/audit.d.ts.map +1 -1
- package/dist/primitives/export-operation.d.ts +4 -2
- package/dist/primitives/export-operation.d.ts.map +1 -1
- package/dist/realtime/registry.d.ts +0 -5
- package/dist/realtime/registry.d.ts.map +1 -1
- package/dist/realtime/socket.d.ts +1 -1
- package/dist/realtime/socket.d.ts.map +1 -1
- package/dist/server/bun.d.ts +0 -1
- package/dist/server/bun.d.ts.map +1 -1
- package/dist/server/context-contribution.d.ts +1 -1
- package/dist/server/context-contribution.d.ts.map +1 -1
- package/dist/server/context.d.ts +2 -2
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/contract-method.d.ts +15 -0
- package/dist/server/contract-method.d.ts.map +1 -0
- package/dist/server/contract-stream.d.ts +1 -1
- package/dist/server/contract-stream.d.ts.map +1 -1
- package/dist/server/create.d.ts +8 -0
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/endpoint-dispatch.d.ts +10 -0
- package/dist/server/endpoint-dispatch.d.ts.map +1 -0
- package/dist/server/endpoint-response.d.ts +19 -0
- package/dist/server/endpoint-response.d.ts.map +1 -0
- package/dist/server/error-dispatch.d.ts +17 -1
- package/dist/server/error-dispatch.d.ts.map +1 -1
- package/dist/server/error-hook.d.ts +2 -2
- package/dist/server/error-hook.d.ts.map +1 -1
- package/dist/server/handler-state.d.ts +44 -0
- package/dist/server/handler-state.d.ts.map +1 -0
- package/dist/server/implement-registry.d.ts +54 -0
- package/dist/server/implement-registry.d.ts.map +1 -0
- package/dist/server/implement.d.ts +9 -55
- package/dist/server/implement.d.ts.map +1 -1
- package/dist/server/middleware/auth.d.ts +1 -31
- package/dist/server/middleware/auth.d.ts.map +1 -1
- package/dist/server/middleware/cors.d.ts +17 -0
- package/dist/server/middleware/cors.d.ts.map +1 -1
- package/dist/server/middleware/jwt.d.ts +31 -0
- package/dist/server/middleware/jwt.d.ts.map +1 -0
- package/dist/server/middleware/trust-fence.d.ts +1 -1
- package/dist/server/middleware/trust-fence.d.ts.map +1 -1
- package/dist/server/multipart-reader.d.ts +22 -0
- package/dist/server/multipart-reader.d.ts.map +1 -0
- package/dist/server/multipart.d.ts +1 -1
- package/dist/server/multipart.d.ts.map +1 -1
- package/dist/server/oauth/cimd.d.ts +88 -0
- package/dist/server/oauth/cimd.d.ts.map +1 -0
- package/dist/server/oauth/endpoints.d.ts +39 -0
- package/dist/server/oauth/endpoints.d.ts.map +1 -0
- package/dist/server/oauth/metadata.d.ts +28 -0
- package/dist/server/oauth/metadata.d.ts.map +1 -0
- package/dist/server/oauth/provider.d.ts +117 -0
- package/dist/server/oauth/provider.d.ts.map +1 -0
- package/dist/server/realtime.d.ts +1 -1
- package/dist/server/realtime.d.ts.map +1 -1
- package/dist/server/request-completion.d.ts +16 -0
- package/dist/server/request-completion.d.ts.map +1 -0
- package/dist/server/response-metadata.d.ts +1 -1
- package/dist/server/response-metadata.d.ts.map +1 -1
- package/dist/server/route-table.d.ts +9 -0
- package/dist/server/route-table.d.ts.map +1 -0
- package/dist/server/stream.d.ts +0 -13
- package/dist/server/stream.d.ts.map +1 -1
- package/dist/server/streaming-pump.d.ts +66 -0
- package/dist/server/streaming-pump.d.ts.map +1 -0
- package/dist/server/streaming-route.d.ts +12 -5
- package/dist/server/streaming-route.d.ts.map +1 -1
- package/dist/server/types.d.ts +10 -4
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/unix-client-bun.d.ts.map +1 -1
- package/dist/server/unix-client-http1.d.ts +76 -0
- package/dist/server/unix-client-http1.d.ts.map +1 -0
- package/dist/server/unix-client.d.ts.map +1 -1
- package/dist/testing/handler-clients.d.ts +32 -0
- package/dist/testing/handler-clients.d.ts.map +1 -0
- package/dist/testing/managed-resource-conformance-scenarios.d.ts.map +1 -1
- package/dist/testing/realtime-probe.d.ts +33 -0
- package/dist/testing/realtime-probe.d.ts.map +1 -0
- package/dist/testing/surface-conformance.d.ts +2 -32
- package/dist/testing/surface-conformance.d.ts.map +1 -1
- package/dist/testing/surface-manifest-digest.d.ts +44 -0
- package/dist/testing/surface-manifest-digest.d.ts.map +1 -0
- package/dist/testing/surface-manifest.d.ts +30 -4
- package/dist/testing/surface-manifest.d.ts.map +1 -1
- package/dist/tools/agent.d.ts +1 -1
- package/dist/tools/agent.d.ts.map +1 -1
- package/dist/tools/cli/args-fields.d.ts +31 -0
- package/dist/tools/cli/args-fields.d.ts.map +1 -0
- package/dist/tools/cli/args-route.d.ts +42 -0
- package/dist/tools/cli/args-route.d.ts.map +1 -0
- package/dist/tools/cli/args-view.d.ts +32 -0
- package/dist/tools/cli/args-view.d.ts.map +1 -0
- package/dist/tools/cli/args.d.ts +80 -0
- package/dist/tools/cli/args.d.ts.map +1 -0
- package/dist/tools/cli/argument-error.d.ts +5 -0
- package/dist/tools/cli/argument-error.d.ts.map +1 -0
- package/dist/tools/cli/checkpoint.d.ts +24 -0
- package/dist/tools/cli/checkpoint.d.ts.map +1 -0
- package/dist/tools/cli/command.d.ts +70 -0
- package/dist/tools/cli/command.d.ts.map +1 -0
- package/dist/tools/cli/config.d.ts +90 -0
- package/dist/tools/cli/config.d.ts.map +1 -0
- package/dist/tools/cli/create-cli.d.ts +36 -0
- package/dist/tools/cli/create-cli.d.ts.map +1 -0
- package/dist/tools/cli/download.d.ts +8 -0
- package/dist/tools/cli/download.d.ts.map +1 -0
- package/dist/tools/cli/format.d.ts +50 -0
- package/dist/tools/cli/format.d.ts.map +1 -0
- package/dist/tools/cli/help.d.ts +24 -0
- package/dist/tools/cli/help.d.ts.map +1 -0
- package/dist/tools/cli/installer.d.ts +34 -0
- package/dist/tools/cli/installer.d.ts.map +1 -0
- package/dist/tools/cli/invoke.d.ts +144 -0
- package/dist/tools/cli/invoke.d.ts.map +1 -0
- package/dist/tools/cli/io.d.ts +10 -0
- package/dist/tools/cli/io.d.ts.map +1 -0
- package/dist/tools/cli/managed-surface.d.ts +30 -0
- package/dist/tools/cli/managed-surface.d.ts.map +1 -0
- package/dist/tools/cli/manifest.d.ts +80 -0
- package/dist/tools/cli/manifest.d.ts.map +1 -0
- package/dist/tools/cli/policy.d.ts +27 -0
- package/dist/tools/cli/policy.d.ts.map +1 -0
- package/dist/tools/cli/prepare.d.ts +14 -0
- package/dist/tools/cli/prepare.d.ts.map +1 -0
- package/dist/tools/cli/profile.d.ts +40 -0
- package/dist/tools/cli/profile.d.ts.map +1 -0
- package/dist/tools/cli/run-managed.d.ts +5 -0
- package/dist/tools/cli/run-managed.d.ts.map +1 -0
- package/dist/tools/cli/run-native.d.ts +9 -0
- package/dist/tools/cli/run-native.d.ts.map +1 -0
- package/dist/tools/cli/session.d.ts +40 -0
- package/dist/tools/cli/session.d.ts.map +1 -0
- package/dist/tools/cli/signature.d.ts +81 -0
- package/dist/tools/cli/signature.d.ts.map +1 -0
- package/dist/tools/cli/stream.d.ts +93 -0
- package/dist/tools/cli/stream.d.ts.map +1 -0
- package/dist/tools/cli/update.d.ts +145 -0
- package/dist/tools/cli/update.d.ts.map +1 -0
- package/dist/tools/cli/view.d.ts +12 -0
- package/dist/tools/cli/view.d.ts.map +1 -0
- package/dist/tools/cli/wait.d.ts +54 -0
- package/dist/tools/cli/wait.d.ts.map +1 -0
- package/dist/tools/connections/runtime.d.ts +1 -1
- package/dist/tools/connections/runtime.d.ts.map +1 -1
- package/dist/tools/connections/types.d.ts +3 -3
- package/dist/tools/connections/types.d.ts.map +1 -1
- package/dist/tools/durability-context.d.ts +1 -1
- package/dist/tools/durability-context.d.ts.map +1 -1
- package/dist/tools/execute-args.d.ts +23 -0
- package/dist/tools/execute-args.d.ts.map +1 -0
- package/dist/tools/execute-hooks.d.ts +146 -0
- package/dist/tools/execute-hooks.d.ts.map +1 -0
- package/dist/tools/execute-result.d.ts +40 -0
- package/dist/tools/execute-result.d.ts.map +1 -0
- package/dist/tools/execute.d.ts +31 -193
- package/dist/tools/execute.d.ts.map +1 -1
- package/dist/tools/internal/surface-projector.d.ts +9 -6
- package/dist/tools/internal/surface-projector.d.ts.map +1 -1
- package/dist/tools/internal/tool-view.d.ts +41 -0
- package/dist/tools/internal/tool-view.d.ts.map +1 -0
- package/dist/tools/invoker.d.ts +13 -4
- package/dist/tools/invoker.d.ts.map +1 -1
- package/dist/tools/lifecycle.d.ts +1 -1
- package/dist/tools/lifecycle.d.ts.map +1 -1
- package/dist/tools/list-names.d.ts +3 -3
- package/dist/tools/list-names.d.ts.map +1 -1
- package/dist/tools/manifest.d.ts +2 -2
- package/dist/tools/manifest.d.ts.map +1 -1
- package/dist/tools/mcp/app.d.ts +62 -0
- package/dist/tools/mcp/app.d.ts.map +1 -0
- package/dist/tools/mcp/catalog.d.ts +68 -0
- package/dist/tools/mcp/catalog.d.ts.map +1 -0
- package/dist/tools/mcp/handler.d.ts +46 -0
- package/dist/tools/mcp/handler.d.ts.map +1 -0
- package/dist/tools/mcp/mount.d.ts +152 -0
- package/dist/tools/mcp/mount.d.ts.map +1 -0
- package/dist/tools/mcp/prepare.d.ts +76 -0
- package/dist/tools/mcp/prepare.d.ts.map +1 -0
- package/dist/tools/mcp/progress.d.ts +46 -0
- package/dist/tools/mcp/progress.d.ts.map +1 -0
- package/dist/tools/mcp/register.d.ts +36 -0
- package/dist/tools/mcp/register.d.ts.map +1 -0
- package/dist/tools/mcp/round-context.d.ts +38 -0
- package/dist/tools/mcp/round-context.d.ts.map +1 -0
- package/dist/tools/mcp/round-policy.d.ts +33 -0
- package/dist/tools/mcp/round-policy.d.ts.map +1 -0
- package/dist/tools/mcp/round.d.ts +53 -0
- package/dist/tools/mcp/round.d.ts.map +1 -0
- package/dist/tools/mcp/runtime-tools.d.ts +25 -0
- package/dist/tools/mcp/runtime-tools.d.ts.map +1 -0
- package/dist/tools/mcp/stdio-signals.d.ts +33 -0
- package/dist/tools/mcp/stdio-signals.d.ts.map +1 -0
- package/dist/tools/mcp/stdio.d.ts +20 -0
- package/dist/tools/mcp/stdio.d.ts.map +1 -0
- package/dist/tools/mcp/trace.d.ts +12 -0
- package/dist/tools/mcp/trace.d.ts.map +1 -0
- package/dist/tools/mount.d.ts +14 -7
- package/dist/tools/mount.d.ts.map +1 -1
- package/dist/tools/native-definition.d.ts +4 -3
- package/dist/tools/native-definition.d.ts.map +1 -1
- package/dist/tools/operations/async-operation-binding-types.d.ts +127 -0
- package/dist/tools/operations/async-operation-binding-types.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-binding.d.ts +28 -0
- package/dist/tools/operations/async-operation-binding.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-canonical-types.d.ts +110 -0
- package/dist/tools/operations/async-operation-canonical-types.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-canonical.d.ts +7 -0
- package/dist/tools/operations/async-operation-canonical.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-contract.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-id.d.ts +23 -0
- package/dist/tools/operations/async-operation-id.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-runtime-tools.d.ts +41 -0
- package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-runtime-types.d.ts +69 -0
- package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -0
- package/dist/tools/operations/async-operation-runtime.d.ts +5 -0
- package/dist/tools/operations/async-operation-runtime.d.ts.map +1 -0
- package/dist/tools/operations/define-wait-tool.d.ts +22 -0
- package/dist/tools/operations/define-wait-tool.d.ts.map +1 -0
- package/dist/tools/operations/mount-wait.d.ts.map +1 -0
- package/dist/tools/operations/wait-core.d.ts.map +1 -0
- package/dist/tools/remote.d.ts +1 -1
- package/dist/tools/remote.d.ts.map +1 -1
- package/dist/tools/runtime-tool.d.ts +13 -4
- package/dist/tools/runtime-tool.d.ts.map +1 -1
- package/dist/tools/schema/coerce.d.ts.map +1 -0
- package/dist/tools/schema/flatten-join.d.ts.map +1 -0
- package/dist/tools/schema/flatten.d.ts.map +1 -0
- package/dist/tools/schema/portable-formats.d.ts.map +1 -0
- package/dist/tools/schema/presentation.d.ts +24 -0
- package/dist/tools/schema/presentation.d.ts.map +1 -0
- package/dist/tools/schema/schema.d.ts.map +1 -0
- package/dist/tools/schema/untyped-properties.d.ts.map +1 -0
- package/dist/tools/surface.d.ts +2 -3
- package/dist/tools/surface.d.ts.map +1 -1
- package/dist/tools/tool-logger.d.ts +1 -1
- package/dist/tools/tool-logger.d.ts.map +1 -1
- package/dist/tools/toolkit.d.ts +4 -4
- package/dist/tools/toolkit.d.ts.map +1 -1
- package/dist/tools/transfer/define-download-tool.d.ts +18 -0
- package/dist/tools/transfer/define-download-tool.d.ts.map +1 -0
- package/dist/tools/transfer/define-upload-tool.d.ts +16 -0
- package/dist/tools/transfer/define-upload-tool.d.ts.map +1 -0
- package/dist/tools/transfer/define-view-file-tool.d.ts +10 -0
- package/dist/tools/transfer/define-view-file-tool.d.ts.map +1 -0
- package/dist/tools/transfer/download-core.d.ts +20 -0
- package/dist/tools/transfer/download-core.d.ts.map +1 -0
- package/dist/tools/transfer/managed-file-error.d.ts +6 -0
- package/dist/tools/transfer/managed-file-error.d.ts.map +1 -0
- package/dist/tools/transfer/mount-download.d.ts +41 -0
- package/dist/tools/transfer/mount-download.d.ts.map +1 -0
- package/dist/tools/transfer/mount-upload.d.ts +21 -0
- package/dist/tools/transfer/mount-upload.d.ts.map +1 -0
- package/dist/tools/transfer/native-result.d.ts.map +1 -0
- package/dist/tools/transfer/upload-core.d.ts +4 -0
- package/dist/tools/transfer/upload-core.d.ts.map +1 -0
- package/dist/tools/transfer/view-file-contract.d.ts.map +1 -0
- package/dist/tools/transfer/view-file.d.ts +62 -0
- package/dist/tools/transfer/view-file.d.ts.map +1 -0
- package/dist/tools/transports.d.ts +1 -1
- package/dist/tools/transports.d.ts.map +1 -1
- package/dist/tracking/client-listeners.d.ts +30 -0
- package/dist/tracking/client-listeners.d.ts.map +1 -0
- package/dist/tracking/client-visit.d.ts +61 -0
- package/dist/tracking/client-visit.d.ts.map +1 -0
- package/dist/tracking/client.d.ts +3 -2
- package/dist/tracking/client.d.ts.map +1 -1
- package/dist/tracking/contract.d.ts +1 -1
- package/dist/tracking/contract.d.ts.map +1 -1
- package/llms/agent-runtime-browser.txt +33 -0
- package/llms/agent-runtime-coding-tools.txt +58 -0
- package/llms/agent-runtime-harness.txt +45 -0
- package/llms/agent-runtime-openrouter.txt +22 -0
- package/llms/agent-runtime-sandbox.txt +159 -0
- package/llms/agent-runtime-sqlite-bun.txt +29 -0
- package/llms/agent-runtime-sqlite-node.txt +26 -0
- package/llms/agent-runtime-testing.txt +30 -0
- package/llms/agent-runtime.2.txt +550 -0
- package/llms/agent-runtime.3.txt +311 -0
- package/llms/agent-runtime.txt +893 -0
- package/llms/application-diagnostic-journal.txt +30 -0
- package/llms/application-grammy.txt +27 -0
- package/llms/application-opentelemetry.txt +27 -0
- package/llms/application-schemas.txt +42 -0
- package/llms/application.2.txt +487 -0
- package/llms/application.txt +886 -0
- package/llms/cli.2.txt +80 -0
- package/llms/cli.txt +948 -0
- package/llms/contract.txt +606 -0
- package/llms/declaration.txt +286 -0
- package/llms/files.txt +33 -0
- package/llms/geo.txt +114 -0
- package/llms/google.txt +27 -0
- package/llms/live.txt +471 -0
- package/llms/node.txt +43 -0
- package/llms/oauth.txt +136 -0
- package/llms/observability.txt +893 -0
- package/llms/primitives.txt +158 -0
- package/llms/react.txt +184 -0
- package/llms/release.txt +176 -0
- package/llms/remote.txt +25 -0
- package/llms/server.2.txt +361 -0
- package/llms/server.3.txt +1031 -0
- package/llms/server.4.txt +905 -0
- package/llms/server.5.txt +250 -0
- package/llms/server.txt +996 -0
- package/llms/stitchkit.2.txt +836 -0
- package/llms/stitchkit.3.txt +147 -0
- package/llms/stitchkit.txt +260 -0
- package/llms/telegram.txt +30 -0
- package/llms/testing.txt +676 -0
- package/llms/tools-connections.txt +45 -0
- package/llms/tools-contract.txt +9 -0
- package/llms/tools-invoker.txt +9 -0
- package/llms/tools.2.txt +647 -0
- package/llms/tools.3.txt +288 -0
- package/llms/tools.txt +966 -0
- package/llms/tracking-server.txt +32 -0
- package/llms/tracking.txt +263 -0
- package/llms/upgrading-0.37.0-0.50.0.txt +947 -0
- package/llms/upgrading-0.53.0-0.67.0.txt +1174 -0
- package/llms/upgrading-0.68.0-0.94.0.txt +1159 -0
- package/llms/upgrading.txt +215 -0
- package/llms-full.txt +312 -77
- package/llms.txt +54 -5
- package/package.json +84 -83
- package/dist/agent-runtime/durability-contract.d.ts +0 -176
- package/dist/agent-runtime/durability-contract.d.ts.map +0 -1
- package/dist/agent-runtime/durability-json.d.ts +0 -3
- package/dist/agent-runtime/durability-json.d.ts.map +0 -1
- package/dist/agent-runtime/durability-ledger.d.ts +0 -16
- package/dist/agent-runtime/durability-ledger.d.ts.map +0 -1
- package/dist/agent-runtime/durability-scheduler.d.ts +0 -29
- package/dist/agent-runtime/durability-scheduler.d.ts.map +0 -1
- package/dist/agent-runtime/durability.d.ts +0 -14
- package/dist/agent-runtime/durability.d.ts.map +0 -1
- package/dist/agent-runtime/store-driver.d.ts +0 -814
- package/dist/agent-runtime/store-driver.d.ts.map +0 -1
- package/dist/agent-runtime-browser.d.ts +0 -5
- package/dist/agent-runtime-browser.d.ts.map +0 -1
- package/dist/agent-runtime-browser.js +0 -124
- package/dist/agent-runtime-coding-tools.d.ts +0 -2
- package/dist/agent-runtime-coding-tools.d.ts.map +0 -1
- package/dist/agent-runtime-coding-tools.js +0 -23
- package/dist/agent-runtime-harness.d.ts +0 -2
- package/dist/agent-runtime-harness.d.ts.map +0 -1
- package/dist/agent-runtime-harness.js +0 -729
- package/dist/agent-runtime-openrouter.d.ts +0 -29
- package/dist/agent-runtime-openrouter.d.ts.map +0 -1
- package/dist/agent-runtime-openrouter.js +0 -270
- package/dist/agent-runtime-sandbox.d.ts +0 -5
- package/dist/agent-runtime-sandbox.d.ts.map +0 -1
- package/dist/agent-runtime-sandbox.js +0 -798
- package/dist/agent-runtime-sqlite-bun.d.ts +0 -11
- package/dist/agent-runtime-sqlite-bun.d.ts.map +0 -1
- package/dist/agent-runtime-sqlite-bun.js +0 -42
- package/dist/agent-runtime-sqlite-node.d.ts +0 -11
- package/dist/agent-runtime-sqlite-node.d.ts.map +0 -1
- package/dist/agent-runtime-sqlite-node.js +0 -44
- package/dist/agent-runtime-testing.d.ts +0 -3
- package/dist/agent-runtime-testing.d.ts.map +0 -1
- package/dist/agent-runtime-testing.js +0 -156
- package/dist/agent-runtime.d.ts +0 -38
- package/dist/agent-runtime.d.ts.map +0 -1
- package/dist/agent-runtime.js +0 -2607
- package/dist/application/channel.d.ts.map +0 -1
- package/dist/application-diagnostic-journal.d.ts +0 -21
- package/dist/application-diagnostic-journal.d.ts.map +0 -1
- package/dist/application-diagnostic-journal.js +0 -632
- package/dist/application-grammy.d.ts +0 -2
- package/dist/application-grammy.d.ts.map +0 -1
- package/dist/application-grammy.js +0 -169
- package/dist/application-opentelemetry.d.ts +0 -2
- package/dist/application-opentelemetry.d.ts.map +0 -1
- package/dist/application-opentelemetry.js +0 -250
- package/dist/application-schemas.d.ts +0 -15
- package/dist/application-schemas.d.ts.map +0 -1
- package/dist/application-schemas.js +0 -27
- package/dist/application.d.ts +0 -22
- package/dist/application.d.ts.map +0 -1
- package/dist/application.js +0 -1977
- package/dist/cli.d.ts +0 -41
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -753
- package/dist/contract/index.d.ts +0 -8
- package/dist/contract/index.d.ts.map +0 -1
- package/dist/contract/index.js +0 -55
- package/dist/declaration.d.ts.map +0 -1
- package/dist/declaration.js +0 -183
- package/dist/files.d.ts +0 -3
- package/dist/files.d.ts.map +0 -1
- package/dist/files.js +0 -15
- package/dist/geo.d.ts +0 -3
- package/dist/geo.d.ts.map +0 -1
- package/dist/geo.js +0 -245
- package/dist/google.d.ts.map +0 -1
- package/dist/google.js +0 -175
- package/dist/index-0a349c33.js +0 -470
- package/dist/index-0j3vcp5m.js +0 -28
- package/dist/index-2c2bjw3s.js +0 -51
- package/dist/index-2na0qrfn.js +0 -214
- package/dist/index-2qzskm8h.js +0 -63
- package/dist/index-3bmnp41g.js +0 -2169
- package/dist/index-3xwxfj4z.js +0 -334
- package/dist/index-4fpa9dy2.js +0 -51
- package/dist/index-6kyksz9y.js +0 -268
- package/dist/index-77fekveh.js +0 -44
- package/dist/index-7gnkny4z.js +0 -326
- package/dist/index-7zbps32p.js +0 -89
- package/dist/index-9f8ztey6.js +0 -588
- package/dist/index-a11g2kry.js +0 -866
- package/dist/index-a916km3r.js +0 -45
- package/dist/index-actkayzn.js +0 -367
- package/dist/index-bn2cjajt.js +0 -524
- package/dist/index-bx75zwt7.js +0 -63
- package/dist/index-cby4ar3v.js +0 -46
- package/dist/index-cnyk6te3.js +0 -77
- package/dist/index-cxqhvq21.js +0 -413
- package/dist/index-e0znv5gn.js +0 -176
- package/dist/index-e42wzzz5.js +0 -154
- package/dist/index-f477k430.js +0 -324
- package/dist/index-f9mb610r.js +0 -177
- package/dist/index-fadnxwna.js +0 -1046
- package/dist/index-fq77yfzc.js +0 -1303
- package/dist/index-h9etkkyk.js +0 -1126
- package/dist/index-hrbajay7.js +0 -1196
- package/dist/index-kw9t5ayn.js +0 -507
- package/dist/index-mzvgxp0n.js +0 -80
- package/dist/index-n0f51dfn.js +0 -3170
- package/dist/index-p13mwz16.js +0 -16
- package/dist/index-s8cnx02s.js +0 -90
- package/dist/index-sr93cwf9.js +0 -325
- package/dist/index-tmwcrptx.js +0 -85
- package/dist/index-v5573g1k.js +0 -142
- package/dist/index-vjpvjqpn.js +0 -86
- package/dist/index-vk3kq9sb.js +0 -3344
- package/dist/index-wc4x00bn.js +0 -103
- package/dist/index-wnfk50r0.js +0 -211
- package/dist/index-yewwh1w4.js +0 -647
- package/dist/index-yn8remb1.js +0 -290
- package/dist/index-ywd0y6m1.js +0 -394
- package/dist/index-zwkgfq1s.js +0 -345
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -632
- package/dist/internal/errors.d.ts +0 -92
- package/dist/internal/errors.d.ts.map +0 -1
- package/dist/internal/observability-sink.d.ts +0 -81
- package/dist/internal/observability-sink.d.ts.map +0 -1
- package/dist/live.d.ts +0 -19
- package/dist/live.d.ts.map +0 -1
- package/dist/live.js +0 -282
- package/dist/logger.d.ts.map +0 -1
- package/dist/node.d.ts +0 -18
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -303
- package/dist/oauth.d.ts +0 -57
- package/dist/oauth.d.ts.map +0 -1
- package/dist/oauth.js +0 -170
- package/dist/observability/index.d.ts +0 -19
- package/dist/observability/index.d.ts.map +0 -1
- package/dist/observability/index.js +0 -569
- package/dist/primitives.d.ts +0 -3
- package/dist/primitives.d.ts.map +0 -1
- package/dist/primitives.js +0 -754
- package/dist/react.d.ts +0 -5
- package/dist/react.d.ts.map +0 -1
- package/dist/react.js +0 -403
- package/dist/release.d.ts +0 -15
- package/dist/release.d.ts.map +0 -1
- package/dist/release.js +0 -196
- package/dist/remote.d.ts +0 -9
- package/dist/remote.d.ts.map +0 -1
- package/dist/remote.js +0 -88
- package/dist/retained.d.ts.map +0 -1
- package/dist/server/file-state-store.d.ts +0 -23
- package/dist/server/file-state-store.d.ts.map +0 -1
- package/dist/server/index.d.ts +0 -36
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -1745
- package/dist/server/request.d.ts.map +0 -1
- package/dist/telegram.d.ts +0 -3
- package/dist/telegram.d.ts.map +0 -1
- package/dist/telegram.js +0 -224
- package/dist/testing/agent-store-conformance.d.ts +0 -40
- package/dist/testing/agent-store-conformance.d.ts.map +0 -1
- package/dist/testing.d.ts +0 -39
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -2209
- package/dist/tool-invoker.d.ts +0 -9
- package/dist/tool-invoker.d.ts.map +0 -1
- package/dist/tool-invoker.js +0 -21
- package/dist/tools/async-operation-contract.d.ts.map +0 -1
- package/dist/tools/async-operation.d.ts +0 -332
- package/dist/tools/async-operation.d.ts.map +0 -1
- package/dist/tools/cli-args.d.ts +0 -143
- package/dist/tools/cli-args.d.ts.map +0 -1
- package/dist/tools/cli-checkpoint.d.ts +0 -24
- package/dist/tools/cli-checkpoint.d.ts.map +0 -1
- package/dist/tools/cli-command.d.ts +0 -70
- package/dist/tools/cli-command.d.ts.map +0 -1
- package/dist/tools/cli-format.d.ts +0 -49
- package/dist/tools/cli-format.d.ts.map +0 -1
- package/dist/tools/cli-installer.d.ts +0 -34
- package/dist/tools/cli-installer.d.ts.map +0 -1
- package/dist/tools/cli-invoke.d.ts +0 -143
- package/dist/tools/cli-invoke.d.ts.map +0 -1
- package/dist/tools/cli-manifest.d.ts +0 -80
- package/dist/tools/cli-manifest.d.ts.map +0 -1
- package/dist/tools/cli-policy.d.ts +0 -27
- package/dist/tools/cli-policy.d.ts.map +0 -1
- package/dist/tools/cli-profile.d.ts +0 -40
- package/dist/tools/cli-profile.d.ts.map +0 -1
- package/dist/tools/cli-signature.d.ts +0 -81
- package/dist/tools/cli-signature.d.ts.map +0 -1
- package/dist/tools/cli-stream.d.ts +0 -93
- package/dist/tools/cli-stream.d.ts.map +0 -1
- package/dist/tools/cli-update.d.ts +0 -126
- package/dist/tools/cli-update.d.ts.map +0 -1
- package/dist/tools/cli-view.d.ts +0 -12
- package/dist/tools/cli-view.d.ts.map +0 -1
- package/dist/tools/cli-wait.d.ts +0 -54
- package/dist/tools/cli-wait.d.ts.map +0 -1
- package/dist/tools/cli.d.ts +0 -94
- package/dist/tools/cli.d.ts.map +0 -1
- package/dist/tools/coerce.d.ts.map +0 -1
- package/dist/tools/connections/index.d.ts +0 -20
- package/dist/tools/connections/index.d.ts.map +0 -1
- package/dist/tools/connections/index.js +0 -1107
- package/dist/tools/define-download-tool.d.ts +0 -18
- package/dist/tools/define-download-tool.d.ts.map +0 -1
- package/dist/tools/define-upload-tool.d.ts +0 -16
- package/dist/tools/define-upload-tool.d.ts.map +0 -1
- package/dist/tools/define-view-file-tool.d.ts +0 -10
- package/dist/tools/define-view-file-tool.d.ts.map +0 -1
- package/dist/tools/define-wait-tool.d.ts +0 -22
- package/dist/tools/define-wait-tool.d.ts.map +0 -1
- package/dist/tools/download-core.d.ts +0 -20
- package/dist/tools/download-core.d.ts.map +0 -1
- package/dist/tools/flatten-join.d.ts.map +0 -1
- package/dist/tools/flatten.d.ts.map +0 -1
- package/dist/tools/json-schema-dialect.d.ts +0 -17
- package/dist/tools/json-schema-dialect.d.ts.map +0 -1
- package/dist/tools/json-schema.d.ts.map +0 -1
- package/dist/tools/managed-file-error.d.ts +0 -6
- package/dist/tools/managed-file-error.d.ts.map +0 -1
- package/dist/tools/mcp-app.d.ts +0 -62
- package/dist/tools/mcp-app.d.ts.map +0 -1
- package/dist/tools/mcp-catalog.d.ts +0 -68
- package/dist/tools/mcp-catalog.d.ts.map +0 -1
- package/dist/tools/mcp-handler.d.ts +0 -46
- package/dist/tools/mcp-handler.d.ts.map +0 -1
- package/dist/tools/mcp-prepare.d.ts +0 -75
- package/dist/tools/mcp-prepare.d.ts.map +0 -1
- package/dist/tools/mcp-progress.d.ts +0 -46
- package/dist/tools/mcp-progress.d.ts.map +0 -1
- package/dist/tools/mcp-round-policy.d.ts +0 -33
- package/dist/tools/mcp-round-policy.d.ts.map +0 -1
- package/dist/tools/mcp-round.d.ts +0 -61
- package/dist/tools/mcp-round.d.ts.map +0 -1
- package/dist/tools/mcp-stdio-signals.d.ts +0 -33
- package/dist/tools/mcp-stdio-signals.d.ts.map +0 -1
- package/dist/tools/mcp-stdio.d.ts +0 -20
- package/dist/tools/mcp-stdio.d.ts.map +0 -1
- package/dist/tools/mcp-trace.d.ts +0 -12
- package/dist/tools/mcp-trace.d.ts.map +0 -1
- package/dist/tools/mcp.d.ts +0 -152
- package/dist/tools/mcp.d.ts.map +0 -1
- package/dist/tools/mount-download.d.ts +0 -41
- package/dist/tools/mount-download.d.ts.map +0 -1
- package/dist/tools/mount-upload.d.ts +0 -21
- package/dist/tools/mount-upload.d.ts.map +0 -1
- package/dist/tools/mount-wait.d.ts.map +0 -1
- package/dist/tools/native-mcp.d.ts +0 -20
- package/dist/tools/native-mcp.d.ts.map +0 -1
- package/dist/tools/native-result.d.ts.map +0 -1
- package/dist/tools/oauth-metadata.d.ts +0 -28
- package/dist/tools/oauth-metadata.d.ts.map +0 -1
- package/dist/tools/oauth-provider.d.ts +0 -184
- package/dist/tools/oauth-provider.d.ts.map +0 -1
- package/dist/tools/portable-formats.d.ts.map +0 -1
- package/dist/tools/presentation.d.ts +0 -22
- package/dist/tools/presentation.d.ts.map +0 -1
- package/dist/tools/schema.d.ts.map +0 -1
- package/dist/tools/untyped-properties.d.ts.map +0 -1
- package/dist/tools/upload-core.d.ts +0 -4
- package/dist/tools/upload-core.d.ts.map +0 -1
- package/dist/tools/view-file-contract.d.ts.map +0 -1
- package/dist/tools/view-file.d.ts +0 -62
- package/dist/tools/view-file.d.ts.map +0 -1
- package/dist/tools/wait-core.d.ts.map +0 -1
- package/dist/tools-contract.d.ts +0 -29
- package/dist/tools-contract.d.ts.map +0 -1
- package/dist/tools-contract.js +0 -24
- package/dist/tools.d.ts +0 -50
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -2930
- package/dist/tracking-server.d.ts +0 -15
- package/dist/tracking-server.d.ts.map +0 -1
- package/dist/tracking.d.ts +0 -24
- package/dist/tracking.d.ts.map +0 -1
- package/dist/tracking.js +0 -1092
- package/dist/upgrade-cli.d.ts.map +0 -1
- package/dist/upgrade-cli.js +0 -177
- /package/dist/{retained.d.ts → browser/retained.d.ts} +0 -0
- /package/dist/{declaration.d.ts → declaration/declaration.d.ts} +0 -0
- /package/dist/{upgrade-cli.d.ts → entrypoints/bin/upgrade-cli.d.ts} +0 -0
- /package/dist/{tracking-server.js → entrypoints/tracking/server.js} +0 -0
- /package/dist/{google.d.ts → google/google.d.ts} +0 -0
- /package/dist/{index-pq95qkbf.js → index-5jm36zv1.js} +0 -0
- /package/dist/{application → internal}/channel.d.ts +0 -0
- /package/dist/{logger.d.ts → internal/logger.d.ts} +0 -0
- /package/dist/{server → internal}/request.d.ts +0 -0
- /package/dist/{tools → json-schema}/json-schema.d.ts +0 -0
- /package/dist/tools/{async-operation-contract.d.ts → operations/async-operation-contract.d.ts} +0 -0
- /package/dist/tools/{mount-wait.d.ts → operations/mount-wait.d.ts} +0 -0
- /package/dist/tools/{wait-core.d.ts → operations/wait-core.d.ts} +0 -0
- /package/dist/tools/{coerce.d.ts → schema/coerce.d.ts} +0 -0
- /package/dist/tools/{flatten-join.d.ts → schema/flatten-join.d.ts} +0 -0
- /package/dist/tools/{flatten.d.ts → schema/flatten.d.ts} +0 -0
- /package/dist/tools/{portable-formats.d.ts → schema/portable-formats.d.ts} +0 -0
- /package/dist/tools/{schema.d.ts → schema/schema.d.ts} +0 -0
- /package/dist/tools/{untyped-properties.d.ts → schema/untyped-properties.d.ts} +0 -0
- /package/dist/tools/{native-result.d.ts → transfer/native-result.d.ts} +0 -0
- /package/dist/tools/{view-file-contract.d.ts → transfer/view-file-contract.d.ts} +0 -0
|
@@ -0,0 +1,1159 @@
|
|
|
1
|
+
# Upgrading 0.68.0 → 0.94.0 — stitchkit docs slice
|
|
2
|
+
|
|
3
|
+
> Generated from the `docs/` tree by `bun run gen:llms`. The index of all slices is
|
|
4
|
+
> `llms.txt` in this package.
|
|
5
|
+
|
|
6
|
+
Contains: Guide: Upgrading, 0.68.0 → 0.94.0 (docs/guide/upgrading.md)
|
|
7
|
+
|
|
8
|
+
==============================================================================
|
|
9
|
+
# Guide: Upgrading, 0.68.0 → 0.94.0 (docs/guide/upgrading.md)
|
|
10
|
+
==============================================================================
|
|
11
|
+
|
|
12
|
+
## Released migration: 0.94.0
|
|
13
|
+
|
|
14
|
+
One breaking minor that consolidates: tool options move into one group, and
|
|
15
|
+
names that were exported from two entrypoints keep only their owner. Every step
|
|
16
|
+
is an edit a type checker or `defineContract` points at; the few behaviour
|
|
17
|
+
changes that need no edit are under Changed and Fixed in the changelog.
|
|
18
|
+
|
|
19
|
+
1. **Move endpoint tool options into `tool`.** **Who must act:** every project
|
|
20
|
+
with an endpoint that sets `toolName`, `ui`, `annotations` or `mcp`. Run the
|
|
21
|
+
codemod from a checkout of this repository, then typecheck:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
bun packages/core/scripts/codemod-tool-group.ts --check path/to/your/src # list
|
|
25
|
+
bun packages/core/scripts/codemod-tool-group.ts path/to/your/src # rewrite
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
// before
|
|
30
|
+
{ method: 'GET', path: '/', desc: 'List', toolName: 'user_list', mcp: { inputRequired } }
|
|
31
|
+
// after
|
|
32
|
+
{ method: 'GET', path: '/', desc: 'List', tool: { name: 'user_list', mcp: { inputRequired } } }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The codemod leaves two kinds of endpoint for a person and prints where: one
|
|
36
|
+
built with a spread (`{ ...base, toolName }`), and one exposed on HTTP only,
|
|
37
|
+
whose tool options never reached a tool — delete them there. Anything left
|
|
38
|
+
over fails at startup, by name — a key moved into the group under its old
|
|
39
|
+
name (`tool: { toolName }`) included:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
Contract "users": endpoint "list" sets `toolName` — tool options live in `tool` since 0.94.0: use tool.name
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`expose` does not move. `MethodDef` — what hooks and runtime tools see — keeps
|
|
46
|
+
`toolName`, `ui`, `annotations` and `mcp` at the top level, so hook code does
|
|
47
|
+
not change. A tool view is declared only with `withToolView`, which now puts
|
|
48
|
+
it in `tool.view`.
|
|
49
|
+
|
|
50
|
+
2. **Change imports of moved names.** **Who must act:** projects importing any
|
|
51
|
+
of these; the compiler lists every site.
|
|
52
|
+
|
|
53
|
+
| Name | From | To |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| `RuntimeToolTransport`, `ToolSurfaceTransport`, `ToolInvokerTransport` | `stitchkit/tools`, `stitchkit/tools/invoker`, `stitchkit/tools/connections` | `ToolTransport` from `stitchkit/contract` |
|
|
56
|
+
| `createCli`, `defineCliCommand`, `CliConfig`, `CliSurfaceSource`, `CliPresentationPolicyConfig`, `CliWaitConfig`, `ExitCodeMap`, `CliCommand*` | `stitchkit/tools` | `stitchkit/cli` |
|
|
57
|
+
| `parseSSE`, `ParseSSEOptions` | `stitchkit/server` | `stitchkit` |
|
|
58
|
+
| `runAgentStoreConformance`, `AgentStoreConformance*`, `createAgentRace*`, `AgentRace*` | `stitchkit/testing` | `stitchkit/agent-runtime/testing` |
|
|
59
|
+
| `createLocalStepDurability`, `LocalStepDurability`, `LocalStepDurabilityOptions`, `StepDurabilityLedger` | `stitchkit/agent-runtime` | `stitchkit/tools` |
|
|
60
|
+
|
|
61
|
+
3. **Regenerate a surface snapshot only if it reports drift.** **Who must act:**
|
|
62
|
+
a project whose committed snapshot has an object with integer-like keys
|
|
63
|
+
(`"9"`, `"10"`) — they are now sorted like every other key. Every other
|
|
64
|
+
snapshot, CLI manifest signature and agent-store archive is byte-identical.
|
|
65
|
+
|
|
66
|
+
## Released migration: 0.93.0
|
|
67
|
+
|
|
68
|
+
1. **Regenerate every committed surface snapshot, once.** `manifestVersion` is
|
|
69
|
+
`3` and each operation row gained `mcp` — the rounds it declares before it
|
|
70
|
+
runs. Most rows get `null`, so the first diff is large and mechanical.
|
|
71
|
+
**Who must act:** anyone with a committed snapshot. A snapshot on the older
|
|
72
|
+
version is refused by name rather than failing a schema literal:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
Surface snapshot is manifestVersion 2; this build writes 3. Regenerate it
|
|
76
|
+
and review the diff — the format changed, so the first regeneration is
|
|
77
|
+
expected to be large.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
// before — a declared round left no trace, so declaring or removing one
|
|
82
|
+
// passed review invisibly
|
|
83
|
+
manifest.operations[0]
|
|
84
|
+
// after
|
|
85
|
+
manifest.operations[0].mcp
|
|
86
|
+
// null | { inputRequired: [{ key, message, schema }] }
|
|
87
|
+
// | { inputRequired: 'resolved-per-call' }
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
A project that kept its own test for "declared `inputRequired` implies a
|
|
91
|
+
configured state key" can drop it: the snapshot holds that link now.
|
|
92
|
+
|
|
93
|
+
2. **Nothing else to do.** Native commands that declare `output` became
|
|
94
|
+
invokable in process; a name that answered `NOT_FOUND` from
|
|
95
|
+
`createCliInvoker` in 0.92.0 may now resolve. If an application relied on
|
|
96
|
+
native commands being unreachable there, stop passing them to the invoker.
|
|
97
|
+
|
|
98
|
+
## Released migration: 0.92.0
|
|
99
|
+
|
|
100
|
+
1. **`RequestEvent.method`, `path` and `statusCode` are optional.** Work that did
|
|
101
|
+
not arrive over a transport now records their **absence** instead of inventing
|
|
102
|
+
values — a background loop used to write `method: 'AGENT'`, which is not a
|
|
103
|
+
verb. **Who must act:** anyone whose `RequestEventSinkConfig.write` puts these
|
|
104
|
+
into NOT NULL columns, or whose filter reads `event.method`.
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
// before
|
|
108
|
+
write: (event) => db.audit.create({ data: { method: event.method, path: event.path, status: event.statusCode } })
|
|
109
|
+
// after — a job has none of the three; `kind` says which kind of row it is
|
|
110
|
+
write: (event) => db.audit.create({ data: {
|
|
111
|
+
kind: event.kind,
|
|
112
|
+
name: event.name ?? null,
|
|
113
|
+
method: event.method ?? null,
|
|
114
|
+
path: event.path ?? null,
|
|
115
|
+
status: event.statusCode ?? null,
|
|
116
|
+
} })
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
A filter written as `event.method !== 'GET'` keeps jobs (`undefined !== 'GET'`),
|
|
120
|
+
which is usually what you want. To exclude them deliberately:
|
|
121
|
+
`event.kind === 'request' && event.method !== 'GET'`.
|
|
122
|
+
|
|
123
|
+
2. **`applyCliUpdate` needs the manifest when given a trust root.** The signature
|
|
124
|
+
covers the manifest and every asset digest together, so an asset alone cannot
|
|
125
|
+
be verified. **Who must act:** only callers adopting signature verification;
|
|
126
|
+
the unsigned call is unchanged.
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
// before
|
|
130
|
+
await applyCliUpdate({ asset })
|
|
131
|
+
// after
|
|
132
|
+
await applyCliUpdate({ asset, manifest: check.manifest, trust })
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
3. **An MCP continuation minted before this release is refused once.** The signed
|
|
136
|
+
round state now carries a fingerprint of the question plan, checked on every
|
|
137
|
+
round, so a plan that moved between rounds is a refusal rather than a
|
|
138
|
+
different question asked under the previous one's key. A conversation already
|
|
139
|
+
in flight at deploy time has no fingerprint and gets
|
|
140
|
+
`INVALID_REQUEST_STATE`; the host re-asks and the second attempt succeeds.
|
|
141
|
+
**Who must act:** nobody — but expect a small number of these in the minutes
|
|
142
|
+
after a deploy, and do not read them as tampering.
|
|
143
|
+
|
|
144
|
+
## Released migration: 0.91.0
|
|
145
|
+
|
|
146
|
+
1. `STITCH_ERROR_STATUS` gained `NOT_IMPLEMENTED` (501). An **exhaustive** error
|
|
147
|
+
vocabulary must name it — without the row `defineErrors({ mapping: { exhaustive:
|
|
148
|
+
true } })` stops compiling and then throws at startup. Nothing else in this
|
|
149
|
+
release requires action.
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
// before
|
|
153
|
+
map: { …, WAIT_TIMEOUT: 'timeout' }
|
|
154
|
+
// after
|
|
155
|
+
map: { …, NOT_IMPLEMENTED: 'not_implemented', WAIT_TIMEOUT: 'timeout' }
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The code is thrown only by the new dev-only `onMissingHandler: 'stub'` policy;
|
|
159
|
+
a vocabulary that is not exhaustive is unaffected.
|
|
160
|
+
|
|
161
|
+
## Released migration: 0.90.0
|
|
162
|
+
|
|
163
|
+
1. `stitchkit.watch.value` is a discriminated union on `kind` — `full`, `delta`,
|
|
164
|
+
`unchanged` — and every frame carries `fingerprint`. **Both ends must come from
|
|
165
|
+
the same major.** A client older than this release reads a `delta` frame as a
|
|
166
|
+
value of `undefined`, silently; upgrade the hub and the pages that talk to it
|
|
167
|
+
together, or set `deltaMemoryBytes: 0` on the hub until they are.
|
|
168
|
+
|
|
169
|
+
Applications using `createWatchClient` need no code change: it rebuilds the
|
|
170
|
+
value and hands the listener the whole answer as before. Code that reads
|
|
171
|
+
`WatchValueFrame.value` directly — a hand-written subscriber, a test double —
|
|
172
|
+
narrows on `kind` first.
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
// before: frame.value
|
|
176
|
+
// after:
|
|
177
|
+
if (frame.kind === 'full') hold(frame.value);
|
|
178
|
+
else if (frame.kind === 'delta') hold(applyWatchDelta(held, frame.delta));
|
|
179
|
+
// 'unchanged' leaves what you hold standing
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
2. `AttachedWatcher.open` takes an optional third argument, `have`. A custom
|
|
183
|
+
server binding that forwards `stitchkit.watch.open` should pass the payload's
|
|
184
|
+
`have` through; omitting it costs a whole value on every reconnection and is
|
|
185
|
+
otherwise harmless.
|
|
186
|
+
|
|
187
|
+
## Released migration: 0.89.0
|
|
188
|
+
|
|
189
|
+
1. Custom `AgentRuntimeStore` adapters implement `seedConversationInput`; custom
|
|
190
|
+
`AgentRuntimeStoreDriver` adapters implement `seeds.load` and `seeds.create` together
|
|
191
|
+
with atomic, ordered history insertion. Use the maintained Prisma example and run
|
|
192
|
+
`runAgentStoreConformance` against the adapter. Built-in memory and SQLite
|
|
193
|
+
stores already implement the contract; SQLite migrates to schema version 3.
|
|
194
|
+
2. OpenRouter usage normalization consumes each completed SDK step's `usage`, including
|
|
195
|
+
`raw`, rather than aggregate usage. Missing counters stay `unavailable`.
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
// before: normalizeOpenRouterUsage(await result.usage, metadata)
|
|
199
|
+
// after:
|
|
200
|
+
for (const step of await result.steps) {
|
|
201
|
+
const usage = normalizeOpenRouterUsage(step.usage, step.providerMetadata);
|
|
202
|
+
// Persist the step's measured usage with its provenance.
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
3. Durable step bodies return lossless JSON. Convert dates explicitly, reject invalid
|
|
207
|
+
numbers upstream, and return `null` after an effect-only operation.
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
await context.step('send', async () => {
|
|
211
|
+
await sendIdempotently();
|
|
212
|
+
return null;
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
First execution, replay and concurrent callers receive detached values. Persistence
|
|
217
|
+
does not make external effects transactional; the host retains idempotency and recovery.
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
How to move a consuming project from one stitchkit version to another — including
|
|
221
|
+
across many versions at once (a project frozen on an old version, then jumped
|
|
222
|
+
forward). The process is mechanical: stitchkit marks every breaking change in one
|
|
223
|
+
place and one format, so you can recover the full migration from the version diff.
|
|
224
|
+
|
|
225
|
+
## Released migration: 0.88.0
|
|
226
|
+
|
|
227
|
+
Two mechanical edits, and only if your project builds these values rather than only reading them.
|
|
228
|
+
|
|
229
|
+
A completed step event now carries the provider's response identity, and the field is required:
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
// before
|
|
233
|
+
{ type: 'step-finished', step: 0, usage }
|
|
234
|
+
|
|
235
|
+
// after
|
|
236
|
+
{ type: 'step-finished', step: 0, usage, response: { id: generationId } }
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Every event the runtime emits already has it, so a sink that only reads them needs no change. A
|
|
240
|
+
fixture, a test double or a pipeline that re-validates events persisted by an earlier version does:
|
|
241
|
+
give the older records a response identity, or keep parsing them with the schema they were written
|
|
242
|
+
under.
|
|
243
|
+
|
|
244
|
+
If you implement the whole `AgentRuntime` interface — usually a mock — add the new method:
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
// before
|
|
248
|
+
const fake: AgentRuntime = { submit, interrupt, recover, close }
|
|
249
|
+
|
|
250
|
+
// after
|
|
251
|
+
const fake: AgentRuntime = { submit, interrupt, abandon, recover, close }
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
No data migration is involved, and nothing in the store changes shape.
|
|
255
|
+
|
|
256
|
+
## Released migration: 0.87.0
|
|
257
|
+
|
|
258
|
+
Only if your project implements `AgentConversationReader` itself. A message page
|
|
259
|
+
now names which of its messages compaction removed:
|
|
260
|
+
|
|
261
|
+
```ts
|
|
262
|
+
// before
|
|
263
|
+
return { items, ...(nextCursor && { nextCursor }) }
|
|
264
|
+
|
|
265
|
+
// after
|
|
266
|
+
return { items, compacted: [], ...(nextCursor && { nextCursor }) }
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
An empty array is the honest answer for a reader that pages only the active
|
|
270
|
+
history; it is what the SQLite reader returns unless the caller asks for
|
|
271
|
+
`includeCompacted`. Calling the reader needs no change, and no data migration is
|
|
272
|
+
involved.
|
|
273
|
+
|
|
274
|
+
## Released migration: 0.86.0
|
|
275
|
+
|
|
276
|
+
Only if you branch on `AgentTerminalReason` or show it to a person. Three
|
|
277
|
+
failures that used to arrive as `provider_failure` now arrive as themselves:
|
|
278
|
+
|
|
279
|
+
```ts
|
|
280
|
+
// before
|
|
281
|
+
if (run.terminalReason === 'provider_failure') showOutage()
|
|
282
|
+
|
|
283
|
+
// after
|
|
284
|
+
switch (run.terminalReason) {
|
|
285
|
+
case 'provider_failure':
|
|
286
|
+
showOutage()
|
|
287
|
+
break
|
|
288
|
+
case 'storage_conflict':
|
|
289
|
+
// Another writer took this run's revision, or the store refused the write.
|
|
290
|
+
retryOrReport()
|
|
291
|
+
break
|
|
292
|
+
case 'output_rejected':
|
|
293
|
+
// Your own `protocol.acceptTerminal` refused the finished message.
|
|
294
|
+
reportRejectedAnswer()
|
|
295
|
+
break
|
|
296
|
+
case 'runtime_failure':
|
|
297
|
+
// The runtime, or a check the SDK ran on what it was handed, failed
|
|
298
|
+
// before the provider was reached.
|
|
299
|
+
reportInternal()
|
|
300
|
+
break
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
A run that never reached the provider can no longer report `provider_failure`,
|
|
305
|
+
so an alert keyed on that value stops firing for causes that were never the
|
|
306
|
+
provider's.
|
|
307
|
+
|
|
308
|
+
If you implement `AgentRuntimeStore` directly, add the event-ledger surface:
|
|
309
|
+
|
|
310
|
+
```ts
|
|
311
|
+
const store: AgentRuntimeStore = {
|
|
312
|
+
// existing normalized operations
|
|
313
|
+
appendEvent,
|
|
314
|
+
readEvents,
|
|
315
|
+
exportConversation,
|
|
316
|
+
importConversation,
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
If you implement an `AgentRuntimeStoreDriver` (Prisma, Postgres, any external
|
|
321
|
+
database), the ledger is yours to keep: `events` is a required member, and it
|
|
322
|
+
needs a table.
|
|
323
|
+
|
|
324
|
+
```ts
|
|
325
|
+
// before
|
|
326
|
+
const driver: AgentRuntimeStoreDriver<Tx> = { transaction, head, runs, admissions, history, scanRecoverable }
|
|
327
|
+
|
|
328
|
+
// after
|
|
329
|
+
const driver: AgentRuntimeStoreDriver<Tx> = {
|
|
330
|
+
transaction, head, runs, admissions, history, scanRecoverable,
|
|
331
|
+
events: {
|
|
332
|
+
// One row per event; `seq` is per conversation, starts at 1, and is
|
|
333
|
+
// assigned inside the caller's transaction so concurrent appends cannot
|
|
334
|
+
// share or skip a number.
|
|
335
|
+
append: async (tx, draft) => {
|
|
336
|
+
// Two transactions that both read max(seq) and both insert max + 1
|
|
337
|
+
// collide on the primary key; under SERIALIZABLE the snapshot predates
|
|
338
|
+
// any lock you take here. Treat a unique violation on this table as a
|
|
339
|
+
// serialization conflict and re-run the whole transaction — see
|
|
340
|
+
// `runTransaction` in examples/agent-store-prisma/adapter.ts.
|
|
341
|
+
const seq = (await tx.event.aggregate({ _max: { seq: true }, where: { conversationId: draft.conversationId } }))._max.seq ?? 0
|
|
342
|
+
await tx.event.create({ data: { ...draft, seq: seq + 1, payload: JSON.stringify(draft.payload) } })
|
|
343
|
+
return { ...draft, seq: seq + 1 }
|
|
344
|
+
},
|
|
345
|
+
// Ordered by `seq`, bounded by `fromSeq`/`toSeq`/`limit`; `nextSeq` when
|
|
346
|
+
// more remain.
|
|
347
|
+
list: async (tx, input) => { /* see examples/agent-store-prisma/adapter.ts */ },
|
|
348
|
+
},
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
The table carries `eventId` (unique), `conversationId`, `seq`, `schemaVersion`,
|
|
353
|
+
`kind`, `occurredAt`, `ignorable` and `payload`. `runAgentStoreConformance`
|
|
354
|
+
from `stitchkit/testing` now exercises it — contiguous `seq` under twenty
|
|
355
|
+
concurrent appends, bounded reads, the `ignorable` flag, a byte-stable export
|
|
356
|
+
— so run it against your driver before deploying. Expect one more insert per
|
|
357
|
+
run operation (`runtime/transition`) and one per model step
|
|
358
|
+
(`provider/request`) on the hot path; there is no opt-out.
|
|
359
|
+
|
|
360
|
+
If you operate a built-in SQLite store file:
|
|
361
|
+
|
|
362
|
+
1. Back the file up. The first open by 0.86.0 migrates it to schema 2 in one
|
|
363
|
+
transaction and there is no way back: a 0.85.x package refuses a migrated
|
|
364
|
+
file with `Unsupported Stitchkit agent-runtime SQLite schema version 2`.
|
|
365
|
+
2. Check the build for FTS5 before deploying:
|
|
366
|
+
|
|
367
|
+
```sql
|
|
368
|
+
SELECT sqlite_compileoption_used('ENABLE_FTS5');
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
A build without it is refused at open with `requires FTS5 support`. On the
|
|
372
|
+
machine this was verified, Bun 1.3 `bun:sqlite` and Node 24.18 `node:sqlite`
|
|
373
|
+
both carry it; verify your own build rather than assuming — the table of
|
|
374
|
+
supported runtimes says Node ≥ 22.5, and FTS5 there is not verified here.
|
|
375
|
+
3. Know what the migration wrote. Each existing conversation becomes one
|
|
376
|
+
`runtime/baseline` event at `seq 1`, dated when the migration ran, with
|
|
377
|
+
`asOf` inside the payload naming the last message it describes. Event
|
|
378
|
+
search and projections address that conversation's pre-migration history as
|
|
379
|
+
one snapshot at `seq 1`; event-level precision begins with the first event
|
|
380
|
+
after the migration.
|
|
381
|
+
|
|
382
|
+
If you subscribe to `AgentRuntimeEvent` and switch over `event.type`
|
|
383
|
+
exhaustively, add the transient `attempt-reset` case — drop the run's
|
|
384
|
+
transient text — or the reducer stops compiling; a reducer that ignores it
|
|
385
|
+
keeps a failed attempt's partial text on screen.
|
|
386
|
+
|
|
387
|
+
New in this release, not a migration: child runs cascade only when the manager
|
|
388
|
+
is given to the runtime —
|
|
389
|
+
`createAgentRuntime({ ...config, children: createSqliteAgentChildManager({ sqlite, spawn }) })`
|
|
390
|
+
— and the SQLite companions take the store handle (`{ sqlite }`), whose
|
|
391
|
+
`database` and `transaction` they share.
|
|
392
|
+
|
|
393
|
+
## Released migration: 0.85.0
|
|
394
|
+
|
|
395
|
+
Only if you implement `AgentRuntimeStore` directly. Add the new durable
|
|
396
|
+
operation mutation beside the existing run mutations:
|
|
397
|
+
|
|
398
|
+
```ts
|
|
399
|
+
// before
|
|
400
|
+
const store: AgentRuntimeStore = {
|
|
401
|
+
checkpointRunAssistant,
|
|
402
|
+
commitRunTerminal,
|
|
403
|
+
// ...
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// after
|
|
407
|
+
const store: AgentRuntimeStore = {
|
|
408
|
+
checkpointRunAssistant,
|
|
409
|
+
recordRunOperation,
|
|
410
|
+
commitRunTerminal,
|
|
411
|
+
// ...
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
It must atomically replace `AgentRun.lastOperation`, increment the run revision
|
|
416
|
+
and conversation snapshot version, and enforce the supplied owner, fencing
|
|
417
|
+
token and expected revision. Adapters built with `createAgentRuntimeStore`
|
|
418
|
+
already receive the reference implementation; no driver method is added.
|
|
419
|
+
|
|
420
|
+
## Released migration: 0.84.0
|
|
421
|
+
|
|
422
|
+
Only if you call `createAgentCodingTools`.
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
rg -n "createAgentCodingTools"
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
**1. Backslashes are refused.** If anything in your system hands the tools a Windows-style path,
|
|
429
|
+
it now gets `FORBIDDEN`. Convert to `/` at the boundary:
|
|
430
|
+
|
|
431
|
+
```ts
|
|
432
|
+
// before: read_file({ path: 'src\\index.ts' }) // reached openat as two segments
|
|
433
|
+
// after: read_file({ path: 'src/index.ts' })
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
This is the half that matters most: until now a backslash bypassed your **required**
|
|
437
|
+
`authorize({ operation, path })` callback, not just `authorizePath`. A rule denying
|
|
438
|
+
`credentials/token.txt` refused that spelling and served — and overwrote — the same file spelled
|
|
439
|
+
`credentials\token.txt`. If your policy denies specific files, re-read your audit logs for
|
|
440
|
+
backslash spellings.
|
|
441
|
+
|
|
442
|
+
**2. Denying a directory now denies everything under it — and a policy must admit every directory
|
|
443
|
+
on the way to a file**, the way POSIX needs `+x` on each directory in a path.
|
|
444
|
+
|
|
445
|
+
If your policy is a DENY-list, it now does what it read as:
|
|
446
|
+
|
|
447
|
+
```ts
|
|
448
|
+
authorizePath: ({ path }) => path !== 'credentials'
|
|
449
|
+
// before: hid `credentials` from glob, served `credentials/token.txt` to read_file
|
|
450
|
+
// after: refuses `credentials/token.txt`, `credentials/nested/deep.txt` and writes under it
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
If you relied on the old behaviour — a directory hidden from discovery but readable directly — you
|
|
454
|
+
were relying on a defect, and the two halves of one callback disagreeing. Name the paths you
|
|
455
|
+
actually want reachable instead.
|
|
456
|
+
|
|
457
|
+
If your policy is an ALLOW-list, widen it to the directories it leads through, or nothing under
|
|
458
|
+
them is reachable:
|
|
459
|
+
|
|
460
|
+
```ts
|
|
461
|
+
// before: allowed src/index.ts, because only the leaf was ever asked
|
|
462
|
+
authorizePath: ({ path }) => path.startsWith('src/')
|
|
463
|
+
// after: `src` itself is asked first and refused, so the file is refused too
|
|
464
|
+
authorizePath: ({ path }) => path === 'src' || path.startsWith('src/')
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
The workspace root is not asked about — it is the boundary the tools already own.
|
|
468
|
+
|
|
469
|
+
**3. The policy is called more often.** A path of depth N costs N+1 calls (`.`, then each ancestor,
|
|
470
|
+
then the leaf), outermost first, stopping at the first refusal. A policy that logs or meters will
|
|
471
|
+
see a different sequence, and will no longer see the leaf once an ancestor has refused.
|
|
472
|
+
|
|
473
|
+
## Released migration: 0.83.0
|
|
474
|
+
|
|
475
|
+
Two things, both mechanical, and only if you touch an observability sink.
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
rg -n "createObservability|createApplicationEventSink|createApplicationSnapshotSink|createAgentRuntimeEventSink|createAgentObservability"
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
**1. `flush()` returns `Promise<boolean>`.** `await sink.flush()` needs no
|
|
482
|
+
change. Only a declared type does:
|
|
483
|
+
|
|
484
|
+
```ts
|
|
485
|
+
// before
|
|
486
|
+
const flushAudit: () => Promise<void> = observability.flush
|
|
487
|
+
// after
|
|
488
|
+
const flushAudit: () => Promise<boolean> = observability.flush
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
**2. `ObservabilityDrainReport` carries `drained`.** The framework builds it, so
|
|
492
|
+
reading code is unchanged. A hand-built report — a test double, or one persisted
|
|
493
|
+
and re-parsed through `ObservabilityDrainReportSchema` — needs the field:
|
|
494
|
+
|
|
495
|
+
```ts
|
|
496
|
+
// before
|
|
497
|
+
{ request, tools, total, durationMs }
|
|
498
|
+
// after
|
|
499
|
+
{ request, tools, total, durationMs, drained: true }
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
Then take the thing this release exists for. Every drain now accepts
|
|
503
|
+
`{ timeoutMs?, signal? }`, so a shutdown can give the audit drain the same
|
|
504
|
+
deadline it gives every other step:
|
|
505
|
+
|
|
506
|
+
```ts
|
|
507
|
+
const report = await observability.close({ timeoutMs: 5_000 })
|
|
508
|
+
if (!report.drained) {
|
|
509
|
+
logger.warn('audit drain incomplete', {
|
|
510
|
+
unwritten: report.total.received - report.total.filtered - report.total.completed,
|
|
511
|
+
})
|
|
512
|
+
}
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
The bound ends the **waiting**, not the writes: a sink's `write` is handed no
|
|
516
|
+
cancellation, so an outstanding one keeps running against whatever you close
|
|
517
|
+
next. Racing `close()` against your own timer looks equivalent and is not — it
|
|
518
|
+
discards the report along with the wait.
|
|
519
|
+
|
|
520
|
+
## Released migration: 0.82.0
|
|
521
|
+
|
|
522
|
+
One thing, and only if you mount MCP or agent tools from a `createTrackingContract` contract.
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
rg -n "createTrackingContract"
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
The event ingest (`track`, `POST /events`) is now `expose: ['HTTP']`, which is
|
|
529
|
+
what its sibling `bootstrap` always declared. Before, it declared nothing — and
|
|
530
|
+
an endpoint with no `expose` is a tool on MCP and AGENT by default, so the
|
|
531
|
+
mounted surface carried a `track_<prefix>` tool. Since this contract is built
|
|
532
|
+
inside the framework, an application that had made every tool opt-in for the
|
|
533
|
+
endpoints *it* authors could not have opted this one out.
|
|
534
|
+
|
|
535
|
+
**If you pin a tool-surface digest or count**, it moves by one; re-record it.
|
|
536
|
+
**If you assert on tool names**, `track_<prefix>` is gone. **If nothing in your
|
|
537
|
+
project mounts tools from this contract**, there is nothing to do — the HTTP
|
|
538
|
+
routes, the client and the schemas are unchanged.
|
|
539
|
+
|
|
540
|
+
Un-declaring the tool was never the intent, so there is no option to keep it. If
|
|
541
|
+
an agent in your system genuinely needs to record something, give it your own
|
|
542
|
+
endpoint with your own schema: the browser ingest trusts a client-minted event
|
|
543
|
+
id and a visit lease, and an agent holds neither.
|
|
544
|
+
|
|
545
|
+
## Released migration: 0.81.0
|
|
546
|
+
|
|
547
|
+
**Path literals own string params.**
|
|
548
|
+
|
|
549
|
+
An endpoint whose path contains `:id` or a terminal `*rest` no longer needs a
|
|
550
|
+
duplicate `params: z.object({ …string() })` declaration. Remove schemas that do
|
|
551
|
+
nothing beyond repeating path names:
|
|
552
|
+
|
|
553
|
+
```ts
|
|
554
|
+
// before
|
|
555
|
+
{ path: '/projects/:projectId/*filePath',
|
|
556
|
+
params: z.object({ projectId: z.string(), filePath: z.string() }) }
|
|
557
|
+
|
|
558
|
+
// after
|
|
559
|
+
{ path: '/projects/:projectId/*filePath' }
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
Keep an explicit schema when it validates or coerces. It must cover every name
|
|
563
|
+
in the path — an explicit schema that misses one now fails at `defineContract`
|
|
564
|
+
with the path and the missing field named. Client calls and handler contexts
|
|
565
|
+
infer the string fields from the literal, so a call that omitted one becomes a
|
|
566
|
+
compile error instead of building a URL with an unresolved segment. Measured
|
|
567
|
+
across three consuming applications before release (373 endpoints with path
|
|
568
|
+
segments), no explicit schema missed a field: the migration is deleting
|
|
569
|
+
schemas that only repeated the path, or nothing.
|
|
570
|
+
|
|
571
|
+
## Released migration: 0.80.0
|
|
572
|
+
|
|
573
|
+
One thing, and only if you parse an async-operation snapshot.
|
|
574
|
+
|
|
575
|
+
```bash
|
|
576
|
+
rg -n "createAsyncOperationSnapshotSchema"
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
`progress` on a parsed snapshot used to be `unknown`. The factory built its
|
|
580
|
+
object shapes with a conditional spread, and the narrowing inside it widened
|
|
581
|
+
your schema back to a bare `ZodType`, so the emitted declaration threw the type
|
|
582
|
+
argument away. It is now the output of the schema you configured.
|
|
583
|
+
|
|
584
|
+
```ts
|
|
585
|
+
const schema = createAsyncOperationSnapshotSchema({
|
|
586
|
+
progress: z.object({ done: z.number(), total: z.number() }),
|
|
587
|
+
failure: z.object({ code: z.string() }),
|
|
588
|
+
})
|
|
589
|
+
const snap = schema.parse(body)
|
|
590
|
+
if (snap.phase === 'running') {
|
|
591
|
+
// before: `snap.progress` was `unknown` — this needed a cast or a narrow
|
|
592
|
+
// after: it is `{ done: number; total: number } | undefined`
|
|
593
|
+
console.log(snap.progress?.done)
|
|
594
|
+
}
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
**If you cast it**, delete the cast — it was working around the erased type.
|
|
598
|
+
**If you assigned something else to it**, the compiler now refuses, and it was
|
|
599
|
+
already a value the schema rejected at run time.
|
|
600
|
+
|
|
601
|
+
**If you pass explicit type arguments**, the no-progress form takes one now, not
|
|
602
|
+
two: the factory is two overloads. Pass none.
|
|
603
|
+
|
|
604
|
+
```ts
|
|
605
|
+
// before: createAsyncOperationSnapshotSchema<undefined, typeof Failure>({ failure: Failure })
|
|
606
|
+
// after: createAsyncOperationSnapshotSchema({ failure: Failure })
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
Nothing about parsing moves. A snapshot configured without `progress` still
|
|
610
|
+
strips an unexpected `progress` rather than refusing it — that behaviour is why
|
|
611
|
+
this is overloads and not one normalised key.
|
|
612
|
+
|
|
613
|
+
**If you compile with `skipLibCheck: false`**, this is also the release that
|
|
614
|
+
makes `stitchkit/tools/contract` compile at all: it carried five `TS2344`
|
|
615
|
+
errors, one per phase, from the same conditional spread.
|
|
616
|
+
|
|
617
|
+
## Released migration: 0.79.0
|
|
618
|
+
|
|
619
|
+
One thing, and only if you assert on the whole snapshot.
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
rg -n "getSnapshot\(\)|projectApplicationStatus|status\(\)" --glob '*.test.ts' --glob '*.spec.ts'
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
`ApplicationSnapshot` and `ApplicationStatusProjection` each gained a
|
|
626
|
+
`restarting` field — ids in the snapshot, a count in the projection. A reader
|
|
627
|
+
that names the fields it wants is unaffected. A test that compares the whole
|
|
628
|
+
object with `toEqual` fails until it adds the field:
|
|
629
|
+
|
|
630
|
+
```ts
|
|
631
|
+
// before
|
|
632
|
+
expect(body).toEqual({ id, lifecycle: 'ready', /* … */ resources: { total: 1, ready: 1, degraded: 0, failed: 0 } })
|
|
633
|
+
// after
|
|
634
|
+
expect(body).toEqual({ id, lifecycle: 'ready', /* … */ resources: { total: 1, ready: 1, degraded: 0, failed: 0 }, restarting: 0 })
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
It is zero except while a restart is running, and then it names the subtree being
|
|
638
|
+
replaced. That is the point: a snapshot taken mid-restart used to be
|
|
639
|
+
indistinguishable from a resource that had failed on its own, so a dashboard read
|
|
640
|
+
a planned replacement as an outage.
|
|
641
|
+
|
|
642
|
+
**If you watch a hub across a restart**, nothing to change, but the behaviour is
|
|
643
|
+
different and better: closing a hub now tells its subscribers `unavailable` /
|
|
644
|
+
`source-unavailable` instead of dropping them, so a page stops showing a value
|
|
645
|
+
that will never update again.
|
|
646
|
+
|
|
647
|
+
**If you need a tool contract in a browser**, `stitchkit/tools/contract` now
|
|
648
|
+
carries the async-operation helpers, its schemas and the view-file input/output
|
|
649
|
+
without the runtime. `stitchkit/tools` still exports all of them.
|
|
650
|
+
|
|
651
|
+
## Released migration: 0.78.0
|
|
652
|
+
|
|
653
|
+
Two mechanical edits. Find them both:
|
|
654
|
+
|
|
655
|
+
```bash
|
|
656
|
+
rg -n "createDecisionPipeline|createDiagnosticJournal" --glob '*.ts' --glob '*.tsx'
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
**1. `createDecisionPipeline` takes a deadline.**
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
// before
|
|
663
|
+
createDecisionPipeline([policyA, policyB])
|
|
664
|
+
// after
|
|
665
|
+
createDecisionPipeline([policyA, policyB], { policyTimeoutMs: 2_000 })
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
Pick a number your slowest policy comfortably beats. There is no default on
|
|
669
|
+
purpose: a policy that never settles hangs every caller of the operation it
|
|
670
|
+
guards, and the framework has no basis for choosing that number for you.
|
|
671
|
+
|
|
672
|
+
Past the deadline — and on a throw, and on a non-decision — the pipeline raises
|
|
673
|
+
`DecisionPolicyError` naming the policy, with the trace so far. If you already
|
|
674
|
+
catch that for a bad return value, you now catch two more cases with it.
|
|
675
|
+
|
|
676
|
+
**2. `createDiagnosticJournal` moved.**
|
|
677
|
+
|
|
678
|
+
```ts
|
|
679
|
+
// before
|
|
680
|
+
import { createDiagnosticJournal } from 'stitchkit/application'
|
|
681
|
+
// after
|
|
682
|
+
import { createDiagnosticJournal } from 'stitchkit/application/diagnostic-journal'
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
Only the factory moved. `DiagnosticJournalConfig`, every
|
|
686
|
+
`DiagnosticJournal*Schema` and `readDiagnosticJournalLockDiagnosis` stay where
|
|
687
|
+
they were.
|
|
688
|
+
|
|
689
|
+
**If you restart resources**, nothing to change — but three things that did not
|
|
690
|
+
work now do: a managed schedule can be restarted, a restarted keyspace accepts
|
|
691
|
+
writes again, and a restarted managed server is actually shut down at exit. If
|
|
692
|
+
you pass `managedServerResource` a server *instance*, a restart is now refused
|
|
693
|
+
by name; pass a factory (`server: (context) => …`) to restart it.
|
|
694
|
+
|
|
695
|
+
## Released migration: 0.77.0
|
|
696
|
+
|
|
697
|
+
Two type renames, and only if you named them. Nothing runtime moved.
|
|
698
|
+
|
|
699
|
+
```bash
|
|
700
|
+
rg -n "EventDecision|EventUndecided" --glob '*.ts' --glob '*.tsx'
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
```ts
|
|
704
|
+
// before
|
|
705
|
+
import type { EventDecision, EventUndecided } from 'stitchkit/live'
|
|
706
|
+
// after
|
|
707
|
+
import type { PolicyDecision, UndecidedOutcome } from 'stitchkit/live'
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
The shapes are identical — `{ outcome: 'allow' } | { outcome: 'deny', reason } | { outcome: 'defer' }`
|
|
711
|
+
and `'allow' | 'deny'`. If you only ever *return* decisions from listeners and never named the
|
|
712
|
+
type, the search above finds nothing and there is nothing to do.
|
|
713
|
+
|
|
714
|
+
They were renamed because `createDecisionPipeline` (new in this release) votes with exactly the
|
|
715
|
+
same three outcomes, and two identical types under two names is the thing that makes a search for
|
|
716
|
+
either one return half the truth.
|
|
717
|
+
|
|
718
|
+
## Released migration: 0.76.0
|
|
719
|
+
|
|
720
|
+
One change, and only if you hand `createWatchClient` a transport you wrote yourself.
|
|
721
|
+
|
|
722
|
+
```bash
|
|
723
|
+
rg -n "createWatchClient" --glob '*.ts'
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
If the `transport:` you pass is a bound realtime client — `bindRealtimeClient(...)` or
|
|
727
|
+
`createRealtimeClient(...)` — there is nothing to do: it already carries
|
|
728
|
+
`onConnectionChange`. If it is an object you assembled, add the fourth member:
|
|
729
|
+
|
|
730
|
+
```ts
|
|
731
|
+
onConnectionChange(listener: (connected: boolean, reason?: string) => void): () => void
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
It is required because the client recovers through it: on a drop it publishes
|
|
735
|
+
`unavailable` to subscribers and forgets what was opened, and on a fresh
|
|
736
|
+
connection it re-opens every key that still has a listener. Without it a watch
|
|
737
|
+
stays "open" on the client after a server restart while the hub remembers
|
|
738
|
+
nothing, and the face stops updating without saying so.
|
|
739
|
+
|
|
740
|
+
## Released migration: 0.75.0
|
|
741
|
+
|
|
742
|
+
Two mechanical renames and one option that has to move. Nothing about a passing
|
|
743
|
+
request changes.
|
|
744
|
+
|
|
745
|
+
### 1. A route group's `onRequest`
|
|
746
|
+
|
|
747
|
+
```bash
|
|
748
|
+
rg -n "hooks:\s*\{[^}]*onRequest" --glob '*.ts'
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
Any match **inside a `groups: [...]` entry** must move. The hook was accepted and
|
|
752
|
+
never dispatched, so the behaviour you have today is "no hook"; the fix is to
|
|
753
|
+
decide which one you meant:
|
|
754
|
+
|
|
755
|
+
```ts
|
|
756
|
+
// refuse before dispatch, for the whole server
|
|
757
|
+
createServer({ groups, hooks: { onRequest: gate } });
|
|
758
|
+
|
|
759
|
+
// gate this group once the endpoint is known
|
|
760
|
+
groups: [{ pathPrefix: '/admin', services, hooks: { authorize: gate } }]
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
A group that still declares `onRequest` fails at startup with that message.
|
|
764
|
+
|
|
765
|
+
### 2. The SQLite boundary type
|
|
766
|
+
|
|
767
|
+
```bash
|
|
768
|
+
rg -l "AgentRuntimeSqlite(Database|Statement|Value)" | xargs sed -i \
|
|
769
|
+
-e 's/AgentRuntimeSqliteDatabase/SqliteDatabase/g' \
|
|
770
|
+
-e 's/AgentRuntimeSqliteStatement/SqliteStatement/g' \
|
|
771
|
+
-e 's/AgentRuntimeSqliteValue/SqliteValue/g'
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
Type-only: the same three methods, the same structural compatibility with
|
|
775
|
+
`bun:sqlite` and a `node:sqlite` wrapper, imported from the same entrypoints.
|
|
776
|
+
`initializeAgentRuntimeSqlite` keeps its name — it really is the agent runtime's
|
|
777
|
+
schema.
|
|
778
|
+
|
|
779
|
+
### 3. Nothing else
|
|
780
|
+
|
|
781
|
+
`stitchkit/live`, the watch hub, the keyspace and the trust fence are all
|
|
782
|
+
additive. Adopt them when you want them; the guide is
|
|
783
|
+
[Live data](./live.md).
|
|
784
|
+
|
|
785
|
+
## Released migration: 0.74.0
|
|
786
|
+
|
|
787
|
+
One change, and it only reaches you if you catch a refusal the **client** raised — one it made while
|
|
788
|
+
planning the request, before anything was sent. A server refusal is unchanged.
|
|
789
|
+
|
|
790
|
+
### If you match on the text of a client-side refusal
|
|
791
|
+
|
|
792
|
+
A missing path param, a missing scoped prefix key, a non-flat field in a `GET` input, a missing or
|
|
793
|
+
invalid multipart file: each used to arrive as a plain `Error` carrying only a sentence. They now
|
|
794
|
+
arrive as an `ApiError` in the same shape a server validation failure uses.
|
|
795
|
+
|
|
796
|
+
```ts
|
|
797
|
+
// before
|
|
798
|
+
catch (e) {
|
|
799
|
+
if (/Missing path param/.test(e.message)) …
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
// after
|
|
803
|
+
catch (e) {
|
|
804
|
+
if (e.code === 'VALIDATION_ERROR' && e.status === 0) … // refused here, nothing was sent
|
|
805
|
+
}
|
|
806
|
+
// e.details.issues[0].path === 'id'
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
`status` is what separates the two worlds, and it is not new — `0` has always meant *this never
|
|
810
|
+
reached the server*, as `REQUEST_ABORTED` and `REQUEST_TIMEOUT` already used it:
|
|
811
|
+
|
|
812
|
+
| | `code` | `status` |
|
|
813
|
+
|---|---|---|
|
|
814
|
+
| the client refused your arguments | `VALIDATION_ERROR` | `0` |
|
|
815
|
+
| the server refused your arguments | `VALIDATION_ERROR` | `400` |
|
|
816
|
+
|
|
817
|
+
`details.issues` is the same `{ path, code, message }` array on both, so one rendering serves both —
|
|
818
|
+
and `zodIssues` / `ZodIssueSummary` are now importable from `stitchkit` itself, not only from
|
|
819
|
+
`stitchkit/server`.
|
|
820
|
+
|
|
821
|
+
### If you are on `createHttpClient` and your call site relied on a synchronous throw
|
|
822
|
+
|
|
823
|
+
This is the sharp one, because it is invisible in a diff. Those refusals used to be thrown
|
|
824
|
+
**synchronously** on the Ky-backed client — before the call returned a promise — so
|
|
825
|
+
`api.upload({}).catch(handler)` never reached the handler, while the same mistake on the bare-fetch
|
|
826
|
+
client rejected normally. They now reject on both.
|
|
827
|
+
|
|
828
|
+
```ts
|
|
829
|
+
// before, on createHttpClient only
|
|
830
|
+
try {
|
|
831
|
+
api.upload({}) // threw here
|
|
832
|
+
} catch (e) { … }
|
|
833
|
+
|
|
834
|
+
// after, on both transports
|
|
835
|
+
await api.upload({}).catch(handler)
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
A `try/catch` around an `await`ed call keeps working. A `try/catch` around an un-awaited call no
|
|
839
|
+
longer catches anything — which was already true on the other transport.
|
|
840
|
+
|
|
841
|
+
Not a migration, but worth knowing: a missing multipart file used to be reported as
|
|
842
|
+
`UNKNOWN_ERROR`, the code that means *this client cannot tell you what happened*, on the one refusal
|
|
843
|
+
where it is certain nothing was sent. → ADR 0148 carries the reasoning, including why argument
|
|
844
|
+
validation stays on the server.
|
|
845
|
+
|
|
846
|
+
## Released migration: 0.73.0
|
|
847
|
+
|
|
848
|
+
Two breaking changes. Nothing you send to a server changed, and only one of these
|
|
849
|
+
can reach a call site the compiler already checks.
|
|
850
|
+
|
|
851
|
+
### If you call `withOptions` from a call site that lost its types
|
|
852
|
+
|
|
853
|
+
`withOptions` takes one argument on an endpoint with no contract input, two when
|
|
854
|
+
there is one. Passing two to a no-input endpoint used to succeed and silently
|
|
855
|
+
drop the options: the request went out **uncancelled**, the caller still received
|
|
856
|
+
`REQUEST_ABORTED` — cancellation is decided from the signal it was handed, not
|
|
857
|
+
from what the transport did — and the server ran the operation to its own
|
|
858
|
+
deadline. Every symptom then points at the transport, and the investigation goes
|
|
859
|
+
there. It now throws a `TypeError` naming the endpoint and the correct shape.
|
|
860
|
+
|
|
861
|
+
```ts
|
|
862
|
+
// before — the options were dropped and the request was never cancelled
|
|
863
|
+
api.ping.withOptions({}, { signal })
|
|
864
|
+
|
|
865
|
+
// after
|
|
866
|
+
api.ping.withOptions({ signal })
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
A typed call site already refused the wrong arity, so this reaches only code that
|
|
870
|
+
does not have the types: a `Record<string, …>` view of the client, a hand-written
|
|
871
|
+
double, a dynamic dispatch. The guard counts arguments and never reads them, so a
|
|
872
|
+
method handed to a callback API behaves exactly as before.
|
|
873
|
+
|
|
874
|
+
### If you match on `ApiError.message`
|
|
875
|
+
|
|
876
|
+
An `ApiError` that nothing explained used to carry `API Error: ${code}` — a
|
|
877
|
+
string that reads like an explanation while only restating the code, so a caller
|
|
878
|
+
could not tell an origin that explained a failure from one that said nothing. It
|
|
879
|
+
now says which it is.
|
|
880
|
+
|
|
881
|
+
```ts
|
|
882
|
+
// before
|
|
883
|
+
err.message === 'API Error: INVALID_INPUT'
|
|
884
|
+
|
|
885
|
+
// after
|
|
886
|
+
err.message === 'INVALID_INPUT (no message supplied)' // better: match err.code
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
Match `err.code` instead: it is the contract, and it did not change. An error
|
|
890
|
+
carrying a real message is untouched. An empty message now counts as no message,
|
|
891
|
+
for the same reason — an empty string is not an explanation either.
|
|
892
|
+
|
|
893
|
+
### If a diagnostic journal lock file is already on disk
|
|
894
|
+
|
|
895
|
+
One operator step, and only on a host that has been **renamed** since its lock was written.
|
|
896
|
+
|
|
897
|
+
A lock written before this version carries no machine identity, so there is nothing to compare and
|
|
898
|
+
the host name is all that is left. If the name still matches, the lock reclaims exactly as it always
|
|
899
|
+
did and there is nothing to do. If the name has changed, the lock is `unattributable` and is refused
|
|
900
|
+
— the same refusal this release exists to end, except that this particular file predates the fix and
|
|
901
|
+
cannot be repaired from the inside. Delete it once:
|
|
902
|
+
|
|
903
|
+
```sh
|
|
904
|
+
rm <journal path>.lock # only when the host was renamed since the file was written
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
Locks written from this version on carry the machine identity, so the situation cannot recur. To see
|
|
908
|
+
which case you are in without guessing, read the refusal instead of the file:
|
|
909
|
+
`readDiagnosticJournalLockDiagnosis(err)` returns `attribution: 'unattributable'` for exactly this
|
|
910
|
+
one, and `'another-machine'` for a lock that genuinely belongs elsewhere and must **not** be deleted.
|
|
911
|
+
|
|
912
|
+
Two related fixes need no migration, but change what you will see. An error the
|
|
913
|
+
transport raised through `createHttpClient` now carries the transport's own text
|
|
914
|
+
in `message` and the original error as `cause`, where before it carried neither
|
|
915
|
+
and filed the text under `details.message` alone; if you followed the retry rule
|
|
916
|
+
in [the client guide](./client.md) — inspect the adapter's `cause`, retry only
|
|
917
|
+
when it proves dispatch did not happen — that rule was not executable on this
|
|
918
|
+
transport and now is. And the client guide now states which direction validation
|
|
919
|
+
runs: responses are checked against `output`, arguments are **not** checked
|
|
920
|
+
before being sent.
|
|
921
|
+
|
|
922
|
+
## Released migration: 0.72.0
|
|
923
|
+
|
|
924
|
+
Nothing you *pass* changed. Both items are about types you read or build, and
|
|
925
|
+
both stop the compiler rather than surprising you at runtime.
|
|
926
|
+
|
|
927
|
+
### If you read `perKey` off `BoundedAdmissionPolicy`
|
|
928
|
+
|
|
929
|
+
`perKey` is now a union: the flat ceiling it always was, or `{ maxKeys, limits }`
|
|
930
|
+
where the ceiling is resolved from the key. Declaring one is unchanged; reading
|
|
931
|
+
one needs a narrowing.
|
|
932
|
+
|
|
933
|
+
```ts
|
|
934
|
+
// before
|
|
935
|
+
const ceiling = policy.perKey?.maxConcurrent
|
|
936
|
+
|
|
937
|
+
// after
|
|
938
|
+
const ceiling =
|
|
939
|
+
policy.perKey && !('limits' in policy.perKey) ? policy.perKey.maxConcurrent : undefined
|
|
940
|
+
```
|
|
941
|
+
|
|
942
|
+
A shape carrying members of both branches — `{ maxKeys, maxConcurrent, limits }` —
|
|
943
|
+
is refused. **In 0.72.0 and 0.72.1 that refusal came only from
|
|
944
|
+
`createBoundedAdmission`**, not from `tsc`: an excess-property check against a
|
|
945
|
+
union admits any property some member declares, so the mixed shape typechecked
|
|
946
|
+
and threw when the admission was built. From **0.72.2** each branch declares the
|
|
947
|
+
other's members as `never`, so it is a compile error. Nothing about the runtime
|
|
948
|
+
changed — both branches always refused it — but on a path your tests do not
|
|
949
|
+
construct, the earlier versions would have told you in production.
|
|
950
|
+
|
|
951
|
+
### If you build a snapshot or a status by hand
|
|
952
|
+
|
|
953
|
+
`CreditWindowSnapshot` gained `waiting` (producers parked in the new waiting
|
|
954
|
+
`acquire`) and `DiagnosticJournalStatus` gained `lock`. Both are produced by the
|
|
955
|
+
framework, so reading them is unaffected — but a test double stops compiling:
|
|
956
|
+
|
|
957
|
+
```ts
|
|
958
|
+
// before
|
|
959
|
+
const snapshot: CreditWindowSnapshot = { state: 'open', capacityBytes: 100, /* … */ }
|
|
960
|
+
|
|
961
|
+
// after
|
|
962
|
+
const snapshot: CreditWindowSnapshot = { state: 'open', capacityBytes: 100, /* … */ waiting: 0 }
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
## Released migration: 0.71.0
|
|
966
|
+
|
|
967
|
+
The Agent coding tools. Two of the three changes are visible to the compiler;
|
|
968
|
+
the third is the one to read carefully, because nothing will point at it.
|
|
969
|
+
|
|
970
|
+
### If you implement `authorize`
|
|
971
|
+
|
|
972
|
+
The operation union gained `edit`, `list` and `glob` and lost `patch`. An
|
|
973
|
+
exhaustive matcher stops compiling and the compiler shows you every arm. **A
|
|
974
|
+
matcher with a default branch does not**, and that is the dangerous case:
|
|
975
|
+
|
|
976
|
+
```ts
|
|
977
|
+
// before — and after this upgrade, silently wrong in both directions
|
|
978
|
+
if (request.operation === 'patch') return reviewPatch(request)
|
|
979
|
+
return true // now also authorizes edit, list and glob
|
|
980
|
+
// …or: return false // now also kills edit_file
|
|
981
|
+
```
|
|
982
|
+
|
|
983
|
+
```ts
|
|
984
|
+
// after
|
|
985
|
+
switch (request.operation) {
|
|
986
|
+
case 'edit': return reviewEdit(request) // the old `patch` payload, unchanged
|
|
987
|
+
case 'list':
|
|
988
|
+
case 'glob': return true // or your own policy
|
|
989
|
+
// …existing read / write / search / shell / artifact-read arms
|
|
990
|
+
}
|
|
991
|
+
```
|
|
992
|
+
|
|
993
|
+
`write` gained `createsDirectories` — the workspace-relative directories the
|
|
994
|
+
call would create, outermost first, reported **before** anything is created. A
|
|
995
|
+
host that wants to refuse implicit directory creation now can.
|
|
996
|
+
|
|
997
|
+
### If you call `apply_patch`
|
|
998
|
+
|
|
999
|
+
It is `edit_file`, and it is one call:
|
|
1000
|
+
|
|
1001
|
+
```ts
|
|
1002
|
+
// before
|
|
1003
|
+
const read = await readFile({ path })
|
|
1004
|
+
await applyPatch({ path, baseSha256: read.sha256, oldText, newText, dryRun: true })
|
|
1005
|
+
await applyPatch({ path, baseSha256: read.sha256, oldText, newText, dryRun: false })
|
|
1006
|
+
|
|
1007
|
+
// after
|
|
1008
|
+
await editFile({ path, oldText, newText })
|
|
1009
|
+
```
|
|
1010
|
+
|
|
1011
|
+
`expectedSha256` is optional and still refuses a stale base with `CONFLICT` when
|
|
1012
|
+
you pass it; `edit_file` returns the resulting `sha256`, so a chain of edits
|
|
1013
|
+
never needs to re-read. If you key an approval policy or a UI label on the string
|
|
1014
|
+
`apply_patch`, update the key — nothing will fail loudly.
|
|
1015
|
+
|
|
1016
|
+
### If you match on `INTERNAL_SERVER_ERROR` from a coding tool
|
|
1017
|
+
|
|
1018
|
+
Ordinary outcomes no longer arrive that way. A missing file is `NOT_FOUND`, an
|
|
1019
|
+
existing file without `overwrite` is `CONFLICT`, an ambiguous snippet is
|
|
1020
|
+
`CONFLICT` with the occurrence count, a path outside the root is `FORBIDDEN`.
|
|
1021
|
+
Code that treated any coding-tool failure as an internal fault will now see
|
|
1022
|
+
codes it did not before; code that showed the model an empty error now has a
|
|
1023
|
+
sentence and a `hint` to show it. Host-level causes are unchanged and still
|
|
1024
|
+
scrubbed.
|
|
1025
|
+
|
|
1026
|
+
### If you write files into new directories
|
|
1027
|
+
|
|
1028
|
+
Nothing to change: `write_file` creates missing parents inside the root. Read
|
|
1029
|
+
`createdDirectories` in the result if you want to notice a typo — a path that
|
|
1030
|
+
was a failure before is now a successful write into a new tree.
|
|
1031
|
+
|
|
1032
|
+
### If you want a step to know its context budget
|
|
1033
|
+
|
|
1034
|
+
Opt in by reading it; nothing is injected for you:
|
|
1035
|
+
|
|
1036
|
+
```ts
|
|
1037
|
+
loop: {
|
|
1038
|
+
prepareStep: ({ contextUsage }) => {
|
|
1039
|
+
const used = contextUsage?.usedTokens
|
|
1040
|
+
if (used?.provenance === 'unavailable') return {} // no step has landed yet
|
|
1041
|
+
const fraction = (used?.value ?? 0) / (contextUsage?.contextWindow ?? 1)
|
|
1042
|
+
// …render it wherever you put it
|
|
1043
|
+
return {}
|
|
1044
|
+
},
|
|
1045
|
+
}
|
|
1046
|
+
```
|
|
1047
|
+
|
|
1048
|
+
Put it at the **tail** of the conversation rather than in the system
|
|
1049
|
+
instructions unless you have a reason: changing the system prompt on every step
|
|
1050
|
+
invalidates the provider's prefix cache for the whole conversation, and on a long
|
|
1051
|
+
run that is a multiple of the input cost.
|
|
1052
|
+
|
|
1053
|
+
## Released migration: 0.70.0
|
|
1054
|
+
|
|
1055
|
+
### Descriptor-backed Agent filesystem containment
|
|
1056
|
+
|
|
1057
|
+
Built-in coding file/search tools and `createAgentHarnessFileResources` now require a runtime
|
|
1058
|
+
that can address an opened directory descriptor: Linux `/proc/self/fd`, or the packaged macOS
|
|
1059
|
+
Node-API backend added in 0.70.1. This is what keeps a mutable parent rename or outside-symlink replacement from changing
|
|
1060
|
+
the authorized target between validation and the actual effect.
|
|
1061
|
+
|
|
1062
|
+
No call-site change is needed on those platforms. The 0.70.0 notes incorrectly inferred macOS and
|
|
1063
|
+
FreeBSD support from `/dev/fd`; macOS is restored by 0.70.1 and FreeBSD remains unsupported. On
|
|
1064
|
+
Windows or another platform without that
|
|
1065
|
+
boundary, move the built-in filesystem operations to a supported worker or replace them with
|
|
1066
|
+
application-owned tools backed by an equivalent native handle API. They fail closed rather than
|
|
1067
|
+
falling back to path spelling. `run_command` remains separately available under its explicit
|
|
1068
|
+
executable alias and authorization policy; this change does not claim an executable sandbox.
|
|
1069
|
+
|
|
1070
|
+
## Released migration: 0.69.0
|
|
1071
|
+
|
|
1072
|
+
### Direct coding-tool operation names
|
|
1073
|
+
|
|
1074
|
+
`createAgentCodingTools` no longer prefixes durable operation identity with `coding_`, and the
|
|
1075
|
+
unguarded exact-string edit tool is gone. Update approval maps, presenters and tests together:
|
|
1076
|
+
|
|
1077
|
+
```ts
|
|
1078
|
+
// before
|
|
1079
|
+
{ coding_read_file: 'approved', coding_search: 'approved', coding_patch_file: 'user-approval' }
|
|
1080
|
+
|
|
1081
|
+
// after
|
|
1082
|
+
{ read_file: 'approved', search_files: 'approved', apply_patch: 'user-approval' }
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
The full mapping is `coding_read_file → read_file`, `coding_write_file → write_file`,
|
|
1086
|
+
`coding_search → search_files`, `coding_patch_file → apply_patch`, `coding_shell → run_command`,
|
|
1087
|
+
`coding_read_artifact → read_output` and `harness_read_resource → read_resource`. Replace
|
|
1088
|
+
`coding_edit_file` with `read_file` followed by guarded `apply_patch`; `read_file` now returns the
|
|
1089
|
+
required SHA-256. If the host declares no executable aliases, expect `run_command` to be absent.
|
|
1090
|
+
|
|
1091
|
+
### Durable Agent approval message variants
|
|
1092
|
+
|
|
1093
|
+
If a renderer, store adapter or export pipeline exhaustively switches over
|
|
1094
|
+
`AgentMessage.role`, add the `tool` branch. If it switches over
|
|
1095
|
+
`AgentMessagePart.type`, add `tool-approval-request` and `tool-approval-response`.
|
|
1096
|
+
They are durable provider-continuation evidence: preserve them in storage and provider history;
|
|
1097
|
+
a UI may render them as approval state or intentionally omit their visual row.
|
|
1098
|
+
|
|
1099
|
+
```ts
|
|
1100
|
+
// before
|
|
1101
|
+
const unreachable: never = message.role
|
|
1102
|
+
|
|
1103
|
+
// after
|
|
1104
|
+
if (message.role === 'tool') renderToolContinuation(message.parts)
|
|
1105
|
+
else renderExistingRole(message)
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
No data migration is needed. The schema still accepts all earlier records, and applications that
|
|
1109
|
+
do not exhaustively branch over these unions compile unchanged.
|
|
1110
|
+
|
|
1111
|
+
## Released migration: 0.68.0
|
|
1112
|
+
|
|
1113
|
+
### Make Unix transport selection explicit outside Bun
|
|
1114
|
+
|
|
1115
|
+
The legacy `unix` option remains a Bun convenience, but on Node or another
|
|
1116
|
+
runtime it now fails before dispatch. Replace it with the owned adapter and close
|
|
1117
|
+
that adapter with the application:
|
|
1118
|
+
|
|
1119
|
+
```ts
|
|
1120
|
+
// before — unsafe outside Bun: an unsupported fetch could dial baseUrl over TCP
|
|
1121
|
+
const http = createHttpClient({ baseUrl, unix: '/run/service.sock' })
|
|
1122
|
+
|
|
1123
|
+
// after — Bun and Node; every dispatch and redirect stays on the socket
|
|
1124
|
+
import { createUnixClientTransport } from 'stitchkit/server' // or stitchkit/node
|
|
1125
|
+
const transport = createUnixClientTransport({ socketPath: '/run/service.sock' })
|
|
1126
|
+
const http = createHttpClient({ baseUrl, fetch: transport.fetch })
|
|
1127
|
+
// during shutdown
|
|
1128
|
+
await transport.close()
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1131
|
+
Do not automatically replay `possibly-dispatched`: a timeout or connection loss
|
|
1132
|
+
after bytes left the process does not prove that a write did not happen.
|
|
1133
|
+
|
|
1134
|
+
### Choose tolerant stream parsing explicitly
|
|
1135
|
+
|
|
1136
|
+
`parseNDJSON` and `parseSSE` now throw on malformed JSON, invalid UTF-8 and an
|
|
1137
|
+
over-limit line. The default line ceiling is 1 MiB. If a feed deliberately skips
|
|
1138
|
+
bad records, retain that policy explicitly:
|
|
1139
|
+
|
|
1140
|
+
```ts
|
|
1141
|
+
// before — malformed input disappeared implicitly
|
|
1142
|
+
parseNDJSON(response)
|
|
1143
|
+
|
|
1144
|
+
// after — ordinary fail-closed path
|
|
1145
|
+
parseNDJSON(response, { maxLineBytes: 256 * 1024 })
|
|
1146
|
+
|
|
1147
|
+
// after — deliberately tolerant path
|
|
1148
|
+
parseNDJSON(response, { onParseError: (raw, error) => report(raw, error) })
|
|
1149
|
+
```
|
|
1150
|
+
|
|
1151
|
+
### Extend exhaustive framework-error handling
|
|
1152
|
+
|
|
1153
|
+
If a switch makes `StitchErrorCode` exhaustive, add
|
|
1154
|
+
`STREAM_ITEM_INVALID`, `STREAM_FRAME_TOO_LARGE`,
|
|
1155
|
+
`STREAM_TERMINAL_MISSING` and `STREAM_LIFETIME_EXCEEDED`. A partial application
|
|
1156
|
+
status map needs no change (ADR 0105).
|
|
1157
|
+
|
|
1158
|
+
The admission/channel APIs and endpoint `stream` descriptor are additive; raw
|
|
1159
|
+
responses and raw `streamingRoute` remain supported.
|