@hansjm10/volt-coding-agent 0.0.0-bootstrap.0 → 0.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 (1364) hide show
  1. package/BINARY-CAPABILITIES.md +28 -0
  2. package/CHANGELOG.md +4845 -0
  3. package/LICENSE +1 -1
  4. package/README.md +716 -3
  5. package/THIRD-PARTY-NOTICES.md +55 -0
  6. package/dist/LICENSES/clipboard-image-MIT.txt +9 -0
  7. package/dist/LICENSES/highlight.js-10.7.3-BSD-3-Clause.txt +29 -0
  8. package/dist/LICENSES/highlight.js-11.9.0-BSD-3-Clause.txt +29 -0
  9. package/dist/LICENSES/marked-18.0.5-LICENSE.txt +44 -0
  10. package/dist/LICENSES/run-jxa-MIT.txt +9 -0
  11. package/dist/cli/args.d.ts +60 -0
  12. package/dist/cli/args.d.ts.map +1 -0
  13. package/dist/cli/args.js +414 -0
  14. package/dist/cli/args.js.map +1 -0
  15. package/dist/cli/config-selector.d.ts +14 -0
  16. package/dist/cli/config-selector.d.ts.map +1 -0
  17. package/dist/cli/config-selector.js +31 -0
  18. package/dist/cli/config-selector.js.map +1 -0
  19. package/dist/cli/file-processor.d.ts +15 -0
  20. package/dist/cli/file-processor.d.ts.map +1 -0
  21. package/dist/cli/file-processor.js +85 -0
  22. package/dist/cli/file-processor.js.map +1 -0
  23. package/dist/cli/initial-message.d.ts +18 -0
  24. package/dist/cli/initial-message.d.ts.map +1 -0
  25. package/dist/cli/initial-message.js +22 -0
  26. package/dist/cli/initial-message.js.map +1 -0
  27. package/dist/cli/list-models.d.ts +9 -0
  28. package/dist/cli/list-models.d.ts.map +1 -0
  29. package/dist/cli/list-models.js +98 -0
  30. package/dist/cli/list-models.js.map +1 -0
  31. package/dist/cli/project-trust.d.ts +10 -0
  32. package/dist/cli/project-trust.d.ts.map +1 -0
  33. package/dist/cli/project-trust.js +48 -0
  34. package/dist/cli/project-trust.js.map +1 -0
  35. package/dist/cli/session-picker.d.ts +9 -0
  36. package/dist/cli/session-picker.d.ts.map +1 -0
  37. package/dist/cli/session-picker.js +35 -0
  38. package/dist/cli/session-picker.js.map +1 -0
  39. package/dist/cli/startup-ui.d.ts +17 -0
  40. package/dist/cli/startup-ui.d.ts.map +1 -0
  41. package/dist/cli/startup-ui.js +133 -0
  42. package/dist/cli/startup-ui.js.map +1 -0
  43. package/dist/cli.d.ts +3 -0
  44. package/dist/cli.d.ts.map +1 -0
  45. package/dist/cli.js +18 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/config.d.ts +85 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/config.js +487 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/core/agent-session-runtime.d.ts +160 -0
  52. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  53. package/dist/core/agent-session-runtime.js +397 -0
  54. package/dist/core/agent-session-runtime.js.map +1 -0
  55. package/dist/core/agent-session-services.d.ts +98 -0
  56. package/dist/core/agent-session-services.d.ts.map +1 -0
  57. package/dist/core/agent-session-services.js +125 -0
  58. package/dist/core/agent-session-services.js.map +1 -0
  59. package/dist/core/agent-session.d.ts +739 -0
  60. package/dist/core/agent-session.d.ts.map +1 -0
  61. package/dist/core/agent-session.js +3158 -0
  62. package/dist/core/agent-session.js.map +1 -0
  63. package/dist/core/auth-guidance.d.ts +5 -0
  64. package/dist/core/auth-guidance.d.ts.map +1 -0
  65. package/dist/core/auth-guidance.js +21 -0
  66. package/dist/core/auth-guidance.js.map +1 -0
  67. package/dist/core/auth-storage.d.ts +159 -0
  68. package/dist/core/auth-storage.d.ts.map +1 -0
  69. package/dist/core/auth-storage.js +509 -0
  70. package/dist/core/auth-storage.js.map +1 -0
  71. package/dist/core/bash-executor.d.ts +32 -0
  72. package/dist/core/bash-executor.d.ts.map +1 -0
  73. package/dist/core/bash-executor.js +111 -0
  74. package/dist/core/bash-executor.js.map +1 -0
  75. package/dist/core/compaction/branch-summarization.d.ts +92 -0
  76. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  77. package/dist/core/compaction/branch-summarization.js +257 -0
  78. package/dist/core/compaction/branch-summarization.js.map +1 -0
  79. package/dist/core/compaction/compaction.d.ts +121 -0
  80. package/dist/core/compaction/compaction.d.ts.map +1 -0
  81. package/dist/core/compaction/compaction.js +658 -0
  82. package/dist/core/compaction/compaction.js.map +1 -0
  83. package/dist/core/compaction/index.d.ts +7 -0
  84. package/dist/core/compaction/index.d.ts.map +1 -0
  85. package/dist/core/compaction/index.js +7 -0
  86. package/dist/core/compaction/index.js.map +1 -0
  87. package/dist/core/compaction/utils.d.ts +56 -0
  88. package/dist/core/compaction/utils.d.ts.map +1 -0
  89. package/dist/core/compaction/utils.js +271 -0
  90. package/dist/core/compaction/utils.js.map +1 -0
  91. package/dist/core/defaults.d.ts +3 -0
  92. package/dist/core/defaults.d.ts.map +1 -0
  93. package/dist/core/defaults.js +2 -0
  94. package/dist/core/defaults.js.map +1 -0
  95. package/dist/core/diagnostics.d.ts +15 -0
  96. package/dist/core/diagnostics.d.ts.map +1 -0
  97. package/dist/core/diagnostics.js +2 -0
  98. package/dist/core/diagnostics.js.map +1 -0
  99. package/dist/core/event-bus.d.ts +9 -0
  100. package/dist/core/event-bus.d.ts.map +1 -0
  101. package/dist/core/event-bus.js +25 -0
  102. package/dist/core/event-bus.js.map +1 -0
  103. package/dist/core/exec.d.ts +29 -0
  104. package/dist/core/exec.d.ts.map +1 -0
  105. package/dist/core/exec.js +75 -0
  106. package/dist/core/exec.js.map +1 -0
  107. package/dist/core/experimental.d.ts +2 -0
  108. package/dist/core/experimental.d.ts.map +1 -0
  109. package/dist/core/experimental.js +4 -0
  110. package/dist/core/experimental.js.map +1 -0
  111. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  112. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  113. package/dist/core/export-html/ansi-to-html.js +249 -0
  114. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  115. package/dist/core/export-html/index.d.ts +37 -0
  116. package/dist/core/export-html/index.d.ts.map +1 -0
  117. package/dist/core/export-html/index.js +234 -0
  118. package/dist/core/export-html/index.js.map +1 -0
  119. package/dist/core/export-html/template.css +1066 -0
  120. package/dist/core/export-html/template.html +55 -0
  121. package/dist/core/export-html/template.js +1864 -0
  122. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  123. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  124. package/dist/core/export-html/tool-renderer.js +108 -0
  125. package/dist/core/export-html/tool-renderer.js.map +1 -0
  126. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  127. package/dist/core/export-html/vendor/marked.min.js +78 -0
  128. package/dist/core/extensions/index.d.ts +12 -0
  129. package/dist/core/extensions/index.d.ts.map +1 -0
  130. package/dist/core/extensions/index.js +9 -0
  131. package/dist/core/extensions/index.js.map +1 -0
  132. package/dist/core/extensions/loader.d.ts +25 -0
  133. package/dist/core/extensions/loader.d.ts.map +1 -0
  134. package/dist/core/extensions/loader.js +516 -0
  135. package/dist/core/extensions/loader.js.map +1 -0
  136. package/dist/core/extensions/runner.d.ts +180 -0
  137. package/dist/core/extensions/runner.d.ts.map +1 -0
  138. package/dist/core/extensions/runner.js +938 -0
  139. package/dist/core/extensions/runner.js.map +1 -0
  140. package/dist/core/extensions/types.d.ts +1215 -0
  141. package/dist/core/extensions/types.d.ts.map +1 -0
  142. package/dist/core/extensions/types.js +48 -0
  143. package/dist/core/extensions/types.js.map +1 -0
  144. package/dist/core/extensions/wrapper.d.ts +20 -0
  145. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  146. package/dist/core/extensions/wrapper.js +22 -0
  147. package/dist/core/extensions/wrapper.js.map +1 -0
  148. package/dist/core/footer-data-provider.d.ts +54 -0
  149. package/dist/core/footer-data-provider.d.ts.map +1 -0
  150. package/dist/core/footer-data-provider.js +338 -0
  151. package/dist/core/footer-data-provider.js.map +1 -0
  152. package/dist/core/host-actions.d.ts +107 -0
  153. package/dist/core/host-actions.d.ts.map +1 -0
  154. package/dist/core/host-actions.js +632 -0
  155. package/dist/core/host-actions.js.map +1 -0
  156. package/dist/core/host-interaction.d.ts +35 -0
  157. package/dist/core/host-interaction.d.ts.map +1 -0
  158. package/dist/core/host-interaction.js +2 -0
  159. package/dist/core/host-interaction.js.map +1 -0
  160. package/dist/core/http-dispatcher.d.ts +22 -0
  161. package/dist/core/http-dispatcher.d.ts.map +1 -0
  162. package/dist/core/http-dispatcher.js +64 -0
  163. package/dist/core/http-dispatcher.js.map +1 -0
  164. package/dist/core/index.d.ts +18 -0
  165. package/dist/core/index.d.ts.map +1 -0
  166. package/dist/core/index.js +17 -0
  167. package/dist/core/index.js.map +1 -0
  168. package/dist/core/keybindings.d.ts +373 -0
  169. package/dist/core/keybindings.d.ts.map +1 -0
  170. package/dist/core/keybindings.js +303 -0
  171. package/dist/core/keybindings.js.map +1 -0
  172. package/dist/core/lsp/client.d.ts +119 -0
  173. package/dist/core/lsp/client.d.ts.map +1 -0
  174. package/dist/core/lsp/client.js +711 -0
  175. package/dist/core/lsp/client.js.map +1 -0
  176. package/dist/core/lsp/config.d.ts +96 -0
  177. package/dist/core/lsp/config.d.ts.map +1 -0
  178. package/dist/core/lsp/config.js +206 -0
  179. package/dist/core/lsp/config.js.map +1 -0
  180. package/dist/core/lsp/index.d.ts +6 -0
  181. package/dist/core/lsp/index.d.ts.map +1 -0
  182. package/dist/core/lsp/index.js +6 -0
  183. package/dist/core/lsp/index.js.map +1 -0
  184. package/dist/core/lsp/manager.d.ts +122 -0
  185. package/dist/core/lsp/manager.d.ts.map +1 -0
  186. package/dist/core/lsp/manager.js +1136 -0
  187. package/dist/core/lsp/manager.js.map +1 -0
  188. package/dist/core/lsp/trace.d.ts +26 -0
  189. package/dist/core/lsp/trace.d.ts.map +1 -0
  190. package/dist/core/lsp/trace.js +98 -0
  191. package/dist/core/lsp/trace.js.map +1 -0
  192. package/dist/core/lsp/workspace-edit.d.ts +60 -0
  193. package/dist/core/lsp/workspace-edit.d.ts.map +1 -0
  194. package/dist/core/lsp/workspace-edit.js +71 -0
  195. package/dist/core/lsp/workspace-edit.js.map +1 -0
  196. package/dist/core/mcp/audit.d.ts +39 -0
  197. package/dist/core/mcp/audit.d.ts.map +1 -0
  198. package/dist/core/mcp/audit.js +35 -0
  199. package/dist/core/mcp/audit.js.map +1 -0
  200. package/dist/core/mcp/auth.d.ts +7 -0
  201. package/dist/core/mcp/auth.d.ts.map +1 -0
  202. package/dist/core/mcp/auth.js +56 -0
  203. package/dist/core/mcp/auth.js.map +1 -0
  204. package/dist/core/mcp/client-factory.d.ts +20 -0
  205. package/dist/core/mcp/client-factory.d.ts.map +1 -0
  206. package/dist/core/mcp/client-factory.js +200 -0
  207. package/dist/core/mcp/client-factory.js.map +1 -0
  208. package/dist/core/mcp/config-loader.d.ts +9 -0
  209. package/dist/core/mcp/config-loader.d.ts.map +1 -0
  210. package/dist/core/mcp/config-loader.js +104 -0
  211. package/dist/core/mcp/config-loader.js.map +1 -0
  212. package/dist/core/mcp/config-writer.d.ts +21 -0
  213. package/dist/core/mcp/config-writer.d.ts.map +1 -0
  214. package/dist/core/mcp/config-writer.js +124 -0
  215. package/dist/core/mcp/config-writer.js.map +1 -0
  216. package/dist/core/mcp/config.d.ts +32 -0
  217. package/dist/core/mcp/config.d.ts.map +1 -0
  218. package/dist/core/mcp/config.js +385 -0
  219. package/dist/core/mcp/config.js.map +1 -0
  220. package/dist/core/mcp/direct-tools.d.ts +11 -0
  221. package/dist/core/mcp/direct-tools.d.ts.map +1 -0
  222. package/dist/core/mcp/direct-tools.js +47 -0
  223. package/dist/core/mcp/direct-tools.js.map +1 -0
  224. package/dist/core/mcp/gateway-tool.d.ts +29 -0
  225. package/dist/core/mcp/gateway-tool.d.ts.map +1 -0
  226. package/dist/core/mcp/gateway-tool.js +108 -0
  227. package/dist/core/mcp/gateway-tool.js.map +1 -0
  228. package/dist/core/mcp/index.d.ts +19 -0
  229. package/dist/core/mcp/index.d.ts.map +1 -0
  230. package/dist/core/mcp/index.js +18 -0
  231. package/dist/core/mcp/index.js.map +1 -0
  232. package/dist/core/mcp/manager.d.ts +117 -0
  233. package/dist/core/mcp/manager.d.ts.map +1 -0
  234. package/dist/core/mcp/manager.js +819 -0
  235. package/dist/core/mcp/manager.js.map +1 -0
  236. package/dist/core/mcp/metadata-cache.d.ts +27 -0
  237. package/dist/core/mcp/metadata-cache.d.ts.map +1 -0
  238. package/dist/core/mcp/metadata-cache.js +152 -0
  239. package/dist/core/mcp/metadata-cache.js.map +1 -0
  240. package/dist/core/mcp/oauth-flow.d.ts +94 -0
  241. package/dist/core/mcp/oauth-flow.d.ts.map +1 -0
  242. package/dist/core/mcp/oauth-flow.js +473 -0
  243. package/dist/core/mcp/oauth-flow.js.map +1 -0
  244. package/dist/core/mcp/oauth-provider.d.ts +39 -0
  245. package/dist/core/mcp/oauth-provider.d.ts.map +1 -0
  246. package/dist/core/mcp/oauth-provider.js +149 -0
  247. package/dist/core/mcp/oauth-provider.js.map +1 -0
  248. package/dist/core/mcp/oauth-store.d.ts +27 -0
  249. package/dist/core/mcp/oauth-store.d.ts.map +1 -0
  250. package/dist/core/mcp/oauth-store.js +111 -0
  251. package/dist/core/mcp/oauth-store.js.map +1 -0
  252. package/dist/core/mcp/output-store.d.ts +55 -0
  253. package/dist/core/mcp/output-store.d.ts.map +1 -0
  254. package/dist/core/mcp/output-store.js +206 -0
  255. package/dist/core/mcp/output-store.js.map +1 -0
  256. package/dist/core/mcp/rpc.d.ts +13 -0
  257. package/dist/core/mcp/rpc.d.ts.map +1 -0
  258. package/dist/core/mcp/rpc.js +29 -0
  259. package/dist/core/mcp/rpc.js.map +1 -0
  260. package/dist/core/mcp/safety.d.ts +6 -0
  261. package/dist/core/mcp/safety.d.ts.map +1 -0
  262. package/dist/core/mcp/safety.js +65 -0
  263. package/dist/core/mcp/safety.js.map +1 -0
  264. package/dist/core/mcp/search.d.ts +8 -0
  265. package/dist/core/mcp/search.d.ts.map +1 -0
  266. package/dist/core/mcp/search.js +85 -0
  267. package/dist/core/mcp/search.js.map +1 -0
  268. package/dist/core/mcp/server-supervisor.d.ts +59 -0
  269. package/dist/core/mcp/server-supervisor.d.ts.map +1 -0
  270. package/dist/core/mcp/server-supervisor.js +331 -0
  271. package/dist/core/mcp/server-supervisor.js.map +1 -0
  272. package/dist/core/mcp/types.d.ts +321 -0
  273. package/dist/core/mcp/types.d.ts.map +1 -0
  274. package/dist/core/mcp/types.js +2 -0
  275. package/dist/core/mcp/types.js.map +1 -0
  276. package/dist/core/messages.d.ts +78 -0
  277. package/dist/core/messages.d.ts.map +1 -0
  278. package/dist/core/messages.js +138 -0
  279. package/dist/core/messages.js.map +1 -0
  280. package/dist/core/model-catalog-watcher.d.ts +36 -0
  281. package/dist/core/model-catalog-watcher.d.ts.map +1 -0
  282. package/dist/core/model-catalog-watcher.js +101 -0
  283. package/dist/core/model-catalog-watcher.js.map +1 -0
  284. package/dist/core/model-registry.d.ts +160 -0
  285. package/dist/core/model-registry.d.ts.map +1 -0
  286. package/dist/core/model-registry.js +754 -0
  287. package/dist/core/model-registry.js.map +1 -0
  288. package/dist/core/model-resolver.d.ts +111 -0
  289. package/dist/core/model-resolver.d.ts.map +1 -0
  290. package/dist/core/model-resolver.js +534 -0
  291. package/dist/core/model-resolver.js.map +1 -0
  292. package/dist/core/output-guard.d.ts +7 -0
  293. package/dist/core/output-guard.d.ts.map +1 -0
  294. package/dist/core/output-guard.js +89 -0
  295. package/dist/core/output-guard.js.map +1 -0
  296. package/dist/core/package-manager.d.ts +220 -0
  297. package/dist/core/package-manager.d.ts.map +1 -0
  298. package/dist/core/package-manager.js +2217 -0
  299. package/dist/core/package-manager.js.map +1 -0
  300. package/dist/core/project-trust.d.ts +15 -0
  301. package/dist/core/project-trust.d.ts.map +1 -0
  302. package/dist/core/project-trust.js +58 -0
  303. package/dist/core/project-trust.js.map +1 -0
  304. package/dist/core/prompt-templates.d.ts +53 -0
  305. package/dist/core/prompt-templates.d.ts.map +1 -0
  306. package/dist/core/prompt-templates.js +236 -0
  307. package/dist/core/prompt-templates.js.map +1 -0
  308. package/dist/core/provider-attribution.d.ts +4 -0
  309. package/dist/core/provider-attribution.d.ts.map +1 -0
  310. package/dist/core/provider-attribution.js +81 -0
  311. package/dist/core/provider-attribution.js.map +1 -0
  312. package/dist/core/provider-display-names.d.ts +2 -0
  313. package/dist/core/provider-display-names.d.ts.map +1 -0
  314. package/dist/core/provider-display-names.js +36 -0
  315. package/dist/core/provider-display-names.js.map +1 -0
  316. package/dist/core/remote/iroh/access-grant.d.ts +40 -0
  317. package/dist/core/remote/iroh/access-grant.d.ts.map +1 -0
  318. package/dist/core/remote/iroh/access-grant.js +199 -0
  319. package/dist/core/remote/iroh/access-grant.js.map +1 -0
  320. package/dist/core/remote/iroh/active-stream-registry.d.ts +39 -0
  321. package/dist/core/remote/iroh/active-stream-registry.d.ts.map +1 -0
  322. package/dist/core/remote/iroh/active-stream-registry.js +109 -0
  323. package/dist/core/remote/iroh/active-stream-registry.js.map +1 -0
  324. package/dist/core/remote/iroh/audit.d.ts +67 -0
  325. package/dist/core/remote/iroh/audit.d.ts.map +1 -0
  326. package/dist/core/remote/iroh/audit.js +274 -0
  327. package/dist/core/remote/iroh/audit.js.map +1 -0
  328. package/dist/core/remote/iroh/authorization.d.ts +46 -0
  329. package/dist/core/remote/iroh/authorization.d.ts.map +1 -0
  330. package/dist/core/remote/iroh/authorization.js +327 -0
  331. package/dist/core/remote/iroh/authorization.js.map +1 -0
  332. package/dist/core/remote/iroh/control.d.ts +64 -0
  333. package/dist/core/remote/iroh/control.d.ts.map +1 -0
  334. package/dist/core/remote/iroh/control.js +326 -0
  335. package/dist/core/remote/iroh/control.js.map +1 -0
  336. package/dist/core/remote/iroh/device-log-rpc.d.ts +22 -0
  337. package/dist/core/remote/iroh/device-log-rpc.d.ts.map +1 -0
  338. package/dist/core/remote/iroh/device-log-rpc.js +152 -0
  339. package/dist/core/remote/iroh/device-log-rpc.js.map +1 -0
  340. package/dist/core/remote/iroh/engine.d.ts +148 -0
  341. package/dist/core/remote/iroh/engine.d.ts.map +1 -0
  342. package/dist/core/remote/iroh/engine.js +499 -0
  343. package/dist/core/remote/iroh/engine.js.map +1 -0
  344. package/dist/core/remote/iroh/handshake-reader.d.ts +19 -0
  345. package/dist/core/remote/iroh/handshake-reader.d.ts.map +1 -0
  346. package/dist/core/remote/iroh/handshake-reader.js +91 -0
  347. package/dist/core/remote/iroh/handshake-reader.js.map +1 -0
  348. package/dist/core/remote/iroh/handshake.d.ts +119 -0
  349. package/dist/core/remote/iroh/handshake.d.ts.map +1 -0
  350. package/dist/core/remote/iroh/handshake.js +621 -0
  351. package/dist/core/remote/iroh/handshake.js.map +1 -0
  352. package/dist/core/remote/iroh/host-policy.d.ts +13 -0
  353. package/dist/core/remote/iroh/host-policy.d.ts.map +1 -0
  354. package/dist/core/remote/iroh/host-policy.js +15 -0
  355. package/dist/core/remote/iroh/host-policy.js.map +1 -0
  356. package/dist/core/remote/iroh/index.d.ts +25 -0
  357. package/dist/core/remote/iroh/index.d.ts.map +1 -0
  358. package/dist/core/remote/iroh/index.js +25 -0
  359. package/dist/core/remote/iroh/index.js.map +1 -0
  360. package/dist/core/remote/iroh/metadata.d.ts +28 -0
  361. package/dist/core/remote/iroh/metadata.d.ts.map +1 -0
  362. package/dist/core/remote/iroh/metadata.js +16 -0
  363. package/dist/core/remote/iroh/metadata.js.map +1 -0
  364. package/dist/core/remote/iroh/outbound-filter.d.ts +29 -0
  365. package/dist/core/remote/iroh/outbound-filter.d.ts.map +1 -0
  366. package/dist/core/remote/iroh/outbound-filter.js +692 -0
  367. package/dist/core/remote/iroh/outbound-filter.js.map +1 -0
  368. package/dist/core/remote/iroh/protocol.d.ts +60 -0
  369. package/dist/core/remote/iroh/protocol.d.ts.map +1 -0
  370. package/dist/core/remote/iroh/protocol.js +204 -0
  371. package/dist/core/remote/iroh/protocol.js.map +1 -0
  372. package/dist/core/remote/iroh/push.d.ts +179 -0
  373. package/dist/core/remote/iroh/push.d.ts.map +1 -0
  374. package/dist/core/remote/iroh/push.js +662 -0
  375. package/dist/core/remote/iroh/push.js.map +1 -0
  376. package/dist/core/remote/iroh/qr.d.ts +12 -0
  377. package/dist/core/remote/iroh/qr.d.ts.map +1 -0
  378. package/dist/core/remote/iroh/qr.js +27 -0
  379. package/dist/core/remote/iroh/qr.js.map +1 -0
  380. package/dist/core/remote/iroh/rpc-command-filter.d.ts +47 -0
  381. package/dist/core/remote/iroh/rpc-command-filter.d.ts.map +1 -0
  382. package/dist/core/remote/iroh/rpc-command-filter.js +188 -0
  383. package/dist/core/remote/iroh/rpc-command-filter.js.map +1 -0
  384. package/dist/core/remote/iroh/rpc-transport.d.ts +21 -0
  385. package/dist/core/remote/iroh/rpc-transport.d.ts.map +1 -0
  386. package/dist/core/remote/iroh/rpc-transport.js +106 -0
  387. package/dist/core/remote/iroh/rpc-transport.js.map +1 -0
  388. package/dist/core/remote/iroh/state-manager.d.ts +141 -0
  389. package/dist/core/remote/iroh/state-manager.d.ts.map +1 -0
  390. package/dist/core/remote/iroh/state-manager.js +744 -0
  391. package/dist/core/remote/iroh/state-manager.js.map +1 -0
  392. package/dist/core/remote/iroh/state.d.ts +141 -0
  393. package/dist/core/remote/iroh/state.d.ts.map +1 -0
  394. package/dist/core/remote/iroh/state.js +433 -0
  395. package/dist/core/remote/iroh/state.js.map +1 -0
  396. package/dist/core/remote/iroh/ticket.d.ts +46 -0
  397. package/dist/core/remote/iroh/ticket.d.ts.map +1 -0
  398. package/dist/core/remote/iroh/ticket.js +267 -0
  399. package/dist/core/remote/iroh/ticket.js.map +1 -0
  400. package/dist/core/remote/iroh/transcript-text.d.ts +8 -0
  401. package/dist/core/remote/iroh/transcript-text.d.ts.map +1 -0
  402. package/dist/core/remote/iroh/transcript-text.js +26 -0
  403. package/dist/core/remote/iroh/transcript-text.js.map +1 -0
  404. package/dist/core/remote/iroh/workspace-rpc.d.ts +31 -0
  405. package/dist/core/remote/iroh/workspace-rpc.d.ts.map +1 -0
  406. package/dist/core/remote/iroh/workspace-rpc.js +73 -0
  407. package/dist/core/remote/iroh/workspace-rpc.js.map +1 -0
  408. package/dist/core/remote/iroh/workspace.d.ts +16 -0
  409. package/dist/core/remote/iroh/workspace.d.ts.map +1 -0
  410. package/dist/core/remote/iroh/workspace.js +104 -0
  411. package/dist/core/remote/iroh/workspace.js.map +1 -0
  412. package/dist/core/remote/iroh/worktree-rpc.d.ts +83 -0
  413. package/dist/core/remote/iroh/worktree-rpc.d.ts.map +1 -0
  414. package/dist/core/remote/iroh/worktree-rpc.js +148 -0
  415. package/dist/core/remote/iroh/worktree-rpc.js.map +1 -0
  416. package/dist/core/resolve-config-value.d.ts +30 -0
  417. package/dist/core/resolve-config-value.d.ts.map +1 -0
  418. package/dist/core/resolve-config-value.js +245 -0
  419. package/dist/core/resolve-config-value.js.map +1 -0
  420. package/dist/core/resource-loader.d.ts +214 -0
  421. package/dist/core/resource-loader.d.ts.map +1 -0
  422. package/dist/core/resource-loader.js +824 -0
  423. package/dist/core/resource-loader.js.map +1 -0
  424. package/dist/core/review.d.ts +318 -0
  425. package/dist/core/review.d.ts.map +1 -0
  426. package/dist/core/review.js +1271 -0
  427. package/dist/core/review.js.map +1 -0
  428. package/dist/core/rpc/duplex-write-gate.d.ts +29 -0
  429. package/dist/core/rpc/duplex-write-gate.d.ts.map +1 -0
  430. package/dist/core/rpc/duplex-write-gate.js +124 -0
  431. package/dist/core/rpc/duplex-write-gate.js.map +1 -0
  432. package/dist/core/rpc/index.d.ts +6 -0
  433. package/dist/core/rpc/index.d.ts.map +1 -0
  434. package/dist/core/rpc/index.js +5 -0
  435. package/dist/core/rpc/index.js.map +1 -0
  436. package/dist/core/rpc/iroh-transport.d.ts +58 -0
  437. package/dist/core/rpc/iroh-transport.d.ts.map +1 -0
  438. package/dist/core/rpc/iroh-transport.js +278 -0
  439. package/dist/core/rpc/iroh-transport.js.map +1 -0
  440. package/dist/core/rpc/jsonl.d.ts +17 -0
  441. package/dist/core/rpc/jsonl.d.ts.map +1 -0
  442. package/dist/core/rpc/jsonl.js +49 -0
  443. package/dist/core/rpc/jsonl.js.map +1 -0
  444. package/dist/core/rpc/loopback-transport.d.ts +14 -0
  445. package/dist/core/rpc/loopback-transport.d.ts.map +1 -0
  446. package/dist/core/rpc/loopback-transport.js +120 -0
  447. package/dist/core/rpc/loopback-transport.js.map +1 -0
  448. package/dist/core/rpc/transcript.d.ts +37 -0
  449. package/dist/core/rpc/transcript.d.ts.map +1 -0
  450. package/dist/core/rpc/transcript.js +624 -0
  451. package/dist/core/rpc/transcript.js.map +1 -0
  452. package/dist/core/rpc/transport.d.ts +41 -0
  453. package/dist/core/rpc/transport.d.ts.map +1 -0
  454. package/dist/core/rpc/transport.js +155 -0
  455. package/dist/core/rpc/transport.js.map +1 -0
  456. package/dist/core/rpc/types.d.ts +1254 -0
  457. package/dist/core/rpc/types.d.ts.map +1 -0
  458. package/dist/core/rpc/types.js +8 -0
  459. package/dist/core/rpc/types.js.map +1 -0
  460. package/dist/core/rpc/ui-action-args.d.ts +3 -0
  461. package/dist/core/rpc/ui-action-args.d.ts.map +1 -0
  462. package/dist/core/rpc/ui-action-args.js +66 -0
  463. package/dist/core/rpc/ui-action-args.js.map +1 -0
  464. package/dist/core/rpc/ui-actions.d.ts +43 -0
  465. package/dist/core/rpc/ui-actions.d.ts.map +1 -0
  466. package/dist/core/rpc/ui-actions.js +362 -0
  467. package/dist/core/rpc/ui-actions.js.map +1 -0
  468. package/dist/core/sdk.d.ts +138 -0
  469. package/dist/core/sdk.d.ts.map +1 -0
  470. package/dist/core/sdk.js +324 -0
  471. package/dist/core/sdk.js.map +1 -0
  472. package/dist/core/session-cwd.d.ts +19 -0
  473. package/dist/core/session-cwd.d.ts.map +1 -0
  474. package/dist/core/session-cwd.js +38 -0
  475. package/dist/core/session-cwd.js.map +1 -0
  476. package/dist/core/session-manager.d.ts +346 -0
  477. package/dist/core/session-manager.d.ts.map +1 -0
  478. package/dist/core/session-manager.js +1280 -0
  479. package/dist/core/session-manager.js.map +1 -0
  480. package/dist/core/settings-manager.d.ts +359 -0
  481. package/dist/core/settings-manager.d.ts.map +1 -0
  482. package/dist/core/settings-manager.js +1277 -0
  483. package/dist/core/settings-manager.js.map +1 -0
  484. package/dist/core/skills.d.ts +60 -0
  485. package/dist/core/skills.d.ts.map +1 -0
  486. package/dist/core/skills.js +387 -0
  487. package/dist/core/skills.js.map +1 -0
  488. package/dist/core/slash-commands.d.ts +14 -0
  489. package/dist/core/slash-commands.d.ts.map +1 -0
  490. package/dist/core/slash-commands.js +51 -0
  491. package/dist/core/slash-commands.js.map +1 -0
  492. package/dist/core/source-info.d.ts +18 -0
  493. package/dist/core/source-info.d.ts.map +1 -0
  494. package/dist/core/source-info.js +19 -0
  495. package/dist/core/source-info.js.map +1 -0
  496. package/dist/core/subagents/delegation-scope.d.ts +47 -0
  497. package/dist/core/subagents/delegation-scope.d.ts.map +1 -0
  498. package/dist/core/subagents/delegation-scope.js +134 -0
  499. package/dist/core/subagents/delegation-scope.js.map +1 -0
  500. package/dist/core/subagents/index.d.ts +46 -0
  501. package/dist/core/subagents/index.d.ts.map +1 -0
  502. package/dist/core/subagents/index.js +369 -0
  503. package/dist/core/subagents/index.js.map +1 -0
  504. package/dist/core/subagents/manager.d.ts +183 -0
  505. package/dist/core/subagents/manager.d.ts.map +1 -0
  506. package/dist/core/subagents/manager.js +820 -0
  507. package/dist/core/subagents/manager.js.map +1 -0
  508. package/dist/core/system-prompt.d.ts +28 -0
  509. package/dist/core/system-prompt.d.ts.map +1 -0
  510. package/dist/core/system-prompt.js +180 -0
  511. package/dist/core/system-prompt.js.map +1 -0
  512. package/dist/core/telemetry.d.ts +3 -0
  513. package/dist/core/telemetry.d.ts.map +1 -0
  514. package/dist/core/telemetry.js +9 -0
  515. package/dist/core/telemetry.js.map +1 -0
  516. package/dist/core/theme/dark.json +86 -0
  517. package/dist/core/theme/discovery.d.ts +48 -0
  518. package/dist/core/theme/discovery.d.ts.map +1 -0
  519. package/dist/core/theme/discovery.js +239 -0
  520. package/dist/core/theme/discovery.js.map +1 -0
  521. package/dist/core/theme/index.d.ts +6 -0
  522. package/dist/core/theme/index.d.ts.map +1 -0
  523. package/dist/core/theme/index.js +5 -0
  524. package/dist/core/theme/index.js.map +1 -0
  525. package/dist/core/theme/light.json +85 -0
  526. package/dist/core/theme/runtime.d.ts +55 -0
  527. package/dist/core/theme/runtime.d.ts.map +1 -0
  528. package/dist/core/theme/runtime.js +555 -0
  529. package/dist/core/theme/runtime.js.map +1 -0
  530. package/dist/core/theme/theme-schema.json +335 -0
  531. package/dist/core/theme/theme-service.d.ts +37 -0
  532. package/dist/core/theme/theme-service.d.ts.map +1 -0
  533. package/dist/core/theme/theme-service.js +222 -0
  534. package/dist/core/theme/theme-service.js.map +1 -0
  535. package/dist/core/theme/theme.d.ts +100 -0
  536. package/dist/core/theme/theme.d.ts.map +1 -0
  537. package/dist/core/theme/theme.js +243 -0
  538. package/dist/core/theme/theme.js.map +1 -0
  539. package/dist/core/theme/tokens.d.ts +20 -0
  540. package/dist/core/theme/tokens.d.ts.map +1 -0
  541. package/dist/core/theme/tokens.js +178 -0
  542. package/dist/core/theme/tokens.js.map +1 -0
  543. package/dist/core/theme/types.d.ts +21 -0
  544. package/dist/core/theme/types.d.ts.map +1 -0
  545. package/dist/core/theme/types.js +2 -0
  546. package/dist/core/theme/types.js.map +1 -0
  547. package/dist/core/timings.d.ts +8 -0
  548. package/dist/core/timings.d.ts.map +1 -0
  549. package/dist/core/timings.js +31 -0
  550. package/dist/core/timings.js.map +1 -0
  551. package/dist/core/tools/bash.d.ts +68 -0
  552. package/dist/core/tools/bash.d.ts.map +1 -0
  553. package/dist/core/tools/bash.js +345 -0
  554. package/dist/core/tools/bash.js.map +1 -0
  555. package/dist/core/tools/diagnostics-provider.d.ts +12 -0
  556. package/dist/core/tools/diagnostics-provider.d.ts.map +1 -0
  557. package/dist/core/tools/diagnostics-provider.js +2 -0
  558. package/dist/core/tools/diagnostics-provider.js.map +1 -0
  559. package/dist/core/tools/edit-diff.d.ts +77 -0
  560. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  561. package/dist/core/tools/edit-diff.js +506 -0
  562. package/dist/core/tools/edit-diff.js.map +1 -0
  563. package/dist/core/tools/edit.d.ts +56 -0
  564. package/dist/core/tools/edit.d.ts.map +1 -0
  565. package/dist/core/tools/edit.js +300 -0
  566. package/dist/core/tools/edit.js.map +1 -0
  567. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  568. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  569. package/dist/core/tools/file-mutation-queue.js +52 -0
  570. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  571. package/dist/core/tools/find.d.ts +35 -0
  572. package/dist/core/tools/find.d.ts.map +1 -0
  573. package/dist/core/tools/find.js +337 -0
  574. package/dist/core/tools/find.js.map +1 -0
  575. package/dist/core/tools/grep.d.ts +37 -0
  576. package/dist/core/tools/grep.d.ts.map +1 -0
  577. package/dist/core/tools/grep.js +305 -0
  578. package/dist/core/tools/grep.js.map +1 -0
  579. package/dist/core/tools/index.d.ts +56 -0
  580. package/dist/core/tools/index.d.ts.map +1 -0
  581. package/dist/core/tools/index.js +174 -0
  582. package/dist/core/tools/index.js.map +1 -0
  583. package/dist/core/tools/ls.d.ts +37 -0
  584. package/dist/core/tools/ls.d.ts.map +1 -0
  585. package/dist/core/tools/ls.js +167 -0
  586. package/dist/core/tools/ls.js.map +1 -0
  587. package/dist/core/tools/lsp.d.ts +59 -0
  588. package/dist/core/tools/lsp.d.ts.map +1 -0
  589. package/dist/core/tools/lsp.js +157 -0
  590. package/dist/core/tools/lsp.js.map +1 -0
  591. package/dist/core/tools/output-accumulator.d.ts +52 -0
  592. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  593. package/dist/core/tools/output-accumulator.js +184 -0
  594. package/dist/core/tools/output-accumulator.js.map +1 -0
  595. package/dist/core/tools/path-utils.d.ts +10 -0
  596. package/dist/core/tools/path-utils.d.ts.map +1 -0
  597. package/dist/core/tools/path-utils.js +99 -0
  598. package/dist/core/tools/path-utils.js.map +1 -0
  599. package/dist/core/tools/read.d.ts +35 -0
  600. package/dist/core/tools/read.d.ts.map +1 -0
  601. package/dist/core/tools/read.js +292 -0
  602. package/dist/core/tools/read.js.map +1 -0
  603. package/dist/core/tools/render-utils.d.ts +26 -0
  604. package/dist/core/tools/render-utils.d.ts.map +1 -0
  605. package/dist/core/tools/render-utils.js +69 -0
  606. package/dist/core/tools/render-utils.js.map +1 -0
  607. package/dist/core/tools/subagent.d.ts +219 -0
  608. package/dist/core/tools/subagent.d.ts.map +1 -0
  609. package/dist/core/tools/subagent.js +1445 -0
  610. package/dist/core/tools/subagent.js.map +1 -0
  611. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  612. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  613. package/dist/core/tools/tool-definition-wrapper.js +34 -0
  614. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  615. package/dist/core/tools/truncate.d.ts +70 -0
  616. package/dist/core/tools/truncate.d.ts.map +1 -0
  617. package/dist/core/tools/truncate.js +215 -0
  618. package/dist/core/tools/truncate.js.map +1 -0
  619. package/dist/core/tools/web-search.d.ts +69 -0
  620. package/dist/core/tools/web-search.d.ts.map +1 -0
  621. package/dist/core/tools/web-search.js +634 -0
  622. package/dist/core/tools/web-search.js.map +1 -0
  623. package/dist/core/tools/write.d.ts +33 -0
  624. package/dist/core/tools/write.d.ts.map +1 -0
  625. package/dist/core/tools/write.js +210 -0
  626. package/dist/core/tools/write.js.map +1 -0
  627. package/dist/core/trust-manager.d.ts +36 -0
  628. package/dist/core/trust-manager.d.ts.map +1 -0
  629. package/dist/core/trust-manager.js +220 -0
  630. package/dist/core/trust-manager.js.map +1 -0
  631. package/dist/daemon/cli.d.ts +8 -0
  632. package/dist/daemon/cli.d.ts.map +1 -0
  633. package/dist/daemon/cli.js +468 -0
  634. package/dist/daemon/cli.js.map +1 -0
  635. package/dist/daemon/control-client.d.ts +60 -0
  636. package/dist/daemon/control-client.d.ts.map +1 -0
  637. package/dist/daemon/control-client.js +411 -0
  638. package/dist/daemon/control-client.js.map +1 -0
  639. package/dist/daemon/control-protocol.d.ts +507 -0
  640. package/dist/daemon/control-protocol.d.ts.map +1 -0
  641. package/dist/daemon/control-protocol.js +395 -0
  642. package/dist/daemon/control-protocol.js.map +1 -0
  643. package/dist/daemon/control-server.d.ts +77 -0
  644. package/dist/daemon/control-server.d.ts.map +1 -0
  645. package/dist/daemon/control-server.js +327 -0
  646. package/dist/daemon/control-server.js.map +1 -0
  647. package/dist/daemon/conversation-commands.d.ts +176 -0
  648. package/dist/daemon/conversation-commands.d.ts.map +1 -0
  649. package/dist/daemon/conversation-commands.js +1268 -0
  650. package/dist/daemon/conversation-commands.js.map +1 -0
  651. package/dist/daemon/daemon-lock.d.ts +27 -0
  652. package/dist/daemon/daemon-lock.d.ts.map +1 -0
  653. package/dist/daemon/daemon-lock.js +238 -0
  654. package/dist/daemon/daemon-lock.js.map +1 -0
  655. package/dist/daemon/handshake-responses.d.ts +47 -0
  656. package/dist/daemon/handshake-responses.d.ts.map +1 -0
  657. package/dist/daemon/handshake-responses.js +113 -0
  658. package/dist/daemon/handshake-responses.js.map +1 -0
  659. package/dist/daemon/integrated-runtimes.d.ts +137 -0
  660. package/dist/daemon/integrated-runtimes.d.ts.map +1 -0
  661. package/dist/daemon/integrated-runtimes.js +763 -0
  662. package/dist/daemon/integrated-runtimes.js.map +1 -0
  663. package/dist/daemon/iroh-native.d.ts +76 -0
  664. package/dist/daemon/iroh-native.d.ts.map +1 -0
  665. package/dist/daemon/iroh-native.js +18 -0
  666. package/dist/daemon/iroh-native.js.map +1 -0
  667. package/dist/daemon/iroh-resource-guard.d.ts +57 -0
  668. package/dist/daemon/iroh-resource-guard.d.ts.map +1 -0
  669. package/dist/daemon/iroh-resource-guard.js +134 -0
  670. package/dist/daemon/iroh-resource-guard.js.map +1 -0
  671. package/dist/daemon/iroh-service.d.ts +51 -0
  672. package/dist/daemon/iroh-service.d.ts.map +1 -0
  673. package/dist/daemon/iroh-service.js +2604 -0
  674. package/dist/daemon/iroh-service.js.map +1 -0
  675. package/dist/daemon/keep-awake.d.ts +62 -0
  676. package/dist/daemon/keep-awake.d.ts.map +1 -0
  677. package/dist/daemon/keep-awake.js +190 -0
  678. package/dist/daemon/keep-awake.js.map +1 -0
  679. package/dist/daemon/lease-broker.d.ts +139 -0
  680. package/dist/daemon/lease-broker.d.ts.map +1 -0
  681. package/dist/daemon/lease-broker.js +504 -0
  682. package/dist/daemon/lease-broker.js.map +1 -0
  683. package/dist/daemon/log.d.ts +16 -0
  684. package/dist/daemon/log.d.ts.map +1 -0
  685. package/dist/daemon/log.js +40 -0
  686. package/dist/daemon/log.js.map +1 -0
  687. package/dist/daemon/main.d.ts +70 -0
  688. package/dist/daemon/main.d.ts.map +1 -0
  689. package/dist/daemon/main.js +781 -0
  690. package/dist/daemon/main.js.map +1 -0
  691. package/dist/daemon/paths.d.ts +32 -0
  692. package/dist/daemon/paths.d.ts.map +1 -0
  693. package/dist/daemon/paths.js +208 -0
  694. package/dist/daemon/paths.js.map +1 -0
  695. package/dist/daemon/process-identity.d.ts +58 -0
  696. package/dist/daemon/process-identity.d.ts.map +1 -0
  697. package/dist/daemon/process-identity.js +185 -0
  698. package/dist/daemon/process-identity.js.map +1 -0
  699. package/dist/daemon/relay-stream.d.ts +89 -0
  700. package/dist/daemon/relay-stream.d.ts.map +1 -0
  701. package/dist/daemon/relay-stream.js +202 -0
  702. package/dist/daemon/relay-stream.js.map +1 -0
  703. package/dist/daemon/remote-cli.d.ts +7 -0
  704. package/dist/daemon/remote-cli.d.ts.map +1 -0
  705. package/dist/daemon/remote-cli.js +774 -0
  706. package/dist/daemon/remote-cli.js.map +1 -0
  707. package/dist/daemon/service-install.d.ts +43 -0
  708. package/dist/daemon/service-install.d.ts.map +1 -0
  709. package/dist/daemon/service-install.js +198 -0
  710. package/dist/daemon/service-install.js.map +1 -0
  711. package/dist/daemon/session-target.d.ts +62 -0
  712. package/dist/daemon/session-target.d.ts.map +1 -0
  713. package/dist/daemon/session-target.js +66 -0
  714. package/dist/daemon/session-target.js.map +1 -0
  715. package/dist/daemon/spawn.d.ts +53 -0
  716. package/dist/daemon/spawn.d.ts.map +1 -0
  717. package/dist/daemon/spawn.js +205 -0
  718. package/dist/daemon/spawn.js.map +1 -0
  719. package/dist/daemon/state.d.ts +145 -0
  720. package/dist/daemon/state.d.ts.map +1 -0
  721. package/dist/daemon/state.js +454 -0
  722. package/dist/daemon/state.js.map +1 -0
  723. package/dist/daemon/theme-push.d.ts +23 -0
  724. package/dist/daemon/theme-push.d.ts.map +1 -0
  725. package/dist/daemon/theme-push.js +30 -0
  726. package/dist/daemon/theme-push.js.map +1 -0
  727. package/dist/daemon/viewer-feed.d.ts +42 -0
  728. package/dist/daemon/viewer-feed.d.ts.map +1 -0
  729. package/dist/daemon/viewer-feed.js +138 -0
  730. package/dist/daemon/viewer-feed.js.map +1 -0
  731. package/dist/daemon/workspace-directory.d.ts +35 -0
  732. package/dist/daemon/workspace-directory.d.ts.map +1 -0
  733. package/dist/daemon/workspace-directory.js +105 -0
  734. package/dist/daemon/workspace-directory.js.map +1 -0
  735. package/dist/daemon/workspace-streams.d.ts +70 -0
  736. package/dist/daemon/workspace-streams.d.ts.map +1 -0
  737. package/dist/daemon/workspace-streams.js +289 -0
  738. package/dist/daemon/workspace-streams.js.map +1 -0
  739. package/dist/daemon/worktree-manager.d.ts +219 -0
  740. package/dist/daemon/worktree-manager.d.ts.map +1 -0
  741. package/dist/daemon/worktree-manager.js +1204 -0
  742. package/dist/daemon/worktree-manager.js.map +1 -0
  743. package/dist/index.d.ts +44 -0
  744. package/dist/index.d.ts.map +1 -0
  745. package/dist/index.js +57 -0
  746. package/dist/index.js.map +1 -0
  747. package/dist/main.d.ts +12 -0
  748. package/dist/main.d.ts.map +1 -0
  749. package/dist/main.js +773 -0
  750. package/dist/main.js.map +1 -0
  751. package/dist/mcp-cli.d.ts +6 -0
  752. package/dist/mcp-cli.d.ts.map +1 -0
  753. package/dist/mcp-cli.js +347 -0
  754. package/dist/mcp-cli.js.map +1 -0
  755. package/dist/migrations.d.ts +33 -0
  756. package/dist/migrations.d.ts.map +1 -0
  757. package/dist/migrations.js +281 -0
  758. package/dist/migrations.js.map +1 -0
  759. package/dist/modes/index.d.ts +13 -0
  760. package/dist/modes/index.d.ts.map +1 -0
  761. package/dist/modes/index.js +12 -0
  762. package/dist/modes/index.js.map +1 -0
  763. package/dist/modes/interactive/components/armin.d.ts +34 -0
  764. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  765. package/dist/modes/interactive/components/armin.js +333 -0
  766. package/dist/modes/interactive/components/armin.js.map +1 -0
  767. package/dist/modes/interactive/components/assistant-message.d.ts +22 -0
  768. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  769. package/dist/modes/interactive/components/assistant-message.js +129 -0
  770. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  771. package/dist/modes/interactive/components/bash-execution.d.ts +39 -0
  772. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  773. package/dist/modes/interactive/components/bash-execution.js +212 -0
  774. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  775. package/dist/modes/interactive/components/bordered-loader.d.ts +17 -0
  776. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  777. package/dist/modes/interactive/components/bordered-loader.js +57 -0
  778. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  779. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  780. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  781. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  782. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  783. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  784. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  785. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  786. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  787. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  788. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  789. package/dist/modes/interactive/components/config-selector.js +510 -0
  790. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  791. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  792. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  793. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  794. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  795. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  796. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  797. package/dist/modes/interactive/components/custom-editor.js +70 -0
  798. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  799. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  800. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  801. package/dist/modes/interactive/components/custom-message.js +76 -0
  802. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  803. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  804. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  805. package/dist/modes/interactive/components/daxnuts.js +140 -0
  806. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  807. package/dist/modes/interactive/components/diff.d.ts +12 -0
  808. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  809. package/dist/modes/interactive/components/diff.js +133 -0
  810. package/dist/modes/interactive/components/diff.js.map +1 -0
  811. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  812. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  813. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  814. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  815. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  816. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  817. package/dist/modes/interactive/components/extension-editor.js +116 -0
  818. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  819. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  820. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  821. package/dist/modes/interactive/components/extension-input.js +61 -0
  822. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  823. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  824. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  825. package/dist/modes/interactive/components/extension-selector.js +98 -0
  826. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  827. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  828. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  829. package/dist/modes/interactive/components/first-time-setup.js +103 -0
  830. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  831. package/dist/modes/interactive/components/footer.d.ts +27 -0
  832. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  833. package/dist/modes/interactive/components/footer.js +180 -0
  834. package/dist/modes/interactive/components/footer.js.map +1 -0
  835. package/dist/modes/interactive/components/hotkeys.d.ts +24 -0
  836. package/dist/modes/interactive/components/hotkeys.d.ts.map +1 -0
  837. package/dist/modes/interactive/components/hotkeys.js +97 -0
  838. package/dist/modes/interactive/components/hotkeys.js.map +1 -0
  839. package/dist/modes/interactive/components/index.d.ts +35 -0
  840. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  841. package/dist/modes/interactive/components/index.js +36 -0
  842. package/dist/modes/interactive/components/index.js.map +1 -0
  843. package/dist/modes/interactive/components/keybinding-hints.d.ts +19 -0
  844. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  845. package/dist/modes/interactive/components/keybinding-hints.js +48 -0
  846. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  847. package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  848. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  849. package/dist/modes/interactive/components/login-dialog.js +179 -0
  850. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  851. package/dist/modes/interactive/components/logo.d.ts +25 -0
  852. package/dist/modes/interactive/components/logo.d.ts.map +1 -0
  853. package/dist/modes/interactive/components/logo.js +89 -0
  854. package/dist/modes/interactive/components/logo.js.map +1 -0
  855. package/dist/modes/interactive/components/model-selector.d.ts +47 -0
  856. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  857. package/dist/modes/interactive/components/model-selector.js +278 -0
  858. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  859. package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
  860. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  861. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  862. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  863. package/dist/modes/interactive/components/remote-control-center.d.ts +110 -0
  864. package/dist/modes/interactive/components/remote-control-center.d.ts.map +1 -0
  865. package/dist/modes/interactive/components/remote-control-center.js +1217 -0
  866. package/dist/modes/interactive/components/remote-control-center.js.map +1 -0
  867. package/dist/modes/interactive/components/review-tools-selector.d.ts +24 -0
  868. package/dist/modes/interactive/components/review-tools-selector.d.ts.map +1 -0
  869. package/dist/modes/interactive/components/review-tools-selector.js +93 -0
  870. package/dist/modes/interactive/components/review-tools-selector.js.map +1 -0
  871. package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  872. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  873. package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
  874. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  875. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  876. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  877. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  878. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  879. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  880. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  881. package/dist/modes/interactive/components/session-selector.js +856 -0
  882. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  883. package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  884. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  885. package/dist/modes/interactive/components/settings-selector.js +484 -0
  886. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  887. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  888. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  889. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  890. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  891. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  892. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  893. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  894. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  895. package/dist/modes/interactive/components/streaming-render-coalescer.d.ts +29 -0
  896. package/dist/modes/interactive/components/streaming-render-coalescer.d.ts.map +1 -0
  897. package/dist/modes/interactive/components/streaming-render-coalescer.js +98 -0
  898. package/dist/modes/interactive/components/streaming-render-coalescer.js.map +1 -0
  899. package/dist/modes/interactive/components/subagent-inspector.d.ts +32 -0
  900. package/dist/modes/interactive/components/subagent-inspector.d.ts.map +1 -0
  901. package/dist/modes/interactive/components/subagent-inspector.js +439 -0
  902. package/dist/modes/interactive/components/subagent-inspector.js.map +1 -0
  903. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  904. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  905. package/dist/modes/interactive/components/theme-selector.js +50 -0
  906. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  907. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  908. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  909. package/dist/modes/interactive/components/thinking-selector.js +52 -0
  910. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  911. package/dist/modes/interactive/components/tool-execution.d.ts +83 -0
  912. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  913. package/dist/modes/interactive/components/tool-execution.js +421 -0
  914. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  915. package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
  916. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  917. package/dist/modes/interactive/components/tree-selector.js +1208 -0
  918. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  919. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  920. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  921. package/dist/modes/interactive/components/trust-selector.js +91 -0
  922. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  923. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  924. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  925. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  926. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  927. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  928. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  929. package/dist/modes/interactive/components/user-message.js +42 -0
  930. package/dist/modes/interactive/components/user-message.js.map +1 -0
  931. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  932. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  933. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  934. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  935. package/dist/modes/interactive/components/volt-announcement.d.ts +5 -0
  936. package/dist/modes/interactive/components/volt-announcement.d.ts.map +1 -0
  937. package/dist/modes/interactive/components/volt-announcement.js +15 -0
  938. package/dist/modes/interactive/components/volt-announcement.js.map +1 -0
  939. package/dist/modes/interactive/daemon-attach.d.ts +154 -0
  940. package/dist/modes/interactive/daemon-attach.d.ts.map +1 -0
  941. package/dist/modes/interactive/daemon-attach.js +552 -0
  942. package/dist/modes/interactive/daemon-attach.js.map +1 -0
  943. package/dist/modes/interactive/drain-viewer.d.ts +31 -0
  944. package/dist/modes/interactive/drain-viewer.d.ts.map +1 -0
  945. package/dist/modes/interactive/drain-viewer.js +166 -0
  946. package/dist/modes/interactive/drain-viewer.js.map +1 -0
  947. package/dist/modes/interactive/interactive-mode.d.ts +502 -0
  948. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  949. package/dist/modes/interactive/interactive-mode.js +7007 -0
  950. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  951. package/dist/modes/interactive/prompt-image-attachments.d.ts +34 -0
  952. package/dist/modes/interactive/prompt-image-attachments.d.ts.map +1 -0
  953. package/dist/modes/interactive/prompt-image-attachments.js +120 -0
  954. package/dist/modes/interactive/prompt-image-attachments.js.map +1 -0
  955. package/dist/modes/interactive/relay-stream-adapter.d.ts +19 -0
  956. package/dist/modes/interactive/relay-stream-adapter.d.ts.map +1 -0
  957. package/dist/modes/interactive/relay-stream-adapter.js +107 -0
  958. package/dist/modes/interactive/relay-stream-adapter.js.map +1 -0
  959. package/dist/modes/print-mode.d.ts +28 -0
  960. package/dist/modes/print-mode.d.ts.map +1 -0
  961. package/dist/modes/print-mode.js +132 -0
  962. package/dist/modes/print-mode.js.map +1 -0
  963. package/dist/modes/rpc/in-process-rpc-client.d.ts +31 -0
  964. package/dist/modes/rpc/in-process-rpc-client.d.ts.map +1 -0
  965. package/dist/modes/rpc/in-process-rpc-client.js +63 -0
  966. package/dist/modes/rpc/in-process-rpc-client.js.map +1 -0
  967. package/dist/modes/rpc/iroh-remote-agent-runtime.d.ts +61 -0
  968. package/dist/modes/rpc/iroh-remote-agent-runtime.d.ts.map +1 -0
  969. package/dist/modes/rpc/iroh-remote-agent-runtime.js +155 -0
  970. package/dist/modes/rpc/iroh-remote-agent-runtime.js.map +1 -0
  971. package/dist/modes/rpc/iroh-remote-rpc-mode.d.ts +69 -0
  972. package/dist/modes/rpc/iroh-remote-rpc-mode.d.ts.map +1 -0
  973. package/dist/modes/rpc/iroh-remote-rpc-mode.js +1223 -0
  974. package/dist/modes/rpc/iroh-remote-rpc-mode.js.map +1 -0
  975. package/dist/modes/rpc/jsonl.d.ts +2 -0
  976. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  977. package/dist/modes/rpc/jsonl.js +2 -0
  978. package/dist/modes/rpc/jsonl.js.map +1 -0
  979. package/dist/modes/rpc/rpc-client-base.d.ts +209 -0
  980. package/dist/modes/rpc/rpc-client-base.d.ts.map +1 -0
  981. package/dist/modes/rpc/rpc-client-base.js +530 -0
  982. package/dist/modes/rpc/rpc-client-base.js.map +1 -0
  983. package/dist/modes/rpc/rpc-client.d.ts +50 -0
  984. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  985. package/dist/modes/rpc/rpc-client.js +190 -0
  986. package/dist/modes/rpc/rpc-client.js.map +1 -0
  987. package/dist/modes/rpc/rpc-command-dispatcher.d.ts +43 -0
  988. package/dist/modes/rpc/rpc-command-dispatcher.d.ts.map +1 -0
  989. package/dist/modes/rpc/rpc-command-dispatcher.js +613 -0
  990. package/dist/modes/rpc/rpc-command-dispatcher.js.map +1 -0
  991. package/dist/modes/rpc/rpc-command-validation.d.ts +2 -0
  992. package/dist/modes/rpc/rpc-command-validation.d.ts.map +1 -0
  993. package/dist/modes/rpc/rpc-command-validation.js +207 -0
  994. package/dist/modes/rpc/rpc-command-validation.js.map +1 -0
  995. package/dist/modes/rpc/rpc-mode.d.ts +48 -0
  996. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  997. package/dist/modes/rpc/rpc-mode.js +1089 -0
  998. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  999. package/dist/modes/rpc/rpc-transport-client.d.ts +26 -0
  1000. package/dist/modes/rpc/rpc-transport-client.d.ts.map +1 -0
  1001. package/dist/modes/rpc/rpc-transport-client.js +76 -0
  1002. package/dist/modes/rpc/rpc-transport-client.js.map +1 -0
  1003. package/dist/modes/rpc/rpc-types.d.ts +2 -0
  1004. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  1005. package/dist/modes/rpc/rpc-types.js +2 -0
  1006. package/dist/modes/rpc/rpc-types.js.map +1 -0
  1007. package/dist/package-manager-cli.d.ts +28 -0
  1008. package/dist/package-manager-cli.d.ts.map +1 -0
  1009. package/dist/package-manager-cli.js +667 -0
  1010. package/dist/package-manager-cli.js.map +1 -0
  1011. package/dist/remote/integrated-runtime-retention.d.ts +17 -0
  1012. package/dist/remote/integrated-runtime-retention.d.ts.map +1 -0
  1013. package/dist/remote/integrated-runtime-retention.js +62 -0
  1014. package/dist/remote/integrated-runtime-retention.js.map +1 -0
  1015. package/dist/remote/iroh-native-adapter.cjs +19 -0
  1016. package/dist/sea/cli.d.ts +4 -0
  1017. package/dist/sea/cli.d.ts.map +1 -0
  1018. package/dist/sea/cli.js +4 -0
  1019. package/dist/sea/cli.js.map +1 -0
  1020. package/dist/sea/register-bedrock.d.ts +2 -0
  1021. package/dist/sea/register-bedrock.d.ts.map +1 -0
  1022. package/dist/sea/register-bedrock.js +4 -0
  1023. package/dist/sea/register-bedrock.js.map +1 -0
  1024. package/dist/store/catalog.d.ts +57 -0
  1025. package/dist/store/catalog.d.ts.map +1 -0
  1026. package/dist/store/catalog.js +331 -0
  1027. package/dist/store/catalog.js.map +1 -0
  1028. package/dist/store/inspector.d.ts +36 -0
  1029. package/dist/store/inspector.d.ts.map +1 -0
  1030. package/dist/store/inspector.js +578 -0
  1031. package/dist/store/inspector.js.map +1 -0
  1032. package/dist/store/install-plan.d.ts +26 -0
  1033. package/dist/store/install-plan.d.ts.map +1 -0
  1034. package/dist/store/install-plan.js +80 -0
  1035. package/dist/store/install-plan.js.map +1 -0
  1036. package/dist/store/render.d.ts +11 -0
  1037. package/dist/store/render.d.ts.map +1 -0
  1038. package/dist/store/render.js +153 -0
  1039. package/dist/store/render.js.map +1 -0
  1040. package/dist/store/resolver.d.ts +22 -0
  1041. package/dist/store/resolver.d.ts.map +1 -0
  1042. package/dist/store/resolver.js +207 -0
  1043. package/dist/store/resolver.js.map +1 -0
  1044. package/dist/store/store-cli.d.ts +7 -0
  1045. package/dist/store/store-cli.d.ts.map +1 -0
  1046. package/dist/store/store-cli.js +636 -0
  1047. package/dist/store/store-cli.js.map +1 -0
  1048. package/dist/store/targets.d.ts +21 -0
  1049. package/dist/store/targets.d.ts.map +1 -0
  1050. package/dist/store/targets.js +55 -0
  1051. package/dist/store/targets.js.map +1 -0
  1052. package/dist/utils/ansi.d.ts +2 -0
  1053. package/dist/utils/ansi.d.ts.map +1 -0
  1054. package/dist/utils/ansi.js +52 -0
  1055. package/dist/utils/ansi.js.map +1 -0
  1056. package/dist/utils/changelog.d.ts +22 -0
  1057. package/dist/utils/changelog.d.ts.map +1 -0
  1058. package/dist/utils/changelog.js +165 -0
  1059. package/dist/utils/changelog.js.map +1 -0
  1060. package/dist/utils/child-process.d.ts +18 -0
  1061. package/dist/utils/child-process.d.ts.map +1 -0
  1062. package/dist/utils/child-process.js +106 -0
  1063. package/dist/utils/child-process.js.map +1 -0
  1064. package/dist/utils/clipboard-image.d.ts +11 -0
  1065. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1066. package/dist/utils/clipboard-image.js +245 -0
  1067. package/dist/utils/clipboard-image.js.map +1 -0
  1068. package/dist/utils/clipboard.d.ts +2 -0
  1069. package/dist/utils/clipboard.d.ts.map +1 -0
  1070. package/dist/utils/clipboard.js +94 -0
  1071. package/dist/utils/clipboard.js.map +1 -0
  1072. package/dist/utils/deprecation.d.ts +4 -0
  1073. package/dist/utils/deprecation.d.ts.map +1 -0
  1074. package/dist/utils/deprecation.js +13 -0
  1075. package/dist/utils/deprecation.js.map +1 -0
  1076. package/dist/utils/durable-atomic-write.d.ts +46 -0
  1077. package/dist/utils/durable-atomic-write.d.ts.map +1 -0
  1078. package/dist/utils/durable-atomic-write.js +104 -0
  1079. package/dist/utils/durable-atomic-write.js.map +1 -0
  1080. package/dist/utils/frontmatter.d.ts +8 -0
  1081. package/dist/utils/frontmatter.d.ts.map +1 -0
  1082. package/dist/utils/frontmatter.js +26 -0
  1083. package/dist/utils/frontmatter.js.map +1 -0
  1084. package/dist/utils/fs-watch.d.ts +5 -0
  1085. package/dist/utils/fs-watch.d.ts.map +1 -0
  1086. package/dist/utils/fs-watch.js +25 -0
  1087. package/dist/utils/fs-watch.js.map +1 -0
  1088. package/dist/utils/git.d.ts +26 -0
  1089. package/dist/utils/git.d.ts.map +1 -0
  1090. package/dist/utils/git.js +195 -0
  1091. package/dist/utils/git.js.map +1 -0
  1092. package/dist/utils/html.d.ts +7 -0
  1093. package/dist/utils/html.d.ts.map +1 -0
  1094. package/dist/utils/html.js +40 -0
  1095. package/dist/utils/html.js.map +1 -0
  1096. package/dist/utils/ignore-files.d.ts +5 -0
  1097. package/dist/utils/ignore-files.d.ts.map +1 -0
  1098. package/dist/utils/ignore-files.js +58 -0
  1099. package/dist/utils/ignore-files.js.map +1 -0
  1100. package/dist/utils/image-codec.d.ts +22 -0
  1101. package/dist/utils/image-codec.d.ts.map +1 -0
  1102. package/dist/utils/image-codec.js +35 -0
  1103. package/dist/utils/image-codec.js.map +1 -0
  1104. package/dist/utils/image-convert.d.ts +9 -0
  1105. package/dist/utils/image-convert.d.ts.map +1 -0
  1106. package/dist/utils/image-convert.js +26 -0
  1107. package/dist/utils/image-convert.js.map +1 -0
  1108. package/dist/utils/image-resize-core.d.ts +31 -0
  1109. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1110. package/dist/utils/image-resize-core.js +181 -0
  1111. package/dist/utils/image-resize-core.js.map +1 -0
  1112. package/dist/utils/image-resize-worker.d.ts +2 -0
  1113. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1114. package/dist/utils/image-resize-worker.js +31 -0
  1115. package/dist/utils/image-resize-worker.js.map +1 -0
  1116. package/dist/utils/image-resize.d.ts +15 -0
  1117. package/dist/utils/image-resize.d.ts.map +1 -0
  1118. package/dist/utils/image-resize.js +92 -0
  1119. package/dist/utils/image-resize.js.map +1 -0
  1120. package/dist/utils/json.d.ts +3 -0
  1121. package/dist/utils/json.d.ts.map +1 -0
  1122. package/dist/utils/json.js +7 -0
  1123. package/dist/utils/json.js.map +1 -0
  1124. package/dist/utils/mime.d.ts +3 -0
  1125. package/dist/utils/mime.d.ts.map +1 -0
  1126. package/dist/utils/mime.js +69 -0
  1127. package/dist/utils/mime.js.map +1 -0
  1128. package/dist/utils/npm-spec.d.ts +9 -0
  1129. package/dist/utils/npm-spec.d.ts.map +1 -0
  1130. package/dist/utils/npm-spec.js +15 -0
  1131. package/dist/utils/npm-spec.js.map +1 -0
  1132. package/dist/utils/open-browser.d.ts +9 -0
  1133. package/dist/utils/open-browser.d.ts.map +1 -0
  1134. package/dist/utils/open-browser.js +22 -0
  1135. package/dist/utils/open-browser.js.map +1 -0
  1136. package/dist/utils/paths.d.ts +31 -0
  1137. package/dist/utils/paths.d.ts.map +1 -0
  1138. package/dist/utils/paths.js +92 -0
  1139. package/dist/utils/paths.js.map +1 -0
  1140. package/dist/utils/private-files.d.ts +21 -0
  1141. package/dist/utils/private-files.d.ts.map +1 -0
  1142. package/dist/utils/private-files.js +103 -0
  1143. package/dist/utils/private-files.js.map +1 -0
  1144. package/dist/utils/process-env.d.ts +2 -0
  1145. package/dist/utils/process-env.d.ts.map +1 -0
  1146. package/dist/utils/process-env.js +31 -0
  1147. package/dist/utils/process-env.js.map +1 -0
  1148. package/dist/utils/shell.d.ts +30 -0
  1149. package/dist/utils/shell.d.ts.map +1 -0
  1150. package/dist/utils/shell.js +195 -0
  1151. package/dist/utils/shell.js.map +1 -0
  1152. package/dist/utils/sleep.d.ts +5 -0
  1153. package/dist/utils/sleep.d.ts.map +1 -0
  1154. package/dist/utils/sleep.js +17 -0
  1155. package/dist/utils/sleep.js.map +1 -0
  1156. package/dist/utils/syntax-highlight.d.ts +18 -0
  1157. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1158. package/dist/utils/syntax-highlight.js +139 -0
  1159. package/dist/utils/syntax-highlight.js.map +1 -0
  1160. package/dist/utils/tools-manager.d.ts +3 -0
  1161. package/dist/utils/tools-manager.d.ts.map +1 -0
  1162. package/dist/utils/tools-manager.js +328 -0
  1163. package/dist/utils/tools-manager.js.map +1 -0
  1164. package/dist/utils/version-check.d.ts +15 -0
  1165. package/dist/utils/version-check.d.ts.map +1 -0
  1166. package/dist/utils/version-check.js +61 -0
  1167. package/dist/utils/version-check.js.map +1 -0
  1168. package/dist/utils/volt-user-agent.d.ts +2 -0
  1169. package/dist/utils/volt-user-agent.d.ts.map +1 -0
  1170. package/dist/utils/volt-user-agent.js +5 -0
  1171. package/dist/utils/volt-user-agent.js.map +1 -0
  1172. package/dist/utils/windows-self-update.d.ts +3 -0
  1173. package/dist/utils/windows-self-update.d.ts.map +1 -0
  1174. package/dist/utils/windows-self-update.js +77 -0
  1175. package/dist/utils/windows-self-update.js.map +1 -0
  1176. package/docs/compaction.md +394 -0
  1177. package/docs/containerization.md +111 -0
  1178. package/docs/custom-provider.md +737 -0
  1179. package/docs/daemon.md +190 -0
  1180. package/docs/development.md +70 -0
  1181. package/docs/docs.json +176 -0
  1182. package/docs/extensions.md +2692 -0
  1183. package/docs/images/exy.png +0 -0
  1184. package/docs/images/interactive-mode.png +0 -0
  1185. package/docs/images/tree-view.png +0 -0
  1186. package/docs/index.md +82 -0
  1187. package/docs/iroh-remote-access-design.md +340 -0
  1188. package/docs/iroh-remote-protocol.md +431 -0
  1189. package/docs/json.md +87 -0
  1190. package/docs/keybindings.md +200 -0
  1191. package/docs/live-shared-session-daemon-design.md +1090 -0
  1192. package/docs/lsp.md +143 -0
  1193. package/docs/mcp.md +1044 -0
  1194. package/docs/models.md +495 -0
  1195. package/docs/packages.md +230 -0
  1196. package/docs/prompt-templates.md +108 -0
  1197. package/docs/providers.md +274 -0
  1198. package/docs/quickstart.md +165 -0
  1199. package/docs/rpc.md +2050 -0
  1200. package/docs/sdk.md +1267 -0
  1201. package/docs/security.md +139 -0
  1202. package/docs/session-format.md +412 -0
  1203. package/docs/sessions.md +145 -0
  1204. package/docs/settings.md +371 -0
  1205. package/docs/shell-aliases.md +13 -0
  1206. package/docs/skills.md +243 -0
  1207. package/docs/subagents-design.md +419 -0
  1208. package/docs/terminal-setup.md +148 -0
  1209. package/docs/termux.md +127 -0
  1210. package/docs/themes.md +295 -0
  1211. package/docs/tla/ClientAuth.cfg +16 -0
  1212. package/docs/tla/ClientAuth.tla +205 -0
  1213. package/docs/tla/ClientConn.cfg +16 -0
  1214. package/docs/tla/ClientConn.tla +265 -0
  1215. package/docs/tla/LeaseBroker.cfg +43 -0
  1216. package/docs/tla/LeaseBroker.tla +563 -0
  1217. package/docs/tla/PLAN.md +240 -0
  1218. package/docs/tla/PushOrdering.cfg +17 -0
  1219. package/docs/tla/PushOrdering.tla +183 -0
  1220. package/docs/tla/README.md +205 -0
  1221. package/docs/tla/RelayViewer.cfg +26 -0
  1222. package/docs/tla/RelayViewer.tla +299 -0
  1223. package/docs/tla/SessionTarget.cfg +18 -0
  1224. package/docs/tla/SessionTarget.tla +192 -0
  1225. package/docs/tla/check.sh +34 -0
  1226. package/docs/tmux.md +63 -0
  1227. package/docs/tui.md +949 -0
  1228. package/docs/usage.md +482 -0
  1229. package/docs/windows.md +17 -0
  1230. package/docs/worktrees-design.md +605 -0
  1231. package/examples/README.md +28 -0
  1232. package/examples/extensions/README.md +211 -0
  1233. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1234. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1235. package/examples/extensions/bookmark.ts +50 -0
  1236. package/examples/extensions/border-status-editor.ts +150 -0
  1237. package/examples/extensions/built-in-tool-renderer.ts +249 -0
  1238. package/examples/extensions/claude-rules.ts +86 -0
  1239. package/examples/extensions/commands.ts +72 -0
  1240. package/examples/extensions/confirm-destructive.ts +59 -0
  1241. package/examples/extensions/custom-compaction.ts +127 -0
  1242. package/examples/extensions/custom-footer.ts +64 -0
  1243. package/examples/extensions/custom-header.ts +72 -0
  1244. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  1245. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1246. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1247. package/examples/extensions/custom-provider-gitlab-duo/index.ts +400 -0
  1248. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1249. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1250. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1251. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1252. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  1253. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1254. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1255. package/examples/extensions/dynamic-tools.ts +74 -0
  1256. package/examples/extensions/event-bus.ts +43 -0
  1257. package/examples/extensions/file-trigger.ts +41 -0
  1258. package/examples/extensions/git-checkpoint.ts +53 -0
  1259. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  1260. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1261. package/examples/extensions/gondolin/index.ts +531 -0
  1262. package/examples/extensions/gondolin/package-lock.json +185 -0
  1263. package/examples/extensions/gondolin/package.json +19 -0
  1264. package/examples/extensions/handoff.ts +191 -0
  1265. package/examples/extensions/hello.ts +26 -0
  1266. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1267. package/examples/extensions/inline-bash.ts +94 -0
  1268. package/examples/extensions/input-transform-streaming.ts +39 -0
  1269. package/examples/extensions/input-transform.ts +43 -0
  1270. package/examples/extensions/interactive-shell.ts +196 -0
  1271. package/examples/extensions/mac-system-theme.ts +47 -0
  1272. package/examples/extensions/message-renderer.ts +59 -0
  1273. package/examples/extensions/minimal-mode.ts +426 -0
  1274. package/examples/extensions/modal-editor.ts +85 -0
  1275. package/examples/extensions/model-status.ts +31 -0
  1276. package/examples/extensions/notify.ts +55 -0
  1277. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  1278. package/examples/extensions/overlay-test.ts +153 -0
  1279. package/examples/extensions/permission-gate.ts +34 -0
  1280. package/examples/extensions/pirate.ts +47 -0
  1281. package/examples/extensions/plan-mode/README.md +65 -0
  1282. package/examples/extensions/plan-mode/index.ts +340 -0
  1283. package/examples/extensions/plan-mode/utils.ts +168 -0
  1284. package/examples/extensions/preset.ts +436 -0
  1285. package/examples/extensions/project-trust.ts +64 -0
  1286. package/examples/extensions/prompt-customizer.ts +97 -0
  1287. package/examples/extensions/protected-paths.ts +30 -0
  1288. package/examples/extensions/provider-payload.ts +18 -0
  1289. package/examples/extensions/qna.ts +122 -0
  1290. package/examples/extensions/question.ts +277 -0
  1291. package/examples/extensions/questionnaire.ts +440 -0
  1292. package/examples/extensions/rainbow-editor.ts +88 -0
  1293. package/examples/extensions/reload-runtime.ts +37 -0
  1294. package/examples/extensions/rpc-demo.ts +118 -0
  1295. package/examples/extensions/sandbox/index.ts +321 -0
  1296. package/examples/extensions/sandbox/package-lock.json +92 -0
  1297. package/examples/extensions/sandbox/package.json +19 -0
  1298. package/examples/extensions/send-user-message.ts +97 -0
  1299. package/examples/extensions/session-name.ts +27 -0
  1300. package/examples/extensions/shutdown-command.ts +63 -0
  1301. package/examples/extensions/snake.ts +343 -0
  1302. package/examples/extensions/space-invaders.ts +560 -0
  1303. package/examples/extensions/ssh.ts +220 -0
  1304. package/examples/extensions/status-line.ts +32 -0
  1305. package/examples/extensions/structured-output.ts +65 -0
  1306. package/examples/extensions/subagent/README.md +175 -0
  1307. package/examples/extensions/subagent/agents/planner.md +37 -0
  1308. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1309. package/examples/extensions/subagent/agents/scout.md +50 -0
  1310. package/examples/extensions/subagent/agents/worker.md +24 -0
  1311. package/examples/extensions/subagent/agents.ts +126 -0
  1312. package/examples/extensions/subagent/index.ts +1009 -0
  1313. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1314. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1315. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1316. package/examples/extensions/summarize.ts +206 -0
  1317. package/examples/extensions/system-prompt-header.ts +17 -0
  1318. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1319. package/examples/extensions/timed-confirm.ts +70 -0
  1320. package/examples/extensions/titlebar-spinner.ts +58 -0
  1321. package/examples/extensions/todo.ts +297 -0
  1322. package/examples/extensions/tool-override.ts +144 -0
  1323. package/examples/extensions/tools.ts +146 -0
  1324. package/examples/extensions/trigger-compact.ts +50 -0
  1325. package/examples/extensions/truncated-tool.ts +195 -0
  1326. package/examples/extensions/widget-placement.ts +9 -0
  1327. package/examples/extensions/with-deps/index.ts +32 -0
  1328. package/examples/extensions/with-deps/package-lock.json +31 -0
  1329. package/examples/extensions/with-deps/package.json +22 -0
  1330. package/examples/extensions/working-indicator.ts +123 -0
  1331. package/examples/extensions/working-message-test.ts +25 -0
  1332. package/examples/remote/firebase-push-relay/README.md +79 -0
  1333. package/examples/remote/firebase-push-relay/firebase.json +12 -0
  1334. package/examples/remote/firebase-push-relay/firestore.indexes.json +11 -0
  1335. package/examples/remote/firebase-push-relay/firestore.rules +9 -0
  1336. package/examples/remote/firebase-push-relay/functions/core.js +511 -0
  1337. package/examples/remote/firebase-push-relay/functions/core.test.js +273 -0
  1338. package/examples/remote/firebase-push-relay/functions/index.js +413 -0
  1339. package/examples/remote/firebase-push-relay/functions/package-lock.json +2974 -0
  1340. package/examples/remote/firebase-push-relay/functions/package.json +18 -0
  1341. package/examples/remote/iroh-sidecar/README.md +211 -0
  1342. package/examples/remote/iroh-sidecar/client.mjs +554 -0
  1343. package/examples/remote/iroh-sidecar/common.mjs +195 -0
  1344. package/examples/remote/iroh-sidecar/host.mjs +4 -0
  1345. package/examples/remote/iroh-sidecar/package-lock.json +213 -0
  1346. package/examples/remote/iroh-sidecar/package.json +13 -0
  1347. package/examples/remote/iroh-sidecar/source-aware-run.mjs +41 -0
  1348. package/examples/rpc-extension-ui.ts +632 -0
  1349. package/examples/sdk/01-minimal.ts +26 -0
  1350. package/examples/sdk/02-custom-model.ts +53 -0
  1351. package/examples/sdk/03-custom-prompt.ts +70 -0
  1352. package/examples/sdk/04-skills.ts +55 -0
  1353. package/examples/sdk/05-tools.ts +48 -0
  1354. package/examples/sdk/06-extensions.ts +94 -0
  1355. package/examples/sdk/07-context-files.ts +42 -0
  1356. package/examples/sdk/08-prompt-templates.ts +51 -0
  1357. package/examples/sdk/09-api-keys-and-oauth.ts +52 -0
  1358. package/examples/sdk/10-settings.ts +53 -0
  1359. package/examples/sdk/11-sessions.ts +52 -0
  1360. package/examples/sdk/12-full-control.ts +78 -0
  1361. package/examples/sdk/13-session-runtime.ts +67 -0
  1362. package/examples/sdk/README.md +147 -0
  1363. package/npm-shrinkwrap.json +3442 -0
  1364. package/package.json +125 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/lsp/client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Minimal LSP client speaking JSON-RPC over stdio.\n *\n * Implements only what the diagnostics feedback loop needs: the initialize\n * handshake, full-text document synchronization, push diagnostics\n * (textDocument/publishDiagnostics), and pull diagnostics\n * (textDocument/diagnostic) when the server advertises support.\n */\n\nimport { type ChildProcess, spawn, spawnSync } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { readFile, stat } from \"node:fs/promises\";\nimport { basename, extname, join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { languageIdForExtension } from \"./config.ts\";\nimport type { LspTracer } from \"./trace.ts\";\n\nexport interface LspPosition {\n\tline: number;\n\tcharacter: number;\n}\n\nexport interface LspRange {\n\tstart: LspPosition;\n\tend: LspPosition;\n}\n\nexport interface LspDiagnostic {\n\trange: LspRange;\n\tseverity?: number;\n\tcode?: number | string;\n\tsource?: string;\n\tmessage: string;\n}\n\nexport interface LspClientOptions {\n\tserverName: string;\n\tcommand: string[];\n\trootDir: string;\n\tinitializationOptions?: unknown;\n\t/**\n\t * Server configuration. Sent via workspace/didChangeConfiguration after the\n\t * handshake and used to answer workspace/configuration section requests.\n\t */\n\tsettings?: unknown;\n\t/** Timeout for individual LSP requests (including initialize). Default: 30000 */\n\trequestTimeoutMs?: number;\n\t/**\n\t * Handler for server-initiated workspace/applyEdit requests (used by\n\t * command-based code actions). Returns whether the edit was applied.\n\t */\n\tonApplyEdit?: (edit: unknown) => Promise<boolean>;\n\t/** Protocol tracer. Can also be set later via setTracer(). */\n\ttracer?: LspTracer;\n}\n\ninterface PendingRequest {\n\tresolve: (result: unknown) => void;\n\treject: (error: Error) => void;\n\ttimer: NodeJS.Timeout;\n}\n\ninterface PublishedDiagnostics {\n\tdiagnostics: LspDiagnostic[];\n\tseq: number;\n\t/** Document version from the publish notification, when the server provided one */\n\tversion?: number;\n}\n\ninterface PublishWaiter {\n\turi: string;\n\tsinceSeq: number;\n\tresolve: () => void;\n}\n\ninterface TrackedDocument {\n\turi: string;\n\tabsolutePath: string;\n\tversion: number;\n\t/** The exact content last synced to the server */\n\tcontent: string;\n\t/** Disk stat at last sync, used as a cheap staleness filter */\n\tmtimeMs?: number;\n\tsize?: number;\n}\n\n/** LSP FileChangeType values for workspace/didChangeWatchedFiles */\nconst FILE_CHANGE_TYPE_CHANGED = 2;\nconst FILE_CHANGE_TYPE_DELETED = 3;\n\ninterface JsonRpcMessage {\n\tjsonrpc: \"2.0\";\n\tid?: number | string;\n\tmethod?: string;\n\tparams?: unknown;\n\tresult?: unknown;\n\terror?: { code: number; message: string };\n}\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30000;\n\n/**\n * How long to re-wait for a fresher publish after an unversioned one when the\n * server has never tagged any publish with a version. Such servers publish\n * exactly once per change in the common case, so a full settle-window re-wait\n * would just run to the deadline on every edit; a racing stale publish and its\n * corrected follow-up arrive close together in practice.\n */\nconst UNVERSIONED_REPUBLISH_GRACE_MS = 250;\n\n/**\n * A JSON-RPC error response: the server actively rejected the request (as\n * opposed to a timeout, abort, or server exit on our side).\n */\nclass LspResponseError extends Error {\n\treadonly code: number;\n\n\tconstructor(code: number, message: string) {\n\t\tsuper(`LSP error ${code}: ${message}`);\n\t\tthis.code = code;\n\t}\n}\n\nfunction quoteWindowsArg(arg: string): string {\n\treturn /\\s/.test(arg) ? `\"${arg}\"` : arg;\n}\n\n/**\n * Whether a command binary is resolvable on Windows. Spawning through a shell\n * masks missing binaries as exit code 1, so we pre-check PATH/PATHEXT to\n * produce a proper ENOENT-style failure (which also carries install hints).\n */\nfunction windowsCommandExists(binary: string): boolean {\n\tif (!binary) {\n\t\treturn false;\n\t}\n\tconst extensions = [\"\", ...(process.env.PATHEXT ?? \".COM;.EXE;.BAT;.CMD\").split(\";\").filter(Boolean)];\n\tif (binary.includes(\"/\") || binary.includes(\"\\\\\")) {\n\t\treturn extensions.some((ext) => existsSync(binary + ext));\n\t}\n\tconst pathDirs = (process.env.PATH ?? \"\").split(\";\").filter(Boolean);\n\treturn pathDirs.some((dir) => extensions.some((ext) => existsSync(join(dir, binary + ext))));\n}\n\nfunction spawnServer(command: string[], cwd: string): ChildProcess {\n\tif (process.platform === \"win32\") {\n\t\t// Many language servers are installed as .cmd shims on Windows, which\n\t\t// cannot be spawned directly without a shell.\n\t\tconst commandLine = command.map(quoteWindowsArg).join(\" \");\n\t\treturn spawn(commandLine, { cwd, shell: true, stdio: [\"pipe\", \"pipe\", \"pipe\"], windowsHide: true });\n\t}\n\treturn spawn(command[0], command.slice(1), { cwd, stdio: [\"pipe\", \"pipe\", \"pipe\"] });\n}\n\nfunction killProcessTree(child: ChildProcess): void {\n\tif (child.pid === undefined || child.exitCode !== null) {\n\t\treturn;\n\t}\n\ttry {\n\t\tif (process.platform === \"win32\") {\n\t\t\tspawnSync(\"taskkill\", [\"/pid\", String(child.pid), \"/T\", \"/F\"], { windowsHide: true });\n\t\t} else {\n\t\t\tchild.kill(\"SIGKILL\");\n\t\t}\n\t} catch {\n\t\t// Process is already gone.\n\t}\n}\n\n/** Look up a dot-separated configuration section (e.g. \"python.analysis\") in a settings object. */\nfunction lookupConfigSection(settings: unknown, section: unknown): unknown {\n\tif (typeof section !== \"string\" || section.length === 0) {\n\t\treturn settings ?? null;\n\t}\n\tlet current: unknown = settings;\n\tfor (const part of section.split(\".\")) {\n\t\tif (current === null || typeof current !== \"object\") {\n\t\t\treturn null;\n\t\t}\n\t\tcurrent = (current as Record<string, unknown>)[part];\n\t}\n\treturn current ?? null;\n}\n\n/** Normalize a file URI for map keys (Windows URIs vary in drive-letter casing and escaping). */\nfunction normalizeUri(uri: string): string {\n\tlet decoded = uri;\n\ttry {\n\t\tdecoded = decodeURIComponent(uri);\n\t} catch {\n\t\t// Keep the raw URI when decoding fails.\n\t}\n\treturn process.platform === \"win32\" ? decoded.toLowerCase() : decoded;\n}\n\nexport class LspClient {\n\tprivate options: LspClientOptions;\n\tprivate rootUri: string;\n\tprivate child: ChildProcess | undefined;\n\tprivate startPromise: Promise<void> | undefined;\n\tprivate startFailure = false;\n\tprivate alive = false;\n\tprivate disposed = false;\n\tprivate exitError: Error | undefined;\n\n\tprivate nextRequestId = 1;\n\tprivate pendingRequests = new Map<number, PendingRequest>();\n\tprivate readBuffer: Buffer = Buffer.alloc(0);\n\n\tprivate supportsPullDiagnostics = false;\n\tprivate documents = new Map<string, TrackedDocument>();\n\tprivate published = new Map<string, PublishedDiagnostics>();\n\tprivate publishSeq = 0;\n\tprivate publishWaiters: PublishWaiter[] = [];\n\tprivate everPublished = false;\n\tprivate everPublishedVersioned = false;\n\tprivate tracer: LspTracer | undefined;\n\n\tconstructor(options: LspClientOptions) {\n\t\tthis.options = options;\n\t\tthis.rootUri = pathToFileURL(options.rootDir).toString();\n\t\tthis.tracer = options.tracer;\n\t}\n\n\t/** Enable or disable protocol tracing for this client. */\n\tsetTracer(tracer: LspTracer | undefined): void {\n\t\tthis.tracer = tracer;\n\t}\n\n\tget isAlive(): boolean {\n\t\treturn this.alive && !this.disposed;\n\t}\n\n\t/** Whether the spawn/initialize handshake failed. Such a client never recovers. */\n\tget startFailed(): boolean {\n\t\treturn this.startFailure;\n\t}\n\n\t/** Spawn the server process and run the initialize handshake. Memoized. */\n\tstart(): Promise<void> {\n\t\tif (!this.startPromise) {\n\t\t\tthis.startPromise = this.doStart();\n\t\t\tthis.startPromise.catch(() => {\n\t\t\t\tthis.startFailure = true;\n\t\t\t});\n\t\t}\n\t\treturn this.startPromise;\n\t}\n\n\tprivate async doStart(): Promise<void> {\n\t\tif (process.platform === \"win32\" && !windowsCommandExists(this.options.command[0] ?? \"\")) {\n\t\t\tconst error = new Error(\n\t\t\t\t`Failed to start LSP server \"${this.options.serverName}\": spawn ${this.options.command[0]} ENOENT`,\n\t\t\t);\n\t\t\tthis.tracer?.log(this.options.serverName, \"info\", error.message);\n\t\t\tthis.handleExit(error);\n\t\t\tthrow this.exitError ?? error;\n\t\t}\n\t\tthis.tracer?.log(\n\t\t\tthis.options.serverName,\n\t\t\t\"info\",\n\t\t\t`spawning: ${this.options.command.join(\" \")} (root: ${this.options.rootDir})`,\n\t\t);\n\t\tconst child = spawnServer(this.options.command, this.options.rootDir);\n\t\tthis.child = child;\n\n\t\tconst spawnFailure = new Promise<never>((_, reject) => {\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tthis.handleExit(new Error(`Failed to start LSP server \"${this.options.serverName}\": ${error.message}`));\n\t\t\t\treject(this.exitError);\n\t\t\t});\n\t\t\tchild.once(\"exit\", (code) => {\n\t\t\t\tif (!this.disposed && !this.alive) {\n\t\t\t\t\tthis.handleExit(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`LSP server \"${this.options.serverName}\" exited during startup (code ${code ?? \"unknown\"})`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\treject(this.exitError);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t// Avoid unhandled rejection when startup succeeds and this promise loses the race.\n\t\tspawnFailure.catch(() => {});\n\n\t\tchild.stdout?.on(\"data\", (chunk: Buffer) => this.onData(chunk));\n\t\t// Drain stderr so the server cannot block on a full pipe.\n\t\tchild.stderr?.on(\"data\", (chunk: Buffer) => {\n\t\t\tthis.tracer?.log(this.options.serverName, \"stderr\", chunk.toString(\"utf-8\"));\n\t\t});\n\t\tchild.stdin?.on(\"error\", () => {});\n\t\tchild.on(\"exit\", (code) => {\n\t\t\tthis.tracer?.log(this.options.serverName, \"info\", `process exited (code ${code ?? \"unknown\"})`);\n\t\t\tif (this.alive) {\n\t\t\t\tthis.handleExit(new Error(`LSP server \"${this.options.serverName}\" exited (code ${code ?? \"unknown\"})`));\n\t\t\t}\n\t\t});\n\n\t\tthis.alive = true;\n\t\tconst initializeResult = (await Promise.race([\n\t\t\tthis.request(\"initialize\", {\n\t\t\t\tprocessId: process.pid,\n\t\t\t\trootUri: this.rootUri,\n\t\t\t\tworkspaceFolders: [{ uri: this.rootUri, name: basename(this.options.rootDir) }],\n\t\t\t\tcapabilities: {\n\t\t\t\t\ttextDocument: {\n\t\t\t\t\t\tsynchronization: { dynamicRegistration: false, didSave: false },\n\t\t\t\t\t\tpublishDiagnostics: { versionSupport: true, relatedInformation: false },\n\t\t\t\t\t\tdiagnostic: { dynamicRegistration: false, relatedDocumentSupport: false },\n\t\t\t\t\t\tdefinition: { dynamicRegistration: false, linkSupport: true },\n\t\t\t\t\t\timplementation: { dynamicRegistration: false, linkSupport: true },\n\t\t\t\t\t\ttypeDefinition: { dynamicRegistration: false, linkSupport: true },\n\t\t\t\t\t\treferences: { dynamicRegistration: false },\n\t\t\t\t\t\thover: { dynamicRegistration: false, contentFormat: [\"markdown\", \"plaintext\"] },\n\t\t\t\t\t\tdocumentSymbol: { dynamicRegistration: false, hierarchicalDocumentSymbolSupport: true },\n\t\t\t\t\t\trename: { dynamicRegistration: false, prepareSupport: false },\n\t\t\t\t\t\tcallHierarchy: { dynamicRegistration: false },\n\t\t\t\t\t\tcodeAction: {\n\t\t\t\t\t\t\tdynamicRegistration: false,\n\t\t\t\t\t\t\tcodeActionLiteralSupport: {\n\t\t\t\t\t\t\t\tcodeActionKind: { valueSet: [\"quickfix\", \"refactor\", \"source\"] },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresolveSupport: { properties: [\"edit\"] },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tworkspace: {\n\t\t\t\t\t\tconfiguration: true,\n\t\t\t\t\t\tworkspaceFolders: true,\n\t\t\t\t\t\tdidChangeWatchedFiles: { dynamicRegistration: false },\n\t\t\t\t\t\tdidChangeConfiguration: { dynamicRegistration: false },\n\t\t\t\t\t\tsymbol: { dynamicRegistration: false },\n\t\t\t\t\t\tapplyEdit: true,\n\t\t\t\t\t\tworkspaceEdit: {\n\t\t\t\t\t\t\tdocumentChanges: true,\n\t\t\t\t\t\t\tresourceOperations: [\"create\", \"rename\", \"delete\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\twindow: { workDoneProgress: false },\n\t\t\t\t},\n\t\t\t\tinitializationOptions: this.options.initializationOptions,\n\t\t\t}),\n\t\t\tspawnFailure,\n\t\t])) as { capabilities?: { diagnosticProvider?: unknown } } | undefined;\n\n\t\tthis.supportsPullDiagnostics = Boolean(initializeResult?.capabilities?.diagnosticProvider);\n\t\tthis.notify(\"initialized\", {});\n\t\tif (this.options.settings !== undefined) {\n\t\t\tthis.notify(\"workspace/didChangeConfiguration\", { settings: this.options.settings });\n\t\t}\n\t}\n\n\t/**\n\t * Sync a document and collect its diagnostics.\n\t *\n\t * Refreshes other open documents from disk first, so dependency changes made\n\t * outside the tools are reflected. Uses pull diagnostics when the server\n\t * supports them; otherwise waits for the server to publish diagnostics for\n\t * the document. The first collection on a fresh server waits up to\n\t * firstSettleMs (servers like tsserver publish nothing until the project has\n\t * loaded); afterwards settleMs applies.\n\t */\n\tasync getDiagnostics(\n\t\tabsolutePath: string,\n\t\tcontent: string,\n\t\tsettleMs: number,\n\t\tfirstSettleMs?: number,\n\t\tsignal?: AbortSignal,\n\t): Promise<LspDiagnostic[]> {\n\t\tawait this.start();\n\t\tconst sinceSeq = this.publishSeq;\n\t\tconst refreshed = await this.refreshStaleDocuments(absolutePath);\n\t\tconst { uri, changed } = await this.syncContent(absolutePath, content);\n\t\tconst key = normalizeUri(uri);\n\n\t\tif (this.supportsPullDiagnostics) {\n\t\t\t// Pull results are request-ordered after the didChange above, so they\n\t\t\t// can never describe stale content. Retry once before falling back:\n\t\t\t// servers may reject a pull (e.g. ContentModified) while recomputing.\n\t\t\tfor (let attempt = 0; attempt < 2; attempt++) {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = (await this.request(\"textDocument/diagnostic\", { textDocument: { uri } }, signal)) as\n\t\t\t\t\t\t| { kind?: string; items?: LspDiagnostic[] }\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tif (result?.kind === \"full\" && Array.isArray(result.items)) {\n\t\t\t\t\t\tthis.everPublished = true;\n\t\t\t\t\t\treturn result.items;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Retry once on an explicit server rejection (e.g. ContentModified\n\t\t\t\t\t// while recomputing): those come back fast, so a retry is cheap.\n\t\t\t\t\t// Timeouts, aborts, and server exits would only double the worst-case\n\t\t\t\t\t// latency, so fall back to published diagnostics immediately.\n\t\t\t\t\tif (!(error instanceof LspResponseError)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Reuse the last publish only when nothing changed at all: unchanged\n\t\t// content cannot republish, but refreshed dependencies can change this\n\t\t// document's diagnostics, so any refresh forces a fresh wait.\n\t\tconst existing = this.published.get(key);\n\t\tif (!changed && refreshed.length === 0 && existing) {\n\t\t\treturn existing.diagnostics;\n\t\t}\n\n\t\tconst timeoutMs = this.everPublished ? settleMs : Math.max(settleMs, firstSettleMs ?? settleMs);\n\t\tconst deadline = Date.now() + timeoutMs;\n\t\tawait this.waitForPublish(key, sinceSeq, timeoutMs, signal);\n\t\tlet entry = this.published.get(key);\n\t\t// An unversioned publish that arrives after our didChange can still have\n\t\t// been computed against the pre-change content (the version field is\n\t\t// optional in LSP, and cross-file invalidation from an earlier edit can\n\t\t// race the sync). When this document's content just changed — or its\n\t\t// dependencies were refreshed, which can equally change its diagnostics —\n\t\t// re-wait once for a fresher publish before trusting an unversioned one.\n\t\t// For servers that tag publishes with versions, an unversioned one is\n\t\t// anomalous and the versioned republish will resolve the wait promptly, so\n\t\t// use the full remaining deadline; for servers that never send versions,\n\t\t// cap the re-wait so every edit does not stall for the whole settle window.\n\t\tif (\n\t\t\t(changed || refreshed.length > 0) &&\n\t\t\tentry !== undefined &&\n\t\t\tentry.seq > sinceSeq &&\n\t\t\tentry.version === undefined\n\t\t) {\n\t\t\tconst remainingMs = this.everPublishedVersioned\n\t\t\t\t? deadline - Date.now()\n\t\t\t\t: Math.min(deadline - Date.now(), UNVERSIONED_REPUBLISH_GRACE_MS);\n\t\t\tif (remainingMs > 0) {\n\t\t\t\tawait this.waitForPublish(key, entry.seq, remainingMs, signal);\n\t\t\t\tentry = this.published.get(key) ?? entry;\n\t\t\t}\n\t\t}\n\t\treturn entry?.diagnostics ?? [];\n\t}\n\n\t/** Sync a document to the server and return its URI. Starts the server if needed. */\n\tasync openDocument(absolutePath: string, content: string): Promise<string> {\n\t\tawait this.start();\n\t\tconst { uri } = await this.syncContent(absolutePath, content);\n\t\treturn uri;\n\t}\n\n\t/**\n\t * Re-sync any open document whose on-disk content changed outside the edit\n\t * and write tools (e.g. via bash). Deleted documents are closed. Servers are\n\t * additionally notified via workspace/didChangeWatchedFiles so they can\n\t * invalidate caches. Returns the absolute paths that were refreshed.\n\t */\n\tasync refreshStaleDocuments(excludePath?: string): Promise<string[]> {\n\t\tif (!this.isAlive) {\n\t\t\treturn [];\n\t\t}\n\t\tconst excludeKey = excludePath ? normalizeUri(pathToFileURL(excludePath).toString()) : undefined;\n\t\tconst refreshed: Array<{ uri: string; type: number; absolutePath: string }> = [];\n\t\tfor (const [key, document] of [...this.documents]) {\n\t\t\tif (key === excludeKey) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet fileStat: { mtimeMs: number; size: number };\n\t\t\ttry {\n\t\t\t\tfileStat = await stat(document.absolutePath);\n\t\t\t} catch {\n\t\t\t\t// File was deleted (or became unreadable): close it on the server.\n\t\t\t\tthis.documents.delete(key);\n\t\t\t\tthis.published.delete(key);\n\t\t\t\tthis.notify(\"textDocument/didClose\", { textDocument: { uri: document.uri } });\n\t\t\t\trefreshed.push({ uri: document.uri, type: FILE_CHANGE_TYPE_DELETED, absolutePath: document.absolutePath });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (fileStat.mtimeMs === document.mtimeMs && fileStat.size === document.size) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet content: string;\n\t\t\ttry {\n\t\t\t\tcontent = await readFile(document.absolutePath, \"utf-8\");\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdocument.mtimeMs = fileStat.mtimeMs;\n\t\t\tdocument.size = fileStat.size;\n\t\t\tif (content === document.content) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdocument.content = content;\n\t\t\tdocument.version++;\n\t\t\tthis.notify(\"textDocument/didChange\", {\n\t\t\t\ttextDocument: { uri: document.uri, version: document.version },\n\t\t\t\tcontentChanges: [{ text: content }],\n\t\t\t});\n\t\t\trefreshed.push({ uri: document.uri, type: FILE_CHANGE_TYPE_CHANGED, absolutePath: document.absolutePath });\n\t\t}\n\t\tif (refreshed.length > 0) {\n\t\t\tthis.notify(\"workspace/didChangeWatchedFiles\", {\n\t\t\t\tchanges: refreshed.map(({ uri, type }) => ({ uri, type })),\n\t\t\t});\n\t\t}\n\t\treturn refreshed.map(({ absolutePath }) => absolutePath);\n\t}\n\n\t/** Send an arbitrary LSP request. Starts the server if needed. */\n\tasync sendRequest(method: string, params: unknown, signal?: AbortSignal): Promise<unknown> {\n\t\tawait this.start();\n\t\treturn this.request(method, params, signal);\n\t}\n\n\t/** Whether the document is currently open (synced) on the server. */\n\tisDocumentOpen(absolutePath: string): boolean {\n\t\treturn this.documents.has(normalizeUri(pathToFileURL(absolutePath).toString()));\n\t}\n\n\t/** Root directory this language server was initialized with. */\n\tget rootDir(): string {\n\t\treturn this.options.rootDir;\n\t}\n\n\t/** Number of documents currently open on the server. */\n\tget openDocumentCount(): number {\n\t\treturn this.documents.size;\n\t}\n\n\t/** Absolute paths of all documents currently open on the server. */\n\tgetOpenDocumentPaths(): string[] {\n\t\treturn [...this.documents.values()].map((document) => document.absolutePath);\n\t}\n\n\t/** Last published diagnostics for a document, if any. */\n\tgetPublishedDiagnostics(absolutePath: string): LspDiagnostic[] {\n\t\treturn this.published.get(normalizeUri(pathToFileURL(absolutePath).toString()))?.diagnostics ?? [];\n\t}\n\n\t/** Notify the server that files changed on disk (e.g. after applying a WorkspaceEdit). */\n\tnotifyFilesChanged(absolutePaths: string[]): void {\n\t\tif (absolutePaths.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.notify(\"workspace/didChangeWatchedFiles\", {\n\t\t\tchanges: absolutePaths.map((path) => ({\n\t\t\t\turi: pathToFileURL(path).toString(),\n\t\t\t\ttype: FILE_CHANGE_TYPE_CHANGED,\n\t\t\t})),\n\t\t});\n\t}\n\n\tdispose(): void {\n\t\tif (this.disposed) {\n\t\t\treturn;\n\t\t}\n\t\tthis.disposed = true;\n\t\tconst child = this.child;\n\t\tthis.handleExit(new Error(`LSP client for \"${this.options.serverName}\" was disposed`));\n\t\tif (!child) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.sendMessage({ jsonrpc: \"2.0\", method: \"exit\" });\n\t\t} catch {\n\t\t\t// Best-effort graceful exit.\n\t\t}\n\t\tconst killTimer = setTimeout(() => killProcessTree(child), 2000);\n\t\tkillTimer.unref();\n\t\tchild.once(\"exit\", () => clearTimeout(killTimer));\n\t\tif (process.platform === \"win32\") {\n\t\t\t// On Windows the server runs under a shell, so child.kill() would only\n\t\t\t// terminate the shell and orphan the actual server process.\n\t\t\tkillProcessTree(child);\n\t\t\tclearTimeout(killTimer);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tchild.kill();\n\t\t} catch {\n\t\t\t// Process is already gone.\n\t\t}\n\t}\n\n\t// =========================================================================\n\t// Document sync and diagnostics collection\n\t// =========================================================================\n\n\t/**\n\t * Sync explicit content for a document (didOpen on first sight, didChange\n\t * after). Returns whether the synced view actually changed.\n\t */\n\tprivate async syncContent(absolutePath: string, content: string): Promise<{ uri: string; changed: boolean }> {\n\t\tconst uri = pathToFileURL(absolutePath).toString();\n\t\tconst key = normalizeUri(uri);\n\t\tconst existing = this.documents.get(key);\n\n\t\tlet mtimeMs: number | undefined;\n\t\tlet size: number | undefined;\n\t\ttry {\n\t\t\tconst fileStat = await stat(absolutePath);\n\t\t\tmtimeMs = fileStat.mtimeMs;\n\t\t\tsize = fileStat.size;\n\t\t} catch {\n\t\t\t// Stat is only a staleness filter; missing files still sync in-memory content.\n\t\t}\n\n\t\tif (!existing) {\n\t\t\tthis.documents.set(key, { uri, absolutePath, version: 1, content, mtimeMs, size });\n\t\t\tthis.notify(\"textDocument/didOpen\", {\n\t\t\t\ttextDocument: {\n\t\t\t\t\turi,\n\t\t\t\t\tlanguageId: languageIdForExtension(extname(absolutePath)),\n\t\t\t\t\tversion: 1,\n\t\t\t\t\ttext: content,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn { uri, changed: true };\n\t\t}\n\n\t\texisting.mtimeMs = mtimeMs;\n\t\texisting.size = size;\n\t\tif (existing.content === content) {\n\t\t\treturn { uri, changed: false };\n\t\t}\n\t\texisting.content = content;\n\t\texisting.version++;\n\t\tthis.notify(\"textDocument/didChange\", {\n\t\t\ttextDocument: { uri, version: existing.version },\n\t\t\tcontentChanges: [{ text: content }],\n\t\t});\n\t\treturn { uri, changed: true };\n\t}\n\n\tprivate waitForPublish(key: string, sinceSeq: number, timeoutMs: number, signal?: AbortSignal): Promise<void> {\n\t\tconst existing = this.published.get(key);\n\t\tif ((existing && existing.seq > sinceSeq) || !this.isAlive || signal?.aborted) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tlet settled = false;\n\t\t\tconst finish = (): void => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tsignal?.removeEventListener(\"abort\", finish);\n\t\t\t\tconst index = this.publishWaiters.indexOf(waiter);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tthis.publishWaiters.splice(index, 1);\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t};\n\t\t\tconst timer = setTimeout(finish, timeoutMs);\n\t\t\ttimer.unref();\n\t\t\tconst waiter: PublishWaiter = { uri: key, sinceSeq, resolve: finish };\n\t\t\tthis.publishWaiters.push(waiter);\n\t\t\tsignal?.addEventListener(\"abort\", finish, { once: true });\n\t\t});\n\t}\n\n\t// =========================================================================\n\t// JSON-RPC transport\n\t// =========================================================================\n\n\tprivate request(method: string, params: unknown, signal?: AbortSignal): Promise<unknown> {\n\t\tif (!this.alive) {\n\t\t\treturn Promise.reject(this.exitError ?? new Error(`LSP server \"${this.options.serverName}\" is not running`));\n\t\t}\n\t\tif (signal?.aborted) {\n\t\t\treturn Promise.reject(new Error(`LSP request \"${method}\" was aborted`));\n\t\t}\n\t\tconst id = this.nextRequestId++;\n\t\tconst timeoutMs = this.options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// Wrap both settle paths so the timer and abort listener are always\n\t\t\t// cleaned up, no matter who settles the request (response, exit,\n\t\t\t// timeout, or abort).\n\t\t\tconst settle = <T>(fn: (value: T) => void): ((value: T) => void) => {\n\t\t\t\treturn (value: T): void => {\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\tfn(value);\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst onAbort = (): void => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\tsettle(reject)(new Error(`LSP request \"${method}\" was aborted`));\n\t\t\t};\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\tsettle(reject)(new Error(`LSP request \"${method}\" timed out after ${timeoutMs}ms`));\n\t\t\t}, timeoutMs);\n\t\t\ttimer.unref();\n\t\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\tthis.pendingRequests.set(id, { resolve: settle(resolve), reject: settle(reject), timer });\n\t\t\tthis.sendMessage({ jsonrpc: \"2.0\", id, method, params });\n\t\t});\n\t}\n\n\tprivate notify(method: string, params: unknown): void {\n\t\tif (!this.alive) {\n\t\t\treturn;\n\t\t}\n\t\tthis.sendMessage({ jsonrpc: \"2.0\", method, params });\n\t}\n\n\tprivate sendMessage(message: JsonRpcMessage): void {\n\t\tconst body = JSON.stringify(message);\n\t\tthis.tracer?.log(this.options.serverName, \"send\", body);\n\t\tconst length = Buffer.byteLength(body, \"utf-8\");\n\t\tthis.child?.stdin?.write(`Content-Length: ${length}\\r\\n\\r\\n${body}`);\n\t}\n\n\tprivate onData(chunk: Buffer): void {\n\t\tthis.readBuffer = Buffer.concat([this.readBuffer, chunk]);\n\t\twhile (true) {\n\t\t\tconst headerEnd = this.readBuffer.indexOf(\"\\r\\n\\r\\n\");\n\t\t\tif (headerEnd === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst header = this.readBuffer.subarray(0, headerEnd).toString(\"ascii\");\n\t\t\tconst lengthMatch = /Content-Length:\\s*(\\d+)/i.exec(header);\n\t\t\tif (!lengthMatch) {\n\t\t\t\t// Malformed header; drop it and resync on the next message boundary.\n\t\t\t\tthis.readBuffer = this.readBuffer.subarray(headerEnd + 4);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst contentLength = Number.parseInt(lengthMatch[1], 10);\n\t\t\tconst messageStart = headerEnd + 4;\n\t\t\tif (this.readBuffer.length < messageStart + contentLength) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst body = this.readBuffer.subarray(messageStart, messageStart + contentLength).toString(\"utf-8\");\n\t\t\tthis.readBuffer = this.readBuffer.subarray(messageStart + contentLength);\n\t\t\tthis.tracer?.log(this.options.serverName, \"recv\", body);\n\t\t\ttry {\n\t\t\t\tthis.onMessage(JSON.parse(body) as JsonRpcMessage);\n\t\t\t} catch {\n\t\t\t\t// Ignore unparseable messages.\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onMessage(message: JsonRpcMessage): void {\n\t\tif (message.id !== undefined && message.method !== undefined) {\n\t\t\tthis.handleServerRequest(message.id, message.method, message.params);\n\t\t\treturn;\n\t\t}\n\t\tif (message.id !== undefined) {\n\t\t\tconst pending = this.pendingRequests.get(Number(message.id));\n\t\t\tif (pending) {\n\t\t\t\tthis.pendingRequests.delete(Number(message.id));\n\t\t\t\tclearTimeout(pending.timer);\n\t\t\t\tif (message.error) {\n\t\t\t\t\tpending.reject(new LspResponseError(message.error.code, message.error.message));\n\t\t\t\t} else {\n\t\t\t\t\tpending.resolve(message.result);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (message.method === \"textDocument/publishDiagnostics\") {\n\t\t\tconst params = message.params as { uri?: string; version?: number; diagnostics?: LspDiagnostic[] } | undefined;\n\t\t\tif (params?.uri) {\n\t\t\t\tconst key = normalizeUri(params.uri);\n\t\t\t\tthis.everPublished = true;\n\t\t\t\tif (params.version !== undefined) {\n\t\t\t\t\tthis.everPublishedVersioned = true;\n\t\t\t\t}\n\t\t\t\t// Ignore publishes computed against an older synced version: they\n\t\t\t\t// would satisfy the settle wait with stale diagnostics.\n\t\t\t\tconst document = this.documents.get(key);\n\t\t\t\tif (params.version !== undefined && document !== undefined && params.version < document.version) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst diagnostics = Array.isArray(params.diagnostics) ? params.diagnostics : [];\n\t\t\t\t// Unversioned publishes can be computed against stale content. Drop\n\t\t\t\t// those whose positions point past the end of the synced content:\n\t\t\t\t// they describe an older snapshot and would otherwise satisfy the\n\t\t\t\t// settle wait (and the cross-file sweep) with stale diagnostics.\n\t\t\t\t// Tolerate line === lineCount: the spec tells clients to clamp\n\t\t\t\t// out-of-range positions, and linters legitimately emit end-of-file\n\t\t\t\t// diagnostics one past the last line (e.g. missing trailing newline).\n\t\t\t\tif (params.version === undefined && document !== undefined && diagnostics.length > 0) {\n\t\t\t\t\tconst lineCount = document.content.split(\"\\n\").length;\n\t\t\t\t\tif (diagnostics.some((diagnostic) => (diagnostic.range?.start?.line ?? 0) > lineCount)) {\n\t\t\t\t\t\tthis.tracer?.log(\n\t\t\t\t\t\t\tthis.options.serverName,\n\t\t\t\t\t\t\t\"info\",\n\t\t\t\t\t\t\t`dropping stale unversioned publish for ${params.uri} (position past end of synced content)`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.publishSeq++;\n\t\t\t\tthis.published.set(key, {\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tseq: this.publishSeq,\n\t\t\t\t\tversion: params.version,\n\t\t\t\t});\n\t\t\t\tfor (const waiter of [...this.publishWaiters]) {\n\t\t\t\t\tif (waiter.uri === key) {\n\t\t\t\t\t\twaiter.resolve();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleServerRequest(id: number | string, method: string, params: unknown): void {\n\t\tif (method === \"workspace/applyEdit\" && this.options.onApplyEdit) {\n\t\t\tconst edit = (params as { edit?: unknown } | undefined)?.edit;\n\t\t\tvoid this.options\n\t\t\t\t.onApplyEdit(edit)\n\t\t\t\t.catch(() => false)\n\t\t\t\t.then((applied) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.sendMessage({ jsonrpc: \"2.0\", id, result: { applied } });\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Server may have exited.\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\t// Respond with sensible empty defaults so servers that depend on client\n\t\t// round-trips (configuration, capability registration) do not stall.\n\t\tlet result: unknown = null;\n\t\tif (method === \"workspace/configuration\") {\n\t\t\tconst items = (params as { items?: Array<{ section?: unknown }> } | undefined)?.items;\n\t\t\tresult = Array.isArray(items)\n\t\t\t\t? items.map((item) => lookupConfigSection(this.options.settings, item?.section))\n\t\t\t\t: [];\n\t\t} else if (method === \"workspace/workspaceFolders\") {\n\t\t\tresult = [{ uri: this.rootUri, name: basename(this.options.rootDir) }];\n\t\t}\n\t\ttry {\n\t\t\tthis.sendMessage({ jsonrpc: \"2.0\", id, result });\n\t\t} catch {\n\t\t\t// Server may have exited.\n\t\t}\n\t}\n\n\tprivate handleExit(error: Error): void {\n\t\tthis.alive = false;\n\t\tthis.exitError = this.exitError ?? error;\n\t\tfor (const [, pending] of this.pendingRequests) {\n\t\t\tclearTimeout(pending.timer);\n\t\t\tpending.reject(this.exitError);\n\t\t}\n\t\tthis.pendingRequests.clear();\n\t\tfor (const waiter of [...this.publishWaiters]) {\n\t\t\twaiter.resolve();\n\t\t}\n\t\tthis.publishWaiters = [];\n\t}\n}\n"]}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * LSP configuration: settings types, built-in server defaults, and resolution.
3
+ *
4
+ * Server definitions are config-driven. Users add or override servers via the
5
+ * `lsp.servers` settings block; built-in defaults cover common languages and
6
+ * are only used when the matching server binary is installed.
7
+ */
8
+ export type LspSeverity = "error" | "warning" | "information" | "hint";
9
+ /** One language server definition. User entries merge over built-in defaults by name. */
10
+ export interface LspServerSettings {
11
+ /** Server launch command, argv-style (e.g. ["typescript-language-server", "--stdio"]) */
12
+ command?: string[];
13
+ /** File extensions routed to this server (e.g. [".ts", ".tsx"]) */
14
+ fileExtensions?: string[];
15
+ /** Files or directories whose presence marks a project root (searched upward from the edited file) */
16
+ rootMarkers?: string[];
17
+ /** LSP initializationOptions passed during the initialize handshake */
18
+ initializationOptions?: unknown;
19
+ /**
20
+ * Server configuration, sent via workspace/didChangeConfiguration after
21
+ * startup and used to answer workspace/configuration requests (section
22
+ * lookups use dot-separated paths into this object).
23
+ */
24
+ settings?: unknown;
25
+ /** Set false to disable a built-in or configured server */
26
+ enabled?: boolean;
27
+ }
28
+ export interface LspSettings {
29
+ /** Enable LSP diagnostics after edit/write. Default: true (set false to disable; --lsp forces enabled per run) */
30
+ enabled?: boolean;
31
+ /** Server definitions, merged over the built-in defaults by name */
32
+ servers?: Record<string, LspServerSettings>;
33
+ /** How long to wait for published diagnostics after a change, in milliseconds. Default: 1500 */
34
+ settleMs?: number;
35
+ /**
36
+ * How long to wait for the first diagnostics from a freshly started server,
37
+ * in milliseconds. Servers like tsserver publish nothing until the project
38
+ * has loaded, so the first collection gets a longer window. Default: 10000
39
+ */
40
+ firstSettleMs?: number;
41
+ /** Maximum diagnostics reported per tool call. Default: 20 */
42
+ maxDiagnostics?: number;
43
+ /** Shut down language servers idle for this long, in milliseconds. 0 disables. Default: 600000 (10 minutes) */
44
+ idleShutdownMs?: number;
45
+ /** Append LSP protocol traffic, server stderr, and lifecycle events to this file (also /lsp trace at runtime) */
46
+ traceFile?: string;
47
+ /** Minimum severity to report. Default: "error" */
48
+ severity?: LspSeverity;
49
+ }
50
+ export interface ResolvedLspServerConfig {
51
+ name: string;
52
+ command: string[];
53
+ fileExtensions: string[];
54
+ rootMarkers: string[];
55
+ initializationOptions?: unknown;
56
+ settings?: unknown;
57
+ /** Trusted automatic install recipe, present only for matching built-in server defaults. */
58
+ installRecipe?: LspInstallRecipe;
59
+ /** Manual install guidance for recognized server binaries. */
60
+ installHint?: string;
61
+ }
62
+ export interface LspInstallRecipe {
63
+ binary: string;
64
+ command: string[];
65
+ displayCommand: string;
66
+ installHint: string;
67
+ }
68
+ export interface ResolvedLspConfig {
69
+ enabled: boolean;
70
+ servers: ResolvedLspServerConfig[];
71
+ settleMs: number;
72
+ firstSettleMs: number;
73
+ maxDiagnostics: number;
74
+ idleShutdownMs: number;
75
+ traceFile?: string;
76
+ /** Numeric LSP DiagnosticSeverity cutoff (1=error .. 4=hint); diagnostics with severity <= this value are reported */
77
+ maxSeverity: number;
78
+ }
79
+ /**
80
+ * Trusted install recipe for a server launch command, or undefined for unknown
81
+ * or manual-install-only binaries. Matches on the binary basename so absolute
82
+ * path commands (e.g. /usr/local/bin/gopls) still get the reviewed recipe for
83
+ * that binary.
84
+ */
85
+ export declare function installRecipeForCommand(command: string[]): LspInstallRecipe | undefined;
86
+ /**
87
+ * Install hint for a server launch command, or undefined for unknown binaries.
88
+ * Matches on the binary basename so absolute-path commands still get a hint.
89
+ */
90
+ export declare function installHintForCommand(command: string[]): string | undefined;
91
+ export declare const SEVERITY_NAMES: Record<number, string>;
92
+ /** Merge user LSP settings over built-in defaults into a resolved config. */
93
+ export declare function resolveLspConfig(settings: LspSettings | undefined): ResolvedLspConfig;
94
+ /** Map a file extension (with leading dot) to an LSP languageId. Falls back to the extension without the dot. */
95
+ export declare function languageIdForExtension(ext: string): string;
96
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;AAEvE,yFAAyF;AACzF,MAAM,WAAW,iBAAiB;IACjC,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sGAAsG;IACtG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,kHAAkH;IAClH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5C,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+GAA+G;IAC/G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iHAAiH;IACjH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sHAAsH;IACtH,WAAW,EAAE,MAAM,CAAC;CACpB;AAuFD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,GAAG,SAAS,CAIvF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAG3E;AASD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAMF,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,iBAAiB,CAwCrF;AAwCD,iHAAiH;AACjH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D","sourcesContent":["/**\n * LSP configuration: settings types, built-in server defaults, and resolution.\n *\n * Server definitions are config-driven. Users add or override servers via the\n * `lsp.servers` settings block; built-in defaults cover common languages and\n * are only used when the matching server binary is installed.\n */\n\nimport { basename } from \"node:path\";\n\nexport type LspSeverity = \"error\" | \"warning\" | \"information\" | \"hint\";\n\n/** One language server definition. User entries merge over built-in defaults by name. */\nexport interface LspServerSettings {\n\t/** Server launch command, argv-style (e.g. [\"typescript-language-server\", \"--stdio\"]) */\n\tcommand?: string[];\n\t/** File extensions routed to this server (e.g. [\".ts\", \".tsx\"]) */\n\tfileExtensions?: string[];\n\t/** Files or directories whose presence marks a project root (searched upward from the edited file) */\n\trootMarkers?: string[];\n\t/** LSP initializationOptions passed during the initialize handshake */\n\tinitializationOptions?: unknown;\n\t/**\n\t * Server configuration, sent via workspace/didChangeConfiguration after\n\t * startup and used to answer workspace/configuration requests (section\n\t * lookups use dot-separated paths into this object).\n\t */\n\tsettings?: unknown;\n\t/** Set false to disable a built-in or configured server */\n\tenabled?: boolean;\n}\n\nexport interface LspSettings {\n\t/** Enable LSP diagnostics after edit/write. Default: true (set false to disable; --lsp forces enabled per run) */\n\tenabled?: boolean;\n\t/** Server definitions, merged over the built-in defaults by name */\n\tservers?: Record<string, LspServerSettings>;\n\t/** How long to wait for published diagnostics after a change, in milliseconds. Default: 1500 */\n\tsettleMs?: number;\n\t/**\n\t * How long to wait for the first diagnostics from a freshly started server,\n\t * in milliseconds. Servers like tsserver publish nothing until the project\n\t * has loaded, so the first collection gets a longer window. Default: 10000\n\t */\n\tfirstSettleMs?: number;\n\t/** Maximum diagnostics reported per tool call. Default: 20 */\n\tmaxDiagnostics?: number;\n\t/** Shut down language servers idle for this long, in milliseconds. 0 disables. Default: 600000 (10 minutes) */\n\tidleShutdownMs?: number;\n\t/** Append LSP protocol traffic, server stderr, and lifecycle events to this file (also /lsp trace at runtime) */\n\ttraceFile?: string;\n\t/** Minimum severity to report. Default: \"error\" */\n\tseverity?: LspSeverity;\n}\n\nexport interface ResolvedLspServerConfig {\n\tname: string;\n\tcommand: string[];\n\tfileExtensions: string[];\n\trootMarkers: string[];\n\tinitializationOptions?: unknown;\n\tsettings?: unknown;\n\t/** Trusted automatic install recipe, present only for matching built-in server defaults. */\n\tinstallRecipe?: LspInstallRecipe;\n\t/** Manual install guidance for recognized server binaries. */\n\tinstallHint?: string;\n}\n\nexport interface LspInstallRecipe {\n\tbinary: string;\n\tcommand: string[];\n\tdisplayCommand: string;\n\tinstallHint: string;\n}\n\nexport interface ResolvedLspConfig {\n\tenabled: boolean;\n\tservers: ResolvedLspServerConfig[];\n\tsettleMs: number;\n\tfirstSettleMs: number;\n\tmaxDiagnostics: number;\n\tidleShutdownMs: number;\n\ttraceFile?: string;\n\t/** Numeric LSP DiagnosticSeverity cutoff (1=error .. 4=hint); diagnostics with severity <= this value are reported */\n\tmaxSeverity: number;\n}\n\nconst DEFAULT_LSP_SERVERS: Record<\n\tstring,\n\tRequired<Pick<LspServerSettings, \"command\" | \"fileExtensions\" | \"rootMarkers\">>\n> = {\n\ttypescript: {\n\t\tcommand: [\"typescript-language-server\", \"--stdio\"],\n\t\tfileExtensions: [\".ts\", \".tsx\", \".mts\", \".cts\", \".js\", \".jsx\", \".mjs\", \".cjs\"],\n\t\trootMarkers: [\"tsconfig.json\", \"jsconfig.json\", \"package.json\"],\n\t},\n\tpython: {\n\t\tcommand: [\"pyright-langserver\", \"--stdio\"],\n\t\tfileExtensions: [\".py\", \".pyi\"],\n\t\trootMarkers: [\"pyrightconfig.json\", \"pyproject.toml\", \"setup.py\", \"requirements.txt\"],\n\t},\n\tgo: {\n\t\tcommand: [\"gopls\"],\n\t\tfileExtensions: [\".go\"],\n\t\trootMarkers: [\"go.mod\", \"go.work\"],\n\t},\n\trust: {\n\t\tcommand: [\"rust-analyzer\"],\n\t\tfileExtensions: [\".rs\"],\n\t\trootMarkers: [\"Cargo.toml\"],\n\t},\n\tcpp: {\n\t\tcommand: [\"clangd\"],\n\t\tfileExtensions: [\".c\", \".h\", \".cpp\", \".cc\", \".cxx\", \".hpp\", \".hh\"],\n\t\trootMarkers: [\"compile_commands.json\", \"compile_flags.txt\", \".clangd\"],\n\t},\n\tzig: {\n\t\tcommand: [\"zls\"],\n\t\tfileExtensions: [\".zig\"],\n\t\trootMarkers: [\"build.zig\"],\n\t},\n\tlua: {\n\t\tcommand: [\"lua-language-server\"],\n\t\tfileExtensions: [\".lua\"],\n\t\trootMarkers: [\".luarc.json\", \".luarc.jsonc\"],\n\t},\n\tbash: {\n\t\tcommand: [\"bash-language-server\", \"start\"],\n\t\tfileExtensions: [\".sh\", \".bash\"],\n\t\trootMarkers: [],\n\t},\n};\n\n/**\n * Trusted install recipes keyed by server binary (argv[0]). These are host-owned\n * commands for built-in server binaries. Resolution attaches them only to\n * matching built-in server entries, not arbitrary custom server definitions.\n */\nconst INSTALL_RECIPES: Record<string, Omit<LspInstallRecipe, \"binary\">> = {\n\t\"typescript-language-server\": {\n\t\tcommand: [\"npm\", \"install\", \"-g\", \"typescript-language-server\", \"typescript\"],\n\t\tdisplayCommand: \"npm install -g typescript-language-server typescript\",\n\t\tinstallHint: \"Install with: npm install -g typescript-language-server typescript\",\n\t},\n\t\"pyright-langserver\": {\n\t\tcommand: [\"npm\", \"install\", \"-g\", \"pyright\"],\n\t\tdisplayCommand: \"npm install -g pyright\",\n\t\tinstallHint: \"Install with: npm install -g pyright\",\n\t},\n\tgopls: {\n\t\tcommand: [\"go\", \"install\", \"golang.org/x/tools/gopls@latest\"],\n\t\tdisplayCommand: \"go install golang.org/x/tools/gopls@latest\",\n\t\tinstallHint: \"Install with: go install golang.org/x/tools/gopls@latest\",\n\t},\n\t\"rust-analyzer\": {\n\t\tcommand: [\"rustup\", \"component\", \"add\", \"rust-analyzer\"],\n\t\tdisplayCommand: \"rustup component add rust-analyzer\",\n\t\tinstallHint: \"Install with: rustup component add rust-analyzer\",\n\t},\n\t\"bash-language-server\": {\n\t\tcommand: [\"npm\", \"install\", \"-g\", \"bash-language-server\"],\n\t\tdisplayCommand: \"npm install -g bash-language-server\",\n\t\tinstallHint: \"Install with: npm install -g bash-language-server\",\n\t},\n};\n\nconst MANUAL_INSTALL_HINTS: Record<string, string> = {\n\tclangd: \"Install instructions: https://clangd.llvm.org/installation\",\n\tzls: \"Install instructions: https://github.com/zigtools/zls\",\n\t\"lua-language-server\": \"Install instructions: https://luals.github.io/#install\",\n};\n\n/**\n * Trusted install recipe for a server launch command, or undefined for unknown\n * or manual-install-only binaries. Matches on the binary basename so absolute\n * path commands (e.g. /usr/local/bin/gopls) still get the reviewed recipe for\n * that binary.\n */\nexport function installRecipeForCommand(command: string[]): LspInstallRecipe | undefined {\n\tconst binary = basename(command[0] ?? \"\");\n\tconst recipe = INSTALL_RECIPES[binary];\n\treturn recipe ? { binary, ...recipe } : undefined;\n}\n\n/**\n * Install hint for a server launch command, or undefined for unknown binaries.\n * Matches on the binary basename so absolute-path commands still get a hint.\n */\nexport function installHintForCommand(command: string[]): string | undefined {\n\tconst binary = basename(command[0] ?? \"\");\n\treturn INSTALL_RECIPES[binary]?.installHint ?? MANUAL_INSTALL_HINTS[binary];\n}\n\nconst SEVERITY_TO_NUMBER: Record<LspSeverity, number> = {\n\terror: 1,\n\twarning: 2,\n\tinformation: 3,\n\thint: 4,\n};\n\nexport const SEVERITY_NAMES: Record<number, string> = {\n\t1: \"error\",\n\t2: \"warning\",\n\t3: \"info\",\n\t4: \"hint\",\n};\n\nfunction normalizeExtension(ext: string): string {\n\treturn (ext.startsWith(\".\") ? ext : `.${ext}`).toLowerCase();\n}\n\n/** Merge user LSP settings over built-in defaults into a resolved config. */\nexport function resolveLspConfig(settings: LspSettings | undefined): ResolvedLspConfig {\n\tconst names = new Set([...Object.keys(DEFAULT_LSP_SERVERS), ...Object.keys(settings?.servers ?? {})]);\n\tconst servers: ResolvedLspServerConfig[] = [];\n\tfor (const name of names) {\n\t\tconst defaults = DEFAULT_LSP_SERVERS[name] as (typeof DEFAULT_LSP_SERVERS)[string] | undefined;\n\t\tconst overrides = settings?.servers?.[name];\n\t\tif (overrides?.enabled === false) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst command = overrides?.command ?? defaults?.command;\n\t\tconst fileExtensions = overrides?.fileExtensions ?? defaults?.fileExtensions;\n\t\tif (!command || command.length === 0 || !fileExtensions || fileExtensions.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst commandBinary = basename(command[0] ?? \"\");\n\t\tconst builtInBinary = defaults ? basename(defaults.command[0] ?? \"\") : undefined;\n\t\tconst usesBuiltInBinary = builtInBinary !== undefined && commandBinary === builtInBinary;\n\t\tconst installRecipe = usesBuiltInBinary ? installRecipeForCommand(command) : undefined;\n\t\tconst installHint = installHintForCommand(command);\n\t\tservers.push({\n\t\t\tname,\n\t\t\tcommand: [...command],\n\t\t\tfileExtensions: fileExtensions.map(normalizeExtension),\n\t\t\trootMarkers: [...(overrides?.rootMarkers ?? defaults?.rootMarkers ?? [])],\n\t\t\tinitializationOptions: overrides?.initializationOptions,\n\t\t\tsettings: overrides?.settings,\n\t\t\t...(installRecipe ? { installRecipe } : {}),\n\t\t\t...(installHint ? { installHint } : {}),\n\t\t});\n\t}\n\treturn {\n\t\tenabled: settings?.enabled ?? true,\n\t\tservers,\n\t\tsettleMs: settings?.settleMs ?? 1500,\n\t\tfirstSettleMs: settings?.firstSettleMs ?? 10000,\n\t\tmaxDiagnostics: settings?.maxDiagnostics ?? 20,\n\t\tidleShutdownMs: settings?.idleShutdownMs ?? 600000,\n\t\ttraceFile: settings?.traceFile,\n\t\tmaxSeverity: SEVERITY_TO_NUMBER[settings?.severity ?? \"error\"],\n\t};\n}\n\nconst LANGUAGE_IDS: Record<string, string> = {\n\t\".ts\": \"typescript\",\n\t\".mts\": \"typescript\",\n\t\".cts\": \"typescript\",\n\t\".tsx\": \"typescriptreact\",\n\t\".js\": \"javascript\",\n\t\".mjs\": \"javascript\",\n\t\".cjs\": \"javascript\",\n\t\".jsx\": \"javascriptreact\",\n\t\".py\": \"python\",\n\t\".pyi\": \"python\",\n\t\".go\": \"go\",\n\t\".rs\": \"rust\",\n\t\".c\": \"c\",\n\t\".h\": \"c\",\n\t\".cpp\": \"cpp\",\n\t\".cc\": \"cpp\",\n\t\".cxx\": \"cpp\",\n\t\".hpp\": \"cpp\",\n\t\".hh\": \"cpp\",\n\t\".java\": \"java\",\n\t\".rb\": \"ruby\",\n\t\".php\": \"php\",\n\t\".cs\": \"csharp\",\n\t\".json\": \"json\",\n\t\".css\": \"css\",\n\t\".html\": \"html\",\n\t\".md\": \"markdown\",\n\t\".yaml\": \"yaml\",\n\t\".yml\": \"yaml\",\n\t\".sh\": \"shellscript\",\n\t\".bash\": \"shellscript\",\n\t\".lua\": \"lua\",\n\t\".zig\": \"zig\",\n\t\".swift\": \"swift\",\n\t\".kt\": \"kotlin\",\n};\n\n/** Map a file extension (with leading dot) to an LSP languageId. Falls back to the extension without the dot. */\nexport function languageIdForExtension(ext: string): string {\n\tconst normalized = ext.toLowerCase();\n\treturn LANGUAGE_IDS[normalized] ?? (normalized.startsWith(\".\") ? normalized.slice(1) : normalized);\n}\n"]}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * LSP configuration: settings types, built-in server defaults, and resolution.
3
+ *
4
+ * Server definitions are config-driven. Users add or override servers via the
5
+ * `lsp.servers` settings block; built-in defaults cover common languages and
6
+ * are only used when the matching server binary is installed.
7
+ */
8
+ import { basename } from "node:path";
9
+ const DEFAULT_LSP_SERVERS = {
10
+ typescript: {
11
+ command: ["typescript-language-server", "--stdio"],
12
+ fileExtensions: [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"],
13
+ rootMarkers: ["tsconfig.json", "jsconfig.json", "package.json"],
14
+ },
15
+ python: {
16
+ command: ["pyright-langserver", "--stdio"],
17
+ fileExtensions: [".py", ".pyi"],
18
+ rootMarkers: ["pyrightconfig.json", "pyproject.toml", "setup.py", "requirements.txt"],
19
+ },
20
+ go: {
21
+ command: ["gopls"],
22
+ fileExtensions: [".go"],
23
+ rootMarkers: ["go.mod", "go.work"],
24
+ },
25
+ rust: {
26
+ command: ["rust-analyzer"],
27
+ fileExtensions: [".rs"],
28
+ rootMarkers: ["Cargo.toml"],
29
+ },
30
+ cpp: {
31
+ command: ["clangd"],
32
+ fileExtensions: [".c", ".h", ".cpp", ".cc", ".cxx", ".hpp", ".hh"],
33
+ rootMarkers: ["compile_commands.json", "compile_flags.txt", ".clangd"],
34
+ },
35
+ zig: {
36
+ command: ["zls"],
37
+ fileExtensions: [".zig"],
38
+ rootMarkers: ["build.zig"],
39
+ },
40
+ lua: {
41
+ command: ["lua-language-server"],
42
+ fileExtensions: [".lua"],
43
+ rootMarkers: [".luarc.json", ".luarc.jsonc"],
44
+ },
45
+ bash: {
46
+ command: ["bash-language-server", "start"],
47
+ fileExtensions: [".sh", ".bash"],
48
+ rootMarkers: [],
49
+ },
50
+ };
51
+ /**
52
+ * Trusted install recipes keyed by server binary (argv[0]). These are host-owned
53
+ * commands for built-in server binaries. Resolution attaches them only to
54
+ * matching built-in server entries, not arbitrary custom server definitions.
55
+ */
56
+ const INSTALL_RECIPES = {
57
+ "typescript-language-server": {
58
+ command: ["npm", "install", "-g", "typescript-language-server", "typescript"],
59
+ displayCommand: "npm install -g typescript-language-server typescript",
60
+ installHint: "Install with: npm install -g typescript-language-server typescript",
61
+ },
62
+ "pyright-langserver": {
63
+ command: ["npm", "install", "-g", "pyright"],
64
+ displayCommand: "npm install -g pyright",
65
+ installHint: "Install with: npm install -g pyright",
66
+ },
67
+ gopls: {
68
+ command: ["go", "install", "golang.org/x/tools/gopls@latest"],
69
+ displayCommand: "go install golang.org/x/tools/gopls@latest",
70
+ installHint: "Install with: go install golang.org/x/tools/gopls@latest",
71
+ },
72
+ "rust-analyzer": {
73
+ command: ["rustup", "component", "add", "rust-analyzer"],
74
+ displayCommand: "rustup component add rust-analyzer",
75
+ installHint: "Install with: rustup component add rust-analyzer",
76
+ },
77
+ "bash-language-server": {
78
+ command: ["npm", "install", "-g", "bash-language-server"],
79
+ displayCommand: "npm install -g bash-language-server",
80
+ installHint: "Install with: npm install -g bash-language-server",
81
+ },
82
+ };
83
+ const MANUAL_INSTALL_HINTS = {
84
+ clangd: "Install instructions: https://clangd.llvm.org/installation",
85
+ zls: "Install instructions: https://github.com/zigtools/zls",
86
+ "lua-language-server": "Install instructions: https://luals.github.io/#install",
87
+ };
88
+ /**
89
+ * Trusted install recipe for a server launch command, or undefined for unknown
90
+ * or manual-install-only binaries. Matches on the binary basename so absolute
91
+ * path commands (e.g. /usr/local/bin/gopls) still get the reviewed recipe for
92
+ * that binary.
93
+ */
94
+ export function installRecipeForCommand(command) {
95
+ const binary = basename(command[0] ?? "");
96
+ const recipe = INSTALL_RECIPES[binary];
97
+ return recipe ? { binary, ...recipe } : undefined;
98
+ }
99
+ /**
100
+ * Install hint for a server launch command, or undefined for unknown binaries.
101
+ * Matches on the binary basename so absolute-path commands still get a hint.
102
+ */
103
+ export function installHintForCommand(command) {
104
+ const binary = basename(command[0] ?? "");
105
+ return INSTALL_RECIPES[binary]?.installHint ?? MANUAL_INSTALL_HINTS[binary];
106
+ }
107
+ const SEVERITY_TO_NUMBER = {
108
+ error: 1,
109
+ warning: 2,
110
+ information: 3,
111
+ hint: 4,
112
+ };
113
+ export const SEVERITY_NAMES = {
114
+ 1: "error",
115
+ 2: "warning",
116
+ 3: "info",
117
+ 4: "hint",
118
+ };
119
+ function normalizeExtension(ext) {
120
+ return (ext.startsWith(".") ? ext : `.${ext}`).toLowerCase();
121
+ }
122
+ /** Merge user LSP settings over built-in defaults into a resolved config. */
123
+ export function resolveLspConfig(settings) {
124
+ const names = new Set([...Object.keys(DEFAULT_LSP_SERVERS), ...Object.keys(settings?.servers ?? {})]);
125
+ const servers = [];
126
+ for (const name of names) {
127
+ const defaults = DEFAULT_LSP_SERVERS[name];
128
+ const overrides = settings?.servers?.[name];
129
+ if (overrides?.enabled === false) {
130
+ continue;
131
+ }
132
+ const command = overrides?.command ?? defaults?.command;
133
+ const fileExtensions = overrides?.fileExtensions ?? defaults?.fileExtensions;
134
+ if (!command || command.length === 0 || !fileExtensions || fileExtensions.length === 0) {
135
+ continue;
136
+ }
137
+ const commandBinary = basename(command[0] ?? "");
138
+ const builtInBinary = defaults ? basename(defaults.command[0] ?? "") : undefined;
139
+ const usesBuiltInBinary = builtInBinary !== undefined && commandBinary === builtInBinary;
140
+ const installRecipe = usesBuiltInBinary ? installRecipeForCommand(command) : undefined;
141
+ const installHint = installHintForCommand(command);
142
+ servers.push({
143
+ name,
144
+ command: [...command],
145
+ fileExtensions: fileExtensions.map(normalizeExtension),
146
+ rootMarkers: [...(overrides?.rootMarkers ?? defaults?.rootMarkers ?? [])],
147
+ initializationOptions: overrides?.initializationOptions,
148
+ settings: overrides?.settings,
149
+ ...(installRecipe ? { installRecipe } : {}),
150
+ ...(installHint ? { installHint } : {}),
151
+ });
152
+ }
153
+ return {
154
+ enabled: settings?.enabled ?? true,
155
+ servers,
156
+ settleMs: settings?.settleMs ?? 1500,
157
+ firstSettleMs: settings?.firstSettleMs ?? 10000,
158
+ maxDiagnostics: settings?.maxDiagnostics ?? 20,
159
+ idleShutdownMs: settings?.idleShutdownMs ?? 600000,
160
+ traceFile: settings?.traceFile,
161
+ maxSeverity: SEVERITY_TO_NUMBER[settings?.severity ?? "error"],
162
+ };
163
+ }
164
+ const LANGUAGE_IDS = {
165
+ ".ts": "typescript",
166
+ ".mts": "typescript",
167
+ ".cts": "typescript",
168
+ ".tsx": "typescriptreact",
169
+ ".js": "javascript",
170
+ ".mjs": "javascript",
171
+ ".cjs": "javascript",
172
+ ".jsx": "javascriptreact",
173
+ ".py": "python",
174
+ ".pyi": "python",
175
+ ".go": "go",
176
+ ".rs": "rust",
177
+ ".c": "c",
178
+ ".h": "c",
179
+ ".cpp": "cpp",
180
+ ".cc": "cpp",
181
+ ".cxx": "cpp",
182
+ ".hpp": "cpp",
183
+ ".hh": "cpp",
184
+ ".java": "java",
185
+ ".rb": "ruby",
186
+ ".php": "php",
187
+ ".cs": "csharp",
188
+ ".json": "json",
189
+ ".css": "css",
190
+ ".html": "html",
191
+ ".md": "markdown",
192
+ ".yaml": "yaml",
193
+ ".yml": "yaml",
194
+ ".sh": "shellscript",
195
+ ".bash": "shellscript",
196
+ ".lua": "lua",
197
+ ".zig": "zig",
198
+ ".swift": "swift",
199
+ ".kt": "kotlin",
200
+ };
201
+ /** Map a file extension (with leading dot) to an LSP languageId. Falls back to the extension without the dot. */
202
+ export function languageIdForExtension(ext) {
203
+ const normalized = ext.toLowerCase();
204
+ return LANGUAGE_IDS[normalized] ?? (normalized.startsWith(".") ? normalized.slice(1) : normalized);
205
+ }
206
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/lsp/config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * LSP configuration: settings types, built-in server defaults, and resolution.\n *\n * Server definitions are config-driven. Users add or override servers via the\n * `lsp.servers` settings block; built-in defaults cover common languages and\n * are only used when the matching server binary is installed.\n */\n\nimport { basename } from \"node:path\";\n\nexport type LspSeverity = \"error\" | \"warning\" | \"information\" | \"hint\";\n\n/** One language server definition. User entries merge over built-in defaults by name. */\nexport interface LspServerSettings {\n\t/** Server launch command, argv-style (e.g. [\"typescript-language-server\", \"--stdio\"]) */\n\tcommand?: string[];\n\t/** File extensions routed to this server (e.g. [\".ts\", \".tsx\"]) */\n\tfileExtensions?: string[];\n\t/** Files or directories whose presence marks a project root (searched upward from the edited file) */\n\trootMarkers?: string[];\n\t/** LSP initializationOptions passed during the initialize handshake */\n\tinitializationOptions?: unknown;\n\t/**\n\t * Server configuration, sent via workspace/didChangeConfiguration after\n\t * startup and used to answer workspace/configuration requests (section\n\t * lookups use dot-separated paths into this object).\n\t */\n\tsettings?: unknown;\n\t/** Set false to disable a built-in or configured server */\n\tenabled?: boolean;\n}\n\nexport interface LspSettings {\n\t/** Enable LSP diagnostics after edit/write. Default: true (set false to disable; --lsp forces enabled per run) */\n\tenabled?: boolean;\n\t/** Server definitions, merged over the built-in defaults by name */\n\tservers?: Record<string, LspServerSettings>;\n\t/** How long to wait for published diagnostics after a change, in milliseconds. Default: 1500 */\n\tsettleMs?: number;\n\t/**\n\t * How long to wait for the first diagnostics from a freshly started server,\n\t * in milliseconds. Servers like tsserver publish nothing until the project\n\t * has loaded, so the first collection gets a longer window. Default: 10000\n\t */\n\tfirstSettleMs?: number;\n\t/** Maximum diagnostics reported per tool call. Default: 20 */\n\tmaxDiagnostics?: number;\n\t/** Shut down language servers idle for this long, in milliseconds. 0 disables. Default: 600000 (10 minutes) */\n\tidleShutdownMs?: number;\n\t/** Append LSP protocol traffic, server stderr, and lifecycle events to this file (also /lsp trace at runtime) */\n\ttraceFile?: string;\n\t/** Minimum severity to report. Default: \"error\" */\n\tseverity?: LspSeverity;\n}\n\nexport interface ResolvedLspServerConfig {\n\tname: string;\n\tcommand: string[];\n\tfileExtensions: string[];\n\trootMarkers: string[];\n\tinitializationOptions?: unknown;\n\tsettings?: unknown;\n\t/** Trusted automatic install recipe, present only for matching built-in server defaults. */\n\tinstallRecipe?: LspInstallRecipe;\n\t/** Manual install guidance for recognized server binaries. */\n\tinstallHint?: string;\n}\n\nexport interface LspInstallRecipe {\n\tbinary: string;\n\tcommand: string[];\n\tdisplayCommand: string;\n\tinstallHint: string;\n}\n\nexport interface ResolvedLspConfig {\n\tenabled: boolean;\n\tservers: ResolvedLspServerConfig[];\n\tsettleMs: number;\n\tfirstSettleMs: number;\n\tmaxDiagnostics: number;\n\tidleShutdownMs: number;\n\ttraceFile?: string;\n\t/** Numeric LSP DiagnosticSeverity cutoff (1=error .. 4=hint); diagnostics with severity <= this value are reported */\n\tmaxSeverity: number;\n}\n\nconst DEFAULT_LSP_SERVERS: Record<\n\tstring,\n\tRequired<Pick<LspServerSettings, \"command\" | \"fileExtensions\" | \"rootMarkers\">>\n> = {\n\ttypescript: {\n\t\tcommand: [\"typescript-language-server\", \"--stdio\"],\n\t\tfileExtensions: [\".ts\", \".tsx\", \".mts\", \".cts\", \".js\", \".jsx\", \".mjs\", \".cjs\"],\n\t\trootMarkers: [\"tsconfig.json\", \"jsconfig.json\", \"package.json\"],\n\t},\n\tpython: {\n\t\tcommand: [\"pyright-langserver\", \"--stdio\"],\n\t\tfileExtensions: [\".py\", \".pyi\"],\n\t\trootMarkers: [\"pyrightconfig.json\", \"pyproject.toml\", \"setup.py\", \"requirements.txt\"],\n\t},\n\tgo: {\n\t\tcommand: [\"gopls\"],\n\t\tfileExtensions: [\".go\"],\n\t\trootMarkers: [\"go.mod\", \"go.work\"],\n\t},\n\trust: {\n\t\tcommand: [\"rust-analyzer\"],\n\t\tfileExtensions: [\".rs\"],\n\t\trootMarkers: [\"Cargo.toml\"],\n\t},\n\tcpp: {\n\t\tcommand: [\"clangd\"],\n\t\tfileExtensions: [\".c\", \".h\", \".cpp\", \".cc\", \".cxx\", \".hpp\", \".hh\"],\n\t\trootMarkers: [\"compile_commands.json\", \"compile_flags.txt\", \".clangd\"],\n\t},\n\tzig: {\n\t\tcommand: [\"zls\"],\n\t\tfileExtensions: [\".zig\"],\n\t\trootMarkers: [\"build.zig\"],\n\t},\n\tlua: {\n\t\tcommand: [\"lua-language-server\"],\n\t\tfileExtensions: [\".lua\"],\n\t\trootMarkers: [\".luarc.json\", \".luarc.jsonc\"],\n\t},\n\tbash: {\n\t\tcommand: [\"bash-language-server\", \"start\"],\n\t\tfileExtensions: [\".sh\", \".bash\"],\n\t\trootMarkers: [],\n\t},\n};\n\n/**\n * Trusted install recipes keyed by server binary (argv[0]). These are host-owned\n * commands for built-in server binaries. Resolution attaches them only to\n * matching built-in server entries, not arbitrary custom server definitions.\n */\nconst INSTALL_RECIPES: Record<string, Omit<LspInstallRecipe, \"binary\">> = {\n\t\"typescript-language-server\": {\n\t\tcommand: [\"npm\", \"install\", \"-g\", \"typescript-language-server\", \"typescript\"],\n\t\tdisplayCommand: \"npm install -g typescript-language-server typescript\",\n\t\tinstallHint: \"Install with: npm install -g typescript-language-server typescript\",\n\t},\n\t\"pyright-langserver\": {\n\t\tcommand: [\"npm\", \"install\", \"-g\", \"pyright\"],\n\t\tdisplayCommand: \"npm install -g pyright\",\n\t\tinstallHint: \"Install with: npm install -g pyright\",\n\t},\n\tgopls: {\n\t\tcommand: [\"go\", \"install\", \"golang.org/x/tools/gopls@latest\"],\n\t\tdisplayCommand: \"go install golang.org/x/tools/gopls@latest\",\n\t\tinstallHint: \"Install with: go install golang.org/x/tools/gopls@latest\",\n\t},\n\t\"rust-analyzer\": {\n\t\tcommand: [\"rustup\", \"component\", \"add\", \"rust-analyzer\"],\n\t\tdisplayCommand: \"rustup component add rust-analyzer\",\n\t\tinstallHint: \"Install with: rustup component add rust-analyzer\",\n\t},\n\t\"bash-language-server\": {\n\t\tcommand: [\"npm\", \"install\", \"-g\", \"bash-language-server\"],\n\t\tdisplayCommand: \"npm install -g bash-language-server\",\n\t\tinstallHint: \"Install with: npm install -g bash-language-server\",\n\t},\n};\n\nconst MANUAL_INSTALL_HINTS: Record<string, string> = {\n\tclangd: \"Install instructions: https://clangd.llvm.org/installation\",\n\tzls: \"Install instructions: https://github.com/zigtools/zls\",\n\t\"lua-language-server\": \"Install instructions: https://luals.github.io/#install\",\n};\n\n/**\n * Trusted install recipe for a server launch command, or undefined for unknown\n * or manual-install-only binaries. Matches on the binary basename so absolute\n * path commands (e.g. /usr/local/bin/gopls) still get the reviewed recipe for\n * that binary.\n */\nexport function installRecipeForCommand(command: string[]): LspInstallRecipe | undefined {\n\tconst binary = basename(command[0] ?? \"\");\n\tconst recipe = INSTALL_RECIPES[binary];\n\treturn recipe ? { binary, ...recipe } : undefined;\n}\n\n/**\n * Install hint for a server launch command, or undefined for unknown binaries.\n * Matches on the binary basename so absolute-path commands still get a hint.\n */\nexport function installHintForCommand(command: string[]): string | undefined {\n\tconst binary = basename(command[0] ?? \"\");\n\treturn INSTALL_RECIPES[binary]?.installHint ?? MANUAL_INSTALL_HINTS[binary];\n}\n\nconst SEVERITY_TO_NUMBER: Record<LspSeverity, number> = {\n\terror: 1,\n\twarning: 2,\n\tinformation: 3,\n\thint: 4,\n};\n\nexport const SEVERITY_NAMES: Record<number, string> = {\n\t1: \"error\",\n\t2: \"warning\",\n\t3: \"info\",\n\t4: \"hint\",\n};\n\nfunction normalizeExtension(ext: string): string {\n\treturn (ext.startsWith(\".\") ? ext : `.${ext}`).toLowerCase();\n}\n\n/** Merge user LSP settings over built-in defaults into a resolved config. */\nexport function resolveLspConfig(settings: LspSettings | undefined): ResolvedLspConfig {\n\tconst names = new Set([...Object.keys(DEFAULT_LSP_SERVERS), ...Object.keys(settings?.servers ?? {})]);\n\tconst servers: ResolvedLspServerConfig[] = [];\n\tfor (const name of names) {\n\t\tconst defaults = DEFAULT_LSP_SERVERS[name] as (typeof DEFAULT_LSP_SERVERS)[string] | undefined;\n\t\tconst overrides = settings?.servers?.[name];\n\t\tif (overrides?.enabled === false) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst command = overrides?.command ?? defaults?.command;\n\t\tconst fileExtensions = overrides?.fileExtensions ?? defaults?.fileExtensions;\n\t\tif (!command || command.length === 0 || !fileExtensions || fileExtensions.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst commandBinary = basename(command[0] ?? \"\");\n\t\tconst builtInBinary = defaults ? basename(defaults.command[0] ?? \"\") : undefined;\n\t\tconst usesBuiltInBinary = builtInBinary !== undefined && commandBinary === builtInBinary;\n\t\tconst installRecipe = usesBuiltInBinary ? installRecipeForCommand(command) : undefined;\n\t\tconst installHint = installHintForCommand(command);\n\t\tservers.push({\n\t\t\tname,\n\t\t\tcommand: [...command],\n\t\t\tfileExtensions: fileExtensions.map(normalizeExtension),\n\t\t\trootMarkers: [...(overrides?.rootMarkers ?? defaults?.rootMarkers ?? [])],\n\t\t\tinitializationOptions: overrides?.initializationOptions,\n\t\t\tsettings: overrides?.settings,\n\t\t\t...(installRecipe ? { installRecipe } : {}),\n\t\t\t...(installHint ? { installHint } : {}),\n\t\t});\n\t}\n\treturn {\n\t\tenabled: settings?.enabled ?? true,\n\t\tservers,\n\t\tsettleMs: settings?.settleMs ?? 1500,\n\t\tfirstSettleMs: settings?.firstSettleMs ?? 10000,\n\t\tmaxDiagnostics: settings?.maxDiagnostics ?? 20,\n\t\tidleShutdownMs: settings?.idleShutdownMs ?? 600000,\n\t\ttraceFile: settings?.traceFile,\n\t\tmaxSeverity: SEVERITY_TO_NUMBER[settings?.severity ?? \"error\"],\n\t};\n}\n\nconst LANGUAGE_IDS: Record<string, string> = {\n\t\".ts\": \"typescript\",\n\t\".mts\": \"typescript\",\n\t\".cts\": \"typescript\",\n\t\".tsx\": \"typescriptreact\",\n\t\".js\": \"javascript\",\n\t\".mjs\": \"javascript\",\n\t\".cjs\": \"javascript\",\n\t\".jsx\": \"javascriptreact\",\n\t\".py\": \"python\",\n\t\".pyi\": \"python\",\n\t\".go\": \"go\",\n\t\".rs\": \"rust\",\n\t\".c\": \"c\",\n\t\".h\": \"c\",\n\t\".cpp\": \"cpp\",\n\t\".cc\": \"cpp\",\n\t\".cxx\": \"cpp\",\n\t\".hpp\": \"cpp\",\n\t\".hh\": \"cpp\",\n\t\".java\": \"java\",\n\t\".rb\": \"ruby\",\n\t\".php\": \"php\",\n\t\".cs\": \"csharp\",\n\t\".json\": \"json\",\n\t\".css\": \"css\",\n\t\".html\": \"html\",\n\t\".md\": \"markdown\",\n\t\".yaml\": \"yaml\",\n\t\".yml\": \"yaml\",\n\t\".sh\": \"shellscript\",\n\t\".bash\": \"shellscript\",\n\t\".lua\": \"lua\",\n\t\".zig\": \"zig\",\n\t\".swift\": \"swift\",\n\t\".kt\": \"kotlin\",\n};\n\n/** Map a file extension (with leading dot) to an LSP languageId. Falls back to the extension without the dot. */\nexport function languageIdForExtension(ext: string): string {\n\tconst normalized = ext.toLowerCase();\n\treturn LANGUAGE_IDS[normalized] ?? (normalized.startsWith(\".\") ? normalized.slice(1) : normalized);\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export { LspClient, type LspClientOptions, type LspDiagnostic } from "./client.ts";
2
+ export { installHintForCommand, installRecipeForCommand, type LspInstallRecipe, type LspServerSettings, type LspSettings, type LspSeverity, languageIdForExtension, type ResolvedLspConfig, type ResolvedLspServerConfig, resolveLspConfig, } from "./config.ts";
3
+ export { type LspInstallCommandOptions, type LspInstallCommandResult, type LspInstallRunner, LspManager, type LspManagerOptions, type LspServerStatus, runDefaultLspInstallCommand, } from "./manager.ts";
4
+ export { type LspTraceDirection, LspTracer } from "./trace.ts";
5
+ export { applyTextEdits, type LspTextEdit, type LspWorkspaceEdit, type NormalizedWorkspaceOperation, normalizeWorkspaceEdit, } from "./workspace-edit.ts";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,gBAAgB,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,2BAA2B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EACN,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,sBAAsB,GACtB,MAAM,qBAAqB,CAAC","sourcesContent":["export { LspClient, type LspClientOptions, type LspDiagnostic } from \"./client.ts\";\nexport {\n\tinstallHintForCommand,\n\tinstallRecipeForCommand,\n\ttype LspInstallRecipe,\n\ttype LspServerSettings,\n\ttype LspSettings,\n\ttype LspSeverity,\n\tlanguageIdForExtension,\n\ttype ResolvedLspConfig,\n\ttype ResolvedLspServerConfig,\n\tresolveLspConfig,\n} from \"./config.ts\";\nexport {\n\ttype LspInstallCommandOptions,\n\ttype LspInstallCommandResult,\n\ttype LspInstallRunner,\n\tLspManager,\n\ttype LspManagerOptions,\n\ttype LspServerStatus,\n\trunDefaultLspInstallCommand,\n} from \"./manager.ts\";\nexport { type LspTraceDirection, LspTracer } from \"./trace.ts\";\nexport {\n\tapplyTextEdits,\n\ttype LspTextEdit,\n\ttype LspWorkspaceEdit,\n\ttype NormalizedWorkspaceOperation,\n\tnormalizeWorkspaceEdit,\n} from \"./workspace-edit.ts\";\n"]}
@@ -0,0 +1,6 @@
1
+ export { LspClient } from "./client.js";
2
+ export { installHintForCommand, installRecipeForCommand, languageIdForExtension, resolveLspConfig, } from "./config.js";
3
+ export { LspManager, runDefaultLspInstallCommand, } from "./manager.js";
4
+ export { LspTracer } from "./trace.js";
5
+ export { applyTextEdits, normalizeWorkspaceEdit, } from "./workspace-edit.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/lsp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA6C,MAAM,aAAa,CAAC;AACnF,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EAKvB,sBAAsB,EAGtB,gBAAgB,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIN,UAAU,EAGV,2BAA2B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAA0B,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EACN,cAAc,EAId,sBAAsB,GACtB,MAAM,qBAAqB,CAAC","sourcesContent":["export { LspClient, type LspClientOptions, type LspDiagnostic } from \"./client.ts\";\nexport {\n\tinstallHintForCommand,\n\tinstallRecipeForCommand,\n\ttype LspInstallRecipe,\n\ttype LspServerSettings,\n\ttype LspSettings,\n\ttype LspSeverity,\n\tlanguageIdForExtension,\n\ttype ResolvedLspConfig,\n\ttype ResolvedLspServerConfig,\n\tresolveLspConfig,\n} from \"./config.ts\";\nexport {\n\ttype LspInstallCommandOptions,\n\ttype LspInstallCommandResult,\n\ttype LspInstallRunner,\n\tLspManager,\n\ttype LspManagerOptions,\n\ttype LspServerStatus,\n\trunDefaultLspInstallCommand,\n} from \"./manager.ts\";\nexport { type LspTraceDirection, LspTracer } from \"./trace.ts\";\nexport {\n\tapplyTextEdits,\n\ttype LspTextEdit,\n\ttype LspWorkspaceEdit,\n\ttype NormalizedWorkspaceOperation,\n\tnormalizeWorkspaceEdit,\n} from \"./workspace-edit.ts\";\n"]}