oh-my-opencode 5.0.0-beta.2 → 5.0.0-beta.21

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 (460) hide show
  1. package/.agents/command/publish.md +44 -16
  2. package/.agents/skills/publish/SKILL.md +44 -16
  3. package/.agents/skills/senpi-qa/SKILL.md +80 -0
  4. package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.mjs +65 -0
  5. package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs +171 -0
  6. package/.agents/skills/work-with-pr/SKILL.md +37 -23
  7. package/.opencode/command/publish.md +44 -16
  8. package/.opencode/skills/work-with-pr/SKILL.md +37 -23
  9. package/README.ja.md +25 -21
  10. package/README.ko.md +25 -21
  11. package/README.md +38 -23
  12. package/README.ru.md +24 -20
  13. package/README.zh-cn.md +25 -21
  14. package/dist/agents/atlas/agent.d.ts +0 -1
  15. package/dist/agents/sisyphus/grok-4.d.ts +20 -0
  16. package/dist/agents/sisyphus/index.d.ts +2 -0
  17. package/dist/agents/sisyphus-agent-config.d.ts +6 -0
  18. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  19. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +15 -4
  20. package/dist/agents/types.d.ts +2 -2
  21. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  22. package/dist/cli/index.js +23057 -20893
  23. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  24. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  25. package/dist/cli/runtime-commands.d.ts +1 -1
  26. package/dist/cli/worktree-sweep/classify.d.ts +16 -0
  27. package/dist/cli/worktree-sweep/format.d.ts +8 -0
  28. package/dist/cli/worktree-sweep/git.d.ts +19 -0
  29. package/dist/cli/worktree-sweep/index.d.ts +7 -0
  30. package/dist/cli/worktree-sweep/options.d.ts +2 -0
  31. package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
  32. package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
  33. package/dist/cli/worktree-sweep/types.d.ts +65 -0
  34. package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
  35. package/dist/cli-node/index.js +23093 -20929
  36. package/dist/config/schema/commands.d.ts +1 -1
  37. package/dist/config/schema/hooks.d.ts +1 -1
  38. package/dist/config/schema/oh-my-opencode-config.d.ts +4 -1
  39. package/dist/config/schema/ulw-execute.d.ts +5 -0
  40. package/dist/config/validate.d.ts +2 -0
  41. package/dist/create-hooks.d.ts +3 -1
  42. package/dist/features/btw-side/btw-command-draft.d.ts +7 -0
  43. package/dist/features/btw-side/context-injector.d.ts +15 -0
  44. package/dist/features/btw-side/index.d.ts +8 -0
  45. package/dist/features/btw-side/metadata.d.ts +15 -0
  46. package/dist/features/btw-side/parent-context-budget.d.ts +9 -0
  47. package/dist/features/btw-side/server-session-registry.d.ts +8 -0
  48. package/dist/features/btw-side/tui-adoption-cache.d.ts +13 -0
  49. package/dist/features/btw-side/tui-adoption-guard.d.ts +5 -0
  50. package/dist/features/btw-side/tui-controller-types.d.ts +68 -0
  51. package/dist/features/btw-side/tui-controller.d.ts +19 -0
  52. package/dist/features/btw-side/tui-escape-return.d.ts +12 -0
  53. package/dist/features/btw-side/tui-keymap.d.ts +17 -0
  54. package/dist/features/btw-side/tui-parent-validator.d.ts +6 -0
  55. package/dist/features/btw-side/tui-picker-options.d.ts +20 -0
  56. package/dist/features/btw-side/tui-picker.d.ts +9 -0
  57. package/dist/features/btw-side/tui-prompt-queue.d.ts +8 -0
  58. package/dist/features/btw-side/tui-session-bridge.d.ts +11 -0
  59. package/dist/features/btw-side/tui-session-catalog.d.ts +35 -0
  60. package/dist/features/btw-side/tui-side-removal.d.ts +11 -0
  61. package/dist/features/btw-side/tui-side-start.d.ts +9 -0
  62. package/dist/features/btw-side/tui-wiring.d.ts +8 -0
  63. package/dist/features/builtin-commands/templates/ulw-execute.d.ts +1 -0
  64. package/dist/features/builtin-commands/types.d.ts +1 -1
  65. package/dist/features/opengateway-provider/index.d.ts +13 -0
  66. package/dist/hooks/atlas/atlas-hook.d.ts +1 -0
  67. package/dist/hooks/atlas/atlas-lifecycle-store.d.ts +50 -0
  68. package/dist/hooks/atlas/event-handler.d.ts +1 -0
  69. package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
  70. package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
  71. package/dist/hooks/atlas/tool-execute-before.d.ts +3 -0
  72. package/dist/hooks/atlas/types.d.ts +1 -0
  73. package/dist/hooks/index.d.ts +1 -1
  74. package/dist/hooks/prometheus-md-only/agent-resolution.d.ts +2 -2
  75. package/dist/hooks/runtime-fallback/chat-message-handler.d.ts +2 -0
  76. package/dist/hooks/runtime-fallback/retry-model-payload.d.ts +1 -0
  77. package/dist/hooks/runtime-fallback/runtime-model-settings.d.ts +6 -0
  78. package/dist/hooks/runtime-fallback/session-status-handler.d.ts +1 -1
  79. package/dist/hooks/runtime-fallback/types.d.ts +3 -1
  80. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  81. package/dist/hooks/{start-work → ulw-execute}/context-info-builder.d.ts +1 -1
  82. package/dist/hooks/{start-work → ulw-execute}/index.d.ts +1 -1
  83. package/dist/hooks/ulw-execute/ulw-execute-hook.d.ts +23 -0
  84. package/dist/index.js +11724 -6355
  85. package/dist/oh-my-opencode.schema.json +15 -2
  86. package/dist/plugin/chat-message/types.d.ts +3 -3
  87. package/dist/plugin/chat-message/ulw-execute-message.d.ts +5 -0
  88. package/dist/plugin/event-session-lifecycle.d.ts +1 -0
  89. package/dist/plugin/hooks/create-core-hooks.d.ts +2 -1
  90. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -2
  91. package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -0
  92. package/dist/plugin/messages-transform.d.ts +1 -0
  93. package/dist/shared/index.d.ts +1 -0
  94. package/dist/shared/normalize-sdk-response.d.ts +1 -0
  95. package/dist/shared/runtime-fallback-retry-marker.d.ts +16 -0
  96. package/dist/shared/shell-env.d.ts +1 -1
  97. package/dist/skills/ast-grep/AGENTS.md +51 -0
  98. package/dist/skills/coding-agent-sessions/AGENTS.md +62 -0
  99. package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
  100. package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  101. package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
  102. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  103. package/dist/skills/frontend/SKILL.md +11 -7
  104. package/dist/skills/frontend/references/design/_INDEX.md +1 -0
  105. package/dist/skills/frontend/references/design/print-paged-media.md +76 -0
  106. package/dist/skills/frontend/references/design/stylegallery.md +80 -0
  107. package/dist/skills/frontend/references/designpowers/README.md +1 -1
  108. package/dist/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  109. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  110. package/dist/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  111. package/dist/skills/frontend/references/designpowers/orchestration.md +1 -1
  112. package/dist/skills/frontend/references/designpowers/routing.md +5 -5
  113. package/dist/skills/review-work/SKILL.md +3 -3
  114. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  115. package/dist/skills/ultimate-browsing/SKILL.md +2 -0
  116. package/dist/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  117. package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
  118. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  119. package/dist/skills/{start-work → ulw-execute}/SKILL.md +9 -8
  120. package/dist/skills/ulw-plan/SKILL.md +6 -6
  121. package/dist/skills/ulw-plan/references/full-workflow.md +31 -7
  122. package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
  123. package/dist/skills/ulw-plan/references/intent-unclear.md +5 -5
  124. package/dist/skills/ulw-research/SKILL.md +1 -1
  125. package/dist/skills/visual-qa/AGENTS.md +58 -0
  126. package/dist/skills/visual-qa/SKILL.md +3 -2
  127. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  128. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  129. package/dist/tools/delegate-task/tool-description.d.ts +3 -1
  130. package/dist/tui.js +8824 -8906
  131. package/package.json +38 -35
  132. package/packages/git-bash-mcp/dist/cli.js +5 -1
  133. package/packages/git-bash-mcp/package.json +1 -1
  134. package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
  135. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +0 -28
  136. package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
  137. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +66 -13
  138. package/packages/lsp-core/src/lsp/client-wrapper.ts +70 -18
  139. package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
  140. package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
  141. package/packages/lsp-core/src/lsp/workspace-markers.ts +1 -0
  142. package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
  143. package/packages/lsp-core/src/tools/navigation.ts +4 -2
  144. package/packages/lsp-core/src/tools/rename.ts +4 -2
  145. package/packages/lsp-core/src/tools/symbols.ts +1 -1
  146. package/packages/lsp-daemon/dist/cli.js +246 -185
  147. package/packages/lsp-daemon/dist/client.js +222 -164
  148. package/packages/lsp-daemon/dist/ensure-daemon.js +1 -0
  149. package/packages/lsp-daemon/dist/index.js +236 -177
  150. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  151. package/packages/lsp-tools-mcp/dist/cli.js +198 -136
  152. package/packages/lsp-tools-mcp/dist/lsp/manager.js +62 -92
  153. package/packages/lsp-tools-mcp/dist/mcp.js +200 -138
  154. package/packages/lsp-tools-mcp/dist/request-context.js +11 -12
  155. package/packages/lsp-tools-mcp/dist/tools.js +204 -146
  156. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +4 -4
  157. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -4
  158. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  159. package/packages/omo-codex/plugin/README.md +1 -1
  160. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +32 -31
  161. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  162. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  163. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  164. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +224 -81
  165. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +224 -82
  166. package/packages/omo-codex/plugin/components/codegraph/package.json +4 -4
  167. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +1 -0
  168. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +1 -0
  169. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  170. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  171. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  172. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  173. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  174. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  175. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  176. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  177. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  178. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  179. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  180. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  181. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  182. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +1 -5
  183. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +1 -5
  184. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  185. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  186. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +1 -5
  187. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +4 -21
  188. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  189. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  190. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  191. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +217 -171
  192. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  193. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  194. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  195. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  196. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  197. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  198. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  199. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  200. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  201. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  202. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  203. package/packages/omo-codex/plugin/components/rules/dist/cli.js +57 -42
  204. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  205. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  206. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  207. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  208. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +6 -2
  209. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  210. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  211. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  212. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  213. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  214. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  215. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  216. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  217. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  218. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  219. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  220. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  221. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  222. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +1 -2
  223. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  224. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  225. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  226. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  227. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +1 -2
  228. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  229. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  230. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  231. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  232. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  233. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  234. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +3 -9
  235. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  236. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  237. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2433 -422
  238. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2437 -426
  239. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  240. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  241. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  242. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  243. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  244. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  245. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +5 -0
  246. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  247. package/packages/omo-codex/plugin/components/ultrawork/directive.md +13 -1
  248. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  249. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -5
  250. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +13 -1
  251. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -6
  252. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  253. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  254. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  255. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  256. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  257. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  258. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +5 -4
  259. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  260. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +5 -5
  261. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  262. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +6 -6
  263. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +12 -12
  264. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +28 -0
  265. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  266. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  267. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  268. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +3 -3
  269. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  270. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  271. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  272. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +1 -4
  273. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +8 -22
  274. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +16 -0
  275. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  276. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  277. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +13 -1
  278. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +2 -4
  279. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +1 -1
  280. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
  281. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +3 -3
  282. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  283. package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
  284. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  285. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  286. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
  287. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +3 -1
  288. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  289. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
  290. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +3 -3
  291. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  292. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
  293. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +2 -2
  294. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +18 -0
  295. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  296. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  297. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  298. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  299. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  300. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
  301. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  302. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  303. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  304. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  305. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  306. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  307. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  308. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  309. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  310. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  311. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  312. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  313. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  314. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  315. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  316. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  317. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  318. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  319. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  320. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +17 -0
  321. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  322. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  323. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  324. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  325. package/packages/omo-codex/plugin/package-lock.json +681 -395
  326. package/packages/omo-codex/plugin/package.json +2 -2
  327. package/packages/omo-codex/plugin/scripts/AGENTS.md +40 -0
  328. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -1
  329. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +11 -11
  330. package/packages/omo-codex/plugin/shared/package.json +3 -4
  331. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  332. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  333. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
  334. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  335. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
  336. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  337. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +11 -7
  338. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
  339. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  340. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  341. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  342. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  343. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  344. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  345. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  346. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  347. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +4 -4
  348. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  349. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -0
  350. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  351. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  352. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  353. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +13 -1
  354. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +12 -11
  355. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  356. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  357. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  358. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
  359. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -6
  360. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  361. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  362. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  363. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +1 -1
  364. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  365. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
  366. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  367. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  368. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +8 -28
  369. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -1
  370. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  371. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  372. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  373. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  374. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -1
  375. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +2 -2
  376. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +4 -4
  377. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  378. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  379. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
  380. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +12 -12
  381. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
  382. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  383. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  384. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  385. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  386. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  387. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
  388. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  389. package/packages/omo-codex/scripts/AGENTS.md +36 -0
  390. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2601 -528
  391. package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
  392. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  393. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  394. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
  395. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  396. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
  397. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  398. package/packages/shared-skills/skills/frontend/SKILL.md +11 -7
  399. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
  400. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  401. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  402. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  403. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  404. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  405. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  406. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  407. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  408. package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
  409. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  410. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -0
  411. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  412. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  413. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  414. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +9 -8
  415. package/packages/shared-skills/skills/ulw-plan/SKILL.md +6 -6
  416. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  417. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  418. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  419. package/packages/shared-skills/skills/ulw-research/SKILL.md +1 -1
  420. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  421. package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
  422. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  423. package/script/qa/xterm-live-terminal.mjs +18 -2
  424. package/dist/config/schema/start-work.d.ts +0 -5
  425. package/dist/features/builtin-commands/templates/start-work.d.ts +0 -1
  426. package/dist/hooks/start-work/start-work-hook.d.ts +0 -23
  427. package/dist/plugin/chat-message/start-work-message.d.ts +0 -5
  428. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
  429. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  430. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  431. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  432. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  433. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  434. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  435. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  436. /package/dist/hooks/{start-work → ulw-execute}/context-info-formatters.d.ts +0 -0
  437. /package/dist/hooks/{start-work → ulw-execute}/explicit-plan-context.d.ts +0 -0
  438. /package/dist/hooks/{start-work → ulw-execute}/notepad-scaffold.d.ts +0 -0
  439. /package/dist/hooks/{start-work → ulw-execute}/parse-user-request.d.ts +0 -0
  440. /package/dist/hooks/{start-work → ulw-execute}/plan-discovery-context.d.ts +0 -0
  441. /package/dist/hooks/{start-work → ulw-execute}/plan-selection.d.ts +0 -0
  442. /package/dist/hooks/{start-work → ulw-execute}/session-plan-affinity.d.ts +0 -0
  443. /package/dist/hooks/{start-work → ulw-execute}/work-initializer.d.ts +0 -0
  444. /package/dist/hooks/{start-work → ulw-execute}/worktree-block.d.ts +0 -0
  445. /package/dist/hooks/{start-work → ulw-execute}/worktree-detector.d.ts +0 -0
  446. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  447. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  448. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/LICENSE +0 -0
  449. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  450. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +0 -0
  451. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  452. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  453. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  454. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  455. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  456. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  457. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  458. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  459. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  460. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  // ../lsp-core/src/lsp/client-wrapper.ts
2
- import { existsSync as existsSync9, statSync as statSync3 } from "node:fs";
3
- import { dirname as dirname6, join as join4, resolve as resolve7 } from "node:path";
2
+ import { existsSync as existsSync10, realpathSync as realpathSync5, statSync as statSync3 } from "node:fs";
3
+ import { basename as basename3, dirname as dirname7, join as join5, resolve as resolve7 } from "node:path";
4
4
 
5
5
  // ../lsp-core/src/request-context.ts
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -9,18 +9,17 @@ import { homedir } from "node:os";
9
9
  import { basename, delimiter, dirname, isAbsolute, join, relative, resolve } from "node:path";
10
10
 
11
11
  class LspRequestContextParseError extends Error {
12
- code;
13
- name = "LspRequestContextParseError";
14
12
  constructor(code, message) {
15
13
  super(message);
16
14
  this.code = code;
15
+ this.name = "LspRequestContextParseError";
17
16
  }
18
17
  }
19
18
 
20
19
  class LspRequestContextUnavailableError extends Error {
21
- name = "LspRequestContextUnavailableError";
22
20
  constructor() {
23
21
  super("LSP request context is required. Standalone MCP startup must install one with runWithRequestContext(createStandaloneMcpRequestContext()).");
22
+ this.name = "LspRequestContextUnavailableError";
24
23
  }
25
24
  }
26
25
  var storage = new AsyncLocalStorage;
@@ -193,22 +192,15 @@ function effectiveExtension(filePath) {
193
192
 
194
193
  // ../lsp-core/src/lsp/errors.ts
195
194
  class LspConnectionClosedError extends Error {
196
- serverId;
197
- root;
198
- name = "LspConnectionClosedError";
199
195
  constructor(serverId, root, message) {
200
196
  super(message ?? `LSP connection closed for ${serverId} at ${root}`);
201
197
  this.serverId = serverId;
202
198
  this.root = root;
199
+ this.name = "LspConnectionClosedError";
203
200
  }
204
201
  }
205
202
 
206
203
  class LspProcessExitedError extends Error {
207
- serverId;
208
- root;
209
- exitCode;
210
- stderrTail;
211
- name = "LspProcessExitedError";
212
204
  constructor(serverId, root, exitCode, stderrTail) {
213
205
  const stderrSuffix = stderrTail ? `
214
206
  stderr tail: ${stderrTail}` : "";
@@ -217,46 +209,49 @@ stderr tail: ${stderrTail}` : "";
217
209
  this.root = root;
218
210
  this.exitCode = exitCode;
219
211
  this.stderrTail = stderrTail;
212
+ this.name = "LspProcessExitedError";
220
213
  }
221
214
  }
222
215
 
223
216
  class LspRequestTimeoutError extends Error {
224
- method;
225
- stderrTail;
226
- name = "LspRequestTimeoutError";
227
217
  constructor(method, stderrTail) {
228
218
  const stderrSuffix = stderrTail ? `
229
219
  recent stderr: ${stderrTail}` : "";
230
220
  super(`LSP request timeout (method: ${method})${stderrSuffix}`);
231
221
  this.method = method;
232
222
  this.stderrTail = stderrTail;
223
+ this.name = "LspRequestTimeoutError";
233
224
  }
234
225
  }
235
226
 
236
227
  class LspInvalidPathError extends Error {
237
- name = "LspInvalidPathError";
228
+ constructor() {
229
+ super(...arguments);
230
+ this.name = "LspInvalidPathError";
231
+ }
238
232
  }
239
233
 
240
234
  class LspServerLookupError extends Error {
241
- lookup;
242
- name = "LspServerLookupError";
243
235
  constructor(message, lookup) {
244
236
  super(message);
245
237
  this.lookup = lookup;
238
+ this.name = "LspServerLookupError";
246
239
  }
247
240
  }
248
241
 
249
242
  class LspServerInitializingError extends Error {
250
- originalError;
251
- name = "LspServerInitializingError";
252
243
  constructor(originalError) {
253
244
  super(`LSP server is still initializing. Please retry in a few seconds. Original error: ${originalError.message}`);
254
245
  this.originalError = originalError;
246
+ this.name = "LspServerInitializingError";
255
247
  }
256
248
  }
257
249
 
258
250
  class LspProcessSpawnError extends Error {
259
- name = "LspProcessSpawnError";
251
+ constructor() {
252
+ super(...arguments);
253
+ this.name = "LspProcessSpawnError";
254
+ }
260
255
  }
261
256
  function isLspDeadConnectionError(err) {
262
257
  return err instanceof LspConnectionClosedError || err instanceof LspProcessExitedError;
@@ -301,20 +296,31 @@ var METHOD_NOT_FOUND = -32601;
301
296
  var INTERNAL_ERROR = -32603;
302
297
 
303
298
  class JsonRpcConnection {
304
- reader;
305
- writer;
306
- pendingRequests = new Map;
307
- notificationHandlers = new Map;
308
- requestHandlers = new Map;
309
- closeHandlers = [];
310
- errorHandlers = [];
311
- inputBuffer = Buffer.alloc(0);
312
- nextRequestId = 1;
313
- listening = false;
314
- disposed = false;
315
299
  constructor(reader, writer) {
316
300
  this.reader = reader;
317
301
  this.writer = writer;
302
+ this.pendingRequests = new Map;
303
+ this.notificationHandlers = new Map;
304
+ this.requestHandlers = new Map;
305
+ this.closeHandlers = [];
306
+ this.errorHandlers = [];
307
+ this.inputBuffer = Buffer.alloc(0);
308
+ this.nextRequestId = 1;
309
+ this.listening = false;
310
+ this.disposed = false;
311
+ this.handleData = (chunk) => {
312
+ const chunkBuffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
313
+ this.inputBuffer = Buffer.concat([this.inputBuffer, chunkBuffer]);
314
+ this.drainInputBuffer();
315
+ };
316
+ this.handleClose = () => {
317
+ for (const handler of this.closeHandlers) {
318
+ handler();
319
+ }
320
+ };
321
+ this.handleStreamError = (error) => {
322
+ this.emitError(error);
323
+ };
318
324
  }
319
325
  listen() {
320
326
  if (this.listening)
@@ -435,19 +441,6 @@ class JsonRpcConnection {
435
441
  this.notificationHandlers.clear();
436
442
  this.requestHandlers.clear();
437
443
  }
438
- handleData = (chunk) => {
439
- const chunkBuffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
440
- this.inputBuffer = Buffer.concat([this.inputBuffer, chunkBuffer]);
441
- this.drainInputBuffer();
442
- };
443
- handleClose = () => {
444
- for (const handler of this.closeHandlers) {
445
- handler();
446
- }
447
- };
448
- handleStreamError = (error) => {
449
- this.emitError(error);
450
- };
451
444
  drainInputBuffer() {
452
445
  while (true) {
453
446
  const headerEnd = this.inputBuffer.indexOf(HEADER_SEPARATOR);
@@ -795,31 +788,25 @@ function isPosition(value) {
795
788
 
796
789
  // ../lsp-core/src/lsp/transport.ts
797
790
  class LspClientNotStartedError extends Error {
798
- serverId;
799
- root;
800
- name = "LspClientNotStartedError";
801
791
  constructor(serverId, root) {
802
792
  super("LSP client not started");
803
793
  this.serverId = serverId;
804
794
  this.root = root;
795
+ this.name = "LspClientNotStartedError";
805
796
  }
806
797
  }
807
798
 
808
799
  class LspClientTransport {
809
- root;
810
- server;
811
- proc = null;
812
- connection = null;
813
- stderrBuffer = [];
814
- processExited = false;
815
- diagnosticsStore = new Map;
816
- requestTimeoutMs;
817
- initializeTimeoutMs;
818
- workspaceApplyEditHandler = null;
819
- diagnosticPullSupported = false;
820
800
  constructor(root, server, timeouts = {}) {
821
801
  this.root = root;
822
802
  this.server = server;
803
+ this.proc = null;
804
+ this.connection = null;
805
+ this.stderrBuffer = [];
806
+ this.processExited = false;
807
+ this.diagnosticsStore = new Map;
808
+ this.workspaceApplyEditHandler = null;
809
+ this.diagnosticPullSupported = false;
823
810
  this.requestTimeoutMs = timeouts.requestTimeoutMs ?? REQUEST_TIMEOUT_MS;
824
811
  this.initializeTimeoutMs = timeouts.initializeTimeoutMs ?? INIT_TIMEOUT_MS;
825
812
  }
@@ -1316,16 +1303,12 @@ function movedPath(candidate, oldPath, newPath) {
1316
1303
  }
1317
1304
 
1318
1305
  class WorkspaceDocumentState {
1319
- sendNotification;
1320
- clearDiagnostics;
1321
- openDocuments = new Map;
1322
- openByUri = new Map;
1323
- openPromises = new Map;
1324
- now;
1325
- versionlessPublishQuiescenceMs;
1326
1306
  constructor(sendNotification, clearDiagnostics, options = {}) {
1327
1307
  this.sendNotification = sendNotification;
1328
1308
  this.clearDiagnostics = clearDiagnostics;
1309
+ this.openDocuments = new Map;
1310
+ this.openByUri = new Map;
1311
+ this.openPromises = new Map;
1329
1312
  this.now = options.now ?? (() => Date.now());
1330
1313
  this.versionlessPublishQuiescenceMs = options.versionlessPublishQuiescenceMs ?? DEFAULT_VERSIONLESS_PUBLISH_QUIESCENCE_MS;
1331
1314
  }
@@ -1589,13 +1572,11 @@ import { dirname as dirname2, isAbsolute as isAbsolute2, relative as relative3,
1589
1572
  import { fileURLToPath } from "node:url";
1590
1573
 
1591
1574
  class WorkspaceEditPathError extends Error {
1592
- path;
1593
- detail;
1594
- name = "WorkspaceEditPathError";
1595
1575
  constructor(path, detail) {
1596
1576
  super(`${detail}: ${path}`);
1597
1577
  this.path = path;
1598
1578
  this.detail = detail;
1579
+ this.name = "WorkspaceEditPathError";
1599
1580
  }
1600
1581
  }
1601
1582
  function isPathInsideWorkspace(filePath, workspaceRoot) {
@@ -1887,13 +1868,11 @@ function canonicalFingerprint(operations) {
1887
1868
 
1888
1869
  // ../lsp-core/src/lsp/workspace-edit-types.ts
1889
1870
  class WorkspaceEditValidationError extends Error {
1890
- changeIndex;
1891
- detail;
1892
- name = "WorkspaceEditValidationError";
1893
1871
  constructor(changeIndex, detail) {
1894
1872
  super(`change ${changeIndex}: ${detail}`);
1895
1873
  this.changeIndex = changeIndex;
1896
1874
  this.detail = detail;
1875
+ this.name = "WorkspaceEditValidationError";
1897
1876
  }
1898
1877
  }
1899
1878
 
@@ -2391,10 +2370,9 @@ function simulateDelete(operation, virtual) {
2391
2370
  import { existsSync as existsSync5, lstatSync as lstatSync3, readdirSync as readdirSync2 } from "node:fs";
2392
2371
  import { dirname as dirname4, resolve as resolve5 } from "node:path";
2393
2372
  class WorkspaceSnapshotBuilder {
2394
- workspaceRoot;
2395
- snapshots = new Map;
2396
2373
  constructor(workspaceRoot) {
2397
2374
  this.workspaceRoot = workspaceRoot;
2375
+ this.snapshots = new Map;
2398
2376
  }
2399
2377
  build(operations) {
2400
2378
  this.add(this.workspaceRoot, false);
@@ -2438,8 +2416,10 @@ function snapshotOperations(operations, workspaceRoot) {
2438
2416
 
2439
2417
  // ../lsp-core/src/lsp/workspace-edit-plan.ts
2440
2418
  class PlanPathIndex {
2441
- firstChangeByPath = new Map;
2442
- reportedPathByCanonical = new Map;
2419
+ constructor() {
2420
+ this.firstChangeByPath = new Map;
2421
+ this.reportedPathByCanonical = new Map;
2422
+ }
2443
2423
  build(operations) {
2444
2424
  for (const operation of operations) {
2445
2425
  switch (operation.kind) {
@@ -2528,14 +2508,11 @@ function isRecord4(value) {
2528
2508
  }
2529
2509
 
2530
2510
  class WorkspaceMutationController {
2531
- workspaceRoot;
2532
- documents;
2533
- activeLease = null;
2534
- nextLeaseId = 1;
2535
- io;
2536
2511
  constructor(workspaceRoot, documents) {
2537
2512
  this.workspaceRoot = workspaceRoot;
2538
2513
  this.documents = documents;
2514
+ this.activeLease = null;
2515
+ this.nextLeaseId = 1;
2539
2516
  }
2540
2517
  setIo(io) {
2541
2518
  this.io = io;
@@ -2648,12 +2625,9 @@ var DIAGNOSTICS_FRESHNESS_TIMEOUT_MS = 3000;
2648
2625
  var VERSIONLESS_PUBLISH_QUIESCENCE_MS = 250;
2649
2626
 
2650
2627
  class LspClient extends LspClientConnection {
2651
- diagnosticPullErrors = [];
2652
- documents;
2653
- workspaceMutations;
2654
- diagnosticsFreshnessTimeoutMs;
2655
2628
  constructor(root, server, options = {}) {
2656
2629
  super(root, server, options);
2630
+ this.diagnosticPullErrors = [];
2657
2631
  this.diagnosticsFreshnessTimeoutMs = options.diagnosticsFreshnessTimeoutMs ?? DIAGNOSTICS_FRESHNESS_TIMEOUT_MS;
2658
2632
  this.documents = new WorkspaceDocumentState((method, params) => this.sendNotification(method, params), (uri) => this.diagnosticsStore.delete(uri), {
2659
2633
  versionlessPublishQuiescenceMs: options.versionlessPublishQuiescenceMs ?? VERSIONLESS_PUBLISH_QUIESCENCE_MS
@@ -2953,16 +2927,11 @@ function awaitWithSignal(promise, signal) {
2953
2927
  }
2954
2928
 
2955
2929
  class LspManager {
2956
- clients = new Map;
2957
- reaperHandle = null;
2958
- signalDisposer = null;
2959
- disposed = false;
2960
- idleTimeoutMs;
2961
- initTimeoutMs;
2962
- reaperIntervalMs;
2963
- clientFactory;
2964
- now;
2965
2930
  constructor(options = {}) {
2931
+ this.clients = new Map;
2932
+ this.reaperHandle = null;
2933
+ this.signalDisposer = null;
2934
+ this.disposed = false;
2966
2935
  this.idleTimeoutMs = options.idleTimeoutMs ?? IDLE_TIMEOUT_MS;
2967
2936
  this.initTimeoutMs = options.initTimeoutMs ?? INIT_TIMEOUT_MS;
2968
2937
  this.reaperIntervalMs = options.reaperIntervalMs ?? REAPER_INTERVAL_MS;
@@ -3194,15 +3163,52 @@ async function disposeDefaultLspManager() {
3194
3163
  }
3195
3164
  }
3196
3165
 
3166
+ // ../lsp-core/src/lsp/outside-context-workspace.ts
3167
+ import { existsSync as existsSync6, realpathSync as realpathSync4 } from "node:fs";
3168
+ import { dirname as dirname5, join as join3 } from "node:path";
3169
+
3170
+ // ../lsp-core/src/lsp/workspace-markers.ts
3171
+ var WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
3172
+
3173
+ // ../lsp-core/src/lsp/outside-context-workspace.ts
3174
+ function findWorkspaceRootOutsideContext(directory) {
3175
+ const marked = nearestMarkedAncestor(directory);
3176
+ if (marked !== undefined)
3177
+ return marked;
3178
+ return realpathSync4(nearestExistingAncestor(directory));
3179
+ }
3180
+ function nearestMarkedAncestor(directory) {
3181
+ let current = directory;
3182
+ for (;; ) {
3183
+ if (existsSync6(current) && WORKSPACE_MARKERS.some((marker) => existsSync6(join3(current, marker)))) {
3184
+ return realpathSync4(current);
3185
+ }
3186
+ const parent = dirname5(current);
3187
+ if (parent === current)
3188
+ return;
3189
+ current = parent;
3190
+ }
3191
+ }
3192
+ function nearestExistingAncestor(directory) {
3193
+ let current = directory;
3194
+ while (!existsSync6(current)) {
3195
+ const parent = dirname5(current);
3196
+ if (parent === current)
3197
+ return current;
3198
+ current = parent;
3199
+ }
3200
+ return current;
3201
+ }
3202
+
3197
3203
  // ../lsp-core/src/lsp/server-install-state.ts
3198
- import { existsSync as existsSync6, mkdirSync, readFileSync as readFileSync3, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "node:fs";
3199
- import { dirname as dirname5 } from "node:path";
3204
+ import { existsSync as existsSync7, mkdirSync, readFileSync as readFileSync3, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "node:fs";
3205
+ import { dirname as dirname6 } from "node:path";
3200
3206
  function getInstallDecisionsPath() {
3201
3207
  return lspRequestContext().installDecisionsPath;
3202
3208
  }
3203
3209
  function loadInstallDecisions() {
3204
3210
  const path = getInstallDecisionsPath();
3205
- if (!existsSync6(path))
3211
+ if (!existsSync7(path))
3206
3212
  return {};
3207
3213
  try {
3208
3214
  const parsed = JSON.parse(readFileSync3(path, "utf8"));
@@ -3224,7 +3230,7 @@ function isInstallDecision(value) {
3224
3230
  }
3225
3231
  function writeInstallDecisions(decisions) {
3226
3232
  const path = getInstallDecisionsPath();
3227
- mkdirSync(dirname5(path), { recursive: true });
3233
+ mkdirSync(dirname6(path), { recursive: true });
3228
3234
  const tmpPath = `${path}.tmp`;
3229
3235
  writeFileSync2(tmpPath, `${JSON.stringify(decisions, null, 2)}
3230
3236
  `, "utf8");
@@ -3243,7 +3249,7 @@ function isRecord5(value) {
3243
3249
  }
3244
3250
 
3245
3251
  // ../lsp-core/src/lsp/config-loader.ts
3246
- import { existsSync as existsSync7, readFileSync as readFileSync4 } from "node:fs";
3252
+ import { existsSync as existsSync8, readFileSync as readFileSync4 } from "node:fs";
3247
3253
 
3248
3254
  // ../lsp-core/src/lsp/server-definitions.ts
3249
3255
  var LSP_INSTALL_HINTS = {
@@ -3400,7 +3406,7 @@ function getUserConfigPath() {
3400
3406
  return lspRequestContext().userConfigPath;
3401
3407
  }
3402
3408
  function loadJsonFile(path) {
3403
- if (!existsSync7(path))
3409
+ if (!existsSync8(path))
3404
3410
  return null;
3405
3411
  try {
3406
3412
  const parsed = JSON.parse(readFileSync4(path, "utf-8"));
@@ -3588,8 +3594,8 @@ function getDisabledServerIds() {
3588
3594
  }
3589
3595
 
3590
3596
  // ../lsp-core/src/lsp/server-installation.ts
3591
- import { existsSync as existsSync8 } from "node:fs";
3592
- import { delimiter as delimiter3, join as join3 } from "node:path";
3597
+ import { existsSync as existsSync9 } from "node:fs";
3598
+ import { delimiter as delimiter3, join as join4 } from "node:path";
3593
3599
  function isServerInstalled(command, _workingDirectory) {
3594
3600
  if (command.length === 0)
3595
3601
  return false;
@@ -3597,7 +3603,7 @@ function isServerInstalled(command, _workingDirectory) {
3597
3603
  if (!cmd)
3598
3604
  return false;
3599
3605
  if (cmd.includes("/") || cmd.includes("\\")) {
3600
- if (existsSync8(cmd))
3606
+ if (existsSync9(cmd))
3601
3607
  return true;
3602
3608
  }
3603
3609
  const isWindows = process.platform === "win32";
@@ -3618,7 +3624,7 @@ function isServerInstalled(command, _workingDirectory) {
3618
3624
  const paths = pathEnv.split(delimiter3);
3619
3625
  for (const p of paths) {
3620
3626
  for (const suffix of exts) {
3621
- if (existsSync8(join3(p, cmd + suffix))) {
3627
+ if (existsSync9(join4(p, cmd + suffix))) {
3622
3628
  return true;
3623
3629
  }
3624
3630
  }
@@ -3714,7 +3720,6 @@ function getAllServers() {
3714
3720
  }
3715
3721
 
3716
3722
  // ../lsp-core/src/lsp/client-wrapper.ts
3717
- var WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
3718
3723
  function isDirectoryPath(filePath) {
3719
3724
  try {
3720
3725
  return statSync3(filePath).isDirectory();
@@ -3723,32 +3728,85 @@ function isDirectoryPath(filePath) {
3723
3728
  }
3724
3729
  }
3725
3730
  function findWorkspaceRoot(filePath) {
3726
- const abs = resolvePathInsideContext(filePath);
3731
+ const cwd = contextCwd();
3732
+ const abs = resolveReadablePathInsideContext(filePath);
3727
3733
  let dir = abs;
3728
3734
  if (!isDirectoryPath(dir)) {
3729
- dir = dirname6(dir);
3730
- }
3731
- let prevDir = "";
3732
- while (dir !== prevDir) {
3733
- for (const marker of WORKSPACE_MARKERS) {
3734
- if (existsSync9(join4(dir, marker))) {
3735
- return dir;
3735
+ dir = dirname7(dir);
3736
+ }
3737
+ if (!isPathInside(cwd, abs))
3738
+ return findWorkspaceRootOutsideContext(dir);
3739
+ const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
3740
+ while (isPathInside(cwd, dir)) {
3741
+ const canonicalDir = existingDirectoryInsideContext(dir, cwd);
3742
+ if (canonicalDir !== undefined) {
3743
+ for (const marker of WORKSPACE_MARKERS) {
3744
+ if (existsSync10(join5(dir, marker))) {
3745
+ return canonicalDir;
3746
+ }
3736
3747
  }
3737
3748
  }
3738
- prevDir = dir;
3739
- dir = dirname6(dir);
3749
+ if (dir === cwd)
3750
+ break;
3751
+ dir = dirname7(dir);
3740
3752
  }
3741
- return dirname6(abs);
3753
+ return fallbackRoot;
3742
3754
  }
3743
- function resolvePathInsideContext(filePath) {
3755
+ function resolveReadablePathInsideContext(filePath) {
3744
3756
  const cwd = contextCwd();
3745
3757
  const abs = resolve7(cwd, filePath);
3758
+ if (isPathInside(cwd, abs))
3759
+ return abs;
3760
+ const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
3761
+ if (rebased !== undefined)
3762
+ return rebased;
3763
+ return canonicalizeExistingOrNearestAncestor(abs);
3764
+ }
3765
+ function resolvePathInsideContext(filePath) {
3766
+ const cwd = contextCwd();
3767
+ const abs = resolveReadablePathInsideContext(filePath);
3746
3768
  const canonical = canonicalizeExistingOrNearestAncestor(abs);
3747
3769
  if (!isPathInside(cwd, canonical)) {
3748
3770
  throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
3749
3771
  }
3750
3772
  return canonical;
3751
3773
  }
3774
+ function rebaseThroughCanonicalAncestor(path, cwd) {
3775
+ let current = path;
3776
+ const suffix = [];
3777
+ while (true) {
3778
+ if (existsSync10(current)) {
3779
+ const canonical = realpathSync5(current);
3780
+ if (isPathInside(cwd, canonical))
3781
+ return suffix.length === 0 ? canonical : join5(canonical, ...suffix);
3782
+ }
3783
+ const parent = dirname7(current);
3784
+ if (parent === current)
3785
+ return;
3786
+ suffix.unshift(basename3(current));
3787
+ current = parent;
3788
+ }
3789
+ }
3790
+ function existingDirectoryInsideContext(directory, cwd) {
3791
+ if (!existsSync10(directory))
3792
+ return;
3793
+ const canonical = realpathSync5(directory);
3794
+ if (!statSync3(canonical).isDirectory())
3795
+ return;
3796
+ return isPathInside(cwd, canonical) ? canonical : undefined;
3797
+ }
3798
+ function nearestExistingDirectoryInsideContext(directory, cwd) {
3799
+ let current = directory;
3800
+ while (isPathInside(cwd, current)) {
3801
+ const canonical = existingDirectoryInsideContext(current, cwd);
3802
+ if (canonical !== undefined)
3803
+ return canonical;
3804
+ if (current === cwd)
3805
+ return;
3806
+ current = dirname7(current);
3807
+ }
3808
+ return;
3809
+ }
3752
3810
  function formatServerLookupError(result) {
3753
3811
  if (result.status === "not_installed") {
3754
3812
  return formatNotInstalled(result);
@@ -3819,7 +3877,7 @@ function formatNotInstalled(result) {
3819
3877
  ].join(`
3820
3878
  `);
3821
3879
  }
3822
- var READ_ONLY_RETRY_TOOLS = new Set([
3880
+ var READ_ONLY_TOOLS = new Set([
3823
3881
  "diagnostics",
3824
3882
  "definition",
3825
3883
  "references",
@@ -3828,7 +3886,7 @@ var READ_ONLY_RETRY_TOOLS = new Set([
3828
3886
  "prepareRename"
3829
3887
  ]);
3830
3888
  async function withLspClient(filePath, fn, toolName, options = {}) {
3831
- const absPath = resolvePathInsideContext(filePath);
3889
+ const absPath = READ_ONLY_TOOLS.has(toolName) ? resolveReadablePathInsideContext(filePath) : resolvePathInsideContext(filePath);
3832
3890
  if (isDirectoryPath(absPath)) {
3833
3891
  throw new LspInvalidPathError("Directory paths are not supported by this LSP tool. " + "Use lsp.diagnostics with a directory path for directory diagnostics.");
3834
3892
  }
@@ -3843,9 +3901,9 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
3843
3901
  const acquireAndCall = async (allowRetry) => {
3844
3902
  const client = await manager.getClient(root, server, options.signal);
3845
3903
  try {
3846
- return await fn(client, root);
3904
+ return await fn(client, root, absPath);
3847
3905
  } catch (err) {
3848
- if (allowRetry && READ_ONLY_RETRY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
3906
+ if (allowRetry && READ_ONLY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
3849
3907
  manager.invalidateClient(root, server.id, client);
3850
3908
  return acquireAndCall(false);
3851
3909
  }
@@ -3863,8 +3921,8 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
3863
3921
  }
3864
3922
 
3865
3923
  // ../lsp-core/src/lsp/directory-diagnostics.ts
3866
- import { existsSync as existsSync10, lstatSync as lstatSync4, readdirSync as readdirSync3 } from "node:fs";
3867
- import { join as join5, resolve as resolve8 } from "node:path";
3924
+ import { existsSync as existsSync11, lstatSync as lstatSync4, readdirSync as readdirSync3 } from "node:fs";
3925
+ import { join as join6, resolve as resolve8 } from "node:path";
3868
3926
 
3869
3927
  // ../lsp-core/src/lsp/formatters.ts
3870
3928
  import { fileURLToPath as fileURLToPath2 } from "node:url";
@@ -3994,7 +4052,7 @@ function collectFilesWithExtension(dir, extension, maxFiles) {
3994
4052
  for (const entry of entries) {
3995
4053
  if (files.length >= maxFiles)
3996
4054
  return;
3997
- const fullPath = join5(currentDir, entry);
4055
+ const fullPath = join6(currentDir, entry);
3998
4056
  let stat;
3999
4057
  try {
4000
4058
  stat = lstatSync4(fullPath);
@@ -4020,7 +4078,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
4020
4078
  throw new LspInvalidPathError(`Extension must start with a dot (e.g., ".ts", not "${extension}"). Use ".${extension}" instead.`);
4021
4079
  }
4022
4080
  const absDir = resolve8(options.workspaceRoot ?? contextCwd(), directory);
4023
- if (!existsSync10(absDir)) {
4081
+ if (!existsSync11(absDir)) {
4024
4082
  throw new LspInvalidPathError(`Directory does not exist: ${absDir}`);
4025
4083
  }
4026
4084
  const serverResult = options.server === undefined ? findServerForExtension(extension) : { status: "found", server: options.server };
@@ -4107,7 +4165,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
4107
4165
 
4108
4166
  // ../lsp-core/src/lsp/infer-extension.ts
4109
4167
  import { lstatSync as lstatSync5, readdirSync as readdirSync4 } from "node:fs";
4110
- import { join as join6 } from "node:path";
4168
+ import { join as join7 } from "node:path";
4111
4169
  var SKIP_DIRECTORIES2 = new Set(["node_modules", ".git", "dist", "build", ".next", "out"]);
4112
4170
  var MAX_SCAN_ENTRIES = 500;
4113
4171
  function inferExtensionFromDirectory(directory) {
@@ -4125,7 +4183,7 @@ function inferExtensionFromDirectory(directory) {
4125
4183
  for (const entry of entries) {
4126
4184
  if (scanned >= MAX_SCAN_ENTRIES)
4127
4185
  return;
4128
- const fullPath = join6(dir, entry);
4186
+ const fullPath = join7(dir, entry);
4129
4187
  let stat;
4130
4188
  try {
4131
4189
  stat = lstatSync5(fullPath);
@@ -4300,7 +4358,7 @@ async function executeLspDiagnostics(params, signal) {
4300
4358
  const filePath = requireString(params, "filePath");
4301
4359
  const severity = severityFilter(params);
4302
4360
  try {
4303
- const absPath = resolvePathInsideContext(filePath);
4361
+ const absPath = resolveReadablePathInsideContext(filePath);
4304
4362
  if (isDirectoryPath(absPath)) {
4305
4363
  const extension = inferExtensionFromDirectory(absPath);
4306
4364
  if (!extension) {
@@ -4329,7 +4387,7 @@ async function executeLspDiagnostics(params, signal) {
4329
4387
  };
4330
4388
  return text(output2.output, details2);
4331
4389
  }
4332
- const result = await withLspClient(filePath, async (client) => client.diagnostics(filePath, signal), "diagnostics", clientOptions(signal));
4390
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.diagnostics(resolvedFilePath, signal), "diagnostics", clientOptions(signal));
4333
4391
  if (result.transientError) {
4334
4392
  const message = result.transientError.message;
4335
4393
  const details2 = {
@@ -4404,7 +4462,7 @@ async function executeLspGotoDefinition(params, signal) {
4404
4462
  const line = requireNumber(params, "line");
4405
4463
  const character = requireNumber(params, "character");
4406
4464
  try {
4407
- const result = await withLspClient(filePath, async (client) => client.definition(filePath, line, character, signal), "definition", clientOptions(signal));
4465
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.definition(resolvedFilePath, line, character, signal), "definition", clientOptions(signal));
4408
4466
  const locations = !result ? [] : Array.isArray(result) ? result : [result];
4409
4467
  const details = { filePath, line, character, locations };
4410
4468
  if (locations.length === 0)
@@ -4429,7 +4487,7 @@ async function executeLspFindReferences(params, signal) {
4429
4487
  const character = requireNumber(params, "character");
4430
4488
  const includeDeclaration = optionalBoolean(params, "includeDeclaration") ?? true;
4431
4489
  try {
4432
- const result = await withLspClient(filePath, async (client) => client.references(filePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
4490
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.references(resolvedFilePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
4433
4491
  const references = Array.isArray(result) ? result : [];
4434
4492
  const total = references.length;
4435
4493
  const truncated = total > DEFAULT_MAX_REFERENCES;
@@ -4471,7 +4529,7 @@ async function executeLspPrepareRename(params, signal) {
4471
4529
  const line = requireNumber(params, "line");
4472
4530
  const character = requireNumber(params, "character");
4473
4531
  try {
4474
- const result = await withLspClient(filePath, async (client) => client.prepareRename(filePath, line, character, signal), "prepareRename", clientOptions(signal));
4532
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.prepareRename(resolvedFilePath, line, character, signal), "prepareRename", clientOptions(signal));
4475
4533
  const details = { filePath, line, character, result };
4476
4534
  return text(formatPrepareRenameResult(result), details);
4477
4535
  } catch (error) {
@@ -4492,7 +4550,7 @@ async function executeLspRename(params, signal) {
4492
4550
  const character = requireNumber(params, "character");
4493
4551
  const newName = requireString(params, "newName");
4494
4552
  try {
4495
- const result = await withLspClient(filePath, async (client) => client.rename(filePath, line, character, newName, signal), "rename", clientOptions(signal));
4553
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.rename(resolvedFilePath, line, character, newName, signal), "rename", clientOptions(signal));
4496
4554
  const details = { filePath, line, character, newName, apply: result.apply, edit: result.edit };
4497
4555
  return text(formatApplyResult(result.apply), details, !result.apply.success);
4498
4556
  } catch (error) {
@@ -4572,7 +4630,7 @@ async function executeLspSymbols(params, signal) {
4572
4630
  const symbols2 = await withLspClient(filePath, async (client) => client.workspaceSymbols(query, signal), "workspaceSymbols", clientOptions(signal));
4573
4631
  return formatSymbolsResult(filePath, scope, symbols2, limit, query);
4574
4632
  }
4575
- const symbols = await withLspClient(filePath, async (client) => client.documentSymbols(filePath, signal), "documentSymbols", clientOptions(signal));
4633
+ const symbols = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.documentSymbols(resolvedFilePath, signal), "documentSymbols", clientOptions(signal));
4576
4634
  return formatSymbolsResult(filePath, scope, symbols, limit);
4577
4635
  } catch (error) {
4578
4636
  const query = optionalString(params, "query");
@@ -4741,16 +4799,16 @@ function coerceToolArguments(value) {
4741
4799
  return isRecord7(value) ? value : {};
4742
4800
  }
4743
4801
  export {
4744
- isRecord7 as isRecord,
4745
- executeLspTool,
4746
- executeLspSymbols,
4747
- executeLspStatus,
4748
- executeLspRename,
4749
- executeLspPrepareRename,
4750
- executeLspInstallDecision,
4751
- executeLspGotoDefinition,
4752
- executeLspFindReferences,
4753
- executeLspDiagnostics,
4802
+ LSP_MCP_TOOLS,
4754
4803
  coerceToolArguments,
4755
- LSP_MCP_TOOLS
4804
+ executeLspDiagnostics,
4805
+ executeLspFindReferences,
4806
+ executeLspGotoDefinition,
4807
+ executeLspInstallDecision,
4808
+ executeLspPrepareRename,
4809
+ executeLspRename,
4810
+ executeLspStatus,
4811
+ executeLspSymbols,
4812
+ executeLspTool,
4813
+ isRecord7 as isRecord
4756
4814
  };