@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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP base-protocol framing over a byte stream (stdio) — `Content-Length: <n>\r\n\r\n<n bytes of JSON>`. A
|
|
3
|
+
* language server speaks JSON-RPC over stdin/stdout with THIS framing (the part a WebSocket transport skips,
|
|
4
|
+
* since each WS message is already one message). Ported 1:1 from service's unit-tested `lsp-frames` bridge
|
|
5
|
+
* decoder + CC's `StreamMessageReader`/`StreamMessageWriter` (vscode-jsonrpc) — hand-rolled here to keep core
|
|
6
|
+
* dependency-free (the framing is trivial; a native LSP-client dep is not worth it).
|
|
7
|
+
*/
|
|
8
|
+
/** Encode a JSON-RPC message body as an LSP base-protocol frame (header + payload) ready to write to stdin. */
|
|
9
|
+
export function encodeFrame(json) {
|
|
10
|
+
const payload = Buffer.from(json, "utf8");
|
|
11
|
+
return Buffer.concat([Buffer.from(`Content-Length: ${payload.length}\r\n\r\n`, "ascii"), payload]);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A stateful decoder: feed it stdout chunks, get back complete JSON payloads (0+ per chunk — a frame can span
|
|
15
|
+
* chunks, and a chunk can hold several). `maxBytes` caps the buffer so a server that never emits a delimiter
|
|
16
|
+
* (or a corrupt Content-Length) can't grow it unboundedly — on overflow the buffer is dropped (fail-safe).
|
|
17
|
+
*/
|
|
18
|
+
export function makeFrameDecoder(maxBytes = 50 * 1024 * 1024) {
|
|
19
|
+
const HEADER_SLACK = 128; // room for "Content-Length: <n>\r\n\r\n" ON TOP of a max-size payload
|
|
20
|
+
let buf = Buffer.alloc(0);
|
|
21
|
+
return function decode(chunk) {
|
|
22
|
+
const frames = [];
|
|
23
|
+
buf = Buffer.concat([buf, chunk]);
|
|
24
|
+
// Cap at max PAYLOAD + header slack (not just maxBytes): a runaway/no-delimiter stream is still dropped, but a
|
|
25
|
+
// valid frame whose payload passes the `len <= maxBytes` check below now always fits here first — otherwise a
|
|
26
|
+
// frame with a near-maxBytes payload (header pushes header+payload over maxBytes) was wiped mid-arrival and
|
|
27
|
+
// could never complete, silently dropping a valid reply.
|
|
28
|
+
if (buf.length > maxBytes + HEADER_SLACK)
|
|
29
|
+
buf = Buffer.alloc(0);
|
|
30
|
+
for (;;) {
|
|
31
|
+
const he = buf.indexOf("\r\n\r\n");
|
|
32
|
+
if (he === -1)
|
|
33
|
+
break;
|
|
34
|
+
const m = /Content-Length:\s*(\d+)/i.exec(buf.subarray(0, he).toString("ascii"));
|
|
35
|
+
if (!m) {
|
|
36
|
+
buf = buf.subarray(he + 4);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const len = Number(m[1]);
|
|
40
|
+
if (!Number.isFinite(len) || len < 0 || len > maxBytes) {
|
|
41
|
+
buf = buf.subarray(he + 4);
|
|
42
|
+
continue; // skip a bad frame header rather than deadlock
|
|
43
|
+
}
|
|
44
|
+
const start = he + 4;
|
|
45
|
+
if (buf.length < start + len)
|
|
46
|
+
break; // wait for the rest of this frame
|
|
47
|
+
frames.push(buf.subarray(start, start + len).toString("utf8"));
|
|
48
|
+
buf = buf.subarray(start + len);
|
|
49
|
+
}
|
|
50
|
+
return frames;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=frame-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-decoder.js","sourceRoot":"","sources":["../../../src/engine/lsp/frame-decoder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+GAA+G;AAC/G,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAC1D,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,sEAAsE;IAChG,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,SAAS,MAAM,CAAC,KAAa;QAClC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAClC,+GAA+G;QAC/G,8GAA8G;QAC9G,4GAA4G;QAC5G,yDAAyD;QACzD,IAAI,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,YAAY;YAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChE,SAAS,CAAC;YACR,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAE,MAAM;YACrB,MAAM,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;gBACvD,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3B,SAAS,CAAC,+CAA+C;YAC3D,CAAC;YACD,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;YACrB,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG;gBAAE,MAAM,CAAC,kCAAkC;YACvE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { type SessionWarmup } from "../../core/lsp-session.js";
|
|
2
|
+
import { type LspChildProcess } from "./stdio-lsp-transport.js";
|
|
3
|
+
import type { LspServerManager, LspSession, LspReadText } from "../../core/lsp.js";
|
|
4
|
+
import type { ExecutionEnv } from "../../internal/harness.js";
|
|
5
|
+
/**
|
|
6
|
+
* Default language → server command table (the DETERMINED supported set). Each value is a `command [args…]`
|
|
7
|
+
* whose binary must be on the host `PATH`; absent ⇒ that language degrades. Mirrors the servers service bakes
|
|
8
|
+
* into its sandbox templates (so TOC & TOB expose the SAME languages when installed), plus the common
|
|
9
|
+
* rust/c/cpp servers a local dev box usually has. Override/extend via {@link NodeLspManagerOptions.servers}
|
|
10
|
+
* (a `null` value disables a language). All of these speak LSP over stdio by default.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_LSP_SERVERS: Readonly<Record<string, string>>;
|
|
13
|
+
/** Spawn a child (default). Resolves the child on a successful `spawn`, or `undefined` on `error` (ENOENT =
|
|
14
|
+
* server not installed → the manager degrades that language). Waiting for the 'spawn'/'error' race before use
|
|
15
|
+
* is CRITICAL: `spawn()` returns synchronously but ENOENT fires 'error' asynchronously (CC's LSPClient §1.5). */
|
|
16
|
+
export type LspSpawn = (command: string, args: string[], cwd: string, signal?: AbortSignal) => Promise<LspChildProcess | undefined>;
|
|
17
|
+
export interface NodeLspManagerOptions {
|
|
18
|
+
/** Override/extend {@link DEFAULT_LSP_SERVERS} (merged over it; a `null` value disables that language). */
|
|
19
|
+
servers?: Record<string, string | null>;
|
|
20
|
+
/** Injectable spawn (tests supply a fake server; default = {@link defaultLspSpawn} over `child_process.spawn`). */
|
|
21
|
+
spawn?: LspSpawn;
|
|
22
|
+
/** Read a file's CURRENT text for the session's didOpen/didChange re-sync (default = local `fs.readFile` utf8). */
|
|
23
|
+
readText?: LspReadText;
|
|
24
|
+
/** Resolve the server `cwd`/`rootUri` for a file (default = env.cwd ?? nearest project marker ?? file dir). */
|
|
25
|
+
resolveRoot?: (filePath: string, env?: ExecutionEnv) => string;
|
|
26
|
+
/** Observability hook (open/heal/degrade/evict events). */
|
|
27
|
+
log?: (event: string, fields: Record<string, unknown>) => void;
|
|
28
|
+
/** Warm-up window override (see {@link TransportLspSession}); default 10s/1s. */
|
|
29
|
+
warmup?: SessionWarmup;
|
|
30
|
+
/** Max concurrently-cached language servers before LRU eviction (default 16, min 1). A safety net bounding
|
|
31
|
+
* the cache when a deployment can't call {@link NodeLspManager.evict} at task-end (e.g. ephemeral/worktree
|
|
32
|
+
* roots). Each cached server is a real process (jdtls = a JVM), so keep this modest. */
|
|
33
|
+
maxSessions?: number;
|
|
34
|
+
/** Idle-TTL (ms) after which an unused server is auto-reclaimed by a background sweep (default 600_000 = 10
|
|
35
|
+
* min; 0 disables). Self-healing complement to {@link NodeLspManager.evict}: a deployment that can't call
|
|
36
|
+
* `evict` at task-end still won't leak — an abandoned server dies on its own. An actively reused server never
|
|
37
|
+
* goes idle (its last-used stamp refreshes on every lookup), so a modest TTL doesn't churn the happy path. */
|
|
38
|
+
idleTtlMs?: number;
|
|
39
|
+
/** design/121: the workspace diagnostics registry every session feeds from publishDiagnostics.
|
|
40
|
+
* WORKSPACE-scoped, not server-scoped — it survives heal/evict (diagnostics belong to files, not to a
|
|
41
|
+
* server instance). Absent ⇒ notifications stay dropped (pre-121 behavior byte-for-byte). */
|
|
42
|
+
diagnostics?: import("../../core/lsp-diagnostics.js").LspDiagnosticsRegistry;
|
|
43
|
+
}
|
|
44
|
+
export declare class NodeLspManager implements LspServerManager {
|
|
45
|
+
private readonly servers;
|
|
46
|
+
private readonly spawnFn;
|
|
47
|
+
private readonly readTextFn;
|
|
48
|
+
private readonly resolveRootFn;
|
|
49
|
+
private readonly log;
|
|
50
|
+
private readonly warmup?;
|
|
51
|
+
/** design/121: the workspace diagnostics registry (see {@link NodeLspManagerOptions.diagnostics}) —
|
|
52
|
+
* public so the Runner drains it at turn boundaries via {@link LspServerManager.diagnostics}. */
|
|
53
|
+
readonly diagnostics: import("../../core/lsp-diagnostics.js").LspDiagnosticsRegistry;
|
|
54
|
+
private readonly maxSessions;
|
|
55
|
+
private readonly idleTtlMs;
|
|
56
|
+
private sweepTimer?;
|
|
57
|
+
/** `<language> <root>` → the live session + its root + last-used stamp (reused across ops; healed when its
|
|
58
|
+
* transport dies; idle-TTL swept; LRU-evicted over {@link maxSessions}; `evict(root)` drops a task's servers
|
|
59
|
+
* at task-end). Space-separated key is unambiguous — a languageId never contains a space. */
|
|
60
|
+
private readonly cache;
|
|
61
|
+
/** In-flight opens (concurrent ops on the same language+root share ONE spawn/initialize). Tracks each open's
|
|
62
|
+
* `root` + a `cancelled` flag so {@link evict}/{@link dispose} can reclaim a server whose open resolves AFTER
|
|
63
|
+
* the teardown already ran (else its `.then` caches a live child that nothing reclaims — permanently after
|
|
64
|
+
* dispose, since the sweep timer is cleared). */
|
|
65
|
+
private readonly opening;
|
|
66
|
+
/** Set by {@link dispose}: an in-flight open that resolves after dispose self-closes instead of caching. */
|
|
67
|
+
private disposed;
|
|
68
|
+
constructor(opts?: NodeLspManagerOptions);
|
|
69
|
+
/** Close + drop every server idle past {@link idleTtlMs}. Runs on a timer; best-effort. */
|
|
70
|
+
private sweepIdle;
|
|
71
|
+
sessionFor(filePath: string, signal?: AbortSignal, env?: ExecutionEnv): Promise<LspSession | undefined>;
|
|
72
|
+
/** Spawn + initialize a fresh session for `key`, deduping concurrent opens. */
|
|
73
|
+
private open;
|
|
74
|
+
/** LRU-evict (close) the least-recently-used server(s) until there is room for one more under {@link maxSessions}.
|
|
75
|
+
* A safety net: without an explicit {@link evict}, a long-lived process spawning tasks with EPHEMERAL roots
|
|
76
|
+
* (worktree / per-task cwd) would otherwise leak one heavyweight language server per (task × language). */
|
|
77
|
+
private evictOverCap;
|
|
78
|
+
/**
|
|
79
|
+
* Evict + kill every cached language server rooted at `root`. Call this at TASK-END for an ephemeral/worktree
|
|
80
|
+
* cwd so a heavyweight server (e.g. a jdtls JVM) doesn't outlive the task that spawned it — the deterministic
|
|
81
|
+
* complement to the LRU cap. `root` must match what `resolveRoot` produced for the task (the host lane uses the
|
|
82
|
+
* task's `env.cwd`). Best-effort + idempotent (an unknown/already-evicted root is a no-op).
|
|
83
|
+
*/
|
|
84
|
+
evict(root: string): Promise<void>;
|
|
85
|
+
private openSession;
|
|
86
|
+
private serverCmd;
|
|
87
|
+
/** Kill every running server + stop the idle sweep (call on runner/deployment shutdown). Best-effort. */
|
|
88
|
+
dispose(): Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
/** Resolve a file path to a languageId via its extension (undefined = no mapping → degrade). */
|
|
91
|
+
export declare function languageFor(filePath: string): string | undefined;
|
|
92
|
+
/** service [377] ask ②: on Windows, npm-global language servers materialize as `.cmd` shims and
|
|
93
|
+
* Node 20+ `spawn(cmd, args)` without a shell rejects them (EINVAL, CVE-2024-27980 hardening) —
|
|
94
|
+
* every DEFAULT_LSP_SERVERS entry would silently degrade to "no LSP". `shell:true` routes through
|
|
95
|
+
* cmd.exe so PATHEXT/.cmd resolution works. Injection surface: `command`/`args` come from
|
|
96
|
+
* LspServerSpec (deployment configuration, trusted) or DEFAULT_LSP_SERVERS constants — never from
|
|
97
|
+
* the model. Exported as a pure function so the win32 branch is testable off-platform. */
|
|
98
|
+
export declare function lspSpawnOptions(cwd: string): {
|
|
99
|
+
cwd: string;
|
|
100
|
+
stdio: ["pipe", "pipe", "ignore"];
|
|
101
|
+
shell?: boolean;
|
|
102
|
+
};
|
|
103
|
+
/** Default spawn over `child_process.spawn`, resolving on 'spawn' / `undefined` on 'error' (ENOENT = degrade). */
|
|
104
|
+
export declare const defaultLspSpawn: LspSpawn;
|
|
105
|
+
//# sourceMappingURL=node-lsp-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-lsp-manager.d.ts","sourceRoot":"","sources":["../../../src/engine/lsp/node-lsp-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `NodeLspManager` — the TOC (local, non-sandbox) {@link LspServerManager}: spawns a real language server on the
|
|
3
|
+
* LOCAL host via `child_process` and speaks LSP JSON-RPC over its stdio, a faithful copy of CC's
|
|
4
|
+
* `services/lsp/manager` + `LSPClient`. The remote (TOB) lane runs the server INSIDE a sandbox behind a WS
|
|
5
|
+
* bridge (service's E2B/kata manager) because the base `execStream` seam is output-only; this local lane has no
|
|
6
|
+
* such limit — Node's `child_process` gives full duplex stdio, so it drives the server directly.
|
|
7
|
+
*
|
|
8
|
+
* Protocol logic (op-map, file-sync, warm-up, heal) is core-single-sourced ({@link TransportLspSession}); this
|
|
9
|
+
* file adds only the local wiring: language→command registry, spawn, the `initialize` handshake, and a
|
|
10
|
+
* per-(language,root) session cache with heal-on-death. Servers are NOT bundled — the binary must be on the
|
|
11
|
+
* host `PATH` (same contract as CC); a missing server degrades that language gracefully (the `LSP` tool then
|
|
12
|
+
* tells the model to fall back to Grep/Read).
|
|
13
|
+
*/
|
|
14
|
+
import { spawn } from "node:child_process";
|
|
15
|
+
import { killProcessTree } from "../execution-env/kill-tree.js";
|
|
16
|
+
import { readFile } from "node:fs/promises";
|
|
17
|
+
import { dirname, extname, resolve as resolvePath } from "node:path";
|
|
18
|
+
import { existsSync } from "node:fs";
|
|
19
|
+
import { pathToUri } from "../../core/lsp-protocol.js";
|
|
20
|
+
import { LspDiagnosticsRegistry } from "../../core/lsp-diagnostics.js";
|
|
21
|
+
import { TransportLspSession } from "../../core/lsp-session.js";
|
|
22
|
+
import { StdioLspTransport } from "./stdio-lsp-transport.js";
|
|
23
|
+
/**
|
|
24
|
+
* Default language → server command table (the DETERMINED supported set). Each value is a `command [args…]`
|
|
25
|
+
* whose binary must be on the host `PATH`; absent ⇒ that language degrades. Mirrors the servers service bakes
|
|
26
|
+
* into its sandbox templates (so TOC & TOB expose the SAME languages when installed), plus the common
|
|
27
|
+
* rust/c/cpp servers a local dev box usually has. Override/extend via {@link NodeLspManagerOptions.servers}
|
|
28
|
+
* (a `null` value disables a language). All of these speak LSP over stdio by default.
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_LSP_SERVERS = {
|
|
31
|
+
typescript: "typescript-language-server --stdio",
|
|
32
|
+
javascript: "typescript-language-server --stdio",
|
|
33
|
+
python: "pyright-langserver --stdio",
|
|
34
|
+
go: "gopls",
|
|
35
|
+
rust: "rust-analyzer",
|
|
36
|
+
dart: "dart language-server",
|
|
37
|
+
kotlin: "kotlin-language-server",
|
|
38
|
+
java: "jdtls",
|
|
39
|
+
swift: "sourcekit-lsp",
|
|
40
|
+
c: "clangd",
|
|
41
|
+
cpp: "clangd",
|
|
42
|
+
};
|
|
43
|
+
/** File extension → languageId (drives which server a path resolves to). */
|
|
44
|
+
const EXT_LANG = {
|
|
45
|
+
".ts": "typescript", ".tsx": "typescript", ".mts": "typescript", ".cts": "typescript",
|
|
46
|
+
".js": "javascript", ".jsx": "javascript", ".mjs": "javascript", ".cjs": "javascript",
|
|
47
|
+
".py": "python", ".pyi": "python",
|
|
48
|
+
".go": "go",
|
|
49
|
+
".rs": "rust",
|
|
50
|
+
".dart": "dart",
|
|
51
|
+
".kt": "kotlin", ".kts": "kotlin",
|
|
52
|
+
".java": "java",
|
|
53
|
+
".swift": "swift",
|
|
54
|
+
".c": "c", ".h": "c",
|
|
55
|
+
".cc": "cpp", ".cpp": "cpp", ".cxx": "cpp", ".hpp": "cpp", ".hh": "cpp", ".hxx": "cpp",
|
|
56
|
+
};
|
|
57
|
+
/** Project-root markers, checked walking UP from a file to pick the language server's `cwd`/`rootUri`. */
|
|
58
|
+
const ROOT_MARKERS = [
|
|
59
|
+
"package.json", "tsconfig.json", "jsconfig.json", "go.mod", "Cargo.toml", "pubspec.yaml",
|
|
60
|
+
"build.gradle", "build.gradle.kts", "settings.gradle", "settings.gradle.kts", "pom.xml",
|
|
61
|
+
"Package.swift", "pyproject.toml", "setup.py", "requirements.txt", "compile_commands.json", ".git",
|
|
62
|
+
];
|
|
63
|
+
/** The `initialize` client capabilities — the ops core's `LSP` tool exposes (mirrors service's handshake).
|
|
64
|
+
* design/121: `publishDiagnostics` declares we accept pushed diagnostics (harmless when no registry is
|
|
65
|
+
* wired — the transport drops undispatched notifications, exactly as before). */
|
|
66
|
+
const CLIENT_CAPABILITIES = {
|
|
67
|
+
textDocument: {
|
|
68
|
+
definition: {}, references: {}, hover: {}, documentSymbol: {}, implementation: {}, callHierarchy: {},
|
|
69
|
+
publishDiagnostics: { versionSupport: true },
|
|
70
|
+
},
|
|
71
|
+
workspace: { symbol: {} },
|
|
72
|
+
};
|
|
73
|
+
export class NodeLspManager {
|
|
74
|
+
servers;
|
|
75
|
+
spawnFn;
|
|
76
|
+
readTextFn;
|
|
77
|
+
resolveRootFn;
|
|
78
|
+
log;
|
|
79
|
+
warmup;
|
|
80
|
+
/** design/121: the workspace diagnostics registry (see {@link NodeLspManagerOptions.diagnostics}) —
|
|
81
|
+
* public so the Runner drains it at turn boundaries via {@link LspServerManager.diagnostics}. */
|
|
82
|
+
diagnostics;
|
|
83
|
+
maxSessions;
|
|
84
|
+
idleTtlMs;
|
|
85
|
+
sweepTimer;
|
|
86
|
+
/** `<language> <root>` → the live session + its root + last-used stamp (reused across ops; healed when its
|
|
87
|
+
* transport dies; idle-TTL swept; LRU-evicted over {@link maxSessions}; `evict(root)` drops a task's servers
|
|
88
|
+
* at task-end). Space-separated key is unambiguous — a languageId never contains a space. */
|
|
89
|
+
cache = new Map();
|
|
90
|
+
/** In-flight opens (concurrent ops on the same language+root share ONE spawn/initialize). Tracks each open's
|
|
91
|
+
* `root` + a `cancelled` flag so {@link evict}/{@link dispose} can reclaim a server whose open resolves AFTER
|
|
92
|
+
* the teardown already ran (else its `.then` caches a live child that nothing reclaims — permanently after
|
|
93
|
+
* dispose, since the sweep timer is cleared). */
|
|
94
|
+
opening = new Map();
|
|
95
|
+
/** Set by {@link dispose}: an in-flight open that resolves after dispose self-closes instead of caching. */
|
|
96
|
+
disposed = false;
|
|
97
|
+
constructor(opts = {}) {
|
|
98
|
+
this.servers = { ...DEFAULT_LSP_SERVERS, ...opts.servers };
|
|
99
|
+
this.spawnFn = opts.spawn ?? defaultLspSpawn;
|
|
100
|
+
this.readTextFn = opts.readText ?? ((fp) => readFile(fp, "utf8"));
|
|
101
|
+
this.resolveRootFn = opts.resolveRoot ?? defaultResolveRoot;
|
|
102
|
+
this.log = opts.log ?? (() => { });
|
|
103
|
+
this.warmup = opts.warmup;
|
|
104
|
+
this.diagnostics = opts.diagnostics ?? new LspDiagnosticsRegistry();
|
|
105
|
+
this.maxSessions = Math.max(1, opts.maxSessions ?? 16);
|
|
106
|
+
this.idleTtlMs = Math.max(0, opts.idleTtlMs ?? 600_000); // 10 min; 0 disables
|
|
107
|
+
if (this.idleTtlMs > 0) {
|
|
108
|
+
// Self-healing safety net: reclaim a server left idle past the TTL (e.g. an ephemeral/worktree task that
|
|
109
|
+
// ended and never called `evict`) WITHOUT the deployment having to plumb per-task eviction. An actively
|
|
110
|
+
// reused server never goes idle (its `lastUsed` refreshes on every cache-hit), so this only kills truly
|
|
111
|
+
// abandoned servers. Unref'd so it never keeps the process alive; cleared in `dispose()`.
|
|
112
|
+
this.sweepTimer = setInterval(() => void this.sweepIdle(), Math.min(this.idleTtlMs, 60_000));
|
|
113
|
+
this.sweepTimer.unref?.();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Close + drop every server idle past {@link idleTtlMs}. Runs on a timer; best-effort. */
|
|
117
|
+
sweepIdle() {
|
|
118
|
+
const cutoff = Date.now() - this.idleTtlMs;
|
|
119
|
+
for (const [key, e] of [...this.cache]) {
|
|
120
|
+
if (e.lastUsed < cutoff) {
|
|
121
|
+
this.cache.delete(key);
|
|
122
|
+
this.log("lsp_evict_idle", { key });
|
|
123
|
+
void e.session.close().catch(() => undefined);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async sessionFor(filePath, signal, env) {
|
|
128
|
+
const language = languageFor(filePath);
|
|
129
|
+
if (!language || !this.serverCmd(language))
|
|
130
|
+
return undefined; // unsupported language → graceful degrade
|
|
131
|
+
const root = this.resolveRootFn(filePath, env);
|
|
132
|
+
const key = `${language} ${root}`;
|
|
133
|
+
const cached = this.cache.get(key);
|
|
134
|
+
if (cached && !cached.session.closed) {
|
|
135
|
+
cached.lastUsed = Date.now(); // freshen for LRU
|
|
136
|
+
return cached.session;
|
|
137
|
+
}
|
|
138
|
+
if (cached) {
|
|
139
|
+
// Transport died (server crashed / killed) → heal: fresh server, carry over the didOpen'd files so a new
|
|
140
|
+
// inferred-project server still sees them (else cross-file ops silently degrade to single-file).
|
|
141
|
+
this.cache.delete(key);
|
|
142
|
+
const carry = cached.session.openedFiles();
|
|
143
|
+
this.log("lsp_heal", { language, root, carried: carry.length });
|
|
144
|
+
const healed = await this.open(key, language, root, signal, env);
|
|
145
|
+
if (healed && carry.length)
|
|
146
|
+
await healed.warmOpen(carry, signal).catch(() => undefined);
|
|
147
|
+
return healed;
|
|
148
|
+
}
|
|
149
|
+
return this.open(key, language, root, signal, env);
|
|
150
|
+
}
|
|
151
|
+
/** Spawn + initialize a fresh session for `key`, deduping concurrent opens. */
|
|
152
|
+
open(key, language, root, signal, env) {
|
|
153
|
+
const inflight = this.opening.get(key);
|
|
154
|
+
if (inflight)
|
|
155
|
+
return inflight.job;
|
|
156
|
+
const entry = { root, cancelled: false, job: undefined };
|
|
157
|
+
entry.job = this.openSession(language, root, signal, env)
|
|
158
|
+
.then(async (session) => {
|
|
159
|
+
if (!session)
|
|
160
|
+
return undefined;
|
|
161
|
+
// If the manager was disposed, or this root was evicted, WHILE we were spawning/initializing, don't cache
|
|
162
|
+
// a live server nobody will reclaim (dispose already cleared the sweep timer) — close it and report none.
|
|
163
|
+
if (this.disposed || entry.cancelled) {
|
|
164
|
+
await session.close().catch(() => undefined);
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
this.evictOverCap(); // LRU-bound the cache before inserting the new server
|
|
168
|
+
this.cache.set(key, { session, root, lastUsed: Date.now() });
|
|
169
|
+
return session;
|
|
170
|
+
})
|
|
171
|
+
.finally(() => this.opening.delete(key));
|
|
172
|
+
this.opening.set(key, entry);
|
|
173
|
+
return entry.job;
|
|
174
|
+
}
|
|
175
|
+
/** LRU-evict (close) the least-recently-used server(s) until there is room for one more under {@link maxSessions}.
|
|
176
|
+
* A safety net: without an explicit {@link evict}, a long-lived process spawning tasks with EPHEMERAL roots
|
|
177
|
+
* (worktree / per-task cwd) would otherwise leak one heavyweight language server per (task × language). */
|
|
178
|
+
evictOverCap() {
|
|
179
|
+
while (this.cache.size >= this.maxSessions) {
|
|
180
|
+
let lruKey;
|
|
181
|
+
let lruTime = Infinity;
|
|
182
|
+
for (const [k, e] of this.cache) {
|
|
183
|
+
if (e.lastUsed < lruTime) {
|
|
184
|
+
lruTime = e.lastUsed;
|
|
185
|
+
lruKey = k;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (lruKey === undefined)
|
|
189
|
+
break;
|
|
190
|
+
const evicted = this.cache.get(lruKey);
|
|
191
|
+
this.cache.delete(lruKey);
|
|
192
|
+
this.log("lsp_evict_lru", { key: lruKey });
|
|
193
|
+
void evicted.session.close().catch(() => undefined);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Evict + kill every cached language server rooted at `root`. Call this at TASK-END for an ephemeral/worktree
|
|
198
|
+
* cwd so a heavyweight server (e.g. a jdtls JVM) doesn't outlive the task that spawned it — the deterministic
|
|
199
|
+
* complement to the LRU cap. `root` must match what `resolveRoot` produced for the task (the host lane uses the
|
|
200
|
+
* task's `env.cwd`). Best-effort + idempotent (an unknown/already-evicted root is a no-op).
|
|
201
|
+
*/
|
|
202
|
+
async evict(root) {
|
|
203
|
+
const closing = [];
|
|
204
|
+
for (const [key, e] of [...this.cache]) {
|
|
205
|
+
if (e.root === root) {
|
|
206
|
+
this.cache.delete(key);
|
|
207
|
+
this.log("lsp_evict", { root });
|
|
208
|
+
closing.push(e.session.close().catch(() => undefined));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Also cancel any in-flight open for this root: its `.then` would otherwise cache a LIVE server AFTER this
|
|
212
|
+
// evict returned (the server would then outlive the task until the idle sweep, or forever if idleTtlMs=0).
|
|
213
|
+
// Marking `cancelled` makes that `.then` self-close instead; awaiting the job awaits that close.
|
|
214
|
+
for (const o of this.opening.values()) {
|
|
215
|
+
if (o.root === root) {
|
|
216
|
+
o.cancelled = true;
|
|
217
|
+
closing.push(o.job.then(() => undefined).catch(() => undefined));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
await Promise.all(closing);
|
|
221
|
+
}
|
|
222
|
+
async openSession(language, root, signal, _env) {
|
|
223
|
+
const cmd = this.serverCmd(language);
|
|
224
|
+
if (!cmd)
|
|
225
|
+
return undefined;
|
|
226
|
+
// [K-PLATFORM-SWEEP] MINOR#8: minimal quote-aware tokenizer — a bare \s+ split shredded win32
|
|
227
|
+
// space-bearing server paths ("C:\\Program Files\\...\\server.exe" --stdio). Double-quoted segments
|
|
228
|
+
// stay whole; everything else splits on whitespace (config authors quote paths, CC-style).
|
|
229
|
+
const tokens = (cmd.match(/"[^"]*"|\S+/g) ?? []).map((t) => (t.startsWith('"') && t.endsWith('"') && t.length >= 2 ? t.slice(1, -1) : t));
|
|
230
|
+
const [command, ...args] = tokens.length > 0 ? tokens : [""];
|
|
231
|
+
const child = await this.spawnFn(command, args, root, signal).catch(() => undefined);
|
|
232
|
+
if (!child) {
|
|
233
|
+
this.log("lsp_spawn_degraded", { language, root, command });
|
|
234
|
+
return undefined; // not installed / spawn failed → graceful degrade
|
|
235
|
+
}
|
|
236
|
+
const transport = new StdioLspTransport(child);
|
|
237
|
+
try {
|
|
238
|
+
await transport.request("initialize", { processId: null, rootUri: pathToUri(root), capabilities: CLIENT_CAPABILITIES }, signal);
|
|
239
|
+
transport.notify("initialized", {});
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
await transport.close();
|
|
243
|
+
this.log("lsp_init_degraded", { language, root, err: e instanceof Error ? e.message : String(e) });
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
this.log("lsp_open", { language, root });
|
|
247
|
+
return new TransportLspSession(transport, language, this.readTextFn, this.log, this.warmup, this.diagnostics);
|
|
248
|
+
}
|
|
249
|
+
serverCmd(language) {
|
|
250
|
+
const cmd = this.servers[language];
|
|
251
|
+
return cmd ? cmd : undefined; // null (explicitly disabled) or absent → undefined
|
|
252
|
+
}
|
|
253
|
+
/** Kill every running server + stop the idle sweep (call on runner/deployment shutdown). Best-effort. */
|
|
254
|
+
async dispose() {
|
|
255
|
+
this.disposed = true; // in-flight opens now self-close instead of caching (see open())
|
|
256
|
+
if (this.sweepTimer)
|
|
257
|
+
clearInterval(this.sweepTimer);
|
|
258
|
+
// Await in-flight opens too — with `disposed` set they self-close, but a spawn/initialize racing this dispose
|
|
259
|
+
// would otherwise resolve AFTER we return and strand a live child (the sweep timer is already cleared).
|
|
260
|
+
const opening = [...this.opening.values()].map((o) => o.job.catch(() => undefined));
|
|
261
|
+
const sessions = [...this.cache.values()].map((e) => e.session);
|
|
262
|
+
this.cache.clear();
|
|
263
|
+
await Promise.all([...sessions.map((s) => s.close().catch(() => undefined)), ...opening]);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/** Resolve a file path to a languageId via its extension (undefined = no mapping → degrade). */
|
|
267
|
+
export function languageFor(filePath) {
|
|
268
|
+
return EXT_LANG[extname(filePath).toLowerCase()];
|
|
269
|
+
}
|
|
270
|
+
/** Default root: the nearest ancestor dir holding a project marker (walking up from the file), else the env's
|
|
271
|
+
* cwd, else the file's own directory. env.cwd wins when present (the runner's workspace is authoritative). */
|
|
272
|
+
function defaultResolveRoot(filePath, env) {
|
|
273
|
+
if (env?.cwd)
|
|
274
|
+
return env.cwd;
|
|
275
|
+
let dir = dirname(resolvePath(filePath));
|
|
276
|
+
for (;;) {
|
|
277
|
+
for (const m of ROOT_MARKERS)
|
|
278
|
+
if (existsSync(resolvePath(dir, m)))
|
|
279
|
+
return dir;
|
|
280
|
+
const parent = dirname(dir);
|
|
281
|
+
if (parent === dir)
|
|
282
|
+
break; // reached filesystem root
|
|
283
|
+
dir = parent;
|
|
284
|
+
}
|
|
285
|
+
return dirname(resolvePath(filePath));
|
|
286
|
+
}
|
|
287
|
+
/** service [377] ask ②: on Windows, npm-global language servers materialize as `.cmd` shims and
|
|
288
|
+
* Node 20+ `spawn(cmd, args)` without a shell rejects them (EINVAL, CVE-2024-27980 hardening) —
|
|
289
|
+
* every DEFAULT_LSP_SERVERS entry would silently degrade to "no LSP". `shell:true` routes through
|
|
290
|
+
* cmd.exe so PATHEXT/.cmd resolution works. Injection surface: `command`/`args` come from
|
|
291
|
+
* LspServerSpec (deployment configuration, trusted) or DEFAULT_LSP_SERVERS constants — never from
|
|
292
|
+
* the model. Exported as a pure function so the win32 branch is testable off-platform. */
|
|
293
|
+
export function lspSpawnOptions(cwd) {
|
|
294
|
+
return process.platform === "win32"
|
|
295
|
+
? { cwd, stdio: ["pipe", "pipe", "ignore"], shell: true }
|
|
296
|
+
: { cwd, stdio: ["pipe", "pipe", "ignore"] };
|
|
297
|
+
}
|
|
298
|
+
/** Default spawn over `child_process.spawn`, resolving on 'spawn' / `undefined` on 'error' (ENOENT = degrade). */
|
|
299
|
+
export const defaultLspSpawn = (command, args, cwd, signal) => new Promise((resolve) => {
|
|
300
|
+
let child;
|
|
301
|
+
try {
|
|
302
|
+
child = spawn(command, args, lspSpawnOptions(cwd));
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
return resolve(undefined); // synchronous throw (e.g. bad cwd)
|
|
306
|
+
}
|
|
307
|
+
const onSpawn = () => {
|
|
308
|
+
cleanup();
|
|
309
|
+
resolve(child);
|
|
310
|
+
};
|
|
311
|
+
const onError = () => {
|
|
312
|
+
cleanup();
|
|
313
|
+
resolve(undefined); // ENOENT: binary not on PATH → degrade
|
|
314
|
+
};
|
|
315
|
+
const onAbort = () => {
|
|
316
|
+
cleanup();
|
|
317
|
+
try {
|
|
318
|
+
// win32 + shell:true: `child` is the cmd.exe shim — kill() alone orphans the actual
|
|
319
|
+
// language server underneath it; take the tree down (POSIX path byte-identical).
|
|
320
|
+
if (process.platform === "win32" && child.pid)
|
|
321
|
+
killProcessTree(child.pid, { force: true });
|
|
322
|
+
else
|
|
323
|
+
child.kill();
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
/* not started */
|
|
327
|
+
}
|
|
328
|
+
resolve(undefined);
|
|
329
|
+
};
|
|
330
|
+
const cleanup = () => {
|
|
331
|
+
child.removeListener("spawn", onSpawn);
|
|
332
|
+
child.removeListener("error", onError);
|
|
333
|
+
signal?.removeEventListener("abort", onAbort);
|
|
334
|
+
};
|
|
335
|
+
child.once("spawn", onSpawn);
|
|
336
|
+
child.once("error", onError);
|
|
337
|
+
if (signal) {
|
|
338
|
+
if (signal.aborted)
|
|
339
|
+
return onAbort();
|
|
340
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
//# sourceMappingURL=node-lsp-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-lsp-manager.js","sourceRoot":"","sources":["../../../src/engine/lsp/node-lsp-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { LspTransport } from "../../core/lsp.js";
|
|
2
|
+
/** The slice of a spawned child process the transport uses (so a test can drive a fake duplex — no real spawn). */
|
|
3
|
+
export interface LspChildProcess {
|
|
4
|
+
stdin: {
|
|
5
|
+
write(data: Buffer): void;
|
|
6
|
+
on(event: "error", cb: (err: unknown) => void): void;
|
|
7
|
+
};
|
|
8
|
+
stdout: {
|
|
9
|
+
on(event: "data", cb: (chunk: Buffer) => void): void;
|
|
10
|
+
};
|
|
11
|
+
on(event: "exit" | "error", cb: (arg?: unknown) => void): void;
|
|
12
|
+
kill(signal?: string): void;
|
|
13
|
+
/** Present on a real child process; used on win32 (shell:true shim) to tree-kill on close. */
|
|
14
|
+
pid?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class StdioLspTransport implements LspTransport {
|
|
17
|
+
private readonly child;
|
|
18
|
+
private readonly requestTimeoutMs;
|
|
19
|
+
private nextId;
|
|
20
|
+
private readonly pending;
|
|
21
|
+
private isClosed;
|
|
22
|
+
private readonly decode;
|
|
23
|
+
/** design/121: server→client notification subscribers (publishDiagnostics, …). Empty = pre-121 behavior. */
|
|
24
|
+
private readonly notificationHandlers;
|
|
25
|
+
constructor(child: LspChildProcess, requestTimeoutMs?: number);
|
|
26
|
+
/** Manager-visible liveness: evict + reopen instead of reusing a dead server (crashed / killed). */
|
|
27
|
+
get closed(): boolean;
|
|
28
|
+
private onMessage;
|
|
29
|
+
/** design/121 {@link LspTransport.onNotification}: subscribe to server notifications; returns unsubscribe. */
|
|
30
|
+
onNotification(handler: (method: string, params: unknown) => void): () => void;
|
|
31
|
+
private failAll;
|
|
32
|
+
private send;
|
|
33
|
+
request(method: string, params: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
34
|
+
notify(method: string, params: unknown): void;
|
|
35
|
+
close(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=stdio-lsp-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-lsp-transport.d.ts","sourceRoot":"","sources":["../../../src/engine/lsp/stdio-lsp-transport.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,mHAAmH;AACnH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3F,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IACjE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8FAA8F;IAC9F,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,qBAAa,iBAAkB,YAAW,YAAY;IASlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IATnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,4GAA4G;IAC5G,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwD;gBAG1E,KAAK,EAAE,eAAe,EACtB,gBAAgB,SAAS;IAW5C,oGAAoG;IACpG,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,SAAS;IAkDjB,8GAA8G;IAC9G,cAAc,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAK9E,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAgDhF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IASvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAW7B"}
|