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.
Files changed (313) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +6 -1
  3. package/bridge/__pycache__/gyoshu_bridge.cpython-312.pyc +0 -0
  4. package/bridge/claude-md-coordinator.cjs +2 -2
  5. package/bridge/cli.cjs +3054 -1290
  6. package/bridge/mcp-server.cjs +972 -147
  7. package/bridge/runtime-cli.cjs +453 -70
  8. package/bridge/team-bridge.cjs +320 -18
  9. package/bridge/team-mcp.cjs +357 -20
  10. package/bridge/team.js +486 -66
  11. package/dist/__tests__/bounded-git-timeout-parity.test.js +2 -0
  12. package/dist/__tests__/bounded-git-timeout-parity.test.js.map +1 -1
  13. package/dist/__tests__/delegation-enforcement-levels.test.js +32 -1
  14. package/dist/__tests__/delegation-enforcement-levels.test.js.map +1 -1
  15. package/dist/__tests__/hud/cli-diagnostic.test.js +1 -0
  16. package/dist/__tests__/hud/cli-diagnostic.test.js.map +1 -1
  17. package/dist/__tests__/hud/update-hint.test.d.ts +2 -0
  18. package/dist/__tests__/hud/update-hint.test.d.ts.map +1 -0
  19. package/dist/__tests__/hud/update-hint.test.js +120 -0
  20. package/dist/__tests__/hud/update-hint.test.js.map +1 -0
  21. package/dist/__tests__/hud/watch-mode-init.test.js +1 -0
  22. package/dist/__tests__/hud/watch-mode-init.test.js.map +1 -1
  23. package/dist/__tests__/hud-cache-wrapper.test.js +350 -5
  24. package/dist/__tests__/hud-cache-wrapper.test.js.map +1 -1
  25. package/dist/__tests__/live-data.test.js +4 -0
  26. package/dist/__tests__/live-data.test.js.map +1 -1
  27. package/dist/__tests__/npm-package-bin-surface.test.js +1 -0
  28. package/dist/__tests__/npm-package-bin-surface.test.js.map +1 -1
  29. package/dist/__tests__/post-tool-rules-injector.test.js +42 -12
  30. package/dist/__tests__/post-tool-rules-injector.test.js.map +1 -1
  31. package/dist/__tests__/preemptive-compaction-hook.test.js +3 -3
  32. package/dist/__tests__/preemptive-compaction-hook.test.js.map +1 -1
  33. package/dist/__tests__/project-memory-posttool.test.d.ts +2 -0
  34. package/dist/__tests__/project-memory-posttool.test.d.ts.map +1 -0
  35. package/dist/__tests__/project-memory-posttool.test.js +84 -0
  36. package/dist/__tests__/project-memory-posttool.test.js.map +1 -0
  37. package/dist/__tests__/rate-limit-wait/integration.test.js +3 -3
  38. package/dist/__tests__/rate-limit-wait/integration.test.js.map +1 -1
  39. package/dist/__tests__/run-cjs-generic-timeout.test.js +146 -12
  40. package/dist/__tests__/run-cjs-generic-timeout.test.js.map +1 -1
  41. package/dist/__tests__/run-cjs-graceful-fallback.test.js +86 -14
  42. package/dist/__tests__/run-cjs-graceful-fallback.test.js.map +1 -1
  43. package/dist/__tests__/run-cjs-windows-stdio-contract.test.d.ts +2 -0
  44. package/dist/__tests__/run-cjs-windows-stdio-contract.test.d.ts.map +1 -0
  45. package/dist/__tests__/run-cjs-windows-stdio-contract.test.js +847 -0
  46. package/dist/__tests__/run-cjs-windows-stdio-contract.test.js.map +1 -0
  47. package/dist/__tests__/session-end-process-exit.test.js +61 -14
  48. package/dist/__tests__/session-end-process-exit.test.js.map +1 -1
  49. package/dist/__tests__/session-history-search.test.js +84 -1
  50. package/dist/__tests__/session-history-search.test.js.map +1 -1
  51. package/dist/__tests__/session-start-timeout-cleanup.test.js +11 -7
  52. package/dist/__tests__/session-start-timeout-cleanup.test.js.map +1 -1
  53. package/dist/__tests__/session-start-update-check.test.d.ts +2 -0
  54. package/dist/__tests__/session-start-update-check.test.d.ts.map +1 -0
  55. package/dist/__tests__/session-start-update-check.test.js +69 -0
  56. package/dist/__tests__/session-start-update-check.test.js.map +1 -0
  57. package/dist/__tests__/session-start-update-refresh.test.d.ts +2 -0
  58. package/dist/__tests__/session-start-update-refresh.test.d.ts.map +1 -0
  59. package/dist/__tests__/session-start-update-refresh.test.js +179 -0
  60. package/dist/__tests__/session-start-update-refresh.test.js.map +1 -0
  61. package/dist/__tests__/shipyard-seed-locale.test.d.ts +2 -0
  62. package/dist/__tests__/shipyard-seed-locale.test.d.ts.map +1 -0
  63. package/dist/__tests__/shipyard-seed-locale.test.js +213 -0
  64. package/dist/__tests__/shipyard-seed-locale.test.js.map +1 -0
  65. package/dist/__tests__/shipyard-skills.test.d.ts +2 -0
  66. package/dist/__tests__/shipyard-skills.test.d.ts.map +1 -0
  67. package/dist/__tests__/shipyard-skills.test.js +418 -0
  68. package/dist/__tests__/shipyard-skills.test.js.map +1 -0
  69. package/dist/__tests__/skills.test.js +15 -5
  70. package/dist/__tests__/skills.test.js.map +1 -1
  71. package/dist/__tests__/tier0-docs-consistency.test.js +6 -2
  72. package/dist/__tests__/tier0-docs-consistency.test.js.map +1 -1
  73. package/dist/__tests__/trusted-publishing-contract.test.js +6 -8
  74. package/dist/__tests__/trusted-publishing-contract.test.js.map +1 -1
  75. package/dist/__tests__/windows-prompt-hook-runner.test.js +63 -9
  76. package/dist/__tests__/windows-prompt-hook-runner.test.js.map +1 -1
  77. package/dist/alias-retirement/__tests__/registry.test.js +8 -3
  78. package/dist/alias-retirement/__tests__/registry.test.js.map +1 -1
  79. package/dist/cli/checkpoint.d.ts +16 -0
  80. package/dist/cli/checkpoint.d.ts.map +1 -0
  81. package/dist/cli/checkpoint.js +79 -0
  82. package/dist/cli/checkpoint.js.map +1 -0
  83. package/dist/cli/graph.d.ts.map +1 -1
  84. package/dist/cli/graph.js +127 -3
  85. package/dist/cli/graph.js.map +1 -1
  86. package/dist/cli/index.d.ts.map +1 -1
  87. package/dist/cli/index.js +2 -0
  88. package/dist/cli/index.js.map +1 -1
  89. package/dist/config/__tests__/loader.test.js +17 -0
  90. package/dist/config/__tests__/loader.test.js.map +1 -1
  91. package/dist/config/loader.d.ts.map +1 -1
  92. package/dist/config/loader.js +12 -0
  93. package/dist/config/loader.js.map +1 -1
  94. package/dist/features/__tests__/checkpoint.test.d.ts +6 -0
  95. package/dist/features/__tests__/checkpoint.test.d.ts.map +1 -0
  96. package/dist/features/__tests__/checkpoint.test.js +113 -0
  97. package/dist/features/__tests__/checkpoint.test.js.map +1 -0
  98. package/dist/features/checkpoint/index.d.ts +50 -0
  99. package/dist/features/checkpoint/index.d.ts.map +1 -0
  100. package/dist/features/checkpoint/index.js +170 -0
  101. package/dist/features/checkpoint/index.js.map +1 -0
  102. package/dist/features/notepad-wisdom/__tests__/extractor.test.d.ts +2 -0
  103. package/dist/features/notepad-wisdom/__tests__/extractor.test.d.ts.map +1 -0
  104. package/dist/features/notepad-wisdom/__tests__/extractor.test.js +17 -0
  105. package/dist/features/notepad-wisdom/__tests__/extractor.test.js.map +1 -0
  106. package/dist/features/notepad-wisdom/extractor.js +1 -1
  107. package/dist/features/notepad-wisdom/extractor.js.map +1 -1
  108. package/dist/features/session-history-search/index.d.ts +8 -2
  109. package/dist/features/session-history-search/index.d.ts.map +1 -1
  110. package/dist/features/session-history-search/index.js +86 -25
  111. package/dist/features/session-history-search/index.js.map +1 -1
  112. package/dist/graph/__tests__/runtime/remote-approval.test.d.ts +6 -0
  113. package/dist/graph/__tests__/runtime/remote-approval.test.d.ts.map +1 -0
  114. package/dist/graph/__tests__/runtime/remote-approval.test.js +217 -0
  115. package/dist/graph/__tests__/runtime/remote-approval.test.js.map +1 -0
  116. package/dist/graph/runtime/remote-approval.d.ts +90 -0
  117. package/dist/graph/runtime/remote-approval.d.ts.map +1 -0
  118. package/dist/graph/runtime/remote-approval.js +254 -0
  119. package/dist/graph/runtime/remote-approval.js.map +1 -0
  120. package/dist/graph/schema.d.ts +2 -2
  121. package/dist/hooks/__tests__/pre-tool-use-template-source-ext.test.js +494 -12
  122. package/dist/hooks/__tests__/pre-tool-use-template-source-ext.test.js.map +1 -1
  123. package/dist/hooks/omc-orchestrator/index.d.ts +1 -0
  124. package/dist/hooks/omc-orchestrator/index.d.ts.map +1 -1
  125. package/dist/hooks/omc-orchestrator/index.js +132 -14
  126. package/dist/hooks/omc-orchestrator/index.js.map +1 -1
  127. package/dist/hooks/permission-handler/index.d.ts.map +1 -1
  128. package/dist/hooks/permission-handler/index.js +4 -3
  129. package/dist/hooks/permission-handler/index.js.map +1 -1
  130. package/dist/hooks/persistent-mode/__tests__/tool-error.test.js +4 -2
  131. package/dist/hooks/persistent-mode/__tests__/tool-error.test.js.map +1 -1
  132. package/dist/hooks/skill-bridge.cjs +338 -16
  133. package/dist/hud/elements/update-hint.d.ts +22 -0
  134. package/dist/hud/elements/update-hint.d.ts.map +1 -0
  135. package/dist/hud/elements/update-hint.js +29 -0
  136. package/dist/hud/elements/update-hint.js.map +1 -0
  137. package/dist/hud/index.d.ts +0 -4
  138. package/dist/hud/index.d.ts.map +1 -1
  139. package/dist/hud/index.js +21 -2
  140. package/dist/hud/index.js.map +1 -1
  141. package/dist/hud/render.d.ts.map +1 -1
  142. package/dist/hud/render.js +17 -0
  143. package/dist/hud/render.js.map +1 -1
  144. package/dist/hud/types.d.ts +6 -0
  145. package/dist/hud/types.d.ts.map +1 -1
  146. package/dist/hud/types.js +2 -2
  147. package/dist/hud/types.js.map +1 -1
  148. package/dist/installer/__tests__/hook-templates.test.js +16 -2
  149. package/dist/installer/__tests__/hook-templates.test.js.map +1 -1
  150. package/dist/lib/__tests__/worktree-paths-git-timeout.test.d.ts +2 -0
  151. package/dist/lib/__tests__/worktree-paths-git-timeout.test.d.ts.map +1 -0
  152. package/dist/lib/__tests__/worktree-paths-git-timeout.test.js +118 -0
  153. package/dist/lib/__tests__/worktree-paths-git-timeout.test.js.map +1 -0
  154. package/dist/lib/__tests__/worktree-paths-split-warning.test.d.ts +2 -0
  155. package/dist/lib/__tests__/worktree-paths-split-warning.test.d.ts.map +1 -0
  156. package/dist/lib/__tests__/worktree-paths-split-warning.test.js +247 -0
  157. package/dist/lib/__tests__/worktree-paths-split-warning.test.js.map +1 -0
  158. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.d.ts +2 -0
  159. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.d.ts.map +1 -0
  160. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.js +442 -0
  161. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.js.map +1 -0
  162. package/dist/lib/worktree-paths.d.ts +21 -7
  163. package/dist/lib/worktree-paths.d.ts.map +1 -1
  164. package/dist/lib/worktree-paths.js +411 -25
  165. package/dist/lib/worktree-paths.js.map +1 -1
  166. package/dist/notifications/__tests__/approval-reply.test.d.ts +6 -0
  167. package/dist/notifications/__tests__/approval-reply.test.d.ts.map +1 -0
  168. package/dist/notifications/__tests__/approval-reply.test.js +71 -0
  169. package/dist/notifications/__tests__/approval-reply.test.js.map +1 -0
  170. package/dist/notifications/config.d.ts.map +1 -1
  171. package/dist/notifications/config.js +3 -0
  172. package/dist/notifications/config.js.map +1 -1
  173. package/dist/notifications/formatter.d.ts +5 -0
  174. package/dist/notifications/formatter.d.ts.map +1 -1
  175. package/dist/notifications/formatter.js +21 -0
  176. package/dist/notifications/formatter.js.map +1 -1
  177. package/dist/notifications/hook-config-types.d.ts +1 -0
  178. package/dist/notifications/hook-config-types.d.ts.map +1 -1
  179. package/dist/notifications/index.d.ts.map +1 -1
  180. package/dist/notifications/index.js +7 -2
  181. package/dist/notifications/index.js.map +1 -1
  182. package/dist/notifications/reply-listener.d.ts +12 -0
  183. package/dist/notifications/reply-listener.d.ts.map +1 -1
  184. package/dist/notifications/reply-listener.js +135 -0
  185. package/dist/notifications/reply-listener.js.map +1 -1
  186. package/dist/notifications/session-registry.d.ts +6 -0
  187. package/dist/notifications/session-registry.d.ts.map +1 -1
  188. package/dist/notifications/session-registry.js.map +1 -1
  189. package/dist/notifications/template-engine.d.ts.map +1 -1
  190. package/dist/notifications/template-engine.js +3 -0
  191. package/dist/notifications/template-engine.js.map +1 -1
  192. package/dist/notifications/types.d.ts +11 -1
  193. package/dist/notifications/types.d.ts.map +1 -1
  194. package/dist/shared/types.d.ts +1 -0
  195. package/dist/shared/types.d.ts.map +1 -1
  196. package/dist/shared/types.js.map +1 -1
  197. package/dist/team/__tests__/bridge-entry.guardrails.test.js +1 -1
  198. package/dist/team/__tests__/bridge-entry.guardrails.test.js.map +1 -1
  199. package/dist/team/__tests__/bridge-entry.test.js +1 -1
  200. package/dist/team/__tests__/bridge-entry.test.js.map +1 -1
  201. package/dist/team/__tests__/model-contract.test.js +45 -1
  202. package/dist/team/__tests__/model-contract.test.js.map +1 -1
  203. package/dist/team/__tests__/runtime-v2.dispatch.test.js +140 -0
  204. package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
  205. package/dist/team/__tests__/runtime-v2.gemini-preflight.test.js +6 -0
  206. package/dist/team/__tests__/runtime-v2.gemini-preflight.test.js.map +1 -1
  207. package/dist/team/__tests__/scaling-launch-config.test.js +99 -0
  208. package/dist/team/__tests__/scaling-launch-config.test.js.map +1 -1
  209. package/dist/team/__tests__/scaling.test.js +14 -0
  210. package/dist/team/__tests__/scaling.test.js.map +1 -1
  211. package/dist/team/__tests__/stage-router.test.js +31 -0
  212. package/dist/team/__tests__/stage-router.test.js.map +1 -1
  213. package/dist/team/__tests__/worker-launch-wrapper-posix.test.d.ts +10 -0
  214. package/dist/team/__tests__/worker-launch-wrapper-posix.test.d.ts.map +1 -0
  215. package/dist/team/__tests__/worker-launch-wrapper-posix.test.js +190 -0
  216. package/dist/team/__tests__/worker-launch-wrapper-posix.test.js.map +1 -0
  217. package/dist/team/bridge-entry.js +3 -3
  218. package/dist/team/bridge-entry.js.map +1 -1
  219. package/dist/team/model-contract.d.ts +11 -0
  220. package/dist/team/model-contract.d.ts.map +1 -1
  221. package/dist/team/model-contract.js +72 -5
  222. package/dist/team/model-contract.js.map +1 -1
  223. package/dist/team/monitor.d.ts.map +1 -1
  224. package/dist/team/monitor.js +31 -5
  225. package/dist/team/monitor.js.map +1 -1
  226. package/dist/team/runtime-v2.d.ts.map +1 -1
  227. package/dist/team/runtime-v2.js +10 -12
  228. package/dist/team/runtime-v2.js.map +1 -1
  229. package/dist/team/runtime.d.ts.map +1 -1
  230. package/dist/team/runtime.js +2 -28
  231. package/dist/team/runtime.js.map +1 -1
  232. package/dist/team/scaling.d.ts.map +1 -1
  233. package/dist/team/scaling.js +15 -6
  234. package/dist/team/scaling.js.map +1 -1
  235. package/dist/team/stage-router.d.ts.map +1 -1
  236. package/dist/team/stage-router.js +17 -11
  237. package/dist/team/stage-router.js.map +1 -1
  238. package/dist/team/team-ops.d.ts.map +1 -1
  239. package/dist/team/team-ops.js +3 -0
  240. package/dist/team/team-ops.js.map +1 -1
  241. package/dist/team/team-state-reader.d.ts.map +1 -1
  242. package/dist/team/team-state-reader.js +4 -1
  243. package/dist/team/team-state-reader.js.map +1 -1
  244. package/dist/team/types.d.ts +11 -1
  245. package/dist/team/types.d.ts.map +1 -1
  246. package/dist/team/types.js.map +1 -1
  247. package/dist/team/worker-launch-ack.d.ts +2 -0
  248. package/dist/team/worker-launch-ack.d.ts.map +1 -1
  249. package/dist/team/worker-launch-ack.js +31 -11
  250. package/dist/team/worker-launch-ack.js.map +1 -1
  251. package/dist/tools/__tests__/wiki-tools-direct-dist-failclosed.test.js +20 -1
  252. package/dist/tools/__tests__/wiki-tools-direct-dist-failclosed.test.js.map +1 -1
  253. package/dist/tools/__tests__/wiki-tools-git-probe-failclosed.test.js +4 -1
  254. package/dist/tools/__tests__/wiki-tools-git-probe-failclosed.test.js.map +1 -1
  255. package/dist/tools/ast-tools.d.ts.map +1 -1
  256. package/dist/tools/ast-tools.js +7 -2
  257. package/dist/tools/ast-tools.js.map +1 -1
  258. package/dist/tools/diagnostics/__tests__/lsp-aggregator.test.js +159 -6
  259. package/dist/tools/diagnostics/__tests__/lsp-aggregator.test.js.map +1 -1
  260. package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -0
  261. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  262. package/dist/tools/diagnostics/lsp-aggregator.js +58 -32
  263. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  264. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.d.ts +2 -0
  265. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.d.ts.map +1 -0
  266. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.js +585 -0
  267. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.js.map +1 -0
  268. package/dist/tools/lsp/__tests__/client-handle-data.test.js +5 -2
  269. package/dist/tools/lsp/__tests__/client-handle-data.test.js.map +1 -1
  270. package/dist/tools/lsp/client.d.ts +39 -1
  271. package/dist/tools/lsp/client.d.ts.map +1 -1
  272. package/dist/tools/lsp/client.js +542 -89
  273. package/dist/tools/lsp/client.js.map +1 -1
  274. package/dist/tools/state-tools.d.ts.map +1 -1
  275. package/dist/tools/state-tools.js +4 -4
  276. package/dist/tools/state-tools.js.map +1 -1
  277. package/dist/utils/__tests__/cache-occupancy.test.js +36 -3
  278. package/dist/utils/__tests__/cache-occupancy.test.js.map +1 -1
  279. package/dist/utils/cache-occupancy.d.ts +2 -0
  280. package/dist/utils/cache-occupancy.d.ts.map +1 -1
  281. package/dist/utils/cache-occupancy.js +29 -1
  282. package/dist/utils/cache-occupancy.js.map +1 -1
  283. package/dist/workflow/__tests__/projections.test.js +6 -4
  284. package/dist/workflow/__tests__/projections.test.js.map +1 -1
  285. package/dist/workflow/__tests__/registry.test.js +5 -3
  286. package/dist/workflow/__tests__/registry.test.js.map +1 -1
  287. package/dist/workflow/registry.d.ts.map +1 -1
  288. package/dist/workflow/registry.js +5 -0
  289. package/dist/workflow/registry.js.map +1 -1
  290. package/docs/CLAUDE.md +1 -1
  291. package/docs/HOOKS.md +5 -2
  292. package/docs/REFERENCE.md +57 -6
  293. package/docs/shipyard.md +81 -0
  294. package/hooks/hooks.json +2 -2
  295. package/package.json +2 -2
  296. package/scripts/lib/bounded-git-timeout.mjs +3 -2
  297. package/scripts/lib/cache-occupancy.mjs +31 -3
  298. package/scripts/lib/hud-cache-wrapper.sh +130 -15
  299. package/scripts/post-tool-rules-injector.mjs +5 -5
  300. package/scripts/post-tool-verifier.mjs +36 -18
  301. package/scripts/project-memory-posttool.mjs +33 -25
  302. package/scripts/run.cjs +546 -69
  303. package/scripts/session-start.mjs +161 -25
  304. package/skills/AGENTS.md +7 -2
  305. package/skills/ask-navigator/SKILL.md +127 -0
  306. package/skills/drydock/SKILL.md +337 -0
  307. package/skills/launch/SKILL.md +152 -0
  308. package/skills/loft/SKILL.md +70 -0
  309. package/skills/minimal-code-discipline/SKILL.md +59 -0
  310. package/templates/hooks/lib/bounded-git-timeout.mjs +3 -2
  311. package/templates/hooks/lib/cache-occupancy.mjs +17 -2
  312. package/templates/hooks/pre-tool-use.mjs +1213 -51
  313. 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({ command: 'ty', installHint: 'Install ty from https://github.com/astral-sh/ty' });
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
- .mockReturnValueOnce(null)
61
- .mockReturnValue({ command: 'ty', installHint: 'pip install ty' });
62
- mockRunWithClientLease.mockResolvedValue(undefined);
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":"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"}
@@ -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;AA6CD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAM,EAAmC,GACpD,OAAO,CAAC,oBAAoB,CAAC,CAoE/B"}
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
- for (const file of files) {
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
- skippedFiles.push({ file, reason: 'no language server registered for extension' });
68
- continue;
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
- // Open document to trigger diagnostics
73
- await client.openDocument(file);
74
- // Wait for the server to publish diagnostics via textDocument/publishDiagnostics
75
- // notification instead of using a fixed delay. Falls back to LSP_DIAGNOSTICS_WAIT_MS
76
- // as a timeout so we don't hang forever on servers that omit the notification.
77
- await client.waitForDiagnostics(file, LSP_DIAGNOSTICS_WAIT_MS);
78
- // Get diagnostics for this file
79
- const diagnostics = client.getDiagnostics(file);
80
- // Add to aggregated results
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
- // Regex pinned to throw at src/tools/lsp/client.ts:186 — keep header literal in formatLspResult in sync.
94
- const match = message.match(/^Language server '([^']+)' not found\.\nInstall with: (.+)$/s);
95
- if (match) {
96
- installHintSet.add(match[2].trim());
97
- skippedFiles.push({ file, reason: `missing language server: ${match[1]}` });
98
- }
99
- else {
100
- skippedFiles.push({ file, reason: message });
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":"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"}
1
+ {"version":3,"file":"lsp-aggregator.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client-document-lifecycle.test.d.ts.map
@@ -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":""}