@mrclrchtr/supi-code-intelligence 3.2.0 → 4.0.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 (556) hide show
  1. package/README.md +154 -435
  2. package/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  3. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  4. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  5. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  6. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  7. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  8. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  9. package/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  10. package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  11. package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  12. package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  13. package/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  14. package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  15. package/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  16. package/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  17. package/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  18. package/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  19. package/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  20. package/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  21. package/node_modules/@mrclrchtr/supi-lsp/README.md +72 -62
  22. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  23. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  24. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  25. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  26. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  27. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  28. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  29. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  30. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  31. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  32. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  33. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  34. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  35. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  36. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  37. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  38. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  39. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  40. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  41. package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -5
  42. package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +9 -9
  43. package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +70 -41
  44. package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +16 -13
  45. package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +2 -2
  46. package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +0 -2
  47. package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +6 -6
  48. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-diagnostics.ts +5 -95
  49. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-recovery.ts +4 -3
  50. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +44 -6
  51. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +47 -65
  52. package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +132 -79
  53. package/node_modules/@mrclrchtr/supi-lsp/src/provider/refactor-planning.ts +6 -14
  54. package/node_modules/@mrclrchtr/supi-lsp/src/session/readiness.ts +38 -0
  55. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +87 -75
  56. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +5 -5
  57. package/node_modules/@mrclrchtr/supi-lsp/src/session/{service-registry.ts → runtime-registry.ts} +163 -71
  58. package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +4 -0
  59. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  60. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  61. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  62. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  63. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  64. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  65. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  66. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  67. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  68. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  69. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  70. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  71. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  72. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  73. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  74. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  75. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  76. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  77. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  78. package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +4 -21
  79. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm +0 -0
  80. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm.json +2 -2
  81. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm +0 -0
  82. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm.json +2 -2
  83. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm +0 -0
  84. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm.json +2 -2
  85. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm +0 -0
  86. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm.json +2 -2
  87. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm +0 -0
  88. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm.json +2 -2
  89. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm +0 -0
  90. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm.json +2 -2
  91. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm +0 -0
  92. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm.json +2 -2
  93. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/rust/tree-sitter-rust.wasm.json +1 -1
  94. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm +0 -0
  95. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm.json +3 -3
  96. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-kotlin-wasm.mjs +6 -0
  97. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-sql-wasm.mjs +18 -4
  98. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/vendor-wasm.mjs +17 -1
  99. package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +2 -0
  100. package/node_modules/@mrclrchtr/supi-tree-sitter/src/coordinates.ts +20 -41
  101. package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +2 -0
  102. package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +7 -0
  103. package/node_modules/@mrclrchtr/supi-tree-sitter/src/operation-support.ts +40 -0
  104. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +9 -7
  105. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +6 -1
  106. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +76 -37
  107. package/node_modules/yaml/LICENSE +13 -0
  108. package/node_modules/yaml/README.md +172 -0
  109. package/node_modules/yaml/bin.mjs +11 -0
  110. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  111. package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  112. package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  113. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  114. package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
  115. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  116. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  117. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  118. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  119. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  120. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
  121. package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  122. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  123. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  124. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  125. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  126. package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  127. package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  128. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  129. package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  130. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  131. package/node_modules/yaml/browser/dist/errors.js +57 -0
  132. package/node_modules/yaml/browser/dist/index.js +17 -0
  133. package/node_modules/yaml/browser/dist/log.js +11 -0
  134. package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
  135. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  136. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  137. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  138. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  139. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  140. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  141. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  142. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  143. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  144. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  145. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  146. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  147. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  148. package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
  149. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  150. package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
  151. package/node_modules/yaml/browser/dist/public-api.js +102 -0
  152. package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  153. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  154. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  155. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  156. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  157. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  158. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  159. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  160. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  161. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  162. package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  163. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  164. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  165. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  166. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  167. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
  168. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  169. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  170. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  171. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  172. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  173. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  174. package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  175. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  176. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  177. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  178. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
  179. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  180. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  181. package/node_modules/yaml/browser/dist/util.js +11 -0
  182. package/node_modules/yaml/browser/dist/visit.js +233 -0
  183. package/node_modules/yaml/browser/index.js +5 -0
  184. package/node_modules/yaml/browser/package.json +3 -0
  185. package/node_modules/yaml/dist/cli.d.ts +8 -0
  186. package/node_modules/yaml/dist/cli.mjs +201 -0
  187. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  188. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  189. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  190. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  191. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  192. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  193. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  194. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  195. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  196. package/node_modules/yaml/dist/compose/composer.js +224 -0
  197. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  198. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  199. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  200. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  201. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  202. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  203. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  204. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  205. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  206. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  207. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  208. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  209. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  210. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  211. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  212. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  213. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  214. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  215. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  216. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  217. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  218. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  219. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  220. package/node_modules/yaml/dist/doc/Document.js +337 -0
  221. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  222. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  223. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  224. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  225. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  226. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  227. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  228. package/node_modules/yaml/dist/doc/directives.js +178 -0
  229. package/node_modules/yaml/dist/errors.d.ts +21 -0
  230. package/node_modules/yaml/dist/errors.js +62 -0
  231. package/node_modules/yaml/dist/index.d.ts +25 -0
  232. package/node_modules/yaml/dist/index.js +50 -0
  233. package/node_modules/yaml/dist/log.d.ts +3 -0
  234. package/node_modules/yaml/dist/log.js +19 -0
  235. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  236. package/node_modules/yaml/dist/nodes/Alias.js +118 -0
  237. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  238. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  239. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  240. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  241. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  242. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  243. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  244. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  245. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  246. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  247. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  248. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  249. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  250. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  251. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  252. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  253. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  254. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  255. package/node_modules/yaml/dist/options.d.ts +350 -0
  256. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  257. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  258. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  259. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  260. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  261. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  262. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  263. package/node_modules/yaml/dist/parse/cst.js +112 -0
  264. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  265. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  266. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  267. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  268. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  269. package/node_modules/yaml/dist/parse/parser.js +980 -0
  270. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  271. package/node_modules/yaml/dist/public-api.js +107 -0
  272. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  273. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  274. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  275. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  276. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  277. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  278. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  279. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  280. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  281. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  282. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  283. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  284. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  285. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  286. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  287. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  288. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  289. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  290. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  291. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  292. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  293. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  294. package/node_modules/yaml/dist/schema/tags.js +99 -0
  295. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  296. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  297. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  298. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  299. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  300. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  301. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  302. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  303. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  304. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  305. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  306. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  307. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  308. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  309. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  310. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  311. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  312. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  313. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  314. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  315. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  316. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  317. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  318. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  319. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  320. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  321. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  322. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  323. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  324. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  325. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  326. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  327. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  328. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  329. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  330. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  331. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  332. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  333. package/node_modules/yaml/dist/test-events.js +134 -0
  334. package/node_modules/yaml/dist/util.d.ts +16 -0
  335. package/node_modules/yaml/dist/util.js +28 -0
  336. package/node_modules/yaml/dist/visit.d.ts +102 -0
  337. package/node_modules/yaml/dist/visit.js +236 -0
  338. package/node_modules/yaml/package.json +97 -0
  339. package/node_modules/yaml/util.js +2 -0
  340. package/package.json +9 -8
  341. package/src/analysis/architecture/discovery.ts +213 -227
  342. package/src/analysis/architecture/manifest.ts +147 -0
  343. package/src/analysis/architecture/model.ts +119 -52
  344. package/src/analysis/architecture/workspace-config.ts +229 -0
  345. package/src/analysis/{coverage/coverage-warnings.ts → capability/capability-warnings.ts} +41 -78
  346. package/src/analysis/evidence.ts +22 -5
  347. package/src/analysis/health/diagnostics.ts +183 -0
  348. package/src/analysis/health/recovery.ts +39 -0
  349. package/src/analysis/health/signals.ts +20 -0
  350. package/src/analysis/instruction-files.ts +60 -48
  351. package/src/analysis/provider.ts +31 -12
  352. package/src/analysis/readiness.ts +29 -9
  353. package/src/{tool/refactor-apply → analysis/refactor}/apply.ts +120 -26
  354. package/src/analysis/refactor/position.ts +6 -0
  355. package/src/analysis/refactor/safety.ts +4 -11
  356. package/src/analysis/references/locations.ts +20 -0
  357. package/src/analysis/references/semantic-refs.ts +21 -11
  358. package/src/{tool/graph → analysis/relations}/implementations.ts +27 -23
  359. package/src/analysis/relations/provider-locations.ts +179 -0
  360. package/src/{tool/graph → analysis/relations}/references.ts +25 -21
  361. package/src/{tool/graph → analysis/relations}/types.ts +4 -19
  362. package/src/analysis/search/ast-scan.ts +376 -0
  363. package/src/analysis/search/call-name.ts +68 -0
  364. package/src/analysis/search/deadline.ts +84 -0
  365. package/src/analysis/search/paths.ts +88 -0
  366. package/src/analysis/search/pattern.ts +290 -246
  367. package/src/analysis/target/anchored.ts +72 -27
  368. package/src/analysis/target/file.ts +292 -132
  369. package/src/analysis/target/identity.ts +237 -0
  370. package/src/analysis/target/symbol.ts +169 -86
  371. package/src/analysis/target/types.ts +36 -4
  372. package/src/api.ts +21 -4
  373. package/src/app/app.ts +53 -46
  374. package/src/extension.ts +68 -66
  375. package/src/session/capability-adapter.ts +26 -118
  376. package/src/session/find-types.ts +38 -0
  377. package/src/session/find-workflow.ts +141 -0
  378. package/src/session/graph/collect.ts +181 -0
  379. package/src/session/graph-types.ts +77 -0
  380. package/src/session/graph-workflow.ts +152 -0
  381. package/src/session/health-types.ts +134 -0
  382. package/src/session/health-workflow.ts +341 -0
  383. package/src/session/input/common.ts +216 -0
  384. package/src/session/input/health-refactor.ts +169 -0
  385. package/src/session/input/workflows.ts +211 -0
  386. package/src/session/inspect/collect.ts +304 -0
  387. package/src/session/inspect/file-point.ts +69 -0
  388. package/src/session/inspect-types.ts +78 -0
  389. package/src/session/inspect-workflow.ts +157 -0
  390. package/src/session/orientation/collect.ts +718 -0
  391. package/src/session/orientation/context-facts.ts +319 -0
  392. package/src/session/orientation/context-sections.ts +352 -0
  393. package/src/session/orientation-types.ts +97 -0
  394. package/src/session/orientation-workflow.ts +307 -0
  395. package/src/session/refactor-plans.ts +1 -1
  396. package/src/session/refactor-types.ts +51 -0
  397. package/src/session/refactor-workflow.ts +263 -0
  398. package/src/session/session.ts +263 -234
  399. package/src/session/target-candidates.ts +60 -0
  400. package/src/session/target-input.ts +98 -0
  401. package/src/session/target-store.ts +132 -29
  402. package/src/session/target-workflow.ts +254 -302
  403. package/src/session/workflow-control.ts +35 -0
  404. package/src/substrate/lsp/lifecycle.ts +9 -22
  405. package/src/substrate/lsp/maintenance.ts +75 -0
  406. package/src/substrate/lsp/recovery.ts +41 -25
  407. package/src/substrate/lsp/settings.ts +1 -10
  408. package/src/substrate/lsp/state.ts +2 -13
  409. package/src/tool/find/ast-kinds.ts +35 -0
  410. package/src/tool/find/execute.ts +22 -113
  411. package/src/tool/find/markdown.ts +85 -221
  412. package/src/tool/find/modes.ts +5 -0
  413. package/src/tool/find/render.ts +57 -0
  414. package/src/tool/find/tui.ts +1 -1
  415. package/src/tool/graph/calls-md.ts +17 -30
  416. package/src/tool/graph/execute.ts +42 -103
  417. package/src/tool/graph/implementations-md.ts +32 -54
  418. package/src/tool/graph/markdown-base.ts +73 -196
  419. package/src/tool/graph/provider-location-md.ts +9 -0
  420. package/src/tool/graph/references-md.ts +34 -27
  421. package/src/tool/graph/tui.ts +8 -26
  422. package/src/tool/guidance.ts +31 -48
  423. package/src/tool/health/execute.ts +15 -56
  424. package/src/tool/health/markdown.ts +199 -148
  425. package/src/tool/health/semantic-state.ts +24 -0
  426. package/src/tool/health/tui.ts +262 -36
  427. package/src/tool/infra/error-results.ts +0 -2
  428. package/src/tool/infra/progress.ts +2 -2
  429. package/src/tool/infra/workflow-control.ts +11 -0
  430. package/src/tool/inspect/execute.ts +23 -63
  431. package/src/tool/inspect/markdown.ts +114 -95
  432. package/src/tool/inspect/tui.ts +7 -7
  433. package/src/tool/orientation/execute.ts +50 -37
  434. package/src/tool/orientation/markdown.ts +26 -31
  435. package/src/tool/orientation/tui.ts +41 -39
  436. package/src/tool/refactor-apply/execute.ts +23 -9
  437. package/src/tool/refactor-apply/tui.ts +7 -3
  438. package/src/tool/refactor-plan/execute.ts +44 -61
  439. package/src/tool/refactor-plan/markdown.ts +33 -56
  440. package/src/tool/refactor-plan/tui.ts +10 -11
  441. package/src/tool/register.ts +6 -5
  442. package/src/tool/resolve/execute.ts +23 -69
  443. package/src/tool/resolve/markdown.ts +125 -114
  444. package/src/tool/resolve/tui.ts +11 -9
  445. package/src/tool/result/assembly.ts +125 -0
  446. package/src/tool/result/errors.ts +20 -34
  447. package/src/tool/result/find.ts +107 -21
  448. package/src/tool/result/graph.ts +163 -64
  449. package/src/tool/result/health.ts +170 -73
  450. package/src/tool/result/inspect.ts +183 -41
  451. package/src/tool/result/orientation.ts +118 -16
  452. package/src/tool/result/refactor.ts +101 -21
  453. package/src/tool/result/resolve.ts +243 -80
  454. package/src/tool/result/types.ts +100 -56
  455. package/src/tool/schemas.ts +160 -231
  456. package/src/tool/specs.ts +57 -168
  457. package/src/types/details.ts +2 -4
  458. package/src/types/execution.ts +6 -15
  459. package/src/types/index.ts +2 -4
  460. package/src/types/tool-names.ts +1 -2
  461. package/src/ui/footer.ts +3 -3
  462. package/src/ui/markdown/gather.ts +17 -65
  463. package/src/ui/markdown/overview-data.ts +143 -21
  464. package/src/ui/markdown/overview.ts +27 -8
  465. package/src/ui/markdown/types.ts +12 -16
  466. package/src/ui/status-command.ts +39 -31
  467. package/src/ui/status-overlay.ts +23 -15
  468. package/src/ui/tui/common.ts +121 -74
  469. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  470. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  471. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  472. package/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  473. package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  474. package/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  475. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  476. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  477. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  478. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  479. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  480. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  481. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-augmentation.ts +0 -82
  482. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-context.ts +0 -116
  483. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-display.ts +0 -69
  484. package/node_modules/@mrclrchtr/supi-lsp/src/manager/capability-index.ts +0 -24
  485. package/node_modules/@mrclrchtr/supi-lsp/src/manager/client-pool.ts +0 -33
  486. package/node_modules/@mrclrchtr/supi-lsp/src/manager/diagnostic-store.ts +0 -51
  487. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-stale-resync.ts +0 -47
  488. package/node_modules/@mrclrchtr/supi-lsp/src/manager/recovery-coordinator.ts +0 -37
  489. package/node_modules/@mrclrchtr/supi-lsp/src/manager/workspace-router.ts +0 -44
  490. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  491. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  492. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  493. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  494. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  495. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  496. package/src/analysis/brief/directory.ts +0 -324
  497. package/src/analysis/brief/enrich.ts +0 -157
  498. package/src/analysis/brief/file.ts +0 -84
  499. package/src/analysis/brief/inventory.ts +0 -177
  500. package/src/analysis/brief/main.ts +0 -176
  501. package/src/analysis/brief/models.ts +0 -75
  502. package/src/analysis/brief/public-brief.ts +0 -179
  503. package/src/analysis/brief/summarize.ts +0 -208
  504. package/src/analysis/brief/types.ts +0 -27
  505. package/src/analysis/brief/use-case.ts +0 -264
  506. package/src/analysis/search/ripgrep.ts +0 -558
  507. package/src/analysis/signals/git.ts +0 -89
  508. package/src/analysis/signals/project.ts +0 -189
  509. package/src/analysis/target/bridge.ts +0 -152
  510. package/src/analysis/target/file-resolution.ts +0 -125
  511. package/src/analysis/target/planner.ts +0 -92
  512. package/src/analysis/target/query.ts +0 -74
  513. package/src/analysis/target/resolve-common.ts +0 -115
  514. package/src/analysis/target/service.ts +0 -229
  515. package/src/analysis/tests/likely-tests.ts +0 -174
  516. package/src/analysis/tests/test-discovery.ts +0 -540
  517. package/src/analysis/tests/vitest.ts +0 -87
  518. package/src/app/manager.ts +0 -65
  519. package/src/substrate/lsp/diagnostic-injection.ts +0 -203
  520. package/src/substrate/lsp/overrides.ts +0 -132
  521. package/src/tool/find/orchestrate.ts +0 -317
  522. package/src/tool/find/semantic-search.ts +0 -128
  523. package/src/tool/graph/collect-relation.ts +0 -372
  524. package/src/tool/graph/orchestrate.ts +0 -259
  525. package/src/tool/health/orchestrate.ts +0 -151
  526. package/src/tool/health/sections/diagnostics.ts +0 -182
  527. package/src/tool/health/sections/recovery.ts +0 -89
  528. package/src/tool/health/sections/signals.ts +0 -89
  529. package/src/tool/impact/analysis.ts +0 -220
  530. package/src/tool/impact/change-set-impact.ts +0 -152
  531. package/src/tool/impact/execute.ts +0 -125
  532. package/src/tool/impact/file-level-impact.ts +0 -82
  533. package/src/tool/impact/markdown.ts +0 -283
  534. package/src/tool/impact/orchestrate.ts +0 -97
  535. package/src/tool/impact/result.ts +0 -2
  536. package/src/tool/impact/single-impact.ts +0 -90
  537. package/src/tool/impact/tui.ts +0 -39
  538. package/src/tool/impact/types.ts +0 -34
  539. package/src/tool/infra/cross-field.ts +0 -335
  540. package/src/tool/infra/pipeline.ts +0 -334
  541. package/src/tool/infra/readiness-message.ts +0 -5
  542. package/src/tool/inspect/orchestrate.ts +0 -154
  543. package/src/tool/orientation/deps.ts +0 -63
  544. package/src/tool/orientation/mode.ts +0 -139
  545. package/src/tool/orientation/orchestrate.ts +0 -475
  546. package/src/tool/orientation/precise-target.ts +0 -253
  547. package/src/tool/params.ts +0 -15
  548. package/src/tool/refactor-apply/markdown.ts +0 -118
  549. package/src/tool/refactor-apply/orchestrate.ts +0 -84
  550. package/src/tool/refactor-plan/orchestrate.ts +0 -355
  551. package/src/tool/resolve/orchestrate.ts +0 -38
  552. package/src/tool/result/impact.ts +0 -50
  553. package/src/ui/markdown/brief.ts +0 -218
  554. package/src/ui/message-renderer.ts +0 -121
  555. package/src/ui/tui/index.ts +0 -37
  556. /package/src/{tool/graph → analysis/relations}/callees.ts +0 -0
@@ -1,540 +0,0 @@
1
- // biome-ignore-all lint/style/noExcessiveLinesPerFile: shared test discovery and presentation helpers stay together to preserve one contract
2
- /**
3
- * Shared test-file discovery helpers.
4
- *
5
- * Used by `code_graph` and `code_impact` to find companion
6
- * test files and extract recognizable test labels.
7
- *
8
- * The discovery uses two strategies:
9
- * 1. **Semantic reference/import evidence** — files that import the source and match test patterns.
10
- * 2. **Deterministic path conventions** — package-layout mirrors, same-directory companions.
11
- *
12
- * Discovery provenance describes only how test files were found. Test-label
13
- * extraction is tracked separately so callers do not overload provenance with
14
- * outline/provider availability claims.
15
- */
16
-
17
- import { existsSync, readFileSync } from "node:fs";
18
- import * as path from "node:path";
19
- import { fileURLToPath } from "node:url";
20
- import type {
21
- CodePosition,
22
- SemanticProvider,
23
- StructuralProvider,
24
- } from "@mrclrchtr/supi-code-runtime/api";
25
-
26
- // ── Public interface ─────────────────────────────────────────────────
27
-
28
- export interface DiscoverTestFilesOptions {
29
- /** Semantic provider references method. When absent, no reference-based discovery. */
30
- references?: SemanticProvider["references"];
31
- /** Structural provider outline method. When present, test labels are extracted. */
32
- outline?: StructuralProvider["outline"];
33
- /** Current working directory used for package-root detection and relative display. */
34
- cwd?: string;
35
- /** Maximum number of test files to return (default: 8). */
36
- cap?: number;
37
- /** LSP position to look up references at (default: file start). */
38
- position?: CodePosition;
39
- }
40
-
41
- /** Label extraction status for one discovered companion test file. */
42
- export type TestLabelExtractionStatus = "recognized" | "none-recognized" | "unavailable";
43
-
44
- export interface DiscoveredTestFile {
45
- /** Absolute path to the discovered test file. */
46
- absPath: string;
47
- /** How this file was discovered. */
48
- provenance: "semantic reference" | "companion file" | "package layout";
49
- /** Recognized test labels extracted from outline when available. */
50
- testNames: string[];
51
- /** Extraction status separate from file-discovery provenance. */
52
- labelStatus: TestLabelExtractionStatus;
53
- }
54
-
55
- /** Compact per-file metadata shared in tool details. */
56
- export interface TestSurfaceFile {
57
- /** Workspace-relative test file path when cwd is known, else absolute path. */
58
- file: string;
59
- /** Ranked extracted labels shown to users/consumers. */
60
- labels: string[];
61
- /** Whether labels were recognized, absent, or unavailable. */
62
- labelStatus: TestLabelExtractionStatus;
63
- }
64
-
65
- /** Small shared tests metadata shape for tool details. */
66
- export interface TestSurfaceDetails {
67
- /** Whether companion tests were found, empty, or unavailable. */
68
- status: TestDiscoveryKind;
69
- /** Discovery provenance only; omitted when unavailable. */
70
- provenance?: TestDiscoveryProvenance;
71
- /** Per-file extracted labels and status. */
72
- files: TestSurfaceFile[];
73
- }
74
-
75
- /** Evidence source for test discovery. */
76
- export type TestDiscoveryProvenance = "semantic+conventions" | "conventions-only";
77
-
78
- export type TestDiscoveryKind = "found" | "empty" | "unavailable";
79
-
80
- export type TestDiscoveryReason = "no-semantic-or-structural-provider" | "no-companion-test-files";
81
-
82
- /** Result of a test discovery call, with files and overall provenance. */
83
- export interface DiscoverTestFilesResult {
84
- /** Normalized outcome for callers: found, empty, or unavailable. */
85
- kind: TestDiscoveryKind;
86
- /** Optional normalized reason for empty or unavailable outcomes. */
87
- reason?: TestDiscoveryReason;
88
- /** Discovered test files, deduplicated, sorted, and capped. */
89
- files: DiscoveredTestFile[];
90
- /**
91
- * Discovery provenance.
92
- * - `semantic+conventions`: semantic reference evidence contributed.
93
- * - `conventions-only`: only deterministic path/layout conventions contributed.
94
- */
95
- provenance: TestDiscoveryProvenance;
96
- /** Whether a semantic references provider was available (non-null). */
97
- semanticsAvailable: boolean;
98
- /** Whether a structural outline provider was available (non-null). */
99
- structuralAvailable: boolean;
100
- }
101
-
102
- interface ExtractedTestLabels {
103
- names: string[];
104
- status: TestLabelExtractionStatus;
105
- }
106
-
107
- /** Read label data for one known test file without assigning discovery provenance. */
108
- export async function describeTestFile(
109
- testFile: string,
110
- options: { outline?: StructuralProvider["outline"]; cwd: string },
111
- ): Promise<Pick<DiscoveredTestFile, "absPath" | "testNames" | "labelStatus">> {
112
- const extracted = await extractTestLabels(testFile, options.outline, options.cwd);
113
- return {
114
- absPath: testFile,
115
- testNames: extracted.names,
116
- labelStatus: extracted.status,
117
- };
118
- }
119
-
120
- /** Build a small shared tests metadata shape for structured tool details. */
121
- export function buildTestSurfaceDetails(
122
- input: {
123
- status: TestDiscoveryKind;
124
- provenance?: TestDiscoveryProvenance;
125
- files: Array<Pick<DiscoveredTestFile, "absPath" | "testNames" | "labelStatus">>;
126
- },
127
- cwd: string,
128
- labelLimit = 8,
129
- ): TestSurfaceDetails {
130
- return {
131
- status: input.status,
132
- provenance: input.status === "unavailable" ? undefined : input.provenance,
133
- files: input.files.map((file) => ({
134
- file: path.relative(cwd, file.absPath) || file.absPath,
135
- labels: rankTestLabels(file.testNames, labelLimit),
136
- labelStatus: file.labelStatus,
137
- })),
138
- };
139
- }
140
-
141
- /** Render ranked labels for markdown output, or an honest placeholder when none were recognized. */
142
- export function renderRankedTestLabelsForMarkdown(names: string[], limit: number): string[] {
143
- const ranked = rankTestLabels(names, limit);
144
- if (ranked.length === 0) return [" _(no recognized test blocks)_"];
145
- return ranked.map((name) => ` - \`${name}\``);
146
- }
147
-
148
- /**
149
- * Discover companion test files for a source file using both semantic evidence
150
- * and deterministic path conventions.
151
- *
152
- * Returns discovered test files with metadata, deduplicated, sorted, and capped.
153
- */
154
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: reference-based + convention-based discovery orchestration stays together
155
- export async function discoverTestFilesForSource(
156
- sourceAbs: string,
157
- options: DiscoverTestFilesOptions,
158
- ): Promise<DiscoverTestFilesResult> {
159
- sourceAbs = path.resolve(sourceAbs);
160
-
161
- const cap = options.cap ?? 8;
162
- const seen = new Set<string>();
163
- const results: DiscoveredTestFile[] = [];
164
- const semanticsAvailable = options.references != null;
165
- const structuralAvailable = options.outline != null;
166
-
167
- let semanticContributed = false;
168
- if (options.references) {
169
- const refs = await options.references(sourceAbs, options.position ?? { line: 0, character: 0 });
170
- if (refs && refs.length > 0) {
171
- const refFiles = [
172
- ...new Set(
173
- refs
174
- .filter((ref) => isTestFilePath(ref.uri))
175
- .map((ref) => (ref.uri.startsWith("file://") ? fileURLToPath(ref.uri) : ref.uri)),
176
- ),
177
- ];
178
-
179
- if (refFiles.length > 0) {
180
- semanticContributed = true;
181
- }
182
-
183
- for (const absPath of refFiles) {
184
- if (seen.has(absPath)) continue;
185
- seen.add(absPath);
186
- const described = await describeTestFile(absPath, {
187
- outline: options.outline,
188
- cwd: options.cwd ?? path.dirname(sourceAbs),
189
- });
190
- results.push({
191
- ...described,
192
- provenance: "semantic reference",
193
- });
194
- }
195
- }
196
- }
197
-
198
- const conventionFiles = findConventionTestFiles(sourceAbs, options.cwd);
199
- for (const absPath of conventionFiles) {
200
- if (seen.has(absPath)) continue;
201
- seen.add(absPath);
202
- const described = await describeTestFile(absPath, {
203
- outline: options.outline,
204
- cwd: options.cwd ?? path.dirname(sourceAbs),
205
- });
206
- results.push({
207
- ...described,
208
- provenance: "companion file",
209
- });
210
- }
211
-
212
- results.sort((a, b) => a.absPath.localeCompare(b.absPath));
213
- const files = results.slice(0, cap);
214
- const provenance: TestDiscoveryProvenance = semanticContributed
215
- ? "semantic+conventions"
216
- : "conventions-only";
217
-
218
- if (files.length === 0) {
219
- if (!semanticsAvailable && !structuralAvailable) {
220
- return {
221
- kind: "unavailable",
222
- reason: "no-semantic-or-structural-provider",
223
- files,
224
- provenance,
225
- semanticsAvailable,
226
- structuralAvailable,
227
- };
228
- }
229
-
230
- return {
231
- kind: "empty",
232
- reason: "no-companion-test-files",
233
- files,
234
- provenance,
235
- semanticsAvailable,
236
- structuralAvailable,
237
- };
238
- }
239
-
240
- return {
241
- kind: "found",
242
- files,
243
- provenance,
244
- semanticsAvailable,
245
- structuralAvailable,
246
- };
247
- }
248
-
249
- // ── Internal helpers ─────────────────────────────────────────────────
250
-
251
- /**
252
- * Apply deterministic path conventions to discover test files for a source.
253
- *
254
- * Checks:
255
- * 1. Same-directory: `./basename.test.ext`, `./basename.spec.ext`
256
- * 2. Same-directory test dirs: `./__tests__/`, `./tests/`, `./spec/`, `./__spec__/`
257
- * each with `basename.test.ext` and `basename.spec.ext`
258
- * 3. Package-level mirrors: `<pkg>/<test-layout>/<unit|integration>/<src-relative>`
259
- * using both `.test.ext` and `.spec.ext` variants.
260
- *
261
- * Does NOT match files whose bare stem contains `test` or `spec` without boundary boundaries
262
- * (e.g. `contest.ts`, `testing.ts`, `tool-specs.ts` are excluded).
263
- */
264
- const TEST_LAYOUT_PREFIXES = [
265
- "__tests__/unit",
266
- "__tests__/integration",
267
- "tests/unit",
268
- "tests/integration",
269
- "spec/unit",
270
- "spec/integration",
271
- "__spec__/unit",
272
- "__spec__/integration",
273
- ] as const;
274
- const TEST_FILE_SUFFIXES = [".test", ".spec"] as const;
275
-
276
- function findConventionTestFiles(sourceAbs: string, cwd?: string): string[] {
277
- const results: string[] = [];
278
- const seen = new Set<string>();
279
-
280
- const dir = path.dirname(sourceAbs);
281
- const ext = path.extname(sourceAbs);
282
- const basename = path.basename(sourceAbs, ext);
283
-
284
- // Guard: skip false-positive source stems that look like tests but aren't.
285
- if (/^contest$/i.test(basename) || /^testing$/i.test(basename) || /tool-specs$/i.test(basename)) {
286
- // Source itself is not a test; still permit companion discovery.
287
- }
288
-
289
- for (const suffix of TEST_FILE_SUFFIXES) {
290
- addExistingTestCandidate(results, seen, path.join(dir, `${basename}${suffix}${ext}`));
291
- }
292
-
293
- for (const suffix of TEST_FILE_SUFFIXES) {
294
- const companion = `${basename}${suffix}${ext}`;
295
- addExistingTestCandidate(results, seen, path.join(dir, "__tests__", companion));
296
- addExistingTestCandidate(results, seen, path.join(dir, "tests", companion));
297
- addExistingTestCandidate(results, seen, path.join(dir, "spec", companion));
298
- addExistingTestCandidate(results, seen, path.join(dir, "__spec__", companion));
299
- }
300
-
301
- if (cwd) {
302
- const pkgRoot = findNearestPackageRoot(dir, cwd);
303
- if (pkgRoot) {
304
- addPackageMirrorCandidates(results, seen, { pkgRoot, sourceAbs, ext });
305
- addBoundedToolCandidates(results, seen, { pkgRoot, dir, basename, ext });
306
- }
307
- }
308
-
309
- return results;
310
- }
311
-
312
- function addExistingTestCandidate(results: string[], seen: Set<string>, candidate: string): void {
313
- if (seen.has(candidate) || !existsSync(candidate)) return;
314
- seen.add(candidate);
315
- results.push(candidate);
316
- }
317
-
318
- function addPackageMirrorCandidates(
319
- results: string[],
320
- seen: Set<string>,
321
- options: { pkgRoot: string; sourceAbs: string; ext: string },
322
- ): void {
323
- const { pkgRoot, sourceAbs, ext } = options;
324
- const relFromPkg = path.relative(pkgRoot, sourceAbs);
325
-
326
- for (const testPrefix of TEST_LAYOUT_PREFIXES) {
327
- let mirroredRel = relFromPkg;
328
- for (const srcPrefix of ["src/", "lib/", "source/"]) {
329
- if (mirroredRel.startsWith(srcPrefix)) {
330
- mirroredRel = mirroredRel.slice(srcPrefix.length);
331
- break;
332
- }
333
- }
334
-
335
- for (const suffix of TEST_FILE_SUFFIXES) {
336
- const mirroredName = `${path.basename(mirroredRel, ext)}${suffix}${ext}`;
337
- const mirroredDir = path.dirname(mirroredRel);
338
- addExistingTestCandidate(
339
- results,
340
- seen,
341
- path.join(pkgRoot, testPrefix, mirroredDir, mirroredName),
342
- );
343
- }
344
- }
345
- }
346
-
347
- function addBoundedToolCandidates(
348
- results: string[],
349
- seen: Set<string>,
350
- options: { pkgRoot: string; dir: string; basename: string; ext: string },
351
- ): void {
352
- const { pkgRoot, dir, basename, ext } = options;
353
- const relDirFromPkg = path.relative(pkgRoot, dir).replaceAll("\\", "/");
354
-
355
- // Match flat tool layouts: src/tool/execute-<name>.ts or legacy src/tools/execute-<name>.ts.
356
- const toolSrcMatch = basename.match(/^execute-(.+)$/);
357
- // Match feature layouts: src/tool/<name>/execute.ts or legacy src/tools/<name>/execute.ts.
358
- const featureDirMatch = relDirFromPkg.match(/^src\/tools?\/([^/]+)$/);
359
- const featureSrcMatch = featureDirMatch && basename === "execute";
360
-
361
- let toolName: string | null = null;
362
- if (toolSrcMatch && (relDirFromPkg === "src/tool" || relDirFromPkg === "src/tools")) {
363
- toolName = toolSrcMatch[1];
364
- } else if (featureSrcMatch && featureDirMatch) {
365
- toolName = featureDirMatch[1];
366
- }
367
- if (!toolName || toolName.length === 0) return;
368
-
369
- const boundedStems = [`code-${toolName}-tool`, `${toolName}-tool`, `execute-${toolName}`];
370
- for (const testPrefix of TEST_LAYOUT_PREFIXES) {
371
- for (const stem of boundedStems) {
372
- for (const suffix of TEST_FILE_SUFFIXES) {
373
- addExistingTestCandidate(
374
- results,
375
- seen,
376
- path.join(pkgRoot, testPrefix, `${stem}${suffix}${ext}`),
377
- );
378
- }
379
- }
380
- }
381
- }
382
-
383
- /**
384
- * Walk up from `startDir` until we find a directory with a `package.json`,
385
- * then return that directory path. Returns null if nothing found up to the
386
- * filesystem root or `cwd` if cwd itself has a package.json.
387
- */
388
- function findNearestPackageRoot(startDir: string, cwd: string): string | null {
389
- if (existsSync(path.join(cwd, "package.json"))) {
390
- let current = startDir;
391
- while (current.startsWith(cwd)) {
392
- if (existsSync(path.join(current, "package.json"))) {
393
- return current;
394
- }
395
- const parent = path.dirname(current);
396
- if (parent === current) break;
397
- current = parent;
398
- }
399
- }
400
-
401
- let current = startDir;
402
- for (;;) {
403
- if (existsSync(path.join(current, "package.json"))) {
404
- return current;
405
- }
406
- const parent = path.dirname(current);
407
- if (parent === current) break;
408
- current = parent;
409
- }
410
-
411
- return null;
412
- }
413
-
414
- async function extractTestLabels(
415
- testFile: string,
416
- outline: StructuralProvider["outline"] | undefined,
417
- cwd: string,
418
- ): Promise<ExtractedTestLabels> {
419
- if (!outline) {
420
- return extractFallbackTestLabels(testFile);
421
- }
422
-
423
- try {
424
- const relPath = path.relative(cwd, testFile);
425
- const outlineResult = await outline(relPath);
426
- if (outlineResult.kind === "success") {
427
- const entries = outlineResult.data.map((item) => item.name);
428
- const testLike = entries.filter((name) => isTestLikeName(name)).slice(0, 8);
429
- if (testLike.length > 0) {
430
- return {
431
- names: testLike,
432
- status: "recognized",
433
- };
434
- }
435
-
436
- return extractFallbackTestLabels(testFile, "none-recognized");
437
- }
438
- } catch {
439
- // Continue with the conservative fallback parser.
440
- }
441
-
442
- return extractFallbackTestLabels(testFile);
443
- }
444
-
445
- function extractFallbackTestLabels(
446
- testFile: string,
447
- emptyStatus: TestLabelExtractionStatus = "unavailable",
448
- ): ExtractedTestLabels {
449
- try {
450
- const source = readFileSync(testFile, "utf-8");
451
- const matches = collectObviousTestCallLabels(source);
452
- if (matches.length > 0) {
453
- return {
454
- names: matches,
455
- status: "recognized",
456
- };
457
- }
458
- } catch {
459
- // Fall through to the explicit empty/unavailable result.
460
- }
461
-
462
- return { names: [], status: emptyStatus };
463
- }
464
-
465
- function collectObviousTestCallLabels(source: string): string[] {
466
- const labels: string[] = [];
467
- const seen = new Set<string>();
468
- const regex =
469
- /(^|[^\w$.])((?:describe|it|test|spec)(?:\.(?:only|skip|todo|concurrent|each))?)\(\s*(['"`])((?:\\.|(?!\3)[^\\])*)\3/gs;
470
-
471
- for (const match of source.matchAll(regex)) {
472
- const callee = match[2];
473
- const quote = match[3];
474
- const label = match[4];
475
- if (!callee || !quote || !label) continue;
476
- const rendered = `${callee}(${quote}${label}${quote})`;
477
- if (seen.has(rendered)) continue;
478
- seen.add(rendered);
479
- labels.push(rendered);
480
- if (labels.length >= 8) break;
481
- }
482
-
483
- return labels;
484
- }
485
-
486
- function rankTestLabels(names: string[], limit: number): string[] {
487
- const unique = [...new Set(names)];
488
- if (unique.length === 0) return [];
489
-
490
- const runnable = unique.filter((name) => isRunnableTestLabel(name));
491
- const describe = unique.filter((name) => isDescribeTestLabel(name));
492
- const other = unique.filter((name) => !isRunnableTestLabel(name) && !isDescribeTestLabel(name));
493
-
494
- if (runnable.length === 0) {
495
- return [...describe, ...other].slice(0, limit);
496
- }
497
-
498
- const describeCap = Math.min(2, describe.length);
499
- const runnableCap = Math.min(runnable.length, Math.max(1, limit - describeCap));
500
- const remainingAfterRunnable = Math.max(0, limit - runnableCap);
501
- const describeShown = describe.slice(0, Math.min(describeCap, remainingAfterRunnable));
502
- const remainingAfterDescribe = Math.max(0, limit - runnableCap - describeShown.length);
503
- const otherShown = other.slice(0, remainingAfterDescribe);
504
-
505
- return [...runnable.slice(0, runnableCap), ...describeShown, ...otherShown];
506
- }
507
-
508
- function isRunnableTestLabel(name: string): boolean {
509
- return /^(it|test|spec)\b/i.test(name);
510
- }
511
-
512
- function isDescribeTestLabel(name: string): boolean {
513
- return /^describe\b/i.test(name);
514
- }
515
-
516
- // ── Existing language-agnostic detection helpers ─────────────────────
517
-
518
- /** Test-support directories that should not be treated as runnable tests. */
519
- const TEST_SUPPORT_SEGMENTS = ["/__tests__/helpers/", "/__tests__/fixtures/"];
520
-
521
- /** Check if a file path points at test support code rather than a runnable test. */
522
- export function isTestSupportPath(filePath: string): boolean {
523
- const normalized = filePath.replaceAll("\\", "/");
524
- return TEST_SUPPORT_SEGMENTS.some((segment) => normalized.includes(segment));
525
- }
526
-
527
- /** Check if an outline name looks like a test declaration. */
528
- export function isTestLikeName(name: string): boolean {
529
- return /^(test|it|describe|spec)\b/i.test(name) || /^(test|it|describe|spec)$/i.test(name);
530
- }
531
-
532
- /** Check if a relative file path looks like a test file location. */
533
- export function isTestFilePath(relPath: string): boolean {
534
- if (isTestSupportPath(relPath)) {
535
- return false;
536
- }
537
-
538
- const normalized = relPath.replaceAll("\\", "/");
539
- return /\.test\.|\.spec\.|\/__tests__\//.test(normalized);
540
- }
@@ -1,87 +0,0 @@
1
- /**
2
- * Vitest workspace detection helpers.
3
- *
4
- * Extracted from orchestrate.ts to keep impact orchestration focused.
5
- */
6
-
7
- import { existsSync, readFileSync } from "node:fs";
8
- import * as path from "node:path";
9
-
10
- export const VITEST_RUNNABLE_EXTENSIONS = new Set([
11
- ".js",
12
- ".jsx",
13
- ".ts",
14
- ".tsx",
15
- ".mjs",
16
- ".cjs",
17
- ".mts",
18
- ".cts",
19
- ]);
20
-
21
- const VITEST_CONFIG_FILES = [
22
- "vitest.config.ts",
23
- "vitest.config.mts",
24
- "vitest.config.cts",
25
- "vitest.config.js",
26
- "vitest.config.mjs",
27
- "vitest.config.cjs",
28
- "vitest.workspace.ts",
29
- "vitest.workspace.mts",
30
- "vitest.workspace.cts",
31
- "vitest.workspace.js",
32
- "vitest.workspace.mjs",
33
- "vitest.workspace.cjs",
34
- ];
35
-
36
- export function detectVitestWorkspace(cwd: string): boolean {
37
- let current = path.resolve(cwd);
38
-
39
- for (;;) {
40
- if (packageJsonUsesVitest(current) || hasVitestConfig(current)) {
41
- return true;
42
- }
43
- if (existsSync(path.join(current, ".git"))) {
44
- return false;
45
- }
46
-
47
- const parent = path.dirname(current);
48
- if (parent === current) {
49
- return false;
50
- }
51
- current = parent;
52
- }
53
- }
54
-
55
- function packageJsonUsesVitest(dir: string): boolean {
56
- const packageJsonPath = path.join(dir, "package.json");
57
- if (!existsSync(packageJsonPath)) {
58
- return false;
59
- }
60
-
61
- try {
62
- const parsed = JSON.parse(readFileSync(packageJsonPath, "utf-8")) as {
63
- scripts?: Record<string, string>;
64
- dependencies?: Record<string, string>;
65
- devDependencies?: Record<string, string>;
66
- peerDependencies?: Record<string, string>;
67
- optionalDependencies?: Record<string, string>;
68
- };
69
-
70
- if (Object.values(parsed.scripts ?? {}).some((script) => script.includes("vitest"))) {
71
- return true;
72
- }
73
-
74
- return [
75
- parsed.dependencies,
76
- parsed.devDependencies,
77
- parsed.peerDependencies,
78
- parsed.optionalDependencies,
79
- ].some((deps) => Boolean(deps?.vitest));
80
- } catch {
81
- return false;
82
- }
83
- }
84
-
85
- function hasVitestConfig(dir: string): boolean {
86
- return VITEST_CONFIG_FILES.some((file) => existsSync(path.join(dir, file)));
87
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * Workspace-session lifecycle management.
3
- *
4
- * Owns per-cwd workspace session instances. Sessions are created
5
- * once per cwd and reused until explicitly released or shut down.
6
- *
7
- * Does NOT own the shared capability broker in @mrclrchtr/supi-code-runtime
8
- * — sessions read from it.
9
- */
10
-
11
- import { WorkspaceCodeIntelligenceSession } from "../session/session.ts";
12
-
13
- /**
14
- * Manages per-cwd workspace session instances.
15
- */
16
- export class WorkspaceManager {
17
- /** Active sessions keyed by cwd. */
18
- readonly #sessions = new Map<string, WorkspaceCodeIntelligenceSession>();
19
-
20
- /**
21
- * Get the session for a cwd, or undefined if none exists.
22
- */
23
- getSession(cwd: string): WorkspaceCodeIntelligenceSession | undefined {
24
- return this.#sessions.get(cwd);
25
- }
26
-
27
- /**
28
- * Get or create a session for the given cwd.
29
- * Returns the existing session if one already exists for this cwd.
30
- */
31
- getOrCreateSession(cwd: string): WorkspaceCodeIntelligenceSession {
32
- let session = this.#sessions.get(cwd);
33
- if (!session) {
34
- session = new WorkspaceCodeIntelligenceSession(cwd);
35
- this.#sessions.set(cwd, session);
36
- }
37
- return session;
38
- }
39
-
40
- /**
41
- * Release a session for a specific cwd.
42
- * Does NOT affect the shared capability broker.
43
- */
44
- releaseSession(cwd: string): void {
45
- this.#sessions.delete(cwd);
46
- }
47
-
48
- /**
49
- * Release all sessions.
50
- * Does NOT affect the shared capability broker.
51
- */
52
- shutdown(): void {
53
- this.#sessions.clear();
54
- }
55
-
56
- /** Get the number of active sessions. */
57
- get size(): number {
58
- return this.#sessions.size;
59
- }
60
-
61
- /** Iterate over all active sessions. */
62
- allSessions(): IterableIterator<WorkspaceCodeIntelligenceSession> {
63
- return this.#sessions.values();
64
- }
65
- }