@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,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error/budget-aware **degradation cascade** (1.39, design/21, design/17 §5C).
|
|
3
|
+
*
|
|
4
|
+
* Unlike failover (a *peer* backup whose goal is "same quality, a gateway that's actually up"),
|
|
5
|
+
* degradation **deliberately downgrades** to a cheaper / different-provider model to KEEP SERVING when
|
|
6
|
+
* the primary is rate-limited or its circuit breaker is open — accepting some quality loss instead of
|
|
7
|
+
* failing the task. Opt-in; the served turn is tagged so the Runner can surface `TaskResult.degraded`.
|
|
8
|
+
*
|
|
9
|
+
* v1 (this file) handles the two **reactive** triggers visible at the brain layer — `rate_limit` and
|
|
10
|
+
* `breaker_open`. The proactive **near-budget** trigger needs the task budget (only the Runner sees it)
|
|
11
|
+
* and is deferred to v2 (council O1); `"budget"` is reserved in `DegradeReason` for it.
|
|
12
|
+
*
|
|
13
|
+
* Detection is **structural**, not literal string-matching: the breaker-open signal is
|
|
14
|
+
* `CIRCUIT_OPEN_MARKER` (exported from circuit-breaker.ts) and the code comes from the shared
|
|
15
|
+
* `extractErrorCode`. Degradation must be the **outermost** brain in a stack (so it sees the inner
|
|
16
|
+
* failover/breaker/timeout outcomes and can downgrade on them):
|
|
17
|
+
* `createDegradingBrain({ primary: failover(breaker(timeout(brain))), fallback, fallbackModel })`.
|
|
18
|
+
*/
|
|
19
|
+
import { createAssistantMessageEventStream, } from "../internal/llm.js";
|
|
20
|
+
import { ZERO_USAGE, extractErrorCode } from "./errors.js";
|
|
21
|
+
import { CIRCUIT_OPEN_MARKER } from "./circuit-breaker.js";
|
|
22
|
+
/** Diagnostic `type` the decorator stamps on a degraded turn's message; the Runner reads it back. */
|
|
23
|
+
export const DEGRADED_DIAGNOSTIC_TYPE = "degraded";
|
|
24
|
+
const VALID_REASONS = new Set([
|
|
25
|
+
"breaker_open",
|
|
26
|
+
"rate_limit",
|
|
27
|
+
"budget",
|
|
28
|
+
"server_error",
|
|
29
|
+
"last_resort",
|
|
30
|
+
]);
|
|
31
|
+
/** CC `Kjd` parity (198 :146840): a fallback chain is capped at 3 entries. */
|
|
32
|
+
const MAX_CHAIN = 3;
|
|
33
|
+
/** Pull a degradation marker off a served message (used by the Runner to fill `TaskResult.degraded`). */
|
|
34
|
+
export function readDegradation(msg) {
|
|
35
|
+
const d = msg?.diagnostics?.find((x) => x.type === DEGRADED_DIAGNOSTIC_TYPE);
|
|
36
|
+
const det = d?.details;
|
|
37
|
+
// Strict on every field — `readDegradation` parses an externally-shaped diagnostic, so a corrupt
|
|
38
|
+
// `details` must not leak a non-string into the public `DegradeReason` union (council bug #2).
|
|
39
|
+
if (det &&
|
|
40
|
+
typeof det.from === "string" &&
|
|
41
|
+
typeof det.to === "string" &&
|
|
42
|
+
typeof det.reason === "string" &&
|
|
43
|
+
VALID_REASONS.has(det.reason)) {
|
|
44
|
+
// `chain` (design/126) is optional and equally strictly parsed: anything but an all-string array
|
|
45
|
+
// is dropped (the marker may come from a pre-chain version or a corrupt writer).
|
|
46
|
+
const chain = Array.isArray(det.chain) && det.chain.every((c) => typeof c === "string") ? det.chain : undefined;
|
|
47
|
+
return { from: det.from, to: det.to, reason: det.reason, ...(chain && { chain }) };
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
/** Classify a primary failure into a downgrade reason (structural, not literal — council #1).
|
|
52
|
+
* design/126: `server` (5xx/529/408/409, post-retry-budget) → `server_error`; `http` (404 and other
|
|
53
|
+
* odd statuses) → `last_resort`. `auth`/`invalid_request`/`network` deliberately map to NOTHING
|
|
54
|
+
* (fail loud / not this layer's job — design/126 D2). */
|
|
55
|
+
function degradeReasonOf(msg) {
|
|
56
|
+
if (msg.stopReason !== "error")
|
|
57
|
+
return undefined;
|
|
58
|
+
const code = extractErrorCode(msg.errorMessage);
|
|
59
|
+
// Breaker detection is gated on the code FIRST (codex 126 审 M1): the breaker emits `[network] <marker>…`,
|
|
60
|
+
// so only a network-coded error may be a breaker trip. A marker STRING appearing inside some other
|
|
61
|
+
// error's body (e.g. an upstream echoing our own marker text back in a 401 payload) must not convert a
|
|
62
|
+
// fail-loud auth/invalid_request into a degrade.
|
|
63
|
+
if (code === "network" && (msg.errorMessage ?? "").includes(CIRCUIT_OPEN_MARKER))
|
|
64
|
+
return "breaker_open";
|
|
65
|
+
if (code === "rate_limit")
|
|
66
|
+
return "rate_limit";
|
|
67
|
+
if (code === "server")
|
|
68
|
+
return "server_error";
|
|
69
|
+
if (code === "http")
|
|
70
|
+
return "last_resort";
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
function tagDegraded(msg, info) {
|
|
74
|
+
const diag = {
|
|
75
|
+
type: DEGRADED_DIAGNOSTIC_TYPE,
|
|
76
|
+
timestamp: Date.now(),
|
|
77
|
+
details: { from: info.from, to: info.to, reason: info.reason, ...(info.chain && { chain: info.chain }) },
|
|
78
|
+
};
|
|
79
|
+
// REPLACE any existing degraded marker rather than append (codex 126 审 M4): when a hop's brain is
|
|
80
|
+
// itself a degrading stack, `readDegradation`'s first-match would surface the INNER hop-local marker
|
|
81
|
+
// and lose the outer primary→chain record — the outermost decorator owns the authoritative marker.
|
|
82
|
+
msg.diagnostics = [...(msg.diagnostics ?? []).filter((d) => d.type !== DEGRADED_DIAGNOSTIC_TYPE), diag];
|
|
83
|
+
}
|
|
84
|
+
function errorMessageOf(model, e, aborted) {
|
|
85
|
+
return {
|
|
86
|
+
role: "assistant",
|
|
87
|
+
content: [{ type: "text", text: "" }],
|
|
88
|
+
api: model.api,
|
|
89
|
+
provider: model.provider,
|
|
90
|
+
model: model.id,
|
|
91
|
+
stopReason: aborted ? "aborted" : "error",
|
|
92
|
+
errorMessage: e instanceof Error ? e.message : String(e),
|
|
93
|
+
usage: ZERO_USAGE,
|
|
94
|
+
timestamp: Date.now(),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function terminalOf(message) {
|
|
98
|
+
return message.stopReason === "error"
|
|
99
|
+
? { type: "error", reason: "error", error: message }
|
|
100
|
+
: { type: "done", reason: message.stopReason, message };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Consume one brain stream, **holding the leading `start`** until the first real content event (like
|
|
104
|
+
* failover) so an error-before-content can be swallowed and replaced without a duplicated `start`.
|
|
105
|
+
* Forwards live content to `sink`. Shared by the primary and fallback passes (council: avoid drift).
|
|
106
|
+
*/
|
|
107
|
+
async function forward(stream, sink) {
|
|
108
|
+
let sawContent = false;
|
|
109
|
+
let heldStart;
|
|
110
|
+
let terminal;
|
|
111
|
+
for await (const ev of stream) {
|
|
112
|
+
if (ev.type === "done" || ev.type === "error") {
|
|
113
|
+
terminal = ev;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
if (ev.type === "start" && !sawContent) {
|
|
117
|
+
heldStart = ev;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (!sawContent) {
|
|
121
|
+
sawContent = true;
|
|
122
|
+
if (heldStart)
|
|
123
|
+
sink.push(heldStart);
|
|
124
|
+
}
|
|
125
|
+
sink.push(ev);
|
|
126
|
+
}
|
|
127
|
+
const message = await stream.result();
|
|
128
|
+
return { message, sawContent, heldStart, terminal };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* design/131 (codex 131 审 A) — resilience-standdown pass-through: forward one brain's stream
|
|
132
|
+
* verbatim, but keep the decorator discipline that a REJECTING inner brain (throw instead of an
|
|
133
|
+
* error event) still leaves a terminal on the returned stream — otherwise `result()` never
|
|
134
|
+
* resolves and the harness hangs (the same class as the degradation-brain blocker).
|
|
135
|
+
*/
|
|
136
|
+
export function passthroughStream(brain, model, context, options) {
|
|
137
|
+
const out = createAssistantMessageEventStream();
|
|
138
|
+
void (async () => {
|
|
139
|
+
try {
|
|
140
|
+
const inner = await brain.stream(model, context, options);
|
|
141
|
+
for await (const ev of inner)
|
|
142
|
+
out.push(ev);
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
const aborted = options?.signal?.aborted === true ||
|
|
146
|
+
(e instanceof Error && (e.name === "AbortError" || e.name === "TimeoutError"));
|
|
147
|
+
out.push({ type: "error", reason: "error", error: errorMessageOf(model, e, aborted) });
|
|
148
|
+
}
|
|
149
|
+
})();
|
|
150
|
+
return out;
|
|
151
|
+
}
|
|
152
|
+
export function createDegradingBrain(opts) {
|
|
153
|
+
// Form-dependent trigger default (codex 126 审 M3): new chain form → full four-class CC gate; legacy
|
|
154
|
+
// pair → the pre-126 two-trigger gate (no silent behavior change for existing deployments).
|
|
155
|
+
const triggers = new Set(opts.downgradeOn ?? (opts.fallbacks ? ["rate_limit", "breaker_open", "server_error", "last_resort"] : ["rate_limit", "breaker_open"]));
|
|
156
|
+
// Normalize the chain ONCE at construction: `fallbacks` wins; the legacy pair is the chain-of-one
|
|
157
|
+
// sugar. Dedupe by model.id + cap at 3 (CC Kjd parity). Same-as-failed-model skipping is per-call
|
|
158
|
+
// (the requested model is only known then).
|
|
159
|
+
const rawHops = opts.fallbacks ?? (opts.fallback && opts.fallbackModel ? [{ brain: opts.fallback, model: opts.fallbackModel }] : []);
|
|
160
|
+
const seenIds = new Set();
|
|
161
|
+
const hops = rawHops.filter((h) => (seenIds.has(h.model.id) ? false : (seenIds.add(h.model.id), true))).slice(0, MAX_CHAIN);
|
|
162
|
+
if (hops.length === 0) {
|
|
163
|
+
throw new Error("createDegradingBrain: provide `fallbacks` (design/126 chain) or the legacy `fallback`+`fallbackModel` pair");
|
|
164
|
+
}
|
|
165
|
+
const stream = (model, context, options) => {
|
|
166
|
+
// design/131 (service [404]): per-task "fail rather than degrade" intent — pass the primary
|
|
167
|
+
// through untouched (its failure surfaces as-is; no fallback chain, no marker). Absent ⇒ today.
|
|
168
|
+
// codex 131 审 A: the pass-through still wraps a REJECTING primary into an error terminal (the
|
|
169
|
+
// "never leave `out` terminal-less" discipline every path in this file holds) — only the
|
|
170
|
+
// degrade/failover semantics stand aside, not the stream-protocol normalization.
|
|
171
|
+
if (options?.resilience?.allowDegrade === false) {
|
|
172
|
+
return passthroughStream(opts.primary, model, context, options);
|
|
173
|
+
}
|
|
174
|
+
const out = createAssistantMessageEventStream();
|
|
175
|
+
void (async () => {
|
|
176
|
+
// Track whether we entered the degrade path so a LATE throw still surfaces the marker (council #3),
|
|
177
|
+
// and so the whole body can be wrapped in try/catch — a brain that rejects (rather than emitting an
|
|
178
|
+
// error event) must NOT leave `out` terminal-less, or `result()` never resolves and the harness
|
|
179
|
+
// hangs forever (council blocker; matches createCircuitBreakerBrain's discipline).
|
|
180
|
+
let degradeInfo;
|
|
181
|
+
let lastAttempted = model; // the model actually being served when a throw escapes (codex 126 审 MIN2)
|
|
182
|
+
try {
|
|
183
|
+
// Clear the primary's per-call auth + identity for every hop so each fallback uses its OWN
|
|
184
|
+
// config creds and doesn't leak the primary's metadata to another provider (council #5).
|
|
185
|
+
// Caller hooks (onPayload/onResponse) are kept so the caller still sees the calls.
|
|
186
|
+
const fbOptions = options
|
|
187
|
+
? { ...options, apiKey: undefined, headers: undefined, metadata: undefined }
|
|
188
|
+
: undefined;
|
|
189
|
+
// design/126 chain walk: primary first, then each eligible hop. A hop is taken only on a
|
|
190
|
+
// ZERO-CONTENT failure whose reason is in the trigger set (same predicate as the classic single
|
|
191
|
+
// hop); entries whose model id equals the model that just failed are skipped (CC :473458 skip
|
|
192
|
+
// discipline — without CC's collapse re-dispatch, see design/126 D3).
|
|
193
|
+
let current = await forward(await opts.primary.stream(model, context, options), out);
|
|
194
|
+
let failedModelId = model.id;
|
|
195
|
+
const chainPath = [];
|
|
196
|
+
for (const hop of hops) {
|
|
197
|
+
const reason = degradeReasonOf(current.message);
|
|
198
|
+
const eligible = !current.sawContent && options?.signal?.aborted !== true && reason !== undefined && triggers.has(reason);
|
|
199
|
+
if (!eligible)
|
|
200
|
+
break;
|
|
201
|
+
if (hop.model.id === failedModelId)
|
|
202
|
+
continue; // same model as the one that just failed — skip
|
|
203
|
+
chainPath.push(hop.model.id);
|
|
204
|
+
degradeInfo = {
|
|
205
|
+
from: model.id,
|
|
206
|
+
to: hop.model.id,
|
|
207
|
+
reason: degradeInfo?.reason ?? reason, // FIRST trigger is the recorded reason
|
|
208
|
+
chain: [...chainPath],
|
|
209
|
+
};
|
|
210
|
+
failedModelId = hop.model.id;
|
|
211
|
+
lastAttempted = hop.model;
|
|
212
|
+
current = await forward(await hop.brain.stream(hop.model, context, fbOptions), out);
|
|
213
|
+
}
|
|
214
|
+
if (!degradeInfo) {
|
|
215
|
+
// Never degraded (healthy primary, non-trigger failure, or content already streamed) →
|
|
216
|
+
// propagate the primary unchanged.
|
|
217
|
+
if (!current.sawContent && current.heldStart)
|
|
218
|
+
out.push(current.heldStart);
|
|
219
|
+
out.push(current.terminal ?? terminalOf(current.message));
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// Tag the ACTUAL message the terminal carries (so the Runner sees it in message_end). Set it
|
|
223
|
+
// whether the last hop succeeded OR also failed (council #3) — callers always learn it degraded.
|
|
224
|
+
const fbFinal = current.terminal?.type === "done"
|
|
225
|
+
? current.terminal.message
|
|
226
|
+
: current.terminal?.type === "error"
|
|
227
|
+
? current.terminal.error
|
|
228
|
+
: current.message;
|
|
229
|
+
tagDegraded(fbFinal, degradeInfo);
|
|
230
|
+
if (!current.sawContent && current.heldStart)
|
|
231
|
+
out.push(current.heldStart);
|
|
232
|
+
out.push(current.terminal ?? terminalOf(current.message));
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
// A brain rejected or the loop threw — emit a terminal so result() resolves (no hang). Preserve
|
|
236
|
+
// the degradation marker if we'd already committed to degrading.
|
|
237
|
+
const aborted = options?.signal?.aborted === true ||
|
|
238
|
+
(e instanceof Error && (e.name === "AbortError" || e.name === "TimeoutError"));
|
|
239
|
+
const errMsg = errorMessageOf(lastAttempted, e, aborted);
|
|
240
|
+
if (degradeInfo)
|
|
241
|
+
tagDegraded(errMsg, degradeInfo);
|
|
242
|
+
out.push({ type: "error", reason: aborted ? "aborted" : "error", error: errMsg });
|
|
243
|
+
}
|
|
244
|
+
})();
|
|
245
|
+
return out;
|
|
246
|
+
};
|
|
247
|
+
return { stream };
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=degrading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"degrading.js","sourceRoot":"","sources":["../../src/brain/degrading.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured brain error so the *kind* of failure is machine-distinguishable end-to-end (the message
|
|
3
|
+
* is prefixed `[code]`, which the Runner lifts into `TaskResult.errorCode`). This lets an external
|
|
4
|
+
* caller react correctly without string-matching: `auth` → the API key is wrong, **stop and fix it**
|
|
5
|
+
* (it's not retried, so the caller gets a fast failure); `rate_limit` → back off; `network`/`server`
|
|
6
|
+
* → a transient outage worth retrying. Only `network`/`server`/`rate_limit` are retried by the brains.
|
|
7
|
+
*/
|
|
8
|
+
import type { Usage } from "../internal/llm.js";
|
|
9
|
+
/** A zeroed `Usage` for synthetic error/short-circuit assistant messages (no tokens spent). Shared by
|
|
10
|
+
* the circuit-breaker, degradation, and routing brains so the empty-usage shape lives in one place. */
|
|
11
|
+
export declare const ZERO_USAGE: Usage;
|
|
12
|
+
/** The single source of truth for brain error codes — the type, the `[code]` parser, and the prefix
|
|
13
|
+
* stripper all derive from this one list, so adding a code can't silently diverge across call sites. */
|
|
14
|
+
declare const BRAIN_ERROR_CODES: readonly ["auth", "rate_limit", "invalid_request", "server", "network", "http"];
|
|
15
|
+
export type BrainErrorCode = (typeof BRAIN_ERROR_CODES)[number];
|
|
16
|
+
export declare class BrainError extends Error {
|
|
17
|
+
readonly code: BrainErrorCode;
|
|
18
|
+
readonly status?: number;
|
|
19
|
+
constructor(code: BrainErrorCode, detail: string, status?: number);
|
|
20
|
+
}
|
|
21
|
+
/** Map an HTTP status to an error class. 401/403 = auth (don't retry); 429 = rate limit; 5xx = server. */
|
|
22
|
+
export declare function classifyHttp(status: number): BrainErrorCode;
|
|
23
|
+
/** Lift the machine-readable code back out of a `[code] …` prefixed `errorMessage` (the single shared
|
|
24
|
+
* parser — circuit breaker, degradation, and the Runner all read the prefix this way, council #7). */
|
|
25
|
+
export declare function extractErrorCode(errorMessage: string | undefined): BrainErrorCode | undefined;
|
|
26
|
+
/** Strip a leading `[code] ` prefix (including the trailing space) from an `errorMessage`, leaving the
|
|
27
|
+
* human text. Pairs with {@link extractErrorCode} so a caller can lift the code and clean the message
|
|
28
|
+
* without re-hardcoding the code list (the Runner does both when assembling `TaskResult`). */
|
|
29
|
+
export declare function stripErrorCodePrefix(errorMessage: string): string;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/brain/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;wGACwG;AACxG,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF;yGACyG;AACzG,QAAA,MAAM,iBAAiB,iFAAkF,CAAC;AAC1G,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAMlE;AAED,0GAA0G;AAC1G,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAY3D;AAKD;uGACuG;AACvG,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAG7F;AAED;;+FAE+F;AAC/F,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** A zeroed `Usage` for synthetic error/short-circuit assistant messages (no tokens spent). Shared by
|
|
2
|
+
* the circuit-breaker, degradation, and routing brains so the empty-usage shape lives in one place. */
|
|
3
|
+
export const ZERO_USAGE = {
|
|
4
|
+
input: 0,
|
|
5
|
+
output: 0,
|
|
6
|
+
cacheRead: 0,
|
|
7
|
+
cacheWrite: 0,
|
|
8
|
+
totalTokens: 0,
|
|
9
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
10
|
+
};
|
|
11
|
+
/** The single source of truth for brain error codes — the type, the `[code]` parser, and the prefix
|
|
12
|
+
* stripper all derive from this one list, so adding a code can't silently diverge across call sites. */
|
|
13
|
+
const BRAIN_ERROR_CODES = ["auth", "rate_limit", "invalid_request", "server", "network", "http"];
|
|
14
|
+
export class BrainError extends Error {
|
|
15
|
+
code;
|
|
16
|
+
status;
|
|
17
|
+
constructor(code, detail, status) {
|
|
18
|
+
super(`[${code}] ${detail}`);
|
|
19
|
+
this.name = "BrainError";
|
|
20
|
+
this.code = code;
|
|
21
|
+
this.status = status;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Map an HTTP status to an error class. 401/403 = auth (don't retry); 429 = rate limit; 5xx = server. */
|
|
25
|
+
export function classifyHttp(status) {
|
|
26
|
+
if (status === 401 || status === 403)
|
|
27
|
+
return "auth";
|
|
28
|
+
if (status === 429)
|
|
29
|
+
return "rate_limit";
|
|
30
|
+
if (status === 400 || status === 422)
|
|
31
|
+
return "invalid_request";
|
|
32
|
+
// CC-parity round-3: 408 (request timeout) and 409 (lock/conflict timeout) are TRANSIENT gateway blips, not
|
|
33
|
+
// terminal — CC's withRetry retries both (claude.ts withRetry: `status===408 || status===409 → retry`). As
|
|
34
|
+
// plain "http" they were excluded from the circuit-breaker count + degrade triggers + the connect-retry loop,
|
|
35
|
+
// so a single 408/409 from an LLM gateway killed a whole unattended task. Bucket them with "server" (counted,
|
|
36
|
+
// degrade-eligible, retried — see the stream-engine connect-retry predicate).
|
|
37
|
+
if (status === 408 || status === 409)
|
|
38
|
+
return "server";
|
|
39
|
+
if (status >= 500)
|
|
40
|
+
return "server";
|
|
41
|
+
return "http";
|
|
42
|
+
}
|
|
43
|
+
const CODE_ALTERNATION = BRAIN_ERROR_CODES.join("|");
|
|
44
|
+
const CODE_RE = new RegExp(`^\\[(${CODE_ALTERNATION})\\]`);
|
|
45
|
+
const CODE_PREFIX_RE = new RegExp(`^\\[(?:${CODE_ALTERNATION})\\]\\s*`);
|
|
46
|
+
/** Lift the machine-readable code back out of a `[code] …` prefixed `errorMessage` (the single shared
|
|
47
|
+
* parser — circuit breaker, degradation, and the Runner all read the prefix this way, council #7). */
|
|
48
|
+
export function extractErrorCode(errorMessage) {
|
|
49
|
+
const m = errorMessage ? CODE_RE.exec(errorMessage) : null;
|
|
50
|
+
return m ? m[1] : undefined;
|
|
51
|
+
}
|
|
52
|
+
/** Strip a leading `[code] ` prefix (including the trailing space) from an `errorMessage`, leaving the
|
|
53
|
+
* human text. Pairs with {@link extractErrorCode} so a caller can lift the code and clean the message
|
|
54
|
+
* without re-hardcoding the code list (the Runner does both when assembling `TaskResult`). */
|
|
55
|
+
export function stripErrorCodePrefix(errorMessage) {
|
|
56
|
+
return errorMessage.replace(CODE_PREFIX_RE, "");
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/brain/errors.ts"],"names":[],"mappings":"AASA;wGACwG;AACxG,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;CACrE,CAAC;AAEF;yGACyG;AACzG,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAG1G,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IACrB,MAAM,CAAU;IACzB,YAAY,IAAoB,EAAE,MAAc,EAAE,MAAe;QAC/D,KAAK,CAAC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,0GAA0G;AAC1G,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IACpD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,YAAY,CAAC;IACxC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,iBAAiB,CAAC;IAC/D,4GAA4G;IAC5G,2GAA2G;IAC3G,8GAA8G;IAC9G,8GAA8G;IAC9G,8EAA8E;IAC9E,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,QAAQ,CAAC;IACtD,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,CAAC;AAC3D,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,UAAU,gBAAgB,UAAU,CAAC,CAAC;AACxE;uGACuG;AACvG,MAAM,UAAU,gBAAgB,CAAC,YAAgC;IAC/D,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;+FAE+F;AAC/F,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,OAAO,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Brain } from "../core/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Compose several brains into one with ordered failover (primary → fallbacks).
|
|
4
|
+
*
|
|
5
|
+
* The happy path streams live from the first brain. A brain is only failed over to the next when it
|
|
6
|
+
* fails **before emitting any content** (e.g. the gateway is down / connection refused, OR a
|
|
7
|
+
* first-token timeout that fires after the stream opened but before any delta) — a clean upfront
|
|
8
|
+
* failure. The leading `start` event is **held back** until the first real content event, so an
|
|
9
|
+
* error between `start` and the first delta can still fail over without ever having forwarded a
|
|
10
|
+
* (then-duplicated) `start`. Once real content (text/thinking/tool) has streamed, the outcome
|
|
11
|
+
* (including a mid-stream error or abort) is propagated rather than restarted, so the consumer never
|
|
12
|
+
* sees duplicate `start`/text events. The last brain's result is always final.
|
|
13
|
+
*
|
|
14
|
+
* Each underlying brain keeps its own retry policy (e.g. `createOpenAIBrain({ maxRetries })`);
|
|
15
|
+
* failover is the cross-gateway layer on top.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createFailoverBrain(brains: Brain[]): Brain;
|
|
18
|
+
//# sourceMappingURL=failover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failover.d.ts","sourceRoot":"","sources":["../../src/brain/failover.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CA0G1D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { createAssistantMessageEventStream, } from "../internal/llm.js";
|
|
2
|
+
import { extractErrorCode } from "./errors.js";
|
|
3
|
+
import { emitBrainTelemetry } from "./status-sink.js";
|
|
4
|
+
import { passthroughStream } from "./degrading.js";
|
|
5
|
+
/**
|
|
6
|
+
* Compose several brains into one with ordered failover (primary → fallbacks).
|
|
7
|
+
*
|
|
8
|
+
* The happy path streams live from the first brain. A brain is only failed over to the next when it
|
|
9
|
+
* fails **before emitting any content** (e.g. the gateway is down / connection refused, OR a
|
|
10
|
+
* first-token timeout that fires after the stream opened but before any delta) — a clean upfront
|
|
11
|
+
* failure. The leading `start` event is **held back** until the first real content event, so an
|
|
12
|
+
* error between `start` and the first delta can still fail over without ever having forwarded a
|
|
13
|
+
* (then-duplicated) `start`. Once real content (text/thinking/tool) has streamed, the outcome
|
|
14
|
+
* (including a mid-stream error or abort) is propagated rather than restarted, so the consumer never
|
|
15
|
+
* sees duplicate `start`/text events. The last brain's result is always final.
|
|
16
|
+
*
|
|
17
|
+
* Each underlying brain keeps its own retry policy (e.g. `createOpenAIBrain({ maxRetries })`);
|
|
18
|
+
* failover is the cross-gateway layer on top.
|
|
19
|
+
*/
|
|
20
|
+
export function createFailoverBrain(brains) {
|
|
21
|
+
if (brains.length === 0) {
|
|
22
|
+
throw new Error("createFailoverBrain: need at least one brain");
|
|
23
|
+
}
|
|
24
|
+
const stream = (model, context, options) => {
|
|
25
|
+
// design/131 (service [404]): per-task "fail rather than fail over" intent — only the primary is
|
|
26
|
+
// tried; a clean upfront failure surfaces as-is (no gateway swap polluting benchmark attribution).
|
|
27
|
+
// codex 131 审 A: pass-through keeps the reject→error-terminal normalization (shared helper).
|
|
28
|
+
if (options?.resilience?.allowFailover === false) {
|
|
29
|
+
return passthroughStream(brains[0], model, context, options);
|
|
30
|
+
}
|
|
31
|
+
const out = createAssistantMessageEventStream();
|
|
32
|
+
void (async () => {
|
|
33
|
+
// try/catch so a brain that REJECTS (rather than emitting an error event) still leaves a terminal
|
|
34
|
+
// on `out` — otherwise `result()` never resolves and the harness hangs (same class as the
|
|
35
|
+
// degradation-brain blocker; matches createCircuitBreakerBrain's discipline).
|
|
36
|
+
let lastFailedCode; // service [398] C1: why the previous hop was abandoned
|
|
37
|
+
try {
|
|
38
|
+
for (let i = 0; i < brains.length; i++) {
|
|
39
|
+
const isLast = i === brains.length - 1;
|
|
40
|
+
const inner = await brains[i].stream(model, context, options);
|
|
41
|
+
let sawContent = false;
|
|
42
|
+
let heldStart;
|
|
43
|
+
let terminal;
|
|
44
|
+
for await (const ev of inner) {
|
|
45
|
+
if (ev.type === "done" || ev.type === "error") {
|
|
46
|
+
terminal = ev;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
if (ev.type === "start" && !sawContent) {
|
|
50
|
+
heldStart = ev; // hold the leading start; only forward it once real content arrives
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (!sawContent) {
|
|
54
|
+
sawContent = true;
|
|
55
|
+
if (heldStart)
|
|
56
|
+
out.push(heldStart); // flush the held start right before the first content
|
|
57
|
+
}
|
|
58
|
+
out.push(ev); // forward live
|
|
59
|
+
}
|
|
60
|
+
const message = await inner.result();
|
|
61
|
+
// design/118 follow-up (codex review): a MODEL-OUTPUT failure is not a gateway failure. A
|
|
62
|
+
// `length_empty` cut (max_tokens exhausted with no answer text — possible with zero forwarded
|
|
63
|
+
// deltas when reasoning happens server-side) would otherwise look like a clean upfront failure
|
|
64
|
+
// and burn the whole fallback chain per attempt, even though every fallback gets the same
|
|
65
|
+
// budget and dies the same way. Return it to the caller's recovery logic (compaction budget
|
|
66
|
+
// escalation) instead.
|
|
67
|
+
const cleanUpfrontFailure = message.stopReason === "error" &&
|
|
68
|
+
options?.signal?.aborted !== true &&
|
|
69
|
+
!sawContent &&
|
|
70
|
+
message.errorKind !== "length_empty";
|
|
71
|
+
if (cleanUpfrontFailure && !isLast) {
|
|
72
|
+
// service [398] C1: remember WHY this hop was abandoned — the eventual telemetry frame
|
|
73
|
+
// carries the last failed hop's canonical code (the reason the switch happened).
|
|
74
|
+
lastFailedCode = extractErrorCode(message.errorMessage);
|
|
75
|
+
continue; // try the next brain; nothing was forwarded yet
|
|
76
|
+
}
|
|
77
|
+
// service [398] C1 (clay 点名): a call served from a FALLBACK hop was previously invisible —
|
|
78
|
+
// same-model gateway swaps leave `brain.call`'s model field unchanged. Fire-and-forget to the
|
|
79
|
+
// Runner's telemetry sink (no-op standalone); emitted whether the hop succeeded or is the
|
|
80
|
+
// last hop's own failure (either way the chain LEFT the primary — that's the signal).
|
|
81
|
+
if (i > 0) {
|
|
82
|
+
emitBrainTelemetry({
|
|
83
|
+
kind: "failover",
|
|
84
|
+
servedIndex: i,
|
|
85
|
+
total: brains.length,
|
|
86
|
+
...(lastFailedCode !== undefined ? { errorCode: lastFailedCode } : {}),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
out.push(terminal ?? {
|
|
90
|
+
type: "done",
|
|
91
|
+
reason: message.stopReason,
|
|
92
|
+
message,
|
|
93
|
+
});
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
const aborted = options?.signal?.aborted === true ||
|
|
99
|
+
(e instanceof Error && (e.name === "AbortError" || e.name === "TimeoutError"));
|
|
100
|
+
const errorMsg = {
|
|
101
|
+
role: "assistant",
|
|
102
|
+
content: [{ type: "text", text: "" }],
|
|
103
|
+
api: model.api,
|
|
104
|
+
provider: model.provider,
|
|
105
|
+
model: model.id,
|
|
106
|
+
stopReason: aborted ? "aborted" : "error",
|
|
107
|
+
errorMessage: e instanceof Error ? e.message : String(e),
|
|
108
|
+
usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
|
|
109
|
+
timestamp: Date.now(),
|
|
110
|
+
};
|
|
111
|
+
out.push({ type: "error", reason: aborted ? "aborted" : "error", error: errorMsg });
|
|
112
|
+
}
|
|
113
|
+
})();
|
|
114
|
+
return out;
|
|
115
|
+
};
|
|
116
|
+
return { stream };
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=failover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failover.js","sourceRoot":"","sources":["../../src/brain/failover.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,iCAAiC,GAClC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC1D,iGAAiG;QACjG,mGAAmG;QACnG,6FAA6F;QAC7F,IAAI,OAAO,EAAE,UAAU,EAAE,aAAa,KAAK,KAAK,EAAE,CAAC;YACjD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,GAAG,GAAG,iCAAiC,EAAE,CAAC;QAEhD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,kGAAkG;YAClG,0FAA0F;YAC1F,8EAA8E;YAC9E,IAAI,cAAkC,CAAC,CAAC,uDAAuD;YAC/F,IAAI,CAAC;gBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;oBACvC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBAE9D,IAAI,UAAU,GAAG,KAAK,CAAC;oBACvB,IAAI,SAA4C,CAAC;oBACjD,IAAI,QAA2C,CAAC;oBAChD,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;wBAC7B,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC9C,QAAQ,GAAG,EAAE,CAAC;4BACd,MAAM;wBACR,CAAC;wBACD,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;4BACvC,SAAS,GAAG,EAAE,CAAC,CAAC,oEAAoE;4BACpF,SAAS;wBACX,CAAC;wBACD,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,UAAU,GAAG,IAAI,CAAC;4BAClB,IAAI,SAAS;gCAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,sDAAsD;wBAC5F,CAAC;wBACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;oBAC/B,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;oBAErC,0FAA0F;oBAC1F,8FAA8F;oBAC9F,+FAA+F;oBAC/F,0FAA0F;oBAC1F,4FAA4F;oBAC5F,uBAAuB;oBACvB,MAAM,mBAAmB,GACvB,OAAO,CAAC,UAAU,KAAK,OAAO;wBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI;wBACjC,CAAC,UAAU;wBACX,OAAO,CAAC,SAAS,KAAK,cAAc,CAAC;oBACvC,IAAI,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC;wBACnC,uFAAuF;wBACvF,iFAAiF;wBACjF,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;wBACxD,SAAS,CAAC,gDAAgD;oBAC5D,CAAC;oBAED,2FAA2F;oBAC3F,8FAA8F;oBAC9F,0FAA0F;oBAC1F,sFAAsF;oBACtF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBACV,kBAAkB,CAAC;4BACjB,IAAI,EAAE,UAAU;4BAChB,WAAW,EAAE,CAAC;4BACd,KAAK,EAAE,MAAM,CAAC,MAAM;4BACpB,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACvE,CAAC,CAAC;oBACL,CAAC;oBACD,GAAG,CAAC,IAAI,CACN,QAAQ,IAAI;wBACV,IAAI,EAAE,MAAM;wBACZ,MAAM,EAAE,OAAO,CAAC,UAAgE;wBAChF,OAAO;qBACR,CACF,CAAC;oBACF,OAAO;gBACT,CAAC;YACF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACV,MAAM,OAAO,GACX,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI;oBACjC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC;gBACjF,MAAM,QAAQ,GAAqB;oBACjC,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;oBACrC,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,EAAE,KAAK,CAAC,EAAE;oBACf,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;oBACzC,YAAY,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxD,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACjJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-party model presets (design/119, CC 2.1.198 rebaseline).
|
|
3
|
+
*
|
|
4
|
+
* sema stays caller-injects-`Model` by design (no baked catalog — the CC catalog/alias/family layer
|
|
5
|
+
* is a product surface we deliberately don't carry). What IS worth shipping is the per-model
|
|
6
|
+
* CAPABILITY facts a caller can't guess from the docs page: the Fable-5-class wire contract
|
|
7
|
+
* (adaptive thinking form, effort tiers, temperature rejection) that a wrong guess turns into a
|
|
8
|
+
* hard 400. These presets are DATA, not mechanism — every field can be overridden by the caller.
|
|
9
|
+
*
|
|
10
|
+
* Pricing is deliberately NOT baked (CC 198 doesn't bake it either): `cost` defaults to zeros and a
|
|
11
|
+
* deployment that wants cost accounting fills in the current official per-MTok rates.
|
|
12
|
+
*/
|
|
13
|
+
import type { AnthropicMessagesCompat, Model } from "../internal/llm.js";
|
|
14
|
+
/**
|
|
15
|
+
* The Fable-5-class Anthropic wire contract (CC 2.1.198 capability bits, design/119 P0):
|
|
16
|
+
* - `thinkingMode: "adaptive"` — `thinking: { type: "adaptive" }`, NO budget_tokens (400 on budget).
|
|
17
|
+
* - `effortLevels` — the full five-tier `output_config.effort` range (fable-5 has `xhigh_effort` +
|
|
18
|
+
* `max_effort`; a model without those bits should declare a shorter list and higher requests clamp).
|
|
19
|
+
* - `supportsTemperature: false` — CC never sends temperature to this class, thinking on OR off.
|
|
20
|
+
*/
|
|
21
|
+
export declare const FABLE_5_COMPAT: AnthropicMessagesCompat;
|
|
22
|
+
/**
|
|
23
|
+
* Fable-5 behavioral guidance (CC 2.1.198 `fable_5_mitigations` — Anthropic's own runtime patches
|
|
24
|
+
* for this model class's known behavior pitfalls, adapted; design/119 S3). Carried on the Model as
|
|
25
|
+
* `promptGuidance` DATA — the injection mechanism (`Model.promptGuidance` → system-prompt tail) is
|
|
26
|
+
* generic and model-name-free.
|
|
27
|
+
*/
|
|
28
|
+
export declare const FABLE_5_PROMPT_GUIDANCE: string[];
|
|
29
|
+
/**
|
|
30
|
+
* A ready-to-use `claude-fable-5` {@link Model} (CC 2.1.198 registry facts: 1M-token native context
|
|
31
|
+
* window, 64k default max output — the 128k tier is opt-in via `maxTokens` override, knowledge
|
|
32
|
+
* cutoff Jan 2026, `default_effort: "high"`). Override anything per deployment; set `cost` for
|
|
33
|
+
* accounting (not baked — see module note).
|
|
34
|
+
*/
|
|
35
|
+
export declare function fable5Model(overrides?: Partial<Model>): Model;
|
|
36
|
+
//# sourceMappingURL=model-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-presets.d.ts","sourceRoot":"","sources":["../../src/brain/model-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,uBAI5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAO3C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAoBjE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Fable-5-class Anthropic wire contract (CC 2.1.198 capability bits, design/119 P0):
|
|
3
|
+
* - `thinkingMode: "adaptive"` — `thinking: { type: "adaptive" }`, NO budget_tokens (400 on budget).
|
|
4
|
+
* - `effortLevels` — the full five-tier `output_config.effort` range (fable-5 has `xhigh_effort` +
|
|
5
|
+
* `max_effort`; a model without those bits should declare a shorter list and higher requests clamp).
|
|
6
|
+
* - `supportsTemperature: false` — CC never sends temperature to this class, thinking on OR off.
|
|
7
|
+
*/
|
|
8
|
+
export const FABLE_5_COMPAT = {
|
|
9
|
+
thinkingMode: "adaptive",
|
|
10
|
+
effortLevels: ["low", "medium", "high", "xhigh", "max"],
|
|
11
|
+
supportsTemperature: false,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Fable-5 behavioral guidance (CC 2.1.198 `fable_5_mitigations` — Anthropic's own runtime patches
|
|
15
|
+
* for this model class's known behavior pitfalls, adapted; design/119 S3). Carried on the Model as
|
|
16
|
+
* `promptGuidance` DATA — the injection mechanism (`Model.promptGuidance` → system-prompt tail) is
|
|
17
|
+
* generic and model-name-free.
|
|
18
|
+
*/
|
|
19
|
+
export const FABLE_5_PROMPT_GUIDANCE = [
|
|
20
|
+
// CC Wmf: the final message carries everything / lead with outcome.
|
|
21
|
+
"Your final message of a turn is the only text the caller is guaranteed to read. Put every conclusion, answer, and deliverable in it — lead with the outcome, then supporting detail. Never leave a result only in an intermediate message or in your reasoning.",
|
|
22
|
+
// CC Xmf: autonomous operation — end-turn self-check, review before state-changing actions.
|
|
23
|
+
"When operating autonomously: before ending your turn, check that the task is actually complete (not just planned); before any state-changing action, re-verify that the evidence supports that specific action rather than pattern-matching a familiar case.",
|
|
24
|
+
// CC zmf: tool parameters take exactly one JSON value each.
|
|
25
|
+
"When calling tools, provide exactly ONE complete JSON value per parameter — never concatenate multiple values, never truncate, never wrap a value in commentary.",
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* A ready-to-use `claude-fable-5` {@link Model} (CC 2.1.198 registry facts: 1M-token native context
|
|
29
|
+
* window, 64k default max output — the 128k tier is opt-in via `maxTokens` override, knowledge
|
|
30
|
+
* cutoff Jan 2026, `default_effort: "high"`). Override anything per deployment; set `cost` for
|
|
31
|
+
* accounting (not baked — see module note).
|
|
32
|
+
*/
|
|
33
|
+
export function fable5Model(overrides = {}) {
|
|
34
|
+
return {
|
|
35
|
+
id: "claude-fable-5",
|
|
36
|
+
name: "Claude Fable 5",
|
|
37
|
+
api: "anthropic-messages",
|
|
38
|
+
provider: "anthropic",
|
|
39
|
+
baseUrl: "https://api.anthropic.com",
|
|
40
|
+
reasoning: true,
|
|
41
|
+
defaultThinking: "high",
|
|
42
|
+
input: ["text", "image"],
|
|
43
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
44
|
+
contextWindow: 1_000_000,
|
|
45
|
+
maxTokens: 64_000,
|
|
46
|
+
// design/123 D2: CC 198's structural coefficient for the NEWER model families (its lb table:
|
|
47
|
+
// claude-3.x / opus·sonnet-4-x / haiku-4-5 → chars/4; sonnet-5/fable-5 class → chars/3).
|
|
48
|
+
charsPerToken: 3,
|
|
49
|
+
compat: { ...FABLE_5_COMPAT },
|
|
50
|
+
promptGuidance: [...FABLE_5_PROMPT_GUIDANCE],
|
|
51
|
+
...overrides,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=model-presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-presets.js","sourceRoot":"","sources":["../../src/brain/model-presets.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;IACvD,mBAAmB,EAAE,KAAK;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,oEAAoE;IACpE,iQAAiQ;IACjQ,4FAA4F;IAC5F,8PAA8P;IAC9P,4DAA4D;IAC5D,kKAAkK;CACnK,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,YAA4B,EAAE;IACxD,OAAO;QACL,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,2BAA2B;QACpC,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACxB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1D,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,MAAM;QACjB,6FAA6F;QAC7F,yFAAyF;QACzF,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;QAC7B,cAAc,EAAE,CAAC,GAAG,uBAAuB,CAAC;QAC5C,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|