@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,391 @@
|
|
|
1
|
+
import { createAssistantMessageEventStream, } from "../internal/llm.js";
|
|
2
|
+
import { BrainError, classifyHttp } from "./errors.js";
|
|
3
|
+
import { retryBackoffMs } from "./retry.js";
|
|
4
|
+
import { emitBrainStatus, emitBrainTelemetry } from "./status-sink.js";
|
|
5
|
+
import { makeConnectController } from "./timeout.js";
|
|
6
|
+
const EMPTY_USAGE = {
|
|
7
|
+
input: 0,
|
|
8
|
+
output: 0,
|
|
9
|
+
cacheRead: 0,
|
|
10
|
+
cacheWrite: 0,
|
|
11
|
+
totalTokens: 0,
|
|
12
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
13
|
+
};
|
|
14
|
+
function emptyAssistant(model) {
|
|
15
|
+
return {
|
|
16
|
+
role: "assistant",
|
|
17
|
+
content: [],
|
|
18
|
+
api: model.api,
|
|
19
|
+
provider: model.provider,
|
|
20
|
+
model: model.id,
|
|
21
|
+
stopReason: "stop",
|
|
22
|
+
usage: { ...EMPTY_USAGE, cost: { ...EMPTY_USAGE.cost } },
|
|
23
|
+
timestamp: Date.now(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function isAbortError(err) {
|
|
27
|
+
return err instanceof Error && (err.name === "AbortError" || err.name === "TimeoutError");
|
|
28
|
+
}
|
|
29
|
+
function sleep(ms, signal) {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
if (signal?.aborted)
|
|
32
|
+
return resolve(); // already aborted → don't even start the timer
|
|
33
|
+
// A wired cancellation must interrupt the backoff promptly — without this an outer abort during a long
|
|
34
|
+
// Retry-After backoff (up to MAX_RETRY_AFTER_MS) keeps the brain call alive for up to that long. The loop
|
|
35
|
+
// top re-checks signal?.aborted and throws AbortError, so resolving early here cancels the wait cleanly.
|
|
36
|
+
// The task `signal` is LONG-LIVED (one per task, shared across every turn), so the normal timer path MUST
|
|
37
|
+
// remove the abort listener too — `{once:true}` only auto-removes it when abort actually fires, else each
|
|
38
|
+
// completed backoff leaks one listener (MaxListenersExceededWarning), mirroring timeout.ts dispose discipline.
|
|
39
|
+
let t;
|
|
40
|
+
const onAbort = () => {
|
|
41
|
+
clearTimeout(t);
|
|
42
|
+
resolve();
|
|
43
|
+
};
|
|
44
|
+
t = setTimeout(() => {
|
|
45
|
+
signal?.removeEventListener("abort", onAbort);
|
|
46
|
+
resolve();
|
|
47
|
+
}, ms);
|
|
48
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Run one streaming request end-to-end and drive the provider `parser`. Returns a fresh event stream;
|
|
53
|
+
* never throws (errors are pushed as `error` events, mirroring the Brain contract).
|
|
54
|
+
*/
|
|
55
|
+
export function runStreamingBrain(args) {
|
|
56
|
+
const { model, doFetch, signal, config, httpLabel, buildRequest, makeParser } = args;
|
|
57
|
+
const out = createAssistantMessageEventStream();
|
|
58
|
+
// `cleanup` releases the connect controller (its outer-abort listener) + any armed timers. Run it in
|
|
59
|
+
// `.finally` so it fires EXACTLY once however the request settles — including a mid-stream throw that
|
|
60
|
+
// would otherwise leak the `onAbort` listener on the task signal across turns.
|
|
61
|
+
// It's reassigned in three phases as more resources exist: undefined → `connect.dispose` the instant
|
|
62
|
+
// the controller escapes the connect loop (closes a leak window if synchronous init then throws) →
|
|
63
|
+
// full timers+connect cleanup once the timers are armed. The reassignments are synchronous, before any
|
|
64
|
+
// await that could let `.finally` observe a half-set cleanup.
|
|
65
|
+
let cleanup;
|
|
66
|
+
void run()
|
|
67
|
+
.catch((err) => {
|
|
68
|
+
const aborted = signal?.aborted === true || isAbortError(err);
|
|
69
|
+
const errorMsg = emptyAssistant(model);
|
|
70
|
+
errorMsg.stopReason = aborted ? "aborted" : "error";
|
|
71
|
+
errorMsg.errorMessage = err instanceof Error ? err.message : String(err);
|
|
72
|
+
out.push({ type: "error", reason: aborted ? "aborted" : "error", error: errorMsg });
|
|
73
|
+
})
|
|
74
|
+
.finally(() => cleanup?.());
|
|
75
|
+
return out;
|
|
76
|
+
async function run() {
|
|
77
|
+
const req = buildRequest();
|
|
78
|
+
const maxRetries = config.maxRetries ?? 2;
|
|
79
|
+
const baseDelay = config.retryDelayMs ?? 400;
|
|
80
|
+
// design/124 mid-stream recovery — attempt boundary (§0.5-1): one stream() emits EXACTLY ONE
|
|
81
|
+
// `start` event, however many attempts. A retry attempt's parser streams its events with a FRESH
|
|
82
|
+
// partial snapshot; a consumer applying snapshot-replacement semantics (agent-loop
|
|
83
|
+
// resolveAssistantMessageUpdate returns `event.partial` wholesale) sees the previous attempt's
|
|
84
|
+
// streamed prefix (e.g. tier-B thinking) vanish from context — CC's "drop the thinking, retry the
|
|
85
|
+
// whole turn" expressed in our event protocol. Budgets: tier C (zero substantive events) draws
|
|
86
|
+
// from the SAME `maxRetries` pool as connect failures ("headers arrived" no longer immunizes the
|
|
87
|
+
// attempt); tier B (thinking-only) has its own small pool (CC: stale-conn ≤ 2, backoff 100×n ms).
|
|
88
|
+
let attempt = 0; // shared budget: connect failures + tier-C mid-stream retries
|
|
89
|
+
let thinkingRetries = 0; // tier-B budget, ≤ 2
|
|
90
|
+
let startEmitted = false;
|
|
91
|
+
for (;;) {
|
|
92
|
+
// --- connect with timeout + retry transient failures until we have a streamable response ---
|
|
93
|
+
let res;
|
|
94
|
+
let connect;
|
|
95
|
+
for (;; attempt++) {
|
|
96
|
+
if (signal?.aborted) {
|
|
97
|
+
const e = new Error("aborted");
|
|
98
|
+
e.name = "AbortError";
|
|
99
|
+
throw e;
|
|
100
|
+
}
|
|
101
|
+
// Per-attempt connect controller: fires if headers don't arrive in time while still forwarding an
|
|
102
|
+
// outer abort; once headers are in, its signal keeps governing the body.
|
|
103
|
+
const cc = makeConnectController(config.connectTimeoutMs, signal);
|
|
104
|
+
let r;
|
|
105
|
+
let netErr;
|
|
106
|
+
try {
|
|
107
|
+
r = await doFetch(req.url, { method: "POST", headers: req.headers, body: req.body, signal: cc.signal });
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
if (cc.timedOut()) {
|
|
111
|
+
netErr = new Error(`connect timeout after ${config.connectTimeoutMs}ms`); // retryable network failure
|
|
112
|
+
}
|
|
113
|
+
else if (isAbortError(e) || signal?.aborted) {
|
|
114
|
+
cc.dispose();
|
|
115
|
+
throw e;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
netErr = e;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (r && r.ok && r.body) {
|
|
122
|
+
cc.clearTimer(); // headers in: stop the connect timer, keep the outer-abort link for the body
|
|
123
|
+
connect = cc;
|
|
124
|
+
// Minimal cleanup the instant the controller escapes the loop — closes the leak window if any
|
|
125
|
+
// synchronous init below throws before the fuller cleanup is assigned (council R2).
|
|
126
|
+
cleanup = () => connect?.dispose();
|
|
127
|
+
res = r;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
cc.dispose(); // this attempt failed — clean up before retry/throw
|
|
131
|
+
// CC-parity round-3: 408 (request timeout) / 409 (lock timeout) are transient — retry in-loop like 5xx/429
|
|
132
|
+
// (this is the connect/pre-body path, so a re-send is safe + idempotent). Matches CC withRetry.
|
|
133
|
+
const retryable = netErr !== undefined ||
|
|
134
|
+
(r !== undefined && (r.status >= 500 || r.status === 429 || r.status === 408 || r.status === 409));
|
|
135
|
+
if (retryable && attempt < maxRetries) {
|
|
136
|
+
const delayMs = retryBackoffMs(baseDelay, attempt, r); // full jitter + honor Retry-After (§10 N1/N2)
|
|
137
|
+
// design/99 §E3/§E10: surface the brain's (otherwise silent) wait as a live, provider-neutral status so
|
|
138
|
+
// a UI can show "rate limited / retrying in Ns". 429 → rate_limited; a network/connect failure →
|
|
139
|
+
// reconnecting; a 5xx → retrying. Fire-and-forget (no-op outside a Runner task).
|
|
140
|
+
const statusPhase = r?.status === 429 ? "rate_limited" : netErr !== undefined ? "reconnecting" : "retrying";
|
|
141
|
+
// service [398] C6: the abandoned attempt's cost is unknowable (its usage frame never arrived —
|
|
142
|
+
// that's why it failed), so report the honest signal: which attempt was abandoned, which lane.
|
|
143
|
+
emitBrainTelemetry({ kind: "retry", attempt: attempt + 1, phase: "connect" });
|
|
144
|
+
emitBrainStatus({
|
|
145
|
+
phase: statusPhase,
|
|
146
|
+
// Neutral hint (NO HTTP status / provider taxonomy — BrainStatus.detail contract). One per phase.
|
|
147
|
+
detail: statusPhase === "rate_limited"
|
|
148
|
+
? "rate limited, backing off"
|
|
149
|
+
: statusPhase === "reconnecting"
|
|
150
|
+
? "connection lost, reconnecting"
|
|
151
|
+
: "transient error, retrying",
|
|
152
|
+
retryInSec: Math.ceil(delayMs / 1000),
|
|
153
|
+
});
|
|
154
|
+
await sleep(delayMs, signal); // abortable: an outer cancel during the backoff interrupts promptly (loop top throws)
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (netErr)
|
|
158
|
+
throw new BrainError("network", netErr instanceof Error ? netErr.message : String(netErr));
|
|
159
|
+
const detail = r ? await r.text().catch(() => "") : "";
|
|
160
|
+
const status = r?.status ?? 0;
|
|
161
|
+
throw new BrainError(classifyHttp(status), `${httpLabel} HTTP ${status || "ERR"}: ${detail.slice(0, 500)}`, status);
|
|
162
|
+
}
|
|
163
|
+
// --- streaming: timers + read loop (the single source of truth for the timer-reset logic) ---
|
|
164
|
+
const partial = emptyAssistant(model);
|
|
165
|
+
if (!startEmitted) {
|
|
166
|
+
startEmitted = true; // §0.5-1: retry attempts must NOT re-emit start (no orphan partial, no wire double message_start)
|
|
167
|
+
out.push({ type: "start", partial: { ...partial } });
|
|
168
|
+
}
|
|
169
|
+
const reader = res.body.getReader();
|
|
170
|
+
const decoder = new TextDecoder();
|
|
171
|
+
let buffer = "";
|
|
172
|
+
let firstTokenSeen = false;
|
|
173
|
+
let firstTokenTimedOut = false;
|
|
174
|
+
let ftTimer;
|
|
175
|
+
if (config.firstTokenTimeoutMs && config.firstTokenTimeoutMs > 0) {
|
|
176
|
+
ftTimer = setTimeout(() => {
|
|
177
|
+
firstTokenTimedOut = true;
|
|
178
|
+
void reader.cancel().catch(() => undefined);
|
|
179
|
+
}, config.firstTokenTimeoutMs);
|
|
180
|
+
}
|
|
181
|
+
let idleTimedOut = false;
|
|
182
|
+
let idleTimer;
|
|
183
|
+
const bumpIdle = () => {
|
|
184
|
+
if (!config.idleTimeoutMs || config.idleTimeoutMs <= 0)
|
|
185
|
+
return;
|
|
186
|
+
// A delta just arrived → NOT idle. Reset the flag too (symmetric with firstTokenTimedOut): a timer
|
|
187
|
+
// that fired just before a buffered delta is processed must not spuriously throw idle timeout + retry.
|
|
188
|
+
idleTimedOut = false;
|
|
189
|
+
if (idleTimer)
|
|
190
|
+
clearTimeout(idleTimer);
|
|
191
|
+
idleTimer = setTimeout(() => {
|
|
192
|
+
idleTimedOut = true;
|
|
193
|
+
void reader.cancel().catch(() => undefined);
|
|
194
|
+
}, config.idleTimeoutMs);
|
|
195
|
+
};
|
|
196
|
+
const sawContentToken = () => {
|
|
197
|
+
bumpIdle(); // every content delta resets the idle watchdog (runs even after the first token)
|
|
198
|
+
if (firstTokenSeen)
|
|
199
|
+
return;
|
|
200
|
+
firstTokenSeen = true;
|
|
201
|
+
// Clear BOTH the timer and the timed-out flag: if the timer already fired but a buffered first
|
|
202
|
+
// delta is now processed, the turn must NOT be failed as a timeout (council #2/#3).
|
|
203
|
+
firstTokenTimedOut = false;
|
|
204
|
+
if (ftTimer) {
|
|
205
|
+
clearTimeout(ftTimer);
|
|
206
|
+
ftTimer = undefined;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
cleanup = () => {
|
|
210
|
+
if (ftTimer) {
|
|
211
|
+
clearTimeout(ftTimer);
|
|
212
|
+
ftTimer = undefined;
|
|
213
|
+
}
|
|
214
|
+
if (idleTimer) {
|
|
215
|
+
clearTimeout(idleTimer);
|
|
216
|
+
idleTimer = undefined;
|
|
217
|
+
}
|
|
218
|
+
connect?.dispose();
|
|
219
|
+
// Release the HTTP response-body reader too — connect.dispose() only clears timers + the abort listener,
|
|
220
|
+
// it does NOT cancel the body stream. When parser.onLine / parser.finalize throws, the `.finally(cleanup)`
|
|
221
|
+
// path must cancel the reader or the socket/stream leaks until GC (R5 bug-hunt).
|
|
222
|
+
void reader.cancel().catch(() => undefined);
|
|
223
|
+
};
|
|
224
|
+
// design/124 tier A: when a mid-stream failure is promoted to a partial finalize, the parser's
|
|
225
|
+
// OWN terminal event must carry the marker + the CC-verbatim warning. The parser pushes its
|
|
226
|
+
// terminal itself, so hand it a facade whose push stamps the final message in flight (prototype
|
|
227
|
+
// delegation keeps every other stream method intact). Inert while `midstreamWarning` is unset.
|
|
228
|
+
let midstreamWarning;
|
|
229
|
+
const parserOut = Object.create(out);
|
|
230
|
+
parserOut.push = (ev) => {
|
|
231
|
+
if (midstreamWarning !== undefined && (ev.type === "done" || ev.type === "error")) {
|
|
232
|
+
const msg = ev.type === "done" ? ev.message : ev.error;
|
|
233
|
+
msg.partialFinalized = true;
|
|
234
|
+
// codex 实现审 #1: finalize may have set its OWN errorMessage (malformed-tool-call note,
|
|
235
|
+
// streamed refusal, …). BOTH verdicts must survive — `partialFinalized` must always ride
|
|
236
|
+
// with a visible "may be incomplete" warning (it is the model's self-heal cue next turn,
|
|
237
|
+
// and the toolUse branch has no continue-nudge backstop), so APPEND, never fill-the-gap.
|
|
238
|
+
msg.errorMessage = msg.errorMessage ? `${msg.errorMessage}\n${midstreamWarning}` : midstreamWarning;
|
|
239
|
+
}
|
|
240
|
+
out.push(ev);
|
|
241
|
+
};
|
|
242
|
+
const parser = makeParser({
|
|
243
|
+
out: parserOut,
|
|
244
|
+
partial,
|
|
245
|
+
sawContentToken,
|
|
246
|
+
// triggers reader.cancel(); the read loop then exits on `done` (no separate break needed).
|
|
247
|
+
cancel: () => void reader.cancel().catch(() => undefined),
|
|
248
|
+
});
|
|
249
|
+
// The two tier hooks (design/124 §1): ① the read-catch below (connection class — the 1.225
|
|
250
|
+
// BrainError("network") classification point) and ② the watchdog verdicts after the loop (stall
|
|
251
|
+
// class). An abort re-throws untouched (pin below).
|
|
252
|
+
//
|
|
253
|
+
// design/124 r3 (CC 2.1.199 rebaseline — supersedes the r2 "in-band frame stays OUT" decision):
|
|
254
|
+
// an anthropic in-band `{type:"error"}` frame of the OVERLOAD/server class (overloaded_error /
|
|
255
|
+
// api_error / 529 → BrainError code "server", see anthropicStreamErrorCode) that arrives AFTER
|
|
256
|
+
// substantive text already streamed now downgrades to tier A (finalize + partialFinalized + the
|
|
257
|
+
// CC "may be incomplete" notice) — CC 2.1.199 changed direction here. Everything ELSE keeps the
|
|
258
|
+
// r2 fail-closed throw, preserving the CC-parity B1 invariant (a protocol error is never
|
|
259
|
+
// finalized as a finished answer): non-overload frame classes (rate_limit/auth/invalid_request),
|
|
260
|
+
// and an overload frame with NO substantive content, still propagate to the terminal catch.
|
|
261
|
+
const INBAND_OVERLOAD_WARNING = "API overloaded mid-response. The response above may be incomplete.";
|
|
262
|
+
/** Feed one line to the parser; returns true iff an in-band overload frame downgraded to tier A. */
|
|
263
|
+
const onLineOverloadTierA = (line) => {
|
|
264
|
+
try {
|
|
265
|
+
parser.onLine(line);
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
catch (e) {
|
|
269
|
+
if (!(e instanceof BrainError) || e.code !== "server" || !parser.snapshot().hasSubstantiveText)
|
|
270
|
+
throw e;
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
let failure;
|
|
275
|
+
readLoop: for (;;) {
|
|
276
|
+
let readRes;
|
|
277
|
+
try {
|
|
278
|
+
readRes = await reader.read();
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
// Mid-stream drop (connection reset while the body was streaming). Abort stays abort (§1 pin:
|
|
282
|
+
// the tiers must never promote/retry a deliberate cancellation).
|
|
283
|
+
if (isAbortError(e) || signal?.aborted)
|
|
284
|
+
throw e;
|
|
285
|
+
failure = {
|
|
286
|
+
kind: "connection",
|
|
287
|
+
err: new BrainError("network", `mid-stream read failed: ${e instanceof Error ? e.message : String(e)}`),
|
|
288
|
+
};
|
|
289
|
+
break readLoop;
|
|
290
|
+
}
|
|
291
|
+
const { done, value } = readRes;
|
|
292
|
+
if (done)
|
|
293
|
+
break;
|
|
294
|
+
buffer += decoder.decode(value, { stream: true });
|
|
295
|
+
// Cursor scan: slice the consumed prefix once per chunk, not once per line (avoids O(n²)).
|
|
296
|
+
let nl;
|
|
297
|
+
let start = 0;
|
|
298
|
+
while ((nl = buffer.indexOf("\n", start)) !== -1) {
|
|
299
|
+
const line = buffer.slice(start, nl);
|
|
300
|
+
start = nl + 1;
|
|
301
|
+
if (onLineOverloadTierA(line)) {
|
|
302
|
+
// r3 tier-A downgrade: promote the streamed partial (the facade stamps partialFinalized +
|
|
303
|
+
// the notice); `.finally(cleanup)` releases timers/controller/reader like the normal path.
|
|
304
|
+
midstreamWarning = INBAND_OVERLOAD_WARNING;
|
|
305
|
+
parser.finalize();
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (start > 0)
|
|
310
|
+
buffer = buffer.slice(start);
|
|
311
|
+
}
|
|
312
|
+
if (ftTimer) {
|
|
313
|
+
clearTimeout(ftTimer);
|
|
314
|
+
ftTimer = undefined;
|
|
315
|
+
}
|
|
316
|
+
if (idleTimer) {
|
|
317
|
+
clearTimeout(idleTimer);
|
|
318
|
+
idleTimer = undefined;
|
|
319
|
+
}
|
|
320
|
+
if (!failure && firstTokenTimedOut) {
|
|
321
|
+
failure = { kind: "stalled", err: new BrainError("network", `first-token timeout after ${config.firstTokenTimeoutMs}ms`) };
|
|
322
|
+
}
|
|
323
|
+
if (!failure && idleTimedOut) {
|
|
324
|
+
failure = { kind: "stalled", err: new BrainError("network", `stream idle timeout after ${config.idleTimeoutMs}ms`) };
|
|
325
|
+
}
|
|
326
|
+
if (!failure) {
|
|
327
|
+
// Flush decoder + process any trailing line not terminated by a newline (same r3 in-band
|
|
328
|
+
// overload downgrade applies — a final unterminated `{type:"error"}` line is still a frame).
|
|
329
|
+
buffer += decoder.decode();
|
|
330
|
+
if (buffer.trim() && onLineOverloadTierA(buffer))
|
|
331
|
+
midstreamWarning = INBAND_OVERLOAD_WARNING;
|
|
332
|
+
parser.finalize();
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
// ---- design/124 §1: mid-stream failure tiering (CC 198 queryModelStreaming parity) ----
|
|
336
|
+
const snap = parser.snapshot();
|
|
337
|
+
if (snap.hasSubstantiveText || snap.hasCompletedToolCall) {
|
|
338
|
+
// Tier A — substantive content already streamed: PROMOTE, don't re-send (no double billing;
|
|
339
|
+
// what streamed stays consistent with the result). finalize() is safe after a cut (no
|
|
340
|
+
// finish_reason + real content synthesizes the CC-equivalent stopReason: tool call → toolUse,
|
|
341
|
+
// else stop) and the facade stamps partialFinalized + the CC-verbatim warning; the model sees
|
|
342
|
+
// "may be incomplete" in the transcript (self-heal prompt), agent-loop nudges a bounded continue.
|
|
343
|
+
midstreamWarning =
|
|
344
|
+
failure.kind === "stalled"
|
|
345
|
+
? "Response stalled mid-stream. The response above may be incomplete."
|
|
346
|
+
: "Connection closed mid-response. The response above may be incomplete.";
|
|
347
|
+
parser.finalize();
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
// §0.5-4 defensive assertion: tiers B/C re-send the whole turn. Once a toolcall_end was emitted
|
|
351
|
+
// this attempt, an in-stream executor may ALREADY be running the call — a re-send could execute
|
|
352
|
+
// it twice. Structurally unreachable (hasCompletedToolCall ⇒ tier A above); pinned against
|
|
353
|
+
// drift: abandon the retry, take the existing error path.
|
|
354
|
+
if (snap.hasCompletedToolCall)
|
|
355
|
+
throw failure.err;
|
|
356
|
+
// Release THIS attempt's resources (timers/controller/reader) before re-sending; the next
|
|
357
|
+
// attempt assigns a fresh cleanup, and the terminal `.finally` then only sees the live one.
|
|
358
|
+
cleanup?.();
|
|
359
|
+
cleanup = undefined;
|
|
360
|
+
if (snap.hasOnlyThinking) {
|
|
361
|
+
// Tier B — only thinking streamed: seal the UI stream (thinking_end from the parser, which
|
|
362
|
+
// owns the block state) and retry the whole turn; the retry's snapshot replacement drops the
|
|
363
|
+
// attempt's thinking (CC: "drop the thinking"). Budget ≤ 2, backoff 100×n ms (CC stale-conn).
|
|
364
|
+
// Honest gap vs CC: a cut usually loses the usage frame, so the discarded attempt's cost goes
|
|
365
|
+
// unrecorded (r2 记档).
|
|
366
|
+
if (thinkingRetries >= 2)
|
|
367
|
+
throw failure.err;
|
|
368
|
+
thinkingRetries++;
|
|
369
|
+
parser.sealForRetry();
|
|
370
|
+
const delayMs = 100 * thinkingRetries;
|
|
371
|
+
emitBrainTelemetry({ kind: "retry", attempt: thinkingRetries, phase: "midstream" }); // [398] C6 (tier B)
|
|
372
|
+
emitBrainStatus({ phase: "reconnecting", detail: "connection lost, reconnecting", retryInSec: Math.ceil(delayMs / 1000) });
|
|
373
|
+
await sleep(delayMs, signal);
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
// Tier C — nothing substantive streamed (zero events, or a DANGLING tool call: toolcall_start/
|
|
377
|
+
// deltas but no completed call, no text, no thinking — execution-safe, nothing was admitted):
|
|
378
|
+
// retry out of the SAME budget as connect failures; the dangling block disappears with the
|
|
379
|
+
// snapshot replacement. Past the budget → the existing error path (BrainError network).
|
|
380
|
+
if (attempt >= maxRetries)
|
|
381
|
+
throw failure.err;
|
|
382
|
+
const delayMs = retryBackoffMs(baseDelay, attempt);
|
|
383
|
+
attempt++;
|
|
384
|
+
emitBrainTelemetry({ kind: "retry", attempt, phase: "midstream" }); // [398] C6 (tier C)
|
|
385
|
+
emitBrainStatus({ phase: "reconnecting", detail: "connection lost, reconnecting", retryInSec: Math.ceil(delayMs / 1000) });
|
|
386
|
+
await sleep(delayMs, signal);
|
|
387
|
+
// loop back: reconnect (fresh controller/parser); `start` stays suppressed.
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=stream-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-engine.js","sourceRoot":"","sources":["../../src/brain/stream-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiered timeouts (1.38.1, design/17 §5B). The task-level `timeoutSec` only bounds the *whole* run;
|
|
3
|
+
* it can't tell apart a gateway that never accepts the connection from one that accepts it, opens the
|
|
4
|
+
* SSE stream, then hangs forever without emitting a token (the most common gateway-stall symptom).
|
|
5
|
+
* Two finer levels close that gap, each retryable as a transient `network` failure:
|
|
6
|
+
*
|
|
7
|
+
* - **connect**: `fetch` hasn't returned response headers in time.
|
|
8
|
+
* - **first-token**: the SSE stream is open but no content delta has arrived (see brain read loops).
|
|
9
|
+
*
|
|
10
|
+
* Both default to `undefined` (disabled) so existing behavior is unchanged.
|
|
11
|
+
*/
|
|
12
|
+
export interface BrainTimeoutConfig {
|
|
13
|
+
/** Abort the request if `fetch` doesn't return response headers within this many ms. Retryable. */
|
|
14
|
+
connectTimeoutMs?: number;
|
|
15
|
+
/**
|
|
16
|
+
* After the stream opens, cancel it if no content delta (text / thinking / tool input) arrives
|
|
17
|
+
* within this many ms → `BrainError("network", "first-token timeout")`. For reasoning models the
|
|
18
|
+
* **first thinking delta also counts** as the first token, so a long-thinking model isn't killed
|
|
19
|
+
* for being slow to its first *visible* word (design/17 O5).
|
|
20
|
+
*/
|
|
21
|
+
firstTokenTimeoutMs?: number;
|
|
22
|
+
/**
|
|
23
|
+
* **Idle / mid-stream stall watchdog** (1.40.1, design/24 — gap found in the Claude Code source study).
|
|
24
|
+
* After the first delta, re-armed on every delta; if the stream then goes silent for this many ms
|
|
25
|
+
* (a gateway that hung mid-output) → `reader.cancel()` + `BrainError("network", "stream idle timeout")`.
|
|
26
|
+
* Complements `firstTokenTimeoutMs`: that one tolerates a long *first* token (reasoning), this one
|
|
27
|
+
* catches a stall *after* output has started, where a healthy stream emits steadily. Default off.
|
|
28
|
+
*/
|
|
29
|
+
idleTimeoutMs?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A per-fetch-attempt abort controller that fires on a connect timeout while still forwarding an
|
|
33
|
+
* outer (task) abort. The returned `signal` governs the **whole** request including the streamed body
|
|
34
|
+
* — so once headers arrive, call `clearTimer()` (NOT `dispose()`) to stop the connect timer while
|
|
35
|
+
* keeping the outer-abort link alive for the body read; call `dispose()` only when the request is
|
|
36
|
+
* fully done or being discarded.
|
|
37
|
+
*/
|
|
38
|
+
export declare function makeConnectController(connectTimeoutMs: number | undefined, outerSignal: AbortSignal | undefined): {
|
|
39
|
+
signal: AbortSignal;
|
|
40
|
+
timedOut: () => boolean;
|
|
41
|
+
clearTimer: () => void;
|
|
42
|
+
dispose: () => void;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/brain/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA4BA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A per-fetch-attempt abort controller that fires on a connect timeout while still forwarding an
|
|
3
|
+
* outer (task) abort. The returned `signal` governs the **whole** request including the streamed body
|
|
4
|
+
* — so once headers arrive, call `clearTimer()` (NOT `dispose()`) to stop the connect timer while
|
|
5
|
+
* keeping the outer-abort link alive for the body read; call `dispose()` only when the request is
|
|
6
|
+
* fully done or being discarded.
|
|
7
|
+
*/
|
|
8
|
+
export function makeConnectController(connectTimeoutMs, outerSignal) {
|
|
9
|
+
const ac = new AbortController();
|
|
10
|
+
let timedOut = false;
|
|
11
|
+
const onAbort = () => ac.abort(outerSignal?.reason);
|
|
12
|
+
if (outerSignal) {
|
|
13
|
+
if (outerSignal.aborted)
|
|
14
|
+
ac.abort(outerSignal.reason);
|
|
15
|
+
else
|
|
16
|
+
outerSignal.addEventListener("abort", onAbort, { once: true });
|
|
17
|
+
}
|
|
18
|
+
let timer;
|
|
19
|
+
if (connectTimeoutMs && connectTimeoutMs > 0) {
|
|
20
|
+
timer = setTimeout(() => {
|
|
21
|
+
timedOut = true;
|
|
22
|
+
ac.abort();
|
|
23
|
+
}, connectTimeoutMs);
|
|
24
|
+
}
|
|
25
|
+
const clearTimer = () => {
|
|
26
|
+
if (timer)
|
|
27
|
+
clearTimeout(timer);
|
|
28
|
+
timer = undefined;
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
signal: ac.signal,
|
|
32
|
+
timedOut: () => timedOut,
|
|
33
|
+
clearTimer,
|
|
34
|
+
dispose: () => {
|
|
35
|
+
clearTimer();
|
|
36
|
+
if (outerSignal)
|
|
37
|
+
outerSignal.removeEventListener("abort", onAbort);
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/brain/timeout.ts"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,gBAAoC,EACpC,WAAoC;IAOpC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAE,WAAuC,EAAE,MAAM,CAAC,CAAC;IACjF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,OAAO;YAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;YACjD,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAgD,CAAC;IACrD,IAAI,gBAAgB,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,QAAQ,GAAG,IAAI,CAAC;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC,CAAC;IACF,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,UAAU;QACV,OAAO,EAAE,GAAG,EAAE;YACZ,UAAU,EAAE,CAAC;YACb,IAAI,WAAW;gBAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolCall } from "../internal/llm.js";
|
|
2
|
+
/**
|
|
3
|
+
* Best-effort recovery of tool calls that a weaker (non-native-function-calling) model emitted as
|
|
4
|
+
* TEXT instead of structured tool calls. Recognizes `<tool_call>{...}</tool_call>` /
|
|
5
|
+
* `<function_call>...` tags and fenced ```json blocks containing `{name|tool, arguments|parameters|input}`
|
|
6
|
+
* (or an array of them). Only names present in `toolNames` are promoted.
|
|
7
|
+
*
|
|
8
|
+
* Returns the promoted tool calls and the text with those blocks removed. Off by default — enable via
|
|
9
|
+
* `createOpenAIBrain({ repairTextToolCalls: true })` only for models that need it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function repairTextToolCalls(text: string, toolNames: Set<string>): {
|
|
12
|
+
toolCalls: ToolCall[];
|
|
13
|
+
cleanedText: string;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=tool-call-repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-repair.d.ts","sourceRoot":"","sources":["../../src/brain/tool-call-repair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAwDnD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAShD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const TAG_RE = /<(tool_call|function_call|tool_calls|function_calls)>\s*([\s\S]*?)\s*<\/\1>/gi;
|
|
2
|
+
const FENCE_RE = /```(?:json|tool_call|tool|function)?\s*([\s\S]*?)```/gi;
|
|
3
|
+
function asRecord(v) {
|
|
4
|
+
return v && typeof v === "object" && !Array.isArray(v) ? v : undefined;
|
|
5
|
+
}
|
|
6
|
+
function extractCall(obj, toolNames) {
|
|
7
|
+
const rec = asRecord(obj);
|
|
8
|
+
if (!rec) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
const fn = asRecord(rec.function);
|
|
12
|
+
const name = rec.name ?? rec.tool ?? rec.tool_name ?? fn?.name;
|
|
13
|
+
if (typeof name !== "string" || !toolNames.has(name)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
let rawArgs = rec.arguments ?? rec.parameters ?? rec.input ?? rec.args ?? fn?.arguments;
|
|
17
|
+
if (typeof rawArgs === "string") {
|
|
18
|
+
try {
|
|
19
|
+
rawArgs = JSON.parse(rawArgs);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
rawArgs = {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const args = asRecord(rawArgs) ?? {};
|
|
26
|
+
return {
|
|
27
|
+
type: "toolCall",
|
|
28
|
+
id: `repair_${name}_${Math.random().toString(36).slice(2, 8)}`,
|
|
29
|
+
name,
|
|
30
|
+
arguments: args,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function parseBlock(raw, toolNames, out) {
|
|
34
|
+
let parsed;
|
|
35
|
+
try {
|
|
36
|
+
parsed = JSON.parse(raw.trim());
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const items = Array.isArray(parsed) ? parsed : [parsed];
|
|
42
|
+
let any = false;
|
|
43
|
+
for (const item of items) {
|
|
44
|
+
const call = extractCall(item, toolNames);
|
|
45
|
+
if (call) {
|
|
46
|
+
out.push(call);
|
|
47
|
+
any = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return any;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Best-effort recovery of tool calls that a weaker (non-native-function-calling) model emitted as
|
|
54
|
+
* TEXT instead of structured tool calls. Recognizes `<tool_call>{...}</tool_call>` /
|
|
55
|
+
* `<function_call>...` tags and fenced ```json blocks containing `{name|tool, arguments|parameters|input}`
|
|
56
|
+
* (or an array of them). Only names present in `toolNames` are promoted.
|
|
57
|
+
*
|
|
58
|
+
* Returns the promoted tool calls and the text with those blocks removed. Off by default — enable via
|
|
59
|
+
* `createOpenAIBrain({ repairTextToolCalls: true })` only for models that need it.
|
|
60
|
+
*/
|
|
61
|
+
export function repairTextToolCalls(text, toolNames) {
|
|
62
|
+
const toolCalls = [];
|
|
63
|
+
let cleaned = text.replace(TAG_RE, (m, _tag, inner) => parseBlock(inner, toolNames, toolCalls) ? "" : m);
|
|
64
|
+
cleaned = cleaned.replace(FENCE_RE, (m, inner) => parseBlock(inner, toolNames, toolCalls) ? "" : m);
|
|
65
|
+
return { toolCalls, cleanedText: cleaned.trim() };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=tool-call-repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-repair.js","sourceRoot":"","sources":["../../src/brain/tool-call-repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* design/130 P2b — soft per-call wall-clock deadline (deadline execution hardening).
|
|
3
|
+
*
|
|
4
|
+
* The runner passes an absolute soft deadline into each provider call (`StreamOptions.callDeadlineMs`);
|
|
5
|
+
* a brain that observes the wall clock crossing it CUTS the stream deliberately (like the degenerate-
|
|
6
|
+
* repetition cutoff) instead of letting the generation ride into the runner's hard abort — the salvaged
|
|
7
|
+
* prefix is real work, and the loop gets a bounded write-out turn before the hard deadline.
|
|
8
|
+
*
|
|
9
|
+
* The sentinel below is the cross-layer contract (brain → loop recovery → assembler), mirroring
|
|
10
|
+
* `DEGENERATE_MESSAGE` in ./repetition.js: match on THIS constant, never on prose fragments.
|
|
11
|
+
*/
|
|
12
|
+
/** Stamped as `errorMessage` on a turn the brain cut at the soft wall-clock deadline. */
|
|
13
|
+
export declare const WALLTIME_CUTOFF_MESSAGE = "walltime cutoff: the response crossed the task's soft wall-clock deadline and was cut off to preserve a write-out window";
|
|
14
|
+
//# sourceMappingURL=walltime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walltime.d.ts","sourceRoot":"","sources":["../../src/brain/walltime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yFAAyF;AACzF,eAAO,MAAM,uBAAuB,6HACwF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* design/130 P2b — soft per-call wall-clock deadline (deadline execution hardening).
|
|
3
|
+
*
|
|
4
|
+
* The runner passes an absolute soft deadline into each provider call (`StreamOptions.callDeadlineMs`);
|
|
5
|
+
* a brain that observes the wall clock crossing it CUTS the stream deliberately (like the degenerate-
|
|
6
|
+
* repetition cutoff) instead of letting the generation ride into the runner's hard abort — the salvaged
|
|
7
|
+
* prefix is real work, and the loop gets a bounded write-out turn before the hard deadline.
|
|
8
|
+
*
|
|
9
|
+
* The sentinel below is the cross-layer contract (brain → loop recovery → assembler), mirroring
|
|
10
|
+
* `DEGENERATE_MESSAGE` in ./repetition.js: match on THIS constant, never on prose fragments.
|
|
11
|
+
*/
|
|
12
|
+
/** Stamped as `errorMessage` on a turn the brain cut at the soft wall-clock deadline. */
|
|
13
|
+
export const WALLTIME_CUTOFF_MESSAGE = "walltime cutoff: the response crossed the task's soft wall-clock deadline and was cut off to preserve a write-out window";
|
|
14
|
+
//# sourceMappingURL=walltime.js.map
|