@namzu/sdk 38.1.0 → 39.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 +758 -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/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 +137 -0
- package/dist/manager/resident/agenda.d.ts.map +1 -0
- package/dist/manager/resident/agenda.js +586 -0
- package/dist/manager/resident/agenda.js.map +1 -0
- 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/delivery-window.d.ts +22 -0
- package/dist/manager/resident/delivery-window.d.ts.map +1 -0
- package/dist/manager/resident/delivery-window.js +78 -0
- package/dist/manager/resident/delivery-window.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/host.d.ts +78 -0
- package/dist/manager/resident/host.d.ts.map +1 -0
- package/dist/manager/resident/host.js +252 -0
- package/dist/manager/resident/host.js.map +1 -0
- package/dist/manager/resident/initiative.d.ts +111 -0
- package/dist/manager/resident/initiative.d.ts.map +1 -0
- package/dist/manager/resident/initiative.js +129 -0
- package/dist/manager/resident/initiative.js.map +1 -0
- 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 +726 -0
- package/dist/manager/resident/learning.d.ts.map +1 -0
- package/dist/manager/resident/learning.js +353 -0
- package/dist/manager/resident/learning.js.map +1 -0
- package/dist/manager/resident/loop.d.ts +31 -0
- package/dist/manager/resident/loop.d.ts.map +1 -0
- package/dist/manager/resident/loop.js +69 -0
- package/dist/manager/resident/loop.js.map +1 -0
- package/dist/manager/resident/outbox.d.ts +180 -0
- package/dist/manager/resident/outbox.d.ts.map +1 -0
- package/dist/manager/resident/outbox.js +214 -0
- package/dist/manager/resident/outbox.js.map +1 -0
- package/dist/manager/resident/proposal.d.ts +91 -0
- package/dist/manager/resident/proposal.d.ts.map +1 -0
- package/dist/manager/resident/proposal.js +75 -0
- package/dist/manager/resident/proposal.js.map +1 -0
- package/dist/manager/resident/store.d.ts +182 -0
- package/dist/manager/resident/store.d.ts.map +1 -0
- package/dist/manager/resident/store.js +199 -0
- package/dist/manager/resident/store.js.map +1 -0
- 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.map +1 -1
- package/dist/manager/run/persistence.js +6 -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/contributions.d.ts +5 -2
- package/dist/prompt/contributions.d.ts.map +1 -1
- package/dist/prompt/contributions.js.map +1 -1
- package/dist/prompt/index.d.ts +4 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +2 -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 +36 -0
- package/dist/prompt/resident-step.d.ts.map +1 -0
- package/dist/prompt/resident-step.js +135 -0
- package/dist/prompt/resident-step.js.map +1 -0
- 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 +22 -3
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +21 -3
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +2 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +2 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +29 -3
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/tool/execute.d.ts +18 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +43 -6
- package/dist/registry/tool/execute.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/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 +7 -1
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +39 -12
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +7 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +38 -7
- 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 +64 -0
- package/dist/runtime/query/file-evidence-context.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 +40 -25
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +9 -31
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +231 -93
- 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 +2 -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 +3 -0
- 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/prompt-cache.d.ts.map +1 -1
- package/dist/runtime/query/prompt-cache.js +21 -42
- package/dist/runtime/query/prompt-cache.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/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 +3 -1
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +4 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +3 -0
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +28 -0
- 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/job.d.ts.map +1 -1
- package/dist/tools/builtins/job.js +4 -5
- package/dist/tools/builtins/job.js.map +1 -1
- package/dist/tools/builtins/write-file.js +2 -2
- package/dist/tools/builtins/write-file.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 +12 -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 +8 -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 +7 -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/tool/index.d.ts +15 -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/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/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 +907 -0
- package/src/manager/resident/consumption.ts +311 -0
- package/src/manager/resident/delivery-window.ts +93 -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/host.ts +356 -0
- package/src/manager/resident/initiative.ts +205 -0
- 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 +493 -0
- package/src/manager/resident/loop.ts +101 -0
- package/src/manager/resident/outbox.ts +307 -0
- package/src/manager/resident/proposal.ts +105 -0
- package/src/manager/resident/store.ts +257 -0
- package/src/manager/resident/tool-evidence.ts +412 -0
- package/src/manager/run/persistence.ts +6 -0
- package/src/plugin/loader.ts +8 -3
- package/src/prompt/coding-agent-doctrine.ts +2 -0
- package/src/prompt/contributions.ts +5 -2
- package/src/prompt/index.ts +4 -0
- package/src/prompt/resident-learning.ts +143 -0
- package/src/prompt/resident-step.ts +176 -0
- 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 +44 -0
- package/src/public-tools.ts +3 -0
- package/src/public-types.ts +165 -0
- package/src/registry/index.ts +1 -1
- package/src/registry/tool/execute.ts +56 -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/query/callback-inference.ts +94 -0
- package/src/runtime/query/checkpoint.ts +14 -0
- package/src/runtime/query/events.ts +46 -14
- package/src/runtime/query/executor.ts +51 -9
- package/src/runtime/query/file-evidence-context.ts +65 -0
- package/src/runtime/query/guard.ts +2 -0
- package/src/runtime/query/index.ts +50 -27
- package/src/runtime/query/iteration/index.ts +269 -86
- package/src/runtime/query/iteration/phases/advisory.ts +3 -0
- package/src/runtime/query/iteration/phases/context.ts +2 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +3 -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/prompt-cache.ts +24 -47
- 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/tool-output-budget.ts +65 -13
- package/src/runtime/query/tooling.ts +7 -1
- package/src/scheduler/completion-inbox.ts +26 -0
- 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/job.ts +4 -5
- package/src/tools/builtins/write-file.ts +2 -2
- package/src/tools/defineTool.ts +4 -2
- package/src/tools/file-read-tracker.ts +8 -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 +20 -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 +7 -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/tool/index.ts +19 -1
- package/src/utils/await-with-abort.ts +26 -0
- package/src/utils/evidence-time.ts +9 -0
- package/src/utils/evidence-tokens.ts +32 -0
|
@@ -43,12 +43,14 @@ import type {
|
|
|
43
43
|
ToolCallRepairReason,
|
|
44
44
|
} from '../../types/tool/repair.js'
|
|
45
45
|
import { abortReasonText } from '../../utils/abort.js'
|
|
46
|
+
import { awaitWithAbort } from '../../utils/await-with-abort.js'
|
|
46
47
|
import { type BackoffPolicy, backoffWithJitter, sleep } from '../../utils/backoff.js'
|
|
47
48
|
import { toErrorMessage } from '../../utils/error.js'
|
|
48
49
|
import { generateToolCallId } from '../../utils/id.js'
|
|
49
50
|
import type { Logger } from '../../utils/logger.js'
|
|
50
51
|
import { compressShellOutput } from '../../utils/shell-compress.js'
|
|
51
52
|
import { type BackgroundJobRegistry, type JobProcess, bindOwner } from '../jobs/registry.js'
|
|
53
|
+
import { describeVisibleFileEvidence } from './file-evidence-context.js'
|
|
52
54
|
import type { ToolResultObservation } from './project-instructions.js'
|
|
53
55
|
import { ToolCallBudget, assertMaxToolCalls } from './tool-call-budget.js'
|
|
54
56
|
import {
|
|
@@ -376,6 +378,8 @@ export interface ToolExecutorConfig {
|
|
|
376
378
|
* {@link DEFAULT_MAX_TOOL_OUTPUT_CHARS}; set `0` to disable.
|
|
377
379
|
*/
|
|
378
380
|
maxToolOutputChars?: number
|
|
381
|
+
/** See QueryParams.retainedToolPreviewChars; applies to the recorded host output. */
|
|
382
|
+
retainedToolPreviewChars?: number
|
|
379
383
|
|
|
380
384
|
/**
|
|
381
385
|
* Cap on the RICH channel of a single tool result, in base64
|
|
@@ -401,7 +405,8 @@ export interface ToolExecutorConfig {
|
|
|
401
405
|
* with `read`/`grep`. Absent ⇒ over-budget output is middle-elided and
|
|
402
406
|
* the overflow is lost.
|
|
403
407
|
*/
|
|
404
|
-
|
|
408
|
+
captureRunEvidence?: ToolContext['captureRunEvidence']
|
|
409
|
+
toolOutputDir?: string | (() => string | undefined)
|
|
405
410
|
/**
|
|
406
411
|
* Last chance to fix a tool call the model got wrong, before the error
|
|
407
412
|
* reaches it. See {@link RepairToolCall}.
|
|
@@ -491,6 +496,12 @@ export function deniedToolOutput(toolName: string, reason: string): string {
|
|
|
491
496
|
}
|
|
492
497
|
|
|
493
498
|
export class ToolExecutor {
|
|
499
|
+
private outputDirectory(): string | undefined {
|
|
500
|
+
return typeof this.config.toolOutputDir === 'function'
|
|
501
|
+
? this.config.toolOutputDir()
|
|
502
|
+
: this.config.toolOutputDir
|
|
503
|
+
}
|
|
504
|
+
|
|
494
505
|
private config: ToolExecutorConfig
|
|
495
506
|
private activityStore: ActivityStore
|
|
496
507
|
private emitEvent: EmitEvent
|
|
@@ -536,6 +547,16 @@ export class ToolExecutor {
|
|
|
536
547
|
this.config = { ...this.config, sandbox }
|
|
537
548
|
}
|
|
538
549
|
|
|
550
|
+
/** Request-only evidence from the same ledger used by mutation admission. No filesystem I/O. */
|
|
551
|
+
describeFileEvidence(messages: readonly Message[]): string | undefined {
|
|
552
|
+
return describeVisibleFileEvidence(
|
|
553
|
+
messages,
|
|
554
|
+
this.fileReadTracker,
|
|
555
|
+
this.config.workingDirectory,
|
|
556
|
+
this.config.sandbox !== undefined,
|
|
557
|
+
)
|
|
558
|
+
}
|
|
559
|
+
|
|
539
560
|
/**
|
|
540
561
|
* Span that this executor's tool spans should hang off — the current
|
|
541
562
|
* iteration. Re-set each turn by the orchestrator, because a tool span
|
|
@@ -1175,7 +1196,8 @@ export class ToolExecutor {
|
|
|
1175
1196
|
toolUseId: nestedId,
|
|
1176
1197
|
output: rawOutput,
|
|
1177
1198
|
maxChars: this.config.maxToolOutputChars ?? DEFAULT_MAX_TOOL_OUTPUT_CHARS,
|
|
1178
|
-
|
|
1199
|
+
retainedPreviewChars: this.config.retainedToolPreviewChars,
|
|
1200
|
+
spillDir: this.outputDirectory(),
|
|
1179
1201
|
onError: (message) =>
|
|
1180
1202
|
this.log.warn('Failed to spill oversized nested tool output', {
|
|
1181
1203
|
[NAMZU.RUN_ID]: this.config.runId,
|
|
@@ -1206,6 +1228,7 @@ export class ToolExecutor {
|
|
|
1206
1228
|
outputLength: budgeted.originalLength,
|
|
1207
1229
|
...(budgeted.truncated ? { outputTruncated: true } : {}),
|
|
1208
1230
|
...(budgeted.spillPath ? { outputSpillPath: budgeted.spillPath } : {}),
|
|
1231
|
+
...(budgeted.spillIntegrity ? { outputSpillIntegrity: budgeted.spillIntegrity } : {}),
|
|
1209
1232
|
...(via ? { via } : {}),
|
|
1210
1233
|
})
|
|
1211
1234
|
recordObservation({
|
|
@@ -1253,6 +1276,7 @@ export class ToolExecutor {
|
|
|
1253
1276
|
workingDirectory: this.config.workingDirectory,
|
|
1254
1277
|
},
|
|
1255
1278
|
invocationState: this.config.invocationState,
|
|
1279
|
+
captureRunEvidence: this.config.captureRunEvidence,
|
|
1256
1280
|
toolRegistry: this.config.tools,
|
|
1257
1281
|
// The step's list wins where it has one; the run's is the default.
|
|
1258
1282
|
// Same precedence the request already uses when it decides which
|
|
@@ -1628,8 +1652,8 @@ export class ToolExecutor {
|
|
|
1628
1652
|
: formatFailedToolOutput(result.output, result.error)
|
|
1629
1653
|
|
|
1630
1654
|
const postOverride = post.override
|
|
1631
|
-
let output =
|
|
1632
|
-
|
|
1655
|
+
let output = postOverride?.output ?? rawOutput
|
|
1656
|
+
const preview = !postOverride && result.success ? this.maybeCompress(toolName, output) : output
|
|
1633
1657
|
let selectedContent = postOverride?.isError
|
|
1634
1658
|
? undefined
|
|
1635
1659
|
: (postOverride?.content ?? result.content)
|
|
@@ -1655,16 +1679,22 @@ export class ToolExecutor {
|
|
|
1655
1679
|
toolName,
|
|
1656
1680
|
toolUseId: toolCall.id,
|
|
1657
1681
|
output,
|
|
1682
|
+
preview,
|
|
1658
1683
|
maxChars: maxToolOutputChars,
|
|
1659
|
-
|
|
1684
|
+
retainedPreviewChars: this.config.retainedToolPreviewChars,
|
|
1685
|
+
spillDir: this.outputDirectory(),
|
|
1660
1686
|
onError: (message) =>
|
|
1661
|
-
this.log.warn('Failed to
|
|
1687
|
+
this.log.warn('Failed to retain original tool output', {
|
|
1662
1688
|
[NAMZU.RUN_ID]: this.config.runId,
|
|
1663
1689
|
[GENAI.TOOL_NAME]: toolName,
|
|
1664
1690
|
'exception.message': message,
|
|
1665
1691
|
}),
|
|
1666
1692
|
})
|
|
1667
|
-
if (
|
|
1693
|
+
if (
|
|
1694
|
+
budgeted.truncated &&
|
|
1695
|
+
maxToolOutputChars > 0 &&
|
|
1696
|
+
budgeted.originalLength > maxToolOutputChars
|
|
1697
|
+
) {
|
|
1668
1698
|
this.log.warn('Tool output exceeded the model-visible budget', {
|
|
1669
1699
|
[NAMZU.RUN_ID]: this.config.runId,
|
|
1670
1700
|
[GENAI.TOOL_NAME]: toolName,
|
|
@@ -1736,6 +1766,7 @@ export class ToolExecutor {
|
|
|
1736
1766
|
outputLength: budgeted.originalLength,
|
|
1737
1767
|
...(budgeted.truncated ? { outputTruncated: true } : {}),
|
|
1738
1768
|
...(budgeted.spillPath ? { outputSpillPath: budgeted.spillPath } : {}),
|
|
1769
|
+
...(budgeted.spillIntegrity ? { outputSpillIntegrity: budgeted.spillIntegrity } : {}),
|
|
1739
1770
|
})
|
|
1740
1771
|
recordObservation({
|
|
1741
1772
|
runId: this.config.runId,
|
|
@@ -1864,9 +1895,20 @@ export class ToolExecutor {
|
|
|
1864
1895
|
}
|
|
1865
1896
|
}
|
|
1866
1897
|
|
|
1898
|
+
const inheritedCapture = toolContext.captureRunEvidence
|
|
1899
|
+
const scopedCapture: ToolContext['captureRunEvidence'] = inheritedCapture
|
|
1900
|
+
? async (maxReadBytes, signal) => {
|
|
1901
|
+
const combined = signal
|
|
1902
|
+
? AbortSignal.any([controller.signal, signal])
|
|
1903
|
+
: controller.signal
|
|
1904
|
+
combined.throwIfAborted()
|
|
1905
|
+
return awaitWithAbort(inheritedCapture(maxReadBytes, combined), combined)
|
|
1906
|
+
}
|
|
1907
|
+
: undefined
|
|
1867
1908
|
const context = {
|
|
1868
1909
|
...toolContext,
|
|
1869
1910
|
abortSignal: controller.signal,
|
|
1911
|
+
...(scopedCapture ? { captureRunEvidence: scopedCapture } : {}),
|
|
1870
1912
|
...(scopedDispatch ? { dispatchTool: scopedDispatch } : {}),
|
|
1871
1913
|
}
|
|
1872
1914
|
const execution = prepared
|
|
@@ -2686,8 +2728,8 @@ export class ToolExecutor {
|
|
|
2686
2728
|
...(notice ? { notice } : {}),
|
|
2687
2729
|
// A tool may return different host and model text. They must
|
|
2688
2730
|
// never compete for the same exclusive spill filename.
|
|
2689
|
-
spillDir: this.
|
|
2690
|
-
? join(this.
|
|
2731
|
+
spillDir: this.outputDirectory()
|
|
2732
|
+
? join(this.outputDirectory() as string, 'content')
|
|
2691
2733
|
: undefined,
|
|
2692
2734
|
onError: (message) =>
|
|
2693
2735
|
this.log.warn('Failed to spill oversized model tool content', {
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { resolve } from 'node:path'
|
|
2
|
+
import { isClearedToolResult } from '../../compaction/tool-result-editing.js'
|
|
3
|
+
import { fingerprintContent } from '../../tools/builtins/content-fingerprint.js'
|
|
4
|
+
import { WriteFileTool } from '../../tools/builtins/write-file.js'
|
|
5
|
+
import type { Message, ToolCall } from '../../types/message/index.js'
|
|
6
|
+
import type { FileReadTracker } from '../../types/tool/index.js'
|
|
7
|
+
|
|
8
|
+
/** Join visible call bodies, successful receipts and this executor's observation ledger. */
|
|
9
|
+
export function describeVisibleFileEvidence(
|
|
10
|
+
messages: readonly Message[],
|
|
11
|
+
tracker: FileReadTracker,
|
|
12
|
+
workingDirectory: string,
|
|
13
|
+
sandboxed: boolean,
|
|
14
|
+
): string | undefined {
|
|
15
|
+
// Execution-owned witnesses survive transparent wrappers; a name alone proves nothing.
|
|
16
|
+
if (!tracker.writeCallId || !tracker.fingerprint) return
|
|
17
|
+
const calls = new Map<string, ToolCall | null>()
|
|
18
|
+
const results = new Map<string, Message | null>()
|
|
19
|
+
for (const message of messages) {
|
|
20
|
+
if (message.role === 'assistant') {
|
|
21
|
+
for (const call of message.toolCalls ?? []) {
|
|
22
|
+
calls.set(call.id, calls.has(call.id) ? null : call)
|
|
23
|
+
}
|
|
24
|
+
} else if (message.role === 'tool') {
|
|
25
|
+
results.set(message.toolCallId, results.has(message.toolCallId) ? null : message)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const files = new Map<string, { path: string; bodyInCall: string; observedFingerprint: string }>()
|
|
29
|
+
for (const [id, call] of calls) {
|
|
30
|
+
const receipt = results.get(id)
|
|
31
|
+
if (
|
|
32
|
+
!call ||
|
|
33
|
+
call.function.name !== 'write' ||
|
|
34
|
+
call.metadata?.inputTruncated ||
|
|
35
|
+
call.function.arguments.length > 32_000 ||
|
|
36
|
+
id.length > 256 ||
|
|
37
|
+
!receipt ||
|
|
38
|
+
receipt.role !== 'tool' ||
|
|
39
|
+
receipt.isError ||
|
|
40
|
+
typeof receipt.content !== 'string' ||
|
|
41
|
+
isClearedToolResult(receipt.content)
|
|
42
|
+
)
|
|
43
|
+
continue
|
|
44
|
+
try {
|
|
45
|
+
const input = WriteFileTool.inputSchema.safeParse(JSON.parse(call.function.arguments))
|
|
46
|
+
if (!input.success || input.data.path.length > 512) continue
|
|
47
|
+
const body = input.data.content ?? input.data.newStr
|
|
48
|
+
if (typeof body !== 'string') continue
|
|
49
|
+
const key = sandboxed ? input.data.path : resolve(workingDirectory, input.data.path)
|
|
50
|
+
const fingerprint = fingerprintContent(body)
|
|
51
|
+
if (tracker.writeCallId(key) !== id || tracker.fingerprint(key) !== fingerprint) continue
|
|
52
|
+
files.delete(key)
|
|
53
|
+
files.set(key, {
|
|
54
|
+
path: input.data.path,
|
|
55
|
+
bodyInCall: id,
|
|
56
|
+
observedFingerprint: fingerprint,
|
|
57
|
+
})
|
|
58
|
+
if (files.size > 6) files.delete(files.keys().next().value as string)
|
|
59
|
+
} catch {
|
|
60
|
+
// Malformed retained inputs or a custom tracker cannot establish evidence.
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (files.size === 0) return
|
|
64
|
+
return `Visible file evidence (this request only): each complete body remains in the named successful write call and matches the latest conversation observation. Reuse that body for a targeted edit; a read solely to recall it is unnecessary. This is NOT a fresh disk check. Built-in edit/write still compare the disk body at mutation admission and refuse observed drift; on refusal inspect the current file and replan. Missing entries establish nothing.\n${JSON.stringify([...files.values()])}`
|
|
65
|
+
}
|
|
@@ -83,6 +83,7 @@ export class GuardCoordinator {
|
|
|
83
83
|
* on the RUN rather than on the process now hosting it.
|
|
84
84
|
*/
|
|
85
85
|
remainingBeforeFinalizeMs(): number {
|
|
86
|
+
if (this.limitConfig.timeoutMs === 0) return Number.POSITIVE_INFINITY
|
|
86
87
|
const finalizeAt = this.limitConfig.timeoutMs * this.limitConfig.budgetWarningThreshold
|
|
87
88
|
return Math.max(0, finalizeAt - (Date.now() - this.startTime))
|
|
88
89
|
}
|
|
@@ -96,6 +97,7 @@ export class GuardCoordinator {
|
|
|
96
97
|
* deadline around such work instead of inventing a second clock.
|
|
97
98
|
*/
|
|
98
99
|
remainingUntilTimeoutMs(): number {
|
|
100
|
+
if (this.limitConfig.timeoutMs === 0) return Number.POSITIVE_INFINITY
|
|
99
101
|
return Math.max(0, this.limitConfig.timeoutMs - (Date.now() - this.startTime))
|
|
100
102
|
}
|
|
101
103
|
|
|
@@ -139,10 +139,10 @@ import { ResultAssembler } from './result.js'
|
|
|
139
139
|
import {
|
|
140
140
|
type PendingResumePlan,
|
|
141
141
|
applyPendingResume,
|
|
142
|
+
interruptedToolCalls,
|
|
142
143
|
planCrashResume,
|
|
143
144
|
planPendingResume,
|
|
144
145
|
recoverCompletedCalls,
|
|
145
|
-
unansweredToolCalls,
|
|
146
146
|
} from './resume-pending.js'
|
|
147
147
|
import {
|
|
148
148
|
acquireSandbox,
|
|
@@ -362,6 +362,14 @@ export interface QueryParams {
|
|
|
362
362
|
* agent decides the rest is worth re-reading. Set `0` to disable.
|
|
363
363
|
*/
|
|
364
364
|
maxToolOutputChars?: number
|
|
365
|
+
/**
|
|
366
|
+
* Smaller preview for text that exceeded maxToolOutputChars, after its full
|
|
367
|
+
* host output and integrity manifest have been saved. Unset/0 keeps the old
|
|
368
|
+
* preview size. Does not change the spill threshold, rich blocks or ordinary
|
|
369
|
+
* results. A failed spill/manifest or a cap too small for its recovery path
|
|
370
|
+
* retains the ordinary output budget. Re-supply on resume.
|
|
371
|
+
*/
|
|
372
|
+
retainedToolPreviewChars?: number
|
|
365
373
|
|
|
366
374
|
/**
|
|
367
375
|
* Cap on the RICH channel of a single tool result, in base64 characters.
|
|
@@ -411,6 +419,7 @@ export interface QueryParams {
|
|
|
411
419
|
*
|
|
412
420
|
* Bounded by {@link maxAnswerReviews}. Never called on the forced-final
|
|
413
421
|
* turn, which exists to extract a closing summary under pressure.
|
|
422
|
+
* Exceptions or malformed verdicts fail the run; cancellation stops waiting.
|
|
414
423
|
*/
|
|
415
424
|
reviewAnswer?: ReviewAnswer
|
|
416
425
|
|
|
@@ -422,7 +431,7 @@ export interface QueryParams {
|
|
|
422
431
|
*/
|
|
423
432
|
promoteMemory?: PromoteMemory
|
|
424
433
|
|
|
425
|
-
/**
|
|
434
|
+
/** Corrections allowed before the run stops. Nonnegative safe integer; default 3. Consumed rejections survive checkpoints. */
|
|
426
435
|
maxAnswerReviews?: number
|
|
427
436
|
|
|
428
437
|
/** Called with each completed step, as it completes. */
|
|
@@ -931,11 +940,10 @@ async function resolveProviderContextWindow(
|
|
|
931
940
|
onAbort = () => resolve(interrupted)
|
|
932
941
|
resolverSignal.addEventListener('abort', onAbort, { once: true })
|
|
933
942
|
})
|
|
934
|
-
//
|
|
935
|
-
//
|
|
936
|
-
//
|
|
937
|
-
|
|
938
|
-
const deadlineMs = Math.min(Math.max(0, timeoutMs), 2_147_483_647)
|
|
943
|
+
// Direct QueryParams callers can supply a large run deadline. The clamp
|
|
944
|
+
// avoids Node's >2^31-1 one-millisecond timer coercion during metadata lookup.
|
|
945
|
+
// Metadata discovery remains optional and bounded even without a run deadline.
|
|
946
|
+
const deadlineMs = timeoutMs === 0 ? 5_000 : Math.min(Math.max(0, timeoutMs), 2_147_483_647)
|
|
939
947
|
const timer = setTimeout(() => {
|
|
940
948
|
deadline.abort(new Error(`Provider context-window lookup exceeded ${deadlineMs}ms`))
|
|
941
949
|
}, deadlineMs)
|
|
@@ -1707,10 +1715,24 @@ export async function* query(params: QueryParams): AsyncGenerator<RunEvent, Run>
|
|
|
1707
1715
|
? new AuthorizationGate(gateConfig, ctx.log)
|
|
1708
1716
|
: undefined
|
|
1709
1717
|
|
|
1710
|
-
//
|
|
1711
|
-
//
|
|
1712
|
-
|
|
1713
|
-
const toolOutputDir =
|
|
1718
|
+
// The store is initialized when the async query starts, after tooling is
|
|
1719
|
+
// composed. Resolve lazily at execution time: capturing getRunDir() here
|
|
1720
|
+
// permanently disabled retention for fresh disk-backed invocations.
|
|
1721
|
+
const toolOutputDir = () => {
|
|
1722
|
+
const runDir = ctx.runMgr.getRunDir()
|
|
1723
|
+
return runDir ? join(runDir, TOOL_OUTPUT_DIR_NAME) : undefined
|
|
1724
|
+
}
|
|
1725
|
+
// The same invocation-owned capability serves tools and optional preparation.
|
|
1726
|
+
// Local cancellation cannot override the run's cancellation or settled state.
|
|
1727
|
+
const captureRunEvidence = async (maxReadBytes?: number, signal?: AbortSignal) => {
|
|
1728
|
+
const combined = signal
|
|
1729
|
+
? AbortSignal.any([ctx.abortController.signal, signal])
|
|
1730
|
+
: ctx.abortController.signal
|
|
1731
|
+
combined.throwIfAborted()
|
|
1732
|
+
const source = await eventTranslator.captureRunEvidence(maxReadBytes, combined)
|
|
1733
|
+
combined.throwIfAborted()
|
|
1734
|
+
return source
|
|
1735
|
+
}
|
|
1714
1736
|
|
|
1715
1737
|
const toolExecutor = ToolingBootstrap.init(
|
|
1716
1738
|
{
|
|
@@ -1741,8 +1763,7 @@ export async function* query(params: QueryParams): AsyncGenerator<RunEvent, Run>
|
|
|
1741
1763
|
...(params.maxToolCalls !== undefined
|
|
1742
1764
|
? {
|
|
1743
1765
|
maxToolCalls: params.maxToolCalls,
|
|
1744
|
-
readToolCallBudgetEvents: () =>
|
|
1745
|
-
ctx.runMgr.getRunStore().readEvents({ integrity: 'strict' }),
|
|
1766
|
+
readToolCallBudgetEvents: () => eventTranslator.readEvents({ integrity: 'strict' }),
|
|
1746
1767
|
}
|
|
1747
1768
|
: {}),
|
|
1748
1769
|
...(params.maxToolConcurrency !== undefined
|
|
@@ -1751,13 +1772,17 @@ export async function* query(params: QueryParams): AsyncGenerator<RunEvent, Run>
|
|
|
1751
1772
|
...(params.maxToolOutputChars !== undefined
|
|
1752
1773
|
? { maxToolOutputChars: params.maxToolOutputChars }
|
|
1753
1774
|
: {}),
|
|
1775
|
+
...(params.retainedToolPreviewChars !== undefined
|
|
1776
|
+
? { retainedToolPreviewChars: params.retainedToolPreviewChars }
|
|
1777
|
+
: {}),
|
|
1754
1778
|
...(params.maxToolContentBytes !== undefined
|
|
1755
1779
|
? { maxToolContentBytes: params.maxToolContentBytes }
|
|
1756
1780
|
: {}),
|
|
1757
1781
|
// Overflow lands beside the run's other artifacts, so it is
|
|
1758
1782
|
// cleaned up with the run and reachable by the model's own
|
|
1759
1783
|
// `read`/`grep` without a new affordance.
|
|
1760
|
-
|
|
1784
|
+
toolOutputDir,
|
|
1785
|
+
captureRunEvidence,
|
|
1761
1786
|
...(params.repairToolCall ? { repairToolCall: params.repairToolCall } : {}),
|
|
1762
1787
|
...(verificationGate ? { authorizationGate: verificationGate } : {}),
|
|
1763
1788
|
recordAudit: (input) => ctx.runMgr.recordAudit(input),
|
|
@@ -1931,6 +1956,7 @@ export async function* query(params: QueryParams): AsyncGenerator<RunEvent, Run>
|
|
|
1931
1956
|
: undefined
|
|
1932
1957
|
return {
|
|
1933
1958
|
messages: ctx.runMgr.messages,
|
|
1959
|
+
turn: iterationOrchestrator.getAdvisoryTurnContext(),
|
|
1934
1960
|
...(summary !== undefined ? { workingStateSummary: summary } : {}),
|
|
1935
1961
|
...(advisoryConfig.includeToolCatalog
|
|
1936
1962
|
? { toolCatalog: params.tools.toLLMTools(effectiveAllowedTools) }
|
|
@@ -1951,6 +1977,7 @@ export async function* query(params: QueryParams): AsyncGenerator<RunEvent, Run>
|
|
|
1951
1977
|
}
|
|
1952
1978
|
|
|
1953
1979
|
const iterationOrchestrator = new IterationOrchestrator({
|
|
1980
|
+
captureRunEvidence,
|
|
1954
1981
|
provider: resilientProvider,
|
|
1955
1982
|
providerCapabilities: capabilities,
|
|
1956
1983
|
strictCapabilities: params.strictCapabilities === true,
|
|
@@ -2295,23 +2322,19 @@ export async function* query(params: QueryParams): AsyncGenerator<RunEvent, Run>
|
|
|
2295
2322
|
? planPendingResume(projectedCheckpoint, params.pendingDecision, ctx.log)
|
|
2296
2323
|
: null
|
|
2297
2324
|
|
|
2298
|
-
//
|
|
2299
|
-
//
|
|
2300
|
-
|
|
2301
|
-
// durable all along — it was simply never read back, and the
|
|
2302
|
-
// resumed run re-ran calls that had already charged a card or
|
|
2303
|
-
// sent an email.
|
|
2304
|
-
const unanswered = unansweredToolCalls(projectedCheckpoint.messages)
|
|
2325
|
+
// Recover completed observations and explicitly unknown outcomes.
|
|
2326
|
+
// A recorded start is not proof that its external effect failed.
|
|
2327
|
+
const unanswered = interruptedToolCalls(projectedCheckpoint.messages)
|
|
2305
2328
|
recoveredResults =
|
|
2306
2329
|
unanswered.length > 0
|
|
2307
|
-
? await recoverCompletedCalls(ctx.runMgr, unanswered, ctx.log
|
|
2330
|
+
? await recoverCompletedCalls(ctx.runMgr, unanswered, ctx.log, {
|
|
2331
|
+
answers: pendingResume?.answers,
|
|
2332
|
+
signal: ctx.abortController.signal,
|
|
2333
|
+
})
|
|
2308
2334
|
: new Map()
|
|
2309
2335
|
|
|
2310
|
-
//
|
|
2311
|
-
//
|
|
2312
|
-
// would re-run everything that already ran. Only taken when
|
|
2313
|
-
// the transcript proves execution had begun — a tool-review
|
|
2314
|
-
// park has no completions and keeps the cheap repair below.
|
|
2336
|
+
// Preserve both known and unknown outcomes before continuing calls
|
|
2337
|
+
// whose absence of a start was established by a complete scan.
|
|
2315
2338
|
if (!pendingResume && recoveredResults.size > 0) {
|
|
2316
2339
|
pendingResume = planCrashResume(projectedCheckpoint, recoveredResults, ctx.log)
|
|
2317
2340
|
}
|