lazycodex-ai 5.0.0-beta.3 → 5.0.0-beta.31
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/README.ja.md +25 -21
- package/README.ko.md +25 -21
- package/README.md +38 -23
- package/README.ru.md +24 -20
- package/README.zh-cn.md +25 -21
- package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
- package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
- package/dist/cli/fallback-lane-policy.d.ts +1 -0
- package/dist/cli/index.js +22601 -20302
- package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
- package/dist/cli/run/on-complete-hook.d.ts +2 -0
- package/dist/cli/runtime-commands.d.ts +1 -1
- package/dist/cli/worktree-sweep/classify.d.ts +16 -0
- package/dist/cli/worktree-sweep/format.d.ts +8 -0
- package/dist/cli/worktree-sweep/git.d.ts +19 -0
- package/dist/cli/worktree-sweep/index.d.ts +7 -0
- package/dist/cli/worktree-sweep/options.d.ts +2 -0
- package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
- package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
- package/dist/cli/worktree-sweep/types.d.ts +65 -0
- package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
- package/dist/cli-node/index.js +22219 -19897
- package/package.json +11 -7
- package/packages/git-bash-mcp/dist/cli.js +6 -1
- package/packages/lsp-daemon/dist/cli.js +752 -307
- package/packages/lsp-daemon/dist/client.d.ts +10 -0
- package/packages/lsp-daemon/dist/client.js +712 -264
- package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
- package/packages/lsp-daemon/dist/daemon-client.js +3 -0
- package/packages/lsp-daemon/dist/ensure-daemon.js +1 -0
- package/packages/lsp-daemon/dist/index.js +716 -273
- package/packages/lsp-daemon/dist/proxy.js +3 -0
- package/packages/lsp-daemon/dist/version-reap.js +1 -1
- package/packages/lsp-daemon/package.json +1 -1
- package/packages/lsp-tools-mcp/dist/cli.js +671 -228
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +207 -103
- package/packages/lsp-tools-mcp/dist/mcp.js +673 -230
- package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
- package/packages/lsp-tools-mcp/dist/tools.js +677 -238
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -4
- package/packages/omo-codex/plugin/AGENTS.md +47 -0
- package/packages/omo-codex/plugin/README.md +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +34 -33
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +323 -117
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +275 -85
- package/packages/omo-codex/plugin/components/codegraph/package.json +4 -4
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +1 -0
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +12 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +1 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable-idle.test.ts +47 -0
- package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
- package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
- package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
- package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
- package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
- package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +1 -5
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +1 -5
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +1 -5
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +4 -21
- package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
- package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +702 -278
- package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
- package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
- package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +60 -45
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +7 -7
- package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +9 -5
- package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
- package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
- package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
- package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
- package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +5 -6
- package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
- package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
- package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +3 -9
- package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
- package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2463 -437
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2467 -441
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
- package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
- package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
- package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
- package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
- package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +5 -0
- package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +13 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -5
- package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +13 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -6
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
- package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +5 -4
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +5 -5
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +6 -6
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +12 -12
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +28 -0
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +3 -3
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +1 -4
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +8 -22
- package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +17 -0
- package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +13 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +5 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +11 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +124 -68
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +9 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +7 -10
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +15 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +50 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +5 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +13 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +3 -5
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +16 -5
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +3 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +11 -14
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +73 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +44 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +26 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +27 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +18 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +7 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
- package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +45 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +20 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
- package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
- package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +17 -0
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/model-catalog.json +3 -3
- package/packages/omo-codex/plugin/package-lock.json +681 -395
- package/packages/omo-codex/plugin/package.json +2 -2
- package/packages/omo-codex/plugin/scripts/AGENTS.md +40 -0
- package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -1
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +3 -3
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +11 -11
- package/packages/omo-codex/plugin/shared/package.json +3 -4
- package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
- package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
- package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
- package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
- package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +11 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +13 -1
- package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +12 -11
- package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +4 -2
- package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
- package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +8 -28
- package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +2 -2
- package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
- package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +2 -2
- package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +4 -4
- package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +8 -8
- package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +12 -12
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
- package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
- package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
- package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
- package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2637 -549
- package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
- package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
- package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
- package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
- package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
- package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
- package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
- package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
- package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +2 -0
- package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
- package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
- package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
- package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
- package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
- package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
- package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
- package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +11 -7
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
- package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
- package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
- package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
- package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +9 -8
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +6 -6
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
- package/packages/shared-skills/skills/ulw-research/SKILL.md +4 -2
- package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
- package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
- package/script/qa/web-terminal-visual-qa.mjs +2 -0
- package/script/qa/xterm-live-terminal.mjs +18 -2
- package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
- package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
- package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
- package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
- package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
- package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
- package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
- package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
- package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
- package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
- package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/LICENSE +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
|
@@ -23,28 +23,24 @@ var DEFAULT_MAX_DIRECTORY_FILES = 50;
|
|
|
23
23
|
var REQUEST_TIMEOUT_MS = 15000;
|
|
24
24
|
var INIT_TIMEOUT_MS = 60000;
|
|
25
25
|
var IDLE_TIMEOUT_MS = 5 * 60000;
|
|
26
|
+
var MAX_RESIDENT_CLIENTS = 6;
|
|
26
27
|
var REAPER_INTERVAL_MS = 60000;
|
|
27
28
|
var STOP_HARD_KILL_TIMEOUT_MS = 5000;
|
|
28
29
|
var STOP_SIGKILL_GRACE_MS = 1000;
|
|
30
|
+
var CLIENT_RESPAWN_RETRY_LIMIT = 2;
|
|
31
|
+
var CLIENT_RESPAWN_COOLDOWN_MS = 60000;
|
|
29
32
|
|
|
30
33
|
// ../lsp-core/src/lsp/errors.ts
|
|
31
34
|
class LspConnectionClosedError extends Error {
|
|
32
|
-
serverId;
|
|
33
|
-
root;
|
|
34
|
-
name = "LspConnectionClosedError";
|
|
35
35
|
constructor(serverId, root, message) {
|
|
36
36
|
super(message ?? `LSP connection closed for ${serverId} at ${root}`);
|
|
37
37
|
this.serverId = serverId;
|
|
38
38
|
this.root = root;
|
|
39
|
+
this.name = "LspConnectionClosedError";
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
class LspProcessExitedError extends Error {
|
|
43
|
-
serverId;
|
|
44
|
-
root;
|
|
45
|
-
exitCode;
|
|
46
|
-
stderrTail;
|
|
47
|
-
name = "LspProcessExitedError";
|
|
48
44
|
constructor(serverId, root, exitCode, stderrTail) {
|
|
49
45
|
const stderrSuffix = stderrTail ? `
|
|
50
46
|
stderr tail: ${stderrTail}` : "";
|
|
@@ -53,46 +49,59 @@ stderr tail: ${stderrTail}` : "";
|
|
|
53
49
|
this.root = root;
|
|
54
50
|
this.exitCode = exitCode;
|
|
55
51
|
this.stderrTail = stderrTail;
|
|
52
|
+
this.name = "LspProcessExitedError";
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
|
|
59
56
|
class LspRequestTimeoutError extends Error {
|
|
60
|
-
method;
|
|
61
|
-
stderrTail;
|
|
62
|
-
name = "LspRequestTimeoutError";
|
|
63
57
|
constructor(method, stderrTail) {
|
|
64
58
|
const stderrSuffix = stderrTail ? `
|
|
65
59
|
recent stderr: ${stderrTail}` : "";
|
|
66
60
|
super(`LSP request timeout (method: ${method})${stderrSuffix}`);
|
|
67
61
|
this.method = method;
|
|
68
62
|
this.stderrTail = stderrTail;
|
|
63
|
+
this.name = "LspRequestTimeoutError";
|
|
69
64
|
}
|
|
70
65
|
}
|
|
71
66
|
|
|
72
67
|
class LspInvalidPathError extends Error {
|
|
73
|
-
|
|
68
|
+
constructor() {
|
|
69
|
+
super(...arguments);
|
|
70
|
+
this.name = "LspInvalidPathError";
|
|
71
|
+
}
|
|
74
72
|
}
|
|
75
73
|
|
|
76
74
|
class LspServerLookupError extends Error {
|
|
77
|
-
lookup;
|
|
78
|
-
name = "LspServerLookupError";
|
|
79
75
|
constructor(message, lookup) {
|
|
80
76
|
super(message);
|
|
81
77
|
this.lookup = lookup;
|
|
78
|
+
this.name = "LspServerLookupError";
|
|
82
79
|
}
|
|
83
80
|
}
|
|
84
81
|
|
|
85
82
|
class LspServerInitializingError extends Error {
|
|
86
|
-
originalError;
|
|
87
|
-
name = "LspServerInitializingError";
|
|
88
83
|
constructor(originalError) {
|
|
89
84
|
super(`LSP server is still initializing. Please retry in a few seconds. Original error: ${originalError.message}`);
|
|
90
85
|
this.originalError = originalError;
|
|
86
|
+
this.name = "LspServerInitializingError";
|
|
91
87
|
}
|
|
92
88
|
}
|
|
93
89
|
|
|
94
90
|
class LspProcessSpawnError extends Error {
|
|
95
|
-
|
|
91
|
+
constructor() {
|
|
92
|
+
super(...arguments);
|
|
93
|
+
this.name = "LspProcessSpawnError";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
class LspClientRespawnBudgetExceededError extends Error {
|
|
98
|
+
constructor(serverId, root, retryLimit) {
|
|
99
|
+
super(`LSP server ${serverId} at ${root} failed to stay alive; respawn budget exhausted ` + `(${retryLimit} consecutive dead generations). Retrying after the cooldown may succeed.`);
|
|
100
|
+
this.serverId = serverId;
|
|
101
|
+
this.root = root;
|
|
102
|
+
this.retryLimit = retryLimit;
|
|
103
|
+
this.name = "LspClientRespawnBudgetExceededError";
|
|
104
|
+
}
|
|
96
105
|
}
|
|
97
106
|
function isLspDeadConnectionError(err) {
|
|
98
107
|
return err instanceof LspConnectionClosedError || err instanceof LspProcessExitedError;
|
|
@@ -108,20 +117,31 @@ var METHOD_NOT_FOUND = -32601;
|
|
|
108
117
|
var INTERNAL_ERROR = -32603;
|
|
109
118
|
|
|
110
119
|
class JsonRpcConnection {
|
|
111
|
-
reader;
|
|
112
|
-
writer;
|
|
113
|
-
pendingRequests = new Map;
|
|
114
|
-
notificationHandlers = new Map;
|
|
115
|
-
requestHandlers = new Map;
|
|
116
|
-
closeHandlers = [];
|
|
117
|
-
errorHandlers = [];
|
|
118
|
-
inputBuffer = Buffer.alloc(0);
|
|
119
|
-
nextRequestId = 1;
|
|
120
|
-
listening = false;
|
|
121
|
-
disposed = false;
|
|
122
120
|
constructor(reader, writer) {
|
|
123
121
|
this.reader = reader;
|
|
124
122
|
this.writer = writer;
|
|
123
|
+
this.pendingRequests = new Map;
|
|
124
|
+
this.notificationHandlers = new Map;
|
|
125
|
+
this.requestHandlers = new Map;
|
|
126
|
+
this.closeHandlers = [];
|
|
127
|
+
this.errorHandlers = [];
|
|
128
|
+
this.inputBuffer = Buffer.alloc(0);
|
|
129
|
+
this.nextRequestId = 1;
|
|
130
|
+
this.listening = false;
|
|
131
|
+
this.disposed = false;
|
|
132
|
+
this.handleData = (chunk) => {
|
|
133
|
+
const chunkBuffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
|
|
134
|
+
this.inputBuffer = Buffer.concat([this.inputBuffer, chunkBuffer]);
|
|
135
|
+
this.drainInputBuffer();
|
|
136
|
+
};
|
|
137
|
+
this.handleClose = () => {
|
|
138
|
+
for (const handler of this.closeHandlers) {
|
|
139
|
+
handler();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
this.handleStreamError = (error) => {
|
|
143
|
+
this.emitError(error);
|
|
144
|
+
};
|
|
125
145
|
}
|
|
126
146
|
listen() {
|
|
127
147
|
if (this.listening)
|
|
@@ -242,19 +262,6 @@ class JsonRpcConnection {
|
|
|
242
262
|
this.notificationHandlers.clear();
|
|
243
263
|
this.requestHandlers.clear();
|
|
244
264
|
}
|
|
245
|
-
handleData = (chunk) => {
|
|
246
|
-
const chunkBuffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
|
|
247
|
-
this.inputBuffer = Buffer.concat([this.inputBuffer, chunkBuffer]);
|
|
248
|
-
this.drainInputBuffer();
|
|
249
|
-
};
|
|
250
|
-
handleClose = () => {
|
|
251
|
-
for (const handler of this.closeHandlers) {
|
|
252
|
-
handler();
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
handleStreamError = (error) => {
|
|
256
|
-
this.emitError(error);
|
|
257
|
-
};
|
|
258
265
|
drainInputBuffer() {
|
|
259
266
|
while (true) {
|
|
260
267
|
const headerEnd = this.inputBuffer.indexOf(HEADER_SEPARATOR);
|
|
@@ -602,31 +609,26 @@ function isPosition(value) {
|
|
|
602
609
|
|
|
603
610
|
// ../lsp-core/src/lsp/transport.ts
|
|
604
611
|
class LspClientNotStartedError extends Error {
|
|
605
|
-
serverId;
|
|
606
|
-
root;
|
|
607
|
-
name = "LspClientNotStartedError";
|
|
608
612
|
constructor(serverId, root) {
|
|
609
613
|
super("LSP client not started");
|
|
610
614
|
this.serverId = serverId;
|
|
611
615
|
this.root = root;
|
|
616
|
+
this.name = "LspClientNotStartedError";
|
|
612
617
|
}
|
|
613
618
|
}
|
|
614
619
|
|
|
615
620
|
class LspClientTransport {
|
|
616
|
-
root;
|
|
617
|
-
server;
|
|
618
|
-
proc = null;
|
|
619
|
-
connection = null;
|
|
620
|
-
stderrBuffer = [];
|
|
621
|
-
processExited = false;
|
|
622
|
-
diagnosticsStore = new Map;
|
|
623
|
-
requestTimeoutMs;
|
|
624
|
-
initializeTimeoutMs;
|
|
625
|
-
workspaceApplyEditHandler = null;
|
|
626
|
-
diagnosticPullSupported = false;
|
|
627
621
|
constructor(root, server, timeouts = {}) {
|
|
628
622
|
this.root = root;
|
|
629
623
|
this.server = server;
|
|
624
|
+
this.proc = null;
|
|
625
|
+
this.connection = null;
|
|
626
|
+
this.stderrBuffer = [];
|
|
627
|
+
this.processExited = false;
|
|
628
|
+
this.diagnosticsStore = new Map;
|
|
629
|
+
this.workspaceApplyEditHandler = null;
|
|
630
|
+
this.diagnosticPullSupported = false;
|
|
631
|
+
this.documentFormattingSupported = false;
|
|
630
632
|
this.requestTimeoutMs = timeouts.requestTimeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
631
633
|
this.initializeTimeoutMs = timeouts.initializeTimeoutMs ?? INIT_TIMEOUT_MS;
|
|
632
634
|
}
|
|
@@ -648,6 +650,12 @@ class LspClientTransport {
|
|
|
648
650
|
isDiagnosticPullSupported() {
|
|
649
651
|
return this.diagnosticPullSupported;
|
|
650
652
|
}
|
|
653
|
+
setDocumentFormattingSupported(supported) {
|
|
654
|
+
this.documentFormattingSupported = supported;
|
|
655
|
+
}
|
|
656
|
+
isDocumentFormattingSupported() {
|
|
657
|
+
return this.documentFormattingSupported;
|
|
658
|
+
}
|
|
651
659
|
handlePublishDiagnostics(params) {
|
|
652
660
|
this.diagnosticsStore.set(params.uri, [...params.diagnostics]);
|
|
653
661
|
}
|
|
@@ -861,6 +869,14 @@ function supportsDiagnosticPull(capabilities) {
|
|
|
861
869
|
return false;
|
|
862
870
|
return Object.hasOwn(capabilities, "diagnosticProvider");
|
|
863
871
|
}
|
|
872
|
+
function supportsDocumentFormatting(capabilities) {
|
|
873
|
+
if (capabilities === undefined)
|
|
874
|
+
return false;
|
|
875
|
+
const provider = capabilities.documentFormattingProvider;
|
|
876
|
+
if (provider === undefined || provider === null || provider === false)
|
|
877
|
+
return false;
|
|
878
|
+
return provider === true || typeof provider === "object";
|
|
879
|
+
}
|
|
864
880
|
|
|
865
881
|
class LspClientConnection extends LspClientTransport {
|
|
866
882
|
async initialize() {
|
|
@@ -877,6 +893,7 @@ class LspClientConnection extends LspClientTransport {
|
|
|
877
893
|
references: {},
|
|
878
894
|
documentSymbol: { hierarchicalDocumentSymbolSupport: true },
|
|
879
895
|
publishDiagnostics: {},
|
|
896
|
+
formatting: { dynamicRegistration: false },
|
|
880
897
|
rename: {
|
|
881
898
|
prepareSupport: true,
|
|
882
899
|
prepareSupportDefaultBehavior: 1
|
|
@@ -918,6 +935,7 @@ class LspClientConnection extends LspClientTransport {
|
|
|
918
935
|
initializationOptions: this.server.initialization
|
|
919
936
|
}, { timeoutMs: this.initializeTimeoutMs });
|
|
920
937
|
this.setDiagnosticPullSupported(supportsDiagnosticPull(result?.capabilities));
|
|
938
|
+
this.setDocumentFormattingSupported(supportsDocumentFormatting(result?.capabilities));
|
|
921
939
|
await this.sendNotification("initialized", {});
|
|
922
940
|
await this.sendNotification("workspace/didChangeConfiguration", {
|
|
923
941
|
settings: { json: { validate: { enable: true } } }
|
|
@@ -1133,16 +1151,12 @@ function movedPath(candidate, oldPath, newPath) {
|
|
|
1133
1151
|
}
|
|
1134
1152
|
|
|
1135
1153
|
class WorkspaceDocumentState {
|
|
1136
|
-
sendNotification;
|
|
1137
|
-
clearDiagnostics;
|
|
1138
|
-
openDocuments = new Map;
|
|
1139
|
-
openByUri = new Map;
|
|
1140
|
-
openPromises = new Map;
|
|
1141
|
-
now;
|
|
1142
|
-
versionlessPublishQuiescenceMs;
|
|
1143
1154
|
constructor(sendNotification, clearDiagnostics, options = {}) {
|
|
1144
1155
|
this.sendNotification = sendNotification;
|
|
1145
1156
|
this.clearDiagnostics = clearDiagnostics;
|
|
1157
|
+
this.openDocuments = new Map;
|
|
1158
|
+
this.openByUri = new Map;
|
|
1159
|
+
this.openPromises = new Map;
|
|
1146
1160
|
this.now = options.now ?? (() => Date.now());
|
|
1147
1161
|
this.versionlessPublishQuiescenceMs = options.versionlessPublishQuiescenceMs ?? DEFAULT_VERSIONLESS_PUBLISH_QUIESCENCE_MS;
|
|
1148
1162
|
}
|
|
@@ -1406,13 +1420,11 @@ import { dirname, isAbsolute, relative as relative2, resolve as resolve2 } from
|
|
|
1406
1420
|
import { fileURLToPath } from "node:url";
|
|
1407
1421
|
|
|
1408
1422
|
class WorkspaceEditPathError extends Error {
|
|
1409
|
-
path;
|
|
1410
|
-
detail;
|
|
1411
|
-
name = "WorkspaceEditPathError";
|
|
1412
1423
|
constructor(path, detail) {
|
|
1413
1424
|
super(`${detail}: ${path}`);
|
|
1414
1425
|
this.path = path;
|
|
1415
1426
|
this.detail = detail;
|
|
1427
|
+
this.name = "WorkspaceEditPathError";
|
|
1416
1428
|
}
|
|
1417
1429
|
}
|
|
1418
1430
|
function isPathInsideWorkspace(filePath, workspaceRoot) {
|
|
@@ -1704,13 +1716,11 @@ function canonicalFingerprint(operations) {
|
|
|
1704
1716
|
|
|
1705
1717
|
// ../lsp-core/src/lsp/workspace-edit-types.ts
|
|
1706
1718
|
class WorkspaceEditValidationError extends Error {
|
|
1707
|
-
changeIndex;
|
|
1708
|
-
detail;
|
|
1709
|
-
name = "WorkspaceEditValidationError";
|
|
1710
1719
|
constructor(changeIndex, detail) {
|
|
1711
1720
|
super(`change ${changeIndex}: ${detail}`);
|
|
1712
1721
|
this.changeIndex = changeIndex;
|
|
1713
1722
|
this.detail = detail;
|
|
1723
|
+
this.name = "WorkspaceEditValidationError";
|
|
1714
1724
|
}
|
|
1715
1725
|
}
|
|
1716
1726
|
|
|
@@ -2208,10 +2218,9 @@ function simulateDelete(operation, virtual) {
|
|
|
2208
2218
|
import { existsSync as existsSync4, lstatSync as lstatSync3, readdirSync as readdirSync2 } from "node:fs";
|
|
2209
2219
|
import { dirname as dirname3, resolve as resolve4 } from "node:path";
|
|
2210
2220
|
class WorkspaceSnapshotBuilder {
|
|
2211
|
-
workspaceRoot;
|
|
2212
|
-
snapshots = new Map;
|
|
2213
2221
|
constructor(workspaceRoot) {
|
|
2214
2222
|
this.workspaceRoot = workspaceRoot;
|
|
2223
|
+
this.snapshots = new Map;
|
|
2215
2224
|
}
|
|
2216
2225
|
build(operations) {
|
|
2217
2226
|
this.add(this.workspaceRoot, false);
|
|
@@ -2255,8 +2264,10 @@ function snapshotOperations(operations, workspaceRoot) {
|
|
|
2255
2264
|
|
|
2256
2265
|
// ../lsp-core/src/lsp/workspace-edit-plan.ts
|
|
2257
2266
|
class PlanPathIndex {
|
|
2258
|
-
|
|
2259
|
-
|
|
2267
|
+
constructor() {
|
|
2268
|
+
this.firstChangeByPath = new Map;
|
|
2269
|
+
this.reportedPathByCanonical = new Map;
|
|
2270
|
+
}
|
|
2260
2271
|
build(operations) {
|
|
2261
2272
|
for (const operation of operations) {
|
|
2262
2273
|
switch (operation.kind) {
|
|
@@ -2345,14 +2356,11 @@ function isRecord3(value) {
|
|
|
2345
2356
|
}
|
|
2346
2357
|
|
|
2347
2358
|
class WorkspaceMutationController {
|
|
2348
|
-
workspaceRoot;
|
|
2349
|
-
documents;
|
|
2350
|
-
activeLease = null;
|
|
2351
|
-
nextLeaseId = 1;
|
|
2352
|
-
io;
|
|
2353
2359
|
constructor(workspaceRoot, documents) {
|
|
2354
2360
|
this.workspaceRoot = workspaceRoot;
|
|
2355
2361
|
this.documents = documents;
|
|
2362
|
+
this.activeLease = null;
|
|
2363
|
+
this.nextLeaseId = 1;
|
|
2356
2364
|
}
|
|
2357
2365
|
setIo(io) {
|
|
2358
2366
|
this.io = io;
|
|
@@ -2465,12 +2473,9 @@ var DIAGNOSTICS_FRESHNESS_TIMEOUT_MS = 3000;
|
|
|
2465
2473
|
var VERSIONLESS_PUBLISH_QUIESCENCE_MS = 250;
|
|
2466
2474
|
|
|
2467
2475
|
class LspClient extends LspClientConnection {
|
|
2468
|
-
diagnosticPullErrors = [];
|
|
2469
|
-
documents;
|
|
2470
|
-
workspaceMutations;
|
|
2471
|
-
diagnosticsFreshnessTimeoutMs;
|
|
2472
2476
|
constructor(root, server, options = {}) {
|
|
2473
2477
|
super(root, server, options);
|
|
2478
|
+
this.diagnosticPullErrors = [];
|
|
2474
2479
|
this.diagnosticsFreshnessTimeoutMs = options.diagnosticsFreshnessTimeoutMs ?? DIAGNOSTICS_FRESHNESS_TIMEOUT_MS;
|
|
2475
2480
|
this.documents = new WorkspaceDocumentState((method, params) => this.sendNotification(method, params), (uri) => this.diagnosticsStore.delete(uri), {
|
|
2476
2481
|
versionlessPublishQuiescenceMs: options.versionlessPublishQuiescenceMs ?? VERSIONLESS_PUBLISH_QUIESCENCE_MS
|
|
@@ -2525,6 +2530,18 @@ class LspClient extends LspClientConnection {
|
|
|
2525
2530
|
textDocument: { uri: pathToFileURL3(absPath).href }
|
|
2526
2531
|
}, options);
|
|
2527
2532
|
}
|
|
2533
|
+
async formatDocument(filePath, options, signal) {
|
|
2534
|
+
if (!this.isDocumentFormattingSupported())
|
|
2535
|
+
return null;
|
|
2536
|
+
const absPath = this.resolveWorkspacePath(filePath);
|
|
2537
|
+
await this.openFile(absPath);
|
|
2538
|
+
const requestOptions = signal === undefined ? {} : { signal };
|
|
2539
|
+
const edits = await this.sendRequest("textDocument/formatting", {
|
|
2540
|
+
textDocument: { uri: pathToFileURL3(absPath).href },
|
|
2541
|
+
options
|
|
2542
|
+
}, requestOptions);
|
|
2543
|
+
return edits ?? [];
|
|
2544
|
+
}
|
|
2528
2545
|
async workspaceSymbols(query, signal) {
|
|
2529
2546
|
const options = signal === undefined ? {} : { signal };
|
|
2530
2547
|
return this.sendRequest("workspace/symbol", { query }, options);
|
|
@@ -2770,18 +2787,16 @@ function awaitWithSignal(promise, signal) {
|
|
|
2770
2787
|
}
|
|
2771
2788
|
|
|
2772
2789
|
class LspManager {
|
|
2773
|
-
clients = new Map;
|
|
2774
|
-
reaperHandle = null;
|
|
2775
|
-
signalDisposer = null;
|
|
2776
|
-
disposed = false;
|
|
2777
|
-
idleTimeoutMs;
|
|
2778
|
-
initTimeoutMs;
|
|
2779
|
-
reaperIntervalMs;
|
|
2780
|
-
clientFactory;
|
|
2781
|
-
now;
|
|
2782
2790
|
constructor(options = {}) {
|
|
2791
|
+
this.clients = new Map;
|
|
2792
|
+
this.pendingStops = new Map;
|
|
2793
|
+
this.respawnBudgets = new Map;
|
|
2794
|
+
this.reaperHandle = null;
|
|
2795
|
+
this.signalDisposer = null;
|
|
2796
|
+
this.disposed = false;
|
|
2783
2797
|
this.idleTimeoutMs = options.idleTimeoutMs ?? IDLE_TIMEOUT_MS;
|
|
2784
2798
|
this.initTimeoutMs = options.initTimeoutMs ?? INIT_TIMEOUT_MS;
|
|
2799
|
+
this.maxResidentClients = options.maxResidentClients ?? MAX_RESIDENT_CLIENTS;
|
|
2785
2800
|
this.reaperIntervalMs = options.reaperIntervalMs ?? REAPER_INTERVAL_MS;
|
|
2786
2801
|
this.clientFactory = options.clientFactory ?? ((root, server) => new LspClient(root, server));
|
|
2787
2802
|
this.now = options.now ?? (() => Date.now());
|
|
@@ -2801,24 +2816,79 @@ class LspManager {
|
|
|
2801
2816
|
getKey(root, serverId) {
|
|
2802
2817
|
return `${root}::${serverId}`;
|
|
2803
2818
|
}
|
|
2819
|
+
tombstoneStop(key, client) {
|
|
2820
|
+
const stop = stopClientBestEffort(client);
|
|
2821
|
+
this.pendingStops.set(key, stop);
|
|
2822
|
+
stop.finally(() => {
|
|
2823
|
+
if (this.pendingStops.get(key) === stop) {
|
|
2824
|
+
this.pendingStops.delete(key);
|
|
2825
|
+
}
|
|
2826
|
+
});
|
|
2827
|
+
return stop;
|
|
2828
|
+
}
|
|
2829
|
+
recordDeadGeneration(key) {
|
|
2830
|
+
let budget = this.respawnBudgets.get(key);
|
|
2831
|
+
if (budget === undefined) {
|
|
2832
|
+
budget = { deadGenerations: 0, exhaustedAt: null };
|
|
2833
|
+
this.respawnBudgets.set(key, budget);
|
|
2834
|
+
}
|
|
2835
|
+
budget.deadGenerations += 1;
|
|
2836
|
+
}
|
|
2837
|
+
markHealthyGeneration(key) {
|
|
2838
|
+
this.respawnBudgets.delete(key);
|
|
2839
|
+
}
|
|
2840
|
+
ensureRespawnAllowed(key, root, serverId) {
|
|
2841
|
+
const budget = this.respawnBudgets.get(key);
|
|
2842
|
+
if (budget === undefined || budget.deadGenerations < CLIENT_RESPAWN_RETRY_LIMIT)
|
|
2843
|
+
return;
|
|
2844
|
+
if (budget.exhaustedAt === null) {
|
|
2845
|
+
budget.exhaustedAt = this.now();
|
|
2846
|
+
throw new LspClientRespawnBudgetExceededError(serverId, root, CLIENT_RESPAWN_RETRY_LIMIT);
|
|
2847
|
+
}
|
|
2848
|
+
if (this.now() - budget.exhaustedAt < CLIENT_RESPAWN_COOLDOWN_MS) {
|
|
2849
|
+
throw new LspClientRespawnBudgetExceededError(serverId, root, CLIENT_RESPAWN_RETRY_LIMIT);
|
|
2850
|
+
}
|
|
2851
|
+
budget.deadGenerations = 0;
|
|
2852
|
+
budget.exhaustedAt = null;
|
|
2853
|
+
}
|
|
2804
2854
|
reapStale() {
|
|
2805
2855
|
const t = this.now();
|
|
2806
2856
|
for (const [key, managed] of this.clients) {
|
|
2807
2857
|
if (managed.isInitializing && managed.initializingSince !== null && t - managed.initializingSince > this.initTimeoutMs) {
|
|
2808
|
-
stopClientBestEffort(managed.client);
|
|
2809
2858
|
this.clients.delete(key);
|
|
2859
|
+
this.tombstoneStop(key, managed.client);
|
|
2810
2860
|
continue;
|
|
2811
2861
|
}
|
|
2812
2862
|
if (!managed.isInitializing && managed.refCount === 0 && managed.pendingWaiters === 0 && t - managed.lastUsedAt > this.idleTimeoutMs) {
|
|
2813
|
-
stopClientBestEffort(managed.client);
|
|
2814
2863
|
this.clients.delete(key);
|
|
2864
|
+
this.tombstoneStop(key, managed.client);
|
|
2865
|
+
}
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2868
|
+
evictForAdmission() {
|
|
2869
|
+
while (this.clients.size >= this.maxResidentClients) {
|
|
2870
|
+
const victim = this.leastRecentlyUsedIdleClient();
|
|
2871
|
+
if (!victim)
|
|
2872
|
+
return;
|
|
2873
|
+
this.clients.delete(victim.key);
|
|
2874
|
+
this.tombstoneStop(victim.key, victim.managed.client);
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
leastRecentlyUsedIdleClient() {
|
|
2878
|
+
let candidate = null;
|
|
2879
|
+
for (const [key, managed] of this.clients) {
|
|
2880
|
+
if (managed.refCount > 0 || managed.pendingWaiters > 0 || managed.isInitializing)
|
|
2881
|
+
continue;
|
|
2882
|
+
if (candidate === null || managed.lastUsedAt < candidate.managed.lastUsedAt) {
|
|
2883
|
+
candidate = { key, managed };
|
|
2815
2884
|
}
|
|
2816
2885
|
}
|
|
2886
|
+
return candidate;
|
|
2817
2887
|
}
|
|
2818
2888
|
async tryDeleteIfOrphaned(key, managed) {
|
|
2819
2889
|
if (managed.refCount === 0 && managed.pendingWaiters === 0 && !managed.isInitializing && this.clients.get(key) === managed) {
|
|
2820
2890
|
this.clients.delete(key);
|
|
2821
|
-
await
|
|
2891
|
+
await this.tombstoneStop(key, managed.client);
|
|
2822
2892
|
}
|
|
2823
2893
|
}
|
|
2824
2894
|
async getClient(root, server, signal) {
|
|
@@ -2827,12 +2897,22 @@ class LspManager {
|
|
|
2827
2897
|
}
|
|
2828
2898
|
signal?.throwIfAborted();
|
|
2829
2899
|
const key = this.getKey(root, server.id);
|
|
2900
|
+
for (;; ) {
|
|
2901
|
+
const pendingStop = this.pendingStops.get(key);
|
|
2902
|
+
if (pendingStop === undefined)
|
|
2903
|
+
break;
|
|
2904
|
+
await awaitWithSignal(pendingStop, signal);
|
|
2905
|
+
signal?.throwIfAborted();
|
|
2906
|
+
}
|
|
2907
|
+
if (this.disposed) {
|
|
2908
|
+
throw new Error("LspManager has been disposed");
|
|
2909
|
+
}
|
|
2830
2910
|
let managed = this.clients.get(key);
|
|
2831
2911
|
if (managed) {
|
|
2832
2912
|
const t = this.now();
|
|
2833
2913
|
if (managed.isInitializing && managed.initializingSince !== null && t - managed.initializingSince > this.initTimeoutMs) {
|
|
2834
|
-
await stopClientBestEffort(managed.client);
|
|
2835
2914
|
this.clients.delete(key);
|
|
2915
|
+
await this.tombstoneStop(key, managed.client);
|
|
2836
2916
|
managed = undefined;
|
|
2837
2917
|
}
|
|
2838
2918
|
}
|
|
@@ -2853,14 +2933,20 @@ class LspManager {
|
|
|
2853
2933
|
signal.throwIfAborted();
|
|
2854
2934
|
}
|
|
2855
2935
|
if (!managed.client.isAlive()) {
|
|
2856
|
-
|
|
2857
|
-
this.clients.
|
|
2936
|
+
this.recordDeadGeneration(key);
|
|
2937
|
+
if (this.clients.get(key) === managed) {
|
|
2938
|
+
this.clients.delete(key);
|
|
2939
|
+
}
|
|
2940
|
+
await this.tombstoneStop(key, managed.client);
|
|
2858
2941
|
return this.getClient(root, server, signal);
|
|
2859
2942
|
}
|
|
2943
|
+
this.markHealthyGeneration(key);
|
|
2860
2944
|
managed.refCount++;
|
|
2861
2945
|
managed.lastUsedAt = this.now();
|
|
2862
2946
|
return managed.client;
|
|
2863
2947
|
}
|
|
2948
|
+
this.evictForAdmission();
|
|
2949
|
+
this.ensureRespawnAllowed(key, root, server.id);
|
|
2864
2950
|
const client = this.clientFactory(root, server);
|
|
2865
2951
|
const initStartedAt = this.now();
|
|
2866
2952
|
const initPromise = (async () => {
|
|
@@ -2884,7 +2970,7 @@ class LspManager {
|
|
|
2884
2970
|
if (this.clients.get(key) === newManaged) {
|
|
2885
2971
|
this.clients.delete(key);
|
|
2886
2972
|
}
|
|
2887
|
-
await
|
|
2973
|
+
await this.tombstoneStop(key, client);
|
|
2888
2974
|
throw err;
|
|
2889
2975
|
}
|
|
2890
2976
|
newManaged.pendingWaiters--;
|
|
@@ -2895,6 +2981,15 @@ class LspManager {
|
|
|
2895
2981
|
await this.tryDeleteIfOrphaned(key, newManaged);
|
|
2896
2982
|
signal.throwIfAborted();
|
|
2897
2983
|
}
|
|
2984
|
+
if (!client.isAlive()) {
|
|
2985
|
+
this.recordDeadGeneration(key);
|
|
2986
|
+
if (this.clients.get(key) === newManaged) {
|
|
2987
|
+
this.clients.delete(key);
|
|
2988
|
+
}
|
|
2989
|
+
await this.tombstoneStop(key, client);
|
|
2990
|
+
return this.getClient(root, server, signal);
|
|
2991
|
+
}
|
|
2992
|
+
this.markHealthyGeneration(key);
|
|
2898
2993
|
newManaged.refCount++;
|
|
2899
2994
|
newManaged.lastUsedAt = this.now();
|
|
2900
2995
|
return client;
|
|
@@ -2915,14 +3010,20 @@ class LspManager {
|
|
|
2915
3010
|
if (client && managed.client !== client)
|
|
2916
3011
|
return;
|
|
2917
3012
|
this.clients.delete(key);
|
|
2918
|
-
|
|
3013
|
+
this.tombstoneStop(key, managed.client);
|
|
2919
3014
|
}
|
|
2920
3015
|
warmupClient(root, server) {
|
|
2921
3016
|
if (this.disposed)
|
|
2922
3017
|
return;
|
|
2923
3018
|
const key = this.getKey(root, server.id);
|
|
2924
|
-
if (this.clients.has(key))
|
|
3019
|
+
if (this.clients.has(key) || this.pendingStops.has(key))
|
|
2925
3020
|
return;
|
|
3021
|
+
this.evictForAdmission();
|
|
3022
|
+
try {
|
|
3023
|
+
this.ensureRespawnAllowed(key, root, server.id);
|
|
3024
|
+
} catch {
|
|
3025
|
+
return;
|
|
3026
|
+
}
|
|
2926
3027
|
const client = this.clientFactory(root, server);
|
|
2927
3028
|
const initStartedAt = this.now();
|
|
2928
3029
|
const initPromise = (async () => {
|
|
@@ -2948,7 +3049,7 @@ class LspManager {
|
|
|
2948
3049
|
if (this.clients.get(key) === managed) {
|
|
2949
3050
|
this.clients.delete(key);
|
|
2950
3051
|
}
|
|
2951
|
-
|
|
3052
|
+
this.tombstoneStop(key, client);
|
|
2952
3053
|
});
|
|
2953
3054
|
}
|
|
2954
3055
|
isServerInitializing(root, serverId) {
|
|
@@ -2992,8 +3093,11 @@ class LspManager {
|
|
|
2992
3093
|
for (const managed of this.clients.values()) {
|
|
2993
3094
|
stopPromises.push(stopClientBestEffort(managed.client));
|
|
2994
3095
|
}
|
|
3096
|
+
const tombstonedStops = [...this.pendingStops.values()];
|
|
2995
3097
|
this.clients.clear();
|
|
2996
|
-
|
|
3098
|
+
this.respawnBudgets.clear();
|
|
3099
|
+
await Promise.allSettled([...stopPromises, ...tombstonedStops]);
|
|
3100
|
+
this.pendingStops.clear();
|
|
2997
3101
|
}
|
|
2998
3102
|
}
|
|
2999
3103
|
var _defaultInstance = null;
|
|
@@ -3011,7 +3115,7 @@ async function disposeDefaultLspManager() {
|
|
|
3011
3115
|
}
|
|
3012
3116
|
}
|
|
3013
3117
|
export {
|
|
3014
|
-
|
|
3118
|
+
LspManager,
|
|
3015
3119
|
disposeDefaultLspManager,
|
|
3016
|
-
|
|
3120
|
+
getLspManager
|
|
3017
3121
|
};
|