oh-my-copilot 5.0.0 → 5.1.0
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/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +6 -1
- package/bridge/__pycache__/gyoshu_bridge.cpython-312.pyc +0 -0
- package/bridge/claude-md-coordinator.cjs +2 -2
- package/bridge/cli.cjs +3054 -1290
- package/bridge/mcp-server.cjs +972 -147
- package/bridge/runtime-cli.cjs +453 -70
- package/bridge/team-bridge.cjs +320 -18
- package/bridge/team-mcp.cjs +357 -20
- package/bridge/team.js +486 -66
- package/dist/__tests__/bounded-git-timeout-parity.test.js +2 -0
- package/dist/__tests__/bounded-git-timeout-parity.test.js.map +1 -1
- package/dist/__tests__/delegation-enforcement-levels.test.js +32 -1
- package/dist/__tests__/delegation-enforcement-levels.test.js.map +1 -1
- package/dist/__tests__/hud/cli-diagnostic.test.js +1 -0
- package/dist/__tests__/hud/cli-diagnostic.test.js.map +1 -1
- package/dist/__tests__/hud/update-hint.test.d.ts +2 -0
- package/dist/__tests__/hud/update-hint.test.d.ts.map +1 -0
- package/dist/__tests__/hud/update-hint.test.js +120 -0
- package/dist/__tests__/hud/update-hint.test.js.map +1 -0
- package/dist/__tests__/hud/watch-mode-init.test.js +1 -0
- package/dist/__tests__/hud/watch-mode-init.test.js.map +1 -1
- package/dist/__tests__/hud-cache-wrapper.test.js +350 -5
- package/dist/__tests__/hud-cache-wrapper.test.js.map +1 -1
- package/dist/__tests__/live-data.test.js +4 -0
- package/dist/__tests__/live-data.test.js.map +1 -1
- package/dist/__tests__/npm-package-bin-surface.test.js +1 -0
- package/dist/__tests__/npm-package-bin-surface.test.js.map +1 -1
- package/dist/__tests__/post-tool-rules-injector.test.js +42 -12
- package/dist/__tests__/post-tool-rules-injector.test.js.map +1 -1
- package/dist/__tests__/preemptive-compaction-hook.test.js +3 -3
- package/dist/__tests__/preemptive-compaction-hook.test.js.map +1 -1
- package/dist/__tests__/project-memory-posttool.test.d.ts +2 -0
- package/dist/__tests__/project-memory-posttool.test.d.ts.map +1 -0
- package/dist/__tests__/project-memory-posttool.test.js +84 -0
- package/dist/__tests__/project-memory-posttool.test.js.map +1 -0
- package/dist/__tests__/rate-limit-wait/integration.test.js +3 -3
- package/dist/__tests__/rate-limit-wait/integration.test.js.map +1 -1
- package/dist/__tests__/run-cjs-generic-timeout.test.js +146 -12
- package/dist/__tests__/run-cjs-generic-timeout.test.js.map +1 -1
- package/dist/__tests__/run-cjs-graceful-fallback.test.js +86 -14
- package/dist/__tests__/run-cjs-graceful-fallback.test.js.map +1 -1
- package/dist/__tests__/run-cjs-windows-stdio-contract.test.d.ts +2 -0
- package/dist/__tests__/run-cjs-windows-stdio-contract.test.d.ts.map +1 -0
- package/dist/__tests__/run-cjs-windows-stdio-contract.test.js +847 -0
- package/dist/__tests__/run-cjs-windows-stdio-contract.test.js.map +1 -0
- package/dist/__tests__/session-end-process-exit.test.js +61 -14
- package/dist/__tests__/session-end-process-exit.test.js.map +1 -1
- package/dist/__tests__/session-history-search.test.js +84 -1
- package/dist/__tests__/session-history-search.test.js.map +1 -1
- package/dist/__tests__/session-start-timeout-cleanup.test.js +11 -7
- package/dist/__tests__/session-start-timeout-cleanup.test.js.map +1 -1
- package/dist/__tests__/session-start-update-check.test.d.ts +2 -0
- package/dist/__tests__/session-start-update-check.test.d.ts.map +1 -0
- package/dist/__tests__/session-start-update-check.test.js +69 -0
- package/dist/__tests__/session-start-update-check.test.js.map +1 -0
- package/dist/__tests__/session-start-update-refresh.test.d.ts +2 -0
- package/dist/__tests__/session-start-update-refresh.test.d.ts.map +1 -0
- package/dist/__tests__/session-start-update-refresh.test.js +179 -0
- package/dist/__tests__/session-start-update-refresh.test.js.map +1 -0
- package/dist/__tests__/shipyard-seed-locale.test.d.ts +2 -0
- package/dist/__tests__/shipyard-seed-locale.test.d.ts.map +1 -0
- package/dist/__tests__/shipyard-seed-locale.test.js +213 -0
- package/dist/__tests__/shipyard-seed-locale.test.js.map +1 -0
- package/dist/__tests__/shipyard-skills.test.d.ts +2 -0
- package/dist/__tests__/shipyard-skills.test.d.ts.map +1 -0
- package/dist/__tests__/shipyard-skills.test.js +418 -0
- package/dist/__tests__/shipyard-skills.test.js.map +1 -0
- package/dist/__tests__/skills.test.js +15 -5
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/__tests__/tier0-docs-consistency.test.js +6 -2
- package/dist/__tests__/tier0-docs-consistency.test.js.map +1 -1
- package/dist/__tests__/trusted-publishing-contract.test.js +6 -8
- package/dist/__tests__/trusted-publishing-contract.test.js.map +1 -1
- package/dist/__tests__/windows-prompt-hook-runner.test.js +63 -9
- package/dist/__tests__/windows-prompt-hook-runner.test.js.map +1 -1
- package/dist/alias-retirement/__tests__/registry.test.js +8 -3
- package/dist/alias-retirement/__tests__/registry.test.js.map +1 -1
- package/dist/cli/checkpoint.d.ts +16 -0
- package/dist/cli/checkpoint.d.ts.map +1 -0
- package/dist/cli/checkpoint.js +79 -0
- package/dist/cli/checkpoint.js.map +1 -0
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +127 -3
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/__tests__/loader.test.js +17 -0
- package/dist/config/__tests__/loader.test.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +12 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/features/__tests__/checkpoint.test.d.ts +6 -0
- package/dist/features/__tests__/checkpoint.test.d.ts.map +1 -0
- package/dist/features/__tests__/checkpoint.test.js +113 -0
- package/dist/features/__tests__/checkpoint.test.js.map +1 -0
- package/dist/features/checkpoint/index.d.ts +50 -0
- package/dist/features/checkpoint/index.d.ts.map +1 -0
- package/dist/features/checkpoint/index.js +170 -0
- package/dist/features/checkpoint/index.js.map +1 -0
- package/dist/features/notepad-wisdom/__tests__/extractor.test.d.ts +2 -0
- package/dist/features/notepad-wisdom/__tests__/extractor.test.d.ts.map +1 -0
- package/dist/features/notepad-wisdom/__tests__/extractor.test.js +17 -0
- package/dist/features/notepad-wisdom/__tests__/extractor.test.js.map +1 -0
- package/dist/features/notepad-wisdom/extractor.js +1 -1
- package/dist/features/notepad-wisdom/extractor.js.map +1 -1
- package/dist/features/session-history-search/index.d.ts +8 -2
- package/dist/features/session-history-search/index.d.ts.map +1 -1
- package/dist/features/session-history-search/index.js +86 -25
- package/dist/features/session-history-search/index.js.map +1 -1
- package/dist/graph/__tests__/runtime/remote-approval.test.d.ts +6 -0
- package/dist/graph/__tests__/runtime/remote-approval.test.d.ts.map +1 -0
- package/dist/graph/__tests__/runtime/remote-approval.test.js +217 -0
- package/dist/graph/__tests__/runtime/remote-approval.test.js.map +1 -0
- package/dist/graph/runtime/remote-approval.d.ts +90 -0
- package/dist/graph/runtime/remote-approval.d.ts.map +1 -0
- package/dist/graph/runtime/remote-approval.js +254 -0
- package/dist/graph/runtime/remote-approval.js.map +1 -0
- package/dist/graph/schema.d.ts +2 -2
- package/dist/hooks/__tests__/pre-tool-use-template-source-ext.test.js +494 -12
- package/dist/hooks/__tests__/pre-tool-use-template-source-ext.test.js.map +1 -1
- package/dist/hooks/omc-orchestrator/index.d.ts +1 -0
- package/dist/hooks/omc-orchestrator/index.d.ts.map +1 -1
- package/dist/hooks/omc-orchestrator/index.js +132 -14
- package/dist/hooks/omc-orchestrator/index.js.map +1 -1
- package/dist/hooks/permission-handler/index.d.ts.map +1 -1
- package/dist/hooks/permission-handler/index.js +4 -3
- package/dist/hooks/permission-handler/index.js.map +1 -1
- package/dist/hooks/persistent-mode/__tests__/tool-error.test.js +4 -2
- package/dist/hooks/persistent-mode/__tests__/tool-error.test.js.map +1 -1
- package/dist/hooks/skill-bridge.cjs +338 -16
- package/dist/hud/elements/update-hint.d.ts +22 -0
- package/dist/hud/elements/update-hint.d.ts.map +1 -0
- package/dist/hud/elements/update-hint.js +29 -0
- package/dist/hud/elements/update-hint.js.map +1 -0
- package/dist/hud/index.d.ts +0 -4
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +21 -2
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +17 -0
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/types.d.ts +6 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +2 -2
- package/dist/hud/types.js.map +1 -1
- package/dist/installer/__tests__/hook-templates.test.js +16 -2
- package/dist/installer/__tests__/hook-templates.test.js.map +1 -1
- package/dist/lib/__tests__/worktree-paths-git-timeout.test.d.ts +2 -0
- package/dist/lib/__tests__/worktree-paths-git-timeout.test.d.ts.map +1 -0
- package/dist/lib/__tests__/worktree-paths-git-timeout.test.js +118 -0
- package/dist/lib/__tests__/worktree-paths-git-timeout.test.js.map +1 -0
- package/dist/lib/__tests__/worktree-paths-split-warning.test.d.ts +2 -0
- package/dist/lib/__tests__/worktree-paths-split-warning.test.d.ts.map +1 -0
- package/dist/lib/__tests__/worktree-paths-split-warning.test.js +247 -0
- package/dist/lib/__tests__/worktree-paths-split-warning.test.js.map +1 -0
- package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.d.ts +2 -0
- package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.d.ts.map +1 -0
- package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.js +442 -0
- package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.js.map +1 -0
- package/dist/lib/worktree-paths.d.ts +21 -7
- package/dist/lib/worktree-paths.d.ts.map +1 -1
- package/dist/lib/worktree-paths.js +411 -25
- package/dist/lib/worktree-paths.js.map +1 -1
- package/dist/notifications/__tests__/approval-reply.test.d.ts +6 -0
- package/dist/notifications/__tests__/approval-reply.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/approval-reply.test.js +71 -0
- package/dist/notifications/__tests__/approval-reply.test.js.map +1 -0
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +3 -0
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/formatter.d.ts +5 -0
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +21 -0
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/notifications/hook-config-types.d.ts +1 -0
- package/dist/notifications/hook-config-types.d.ts.map +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +7 -2
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/reply-listener.d.ts +12 -0
- package/dist/notifications/reply-listener.d.ts.map +1 -1
- package/dist/notifications/reply-listener.js +135 -0
- package/dist/notifications/reply-listener.js.map +1 -1
- package/dist/notifications/session-registry.d.ts +6 -0
- package/dist/notifications/session-registry.d.ts.map +1 -1
- package/dist/notifications/session-registry.js.map +1 -1
- package/dist/notifications/template-engine.d.ts.map +1 -1
- package/dist/notifications/template-engine.js +3 -0
- package/dist/notifications/template-engine.js.map +1 -1
- package/dist/notifications/types.d.ts +11 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/team/__tests__/bridge-entry.guardrails.test.js +1 -1
- package/dist/team/__tests__/bridge-entry.guardrails.test.js.map +1 -1
- package/dist/team/__tests__/bridge-entry.test.js +1 -1
- package/dist/team/__tests__/bridge-entry.test.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +45 -1
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/runtime-v2.dispatch.test.js +140 -0
- package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
- package/dist/team/__tests__/runtime-v2.gemini-preflight.test.js +6 -0
- package/dist/team/__tests__/runtime-v2.gemini-preflight.test.js.map +1 -1
- package/dist/team/__tests__/scaling-launch-config.test.js +99 -0
- package/dist/team/__tests__/scaling-launch-config.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +14 -0
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/stage-router.test.js +31 -0
- package/dist/team/__tests__/stage-router.test.js.map +1 -1
- package/dist/team/__tests__/worker-launch-wrapper-posix.test.d.ts +10 -0
- package/dist/team/__tests__/worker-launch-wrapper-posix.test.d.ts.map +1 -0
- package/dist/team/__tests__/worker-launch-wrapper-posix.test.js +190 -0
- package/dist/team/__tests__/worker-launch-wrapper-posix.test.js.map +1 -0
- package/dist/team/bridge-entry.js +3 -3
- package/dist/team/bridge-entry.js.map +1 -1
- package/dist/team/model-contract.d.ts +11 -0
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +72 -5
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/monitor.d.ts.map +1 -1
- package/dist/team/monitor.js +31 -5
- package/dist/team/monitor.js.map +1 -1
- package/dist/team/runtime-v2.d.ts.map +1 -1
- package/dist/team/runtime-v2.js +10 -12
- package/dist/team/runtime-v2.js.map +1 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +2 -28
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +15 -6
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/stage-router.d.ts.map +1 -1
- package/dist/team/stage-router.js +17 -11
- package/dist/team/stage-router.js.map +1 -1
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +3 -0
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/team-state-reader.d.ts.map +1 -1
- package/dist/team/team-state-reader.js +4 -1
- package/dist/team/team-state-reader.js.map +1 -1
- package/dist/team/types.d.ts +11 -1
- package/dist/team/types.d.ts.map +1 -1
- package/dist/team/types.js.map +1 -1
- package/dist/team/worker-launch-ack.d.ts +2 -0
- package/dist/team/worker-launch-ack.d.ts.map +1 -1
- package/dist/team/worker-launch-ack.js +31 -11
- package/dist/team/worker-launch-ack.js.map +1 -1
- package/dist/tools/__tests__/wiki-tools-direct-dist-failclosed.test.js +20 -1
- package/dist/tools/__tests__/wiki-tools-direct-dist-failclosed.test.js.map +1 -1
- package/dist/tools/__tests__/wiki-tools-git-probe-failclosed.test.js +4 -1
- package/dist/tools/__tests__/wiki-tools-git-probe-failclosed.test.js.map +1 -1
- package/dist/tools/ast-tools.d.ts.map +1 -1
- package/dist/tools/ast-tools.js +7 -2
- package/dist/tools/ast-tools.js.map +1 -1
- package/dist/tools/diagnostics/__tests__/lsp-aggregator.test.js +159 -6
- package/dist/tools/diagnostics/__tests__/lsp-aggregator.test.js.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -0
- package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.js +58 -32
- package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
- package/dist/tools/lsp/__tests__/client-document-lifecycle.test.d.ts +2 -0
- package/dist/tools/lsp/__tests__/client-document-lifecycle.test.d.ts.map +1 -0
- package/dist/tools/lsp/__tests__/client-document-lifecycle.test.js +585 -0
- package/dist/tools/lsp/__tests__/client-document-lifecycle.test.js.map +1 -0
- package/dist/tools/lsp/__tests__/client-handle-data.test.js +5 -2
- package/dist/tools/lsp/__tests__/client-handle-data.test.js.map +1 -1
- package/dist/tools/lsp/client.d.ts +39 -1
- package/dist/tools/lsp/client.d.ts.map +1 -1
- package/dist/tools/lsp/client.js +542 -89
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/state-tools.d.ts.map +1 -1
- package/dist/tools/state-tools.js +4 -4
- package/dist/tools/state-tools.js.map +1 -1
- package/dist/utils/__tests__/cache-occupancy.test.js +36 -3
- package/dist/utils/__tests__/cache-occupancy.test.js.map +1 -1
- package/dist/utils/cache-occupancy.d.ts +2 -0
- package/dist/utils/cache-occupancy.d.ts.map +1 -1
- package/dist/utils/cache-occupancy.js +29 -1
- package/dist/utils/cache-occupancy.js.map +1 -1
- package/dist/workflow/__tests__/projections.test.js +6 -4
- package/dist/workflow/__tests__/projections.test.js.map +1 -1
- package/dist/workflow/__tests__/registry.test.js +5 -3
- package/dist/workflow/__tests__/registry.test.js.map +1 -1
- package/dist/workflow/registry.d.ts.map +1 -1
- package/dist/workflow/registry.js +5 -0
- package/dist/workflow/registry.js.map +1 -1
- package/docs/CLAUDE.md +1 -1
- package/docs/HOOKS.md +5 -2
- package/docs/REFERENCE.md +57 -6
- package/docs/shipyard.md +81 -0
- package/hooks/hooks.json +2 -2
- package/package.json +2 -2
- package/scripts/lib/bounded-git-timeout.mjs +3 -2
- package/scripts/lib/cache-occupancy.mjs +31 -3
- package/scripts/lib/hud-cache-wrapper.sh +130 -15
- package/scripts/post-tool-rules-injector.mjs +5 -5
- package/scripts/post-tool-verifier.mjs +36 -18
- package/scripts/project-memory-posttool.mjs +33 -25
- package/scripts/run.cjs +546 -69
- package/scripts/session-start.mjs +161 -25
- package/skills/AGENTS.md +7 -2
- package/skills/ask-navigator/SKILL.md +127 -0
- package/skills/drydock/SKILL.md +337 -0
- package/skills/launch/SKILL.md +152 -0
- package/skills/loft/SKILL.md +70 -0
- package/skills/minimal-code-discipline/SKILL.md +59 -0
- package/templates/hooks/lib/bounded-git-timeout.mjs +3 -2
- package/templates/hooks/lib/cache-occupancy.mjs +17 -2
- package/templates/hooks/pre-tool-use.mjs +1213 -51
- package/templates/hooks/session-start.mjs +161 -16
|
@@ -18,8 +18,158 @@ beforeEach(() => {
|
|
|
18
18
|
vi.clearAllMocks();
|
|
19
19
|
});
|
|
20
20
|
describe('runLspAggregatedDiagnostics', () => {
|
|
21
|
+
it('bounds concurrent files while processing more than one at a time', async () => {
|
|
22
|
+
mockGetServerForFile.mockReturnValue({
|
|
23
|
+
command: 'test-lsp',
|
|
24
|
+
installHint: 'install test-lsp',
|
|
25
|
+
});
|
|
26
|
+
let active = 0;
|
|
27
|
+
let maxActive = 0;
|
|
28
|
+
mockRunWithClientLease.mockImplementation(async (_file, callback) => {
|
|
29
|
+
const openDocument = vi.fn();
|
|
30
|
+
const closeDocument = vi.fn().mockResolvedValue(undefined);
|
|
31
|
+
return callback({
|
|
32
|
+
supportsPullDiagnostics: false,
|
|
33
|
+
openDocument,
|
|
34
|
+
closeDocument,
|
|
35
|
+
withOpenDocument: async (file, operation) => {
|
|
36
|
+
await openDocument(file);
|
|
37
|
+
try {
|
|
38
|
+
return await operation();
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
await closeDocument(file);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
waitForDiagnostics: vi.fn(async () => {
|
|
45
|
+
active++;
|
|
46
|
+
maxActive = Math.max(maxActive, active);
|
|
47
|
+
await new Promise((resolve) => setTimeout(resolve, 25));
|
|
48
|
+
active--;
|
|
49
|
+
}),
|
|
50
|
+
getDiagnostics: vi.fn(() => []),
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
54
|
+
try {
|
|
55
|
+
for (let index = 0; index < 12; index++) {
|
|
56
|
+
writeFileSync(join(tmp, `${index.toString().padStart(2, '0')}.ts`), '');
|
|
57
|
+
}
|
|
58
|
+
const startedAt = performance.now();
|
|
59
|
+
const result = await runLspAggregatedDiagnostics(tmp);
|
|
60
|
+
const elapsedMs = performance.now() - startedAt;
|
|
61
|
+
console.info(JSON.stringify({ files: 12, delayPerFileMs: 25, elapsedMs, maxActive }));
|
|
62
|
+
expect(maxActive).toBeGreaterThan(1);
|
|
63
|
+
expect(maxActive).toBeLessThanOrEqual(8);
|
|
64
|
+
expect(result.filesChecked).toBe(12);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
rmSync(tmp, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
it('closes every document it opens, including when diagnostics waiting fails', async () => {
|
|
71
|
+
mockGetServerForFile.mockReturnValue({
|
|
72
|
+
command: 'test-lsp',
|
|
73
|
+
installHint: 'install test-lsp',
|
|
74
|
+
});
|
|
75
|
+
const openDocument = vi.fn();
|
|
76
|
+
const closeDocument = vi.fn().mockResolvedValue(undefined);
|
|
77
|
+
const waitForDiagnostics = vi.fn().mockResolvedValueOnce(undefined).mockRejectedValueOnce(new Error('cancelled'));
|
|
78
|
+
mockRunWithClientLease.mockImplementation(async (_file, callback) => callback({
|
|
79
|
+
supportsPullDiagnostics: false,
|
|
80
|
+
openDocument,
|
|
81
|
+
closeDocument,
|
|
82
|
+
withOpenDocument: async (file, operation) => {
|
|
83
|
+
await openDocument(file);
|
|
84
|
+
try {
|
|
85
|
+
return await operation();
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
await closeDocument(file);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
waitForDiagnostics,
|
|
92
|
+
getDiagnostics: vi.fn(() => []),
|
|
93
|
+
}));
|
|
94
|
+
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
95
|
+
try {
|
|
96
|
+
writeFileSync(join(tmp, 'a.ts'), '');
|
|
97
|
+
writeFileSync(join(tmp, 'b.ts'), '');
|
|
98
|
+
const result = await runLspAggregatedDiagnostics(tmp);
|
|
99
|
+
console.info(JSON.stringify({ opened: openDocument.mock.calls.length, closed: closeDocument.mock.calls.length }));
|
|
100
|
+
expect(openDocument).toHaveBeenCalledTimes(2);
|
|
101
|
+
expect(closeDocument).toHaveBeenCalledTimes(2);
|
|
102
|
+
expect(closeDocument.mock.calls).toEqual(openDocument.mock.calls);
|
|
103
|
+
expect(result.filesChecked).toBe(1);
|
|
104
|
+
expect(result.skippedFiles).toHaveLength(1);
|
|
105
|
+
expect(result.skippedFiles[0].reason).toBe('cancelled');
|
|
106
|
+
expect(result.success).toBe(false);
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
rmSync(tmp, { recursive: true });
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
it('uses pull diagnostics when the server advertises support', async () => {
|
|
113
|
+
mockGetServerForFile.mockReturnValue({ command: 'test-lsp', installHint: 'install test-lsp' });
|
|
114
|
+
const pullDiagnostics = vi.fn().mockResolvedValue([{
|
|
115
|
+
range: { start: { line: 0, character: 0 }, end: { line: 0, character: 1 } },
|
|
116
|
+
message: 'pulled diagnostic',
|
|
117
|
+
severity: 1,
|
|
118
|
+
}]);
|
|
119
|
+
const waitForDiagnostics = vi.fn();
|
|
120
|
+
mockRunWithClientLease.mockImplementation(async (_file, callback) => callback({
|
|
121
|
+
supportsPullDiagnostics: true,
|
|
122
|
+
withOpenDocument: async (_file, operation) => operation(),
|
|
123
|
+
pullDiagnostics,
|
|
124
|
+
waitForDiagnostics,
|
|
125
|
+
getDiagnostics: vi.fn(() => []),
|
|
126
|
+
}));
|
|
127
|
+
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
128
|
+
try {
|
|
129
|
+
writeFileSync(join(tmp, 'a.ts'), '');
|
|
130
|
+
const result = await runLspAggregatedDiagnostics(tmp);
|
|
131
|
+
expect(pullDiagnostics).toHaveBeenCalledOnce();
|
|
132
|
+
expect(waitForDiagnostics).not.toHaveBeenCalled();
|
|
133
|
+
expect(result.diagnostics.map(item => item.diagnostic.message)).toEqual(['pulled diagnostic']);
|
|
134
|
+
expect(result.success).toBe(false);
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
rmSync(tmp, { recursive: true });
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
it('preserves file order without losing or duplicating diagnostics', async () => {
|
|
141
|
+
mockGetServerForFile.mockReturnValue({ command: 'test-lsp', installHint: 'install test-lsp' });
|
|
142
|
+
mockRunWithClientLease.mockImplementation(async (file, callback) => callback({
|
|
143
|
+
supportsPullDiagnostics: false,
|
|
144
|
+
withOpenDocument: async (_file, operation) => operation(),
|
|
145
|
+
waitForDiagnostics: vi.fn(async () => {
|
|
146
|
+
const delay = file.endsWith('a.ts') ? 20 : file.endsWith('b.ts') ? 10 : 0;
|
|
147
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
148
|
+
}),
|
|
149
|
+
getDiagnostics: vi.fn(() => [{
|
|
150
|
+
range: { start: { line: 0, character: 0 }, end: { line: 0, character: 1 } },
|
|
151
|
+
message: file.slice(-4),
|
|
152
|
+
severity: 1,
|
|
153
|
+
}]),
|
|
154
|
+
}));
|
|
155
|
+
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
156
|
+
try {
|
|
157
|
+
writeFileSync(join(tmp, 'a.ts'), '');
|
|
158
|
+
writeFileSync(join(tmp, 'b.ts'), '');
|
|
159
|
+
writeFileSync(join(tmp, 'c.ts'), '');
|
|
160
|
+
const result = await runLspAggregatedDiagnostics(tmp);
|
|
161
|
+
expect(result.diagnostics.map(item => item.diagnostic.message)).toEqual(['a.ts', 'b.ts', 'c.ts']);
|
|
162
|
+
expect(new Set(result.diagnostics.map(item => item.file)).size).toBe(3);
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
rmSync(tmp, { recursive: true });
|
|
166
|
+
}
|
|
167
|
+
});
|
|
21
168
|
it('surfaces install hints when language server is missing', async () => {
|
|
22
|
-
mockGetServerForFile.mockReturnValue({
|
|
169
|
+
mockGetServerForFile.mockReturnValue({
|
|
170
|
+
command: 'ty',
|
|
171
|
+
installHint: 'Install ty from https://github.com/astral-sh/ty',
|
|
172
|
+
});
|
|
23
173
|
mockRunWithClientLease.mockRejectedValue(new Error("Language server 'ty' not found.\nInstall with: Install ty from https://github.com/astral-sh/ty"));
|
|
24
174
|
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
25
175
|
try {
|
|
@@ -39,7 +189,7 @@ describe('runLspAggregatedDiagnostics', () => {
|
|
|
39
189
|
it('surfaces the selected basedpyright install hint without ty fallback', async () => {
|
|
40
190
|
mockGetServerForFile.mockReturnValue({
|
|
41
191
|
command: 'basedpyright-langserver',
|
|
42
|
-
installHint: 'uv tool install basedpyright'
|
|
192
|
+
installHint: 'uv tool install basedpyright',
|
|
43
193
|
});
|
|
44
194
|
mockRunWithClientLease.mockRejectedValue(new Error("Language server 'basedpyright-langserver' not found.\nInstall with: uv tool install basedpyright"));
|
|
45
195
|
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
@@ -56,10 +206,13 @@ describe('runLspAggregatedDiagnostics', () => {
|
|
|
56
206
|
}
|
|
57
207
|
});
|
|
58
208
|
it('pre-check skips files with no registered language server', async () => {
|
|
59
|
-
mockGetServerForFile
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
209
|
+
mockGetServerForFile.mockReturnValueOnce(null).mockReturnValue({ command: 'ty', installHint: 'pip install ty' });
|
|
210
|
+
mockRunWithClientLease.mockImplementation(async (_file, callback) => callback({
|
|
211
|
+
supportsPullDiagnostics: false,
|
|
212
|
+
withOpenDocument: async (_file, operation) => operation(),
|
|
213
|
+
waitForDiagnostics: vi.fn(),
|
|
214
|
+
getDiagnostics: vi.fn(() => []),
|
|
215
|
+
}));
|
|
63
216
|
const tmp = mkdtempSync(join(tmpdir(), 'lsp-agg-test-'));
|
|
64
217
|
try {
|
|
65
218
|
writeFileSync(join(tmp, 'a.py'), '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-aggregator.test.js","sourceRoot":"","sources":["../../../../src/tools/diagnostics/__tests__/lsp-aggregator.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lsp-aggregator.test.js","sourceRoot":"","sources":["../../../../src/tools/diagnostics/__tests__/lsp-aggregator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC/B,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,gBAAgB,EAAE;QAChB,kBAAkB,EAAE,sBAAsB;KAC3C;IACD,gBAAgB,EAAE,oBAAoB;CACvC,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,aAAa,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,oBAAoB,CAAC,eAAe,CAAC;YACnC,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAClE,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC;gBACd,uBAAuB,EAAE,KAAK;gBAC9B,YAAY;gBACZ,aAAa;gBACb,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,SAAiC,EAAE,EAAE;oBAC1E,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;oBACzB,IAAI,CAAC;wBACH,OAAO,MAAM,SAAS,EAAE,CAAC;oBAC3B,CAAC;4BAAS,CAAC;wBACT,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBACD,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;oBACnC,MAAM,EAAE,CAAC;oBACT,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,MAAM,EAAE,CAAC;gBACX,CAAC,CAAC;gBACF,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;gBACxC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,oBAAoB,CAAC,eAAe,CAAC;YACnC,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,kBAAkB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAClH,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAClE,QAAQ,CAAC;YACP,uBAAuB,EAAE,KAAK;YAC9B,YAAY;YACZ,aAAa;YACb,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,SAAiC,EAAE,EAAE;gBAC1E,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC;oBACH,OAAO,MAAM,SAAS,EAAE,CAAC;gBAC3B,CAAC;wBAAS,CAAC;oBACT,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YACD,kBAAkB;YAClB,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;QAEF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;YAEtD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClH,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,oBAAoB,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC/F,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;gBACjD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;gBAC3E,OAAO,EAAE,mBAAmB;gBAC5B,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC,CAAC;QACJ,MAAM,kBAAkB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;YAC5E,uBAAuB,EAAE,IAAI;YAC7B,gBAAgB,EAAE,KAAK,EAAE,KAAa,EAAE,SAAiC,EAAE,EAAE,CAAC,SAAS,EAAE;YACzF,eAAe;YACf,kBAAkB;YAClB,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;SAChC,CAAC,CAAC,CAAC;QAEJ,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;YAEtD,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC/C,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/F,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,oBAAoB,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC/F,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;YAC3E,uBAAuB,EAAE,KAAK;YAC9B,gBAAgB,EAAE,KAAK,EAAE,KAAa,EAAE,SAAiC,EAAE,EAAE,CAAC,SAAS,EAAE;YACzF,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC;YACF,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC3B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;oBAC3E,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,QAAQ,EAAE,CAAC;iBACZ,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;YAEtD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAClG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,oBAAoB,CAAC,eAAe,CAAC;YACnC,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,iDAAiD;SAC/D,CAAC,CAAC;QACH,sBAAsB,CAAC,iBAAiB,CACtC,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAC5G,CAAC;QAEF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC;YACzF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,oBAAoB,CAAC,eAAe,CAAC;YACnC,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,8BAA8B;SAC5C,CAAC,CAAC;QACH,sBAAsB,CAAC,iBAAiB,CACtC,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAC9G,CAAC;QAEF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC/F,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACjH,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAClE,QAAQ,CAAC;YACP,uBAAuB,EAAE,KAAK;YAC9B,gBAAgB,EAAE,KAAK,EAAE,KAAa,EAAE,SAAiC,EAAE,EAAE,CAAC,SAAS,EAAE;YACzF,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;QAEF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1F,MAAM,CAAC,sBAAsB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,KAAK,GAAyB;YAClC,YAAY,EAAE,CAAC,gBAAgB,CAAC;YAChC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;YACvE,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAyB;YAClC,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -21,6 +21,7 @@ export interface LspAggregationResult {
|
|
|
21
21
|
}>;
|
|
22
22
|
installHints: string[];
|
|
23
23
|
}
|
|
24
|
+
export declare const LSP_DIAGNOSTICS_CONCURRENCY = 8;
|
|
24
25
|
/**
|
|
25
26
|
* Run LSP diagnostics on all TypeScript/JavaScript files in a directory
|
|
26
27
|
* @param directory - Project directory to scan
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-aggregator.d.ts","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"lsp-aggregator.d.ts","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAiE7C;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAM,EAAmC,GACpD,OAAO,CAAC,oBAAoB,CAAC,CAgF/B"}
|
|
@@ -8,6 +8,20 @@ import { readdirSync, statSync } from 'fs';
|
|
|
8
8
|
import { join, extname } from 'path';
|
|
9
9
|
import { lspClientManager, getServerForFile } from '../lsp/index.js';
|
|
10
10
|
import { LSP_DIAGNOSTICS_WAIT_MS } from './index.js';
|
|
11
|
+
export const LSP_DIAGNOSTICS_CONCURRENCY = 8;
|
|
12
|
+
async function mapWithConcurrency(items, concurrency, mapper) {
|
|
13
|
+
const results = new Array(items.length);
|
|
14
|
+
let nextIndex = 0;
|
|
15
|
+
async function worker() {
|
|
16
|
+
while (nextIndex < items.length) {
|
|
17
|
+
const index = nextIndex++;
|
|
18
|
+
results[index] = await mapper(items[index]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const workerCount = Math.min(concurrency, items.length);
|
|
22
|
+
await Promise.all(Array.from({ length: workerCount }, () => worker()));
|
|
23
|
+
return results;
|
|
24
|
+
}
|
|
11
25
|
/**
|
|
12
26
|
* Recursively find files with given extensions
|
|
13
27
|
*/
|
|
@@ -16,7 +30,7 @@ function findFiles(directory, extensions, ignoreDirs = []) {
|
|
|
16
30
|
const ignoreDirSet = new Set(ignoreDirs);
|
|
17
31
|
function walk(dir) {
|
|
18
32
|
try {
|
|
19
|
-
const entries = readdirSync(dir);
|
|
33
|
+
const entries = readdirSync(dir).sort();
|
|
20
34
|
for (const entry of entries) {
|
|
21
35
|
const fullPath = join(dir, entry);
|
|
22
36
|
try {
|
|
@@ -58,47 +72,59 @@ export async function runLspAggregatedDiagnostics(directory, extensions = ['.ts'
|
|
|
58
72
|
// Find all matching files
|
|
59
73
|
const files = findFiles(directory, extensions, ['node_modules', 'dist', 'build', '.git']);
|
|
60
74
|
const allDiagnostics = [];
|
|
61
|
-
let filesChecked = 0;
|
|
62
75
|
const skippedFiles = [];
|
|
63
76
|
const installHintSet = new Set();
|
|
64
|
-
|
|
77
|
+
const fileResults = await mapWithConcurrency(files, LSP_DIAGNOSTICS_CONCURRENCY, async (file) => {
|
|
65
78
|
// Guards future callers passing custom extensions with no registered LSP; redundant under default extension list.
|
|
66
79
|
if (!getServerForFile(file)) {
|
|
67
|
-
|
|
68
|
-
|
|
80
|
+
return {
|
|
81
|
+
file,
|
|
82
|
+
skippedReason: 'no language server registered for extension',
|
|
83
|
+
};
|
|
69
84
|
}
|
|
70
85
|
try {
|
|
71
|
-
await lspClientManager.runWithClientLease(file, async (client) => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
for (const diagnostic of diagnostics) {
|
|
82
|
-
allDiagnostics.push({
|
|
83
|
-
file,
|
|
84
|
-
diagnostic
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
// Must remain the last statement in the lease callback to preserve filesChecked + skippedFiles.length === files.length.
|
|
88
|
-
filesChecked++;
|
|
86
|
+
const diagnostics = await lspClientManager.runWithClientLease(file, async (client) => {
|
|
87
|
+
return client.withOpenDocument(file, async () => {
|
|
88
|
+
if (client.supportsPullDiagnostics) {
|
|
89
|
+
return client.pullDiagnostics(file);
|
|
90
|
+
}
|
|
91
|
+
// Wait for the server to publish diagnostics via textDocument/publishDiagnostics.
|
|
92
|
+
// The timeout prevents a server that omits the notification from blocking a worker.
|
|
93
|
+
await client.waitForDiagnostics(file, LSP_DIAGNOSTICS_WAIT_MS);
|
|
94
|
+
return client.getDiagnostics(file);
|
|
95
|
+
});
|
|
89
96
|
});
|
|
97
|
+
return { file, diagnostics };
|
|
90
98
|
}
|
|
91
99
|
catch (error) {
|
|
92
100
|
const message = error instanceof Error ? error.message : String(error);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
return { file, skippedReason: message };
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
let filesChecked = 0;
|
|
105
|
+
for (const result of fileResults) {
|
|
106
|
+
if (result.diagnostics) {
|
|
107
|
+
filesChecked++;
|
|
108
|
+
for (const diagnostic of result.diagnostics) {
|
|
109
|
+
allDiagnostics.push({
|
|
110
|
+
file: result.file,
|
|
111
|
+
diagnostic
|
|
112
|
+
});
|
|
101
113
|
}
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const message = result.skippedReason ?? 'unknown LSP diagnostics failure';
|
|
117
|
+
// Keep the missing-server header literal in formatLspResult in sync.
|
|
118
|
+
const match = message.match(/^Language server '([^']+)' not found\.\nInstall with: (.+)$/s);
|
|
119
|
+
if (match) {
|
|
120
|
+
installHintSet.add(match[2].trim());
|
|
121
|
+
skippedFiles.push({
|
|
122
|
+
file: result.file,
|
|
123
|
+
reason: `missing language server: ${match[1]}`
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
skippedFiles.push({ file: result.file, reason: message });
|
|
102
128
|
}
|
|
103
129
|
}
|
|
104
130
|
// Count errors and warnings
|
|
@@ -107,7 +133,7 @@ export async function runLspAggregatedDiagnostics(directory, extensions = ['.ts'
|
|
|
107
133
|
const installHints = Array.from(installHintSet);
|
|
108
134
|
const allFilesSkipped = filesChecked === 0 && files.length > 0;
|
|
109
135
|
return {
|
|
110
|
-
success: errorCount === 0 && !allFilesSkipped,
|
|
136
|
+
success: errorCount === 0 && skippedFiles.length === 0 && !allFilesSkipped,
|
|
111
137
|
diagnostics: allDiagnostics,
|
|
112
138
|
errorCount,
|
|
113
139
|
warningCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-aggregator.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAiBrD;;GAEG;AACH,SAAS,SAAS,CAAC,SAAiB,EAAE,UAAoB,EAAE,aAAuB,EAAE;IACnF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEzC,SAAS,IAAI,CAAC,GAAW;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-aggregator.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-document-lifecycle.test.d.ts","sourceRoot":"","sources":["../../../../src/tools/lsp/__tests__/client-document-lifecycle.test.ts"],"names":[],"mappings":""}
|