@namzu/sdk 38.2.1 → 40.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 +851 -0
- package/dist/advisory/executor.d.ts +10 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +5 -26
- package/dist/advisory/executor.js.map +1 -1
- package/dist/advisory/history.d.ts +9 -0
- package/dist/advisory/history.d.ts.map +1 -0
- package/dist/advisory/history.js +120 -0
- package/dist/advisory/history.js.map +1 -0
- package/dist/advisory/index.d.ts +1 -1
- package/dist/advisory/index.d.ts.map +1 -1
- package/dist/advisory/index.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +3 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/runAgent.d.ts +10 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +3 -0
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/compaction/manual.d.ts +6 -0
- package/dist/compaction/manual.d.ts.map +1 -1
- package/dist/compaction/manual.js +21 -2
- package/dist/compaction/manual.js.map +1 -1
- package/dist/compaction/summary.d.ts.map +1 -1
- package/dist/compaction/summary.js +4 -1
- package/dist/compaction/summary.js.map +1 -1
- package/dist/config/runtime.js +2 -2
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +20 -6
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/contracts/schemas.js +1 -1
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/eval/harness-protection.d.ts +18 -0
- package/dist/eval/harness-protection.d.ts.map +1 -0
- package/dist/eval/harness-protection.js +58 -0
- package/dist/eval/harness-protection.js.map +1 -0
- package/dist/eval/harness-verification.d.ts +6 -1
- package/dist/eval/harness-verification.d.ts.map +1 -1
- package/dist/eval/harness-verification.js +19 -2
- package/dist/eval/harness-verification.js.map +1 -1
- package/dist/eval/index.d.ts +1 -0
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js.map +1 -1
- package/dist/manager/resident/activity.d.ts +50 -0
- package/dist/manager/resident/activity.d.ts.map +1 -0
- package/dist/manager/resident/activity.js +125 -0
- package/dist/manager/resident/activity.js.map +1 -0
- package/dist/manager/resident/agenda.d.ts +13 -1
- package/dist/manager/resident/agenda.d.ts.map +1 -1
- package/dist/manager/resident/agenda.js +40 -5
- package/dist/manager/resident/agenda.js.map +1 -1
- package/dist/manager/resident/consumption.d.ts +104 -0
- package/dist/manager/resident/consumption.d.ts.map +1 -0
- package/dist/manager/resident/consumption.js +233 -0
- package/dist/manager/resident/consumption.js.map +1 -0
- package/dist/manager/resident/evidence-recall.d.ts +24 -0
- package/dist/manager/resident/evidence-recall.d.ts.map +1 -0
- package/dist/manager/resident/evidence-recall.js +295 -0
- package/dist/manager/resident/evidence-recall.js.map +1 -0
- package/dist/manager/resident/history-disk.d.ts +10 -0
- package/dist/manager/resident/history-disk.d.ts.map +1 -0
- package/dist/manager/resident/history-disk.js +50 -0
- package/dist/manager/resident/history-disk.js.map +1 -0
- package/dist/manager/resident/history.d.ts +79 -0
- package/dist/manager/resident/history.d.ts.map +1 -0
- package/dist/manager/resident/history.js +203 -0
- package/dist/manager/resident/history.js.map +1 -0
- package/dist/manager/resident/initiative.d.ts.map +1 -1
- package/dist/manager/resident/initiative.js +11 -3
- package/dist/manager/resident/initiative.js.map +1 -1
- package/dist/manager/resident/learning-cycle.d.ts +131 -0
- package/dist/manager/resident/learning-cycle.d.ts.map +1 -0
- package/dist/manager/resident/learning-cycle.js +306 -0
- package/dist/manager/resident/learning-cycle.js.map +1 -0
- package/dist/manager/resident/learning-observation.d.ts +80 -0
- package/dist/manager/resident/learning-observation.d.ts.map +1 -0
- package/dist/manager/resident/learning-observation.js +22 -0
- package/dist/manager/resident/learning-observation.js.map +1 -0
- package/dist/manager/resident/learning-store.d.ts +106 -0
- package/dist/manager/resident/learning-store.d.ts.map +1 -0
- package/dist/manager/resident/learning-store.js +598 -0
- package/dist/manager/resident/learning-store.js.map +1 -0
- package/dist/manager/resident/learning.d.ts +246 -3
- package/dist/manager/resident/learning.d.ts.map +1 -1
- package/dist/manager/resident/learning.js +96 -6
- package/dist/manager/resident/learning.js.map +1 -1
- package/dist/manager/resident/outbox.d.ts +4 -4
- package/dist/manager/resident/store.d.ts +37 -4
- package/dist/manager/resident/store.d.ts.map +1 -1
- package/dist/manager/resident/store.js +27 -3
- package/dist/manager/resident/store.js.map +1 -1
- package/dist/manager/resident/tool-evidence.d.ts +71 -0
- package/dist/manager/resident/tool-evidence.d.ts.map +1 -0
- package/dist/manager/resident/tool-evidence.js +285 -0
- package/dist/manager/resident/tool-evidence.js.map +1 -0
- package/dist/manager/run/persistence.d.ts +8 -0
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +18 -0
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +5 -3
- package/dist/plugin/loader.js.map +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
- package/dist/prompt/coding-agent-doctrine.js +2 -0
- package/dist/prompt/coding-agent-doctrine.js.map +1 -1
- package/dist/prompt/index.d.ts +2 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +1 -0
- package/dist/prompt/index.js.map +1 -1
- package/dist/prompt/resident-learning.d.ts +19 -0
- package/dist/prompt/resident-learning.d.ts.map +1 -0
- package/dist/prompt/resident-learning.js +125 -0
- package/dist/prompt/resident-learning.js.map +1 -0
- package/dist/prompt/resident-step.d.ts +8 -1
- package/dist/prompt/resident-step.d.ts.map +1 -1
- package/dist/prompt/resident-step.js +65 -4
- package/dist/prompt/resident-step.js.map +1 -1
- package/dist/provider/collect-chat-completion.d.ts +2 -1
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +7 -6
- package/dist/provider/collect-chat-completion.js.map +1 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +2 -1
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/stream-text.d.ts +16 -0
- package/dist/provider/stream-text.d.ts.map +1 -0
- package/dist/provider/stream-text.js +51 -0
- package/dist/provider/stream-text.js.map +1 -0
- package/dist/public-runtime.d.ts +16 -4
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +17 -4
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +13 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +16 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +15 -3
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +2 -3
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/registry/tool/portable.d.ts +65 -0
- package/dist/registry/tool/portable.d.ts.map +1 -0
- package/dist/registry/tool/portable.js +244 -0
- package/dist/registry/tool/portable.js.map +1 -0
- package/dist/registry/tool/schema.d.ts +32 -5
- package/dist/registry/tool/schema.d.ts.map +1 -1
- package/dist/registry/tool/schema.js +35 -9
- package/dist/registry/tool/schema.js.map +1 -1
- package/dist/registry/toolset/catalog.js +8 -8
- package/dist/registry/toolset/catalog.js.map +1 -1
- package/dist/run/LimitChecker.js +3 -3
- package/dist/run/LimitChecker.js.map +1 -1
- package/dist/run/evidence-query.d.ts +41 -0
- package/dist/run/evidence-query.d.ts.map +1 -0
- package/dist/run/evidence-query.js +270 -0
- package/dist/run/evidence-query.js.map +1 -0
- package/dist/run/evidence-recall.d.ts +99 -0
- package/dist/run/evidence-recall.d.ts.map +1 -0
- package/dist/run/evidence-recall.js +633 -0
- package/dist/run/evidence-recall.js.map +1 -0
- package/dist/run/index.d.ts +2 -0
- package/dist/run/index.d.ts.map +1 -1
- package/dist/run/index.js +1 -0
- package/dist/run/index.js.map +1 -1
- package/dist/run/json-claim-verifier.d.ts +83 -0
- package/dist/run/json-claim-verifier.d.ts.map +1 -0
- package/dist/run/json-claim-verifier.js +200 -0
- package/dist/run/json-claim-verifier.js.map +1 -0
- package/dist/run/preparation-context-error.d.ts +10 -0
- package/dist/run/preparation-context-error.d.ts.map +1 -0
- package/dist/run/preparation-context-error.js +15 -0
- package/dist/run/preparation-context-error.js.map +1 -0
- package/dist/run-query/index.d.ts +3 -1
- package/dist/run-query/index.d.ts.map +1 -1
- package/dist/runtime/jobs/awaited-jobs.d.ts +215 -0
- package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -0
- package/dist/runtime/jobs/awaited-jobs.js +259 -0
- package/dist/runtime/jobs/awaited-jobs.js.map +1 -0
- package/dist/runtime/jobs/registry.d.ts +33 -2
- package/dist/runtime/jobs/registry.d.ts.map +1 -1
- package/dist/runtime/jobs/registry.js +37 -0
- package/dist/runtime/jobs/registry.js.map +1 -1
- package/dist/runtime/query/callback-inference.d.ts +8 -0
- package/dist/runtime/query/callback-inference.d.ts.map +1 -0
- package/dist/runtime/query/callback-inference.js +89 -0
- package/dist/runtime/query/callback-inference.js.map +1 -0
- package/dist/runtime/query/checkpoint.d.ts +4 -0
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +13 -0
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/events.d.ts +1 -0
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +18 -0
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +35 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +77 -8
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/file-evidence-context.d.ts +5 -0
- package/dist/runtime/query/file-evidence-context.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-context.js +180 -0
- package/dist/runtime/query/file-evidence-context.js.map +1 -0
- package/dist/runtime/query/file-evidence-replay.d.ts +260 -0
- package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-replay.js +647 -0
- package/dist/runtime/query/file-evidence-replay.js.map +1 -0
- package/dist/runtime/query/file-evidence-seed.d.ts +50 -0
- package/dist/runtime/query/file-evidence-seed.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-seed.js +100 -0
- package/dist/runtime/query/file-evidence-seed.js.map +1 -0
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +4 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts +10 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +133 -26
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +92 -36
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +420 -117
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts +2 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.js +2 -1
- package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +12 -1
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +8 -1
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/provider-rejected-image.d.ts +2 -1
- package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -1
- package/dist/runtime/query/iteration/provider-rejected-image.js +5 -2
- package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts +4 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +22 -8
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/plugin-hooks.d.ts +14 -0
- package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
- package/dist/runtime/query/plugin-hooks.js +18 -0
- package/dist/runtime/query/plugin-hooks.js.map +1 -1
- package/dist/runtime/query/repeat-call.d.ts +17 -4
- package/dist/runtime/query/repeat-call.d.ts.map +1 -1
- package/dist/runtime/query/repeat-call.js +26 -19
- package/dist/runtime/query/repeat-call.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts +18 -33
- package/dist/runtime/query/resume-pending.d.ts.map +1 -1
- package/dist/runtime/query/resume-pending.js +59 -42
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/review-policy.d.ts +4 -4
- package/dist/runtime/query/review-policy.d.ts.map +1 -1
- package/dist/runtime/query/review-policy.js +10 -9
- package/dist/runtime/query/review-policy.js.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.js +4 -0
- package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
- package/dist/runtime/query/steering.d.ts +11 -1
- package/dist/runtime/query/steering.d.ts.map +1 -1
- package/dist/runtime/query/steering.js +12 -1
- package/dist/runtime/query/steering.js.map +1 -1
- package/dist/runtime/query/tool-output-budget.d.ts +10 -6
- package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
- package/dist/runtime/query/tool-output-budget.js +54 -12
- package/dist/runtime/query/tool-output-budget.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +5 -1
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +5 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +49 -0
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +122 -2
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/store/evidence/compaction-archive.d.ts +109 -0
- package/dist/store/evidence/compaction-archive.d.ts.map +1 -0
- package/dist/store/evidence/compaction-archive.js +125 -0
- package/dist/store/evidence/compaction-archive.js.map +1 -0
- package/dist/store/evidence/compaction-provenance.d.ts +7 -0
- package/dist/store/evidence/compaction-provenance.d.ts.map +1 -0
- package/dist/store/evidence/compaction-provenance.js +49 -0
- package/dist/store/evidence/compaction-provenance.js.map +1 -0
- package/dist/store/evidence/compaction-text.d.ts +16 -0
- package/dist/store/evidence/compaction-text.d.ts.map +1 -0
- package/dist/store/evidence/compaction-text.js +51 -0
- package/dist/store/evidence/compaction-text.js.map +1 -0
- package/dist/store/evidence/disk.d.ts +11 -0
- package/dist/store/evidence/disk.d.ts.map +1 -0
- package/dist/store/evidence/disk.js +367 -0
- package/dist/store/evidence/disk.js.map +1 -0
- package/dist/store/evidence/format.d.ts +25 -0
- package/dist/store/evidence/format.d.ts.map +1 -0
- package/dist/store/evidence/format.js +115 -0
- package/dist/store/evidence/format.js.map +1 -0
- package/dist/store/evidence/index-page.d.ts +208 -0
- package/dist/store/evidence/index-page.d.ts.map +1 -0
- package/dist/store/evidence/index-page.js +262 -0
- package/dist/store/evidence/index-page.js.map +1 -0
- package/dist/store/evidence/io.d.ts +24 -0
- package/dist/store/evidence/io.d.ts.map +1 -0
- package/dist/store/evidence/io.js +69 -0
- package/dist/store/evidence/io.js.map +1 -0
- package/dist/store/evidence/linked.d.ts +9 -0
- package/dist/store/evidence/linked.d.ts.map +1 -0
- package/dist/store/evidence/linked.js +314 -0
- package/dist/store/evidence/linked.js.map +1 -0
- package/dist/store/evidence/passages.d.ts +15 -0
- package/dist/store/evidence/passages.d.ts.map +1 -0
- package/dist/store/evidence/passages.js +72 -0
- package/dist/store/evidence/passages.js.map +1 -0
- package/dist/store/evidence/record-chain.d.ts +42 -0
- package/dist/store/evidence/record-chain.d.ts.map +1 -0
- package/dist/store/evidence/record-chain.js +111 -0
- package/dist/store/evidence/record-chain.js.map +1 -0
- package/dist/store/evidence/search-input.d.ts +21 -0
- package/dist/store/evidence/search-input.d.ts.map +1 -0
- package/dist/store/evidence/search-input.js +44 -0
- package/dist/store/evidence/search-input.js.map +1 -0
- package/dist/store/evidence/selection.d.ts +9 -0
- package/dist/store/evidence/selection.d.ts.map +1 -0
- package/dist/store/evidence/selection.js +17 -0
- package/dist/store/evidence/selection.js.map +1 -0
- package/dist/store/evidence/source-kind.d.ts +11 -0
- package/dist/store/evidence/source-kind.d.ts.map +1 -0
- package/dist/store/evidence/source-kind.js +26 -0
- package/dist/store/evidence/source-kind.js.map +1 -0
- package/dist/store/evidence/source-text.d.ts +51 -0
- package/dist/store/evidence/source-text.d.ts.map +1 -0
- package/dist/store/evidence/source-text.js +213 -0
- package/dist/store/evidence/source-text.js.map +1 -0
- package/dist/store/evidence/types.d.ts +162 -0
- package/dist/store/evidence/types.d.ts.map +1 -0
- package/dist/store/evidence/types.js +2 -0
- package/dist/store/evidence/types.js.map +1 -0
- package/dist/store/memory/disk.d.ts +2 -0
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +2 -1
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/disk.d.ts +10 -0
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +87 -7
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/memory.d.ts +1 -0
- package/dist/store/run/memory.d.ts.map +1 -1
- package/dist/store/run/memory.js +10 -0
- package/dist/store/run/memory.js.map +1 -1
- package/dist/store/run/tool-executions.d.ts +13 -0
- package/dist/store/run/tool-executions.d.ts.map +1 -0
- package/dist/store/run/tool-executions.js +99 -0
- package/dist/store/run/tool-executions.js.map +1 -0
- package/dist/store/session/index.d.ts +2 -0
- package/dist/store/session/index.d.ts.map +1 -1
- package/dist/store/session/index.js +1 -0
- package/dist/store/session/index.js.map +1 -1
- package/dist/store/session/sqlite.d.ts +57 -0
- package/dist/store/session/sqlite.d.ts.map +1 -0
- package/dist/store/session/sqlite.js +430 -0
- package/dist/store/session/sqlite.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +4 -10
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/edit-apply.d.ts +126 -0
- package/dist/tools/builtins/edit-apply.d.ts.map +1 -0
- package/dist/tools/builtins/edit-apply.js +360 -0
- package/dist/tools/builtins/edit-apply.js.map +1 -0
- package/dist/tools/builtins/edit.d.ts +143 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +37 -219
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/index.d.ts +1 -0
- package/dist/tools/builtins/index.d.ts.map +1 -1
- package/dist/tools/builtins/index.js +9 -3
- package/dist/tools/builtins/index.js.map +1 -1
- package/dist/tools/builtins/job.d.ts.map +1 -1
- package/dist/tools/builtins/job.js +5 -6
- package/dist/tools/builtins/job.js.map +1 -1
- package/dist/tools/builtins/read-file.d.ts +2 -2
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +50 -65
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/read-render.d.ts +56 -0
- package/dist/tools/builtins/read-render.d.ts.map +1 -0
- package/dist/tools/builtins/read-render.js +73 -0
- package/dist/tools/builtins/read-render.js.map +1 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts +67 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -0
- package/dist/tools/builtins/wait-for-job-bounds.js +108 -0
- package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -0
- package/dist/tools/builtins/wait-for-job.d.ts +6 -0
- package/dist/tools/builtins/wait-for-job.d.ts.map +1 -0
- package/dist/tools/builtins/wait-for-job.js +162 -0
- package/dist/tools/builtins/wait-for-job.js.map +1 -0
- package/dist/tools/builtins/write-file.js +7 -2
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +1 -7
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/defineTool.d.ts +2 -1
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -1
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/file-read-tracker.d.ts.map +1 -1
- package/dist/tools/file-read-tracker.js +90 -3
- package/dist/tools/file-read-tracker.js.map +1 -1
- package/dist/tools/resident-history.d.ts +10 -0
- package/dist/tools/resident-history.d.ts.map +1 -0
- package/dist/tools/resident-history.js +80 -0
- package/dist/tools/resident-history.js.map +1 -0
- package/dist/tools/resident-tool-evidence.d.ts +5 -0
- package/dist/tools/resident-tool-evidence.d.ts.map +1 -0
- package/dist/tools/resident-tool-evidence.js +57 -0
- package/dist/tools/resident-tool-evidence.js.map +1 -0
- package/dist/types/advisory/config.d.ts +7 -0
- package/dist/types/advisory/config.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +1 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/authorization/index.d.ts +9 -9
- package/dist/types/authorization/index.d.ts.map +1 -1
- package/dist/types/authorization/index.js +1 -1
- package/dist/types/authorization/index.js.map +1 -1
- package/dist/types/hitl/index.d.ts +4 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/message/index.d.ts +16 -2
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +10 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +2 -0
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +4 -0
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/run/answer-review.d.ts +34 -3
- package/dist/types/run/answer-review.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +3 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/entity.d.ts +20 -0
- package/dist/types/run/entity.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +31 -8
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/prepare-step.d.ts +53 -8
- package/dist/types/run/prepare-step.d.ts.map +1 -1
- package/dist/types/run/store.d.ts +29 -4
- package/dist/types/run/store.d.ts.map +1 -1
- package/dist/types/run/store.js +0 -28
- package/dist/types/run/store.js.map +1 -1
- package/dist/types/sandbox/index.d.ts +15 -14
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/tool/index.d.ts +124 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/utils/await-with-abort.d.ts +8 -0
- package/dist/utils/await-with-abort.d.ts.map +1 -0
- package/dist/utils/await-with-abort.js +28 -0
- package/dist/utils/await-with-abort.js.map +1 -0
- package/dist/utils/env.d.ts +19 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +25 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/evidence-time.d.ts +3 -0
- package/dist/utils/evidence-time.d.ts.map +1 -0
- package/dist/utils/evidence-time.js +10 -0
- package/dist/utils/evidence-time.js.map +1 -0
- package/dist/utils/evidence-tokens.d.ts +13 -0
- package/dist/utils/evidence-tokens.d.ts.map +1 -0
- package/dist/utils/evidence-tokens.js +29 -0
- package/dist/utils/evidence-tokens.js.map +1 -0
- package/package.json +1 -1
- package/src/advisory/executor.ts +15 -30
- package/src/advisory/history.ts +126 -0
- package/src/advisory/index.ts +5 -1
- package/src/agents/ReactiveAgent.ts +3 -0
- package/src/agents/runAgent.ts +14 -1
- package/src/compaction/manual.ts +30 -2
- package/src/compaction/summary.ts +4 -1
- package/src/config/runtime.ts +2 -2
- package/src/connector/mcp/adapter.ts +20 -6
- package/src/contracts/schemas.ts +1 -1
- package/src/eval/harness-protection.ts +79 -0
- package/src/eval/harness-verification.ts +31 -1
- package/src/eval/index.ts +1 -0
- package/src/manager/resident/activity.ts +187 -0
- package/src/manager/resident/agenda.ts +59 -5
- package/src/manager/resident/consumption.ts +311 -0
- package/src/manager/resident/evidence-recall.ts +363 -0
- package/src/manager/resident/history-disk.ts +63 -0
- package/src/manager/resident/history.ts +312 -0
- package/src/manager/resident/initiative.ts +13 -3
- package/src/manager/resident/learning-cycle.ts +499 -0
- package/src/manager/resident/learning-observation.ts +39 -0
- package/src/manager/resident/learning-store.ts +813 -0
- package/src/manager/resident/learning.ts +132 -8
- package/src/manager/resident/store.ts +31 -3
- package/src/manager/resident/tool-evidence.ts +412 -0
- package/src/manager/run/persistence.ts +18 -0
- package/src/plugin/loader.ts +8 -3
- package/src/prompt/coding-agent-doctrine.ts +2 -0
- package/src/prompt/index.ts +2 -0
- package/src/prompt/resident-learning.ts +143 -0
- package/src/prompt/resident-step.ts +83 -3
- package/src/provider/collect-chat-completion.ts +7 -6
- package/src/provider/fallback.ts +2 -1
- package/src/provider/stream-text.ts +56 -0
- package/src/public-runtime.ts +39 -1
- package/src/public-tools.ts +21 -0
- package/src/public-types.ts +98 -0
- package/src/registry/tool/execute.ts +2 -4
- package/src/registry/tool/portable.ts +264 -0
- package/src/registry/tool/schema.ts +38 -8
- package/src/registry/toolset/catalog.ts +8 -9
- package/src/run/LimitChecker.ts +3 -3
- package/src/run/evidence-query.ts +333 -0
- package/src/run/evidence-recall.ts +854 -0
- package/src/run/index.ts +11 -0
- package/src/run/json-claim-verifier.ts +298 -0
- package/src/run/preparation-context-error.ts +16 -0
- package/src/run-query/index.ts +1 -1
- package/src/runtime/jobs/awaited-jobs.ts +271 -0
- package/src/runtime/jobs/registry.ts +50 -0
- package/src/runtime/query/callback-inference.ts +94 -0
- package/src/runtime/query/checkpoint.ts +14 -0
- package/src/runtime/query/events.ts +22 -0
- package/src/runtime/query/executor.ts +100 -10
- package/src/runtime/query/file-evidence-context.ts +209 -0
- package/src/runtime/query/file-evidence-replay.ts +776 -0
- package/src/runtime/query/file-evidence-seed.ts +126 -0
- package/src/runtime/query/guard.ts +2 -0
- package/src/runtime/query/index.ts +153 -27
- package/src/runtime/query/iteration/index.ts +467 -110
- package/src/runtime/query/iteration/phases/advisory.ts +3 -0
- package/src/runtime/query/iteration/phases/context.ts +12 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +7 -0
- package/src/runtime/query/iteration/provider-rejected-image.ts +6 -1
- package/src/runtime/query/iteration/stream-turn.ts +35 -8
- package/src/runtime/query/plugin-hooks.ts +20 -0
- package/src/runtime/query/repeat-call.ts +28 -18
- package/src/runtime/query/resume-pending.ts +65 -40
- package/src/runtime/query/review-policy.ts +13 -9
- package/src/runtime/query/sandbox-lifecycle.ts +3 -0
- package/src/runtime/query/steering.ts +11 -0
- package/src/runtime/query/tool-output-budget.ts +65 -13
- package/src/runtime/query/tooling.ts +10 -1
- package/src/scheduler/completion-inbox.ts +124 -2
- package/src/store/evidence/compaction-archive.ts +139 -0
- package/src/store/evidence/compaction-provenance.ts +52 -0
- package/src/store/evidence/compaction-text.ts +61 -0
- package/src/store/evidence/disk.ts +461 -0
- package/src/store/evidence/format.ts +126 -0
- package/src/store/evidence/index-page.ts +292 -0
- package/src/store/evidence/io.ts +95 -0
- package/src/store/evidence/linked.ts +365 -0
- package/src/store/evidence/passages.ts +88 -0
- package/src/store/evidence/record-chain.ts +108 -0
- package/src/store/evidence/search-input.ts +62 -0
- package/src/store/evidence/selection.ts +25 -0
- package/src/store/evidence/source-kind.ts +36 -0
- package/src/store/evidence/source-text.ts +285 -0
- package/src/store/evidence/types.ts +177 -0
- package/src/store/memory/disk.ts +4 -1
- package/src/store/run/disk.ts +110 -8
- package/src/store/run/memory.ts +10 -0
- package/src/store/run/tool-executions.ts +112 -0
- package/src/store/session/index.ts +2 -0
- package/src/store/session/sqlite.ts +584 -0
- package/src/tools/builtins/bash.ts +4 -10
- package/src/tools/builtins/edit-apply.ts +456 -0
- package/src/tools/builtins/edit.ts +39 -270
- package/src/tools/builtins/index.ts +9 -3
- package/src/tools/builtins/job.ts +5 -6
- package/src/tools/builtins/read-file.ts +56 -77
- package/src/tools/builtins/read-render.ts +104 -0
- package/src/tools/builtins/wait-for-job-bounds.ts +179 -0
- package/src/tools/builtins/wait-for-job.ts +184 -0
- package/src/tools/builtins/write-file.ts +7 -2
- package/src/tools/coordinator/index.ts +1 -7
- package/src/tools/defineTool.ts +4 -2
- package/src/tools/file-read-tracker.ts +86 -2
- package/src/tools/resident-history.ts +86 -0
- package/src/tools/resident-tool-evidence.ts +68 -0
- package/src/types/advisory/config.ts +7 -0
- package/src/types/agent/reactive.ts +1 -0
- package/src/types/authorization/index.ts +2 -2
- package/src/types/hitl/index.ts +4 -0
- package/src/types/message/index.ts +22 -0
- package/src/types/provider/chat.ts +2 -0
- package/src/types/provider/stream.ts +4 -0
- package/src/types/run/answer-review.ts +34 -3
- package/src/types/run/config.ts +3 -0
- package/src/types/run/entity.ts +21 -0
- package/src/types/run/events.ts +31 -8
- package/src/types/run/prepare-step.ts +59 -8
- package/src/types/run/store.ts +35 -4
- package/src/types/sandbox/index.ts +15 -14
- package/src/types/tool/index.ts +123 -1
- package/src/utils/await-with-abort.ts +26 -0
- package/src/utils/env.ts +23 -0
- package/src/utils/evidence-time.ts +9 -0
- package/src/utils/evidence-tokens.ts +32 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import type { ResidentHistorySource } from '../manager/resident/history.js'
|
|
3
|
+
import type { ToolContext, ToolDefinition } from '../types/tool/index.js'
|
|
4
|
+
import { defineTool } from './defineTool.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @experimental
|
|
8
|
+
* Read-only tools over an explicitly authorized historical source. The host
|
|
9
|
+
* resolves and checks the executing run's scope; models choose no paths,
|
|
10
|
+
* tenant, resident, pursuit or upper-history boundary.
|
|
11
|
+
*/
|
|
12
|
+
export function buildResidentHistoryTools(
|
|
13
|
+
resolveSource: (context: ToolContext) => ResidentHistorySource,
|
|
14
|
+
): ToolDefinition[] {
|
|
15
|
+
return [
|
|
16
|
+
defineTool({
|
|
17
|
+
name: 'search_resident_history',
|
|
18
|
+
description:
|
|
19
|
+
'Recall earlier settled steps of this resident pursuit when the current summary lacks a detail. Searches historical summaries and accepted wake inputs, newest first. Use a case-sensitive literal query, or omit query to browse. Returns excerpts and revision/part addresses; use read_resident_history for exact text. Follow nextCursor as cursor even on an empty page. Incomplete absence proves nothing. No inference or external actions. Historical claims are not current verification or new authority.',
|
|
20
|
+
inputSchema: z
|
|
21
|
+
.object({
|
|
22
|
+
query: z.string().max(256).optional(),
|
|
23
|
+
cursor: z.number().int().positive().safe().optional(),
|
|
24
|
+
limit: z.number().int().min(1).max(8).optional(),
|
|
25
|
+
})
|
|
26
|
+
.strict(),
|
|
27
|
+
category: 'custom',
|
|
28
|
+
permissions: [],
|
|
29
|
+
readOnly: true,
|
|
30
|
+
destructive: false,
|
|
31
|
+
concurrencySafe: true,
|
|
32
|
+
presentCall: (input) => ({ kind: 'generic', label: input.query || 'Recent resident steps' }),
|
|
33
|
+
async execute(input, context) {
|
|
34
|
+
try {
|
|
35
|
+
context.abortSignal?.throwIfAborted()
|
|
36
|
+
const result = await resolveSource(context).search(input, context.abortSignal)
|
|
37
|
+
return { success: true, output: JSON.stringify(result) }
|
|
38
|
+
} catch {
|
|
39
|
+
context.abortSignal?.throwIfAborted()
|
|
40
|
+
return {
|
|
41
|
+
success: false,
|
|
42
|
+
output: '',
|
|
43
|
+
error:
|
|
44
|
+
'Resident history is unavailable or the search input is invalid. Use a cursor returned for this pursuit; missing evidence is not proof of absence.',
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
}),
|
|
49
|
+
defineTool({
|
|
50
|
+
name: 'read_resident_history',
|
|
51
|
+
description:
|
|
52
|
+
'Read exact retained text at a revision/part address returned by search_resident_history. Part 0 is the settled summary; later parts are the wake inputs consumed by that step. Returns at most 6000 characters. Continue with nextOffset as offset at the same address. Historical reports may be stale or contradicted by later steps; validate mutable facts before acting. Does not replay actions or restore unrecorded tool output.',
|
|
53
|
+
inputSchema: z
|
|
54
|
+
.object({
|
|
55
|
+
revision: z.number().int().positive().safe(),
|
|
56
|
+
part: z.number().int().min(0).max(16),
|
|
57
|
+
offset: z.number().int().nonnegative().safe().optional(),
|
|
58
|
+
})
|
|
59
|
+
.strict(),
|
|
60
|
+
category: 'custom',
|
|
61
|
+
permissions: [],
|
|
62
|
+
readOnly: true,
|
|
63
|
+
destructive: false,
|
|
64
|
+
concurrencySafe: true,
|
|
65
|
+
presentCall: (input) => ({
|
|
66
|
+
kind: 'generic',
|
|
67
|
+
label: `Step evidence · revision ${input.revision} · part ${input.part}`,
|
|
68
|
+
}),
|
|
69
|
+
async execute(input, context) {
|
|
70
|
+
try {
|
|
71
|
+
context.abortSignal?.throwIfAborted()
|
|
72
|
+
const result = await resolveSource(context).read(input, context.abortSignal)
|
|
73
|
+
return { success: true, output: JSON.stringify(result) }
|
|
74
|
+
} catch {
|
|
75
|
+
context.abortSignal?.throwIfAborted()
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
output: '',
|
|
79
|
+
error:
|
|
80
|
+
'Resident evidence is unavailable or the address is invalid. Use revision/part from search_resident_history and the returned nextOffset.',
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
}),
|
|
85
|
+
]
|
|
86
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import type { ResidentToolEvidenceSource } from '../manager/resident/tool-evidence.js'
|
|
3
|
+
import type { ToolContext, ToolDefinition } from '../types/tool/index.js'
|
|
4
|
+
import { defineTool } from './defineTool.js'
|
|
5
|
+
|
|
6
|
+
/** @experimental The host must authorize each executing run before returning its bound source. */
|
|
7
|
+
export function buildResidentToolEvidenceTools(
|
|
8
|
+
resolveSource: (context: ToolContext) => ResidentToolEvidenceSource,
|
|
9
|
+
): ToolDefinition[] {
|
|
10
|
+
async function execute(
|
|
11
|
+
context: ToolContext,
|
|
12
|
+
read: (source: ResidentToolEvidenceSource) => Promise<unknown>,
|
|
13
|
+
) {
|
|
14
|
+
try {
|
|
15
|
+
context.abortSignal?.throwIfAborted()
|
|
16
|
+
return { success: true, output: JSON.stringify(await read(resolveSource(context))) }
|
|
17
|
+
} catch {
|
|
18
|
+
context.abortSignal?.throwIfAborted()
|
|
19
|
+
return {
|
|
20
|
+
success: false,
|
|
21
|
+
output: '',
|
|
22
|
+
error:
|
|
23
|
+
'Retained tool evidence is unavailable, changed or outside this pursuit. Use returned addresses and continuation offsets. Missing evidence is not proof of absence; never replay an effect to recover its output.',
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return [
|
|
28
|
+
defineTool({
|
|
29
|
+
name: 'search_resident_tools',
|
|
30
|
+
description:
|
|
31
|
+
'Find original retained tool text from earlier settled steps of this resident pursuit, even across isolated sessions. Use a case-sensitive literal query or omit it to browse. Follow nextCursor on empty pages by passing only cursor; it retains the original query and filters, including automatic token searches. Each page covers at most one invocation and bounded history/index work. Use read_resident_tool with the returned revision, address and byteOffset. Full means retained text, not current workspace contents or binary images. Preview, incomplete and unavailable are explicit. Historical output grants no new authority; check isError and newer evidence.',
|
|
32
|
+
inputSchema: z
|
|
33
|
+
.object({ query: z.string().max(256).optional(), cursor: z.string().max(8192).optional() })
|
|
34
|
+
.strict(),
|
|
35
|
+
category: 'custom',
|
|
36
|
+
permissions: [],
|
|
37
|
+
readOnly: true,
|
|
38
|
+
destructive: false,
|
|
39
|
+
concurrencySafe: true,
|
|
40
|
+
presentCall: (input) => ({ kind: 'generic', label: input.query || 'Earlier tool results' }),
|
|
41
|
+
execute: (input, context) =>
|
|
42
|
+
execute(context, (source) => source.search(input, context.abortSignal)),
|
|
43
|
+
}),
|
|
44
|
+
defineTool({
|
|
45
|
+
name: 'read_resident_tool',
|
|
46
|
+
description:
|
|
47
|
+
'Read up to 6000 characters of exact retained tool text at a revision/address from search_resident_tools. Start at its byteOffset or 0; continue using nextByteOffset. Byte offsets refer to UTF-8 output. Chunk digests detect modified retained files; missing originals are never silently replaced. Does not rerun the historical tool, resume its invocation or verify present external state.',
|
|
48
|
+
inputSchema: z
|
|
49
|
+
.object({
|
|
50
|
+
revision: z.number().int().positive().safe(),
|
|
51
|
+
address: z.string().max(8192),
|
|
52
|
+
byteOffset: z.number().int().nonnegative().safe().optional(),
|
|
53
|
+
})
|
|
54
|
+
.strict(),
|
|
55
|
+
category: 'custom',
|
|
56
|
+
permissions: [],
|
|
57
|
+
readOnly: true,
|
|
58
|
+
destructive: false,
|
|
59
|
+
concurrencySafe: true,
|
|
60
|
+
presentCall: (input) => ({
|
|
61
|
+
kind: 'generic',
|
|
62
|
+
label: `Retained tool text · revision ${input.revision}`,
|
|
63
|
+
}),
|
|
64
|
+
execute: (input, context) =>
|
|
65
|
+
execute(context, (source) => source.read(input, context.abortSignal)),
|
|
66
|
+
}),
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -11,6 +11,13 @@ export interface AdvisorDefinition {
|
|
|
11
11
|
readonly domains?: string[]
|
|
12
12
|
readonly persona?: AgentPersona
|
|
13
13
|
readonly systemPrompt?: string
|
|
14
|
+
/**
|
|
15
|
+
* Conversation-record window, estimated at four serialized characters per
|
|
16
|
+
* token. Keeps a contiguous suffix of whole public records; roles, tool
|
|
17
|
+
* calls/results, escaping and separators count toward this window.
|
|
18
|
+
* Fixed framing, working state, tool catalogue, system prompt and question
|
|
19
|
+
* are separate. Omitted or zero leaves the record window unbounded.
|
|
20
|
+
*/
|
|
14
21
|
readonly maxContextTokens?: number
|
|
15
22
|
readonly useCompactedContext?: boolean
|
|
16
23
|
readonly maxResponseTokens?: number
|
|
@@ -106,6 +106,7 @@ export interface ReactiveAgentConfig extends BaseAgentConfig {
|
|
|
106
106
|
toolRetryBackoff?: QueryParams['toolRetryBackoff']
|
|
107
107
|
maxToolConcurrency?: number
|
|
108
108
|
maxToolOutputChars?: number
|
|
109
|
+
retainedToolPreviewChars?: QueryParams['retainedToolPreviewChars']
|
|
109
110
|
/**
|
|
110
111
|
* Cap on the RICH channel of a single tool result, in base64 characters.
|
|
111
112
|
* `0` or absent disables it. Separate from {@link maxToolOutputChars}:
|
|
@@ -50,7 +50,7 @@ export type AuthorizationRule =
|
|
|
50
50
|
type: 'custom_pattern'
|
|
51
51
|
pattern: string
|
|
52
52
|
target: 'name' | 'args' | 'both'
|
|
53
|
-
decision: 'allow' | 'deny'
|
|
53
|
+
decision: 'allow' | 'deny' | 'review'
|
|
54
54
|
}
|
|
55
55
|
| {
|
|
56
56
|
/**
|
|
@@ -112,7 +112,7 @@ const CustomPatternSchema = z.object({
|
|
|
112
112
|
type: z.literal('custom_pattern'),
|
|
113
113
|
pattern: z.string().max(MAX_CUSTOM_PATTERN_LENGTH),
|
|
114
114
|
target: z.enum(['name', 'args', 'both']),
|
|
115
|
-
decision: z.enum(['allow', 'deny']),
|
|
115
|
+
decision: z.enum(['allow', 'deny', 'review']),
|
|
116
116
|
})
|
|
117
117
|
const ArgumentPatternSchema = z.object({
|
|
118
118
|
type: z.literal('argument_pattern'),
|
package/src/types/hitl/index.ts
CHANGED
|
@@ -82,6 +82,8 @@ export interface ToolCallSummary {
|
|
|
82
82
|
authorization?: {
|
|
83
83
|
decision: 'allow' | 'deny' | 'review'
|
|
84
84
|
reason?: string
|
|
85
|
+
/** A matching rule requested review; read-only exemptions must not bypass it. */
|
|
86
|
+
explicitReview?: true
|
|
85
87
|
}
|
|
86
88
|
}
|
|
87
89
|
|
|
@@ -220,6 +222,8 @@ export interface IterationCheckpoint {
|
|
|
220
222
|
latestUserMessage?: UserMessage
|
|
221
223
|
/** Structured host-review rejections consumed at this checkpoint, independent of compacted messages. */
|
|
222
224
|
structuredReviewAttempts?: number
|
|
225
|
+
/** Consumed prose-answer rejections, independent of compactable feedback messages. */
|
|
226
|
+
answerReviewAttempts?: number
|
|
223
227
|
/** Native structured-output corrections consumed independently of message history. */
|
|
224
228
|
nativeStructuredAttempts?: number
|
|
225
229
|
tokenUsage: TokenUsage
|
|
@@ -195,6 +195,8 @@ export interface BaseMessage {
|
|
|
195
195
|
export interface SystemMessage extends BaseMessage {
|
|
196
196
|
role: 'system'
|
|
197
197
|
content: string
|
|
198
|
+
/** Host provenance for a derived summary, independent of its textual heading. */
|
|
199
|
+
source?: { readonly type: 'compaction-summary' }
|
|
198
200
|
}
|
|
199
201
|
|
|
200
202
|
export interface UserMessage extends BaseMessage {
|
|
@@ -244,8 +246,11 @@ export const RUNTIME_CONTEXT_MESSAGE_KINDS = [
|
|
|
244
246
|
'advisory',
|
|
245
247
|
'answer-review',
|
|
246
248
|
'auto-continuation',
|
|
249
|
+
'job-exit',
|
|
247
250
|
'limit-finalization',
|
|
251
|
+
'repeat-call',
|
|
248
252
|
'steering',
|
|
253
|
+
'step-context',
|
|
249
254
|
'structured-output',
|
|
250
255
|
'task-completion',
|
|
251
256
|
] as const
|
|
@@ -374,9 +379,24 @@ export interface ReasoningBlock {
|
|
|
374
379
|
readonly encrypted?: string
|
|
375
380
|
}
|
|
376
381
|
|
|
382
|
+
/** Ordered public assistant text items; these are not private reasoning blocks. */
|
|
383
|
+
export interface AssistantTextPart {
|
|
384
|
+
readonly id: string
|
|
385
|
+
readonly text: string
|
|
386
|
+
readonly phase?: 'commentary' | 'final_answer'
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/** Select explicit final answers, retaining unphased behavior when none is identified. */
|
|
390
|
+
export function selectAssistantText(parts: readonly AssistantTextPart[]): string {
|
|
391
|
+
const final = parts.filter((part) => part.phase === 'final_answer')
|
|
392
|
+
return (final.length ? final : parts).map((part) => part.text).join('\n\n')
|
|
393
|
+
}
|
|
394
|
+
|
|
377
395
|
export interface AssistantMessage extends BaseMessage {
|
|
378
396
|
role: 'assistant'
|
|
379
397
|
content: string | null
|
|
398
|
+
/** Original ordered text items, including commentary excluded from the selected answer. */
|
|
399
|
+
textParts?: readonly AssistantTextPart[]
|
|
380
400
|
toolCalls?: ToolCall[]
|
|
381
401
|
/** Which configured model route produced this turn. */
|
|
382
402
|
source?: AssistantMessageSource
|
|
@@ -501,6 +521,7 @@ export function createAssistantMessage(
|
|
|
501
521
|
reasoning?: readonly ReasoningBlock[],
|
|
502
522
|
citations?: readonly Citation[],
|
|
503
523
|
source?: AssistantMessageSource,
|
|
524
|
+
textParts?: readonly AssistantTextPart[],
|
|
504
525
|
): AssistantMessage {
|
|
505
526
|
return {
|
|
506
527
|
role: 'assistant',
|
|
@@ -509,6 +530,7 @@ export function createAssistantMessage(
|
|
|
509
530
|
...(reasoning && reasoning.length > 0 ? { reasoning } : {}),
|
|
510
531
|
...(citations && citations.length > 0 ? { citations } : {}),
|
|
511
532
|
...(source ? { source } : {}),
|
|
533
|
+
...(textParts ? { textParts } : {}),
|
|
512
534
|
timestamp: Date.now(),
|
|
513
535
|
}
|
|
514
536
|
}
|
|
@@ -182,6 +182,8 @@ export interface ChatCompletionResponse {
|
|
|
182
182
|
message: {
|
|
183
183
|
role: 'assistant'
|
|
184
184
|
content: string | null
|
|
185
|
+
/** Ordered public text items; content selects explicit final answers when present. */
|
|
186
|
+
textParts?: readonly import('../message/index.js').AssistantTextPart[]
|
|
185
187
|
toolCalls?: ToolCall[]
|
|
186
188
|
/** Reasoning blocks the model emitted, in original block order. */
|
|
187
189
|
reasoning?: readonly ReasoningBlock[]
|
|
@@ -8,6 +8,8 @@ export interface StreamChunk {
|
|
|
8
8
|
* retain the last defined value and the query stores it in message source.
|
|
9
9
|
*/
|
|
10
10
|
replayState?: unknown
|
|
11
|
+
/** Complete ordered text snapshot, emitted at settlement; replaces accumulated text items. */
|
|
12
|
+
textParts?: readonly import('../message/index.js').AssistantTextPart[]
|
|
11
13
|
delta: {
|
|
12
14
|
/** Activity executed by the provider, never a local function-call request. */
|
|
13
15
|
hostedTool?: {
|
|
@@ -17,6 +19,8 @@ export interface StreamChunk {
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
content?: string
|
|
22
|
+
/** Identity and phase of this content fragment, when the provider supplies them. */
|
|
23
|
+
textPart?: Omit<import('../message/index.js').AssistantTextPart, 'text'>
|
|
20
24
|
toolCalls?: Array<{
|
|
21
25
|
index: number
|
|
22
26
|
id?: string
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RunId } from '../ids/index.js'
|
|
2
|
-
import type { Message } from '../message/index.js'
|
|
2
|
+
import type { Message, UserMessage } from '../message/index.js'
|
|
3
|
+
import type { PreparationTextRequest, PreparationTextResult } from './prepare-step.js'
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* A host's verdict on the answer a run is about to settle with.
|
|
@@ -15,7 +16,7 @@ export type AnswerReview =
|
|
|
15
16
|
| {
|
|
16
17
|
readonly accept: false
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
+
* Feedback supplied as runtime context on the next model request.
|
|
19
20
|
*
|
|
20
21
|
* Prose rather than a code, because the model is the audience
|
|
21
22
|
* and a code would have to be explained to it anyway. Say what
|
|
@@ -31,8 +32,36 @@ export interface AnswerReviewContext {
|
|
|
31
32
|
readonly iteration: number
|
|
32
33
|
/** Run cancellation; reviewers should forward it to verification operations. */
|
|
33
34
|
readonly signal?: AbortSignal
|
|
34
|
-
/**
|
|
35
|
+
/** Canonical history currently retained by the run; compaction may remove messages. */
|
|
35
36
|
readonly messages: readonly Message[]
|
|
37
|
+
/**
|
|
38
|
+
* Isolated copy of the SDK messages dispatched for this candidate's model
|
|
39
|
+
* request, after context projection and any image-recovery retry. Includes
|
|
40
|
+
* request-only evidence absent from durable history; excludes this candidate
|
|
41
|
+
* and subsequently delivered messages/results. This is the provider-chain
|
|
42
|
+
* input, not a vendor-wire capture or proof of truth/freshness. Optional for
|
|
43
|
+
* hosts constructing their own review context. Not checkpointed or retained
|
|
44
|
+
* as conversation history; modifying the copy cannot edit the run/request.
|
|
45
|
+
*/
|
|
46
|
+
readonly requestMessages?: readonly Message[]
|
|
47
|
+
/**
|
|
48
|
+
* Isolated copy of the latest operator, goal-round or steering input accepted
|
|
49
|
+
* before this candidate's dispatch. Retained even when compaction removes
|
|
50
|
+
* that input from history. Excludes arrivals delivered after dispatch and
|
|
51
|
+
* runtime reports. This is one input, not the complete task specification
|
|
52
|
+
* or a guarantee that the original message was sent verbatim to the model.
|
|
53
|
+
*/
|
|
54
|
+
readonly latestUserMessage?: UserMessage
|
|
55
|
+
/**
|
|
56
|
+
* Optional run-owned, tool-free inference: at most one call per review
|
|
57
|
+
* invocation, revoked when the callback ends. Uses the same bounded text
|
|
58
|
+
* request/result shapes as prepareStep and the run's metered provider chain,
|
|
59
|
+
* selected step model and effort. No history, candidate or tools are attached
|
|
60
|
+
* implicitly. Await its result before returning a verdict; generated text
|
|
61
|
+
* is a model judgment, not authenticated evidence. Missing in custom hosts
|
|
62
|
+
* which do not supply this capability.
|
|
63
|
+
*/
|
|
64
|
+
readonly generateText?: (request: PreparationTextRequest) => Promise<PreparationTextResult>
|
|
36
65
|
}
|
|
37
66
|
|
|
38
67
|
/**
|
|
@@ -43,6 +72,8 @@ export interface AnswerReviewContext {
|
|
|
43
72
|
* a closing summary under pressure, and rejecting it would spend budget
|
|
44
73
|
* the run has already run out of.
|
|
45
74
|
*
|
|
75
|
+
* Exceptions and malformed verdicts fail the run. Cancellation stops waiting;
|
|
76
|
+
* work started by a reviewer must still honor the supplied signal.
|
|
46
77
|
* Bounded: see the run's answer-review limit. A reviewer that never
|
|
47
78
|
* accepts stops the run with a stop reason that names it, rather than
|
|
48
79
|
* looping until the token budget ends the run for an unrelated reason.
|
package/src/types/run/config.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { CheckpointStore } from './checkpoint-store.js'
|
|
|
8
8
|
|
|
9
9
|
export interface AgentRunConfig {
|
|
10
10
|
model: string
|
|
11
|
+
/** Total run duration in milliseconds; 0 disables the run deadline. */
|
|
11
12
|
timeoutMs: number
|
|
12
13
|
/**
|
|
13
14
|
* Maximum silence between provider stream chunks, in milliseconds.
|
|
@@ -67,8 +68,10 @@ export interface AgentRunConfig {
|
|
|
67
68
|
effort?: import('../provider/index.js').ReasoningEffort
|
|
68
69
|
/** Provider-hosted search for this run. Explicit opt-in; no local network permission. */
|
|
69
70
|
webSearch?: import('../provider/index.js').ChatCompletionParams['webSearch']
|
|
71
|
+
/** Cumulative parent-and-descendant tokens; 0 is unlimited with usage accounting. */
|
|
70
72
|
tokenBudget: number
|
|
71
73
|
costLimitUsd?: number
|
|
74
|
+
/** Main-loop iterations; 0 disables this guard. Omitted defaults depend on the entry point. */
|
|
72
75
|
maxIterations?: number
|
|
73
76
|
temperature?: number
|
|
74
77
|
env?: Record<string, string>
|
package/src/types/run/entity.ts
CHANGED
|
@@ -10,6 +10,13 @@ import type { StopReason } from './stop-reason.js'
|
|
|
10
10
|
import type { TokenBudgetBinding } from './token-budget-store.js'
|
|
11
11
|
|
|
12
12
|
export interface RunStateMetadata {
|
|
13
|
+
/** This invocation's owner, independent of a shared ancestor token account. */
|
|
14
|
+
readonly scope?: {
|
|
15
|
+
readonly tenantId: string
|
|
16
|
+
readonly projectId: string
|
|
17
|
+
readonly sessionId: string
|
|
18
|
+
readonly runId: string
|
|
19
|
+
}
|
|
13
20
|
agentId: string
|
|
14
21
|
agentName: string
|
|
15
22
|
config: AgentRunConfig
|
|
@@ -116,6 +123,20 @@ export interface Run {
|
|
|
116
123
|
*/
|
|
117
124
|
abandonedTaskIds?: readonly string[]
|
|
118
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Background jobs the model was waiting on that were still running when
|
|
128
|
+
* this run ended.
|
|
129
|
+
*
|
|
130
|
+
* Only jobs `wait_for_job` named: a dev server nobody awaited is not work
|
|
131
|
+
* this run walked away from, it is work it deliberately left behind. The
|
|
132
|
+
* run holds itself open for these, bounded, and names the ones the bound
|
|
133
|
+
* ran out on — the same honesty `abandonedTaskIds` owes for a delegated
|
|
134
|
+
* worker, and with the same limit: naming a job is not stopping it. A
|
|
135
|
+
* run-owned job is still stopped by the run's own teardown; one bound to
|
|
136
|
+
* the host's session keeps running, which is what it was started for.
|
|
137
|
+
*/
|
|
138
|
+
abandonedJobIds?: readonly string[]
|
|
139
|
+
|
|
119
140
|
parentRunId?: RunId
|
|
120
141
|
|
|
121
142
|
depth?: number
|
package/src/types/run/events.ts
CHANGED
|
@@ -209,8 +209,8 @@ type CoreRunEvent =
|
|
|
209
209
|
iteration: number
|
|
210
210
|
/** Exactly the messages the pass removed, in their original order. */
|
|
211
211
|
messages: Message[]
|
|
212
|
-
/**
|
|
213
|
-
reason: 'threshold' | 'overflow'
|
|
212
|
+
/** Automatic threshold, provider rejection, or a host-requested pass. */
|
|
213
|
+
reason: 'threshold' | 'overflow' | 'manual'
|
|
214
214
|
}
|
|
215
215
|
| {
|
|
216
216
|
type: 'compaction_completed'
|
|
@@ -464,6 +464,8 @@ type CoreRunEvent =
|
|
|
464
464
|
outputTruncated?: boolean
|
|
465
465
|
/** Where the full output was written, when it was spilled. */
|
|
466
466
|
outputSpillPath?: string
|
|
467
|
+
/** SHA-256 of the chunk manifest captured with the retained text. */
|
|
468
|
+
outputSpillIntegrity?: string
|
|
467
469
|
}
|
|
468
470
|
/**
|
|
469
471
|
* A tool asked the user a question and the run is parked on it.
|
|
@@ -947,6 +949,7 @@ type CoreRunEvent =
|
|
|
947
949
|
iteration: number
|
|
948
950
|
messageId: MessageId
|
|
949
951
|
text: string
|
|
952
|
+
textPart?: Omit<import('../message/index.js').AssistantTextPart, 'text'>
|
|
950
953
|
}
|
|
951
954
|
| {
|
|
952
955
|
type: 'message_completed'
|
|
@@ -956,14 +959,16 @@ type CoreRunEvent =
|
|
|
956
959
|
stopReason: MessageStopReason
|
|
957
960
|
usage?: TokenUsage
|
|
958
961
|
/**
|
|
959
|
-
*
|
|
960
|
-
*
|
|
961
|
-
*
|
|
962
|
-
*
|
|
963
|
-
*
|
|
964
|
-
*
|
|
962
|
+
* Settled assistant text. When the provider supplies public text
|
|
963
|
+
* phases, this selects explicit final-answer items; concatenating
|
|
964
|
+
* raw deltas would also include intermediate commentary. All items
|
|
965
|
+
* remain available in textParts. Without phases, ordinary delta
|
|
966
|
+
* concatenation is unchanged. Stop reason still determines whether
|
|
967
|
+
* this message finished, was cancelled or hit an output limit.
|
|
965
968
|
*/
|
|
966
969
|
content?: string
|
|
970
|
+
/** Ordered original items; content selects explicit final answers if supplied. */
|
|
971
|
+
textParts?: readonly import('../message/index.js').AssistantTextPart[]
|
|
967
972
|
}
|
|
968
973
|
| {
|
|
969
974
|
type: 'tool_input_started'
|
|
@@ -1032,6 +1037,24 @@ export type PersistedRunEvent = RunEvent & {
|
|
|
1032
1037
|
readonly seq: number
|
|
1033
1038
|
/** Epoch ms at which the store recorded the event. */
|
|
1034
1039
|
readonly timestamp: number
|
|
1040
|
+
/** Optional disk integrity link to the preceding complete JSONL record. Null marks a chain boundary. */
|
|
1041
|
+
readonly previousRecord?: {
|
|
1042
|
+
readonly offset: number
|
|
1043
|
+
readonly length: number
|
|
1044
|
+
readonly sha256: string
|
|
1045
|
+
readonly seq: number
|
|
1046
|
+
} | null
|
|
1047
|
+
/**
|
|
1048
|
+
* Optional writer-owned link to the preceding text record or integrity boundary.
|
|
1049
|
+
* Text retrieval may skip nontext records; operational replay still uses every event.
|
|
1050
|
+
* Absence requires adjacent traversal. Null is only valid at a chain boundary.
|
|
1051
|
+
*/
|
|
1052
|
+
readonly previousTextRecord?: {
|
|
1053
|
+
readonly offset: number
|
|
1054
|
+
readonly length: number
|
|
1055
|
+
readonly sha256: string
|
|
1056
|
+
readonly seq: number
|
|
1057
|
+
} | null
|
|
1035
1058
|
}
|
|
1036
1059
|
|
|
1037
1060
|
/**
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
+
import type { TokenUsage } from '../common/index.js'
|
|
1
2
|
import type { RunId } from '../ids/index.js'
|
|
2
3
|
import type { Message, UserMessage } from '../message/index.js'
|
|
3
4
|
import type { ToolChoice } from '../provider/chat.js'
|
|
4
5
|
import type { Skill } from '../skills/index.js'
|
|
5
6
|
import type { StepResult } from './step.js'
|
|
7
|
+
import type { StepProvenance } from './step.js'
|
|
8
|
+
|
|
9
|
+
/** @experimental Bounded, tool-free inference shared by preparation and answer review. */
|
|
10
|
+
export interface PreparationTextRequest {
|
|
11
|
+
readonly system: string
|
|
12
|
+
readonly prompt: string
|
|
13
|
+
/** Default 256; maximum 1,024. A provider limit, not a hard billing ceiling. */
|
|
14
|
+
readonly maxTokens?: number
|
|
15
|
+
/** Default and maximum 10,000ms, shortened by stage/run cancellation. */
|
|
16
|
+
readonly timeoutMs?: number
|
|
17
|
+
readonly signal?: AbortSignal
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** @experimental Side-call usage also contributes to the owning run's totals. */
|
|
21
|
+
export interface PreparationTextResult {
|
|
22
|
+
readonly text: string
|
|
23
|
+
readonly usage: TokenUsage
|
|
24
|
+
readonly servedBy: StepProvenance
|
|
25
|
+
}
|
|
6
26
|
|
|
7
27
|
/**
|
|
8
28
|
* What the loop knows before it calls the model again.
|
|
@@ -17,6 +37,25 @@ import type { StepResult } from './step.js'
|
|
|
17
37
|
*/
|
|
18
38
|
export interface PrepareStepContext {
|
|
19
39
|
readonly runId: RunId
|
|
40
|
+
/**
|
|
41
|
+
* Optional run-owned inference for context preparation. At most one call per
|
|
42
|
+
* stage invocation; cannot be called after that stage returns. Uses the run's
|
|
43
|
+
* metered provider/fallback chain and the model selected by preceding stages.
|
|
44
|
+
* Only supplied text is sent (12,000 characters total); no tools or history
|
|
45
|
+
* are implicitly attached. Returned text is bounded to 8,192 characters.
|
|
46
|
+
* Absent in beforeStep and in hosts which do not supply this capability.
|
|
47
|
+
*/
|
|
48
|
+
readonly generateText?: (request: PreparationTextRequest) => Promise<PreparationTextResult>
|
|
49
|
+
/**
|
|
50
|
+
* Optional writer-bound snapshot of this invocation's completed events.
|
|
51
|
+
* Never discovers other runs or repeats tools. Unsupported stores return
|
|
52
|
+
* undefined; cancellation or a settled invocation rejects capture. A local
|
|
53
|
+
* signal can shorten, never extend, the run's lifetime.
|
|
54
|
+
*/
|
|
55
|
+
readonly captureRunEvidence?: (
|
|
56
|
+
maxReadBytes?: number,
|
|
57
|
+
signal?: AbortSignal,
|
|
58
|
+
) => Promise<import('../../store/evidence/types.js').RunTextEvidenceSource | undefined>
|
|
20
59
|
/** 1-based, matching the iteration number in events and traces. */
|
|
21
60
|
readonly stepNumber: number
|
|
22
61
|
/** Full history as it stands, so a decision can read what happened. */
|
|
@@ -31,7 +70,7 @@ export interface PrepareStepContext {
|
|
|
31
70
|
readonly signal?: AbortSignal
|
|
32
71
|
/**
|
|
33
72
|
* Estimated room for additional step context after existing messages,
|
|
34
|
-
* earlier stages' system/skills, and a response reserve. Recomputed for
|
|
73
|
+
* earlier stages' system/skills/context, and a response reserve. Recomputed for
|
|
35
74
|
* each stage and its selected model; not a billing limit or fit guarantee.
|
|
36
75
|
* `beforeStep` observes its existing boundary before compaction runs.
|
|
37
76
|
*/
|
|
@@ -127,10 +166,9 @@ export interface PrepareStepResult {
|
|
|
127
166
|
* research wants the search skill, writing wants the style guide, and
|
|
128
167
|
* neither benefits from carrying the other.
|
|
129
168
|
*
|
|
130
|
-
* Rendered into the same ephemeral
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* iteration for what is usually one phase's worth of guidance.
|
|
169
|
+
* Rendered into the same ephemeral system message `system` uses. Providers
|
|
170
|
+
* may move that message before history, so changing skills can invalidate
|
|
171
|
+
* reuse of the conversation prefix even though the run's prompt is unchanged.
|
|
134
172
|
*
|
|
135
173
|
* ADDITIVE to the run's skills, not a replacement. A skill the run
|
|
136
174
|
* always carries is not something a step should be able to take away by
|
|
@@ -152,12 +190,25 @@ export interface PrepareStepResult {
|
|
|
152
190
|
* Guidance for this step ONLY, appended as a system message that is not
|
|
153
191
|
* retained afterwards.
|
|
154
192
|
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
193
|
+
* Some providers collect all system messages before conversation history.
|
|
194
|
+
* Changing this field can therefore invalidate reuse of the history prefix.
|
|
195
|
+
* Use `context` for changing observations that do not require system authority.
|
|
158
196
|
*/
|
|
159
197
|
readonly system?: string
|
|
160
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Current observations for this request only, appended after history and any
|
|
201
|
+
* step system guidance. Carried as a visibly labelled user-role message with
|
|
202
|
+
* runtime provenance, not operator input or system authority. It never enters
|
|
203
|
+
* durable conversation history or replaces `latestUserMessage`.
|
|
204
|
+
*
|
|
205
|
+
* Useful for changing inventories and retrieved data on providers that hoist
|
|
206
|
+
* system messages. This preserves the history's placement, not a cache-hit
|
|
207
|
+
* guarantee. Later stages may compose `prepared.context` or replace it; an
|
|
208
|
+
* empty string clears it. The next step starts without it.
|
|
209
|
+
*/
|
|
210
|
+
readonly context?: string
|
|
211
|
+
|
|
161
212
|
readonly temperature?: number
|
|
162
213
|
readonly maxResponseTokens?: number
|
|
163
214
|
}
|
package/src/types/run/store.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RunEvidenceScope, RunTextEvidenceSource } from '../../store/evidence/types.js'
|
|
1
2
|
/**
|
|
2
3
|
* RunStore — persistence contract for a run's own evidence.
|
|
3
4
|
*
|
|
@@ -97,7 +98,38 @@ export interface CompletedToolRecord {
|
|
|
97
98
|
readonly isError: boolean
|
|
98
99
|
}
|
|
99
100
|
|
|
101
|
+
/** The latest recorded execution boundary of a tool call, not its inferred external effect. */
|
|
102
|
+
export type ToolExecutionRecord =
|
|
103
|
+
| (CompletedToolRecord & { readonly status: 'completed' })
|
|
104
|
+
| { readonly toolUseId: string; readonly toolName: string; readonly status: 'started' }
|
|
105
|
+
|
|
106
|
+
/** Absence proves no recorded start only when the whole selected log is complete. */
|
|
107
|
+
export interface ToolExecutionSnapshot {
|
|
108
|
+
readonly complete: boolean
|
|
109
|
+
readonly records: ReadonlyMap<string, ToolExecutionRecord>
|
|
110
|
+
}
|
|
111
|
+
|
|
100
112
|
export interface RunStore {
|
|
113
|
+
/**
|
|
114
|
+
* Optional bounded recovery scan for selected call IDs. A started call without
|
|
115
|
+
* a completion has an unknown outcome and must not be automatically replayed.
|
|
116
|
+
* The runtime falls back to strict readEvents for stores without this method.
|
|
117
|
+
*/
|
|
118
|
+
readToolExecutions?(
|
|
119
|
+
toolUseIds: readonly string[],
|
|
120
|
+
signal?: AbortSignal,
|
|
121
|
+
): Promise<ToolExecutionSnapshot>
|
|
122
|
+
/**
|
|
123
|
+
* Optional bounded read capability anchored to this writer's completed event
|
|
124
|
+
* boundary. Observe signal while waiting/reading; cancellation must not release
|
|
125
|
+
* a writer lock before its pending operation settles.
|
|
126
|
+
*/
|
|
127
|
+
captureTextEvidence?(
|
|
128
|
+
scope: RunEvidenceScope,
|
|
129
|
+
maxReadBytes?: number,
|
|
130
|
+
signal?: AbortSignal,
|
|
131
|
+
): Promise<RunTextEvidenceSource | undefined>
|
|
132
|
+
|
|
101
133
|
/**
|
|
102
134
|
* Bind this store to a run, before any other call.
|
|
103
135
|
*
|
|
@@ -186,10 +218,9 @@ export interface RunStore {
|
|
|
186
218
|
* already come back, and the resumed run re-executes those calls. For a
|
|
187
219
|
* file write that is waste; for a payment or an email it is a second one.
|
|
188
220
|
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* answered", so a half-remembered batch is worse than a forgotten one.
|
|
221
|
+
* This completed-only view cannot distinguish an unstarted call from an
|
|
222
|
+
* interrupted effect. It is not authority to execute an absent call. Runtime
|
|
223
|
+
* recovery uses readToolExecutions or a strict readEvents scan instead.
|
|
193
224
|
*/
|
|
194
225
|
readCompletedTools(): Promise<Map<string, CompletedToolRecord>>
|
|
195
226
|
|