@mrclrchtr/supi-lsp 1.7.0 → 1.9.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 (251) hide show
  1. package/README.md +33 -10
  2. package/node_modules/@mrclrchtr/supi-code-runtime/README.md +13 -0
  3. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +97 -0
  4. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +53 -0
  5. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +30 -0
  6. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +76 -0
  7. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +186 -0
  8. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
  9. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-messages.ts +119 -0
  10. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-provider-registry.ts +36 -0
  11. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context/context-tag.ts +31 -0
  12. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
  13. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +255 -0
  14. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +30 -0
  15. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +40 -0
  16. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
  17. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project-roots.ts +170 -0
  18. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
  19. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/registry-utils.ts +86 -0
  20. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session-utils.ts +29 -0
  21. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
  22. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +15 -0
  23. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +41 -0
  24. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +226 -0
  25. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
  26. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
  27. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
  28. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/terminal.ts +60 -0
  29. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
  30. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
  31. package/node_modules/@mrclrchtr/supi-code-runtime/package.json +40 -0
  32. package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +35 -0
  33. package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +68 -0
  34. package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +31 -0
  35. package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +110 -0
  36. package/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/context.ts +41 -0
  37. package/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/runtime.ts +170 -0
  38. package/node_modules/@mrclrchtr/supi-core/README.md +3 -13
  39. package/node_modules/@mrclrchtr/supi-core/package.json +13 -8
  40. package/node_modules/@mrclrchtr/supi-core/src/api.ts +26 -92
  41. package/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
  42. package/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
  43. package/node_modules/@mrclrchtr/supi-core/src/index.ts +26 -92
  44. package/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
  45. package/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
  46. package/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
  47. package/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
  48. package/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
  49. package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
  50. package/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
  51. package/node_modules/vscode-jsonrpc/License.txt +11 -0
  52. package/node_modules/vscode-jsonrpc/README.md +69 -0
  53. package/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
  54. package/node_modules/vscode-jsonrpc/browser.js +7 -0
  55. package/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  56. package/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
  57. package/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
  58. package/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
  59. package/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  60. package/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
  61. package/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  62. package/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
  63. package/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
  64. package/node_modules/vscode-jsonrpc/lib/common/connection.js +1214 -0
  65. package/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  66. package/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
  67. package/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  68. package/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
  69. package/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  70. package/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
  71. package/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  72. package/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
  73. package/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
  74. package/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
  75. package/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  76. package/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
  77. package/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  78. package/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
  79. package/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  80. package/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
  81. package/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  82. package/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
  83. package/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  84. package/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
  85. package/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  86. package/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
  87. package/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  88. package/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
  89. package/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
  90. package/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
  91. package/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
  92. package/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
  93. package/node_modules/vscode-jsonrpc/node.cmd +5 -0
  94. package/node_modules/vscode-jsonrpc/node.d.ts +6 -0
  95. package/node_modules/vscode-jsonrpc/node.js +7 -0
  96. package/node_modules/vscode-jsonrpc/package.json +45 -0
  97. package/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
  98. package/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
  99. package/node_modules/vscode-languageserver-protocol/License.txt +11 -0
  100. package/node_modules/vscode-languageserver-protocol/README.md +16 -0
  101. package/node_modules/vscode-languageserver-protocol/browser.d.ts +6 -0
  102. package/node_modules/vscode-languageserver-protocol/browser.js +7 -0
  103. package/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +4 -0
  104. package/node_modules/vscode-languageserver-protocol/lib/browser/main.js +28 -0
  105. package/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +58 -0
  106. package/node_modules/vscode-languageserver-protocol/lib/common/api.js +77 -0
  107. package/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +187 -0
  108. package/node_modules/vscode-languageserver-protocol/lib/common/connection.js +15 -0
  109. package/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +51 -0
  110. package/node_modules/vscode-languageserver-protocol/lib/common/messages.js +44 -0
  111. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +1 -0
  112. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +43 -0
  113. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +86 -0
  114. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +42 -0
  115. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +66 -0
  116. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +32 -0
  117. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +35 -0
  118. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +24 -0
  119. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +3252 -0
  120. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +37 -0
  121. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +22 -0
  122. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +341 -0
  123. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +74 -0
  124. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +306 -0
  125. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +101 -0
  126. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +109 -0
  127. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +30 -0
  128. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +38 -0
  129. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +21 -0
  130. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +110 -0
  131. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +43 -0
  132. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +57 -0
  133. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +22 -0
  134. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +86 -0
  135. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +30 -0
  136. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +943 -0
  137. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +52 -0
  138. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +19 -0
  139. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +106 -0
  140. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +68 -0
  141. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +400 -0
  142. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +214 -0
  143. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +107 -0
  144. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +37 -0
  145. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +41 -0
  146. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +20 -0
  147. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +223 -0
  148. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +57 -0
  149. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +72 -0
  150. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +22 -0
  151. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +38 -0
  152. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +21 -0
  153. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +83 -0
  154. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +42 -0
  155. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +74 -0
  156. package/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +27 -0
  157. package/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +9 -0
  158. package/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +46 -0
  159. package/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +6 -0
  160. package/node_modules/vscode-languageserver-protocol/lib/node/main.js +28 -0
  161. package/node_modules/vscode-languageserver-protocol/metaModel.schema.json +783 -0
  162. package/node_modules/vscode-languageserver-protocol/node.cmd +5 -0
  163. package/node_modules/vscode-languageserver-protocol/node.d.ts +6 -0
  164. package/node_modules/vscode-languageserver-protocol/node.js +7 -0
  165. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/License.txt +11 -0
  166. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/README.md +69 -0
  167. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
  168. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.js +7 -0
  169. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  170. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
  171. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
  172. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
  173. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  174. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
  175. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  176. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
  177. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
  178. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.js +1212 -0
  179. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  180. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
  181. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  182. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
  183. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  184. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
  185. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  186. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
  187. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
  188. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
  189. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  190. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
  191. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  192. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
  193. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  194. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
  195. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  196. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
  197. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  198. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
  199. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  200. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
  201. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  202. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
  203. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
  204. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
  205. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
  206. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
  207. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.cmd +5 -0
  208. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.d.ts +6 -0
  209. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.js +7 -0
  210. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/package.json +45 -0
  211. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
  212. package/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
  213. package/node_modules/vscode-languageserver-protocol/package.json +45 -0
  214. package/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +31 -0
  215. package/node_modules/vscode-languageserver-types/License.txt +11 -0
  216. package/node_modules/vscode-languageserver-types/README.md +17 -0
  217. package/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +3139 -0
  218. package/node_modules/vscode-languageserver-types/lib/esm/main.js +2222 -0
  219. package/node_modules/vscode-languageserver-types/lib/esm/package.json +3 -0
  220. package/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +3139 -0
  221. package/node_modules/vscode-languageserver-types/lib/umd/main.js +2272 -0
  222. package/node_modules/vscode-languageserver-types/package.json +38 -0
  223. package/node_modules/vscode-languageserver-types/thirdpartynotices.txt +16 -0
  224. package/package.json +9 -6
  225. package/src/config/config.ts +1 -1
  226. package/src/handlers/diagnostic-injection.ts +182 -0
  227. package/src/handlers/session-lifecycle.ts +149 -0
  228. package/src/handlers/status-command.ts +38 -0
  229. package/src/handlers/workspace-recovery.ts +92 -0
  230. package/src/lsp.ts +18 -414
  231. package/src/manager/capability-index.ts +24 -0
  232. package/src/manager/client-pool.ts +33 -0
  233. package/src/manager/diagnostic-store.ts +51 -0
  234. package/src/manager/manager-helpers.ts +1 -1
  235. package/src/manager/manager-workspace-symbol.ts +1 -1
  236. package/src/manager/manager.ts +1 -1
  237. package/src/manager/recovery-coordinator.ts +37 -0
  238. package/src/manager/workspace-router.ts +44 -0
  239. package/src/provider/lsp-semantic-provider.ts +156 -0
  240. package/src/session/runtime-registration.ts +39 -0
  241. package/src/session/scanner.ts +1 -1
  242. package/src/session/service-registry.ts +1 -1
  243. package/src/session/settings-registration.ts +1 -1
  244. package/src/tool/guidance.ts +5 -14
  245. package/src/tool/names.ts +12 -4
  246. package/src/tool/register-tools.ts +2 -4
  247. package/src/tool/service-actions.ts +141 -0
  248. package/src/tool/tool-specs.ts +93 -93
  249. package/src/utils.ts +1 -1
  250. package/src/workspace-change.ts +40 -0
  251. package/node_modules/@mrclrchtr/supi-core/src/extension.ts +0 -1
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "vscode-languageserver-types",
3
+ "description": "Types used by the Language server for node",
4
+ "version": "3.17.5",
5
+ "author": "Microsoft Corporation",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/Microsoft/vscode-languageserver-node.git",
10
+ "directory": "types"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/Microsoft/vscode-languageserver-node/issues"
14
+ },
15
+ "main": "./lib/umd/main.js",
16
+ "typings": "./lib/umd/main",
17
+ "exports": {
18
+ ".": {
19
+ "browser": "./lib/esm/main.js",
20
+ "import": "./lib/esm/main.js",
21
+ "default": "./lib/umd/main.js"
22
+ }
23
+ },
24
+ "scripts": {
25
+ "prepublishOnly": "echo \"⛔ Can only publish from a secure pipeline ⛔\" && node ../build/npm/fail",
26
+ "prepack": "npm run all:publish",
27
+ "compile": "node ../build/bin/tsc -b ./tsconfig.json",
28
+ "clean": "node ../node_modules/.bin/rimraf lib",
29
+ "watch": "node ../build/bin/tsc -b ./tsconfig.watch.json -w",
30
+ "lint": "node ../node_modules/eslint/bin/eslint.js --ext ts src",
31
+ "test": "node ../node_modules/mocha/bin/_mocha",
32
+ "all": "npm run clean && npm run compile && npm run lint && npm run test",
33
+ "compile:esm": "node ../build/bin/tsc -b ./tsconfig.esm.publish.json && node ../build/bin/fix-esm",
34
+ "compile:umd": "node ../build/bin/tsc -b ./tsconfig.umd.publish.json",
35
+ "all:publish": "git clean -xfd . && npm install && npm run compile:esm && npm run compile:umd && npm run lint && npm run test",
36
+ "preversion": "npm test"
37
+ }
38
+ }
@@ -0,0 +1,16 @@
1
+ NOTICES AND INFORMATION
2
+ Do Not Translate or Localize
3
+
4
+ This software incorporates material from third parties.
5
+ Microsoft makes certain open source code available at https://3rdpartysource.microsoft.com,
6
+ or you may send a check or money order for US $5.00, including the product name,
7
+ the open source component name, platform, and version number, to:
8
+
9
+ Source Code Compliance Team
10
+ Microsoft Corporation
11
+ One Microsoft Way
12
+ Redmond, WA 98052
13
+ USA
14
+
15
+ Notwithstanding any other terms, you may reverse engineer this software to the extent
16
+ required to debug changes to any libraries licensed under the GNU Lesser General Public License.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrclrchtr/supi-lsp",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "SuPi LSP extension — Language Server Protocol integration for pi",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,9 +26,11 @@
26
26
  "vscode-jsonrpc": "^8.2.1",
27
27
  "vscode-languageserver-protocol": "^3.17.5",
28
28
  "vscode-languageserver-types": "^3.17.5",
29
- "@mrclrchtr/supi-core": "1.7.0"
29
+ "@mrclrchtr/supi-code-runtime": "1.9.0",
30
+ "@mrclrchtr/supi-core": "1.9.0"
30
31
  },
31
32
  "bundledDependencies": [
33
+ "@mrclrchtr/supi-code-runtime",
32
34
  "@mrclrchtr/supi-core",
33
35
  "vscode-jsonrpc",
34
36
  "vscode-languageserver-protocol",
@@ -56,14 +58,15 @@
56
58
  },
57
59
  "pi": {
58
60
  "extensions": [
59
- "./src/extension.ts",
60
- "node_modules/@mrclrchtr/supi-core/src/extension.ts"
61
- ]
61
+ "./src/extension.ts"
62
+ ],
63
+ "image": "https://raw.githubusercontent.com/mrclrchtr/supi/main/packages/supi-lsp/assets/logo.png"
62
64
  },
63
65
  "main": "src/api.ts",
64
66
  "exports": {
65
67
  "./api": "./src/api.ts",
66
68
  "./extension": "./src/extension.ts",
67
- "./package.json": "./package.json"
69
+ "./package.json": "./package.json",
70
+ "./provider/lsp-semantic-provider": "./src/provider/lsp-semantic-provider.ts"
68
71
  }
69
72
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import * as fs from "node:fs";
4
4
  import * as path from "node:path";
5
- import { loadSupiConfigForScope } from "@mrclrchtr/supi-core/api";
5
+ import { loadSupiConfigForScope } from "@mrclrchtr/supi-core/config";
6
6
  import type { LspConfig, ServerConfig } from "./types.ts";
7
7
 
8
8
  // Load defaults at module level — resolve relative to this file.
@@ -0,0 +1,182 @@
1
+ // Diagnostic injection handlers — before_agent_start and context.
2
+ //
3
+ // Extracted from lsp.ts to keep each orchestration concern in its own module.
4
+
5
+ import type {
6
+ BeforeAgentStartEvent,
7
+ BeforeAgentStartEventResult,
8
+ ContextEvent,
9
+ ExtensionAPI,
10
+ ExtensionContext,
11
+ } from "@earendil-works/pi-coding-agent";
12
+ import { pruneAndReorderContextMessages, restorePromptContent } from "@mrclrchtr/supi-core/context";
13
+ import type { Diagnostic } from "../config/types.ts";
14
+ import {
15
+ diagnosticsContextFingerprint,
16
+ formatDiagnosticsContext,
17
+ MAX_DETAILED_DIAGNOSTICS,
18
+ } from "../diagnostics/diagnostic-context.ts";
19
+ import { formatDiagnosticsDisplayContent } from "../diagnostics/diagnostic-display.ts";
20
+ import { assessStaleDiagnostics } from "../diagnostics/stale-diagnostics.ts";
21
+ // Force re-open files with module-resolution errors
22
+ import { forceResyncStaleModuleFiles } from "../manager/manager-stale-resync.ts";
23
+ import type { OutstandingDiagnosticSummaryEntry } from "../manager/manager-types.ts";
24
+ import {
25
+ ensureLspToolsActive,
26
+ type LspRuntimeState,
27
+ refreshProjectServers,
28
+ removeLspTools,
29
+ } from "../session/lsp-state.ts";
30
+ import { persistLspInactiveState } from "../session/tree-persist.ts";
31
+ import { updateLspUi } from "../ui/ui.ts";
32
+ import { refreshWorkspaceSentinels } from "../workspace-change.ts";
33
+
34
+ /**
35
+ * Register handlers for before_agent_start (diagnostic injection) and context
36
+ * (lsp-context message pruning / prompt-content restoration).
37
+ */
38
+ export function registerDiagnosticInjectionHandlers(
39
+ pi: ExtensionAPI,
40
+ state: LspRuntimeState,
41
+ ): void {
42
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: before_agent_start coordinates sentinel recovery, pruning, refresh, and diagnostic injection.
43
+ pi.on("before_agent_start", async (_event: BeforeAgentStartEvent, ctx: ExtensionContext) => {
44
+ if (!state.manager || !state.lspActive) {
45
+ removeLspTools(pi);
46
+ if (!state.manager && state.lspActive) {
47
+ persistLspInactiveState(pi, state);
48
+ }
49
+ return;
50
+ }
51
+
52
+ ensureLspToolsActive(pi);
53
+
54
+ refreshWorkspaceSentinels(state, ctx.cwd);
55
+
56
+ /**
57
+ * Two-pass prune/refresh pattern:
58
+ *
59
+ * 1. Prune files deleted since the last turn and send didClose.
60
+ * 2. Re-sync remaining open docs and wait for diagnostics to settle.
61
+ * 3. Prune *again* — late publishDiagnostics notifications (already
62
+ * in-flight when step 1 ran) may have re-created stale entries for
63
+ * files that no longer exist. `getAllDiagnostics()` also filters
64
+ * by existence, so this second pass is belt-and-suspenders.
65
+ */
66
+ state.manager.pruneMissingFiles();
67
+ try {
68
+ await state.manager.refreshOpenDiagnostics();
69
+ } catch {
70
+ // Refresh failures must not prevent agent startup
71
+ }
72
+ state.manager.pruneMissingFiles();
73
+
74
+ try {
75
+ await forceResyncStaleModuleFiles(state.manager, ctx.cwd);
76
+ } catch {
77
+ // Best-effort: don't fail the agent turn
78
+ }
79
+
80
+ refreshProjectServers(state);
81
+ updateLspUi(ctx, state.manager, state.inlineSeverity, state.projectServers);
82
+
83
+ const diagnostics = state.manager.getOutstandingDiagnosticSummary(state.inlineSeverity);
84
+ const totalDiags = diagnostics.reduce((sum, d) => sum + d.total, 0);
85
+ const detailed =
86
+ totalDiags <= MAX_DETAILED_DIAGNOSTICS
87
+ ? state.manager.getOutstandingDiagnostics(state.inlineSeverity)
88
+ : undefined;
89
+ const staleAssessment = state.staleSuspected
90
+ ? assessStaleDiagnostics(state.manager.getOutstandingDiagnostics(4))
91
+ : { suspected: false, matchedFiles: [], warning: null };
92
+ state.staleSuspected = staleAssessment.suspected;
93
+
94
+ const staleWarning = staleAssessment.suspected ? staleAssessment.warning : null;
95
+ const content = formatDiagnosticsContext(diagnostics, 3, detailed, staleWarning);
96
+ const fingerprint = diagnosticsContextFingerprint(content);
97
+
98
+ if (!content) {
99
+ state.lastDiagnosticsFingerprint = null;
100
+ state.currentContextToken = null;
101
+ return;
102
+ }
103
+
104
+ if (fingerprint === state.lastDiagnosticsFingerprint) {
105
+ state.currentContextToken = null;
106
+ return;
107
+ }
108
+
109
+ state.lastDiagnosticsFingerprint = fingerprint;
110
+ state.currentContextToken = `lsp-context-${++state.contextCounter}`;
111
+
112
+ return buildDiagnosticResult(
113
+ diagnostics,
114
+ detailed,
115
+ state.inlineSeverity,
116
+ state.currentContextToken,
117
+ staleWarning,
118
+ );
119
+ });
120
+
121
+ pi.on("context", (event: ContextEvent) => {
122
+ const messages = pruneAndReorderContextMessages(
123
+ event.messages as Array<{
124
+ role?: string;
125
+ customType?: string;
126
+ content?: unknown;
127
+ details?: unknown;
128
+ }>,
129
+ "lsp-context",
130
+ state.currentContextToken,
131
+ );
132
+ const contextMessages = restorePromptContent(
133
+ messages,
134
+ "lsp-context",
135
+ state.currentContextToken,
136
+ ) as typeof event.messages;
137
+
138
+ if (
139
+ contextMessages.length === event.messages.length &&
140
+ contextMessages.every((message, index) => message === event.messages[index])
141
+ ) {
142
+ return;
143
+ }
144
+ return { messages: contextMessages };
145
+ });
146
+ }
147
+
148
+ /** Build the `lsp-context` custom message used to surface outstanding diagnostics. */
149
+ // biome-ignore lint/complexity/useMaxParams: wrapper groups the prompt payload fields in one place.
150
+ function buildDiagnosticResult(
151
+ diagnostics: OutstandingDiagnosticSummaryEntry[],
152
+ detailed:
153
+ | {
154
+ file: string;
155
+ diagnostics: Diagnostic[];
156
+ }[]
157
+ | undefined,
158
+ severity: number,
159
+ token: string,
160
+ staleWarning?: string | null,
161
+ ): BeforeAgentStartEventResult {
162
+ return {
163
+ message: {
164
+ customType: "lsp-context",
165
+ content: formatDiagnosticsDisplayContent(diagnostics, detailed),
166
+ display: true,
167
+ details: {
168
+ contextToken: token,
169
+ promptContent: formatDiagnosticsContext(diagnostics, 3, detailed, staleWarning),
170
+ inlineSeverity: severity,
171
+ ...(staleWarning ? { staleWarning } : {}),
172
+ diagnostics: diagnostics.map((d) => ({
173
+ file: d.file,
174
+ errors: d.errors,
175
+ warnings: d.warnings,
176
+ information: d.information,
177
+ hints: d.hints,
178
+ })),
179
+ },
180
+ },
181
+ };
182
+ }
@@ -0,0 +1,149 @@
1
+ // Session lifecycle handlers — session_start, session_shutdown, and agent_end.
2
+ //
3
+ // Extracted from lsp.ts to keep each orchestration concern in its own module.
4
+
5
+ import type {
6
+ AgentEndEvent,
7
+ ExtensionAPI,
8
+ ExtensionContext,
9
+ SessionStartEvent,
10
+ } from "@earendil-works/pi-coding-agent";
11
+ import type { WorkspaceRuntime } from "@mrclrchtr/supi-code-runtime/api";
12
+ import { loadConfig, resolveLanguageAlias } from "../config/config.ts";
13
+ import { clearTsconfigCache } from "../config/tsconfig-scope.ts";
14
+ import { scanWorkspaceSentinels } from "../diagnostics/workspace-sentinels.ts";
15
+ import { LspManager } from "../manager/manager.ts";
16
+ import {
17
+ disableLspState,
18
+ ensureLspToolsActive,
19
+ type LspRuntimeState,
20
+ refreshProjectServers,
21
+ } from "../session/lsp-state.ts";
22
+ import {
23
+ registerLspCapabilities,
24
+ unregisterLspCapabilities,
25
+ } from "../session/runtime-registration.ts";
26
+ import {
27
+ scanMissingServers,
28
+ scanProjectCapabilities,
29
+ startDetectedServers,
30
+ } from "../session/scanner.ts";
31
+ import {
32
+ clearSessionLspService,
33
+ SessionLspService,
34
+ setSessionLspServiceState,
35
+ } from "../session/service-registry.ts";
36
+ import { loadLspSettings } from "../session/settings-registration.ts";
37
+ import { persistLspActiveState, persistLspInactiveState } from "../session/tree-persist.ts";
38
+ import { buildLspToolPromptSurfaces } from "../tool/guidance.ts";
39
+ import { registerLspTools } from "../tool/register-tools.ts";
40
+ import { updateLspUi } from "../ui/ui.ts";
41
+
42
+ /**
43
+ * Register session lifecycle handlers (start, shutdown, and agent-end cleanup).
44
+ *
45
+ * - `session_start`: initialises the LspManager, starts detected servers, wires
46
+ * dynamic tool guidance, publishes runtime capabilities, and syncs UI state.
47
+ * - `session_shutdown`: tears down the manager and clears runtime state.
48
+ * - `agent_end`: refreshes project-server info and updates the LSP status UI.
49
+ */
50
+ export function registerSessionLifecycleHandlers(
51
+ pi: ExtensionAPI,
52
+ state: LspRuntimeState,
53
+ runtime: WorkspaceRuntime,
54
+ ): void {
55
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: session_start orchestrates setup, server detection, settings, and persistence.
56
+ pi.on("session_start", async (_event: SessionStartEvent, ctx: ExtensionContext) => {
57
+ if (state.manager) {
58
+ clearSessionLspService(state.manager.getCwd());
59
+ await state.manager.shutdownAll();
60
+ }
61
+
62
+ const cwd = ctx.cwd;
63
+ clearTsconfigCache();
64
+ const lspSettings = loadLspSettings(cwd);
65
+
66
+ if (!lspSettings.enabled) {
67
+ clearSessionLspService(cwd);
68
+ disableLspState(pi, state);
69
+ persistLspInactiveState(pi, state);
70
+ setSessionLspServiceState(cwd, { kind: "disabled" });
71
+ return;
72
+ }
73
+
74
+ state.inlineSeverity = lspSettings.severity;
75
+
76
+ const config = loadConfig(cwd);
77
+
78
+ // Apply server allowlist filter from supi shared config
79
+ if (lspSettings.active.length > 0) {
80
+ const allowList = new Set(lspSettings.active.map(resolveLanguageAlias));
81
+ for (const name of Object.keys(config.servers)) {
82
+ if (!allowList.has(name)) {
83
+ delete config.servers[name];
84
+ }
85
+ }
86
+ }
87
+
88
+ clearSessionLspService(cwd);
89
+ state.manager = new LspManager(config, cwd);
90
+ state.manager.setExcludePatterns(lspSettings.exclude ?? []);
91
+ setSessionLspServiceState(cwd, { kind: "pending" });
92
+ state.detectedServers = scanProjectCapabilities(config, cwd);
93
+ state.manager.registerDetectedServers(state.detectedServers);
94
+ await startDetectedServers(state.manager, state.detectedServers);
95
+
96
+ const missing = scanMissingServers(config, cwd);
97
+ if (missing.length > 0) {
98
+ const parts = missing.map((m) => `${m.name} (${m.command})`);
99
+ ctx.ui.notify(
100
+ `LSP server not found for: ${parts.join(", ")}. Install the server to enable language intelligence.`,
101
+ "warning",
102
+ );
103
+ }
104
+
105
+ state.sentinelSnapshot = scanWorkspaceSentinels(cwd);
106
+ state.lastWorkspaceChangeAt = 0;
107
+ state.staleSuspected = false;
108
+ refreshProjectServers(state);
109
+ state.lastDiagnosticsFingerprint = null;
110
+ state.currentContextToken = null;
111
+ state.lspActive = true;
112
+ const service = new SessionLspService(state.manager);
113
+ setSessionLspServiceState(cwd, { kind: "ready", service });
114
+ registerLspCapabilities(runtime, cwd, service);
115
+ registerLspTools(pi, buildLspToolPromptSurfaces(state.projectServers, cwd));
116
+ ensureLspToolsActive(pi);
117
+ persistLspActiveState(pi, state);
118
+ updateLspUi(ctx, state.manager, state.inlineSeverity, state.projectServers);
119
+ });
120
+
121
+ pi.on("session_shutdown", async () => {
122
+ clearTsconfigCache();
123
+ if (state.manager) {
124
+ const cwd = state.manager.getCwd();
125
+ unregisterLspCapabilities(runtime, cwd);
126
+ clearSessionLspService(cwd);
127
+ await state.manager.shutdownAll();
128
+ state.manager = null;
129
+ }
130
+
131
+ state.inspector.close?.();
132
+ state.detectedServers = [];
133
+ state.projectServers = [];
134
+ state.lastDiagnosticsFingerprint = null;
135
+ state.currentContextToken = null;
136
+ state.staleSuspected = false;
137
+ state.lastWorkspaceChangeAt = 0;
138
+ state.sentinelSnapshot = new Map();
139
+ });
140
+
141
+ pi.on("agent_end", async (_event: AgentEndEvent, ctx: ExtensionContext) => {
142
+ state.currentContextToken = null;
143
+ refreshProjectServers(state);
144
+
145
+ if (state.manager) {
146
+ updateLspUi(ctx, state.manager, state.inlineSeverity, state.projectServers);
147
+ }
148
+ });
149
+ }
@@ -0,0 +1,38 @@
1
+ // LSP status command — /lsp-status overlay.
2
+ //
3
+ // Extracted from lsp.ts to keep each orchestration concern in its own module.
4
+
5
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
6
+ import { type LspRuntimeState, refreshProjectServers } from "../session/lsp-state.ts";
7
+ import { getLspDisabledMessage, loadLspSettings } from "../session/settings-registration.ts";
8
+ import { toggleLspStatusOverlay } from "../ui/ui.ts";
9
+
10
+ /**
11
+ * Register the /lsp-status command that opens an LSP inspector overlay.
12
+ */
13
+ export function registerLspStatusCommand(pi: ExtensionAPI, state: LspRuntimeState): void {
14
+ pi.registerCommand("lsp-status", {
15
+ description: "Show detected LSP servers, roots, open files, and diagnostics",
16
+ handler: async (_args: string, ctx: ExtensionContext) => {
17
+ const lspSettings = loadLspSettings(ctx.cwd);
18
+ if (!lspSettings.enabled) {
19
+ ctx.ui.notify(getLspDisabledMessage(ctx.cwd), "warning");
20
+ return;
21
+ }
22
+
23
+ if (!state.manager) {
24
+ ctx.ui.notify("LSP not initialized", "warning");
25
+ return;
26
+ }
27
+
28
+ refreshProjectServers(state);
29
+ toggleLspStatusOverlay(
30
+ ctx,
31
+ state.manager,
32
+ state.inlineSeverity,
33
+ state.inspector,
34
+ state.projectServers,
35
+ );
36
+ },
37
+ });
38
+ }
@@ -0,0 +1,92 @@
1
+ // Workspace recovery handler — tool_result event.
2
+ //
3
+ // Extracted from lsp.ts to keep each orchestration concern in its own module.
4
+
5
+ import type {
6
+ ExtensionAPI,
7
+ ExtensionContext,
8
+ ToolResultEvent,
9
+ } from "@earendil-works/pi-coding-agent";
10
+ import { clearTsconfigCache } from "../config/tsconfig-scope.ts";
11
+ import { FileChangeType, type FileEvent } from "../config/types.ts";
12
+ import {
13
+ isWorkspaceRecoveryTrigger,
14
+ syncWorkspaceSentinelSnapshot,
15
+ } from "../diagnostics/workspace-sentinels.ts";
16
+ import {
17
+ isLspAwareTool,
18
+ type LspRuntimeState,
19
+ refreshProjectServers,
20
+ } from "../session/lsp-state.ts";
21
+ import { updateLspUi } from "../ui/ui.ts";
22
+ import { fileToUri, resolveSessionPath } from "../utils.ts";
23
+ import {
24
+ shouldInvalidateTsconfigScopeCache,
25
+ softRecoverWorkspaceChanges,
26
+ } from "../workspace-change.ts";
27
+
28
+ /**
29
+ * Register the tool_result handler that detects workspace changes from
30
+ * write / edit tool results and recovers LSP state accordingly.
31
+ */
32
+ export function registerWorkspaceRecoveryHandler(pi: ExtensionAPI, state: LspRuntimeState): void {
33
+ pi.on("tool_result", async (event: ToolResultEvent, ctx: ExtensionContext) => {
34
+ if (!state.manager) return;
35
+
36
+ const recoveryTriggered = recoverWorkspaceChangesFromToolResult(state, ctx.cwd, {
37
+ toolName: event.toolName,
38
+ isError: event.isError,
39
+ input: (event as { input?: unknown }).input,
40
+ });
41
+
42
+ if (recoveryTriggered || isLspAwareTool(event.toolName)) {
43
+ refreshProjectServers(state);
44
+ updateLspUi(ctx, state.manager, state.inlineSeverity, state.projectServers);
45
+ }
46
+ });
47
+ }
48
+
49
+ /**
50
+ * Determine whether a tool result (write/edit) should trigger workspace recovery.
51
+ *
52
+ * Returns true and recovers when the file is:
53
+ * - a sentinel file (package.json, tsconfig, lockfile, .d.ts)
54
+ * - a source file whose extension matches an active language server's file types
55
+ * - a .json / .jsonc file (tsconfig cache invalidation)
56
+ */
57
+ function recoverWorkspaceChangesFromToolResult(
58
+ state: LspRuntimeState,
59
+ cwd: string,
60
+ event: { toolName: string; isError: boolean; input?: unknown },
61
+ ): boolean {
62
+ if (!state.manager || event.isError) return false;
63
+ if (event.toolName !== "write" && event.toolName !== "edit") return false;
64
+ if (!event.input || typeof event.input !== "object") return false;
65
+
66
+ const pathValue = (event.input as { path?: unknown }).path;
67
+ if (typeof pathValue !== "string") return false;
68
+
69
+ const resolvedPath = resolveSessionPath(cwd, pathValue);
70
+ if (shouldInvalidateTsconfigScopeCache(resolvedPath)) {
71
+ clearTsconfigCache();
72
+ }
73
+ const fileEvent: FileEvent = { uri: fileToUri(resolvedPath), type: FileChangeType.Changed };
74
+
75
+ // Sentinel files (package.json, tsconfig.json, lockfiles, .d.ts)
76
+ if (isWorkspaceRecoveryTrigger(resolvedPath, cwd)) {
77
+ if (resolvedPath.endsWith(".d.ts")) {
78
+ return softRecoverWorkspaceChanges(state, [fileEvent]);
79
+ }
80
+
81
+ const { snapshot, changes } = syncWorkspaceSentinelSnapshot(cwd, state.sentinelSnapshot);
82
+ state.sentinelSnapshot = snapshot;
83
+ return softRecoverWorkspaceChanges(state, changes.length > 0 ? changes : [fileEvent]);
84
+ }
85
+
86
+ // Source files matching an active language server's file types
87
+ if (state.manager.hasServerForExtension(resolvedPath)) {
88
+ return softRecoverWorkspaceChanges(state, [fileEvent]);
89
+ }
90
+
91
+ return false;
92
+ }