@namzu/sdk 38.2.1 → 40.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +851 -0
- package/dist/advisory/executor.d.ts +10 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +5 -26
- package/dist/advisory/executor.js.map +1 -1
- package/dist/advisory/history.d.ts +9 -0
- package/dist/advisory/history.d.ts.map +1 -0
- package/dist/advisory/history.js +120 -0
- package/dist/advisory/history.js.map +1 -0
- package/dist/advisory/index.d.ts +1 -1
- package/dist/advisory/index.d.ts.map +1 -1
- package/dist/advisory/index.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +3 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/runAgent.d.ts +10 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +3 -0
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/compaction/manual.d.ts +6 -0
- package/dist/compaction/manual.d.ts.map +1 -1
- package/dist/compaction/manual.js +21 -2
- package/dist/compaction/manual.js.map +1 -1
- package/dist/compaction/summary.d.ts.map +1 -1
- package/dist/compaction/summary.js +4 -1
- package/dist/compaction/summary.js.map +1 -1
- package/dist/config/runtime.js +2 -2
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +20 -6
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/contracts/schemas.js +1 -1
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/eval/harness-protection.d.ts +18 -0
- package/dist/eval/harness-protection.d.ts.map +1 -0
- package/dist/eval/harness-protection.js +58 -0
- package/dist/eval/harness-protection.js.map +1 -0
- package/dist/eval/harness-verification.d.ts +6 -1
- package/dist/eval/harness-verification.d.ts.map +1 -1
- package/dist/eval/harness-verification.js +19 -2
- package/dist/eval/harness-verification.js.map +1 -1
- package/dist/eval/index.d.ts +1 -0
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js.map +1 -1
- package/dist/manager/resident/activity.d.ts +50 -0
- package/dist/manager/resident/activity.d.ts.map +1 -0
- package/dist/manager/resident/activity.js +125 -0
- package/dist/manager/resident/activity.js.map +1 -0
- package/dist/manager/resident/agenda.d.ts +13 -1
- package/dist/manager/resident/agenda.d.ts.map +1 -1
- package/dist/manager/resident/agenda.js +40 -5
- package/dist/manager/resident/agenda.js.map +1 -1
- package/dist/manager/resident/consumption.d.ts +104 -0
- package/dist/manager/resident/consumption.d.ts.map +1 -0
- package/dist/manager/resident/consumption.js +233 -0
- package/dist/manager/resident/consumption.js.map +1 -0
- package/dist/manager/resident/evidence-recall.d.ts +24 -0
- package/dist/manager/resident/evidence-recall.d.ts.map +1 -0
- package/dist/manager/resident/evidence-recall.js +295 -0
- package/dist/manager/resident/evidence-recall.js.map +1 -0
- package/dist/manager/resident/history-disk.d.ts +10 -0
- package/dist/manager/resident/history-disk.d.ts.map +1 -0
- package/dist/manager/resident/history-disk.js +50 -0
- package/dist/manager/resident/history-disk.js.map +1 -0
- package/dist/manager/resident/history.d.ts +79 -0
- package/dist/manager/resident/history.d.ts.map +1 -0
- package/dist/manager/resident/history.js +203 -0
- package/dist/manager/resident/history.js.map +1 -0
- package/dist/manager/resident/initiative.d.ts.map +1 -1
- package/dist/manager/resident/initiative.js +11 -3
- package/dist/manager/resident/initiative.js.map +1 -1
- package/dist/manager/resident/learning-cycle.d.ts +131 -0
- package/dist/manager/resident/learning-cycle.d.ts.map +1 -0
- package/dist/manager/resident/learning-cycle.js +306 -0
- package/dist/manager/resident/learning-cycle.js.map +1 -0
- package/dist/manager/resident/learning-observation.d.ts +80 -0
- package/dist/manager/resident/learning-observation.d.ts.map +1 -0
- package/dist/manager/resident/learning-observation.js +22 -0
- package/dist/manager/resident/learning-observation.js.map +1 -0
- package/dist/manager/resident/learning-store.d.ts +106 -0
- package/dist/manager/resident/learning-store.d.ts.map +1 -0
- package/dist/manager/resident/learning-store.js +598 -0
- package/dist/manager/resident/learning-store.js.map +1 -0
- package/dist/manager/resident/learning.d.ts +246 -3
- package/dist/manager/resident/learning.d.ts.map +1 -1
- package/dist/manager/resident/learning.js +96 -6
- package/dist/manager/resident/learning.js.map +1 -1
- package/dist/manager/resident/outbox.d.ts +4 -4
- package/dist/manager/resident/store.d.ts +37 -4
- package/dist/manager/resident/store.d.ts.map +1 -1
- package/dist/manager/resident/store.js +27 -3
- package/dist/manager/resident/store.js.map +1 -1
- package/dist/manager/resident/tool-evidence.d.ts +71 -0
- package/dist/manager/resident/tool-evidence.d.ts.map +1 -0
- package/dist/manager/resident/tool-evidence.js +285 -0
- package/dist/manager/resident/tool-evidence.js.map +1 -0
- package/dist/manager/run/persistence.d.ts +8 -0
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +18 -0
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +5 -3
- package/dist/plugin/loader.js.map +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
- package/dist/prompt/coding-agent-doctrine.js +2 -0
- package/dist/prompt/coding-agent-doctrine.js.map +1 -1
- package/dist/prompt/index.d.ts +2 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +1 -0
- package/dist/prompt/index.js.map +1 -1
- package/dist/prompt/resident-learning.d.ts +19 -0
- package/dist/prompt/resident-learning.d.ts.map +1 -0
- package/dist/prompt/resident-learning.js +125 -0
- package/dist/prompt/resident-learning.js.map +1 -0
- package/dist/prompt/resident-step.d.ts +8 -1
- package/dist/prompt/resident-step.d.ts.map +1 -1
- package/dist/prompt/resident-step.js +65 -4
- package/dist/prompt/resident-step.js.map +1 -1
- package/dist/provider/collect-chat-completion.d.ts +2 -1
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +7 -6
- package/dist/provider/collect-chat-completion.js.map +1 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +2 -1
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/stream-text.d.ts +16 -0
- package/dist/provider/stream-text.d.ts.map +1 -0
- package/dist/provider/stream-text.js +51 -0
- package/dist/provider/stream-text.js.map +1 -0
- package/dist/public-runtime.d.ts +16 -4
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +17 -4
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +13 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +16 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +15 -3
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +2 -3
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/registry/tool/portable.d.ts +65 -0
- package/dist/registry/tool/portable.d.ts.map +1 -0
- package/dist/registry/tool/portable.js +244 -0
- package/dist/registry/tool/portable.js.map +1 -0
- package/dist/registry/tool/schema.d.ts +32 -5
- package/dist/registry/tool/schema.d.ts.map +1 -1
- package/dist/registry/tool/schema.js +35 -9
- package/dist/registry/tool/schema.js.map +1 -1
- package/dist/registry/toolset/catalog.js +8 -8
- package/dist/registry/toolset/catalog.js.map +1 -1
- package/dist/run/LimitChecker.js +3 -3
- package/dist/run/LimitChecker.js.map +1 -1
- package/dist/run/evidence-query.d.ts +41 -0
- package/dist/run/evidence-query.d.ts.map +1 -0
- package/dist/run/evidence-query.js +270 -0
- package/dist/run/evidence-query.js.map +1 -0
- package/dist/run/evidence-recall.d.ts +99 -0
- package/dist/run/evidence-recall.d.ts.map +1 -0
- package/dist/run/evidence-recall.js +633 -0
- package/dist/run/evidence-recall.js.map +1 -0
- package/dist/run/index.d.ts +2 -0
- package/dist/run/index.d.ts.map +1 -1
- package/dist/run/index.js +1 -0
- package/dist/run/index.js.map +1 -1
- package/dist/run/json-claim-verifier.d.ts +83 -0
- package/dist/run/json-claim-verifier.d.ts.map +1 -0
- package/dist/run/json-claim-verifier.js +200 -0
- package/dist/run/json-claim-verifier.js.map +1 -0
- package/dist/run/preparation-context-error.d.ts +10 -0
- package/dist/run/preparation-context-error.d.ts.map +1 -0
- package/dist/run/preparation-context-error.js +15 -0
- package/dist/run/preparation-context-error.js.map +1 -0
- package/dist/run-query/index.d.ts +3 -1
- package/dist/run-query/index.d.ts.map +1 -1
- package/dist/runtime/jobs/awaited-jobs.d.ts +215 -0
- package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -0
- package/dist/runtime/jobs/awaited-jobs.js +259 -0
- package/dist/runtime/jobs/awaited-jobs.js.map +1 -0
- package/dist/runtime/jobs/registry.d.ts +33 -2
- package/dist/runtime/jobs/registry.d.ts.map +1 -1
- package/dist/runtime/jobs/registry.js +37 -0
- package/dist/runtime/jobs/registry.js.map +1 -1
- package/dist/runtime/query/callback-inference.d.ts +8 -0
- package/dist/runtime/query/callback-inference.d.ts.map +1 -0
- package/dist/runtime/query/callback-inference.js +89 -0
- package/dist/runtime/query/callback-inference.js.map +1 -0
- package/dist/runtime/query/checkpoint.d.ts +4 -0
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +13 -0
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/events.d.ts +1 -0
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +18 -0
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +35 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +77 -8
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/file-evidence-context.d.ts +5 -0
- package/dist/runtime/query/file-evidence-context.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-context.js +180 -0
- package/dist/runtime/query/file-evidence-context.js.map +1 -0
- package/dist/runtime/query/file-evidence-replay.d.ts +260 -0
- package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-replay.js +647 -0
- package/dist/runtime/query/file-evidence-replay.js.map +1 -0
- package/dist/runtime/query/file-evidence-seed.d.ts +50 -0
- package/dist/runtime/query/file-evidence-seed.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-seed.js +100 -0
- package/dist/runtime/query/file-evidence-seed.js.map +1 -0
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +4 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts +10 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +133 -26
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +92 -36
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +420 -117
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts +2 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.js +2 -1
- package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +12 -1
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +8 -1
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/provider-rejected-image.d.ts +2 -1
- package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -1
- package/dist/runtime/query/iteration/provider-rejected-image.js +5 -2
- package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts +4 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +22 -8
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/plugin-hooks.d.ts +14 -0
- package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
- package/dist/runtime/query/plugin-hooks.js +18 -0
- package/dist/runtime/query/plugin-hooks.js.map +1 -1
- package/dist/runtime/query/repeat-call.d.ts +17 -4
- package/dist/runtime/query/repeat-call.d.ts.map +1 -1
- package/dist/runtime/query/repeat-call.js +26 -19
- package/dist/runtime/query/repeat-call.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts +18 -33
- package/dist/runtime/query/resume-pending.d.ts.map +1 -1
- package/dist/runtime/query/resume-pending.js +59 -42
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/review-policy.d.ts +4 -4
- package/dist/runtime/query/review-policy.d.ts.map +1 -1
- package/dist/runtime/query/review-policy.js +10 -9
- package/dist/runtime/query/review-policy.js.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.js +4 -0
- package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
- package/dist/runtime/query/steering.d.ts +11 -1
- package/dist/runtime/query/steering.d.ts.map +1 -1
- package/dist/runtime/query/steering.js +12 -1
- package/dist/runtime/query/steering.js.map +1 -1
- package/dist/runtime/query/tool-output-budget.d.ts +10 -6
- package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
- package/dist/runtime/query/tool-output-budget.js +54 -12
- package/dist/runtime/query/tool-output-budget.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +5 -1
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +5 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +49 -0
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +122 -2
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/store/evidence/compaction-archive.d.ts +109 -0
- package/dist/store/evidence/compaction-archive.d.ts.map +1 -0
- package/dist/store/evidence/compaction-archive.js +125 -0
- package/dist/store/evidence/compaction-archive.js.map +1 -0
- package/dist/store/evidence/compaction-provenance.d.ts +7 -0
- package/dist/store/evidence/compaction-provenance.d.ts.map +1 -0
- package/dist/store/evidence/compaction-provenance.js +49 -0
- package/dist/store/evidence/compaction-provenance.js.map +1 -0
- package/dist/store/evidence/compaction-text.d.ts +16 -0
- package/dist/store/evidence/compaction-text.d.ts.map +1 -0
- package/dist/store/evidence/compaction-text.js +51 -0
- package/dist/store/evidence/compaction-text.js.map +1 -0
- package/dist/store/evidence/disk.d.ts +11 -0
- package/dist/store/evidence/disk.d.ts.map +1 -0
- package/dist/store/evidence/disk.js +367 -0
- package/dist/store/evidence/disk.js.map +1 -0
- package/dist/store/evidence/format.d.ts +25 -0
- package/dist/store/evidence/format.d.ts.map +1 -0
- package/dist/store/evidence/format.js +115 -0
- package/dist/store/evidence/format.js.map +1 -0
- package/dist/store/evidence/index-page.d.ts +208 -0
- package/dist/store/evidence/index-page.d.ts.map +1 -0
- package/dist/store/evidence/index-page.js +262 -0
- package/dist/store/evidence/index-page.js.map +1 -0
- package/dist/store/evidence/io.d.ts +24 -0
- package/dist/store/evidence/io.d.ts.map +1 -0
- package/dist/store/evidence/io.js +69 -0
- package/dist/store/evidence/io.js.map +1 -0
- package/dist/store/evidence/linked.d.ts +9 -0
- package/dist/store/evidence/linked.d.ts.map +1 -0
- package/dist/store/evidence/linked.js +314 -0
- package/dist/store/evidence/linked.js.map +1 -0
- package/dist/store/evidence/passages.d.ts +15 -0
- package/dist/store/evidence/passages.d.ts.map +1 -0
- package/dist/store/evidence/passages.js +72 -0
- package/dist/store/evidence/passages.js.map +1 -0
- package/dist/store/evidence/record-chain.d.ts +42 -0
- package/dist/store/evidence/record-chain.d.ts.map +1 -0
- package/dist/store/evidence/record-chain.js +111 -0
- package/dist/store/evidence/record-chain.js.map +1 -0
- package/dist/store/evidence/search-input.d.ts +21 -0
- package/dist/store/evidence/search-input.d.ts.map +1 -0
- package/dist/store/evidence/search-input.js +44 -0
- package/dist/store/evidence/search-input.js.map +1 -0
- package/dist/store/evidence/selection.d.ts +9 -0
- package/dist/store/evidence/selection.d.ts.map +1 -0
- package/dist/store/evidence/selection.js +17 -0
- package/dist/store/evidence/selection.js.map +1 -0
- package/dist/store/evidence/source-kind.d.ts +11 -0
- package/dist/store/evidence/source-kind.d.ts.map +1 -0
- package/dist/store/evidence/source-kind.js +26 -0
- package/dist/store/evidence/source-kind.js.map +1 -0
- package/dist/store/evidence/source-text.d.ts +51 -0
- package/dist/store/evidence/source-text.d.ts.map +1 -0
- package/dist/store/evidence/source-text.js +213 -0
- package/dist/store/evidence/source-text.js.map +1 -0
- package/dist/store/evidence/types.d.ts +162 -0
- package/dist/store/evidence/types.d.ts.map +1 -0
- package/dist/store/evidence/types.js +2 -0
- package/dist/store/evidence/types.js.map +1 -0
- package/dist/store/memory/disk.d.ts +2 -0
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +2 -1
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/disk.d.ts +10 -0
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +87 -7
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/memory.d.ts +1 -0
- package/dist/store/run/memory.d.ts.map +1 -1
- package/dist/store/run/memory.js +10 -0
- package/dist/store/run/memory.js.map +1 -1
- package/dist/store/run/tool-executions.d.ts +13 -0
- package/dist/store/run/tool-executions.d.ts.map +1 -0
- package/dist/store/run/tool-executions.js +99 -0
- package/dist/store/run/tool-executions.js.map +1 -0
- package/dist/store/session/index.d.ts +2 -0
- package/dist/store/session/index.d.ts.map +1 -1
- package/dist/store/session/index.js +1 -0
- package/dist/store/session/index.js.map +1 -1
- package/dist/store/session/sqlite.d.ts +57 -0
- package/dist/store/session/sqlite.d.ts.map +1 -0
- package/dist/store/session/sqlite.js +430 -0
- package/dist/store/session/sqlite.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +4 -10
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/edit-apply.d.ts +126 -0
- package/dist/tools/builtins/edit-apply.d.ts.map +1 -0
- package/dist/tools/builtins/edit-apply.js +360 -0
- package/dist/tools/builtins/edit-apply.js.map +1 -0
- package/dist/tools/builtins/edit.d.ts +143 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +37 -219
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/index.d.ts +1 -0
- package/dist/tools/builtins/index.d.ts.map +1 -1
- package/dist/tools/builtins/index.js +9 -3
- package/dist/tools/builtins/index.js.map +1 -1
- package/dist/tools/builtins/job.d.ts.map +1 -1
- package/dist/tools/builtins/job.js +5 -6
- package/dist/tools/builtins/job.js.map +1 -1
- package/dist/tools/builtins/read-file.d.ts +2 -2
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +50 -65
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/read-render.d.ts +56 -0
- package/dist/tools/builtins/read-render.d.ts.map +1 -0
- package/dist/tools/builtins/read-render.js +73 -0
- package/dist/tools/builtins/read-render.js.map +1 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts +67 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -0
- package/dist/tools/builtins/wait-for-job-bounds.js +108 -0
- package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -0
- package/dist/tools/builtins/wait-for-job.d.ts +6 -0
- package/dist/tools/builtins/wait-for-job.d.ts.map +1 -0
- package/dist/tools/builtins/wait-for-job.js +162 -0
- package/dist/tools/builtins/wait-for-job.js.map +1 -0
- package/dist/tools/builtins/write-file.js +7 -2
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +1 -7
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/defineTool.d.ts +2 -1
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -1
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/file-read-tracker.d.ts.map +1 -1
- package/dist/tools/file-read-tracker.js +90 -3
- package/dist/tools/file-read-tracker.js.map +1 -1
- package/dist/tools/resident-history.d.ts +10 -0
- package/dist/tools/resident-history.d.ts.map +1 -0
- package/dist/tools/resident-history.js +80 -0
- package/dist/tools/resident-history.js.map +1 -0
- package/dist/tools/resident-tool-evidence.d.ts +5 -0
- package/dist/tools/resident-tool-evidence.d.ts.map +1 -0
- package/dist/tools/resident-tool-evidence.js +57 -0
- package/dist/tools/resident-tool-evidence.js.map +1 -0
- package/dist/types/advisory/config.d.ts +7 -0
- package/dist/types/advisory/config.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +1 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/authorization/index.d.ts +9 -9
- package/dist/types/authorization/index.d.ts.map +1 -1
- package/dist/types/authorization/index.js +1 -1
- package/dist/types/authorization/index.js.map +1 -1
- package/dist/types/hitl/index.d.ts +4 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/message/index.d.ts +16 -2
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +10 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +2 -0
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +4 -0
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/run/answer-review.d.ts +34 -3
- package/dist/types/run/answer-review.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +3 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/entity.d.ts +20 -0
- package/dist/types/run/entity.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +31 -8
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/prepare-step.d.ts +53 -8
- package/dist/types/run/prepare-step.d.ts.map +1 -1
- package/dist/types/run/store.d.ts +29 -4
- package/dist/types/run/store.d.ts.map +1 -1
- package/dist/types/run/store.js +0 -28
- package/dist/types/run/store.js.map +1 -1
- package/dist/types/sandbox/index.d.ts +15 -14
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/tool/index.d.ts +124 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/utils/await-with-abort.d.ts +8 -0
- package/dist/utils/await-with-abort.d.ts.map +1 -0
- package/dist/utils/await-with-abort.js +28 -0
- package/dist/utils/await-with-abort.js.map +1 -0
- package/dist/utils/env.d.ts +19 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +25 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/evidence-time.d.ts +3 -0
- package/dist/utils/evidence-time.d.ts.map +1 -0
- package/dist/utils/evidence-time.js +10 -0
- package/dist/utils/evidence-time.js.map +1 -0
- package/dist/utils/evidence-tokens.d.ts +13 -0
- package/dist/utils/evidence-tokens.d.ts.map +1 -0
- package/dist/utils/evidence-tokens.js +29 -0
- package/dist/utils/evidence-tokens.js.map +1 -0
- package/package.json +1 -1
- package/src/advisory/executor.ts +15 -30
- package/src/advisory/history.ts +126 -0
- package/src/advisory/index.ts +5 -1
- package/src/agents/ReactiveAgent.ts +3 -0
- package/src/agents/runAgent.ts +14 -1
- package/src/compaction/manual.ts +30 -2
- package/src/compaction/summary.ts +4 -1
- package/src/config/runtime.ts +2 -2
- package/src/connector/mcp/adapter.ts +20 -6
- package/src/contracts/schemas.ts +1 -1
- package/src/eval/harness-protection.ts +79 -0
- package/src/eval/harness-verification.ts +31 -1
- package/src/eval/index.ts +1 -0
- package/src/manager/resident/activity.ts +187 -0
- package/src/manager/resident/agenda.ts +59 -5
- package/src/manager/resident/consumption.ts +311 -0
- package/src/manager/resident/evidence-recall.ts +363 -0
- package/src/manager/resident/history-disk.ts +63 -0
- package/src/manager/resident/history.ts +312 -0
- package/src/manager/resident/initiative.ts +13 -3
- package/src/manager/resident/learning-cycle.ts +499 -0
- package/src/manager/resident/learning-observation.ts +39 -0
- package/src/manager/resident/learning-store.ts +813 -0
- package/src/manager/resident/learning.ts +132 -8
- package/src/manager/resident/store.ts +31 -3
- package/src/manager/resident/tool-evidence.ts +412 -0
- package/src/manager/run/persistence.ts +18 -0
- package/src/plugin/loader.ts +8 -3
- package/src/prompt/coding-agent-doctrine.ts +2 -0
- package/src/prompt/index.ts +2 -0
- package/src/prompt/resident-learning.ts +143 -0
- package/src/prompt/resident-step.ts +83 -3
- package/src/provider/collect-chat-completion.ts +7 -6
- package/src/provider/fallback.ts +2 -1
- package/src/provider/stream-text.ts +56 -0
- package/src/public-runtime.ts +39 -1
- package/src/public-tools.ts +21 -0
- package/src/public-types.ts +98 -0
- package/src/registry/tool/execute.ts +2 -4
- package/src/registry/tool/portable.ts +264 -0
- package/src/registry/tool/schema.ts +38 -8
- package/src/registry/toolset/catalog.ts +8 -9
- package/src/run/LimitChecker.ts +3 -3
- package/src/run/evidence-query.ts +333 -0
- package/src/run/evidence-recall.ts +854 -0
- package/src/run/index.ts +11 -0
- package/src/run/json-claim-verifier.ts +298 -0
- package/src/run/preparation-context-error.ts +16 -0
- package/src/run-query/index.ts +1 -1
- package/src/runtime/jobs/awaited-jobs.ts +271 -0
- package/src/runtime/jobs/registry.ts +50 -0
- package/src/runtime/query/callback-inference.ts +94 -0
- package/src/runtime/query/checkpoint.ts +14 -0
- package/src/runtime/query/events.ts +22 -0
- package/src/runtime/query/executor.ts +100 -10
- package/src/runtime/query/file-evidence-context.ts +209 -0
- package/src/runtime/query/file-evidence-replay.ts +776 -0
- package/src/runtime/query/file-evidence-seed.ts +126 -0
- package/src/runtime/query/guard.ts +2 -0
- package/src/runtime/query/index.ts +153 -27
- package/src/runtime/query/iteration/index.ts +467 -110
- package/src/runtime/query/iteration/phases/advisory.ts +3 -0
- package/src/runtime/query/iteration/phases/context.ts +12 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +7 -0
- package/src/runtime/query/iteration/provider-rejected-image.ts +6 -1
- package/src/runtime/query/iteration/stream-turn.ts +35 -8
- package/src/runtime/query/plugin-hooks.ts +20 -0
- package/src/runtime/query/repeat-call.ts +28 -18
- package/src/runtime/query/resume-pending.ts +65 -40
- package/src/runtime/query/review-policy.ts +13 -9
- package/src/runtime/query/sandbox-lifecycle.ts +3 -0
- package/src/runtime/query/steering.ts +11 -0
- package/src/runtime/query/tool-output-budget.ts +65 -13
- package/src/runtime/query/tooling.ts +10 -1
- package/src/scheduler/completion-inbox.ts +124 -2
- package/src/store/evidence/compaction-archive.ts +139 -0
- package/src/store/evidence/compaction-provenance.ts +52 -0
- package/src/store/evidence/compaction-text.ts +61 -0
- package/src/store/evidence/disk.ts +461 -0
- package/src/store/evidence/format.ts +126 -0
- package/src/store/evidence/index-page.ts +292 -0
- package/src/store/evidence/io.ts +95 -0
- package/src/store/evidence/linked.ts +365 -0
- package/src/store/evidence/passages.ts +88 -0
- package/src/store/evidence/record-chain.ts +108 -0
- package/src/store/evidence/search-input.ts +62 -0
- package/src/store/evidence/selection.ts +25 -0
- package/src/store/evidence/source-kind.ts +36 -0
- package/src/store/evidence/source-text.ts +285 -0
- package/src/store/evidence/types.ts +177 -0
- package/src/store/memory/disk.ts +4 -1
- package/src/store/run/disk.ts +110 -8
- package/src/store/run/memory.ts +10 -0
- package/src/store/run/tool-executions.ts +112 -0
- package/src/store/session/index.ts +2 -0
- package/src/store/session/sqlite.ts +584 -0
- package/src/tools/builtins/bash.ts +4 -10
- package/src/tools/builtins/edit-apply.ts +456 -0
- package/src/tools/builtins/edit.ts +39 -270
- package/src/tools/builtins/index.ts +9 -3
- package/src/tools/builtins/job.ts +5 -6
- package/src/tools/builtins/read-file.ts +56 -77
- package/src/tools/builtins/read-render.ts +104 -0
- package/src/tools/builtins/wait-for-job-bounds.ts +179 -0
- package/src/tools/builtins/wait-for-job.ts +184 -0
- package/src/tools/builtins/write-file.ts +7 -2
- package/src/tools/coordinator/index.ts +1 -7
- package/src/tools/defineTool.ts +4 -2
- package/src/tools/file-read-tracker.ts +86 -2
- package/src/tools/resident-history.ts +86 -0
- package/src/tools/resident-tool-evidence.ts +68 -0
- package/src/types/advisory/config.ts +7 -0
- package/src/types/agent/reactive.ts +1 -0
- package/src/types/authorization/index.ts +2 -2
- package/src/types/hitl/index.ts +4 -0
- package/src/types/message/index.ts +22 -0
- package/src/types/provider/chat.ts +2 -0
- package/src/types/provider/stream.ts +4 -0
- package/src/types/run/answer-review.ts +34 -3
- package/src/types/run/config.ts +3 -0
- package/src/types/run/entity.ts +21 -0
- package/src/types/run/events.ts +31 -8
- package/src/types/run/prepare-step.ts +59 -8
- package/src/types/run/store.ts +35 -4
- package/src/types/sandbox/index.ts +15 -14
- package/src/types/tool/index.ts +123 -1
- package/src/utils/await-with-abort.ts +26 -0
- package/src/utils/env.ts +23 -0
- package/src/utils/evidence-time.ts +9 -0
- package/src/utils/evidence-tokens.ts +32 -0
|
@@ -0,0 +1,598 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { closeSync, existsSync, fsyncSync, linkSync, lstatSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
import { dirname, join, resolve } from 'node:path';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { asProjectId, asTenantId } from '../../utils/id.js';
|
|
7
|
+
import { runResidentLearningCycle, } from './learning-cycle.js';
|
|
8
|
+
import { learningObservationSchema, learningTargetSchema, } from './learning-observation.js';
|
|
9
|
+
import { hashResidentSkill } from './learning.js';
|
|
10
|
+
const uuid = z
|
|
11
|
+
.string()
|
|
12
|
+
.uuid()
|
|
13
|
+
.transform((id) => id.toLowerCase());
|
|
14
|
+
const digest = (text) => createHash('sha256').update(text).digest('hex');
|
|
15
|
+
const MAX_EVENT_BYTES = 256 * 1024;
|
|
16
|
+
const MAX_ARTIFACT_BYTES = 8 * 1024 * 1024;
|
|
17
|
+
const MAX_EVENTS = 4096;
|
|
18
|
+
const MAX_ARTIFACTS = 256;
|
|
19
|
+
const NO_LATER_PASS = `NOT EXISTS (
|
|
20
|
+
SELECT 1 FROM observations newer WHERE newer.tenant_id=o.tenant_id
|
|
21
|
+
AND newer.project_id=o.project_id AND newer.agent_key=o.agent_key
|
|
22
|
+
AND newer.skill_name=o.skill_name AND newer.evaluator_revision=o.evaluator_revision
|
|
23
|
+
AND newer.baseline_revision=o.baseline_revision AND newer.task_key=o.task_key
|
|
24
|
+
AND newer.ordinal>o.ordinal AND json_extract(newer.body, '$.outcome')='passed'
|
|
25
|
+
)`;
|
|
26
|
+
const OBSERVATIONS_SCHEMA = `
|
|
27
|
+
CREATE TABLE observations (
|
|
28
|
+
ordinal INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
29
|
+
tenant_id TEXT NOT NULL, project_id TEXT NOT NULL, agent_key TEXT NOT NULL,
|
|
30
|
+
run_id TEXT NOT NULL, evaluator_revision TEXT NOT NULL, skill_name TEXT NOT NULL,
|
|
31
|
+
baseline_revision TEXT NOT NULL, task_key TEXT NOT NULL,
|
|
32
|
+
eligible INTEGER NOT NULL, body TEXT NOT NULL,
|
|
33
|
+
UNIQUE(tenant_id, project_id, agent_key, run_id, evaluator_revision, skill_name)
|
|
34
|
+
);
|
|
35
|
+
CREATE INDEX observations_select ON observations(
|
|
36
|
+
tenant_id, project_id, agent_key, skill_name, evaluator_revision, baseline_revision, eligible, ordinal
|
|
37
|
+
);
|
|
38
|
+
CREATE INDEX observations_task ON observations(
|
|
39
|
+
tenant_id, project_id, agent_key, skill_name, evaluator_revision, baseline_revision, task_key, ordinal
|
|
40
|
+
);
|
|
41
|
+
CREATE TABLE observation_attempts (
|
|
42
|
+
tenant_id TEXT NOT NULL, project_id TEXT NOT NULL, agent_key TEXT NOT NULL,
|
|
43
|
+
skill_name TEXT NOT NULL, evaluator_revision TEXT NOT NULL,
|
|
44
|
+
baseline_revision TEXT NOT NULL, task_key TEXT NOT NULL,
|
|
45
|
+
cycle_id TEXT NOT NULL REFERENCES cycles(id),
|
|
46
|
+
PRIMARY KEY(tenant_id, project_id, agent_key, skill_name, evaluator_revision, baseline_revision, task_key)
|
|
47
|
+
);
|
|
48
|
+
`;
|
|
49
|
+
const SCHEMA = `
|
|
50
|
+
CREATE TABLE cycles (
|
|
51
|
+
ordinal INTEGER PRIMARY KEY AUTOINCREMENT, id TEXT NOT NULL UNIQUE,
|
|
52
|
+
tenant_id TEXT NOT NULL, project_id TEXT NOT NULL, agent_key TEXT NOT NULL,
|
|
53
|
+
parent_id TEXT, skill_name TEXT, status TEXT NOT NULL,
|
|
54
|
+
sequence INTEGER NOT NULL, started_at INTEGER NOT NULL, updated_at INTEGER NOT NULL,
|
|
55
|
+
candidate_hash TEXT, result TEXT,
|
|
56
|
+
tokens INTEGER NOT NULL DEFAULT 0, cost_usd REAL NOT NULL DEFAULT 0,
|
|
57
|
+
receipts INTEGER NOT NULL DEFAULT 0, unknown_tokens INTEGER NOT NULL DEFAULT 0,
|
|
58
|
+
unknown_costs INTEGER NOT NULL DEFAULT 0
|
|
59
|
+
);
|
|
60
|
+
CREATE INDEX cycles_scope ON cycles(tenant_id, project_id, agent_key, ordinal);
|
|
61
|
+
CREATE TABLE events (
|
|
62
|
+
cycle_id TEXT NOT NULL REFERENCES cycles(id), sequence INTEGER NOT NULL,
|
|
63
|
+
body TEXT NOT NULL, PRIMARY KEY(cycle_id, sequence)
|
|
64
|
+
);
|
|
65
|
+
CREATE TABLE artifacts (
|
|
66
|
+
cycle_id TEXT NOT NULL REFERENCES cycles(id), name TEXT NOT NULL, hash TEXT NOT NULL,
|
|
67
|
+
bytes INTEGER NOT NULL, PRIMARY KEY(cycle_id, name)
|
|
68
|
+
);
|
|
69
|
+
CREATE TABLE usage_receipts (
|
|
70
|
+
cycle_id TEXT NOT NULL REFERENCES cycles(id), run_id TEXT NOT NULL,
|
|
71
|
+
PRIMARY KEY(cycle_id, run_id)
|
|
72
|
+
);
|
|
73
|
+
`;
|
|
74
|
+
const summary = (row) => ({
|
|
75
|
+
cycleId: row.id,
|
|
76
|
+
ordinal: row.ordinal,
|
|
77
|
+
parentCycleId: row.parent_id,
|
|
78
|
+
skillName: row.skill_name,
|
|
79
|
+
status: row.status,
|
|
80
|
+
sequence: row.sequence,
|
|
81
|
+
startedAt: row.started_at,
|
|
82
|
+
updatedAt: row.updated_at,
|
|
83
|
+
candidateRevision: row.candidate_hash,
|
|
84
|
+
result: row.result === null ? null : JSON.parse(row.result),
|
|
85
|
+
recordedUsage: {
|
|
86
|
+
tokens: row.tokens,
|
|
87
|
+
costUsd: row.cost_usd,
|
|
88
|
+
receipts: row.receipts,
|
|
89
|
+
unknownTokens: row.unknown_tokens,
|
|
90
|
+
unknownCosts: row.unknown_costs,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* @experimental Authoritative experiment journal and query index in one transaction.
|
|
95
|
+
* Large JSON artifacts are published completely before their SQLite references.
|
|
96
|
+
* No database transaction spans an await, model request or artifact write. JSONL
|
|
97
|
+
* exports are observations, never a second writable authority or a replay queue.
|
|
98
|
+
*/
|
|
99
|
+
export class SqliteResidentLearningStore {
|
|
100
|
+
databasePath;
|
|
101
|
+
artifactsPath;
|
|
102
|
+
scope;
|
|
103
|
+
readOnly;
|
|
104
|
+
constructor(options) {
|
|
105
|
+
this.databasePath = resolve(options.databasePath);
|
|
106
|
+
this.artifactsPath = resolve(options.artifactsPath);
|
|
107
|
+
this.scope = Object.freeze({
|
|
108
|
+
tenantId: asTenantId(options.scope.tenantId.toLowerCase()),
|
|
109
|
+
projectId: asProjectId(options.scope.projectId.toLowerCase()),
|
|
110
|
+
agentKey: z
|
|
111
|
+
.string()
|
|
112
|
+
.regex(/^[a-z0-9][a-z0-9_-]{0,63}$/)
|
|
113
|
+
.parse(options.scope.agentKey),
|
|
114
|
+
});
|
|
115
|
+
this.readOnly = options.readOnly === true;
|
|
116
|
+
}
|
|
117
|
+
use(write, operation) {
|
|
118
|
+
if (write && this.readOnly)
|
|
119
|
+
throw new Error('Learning database is read-only.');
|
|
120
|
+
let Database;
|
|
121
|
+
try {
|
|
122
|
+
Database = createRequire(import.meta.url)('node:sqlite')
|
|
123
|
+
.DatabaseSync;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw new Error('SqliteResidentLearningStore requires Node.js 22.13 or newer.', {
|
|
127
|
+
cause: error,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (!this.readOnly)
|
|
131
|
+
mkdirSync(dirname(this.databasePath), { recursive: true, mode: 0o700 });
|
|
132
|
+
const db = new Database(this.databasePath, { readOnly: this.readOnly });
|
|
133
|
+
try {
|
|
134
|
+
db.exec('PRAGMA busy_timeout = 5000; PRAGMA foreign_keys = ON;');
|
|
135
|
+
if (!this.readOnly)
|
|
136
|
+
db.exec('PRAGMA journal_mode = DELETE; PRAGMA synchronous = FULL;');
|
|
137
|
+
db.exec(write ? 'BEGIN IMMEDIATE' : 'BEGIN');
|
|
138
|
+
try {
|
|
139
|
+
const version = Number(db.prepare('PRAGMA user_version').get()?.user_version);
|
|
140
|
+
if (version === 0 && write) {
|
|
141
|
+
if (db
|
|
142
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' LIMIT 1")
|
|
143
|
+
.get())
|
|
144
|
+
throw new Error('Refusing to initialize a nonempty learning database.');
|
|
145
|
+
db.exec(`${SCHEMA} ${OBSERVATIONS_SCHEMA} PRAGMA user_version = 2;`);
|
|
146
|
+
}
|
|
147
|
+
else if (version === 1 && write) {
|
|
148
|
+
db.exec(`${OBSERVATIONS_SCHEMA} PRAGMA user_version = 2;`);
|
|
149
|
+
}
|
|
150
|
+
else if (version !== 1 && version !== 2)
|
|
151
|
+
throw new Error(`Unsupported learning database version ${version}.`);
|
|
152
|
+
const value = operation(db);
|
|
153
|
+
db.exec('COMMIT');
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
db.exec('ROLLBACK');
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
db.close();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
owned(db, id) {
|
|
166
|
+
const row = db.prepare('SELECT * FROM cycles WHERE id = ?').get(id);
|
|
167
|
+
if (!row)
|
|
168
|
+
return null;
|
|
169
|
+
if (row.tenant_id !== this.scope.tenantId ||
|
|
170
|
+
row.project_id !== this.scope.projectId ||
|
|
171
|
+
row.agent_key !== this.scope.agentKey)
|
|
172
|
+
throw new Error('Learning cycle does not belong to this tenant, project and resident.');
|
|
173
|
+
return row;
|
|
174
|
+
}
|
|
175
|
+
/** Immutable, idempotent observations. Regrading requires a different evaluator revision. */
|
|
176
|
+
async observe(input) {
|
|
177
|
+
const value = learningObservationSchema.parse(input);
|
|
178
|
+
const body = JSON.stringify(value);
|
|
179
|
+
this.use(true, (db) => {
|
|
180
|
+
const scope = [this.scope.tenantId, this.scope.projectId, this.scope.agentKey];
|
|
181
|
+
const previous = db
|
|
182
|
+
.prepare('SELECT body FROM observations WHERE tenant_id=? AND project_id=? AND agent_key=? AND run_id=? AND evaluator_revision=? AND skill_name=?')
|
|
183
|
+
.get(...scope, value.runId, value.evaluatorRevision, value.skillName);
|
|
184
|
+
if (previous) {
|
|
185
|
+
if (previous.body !== body)
|
|
186
|
+
throw new Error('Learning observation already has different content.');
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
db.prepare(`INSERT INTO observations
|
|
190
|
+
(tenant_id, project_id, agent_key, run_id, evaluator_revision, skill_name, baseline_revision, task_key, eligible, body)
|
|
191
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(...scope, value.runId, value.evaluatorRevision, value.skillName, value.baselineRevision, value.taskKey, Number(value.outcome === 'failed' && value.usageComplete), body);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
observationsQuery() {
|
|
195
|
+
return `SELECT o.ordinal, o.body, a.cycle_id AS attemptedCycleId FROM observations o
|
|
196
|
+
LEFT JOIN observation_attempts a ON
|
|
197
|
+
a.tenant_id=o.tenant_id AND a.project_id=o.project_id AND a.agent_key=o.agent_key
|
|
198
|
+
AND a.skill_name=o.skill_name AND a.evaluator_revision=o.evaluator_revision
|
|
199
|
+
AND a.baseline_revision=o.baseline_revision AND a.task_key=o.task_key
|
|
200
|
+
WHERE o.tenant_id=? AND o.project_id=? AND o.agent_key=?`;
|
|
201
|
+
}
|
|
202
|
+
observationRecord(row) {
|
|
203
|
+
const value = learningObservationSchema.parse(JSON.parse(row.body));
|
|
204
|
+
return Object.freeze({
|
|
205
|
+
...value,
|
|
206
|
+
evidence: Object.freeze(value.evidence),
|
|
207
|
+
ordinal: row.ordinal,
|
|
208
|
+
attemptedCycleId: row.attemptedCycleId,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
/** Ordered inspection; summaries are host observations, not inferred task completion. */
|
|
212
|
+
async observations(options = {}) {
|
|
213
|
+
const after = z
|
|
214
|
+
.number()
|
|
215
|
+
.int()
|
|
216
|
+
.nonnegative()
|
|
217
|
+
.safe()
|
|
218
|
+
.parse(options.after ?? 0);
|
|
219
|
+
const limit = z
|
|
220
|
+
.number()
|
|
221
|
+
.int()
|
|
222
|
+
.min(1)
|
|
223
|
+
.max(100)
|
|
224
|
+
.parse(options.limit ?? 20);
|
|
225
|
+
if (!existsSync(this.databasePath))
|
|
226
|
+
return [];
|
|
227
|
+
return this.use(false, (db) => {
|
|
228
|
+
if (Number(db.prepare('PRAGMA user_version').get()?.user_version) === 1)
|
|
229
|
+
return [];
|
|
230
|
+
const rows = db
|
|
231
|
+
.prepare(`${this.observationsQuery()} AND o.ordinal>? ORDER BY o.ordinal LIMIT ?`)
|
|
232
|
+
.all(this.scope.tenantId, this.scope.projectId, this.scope.agentKey, after, limit);
|
|
233
|
+
return rows.map((row) => this.observationRecord(row));
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
/** Oldest eligible unattempted task across current targets; no model call or claim is made. */
|
|
237
|
+
async selectObservation(input) {
|
|
238
|
+
const targets = z.array(learningTargetSchema).min(1).max(16).parse(input);
|
|
239
|
+
if (new Set(targets.map((t) => t.skillName)).size !== targets.length)
|
|
240
|
+
throw new Error('Learning selection requires one current evaluator per skill.');
|
|
241
|
+
if (!existsSync(this.databasePath))
|
|
242
|
+
return null;
|
|
243
|
+
return this.use(false, (db) => {
|
|
244
|
+
if (Number(db.prepare('PRAGMA user_version').get()?.user_version) === 1)
|
|
245
|
+
return null;
|
|
246
|
+
const rows = targets.flatMap((target) => {
|
|
247
|
+
const row = db
|
|
248
|
+
.prepare(`${this.observationsQuery()} AND o.skill_name=?
|
|
249
|
+
AND o.evaluator_revision=? AND o.baseline_revision=? AND o.eligible=1
|
|
250
|
+
AND a.cycle_id IS NULL AND ${NO_LATER_PASS} ORDER BY o.ordinal LIMIT 1`)
|
|
251
|
+
.get(this.scope.tenantId, this.scope.projectId, this.scope.agentKey, target.skillName, target.evaluatorRevision, target.baselineRevision);
|
|
252
|
+
return row
|
|
253
|
+
? [
|
|
254
|
+
this.observationRecord(row),
|
|
255
|
+
]
|
|
256
|
+
: [];
|
|
257
|
+
});
|
|
258
|
+
return rows.sort((a, b) => a.ordinal - b.ordinal)[0] ?? null;
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
claimObservation(db, event) {
|
|
262
|
+
if (event.kind !== 'started' || event.data.observation === undefined)
|
|
263
|
+
return;
|
|
264
|
+
const selected = z
|
|
265
|
+
.object({ ordinal: z.number().int().positive().safe() })
|
|
266
|
+
.parse(event.data.observation);
|
|
267
|
+
const row = db
|
|
268
|
+
.prepare(`${this.observationsQuery()} AND o.ordinal=? AND ${NO_LATER_PASS}`)
|
|
269
|
+
.get(this.scope.tenantId, this.scope.projectId, this.scope.agentKey, selected.ordinal);
|
|
270
|
+
if (!row)
|
|
271
|
+
throw new Error('Selected learning observation is not retained in this scope.');
|
|
272
|
+
const value = this.observationRecord(row);
|
|
273
|
+
if (value.outcome !== 'failed' || !value.usageComplete || value.attemptedCycleId)
|
|
274
|
+
throw new Error('Selected learning observation is ineligible or already attempted.');
|
|
275
|
+
if (event.data.skillName !== value.skillName ||
|
|
276
|
+
event.data.baselineRevision !== value.baselineRevision ||
|
|
277
|
+
JSON.stringify(event.data.failure) !==
|
|
278
|
+
JSON.stringify({ evidence: value.evidence, trace: value.trace }))
|
|
279
|
+
throw new Error('Selected observation differs from the current learning baseline or failure.');
|
|
280
|
+
db.prepare('INSERT INTO observation_attempts VALUES (?, ?, ?, ?, ?, ?, ?, ?)').run(this.scope.tenantId, this.scope.projectId, this.scope.agentKey, value.skillName, value.evaluatorRevision, value.baselineRevision, value.taskKey, event.cycleId);
|
|
281
|
+
}
|
|
282
|
+
/** Identical event retries are idempotent. Different content at the same sequence is refused. */
|
|
283
|
+
async append(input) {
|
|
284
|
+
const event = z
|
|
285
|
+
.object({
|
|
286
|
+
cycleId: uuid,
|
|
287
|
+
sequence: z.number().int().min(1).max(MAX_EVENTS),
|
|
288
|
+
kind: z.enum([
|
|
289
|
+
'started',
|
|
290
|
+
'stage-started',
|
|
291
|
+
'stage-finished',
|
|
292
|
+
'usage',
|
|
293
|
+
'exploration',
|
|
294
|
+
'candidate',
|
|
295
|
+
'evaluation',
|
|
296
|
+
'activation-requested',
|
|
297
|
+
'finished',
|
|
298
|
+
]),
|
|
299
|
+
stage: z.enum(['explore', 'generate', 'verification', 'confirmation']).optional(),
|
|
300
|
+
data: z.record(z.unknown()),
|
|
301
|
+
})
|
|
302
|
+
.parse(input);
|
|
303
|
+
const body = JSON.stringify(event);
|
|
304
|
+
if (Buffer.byteLength(body) > MAX_EVENT_BYTES)
|
|
305
|
+
throw new Error('Learning event exceeds 256 KiB; retain large content as an artifact.');
|
|
306
|
+
this.use(true, (db) => {
|
|
307
|
+
let row = this.owned(db, event.cycleId);
|
|
308
|
+
if (row) {
|
|
309
|
+
const previous = db
|
|
310
|
+
.prepare('SELECT body FROM events WHERE cycle_id = ? AND sequence = ?')
|
|
311
|
+
.get(event.cycleId, event.sequence);
|
|
312
|
+
if (previous) {
|
|
313
|
+
if (previous.body !== body)
|
|
314
|
+
throw new Error('Learning event sequence already has different content.');
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
if (row.result !== null || event.sequence !== row.sequence + 1)
|
|
318
|
+
throw new Error('Learning journal is finished or its sequence has a gap.');
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
if (event.sequence !== 1 || !['started', 'finished'].includes(event.kind))
|
|
322
|
+
throw new Error('Learning journal must begin with a start or a terminal preflight failure.');
|
|
323
|
+
if (event.kind === 'started' &&
|
|
324
|
+
(event.data.tenantId !== this.scope.tenantId ||
|
|
325
|
+
event.data.agentKey !== this.scope.agentKey))
|
|
326
|
+
throw new Error('Learning start does not match the bound resident.');
|
|
327
|
+
const parent = event.data.parentCycleId === undefined ? null : uuid.parse(event.data.parentCycleId);
|
|
328
|
+
if (parent && !this.owned(db, parent))
|
|
329
|
+
throw new Error('Parent learning cycle is not retained in this scope.');
|
|
330
|
+
const skillName = event.data.skillName === undefined
|
|
331
|
+
? null
|
|
332
|
+
: z
|
|
333
|
+
.string()
|
|
334
|
+
.regex(/^[a-z0-9][a-z0-9_-]{0,63}$/)
|
|
335
|
+
.parse(event.data.skillName);
|
|
336
|
+
const now = Date.now();
|
|
337
|
+
db.prepare('INSERT INTO cycles (id, tenant_id, project_id, agent_key, parent_id, skill_name, status, sequence, started_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?, ?)').run(event.cycleId, this.scope.tenantId, this.scope.projectId, this.scope.agentKey, parent, skillName, 'running', now, now);
|
|
338
|
+
row = this.owned(db, event.cycleId);
|
|
339
|
+
}
|
|
340
|
+
this.claimObservation(db, event);
|
|
341
|
+
let status = row.status;
|
|
342
|
+
let result = null;
|
|
343
|
+
let hash = row.candidate_hash;
|
|
344
|
+
if (event.kind === 'usage') {
|
|
345
|
+
const receipt = z
|
|
346
|
+
.object({
|
|
347
|
+
runId: uuid,
|
|
348
|
+
tokens: z.number().int().nonnegative().safe().nullable(),
|
|
349
|
+
costUsd: z.number().nonnegative().finite().nullable(),
|
|
350
|
+
})
|
|
351
|
+
.parse(event.data.receipt);
|
|
352
|
+
if (row.receipts >= 1024)
|
|
353
|
+
throw new Error('Learning receipt bound exceeded.');
|
|
354
|
+
if (!Number.isSafeInteger(row.tokens + (receipt.tokens ?? 0)) ||
|
|
355
|
+
!Number.isFinite(row.cost_usd + (receipt.costUsd ?? 0)))
|
|
356
|
+
throw new Error('Learning consumption overflow.');
|
|
357
|
+
db.prepare('INSERT INTO usage_receipts VALUES (?, ?)').run(event.cycleId, receipt.runId);
|
|
358
|
+
db.prepare('UPDATE cycles SET tokens = tokens + ?, cost_usd = cost_usd + ?, receipts = receipts + 1, unknown_tokens = unknown_tokens + ?, unknown_costs = unknown_costs + ? WHERE id = ?').run(receipt.tokens ?? 0, receipt.costUsd ?? 0, Number(receipt.tokens === null), Number(receipt.costUsd === null), event.cycleId);
|
|
359
|
+
}
|
|
360
|
+
if (event.kind === 'candidate')
|
|
361
|
+
hash = z
|
|
362
|
+
.string()
|
|
363
|
+
.regex(/^[0-9a-f]{64}$/)
|
|
364
|
+
.parse(event.data.candidateRevision);
|
|
365
|
+
if (event.kind === 'activation-requested')
|
|
366
|
+
status = 'activation-pending';
|
|
367
|
+
if (event.kind === 'finished') {
|
|
368
|
+
const value = event.data.result;
|
|
369
|
+
if (!value || uuid.parse(value.cycleId) !== event.cycleId)
|
|
370
|
+
throw new Error('Learning result identity differs from its journal.');
|
|
371
|
+
status = z
|
|
372
|
+
.enum([
|
|
373
|
+
'activated',
|
|
374
|
+
'rejected',
|
|
375
|
+
'inconclusive',
|
|
376
|
+
'conflict',
|
|
377
|
+
'cancelled',
|
|
378
|
+
'failed',
|
|
379
|
+
'activation-unknown',
|
|
380
|
+
])
|
|
381
|
+
.parse(value.status);
|
|
382
|
+
if (row.sequence === 0 && !['failed', 'cancelled'].includes(status))
|
|
383
|
+
throw new Error('A successful cycle requires a recorded start.');
|
|
384
|
+
const recorded = summary(row).recordedUsage;
|
|
385
|
+
for (const key of [
|
|
386
|
+
'tokens',
|
|
387
|
+
'costUsd',
|
|
388
|
+
'receipts',
|
|
389
|
+
'unknownTokens',
|
|
390
|
+
'unknownCosts',
|
|
391
|
+
]) {
|
|
392
|
+
if (value.consumption?.[key] !== recorded[key])
|
|
393
|
+
throw new Error('Final learning consumption differs from its recorded receipts.');
|
|
394
|
+
}
|
|
395
|
+
result = JSON.stringify(value);
|
|
396
|
+
}
|
|
397
|
+
db.prepare('INSERT INTO events VALUES (?, ?, ?)').run(event.cycleId, event.sequence, body);
|
|
398
|
+
db.prepare('UPDATE cycles SET sequence = ?, status = ?, updated_at = ?, candidate_hash = ?, result = ? WHERE id = ?').run(event.sequence, status, Date.now(), hash, result, event.cycleId);
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
async get(cycleId) {
|
|
402
|
+
const id = uuid.parse(cycleId);
|
|
403
|
+
return this.use(false, (db) => {
|
|
404
|
+
const row = this.owned(db, id);
|
|
405
|
+
return row ? summary(row) : null;
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
async list(options = {}) {
|
|
409
|
+
const limit = z
|
|
410
|
+
.number()
|
|
411
|
+
.int()
|
|
412
|
+
.min(1)
|
|
413
|
+
.max(100)
|
|
414
|
+
.parse(options.limit ?? 20);
|
|
415
|
+
const before = z
|
|
416
|
+
.number()
|
|
417
|
+
.int()
|
|
418
|
+
.positive()
|
|
419
|
+
.safe()
|
|
420
|
+
.parse(options.before ?? Number.MAX_SAFE_INTEGER);
|
|
421
|
+
return this.use(false, (db) => db
|
|
422
|
+
.prepare('SELECT * FROM cycles WHERE tenant_id = ? AND project_id = ? AND agent_key = ? AND ordinal < ? ORDER BY ordinal DESC LIMIT ?')
|
|
423
|
+
.all(this.scope.tenantId, this.scope.projectId, this.scope.agentKey, before, limit).map(summary));
|
|
424
|
+
}
|
|
425
|
+
async events(cycleId, options = {}) {
|
|
426
|
+
const id = uuid.parse(cycleId);
|
|
427
|
+
const after = z
|
|
428
|
+
.number()
|
|
429
|
+
.int()
|
|
430
|
+
.nonnegative()
|
|
431
|
+
.max(MAX_EVENTS)
|
|
432
|
+
.parse(options.after ?? 0);
|
|
433
|
+
const limit = z
|
|
434
|
+
.number()
|
|
435
|
+
.int()
|
|
436
|
+
.positive()
|
|
437
|
+
.max(256)
|
|
438
|
+
.parse(options.limit ?? 100);
|
|
439
|
+
return this.use(false, (db) => {
|
|
440
|
+
if (!this.owned(db, id))
|
|
441
|
+
return [];
|
|
442
|
+
return db
|
|
443
|
+
.prepare('SELECT body FROM events WHERE cycle_id = ? AND sequence > ? ORDER BY sequence LIMIT ?')
|
|
444
|
+
.all(id, after, limit)
|
|
445
|
+
.map((row) => JSON.parse(String(row.body)));
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
async artifacts(cycleId) {
|
|
449
|
+
const id = uuid.parse(cycleId);
|
|
450
|
+
return this.use(false, (db) => {
|
|
451
|
+
if (!this.owned(db, id))
|
|
452
|
+
return [];
|
|
453
|
+
return db
|
|
454
|
+
.prepare('SELECT name, hash, bytes FROM artifacts WHERE cycle_id = ? ORDER BY name')
|
|
455
|
+
.all(id);
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
/** Complete immutable bytes precede the reference; an interrupted publication may leave an unreferenced blob. */
|
|
459
|
+
async putArtifact(cycleId, name, value) {
|
|
460
|
+
if (this.readOnly)
|
|
461
|
+
throw new Error('Learning database is read-only.');
|
|
462
|
+
const id = uuid.parse(cycleId);
|
|
463
|
+
z.string()
|
|
464
|
+
.regex(/^[a-z0-9][a-z0-9_.-]{0,119}$/)
|
|
465
|
+
.parse(name);
|
|
466
|
+
if (!(await this.get(id)))
|
|
467
|
+
throw new Error('Learning artifact requires a recorded cycle.');
|
|
468
|
+
const body = JSON.stringify(value);
|
|
469
|
+
if (body === undefined || Buffer.byteLength(body) > MAX_ARTIFACT_BYTES)
|
|
470
|
+
throw new Error('Learning artifact must be JSON within 8 MiB.');
|
|
471
|
+
const artifact = {
|
|
472
|
+
name,
|
|
473
|
+
hash: digest(body),
|
|
474
|
+
bytes: Buffer.byteLength(body),
|
|
475
|
+
};
|
|
476
|
+
mkdirSync(this.artifactsPath, { recursive: true, mode: 0o700 });
|
|
477
|
+
const target = join(this.artifactsPath, `${artifact.hash}.json`);
|
|
478
|
+
const temporary = join(this.artifactsPath, `.candidate-${randomUUID()}`);
|
|
479
|
+
const fd = openSync(temporary, 'wx', 0o600);
|
|
480
|
+
try {
|
|
481
|
+
try {
|
|
482
|
+
writeFileSync(fd, body);
|
|
483
|
+
fsyncSync(fd);
|
|
484
|
+
}
|
|
485
|
+
finally {
|
|
486
|
+
closeSync(fd);
|
|
487
|
+
}
|
|
488
|
+
try {
|
|
489
|
+
linkSync(temporary, target);
|
|
490
|
+
}
|
|
491
|
+
catch (error) {
|
|
492
|
+
if (error.code !== 'EEXIST')
|
|
493
|
+
throw error;
|
|
494
|
+
}
|
|
495
|
+
const entry = lstatSync(target);
|
|
496
|
+
if (!entry.isFile() ||
|
|
497
|
+
entry.isSymbolicLink() ||
|
|
498
|
+
entry.size !== artifact.bytes ||
|
|
499
|
+
digest(readFileSync(target)) !== artifact.hash)
|
|
500
|
+
throw new Error('Learning artifact content does not match its hash.');
|
|
501
|
+
}
|
|
502
|
+
finally {
|
|
503
|
+
unlinkSync(temporary);
|
|
504
|
+
}
|
|
505
|
+
// Directory sync makes the filename durable before the database reference.
|
|
506
|
+
if (process.platform !== 'win32') {
|
|
507
|
+
const directory = openSync(this.artifactsPath, 'r');
|
|
508
|
+
try {
|
|
509
|
+
fsyncSync(directory);
|
|
510
|
+
}
|
|
511
|
+
finally {
|
|
512
|
+
closeSync(directory);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
this.use(true, (db) => {
|
|
516
|
+
if (!this.owned(db, id))
|
|
517
|
+
throw new Error('Learning cycle disappeared.');
|
|
518
|
+
const previous = db
|
|
519
|
+
.prepare('SELECT hash FROM artifacts WHERE cycle_id = ? AND name = ?')
|
|
520
|
+
.get(id, name);
|
|
521
|
+
if (previous) {
|
|
522
|
+
if (previous.hash !== artifact.hash)
|
|
523
|
+
throw new Error('Learning artifact name already identifies different content.');
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
if (Number(db.prepare('SELECT COUNT(*) AS count FROM artifacts WHERE cycle_id = ?').get(id)?.count) >= MAX_ARTIFACTS)
|
|
527
|
+
throw new Error('Learning cycle artifact bound exceeded.');
|
|
528
|
+
db.prepare('INSERT INTO artifacts VALUES (?, ?, ?, ?)').run(id, name, artifact.hash, artifact.bytes);
|
|
529
|
+
});
|
|
530
|
+
return artifact;
|
|
531
|
+
}
|
|
532
|
+
async readArtifact(cycleId, name) {
|
|
533
|
+
const artifact = (await this.artifacts(cycleId)).find((item) => item.name === name);
|
|
534
|
+
if (!artifact)
|
|
535
|
+
throw new Error('Learning artifact is not retained in this scope.');
|
|
536
|
+
z.string()
|
|
537
|
+
.regex(/^[0-9a-f]{64}$/)
|
|
538
|
+
.parse(artifact.hash);
|
|
539
|
+
const path = join(this.artifactsPath, `${artifact.hash}.json`);
|
|
540
|
+
const entry = lstatSync(path);
|
|
541
|
+
if (!entry.isFile() ||
|
|
542
|
+
entry.isSymbolicLink() ||
|
|
543
|
+
entry.size !== artifact.bytes ||
|
|
544
|
+
entry.size > MAX_ARTIFACT_BYTES)
|
|
545
|
+
throw new Error('Learning artifact is not a regular file of the recorded size.');
|
|
546
|
+
const body = readFileSync(path);
|
|
547
|
+
if (digest(body) !== artifact.hash)
|
|
548
|
+
throw new Error('Learning artifact hash mismatch.');
|
|
549
|
+
return JSON.parse(body.toString('utf8'));
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
/** @experimental Supply normal host callbacks; the store retains journal events and full paired batches. */
|
|
553
|
+
export async function runStoredResidentLearningCycle(store, options) {
|
|
554
|
+
return runResidentLearningCycle({
|
|
555
|
+
...options,
|
|
556
|
+
record: (event) => store.append(event),
|
|
557
|
+
evaluate: async (context) => {
|
|
558
|
+
const value = await options.evaluate(context);
|
|
559
|
+
await store.putArtifact(context.cycleId, context.stage, value.batch);
|
|
560
|
+
return value;
|
|
561
|
+
},
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* @experimental Admit at most one experiment from host-scored observations.
|
|
566
|
+
* Selection is local FIFO fairness, not an estimated probability of improvement.
|
|
567
|
+
* Claim and start are one SQLite transaction; concurrent selectors cannot run
|
|
568
|
+
* the same task/evaluator/baseline twice, even after a crash or reopened process.
|
|
569
|
+
*/
|
|
570
|
+
export async function runStoredResidentLearningFromObservations(store, options) {
|
|
571
|
+
options.signal.throwIfAborted();
|
|
572
|
+
const agenda = await options.agenda.read();
|
|
573
|
+
if (!agenda || agenda.paused || agenda.pursuits.some((p) => p.state.phase === 'running'))
|
|
574
|
+
throw new Error('Learning discovery requires an unpaused agenda without running pursuits.');
|
|
575
|
+
const targets = options.evaluators.map((target) => {
|
|
576
|
+
const skill = agenda.learning?.skills.find((s) => s.name === target.skillName);
|
|
577
|
+
return { ...target, baselineRevision: skill ? hashResidentSkill(skill) : 'none' };
|
|
578
|
+
});
|
|
579
|
+
const observation = await store.selectObservation(targets);
|
|
580
|
+
options.signal.throwIfAborted();
|
|
581
|
+
if (!observation)
|
|
582
|
+
return { observation: null, cycle: null };
|
|
583
|
+
const cycle = await runResidentLearningCycle({
|
|
584
|
+
...options,
|
|
585
|
+
skillName: observation.skillName,
|
|
586
|
+
failure: { evidence: observation.evidence, trace: observation.trace },
|
|
587
|
+
record: (event) => store.append(event.kind === 'started'
|
|
588
|
+
? { ...event, data: { ...event.data, observation: { ordinal: observation.ordinal } } }
|
|
589
|
+
: event),
|
|
590
|
+
evaluate: async (context) => {
|
|
591
|
+
const value = await options.evaluate(context);
|
|
592
|
+
await store.putArtifact(context.cycleId, context.stage, value.batch);
|
|
593
|
+
return value;
|
|
594
|
+
},
|
|
595
|
+
});
|
|
596
|
+
return { observation, cycle };
|
|
597
|
+
}
|
|
598
|
+
//# sourceMappingURL=learning-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning-store.js","sourceRoot":"","sources":["../../../src/manager/resident/learning-store.ts"],"names":[],"mappings":"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"}
|