@namzu/sdk 38.1.0 → 39.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +758 -0
- package/dist/advisory/executor.d.ts +10 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +5 -26
- package/dist/advisory/executor.js.map +1 -1
- package/dist/advisory/history.d.ts +9 -0
- package/dist/advisory/history.d.ts.map +1 -0
- package/dist/advisory/history.js +120 -0
- package/dist/advisory/history.js.map +1 -0
- package/dist/advisory/index.d.ts +1 -1
- package/dist/advisory/index.d.ts.map +1 -1
- package/dist/advisory/index.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +3 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/runAgent.d.ts +10 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +3 -0
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/compaction/manual.d.ts +6 -0
- package/dist/compaction/manual.d.ts.map +1 -1
- package/dist/compaction/manual.js +21 -2
- package/dist/compaction/manual.js.map +1 -1
- package/dist/compaction/summary.d.ts.map +1 -1
- package/dist/compaction/summary.js +4 -1
- package/dist/compaction/summary.js.map +1 -1
- package/dist/config/runtime.js +2 -2
- package/dist/config/runtime.js.map +1 -1
- package/dist/contracts/schemas.js +1 -1
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/eval/harness-protection.d.ts +18 -0
- package/dist/eval/harness-protection.d.ts.map +1 -0
- package/dist/eval/harness-protection.js +58 -0
- package/dist/eval/harness-protection.js.map +1 -0
- package/dist/eval/harness-verification.d.ts +6 -1
- package/dist/eval/harness-verification.d.ts.map +1 -1
- package/dist/eval/harness-verification.js +19 -2
- package/dist/eval/harness-verification.js.map +1 -1
- package/dist/eval/index.d.ts +1 -0
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js.map +1 -1
- package/dist/manager/resident/activity.d.ts +50 -0
- package/dist/manager/resident/activity.d.ts.map +1 -0
- package/dist/manager/resident/activity.js +125 -0
- package/dist/manager/resident/activity.js.map +1 -0
- package/dist/manager/resident/agenda.d.ts +137 -0
- package/dist/manager/resident/agenda.d.ts.map +1 -0
- package/dist/manager/resident/agenda.js +586 -0
- package/dist/manager/resident/agenda.js.map +1 -0
- package/dist/manager/resident/consumption.d.ts +104 -0
- package/dist/manager/resident/consumption.d.ts.map +1 -0
- package/dist/manager/resident/consumption.js +233 -0
- package/dist/manager/resident/consumption.js.map +1 -0
- package/dist/manager/resident/delivery-window.d.ts +22 -0
- package/dist/manager/resident/delivery-window.d.ts.map +1 -0
- package/dist/manager/resident/delivery-window.js +78 -0
- package/dist/manager/resident/delivery-window.js.map +1 -0
- package/dist/manager/resident/evidence-recall.d.ts +24 -0
- package/dist/manager/resident/evidence-recall.d.ts.map +1 -0
- package/dist/manager/resident/evidence-recall.js +295 -0
- package/dist/manager/resident/evidence-recall.js.map +1 -0
- package/dist/manager/resident/history-disk.d.ts +10 -0
- package/dist/manager/resident/history-disk.d.ts.map +1 -0
- package/dist/manager/resident/history-disk.js +50 -0
- package/dist/manager/resident/history-disk.js.map +1 -0
- package/dist/manager/resident/history.d.ts +79 -0
- package/dist/manager/resident/history.d.ts.map +1 -0
- package/dist/manager/resident/history.js +203 -0
- package/dist/manager/resident/history.js.map +1 -0
- package/dist/manager/resident/host.d.ts +78 -0
- package/dist/manager/resident/host.d.ts.map +1 -0
- package/dist/manager/resident/host.js +252 -0
- package/dist/manager/resident/host.js.map +1 -0
- package/dist/manager/resident/initiative.d.ts +111 -0
- package/dist/manager/resident/initiative.d.ts.map +1 -0
- package/dist/manager/resident/initiative.js +129 -0
- package/dist/manager/resident/initiative.js.map +1 -0
- package/dist/manager/resident/learning-cycle.d.ts +131 -0
- package/dist/manager/resident/learning-cycle.d.ts.map +1 -0
- package/dist/manager/resident/learning-cycle.js +306 -0
- package/dist/manager/resident/learning-cycle.js.map +1 -0
- package/dist/manager/resident/learning-observation.d.ts +80 -0
- package/dist/manager/resident/learning-observation.d.ts.map +1 -0
- package/dist/manager/resident/learning-observation.js +22 -0
- package/dist/manager/resident/learning-observation.js.map +1 -0
- package/dist/manager/resident/learning-store.d.ts +106 -0
- package/dist/manager/resident/learning-store.d.ts.map +1 -0
- package/dist/manager/resident/learning-store.js +598 -0
- package/dist/manager/resident/learning-store.js.map +1 -0
- package/dist/manager/resident/learning.d.ts +726 -0
- package/dist/manager/resident/learning.d.ts.map +1 -0
- package/dist/manager/resident/learning.js +353 -0
- package/dist/manager/resident/learning.js.map +1 -0
- package/dist/manager/resident/loop.d.ts +31 -0
- package/dist/manager/resident/loop.d.ts.map +1 -0
- package/dist/manager/resident/loop.js +69 -0
- package/dist/manager/resident/loop.js.map +1 -0
- package/dist/manager/resident/outbox.d.ts +180 -0
- package/dist/manager/resident/outbox.d.ts.map +1 -0
- package/dist/manager/resident/outbox.js +214 -0
- package/dist/manager/resident/outbox.js.map +1 -0
- package/dist/manager/resident/proposal.d.ts +91 -0
- package/dist/manager/resident/proposal.d.ts.map +1 -0
- package/dist/manager/resident/proposal.js +75 -0
- package/dist/manager/resident/proposal.js.map +1 -0
- package/dist/manager/resident/store.d.ts +182 -0
- package/dist/manager/resident/store.d.ts.map +1 -0
- package/dist/manager/resident/store.js +199 -0
- package/dist/manager/resident/store.js.map +1 -0
- package/dist/manager/resident/tool-evidence.d.ts +71 -0
- package/dist/manager/resident/tool-evidence.d.ts.map +1 -0
- package/dist/manager/resident/tool-evidence.js +285 -0
- package/dist/manager/resident/tool-evidence.js.map +1 -0
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +6 -0
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +5 -3
- package/dist/plugin/loader.js.map +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
- package/dist/prompt/coding-agent-doctrine.js +2 -0
- package/dist/prompt/coding-agent-doctrine.js.map +1 -1
- package/dist/prompt/contributions.d.ts +5 -2
- package/dist/prompt/contributions.d.ts.map +1 -1
- package/dist/prompt/contributions.js.map +1 -1
- package/dist/prompt/index.d.ts +4 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +2 -0
- package/dist/prompt/index.js.map +1 -1
- package/dist/prompt/resident-learning.d.ts +19 -0
- package/dist/prompt/resident-learning.d.ts.map +1 -0
- package/dist/prompt/resident-learning.js +125 -0
- package/dist/prompt/resident-learning.js.map +1 -0
- package/dist/prompt/resident-step.d.ts +36 -0
- package/dist/prompt/resident-step.d.ts.map +1 -0
- package/dist/prompt/resident-step.js +135 -0
- package/dist/prompt/resident-step.js.map +1 -0
- package/dist/provider/collect-chat-completion.d.ts +2 -1
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +7 -6
- package/dist/provider/collect-chat-completion.js.map +1 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +2 -1
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/stream-text.d.ts +16 -0
- package/dist/provider/stream-text.d.ts.map +1 -0
- package/dist/provider/stream-text.js +51 -0
- package/dist/provider/stream-text.js.map +1 -0
- package/dist/public-runtime.d.ts +22 -3
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +21 -3
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +2 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +2 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +29 -3
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/tool/execute.d.ts +18 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +43 -6
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/run/LimitChecker.js +3 -3
- package/dist/run/LimitChecker.js.map +1 -1
- package/dist/run/evidence-query.d.ts +41 -0
- package/dist/run/evidence-query.d.ts.map +1 -0
- package/dist/run/evidence-query.js +270 -0
- package/dist/run/evidence-query.js.map +1 -0
- package/dist/run/evidence-recall.d.ts +99 -0
- package/dist/run/evidence-recall.d.ts.map +1 -0
- package/dist/run/evidence-recall.js +633 -0
- package/dist/run/evidence-recall.js.map +1 -0
- package/dist/run/index.d.ts +2 -0
- package/dist/run/index.d.ts.map +1 -1
- package/dist/run/index.js +1 -0
- package/dist/run/index.js.map +1 -1
- package/dist/run/json-claim-verifier.d.ts +83 -0
- package/dist/run/json-claim-verifier.d.ts.map +1 -0
- package/dist/run/json-claim-verifier.js +200 -0
- package/dist/run/json-claim-verifier.js.map +1 -0
- package/dist/run/preparation-context-error.d.ts +10 -0
- package/dist/run/preparation-context-error.d.ts.map +1 -0
- package/dist/run/preparation-context-error.js +15 -0
- package/dist/run/preparation-context-error.js.map +1 -0
- package/dist/run-query/index.d.ts +3 -1
- package/dist/run-query/index.d.ts.map +1 -1
- package/dist/runtime/query/callback-inference.d.ts +8 -0
- package/dist/runtime/query/callback-inference.d.ts.map +1 -0
- package/dist/runtime/query/callback-inference.js +89 -0
- package/dist/runtime/query/callback-inference.js.map +1 -0
- package/dist/runtime/query/checkpoint.d.ts +4 -0
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +13 -0
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/events.d.ts +7 -1
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +39 -12
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +7 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +38 -7
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/file-evidence-context.d.ts +5 -0
- package/dist/runtime/query/file-evidence-context.d.ts.map +1 -0
- package/dist/runtime/query/file-evidence-context.js +64 -0
- package/dist/runtime/query/file-evidence-context.js.map +1 -0
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +4 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts +10 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +40 -25
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +9 -31
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +231 -93
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts +2 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.js +2 -1
- package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +2 -1
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +3 -0
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/provider-rejected-image.d.ts +2 -1
- package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -1
- package/dist/runtime/query/iteration/provider-rejected-image.js +5 -2
- package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts +4 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +22 -8
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
- package/dist/runtime/query/prompt-cache.js +21 -42
- package/dist/runtime/query/prompt-cache.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts +18 -33
- package/dist/runtime/query/resume-pending.d.ts.map +1 -1
- package/dist/runtime/query/resume-pending.js +59 -42
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/review-policy.d.ts +4 -4
- package/dist/runtime/query/review-policy.d.ts.map +1 -1
- package/dist/runtime/query/review-policy.js +10 -9
- package/dist/runtime/query/review-policy.js.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.js +4 -0
- package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
- package/dist/runtime/query/tool-output-budget.d.ts +10 -6
- package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
- package/dist/runtime/query/tool-output-budget.js +54 -12
- package/dist/runtime/query/tool-output-budget.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +3 -1
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +4 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +3 -0
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +28 -0
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/store/evidence/compaction-archive.d.ts +109 -0
- package/dist/store/evidence/compaction-archive.d.ts.map +1 -0
- package/dist/store/evidence/compaction-archive.js +125 -0
- package/dist/store/evidence/compaction-archive.js.map +1 -0
- package/dist/store/evidence/compaction-provenance.d.ts +7 -0
- package/dist/store/evidence/compaction-provenance.d.ts.map +1 -0
- package/dist/store/evidence/compaction-provenance.js +49 -0
- package/dist/store/evidence/compaction-provenance.js.map +1 -0
- package/dist/store/evidence/compaction-text.d.ts +16 -0
- package/dist/store/evidence/compaction-text.d.ts.map +1 -0
- package/dist/store/evidence/compaction-text.js +51 -0
- package/dist/store/evidence/compaction-text.js.map +1 -0
- package/dist/store/evidence/disk.d.ts +11 -0
- package/dist/store/evidence/disk.d.ts.map +1 -0
- package/dist/store/evidence/disk.js +367 -0
- package/dist/store/evidence/disk.js.map +1 -0
- package/dist/store/evidence/format.d.ts +25 -0
- package/dist/store/evidence/format.d.ts.map +1 -0
- package/dist/store/evidence/format.js +115 -0
- package/dist/store/evidence/format.js.map +1 -0
- package/dist/store/evidence/index-page.d.ts +208 -0
- package/dist/store/evidence/index-page.d.ts.map +1 -0
- package/dist/store/evidence/index-page.js +262 -0
- package/dist/store/evidence/index-page.js.map +1 -0
- package/dist/store/evidence/io.d.ts +24 -0
- package/dist/store/evidence/io.d.ts.map +1 -0
- package/dist/store/evidence/io.js +69 -0
- package/dist/store/evidence/io.js.map +1 -0
- package/dist/store/evidence/linked.d.ts +9 -0
- package/dist/store/evidence/linked.d.ts.map +1 -0
- package/dist/store/evidence/linked.js +314 -0
- package/dist/store/evidence/linked.js.map +1 -0
- package/dist/store/evidence/passages.d.ts +15 -0
- package/dist/store/evidence/passages.d.ts.map +1 -0
- package/dist/store/evidence/passages.js +72 -0
- package/dist/store/evidence/passages.js.map +1 -0
- package/dist/store/evidence/record-chain.d.ts +42 -0
- package/dist/store/evidence/record-chain.d.ts.map +1 -0
- package/dist/store/evidence/record-chain.js +111 -0
- package/dist/store/evidence/record-chain.js.map +1 -0
- package/dist/store/evidence/search-input.d.ts +21 -0
- package/dist/store/evidence/search-input.d.ts.map +1 -0
- package/dist/store/evidence/search-input.js +44 -0
- package/dist/store/evidence/search-input.js.map +1 -0
- package/dist/store/evidence/selection.d.ts +9 -0
- package/dist/store/evidence/selection.d.ts.map +1 -0
- package/dist/store/evidence/selection.js +17 -0
- package/dist/store/evidence/selection.js.map +1 -0
- package/dist/store/evidence/source-kind.d.ts +11 -0
- package/dist/store/evidence/source-kind.d.ts.map +1 -0
- package/dist/store/evidence/source-kind.js +26 -0
- package/dist/store/evidence/source-kind.js.map +1 -0
- package/dist/store/evidence/source-text.d.ts +51 -0
- package/dist/store/evidence/source-text.d.ts.map +1 -0
- package/dist/store/evidence/source-text.js +213 -0
- package/dist/store/evidence/source-text.js.map +1 -0
- package/dist/store/evidence/types.d.ts +162 -0
- package/dist/store/evidence/types.d.ts.map +1 -0
- package/dist/store/evidence/types.js +2 -0
- package/dist/store/evidence/types.js.map +1 -0
- package/dist/store/memory/disk.d.ts +2 -0
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +2 -1
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/disk.d.ts +10 -0
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +87 -7
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/memory.d.ts +1 -0
- package/dist/store/run/memory.d.ts.map +1 -1
- package/dist/store/run/memory.js +10 -0
- package/dist/store/run/memory.js.map +1 -1
- package/dist/store/run/tool-executions.d.ts +13 -0
- package/dist/store/run/tool-executions.d.ts.map +1 -0
- package/dist/store/run/tool-executions.js +99 -0
- package/dist/store/run/tool-executions.js.map +1 -0
- package/dist/store/session/index.d.ts +2 -0
- package/dist/store/session/index.d.ts.map +1 -1
- package/dist/store/session/index.js +1 -0
- package/dist/store/session/index.js.map +1 -1
- package/dist/store/session/sqlite.d.ts +57 -0
- package/dist/store/session/sqlite.d.ts.map +1 -0
- package/dist/store/session/sqlite.js +430 -0
- package/dist/store/session/sqlite.js.map +1 -0
- package/dist/tools/builtins/job.d.ts.map +1 -1
- package/dist/tools/builtins/job.js +4 -5
- package/dist/tools/builtins/job.js.map +1 -1
- package/dist/tools/builtins/write-file.js +2 -2
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/defineTool.d.ts +2 -1
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -1
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/file-read-tracker.d.ts.map +1 -1
- package/dist/tools/file-read-tracker.js +12 -3
- package/dist/tools/file-read-tracker.js.map +1 -1
- package/dist/tools/resident-history.d.ts +10 -0
- package/dist/tools/resident-history.d.ts.map +1 -0
- package/dist/tools/resident-history.js +80 -0
- package/dist/tools/resident-history.js.map +1 -0
- package/dist/tools/resident-tool-evidence.d.ts +5 -0
- package/dist/tools/resident-tool-evidence.d.ts.map +1 -0
- package/dist/tools/resident-tool-evidence.js +57 -0
- package/dist/tools/resident-tool-evidence.js.map +1 -0
- package/dist/types/advisory/config.d.ts +7 -0
- package/dist/types/advisory/config.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +1 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/authorization/index.d.ts +9 -9
- package/dist/types/authorization/index.d.ts.map +1 -1
- package/dist/types/authorization/index.js +1 -1
- package/dist/types/authorization/index.js.map +1 -1
- package/dist/types/hitl/index.d.ts +4 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/message/index.d.ts +16 -2
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +8 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +2 -0
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +4 -0
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/run/answer-review.d.ts +34 -3
- package/dist/types/run/answer-review.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +3 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/entity.d.ts +7 -0
- package/dist/types/run/entity.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +31 -8
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/prepare-step.d.ts +53 -8
- package/dist/types/run/prepare-step.d.ts.map +1 -1
- package/dist/types/run/store.d.ts +29 -4
- package/dist/types/run/store.d.ts.map +1 -1
- package/dist/types/run/store.js +0 -28
- package/dist/types/run/store.js.map +1 -1
- package/dist/types/tool/index.d.ts +15 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/utils/await-with-abort.d.ts +8 -0
- package/dist/utils/await-with-abort.d.ts.map +1 -0
- package/dist/utils/await-with-abort.js +28 -0
- package/dist/utils/await-with-abort.js.map +1 -0
- package/dist/utils/evidence-time.d.ts +3 -0
- package/dist/utils/evidence-time.d.ts.map +1 -0
- package/dist/utils/evidence-time.js +10 -0
- package/dist/utils/evidence-time.js.map +1 -0
- package/dist/utils/evidence-tokens.d.ts +13 -0
- package/dist/utils/evidence-tokens.d.ts.map +1 -0
- package/dist/utils/evidence-tokens.js +29 -0
- package/dist/utils/evidence-tokens.js.map +1 -0
- package/package.json +1 -1
- package/src/advisory/executor.ts +15 -30
- package/src/advisory/history.ts +126 -0
- package/src/advisory/index.ts +5 -1
- package/src/agents/ReactiveAgent.ts +3 -0
- package/src/agents/runAgent.ts +14 -1
- package/src/compaction/manual.ts +30 -2
- package/src/compaction/summary.ts +4 -1
- package/src/config/runtime.ts +2 -2
- package/src/contracts/schemas.ts +1 -1
- package/src/eval/harness-protection.ts +79 -0
- package/src/eval/harness-verification.ts +31 -1
- package/src/eval/index.ts +1 -0
- package/src/manager/resident/activity.ts +187 -0
- package/src/manager/resident/agenda.ts +907 -0
- package/src/manager/resident/consumption.ts +311 -0
- package/src/manager/resident/delivery-window.ts +93 -0
- package/src/manager/resident/evidence-recall.ts +363 -0
- package/src/manager/resident/history-disk.ts +63 -0
- package/src/manager/resident/history.ts +312 -0
- package/src/manager/resident/host.ts +356 -0
- package/src/manager/resident/initiative.ts +205 -0
- package/src/manager/resident/learning-cycle.ts +499 -0
- package/src/manager/resident/learning-observation.ts +39 -0
- package/src/manager/resident/learning-store.ts +813 -0
- package/src/manager/resident/learning.ts +493 -0
- package/src/manager/resident/loop.ts +101 -0
- package/src/manager/resident/outbox.ts +307 -0
- package/src/manager/resident/proposal.ts +105 -0
- package/src/manager/resident/store.ts +257 -0
- package/src/manager/resident/tool-evidence.ts +412 -0
- package/src/manager/run/persistence.ts +6 -0
- package/src/plugin/loader.ts +8 -3
- package/src/prompt/coding-agent-doctrine.ts +2 -0
- package/src/prompt/contributions.ts +5 -2
- package/src/prompt/index.ts +4 -0
- package/src/prompt/resident-learning.ts +143 -0
- package/src/prompt/resident-step.ts +176 -0
- package/src/provider/collect-chat-completion.ts +7 -6
- package/src/provider/fallback.ts +2 -1
- package/src/provider/stream-text.ts +56 -0
- package/src/public-runtime.ts +44 -0
- package/src/public-tools.ts +3 -0
- package/src/public-types.ts +165 -0
- package/src/registry/index.ts +1 -1
- package/src/registry/tool/execute.ts +56 -9
- package/src/run/LimitChecker.ts +3 -3
- package/src/run/evidence-query.ts +333 -0
- package/src/run/evidence-recall.ts +854 -0
- package/src/run/index.ts +11 -0
- package/src/run/json-claim-verifier.ts +298 -0
- package/src/run/preparation-context-error.ts +16 -0
- package/src/run-query/index.ts +1 -1
- package/src/runtime/query/callback-inference.ts +94 -0
- package/src/runtime/query/checkpoint.ts +14 -0
- package/src/runtime/query/events.ts +46 -14
- package/src/runtime/query/executor.ts +51 -9
- package/src/runtime/query/file-evidence-context.ts +65 -0
- package/src/runtime/query/guard.ts +2 -0
- package/src/runtime/query/index.ts +50 -27
- package/src/runtime/query/iteration/index.ts +269 -86
- package/src/runtime/query/iteration/phases/advisory.ts +3 -0
- package/src/runtime/query/iteration/phases/context.ts +2 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +3 -0
- package/src/runtime/query/iteration/provider-rejected-image.ts +6 -1
- package/src/runtime/query/iteration/stream-turn.ts +35 -8
- package/src/runtime/query/prompt-cache.ts +24 -47
- package/src/runtime/query/resume-pending.ts +65 -40
- package/src/runtime/query/review-policy.ts +13 -9
- package/src/runtime/query/sandbox-lifecycle.ts +3 -0
- package/src/runtime/query/tool-output-budget.ts +65 -13
- package/src/runtime/query/tooling.ts +7 -1
- package/src/scheduler/completion-inbox.ts +26 -0
- package/src/store/evidence/compaction-archive.ts +139 -0
- package/src/store/evidence/compaction-provenance.ts +52 -0
- package/src/store/evidence/compaction-text.ts +61 -0
- package/src/store/evidence/disk.ts +461 -0
- package/src/store/evidence/format.ts +126 -0
- package/src/store/evidence/index-page.ts +292 -0
- package/src/store/evidence/io.ts +95 -0
- package/src/store/evidence/linked.ts +365 -0
- package/src/store/evidence/passages.ts +88 -0
- package/src/store/evidence/record-chain.ts +108 -0
- package/src/store/evidence/search-input.ts +62 -0
- package/src/store/evidence/selection.ts +25 -0
- package/src/store/evidence/source-kind.ts +36 -0
- package/src/store/evidence/source-text.ts +285 -0
- package/src/store/evidence/types.ts +177 -0
- package/src/store/memory/disk.ts +4 -1
- package/src/store/run/disk.ts +110 -8
- package/src/store/run/memory.ts +10 -0
- package/src/store/run/tool-executions.ts +112 -0
- package/src/store/session/index.ts +2 -0
- package/src/store/session/sqlite.ts +584 -0
- package/src/tools/builtins/job.ts +4 -5
- package/src/tools/builtins/write-file.ts +2 -2
- package/src/tools/defineTool.ts +4 -2
- package/src/tools/file-read-tracker.ts +8 -2
- package/src/tools/resident-history.ts +86 -0
- package/src/tools/resident-tool-evidence.ts +68 -0
- package/src/types/advisory/config.ts +7 -0
- package/src/types/agent/reactive.ts +1 -0
- package/src/types/authorization/index.ts +2 -2
- package/src/types/hitl/index.ts +4 -0
- package/src/types/message/index.ts +20 -0
- package/src/types/provider/chat.ts +2 -0
- package/src/types/provider/stream.ts +4 -0
- package/src/types/run/answer-review.ts +34 -3
- package/src/types/run/config.ts +3 -0
- package/src/types/run/entity.ts +7 -0
- package/src/types/run/events.ts +31 -8
- package/src/types/run/prepare-step.ts +59 -8
- package/src/types/run/store.ts +35 -4
- package/src/types/tool/index.ts +19 -1
- package/src/utils/await-with-abort.ts +26 -0
- package/src/utils/evidence-time.ts +9 -0
- package/src/utils/evidence-tokens.ts +32 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ResidentAgendaState } from './agenda.js';
|
|
3
|
+
export declare const residentMessageInputSchema: z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
pursuitId: z.ZodString;
|
|
6
|
+
destination: z.ZodString;
|
|
7
|
+
body: z.ZodEffects<z.ZodString, string, string>;
|
|
8
|
+
notBefore: z.ZodNumber;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
id: string;
|
|
11
|
+
body: string;
|
|
12
|
+
pursuitId: string;
|
|
13
|
+
destination: string;
|
|
14
|
+
notBefore: number;
|
|
15
|
+
}, {
|
|
16
|
+
id: string;
|
|
17
|
+
body: string;
|
|
18
|
+
pursuitId: string;
|
|
19
|
+
destination: string;
|
|
20
|
+
notBefore: number;
|
|
21
|
+
}>;
|
|
22
|
+
/** @experimental Host-approved content and an opaque destination route, never credentials. */
|
|
23
|
+
export type ResidentMessageInput = Readonly<z.infer<typeof residentMessageInputSchema>>;
|
|
24
|
+
export declare const residentOutboxMessageSchema: z.ZodEffects<z.ZodObject<{
|
|
25
|
+
id: z.ZodString;
|
|
26
|
+
pursuitId: z.ZodString;
|
|
27
|
+
destination: z.ZodString;
|
|
28
|
+
body: z.ZodEffects<z.ZodString, string, string>;
|
|
29
|
+
notBefore: z.ZodNumber;
|
|
30
|
+
} & {
|
|
31
|
+
tenantId: z.ZodString;
|
|
32
|
+
agentKey: z.ZodString;
|
|
33
|
+
sourceClaimId: z.ZodNullable<z.ZodString>;
|
|
34
|
+
revision: z.ZodNumber;
|
|
35
|
+
attempts: z.ZodNumber;
|
|
36
|
+
phase: z.ZodEnum<["pending", "sending", "acknowledged", "cancelled"]>;
|
|
37
|
+
claimId: z.ZodNullable<z.ZodString>;
|
|
38
|
+
nextAttemptAt: z.ZodNullable<z.ZodNumber>;
|
|
39
|
+
receiptId: z.ZodNullable<z.ZodString>;
|
|
40
|
+
acknowledgedAt: z.ZodNullable<z.ZodNumber>;
|
|
41
|
+
lastReason: z.ZodNullable<z.ZodString>;
|
|
42
|
+
}, "strip", z.ZodTypeAny, {
|
|
43
|
+
id: string;
|
|
44
|
+
phase: "pending" | "cancelled" | "sending" | "acknowledged";
|
|
45
|
+
revision: number;
|
|
46
|
+
attempts: number;
|
|
47
|
+
tenantId: string;
|
|
48
|
+
body: string;
|
|
49
|
+
agentKey: string;
|
|
50
|
+
pursuitId: string;
|
|
51
|
+
claimId: string | null;
|
|
52
|
+
destination: string;
|
|
53
|
+
notBefore: number;
|
|
54
|
+
sourceClaimId: string | null;
|
|
55
|
+
nextAttemptAt: number | null;
|
|
56
|
+
receiptId: string | null;
|
|
57
|
+
acknowledgedAt: number | null;
|
|
58
|
+
lastReason: string | null;
|
|
59
|
+
}, {
|
|
60
|
+
id: string;
|
|
61
|
+
phase: "pending" | "cancelled" | "sending" | "acknowledged";
|
|
62
|
+
revision: number;
|
|
63
|
+
attempts: number;
|
|
64
|
+
tenantId: string;
|
|
65
|
+
body: string;
|
|
66
|
+
agentKey: string;
|
|
67
|
+
pursuitId: string;
|
|
68
|
+
claimId: string | null;
|
|
69
|
+
destination: string;
|
|
70
|
+
notBefore: number;
|
|
71
|
+
sourceClaimId: string | null;
|
|
72
|
+
nextAttemptAt: number | null;
|
|
73
|
+
receiptId: string | null;
|
|
74
|
+
acknowledgedAt: number | null;
|
|
75
|
+
lastReason: string | null;
|
|
76
|
+
}>, {
|
|
77
|
+
id: string;
|
|
78
|
+
phase: "pending" | "cancelled" | "sending" | "acknowledged";
|
|
79
|
+
revision: number;
|
|
80
|
+
attempts: number;
|
|
81
|
+
tenantId: string;
|
|
82
|
+
body: string;
|
|
83
|
+
agentKey: string;
|
|
84
|
+
pursuitId: string;
|
|
85
|
+
claimId: string | null;
|
|
86
|
+
destination: string;
|
|
87
|
+
notBefore: number;
|
|
88
|
+
sourceClaimId: string | null;
|
|
89
|
+
nextAttemptAt: number | null;
|
|
90
|
+
receiptId: string | null;
|
|
91
|
+
acknowledgedAt: number | null;
|
|
92
|
+
lastReason: string | null;
|
|
93
|
+
}, {
|
|
94
|
+
id: string;
|
|
95
|
+
phase: "pending" | "cancelled" | "sending" | "acknowledged";
|
|
96
|
+
revision: number;
|
|
97
|
+
attempts: number;
|
|
98
|
+
tenantId: string;
|
|
99
|
+
body: string;
|
|
100
|
+
agentKey: string;
|
|
101
|
+
pursuitId: string;
|
|
102
|
+
claimId: string | null;
|
|
103
|
+
destination: string;
|
|
104
|
+
notBefore: number;
|
|
105
|
+
sourceClaimId: string | null;
|
|
106
|
+
nextAttemptAt: number | null;
|
|
107
|
+
receiptId: string | null;
|
|
108
|
+
acknowledgedAt: number | null;
|
|
109
|
+
lastReason: string | null;
|
|
110
|
+
}>;
|
|
111
|
+
/** @experimental Acknowledgment proves transport acceptance, not human reading. */
|
|
112
|
+
export type ResidentOutboxMessage = Readonly<z.infer<typeof residentOutboxMessageSchema>>;
|
|
113
|
+
export declare const residentDeliveryOutcomeSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
114
|
+
kind: z.ZodLiteral<"acknowledged">;
|
|
115
|
+
receiptId: z.ZodString;
|
|
116
|
+
}, "strip", z.ZodTypeAny, {
|
|
117
|
+
kind: "acknowledged";
|
|
118
|
+
receiptId: string;
|
|
119
|
+
}, {
|
|
120
|
+
kind: "acknowledged";
|
|
121
|
+
receiptId: string;
|
|
122
|
+
}>, z.ZodObject<{
|
|
123
|
+
kind: z.ZodLiteral<"not-accepted">;
|
|
124
|
+
retryAt: z.ZodNullable<z.ZodNumber>;
|
|
125
|
+
reason: z.ZodString;
|
|
126
|
+
}, "strip", z.ZodTypeAny, {
|
|
127
|
+
kind: "not-accepted";
|
|
128
|
+
reason: string;
|
|
129
|
+
retryAt: number | null;
|
|
130
|
+
}, {
|
|
131
|
+
kind: "not-accepted";
|
|
132
|
+
reason: string;
|
|
133
|
+
retryAt: number | null;
|
|
134
|
+
}>]>;
|
|
135
|
+
/** @experimental Retry only with evidence of non-acceptance; null retryAt ends delivery. */
|
|
136
|
+
export type ResidentDeliveryOutcome = Readonly<z.infer<typeof residentDeliveryOutcomeSchema>>;
|
|
137
|
+
/** @experimental Atomic admission and exact-claim settlement, without automatic claim expiry. */
|
|
138
|
+
export interface ResidentOutboxStore {
|
|
139
|
+
read(): Promise<ResidentAgendaState | null>;
|
|
140
|
+
claimMessage(expected: ResidentAgendaState, id: string, now: number): Promise<ResidentOutboxMessage>;
|
|
141
|
+
settleMessage(expected: ResidentOutboxMessage, outcome: ResidentDeliveryOutcome, now: number): Promise<ResidentOutboxMessage>;
|
|
142
|
+
}
|
|
143
|
+
/** @experimental A synchronous host policy, evaluated before claiming and again before sending. */
|
|
144
|
+
export type ResidentDeliveryGate = (message: ResidentOutboxMessage, now: number) => {
|
|
145
|
+
readonly allow: true;
|
|
146
|
+
} | {
|
|
147
|
+
readonly allow: false;
|
|
148
|
+
readonly nextCheckAt: number | null;
|
|
149
|
+
readonly reason: string;
|
|
150
|
+
};
|
|
151
|
+
/** @experimental Bind an authorized route; forward message.id as the stable idempotency key. */
|
|
152
|
+
export type ResidentMessageTransport = (message: ResidentOutboxMessage, signal: AbortSignal) => Promise<ResidentDeliveryOutcome>;
|
|
153
|
+
/** @experimental One dispatch admission, with no model invocation, polling or implicit retries. */
|
|
154
|
+
export interface ResidentDeliveryOptions {
|
|
155
|
+
readonly signal: AbortSignal;
|
|
156
|
+
readonly gate: ResidentDeliveryGate;
|
|
157
|
+
readonly now?: () => number;
|
|
158
|
+
}
|
|
159
|
+
/** @experimental An idle result never asserts a message reached its destination. */
|
|
160
|
+
export type ResidentDeliveryResult = {
|
|
161
|
+
readonly status: 'settled';
|
|
162
|
+
readonly message: ResidentOutboxMessage;
|
|
163
|
+
} | {
|
|
164
|
+
readonly status: 'idle';
|
|
165
|
+
readonly reason: 'paused' | 'unresolved' | 'empty' | 'not-due' | 'window' | 'contended';
|
|
166
|
+
readonly nextCheckAt: number | null;
|
|
167
|
+
};
|
|
168
|
+
/** Internal pure enqueue used in the same revision transaction as pursuit settlement. */
|
|
169
|
+
export declare function appendResidentMessage(state: ResidentAgendaState, input: ResidentMessageInput, sourceClaimId?: string | null): readonly ResidentOutboxMessage[];
|
|
170
|
+
/** Internal exact-message transition; agenda storage owns exclusive admission. */
|
|
171
|
+
export declare function claimResidentOutboxMessage(message: ResidentOutboxMessage, now: number): ResidentOutboxMessage;
|
|
172
|
+
/** Internal settlement; unknown failures deliberately have no transition. */
|
|
173
|
+
export declare function settleResidentOutboxMessage(message: ResidentOutboxMessage, outcome: ResidentDeliveryOutcome, now: number): ResidentOutboxMessage;
|
|
174
|
+
/**
|
|
175
|
+
* @experimental Persist one send claim before calling a host-owned transport.
|
|
176
|
+
* Throws, malformed outcomes and cancellation keep the claim unresolved. Stop
|
|
177
|
+
* old executors and inspect effects before explicit settleMessage reconciliation.
|
|
178
|
+
*/
|
|
179
|
+
export declare function deliverResidentMessage(store: ResidentOutboxStore, transport: ResidentMessageTransport, options: ResidentDeliveryOptions): Promise<ResidentDeliveryResult>;
|
|
180
|
+
//# sourceMappingURL=outbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/outbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { ResidentConflictError } from './store.js';
|
|
4
|
+
const time = z.number().int().nonnegative().safe().max(8_640_000_000_000_000);
|
|
5
|
+
const label = z.string().trim().min(1).max(256);
|
|
6
|
+
export const residentMessageInputSchema = z.object({
|
|
7
|
+
id: z.string().uuid(),
|
|
8
|
+
pursuitId: z.string().uuid(),
|
|
9
|
+
destination: label,
|
|
10
|
+
body: z
|
|
11
|
+
.string()
|
|
12
|
+
.min(1)
|
|
13
|
+
.max(8_000)
|
|
14
|
+
.refine((value) => value.trim().length > 0),
|
|
15
|
+
notBefore: time,
|
|
16
|
+
});
|
|
17
|
+
export const residentOutboxMessageSchema = residentMessageInputSchema
|
|
18
|
+
.extend({
|
|
19
|
+
tenantId: z.string().uuid(),
|
|
20
|
+
agentKey: z.string().min(1).max(200),
|
|
21
|
+
sourceClaimId: z.string().uuid().nullable(),
|
|
22
|
+
revision: z.number().int().positive().safe(),
|
|
23
|
+
attempts: z.number().int().nonnegative().safe(),
|
|
24
|
+
phase: z.enum(['pending', 'sending', 'acknowledged', 'cancelled']),
|
|
25
|
+
claimId: z.string().uuid().nullable(),
|
|
26
|
+
nextAttemptAt: time.nullable(),
|
|
27
|
+
receiptId: label.nullable(),
|
|
28
|
+
acknowledgedAt: time.nullable(),
|
|
29
|
+
lastReason: z.string().trim().min(1).max(1_000).nullable(),
|
|
30
|
+
})
|
|
31
|
+
.superRefine((message, context) => {
|
|
32
|
+
if ((message.phase === 'sending') !== (message.claimId !== null) ||
|
|
33
|
+
(message.phase === 'pending') !== (message.nextAttemptAt !== null) ||
|
|
34
|
+
(message.phase === 'acknowledged') !== (message.receiptId !== null) ||
|
|
35
|
+
(message.phase === 'acknowledged') !== (message.acknowledgedAt !== null) ||
|
|
36
|
+
(message.nextAttemptAt !== null && message.nextAttemptAt < message.notBefore) ||
|
|
37
|
+
(message.phase !== 'pending' && message.attempts === 0))
|
|
38
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: 'Invalid outbox lifecycle.' });
|
|
39
|
+
});
|
|
40
|
+
export const residentDeliveryOutcomeSchema = z.discriminatedUnion('kind', [
|
|
41
|
+
z.object({ kind: z.literal('acknowledged'), receiptId: label }),
|
|
42
|
+
z.object({
|
|
43
|
+
kind: z.literal('not-accepted'),
|
|
44
|
+
retryAt: time.nullable(),
|
|
45
|
+
reason: z.string().trim().min(1).max(1_000),
|
|
46
|
+
}),
|
|
47
|
+
]);
|
|
48
|
+
/** Internal pure enqueue used in the same revision transaction as pursuit settlement. */
|
|
49
|
+
export function appendResidentMessage(state, input, sourceClaimId = null) {
|
|
50
|
+
const checked = residentMessageInputSchema.parse(input);
|
|
51
|
+
if (!state.pursuits.some((p) => p.id === checked.pursuitId))
|
|
52
|
+
throw new Error('Outbox message references an unknown pursuit.');
|
|
53
|
+
const messages = state.outbox ?? [];
|
|
54
|
+
const existing = messages.find((message) => message.id === checked.id);
|
|
55
|
+
if (existing) {
|
|
56
|
+
if (existing.pursuitId !== checked.pursuitId ||
|
|
57
|
+
existing.destination !== checked.destination ||
|
|
58
|
+
existing.body !== checked.body ||
|
|
59
|
+
existing.notBefore !== checked.notBefore ||
|
|
60
|
+
existing.sourceClaimId !== sourceClaimId)
|
|
61
|
+
throw new Error('Outbox message ID already names a different immutable intent.');
|
|
62
|
+
return messages;
|
|
63
|
+
}
|
|
64
|
+
if (messages.length >= 128)
|
|
65
|
+
throw new Error('Resident outbox capacity reached (128 intents).');
|
|
66
|
+
return [
|
|
67
|
+
...messages,
|
|
68
|
+
Object.freeze(residentOutboxMessageSchema.parse({
|
|
69
|
+
...checked,
|
|
70
|
+
tenantId: state.tenantId,
|
|
71
|
+
agentKey: state.agentKey,
|
|
72
|
+
sourceClaimId,
|
|
73
|
+
revision: 1,
|
|
74
|
+
attempts: 0,
|
|
75
|
+
phase: 'pending',
|
|
76
|
+
claimId: null,
|
|
77
|
+
nextAttemptAt: checked.notBefore,
|
|
78
|
+
receiptId: null,
|
|
79
|
+
acknowledgedAt: null,
|
|
80
|
+
lastReason: null,
|
|
81
|
+
})),
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
/** Internal exact-message transition; agenda storage owns exclusive admission. */
|
|
85
|
+
export function claimResidentOutboxMessage(message, now) {
|
|
86
|
+
time.parse(now);
|
|
87
|
+
if (message.phase !== 'pending' || message.nextAttemptAt === null || message.nextAttemptAt > now)
|
|
88
|
+
throw new ResidentConflictError();
|
|
89
|
+
return Object.freeze(residentOutboxMessageSchema.parse({
|
|
90
|
+
...message,
|
|
91
|
+
revision: message.revision + 1,
|
|
92
|
+
attempts: message.attempts + 1,
|
|
93
|
+
phase: 'sending',
|
|
94
|
+
claimId: randomUUID(),
|
|
95
|
+
nextAttemptAt: null,
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
/** Internal settlement; unknown failures deliberately have no transition. */
|
|
99
|
+
export function settleResidentOutboxMessage(message, outcome, now) {
|
|
100
|
+
time.parse(now);
|
|
101
|
+
const checked = residentDeliveryOutcomeSchema.parse(outcome);
|
|
102
|
+
if (message.phase !== 'sending' || message.claimId === null)
|
|
103
|
+
throw new ResidentConflictError();
|
|
104
|
+
if (checked.kind === 'not-accepted' && checked.retryAt !== null && checked.retryAt <= now)
|
|
105
|
+
throw new TypeError('A delivery retry must be scheduled in the future.');
|
|
106
|
+
return Object.freeze(residentOutboxMessageSchema.parse({
|
|
107
|
+
...message,
|
|
108
|
+
revision: message.revision + 1,
|
|
109
|
+
claimId: null,
|
|
110
|
+
...(checked.kind === 'acknowledged'
|
|
111
|
+
? { phase: 'acknowledged', receiptId: checked.receiptId, acknowledgedAt: now }
|
|
112
|
+
: {
|
|
113
|
+
phase: checked.retryAt === null ? 'cancelled' : 'pending',
|
|
114
|
+
nextAttemptAt: checked.retryAt,
|
|
115
|
+
lastReason: checked.reason,
|
|
116
|
+
}),
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
function admission(gate, message, now) {
|
|
120
|
+
const result = gate(message, now);
|
|
121
|
+
if (result.allow === true)
|
|
122
|
+
return result;
|
|
123
|
+
if (result.allow !== false ||
|
|
124
|
+
typeof result.reason !== 'string' ||
|
|
125
|
+
!result.reason.trim() ||
|
|
126
|
+
result.reason.trim().length > 1_000)
|
|
127
|
+
throw new TypeError('Invalid resident delivery gate result.');
|
|
128
|
+
if (result.nextCheckAt !== null) {
|
|
129
|
+
time.parse(result.nextCheckAt);
|
|
130
|
+
if (result.nextCheckAt <= now)
|
|
131
|
+
throw new TypeError('Delivery gate must defer into the future.');
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* @experimental Persist one send claim before calling a host-owned transport.
|
|
137
|
+
* Throws, malformed outcomes and cancellation keep the claim unresolved. Stop
|
|
138
|
+
* old executors and inspect effects before explicit settleMessage reconciliation.
|
|
139
|
+
*/
|
|
140
|
+
export async function deliverResidentMessage(store, transport, options) {
|
|
141
|
+
const { signal, gate } = options;
|
|
142
|
+
const clock = options.now ?? Date.now;
|
|
143
|
+
const now = () => time.parse(clock());
|
|
144
|
+
signal.throwIfAborted();
|
|
145
|
+
const state = await store.read();
|
|
146
|
+
signal.throwIfAborted();
|
|
147
|
+
if (!state)
|
|
148
|
+
throw new Error('Create the resident agenda before delivering messages.');
|
|
149
|
+
const idle = (reason, nextCheckAt = null) => ({ status: 'idle', reason, nextCheckAt });
|
|
150
|
+
if (state.paused)
|
|
151
|
+
return idle('paused');
|
|
152
|
+
const messages = state.outbox ?? [];
|
|
153
|
+
if (messages.some((message) => message.phase === 'sending'))
|
|
154
|
+
return idle('unresolved');
|
|
155
|
+
const pending = messages.filter((message) => message.phase === 'pending');
|
|
156
|
+
if (!pending.length)
|
|
157
|
+
return idle('empty');
|
|
158
|
+
let nextCheckAt = null;
|
|
159
|
+
let gated = false;
|
|
160
|
+
const at = now();
|
|
161
|
+
for (const message of pending.sort((a, b) => (a.nextAttemptAt ?? 0) - (b.nextAttemptAt ?? 0) || a.id.localeCompare(b.id))) {
|
|
162
|
+
if (message.nextAttemptAt !== null && message.nextAttemptAt > at) {
|
|
163
|
+
nextCheckAt = Math.min(nextCheckAt ?? Number.POSITIVE_INFINITY, message.nextAttemptAt);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
const permission = admission(gate, message, at);
|
|
167
|
+
signal.throwIfAborted();
|
|
168
|
+
if (!permission.allow) {
|
|
169
|
+
gated = true;
|
|
170
|
+
if (permission.nextCheckAt !== null)
|
|
171
|
+
nextCheckAt = Math.min(nextCheckAt ?? Number.POSITIVE_INFINITY, permission.nextCheckAt);
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
let claimed;
|
|
175
|
+
try {
|
|
176
|
+
claimed = await store.claimMessage(state, message.id, now());
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error instanceof ResidentConflictError)
|
|
180
|
+
return idle('contended');
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
signal.throwIfAborted();
|
|
184
|
+
const fresh = await store.read();
|
|
185
|
+
signal.throwIfAborted();
|
|
186
|
+
const current = fresh?.outbox?.find((item) => item.id === claimed.id);
|
|
187
|
+
if (!current || current.revision !== claimed.revision || current.claimId !== claimed.claimId)
|
|
188
|
+
return idle('contended');
|
|
189
|
+
// A pause or closing window during admission must not start the transport.
|
|
190
|
+
const checkedAt = now();
|
|
191
|
+
const permissionNow = fresh?.paused
|
|
192
|
+
? {
|
|
193
|
+
allow: false,
|
|
194
|
+
nextCheckAt: checkedAt + 1,
|
|
195
|
+
reason: 'Resident agenda paused before send.',
|
|
196
|
+
}
|
|
197
|
+
: admission(gate, claimed, checkedAt);
|
|
198
|
+
if (!permissionNow.allow) {
|
|
199
|
+
// Transport has not been entered: scheduling another check has no remote effect.
|
|
200
|
+
await store.settleMessage(claimed, {
|
|
201
|
+
kind: 'not-accepted',
|
|
202
|
+
retryAt: permissionNow.nextCheckAt ?? checkedAt + 1,
|
|
203
|
+
reason: permissionNow.reason,
|
|
204
|
+
}, checkedAt);
|
|
205
|
+
return idle(fresh?.paused ? 'paused' : 'window', permissionNow.nextCheckAt);
|
|
206
|
+
}
|
|
207
|
+
signal.throwIfAborted();
|
|
208
|
+
const outcome = await transport(claimed, signal);
|
|
209
|
+
signal.throwIfAborted();
|
|
210
|
+
return { status: 'settled', message: await store.settleMessage(claimed, outcome, now()) };
|
|
211
|
+
}
|
|
212
|
+
return idle(gated ? 'window' : 'not-due', nextCheckAt);
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=outbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../../src/manager/resident/outbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ResidentAgendaState } from './agenda.js';
|
|
3
|
+
export declare const residentProposalSchema: z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
parentId: z.ZodString;
|
|
6
|
+
parentRevision: z.ZodNumber;
|
|
7
|
+
domain: z.ZodEffects<z.ZodString, string, string>;
|
|
8
|
+
objective: z.ZodString;
|
|
9
|
+
reason: z.ZodString;
|
|
10
|
+
evidenceKey: z.ZodString;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
parentId: string;
|
|
13
|
+
id: string;
|
|
14
|
+
reason: string;
|
|
15
|
+
domain: string;
|
|
16
|
+
objective: string;
|
|
17
|
+
evidenceKey: string;
|
|
18
|
+
parentRevision: number;
|
|
19
|
+
}, {
|
|
20
|
+
parentId: string;
|
|
21
|
+
id: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
domain: string;
|
|
24
|
+
objective: string;
|
|
25
|
+
evidenceKey: string;
|
|
26
|
+
parentRevision: number;
|
|
27
|
+
}>;
|
|
28
|
+
export declare const residentProposalLimitsSchema: z.ZodObject<{
|
|
29
|
+
domains: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
|
|
30
|
+
maxChildrenPerParent: z.ZodNumber;
|
|
31
|
+
maxDepth: z.ZodNumber;
|
|
32
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
|
+
maxDepth: number;
|
|
34
|
+
domains: string[];
|
|
35
|
+
maxChildrenPerParent: number;
|
|
36
|
+
}, {
|
|
37
|
+
maxDepth: number;
|
|
38
|
+
domains: string[];
|
|
39
|
+
maxChildrenPerParent: number;
|
|
40
|
+
}>;
|
|
41
|
+
/** @experimental An inert subgoal proposal; creating it grants no execution authority. */
|
|
42
|
+
export interface ResidentProposal {
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly parentId: string;
|
|
45
|
+
readonly parentRevision: number;
|
|
46
|
+
readonly domain: string;
|
|
47
|
+
readonly objective: string;
|
|
48
|
+
readonly reason: string;
|
|
49
|
+
readonly evidenceKey: string;
|
|
50
|
+
}
|
|
51
|
+
/** @experimental Host-approved routing domains and finite subgoal admission bounds. */
|
|
52
|
+
export interface ResidentProposalLimits {
|
|
53
|
+
readonly domains: readonly string[];
|
|
54
|
+
readonly maxChildrenPerParent: number;
|
|
55
|
+
readonly maxDepth: number;
|
|
56
|
+
}
|
|
57
|
+
/** Persisted provenance shared with the agenda's schema validation. */
|
|
58
|
+
export declare const residentProposalOriginSchema: z.ZodObject<{
|
|
59
|
+
proposalId: z.ZodString;
|
|
60
|
+
parentId: z.ZodString;
|
|
61
|
+
parentRevision: z.ZodNumber;
|
|
62
|
+
domain: z.ZodEffects<z.ZodString, string, string>;
|
|
63
|
+
reason: z.ZodString;
|
|
64
|
+
evidenceKey: z.ZodString;
|
|
65
|
+
depth: z.ZodNumber;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
parentId: string;
|
|
68
|
+
reason: string;
|
|
69
|
+
depth: number;
|
|
70
|
+
domain: string;
|
|
71
|
+
evidenceKey: string;
|
|
72
|
+
parentRevision: number;
|
|
73
|
+
proposalId: string;
|
|
74
|
+
}, {
|
|
75
|
+
parentId: string;
|
|
76
|
+
reason: string;
|
|
77
|
+
depth: number;
|
|
78
|
+
domain: string;
|
|
79
|
+
evidenceKey: string;
|
|
80
|
+
parentRevision: number;
|
|
81
|
+
proposalId: string;
|
|
82
|
+
}>;
|
|
83
|
+
/** @experimental Host-admitted ancestry and evidence for a resident subgoal. */
|
|
84
|
+
export type ResidentProposalOrigin = Readonly<z.infer<typeof residentProposalOriginSchema>>;
|
|
85
|
+
/**
|
|
86
|
+
* @experimental Pure validation against one agenda snapshot. The host must
|
|
87
|
+
* atomically bind this snapshot to admission. Domains are routing metadata;
|
|
88
|
+
* this does not prove an objective fits its domain or authorize any tools.
|
|
89
|
+
*/
|
|
90
|
+
export declare function validateResidentProposal(agenda: ResidentAgendaState, input: ResidentProposal, limits: ResidentProposalLimits): ResidentProposalOrigin;
|
|
91
|
+
//# sourceMappingURL=proposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAYtD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAQjC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;EAIvC,CAAA;AAEF,0FAA0F;AAC1F,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC5B;AAED,uFAAuF;AACvF,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,uEAAuE;AACvE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;EAQvC,CAAA;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAA;AAE3F;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,sBAAsB,GAC5B,sBAAsB,CAkCxB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const identifier = z.string().uuid();
|
|
3
|
+
const revision = z.number().int().positive().safe();
|
|
4
|
+
const domain = z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.max(120)
|
|
8
|
+
.refine((value) => value.trim().length > 0, 'A proposal domain must contain text.');
|
|
9
|
+
const reason = z.string().trim().min(1).max(1_000);
|
|
10
|
+
const evidenceKey = z.string().trim().min(1).max(256);
|
|
11
|
+
export const residentProposalSchema = z.object({
|
|
12
|
+
id: identifier,
|
|
13
|
+
parentId: identifier,
|
|
14
|
+
parentRevision: revision,
|
|
15
|
+
domain,
|
|
16
|
+
objective: z.string().trim().min(1).max(8_000),
|
|
17
|
+
reason,
|
|
18
|
+
evidenceKey,
|
|
19
|
+
});
|
|
20
|
+
export const residentProposalLimitsSchema = z.object({
|
|
21
|
+
domains: z.array(domain).min(1),
|
|
22
|
+
maxChildrenPerParent: z.number().int().min(1).max(8),
|
|
23
|
+
maxDepth: z.number().int().min(1).max(4),
|
|
24
|
+
});
|
|
25
|
+
/** Persisted provenance shared with the agenda's schema validation. */
|
|
26
|
+
export const residentProposalOriginSchema = z.object({
|
|
27
|
+
proposalId: identifier,
|
|
28
|
+
parentId: identifier,
|
|
29
|
+
parentRevision: revision,
|
|
30
|
+
domain,
|
|
31
|
+
reason,
|
|
32
|
+
evidenceKey,
|
|
33
|
+
depth: z.number().int().min(1).max(4),
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* @experimental Pure validation against one agenda snapshot. The host must
|
|
37
|
+
* atomically bind this snapshot to admission. Domains are routing metadata;
|
|
38
|
+
* this does not prove an objective fits its domain or authorize any tools.
|
|
39
|
+
*/
|
|
40
|
+
export function validateResidentProposal(agenda, input, limits) {
|
|
41
|
+
const proposal = residentProposalSchema.parse(input);
|
|
42
|
+
const policy = residentProposalLimitsSchema.parse(limits);
|
|
43
|
+
if (agenda.paused)
|
|
44
|
+
throw new Error('A paused agenda cannot admit resident proposals.');
|
|
45
|
+
if (agenda.pursuits.length >= 32)
|
|
46
|
+
throw new Error('Resident agenda pursuit bound reached.');
|
|
47
|
+
if (agenda.pursuits.some((pursuit) => pursuit.origin?.proposalId === proposal.id))
|
|
48
|
+
throw new Error('Resident proposal has already been admitted.');
|
|
49
|
+
const parent = agenda.pursuits.find((pursuit) => pursuit.id === proposal.parentId);
|
|
50
|
+
if (!parent)
|
|
51
|
+
throw new Error('Unknown resident proposal parent.');
|
|
52
|
+
if (parent.state.revision !== proposal.parentRevision)
|
|
53
|
+
throw new Error('Resident proposal parent revision is stale.');
|
|
54
|
+
if (parent.state.phase !== 'waiting' && parent.state.phase !== 'complete')
|
|
55
|
+
throw new Error('Resident proposal parent must be waiting or complete.');
|
|
56
|
+
if (!policy.domains.includes(proposal.domain))
|
|
57
|
+
throw new Error('Resident proposal domain is not host-approved.');
|
|
58
|
+
if (agenda.pursuits.filter((pursuit) => pursuit.origin?.parentId === parent.id).length +
|
|
59
|
+
(parent.retiredChildren ?? 0) >=
|
|
60
|
+
policy.maxChildrenPerParent)
|
|
61
|
+
throw new Error('Resident proposal parent child bound reached.');
|
|
62
|
+
const depth = (parent.origin?.depth ?? 0) + 1;
|
|
63
|
+
if (depth > policy.maxDepth)
|
|
64
|
+
throw new Error('Resident proposal depth bound reached.');
|
|
65
|
+
return Object.freeze(residentProposalOriginSchema.parse({
|
|
66
|
+
proposalId: proposal.id,
|
|
67
|
+
parentId: proposal.parentId,
|
|
68
|
+
parentRevision: proposal.parentRevision,
|
|
69
|
+
domain: proposal.domain,
|
|
70
|
+
reason: proposal.reason,
|
|
71
|
+
evidenceKey: proposal.evidenceKey,
|
|
72
|
+
depth,
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=proposal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../../src/manager/resident/proposal.ts"],"names":[],"mappings":"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"}
|