@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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type HarnessProtectionPlan } from '../../eval/harness-protection.js';
|
|
2
3
|
import { type HarnessVerificationBatch } from '../../eval/harness-verification.js';
|
|
3
4
|
export declare const residentLearningEvidenceSchema: z.ZodObject<{
|
|
4
5
|
key: z.ZodString;
|
|
@@ -15,25 +16,101 @@ export declare const residentLearningEvidenceSchema: z.ZodObject<{
|
|
|
15
16
|
}>;
|
|
16
17
|
/** @experimental Host provenance for a correction, evaluated activation or rollback. */
|
|
17
18
|
export type ResidentLearningEvidence = Readonly<z.infer<typeof residentLearningEvidenceSchema>>;
|
|
19
|
+
declare const sourceSchema: z.ZodObject<{
|
|
20
|
+
key: z.ZodString;
|
|
21
|
+
revision: z.ZodString;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
key: string;
|
|
24
|
+
revision: string;
|
|
25
|
+
}, {
|
|
26
|
+
key: string;
|
|
27
|
+
revision: string;
|
|
28
|
+
}>;
|
|
29
|
+
/** @experimental Host-owned source identity and revision; neither is a model assertion. */
|
|
30
|
+
export type ResidentLearningSource = Readonly<z.infer<typeof sourceSchema>>;
|
|
18
31
|
declare const candidateSchema: z.ZodObject<{
|
|
19
32
|
name: z.ZodString;
|
|
33
|
+
/** Omitted means ordinary task guidance; exploration policies require explicit projection. */
|
|
34
|
+
purpose: z.ZodOptional<z.ZodEnum<["task", "exploration"]>>;
|
|
20
35
|
description: z.ZodString;
|
|
21
36
|
body: z.ZodString;
|
|
37
|
+
/** Optional dependencies whose revisions must still match before projection. */
|
|
38
|
+
sources: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
39
|
+
key: z.ZodString;
|
|
40
|
+
revision: z.ZodString;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
key: string;
|
|
43
|
+
revision: string;
|
|
44
|
+
}, {
|
|
45
|
+
key: string;
|
|
46
|
+
revision: string;
|
|
47
|
+
}>, "many">, {
|
|
48
|
+
key: string;
|
|
49
|
+
revision: string;
|
|
50
|
+
}[], {
|
|
51
|
+
key: string;
|
|
52
|
+
revision: string;
|
|
53
|
+
}[]>, {
|
|
54
|
+
key: string;
|
|
55
|
+
revision: string;
|
|
56
|
+
}[], {
|
|
57
|
+
key: string;
|
|
58
|
+
revision: string;
|
|
59
|
+
}[]>>;
|
|
22
60
|
}, "strip", z.ZodTypeAny, {
|
|
23
61
|
name: string;
|
|
24
62
|
description: string;
|
|
25
63
|
body: string;
|
|
64
|
+
sources?: {
|
|
65
|
+
key: string;
|
|
66
|
+
revision: string;
|
|
67
|
+
}[] | undefined;
|
|
68
|
+
purpose?: "task" | "exploration" | undefined;
|
|
26
69
|
}, {
|
|
27
70
|
name: string;
|
|
28
71
|
description: string;
|
|
29
72
|
body: string;
|
|
73
|
+
sources?: {
|
|
74
|
+
key: string;
|
|
75
|
+
revision: string;
|
|
76
|
+
}[] | undefined;
|
|
77
|
+
purpose?: "task" | "exploration" | undefined;
|
|
30
78
|
}>;
|
|
31
79
|
/** @experimental Instructional guidance only; never executable assets or tool permissions. */
|
|
32
|
-
export type ResidentSkillCandidate = Readonly<z.infer<typeof candidateSchema
|
|
80
|
+
export type ResidentSkillCandidate = Readonly<Omit<z.infer<typeof candidateSchema>, 'sources'>> & {
|
|
81
|
+
readonly sources?: readonly ResidentLearningSource[];
|
|
82
|
+
};
|
|
83
|
+
/** Internal canonical snapshot, including immutable source bindings. */
|
|
84
|
+
export declare function normalizeResidentSkill(input: ResidentSkillCandidate): ResidentSkillCandidate;
|
|
33
85
|
declare const learnedSkillSchema: z.ZodObject<{
|
|
34
86
|
name: z.ZodString;
|
|
87
|
+
/** Omitted means ordinary task guidance; exploration policies require explicit projection. */
|
|
88
|
+
purpose: z.ZodOptional<z.ZodEnum<["task", "exploration"]>>;
|
|
35
89
|
description: z.ZodString;
|
|
36
90
|
body: z.ZodString;
|
|
91
|
+
/** Optional dependencies whose revisions must still match before projection. */
|
|
92
|
+
sources: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
93
|
+
key: z.ZodString;
|
|
94
|
+
revision: z.ZodString;
|
|
95
|
+
}, "strip", z.ZodTypeAny, {
|
|
96
|
+
key: string;
|
|
97
|
+
revision: string;
|
|
98
|
+
}, {
|
|
99
|
+
key: string;
|
|
100
|
+
revision: string;
|
|
101
|
+
}>, "many">, {
|
|
102
|
+
key: string;
|
|
103
|
+
revision: string;
|
|
104
|
+
}[], {
|
|
105
|
+
key: string;
|
|
106
|
+
revision: string;
|
|
107
|
+
}[]>, {
|
|
108
|
+
key: string;
|
|
109
|
+
revision: string;
|
|
110
|
+
}[], {
|
|
111
|
+
key: string;
|
|
112
|
+
revision: string;
|
|
113
|
+
}[]>>;
|
|
37
114
|
} & {
|
|
38
115
|
hash: z.ZodString;
|
|
39
116
|
evidence: z.ZodObject<{
|
|
@@ -55,18 +132,42 @@ declare const learnedSkillSchema: z.ZodObject<{
|
|
|
55
132
|
evidenceDigest: z.ZodString;
|
|
56
133
|
verificationTasks: z.ZodNumber;
|
|
57
134
|
confirmationTasks: z.ZodNumber;
|
|
135
|
+
/** Absent only on historical activations made before protection was required. */
|
|
136
|
+
protection: z.ZodOptional<z.ZodObject<{
|
|
137
|
+
verificationTasks: z.ZodNumber;
|
|
138
|
+
confirmationTasks: z.ZodNumber;
|
|
139
|
+
planDigest: z.ZodString;
|
|
140
|
+
}, "strip", z.ZodTypeAny, {
|
|
141
|
+
verificationTasks: number;
|
|
142
|
+
confirmationTasks: number;
|
|
143
|
+
planDigest: string;
|
|
144
|
+
}, {
|
|
145
|
+
verificationTasks: number;
|
|
146
|
+
confirmationTasks: number;
|
|
147
|
+
planDigest: string;
|
|
148
|
+
}>>;
|
|
58
149
|
}, "strip", z.ZodTypeAny, {
|
|
59
150
|
baselineHash: string;
|
|
60
151
|
candidateHash: string;
|
|
61
152
|
evidenceDigest: string;
|
|
62
153
|
verificationTasks: number;
|
|
63
154
|
confirmationTasks: number;
|
|
155
|
+
protection?: {
|
|
156
|
+
verificationTasks: number;
|
|
157
|
+
confirmationTasks: number;
|
|
158
|
+
planDigest: string;
|
|
159
|
+
} | undefined;
|
|
64
160
|
}, {
|
|
65
161
|
baselineHash: string;
|
|
66
162
|
candidateHash: string;
|
|
67
163
|
evidenceDigest: string;
|
|
68
164
|
verificationTasks: number;
|
|
69
165
|
confirmationTasks: number;
|
|
166
|
+
protection?: {
|
|
167
|
+
verificationTasks: number;
|
|
168
|
+
confirmationTasks: number;
|
|
169
|
+
planDigest: string;
|
|
170
|
+
} | undefined;
|
|
70
171
|
}>;
|
|
71
172
|
}, "strip", z.ZodTypeAny, {
|
|
72
173
|
name: string;
|
|
@@ -77,6 +178,11 @@ declare const learnedSkillSchema: z.ZodObject<{
|
|
|
77
178
|
evidenceDigest: string;
|
|
78
179
|
verificationTasks: number;
|
|
79
180
|
confirmationTasks: number;
|
|
181
|
+
protection?: {
|
|
182
|
+
verificationTasks: number;
|
|
183
|
+
confirmationTasks: number;
|
|
184
|
+
planDigest: string;
|
|
185
|
+
} | undefined;
|
|
80
186
|
};
|
|
81
187
|
body: string;
|
|
82
188
|
hash: string;
|
|
@@ -85,6 +191,11 @@ declare const learnedSkillSchema: z.ZodObject<{
|
|
|
85
191
|
key: string;
|
|
86
192
|
reason: string;
|
|
87
193
|
};
|
|
194
|
+
sources?: {
|
|
195
|
+
key: string;
|
|
196
|
+
revision: string;
|
|
197
|
+
}[] | undefined;
|
|
198
|
+
purpose?: "task" | "exploration" | undefined;
|
|
88
199
|
}, {
|
|
89
200
|
name: string;
|
|
90
201
|
description: string;
|
|
@@ -94,6 +205,11 @@ declare const learnedSkillSchema: z.ZodObject<{
|
|
|
94
205
|
evidenceDigest: string;
|
|
95
206
|
verificationTasks: number;
|
|
96
207
|
confirmationTasks: number;
|
|
208
|
+
protection?: {
|
|
209
|
+
verificationTasks: number;
|
|
210
|
+
confirmationTasks: number;
|
|
211
|
+
planDigest: string;
|
|
212
|
+
} | undefined;
|
|
97
213
|
};
|
|
98
214
|
body: string;
|
|
99
215
|
hash: string;
|
|
@@ -102,9 +218,16 @@ declare const learnedSkillSchema: z.ZodObject<{
|
|
|
102
218
|
key: string;
|
|
103
219
|
reason: string;
|
|
104
220
|
};
|
|
221
|
+
sources?: {
|
|
222
|
+
key: string;
|
|
223
|
+
revision: string;
|
|
224
|
+
}[] | undefined;
|
|
225
|
+
purpose?: "task" | "exploration" | undefined;
|
|
105
226
|
}>;
|
|
106
227
|
/** @experimental Immutable evaluated content and evidence identity. */
|
|
107
|
-
export type ResidentLearnedSkill = Readonly<z.infer<typeof learnedSkillSchema
|
|
228
|
+
export type ResidentLearnedSkill = Readonly<Omit<z.infer<typeof learnedSkillSchema>, 'sources'>> & {
|
|
229
|
+
readonly sources?: readonly ResidentLearningSource[];
|
|
230
|
+
};
|
|
108
231
|
export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
109
232
|
revision: z.ZodNumber;
|
|
110
233
|
identity: z.ZodOptional<z.ZodObject<{
|
|
@@ -172,8 +295,33 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
172
295
|
}>, "many">;
|
|
173
296
|
skills: z.ZodArray<z.ZodObject<{
|
|
174
297
|
name: z.ZodString;
|
|
298
|
+
/** Omitted means ordinary task guidance; exploration policies require explicit projection. */
|
|
299
|
+
purpose: z.ZodOptional<z.ZodEnum<["task", "exploration"]>>;
|
|
175
300
|
description: z.ZodString;
|
|
176
301
|
body: z.ZodString;
|
|
302
|
+
/** Optional dependencies whose revisions must still match before projection. */
|
|
303
|
+
sources: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
304
|
+
key: z.ZodString;
|
|
305
|
+
revision: z.ZodString;
|
|
306
|
+
}, "strip", z.ZodTypeAny, {
|
|
307
|
+
key: string;
|
|
308
|
+
revision: string;
|
|
309
|
+
}, {
|
|
310
|
+
key: string;
|
|
311
|
+
revision: string;
|
|
312
|
+
}>, "many">, {
|
|
313
|
+
key: string;
|
|
314
|
+
revision: string;
|
|
315
|
+
}[], {
|
|
316
|
+
key: string;
|
|
317
|
+
revision: string;
|
|
318
|
+
}[]>, {
|
|
319
|
+
key: string;
|
|
320
|
+
revision: string;
|
|
321
|
+
}[], {
|
|
322
|
+
key: string;
|
|
323
|
+
revision: string;
|
|
324
|
+
}[]>>;
|
|
177
325
|
} & {
|
|
178
326
|
hash: z.ZodString;
|
|
179
327
|
evidence: z.ZodObject<{
|
|
@@ -195,18 +343,42 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
195
343
|
evidenceDigest: z.ZodString;
|
|
196
344
|
verificationTasks: z.ZodNumber;
|
|
197
345
|
confirmationTasks: z.ZodNumber;
|
|
346
|
+
/** Absent only on historical activations made before protection was required. */
|
|
347
|
+
protection: z.ZodOptional<z.ZodObject<{
|
|
348
|
+
verificationTasks: z.ZodNumber;
|
|
349
|
+
confirmationTasks: z.ZodNumber;
|
|
350
|
+
planDigest: z.ZodString;
|
|
351
|
+
}, "strip", z.ZodTypeAny, {
|
|
352
|
+
verificationTasks: number;
|
|
353
|
+
confirmationTasks: number;
|
|
354
|
+
planDigest: string;
|
|
355
|
+
}, {
|
|
356
|
+
verificationTasks: number;
|
|
357
|
+
confirmationTasks: number;
|
|
358
|
+
planDigest: string;
|
|
359
|
+
}>>;
|
|
198
360
|
}, "strip", z.ZodTypeAny, {
|
|
199
361
|
baselineHash: string;
|
|
200
362
|
candidateHash: string;
|
|
201
363
|
evidenceDigest: string;
|
|
202
364
|
verificationTasks: number;
|
|
203
365
|
confirmationTasks: number;
|
|
366
|
+
protection?: {
|
|
367
|
+
verificationTasks: number;
|
|
368
|
+
confirmationTasks: number;
|
|
369
|
+
planDigest: string;
|
|
370
|
+
} | undefined;
|
|
204
371
|
}, {
|
|
205
372
|
baselineHash: string;
|
|
206
373
|
candidateHash: string;
|
|
207
374
|
evidenceDigest: string;
|
|
208
375
|
verificationTasks: number;
|
|
209
376
|
confirmationTasks: number;
|
|
377
|
+
protection?: {
|
|
378
|
+
verificationTasks: number;
|
|
379
|
+
confirmationTasks: number;
|
|
380
|
+
planDigest: string;
|
|
381
|
+
} | undefined;
|
|
210
382
|
}>;
|
|
211
383
|
}, "strip", z.ZodTypeAny, {
|
|
212
384
|
name: string;
|
|
@@ -217,6 +389,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
217
389
|
evidenceDigest: string;
|
|
218
390
|
verificationTasks: number;
|
|
219
391
|
confirmationTasks: number;
|
|
392
|
+
protection?: {
|
|
393
|
+
verificationTasks: number;
|
|
394
|
+
confirmationTasks: number;
|
|
395
|
+
planDigest: string;
|
|
396
|
+
} | undefined;
|
|
220
397
|
};
|
|
221
398
|
body: string;
|
|
222
399
|
hash: string;
|
|
@@ -225,6 +402,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
225
402
|
key: string;
|
|
226
403
|
reason: string;
|
|
227
404
|
};
|
|
405
|
+
sources?: {
|
|
406
|
+
key: string;
|
|
407
|
+
revision: string;
|
|
408
|
+
}[] | undefined;
|
|
409
|
+
purpose?: "task" | "exploration" | undefined;
|
|
228
410
|
}, {
|
|
229
411
|
name: string;
|
|
230
412
|
description: string;
|
|
@@ -234,6 +416,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
234
416
|
evidenceDigest: string;
|
|
235
417
|
verificationTasks: number;
|
|
236
418
|
confirmationTasks: number;
|
|
419
|
+
protection?: {
|
|
420
|
+
verificationTasks: number;
|
|
421
|
+
confirmationTasks: number;
|
|
422
|
+
planDigest: string;
|
|
423
|
+
} | undefined;
|
|
237
424
|
};
|
|
238
425
|
body: string;
|
|
239
426
|
hash: string;
|
|
@@ -242,6 +429,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
242
429
|
key: string;
|
|
243
430
|
reason: string;
|
|
244
431
|
};
|
|
432
|
+
sources?: {
|
|
433
|
+
key: string;
|
|
434
|
+
revision: string;
|
|
435
|
+
}[] | undefined;
|
|
436
|
+
purpose?: "task" | "exploration" | undefined;
|
|
245
437
|
}>, "many">;
|
|
246
438
|
lastChange: z.ZodObject<{
|
|
247
439
|
key: z.ZodString;
|
|
@@ -266,6 +458,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
266
458
|
evidenceDigest: string;
|
|
267
459
|
verificationTasks: number;
|
|
268
460
|
confirmationTasks: number;
|
|
461
|
+
protection?: {
|
|
462
|
+
verificationTasks: number;
|
|
463
|
+
confirmationTasks: number;
|
|
464
|
+
planDigest: string;
|
|
465
|
+
} | undefined;
|
|
269
466
|
};
|
|
270
467
|
body: string;
|
|
271
468
|
hash: string;
|
|
@@ -274,6 +471,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
274
471
|
key: string;
|
|
275
472
|
reason: string;
|
|
276
473
|
};
|
|
474
|
+
sources?: {
|
|
475
|
+
key: string;
|
|
476
|
+
revision: string;
|
|
477
|
+
}[] | undefined;
|
|
478
|
+
purpose?: "task" | "exploration" | undefined;
|
|
277
479
|
}[];
|
|
278
480
|
revision: number;
|
|
279
481
|
preferences: {
|
|
@@ -308,6 +510,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
308
510
|
evidenceDigest: string;
|
|
309
511
|
verificationTasks: number;
|
|
310
512
|
confirmationTasks: number;
|
|
513
|
+
protection?: {
|
|
514
|
+
verificationTasks: number;
|
|
515
|
+
confirmationTasks: number;
|
|
516
|
+
planDigest: string;
|
|
517
|
+
} | undefined;
|
|
311
518
|
};
|
|
312
519
|
body: string;
|
|
313
520
|
hash: string;
|
|
@@ -316,6 +523,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
316
523
|
key: string;
|
|
317
524
|
reason: string;
|
|
318
525
|
};
|
|
526
|
+
sources?: {
|
|
527
|
+
key: string;
|
|
528
|
+
revision: string;
|
|
529
|
+
}[] | undefined;
|
|
530
|
+
purpose?: "task" | "exploration" | undefined;
|
|
319
531
|
}[];
|
|
320
532
|
revision: number;
|
|
321
533
|
preferences: {
|
|
@@ -350,6 +562,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
350
562
|
evidenceDigest: string;
|
|
351
563
|
verificationTasks: number;
|
|
352
564
|
confirmationTasks: number;
|
|
565
|
+
protection?: {
|
|
566
|
+
verificationTasks: number;
|
|
567
|
+
confirmationTasks: number;
|
|
568
|
+
planDigest: string;
|
|
569
|
+
} | undefined;
|
|
353
570
|
};
|
|
354
571
|
body: string;
|
|
355
572
|
hash: string;
|
|
@@ -358,6 +575,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
358
575
|
key: string;
|
|
359
576
|
reason: string;
|
|
360
577
|
};
|
|
578
|
+
sources?: {
|
|
579
|
+
key: string;
|
|
580
|
+
revision: string;
|
|
581
|
+
}[] | undefined;
|
|
582
|
+
purpose?: "task" | "exploration" | undefined;
|
|
361
583
|
}[];
|
|
362
584
|
revision: number;
|
|
363
585
|
preferences: {
|
|
@@ -392,6 +614,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
392
614
|
evidenceDigest: string;
|
|
393
615
|
verificationTasks: number;
|
|
394
616
|
confirmationTasks: number;
|
|
617
|
+
protection?: {
|
|
618
|
+
verificationTasks: number;
|
|
619
|
+
confirmationTasks: number;
|
|
620
|
+
planDigest: string;
|
|
621
|
+
} | undefined;
|
|
395
622
|
};
|
|
396
623
|
body: string;
|
|
397
624
|
hash: string;
|
|
@@ -400,6 +627,11 @@ export declare const residentLearningSchema: z.ZodEffects<z.ZodObject<{
|
|
|
400
627
|
key: string;
|
|
401
628
|
reason: string;
|
|
402
629
|
};
|
|
630
|
+
sources?: {
|
|
631
|
+
key: string;
|
|
632
|
+
revision: string;
|
|
633
|
+
}[] | undefined;
|
|
634
|
+
purpose?: "task" | "exploration" | undefined;
|
|
403
635
|
}[];
|
|
404
636
|
revision: number;
|
|
405
637
|
preferences: {
|
|
@@ -452,6 +684,8 @@ export interface ResidentProfileUpdate {
|
|
|
452
684
|
}
|
|
453
685
|
/** @experimental Recorded paired runs; hosts own execution, scoring and independent attribution. */
|
|
454
686
|
export interface ResidentSkillEvaluation {
|
|
687
|
+
/** Host-owned task selection fixed before generating the candidate. */
|
|
688
|
+
readonly protection: HarnessProtectionPlan;
|
|
455
689
|
readonly verification: HarnessVerificationBatch;
|
|
456
690
|
readonly confirmation?: HarnessVerificationBatch;
|
|
457
691
|
}
|
|
@@ -459,7 +693,7 @@ export interface ResidentSkillEvaluation {
|
|
|
459
693
|
export declare function freezeResidentLearning(input: ResidentLearningState): ResidentLearningState;
|
|
460
694
|
/** Internal pure profile transition; storage owns exact agenda CAS and idle admission. */
|
|
461
695
|
export declare function reviseResidentProfile(current: ResidentLearningState | undefined, input: ResidentProfileUpdate): ResidentLearningState;
|
|
462
|
-
/** @experimental Bind evaluation to
|
|
696
|
+
/** @experimental Bind evaluation to normalized content and any declared source dependencies. */
|
|
463
697
|
export declare function hashResidentSkill(input: ResidentSkillCandidate): string;
|
|
464
698
|
/** Internal pure activation; reuse the kernel's conservative two-round verification gate. */
|
|
465
699
|
export declare function promoteResidentSkill(current: ResidentLearningState | undefined, input: ResidentSkillCandidate, evaluation: ResidentSkillEvaluation, inputEvidence: ResidentLearningEvidence): ResidentLearningState;
|
|
@@ -469,6 +703,10 @@ export declare function restoreResidentSkill(current: ResidentLearningState | un
|
|
|
469
703
|
export interface ResidentLearningProjectionOptions {
|
|
470
704
|
readonly maxChars: number;
|
|
471
705
|
readonly skillNames: readonly string[];
|
|
706
|
+
/** Defaults to task guidance. Exploration policies never enter ordinary task context. */
|
|
707
|
+
readonly purpose?: 'task' | 'exploration';
|
|
708
|
+
/** Fresh host observations for this projection; absent/mismatched dependencies withhold guidance. */
|
|
709
|
+
readonly sources?: readonly ResidentLearningSource[];
|
|
472
710
|
}
|
|
473
711
|
/** @experimental Omitted entries are counted; no partial skill instruction is emitted. */
|
|
474
712
|
export interface ResidentLearningProjection {
|
|
@@ -476,6 +714,11 @@ export interface ResidentLearningProjection {
|
|
|
476
714
|
readonly revision: number | null;
|
|
477
715
|
readonly includedSkills: readonly string[];
|
|
478
716
|
readonly omitted: number;
|
|
717
|
+
readonly withheldSkills: readonly {
|
|
718
|
+
readonly name: string;
|
|
719
|
+
readonly reason: 'changed-source' | 'unverified-source' | 'different-purpose';
|
|
720
|
+
readonly sourceKeys: readonly string[];
|
|
721
|
+
}[];
|
|
479
722
|
}
|
|
480
723
|
/** @experimental Bounded context data; never registers tools, loads files or executes a skill. */
|
|
481
724
|
export declare function projectResidentLearning(current: ResidentLearningState | undefined, options: ResidentLearningProjectionOptions): ResidentLearningProjection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/learning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACN,KAAK,wBAAwB,EAE7B,MAAM,oCAAoC,CAAA;AAK3C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;EAIzC,CAAA;AAEF,wFAAwF;AACxF,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAA;AAE/F,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
+
import { normalizeHarnessProtection, } from '../../eval/harness-protection.js';
|
|
3
4
|
import { reviewHarnessCandidate, } from '../../eval/harness-verification.js';
|
|
4
5
|
const label = z.string().trim().min(1).max(256);
|
|
5
6
|
const name = z.string().regex(/^[a-z0-9][a-z0-9_-]{0,63}$/);
|
|
@@ -9,11 +10,35 @@ export const residentLearningEvidenceSchema = z.object({
|
|
|
9
10
|
source: label,
|
|
10
11
|
reason: z.string().trim().min(1).max(1_000),
|
|
11
12
|
});
|
|
13
|
+
const sourceSchema = z.object({ key: label, revision: label });
|
|
14
|
+
const sourcesSchema = z
|
|
15
|
+
.array(sourceSchema)
|
|
16
|
+
.min(1)
|
|
17
|
+
.max(8)
|
|
18
|
+
.superRefine((sources, context) => {
|
|
19
|
+
if (new Set(sources.map((source) => source.key)).size !== sources.length)
|
|
20
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: 'Duplicate learning source keys.' });
|
|
21
|
+
})
|
|
22
|
+
.transform((sources) => sources.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0)));
|
|
12
23
|
const candidateSchema = z.object({
|
|
13
24
|
name,
|
|
25
|
+
/** Omitted means ordinary task guidance; exploration policies require explicit projection. */
|
|
26
|
+
purpose: z.enum(['task', 'exploration']).optional(),
|
|
14
27
|
description: z.string().trim().min(1).max(1_000),
|
|
15
28
|
body: z.string().trim().min(1).max(4_000),
|
|
29
|
+
/** Optional dependencies whose revisions must still match before projection. */
|
|
30
|
+
sources: sourcesSchema.optional(),
|
|
16
31
|
});
|
|
32
|
+
/** Internal canonical snapshot, including immutable source bindings. */
|
|
33
|
+
export function normalizeResidentSkill(input) {
|
|
34
|
+
const candidate = candidateSchema.parse(input);
|
|
35
|
+
return Object.freeze({
|
|
36
|
+
...candidate,
|
|
37
|
+
...(candidate.sources
|
|
38
|
+
? { sources: Object.freeze(candidate.sources.map((source) => Object.freeze(source))) }
|
|
39
|
+
: {}),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
17
42
|
const learnedSkillSchema = candidateSchema.extend({
|
|
18
43
|
hash: digest,
|
|
19
44
|
evidence: residentLearningEvidenceSchema,
|
|
@@ -23,6 +48,14 @@ const learnedSkillSchema = candidateSchema.extend({
|
|
|
23
48
|
evidenceDigest: digest,
|
|
24
49
|
verificationTasks: z.number().int().min(5).max(64),
|
|
25
50
|
confirmationTasks: z.number().int().min(5).max(64),
|
|
51
|
+
/** Absent only on historical activations made before protection was required. */
|
|
52
|
+
protection: z
|
|
53
|
+
.object({
|
|
54
|
+
verificationTasks: z.number().int().min(1).max(63),
|
|
55
|
+
confirmationTasks: z.number().int().min(1).max(63),
|
|
56
|
+
planDigest: digest,
|
|
57
|
+
})
|
|
58
|
+
.optional(),
|
|
26
59
|
}),
|
|
27
60
|
});
|
|
28
61
|
export const residentLearningSchema = z
|
|
@@ -70,8 +103,16 @@ export function freezeResidentLearning(input) {
|
|
|
70
103
|
preferences: Object.freeze(state.preferences.map((p) => Object.freeze({ ...p, evidence: Object.freeze(p.evidence) }))),
|
|
71
104
|
skills: Object.freeze(state.skills.map((skill) => Object.freeze({
|
|
72
105
|
...skill,
|
|
106
|
+
...(skill.sources
|
|
107
|
+
? { sources: Object.freeze(skill.sources.map((source) => Object.freeze(source))) }
|
|
108
|
+
: {}),
|
|
73
109
|
evidence: Object.freeze(skill.evidence),
|
|
74
|
-
verification: Object.freeze(
|
|
110
|
+
verification: Object.freeze({
|
|
111
|
+
...skill.verification,
|
|
112
|
+
...(skill.verification.protection
|
|
113
|
+
? { protection: Object.freeze(skill.verification.protection) }
|
|
114
|
+
: {}),
|
|
115
|
+
}),
|
|
75
116
|
}))),
|
|
76
117
|
lastChange: Object.freeze(state.lastChange),
|
|
77
118
|
});
|
|
@@ -139,18 +180,28 @@ export function reviseResidentProfile(current, input) {
|
|
|
139
180
|
...(checked.identity !== undefined ? { identity: { text: checked.identity, evidence } } : {}),
|
|
140
181
|
});
|
|
141
182
|
}
|
|
142
|
-
/** @experimental Bind evaluation to
|
|
183
|
+
/** @experimental Bind evaluation to normalized content and any declared source dependencies. */
|
|
143
184
|
export function hashResidentSkill(input) {
|
|
144
185
|
const candidate = candidateSchema.parse(input);
|
|
145
186
|
return createHash('sha256')
|
|
146
|
-
.update(JSON.stringify([
|
|
187
|
+
.update(JSON.stringify([
|
|
188
|
+
candidate.name,
|
|
189
|
+
candidate.description,
|
|
190
|
+
candidate.body,
|
|
191
|
+
...(candidate.sources ? [candidate.sources] : []),
|
|
192
|
+
...(candidate.purpose === 'exploration' ? [{ purpose: candidate.purpose }] : []),
|
|
193
|
+
]))
|
|
147
194
|
.digest('hex');
|
|
148
195
|
}
|
|
149
196
|
/** Internal pure activation; reuse the kernel's conservative two-round verification gate. */
|
|
150
197
|
export function promoteResidentSkill(current, input, evaluation, inputEvidence) {
|
|
198
|
+
const protection = normalizeHarnessProtection(evaluation.protection);
|
|
151
199
|
const candidate = candidateSchema.parse(input);
|
|
152
200
|
const hash = hashResidentSkill(candidate);
|
|
153
|
-
const
|
|
201
|
+
const baseline = current?.skills.find((s) => s.name === candidate.name);
|
|
202
|
+
if (baseline && (baseline.purpose ?? 'task') !== (candidate.purpose ?? 'task'))
|
|
203
|
+
throw new Error('A skill cannot change learning purpose; use a distinct skill name.');
|
|
204
|
+
const baselineHash = baseline?.hash ?? 'none';
|
|
154
205
|
const evidence = evidenceFor(current, inputEvidence);
|
|
155
206
|
for (const batch of [evaluation.verification, evaluation.confirmation]) {
|
|
156
207
|
if (!batch)
|
|
@@ -168,7 +219,7 @@ export function promoteResidentSkill(current, input, evaluation, inputEvidence)
|
|
|
168
219
|
throw new Error('Inconsistent recorded skill evaluation outcome.');
|
|
169
220
|
}
|
|
170
221
|
}
|
|
171
|
-
const review = reviewHarnessCandidate(evaluation.verification, evaluation.confirmation);
|
|
222
|
+
const review = reviewHarnessCandidate(evaluation.verification, evaluation.confirmation, protection);
|
|
172
223
|
if (review.decision !== 'accept')
|
|
173
224
|
throw new Error(`Resident skill promotion ${review.decision}: ${review.reason}`);
|
|
174
225
|
const skill = {
|
|
@@ -178,9 +229,16 @@ export function promoteResidentSkill(current, input, evaluation, inputEvidence)
|
|
|
178
229
|
verification: {
|
|
179
230
|
baselineHash,
|
|
180
231
|
candidateHash: hash,
|
|
181
|
-
evidenceDigest: createHash('sha256')
|
|
232
|
+
evidenceDigest: createHash('sha256')
|
|
233
|
+
.update(JSON.stringify({ ...evaluation, protection }))
|
|
234
|
+
.digest('hex'),
|
|
182
235
|
verificationTasks: review.verification.tasks.length,
|
|
183
236
|
confirmationTasks: review.confirmation?.tasks.length ?? 0,
|
|
237
|
+
protection: {
|
|
238
|
+
verificationTasks: protection.verification.length,
|
|
239
|
+
confirmationTasks: protection.confirmation.length,
|
|
240
|
+
planDigest: createHash('sha256').update(JSON.stringify(protection)).digest('hex'),
|
|
241
|
+
},
|
|
184
242
|
},
|
|
185
243
|
};
|
|
186
244
|
const next = base(current, evidence);
|
|
@@ -208,18 +266,28 @@ export function projectResidentLearning(current, options) {
|
|
|
208
266
|
if (!Number.isSafeInteger(options.maxChars) || options.maxChars < 0 || options.maxChars > 64_000)
|
|
209
267
|
throw new TypeError('Resident learning context requires maxChars between 0 and 64000.');
|
|
210
268
|
const selected = z.array(name).max(16).parse(options.skillNames);
|
|
269
|
+
const purpose = z.enum(['task', 'exploration']).parse(options.purpose ?? 'task');
|
|
211
270
|
if (new Set(selected).size !== selected.length)
|
|
212
271
|
throw new Error('Duplicate selected skill names.');
|
|
272
|
+
const sources = z
|
|
273
|
+
.array(sourceSchema)
|
|
274
|
+
.max(128)
|
|
275
|
+
.parse(options.sources ?? []);
|
|
276
|
+
if (new Set(sources.map((source) => source.key)).size !== sources.length)
|
|
277
|
+
throw new Error('Duplicate observed learning source keys.');
|
|
278
|
+
const observed = new Map(sources.map((source) => [source.key, source.revision]));
|
|
213
279
|
if (!current)
|
|
214
280
|
return Object.freeze({
|
|
215
281
|
text: '',
|
|
216
282
|
revision: null,
|
|
217
283
|
includedSkills: Object.freeze([]),
|
|
218
284
|
omitted: selected.length,
|
|
285
|
+
withheldSkills: Object.freeze([]),
|
|
219
286
|
});
|
|
220
287
|
const state = freezeResidentLearning(current);
|
|
221
288
|
const pieces = [];
|
|
222
289
|
const includedSkills = [];
|
|
290
|
+
const withheldSkills = [];
|
|
223
291
|
let omitted = 0;
|
|
224
292
|
let length = 0;
|
|
225
293
|
const add = (value) => {
|
|
@@ -243,6 +311,27 @@ export function projectResidentLearning(current, options) {
|
|
|
243
311
|
omitted++;
|
|
244
312
|
continue;
|
|
245
313
|
}
|
|
314
|
+
if ((skill.purpose ?? 'task') !== purpose) {
|
|
315
|
+
omitted++;
|
|
316
|
+
withheldSkills.push(Object.freeze({
|
|
317
|
+
name: skill.name,
|
|
318
|
+
reason: 'different-purpose',
|
|
319
|
+
sourceKeys: Object.freeze([]),
|
|
320
|
+
}));
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
const mismatched = skill.sources?.filter((source) => observed.get(source.key) !== source.revision) ?? [];
|
|
324
|
+
if (mismatched.length) {
|
|
325
|
+
omitted++;
|
|
326
|
+
withheldSkills.push(Object.freeze({
|
|
327
|
+
name: skill.name,
|
|
328
|
+
reason: mismatched.some((source) => observed.has(source.key))
|
|
329
|
+
? 'changed-source'
|
|
330
|
+
: 'unverified-source',
|
|
331
|
+
sourceKeys: Object.freeze(mismatched.map((source) => source.key)),
|
|
332
|
+
}));
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
246
335
|
if (add({
|
|
247
336
|
kind: 'evaluated-guidance',
|
|
248
337
|
name: skill.name,
|
|
@@ -258,6 +347,7 @@ export function projectResidentLearning(current, options) {
|
|
|
258
347
|
revision: state.revision,
|
|
259
348
|
includedSkills: Object.freeze(includedSkills),
|
|
260
349
|
omitted,
|
|
350
|
+
withheldSkills: Object.freeze(withheldSkills),
|
|
261
351
|
});
|
|
262
352
|
}
|
|
263
353
|
//# sourceMappingURL=learning.js.map
|