@sema-ai/core 1.275.1
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 +5433 -0
- package/LICENSE +27 -0
- package/NOTICE.md +30 -0
- package/README.md +1040 -0
- package/dist/agents/agent-definition.d.ts +10 -0
- package/dist/agents/agent-definition.d.ts.map +1 -0
- package/dist/agents/agent-definition.js +18 -0
- package/dist/agents/agent-definition.js.map +1 -0
- package/dist/agents/builtin-agents.d.ts +69 -0
- package/dist/agents/builtin-agents.d.ts.map +1 -0
- package/dist/agents/builtin-agents.js +177 -0
- package/dist/agents/builtin-agents.js.map +1 -0
- package/dist/agents/cascade.d.ts +101 -0
- package/dist/agents/cascade.d.ts.map +1 -0
- package/dist/agents/cascade.js +189 -0
- package/dist/agents/cascade.js.map +1 -0
- package/dist/agents/observer.d.ts +209 -0
- package/dist/agents/observer.d.ts.map +1 -0
- package/dist/agents/observer.js +495 -0
- package/dist/agents/observer.js.map +1 -0
- package/dist/agents/repair-loop.d.ts +236 -0
- package/dist/agents/repair-loop.d.ts.map +1 -0
- package/dist/agents/repair-loop.js +293 -0
- package/dist/agents/repair-loop.js.map +1 -0
- package/dist/agents/session-util.d.ts +8 -0
- package/dist/agents/session-util.d.ts.map +1 -0
- package/dist/agents/session-util.js +9 -0
- package/dist/agents/session-util.js.map +1 -0
- package/dist/agents/subagent-steps.d.ts +93 -0
- package/dist/agents/subagent-steps.d.ts.map +1 -0
- package/dist/agents/subagent-steps.js +206 -0
- package/dist/agents/subagent-steps.js.map +1 -0
- package/dist/agents/subagent.d.ts +441 -0
- package/dist/agents/subagent.d.ts.map +1 -0
- package/dist/agents/subagent.js +2492 -0
- package/dist/agents/subagent.js.map +1 -0
- package/dist/agents/suspend-guard.d.ts +35 -0
- package/dist/agents/suspend-guard.d.ts.map +1 -0
- package/dist/agents/suspend-guard.js +48 -0
- package/dist/agents/suspend-guard.js.map +1 -0
- package/dist/agents/teacher.d.ts +137 -0
- package/dist/agents/teacher.d.ts.map +1 -0
- package/dist/agents/teacher.js +575 -0
- package/dist/agents/teacher.js.map +1 -0
- package/dist/agents/team.d.ts +211 -0
- package/dist/agents/team.d.ts.map +1 -0
- package/dist/agents/team.js +293 -0
- package/dist/agents/team.js.map +1 -0
- package/dist/agents/tool-filter.d.ts +29 -0
- package/dist/agents/tool-filter.d.ts.map +1 -0
- package/dist/agents/tool-filter.js +50 -0
- package/dist/agents/tool-filter.js.map +1 -0
- package/dist/agents/verify.d.ts +177 -0
- package/dist/agents/verify.d.ts.map +1 -0
- package/dist/agents/verify.js +305 -0
- package/dist/agents/verify.js.map +1 -0
- package/dist/bench/metrics.d.ts +714 -0
- package/dist/bench/metrics.d.ts.map +1 -0
- package/dist/bench/metrics.js +618 -0
- package/dist/bench/metrics.js.map +1 -0
- package/dist/bin/sema-tb.d.ts +3 -0
- package/dist/bin/sema-tb.d.ts.map +1 -0
- package/dist/bin/sema-tb.js +516 -0
- package/dist/bin/sema-tb.js.map +1 -0
- package/dist/bin/tb-env.d.ts +13 -0
- package/dist/bin/tb-env.d.ts.map +1 -0
- package/dist/bin/tb-env.js +26 -0
- package/dist/bin/tb-env.js.map +1 -0
- package/dist/brain/anthropic.d.ts +46 -0
- package/dist/brain/anthropic.d.ts.map +1 -0
- package/dist/brain/anthropic.js +830 -0
- package/dist/brain/anthropic.js.map +1 -0
- package/dist/brain/circuit-breaker.d.ts +46 -0
- package/dist/brain/circuit-breaker.d.ts.map +1 -0
- package/dist/brain/circuit-breaker.js +173 -0
- package/dist/brain/circuit-breaker.js.map +1 -0
- package/dist/brain/degrading.d.ts +98 -0
- package/dist/brain/degrading.d.ts.map +1 -0
- package/dist/brain/degrading.js +249 -0
- package/dist/brain/degrading.js.map +1 -0
- package/dist/brain/errors.d.ts +31 -0
- package/dist/brain/errors.d.ts.map +1 -0
- package/dist/brain/errors.js +58 -0
- package/dist/brain/errors.js.map +1 -0
- package/dist/brain/failover.d.ts +18 -0
- package/dist/brain/failover.d.ts.map +1 -0
- package/dist/brain/failover.js +118 -0
- package/dist/brain/failover.js.map +1 -0
- package/dist/brain/model-presets.d.ts +36 -0
- package/dist/brain/model-presets.d.ts.map +1 -0
- package/dist/brain/model-presets.js +54 -0
- package/dist/brain/model-presets.js.map +1 -0
- package/dist/brain/openai.d.ts +43 -0
- package/dist/brain/openai.d.ts.map +1 -0
- package/dist/brain/openai.js +784 -0
- package/dist/brain/openai.js.map +1 -0
- package/dist/brain/reasoning.d.ts +138 -0
- package/dist/brain/reasoning.d.ts.map +1 -0
- package/dist/brain/reasoning.js +146 -0
- package/dist/brain/reasoning.js.map +1 -0
- package/dist/brain/repetition.d.ts +60 -0
- package/dist/brain/repetition.d.ts.map +1 -0
- package/dist/brain/repetition.js +121 -0
- package/dist/brain/repetition.js.map +1 -0
- package/dist/brain/request-params.d.ts +29 -0
- package/dist/brain/request-params.d.ts.map +1 -0
- package/dist/brain/request-params.js +78 -0
- package/dist/brain/request-params.js.map +1 -0
- package/dist/brain/retry.d.ts +18 -0
- package/dist/brain/retry.d.ts.map +1 -0
- package/dist/brain/retry.js +42 -0
- package/dist/brain/retry.js.map +1 -0
- package/dist/brain/routing.d.ts +19 -0
- package/dist/brain/routing.d.ts.map +1 -0
- package/dist/brain/routing.js +44 -0
- package/dist/brain/routing.js.map +1 -0
- package/dist/brain/status-sink.d.ts +46 -0
- package/dist/brain/status-sink.d.ts.map +1 -0
- package/dist/brain/status-sink.js +36 -0
- package/dist/brain/status-sink.js.map +1 -0
- package/dist/brain/stream-engine.d.ts +85 -0
- package/dist/brain/stream-engine.d.ts.map +1 -0
- package/dist/brain/stream-engine.js +391 -0
- package/dist/brain/stream-engine.js.map +1 -0
- package/dist/brain/timeout.d.ts +44 -0
- package/dist/brain/timeout.d.ts.map +1 -0
- package/dist/brain/timeout.js +41 -0
- package/dist/brain/timeout.js.map +1 -0
- package/dist/brain/tool-call-repair.d.ts +15 -0
- package/dist/brain/tool-call-repair.d.ts.map +1 -0
- package/dist/brain/tool-call-repair.js +67 -0
- package/dist/brain/tool-call-repair.js.map +1 -0
- package/dist/brain/walltime.d.ts +14 -0
- package/dist/brain/walltime.d.ts.map +1 -0
- package/dist/brain/walltime.js +14 -0
- package/dist/brain/walltime.js.map +1 -0
- package/dist/core/arg-summary.d.ts +19 -0
- package/dist/core/arg-summary.d.ts.map +1 -0
- package/dist/core/arg-summary.js +96 -0
- package/dist/core/arg-summary.js.map +1 -0
- package/dist/core/ask-question.d.ts +113 -0
- package/dist/core/ask-question.d.ts.map +1 -0
- package/dist/core/ask-question.js +246 -0
- package/dist/core/ask-question.js.map +1 -0
- package/dist/core/auto-compaction.d.ts +341 -0
- package/dist/core/auto-compaction.d.ts.map +1 -0
- package/dist/core/auto-compaction.js +495 -0
- package/dist/core/auto-compaction.js.map +1 -0
- package/dist/core/auto-promote.d.ts +126 -0
- package/dist/core/auto-promote.d.ts.map +1 -0
- package/dist/core/auto-promote.js +171 -0
- package/dist/core/auto-promote.js.map +1 -0
- package/dist/core/background-shell.d.ts +128 -0
- package/dist/core/background-shell.d.ts.map +1 -0
- package/dist/core/background-shell.js +42 -0
- package/dist/core/background-shell.js.map +1 -0
- package/dist/core/cache-break-detector.d.ts +63 -0
- package/dist/core/cache-break-detector.d.ts.map +1 -0
- package/dist/core/cache-break-detector.js +0 -0
- package/dist/core/cache-break-detector.js.map +1 -0
- package/dist/core/canonical-json.d.ts +45 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +132 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/checkpoint-store.d.ts +1101 -0
- package/dist/core/checkpoint-store.d.ts.map +1 -0
- package/dist/core/checkpoint-store.js +514 -0
- package/dist/core/checkpoint-store.js.map +1 -0
- package/dist/core/consolidate-scope.d.ts +94 -0
- package/dist/core/consolidate-scope.d.ts.map +1 -0
- package/dist/core/consolidate-scope.js +158 -0
- package/dist/core/consolidate-scope.js.map +1 -0
- package/dist/core/context-edit.d.ts +82 -0
- package/dist/core/context-edit.d.ts.map +1 -0
- package/dist/core/context-edit.js +149 -0
- package/dist/core/context-edit.js.map +1 -0
- package/dist/core/context-guard.d.ts +43 -0
- package/dist/core/context-guard.d.ts.map +1 -0
- package/dist/core/context-guard.js +171 -0
- package/dist/core/context-guard.js.map +1 -0
- package/dist/core/dynamic-recall.d.ts +100 -0
- package/dist/core/dynamic-recall.d.ts.map +1 -0
- package/dist/core/dynamic-recall.js +108 -0
- package/dist/core/dynamic-recall.js.map +1 -0
- package/dist/core/exec-gate.d.ts +74 -0
- package/dist/core/exec-gate.d.ts.map +1 -0
- package/dist/core/exec-gate.js +143 -0
- package/dist/core/exec-gate.js.map +1 -0
- package/dist/core/exec-output-tail.d.ts +37 -0
- package/dist/core/exec-output-tail.d.ts.map +1 -0
- package/dist/core/exec-output-tail.js +63 -0
- package/dist/core/exec-output-tail.js.map +1 -0
- package/dist/core/file-snapshot-store.d.ts +137 -0
- package/dist/core/file-snapshot-store.d.ts.map +1 -0
- package/dist/core/file-snapshot-store.js +319 -0
- package/dist/core/file-snapshot-store.js.map +1 -0
- package/dist/core/git-worktree-env.d.ts +41 -0
- package/dist/core/git-worktree-env.d.ts.map +1 -0
- package/dist/core/git-worktree-env.js +64 -0
- package/dist/core/git-worktree-env.js.map +1 -0
- package/dist/core/hooks.d.ts +372 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +269 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/lsp-diagnostics.d.ts +74 -0
- package/dist/core/lsp-diagnostics.d.ts.map +1 -0
- package/dist/core/lsp-diagnostics.js +125 -0
- package/dist/core/lsp-diagnostics.js.map +1 -0
- package/dist/core/lsp-protocol.d.ts +28 -0
- package/dist/core/lsp-protocol.d.ts.map +1 -0
- package/dist/core/lsp-protocol.js +179 -0
- package/dist/core/lsp-protocol.js.map +1 -0
- package/dist/core/lsp-session.d.ts +56 -0
- package/dist/core/lsp-session.d.ts.map +1 -0
- package/dist/core/lsp-session.js +185 -0
- package/dist/core/lsp-session.js.map +1 -0
- package/dist/core/lsp.d.ts +132 -0
- package/dist/core/lsp.d.ts.map +1 -0
- package/dist/core/lsp.js +147 -0
- package/dist/core/lsp.js.map +1 -0
- package/dist/core/mcp.d.ts +294 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +992 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/media-byte-cap.d.ts +34 -0
- package/dist/core/media-byte-cap.d.ts.map +1 -0
- package/dist/core/media-byte-cap.js +76 -0
- package/dist/core/media-byte-cap.js.map +1 -0
- package/dist/core/memory-engine/data-plane.d.ts +103 -0
- package/dist/core/memory-engine/data-plane.d.ts.map +1 -0
- package/dist/core/memory-engine/data-plane.js +272 -0
- package/dist/core/memory-engine/data-plane.js.map +1 -0
- package/dist/core/memory-engine/dual-root.d.ts +40 -0
- package/dist/core/memory-engine/dual-root.d.ts.map +1 -0
- package/dist/core/memory-engine/dual-root.js +95 -0
- package/dist/core/memory-engine/dual-root.js.map +1 -0
- package/dist/core/memory-engine/engine.d.ts +161 -0
- package/dist/core/memory-engine/engine.d.ts.map +1 -0
- package/dist/core/memory-engine/engine.js +1110 -0
- package/dist/core/memory-engine/engine.js.map +1 -0
- package/dist/core/memory-engine/file-backend.d.ts +162 -0
- package/dist/core/memory-engine/file-backend.d.ts.map +1 -0
- package/dist/core/memory-engine/file-backend.js +948 -0
- package/dist/core/memory-engine/file-backend.js.map +1 -0
- package/dist/core/memory-engine/frontmatter.d.ts +24 -0
- package/dist/core/memory-engine/frontmatter.d.ts.map +1 -0
- package/dist/core/memory-engine/frontmatter.js +135 -0
- package/dist/core/memory-engine/frontmatter.js.map +1 -0
- package/dist/core/memory-engine/index.d.ts +13 -0
- package/dist/core/memory-engine/index.d.ts.map +1 -0
- package/dist/core/memory-engine/index.js +28 -0
- package/dist/core/memory-engine/index.js.map +1 -0
- package/dist/core/memory-engine/layout.d.ts +123 -0
- package/dist/core/memory-engine/layout.d.ts.map +1 -0
- package/dist/core/memory-engine/layout.js +643 -0
- package/dist/core/memory-engine/layout.js.map +1 -0
- package/dist/core/memory-engine/memory-backend-contract.d.ts +22 -0
- package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -0
- package/dist/core/memory-engine/memory-backend-contract.js +271 -0
- package/dist/core/memory-engine/memory-backend-contract.js.map +1 -0
- package/dist/core/memory-engine/migrate.d.ts +17 -0
- package/dist/core/memory-engine/migrate.d.ts.map +1 -0
- package/dist/core/memory-engine/migrate.js +35 -0
- package/dist/core/memory-engine/migrate.js.map +1 -0
- package/dist/core/memory-engine/scan.d.ts +20 -0
- package/dist/core/memory-engine/scan.d.ts.map +1 -0
- package/dist/core/memory-engine/scan.js +84 -0
- package/dist/core/memory-engine/scan.js.map +1 -0
- package/dist/core/memory-engine/scope-contract.d.ts +104 -0
- package/dist/core/memory-engine/scope-contract.d.ts.map +1 -0
- package/dist/core/memory-engine/scope-contract.js +288 -0
- package/dist/core/memory-engine/scope-contract.js.map +1 -0
- package/dist/core/memory-engine/sync-client.d.ts +100 -0
- package/dist/core/memory-engine/sync-client.d.ts.map +1 -0
- package/dist/core/memory-engine/sync-client.js +328 -0
- package/dist/core/memory-engine/sync-client.js.map +1 -0
- package/dist/core/memory-engine/sync.d.ts +97 -0
- package/dist/core/memory-engine/sync.d.ts.map +1 -0
- package/dist/core/memory-engine/sync.js +91 -0
- package/dist/core/memory-engine/sync.js.map +1 -0
- package/dist/core/memory-engine/types.d.ts +279 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -0
- package/dist/core/memory-engine/types.js +9 -0
- package/dist/core/memory-engine/types.js.map +1 -0
- package/dist/core/memory-recall.d.ts +261 -0
- package/dist/core/memory-recall.d.ts.map +1 -0
- package/dist/core/memory-recall.js +600 -0
- package/dist/core/memory-recall.js.map +1 -0
- package/dist/core/memory-vector.d.ts +24 -0
- package/dist/core/memory-vector.d.ts.map +1 -0
- package/dist/core/memory-vector.js +51 -0
- package/dist/core/memory-vector.js.map +1 -0
- package/dist/core/memory.d.ts +502 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +881 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/message-utils.d.ts +7 -0
- package/dist/core/message-utils.d.ts.map +1 -0
- package/dist/core/message-utils.js +10 -0
- package/dist/core/message-utils.js.map +1 -0
- package/dist/core/oracle-isolation.d.ts +85 -0
- package/dist/core/oracle-isolation.d.ts.map +1 -0
- package/dist/core/oracle-isolation.js +121 -0
- package/dist/core/oracle-isolation.js.map +1 -0
- package/dist/core/permission-rules.d.ts +102 -0
- package/dist/core/permission-rules.d.ts.map +1 -0
- package/dist/core/permission-rules.js +357 -0
- package/dist/core/permission-rules.js.map +1 -0
- package/dist/core/present-plan-tool.d.ts +28 -0
- package/dist/core/present-plan-tool.d.ts.map +1 -0
- package/dist/core/present-plan-tool.js +119 -0
- package/dist/core/present-plan-tool.js.map +1 -0
- package/dist/core/pricing.d.ts +48 -0
- package/dist/core/pricing.d.ts.map +1 -0
- package/dist/core/pricing.js +46 -0
- package/dist/core/pricing.js.map +1 -0
- package/dist/core/property-harness.d.ts +126 -0
- package/dist/core/property-harness.d.ts.map +1 -0
- package/dist/core/property-harness.js +192 -0
- package/dist/core/property-harness.js.map +1 -0
- package/dist/core/push-queue.d.ts +10 -0
- package/dist/core/push-queue.d.ts.map +1 -0
- package/dist/core/push-queue.js +42 -0
- package/dist/core/push-queue.js.map +1 -0
- package/dist/core/remote-env.d.ts +432 -0
- package/dist/core/remote-env.d.ts.map +1 -0
- package/dist/core/remote-env.js +77 -0
- package/dist/core/remote-env.js.map +1 -0
- package/dist/core/roles.d.ts +74 -0
- package/dist/core/roles.d.ts.map +1 -0
- package/dist/core/roles.js +272 -0
- package/dist/core/roles.js.map +1 -0
- package/dist/core/runner/active-skill-scope.d.ts +64 -0
- package/dist/core/runner/active-skill-scope.d.ts.map +1 -0
- package/dist/core/runner/active-skill-scope.js +197 -0
- package/dist/core/runner/active-skill-scope.js.map +1 -0
- package/dist/core/runner/assemble-result.d.ts +191 -0
- package/dist/core/runner/assemble-result.d.ts.map +1 -0
- package/dist/core/runner/assemble-result.js +250 -0
- package/dist/core/runner/assemble-result.js.map +1 -0
- package/dist/core/runner/call-cap.d.ts +130 -0
- package/dist/core/runner/call-cap.d.ts.map +1 -0
- package/dist/core/runner/call-cap.js +151 -0
- package/dist/core/runner/call-cap.js.map +1 -0
- package/dist/core/runner/grounding-signal.d.ts +12 -0
- package/dist/core/runner/grounding-signal.d.ts.map +1 -0
- package/dist/core/runner/grounding-signal.js +94 -0
- package/dist/core/runner/grounding-signal.js.map +1 -0
- package/dist/core/runner/image.d.ts +23 -0
- package/dist/core/runner/image.d.ts.map +1 -0
- package/dist/core/runner/image.js +151 -0
- package/dist/core/runner/image.js.map +1 -0
- package/dist/core/runner/memory-consolidation.d.ts +112 -0
- package/dist/core/runner/memory-consolidation.d.ts.map +1 -0
- package/dist/core/runner/memory-consolidation.js +372 -0
- package/dist/core/runner/memory-consolidation.js.map +1 -0
- package/dist/core/runner/prepare-task.d.ts +583 -0
- package/dist/core/runner/prepare-task.d.ts.map +1 -0
- package/dist/core/runner/prepare-task.js +3612 -0
- package/dist/core/runner/prepare-task.js.map +1 -0
- package/dist/core/runner/prompt-suggestions.d.ts +33 -0
- package/dist/core/runner/prompt-suggestions.d.ts.map +1 -0
- package/dist/core/runner/prompt-suggestions.js +116 -0
- package/dist/core/runner/prompt-suggestions.js.map +1 -0
- package/dist/core/runner/runtask.d.ts +274 -0
- package/dist/core/runner/runtask.d.ts.map +1 -0
- package/dist/core/runner/runtask.js +4606 -0
- package/dist/core/runner/runtask.js.map +1 -0
- package/dist/core/runner/session-rule-policy.d.ts +28 -0
- package/dist/core/runner/session-rule-policy.d.ts.map +1 -0
- package/dist/core/runner/session-rule-policy.js +110 -0
- package/dist/core/runner/session-rule-policy.js.map +1 -0
- package/dist/core/runner/strict-output-schema.d.ts +36 -0
- package/dist/core/runner/strict-output-schema.d.ts.map +1 -0
- package/dist/core/runner/strict-output-schema.js +365 -0
- package/dist/core/runner/strict-output-schema.js.map +1 -0
- package/dist/core/runner/synthetic-tools.d.ts +72 -0
- package/dist/core/runner/synthetic-tools.d.ts.map +1 -0
- package/dist/core/runner/synthetic-tools.js +203 -0
- package/dist/core/runner/synthetic-tools.js.map +1 -0
- package/dist/core/runner/tool-disclosure.d.ts +117 -0
- package/dist/core/runner/tool-disclosure.d.ts.map +1 -0
- package/dist/core/runner/tool-disclosure.js +0 -0
- package/dist/core/runner/tool-disclosure.js.map +1 -0
- package/dist/core/runner/turn-attachments.d.ts +381 -0
- package/dist/core/runner/turn-attachments.d.ts.map +1 -0
- package/dist/core/runner/turn-attachments.js +596 -0
- package/dist/core/runner/turn-attachments.js.map +1 -0
- package/dist/core/runner/usage-accounting.d.ts +35 -0
- package/dist/core/runner/usage-accounting.d.ts.map +1 -0
- package/dist/core/runner/usage-accounting.js +45 -0
- package/dist/core/runner/usage-accounting.js.map +1 -0
- package/dist/core/runtime.d.ts +9 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +17 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/safety-axis-vocab.d.ts +33 -0
- package/dist/core/safety-axis-vocab.d.ts.map +1 -0
- package/dist/core/safety-axis-vocab.js +35 -0
- package/dist/core/safety-axis-vocab.js.map +1 -0
- package/dist/core/safety-merge-corpus.d.ts +48 -0
- package/dist/core/safety-merge-corpus.d.ts.map +1 -0
- package/dist/core/safety-merge-corpus.js +203 -0
- package/dist/core/safety-merge-corpus.js.map +1 -0
- package/dist/core/scheduler.d.ts +126 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +54 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/secret-env.d.ts +23 -0
- package/dist/core/secret-env.d.ts.map +1 -0
- package/dist/core/secret-env.js +35 -0
- package/dist/core/secret-env.js.map +1 -0
- package/dist/core/select-model.d.ts +26 -0
- package/dist/core/select-model.d.ts.map +1 -0
- package/dist/core/select-model.js +58 -0
- package/dist/core/select-model.js.map +1 -0
- package/dist/core/sensitive-path-policy.d.ts +24 -0
- package/dist/core/sensitive-path-policy.d.ts.map +1 -0
- package/dist/core/sensitive-path-policy.js +96 -0
- package/dist/core/sensitive-path-policy.js.map +1 -0
- package/dist/core/session-policy-store.d.ts +102 -0
- package/dist/core/session-policy-store.d.ts.map +1 -0
- package/dist/core/session-policy-store.js +177 -0
- package/dist/core/session-policy-store.js.map +1 -0
- package/dist/core/session-reconcile.d.ts +63 -0
- package/dist/core/session-reconcile.d.ts.map +1 -0
- package/dist/core/session-reconcile.js +71 -0
- package/dist/core/session-reconcile.js.map +1 -0
- package/dist/core/session-store.d.ts +99 -0
- package/dist/core/session-store.d.ts.map +1 -0
- package/dist/core/session-store.js +298 -0
- package/dist/core/session-store.js.map +1 -0
- package/dist/core/session.d.ts +144 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +56 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/spec-contract.d.ts +147 -0
- package/dist/core/spec-contract.d.ts.map +1 -0
- package/dist/core/spec-contract.js +340 -0
- package/dist/core/spec-contract.js.map +1 -0
- package/dist/core/strategy-store.d.ts +50 -0
- package/dist/core/strategy-store.d.ts.map +1 -0
- package/dist/core/strategy-store.js +100 -0
- package/dist/core/strategy-store.js.map +1 -0
- package/dist/core/stub-env.d.ts +35 -0
- package/dist/core/stub-env.d.ts.map +1 -0
- package/dist/core/stub-env.js +69 -0
- package/dist/core/stub-env.js.map +1 -0
- package/dist/core/task-notification.d.ts +115 -0
- package/dist/core/task-notification.d.ts.map +1 -0
- package/dist/core/task-notification.js +247 -0
- package/dist/core/task-notification.js.map +1 -0
- package/dist/core/task-outcome.d.ts +80 -0
- package/dist/core/task-outcome.d.ts.map +1 -0
- package/dist/core/task-outcome.js +40 -0
- package/dist/core/task-outcome.js.map +1 -0
- package/dist/core/task-registry.d.ts +349 -0
- package/dist/core/task-registry.d.ts.map +1 -0
- package/dist/core/task-registry.js +1751 -0
- package/dist/core/task-registry.js.map +1 -0
- package/dist/core/tighten-task-spec.d.ts +27 -0
- package/dist/core/tighten-task-spec.d.ts.map +1 -0
- package/dist/core/tighten-task-spec.js +95 -0
- package/dist/core/tighten-task-spec.js.map +1 -0
- package/dist/core/tool-detach.d.ts +31 -0
- package/dist/core/tool-detach.d.ts.map +1 -0
- package/dist/core/tool-detach.js +62 -0
- package/dist/core/tool-detach.js.map +1 -0
- package/dist/core/tool-errors.d.ts +72 -0
- package/dist/core/tool-errors.d.ts.map +1 -0
- package/dist/core/tool-errors.js +194 -0
- package/dist/core/tool-errors.js.map +1 -0
- package/dist/core/tool-name-aliases.d.ts +5 -0
- package/dist/core/tool-name-aliases.d.ts.map +1 -0
- package/dist/core/tool-name-aliases.js +130 -0
- package/dist/core/tool-name-aliases.js.map +1 -0
- package/dist/core/tool-policy.d.ts +295 -0
- package/dist/core/tool-policy.d.ts.map +1 -0
- package/dist/core/tool-policy.js +567 -0
- package/dist/core/tool-policy.js.map +1 -0
- package/dist/core/tool-result-budget.d.ts +44 -0
- package/dist/core/tool-result-budget.d.ts.map +1 -0
- package/dist/core/tool-result-budget.js +140 -0
- package/dist/core/tool-result-budget.js.map +1 -0
- package/dist/core/tool-result-store.d.ts +136 -0
- package/dist/core/tool-result-store.d.ts.map +1 -0
- package/dist/core/tool-result-store.js +219 -0
- package/dist/core/tool-result-store.js.map +1 -0
- package/dist/core/tools.d.ts +14 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +98 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/trace.d.ts +340 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +12 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/core/types.d.ts +2828 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/untrusted-egress.d.ts +32 -0
- package/dist/core/untrusted-egress.d.ts.map +1 -0
- package/dist/core/untrusted-egress.js +49 -0
- package/dist/core/untrusted-egress.js.map +1 -0
- package/dist/core/untrusted-text.d.ts +64 -0
- package/dist/core/untrusted-text.d.ts.map +1 -0
- package/dist/core/untrusted-text.js +119 -0
- package/dist/core/untrusted-text.js.map +1 -0
- package/dist/core/warm-resume.d.ts +23 -0
- package/dist/core/warm-resume.d.ts.map +1 -0
- package/dist/core/warm-resume.js +28 -0
- package/dist/core/warm-resume.js.map +1 -0
- package/dist/core/with-retry.d.ts +43 -0
- package/dist/core/with-retry.d.ts.map +1 -0
- package/dist/core/with-retry.js +59 -0
- package/dist/core/with-retry.js.map +1 -0
- package/dist/core/workflow-journal-store.d.ts +44 -0
- package/dist/core/workflow-journal-store.d.ts.map +1 -0
- package/dist/core/workflow-journal-store.js +47 -0
- package/dist/core/workflow-journal-store.js.map +1 -0
- package/dist/core/workflow-run-store-contract.d.ts +31 -0
- package/dist/core/workflow-run-store-contract.d.ts.map +1 -0
- package/dist/core/workflow-run-store-contract.js +191 -0
- package/dist/core/workflow-run-store-contract.js.map +1 -0
- package/dist/core/workflow-run-store.d.ts +149 -0
- package/dist/core/workflow-run-store.d.ts.map +1 -0
- package/dist/core/workflow-run-store.js +110 -0
- package/dist/core/workflow-run-store.js.map +1 -0
- package/dist/engine/compaction/compaction.d.ts +139 -0
- package/dist/engine/compaction/compaction.d.ts.map +1 -0
- package/dist/engine/compaction/compaction.js +1030 -0
- package/dist/engine/compaction/compaction.js.map +1 -0
- package/dist/engine/compaction/utils.d.ts +45 -0
- package/dist/engine/compaction/utils.d.ts.map +1 -0
- package/dist/engine/compaction/utils.js +203 -0
- package/dist/engine/compaction/utils.js.map +1 -0
- package/dist/engine/execution-env/kill-tree.d.ts +20 -0
- package/dist/engine/execution-env/kill-tree.d.ts.map +1 -0
- package/dist/engine/execution-env/kill-tree.js +183 -0
- package/dist/engine/execution-env/kill-tree.js.map +1 -0
- package/dist/engine/execution-env/node-execution-env.d.ts +133 -0
- package/dist/engine/execution-env/node-execution-env.d.ts.map +1 -0
- package/dist/engine/execution-env/node-execution-env.js +1031 -0
- package/dist/engine/execution-env/node-execution-env.js.map +1 -0
- package/dist/engine/harness/agent-harness.d.ts +174 -0
- package/dist/engine/harness/agent-harness.d.ts.map +1 -0
- package/dist/engine/harness/agent-harness.js +1053 -0
- package/dist/engine/harness/agent-harness.js.map +1 -0
- package/dist/engine/harness/messages.d.ts +17 -0
- package/dist/engine/harness/messages.d.ts.map +1 -0
- package/dist/engine/harness/messages.js +122 -0
- package/dist/engine/harness/messages.js.map +1 -0
- package/dist/engine/harness/types.d.ts +713 -0
- package/dist/engine/harness/types.d.ts.map +1 -0
- package/dist/engine/harness/types.js +100 -0
- package/dist/engine/harness/types.js.map +1 -0
- package/dist/engine/llm/diagnostics.d.ts +23 -0
- package/dist/engine/llm/diagnostics.d.ts.map +1 -0
- package/dist/engine/llm/diagnostics.js +32 -0
- package/dist/engine/llm/diagnostics.js.map +1 -0
- package/dist/engine/llm/event-stream.d.ts +25 -0
- package/dist/engine/llm/event-stream.d.ts.map +1 -0
- package/dist/engine/llm/event-stream.js +103 -0
- package/dist/engine/llm/event-stream.js.map +1 -0
- package/dist/engine/llm/index.d.ts +12 -0
- package/dist/engine/llm/index.d.ts.map +1 -0
- package/dist/engine/llm/index.js +12 -0
- package/dist/engine/llm/index.js.map +1 -0
- package/dist/engine/llm/types.d.ts +753 -0
- package/dist/engine/llm/types.d.ts.map +1 -0
- package/dist/engine/llm/types.js +2 -0
- package/dist/engine/llm/types.js.map +1 -0
- package/dist/engine/llm/validation.d.ts +8 -0
- package/dist/engine/llm/validation.d.ts.map +1 -0
- package/dist/engine/llm/validation.js +318 -0
- package/dist/engine/llm/validation.js.map +1 -0
- package/dist/engine/loop/agent-loop.d.ts +74 -0
- package/dist/engine/loop/agent-loop.d.ts.map +1 -0
- package/dist/engine/loop/agent-loop.js +1490 -0
- package/dist/engine/loop/agent-loop.js.map +1 -0
- package/dist/engine/loop/runtime-deps.d.ts +17 -0
- package/dist/engine/loop/runtime-deps.d.ts.map +1 -0
- package/dist/engine/loop/runtime-deps.js +21 -0
- package/dist/engine/loop/runtime-deps.js.map +1 -0
- package/dist/engine/loop/types.d.ts +609 -0
- package/dist/engine/loop/types.d.ts.map +1 -0
- package/dist/engine/loop/types.js +2 -0
- package/dist/engine/loop/types.js.map +1 -0
- package/dist/engine/lsp/frame-decoder.d.ts +16 -0
- package/dist/engine/lsp/frame-decoder.d.ts.map +1 -0
- package/dist/engine/lsp/frame-decoder.js +53 -0
- package/dist/engine/lsp/frame-decoder.js.map +1 -0
- package/dist/engine/lsp/node-lsp-manager.d.ts +105 -0
- package/dist/engine/lsp/node-lsp-manager.d.ts.map +1 -0
- package/dist/engine/lsp/node-lsp-manager.js +343 -0
- package/dist/engine/lsp/node-lsp-manager.js.map +1 -0
- package/dist/engine/lsp/stdio-lsp-transport.d.ts +37 -0
- package/dist/engine/lsp/stdio-lsp-transport.d.ts.map +1 -0
- package/dist/engine/lsp/stdio-lsp-transport.js +185 -0
- package/dist/engine/lsp/stdio-lsp-transport.js.map +1 -0
- package/dist/engine/session/import-validate.d.ts +44 -0
- package/dist/engine/session/import-validate.d.ts.map +1 -0
- package/dist/engine/session/import-validate.js +92 -0
- package/dist/engine/session/import-validate.js.map +1 -0
- package/dist/engine/session/memory-repo.d.ts +25 -0
- package/dist/engine/session/memory-repo.d.ts.map +1 -0
- package/dist/engine/session/memory-repo.js +59 -0
- package/dist/engine/session/memory-repo.js.map +1 -0
- package/dist/engine/session/memory-storage.d.ts +14 -0
- package/dist/engine/session/memory-storage.d.ts.map +1 -0
- package/dist/engine/session/memory-storage.js +17 -0
- package/dist/engine/session/memory-storage.js.map +1 -0
- package/dist/engine/session/repo-utils.d.ts +11 -0
- package/dist/engine/session/repo-utils.d.ts.map +1 -0
- package/dist/engine/session/repo-utils.js +40 -0
- package/dist/engine/session/repo-utils.js.map +1 -0
- package/dist/engine/session/session.d.ts +34 -0
- package/dist/engine/session/session.d.ts.map +1 -0
- package/dist/engine/session/session.js +227 -0
- package/dist/engine/session/session.js.map +1 -0
- package/dist/engine/session/storage-base.d.ts +38 -0
- package/dist/engine/session/storage-base.d.ts.map +1 -0
- package/dist/engine/session/storage-base.js +157 -0
- package/dist/engine/session/storage-base.js.map +1 -0
- package/dist/engine/session/timestamps.d.ts +3 -0
- package/dist/engine/session/timestamps.d.ts.map +1 -0
- package/dist/engine/session/timestamps.js +15 -0
- package/dist/engine/session/timestamps.js.map +1 -0
- package/dist/engine/session/uuid.d.ts +2 -0
- package/dist/engine/session/uuid.d.ts.map +1 -0
- package/dist/engine/session/uuid.js +50 -0
- package/dist/engine/session/uuid.js.map +1 -0
- package/dist/index.d.ts +160 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +374 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/harness.d.ts +26 -0
- package/dist/internal/harness.d.ts.map +1 -0
- package/dist/internal/harness.js +24 -0
- package/dist/internal/harness.js.map +1 -0
- package/dist/internal/llm.d.ts +9 -0
- package/dist/internal/llm.d.ts.map +1 -0
- package/dist/internal/llm.js +8 -0
- package/dist/internal/llm.js.map +1 -0
- package/dist/orchestration/builtin-workflows.d.ts +44 -0
- package/dist/orchestration/builtin-workflows.d.ts.map +1 -0
- package/dist/orchestration/builtin-workflows.js +165 -0
- package/dist/orchestration/builtin-workflows.js.map +1 -0
- package/dist/orchestration/dev-vm-script-runner.d.ts +24 -0
- package/dist/orchestration/dev-vm-script-runner.d.ts.map +1 -0
- package/dist/orchestration/dev-vm-script-runner.js +106 -0
- package/dist/orchestration/dev-vm-script-runner.js.map +1 -0
- package/dist/orchestration/goal.d.ts +97 -0
- package/dist/orchestration/goal.d.ts.map +1 -0
- package/dist/orchestration/goal.js +248 -0
- package/dist/orchestration/goal.js.map +1 -0
- package/dist/orchestration/run-spec.d.ts +63 -0
- package/dist/orchestration/run-spec.d.ts.map +1 -0
- package/dist/orchestration/run-spec.js +274 -0
- package/dist/orchestration/run-spec.js.map +1 -0
- package/dist/orchestration/run-workflow-tool.d.ts +187 -0
- package/dist/orchestration/run-workflow-tool.d.ts.map +1 -0
- package/dist/orchestration/run-workflow-tool.js +612 -0
- package/dist/orchestration/run-workflow-tool.js.map +1 -0
- package/dist/orchestration/workflow-governance.d.ts +70 -0
- package/dist/orchestration/workflow-governance.d.ts.map +1 -0
- package/dist/orchestration/workflow-governance.js +176 -0
- package/dist/orchestration/workflow-governance.js.map +1 -0
- package/dist/orchestration/workflow-meta.d.ts +41 -0
- package/dist/orchestration/workflow-meta.d.ts.map +1 -0
- package/dist/orchestration/workflow-meta.js +426 -0
- package/dist/orchestration/workflow-meta.js.map +1 -0
- package/dist/orchestration/workflow-observe.d.ts +77 -0
- package/dist/orchestration/workflow-observe.d.ts.map +1 -0
- package/dist/orchestration/workflow-observe.js +177 -0
- package/dist/orchestration/workflow-observe.js.map +1 -0
- package/dist/orchestration/workflow-primitives.d.ts +31 -0
- package/dist/orchestration/workflow-primitives.d.ts.map +1 -0
- package/dist/orchestration/workflow-primitives.js +104 -0
- package/dist/orchestration/workflow-primitives.js.map +1 -0
- package/dist/orchestration/workflow-sandbox-conformance.d.ts +34 -0
- package/dist/orchestration/workflow-sandbox-conformance.d.ts.map +1 -0
- package/dist/orchestration/workflow-sandbox-conformance.js +301 -0
- package/dist/orchestration/workflow-sandbox-conformance.js.map +1 -0
- package/dist/orchestration/workflow-script-runner.d.ts +127 -0
- package/dist/orchestration/workflow-script-runner.d.ts.map +1 -0
- package/dist/orchestration/workflow-script-runner.js +48 -0
- package/dist/orchestration/workflow-script-runner.js.map +1 -0
- package/dist/orchestration/workflow-script-store.d.ts +99 -0
- package/dist/orchestration/workflow-script-store.d.ts.map +1 -0
- package/dist/orchestration/workflow-script-store.js +133 -0
- package/dist/orchestration/workflow-script-store.js.map +1 -0
- package/dist/orchestration/workflow-size-guideline.d.ts +50 -0
- package/dist/orchestration/workflow-size-guideline.d.ts.map +1 -0
- package/dist/orchestration/workflow-size-guideline.js +78 -0
- package/dist/orchestration/workflow-size-guideline.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +624 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +1596 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/prompts/default.d.ts +474 -0
- package/dist/prompts/default.d.ts.map +1 -0
- package/dist/prompts/default.js +676 -0
- package/dist/prompts/default.js.map +1 -0
- package/dist/prompts/supervisor.d.ts +60 -0
- package/dist/prompts/supervisor.d.ts.map +1 -0
- package/dist/prompts/supervisor.js +162 -0
- package/dist/prompts/supervisor.js.map +1 -0
- package/dist/scenarios/env.d.ts +41 -0
- package/dist/scenarios/env.d.ts.map +1 -0
- package/dist/scenarios/env.js +65 -0
- package/dist/scenarios/env.js.map +1 -0
- package/dist/scenarios/full-body.d.ts +47 -0
- package/dist/scenarios/full-body.d.ts.map +1 -0
- package/dist/scenarios/full-body.js +36 -0
- package/dist/scenarios/full-body.js.map +1 -0
- package/dist/scenarios/scenario-registry.d.ts +107 -0
- package/dist/scenarios/scenario-registry.d.ts.map +1 -0
- package/dist/scenarios/scenario-registry.js +192 -0
- package/dist/scenarios/scenario-registry.js.map +1 -0
- package/dist/scenarios/teacher-quickstart.d.ts +41 -0
- package/dist/scenarios/teacher-quickstart.d.ts.map +1 -0
- package/dist/scenarios/teacher-quickstart.js +32 -0
- package/dist/scenarios/teacher-quickstart.js.map +1 -0
- package/dist/server/http.d.ts +36 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +144 -0
- package/dist/server/http.js.map +1 -0
- package/dist/stores/file/checkpoint-store.d.ts +62 -0
- package/dist/stores/file/checkpoint-store.d.ts.map +1 -0
- package/dist/stores/file/checkpoint-store.js +250 -0
- package/dist/stores/file/checkpoint-store.js.map +1 -0
- package/dist/stores/file/file-snapshot-store.d.ts +43 -0
- package/dist/stores/file/file-snapshot-store.d.ts.map +1 -0
- package/dist/stores/file/file-snapshot-store.js +374 -0
- package/dist/stores/file/file-snapshot-store.js.map +1 -0
- package/dist/stores/file/fs-atomic.d.ts +95 -0
- package/dist/stores/file/fs-atomic.d.ts.map +1 -0
- package/dist/stores/file/fs-atomic.js +415 -0
- package/dist/stores/file/fs-atomic.js.map +1 -0
- package/dist/stores/file/index.d.ts +98 -0
- package/dist/stores/file/index.d.ts.map +1 -0
- package/dist/stores/file/index.js +109 -0
- package/dist/stores/file/index.js.map +1 -0
- package/dist/stores/file/memory-store.d.ts +95 -0
- package/dist/stores/file/memory-store.d.ts.map +1 -0
- package/dist/stores/file/memory-store.js +393 -0
- package/dist/stores/file/memory-store.js.map +1 -0
- package/dist/stores/file/session-policy-store.d.ts +24 -0
- package/dist/stores/file/session-policy-store.d.ts.map +1 -0
- package/dist/stores/file/session-policy-store.js +123 -0
- package/dist/stores/file/session-policy-store.js.map +1 -0
- package/dist/stores/file/session-store.d.ts +34 -0
- package/dist/stores/file/session-store.d.ts.map +1 -0
- package/dist/stores/file/session-store.js +175 -0
- package/dist/stores/file/session-store.js.map +1 -0
- package/dist/stores/file/tool-result-store.d.ts +23 -0
- package/dist/stores/file/tool-result-store.d.ts.map +1 -0
- package/dist/stores/file/tool-result-store.js +61 -0
- package/dist/stores/file/tool-result-store.js.map +1 -0
- package/dist/stores/file/workflow-journal-store.d.ts +36 -0
- package/dist/stores/file/workflow-journal-store.d.ts.map +1 -0
- package/dist/stores/file/workflow-journal-store.js +157 -0
- package/dist/stores/file/workflow-journal-store.js.map +1 -0
- package/dist/stores/file/workflow-run-store.d.ts +58 -0
- package/dist/stores/file/workflow-run-store.d.ts.map +1 -0
- package/dist/stores/file/workflow-run-store.js +178 -0
- package/dist/stores/file/workflow-run-store.js.map +1 -0
- package/dist/stores/pg.d.ts +210 -0
- package/dist/stores/pg.d.ts.map +1 -0
- package/dist/stores/pg.js +652 -0
- package/dist/stores/pg.js.map +1 -0
- package/dist/tools/fs/encoding.d.ts +51 -0
- package/dist/tools/fs/encoding.d.ts.map +1 -0
- package/dist/tools/fs/encoding.js +74 -0
- package/dist/tools/fs/encoding.js.map +1 -0
- package/dist/tools/fs/gh-rate-limit.d.ts +19 -0
- package/dist/tools/fs/gh-rate-limit.d.ts.map +1 -0
- package/dist/tools/fs/gh-rate-limit.js +35 -0
- package/dist/tools/fs/gh-rate-limit.js.map +1 -0
- package/dist/tools/fs/index.d.ts +246 -0
- package/dist/tools/fs/index.d.ts.map +1 -0
- package/dist/tools/fs/index.js +2130 -0
- package/dist/tools/fs/index.js.map +1 -0
- package/dist/tools/fs/pdf.d.ts +106 -0
- package/dist/tools/fs/pdf.d.ts.map +1 -0
- package/dist/tools/fs/pdf.js +178 -0
- package/dist/tools/fs/pdf.js.map +1 -0
- package/dist/tools/fs/repo-map.d.ts +15 -0
- package/dist/tools/fs/repo-map.d.ts.map +1 -0
- package/dist/tools/fs/repo-map.js +251 -0
- package/dist/tools/fs/repo-map.js.map +1 -0
- package/dist/tools/fs/safety.d.ts +168 -0
- package/dist/tools/fs/safety.d.ts.map +1 -0
- package/dist/tools/fs/safety.js +479 -0
- package/dist/tools/fs/safety.js.map +1 -0
- package/dist/tools/fs/search.d.ts +118 -0
- package/dist/tools/fs/search.d.ts.map +1 -0
- package/dist/tools/fs/search.js +650 -0
- package/dist/tools/fs/search.js.map +1 -0
- package/dist/tools/gitea-issue.d.ts +39 -0
- package/dist/tools/gitea-issue.d.ts.map +1 -0
- package/dist/tools/gitea-issue.js +91 -0
- package/dist/tools/gitea-issue.js.map +1 -0
- package/dist/tools/monitor.d.ts +64 -0
- package/dist/tools/monitor.d.ts.map +1 -0
- package/dist/tools/monitor.js +135 -0
- package/dist/tools/monitor.js.map +1 -0
- package/dist/tools/scheduler-tools.d.ts +48 -0
- package/dist/tools/scheduler-tools.d.ts.map +1 -0
- package/dist/tools/scheduler-tools.js +449 -0
- package/dist/tools/scheduler-tools.js.map +1 -0
- package/dist/tools/sql-adapters.d.ts +32 -0
- package/dist/tools/sql-adapters.d.ts.map +1 -0
- package/dist/tools/sql-adapters.js +31 -0
- package/dist/tools/sql-adapters.js.map +1 -0
- package/dist/tools/sql.d.ts +36 -0
- package/dist/tools/sql.d.ts.map +1 -0
- package/dist/tools/sql.js +131 -0
- package/dist/tools/sql.js.map +1 -0
- package/dist/tools/task-list.d.ts +26 -0
- package/dist/tools/task-list.d.ts.map +1 -0
- package/dist/tools/task-list.js +352 -0
- package/dist/tools/task-list.js.map +1 -0
- package/dist/tools/todo.d.ts +11 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +126 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/tools/web.d.ts +59 -0
- package/dist/tools/web.d.ts.map +1 -0
- package/dist/tools/web.js +607 -0
- package/dist/tools/web.js.map +1 -0
- package/dist/tools/worktree.d.ts +88 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +434 -0
- package/dist/tools/worktree.js.map +1 -0
- package/docs/A1-ATTRIBUTION-ROUND1-2026-07-09.md +181 -0
- package/docs/AB-ORACLE-GATE-VERDICT-2026-07-10.md +100 -0
- package/docs/ANCHOR-GAP-INVENTORY-2026-07-09.md +143 -0
- package/docs/ARCHITECTURE.md +125 -0
- package/docs/BUGHUNT-2026-07-05-NIGHT.md +98 -0
- package/docs/BUILD.md +63 -0
- package/docs/CANCEL-ASYNC-ATTRIBUTION-2026-07-09.md +98 -0
- package/docs/CC-198-VS-201-DRIFT-2026-07-09.md +70 -0
- package/docs/CC-BASELINE-FAKE-ZERO-AUDIT-2026-07-09.md +51 -0
- package/docs/CC-DRIFT-198-206-AGENT-TYPES-2026-07-10.md +82 -0
- package/docs/CC-DRIFT-198-206-CHANGELOG-2026-07-10.md +82 -0
- package/docs/CC-DRIFT-198-206-REMINDERS-2026-07-10.md +96 -0
- package/docs/CC-DRIFT-198-206-ROADMAP-2026-07-10.md +110 -0
- package/docs/CC-DRIFT-198-206-TOOL-INVENTORY-2026-07-10.md +53 -0
- package/docs/CC-DRIFT-198-206-USAGE-CONSTANTS-2026-07-10.md +64 -0
- package/docs/CC-DRIFT-198-206-WORKFLOW-2026-07-10.md +83 -0
- package/docs/CC-PARITY-CHECKLIST.md +220 -0
- package/docs/CC-PARITY-DEEP-SWEEP-2026-07-07.md +149 -0
- package/docs/CC-SUBAGENT-PROMPT-STUDY-2026-07-09.md +219 -0
- package/docs/CC-TASK-REMINDER-CADENCE-STUDY-2026-07-09.md +396 -0
- package/docs/CC-TOOL-PARITY-SWEEP-2026-07.md +56 -0
- package/docs/CC-TOOL-PROMPT-DEEP-DIFF-2026-07-08.md +274 -0
- package/docs/CC-TOOLSURFACE-DEEP-DIVE-2026-07-07.md +197 -0
- package/docs/CC206-OBSERVER-ANCHORS-2026-07-11.md +463 -0
- package/docs/CC207-CORE-SWEEP-BACKLOG-2026-07-12.md +155 -0
- package/docs/CENTER-CONTROL-PLANE-SEAM.md +86 -0
- package/docs/CLEANUP-CONTRACT-ANCHOR-2026-07-09.md +83 -0
- package/docs/COLD-START-RSI-2026-07-09.md +72 -0
- package/docs/COMPACTION-LIVE-AUDIT-2026-07-09.md +114 -0
- package/docs/CONTEXT-lifecycle-extension-points-and-stop-attribution.md +71 -0
- package/docs/COREWARS-POLYGLOT-TRIAGE-2026-07-09.md +85 -0
- package/docs/DEADTARGET-OVERFULL-HBOX-2026-07-10.md +92 -0
- package/docs/DEADTARGET-PATH-TRACING-REVERSE-2026-07-10.md +87 -0
- package/docs/DEADTARGET-WINNING-AVG-COREWARS-2026-07-10.md +96 -0
- package/docs/DEEPSEEK-API-LIMITS-PROBE-2026-07-09.md +118 -0
- package/docs/DESIGN-140-MOCK-VERIFY-2026-07-11.md +79 -0
- package/docs/DESIGN-140-VERIFICATION-2026-07-11.md +43 -0
- package/docs/DESIGN-DRAFT-workflow-collab-2026-07-11.md +56 -0
- package/docs/DESIGN-ORACLE-GROUNDING-GATE-2026-07-10.md +167 -0
- package/docs/DESIGN-TFRAG-RECONCILE-SCAFFOLD-2026-07-09.md +102 -0
- package/docs/EXP-PA2-PE-DESIGN-2026-07-11.md +220 -0
- package/docs/EXT-DOGFOOD-2026-07-12.md +50 -0
- package/docs/FINAL-VERIFY-SURFACE-AUDIT-2026-07-09.md +44 -0
- package/docs/FRAG-RECON-INVESTIGATION-2026-07-09.md +183 -0
- package/docs/HANDOFF.md +121 -0
- package/docs/KNOWN-ISSUES.md +96 -0
- package/docs/LEGW-WINDOW-TAX-2026-07-10.md +82 -0
- package/docs/LIVE-PROBE-BATCH-2026-07-11.md +207 -0
- package/docs/M2-CERT-ATTRIBUTION-2026-07-10.md +61 -0
- package/docs/M25-LEG-VARIANCE-ATTRIBUTION-2026-07-10.md +81 -0
- package/docs/MAILMAN-TIMEOUT-ATTRIBUTION-2026-07-10.md +88 -0
- package/docs/MEMORY-BACKEND-DIALECT-NOTES.md +69 -0
- package/docs/MTEB-ESCAPE-HATCH-ATTRIBUTION-2026-07-09.md +57 -0
- package/docs/MTEB-LEADERBOARD-ATTRIBUTION-2026-07-10.md +134 -0
- package/docs/ORACLE-GATE-NEGATIVE-SAMPLE-2026-07-11.md +28 -0
- package/docs/PARITY-CONTEXT-TRANSACTIONS-2026-07-10.md +67 -0
- package/docs/PARITY-PROGRESS-MATRIX-2026-07-10.md +37 -0
- package/docs/PARITY-SPOT-AGENT-TYPES-2026-07-10.md +70 -0
- package/docs/PARITY-SPOT-REMINDERS-2026-07-10.md +144 -0
- package/docs/PARITY-SPOT-TOOL-INVENTORY-2026-07-10.md +61 -0
- package/docs/PARITY-SPOT-USAGE-CONSTANTS-2026-07-10.md +95 -0
- package/docs/PARITY-SPOT-WORKFLOW-2026-07-10.md +93 -0
- package/docs/PASSWORD-RECOVERY-PANEL-VERDICT-2026-07-10.md +62 -0
- package/docs/R8-R9-FINALIZE-COORDINATION-2026-07-09.md +124 -0
- package/docs/REPL-CODE-MODE-EVALUATION-2026-07-10.md +187 -0
- package/docs/REPORT-1249-TARGETED.md +48 -0
- package/docs/RESEARCH-3P-MEMORY-SWAP-2026-07-12.md +273 -0
- package/docs/ROADMAP.md +111 -0
- package/docs/RSI-CLOUD-DEPLOY-2026-07-06.md +289 -0
- package/docs/RSI-PROCESS-AI-COLDSTART-2026-07-11.md +68 -0
- package/docs/S18-THOROUGHNESS-AUDIT-2026-07-09.md +113 -0
- package/docs/SERVICE-INTEGRATION-GUIDE.md +298 -0
- package/docs/SUBAGENT-STREAM-RESILIENCE-PARITY-2026-07-10.md +118 -0
- package/docs/SWEBENCH-PRO-RECON-2026-07-11.md +31 -0
- package/docs/TB-EFFICIENCY-TELEMETRY-2026-07-08.md +114 -0
- package/docs/TB-FAILURE-AUTOPSY-2026-07-05-RERUN.md +67 -0
- package/docs/TB-FAIRNESS-AUDIT-2026-07-08.md +141 -0
- package/docs/TB-FULL-1257-2026-07-08.md +77 -0
- package/docs/TB-LEG-GAP-ATTRIBUTION-1261-1263-2026-07-11.md +154 -0
- package/docs/TB-REGRESSION-DAEMON-KILL-2026-07-08.md +58 -0
- package/docs/TB-RSI-CROSSCHECK-2026-07-06.md +68 -0
- package/docs/TB-RSI-LEDGER.md +30 -0
- package/docs/TB-STABLE-SET-2026-07-08.md +127 -0
- package/docs/TB21-RECON-2026-07-11.md +28 -0
- package/docs/TEST-DESIGN-BATCH-1-2-3.md +97 -0
- package/docs/THIRD-PARTY-INTEGRATION.md +45 -0
- package/docs/TOKEN-ESTIMATE-CALIBRATION-LIVE-2026-07-09.md +102 -0
- package/docs/audit-2026-06-10-/347/254/254/344/272/214/350/275/256-/347/251/272/347/231/275/345/214/272/344/270/216/345/277/230/346/216/245/347/272/277.md +147 -0
- package/docs/audit-2026-06-10-/350/256/241/347/256/227bug/346/211/253/346/217/217.md +163 -0
- package/docs/audit-2026-06-11-/344/277/256/345/244/215/345/244/215/345/256/241/344/270/216/345/233/236/345/275/222/344/270/223/346/211/253.md +95 -0
- package/docs/audit-2026-06-12-design71-P1/346/275/234/344/274/217/351/235/242/350/243/201/345/206/263/344/270/216/345/220/236/351/224/231/345/256/241/350/256/241.md +45 -0
- package/docs/audit-2026-06-12-/345/205/254/345/274/200/346/227/213/351/222/256/346/264/273/346/200/247/344/270/216vendored/346/255/273/350/267/257.md +63 -0
- package/docs/audit-2026-06-15/ADDENDUM-second-pass.md +88 -0
- package/docs/audit-2026-06-15/ARCHITECTURE-AND-ROADMAP.md +187 -0
- package/docs/audit-2026-06-15/DOC-CORRECTIONS.md +105 -0
- package/docs/audit-2026-06-15/INDEX.md +49 -0
- package/docs/audit-2026-06-15/ORCHESTRATION-STATUS.md +98 -0
- package/docs/audit-2026-06-15/PRODUCTION-ISSUES.md +189 -0
- package/docs/audit-2026-06-15/REFERENCES-literature.md +139 -0
- package/docs/audit-2026-06-15/VENDOR-REFACTOR-PLAN.md +96 -0
- package/docs/cc-probe-198/README.md +72 -0
- package/docs/cc-probe-198/STABILITY-AUDIT.md +118 -0
- package/docs/cc-probe-198/live-schema-monitor-worktree-2026-07-09.json +56 -0
- package/docs/cc-probe-198/mount-variants.json +536 -0
- package/docs/cc-probe-198/plan-mode-run.json +1 -0
- package/docs/cc-probe-198/probe-bash-bg.json +224 -0
- package/docs/cc-probe-198/probe-edit-mismatch.json +120 -0
- package/docs/cc-probe-198/probe-read-missing.json +62 -0
- package/docs/cc-probe-198/probe-search-empty.json +127 -0
- package/docs/cc-probe-198/probe-task-family.json +227 -0
- package/docs/cc-probe-198/probes.status +6 -0
- package/docs/cc-probe-198/raw-capture-interactive.json +948 -0
- package/docs/cc-probe-198/raw-capture-print.json +787 -0
- package/docs/cc-probe-198/raw-capture2-interactive.json +948 -0
- package/docs/cc-probe-198/raw-capture2-print.json +787 -0
- package/docs/cc-probe-198/system-prompt.txt +135 -0
- package/docs/cc-probe-198/tools-array.json +962 -0
- package/docs/durability-boundary.md +63 -0
- package/docs/fix-2026-06-10-/350/256/241/347/256/227bug/344/277/256/345/244/215-search/346/211/271.md +75 -0
- package/docs/fix-2026-06-11-/347/254/254/344/272/214/350/275/256-/344/277/256/345/244/215-search/346/211/271.md +62 -0
- package/docs/parity-sweep/REPORT-DYNAMIC.md +97 -0
- package/docs/parity-sweep/REPORT-STATIC-GGB.md +127 -0
- package/docs/parity-sweep/REPORT-STATIC-RWE.md +133 -0
- package/docs/vendor-history.md +385 -0
- package/docs/vendored-upstream-diff-2026-07.md +83 -0
- package/package.json +70 -0
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
import { sanitizeUntrustedText } from "./untrusted-text.js";
|
|
3
|
+
/**
|
|
4
|
+
* Selective memory recall (design/65 §2.2 — port of CC `findRelevantMemories`). For a LARGE memory scope,
|
|
5
|
+
* instead of injecting the whole `<user_memory>` block (inject-all), we inject a compact **manifest** (one
|
|
6
|
+
* header line per note) + a side-query that picks the ≤K relevant note ids + only those bodies. Small
|
|
7
|
+
* scopes keep inject-all (the common case after consolidation) — this path is threshold-gated, so most
|
|
8
|
+
* tasks pay nothing.
|
|
9
|
+
*
|
|
10
|
+
* The model side-query is an injected **seam** ({@link MemorySelector}); core provides a brain-backed
|
|
11
|
+
* default ({@link createBrainMemorySelector}) and a deployment can override it. The pipeline here is pure +
|
|
12
|
+
* deterministic given a selector: it validates the returned ids against the manifest (rejects hallucinated
|
|
13
|
+
* ids, council #5), caps at K, applies a hard timeout (council #12), and on ANY selector failure/timeout
|
|
14
|
+
* DEGRADES to inject-all (council #4 — never silently drop knowledge). Output goes in the variable tail
|
|
15
|
+
* (manifest + selected bodies are per-user/volatile, like the current memory block).
|
|
16
|
+
*/
|
|
17
|
+
/** Default max notes the side-query may select (CC `findRelevantMemories` ≤5). */
|
|
18
|
+
export const DEFAULT_MAX_SELECTED = 5;
|
|
19
|
+
/** Default max 1-hop link-followed notes appended after the selected ones (design/65 P3). */
|
|
20
|
+
export const DEFAULT_MAX_LINKED = 3;
|
|
21
|
+
/** Default side-query hard timeout (ms) — council #12; on timeout we degrade to inject-all. */
|
|
22
|
+
export const DEFAULT_SELECT_TIMEOUT_MS = 5_000;
|
|
23
|
+
/** Manifest double-cap (council #7): truncate at whichever of line/byte cap hits first. */
|
|
24
|
+
const MANIFEST_MAX_LINES = 200;
|
|
25
|
+
const MANIFEST_MAX_BYTES = 25_000;
|
|
26
|
+
/** B-3: byte cap on the combined SELECTED note bodies injected into the system prompt (the manifest and
|
|
27
|
+
* inject-all paths are already capped; this closes the one uncapped injection path). */
|
|
28
|
+
const SELECTED_BODY_MAX_BYTES = 50_000;
|
|
29
|
+
const ONE_DAY_MS = 24 * 60 * 60 * 1_000;
|
|
30
|
+
const ONE_WEEK_MS = 7 * ONE_DAY_MS;
|
|
31
|
+
/** Approx. month boundary for natural-language age: 30.44 days. (A rounded average month — the exact mean
|
|
32
|
+
* Gregorian month is 365.25/12 ≈ 30.4375 days; the rounded `30.44` is a hair longer and is the value the
|
|
33
|
+
* buckets/tests are calibrated to. The earlier `(365.25 / 12)` parenthetical was the only inconsistency —
|
|
34
|
+
* the comment now matches the constant exactly.) */
|
|
35
|
+
const ONE_MONTH_MS = 30.44 * ONE_DAY_MS;
|
|
36
|
+
/**
|
|
37
|
+
* Render a memory note's age as a natural-language phrase (CC-parity P0-1, design/65). CC's eval found
|
|
38
|
+
* models reason about memory age much better from natural language ("3 days ago") than from a boolean
|
|
39
|
+
* "older note" flag (verify-claims 0/2 → 3/3 once the age was spelled out), because the model can weigh
|
|
40
|
+
* staleness proportionally instead of as a single cliff. This is the relative phrase only; the
|
|
41
|
+
* point-in-time / verify-before-trust discipline still lives in {@link RECALL_CAVEAT} + the per-note
|
|
42
|
+
* "verify it's still current" hint (the age is ADDITIONAL signal, not a replacement).
|
|
43
|
+
*
|
|
44
|
+
* Buckets (each chooses the coarsest unit that's ≥1): `today` (<1 day, incl. future mtime / clock skew →
|
|
45
|
+
* clamped to today, never a negative age), `yesterday` (1–2 days), `N days ago` (2–7 days),
|
|
46
|
+
* `N weeks ago` (1 week – ~1 month), `N months ago` (≥ ~1 month). N is floored to the whole unit.
|
|
47
|
+
*/
|
|
48
|
+
export function formatMemoryAge(ageMs) {
|
|
49
|
+
if (ageMs < ONE_DAY_MS)
|
|
50
|
+
return "today"; // also catches negatives (future mtime / clock skew)
|
|
51
|
+
if (ageMs < 2 * ONE_DAY_MS)
|
|
52
|
+
return "yesterday";
|
|
53
|
+
if (ageMs < ONE_WEEK_MS)
|
|
54
|
+
return `${Math.floor(ageMs / ONE_DAY_MS)} days ago`;
|
|
55
|
+
if (ageMs < ONE_MONTH_MS) {
|
|
56
|
+
const weeks = Math.floor(ageMs / ONE_WEEK_MS);
|
|
57
|
+
return `${weeks} ${weeks === 1 ? "week" : "weeks"} ago`;
|
|
58
|
+
}
|
|
59
|
+
const months = Math.floor(ageMs / ONE_MONTH_MS);
|
|
60
|
+
return `${months} ${months === 1 ? "month" : "months"} ago`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Read-side recall caveat (design/65 §8#2 / §9#1 — ported from CC's MEMORY_DRIFT_CAVEAT +
|
|
64
|
+
* TRUSTING_RECALL_SECTION). The council found CC's two-section form is **eval-validated** (verify-claims
|
|
65
|
+
* 0/2→3/3) and that the structure carries the effect: the precise decision-point heading
|
|
66
|
+
* "## Before recommending from memory" scored 3/3 while an abstract heading or a buried bullet scored 0/3.
|
|
67
|
+
* So this is deliberately TWO sections — a drift bullet + a titled action section with the frame-shift
|
|
68
|
+
* sentence and concrete verify actions — NOT one merged paragraph (same semantics, 3× worse eval).
|
|
69
|
+
* MEMORY_SAFETY already carries the authority hierarchy; this adds the point-in-time / verify-before-trust
|
|
70
|
+
* discipline selective recall specifically needs.
|
|
71
|
+
*/
|
|
72
|
+
export const RECALL_CAVEAT = "These notes were recalled as relevant, but they are point-in-time observations from when they were " +
|
|
73
|
+
"written — they may now be stale. Trust current tool output over memory, and update or remove a note you " +
|
|
74
|
+
"find is wrong.\n\n" +
|
|
75
|
+
"## Before recommending from memory\n" +
|
|
76
|
+
'- "The memory says X exists" is not the same as "X exists now" — a note is not proof the thing still exists.\n' +
|
|
77
|
+
"- If the user is about to act on your recommendation (not just asking about history), verify first.\n" +
|
|
78
|
+
"- If a note names a file, check the file exists; if it names a function or symbol, grep for it; if it names a flag or value, read the current source.\n" +
|
|
79
|
+
"- Memory is a snapshot from when it was written, not a live view — prefer `git log` or reading the code over recalling the snapshot.";
|
|
80
|
+
/**
|
|
81
|
+
* Resolve the `[[name]]` references in the selected notes' bodies to manifest headers — ONE hop
|
|
82
|
+
* (design/65 P3: "recall one note → bring its [[links]]"; linked bodies are NOT re-scanned, so a link
|
|
83
|
+
* chain can't pull in the whole graph). Pure-text convention: names resolve against the manifest's
|
|
84
|
+
* `name` field; an unresolved name is silently skipped (a `[[link]]` to a not-yet-written note is legal
|
|
85
|
+
* authoring, design/65 §2.1); a name collision resolves to the newest note (strict mtime `>`; on a
|
|
86
|
+
* tie the first-encountered header wins). Already-selected targets are excluded (they're injected
|
|
87
|
+
* anyway). Returns at most `max` ids, in first-mention order.
|
|
88
|
+
*/
|
|
89
|
+
export function resolveLinkedIds(headers, selected, max) {
|
|
90
|
+
if (max <= 0 || selected.length === 0)
|
|
91
|
+
return [];
|
|
92
|
+
const byName = new Map();
|
|
93
|
+
for (const h of headers) {
|
|
94
|
+
if (!h.name)
|
|
95
|
+
continue;
|
|
96
|
+
const prev = byName.get(h.name);
|
|
97
|
+
if (!prev || h.mtimeMs > prev.mtimeMs)
|
|
98
|
+
byName.set(h.name, h); // collision → newest wins
|
|
99
|
+
}
|
|
100
|
+
const selectedIds = new Set(selected.map((r) => r.id));
|
|
101
|
+
const out = [];
|
|
102
|
+
const seen = new Set();
|
|
103
|
+
for (const r of selected) {
|
|
104
|
+
for (const m of r.text.matchAll(/\[\[([^[\]\n]{1,128})\]\]/g)) {
|
|
105
|
+
const target = byName.get(m[1].trim());
|
|
106
|
+
if (!target || selectedIds.has(target.id) || seen.has(target.id))
|
|
107
|
+
continue;
|
|
108
|
+
seen.add(target.id);
|
|
109
|
+
out.push(target.id);
|
|
110
|
+
if (out.length >= max)
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
/** One physical line, whatever the stored value contains. `type`/`description` are MODEL-AUTHORED
|
|
117
|
+
* (the `remember` tool and typed consolidation ADDs accept both) — an embedded newline would forge
|
|
118
|
+
* extra manifest lines ("- fake-id: …"). Forged ids are already rejected by `validateSelectedIds`,
|
|
119
|
+
* but the selector LLM still reads the forged text; collapse whitespace at the render choke point so
|
|
120
|
+
* every store/inlet is covered (self-review 2026-06-11, same class as the selector-fence gap). */
|
|
121
|
+
function manifestField(s, cap) {
|
|
122
|
+
const t = s.replace(/\s+/g, " ").trim();
|
|
123
|
+
return t.length > cap ? `${t.slice(0, cap)}…` : t;
|
|
124
|
+
}
|
|
125
|
+
/** Render the manifest as compact lines, double-capped (council #7). One line per note, guaranteed. */
|
|
126
|
+
export function buildManifestText(headers) {
|
|
127
|
+
const lines = [];
|
|
128
|
+
let bytes = 0;
|
|
129
|
+
let truncated;
|
|
130
|
+
for (const h of headers) {
|
|
131
|
+
if (lines.length >= MANIFEST_MAX_LINES) {
|
|
132
|
+
truncated = "lines";
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
const tag = h.type ? `[${manifestField(h.type, 32)}] ` : "";
|
|
136
|
+
const line = `- ${h.id}: ${tag}${manifestField(h.description, 300)}`;
|
|
137
|
+
const lb = Buffer.byteLength(line, "utf8") + 1;
|
|
138
|
+
if (bytes + lb > MANIFEST_MAX_BYTES) {
|
|
139
|
+
truncated = "bytes";
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
lines.push(line);
|
|
143
|
+
bytes += lb;
|
|
144
|
+
}
|
|
145
|
+
const note = truncated ? `\n<manifest truncated: ${truncated} cap reached; ${headers.length - lines.length} notes omitted — consolidation should shrink memory>` : "";
|
|
146
|
+
return lines.join("\n") + note;
|
|
147
|
+
}
|
|
148
|
+
/** Keep only ids present in the manifest (reject hallucinated, council #5), de-duped, capped at `max`. */
|
|
149
|
+
export function validateSelectedIds(headers, ids, max) {
|
|
150
|
+
const valid = new Set(headers.map((h) => h.id));
|
|
151
|
+
const out = [];
|
|
152
|
+
const seen = new Set();
|
|
153
|
+
for (const id of ids) {
|
|
154
|
+
if (out.length >= max)
|
|
155
|
+
break; // B-2 (round-2 audit): check BEFORE push so maxSelected:0 selects 0, not 1
|
|
156
|
+
if (valid.has(id) && !seen.has(id)) {
|
|
157
|
+
seen.add(id);
|
|
158
|
+
out.push(id);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Render the BODY of a selective-recall block: the optional `recall` manifest index + the selected note
|
|
165
|
+
* bodies (+ 1-hop linked notes), WITHOUT the outer `<user_memory>` wrapper and WITHOUT {@link RECALL_CAVEAT}.
|
|
166
|
+
* The wrapper + caveat are the caller's job — `composeSelectiveMemoryBlock` (single-scope) places ONE caveat
|
|
167
|
+
* inside ONE `<user_memory scope=… mode="selective">`, and the layered renderer places ONE caveat inside ONE
|
|
168
|
+
* `<user_memory mode="selective">` ahead of N `<scope>` subsections (MAJOR fix: no nested fences, no per-scope
|
|
169
|
+
* caveat duplication).
|
|
170
|
+
*
|
|
171
|
+
* `recallable` controls the "Memory index — call recall …" affordance (MAJOR fix): the on-demand `recall` tool
|
|
172
|
+
* is bound to a SINGLE scope, so the "load in full via recall" instruction is only TRUE for that scope. Pass
|
|
173
|
+
* `false` for non-recallable layers — the selected bodies are already rendered inline, so the index is just a
|
|
174
|
+
* false affordance that wastes a tool call (model searches the wrong scope → "No memory matches").
|
|
175
|
+
*
|
|
176
|
+
* Notes are tagged with their natural-language age (CC-parity P0-1, design/65; >1-day-old ones keep the
|
|
177
|
+
* "verify it's still current" hint, council #8). `linked` (design/65 P3) are 1-hop `[[name]]`-followed notes,
|
|
178
|
+
* rendered in their own clearly-labeled subsection AFTER the selected ones — expanded as DATA under the same
|
|
179
|
+
* fence/sanitize/byte-cap discipline (design/65 §8#9: a followed link must not become markup or escalate authority).
|
|
180
|
+
*/
|
|
181
|
+
export function composeSelectiveBody(manifestText, selected, nowMs, linked = [], recallable = true) {
|
|
182
|
+
const renderNote = (r, label) => {
|
|
183
|
+
// CC-parity P0-1: spell the age out in natural language (models reason about staleness far better
|
|
184
|
+
// from "3 days ago" than a boolean older-note flag — CC eval 0/2 → 3/3). The >1-day "verify it's
|
|
185
|
+
// still current" hint is RETAINED (RECALL_CAVEAT-level discipline; age is additional signal, not a
|
|
186
|
+
// replacement). Future mtime / clock skew clamps to "today" (formatMemoryAge guards negatives).
|
|
187
|
+
const ageMs = nowMs - r.mtimeMs;
|
|
188
|
+
const verify = ageMs > ONE_DAY_MS ? " — verify it's still current" : "";
|
|
189
|
+
const stale = ` (written ${formatMemoryAge(ageMs)}${verify})`;
|
|
190
|
+
// A-7 (round-2 audit): note text + manifest descriptions are persisted, model-influenced content
|
|
191
|
+
// injected into the SYSTEM prompt — neutralize wrapper/system-reminder tags so a note can't escape
|
|
192
|
+
// its fence and forge system authority (same fence-escape class as composeMemoryBlock). The label
|
|
193
|
+
// (a [[name]]) is sanitized too: names come from appendStructured callers today, but nothing
|
|
194
|
+
// guarantees they stay non-model-authored forever (council backlog-3 defensive fix). renderNote owns
|
|
195
|
+
// the label/body SEPARATOR (a trailing space) so the call site passes the bare `[[name]]` — the
|
|
196
|
+
// separator is not baked into every caller (robustness fix: one source of truth for the spacing).
|
|
197
|
+
const prefix = label ? `${sanitizeUntrustedText(label, ["user_memory"])} ` : "";
|
|
198
|
+
return `- ${prefix}${sanitizeUntrustedText(r.text, ["user_memory"])}${stale}`;
|
|
199
|
+
};
|
|
200
|
+
let body = selected.map((r) => renderNote(r)).join("\n");
|
|
201
|
+
if (linked.length > 0) {
|
|
202
|
+
body +=
|
|
203
|
+
`\n\nLinked notes (followed one hop from [[name]] references above — same staleness caveats apply):\n` +
|
|
204
|
+
linked.map((r) => renderNote(r, r.name ? `[[${r.name}]]` : "")).join("\n");
|
|
205
|
+
}
|
|
206
|
+
// B-3 (round-2 audit): the manifest has a 200-line/25KB cap and inject-all has a 100KB cap, but the
|
|
207
|
+
// SELECTED note bodies had NO byte cap — one oversized selected note injected unbounded text into the
|
|
208
|
+
// system prompt. Cap the combined selected (+ linked) bodies (UTF-8 boundary safe).
|
|
209
|
+
if (Buffer.byteLength(body, "utf8") > SELECTED_BODY_MAX_BYTES) {
|
|
210
|
+
const buf = Buffer.from(body, "utf8");
|
|
211
|
+
let cut = SELECTED_BODY_MAX_BYTES;
|
|
212
|
+
while (cut > 0 && (buf[cut] & 0xc0) === 0x80)
|
|
213
|
+
cut--;
|
|
214
|
+
body = `${buf.subarray(0, cut).toString("utf8")}\n<selected notes truncated to ${SELECTED_BODY_MAX_BYTES} bytes>`;
|
|
215
|
+
}
|
|
216
|
+
const selectedSection = selected.length > 0 ? `\n\nRelevant notes:\n${body}` : "\n\n(no notes selected as relevant to this task)";
|
|
217
|
+
// B-4 (round-2 audit): `recall` is a LEXICAL/keyword search (searchScored), not a by-id fetch, and its
|
|
218
|
+
// results don't render ids — telling the model to "fetch by id" sent it down a dead path (id → "No
|
|
219
|
+
// memory matches"). Steer it to search by keywords from the description instead. MAJOR fix: only emit
|
|
220
|
+
// this affordance for the scope `recall` is actually bound to (recallable) — for any other layer the
|
|
221
|
+
// index is a false promise (the search would run against the wrong scope and miss).
|
|
222
|
+
const manifestSection = recallable
|
|
223
|
+
? `Memory index — to load a note in full, call Recall with keywords from its description:\n${sanitizeUntrustedText(manifestText, ["user_memory"])}`
|
|
224
|
+
: "";
|
|
225
|
+
return `${manifestSection}${selectedSection}`;
|
|
226
|
+
}
|
|
227
|
+
/** Render the single-scope selective block: ONE `<user_memory scope=… mode="selective">` with ONE
|
|
228
|
+
* {@link RECALL_CAVEAT} at the top and the {@link composeSelectiveBody} (manifest + selected bodies + links).
|
|
229
|
+
* `recall` is bound to this single scope, so the manifest affordance is recallable. *
|
|
230
|
+
* @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
|
|
231
|
+
* longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
|
|
232
|
+
*/
|
|
233
|
+
export function composeSelectiveMemoryBlock(scope, manifestText, selected, nowMs, linked = []) {
|
|
234
|
+
return (`<user_memory scope="${scope}" mode="selective">\n` +
|
|
235
|
+
`${RECALL_CAVEAT}\n\n` +
|
|
236
|
+
`${composeSelectiveBody(manifestText, selected, nowMs, linked)}\n` +
|
|
237
|
+
`</user_memory>`);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Run the selective-recall pipeline. Returns the composed block (+ {@link SelectiveRecallResult.surfacedIds}),
|
|
241
|
+
* or `{ degrade: true, surfacedIds: [] }` when the selector fails/times out (caller falls back to inject-all —
|
|
242
|
+
* never drops knowledge, council #4). Degrade always reports `surfacedIds: []`: inject-all is a best-effort
|
|
243
|
+
* full dump (head-truncated at the cap), so it cannot honestly attribute a precise per-id surface, and the
|
|
244
|
+
* caller already holds the prior ids — degrade does NOT advance the durable surfaced-set.
|
|
245
|
+
*
|
|
246
|
+
* CC-parity P1 (durable cross-worker de-dup): when {@link SelectiveRecallOptions.priorSurfacedIds} is given,
|
|
247
|
+
* those ids are dropped from the candidate headers BEFORE the manifest is built and BEFORE the selector runs,
|
|
248
|
+
* so an already-shown note is invisible to the selector (and therefore cannot be re-selected, re-link-followed,
|
|
249
|
+
* or re-rendered). `surfacedIds` reports what THIS call rendered, for the caller's durable surfaced-set.
|
|
250
|
+
*
|
|
251
|
+
* @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
|
|
252
|
+
* longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
|
|
253
|
+
*/
|
|
254
|
+
export async function selectAndComposeMemory(opts) {
|
|
255
|
+
if (!opts.store.listStructuredNotes || !opts.store.getByIds)
|
|
256
|
+
return { degrade: true, surfacedIds: [] };
|
|
257
|
+
const allHeaders = await opts.store.listStructuredNotes(opts.scope);
|
|
258
|
+
if (allHeaders.length === 0)
|
|
259
|
+
return { degrade: true, surfacedIds: [] }; // nothing structured to select from
|
|
260
|
+
// CC-parity P1: filter out already-surfaced notes at the MANIFEST layer (CC's `alreadySurfaced`). The
|
|
261
|
+
// selector, the manifest text, link-following, and getByIds all operate on `headers` — so a prior-surfaced
|
|
262
|
+
// id is fully invisible downstream (can't be re-selected, can't be a [[link]] target, can't be re-rendered).
|
|
263
|
+
const headers = opts.priorSurfacedIds?.size
|
|
264
|
+
? allHeaders.filter((h) => !opts.priorSurfacedIds.has(h.id))
|
|
265
|
+
: allHeaders;
|
|
266
|
+
// After filtering, if nothing new remains, EVERY selectable candidate was already surfaced earlier. This is
|
|
267
|
+
// a SUCCESS ("no new memory to inject"), NOT a degrade: returning `degrade` here would make the caller
|
|
268
|
+
// fall back to inject-all and re-dump the WHOLE scope — including the already-shown notes — which defeats
|
|
269
|
+
// the whole point of the de-dup (the bug this branch fixes). So return the `{ block: undefined }` no-new
|
|
270
|
+
// success branch: the caller injects NOTHING new (it routes this off the non-degrade path), and we report
|
|
271
|
+
// `[]` surfaced (no NEW note added; the prior ids are already in the caller's durable store). This is the
|
|
272
|
+
// CONTRAST with the empty-scope/store-incapable/selector-failure cases above + below, which ARE degrades
|
|
273
|
+
// (the scope had no selectable candidates AT ALL, or the selector blew up → inject-all is the safe floor).
|
|
274
|
+
if (headers.length === 0)
|
|
275
|
+
return { block: undefined, surfacedIds: [] };
|
|
276
|
+
const manifestText = buildManifestText(headers);
|
|
277
|
+
const max = opts.maxSelected ?? DEFAULT_MAX_SELECTED;
|
|
278
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_SELECT_TIMEOUT_MS;
|
|
279
|
+
// Internal abort controller so a TIMEOUT (or an outer abort) actually CANCELS the selector's inner work
|
|
280
|
+
// (a brain sub-task), not just rejects our wrapper — otherwise the sub-task keeps burning API after we've
|
|
281
|
+
// already degraded (council §9#2). The selector receives `ac.signal`; on timeout we abort it.
|
|
282
|
+
const ac = new AbortController();
|
|
283
|
+
// B-5 (round-2 audit): if the outer signal is ALREADY aborted, addEventListener("abort") never fires —
|
|
284
|
+
// pre-check so we abort the inner controller immediately instead of letting the selector burn its full
|
|
285
|
+
// timeout on a task that's already cancelled.
|
|
286
|
+
if (opts.signal?.aborted)
|
|
287
|
+
ac.abort();
|
|
288
|
+
const onOuterAbort = () => ac.abort();
|
|
289
|
+
opts.signal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
290
|
+
let ids;
|
|
291
|
+
try {
|
|
292
|
+
ids = await withTimeout(opts.selector({ objective: opts.objective, manifest: headers, recentTools: opts.recentTools }, ac.signal), timeoutMs, () => ac.abort());
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
// Selector threw / timed out / aborted → caller injects-all (safe side, council #4). inject-all is a
|
|
296
|
+
// best-effort FULL DUMP that `composeMemoryBlock` HARD-TRUNCATES to MAX_MEMORY_BYTES (100 KiB), keeping
|
|
297
|
+
// only the HEAD slice — and `read()` renders oldest-first, so over-cap content silently drops the NEWEST
|
|
298
|
+
// (tail) notes. Returning `headers.map(h => h.id)` here would assert ALL bodies were surfaced, including
|
|
299
|
+
// the dropped tail; a caller that closes the durable loop would append those un-shown ids to
|
|
300
|
+
// `priorSurfacedIds` and they could NEVER be selected again = permanent silent knowledge loss for any
|
|
301
|
+
// scope whose flat content exceeds the cap (the recall gate already fires at 8 KiB). Degrade is NOT a
|
|
302
|
+
// precise per-id surface that can be de-duped (the caller already holds the prior ids), so we report `[]`:
|
|
303
|
+
// degrade does not advance the durable surfaced-set. (MAJOR review fix.)
|
|
304
|
+
return { degrade: true, surfacedIds: [] };
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
opts.signal?.removeEventListener("abort", onOuterAbort);
|
|
308
|
+
}
|
|
309
|
+
const chosen = validateSelectedIds(headers, ids, max);
|
|
310
|
+
const records = chosen.length > 0 ? await opts.store.getByIds(opts.scope, chosen) : [];
|
|
311
|
+
// design/65 P3: one-hop [[name]] link-following over the SELECTED notes. Deterministic + store-only
|
|
312
|
+
// (no extra LLM call); a failure here must not sink a recall that already succeeded → fail-open to
|
|
313
|
+
// the un-linked block.
|
|
314
|
+
let linked = [];
|
|
315
|
+
const maxLinked = opts.maxLinked ?? DEFAULT_MAX_LINKED;
|
|
316
|
+
if (records.length > 0 && maxLinked > 0) {
|
|
317
|
+
try {
|
|
318
|
+
const linkedIds = resolveLinkedIds(headers, records, maxLinked);
|
|
319
|
+
if (linkedIds.length > 0)
|
|
320
|
+
linked = await opts.store.getByIds(opts.scope, linkedIds);
|
|
321
|
+
}
|
|
322
|
+
catch {
|
|
323
|
+
linked = [];
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// CC-parity P1: surfacedIds = the note ids whose BODIES this call actually rendered (the validated
|
|
327
|
+
// selection + the 1-hop linked notes). Derived from the RETURNED records, not from `chosen`/`linkedIds`,
|
|
328
|
+
// so a getByIds that silently skipped a vanished id is not falsely reported as surfaced. The caller
|
|
329
|
+
// appends these to its durable surfaced-set and feeds it back as `priorSurfacedIds` next time.
|
|
330
|
+
const surfacedIds = [...records.map((r) => r.id), ...linked.map((r) => r.id)];
|
|
331
|
+
return {
|
|
332
|
+
block: composeSelectiveMemoryBlock(opts.scope, manifestText, records, opts.nowMs ?? Date.now(), linked),
|
|
333
|
+
surfacedIds,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
// ============================================================================
|
|
337
|
+
// design/84 Seam A — multi-scope (layered) selective recall
|
|
338
|
+
// ============================================================================
|
|
339
|
+
/** A `(scope, id)` composite key for the multi-scope durable de-dup (design/84 Seam A decision 5). Note ids
|
|
340
|
+
* are only unique WITHIN a scope, so the cross-scope `priorSurfacedKeys`/`surfacedKeys` set MUST be keyed on
|
|
341
|
+
* both. Core owns the FORMAT so a caller can't drift the wire format (decision 7) — the encoding is OPAQUE
|
|
342
|
+
* and length-prefixes the scope so a scope/id containing the separator cannot forge a collision.
|
|
343
|
+
*
|
|
344
|
+
* ONE-WAY by design (codex MINOR (d)): the key is only ever PRODUCED here (`surfacedKeys`) and compared by
|
|
345
|
+
* STRING EQUALITY against the caller's persisted set ({@link LayeredRecallOptions.priorSurfacedKeys}, applied
|
|
346
|
+
* at memory-recall.ts via `priorSurfacedKeys.has(encodeSurfacedKey(h.scope, h.id))`). Nothing ever needs the
|
|
347
|
+
* `(scope, id)` BACK out of a key, so there is intentionally NO `decodeSurfacedKey` — adding a decode would
|
|
348
|
+
* widen the public surface (and invite callers to parse the opaque format) for zero consumer. Treat the key
|
|
349
|
+
* as an opaque token: persist it, feed it back, compare for equality — never split it. */
|
|
350
|
+
export function encodeSurfacedKey(scope, id) {
|
|
351
|
+
return `${scope.length}:${scope}:${id}`;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Multi-scope (layered) selective recall (design/84 Seam A decision 5). Merges each scope's
|
|
355
|
+
* {@link MemoryStore.listStructuredNotes} into ONE manifest (each header tagged with its scope), lets the
|
|
356
|
+
* selector pick ids from the merged manifest, then fetches the selected bodies per-scope via
|
|
357
|
+
* {@link MemoryStore.getByIds} and renders ONE `<user_memory>` block with the selected notes grouped under a
|
|
358
|
+
* `<scope …>` subsection IN LIST ORDER (stable layers first = cacheable prefix, volatile last = tail). The
|
|
359
|
+
* `(scope,id)` composite de-dup ({@link LayeredRecallOptions.priorSurfacedKeys}) is applied at the manifest
|
|
360
|
+
* layer so an already-shown note in ANY scope is invisible to the selector.
|
|
361
|
+
*
|
|
362
|
+
* v1 (decision 6): accepts the N-small (3–4 layer) fan-out of one `listStructuredNotes`/`getByIds` per scope
|
|
363
|
+
* — no pre-built batch getByIds. Degrades to inject-all (the caller's job, like the single-scope path) on
|
|
364
|
+
* store-incapability / empty / selector failure. Threshold-gated by the caller, so a small layering pays nothing.
|
|
365
|
+
*
|
|
366
|
+
* @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
|
|
367
|
+
* longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
|
|
368
|
+
*/
|
|
369
|
+
export async function selectAndComposeLayeredMemory(opts) {
|
|
370
|
+
if (!opts.store.listStructuredNotes || !opts.store.getByIds)
|
|
371
|
+
return { degrade: true, surfacedKeys: [] };
|
|
372
|
+
const listStructuredNotes = opts.store.listStructuredNotes.bind(opts.store);
|
|
373
|
+
const getByIds = opts.store.getByIds.bind(opts.store);
|
|
374
|
+
// Fan out one manifest read per scope (v1 N-small; reads are independent → parallel) and tag each header
|
|
375
|
+
// with its scope. Order is preserved (scopes in list order → headers grouped by scope in list order).
|
|
376
|
+
const perScope = await Promise.all(opts.scopes.map(async (scope) => {
|
|
377
|
+
const headers = await listStructuredNotes(scope);
|
|
378
|
+
return headers.map((h) => ({ ...h, scope }));
|
|
379
|
+
}));
|
|
380
|
+
const allScoped = perScope.flat();
|
|
381
|
+
if (allScoped.length === 0)
|
|
382
|
+
return { degrade: true, surfacedKeys: [] }; // nothing structured to select from
|
|
383
|
+
// CC-parity P1, composite-keyed: drop already-surfaced (scope,id) notes BEFORE the manifest/selector see them.
|
|
384
|
+
const scoped = opts.priorSurfacedKeys?.size
|
|
385
|
+
? allScoped.filter((h) => !opts.priorSurfacedKeys.has(encodeSurfacedKey(h.scope, h.id)))
|
|
386
|
+
: allScoped;
|
|
387
|
+
if (scoped.length === 0)
|
|
388
|
+
return { block: undefined, surfacedKeys: [] }; // every candidate already surfaced (no-new success)
|
|
389
|
+
// The selector matches ids by string equality, but the SAME id can exist in two scopes. Key the selector's
|
|
390
|
+
// view by a manifest-LOCAL token (`s{scopeIndex}#{id}`) so a selected token unambiguously resolves back to a
|
|
391
|
+
// (scope,id) pair. The token is single-line + whitespace-free (the manifest-line/equality contract holds).
|
|
392
|
+
const scopeIndex = new Map();
|
|
393
|
+
opts.scopes.forEach((s, i) => scopeIndex.set(s, i));
|
|
394
|
+
const tokenOf = (h) => `s${scopeIndex.get(h.scope) ?? 0}#${h.id}`;
|
|
395
|
+
const byToken = new Map();
|
|
396
|
+
const manifestHeaders = scoped.map((h) => {
|
|
397
|
+
const token = tokenOf(h);
|
|
398
|
+
byToken.set(token, h);
|
|
399
|
+
// Re-tag the manifest header id with the local token so the selector picks tokens; prefix the description
|
|
400
|
+
// with the scope so the model sees layer provenance (decision 5: header carries scope attribution).
|
|
401
|
+
return { ...h, id: token, description: `[${h.scope}] ${h.description}` };
|
|
402
|
+
});
|
|
403
|
+
const max = opts.maxSelected ?? DEFAULT_MAX_SELECTED;
|
|
404
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_SELECT_TIMEOUT_MS;
|
|
405
|
+
const ac = new AbortController();
|
|
406
|
+
if (opts.signal?.aborted)
|
|
407
|
+
ac.abort();
|
|
408
|
+
const onOuterAbort = () => ac.abort();
|
|
409
|
+
opts.signal?.addEventListener("abort", onOuterAbort, { once: true });
|
|
410
|
+
let chosenTokens;
|
|
411
|
+
try {
|
|
412
|
+
const ids = await withTimeout(opts.selector({ objective: opts.objective, manifest: manifestHeaders, recentTools: opts.recentTools }, ac.signal), timeoutMs, () => ac.abort());
|
|
413
|
+
chosenTokens = validateSelectedIds(manifestHeaders, ids, max);
|
|
414
|
+
}
|
|
415
|
+
catch {
|
|
416
|
+
return { degrade: true, surfacedKeys: [] }; // selector failed/timed out → caller injects-all (council #4)
|
|
417
|
+
}
|
|
418
|
+
finally {
|
|
419
|
+
opts.signal?.removeEventListener("abort", onOuterAbort);
|
|
420
|
+
}
|
|
421
|
+
// Resolve selected tokens back to (scope,id), group by scope, and fetch bodies per scope (N-small fan-out).
|
|
422
|
+
const wantByScope = new Map();
|
|
423
|
+
for (const token of chosenTokens) {
|
|
424
|
+
const h = byToken.get(token);
|
|
425
|
+
if (!h)
|
|
426
|
+
continue;
|
|
427
|
+
const arr = wantByScope.get(h.scope) ?? [];
|
|
428
|
+
arr.push(h.id);
|
|
429
|
+
wantByScope.set(h.scope, arr);
|
|
430
|
+
}
|
|
431
|
+
// 1-hop [[name]] link-following is per-scope (a [[link]] resolves within its own scope's manifest — links
|
|
432
|
+
// do not cross layers in v1). Done after the initial fetch, same maxLinked budget split is per-scope.
|
|
433
|
+
const maxLinked = opts.maxLinked ?? DEFAULT_MAX_LINKED;
|
|
434
|
+
const recordsByScope = new Map();
|
|
435
|
+
const linkedByScope = new Map();
|
|
436
|
+
const scopedHeadersByScope = new Map();
|
|
437
|
+
for (const h of scoped) {
|
|
438
|
+
const arr = scopedHeadersByScope.get(h.scope) ?? [];
|
|
439
|
+
arr.push(h);
|
|
440
|
+
scopedHeadersByScope.set(h.scope, arr);
|
|
441
|
+
}
|
|
442
|
+
for (const [scope, ids] of wantByScope) {
|
|
443
|
+
const records = ids.length > 0 ? await getByIds(scope, ids) : [];
|
|
444
|
+
recordsByScope.set(scope, records);
|
|
445
|
+
if (records.length > 0 && maxLinked > 0) {
|
|
446
|
+
try {
|
|
447
|
+
const linkedIds = resolveLinkedIds(scopedHeadersByScope.get(scope) ?? [], records, maxLinked);
|
|
448
|
+
if (linkedIds.length > 0)
|
|
449
|
+
linkedByScope.set(scope, await getByIds(scope, linkedIds));
|
|
450
|
+
}
|
|
451
|
+
catch {
|
|
452
|
+
/* fail-open to the un-linked block for this scope */
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
// Render ONE block, scopes IN LIST ORDER (stable prefix first, volatile tail last — the §5 cache layout).
|
|
457
|
+
// MAJOR fix: ONE `<user_memory mode="selective">` wrapper with ONE RECALL_CAVEAT at the top + N raw `<scope>`
|
|
458
|
+
// subsections carrying only the BODY (composeSelectiveBody — no inner wrapper, no per-scope caveat). This
|
|
459
|
+
// mirrors the clean single-fence shape of composeLayeredMemoryBlock instead of nesting full `<user_memory>`
|
|
460
|
+
// blocks (which duplicated the multi-line caveat once per scope and emitted N+1 `<user_memory>` tags).
|
|
461
|
+
const nowMs = opts.nowMs ?? Date.now();
|
|
462
|
+
// MAJOR fix: the on-demand `recall` tool is bound to the BASE scope only (scopes[0], prepare-task.ts) — so the
|
|
463
|
+
// "load in full via recall" manifest index is only TRUE for the base layer. Other layers omit it (their
|
|
464
|
+
// selected bodies are already rendered inline); emitting it would send the model to search the wrong scope.
|
|
465
|
+
const recallableScope = opts.scopes[0];
|
|
466
|
+
const surfacedKeys = [];
|
|
467
|
+
const subsections = [];
|
|
468
|
+
for (const scope of opts.scopes) {
|
|
469
|
+
const records = recordsByScope.get(scope) ?? [];
|
|
470
|
+
const linked = linkedByScope.get(scope) ?? [];
|
|
471
|
+
if (records.length === 0 && linked.length === 0)
|
|
472
|
+
continue; // omit a layer with no selected notes (tight + stable)
|
|
473
|
+
for (const r of records)
|
|
474
|
+
surfacedKeys.push(encodeSurfacedKey(scope, r.id));
|
|
475
|
+
for (const r of linked)
|
|
476
|
+
surfacedKeys.push(encodeSurfacedKey(scope, r.id));
|
|
477
|
+
// DESIGN-1 (council, hot path): the manifest text is consumed by composeSelectiveBody ONLY for the
|
|
478
|
+
// recallable scope (the "load in full via recall" index is suppressed for every other layer). Building it
|
|
479
|
+
// for a non-recallable scope (regex `[type]` field + byte-length per header) is wasted CPU, so compute it
|
|
480
|
+
// only when this scope IS the recallable one; otherwise pass "" (composeSelectiveBody ignores it). No
|
|
481
|
+
// semantic change — the non-recallable branch already drops the manifest section.
|
|
482
|
+
const recallable = scope === recallableScope;
|
|
483
|
+
const body = composeSelectiveBody(recallable ? buildManifestText(scopedHeadersByScope.get(scope) ?? []) : "", records, nowMs, linked, recallable);
|
|
484
|
+
subsections.push(`<scope name="${sanitizeUntrustedText(scope, ["user_memory"])}">\n${body}\n</scope>`);
|
|
485
|
+
}
|
|
486
|
+
// MINOR (codex): the empty-selection semantic DELIBERATELY differs from the single-scope path
|
|
487
|
+
// (`selectAndComposeMemory`), and the difference is intentional, not an oversight:
|
|
488
|
+
// - single-scope: when the selector picks NO ids it still injects a manifest-only block carrying the
|
|
489
|
+
// "(no notes selected …)" line + the load-in-full-via-recall index, so the model keeps the affordance
|
|
490
|
+
// to `recall` against the one scope (pinned by cc-parity/memory-recall.test.ts:120 + core-memory-coverage:408).
|
|
491
|
+
// - multi-scope (HERE): when EVERY layer's subsection is empty there is nothing renderable to layer, and
|
|
492
|
+
// the per-layer manifests were already side-queried; injecting an empty multi-scope shell adds only
|
|
493
|
+
// noise (no body, no actionable index for the non-recallable layers). So inject NOTHING (`block:
|
|
494
|
+
// undefined`) — the `recall` tool stays mounted, so the model retains the same recall affordance the
|
|
495
|
+
// single-scope manifest block would have advertised. Net: both paths preserve recall-on-demand; only the
|
|
496
|
+
// rendered shell differs, by design.
|
|
497
|
+
if (subsections.length === 0)
|
|
498
|
+
return { block: undefined, surfacedKeys: [] }; // every layer empty → inject nothing (see note above)
|
|
499
|
+
return {
|
|
500
|
+
block: `<user_memory mode="selective">\n${RECALL_CAVEAT}\n\n${subsections.join("\n")}\n</user_memory>`,
|
|
501
|
+
surfacedKeys,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
const SELECT_PROMPT = "You choose which long-term memory notes are relevant to the current task. You are given the task and a " +
|
|
505
|
+
"numbered manifest of note ids + descriptions. Return ONLY the ids that are clearly useful for this task " +
|
|
506
|
+
"(at most a handful). If you are unsure, leave it out — an empty list is fine. For any tool the task will " +
|
|
507
|
+
"use, keep notes about its gotchas/warnings/known-issues but skip pure usage/API notes (that is when " +
|
|
508
|
+
"gotchas matter most). Never invent an id that is not in the manifest.";
|
|
509
|
+
/**
|
|
510
|
+
* Default brain-backed {@link MemorySelector} (design/65 §6.2 / council #1: the side-query uses the MAIN
|
|
511
|
+
* brain — a cheap model is our unproven ABOVE assumption, not a CC port). Runs a tiny isolated sub-task
|
|
512
|
+
* with an `{ids}` output schema, no tools, a short budget. Returns the selected ids (validated downstream).
|
|
513
|
+
*
|
|
514
|
+
* @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
|
|
515
|
+
* longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
|
|
516
|
+
*/
|
|
517
|
+
export function createBrainMemorySelector(runner, opts = {}) {
|
|
518
|
+
const schema = Type.Object({ ids: Type.Array(Type.String()) });
|
|
519
|
+
return async (req, signal) => {
|
|
520
|
+
// Council (backlog-3): the manifest carries persisted, model-influenced content (descriptions AND
|
|
521
|
+
// now model-suggested [type] tags from typed consolidation ADDs) — sanitize it here exactly like
|
|
522
|
+
// composeSelectiveMemoryBlock does, so a hostile type/description can't smuggle wrapper tags into
|
|
523
|
+
// the side-query sub-prompt either.
|
|
524
|
+
const manifest = sanitizeUntrustedText(buildManifestText(req.manifest), ["user_memory"]);
|
|
525
|
+
const tools = req.recentTools?.length ? `\n\nTools this task will use: ${req.recentTools.join(", ")}.` : "";
|
|
526
|
+
const objective = `TASK:\n${req.objective}${tools}\n\nMEMORY MANIFEST (id: description):\n${manifest}\n\nReturn the relevant note ids.`;
|
|
527
|
+
// B-6 (round-2 audit): pre-generate the isolated session's id so a runTask THROW (prepare-time
|
|
528
|
+
// config/env/store failures — the loop itself soft-fails into a result) still leaves us a handle
|
|
529
|
+
// to release. Previously `r.sessionId` was the only handle and a throw leaked the pinned session.
|
|
530
|
+
const selectorSessionId = `memsel-${globalThis.crypto.randomUUID()}`;
|
|
531
|
+
let r;
|
|
532
|
+
try {
|
|
533
|
+
r = await runner.runTask({
|
|
534
|
+
objective,
|
|
535
|
+
systemPrompt: SELECT_PROMPT,
|
|
536
|
+
...(opts.model ? { model: opts.model } : {}),
|
|
537
|
+
sessionId: selectorSessionId,
|
|
538
|
+
tools: [],
|
|
539
|
+
outputSchema: schema,
|
|
540
|
+
enableBlockedReport: false,
|
|
541
|
+
memory: undefined, // never recurse into memory injection
|
|
542
|
+
limits: { timeoutSec: opts.timeoutSec ?? 20, maxTurns: 2 },
|
|
543
|
+
signal,
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
catch (e) {
|
|
547
|
+
// best-effort: the acquire may or may not have happened; release must not mask the real error
|
|
548
|
+
// (the pipeline degrades to inject-all on this throw, same as a soft-fail — §80 semantics).
|
|
549
|
+
try {
|
|
550
|
+
if (opts.release)
|
|
551
|
+
await opts.release(selectorSessionId);
|
|
552
|
+
}
|
|
553
|
+
catch {
|
|
554
|
+
/* TTL sweeper is the backstop */
|
|
555
|
+
}
|
|
556
|
+
throw e;
|
|
557
|
+
}
|
|
558
|
+
try {
|
|
559
|
+
// §80 (behavioral threshold-scan caught this; two council rounds missed it): runTask SOFT-FAILS without
|
|
560
|
+
// throwing (status="failed"/"timeout", structuredOutput undefined) on gateway 5xx / rate-limit / budget /
|
|
561
|
+
// no-model. Returning [] here would be indistinguishable from "the model legitimately selected nothing" —
|
|
562
|
+
// the pipeline would then inject a body-less manifest = SILENT knowledge loss, bypassing the
|
|
563
|
+
// degrade-to-inject-all guard (§8#4), which only fires on throw/timeout. So a non-completed sub-task
|
|
564
|
+
// THROWS → the pipeline degrades to inject-all (never drops knowledge). [] is legal ONLY when the
|
|
565
|
+
// sub-task COMPLETED and genuinely produced an empty selection.
|
|
566
|
+
if (r.status !== "completed") {
|
|
567
|
+
throw new Error(`memory-select sub-task did not complete (status=${r.status}) — degrading to inject-all`);
|
|
568
|
+
}
|
|
569
|
+
const out = r.structuredOutput;
|
|
570
|
+
if (!out || !Array.isArray(out.ids)) {
|
|
571
|
+
throw new Error("memory-select sub-task produced no { ids } output — degrading to inject-all");
|
|
572
|
+
}
|
|
573
|
+
return out.ids.filter((x) => typeof x === "string");
|
|
574
|
+
}
|
|
575
|
+
finally {
|
|
576
|
+
if (opts.release)
|
|
577
|
+
await opts.release(r.sessionId); // release the selector's isolated session (no leak)
|
|
578
|
+
}
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
/** Race `p` against a timeout; on timeout, fire `onTimeout` (cancels the inner work) then reject.
|
|
582
|
+
* Deliberately distinct from tool-policy.ts's private `withTimeout` (which RESOLVES a computed
|
|
583
|
+
* fallback) — the contracts differ on purpose (reject-to-degrade here vs resolve-to-deny there);
|
|
584
|
+
* both are module-private, so the divergence cannot leak (council backlog-3 DESIGN-1, accepted). */
|
|
585
|
+
function withTimeout(p, ms, onTimeout) {
|
|
586
|
+
return new Promise((resolve, reject) => {
|
|
587
|
+
const timer = setTimeout(() => {
|
|
588
|
+
onTimeout?.();
|
|
589
|
+
reject(new Error("memory-select timeout"));
|
|
590
|
+
}, ms);
|
|
591
|
+
p.then((v) => {
|
|
592
|
+
clearTimeout(timer);
|
|
593
|
+
resolve(v);
|
|
594
|
+
}, (e) => {
|
|
595
|
+
clearTimeout(timer);
|
|
596
|
+
reject(e);
|
|
597
|
+
});
|
|
598
|
+
});
|
|
599
|
+
}
|
|
600
|
+
//# sourceMappingURL=memory-recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-recall.js","sourceRoot":"","sources":["../../src/core/memory-recall.ts"],"names":[],"mappings":"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"}
|