@namzu/sdk 1.4.0 → 3.0.0
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 +2284 -0
- package/README.md +49 -53
- package/dist/__tests__/default-path-conformance.test.d.ts +2 -0
- package/dist/__tests__/default-path-conformance.test.d.ts.map +1 -0
- package/dist/__tests__/default-path-conformance.test.js +262 -0
- package/dist/__tests__/default-path-conformance.test.js.map +1 -0
- package/dist/__tests__/shipped-defaults.test.d.ts +2 -0
- package/dist/__tests__/shipped-defaults.test.d.ts.map +1 -0
- package/dist/__tests__/shipped-defaults.test.js +97 -0
- package/dist/__tests__/shipped-defaults.test.js.map +1 -0
- package/dist/advisory/__tests__/budget-enforcement.test.d.ts +2 -0
- package/dist/advisory/__tests__/budget-enforcement.test.d.ts.map +1 -0
- package/dist/advisory/__tests__/budget-enforcement.test.js +159 -0
- package/dist/advisory/__tests__/budget-enforcement.test.js.map +1 -0
- package/dist/advisory/__tests__/structured-response.test.d.ts +2 -0
- package/dist/advisory/__tests__/structured-response.test.d.ts.map +1 -0
- package/dist/advisory/__tests__/structured-response.test.js +99 -0
- package/dist/advisory/__tests__/structured-response.test.js.map +1 -0
- package/dist/advisory/budget.d.ts +15 -0
- package/dist/advisory/budget.d.ts.map +1 -0
- package/dist/advisory/budget.js +21 -0
- package/dist/advisory/budget.js.map +1 -0
- package/dist/advisory/context.d.ts +2 -0
- package/dist/advisory/context.d.ts.map +1 -1
- package/dist/advisory/context.js +16 -0
- package/dist/advisory/context.js.map +1 -1
- package/dist/advisory/executor.d.ts +14 -11
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +36 -24
- package/dist/advisory/executor.js.map +1 -1
- package/dist/advisory/executor.test.d.ts +8 -6
- package/dist/advisory/executor.test.d.ts.map +1 -1
- package/dist/advisory/executor.test.js +12 -8
- package/dist/advisory/executor.test.js.map +1 -1
- package/dist/advisory/index.d.ts +2 -0
- package/dist/advisory/index.d.ts.map +1 -1
- package/dist/advisory/index.js +2 -0
- package/dist/advisory/index.js.map +1 -1
- package/dist/advisory/parse.d.ts +23 -0
- package/dist/advisory/parse.d.ts.map +1 -0
- package/dist/advisory/parse.js +56 -0
- package/dist/advisory/parse.js.map +1 -0
- package/dist/agents/AbstractAgent.d.ts +48 -0
- package/dist/agents/AbstractAgent.d.ts.map +1 -1
- package/dist/agents/AbstractAgent.js +77 -0
- package/dist/agents/AbstractAgent.js.map +1 -1
- package/dist/agents/PipelineAgent.d.ts +10 -0
- package/dist/agents/PipelineAgent.d.ts.map +1 -1
- package/dist/agents/PipelineAgent.js +12 -0
- package/dist/agents/PipelineAgent.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts +10 -0
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +40 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/RouterAgent.d.ts +10 -0
- package/dist/agents/RouterAgent.d.ts.map +1 -1
- package/dist/agents/RouterAgent.js +23 -2
- package/dist/agents/RouterAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts +11 -1
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +23 -1
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/__tests__/idempotency-key.test.d.ts +2 -0
- package/dist/agents/__tests__/idempotency-key.test.d.ts.map +1 -0
- package/dist/agents/__tests__/idempotency-key.test.js +149 -0
- package/dist/agents/__tests__/idempotency-key.test.js.map +1 -0
- package/dist/agents/__tests__/invocation-lock.test.d.ts +2 -0
- package/dist/agents/__tests__/invocation-lock.test.d.ts.map +1 -0
- package/dist/agents/__tests__/invocation-lock.test.js +126 -0
- package/dist/agents/__tests__/invocation-lock.test.js.map +1 -0
- package/dist/agents/__tests__/reachability.test.d.ts +2 -0
- package/dist/agents/__tests__/reachability.test.d.ts.map +1 -0
- package/dist/agents/__tests__/reachability.test.js +173 -0
- package/dist/agents/__tests__/reachability.test.js.map +1 -0
- package/dist/agents/__tests__/supervisor-ledger.test.js +1 -1
- package/dist/agents/__tests__/supervisor-ledger.test.js.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/lock.d.ts +0 -1
- package/dist/agents/lock.d.ts.map +1 -1
- package/dist/agents/lock.js.map +1 -1
- package/dist/bridge/a2a/late-events.test.d.ts +2 -0
- package/dist/bridge/a2a/late-events.test.d.ts.map +1 -0
- package/dist/bridge/a2a/late-events.test.js +70 -0
- package/dist/bridge/a2a/late-events.test.js.map +1 -0
- package/dist/bridge/a2a/mapper.d.ts.map +1 -1
- package/dist/bridge/a2a/mapper.js +55 -3
- package/dist/bridge/a2a/mapper.js.map +1 -1
- package/dist/bridge/a2a/mapper.test.js +1 -1
- package/dist/bridge/a2a/mapper.test.js.map +1 -1
- package/dist/bridge/a2a/message.d.ts.map +1 -1
- package/dist/bridge/a2a/message.js +5 -1
- package/dist/bridge/a2a/message.js.map +1 -1
- package/dist/bridge/sse/late-events.test.d.ts +2 -0
- package/dist/bridge/sse/late-events.test.d.ts.map +1 -0
- package/dist/bridge/sse/late-events.test.js +163 -0
- package/dist/bridge/sse/late-events.test.js.map +1 -0
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +100 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/compaction/__tests__/cleared-result-recovery.test.d.ts +2 -0
- package/dist/compaction/__tests__/cleared-result-recovery.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/cleared-result-recovery.test.js +101 -0
- package/dist/compaction/__tests__/cleared-result-recovery.test.js.map +1 -0
- package/dist/compaction/__tests__/context-window.test.d.ts +2 -0
- package/dist/compaction/__tests__/context-window.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/context-window.test.js +62 -0
- package/dist/compaction/__tests__/context-window.test.js.map +1 -0
- package/dist/compaction/__tests__/dangling.test.js +16 -5
- package/dist/compaction/__tests__/dangling.test.js.map +1 -1
- package/dist/compaction/__tests__/lossiness.test.d.ts +2 -0
- package/dist/compaction/__tests__/lossiness.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/lossiness.test.js +163 -0
- package/dist/compaction/__tests__/lossiness.test.js.map +1 -0
- package/dist/compaction/__tests__/state-across-resume.test.d.ts +2 -0
- package/dist/compaction/__tests__/state-across-resume.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/state-across-resume.test.js +88 -0
- package/dist/compaction/__tests__/state-across-resume.test.js.map +1 -0
- package/dist/compaction/__tests__/tool-result-editing.test.d.ts +2 -0
- package/dist/compaction/__tests__/tool-result-editing.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/tool-result-editing.test.js +184 -0
- package/dist/compaction/__tests__/tool-result-editing.test.js.map +1 -0
- package/dist/compaction/__tests__/trim-opens-on-user.test.d.ts +2 -0
- package/dist/compaction/__tests__/trim-opens-on-user.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/trim-opens-on-user.test.js +109 -0
- package/dist/compaction/__tests__/trim-opens-on-user.test.js.map +1 -0
- package/dist/compaction/__tests__/verifier-model.test.d.ts +2 -0
- package/dist/compaction/__tests__/verifier-model.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/verifier-model.test.js +58 -0
- package/dist/compaction/__tests__/verifier-model.test.js.map +1 -0
- package/dist/compaction/context-window.d.ts +44 -0
- package/dist/compaction/context-window.d.ts.map +1 -0
- package/dist/compaction/context-window.js +97 -0
- package/dist/compaction/context-window.js.map +1 -0
- package/dist/compaction/dangling.js +48 -1
- package/dist/compaction/dangling.js.map +1 -1
- package/dist/compaction/extractor.d.ts.map +1 -1
- package/dist/compaction/extractor.js +55 -1
- package/dist/compaction/extractor.js.map +1 -1
- package/dist/compaction/index.d.ts +5 -0
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +3 -0
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/manager.d.ts +25 -0
- package/dist/compaction/manager.d.ts.map +1 -1
- package/dist/compaction/manager.js +42 -8
- package/dist/compaction/manager.js.map +1 -1
- package/dist/compaction/managers/structured.d.ts.map +1 -1
- package/dist/compaction/managers/structured.js +7 -3
- package/dist/compaction/managers/structured.js.map +1 -1
- package/dist/compaction/retention.d.ts +15 -0
- package/dist/compaction/retention.d.ts.map +1 -0
- package/dist/compaction/retention.js +89 -0
- package/dist/compaction/retention.js.map +1 -0
- package/dist/compaction/serializer.d.ts.map +1 -1
- package/dist/compaction/serializer.js +28 -11
- package/dist/compaction/serializer.js.map +1 -1
- package/dist/compaction/tool-result-editing.d.ts +54 -0
- package/dist/compaction/tool-result-editing.d.ts.map +1 -0
- package/dist/compaction/tool-result-editing.js +164 -0
- package/dist/compaction/tool-result-editing.js.map +1 -0
- package/dist/compaction/types.d.ts +10 -0
- package/dist/compaction/types.d.ts.map +1 -1
- package/dist/compaction/verifier.d.ts +20 -1
- package/dist/compaction/verifier.d.ts.map +1 -1
- package/dist/compaction/verifier.js +11 -2
- package/dist/compaction/verifier.js.map +1 -1
- package/dist/compaction/wire.d.ts +54 -0
- package/dist/compaction/wire.d.ts.map +1 -0
- package/dist/compaction/wire.js +45 -0
- package/dist/compaction/wire.js.map +1 -0
- package/dist/config/runtime.d.ts +161 -45
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +61 -19
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +14 -1
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/http.test.js +12 -0
- package/dist/connector/builtins/http.test.js.map +1 -1
- package/dist/connector/mcp/__tests__/discovery-policy.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/discovery-policy.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/discovery-policy.test.js +109 -0
- package/dist/connector/mcp/__tests__/discovery-policy.test.js.map +1 -0
- package/dist/connector/mcp/__tests__/list-pagination.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/list-pagination.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/list-pagination.test.js +81 -0
- package/dist/connector/mcp/__tests__/list-pagination.test.js.map +1 -0
- package/dist/connector/mcp/__tests__/policy.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/policy.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/policy.test.js +86 -0
- package/dist/connector/mcp/__tests__/policy.test.js.map +1 -0
- package/dist/connector/mcp/__tests__/protocol-negotiation.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/protocol-negotiation.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/protocol-negotiation.test.js +81 -0
- package/dist/connector/mcp/__tests__/protocol-negotiation.test.js.map +1 -0
- package/dist/connector/mcp/__tests__/schema-fidelity.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/schema-fidelity.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/schema-fidelity.test.js +206 -0
- package/dist/connector/mcp/__tests__/schema-fidelity.test.js.map +1 -0
- package/dist/connector/mcp/__tests__/structured-result.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/structured-result.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/structured-result.test.js +112 -0
- package/dist/connector/mcp/__tests__/structured-result.test.js.map +1 -0
- package/dist/connector/mcp/adapter.d.ts +14 -0
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +292 -18
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/mcp/client.d.ts +38 -0
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +138 -12
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/client.test.d.ts +2 -0
- package/dist/connector/mcp/client.test.d.ts.map +1 -0
- package/dist/connector/mcp/client.test.js +105 -0
- package/dist/connector/mcp/client.test.js.map +1 -0
- package/dist/connector/mcp/discovery.d.ts +32 -1
- package/dist/connector/mcp/discovery.d.ts.map +1 -1
- package/dist/connector/mcp/discovery.js +41 -4
- package/dist/connector/mcp/discovery.js.map +1 -1
- package/dist/connector/mcp/http-sse.d.ts.map +1 -1
- package/dist/connector/mcp/http-sse.js +15 -1
- package/dist/connector/mcp/http-sse.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +3 -0
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +1 -0
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/policy.d.ts +57 -0
- package/dist/connector/mcp/policy.d.ts.map +1 -0
- package/dist/connector/mcp/policy.js +84 -0
- package/dist/connector/mcp/policy.js.map +1 -0
- package/dist/connector/mcp/schema-refs.d.ts +26 -0
- package/dist/connector/mcp/schema-refs.d.ts.map +1 -0
- package/dist/connector/mcp/schema-refs.js +111 -0
- package/dist/connector/mcp/schema-refs.js.map +1 -0
- package/dist/constants/agent/index.d.ts.map +1 -1
- package/dist/constants/agent/index.js +3 -0
- package/dist/constants/agent/index.js.map +1 -1
- package/dist/constants/compaction/index.js +1 -1
- package/dist/constants/compaction/index.js.map +1 -1
- package/dist/constants/continuation.d.ts +4 -4
- package/dist/constants/continuation.js +4 -4
- package/dist/constants/mcp/index.d.ts +31 -0
- package/dist/constants/mcp/index.d.ts.map +1 -1
- package/dist/constants/mcp/index.js +31 -0
- package/dist/constants/mcp/index.js.map +1 -1
- package/dist/constants/plugin/index.d.ts +23 -2
- package/dist/constants/plugin/index.d.ts.map +1 -1
- package/dist/constants/plugin/index.js +23 -2
- package/dist/constants/plugin/index.js.map +1 -1
- package/dist/constants/sandbox/index.d.ts +2 -3
- package/dist/constants/sandbox/index.d.ts.map +1 -1
- package/dist/constants/sandbox/index.js +6 -5
- package/dist/constants/sandbox/index.js.map +1 -1
- package/dist/constants/telemetry/index.d.ts +7 -0
- package/dist/constants/telemetry/index.d.ts.map +1 -1
- package/dist/constants/telemetry/index.js +7 -0
- package/dist/constants/telemetry/index.js.map +1 -1
- package/dist/constants/tools/index.d.ts +16 -0
- package/dist/constants/tools/index.d.ts.map +1 -1
- package/dist/constants/tools/index.js +16 -0
- package/dist/constants/tools/index.js.map +1 -1
- package/dist/contracts/a2a.d.ts +94 -94
- package/dist/contracts/api.d.ts +40 -2
- package/dist/contracts/api.d.ts.map +1 -1
- package/dist/contracts/run-status.d.ts +17 -0
- package/dist/contracts/run-status.d.ts.map +1 -0
- package/dist/contracts/run-status.js +41 -0
- package/dist/contracts/run-status.js.map +1 -0
- package/dist/contracts/schemas.d.ts +6 -6
- package/dist/eval/__tests__/case-deadline.test.d.ts +2 -0
- package/dist/eval/__tests__/case-deadline.test.d.ts.map +1 -0
- package/dist/eval/__tests__/case-deadline.test.js +128 -0
- package/dist/eval/__tests__/case-deadline.test.js.map +1 -0
- package/dist/eval/__tests__/end-to-end.test.d.ts +2 -0
- package/dist/eval/__tests__/end-to-end.test.d.ts.map +1 -0
- package/dist/eval/__tests__/end-to-end.test.js +223 -0
- package/dist/eval/__tests__/end-to-end.test.js.map +1 -0
- package/dist/eval/__tests__/harness-honesty.test.d.ts +2 -0
- package/dist/eval/__tests__/harness-honesty.test.d.ts.map +1 -0
- package/dist/eval/__tests__/harness-honesty.test.js +85 -0
- package/dist/eval/__tests__/harness-honesty.test.js.map +1 -0
- package/dist/eval/__tests__/harness.test.d.ts +2 -0
- package/dist/eval/__tests__/harness.test.d.ts.map +1 -0
- package/dist/eval/__tests__/harness.test.js +207 -0
- package/dist/eval/__tests__/harness.test.js.map +1 -0
- package/dist/eval/__tests__/judge.test.d.ts +2 -0
- package/dist/eval/__tests__/judge.test.d.ts.map +1 -0
- package/dist/eval/__tests__/judge.test.js +255 -0
- package/dist/eval/__tests__/judge.test.js.map +1 -0
- package/dist/eval/__tests__/scorer-gates.test.d.ts +2 -0
- package/dist/eval/__tests__/scorer-gates.test.d.ts.map +1 -0
- package/dist/eval/__tests__/scorer-gates.test.js +136 -0
- package/dist/eval/__tests__/scorer-gates.test.js.map +1 -0
- package/dist/eval/experiment.d.ts +54 -0
- package/dist/eval/experiment.d.ts.map +1 -0
- package/dist/eval/experiment.js +263 -0
- package/dist/eval/experiment.js.map +1 -0
- package/dist/eval/from-run.d.ts +30 -0
- package/dist/eval/from-run.d.ts.map +1 -0
- package/dist/eval/from-run.js +46 -0
- package/dist/eval/from-run.js.map +1 -0
- package/dist/eval/index.d.ts +8 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +5 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/judge.d.ts +63 -0
- package/dist/eval/judge.d.ts.map +1 -0
- package/dist/eval/judge.js +136 -0
- package/dist/eval/judge.js.map +1 -0
- package/dist/eval/scorers.d.ts +40 -0
- package/dist/eval/scorers.d.ts.map +1 -0
- package/dist/eval/scorers.js +151 -0
- package/dist/eval/scorers.js.map +1 -0
- package/dist/eval/types.d.ts +150 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +2 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/execution/local.d.ts.map +1 -1
- package/dist/execution/local.js +6 -1
- package/dist/execution/local.js.map +1 -1
- package/dist/execution/local.test.d.ts +2 -0
- package/dist/execution/local.test.d.ts.map +1 -0
- package/dist/execution/local.test.js +37 -0
- package/dist/execution/local.test.js.map +1 -0
- package/dist/gateway/__tests__/list-survives-eviction.test.d.ts +2 -0
- package/dist/gateway/__tests__/list-survives-eviction.test.d.ts.map +1 -0
- package/dist/gateway/__tests__/list-survives-eviction.test.js +102 -0
- package/dist/gateway/__tests__/list-survives-eviction.test.js.map +1 -0
- package/dist/gateway/local.d.ts +42 -2
- package/dist/gateway/local.d.ts.map +1 -1
- package/dist/gateway/local.js +110 -3
- package/dist/gateway/local.js.map +1 -1
- package/dist/manager/agent/__tests__/dispose-cancels.test.d.ts +2 -0
- package/dist/manager/agent/__tests__/dispose-cancels.test.d.ts.map +1 -0
- package/dist/manager/agent/__tests__/dispose-cancels.test.js +88 -0
- package/dist/manager/agent/__tests__/dispose-cancels.test.js.map +1 -0
- package/dist/manager/agent/__tests__/lifecycle.test.js +230 -0
- package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts +35 -0
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +117 -7
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/run/persistence.d.ts +90 -1
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +120 -0
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/plugin/__tests__/enable-contributions.test.js +3 -3
- package/dist/plugin/__tests__/enable-contributions.test.js.map +1 -1
- package/dist/plugin/__tests__/hook-ordering.test.d.ts +2 -0
- package/dist/plugin/__tests__/hook-ordering.test.d.ts.map +1 -0
- package/dist/plugin/__tests__/hook-ordering.test.js +227 -0
- package/dist/plugin/__tests__/hook-ordering.test.js.map +1 -0
- package/dist/plugin/__tests__/install-time-refusal.test.d.ts +2 -0
- package/dist/plugin/__tests__/install-time-refusal.test.d.ts.map +1 -0
- package/dist/plugin/__tests__/install-time-refusal.test.js +49 -0
- package/dist/plugin/__tests__/install-time-refusal.test.js.map +1 -0
- package/dist/plugin/__tests__/lifecycle.test.js +95 -68
- package/dist/plugin/__tests__/lifecycle.test.js.map +1 -1
- package/dist/plugin/lifecycle.d.ts +15 -1
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +67 -20
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/loader.d.ts +15 -0
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +33 -1
- package/dist/plugin/loader.js.map +1 -1
- package/dist/probe/registry.d.ts.map +1 -1
- package/dist/probe/registry.js +19 -1
- package/dist/probe/registry.js.map +1 -1
- package/dist/probe/registry.test.d.ts +9 -3
- package/dist/probe/registry.test.d.ts.map +1 -1
- package/dist/probe/registry.test.js +44 -6
- package/dist/probe/registry.test.js.map +1 -1
- package/dist/provider/__tests__/mock-script.test.d.ts +2 -0
- package/dist/provider/__tests__/mock-script.test.d.ts.map +1 -0
- package/dist/provider/__tests__/mock-script.test.js +151 -0
- package/dist/provider/__tests__/mock-script.test.js.map +1 -0
- package/dist/provider/__tests__/retry-visibility.test.d.ts +2 -0
- package/dist/provider/__tests__/retry-visibility.test.d.ts.map +1 -0
- package/dist/provider/__tests__/retry-visibility.test.js +137 -0
- package/dist/provider/__tests__/retry-visibility.test.js.map +1 -0
- package/dist/provider/__tests__/retry.test.d.ts +2 -0
- package/dist/provider/__tests__/retry.test.d.ts.map +1 -0
- package/dist/provider/__tests__/retry.test.js +259 -0
- package/dist/provider/__tests__/retry.test.js.map +1 -0
- package/dist/provider/capabilities.d.ts +1 -0
- package/dist/provider/capabilities.d.ts.map +1 -1
- package/dist/provider/capabilities.js +2 -0
- package/dist/provider/capabilities.js.map +1 -1
- package/dist/provider/collect.d.ts +1 -1
- package/dist/provider/collect.js +1 -1
- package/dist/provider/collect.test.d.ts +1 -1
- package/dist/provider/collect.test.js +1 -1
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +2 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/mock-register.d.ts.map +1 -1
- package/dist/provider/mock-register.js +5 -2
- package/dist/provider/mock-register.js.map +1 -1
- package/dist/provider/mock.d.ts +35 -5
- package/dist/provider/mock.d.ts.map +1 -1
- package/dist/provider/mock.js +104 -32
- package/dist/provider/mock.js.map +1 -1
- package/dist/provider/retry.d.ts +42 -0
- package/dist/provider/retry.d.ts.map +1 -0
- package/dist/provider/retry.js +161 -0
- package/dist/provider/retry.js.map +1 -0
- package/dist/public-runtime.d.ts +26 -7
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +50 -7
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +5 -1
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/__tests__/retrieval-math.test.d.ts +2 -0
- package/dist/rag/__tests__/retrieval-math.test.d.ts.map +1 -0
- package/dist/rag/__tests__/retrieval-math.test.js +46 -0
- package/dist/rag/__tests__/retrieval-math.test.js.map +1 -0
- package/dist/rag/chunking.d.ts +12 -0
- package/dist/rag/chunking.d.ts.map +1 -1
- package/dist/rag/chunking.js +32 -1
- package/dist/rag/chunking.js.map +1 -1
- package/dist/rag/embedding.d.ts +4 -4
- package/dist/rag/embedding.d.ts.map +1 -1
- package/dist/rag/embedding.js +23 -3
- package/dist/rag/embedding.js.map +1 -1
- package/dist/rag/embedding.test.d.ts +1 -1
- package/dist/rag/embedding.test.js +59 -10
- package/dist/rag/embedding.test.js.map +1 -1
- package/dist/rag/index.d.ts +1 -1
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +1 -1
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/retriever.d.ts +0 -1
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/retriever.js +75 -22
- package/dist/rag/retriever.js.map +1 -1
- package/dist/rag/vector-store.test.d.ts +1 -1
- package/dist/rag/vector-store.test.js +2 -2
- package/dist/rag/vector-store.test.js.map +1 -1
- package/dist/registry/ManagedRegistry.test.d.ts +1 -1
- package/dist/registry/ManagedRegistry.test.js +1 -1
- package/dist/registry/Registry.test.d.ts +1 -1
- package/dist/registry/Registry.test.js +1 -1
- package/dist/registry/connector/definitions.test.d.ts +1 -1
- package/dist/registry/connector/definitions.test.js +1 -1
- package/dist/registry/tool/__tests__/schema.test.d.ts +2 -0
- package/dist/registry/tool/__tests__/schema.test.d.ts.map +1 -0
- package/dist/registry/tool/__tests__/schema.test.js +176 -0
- package/dist/registry/tool/__tests__/schema.test.js.map +1 -0
- package/dist/registry/tool/__tests__/tool-name-validation.test.d.ts +2 -0
- package/dist/registry/tool/__tests__/tool-name-validation.test.d.ts.map +1 -0
- package/dist/registry/tool/__tests__/tool-name-validation.test.js +70 -0
- package/dist/registry/tool/__tests__/tool-name-validation.test.js.map +1 -0
- package/dist/registry/tool/execute.d.ts +37 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +116 -16
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/registry/tool/execute.test.js +93 -7
- package/dist/registry/tool/execute.test.js.map +1 -1
- package/dist/registry/tool/schema.d.ts +26 -0
- package/dist/registry/tool/schema.d.ts.map +1 -0
- package/dist/registry/tool/schema.js +77 -0
- package/dist/registry/tool/schema.js.map +1 -0
- package/dist/registry/toolset/catalog.d.ts.map +1 -1
- package/dist/registry/toolset/catalog.js +17 -5
- package/dist/registry/toolset/catalog.js.map +1 -1
- package/dist/registry/toolset/catalog.test.js +101 -1
- package/dist/registry/toolset/catalog.test.js.map +1 -1
- package/dist/run/reporter.d.ts.map +1 -1
- package/dist/run/reporter.js +76 -0
- package/dist/run/reporter.js.map +1 -1
- package/dist/runtime/bidi/__tests__/session.test.d.ts +2 -0
- package/dist/runtime/bidi/__tests__/session.test.d.ts.map +1 -0
- package/dist/runtime/bidi/__tests__/session.test.js +201 -0
- package/dist/runtime/bidi/__tests__/session.test.js.map +1 -0
- package/dist/runtime/bidi/index.d.ts +5 -0
- package/dist/runtime/bidi/index.d.ts.map +1 -0
- package/dist/runtime/bidi/index.js +3 -0
- package/dist/runtime/bidi/index.js.map +1 -0
- package/dist/runtime/bidi/mock.d.ts +34 -0
- package/dist/runtime/bidi/mock.d.ts.map +1 -0
- package/dist/runtime/bidi/mock.js +60 -0
- package/dist/runtime/bidi/mock.js.map +1 -0
- package/dist/runtime/bidi/session.d.ts +44 -0
- package/dist/runtime/bidi/session.d.ts.map +1 -0
- package/dist/runtime/bidi/session.js +154 -0
- package/dist/runtime/bidi/session.js.map +1 -0
- package/dist/runtime/decision/parser.d.ts.map +1 -1
- package/dist/runtime/decision/parser.js +8 -1
- package/dist/runtime/decision/parser.js.map +1 -1
- package/dist/runtime/decision/parser.test.d.ts +2 -0
- package/dist/runtime/decision/parser.test.d.ts.map +1 -0
- package/dist/runtime/decision/parser.test.js +37 -0
- package/dist/runtime/decision/parser.test.js.map +1 -0
- package/dist/runtime/query/__tests__/answer-review.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/answer-review.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/answer-review.test.js +141 -0
- package/dist/runtime/query/__tests__/answer-review.test.js.map +1 -0
- package/dist/runtime/query/__tests__/capability-negotiation.test.js +24 -32
- package/dist/runtime/query/__tests__/capability-negotiation.test.js.map +1 -1
- package/dist/runtime/query/__tests__/checkpoint-store.test.js +12 -44
- package/dist/runtime/query/__tests__/checkpoint-store.test.js.map +1 -1
- package/dist/runtime/query/__tests__/checkpoint.test.js +2 -10
- package/dist/runtime/query/__tests__/checkpoint.test.js.map +1 -1
- package/dist/runtime/query/__tests__/citations.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/citations.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/citations.test.js +85 -0
- package/dist/runtime/query/__tests__/citations.test.js.map +1 -0
- package/dist/runtime/query/__tests__/content-budget.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/content-budget.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/content-budget.test.js +69 -0
- package/dist/runtime/query/__tests__/content-budget.test.js.map +1 -0
- package/dist/runtime/query/__tests__/context.test.js +3 -2
- package/dist/runtime/query/__tests__/context.test.js.map +1 -1
- package/dist/runtime/query/__tests__/deferred-tools.test.js +21 -30
- package/dist/runtime/query/__tests__/deferred-tools.test.js.map +1 -1
- package/dist/runtime/query/__tests__/delegation-resume.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/delegation-resume.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/delegation-resume.test.js +111 -0
- package/dist/runtime/query/__tests__/delegation-resume.test.js.map +1 -0
- package/dist/runtime/query/__tests__/document-attachments.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/document-attachments.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/document-attachments.test.js +92 -0
- package/dist/runtime/query/__tests__/document-attachments.test.js.map +1 -0
- package/dist/runtime/query/__tests__/durable-park-and-trace.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/durable-park-and-trace.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/durable-park-and-trace.test.js +194 -0
- package/dist/runtime/query/__tests__/durable-park-and-trace.test.js.map +1 -0
- package/dist/runtime/query/__tests__/durable-question-park.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/durable-question-park.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/durable-question-park.test.js +253 -0
- package/dist/runtime/query/__tests__/durable-question-park.test.js.map +1 -0
- package/dist/runtime/query/__tests__/durable-run-state.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/durable-run-state.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/durable-run-state.test.js +158 -0
- package/dist/runtime/query/__tests__/durable-run-state.test.js.map +1 -0
- package/dist/runtime/query/__tests__/executor-plugin-hooks.test.js +24 -20
- package/dist/runtime/query/__tests__/executor-plugin-hooks.test.js.map +1 -1
- package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.js +187 -0
- package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.js.map +1 -0
- package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.js +95 -0
- package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.js.map +1 -0
- package/dist/runtime/query/__tests__/guardrails-e2e.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/guardrails-e2e.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/guardrails-e2e.test.js +132 -0
- package/dist/runtime/query/__tests__/guardrails-e2e.test.js.map +1 -0
- package/dist/runtime/query/__tests__/guardrails.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/guardrails.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/guardrails.test.js +163 -0
- package/dist/runtime/query/__tests__/guardrails.test.js.map +1 -0
- package/dist/runtime/query/__tests__/hook-model-visibility.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/hook-model-visibility.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/hook-model-visibility.test.js +119 -0
- package/dist/runtime/query/__tests__/hook-model-visibility.test.js.map +1 -0
- package/dist/runtime/query/__tests__/long-document-flow.test.js +21 -14
- package/dist/runtime/query/__tests__/long-document-flow.test.js.map +1 -1
- package/dist/runtime/query/__tests__/memory-promotion.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/memory-promotion.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/memory-promotion.test.js +119 -0
- package/dist/runtime/query/__tests__/memory-promotion.test.js.map +1 -0
- package/dist/runtime/query/__tests__/orphan-task-turn-end.test.js +5 -27
- package/dist/runtime/query/__tests__/orphan-task-turn-end.test.js.map +1 -1
- package/dist/runtime/query/__tests__/overflow-relief.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/overflow-relief.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/overflow-relief.test.js +119 -0
- package/dist/runtime/query/__tests__/overflow-relief.test.js.map +1 -0
- package/dist/runtime/query/__tests__/partial-batch-resume.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/partial-batch-resume.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/partial-batch-resume.test.js +205 -0
- package/dist/runtime/query/__tests__/partial-batch-resume.test.js.map +1 -0
- package/dist/runtime/query/__tests__/plugin-hooks.test.js +0 -1
- package/dist/runtime/query/__tests__/plugin-hooks.test.js.map +1 -1
- package/dist/runtime/query/__tests__/prepare-step-chain.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/prepare-step-chain.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/prepare-step-chain.test.js +104 -0
- package/dist/runtime/query/__tests__/prepare-step-chain.test.js.map +1 -0
- package/dist/runtime/query/__tests__/prepare-step.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/prepare-step.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/prepare-step.test.js +194 -0
- package/dist/runtime/query/__tests__/prepare-step.test.js.map +1 -0
- package/dist/runtime/query/__tests__/probe-veto-is-error.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/probe-veto-is-error.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/probe-veto-is-error.test.js +111 -0
- package/dist/runtime/query/__tests__/probe-veto-is-error.test.js.map +1 -0
- package/dist/runtime/query/__tests__/prompt.test.js +1 -1
- package/dist/runtime/query/__tests__/prompt.test.js.map +1 -1
- package/dist/runtime/query/__tests__/provider-fault-pauses.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/provider-fault-pauses.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/provider-fault-pauses.test.js +86 -0
- package/dist/runtime/query/__tests__/provider-fault-pauses.test.js.map +1 -0
- package/dist/runtime/query/__tests__/reasoning-stream.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/reasoning-stream.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/reasoning-stream.test.js +146 -0
- package/dist/runtime/query/__tests__/reasoning-stream.test.js.map +1 -0
- package/dist/runtime/query/__tests__/recoverable-settle.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/recoverable-settle.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/recoverable-settle.test.js +119 -0
- package/dist/runtime/query/__tests__/recoverable-settle.test.js.map +1 -0
- package/dist/runtime/query/__tests__/resume-budget.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/resume-budget.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/resume-budget.test.js +130 -0
- package/dist/runtime/query/__tests__/resume-budget.test.js.map +1 -0
- package/dist/runtime/query/__tests__/resume-pending.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/resume-pending.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/resume-pending.test.js +226 -0
- package/dist/runtime/query/__tests__/resume-pending.test.js.map +1 -0
- package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.js +89 -0
- package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.js.map +1 -0
- package/dist/runtime/query/__tests__/stop-condition.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/stop-condition.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/stop-condition.test.js +205 -0
- package/dist/runtime/query/__tests__/stop-condition.test.js.map +1 -0
- package/dist/runtime/query/__tests__/stream-recovery.test.js +1 -1
- package/dist/runtime/query/__tests__/stream-recovery.test.js.map +1 -1
- package/dist/runtime/query/__tests__/structured-output.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/structured-output.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/structured-output.test.js +219 -0
- package/dist/runtime/query/__tests__/structured-output.test.js.map +1 -0
- package/dist/runtime/query/__tests__/structured-run-failure.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/structured-run-failure.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/structured-run-failure.test.js +117 -0
- package/dist/runtime/query/__tests__/structured-run-failure.test.js.map +1 -0
- package/dist/runtime/query/__tests__/terminal-tool.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/terminal-tool.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/terminal-tool.test.js +119 -0
- package/dist/runtime/query/__tests__/terminal-tool.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-grants.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-grants.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-grants.test.js +85 -0
- package/dist/runtime/query/__tests__/tool-grants.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-output-budget.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-output-budget.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-output-budget.test.js +0 -0
- package/dist/runtime/query/__tests__/tool-output-budget.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-pause.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-pause.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-pause.test.js +165 -0
- package/dist/runtime/query/__tests__/tool-pause.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-progress.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-progress.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-progress.test.js +122 -0
- package/dist/runtime/query/__tests__/tool-progress.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-repair-retry.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-repair-retry.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-repair-retry.test.js +196 -0
- package/dist/runtime/query/__tests__/tool-repair-retry.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-result-wire.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-result-wire.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-result-wire.test.js +106 -0
- package/dist/runtime/query/__tests__/tool-result-wire.test.js.map +1 -0
- package/dist/runtime/query/__tests__/tool-timeout.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/tool-timeout.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/tool-timeout.test.js +184 -0
- package/dist/runtime/query/__tests__/tool-timeout.test.js.map +1 -0
- package/dist/runtime/query/__tests__/trace-parenting.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/trace-parenting.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/trace-parenting.test.js +111 -0
- package/dist/runtime/query/__tests__/trace-parenting.test.js.map +1 -0
- package/dist/runtime/query/__tests__/wiring-seams.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/wiring-seams.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/wiring-seams.test.js +237 -0
- package/dist/runtime/query/__tests__/wiring-seams.test.js.map +1 -0
- package/dist/runtime/query/checkpoint.d.ts +124 -6
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +207 -6
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/events.js +2 -2
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +224 -7
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +664 -37
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/guard.d.ts +18 -0
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +16 -1
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/guardrail-presets.d.ts +36 -0
- package/dist/runtime/query/guardrail-presets.d.ts.map +1 -0
- package/dist/runtime/query/guardrail-presets.js +96 -0
- package/dist/runtime/query/guardrail-presets.js.map +1 -0
- package/dist/runtime/query/guardrails.d.ts +35 -0
- package/dist/runtime/query/guardrails.d.ts.map +1 -0
- package/dist/runtime/query/guardrails.js +102 -0
- package/dist/runtime/query/guardrails.js.map +1 -0
- package/dist/runtime/query/index.d.ts +213 -2
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +458 -10
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.d.ts +2 -0
- package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.js +131 -0
- package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.js.map +1 -0
- package/dist/runtime/query/iteration/index.d.ts +76 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +578 -25
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.js +14 -2
- package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.test.d.ts +1 -1
- package/dist/runtime/query/iteration/phases/advisory.test.js +4 -1
- package/dist/runtime/query/iteration/phases/advisory.test.js.map +1 -1
- package/dist/runtime/query/iteration/phases/checkpoint.js +2 -2
- package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction-safe-cut.test.js +1 -1
- package/dist/runtime/query/iteration/phases/compaction-safe-cut.test.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts +22 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +297 -64
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context-measurement.test.d.ts +21 -0
- package/dist/runtime/query/iteration/phases/context-measurement.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/context-measurement.test.js +161 -0
- package/dist/runtime/query/iteration/phases/context-measurement.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/context.d.ts +62 -2
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js +87 -0
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/hitl-answer-question.test.js +3 -1
- package/dist/runtime/query/iteration/phases/hitl-answer-question.test.js.map +1 -1
- package/dist/runtime/query/iteration/phases/overflow-escalation.test.d.ts +15 -0
- package/dist/runtime/query/iteration/phases/overflow-escalation.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/overflow-escalation.test.js +130 -0
- package/dist/runtime/query/iteration/phases/overflow-escalation.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/plan.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/plan.js +8 -2
- package/dist/runtime/query/iteration/phases/plan.js.map +1 -1
- package/dist/runtime/query/iteration/phases/retained-messages.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/retained-messages.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/retained-messages.test.js +180 -0
- package/dist/runtime/query/iteration/phases/retained-messages.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/tool-review-denials.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/tool-review-denials.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/tool-review-denials.test.js +224 -0
- package/dist/runtime/query/iteration/phases/tool-review-denials.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/tool-review.d.ts +29 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +114 -44
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/phases/working-memory-compaction.test.js +20 -9
- package/dist/runtime/query/iteration/phases/working-memory-compaction.test.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts +2 -26
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +254 -16
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
- package/dist/runtime/query/plugin-hooks.js +6 -2
- package/dist/runtime/query/plugin-hooks.js.map +1 -1
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +25 -1
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/runtime/query/question-park.d.ts +85 -0
- package/dist/runtime/query/question-park.d.ts.map +1 -0
- package/dist/runtime/query/question-park.js +71 -0
- package/dist/runtime/query/question-park.js.map +1 -0
- package/dist/runtime/query/result.d.ts +9 -0
- package/dist/runtime/query/result.d.ts.map +1 -1
- package/dist/runtime/query/result.js +49 -0
- package/dist/runtime/query/result.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts +106 -0
- package/dist/runtime/query/resume-pending.d.ts.map +1 -0
- package/dist/runtime/query/resume-pending.js +312 -0
- package/dist/runtime/query/resume-pending.js.map +1 -0
- package/dist/runtime/query/run-state.d.ts +52 -0
- package/dist/runtime/query/run-state.d.ts.map +1 -0
- package/dist/runtime/query/run-state.js +87 -0
- package/dist/runtime/query/run-state.js.map +1 -0
- package/dist/runtime/query/tool-grants.d.ts +44 -0
- package/dist/runtime/query/tool-grants.d.ts.map +1 -0
- package/dist/runtime/query/tool-grants.js +63 -0
- package/dist/runtime/query/tool-grants.js.map +1 -0
- package/dist/runtime/query/tool-output-budget.d.ts +83 -0
- package/dist/runtime/query/tool-output-budget.d.ts.map +1 -0
- package/dist/runtime/query/tool-output-budget.js +147 -0
- package/dist/runtime/query/tool-output-budget.js.map +1 -0
- package/dist/runtime/query/tool-pause.d.ts +41 -0
- package/dist/runtime/query/tool-pause.d.ts.map +1 -0
- package/dist/runtime/query/tool-pause.js +94 -0
- package/dist/runtime/query/tool-pause.js.map +1 -0
- package/dist/runtime/query/tooling.d.ts +10 -1
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +13 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/sandbox/__tests__/isolation.test.d.ts +2 -0
- package/dist/sandbox/__tests__/isolation.test.d.ts.map +1 -0
- package/dist/sandbox/__tests__/isolation.test.js +139 -0
- package/dist/sandbox/__tests__/isolation.test.js.map +1 -0
- package/dist/sandbox/__tests__/output-truncation.test.d.ts +2 -0
- package/dist/sandbox/__tests__/output-truncation.test.d.ts.map +1 -0
- package/dist/sandbox/__tests__/output-truncation.test.js +88 -0
- package/dist/sandbox/__tests__/output-truncation.test.js.map +1 -0
- package/dist/sandbox/__tests__/resource-limits.test.d.ts +2 -0
- package/dist/sandbox/__tests__/resource-limits.test.d.ts.map +1 -0
- package/dist/sandbox/__tests__/resource-limits.test.js +86 -0
- package/dist/sandbox/__tests__/resource-limits.test.js.map +1 -0
- package/dist/sandbox/factory.js +1 -1
- package/dist/sandbox/factory.js.map +1 -1
- package/dist/sandbox/index.d.ts +2 -0
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +1 -0
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/isolation.d.ts +15 -0
- package/dist/sandbox/isolation.d.ts.map +1 -0
- package/dist/sandbox/isolation.js +53 -0
- package/dist/sandbox/isolation.js.map +1 -0
- package/dist/sandbox/provider/local.d.ts +51 -2
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +139 -69
- package/dist/sandbox/provider/local.js.map +1 -1
- package/dist/session/__tests__/integration/spawn-rollback.test.d.ts +1 -1
- package/dist/session/__tests__/integration/spawn-rollback.test.js +1 -1
- package/dist/session/handoff/broadcast.js +3 -3
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/migration/__tests__/filesystem.test.js +5 -1
- package/dist/session/migration/__tests__/filesystem.test.js.map +1 -1
- package/dist/session/migration/filesystem.d.ts.map +1 -1
- package/dist/session/migration/filesystem.js +7 -13
- package/dist/session/migration/filesystem.js.map +1 -1
- package/dist/session/migration/marker.d.ts.map +1 -1
- package/dist/session/migration/marker.js +5 -10
- package/dist/session/migration/marker.js.map +1 -1
- package/dist/session/retention/disk-backend.d.ts.map +1 -1
- package/dist/session/retention/disk-backend.js +5 -12
- package/dist/session/retention/disk-backend.js.map +1 -1
- package/dist/session/workspace/__tests__/git-worktree.test.js +6 -2
- package/dist/session/workspace/__tests__/git-worktree.test.js.map +1 -1
- package/dist/session/workspace/__tests__/shared-run.test.js +15 -0
- package/dist/session/workspace/__tests__/shared-run.test.js.map +1 -1
- package/dist/session/workspace/shared-run.js +8 -1
- package/dist/session/workspace/shared-run.js.map +1 -1
- package/dist/skills/__tests__/frontmatter.test.d.ts +2 -0
- package/dist/skills/__tests__/frontmatter.test.d.ts.map +1 -0
- package/dist/skills/__tests__/frontmatter.test.js +106 -0
- package/dist/skills/__tests__/frontmatter.test.js.map +1 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +42 -3
- package/dist/skills/loader.js.map +1 -1
- package/dist/store/__tests__/checkpoint-integrity.test.d.ts +2 -0
- package/dist/store/__tests__/checkpoint-integrity.test.d.ts.map +1 -0
- package/dist/store/__tests__/checkpoint-integrity.test.js +112 -0
- package/dist/store/__tests__/checkpoint-integrity.test.js.map +1 -0
- package/dist/store/__tests__/checkpoint-versioning.test.d.ts +2 -0
- package/dist/store/__tests__/checkpoint-versioning.test.d.ts.map +1 -0
- package/dist/store/__tests__/checkpoint-versioning.test.js +151 -0
- package/dist/store/__tests__/checkpoint-versioning.test.js.map +1 -0
- package/dist/store/__tests__/schema-adoption.test.d.ts +2 -0
- package/dist/store/__tests__/schema-adoption.test.d.ts.map +1 -0
- package/dist/store/__tests__/schema-adoption.test.js +90 -0
- package/dist/store/__tests__/schema-adoption.test.js.map +1 -0
- package/dist/store/__tests__/schema.test.d.ts +2 -0
- package/dist/store/__tests__/schema.test.d.ts.map +1 -0
- package/dist/store/__tests__/schema.test.js +93 -0
- package/dist/store/__tests__/schema.test.js.map +1 -0
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +16 -16
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/disk.d.ts +23 -0
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +148 -23
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/schema.d.ts +73 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/schema.js +103 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +25 -13
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/task/__tests__/lookup-across-runs.test.d.ts +2 -0
- package/dist/store/task/__tests__/lookup-across-runs.test.d.ts.map +1 -0
- package/dist/store/task/__tests__/lookup-across-runs.test.js +60 -0
- package/dist/store/task/__tests__/lookup-across-runs.test.js.map +1 -0
- package/dist/store/task/disk.d.ts +18 -0
- package/dist/store/task/disk.d.ts.map +1 -1
- package/dist/store/task/disk.js +61 -16
- package/dist/store/task/disk.js.map +1 -1
- package/dist/store/thread/disk.d.ts.map +1 -1
- package/dist/store/thread/disk.js +20 -11
- package/dist/store/thread/disk.js.map +1 -1
- package/dist/streaming/coalesce.d.ts +1 -1
- package/dist/streaming/coalesce.js +1 -1
- package/dist/telemetry/__tests__/latency-instruments.test.d.ts +2 -0
- package/dist/telemetry/__tests__/latency-instruments.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/latency-instruments.test.js +82 -0
- package/dist/telemetry/__tests__/latency-instruments.test.js.map +1 -0
- package/dist/telemetry/__tests__/metrics.test.d.ts +2 -0
- package/dist/telemetry/__tests__/metrics.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/metrics.test.js +112 -0
- package/dist/telemetry/__tests__/metrics.test.js.map +1 -0
- package/dist/telemetry/__tests__/span-hierarchy.test.d.ts +2 -0
- package/dist/telemetry/__tests__/span-hierarchy.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/span-hierarchy.test.js +84 -0
- package/dist/telemetry/__tests__/span-hierarchy.test.js.map +1 -0
- package/dist/telemetry/attributes.d.ts +44 -0
- package/dist/telemetry/attributes.d.ts.map +1 -1
- package/dist/telemetry/attributes.js +80 -0
- package/dist/telemetry/attributes.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +41 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +160 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/test-setup.d.ts +3 -3
- package/dist/test-setup.js +3 -3
- package/dist/test-support/paths.d.ts +14 -0
- package/dist/test-support/paths.d.ts.map +1 -0
- package/dist/test-support/paths.js +16 -0
- package/dist/test-support/paths.js.map +1 -0
- package/dist/tools/__tests__/path-containment.test.d.ts +2 -0
- package/dist/tools/__tests__/path-containment.test.d.ts.map +1 -0
- package/dist/tools/__tests__/path-containment.test.js +133 -0
- package/dist/tools/__tests__/path-containment.test.js.map +1 -0
- package/dist/tools/__tests__/posix-path.test.d.ts +2 -0
- package/dist/tools/__tests__/posix-path.test.d.ts.map +1 -0
- package/dist/tools/__tests__/posix-path.test.js +67 -0
- package/dist/tools/__tests__/posix-path.test.js.map +1 -0
- package/dist/tools/__tests__/sandboxed-search.test.d.ts +2 -0
- package/dist/tools/__tests__/sandboxed-search.test.d.ts.map +1 -0
- package/dist/tools/__tests__/sandboxed-search.test.js +114 -0
- package/dist/tools/__tests__/sandboxed-search.test.js.map +1 -0
- package/dist/tools/builtins/__tests__/computer-use.test.js +12 -2
- package/dist/tools/builtins/__tests__/computer-use.test.js.map +1 -1
- package/dist/tools/builtins/__tests__/edit.test.js +0 -54
- package/dist/tools/builtins/__tests__/edit.test.js.map +1 -1
- package/dist/tools/builtins/__tests__/read-file.test.js +23 -1
- package/dist/tools/builtins/__tests__/read-file.test.js.map +1 -1
- package/dist/tools/builtins/atomic-write-file.d.ts +13 -0
- package/dist/tools/builtins/atomic-write-file.d.ts.map +1 -0
- package/dist/tools/builtins/atomic-write-file.js +46 -0
- package/dist/tools/builtins/atomic-write-file.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +31 -2
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/computer-use.d.ts +22 -22
- package/dist/tools/builtins/computer-use.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js +7 -1
- package/dist/tools/builtins/computer-use.js.map +1 -1
- package/dist/tools/builtins/edit.d.ts +1 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +13 -11
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/file-mutation-lock.d.ts +7 -0
- package/dist/tools/builtins/file-mutation-lock.d.ts.map +1 -0
- package/dist/tools/builtins/file-mutation-lock.js +25 -0
- package/dist/tools/builtins/file-mutation-lock.js.map +1 -0
- package/dist/tools/builtins/glob.d.ts +1 -1
- package/dist/tools/builtins/glob.d.ts.map +1 -1
- package/dist/tools/builtins/glob.js +63 -6
- package/dist/tools/builtins/glob.js.map +1 -1
- package/dist/tools/builtins/grep.d.ts.map +1 -1
- package/dist/tools/builtins/grep.js +61 -8
- package/dist/tools/builtins/grep.js.map +1 -1
- package/dist/tools/builtins/index.js +6 -6
- package/dist/tools/builtins/index.js.map +1 -1
- package/dist/tools/builtins/ls.d.ts.map +1 -1
- package/dist/tools/builtins/ls.js +4 -2
- package/dist/tools/builtins/ls.js.map +1 -1
- package/dist/tools/builtins/read-file.d.ts +1 -1
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +38 -4
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/coordinator/__tests__/agent.test.d.ts +1 -1
- package/dist/tools/coordinator/__tests__/agent.test.js +2 -2
- package/dist/tools/coordinator/__tests__/agent.test.js.map +1 -1
- package/dist/tools/coordinator/agent.d.ts +20 -9
- package/dist/tools/coordinator/agent.d.ts.map +1 -1
- package/dist/tools/coordinator/agent.js +2 -1
- package/dist/tools/coordinator/agent.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts +20 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +80 -32
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/defineTool.d.ts +18 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +6 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/glob-match.d.ts +18 -0
- package/dist/tools/glob-match.d.ts.map +1 -0
- package/dist/tools/glob-match.js +50 -0
- package/dist/tools/glob-match.js.map +1 -0
- package/dist/tools/paths.d.ts +20 -0
- package/dist/tools/paths.d.ts.map +1 -0
- package/dist/tools/paths.js +41 -0
- package/dist/tools/paths.js.map +1 -0
- package/dist/tools/posix-path.d.ts +24 -0
- package/dist/tools/posix-path.d.ts.map +1 -0
- package/dist/tools/posix-path.js +67 -0
- package/dist/tools/posix-path.js.map +1 -0
- package/dist/types/advisory/config.d.ts +21 -3
- package/dist/types/advisory/config.d.ts.map +1 -1
- package/dist/types/advisory/result.d.ts +12 -10
- package/dist/types/advisory/result.d.ts.map +1 -1
- package/dist/types/agent/base.d.ts +20 -2
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/factory.d.ts +15 -9
- package/dist/types/agent/factory.d.ts.map +1 -1
- package/dist/types/agent/gateway.d.ts +18 -0
- package/dist/types/agent/gateway.d.ts.map +1 -1
- package/dist/types/agent/manager.d.ts +19 -0
- package/dist/types/agent/manager.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +48 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/router.d.ts +11 -0
- package/dist/types/agent/router.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +2 -2
- package/dist/types/agent/task.d.ts +24 -0
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/bidi/index.d.ts +140 -0
- package/dist/types/bidi/index.d.ts.map +1 -0
- package/dist/types/bidi/index.js +2 -0
- package/dist/types/bidi/index.js.map +1 -0
- package/dist/types/common/__tests__/numeric-correctness.test.d.ts +2 -0
- package/dist/types/common/__tests__/numeric-correctness.test.d.ts.map +1 -0
- package/dist/types/common/__tests__/numeric-correctness.test.js +108 -0
- package/dist/types/common/__tests__/numeric-correctness.test.js.map +1 -0
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/common/index.d.ts.map +1 -1
- package/dist/types/common/index.js +15 -4
- package/dist/types/common/index.js.map +1 -1
- package/dist/types/connector/mcp.d.ts +29 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/errors/__tests__/catalog.test.d.ts +2 -0
- package/dist/types/errors/__tests__/catalog.test.d.ts.map +1 -0
- package/dist/types/errors/__tests__/catalog.test.js +106 -0
- package/dist/types/errors/__tests__/catalog.test.js.map +1 -0
- package/dist/types/errors/__tests__/errors.test.d.ts +2 -0
- package/dist/types/errors/__tests__/errors.test.d.ts.map +1 -0
- package/dist/types/errors/__tests__/errors.test.js +104 -0
- package/dist/types/errors/__tests__/errors.test.js.map +1 -0
- package/dist/types/errors/catalog.d.ts +83 -0
- package/dist/types/errors/catalog.d.ts.map +1 -0
- package/dist/types/errors/catalog.js +148 -0
- package/dist/types/errors/catalog.js.map +1 -0
- package/dist/types/errors/index.d.ts +73 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/errors/index.js +70 -0
- package/dist/types/errors/index.js.map +1 -0
- package/dist/types/guardrail/index.d.ts +57 -0
- package/dist/types/guardrail/index.d.ts.map +1 -0
- package/dist/types/guardrail/index.js +2 -0
- package/dist/types/guardrail/index.js.map +1 -0
- package/dist/types/hitl/index.d.ts +97 -14
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/ids/index.d.ts +2 -2
- package/dist/types/message/content.d.ts +22 -0
- package/dist/types/message/content.d.ts.map +1 -0
- package/dist/types/message/content.js +49 -0
- package/dist/types/message/content.js.map +1 -0
- package/dist/types/message/index.d.ts +193 -8
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +19 -4
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +78 -3
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js +0 -1
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/provider/__tests__/cause-chain.test.d.ts +2 -0
- package/dist/types/provider/__tests__/cause-chain.test.d.ts.map +1 -0
- package/dist/types/provider/__tests__/cause-chain.test.js +108 -0
- package/dist/types/provider/__tests__/cause-chain.test.js.map +1 -0
- package/dist/types/provider/__tests__/declared-retryable.test.d.ts +2 -0
- package/dist/types/provider/__tests__/declared-retryable.test.d.ts.map +1 -0
- package/dist/types/provider/__tests__/declared-retryable.test.js +70 -0
- package/dist/types/provider/__tests__/declared-retryable.test.js.map +1 -0
- package/dist/types/provider/__tests__/overflow-classification.test.d.ts +2 -0
- package/dist/types/provider/__tests__/overflow-classification.test.d.ts.map +1 -0
- package/dist/types/provider/__tests__/overflow-classification.test.js +80 -0
- package/dist/types/provider/__tests__/overflow-classification.test.js.map +1 -0
- package/dist/types/provider/chat.d.ts +36 -1
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/config.d.ts +83 -2
- package/dist/types/provider/config.d.ts.map +1 -1
- package/dist/types/provider/errors.d.ts +102 -0
- package/dist/types/provider/errors.d.ts.map +1 -0
- package/dist/types/provider/errors.js +393 -0
- package/dist/types/provider/errors.js.map +1 -0
- package/dist/types/provider/index.d.ts +3 -2
- package/dist/types/provider/index.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +59 -3
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/rag/embedding.d.ts +11 -2
- package/dist/types/rag/embedding.d.ts.map +1 -1
- package/dist/types/run/__tests__/step.test.d.ts +2 -0
- package/dist/types/run/__tests__/step.test.d.ts.map +1 -0
- package/dist/types/run/__tests__/step.test.js +107 -0
- package/dist/types/run/__tests__/step.test.js.map +1 -0
- package/dist/types/run/answer-review.d.ts +46 -0
- package/dist/types/run/answer-review.d.ts.map +1 -0
- package/dist/types/run/answer-review.js +2 -0
- package/dist/types/run/answer-review.js.map +1 -0
- package/dist/types/run/config.d.ts +33 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/derive-status.d.ts +29 -0
- package/dist/types/run/derive-status.d.ts.map +1 -0
- package/dist/types/run/derive-status.js +49 -0
- package/dist/types/run/derive-status.js.map +1 -0
- package/dist/types/run/entity.d.ts +16 -0
- package/dist/types/run/entity.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +228 -4
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js +7 -0
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/index.d.ts +5 -0
- package/dist/types/run/index.d.ts.map +1 -1
- package/dist/types/run/index.js +3 -0
- package/dist/types/run/index.js.map +1 -1
- package/dist/types/run/memory-promotion.d.ts +90 -0
- package/dist/types/run/memory-promotion.d.ts.map +1 -0
- package/dist/types/run/memory-promotion.js +38 -0
- package/dist/types/run/memory-promotion.js.map +1 -0
- package/dist/types/run/prepare-step.d.ts +100 -0
- package/dist/types/run/prepare-step.d.ts.map +1 -0
- package/dist/types/run/prepare-step.js +2 -0
- package/dist/types/run/prepare-step.js.map +1 -0
- package/dist/types/run/state.d.ts +85 -0
- package/dist/types/run/state.d.ts.map +1 -0
- package/dist/types/run/state.js +33 -0
- package/dist/types/run/state.js.map +1 -0
- package/dist/types/run/step.d.ts +77 -0
- package/dist/types/run/step.d.ts.map +1 -0
- package/dist/types/run/step.js +26 -0
- package/dist/types/run/step.js.map +1 -0
- package/dist/types/run/stop-reason.d.ts +31 -3
- package/dist/types/run/stop-reason.d.ts.map +1 -1
- package/dist/types/sandbox/index.d.ts +84 -8
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js +13 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/structured-output/index.d.ts +6 -5
- package/dist/types/structured-output/index.d.ts.map +1 -1
- package/dist/types/thread/entity.d.ts +2 -3
- package/dist/types/thread/entity.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +207 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/tool/repair.d.ts +49 -0
- package/dist/types/tool/repair.d.ts.map +1 -0
- package/dist/types/tool/repair.js +2 -0
- package/dist/types/tool/repair.js.map +1 -0
- package/dist/types/toolset/index.d.ts +2 -5
- package/dist/types/toolset/index.d.ts.map +1 -1
- package/dist/utils/__tests__/atomic-write.test.d.ts +2 -0
- package/dist/utils/__tests__/atomic-write.test.d.ts.map +1 -0
- package/dist/utils/__tests__/atomic-write.test.js +91 -0
- package/dist/utils/__tests__/atomic-write.test.js.map +1 -0
- package/dist/utils/__tests__/shell-compress.test.d.ts +2 -0
- package/dist/utils/__tests__/shell-compress.test.d.ts.map +1 -0
- package/dist/utils/__tests__/shell-compress.test.js +41 -0
- package/dist/utils/__tests__/shell-compress.test.js.map +1 -0
- package/dist/utils/atomic-write.d.ts +10 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/atomic-write.js +83 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/dist/utils/shell-compress.d.ts.map +1 -1
- package/dist/utils/shell-compress.js +12 -1
- package/dist/utils/shell-compress.js.map +1 -1
- package/dist/verification/presets.d.ts +6 -3
- package/dist/verification/presets.d.ts.map +1 -1
- package/dist/verification/presets.js +6 -3
- package/dist/verification/presets.js.map +1 -1
- package/package.json +4 -3
- package/src/__tests__/default-path-conformance.test.ts +306 -0
- package/src/__tests__/shipped-defaults.test.ts +111 -0
- package/src/advisory/__tests__/budget-enforcement.test.ts +208 -0
- package/src/advisory/__tests__/structured-response.test.ts +128 -0
- package/src/advisory/budget.ts +27 -0
- package/src/advisory/context.ts +19 -0
- package/src/advisory/executor.test.ts +12 -8
- package/src/advisory/executor.ts +37 -25
- package/src/advisory/index.ts +2 -0
- package/src/advisory/parse.ts +63 -0
- package/src/agents/AbstractAgent.ts +82 -0
- package/src/agents/PipelineAgent.ts +19 -0
- package/src/agents/ReactiveAgent.ts +47 -0
- package/src/agents/RouterAgent.ts +32 -2
- package/src/agents/SupervisorAgent.ts +31 -1
- package/src/agents/__tests__/idempotency-key.test.ts +177 -0
- package/src/agents/__tests__/invocation-lock.test.ts +154 -0
- package/src/agents/__tests__/reachability.test.ts +224 -0
- package/src/agents/__tests__/supervisor-ledger.test.ts +1 -1
- package/src/agents/index.ts +1 -1
- package/src/agents/lock.ts +0 -2
- package/src/bridge/a2a/late-events.test.ts +84 -0
- package/src/bridge/a2a/mapper.test.ts +1 -1
- package/src/bridge/a2a/mapper.ts +70 -5
- package/src/bridge/a2a/message.ts +5 -1
- package/src/bridge/sse/late-events.test.ts +182 -0
- package/src/bridge/sse/mapper.ts +109 -0
- package/src/compaction/__tests__/cleared-result-recovery.test.ts +118 -0
- package/src/compaction/__tests__/context-window.test.ts +77 -0
- package/src/compaction/__tests__/dangling.test.ts +16 -6
- package/src/compaction/__tests__/lossiness.test.ts +187 -0
- package/src/compaction/__tests__/state-across-resume.test.ts +99 -0
- package/src/compaction/__tests__/tool-result-editing.test.ts +213 -0
- package/src/compaction/__tests__/trim-opens-on-user.test.ts +118 -0
- package/src/compaction/__tests__/verifier-model.test.ts +83 -0
- package/src/compaction/context-window.ts +107 -0
- package/src/compaction/dangling.ts +48 -1
- package/src/compaction/extractor.ts +56 -1
- package/src/compaction/index.ts +16 -0
- package/src/compaction/manager.ts +53 -8
- package/src/compaction/managers/structured.ts +7 -6
- package/src/compaction/retention.ts +89 -0
- package/src/compaction/serializer.ts +42 -11
- package/src/compaction/tool-result-editing.ts +229 -0
- package/src/compaction/types.ts +10 -0
- package/src/compaction/verifier.ts +24 -1
- package/src/compaction/wire.ts +91 -0
- package/src/config/runtime.ts +63 -19
- package/src/connector/builtins/http.test.ts +13 -0
- package/src/connector/builtins/http.ts +15 -1
- package/src/connector/mcp/__tests__/discovery-policy.test.ts +133 -0
- package/src/connector/mcp/__tests__/list-pagination.test.ts +98 -0
- package/src/connector/mcp/__tests__/policy.test.ts +100 -0
- package/src/connector/mcp/__tests__/protocol-negotiation.test.ts +105 -0
- package/src/connector/mcp/__tests__/schema-fidelity.test.ts +250 -0
- package/src/connector/mcp/__tests__/structured-result.test.ts +143 -0
- package/src/connector/mcp/adapter.ts +306 -19
- package/src/connector/mcp/client.test.ts +159 -0
- package/src/connector/mcp/client.ts +160 -13
- package/src/connector/mcp/discovery.ts +74 -5
- package/src/connector/mcp/http-sse.ts +16 -1
- package/src/connector/mcp/index.ts +4 -0
- package/src/connector/mcp/policy.ts +134 -0
- package/src/connector/mcp/schema-refs.ts +126 -0
- package/src/constants/agent/index.ts +3 -0
- package/src/constants/compaction/index.ts +1 -1
- package/src/constants/continuation.ts +4 -4
- package/src/constants/mcp/index.ts +34 -0
- package/src/constants/plugin/index.ts +24 -2
- package/src/constants/sandbox/index.ts +6 -5
- package/src/constants/telemetry/index.ts +8 -0
- package/src/constants/tools/index.ts +20 -0
- package/src/contracts/api.ts +40 -0
- package/src/contracts/run-status.ts +43 -0
- package/src/eval/__tests__/case-deadline.test.ts +147 -0
- package/src/eval/__tests__/end-to-end.test.ts +259 -0
- package/src/eval/__tests__/harness-honesty.test.ts +99 -0
- package/src/eval/__tests__/harness.test.ts +249 -0
- package/src/eval/__tests__/judge.test.ts +306 -0
- package/src/eval/__tests__/scorer-gates.test.ts +156 -0
- package/src/eval/experiment.ts +335 -0
- package/src/eval/from-run.ts +48 -0
- package/src/eval/index.ts +21 -0
- package/src/eval/judge.ts +240 -0
- package/src/eval/scorers.ts +169 -0
- package/src/eval/types.ts +157 -0
- package/src/execution/local.test.ts +46 -0
- package/src/execution/local.ts +6 -1
- package/src/gateway/__tests__/list-survives-eviction.test.ts +124 -0
- package/src/gateway/local.ts +117 -3
- package/src/manager/agent/__tests__/dispose-cancels.test.ts +104 -0
- package/src/manager/agent/__tests__/lifecycle.test.ts +297 -0
- package/src/manager/agent/lifecycle.ts +127 -7
- package/src/manager/run/persistence.ts +132 -1
- package/src/plugin/__tests__/enable-contributions.test.ts +3 -3
- package/src/plugin/__tests__/hook-ordering.test.ts +252 -0
- package/src/plugin/__tests__/install-time-refusal.test.ts +68 -0
- package/src/plugin/__tests__/lifecycle.test.ts +95 -73
- package/src/plugin/lifecycle.ts +76 -22
- package/src/plugin/loader.ts +37 -1
- package/src/probe/registry.test.ts +49 -6
- package/src/probe/registry.ts +21 -1
- package/src/provider/__tests__/mock-script.test.ts +179 -0
- package/src/provider/__tests__/registry.test.ts +1 -1
- package/src/provider/__tests__/retry-visibility.test.ts +160 -0
- package/src/provider/__tests__/retry.test.ts +296 -0
- package/src/provider/capabilities.ts +4 -0
- package/src/provider/collect.test.ts +1 -1
- package/src/provider/collect.ts +1 -1
- package/src/provider/index.ts +8 -0
- package/src/provider/mock-register.ts +5 -2
- package/src/provider/mock.ts +117 -34
- package/src/provider/retry.ts +199 -0
- package/src/public-runtime.ts +111 -7
- package/src/public-types.ts +5 -1
- package/src/rag/__tests__/retrieval-math.test.ts +54 -0
- package/src/rag/chunking.ts +32 -1
- package/src/rag/embedding.test.ts +65 -10
- package/src/rag/embedding.ts +26 -5
- package/src/rag/index.ts +1 -1
- package/src/rag/retriever.ts +92 -21
- package/src/rag/vector-store.test.ts +2 -2
- package/src/registry/ManagedRegistry.test.ts +1 -1
- package/src/registry/Registry.test.ts +1 -1
- package/src/registry/connector/definitions.test.ts +1 -1
- package/src/registry/tool/__tests__/schema.test.ts +208 -0
- package/src/registry/tool/__tests__/tool-name-validation.test.ts +88 -0
- package/src/registry/tool/execute.test.ts +107 -7
- package/src/registry/tool/execute.ts +133 -16
- package/src/registry/tool/schema.ts +80 -0
- package/src/registry/toolset/catalog.test.ts +118 -1
- package/src/registry/toolset/catalog.ts +26 -5
- package/src/run/reporter.ts +84 -0
- package/src/runtime/bidi/__tests__/session.test.ts +232 -0
- package/src/runtime/bidi/index.ts +4 -0
- package/src/runtime/bidi/mock.ts +90 -0
- package/src/runtime/bidi/session.ts +205 -0
- package/src/runtime/decision/parser.test.ts +46 -0
- package/src/runtime/decision/parser.ts +8 -1
- package/src/runtime/query/__tests__/answer-review.test.ts +172 -0
- package/src/runtime/query/__tests__/capability-negotiation.test.ts +25 -41
- package/src/runtime/query/__tests__/checkpoint-store.test.ts +13 -50
- package/src/runtime/query/__tests__/checkpoint.test.ts +2 -10
- package/src/runtime/query/__tests__/citations.test.ts +111 -0
- package/src/runtime/query/__tests__/content-budget.test.ts +83 -0
- package/src/runtime/query/__tests__/context.test.ts +3 -2
- package/src/runtime/query/__tests__/deferred-tools.test.ts +23 -37
- package/src/runtime/query/__tests__/delegation-resume.test.ts +159 -0
- package/src/runtime/query/__tests__/document-attachments.test.ts +125 -0
- package/src/runtime/query/__tests__/durable-park-and-trace.test.ts +245 -0
- package/src/runtime/query/__tests__/durable-question-park.test.ts +305 -0
- package/src/runtime/query/__tests__/durable-run-state.test.ts +194 -0
- package/src/runtime/query/__tests__/executor-plugin-hooks.test.ts +24 -20
- package/src/runtime/query/__tests__/finish-reason-vs-tool-calls.test.ts +206 -0
- package/src/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.ts +115 -0
- package/src/runtime/query/__tests__/guardrails-e2e.test.ts +164 -0
- package/src/runtime/query/__tests__/guardrails.test.ts +236 -0
- package/src/runtime/query/__tests__/hook-model-visibility.test.ts +143 -0
- package/src/runtime/query/__tests__/long-document-flow.test.ts +21 -14
- package/src/runtime/query/__tests__/memory-promotion.test.ts +148 -0
- package/src/runtime/query/__tests__/orphan-task-turn-end.test.ts +5 -31
- package/src/runtime/query/__tests__/overflow-relief.test.ts +139 -0
- package/src/runtime/query/__tests__/partial-batch-resume.test.ts +264 -0
- package/src/runtime/query/__tests__/plugin-hooks.test.ts +0 -1
- package/src/runtime/query/__tests__/prepare-step-chain.test.ts +127 -0
- package/src/runtime/query/__tests__/prepare-step.test.ts +233 -0
- package/src/runtime/query/__tests__/probe-veto-is-error.test.ts +145 -0
- package/src/runtime/query/__tests__/prompt.test.ts +1 -1
- package/src/runtime/query/__tests__/provider-fault-pauses.test.ts +104 -0
- package/src/runtime/query/__tests__/reasoning-stream.test.ts +177 -0
- package/src/runtime/query/__tests__/recoverable-settle.test.ts +145 -0
- package/src/runtime/query/__tests__/resume-budget.test.ts +158 -0
- package/src/runtime/query/__tests__/resume-pending.test.ts +273 -0
- package/src/runtime/query/__tests__/rich-content-budget-wiring.test.ts +109 -0
- package/src/runtime/query/__tests__/stop-condition.test.ts +265 -0
- package/src/runtime/query/__tests__/stream-recovery.test.ts +1 -1
- package/src/runtime/query/__tests__/structured-output.test.ts +268 -0
- package/src/runtime/query/__tests__/structured-run-failure.test.ts +144 -0
- package/src/runtime/query/__tests__/terminal-tool.test.ts +148 -0
- package/src/runtime/query/__tests__/tool-grants.test.ts +102 -0
- package/src/runtime/query/__tests__/tool-output-budget.test.ts +0 -0
- package/src/runtime/query/__tests__/tool-pause.test.ts +209 -0
- package/src/runtime/query/__tests__/tool-progress.test.ts +154 -0
- package/src/runtime/query/__tests__/tool-repair-retry.test.ts +255 -0
- package/src/runtime/query/__tests__/tool-result-wire.test.ts +135 -0
- package/src/runtime/query/__tests__/tool-timeout.test.ts +230 -0
- package/src/runtime/query/__tests__/trace-parenting.test.ts +128 -0
- package/src/runtime/query/__tests__/wiring-seams.test.ts +288 -0
- package/src/runtime/query/checkpoint.ts +242 -10
- package/src/runtime/query/events.ts +2 -2
- package/src/runtime/query/executor.ts +849 -41
- package/src/runtime/query/guard.ts +26 -1
- package/src/runtime/query/guardrail-presets.ts +124 -0
- package/src/runtime/query/guardrails.ts +144 -0
- package/src/runtime/query/index.ts +759 -12
- package/src/runtime/query/iteration/__tests__/cancel-settles-turn.test.ts +177 -0
- package/src/runtime/query/iteration/index.ts +658 -27
- package/src/runtime/query/iteration/phases/advisory.test.ts +4 -1
- package/src/runtime/query/iteration/phases/advisory.ts +14 -2
- package/src/runtime/query/iteration/phases/checkpoint.ts +2 -2
- package/src/runtime/query/iteration/phases/compaction-safe-cut.test.ts +3 -1
- package/src/runtime/query/iteration/phases/compaction.ts +329 -64
- package/src/runtime/query/iteration/phases/context-measurement.test.ts +196 -0
- package/src/runtime/query/iteration/phases/context.ts +155 -2
- package/src/runtime/query/iteration/phases/hitl-answer-question.test.ts +3 -1
- package/src/runtime/query/iteration/phases/overflow-escalation.test.ts +167 -0
- package/src/runtime/query/iteration/phases/plan.ts +10 -2
- package/src/runtime/query/iteration/phases/retained-messages.test.ts +226 -0
- package/src/runtime/query/iteration/phases/tool-review-denials.test.ts +270 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +140 -51
- package/src/runtime/query/iteration/phases/working-memory-compaction.test.ts +21 -9
- package/src/runtime/query/iteration/stream-turn.ts +285 -15
- package/src/runtime/query/plugin-hooks.ts +6 -2
- package/src/runtime/query/prompt.ts +26 -1
- package/src/runtime/query/question-park.ts +120 -0
- package/src/runtime/query/result.ts +64 -0
- package/src/runtime/query/resume-pending.ts +394 -0
- package/src/runtime/query/run-state.ts +124 -0
- package/src/runtime/query/tool-grants.ts +83 -0
- package/src/runtime/query/tool-output-budget.ts +183 -0
- package/src/runtime/query/tool-pause.ts +119 -0
- package/src/runtime/query/tooling.ts +23 -1
- package/src/sandbox/__tests__/isolation.test.ts +164 -0
- package/src/sandbox/__tests__/output-truncation.test.ts +106 -0
- package/src/sandbox/__tests__/resource-limits.test.ts +106 -0
- package/src/sandbox/factory.ts +1 -1
- package/src/sandbox/index.ts +2 -0
- package/src/sandbox/isolation.ts +72 -0
- package/src/sandbox/provider/local.ts +173 -74
- package/src/session/__tests__/integration/spawn-rollback.test.ts +1 -1
- package/src/session/handoff/broadcast.ts +3 -3
- package/src/session/migration/__tests__/filesystem.test.ts +26 -19
- package/src/session/migration/filesystem.ts +7 -12
- package/src/session/migration/marker.ts +5 -9
- package/src/session/retention/disk-backend.ts +5 -11
- package/src/session/workspace/__tests__/git-worktree.test.ts +6 -2
- package/src/session/workspace/__tests__/shared-run.test.ts +18 -0
- package/src/session/workspace/shared-run.ts +7 -1
- package/src/skills/__tests__/frontmatter.test.ts +135 -0
- package/src/skills/loader.ts +47 -3
- package/src/store/__tests__/checkpoint-integrity.test.ts +134 -0
- package/src/store/__tests__/checkpoint-versioning.test.ts +194 -0
- package/src/store/__tests__/schema-adoption.test.ts +118 -0
- package/src/store/__tests__/schema.test.ts +119 -0
- package/src/store/memory/disk.ts +17 -16
- package/src/store/run/disk.ts +169 -22
- package/src/store/schema.ts +135 -0
- package/src/store/session/disk.ts +30 -21
- package/src/store/task/__tests__/lookup-across-runs.test.ts +77 -0
- package/src/store/task/disk.ts +59 -15
- package/src/store/thread/disk.ts +21 -10
- package/src/streaming/coalesce.ts +1 -1
- package/src/telemetry/__tests__/latency-instruments.test.ts +120 -0
- package/src/telemetry/__tests__/metrics.test.ts +160 -0
- package/src/telemetry/__tests__/span-hierarchy.test.ts +94 -0
- package/src/telemetry/attributes.ts +109 -0
- package/src/telemetry/metrics.ts +190 -0
- package/src/test-setup.ts +3 -3
- package/src/test-support/paths.ts +17 -0
- package/src/tools/__tests__/path-containment.test.ts +167 -0
- package/src/tools/__tests__/posix-path.test.ts +83 -0
- package/src/tools/__tests__/sandboxed-search.test.ts +140 -0
- package/src/tools/builtins/__tests__/computer-use.test.ts +15 -2
- package/src/tools/builtins/__tests__/edit.test.ts +0 -76
- package/src/tools/builtins/__tests__/read-file.test.ts +29 -1
- package/src/tools/builtins/atomic-write-file.ts +58 -0
- package/src/tools/builtins/bash.ts +32 -2
- package/src/tools/builtins/computer-use.ts +7 -1
- package/src/tools/builtins/edit.ts +12 -12
- package/src/tools/builtins/file-mutation-lock.ts +27 -0
- package/src/tools/builtins/glob.ts +71 -6
- package/src/tools/builtins/grep.ts +82 -8
- package/src/tools/builtins/index.ts +6 -6
- package/src/tools/builtins/ls.ts +4 -2
- package/src/tools/builtins/read-file.ts +40 -4
- package/src/tools/coordinator/__tests__/agent.test.ts +2 -2
- package/src/tools/coordinator/agent.ts +23 -10
- package/src/tools/coordinator/index.ts +111 -31
- package/src/tools/defineTool.ts +24 -0
- package/src/tools/glob-match.ts +50 -0
- package/src/tools/paths.ts +44 -0
- package/src/tools/posix-path.ts +73 -0
- package/src/types/advisory/config.ts +21 -3
- package/src/types/advisory/result.ts +12 -7
- package/src/types/agent/base.ts +22 -2
- package/src/types/agent/factory.ts +15 -9
- package/src/types/agent/gateway.ts +20 -0
- package/src/types/agent/manager.ts +19 -0
- package/src/types/agent/reactive.ts +50 -0
- package/src/types/agent/router.ts +11 -0
- package/src/types/agent/supervisor.ts +2 -2
- package/src/types/agent/task.ts +26 -0
- package/src/types/bidi/index.ts +119 -0
- package/src/types/common/__tests__/numeric-correctness.test.ts +123 -0
- package/src/types/common/index.ts +16 -4
- package/src/types/computer-use/index.ts +1 -1
- package/src/types/connector/mcp.ts +29 -0
- package/src/types/errors/__tests__/catalog.test.ts +130 -0
- package/src/types/errors/__tests__/errors.test.ts +118 -0
- package/src/types/errors/catalog.ts +211 -0
- package/src/types/errors/index.ts +121 -0
- package/src/types/guardrail/index.ts +62 -0
- package/src/types/hitl/index.ts +102 -20
- package/src/types/ids/index.ts +2 -2
- package/src/types/message/content.ts +50 -0
- package/src/types/message/index.ts +210 -9
- package/src/types/plugin/index.ts +82 -2
- package/src/types/provider/__tests__/cause-chain.test.ts +132 -0
- package/src/types/provider/__tests__/declared-retryable.test.ts +85 -0
- package/src/types/provider/__tests__/overflow-classification.test.ts +113 -0
- package/src/types/provider/chat.ts +43 -2
- package/src/types/provider/config.ts +83 -2
- package/src/types/provider/errors.ts +472 -0
- package/src/types/provider/index.ts +5 -0
- package/src/types/provider/stream.ts +63 -3
- package/src/types/rag/embedding.ts +11 -2
- package/src/types/run/__tests__/step.test.ts +123 -0
- package/src/types/run/answer-review.ts +51 -0
- package/src/types/run/config.ts +35 -0
- package/src/types/run/derive-status.ts +62 -0
- package/src/types/run/entity.ts +18 -0
- package/src/types/run/events.ts +230 -3
- package/src/types/run/index.ts +5 -0
- package/src/types/run/memory-promotion.ts +112 -0
- package/src/types/run/prepare-step.ts +109 -0
- package/src/types/run/state.ts +111 -0
- package/src/types/run/step.ts +95 -0
- package/src/types/run/stop-reason.ts +29 -1
- package/src/types/sandbox/index.ts +95 -10
- package/src/types/structured-output/index.ts +6 -5
- package/src/types/thread/entity.ts +2 -3
- package/src/types/tool/index.ts +218 -1
- package/src/types/tool/repair.ts +54 -0
- package/src/types/toolset/index.ts +2 -6
- package/src/utils/__tests__/atomic-write.test.ts +108 -0
- package/src/utils/__tests__/shell-compress.test.ts +49 -0
- package/src/utils/atomic-write.ts +85 -0
- package/src/utils/shell-compress.ts +12 -1
- package/src/verification/presets.ts +6 -3
|
@@ -1,17 +1,42 @@
|
|
|
1
|
-
import { SpanStatusCode } from '@opentelemetry/api'
|
|
1
|
+
import { type Span, SpanStatusCode } from '@opentelemetry/api'
|
|
2
2
|
import { extractFromAssistantMessage } from '../../../compaction/extractor.js'
|
|
3
3
|
import { AUTO_CONTINUATION_USER_MESSAGE } from '../../../constants/continuation.js'
|
|
4
|
+
import {
|
|
5
|
+
DEFAULT_STRUCTURED_OUTPUT_RETRIES,
|
|
6
|
+
STRUCTURED_OUTPUT_REPROMPT,
|
|
7
|
+
} from '../../../constants/tools/index.js'
|
|
4
8
|
import { collect } from '../../../provider/collect.js'
|
|
5
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
GENAI,
|
|
11
|
+
NAMZU,
|
|
12
|
+
agentIterationSpanName,
|
|
13
|
+
parentContext,
|
|
14
|
+
} from '../../../telemetry/attributes.js'
|
|
6
15
|
import { getTracer } from '../../../telemetry/runtime-accessors.js'
|
|
7
|
-
import {
|
|
8
|
-
import type {
|
|
16
|
+
import { STRUCTURED_OUTPUT_TOOL_NAME } from '../../../tools/builtins/structuredOutput.js'
|
|
17
|
+
import type { CostInfo, TokenUsage } from '../../../types/common/index.js'
|
|
18
|
+
import type { MessageId } from '../../../types/ids/index.js'
|
|
19
|
+
import {
|
|
20
|
+
createAssistantMessage,
|
|
21
|
+
createSystemMessage,
|
|
22
|
+
createUserMessage,
|
|
23
|
+
} from '../../../types/message/index.js'
|
|
24
|
+
import { classifyProviderError } from '../../../types/provider/errors.js'
|
|
25
|
+
import type { ChatCompletionResponse } from '../../../types/provider/index.js'
|
|
26
|
+
import type { AnswerReview } from '../../../types/run/answer-review.js'
|
|
27
|
+
import type {
|
|
28
|
+
PrepareStepResult,
|
|
29
|
+
RunEvent,
|
|
30
|
+
StepResult,
|
|
31
|
+
StopReason,
|
|
32
|
+
} from '../../../types/run/index.js'
|
|
9
33
|
import { toErrorMessage } from '../../../utils/error.js'
|
|
10
34
|
import { generateMessageId } from '../../../utils/id.js'
|
|
35
|
+
import type { ToolCallOutcome } from '../executor.js'
|
|
11
36
|
import { applyLifecycleHookResults } from '../plugin-hooks.js'
|
|
12
37
|
import { runAdvisoryPhase } from './phases/advisory.js'
|
|
13
38
|
import { runIterationCheckpoint } from './phases/checkpoint.js'
|
|
14
|
-
import { runCompactionCheck } from './phases/compaction.js'
|
|
39
|
+
import { relieveOverflow, runCompactionCheck } from './phases/compaction.js'
|
|
15
40
|
import type { IterationContext } from './phases/index.js'
|
|
16
41
|
import { runPlanGate } from './phases/plan.js'
|
|
17
42
|
import { runToolReview } from './phases/tool-review.js'
|
|
@@ -22,18 +47,52 @@ export type { IterationContext } from './phases/index.js'
|
|
|
22
47
|
export type { PhaseSignal } from './phases/index.js'
|
|
23
48
|
export type { ToolReviewOutcome } from './phases/index.js'
|
|
24
49
|
|
|
50
|
+
/**
|
|
51
|
+
* How many times an answer may be handed back before the run stops.
|
|
52
|
+
*
|
|
53
|
+
* Bounded for the same reason the structured-output re-prompt is: a judge
|
|
54
|
+
* that never accepts would otherwise spend the whole token budget
|
|
55
|
+
* rediscovering that, and the run would end on a budget error rather than
|
|
56
|
+
* on the thing that actually went wrong.
|
|
57
|
+
*/
|
|
58
|
+
const DEFAULT_ANSWER_REVIEW_LIMIT = 3
|
|
59
|
+
|
|
25
60
|
export class IterationOrchestrator {
|
|
26
61
|
private ctx: IterationContext
|
|
62
|
+
/** Rejections so far. See {@link DEFAULT_ANSWER_REVIEW_LIMIT}. */
|
|
63
|
+
private answerReviewAttempts = 0
|
|
27
64
|
|
|
28
65
|
constructor(ctx: IterationContext) {
|
|
29
66
|
this.ctx = ctx
|
|
30
67
|
}
|
|
31
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Adopt the run's span after construction.
|
|
71
|
+
*
|
|
72
|
+
* The orchestrator is built before `query()` enters its generator body,
|
|
73
|
+
* which is where the run span is created — so the parent cannot be a
|
|
74
|
+
* constructor argument without reordering setup around one field.
|
|
75
|
+
*/
|
|
76
|
+
setRootSpan(span: Span): void {
|
|
77
|
+
this.ctx = { ...this.ctx, rootSpan: span }
|
|
78
|
+
}
|
|
79
|
+
|
|
32
80
|
async *runLoop(): AsyncGenerator<RunEvent> {
|
|
33
81
|
const { runConfig, runMgr } = this.ctx
|
|
34
82
|
const { model } = runConfig
|
|
35
83
|
const tracer = getTracer()
|
|
36
84
|
|
|
85
|
+
// One context-overflow relief per *stuck point*, not per run.
|
|
86
|
+
//
|
|
87
|
+
// The latch exists so that a second overflow immediately after a
|
|
88
|
+
// successful compaction — meaning the prompt is irreducible — stops
|
|
89
|
+
// instead of looping. It was never meant to disarm the mechanism for
|
|
90
|
+
// the rest of the run, which is what a run-scoped flag did: one
|
|
91
|
+
// relief at iteration 3 left iteration 40 to die on an overflow with
|
|
92
|
+
// obvious moves left. It is cleared by a turn that actually
|
|
93
|
+
// succeeded, which is the evidence that the run is no longer stuck.
|
|
94
|
+
let overflowRelieved = false
|
|
95
|
+
|
|
37
96
|
const planSignal = yield* runPlanGate(this.ctx)
|
|
38
97
|
if (planSignal === 'stop') return
|
|
39
98
|
|
|
@@ -80,7 +139,19 @@ export class IterationOrchestrator {
|
|
|
80
139
|
this.ctx.activityStore.start(iterationActivity.id)
|
|
81
140
|
}
|
|
82
141
|
|
|
83
|
-
|
|
142
|
+
// Parent explicitly: this body is an async generator, so the
|
|
143
|
+
// ambient context at resume time belongs to the CONSUMER, not to
|
|
144
|
+
// whoever created the run span. Without this every iteration
|
|
145
|
+
// emits as its own root and a 20-turn run shows up as 21
|
|
146
|
+
// disconnected traces.
|
|
147
|
+
const iterSpan = tracer.startSpan(
|
|
148
|
+
agentIterationSpanName(iterationNum),
|
|
149
|
+
{},
|
|
150
|
+
parentContext(this.ctx.rootSpan),
|
|
151
|
+
)
|
|
152
|
+
// Tool spans for this turn belong under this iteration.
|
|
153
|
+
this.ctx.toolExecutor.setParentSpan(iterSpan)
|
|
154
|
+
|
|
84
155
|
iterSpan.setAttributes({
|
|
85
156
|
[NAMZU.ITERATION]: iterationNum,
|
|
86
157
|
[NAMZU.RUN_ID]: runMgr.id,
|
|
@@ -117,9 +188,21 @@ export class IterationOrchestrator {
|
|
|
117
188
|
// entire prompt-cache prefix (tools render at position 0) and
|
|
118
189
|
// risks a 400 because the history still carries
|
|
119
190
|
// tool_use/tool_result blocks.
|
|
120
|
-
|
|
191
|
+
// Snapshot the cumulative counters so the step can report ITS
|
|
192
|
+
// own usage rather than the run total.
|
|
193
|
+
const stepStartedAt = Date.now()
|
|
194
|
+
const usageBefore = { ...runMgr.tokenUsage }
|
|
195
|
+
const costBefore = { ...runMgr.costInfo }
|
|
121
196
|
|
|
122
|
-
|
|
197
|
+
// Shape this step before calling the model. `stopWhen` decides
|
|
198
|
+
// whether to keep going; this decides HOW. No-op when the host
|
|
199
|
+
// supplied no hook.
|
|
200
|
+
const step = await this.prepareStep(iterationNum)
|
|
201
|
+
|
|
202
|
+
const llmTools = this.ctx.tools.toLLMTools(step.allowedTools ?? this.ctx.allowedTools)
|
|
203
|
+
const stepModel = step.model ?? model
|
|
204
|
+
|
|
205
|
+
const baseMessages = forceFinalize
|
|
123
206
|
? [
|
|
124
207
|
...runMgr.messages,
|
|
125
208
|
createUserMessage(
|
|
@@ -128,10 +211,41 @@ export class IterationOrchestrator {
|
|
|
128
211
|
]
|
|
129
212
|
: runMgr.messages
|
|
130
213
|
|
|
214
|
+
// Step guidance is appended to the REQUEST, never pushed onto
|
|
215
|
+
// the run's history: it applies to this step only, and pushing
|
|
216
|
+
// it would accumulate one stale instruction per iteration.
|
|
217
|
+
// Copy before it crosses the provider boundary. `runMgr.messages`
|
|
218
|
+
// is the LIVE run array, and the loop pushes onto it after the
|
|
219
|
+
// call returns — so a driver that retains what it was handed
|
|
220
|
+
// (to log it, cache it, or replay it on retry) watched its own
|
|
221
|
+
// input grow new turns underneath it. A capture provider in the
|
|
222
|
+
// estate recorded every turn as identical to the last for
|
|
223
|
+
// exactly this reason. Shallow is enough: the defect is array
|
|
224
|
+
// mutation, and per-iteration this is trivial next to the model
|
|
225
|
+
// call it precedes.
|
|
226
|
+
const messages = step.system
|
|
227
|
+
? [...baseMessages, createSystemMessage(step.system)]
|
|
228
|
+
: [...baseMessages]
|
|
229
|
+
|
|
131
230
|
if (this.ctx.pluginManager) {
|
|
132
231
|
const hookResults = await this.ctx.pluginManager.executeHooks(
|
|
133
232
|
'pre_llm_call',
|
|
134
|
-
{
|
|
233
|
+
{
|
|
234
|
+
runId: runMgr.id,
|
|
235
|
+
iteration: iterationNum,
|
|
236
|
+
// Built inside the guard: a run with no plugins installed
|
|
237
|
+
// pays nothing for a projection nobody reads.
|
|
238
|
+
request: Object.freeze({
|
|
239
|
+
model: stepModel,
|
|
240
|
+
// Copied per turn, not handed over live: these are the
|
|
241
|
+
// run's own message objects, and a hook writing into
|
|
242
|
+
// one would edit the history the run is about to send.
|
|
243
|
+
messages: Object.freeze(messages.map((m) => Object.freeze({ ...m }))),
|
|
244
|
+
toolNames: Object.freeze(llmTools.map((t) => t.function.name)),
|
|
245
|
+
temperature: step.temperature ?? runConfig.temperature,
|
|
246
|
+
maxTokens: step.maxResponseTokens ?? runConfig.maxResponseTokens,
|
|
247
|
+
}),
|
|
248
|
+
},
|
|
135
249
|
this.ctx.emitEvent,
|
|
136
250
|
)
|
|
137
251
|
applyLifecycleHookResults('pre_llm_call', hookResults)
|
|
@@ -146,16 +260,17 @@ export class IterationOrchestrator {
|
|
|
146
260
|
// aggregated `ChatCompletionResponse` for the legacy
|
|
147
261
|
// downstream paths (assistantMsg construction, working
|
|
148
262
|
// state extraction, telemetry attribute stamping).
|
|
149
|
-
const { response } = yield* streamProviderTurn(
|
|
263
|
+
const { response, messageId } = yield* streamProviderTurn(
|
|
150
264
|
this.ctx.provider,
|
|
151
265
|
{
|
|
152
|
-
model,
|
|
266
|
+
model: stepModel,
|
|
153
267
|
messages,
|
|
154
|
-
tools:
|
|
155
|
-
toolChoice: forceFinalize &&
|
|
156
|
-
temperature: runConfig.temperature,
|
|
157
|
-
maxTokens: runConfig.maxResponseTokens,
|
|
268
|
+
tools: llmTools.length > 0 ? llmTools : undefined,
|
|
269
|
+
toolChoice: forceFinalize && llmTools.length > 0 ? 'none' : undefined,
|
|
270
|
+
temperature: step.temperature ?? runConfig.temperature,
|
|
271
|
+
maxTokens: step.maxResponseTokens ?? runConfig.maxResponseTokens,
|
|
158
272
|
cacheControl: { type: 'auto' },
|
|
273
|
+
...(runConfig.thinking ? { thinking: runConfig.thinking } : {}),
|
|
159
274
|
// Thread the run abort into the model call so a Stop tears the
|
|
160
275
|
// in-flight turn down (provider passes it to fetch; the consumer
|
|
161
276
|
// also races it). Inert when never aborted.
|
|
@@ -167,14 +282,31 @@ export class IterationOrchestrator {
|
|
|
167
282
|
iterationNum,
|
|
168
283
|
forceFinalize,
|
|
169
284
|
this.ctx.log,
|
|
285
|
+
iterSpan,
|
|
170
286
|
)
|
|
171
287
|
|
|
172
|
-
|
|
288
|
+
// Main-loop turn: also records the prompt size compaction reads.
|
|
289
|
+
runMgr.recordTurnUsage(response.usage)
|
|
290
|
+
|
|
291
|
+
// The turn went through, so the run is not sitting on an
|
|
292
|
+
// irreducible prompt any more. Re-arm relief for the next one.
|
|
293
|
+
overflowRelieved = false
|
|
173
294
|
|
|
174
295
|
if (this.ctx.pluginManager) {
|
|
175
296
|
const hookResults = await this.ctx.pluginManager.executeHooks(
|
|
176
297
|
'post_llm_call',
|
|
177
|
-
{
|
|
298
|
+
{
|
|
299
|
+
runId: runMgr.id,
|
|
300
|
+
iteration: iterationNum,
|
|
301
|
+
response: Object.freeze({
|
|
302
|
+
content: response.message.content,
|
|
303
|
+
toolNames: Object.freeze(
|
|
304
|
+
(response.message.toolCalls ?? []).map((c) => c.function.name),
|
|
305
|
+
),
|
|
306
|
+
finishReason: response.finishReason,
|
|
307
|
+
usage: Object.freeze({ ...response.usage }),
|
|
308
|
+
}),
|
|
309
|
+
},
|
|
178
310
|
this.ctx.emitEvent,
|
|
179
311
|
)
|
|
180
312
|
applyLifecycleHookResults('post_llm_call', hookResults)
|
|
@@ -200,9 +332,18 @@ export class IterationOrchestrator {
|
|
|
200
332
|
cost: runMgr.costInfo,
|
|
201
333
|
})
|
|
202
334
|
|
|
335
|
+
// Reasoning rides along with the turn it belongs to, so the
|
|
336
|
+
// replay contract holds automatically: trimming or compacting
|
|
337
|
+
// the assistant message takes its thinking blocks with it,
|
|
338
|
+
// and no separate atomicity rule is needed.
|
|
203
339
|
const assistantMsg = createAssistantMessage(
|
|
204
340
|
response.message.content,
|
|
205
341
|
forceFinalize ? undefined : response.message.toolCalls,
|
|
342
|
+
response.message.reasoning,
|
|
343
|
+
// Rides with the turn it belongs to, like reasoning does, so
|
|
344
|
+
// trimming or compacting the turn takes its evidence with it
|
|
345
|
+
// rather than leaving citations pointing at prose that is gone.
|
|
346
|
+
response.message.citations,
|
|
206
347
|
)
|
|
207
348
|
runMgr.pushMessage(assistantMsg)
|
|
208
349
|
|
|
@@ -229,12 +370,24 @@ export class IterationOrchestrator {
|
|
|
229
370
|
})
|
|
230
371
|
}
|
|
231
372
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
373
|
+
// Tool calls beat the finish reason. The reason is the
|
|
374
|
+
// provider's SUMMARY of the turn and the tool calls are the
|
|
375
|
+
// turn itself, so when they disagree the calls are the fact.
|
|
376
|
+
// Several function-calling endpoints — gateways and local servers
|
|
377
|
+
// especially — report `stop` alongside a populated
|
|
378
|
+
// `tool_calls`, and three of this repo's drivers pass that
|
|
379
|
+
// value through untouched.
|
|
380
|
+
//
|
|
381
|
+
// Reading `stop` first meant the turn ended with every
|
|
382
|
+
// requested call silently skipped, an assistant message
|
|
383
|
+
// carrying tool_use blocks that were never answered, and a
|
|
384
|
+
// run that settled `end_turn` having done nothing it was
|
|
385
|
+
// asked to do. Checking the calls first costs nothing when
|
|
386
|
+
// the provider is honest and is the only thing that saves the
|
|
387
|
+
// run when it is not.
|
|
388
|
+
const hasToolCalls = (response.message.toolCalls?.length ?? 0) > 0
|
|
389
|
+
|
|
390
|
+
if (forceFinalize || !hasToolCalls) {
|
|
238
391
|
// Every task-dispatch tool (create_task, continue_task, Agent)
|
|
239
392
|
// is BLOCKING: the worker's output returns as the dispatching
|
|
240
393
|
// tool_use's canonical tool_result, so by the time the model
|
|
@@ -265,11 +418,11 @@ export class IterationOrchestrator {
|
|
|
265
418
|
// another turn. The provider receives the partial
|
|
266
419
|
// assistant content + the continue prompt and
|
|
267
420
|
// resumes from where it left off, mirroring the
|
|
268
|
-
//
|
|
421
|
+
// Auto-continuation after an output-ceiling cutoff.
|
|
269
422
|
//
|
|
270
423
|
// Guards:
|
|
271
424
|
// - `hasContent` so we don't loop forever on an
|
|
272
|
-
// empty cutoff (
|
|
425
|
+
// empty cutoff (a provider occasionally emits
|
|
273
426
|
// `stop_reason: max_tokens` with no content
|
|
274
427
|
// when an injected pre-fill blocks the model).
|
|
275
428
|
// - `!forceFinalize` so the forced-finalize path
|
|
@@ -294,6 +447,86 @@ export class IterationOrchestrator {
|
|
|
294
447
|
continue
|
|
295
448
|
}
|
|
296
449
|
|
|
450
|
+
// The model tried to finish in prose while a structured
|
|
451
|
+
// output was demanded. Send it back with the schema error
|
|
452
|
+
// rather than returning an unusable result — this is the
|
|
453
|
+
// re-prompt half, and it is bounded so a model that cannot
|
|
454
|
+
// satisfy the schema fails loudly instead of looping.
|
|
455
|
+
if (!forceFinalize && this.needsStructuredOutput()) {
|
|
456
|
+
const attempt = ++this.structuredOutputAttempts
|
|
457
|
+
const limit = this.structuredOutputRetryLimit()
|
|
458
|
+
if (attempt > limit) {
|
|
459
|
+
this.ctx.log.warn('Structured output not produced within its retries', {
|
|
460
|
+
runId: runMgr.id,
|
|
461
|
+
attempts: attempt - 1,
|
|
462
|
+
})
|
|
463
|
+
runMgr.setStopReason('structured_output_failed')
|
|
464
|
+
iterSpan.end()
|
|
465
|
+
break
|
|
466
|
+
}
|
|
467
|
+
this.ctx.log.info('Re-prompting for structured output', {
|
|
468
|
+
runId: runMgr.id,
|
|
469
|
+
attempt,
|
|
470
|
+
limit,
|
|
471
|
+
})
|
|
472
|
+
runMgr.pushMessage(createUserMessage(STRUCTURED_OUTPUT_REPROMPT))
|
|
473
|
+
await this.ctx.emitEvent({
|
|
474
|
+
type: 'iteration_completed',
|
|
475
|
+
runId: runMgr.id,
|
|
476
|
+
iteration: iterationNum,
|
|
477
|
+
hasToolCalls: false,
|
|
478
|
+
})
|
|
479
|
+
yield* this.ctx.drainPending()
|
|
480
|
+
iterSpan.end()
|
|
481
|
+
continue
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// Let the host judge the ANSWER and hand back work.
|
|
485
|
+
//
|
|
486
|
+
// The stop predicate is only consulted after tools ran, so
|
|
487
|
+
// there was no seam here at all: the moment the model
|
|
488
|
+
// stopped calling tools the run finalized, whatever it had
|
|
489
|
+
// produced. Verify-then-fix — run the build, feed the
|
|
490
|
+
// failure back, let it try again — meant starting a whole
|
|
491
|
+
// new run and re-supplying the context the first one had.
|
|
492
|
+
//
|
|
493
|
+
// Shaped after the structured-output re-prompt directly
|
|
494
|
+
// above, which solves the same problem for one specific
|
|
495
|
+
// judge: bounded attempts, feedback as a user message, and
|
|
496
|
+
// a loud stop rather than a loop.
|
|
497
|
+
if (!forceFinalize && this.ctx.reviewAnswer) {
|
|
498
|
+
const review = await this.reviewAnswer(response.message.content ?? '')
|
|
499
|
+
if (review && !review.accept) {
|
|
500
|
+
const attempt = ++this.answerReviewAttempts
|
|
501
|
+
const limit = this.ctx.maxAnswerReviews ?? DEFAULT_ANSWER_REVIEW_LIMIT
|
|
502
|
+
if (attempt > limit) {
|
|
503
|
+
this.ctx.log.warn('Answer rejected more times than the run allows', {
|
|
504
|
+
runId: runMgr.id,
|
|
505
|
+
attempts: attempt - 1,
|
|
506
|
+
limit,
|
|
507
|
+
})
|
|
508
|
+
runMgr.setStopReason('answer_rejected')
|
|
509
|
+
iterSpan.end()
|
|
510
|
+
break
|
|
511
|
+
}
|
|
512
|
+
this.ctx.log.info('Answer rejected — returning it to the model', {
|
|
513
|
+
runId: runMgr.id,
|
|
514
|
+
attempt,
|
|
515
|
+
limit,
|
|
516
|
+
})
|
|
517
|
+
runMgr.pushMessage(createUserMessage(review.feedback))
|
|
518
|
+
await this.ctx.emitEvent({
|
|
519
|
+
type: 'iteration_completed',
|
|
520
|
+
runId: runMgr.id,
|
|
521
|
+
iteration: iterationNum,
|
|
522
|
+
hasToolCalls: false,
|
|
523
|
+
})
|
|
524
|
+
yield* this.ctx.drainPending()
|
|
525
|
+
iterSpan.end()
|
|
526
|
+
continue
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
|
|
297
530
|
if (!hasContent && !forceFinalize) {
|
|
298
531
|
this.ctx.log.warn('Empty completion detected — requesting final summary', {
|
|
299
532
|
iteration: iterationNum,
|
|
@@ -327,16 +560,98 @@ export class IterationOrchestrator {
|
|
|
327
560
|
|
|
328
561
|
const reviewOutcome = yield* runToolReview(this.ctx, response, iterationNum)
|
|
329
562
|
|
|
330
|
-
|
|
563
|
+
// The step record is built even for a rejected batch: a run that
|
|
564
|
+
// spent a turn getting its tools refused still spent the tokens,
|
|
565
|
+
// and a caller reconstructing cost per step must see it.
|
|
566
|
+
this.recordStep({
|
|
567
|
+
stepNumber: iterationNum,
|
|
568
|
+
model,
|
|
569
|
+
messageId,
|
|
570
|
+
response,
|
|
571
|
+
toolResults: reviewOutcome.results,
|
|
572
|
+
toolExecutionMs: reviewOutcome.durationMs,
|
|
573
|
+
startedAt: stepStartedAt,
|
|
574
|
+
usageBefore,
|
|
575
|
+
costBefore,
|
|
576
|
+
})
|
|
577
|
+
|
|
578
|
+
if (reviewOutcome.decision === 'stop') {
|
|
331
579
|
iterSpan.end()
|
|
332
580
|
return
|
|
333
581
|
}
|
|
334
582
|
|
|
335
|
-
if (reviewOutcome === 'rejected') {
|
|
583
|
+
if (reviewOutcome.decision === 'rejected') {
|
|
336
584
|
iterSpan.end()
|
|
337
585
|
continue
|
|
338
586
|
}
|
|
339
587
|
|
|
588
|
+
// A successful `structured_output` call IS the answer, so the
|
|
589
|
+
// run ends here rather than paying for another turn whose only
|
|
590
|
+
// job would be to restate it.
|
|
591
|
+
if (this.captureStructuredOutput(reviewOutcome.results)) {
|
|
592
|
+
this.ctx.log.info('Structured output produced — ending run', {
|
|
593
|
+
runId: runMgr.id,
|
|
594
|
+
iteration: iterationNum,
|
|
595
|
+
})
|
|
596
|
+
runMgr.setStopReason('end_turn')
|
|
597
|
+
await this.ctx.emitEvent({
|
|
598
|
+
type: 'iteration_completed',
|
|
599
|
+
runId: runMgr.id,
|
|
600
|
+
iteration: iterationNum,
|
|
601
|
+
hasToolCalls: true,
|
|
602
|
+
})
|
|
603
|
+
yield* this.ctx.drainPending()
|
|
604
|
+
iterSpan.end()
|
|
605
|
+
break
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// A tool the author declared terminal settles the run with its
|
|
609
|
+
// own output, the same rule `structured_output` has always
|
|
610
|
+
// had. Without it a delegation cost the parent one more model
|
|
611
|
+
// call at full context whose only job was to restate what the
|
|
612
|
+
// worker already said — and to restate it through the parent's
|
|
613
|
+
// compacted view, so the caller did not even receive the
|
|
614
|
+
// worker's words.
|
|
615
|
+
const settled = this.terminalToolOutput(reviewOutcome.results, response)
|
|
616
|
+
if (settled !== undefined) {
|
|
617
|
+
this.ctx.log.info('Terminal tool produced the answer — ending run', {
|
|
618
|
+
runId: runMgr.id,
|
|
619
|
+
iteration: iterationNum,
|
|
620
|
+
tool: settled.toolName,
|
|
621
|
+
})
|
|
622
|
+
runMgr.setResult(settled.output)
|
|
623
|
+
runMgr.setStopReason('end_turn')
|
|
624
|
+
await this.ctx.emitEvent({
|
|
625
|
+
type: 'iteration_completed',
|
|
626
|
+
runId: runMgr.id,
|
|
627
|
+
iteration: iterationNum,
|
|
628
|
+
hasToolCalls: true,
|
|
629
|
+
})
|
|
630
|
+
yield* this.ctx.drainPending()
|
|
631
|
+
iterSpan.end()
|
|
632
|
+
break
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// Evaluated AFTER the tools ran, so a predicate can see what they
|
|
636
|
+
// returned — which is what makes a terminal submit_answer tool
|
|
637
|
+
// usable without discarding its output.
|
|
638
|
+
if (await this.shouldStop()) {
|
|
639
|
+
this.ctx.log.info('Stop condition met', {
|
|
640
|
+
runId: runMgr.id,
|
|
641
|
+
iteration: iterationNum,
|
|
642
|
+
})
|
|
643
|
+
runMgr.setStopReason('stop_condition')
|
|
644
|
+
await this.ctx.emitEvent({
|
|
645
|
+
type: 'iteration_completed',
|
|
646
|
+
runId: runMgr.id,
|
|
647
|
+
iteration: iterationNum,
|
|
648
|
+
hasToolCalls: true,
|
|
649
|
+
})
|
|
650
|
+
yield* this.ctx.drainPending()
|
|
651
|
+
iterSpan.end()
|
|
652
|
+
break
|
|
653
|
+
}
|
|
654
|
+
|
|
340
655
|
const checkpointSignal = yield* runIterationCheckpoint(this.ctx, iterationNum)
|
|
341
656
|
if (checkpointSignal === 'stop') {
|
|
342
657
|
iterSpan.end()
|
|
@@ -378,6 +693,37 @@ export class IterationOrchestrator {
|
|
|
378
693
|
break
|
|
379
694
|
}
|
|
380
695
|
|
|
696
|
+
// The one provider failure the kernel can actually do something
|
|
697
|
+
// about. `context_length_exceeded` is correctly non-retryable —
|
|
698
|
+
// resending the identical prompt cannot help — but the kernel
|
|
699
|
+
// owns a compaction subsystem that can make the prompt smaller.
|
|
700
|
+
// Without this the run died holding the remedy: the threshold
|
|
701
|
+
// path had simply guessed low, which a run carrying images or a
|
|
702
|
+
// language the chars-per-token ratio does not fit will do.
|
|
703
|
+
//
|
|
704
|
+
// Relief is attempted ONCE per iteration and only when it
|
|
705
|
+
// actually shed something. A second overflow after a successful
|
|
706
|
+
// compaction means the prompt is irreducible, and looping on it
|
|
707
|
+
// would burn the budget to arrive at the same error.
|
|
708
|
+
if (
|
|
709
|
+
!overflowRelieved &&
|
|
710
|
+
classifyProviderError(err, this.ctx.provider.id).code === 'context_length_exceeded'
|
|
711
|
+
) {
|
|
712
|
+
overflowRelieved = true
|
|
713
|
+
const shed = await relieveOverflow(this.ctx)
|
|
714
|
+
if (shed) {
|
|
715
|
+
this.ctx.log.info('Retrying the turn after relieving a context overflow', {
|
|
716
|
+
runId: runMgr.id,
|
|
717
|
+
iteration: iterationNum,
|
|
718
|
+
})
|
|
719
|
+
if (iterationActivity) {
|
|
720
|
+
this.ctx.activityStore.complete(iterationActivity.id)
|
|
721
|
+
}
|
|
722
|
+
iterSpan.end()
|
|
723
|
+
continue
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
|
|
381
727
|
if (iterationActivity) {
|
|
382
728
|
this.ctx.activityStore.fail(iterationActivity.id, toErrorMessage(err))
|
|
383
729
|
}
|
|
@@ -393,6 +739,274 @@ export class IterationOrchestrator {
|
|
|
393
739
|
}
|
|
394
740
|
}
|
|
395
741
|
|
|
742
|
+
/**
|
|
743
|
+
* Ask the host how to shape this step.
|
|
744
|
+
*
|
|
745
|
+
* Fails OPEN on a throw — same reasoning as `stopWhen` and deliberately
|
|
746
|
+
* opposite to a guardrail: a broken step-shaping hook should not kill an
|
|
747
|
+
* otherwise healthy run, and unlike a safety check, nothing unsafe gets
|
|
748
|
+
* through when it is skipped.
|
|
749
|
+
*/
|
|
750
|
+
private async prepareStep(stepNumber: number): Promise<{
|
|
751
|
+
allowedTools?: string[]
|
|
752
|
+
model?: string
|
|
753
|
+
system?: string
|
|
754
|
+
temperature?: number
|
|
755
|
+
maxResponseTokens?: number
|
|
756
|
+
}> {
|
|
757
|
+
const configured = this.ctx.prepareStep
|
|
758
|
+
if (!configured) return {}
|
|
759
|
+
const stages = Array.isArray(configured) ? configured : [configured]
|
|
760
|
+
|
|
761
|
+
// Folded in DECLARATION order, each stage seeing what the ones
|
|
762
|
+
// before it decided. A later stage overriding a field is last-writer
|
|
763
|
+
// wins — visibly, because the order is a line in the host's code
|
|
764
|
+
// rather than an accident of install history.
|
|
765
|
+
let result: PrepareStepResult = {}
|
|
766
|
+
for (const stage of stages) {
|
|
767
|
+
try {
|
|
768
|
+
const decided = await stage({
|
|
769
|
+
runId: this.ctx.runMgr.id,
|
|
770
|
+
stepNumber,
|
|
771
|
+
messages: this.ctx.runMgr.messages,
|
|
772
|
+
steps: this.steps,
|
|
773
|
+
prepared: result,
|
|
774
|
+
})
|
|
775
|
+
if (decided) result = { ...result, ...decided }
|
|
776
|
+
} catch (err) {
|
|
777
|
+
// Skipped, and the rest still run: one broken concern must
|
|
778
|
+
// not silently disable the others it was declared beside.
|
|
779
|
+
this.ctx.log.error('a prepareStep stage threw — skipping it', {
|
|
780
|
+
runId: this.ctx.runMgr.id,
|
|
781
|
+
stepNumber,
|
|
782
|
+
error: toErrorMessage(err),
|
|
783
|
+
})
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
const prepared: {
|
|
788
|
+
allowedTools?: string[]
|
|
789
|
+
model?: string
|
|
790
|
+
system?: string
|
|
791
|
+
temperature?: number
|
|
792
|
+
maxResponseTokens?: number
|
|
793
|
+
} = {}
|
|
794
|
+
|
|
795
|
+
if (result.activeTools) {
|
|
796
|
+
// A phase list that outlives a tool rename should narrow the
|
|
797
|
+
// surface, not kill the agent mid-run.
|
|
798
|
+
const known = result.activeTools.filter((name: string) => this.ctx.tools.has(name))
|
|
799
|
+
const unknown = result.activeTools.filter((name: string) => !this.ctx.tools.has(name))
|
|
800
|
+
if (unknown.length > 0) {
|
|
801
|
+
this.ctx.log.warn('prepareStep named tools that are not registered — ignoring them', {
|
|
802
|
+
runId: this.ctx.runMgr.id,
|
|
803
|
+
stepNumber,
|
|
804
|
+
unknown,
|
|
805
|
+
})
|
|
806
|
+
}
|
|
807
|
+
prepared.allowedTools = known
|
|
808
|
+
}
|
|
809
|
+
if (result.model !== undefined) prepared.model = result.model
|
|
810
|
+
if (result.system !== undefined) prepared.system = result.system
|
|
811
|
+
if (result.temperature !== undefined) prepared.temperature = result.temperature
|
|
812
|
+
if (result.maxResponseTokens !== undefined) {
|
|
813
|
+
prepared.maxResponseTokens = result.maxResponseTokens
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
return prepared
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
/** Steps completed so far, exposed on the returned `Run`. */
|
|
820
|
+
private readonly steps: StepResult[] = []
|
|
821
|
+
|
|
822
|
+
getSteps(): readonly StepResult[] {
|
|
823
|
+
return this.steps
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
/**
|
|
827
|
+
* Fold one iteration into a `StepResult`.
|
|
828
|
+
*
|
|
829
|
+
* Every field here was already computed somewhere in the loop; the only
|
|
830
|
+
* new work is subtracting the cumulative counters so the step carries
|
|
831
|
+
* ITS usage rather than the run's running total, which is the number a
|
|
832
|
+
* caller asking "what did this step cost" actually wants.
|
|
833
|
+
*/
|
|
834
|
+
private recordStep(input: {
|
|
835
|
+
stepNumber: number
|
|
836
|
+
model: string
|
|
837
|
+
messageId: MessageId
|
|
838
|
+
response: ChatCompletionResponse
|
|
839
|
+
toolResults: readonly ToolCallOutcome[]
|
|
840
|
+
toolExecutionMs: number
|
|
841
|
+
startedAt: number
|
|
842
|
+
usageBefore: TokenUsage
|
|
843
|
+
costBefore: CostInfo
|
|
844
|
+
}): void {
|
|
845
|
+
const { runMgr } = this.ctx
|
|
846
|
+
const toolCalls = input.response.message.toolCalls ?? []
|
|
847
|
+
const byId = new Map(input.toolResults.map((r) => [r.toolCallId, r]))
|
|
848
|
+
|
|
849
|
+
const step: StepResult = {
|
|
850
|
+
stepNumber: input.stepNumber,
|
|
851
|
+
model: input.model,
|
|
852
|
+
messageId: input.messageId,
|
|
853
|
+
content: input.response.message.content,
|
|
854
|
+
toolCalls,
|
|
855
|
+
// Ordered by the tool CALLS, not by completion, so the record
|
|
856
|
+
// matches what the model asked for.
|
|
857
|
+
toolResults: toolCalls.map((tc) => {
|
|
858
|
+
const outcome = byId.get(tc.id)
|
|
859
|
+
return {
|
|
860
|
+
toolCallId: tc.id,
|
|
861
|
+
toolName: tc.function.name,
|
|
862
|
+
output: outcome?.output ?? '',
|
|
863
|
+
isError: outcome?.isError ?? false,
|
|
864
|
+
durationMs: 0,
|
|
865
|
+
}
|
|
866
|
+
}),
|
|
867
|
+
finishReason: input.response.finishReason,
|
|
868
|
+
usage: subtractUsage(runMgr.tokenUsage, input.usageBefore),
|
|
869
|
+
costDelta: {
|
|
870
|
+
...runMgr.costInfo,
|
|
871
|
+
totalCost: round6(runMgr.costInfo.totalCost - input.costBefore.totalCost),
|
|
872
|
+
},
|
|
873
|
+
startedAt: input.startedAt,
|
|
874
|
+
durationMs: Date.now() - input.startedAt,
|
|
875
|
+
toolExecutionMs: input.toolExecutionMs,
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
this.steps.push(step)
|
|
879
|
+
this.ctx.onStepFinish?.(step)
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
/** Turns spent asking the model again for a valid structured output. */
|
|
883
|
+
private structuredOutputAttempts = 0
|
|
884
|
+
private structuredOutputDone = false
|
|
885
|
+
|
|
886
|
+
private structuredOutputRetryLimit(): number {
|
|
887
|
+
return this.ctx.structuredOutput?.maxRetries ?? DEFAULT_STRUCTURED_OUTPUT_RETRIES
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
/** True while a structured output was demanded and has not arrived. */
|
|
891
|
+
private needsStructuredOutput(): boolean {
|
|
892
|
+
return this.ctx.structuredOutput !== undefined && !this.structuredOutputDone
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* Record the structured output if this batch produced one.
|
|
897
|
+
*
|
|
898
|
+
* The tool validates against the Zod schema before its `execute` runs,
|
|
899
|
+
* so reaching here successfully means the value is already valid — a
|
|
900
|
+
* failed parse comes back as an error result and simply does not
|
|
901
|
+
* satisfy the demand, which sends the loop round again.
|
|
902
|
+
*/
|
|
903
|
+
/**
|
|
904
|
+
* The answer a terminal tool produced, or `undefined` to keep looping.
|
|
905
|
+
*
|
|
906
|
+
* Deliberately narrow. A terminal call decides the run only when it is
|
|
907
|
+
* the ONLY call the model made in that turn: a model that asked for
|
|
908
|
+
* other work meant to see those results, and settling here would throw
|
|
909
|
+
* away answers it requested. Same for a failed terminal call — an
|
|
910
|
+
* error is not an answer, and the model is the one that should read
|
|
911
|
+
* it. Both cases fall through to the ordinary path, and both say so in
|
|
912
|
+
* the log rather than quietly costing the relay the flag was set to
|
|
913
|
+
* avoid.
|
|
914
|
+
*/
|
|
915
|
+
private terminalToolOutput(
|
|
916
|
+
results: readonly ToolCallOutcome[],
|
|
917
|
+
response: ChatCompletionResponse,
|
|
918
|
+
): ToolCallOutcome | undefined {
|
|
919
|
+
const terminal = results.filter((r) => this.ctx.tools.get(r.toolName)?.terminal === true)
|
|
920
|
+
if (terminal.length === 0) return undefined
|
|
921
|
+
|
|
922
|
+
const callCount = response.message.toolCalls?.length ?? 0
|
|
923
|
+
if (callCount > 1) {
|
|
924
|
+
this.ctx.log.info('Terminal tool shared its turn — relaying instead of settling', {
|
|
925
|
+
runId: this.ctx.runMgr.id,
|
|
926
|
+
tool: terminal[0]?.toolName,
|
|
927
|
+
callsInTurn: callCount,
|
|
928
|
+
})
|
|
929
|
+
return undefined
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
const hit = terminal[0]
|
|
933
|
+
if (!hit || hit.isError) {
|
|
934
|
+
this.ctx.log.info('Terminal tool failed — returning the error to the model', {
|
|
935
|
+
runId: this.ctx.runMgr.id,
|
|
936
|
+
tool: hit?.toolName,
|
|
937
|
+
})
|
|
938
|
+
return undefined
|
|
939
|
+
}
|
|
940
|
+
return hit
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
private captureStructuredOutput(results: readonly ToolCallOutcome[]): boolean {
|
|
944
|
+
if (!this.needsStructuredOutput()) return false
|
|
945
|
+
const hit = results.find((r) => r.toolName === STRUCTURED_OUTPUT_TOOL_NAME && !r.isError)
|
|
946
|
+
if (!hit) return false
|
|
947
|
+
try {
|
|
948
|
+
this.ctx.runMgr.setStructuredOutput(JSON.parse(hit.output))
|
|
949
|
+
} catch {
|
|
950
|
+
// The tool serializes its own validated input, so this is
|
|
951
|
+
// unreachable in practice; keep the raw text rather than losing it.
|
|
952
|
+
this.ctx.runMgr.setStructuredOutput(hit.output)
|
|
953
|
+
}
|
|
954
|
+
this.structuredOutputDone = true
|
|
955
|
+
return true
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* Ask the host whether this answer is good enough.
|
|
960
|
+
*
|
|
961
|
+
* A hook that throws **accepts**, which is the opposite of what the
|
|
962
|
+
* safety gates do, and deliberately so. Those are asked "is this
|
|
963
|
+
* dangerous", where the cost of failing closed is one refused
|
|
964
|
+
* operation. This is asked "is this good enough", where failing closed
|
|
965
|
+
* means handing the answer back forever — so a broken judge would turn
|
|
966
|
+
* every run into a loop that ends on a budget error naming nothing. One
|
|
967
|
+
* unreviewed answer is the cheaper failure, and the throw is logged at
|
|
968
|
+
* `error` so it is not mistaken for approval.
|
|
969
|
+
*/
|
|
970
|
+
private async reviewAnswer(answer: string): Promise<AnswerReview | undefined> {
|
|
971
|
+
if (!this.ctx.reviewAnswer) return undefined
|
|
972
|
+
try {
|
|
973
|
+
return await this.ctx.reviewAnswer(answer, {
|
|
974
|
+
runId: this.ctx.runMgr.id,
|
|
975
|
+
iteration: this.ctx.runMgr.currentIteration,
|
|
976
|
+
messages: this.ctx.runMgr.messages,
|
|
977
|
+
})
|
|
978
|
+
} catch (err) {
|
|
979
|
+
this.ctx.log.error('Answer review threw — accepting the answer unreviewed', {
|
|
980
|
+
runId: this.ctx.runMgr.id,
|
|
981
|
+
error: toErrorMessage(err),
|
|
982
|
+
})
|
|
983
|
+
return { accept: true }
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
/** Evaluate the caller's halt predicate, if there is one. */
|
|
988
|
+
private async shouldStop(): Promise<boolean> {
|
|
989
|
+
const stopWhen = this.ctx.stopWhen
|
|
990
|
+
const latestStep = this.steps.at(-1)
|
|
991
|
+
if (!stopWhen || !latestStep) return false
|
|
992
|
+
try {
|
|
993
|
+
return await stopWhen({
|
|
994
|
+
steps: this.steps,
|
|
995
|
+
latestStep,
|
|
996
|
+
totalUsage: this.ctx.runMgr.tokenUsage,
|
|
997
|
+
totalCost: this.ctx.runMgr.costInfo,
|
|
998
|
+
})
|
|
999
|
+
} catch (err) {
|
|
1000
|
+
// A throwing predicate must not kill a run that is otherwise
|
|
1001
|
+
// healthy; failing open keeps the existing budgets in charge.
|
|
1002
|
+
this.ctx.log.error('Stop condition threw — continuing the run', {
|
|
1003
|
+
runId: this.ctx.runMgr.id,
|
|
1004
|
+
error: toErrorMessage(err),
|
|
1005
|
+
})
|
|
1006
|
+
return false
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
|
|
396
1010
|
private hasRunningAgentTasks(): boolean {
|
|
397
1011
|
if (!this.ctx.taskGateway) return false
|
|
398
1012
|
return this.ctx.taskGateway
|
|
@@ -437,6 +1051,7 @@ export class IterationOrchestrator {
|
|
|
437
1051
|
temperature: this.ctx.runConfig.temperature,
|
|
438
1052
|
maxTokens: this.ctx.runConfig.maxResponseTokens,
|
|
439
1053
|
cacheControl: { type: 'auto' },
|
|
1054
|
+
...(this.ctx.runConfig.thinking ? { thinking: this.ctx.runConfig.thinking } : {}),
|
|
440
1055
|
// Cancellable too: a Stop during the closing summary must not
|
|
441
1056
|
// stream to completion.
|
|
442
1057
|
signal: this.ctx.abortController.signal,
|
|
@@ -471,3 +1086,19 @@ export class IterationOrchestrator {
|
|
|
471
1086
|
}
|
|
472
1087
|
}
|
|
473
1088
|
}
|
|
1089
|
+
|
|
1090
|
+
/** Per-step usage: the delta between two cumulative snapshots. */
|
|
1091
|
+
function subtractUsage(after: TokenUsage, before: TokenUsage): TokenUsage {
|
|
1092
|
+
return {
|
|
1093
|
+
promptTokens: after.promptTokens - before.promptTokens,
|
|
1094
|
+
completionTokens: after.completionTokens - before.completionTokens,
|
|
1095
|
+
totalTokens: after.totalTokens - before.totalTokens,
|
|
1096
|
+
cachedTokens: (after.cachedTokens ?? 0) - (before.cachedTokens ?? 0),
|
|
1097
|
+
cacheWriteTokens: (after.cacheWriteTokens ?? 0) - (before.cacheWriteTokens ?? 0),
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
/** Cost deltas are subtractions of floats; keep them presentable. */
|
|
1102
|
+
function round6(n: number): number {
|
|
1103
|
+
return Math.round(n * 1e6) / 1e6
|
|
1104
|
+
}
|