@namzu/sdk 38.2.1 → 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 +700 -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 +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.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/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 +13 -3
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +12 -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 +15 -3
- package/dist/public-types.d.ts.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 +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 +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 +39 -24
- 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/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 +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 +6 -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 +30 -0
- package/src/public-tools.ts +3 -0
- package/src/public-types.ts +98 -0
- 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 +22 -0
- 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 +49 -25
- 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/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
|
@@ -77,6 +77,7 @@ export class CompletionInbox {
|
|
|
77
77
|
* takes one, and a host that owns a gateway naturally reuses it.
|
|
78
78
|
*/
|
|
79
79
|
private readonly ours = new Set<TaskId>()
|
|
80
|
+
private readonly recentOwned: TaskId[] = []
|
|
80
81
|
/**
|
|
81
82
|
* Announcements that arrived before anyone said whose task it was.
|
|
82
83
|
*
|
|
@@ -192,6 +193,8 @@ export class CompletionInbox {
|
|
|
192
193
|
launched(taskId: TaskId): void {
|
|
193
194
|
if (this.ours.has(taskId)) return
|
|
194
195
|
this.ours.add(taskId)
|
|
196
|
+
this.recentOwned.push(taskId)
|
|
197
|
+
if (this.recentOwned.length > 16) this.recentOwned.shift()
|
|
195
198
|
|
|
196
199
|
if (this.claimed.has(taskId) || this.unheard.has(taskId)) return
|
|
197
200
|
|
|
@@ -278,6 +281,28 @@ export class CompletionInbox {
|
|
|
278
281
|
return this.unheard.size > 0
|
|
279
282
|
}
|
|
280
283
|
|
|
284
|
+
/** Bounded, non-consuming scheduler observations. Delivery never establishes user-facing completion. */
|
|
285
|
+
describeOwnedWork(): string | undefined {
|
|
286
|
+
if (this.ours.size === 0) return
|
|
287
|
+
const ids = this.recentOwned
|
|
288
|
+
const tasks = ids.map((taskId) => {
|
|
289
|
+
let handle = this.unheard.get(taskId)
|
|
290
|
+
try {
|
|
291
|
+
handle = this.gateway?.getTask(taskId) ?? handle
|
|
292
|
+
} catch {
|
|
293
|
+
// A broken observation must not block execution or invent a task state.
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
taskId,
|
|
297
|
+
state: handle?.state ?? 'unknown',
|
|
298
|
+
...(handle?.result?.status ? { runStatus: handle.result.status } : {}),
|
|
299
|
+
...(handle?.result?.stopReason ? { stopReason: handle.result.stopReason } : {}),
|
|
300
|
+
resultDelivery: this.claimed.has(taskId) ? 'delivered-to-history' : 'not-delivered',
|
|
301
|
+
}
|
|
302
|
+
})
|
|
303
|
+
return `Owned delegated work (current scheduler observations). Result delivery is not proof that you answered the original request. Answer the latest operator message and complete the requested synthesis of available results unless the operator cancelled or changed that request. Reuse delivered results when sufficient; do not relaunch completed work. If a delivered result is no longer visible, retrieve it by task ID. A terminal state with a non-end_turn stop reason is not successful task completion. Do not repeat a synthesis already given.\n${JSON.stringify({ tasks, omitted: this.ours.size - ids.length })}`
|
|
304
|
+
}
|
|
305
|
+
|
|
281
306
|
/**
|
|
282
307
|
* Tasks this run launched that are still running.
|
|
283
308
|
*
|
|
@@ -366,6 +391,7 @@ export class CompletionInbox {
|
|
|
366
391
|
this.unheard.clear()
|
|
367
392
|
this.outstanding.clear()
|
|
368
393
|
this.ours.clear()
|
|
394
|
+
this.recentOwned.length = 0
|
|
369
395
|
this.claimed.clear()
|
|
370
396
|
this.unowned.clear()
|
|
371
397
|
// Release anyone still waiting. A closed inbox would otherwise hold
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto'
|
|
2
|
+
import { lstat, mkdir, writeFile } from 'node:fs/promises'
|
|
3
|
+
import { join } from 'node:path'
|
|
4
|
+
import { z } from 'zod'
|
|
5
|
+
import type { RunEvent } from '../../types/run/events.js'
|
|
6
|
+
import type { CompactedToolMetadata } from './compaction-provenance.js'
|
|
7
|
+
import { compactedTexts } from './compaction-text.js'
|
|
8
|
+
import { digest, spillManifest } from './format.js'
|
|
9
|
+
import { RECORD_BYTES, decode, noLinks, openEvidence, stamp } from './io.js'
|
|
10
|
+
|
|
11
|
+
const integer = z.number().int().nonnegative().safe()
|
|
12
|
+
const hash = z.string().regex(/^[a-f0-9]{64}$/)
|
|
13
|
+
const role = z.enum(['system', 'user', 'assistant', 'tool'])
|
|
14
|
+
export const compactionArchiveSchema = z.object({
|
|
15
|
+
type: z.literal('compaction_archive'),
|
|
16
|
+
runId: z.string().uuid(),
|
|
17
|
+
seq: integer.positive().optional(),
|
|
18
|
+
iteration: integer,
|
|
19
|
+
reason: z.enum(['threshold', 'overflow', 'manual']),
|
|
20
|
+
archive: z.object({
|
|
21
|
+
version: z.literal(1),
|
|
22
|
+
id: z.string().uuid(),
|
|
23
|
+
bytes: integer,
|
|
24
|
+
sha256: hash,
|
|
25
|
+
messageCount: integer,
|
|
26
|
+
parts: z
|
|
27
|
+
.array(
|
|
28
|
+
z.object({
|
|
29
|
+
role,
|
|
30
|
+
summary: z.literal(true).optional(),
|
|
31
|
+
manifest: hash,
|
|
32
|
+
toolName: z.string().min(1).max(1024).optional(),
|
|
33
|
+
isError: z.boolean().optional(),
|
|
34
|
+
}),
|
|
35
|
+
)
|
|
36
|
+
.max(8192),
|
|
37
|
+
}),
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
/** Internal storage encoding only; RunStore readers restore compaction_shed. */
|
|
41
|
+
export function compactionArchiveDirectory(runDir: string, id: string): string {
|
|
42
|
+
return join(runDir, 'compaction-output', z.string().uuid().parse(id))
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function compactionPartPath(runDir: string, id: string, part: number): string {
|
|
46
|
+
return join(compactionArchiveDirectory(runDir, id), `${integer.parse(part)}.txt`)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Keep JSONL index records bounded while preserving whole original messages. */
|
|
50
|
+
export async function retainCompactionRecord(
|
|
51
|
+
event: RunEvent,
|
|
52
|
+
runDir: string,
|
|
53
|
+
): Promise<RunEvent | z.infer<typeof compactionArchiveSchema>> {
|
|
54
|
+
if (event.type !== 'compaction_shed') return event
|
|
55
|
+
const { messages: removed, type: _type, ...envelope } = event
|
|
56
|
+
const messageCount = removed.length
|
|
57
|
+
const original = Buffer.from(JSON.stringify(event.messages), 'utf8')
|
|
58
|
+
if (original.length <= 3 * 1024 * 1024) return event
|
|
59
|
+
const texts = compactedTexts(event.messages)
|
|
60
|
+
if (texts.length > 8192) throw new Error('Compaction archive exceeds 8192 textual parts.')
|
|
61
|
+
// The same 4096-chunk ceiling the reader enforces for retained tool text.
|
|
62
|
+
if (texts.some((part) => Buffer.byteLength(part.text, 'utf8') > 256 * 1024 * 1024))
|
|
63
|
+
throw new Error('Compaction archive text exceeds 256 MiB per part.')
|
|
64
|
+
const id = randomUUID()
|
|
65
|
+
const dir = compactionArchiveDirectory(runDir, id)
|
|
66
|
+
await noLinks(runDir)
|
|
67
|
+
await mkdir(join(runDir, 'compaction-output'), { recursive: true, mode: 0o700 })
|
|
68
|
+
await noLinks(join(runDir, 'compaction-output'))
|
|
69
|
+
await mkdir(dir, { mode: 0o700 })
|
|
70
|
+
await writeFile(join(dir, 'messages.json'), original, { flag: 'wx', mode: 0o600 })
|
|
71
|
+
const parts: ({
|
|
72
|
+
role: z.infer<typeof role>
|
|
73
|
+
manifest: string
|
|
74
|
+
summary?: true
|
|
75
|
+
} & CompactedToolMetadata)[] = []
|
|
76
|
+
for (const [part, value] of texts.entries()) {
|
|
77
|
+
const bytes = Buffer.from(value.text, 'utf8')
|
|
78
|
+
const manifest = spillManifest(bytes)
|
|
79
|
+
if (Buffer.byteLength(manifest, 'utf8') > RECORD_BYTES)
|
|
80
|
+
throw new Error('Compaction text manifest exceeds its 4 MiB read limit.')
|
|
81
|
+
const path = compactionPartPath(runDir, id, part)
|
|
82
|
+
await writeFile(path, bytes, { flag: 'wx', mode: 0o600 })
|
|
83
|
+
await writeFile(`${path}.manifest.json`, manifest, { flag: 'wx', mode: 0o600 })
|
|
84
|
+
parts.push({
|
|
85
|
+
role: value.role,
|
|
86
|
+
summary: value.summary,
|
|
87
|
+
manifest: digest(manifest),
|
|
88
|
+
toolName: value.toolName,
|
|
89
|
+
isError: value.isError,
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
...envelope,
|
|
94
|
+
...compactionArchiveSchema.parse({
|
|
95
|
+
type: 'compaction_archive',
|
|
96
|
+
runId: event.runId,
|
|
97
|
+
seq: event.seq,
|
|
98
|
+
iteration: event.iteration,
|
|
99
|
+
reason: event.reason,
|
|
100
|
+
archive: {
|
|
101
|
+
version: 1,
|
|
102
|
+
id,
|
|
103
|
+
bytes: original.length,
|
|
104
|
+
sha256: digest(original),
|
|
105
|
+
messageCount,
|
|
106
|
+
parts,
|
|
107
|
+
},
|
|
108
|
+
}),
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** Full event readback is explicit and may load large bodies; search never calls this. */
|
|
113
|
+
export async function restoreCompactionRecord(
|
|
114
|
+
record: Record<string, unknown>,
|
|
115
|
+
runDir: string,
|
|
116
|
+
): Promise<Record<string, unknown>> {
|
|
117
|
+
if (record.type !== 'compaction_archive') return record
|
|
118
|
+
const saved = compactionArchiveSchema.parse(record)
|
|
119
|
+
const path = join(compactionArchiveDirectory(runDir, saved.archive.id), 'messages.json')
|
|
120
|
+
const file = await openEvidence(path)
|
|
121
|
+
try {
|
|
122
|
+
const before = await file.stat()
|
|
123
|
+
if (before.size !== saved.archive.bytes) throw new Error('Compaction archive size changed.')
|
|
124
|
+
const bytes = await file.readFile()
|
|
125
|
+
if (
|
|
126
|
+
stamp(before) !== stamp(await file.stat()) ||
|
|
127
|
+
stamp(before) !== stamp(await lstat(path)) ||
|
|
128
|
+
digest(bytes) !== saved.archive.sha256
|
|
129
|
+
)
|
|
130
|
+
throw new Error('Compaction archive bytes changed.')
|
|
131
|
+
const messages: unknown = JSON.parse(decode(bytes))
|
|
132
|
+
if (!Array.isArray(messages) || messages.length !== saved.archive.messageCount)
|
|
133
|
+
throw new Error('Compaction archive message count changed.')
|
|
134
|
+
const { archive: _archive, ...rest } = record
|
|
135
|
+
return { ...rest, type: 'compaction_shed', messages }
|
|
136
|
+
} finally {
|
|
137
|
+
await file.close()
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface CompactedToolMetadata {
|
|
2
|
+
toolName?: string
|
|
3
|
+
isError?: boolean
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
function record(value: unknown): Record<string, unknown> | undefined {
|
|
7
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
8
|
+
? (value as Record<string, unknown>)
|
|
9
|
+
: undefined
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** A copy keeps its own source/time; this only identifies an unambiguous local tool pair. */
|
|
13
|
+
export function compactedToolMetadata(messages: readonly unknown[]): CompactedToolMetadata[] {
|
|
14
|
+
const calls = new Map<string, { index: number; name?: string; count: number }>()
|
|
15
|
+
const results = new Map<string, number>()
|
|
16
|
+
for (const [index, value] of messages.entries()) {
|
|
17
|
+
const message = record(value)
|
|
18
|
+
if (message?.role === 'tool' && typeof message.toolCallId === 'string')
|
|
19
|
+
results.set(message.toolCallId, (results.get(message.toolCallId) ?? 0) + 1)
|
|
20
|
+
if (message?.role !== 'assistant' || !Array.isArray(message.toolCalls)) continue
|
|
21
|
+
for (const value of message.toolCalls) {
|
|
22
|
+
const call = record(value)
|
|
23
|
+
if (typeof call?.id !== 'string' || !call.id || call.id.length > 1024) continue
|
|
24
|
+
const name = call.type === 'function' ? record(call.function)?.name : undefined
|
|
25
|
+
calls.set(call.id, {
|
|
26
|
+
index,
|
|
27
|
+
name: typeof name === 'string' && name.length > 0 && name.length <= 1024 ? name : undefined,
|
|
28
|
+
count: (calls.get(call.id)?.count ?? 0) + 1,
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
let ownerIndex = -1
|
|
33
|
+
return messages.map((value, index) => {
|
|
34
|
+
const message = record(value)
|
|
35
|
+
if (message?.role !== 'tool') {
|
|
36
|
+
ownerIndex = index
|
|
37
|
+
return {}
|
|
38
|
+
}
|
|
39
|
+
const id = typeof message.toolCallId === 'string' ? message.toolCallId : undefined
|
|
40
|
+
const call = id === undefined ? undefined : calls.get(id)
|
|
41
|
+
return {
|
|
42
|
+
...(id !== undefined &&
|
|
43
|
+
call?.count === 1 &&
|
|
44
|
+
call.index === ownerIndex &&
|
|
45
|
+
results.get(id) === 1 &&
|
|
46
|
+
call.name
|
|
47
|
+
? { toolName: call.name }
|
|
48
|
+
: {}),
|
|
49
|
+
...(typeof message.isError === 'boolean' ? { isError: message.isError } : {}),
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { MessageRole } from '../../types/message/index.js'
|
|
2
|
+
import { type CompactedToolMetadata, compactedToolMetadata } from './compaction-provenance.js'
|
|
3
|
+
|
|
4
|
+
interface CompactedText extends CompactedToolMetadata {
|
|
5
|
+
role: MessageRole
|
|
6
|
+
text: string
|
|
7
|
+
summary?: true
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function record(value: unknown): Record<string, unknown> | undefined {
|
|
11
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
12
|
+
? (value as Record<string, unknown>)
|
|
13
|
+
: undefined
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Exact text only: do not stringify binary blocks or invent separators.
|
|
18
|
+
* Plain-string parts keep their historical ordinals. Block text is appended
|
|
19
|
+
* after that prefix, in message/block order, so durable seq/part addresses
|
|
20
|
+
* from before block indexing still resolve to the same original text.
|
|
21
|
+
*/
|
|
22
|
+
export function compactedTexts(messages: unknown): CompactedText[] {
|
|
23
|
+
if (!Array.isArray(messages)) throw new Error('Invalid shed messages.')
|
|
24
|
+
const strings: CompactedText[] = []
|
|
25
|
+
const blocks: CompactedText[] = []
|
|
26
|
+
const metadata = compactedToolMetadata(messages)
|
|
27
|
+
for (const [index, value] of messages.entries()) {
|
|
28
|
+
const message = record(value)
|
|
29
|
+
if (
|
|
30
|
+
!message ||
|
|
31
|
+
typeof message.role !== 'string' ||
|
|
32
|
+
!['system', 'user', 'assistant', 'tool'].includes(message.role)
|
|
33
|
+
)
|
|
34
|
+
throw new Error('Invalid shed message.')
|
|
35
|
+
const role = message.role as MessageRole
|
|
36
|
+
if (typeof message.content === 'string') {
|
|
37
|
+
strings.push({
|
|
38
|
+
role,
|
|
39
|
+
text: message.content,
|
|
40
|
+
...metadata[index],
|
|
41
|
+
...(role === 'system' && record(message.source)?.type === 'compaction-summary'
|
|
42
|
+
? { summary: true as const }
|
|
43
|
+
: {}),
|
|
44
|
+
})
|
|
45
|
+
} else if (role === 'tool' && Array.isArray(message.content)) {
|
|
46
|
+
for (const value of message.content) {
|
|
47
|
+
const block = record(value)
|
|
48
|
+
if (block?.type === 'text' && typeof block.text === 'string')
|
|
49
|
+
blocks.push({ role, text: block.text, ...metadata[index] })
|
|
50
|
+
else if (
|
|
51
|
+
!block ||
|
|
52
|
+
(block.type !== 'image' && block.type !== 'document') ||
|
|
53
|
+
typeof block.data !== 'string' ||
|
|
54
|
+
typeof block.mediaType !== 'string'
|
|
55
|
+
)
|
|
56
|
+
throw new Error('Invalid shed tool content block.')
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return strings.concat(blocks)
|
|
61
|
+
}
|