@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,189 +0,0 @@
1
- import * as path from "node:path";
2
- import { readJsonFile } from "@mrclrchtr/supi-core/config";
3
- import type { SessionLspServiceState } from "@mrclrchtr/supi-lsp/api";
4
-
5
- export interface PrioritySignalsSummary {
6
- diagnosticsCount: number;
7
- lowCoverageCount: number;
8
- unusedCount: number;
9
- warnings: string[];
10
- }
11
-
12
- export interface LoadedSignals {
13
- diagnostics: Array<{ file: string; total: number; errors: number; warnings: number }>;
14
- coverageByFile: Map<string, number>;
15
- unusedFiles: Set<string>;
16
- unusedExports: Array<{ file: string; name: string }>;
17
- }
18
-
19
- export interface LoadPrioritizationSignalsOptions {
20
- coveragePath?: string;
21
- unusedPath?: string;
22
- }
23
-
24
- export function summarizePrioritySignalsForFiles(
25
- cwd: string,
26
- files: Iterable<string>,
27
- lspService: SessionLspServiceState,
28
- ): PrioritySignalsSummary | null {
29
- const loaded = loadPrioritizationSignals(cwd, lspService);
30
- const relevantFiles = new Set([...files].map((file) => path.resolve(cwd, file)));
31
- if (relevantFiles.size === 0) return null;
32
-
33
- const warnings: string[] = [];
34
-
35
- const matchingDiagnostics = loaded.diagnostics.filter((entry) =>
36
- relevantFiles.has(path.resolve(entry.file)),
37
- );
38
- const diagnosticsCount = matchingDiagnostics.reduce((sum, entry) => sum + entry.total, 0);
39
- for (const entry of matchingDiagnostics.slice(0, 3)) {
40
- warnings.push(
41
- `Diagnostics: \`${path.relative(cwd, entry.file)}\` (${entry.total} total${entry.errors > 0 ? `, ${entry.errors} errors` : ""}${entry.warnings > 0 ? `, ${entry.warnings} warnings` : ""})`,
42
- );
43
- }
44
-
45
- const lowCoverage = [...loaded.coverageByFile.entries()]
46
- .filter(([file, pct]) => relevantFiles.has(path.resolve(file)) && pct < 50)
47
- .sort((a, b) => a[1] - b[1]);
48
- for (const [file, pct] of lowCoverage.slice(0, 3)) {
49
- warnings.push(`Low coverage: \`${path.relative(cwd, file)}\` (${pct.toFixed(0)}%)`);
50
- }
51
-
52
- const unusedFileMatches = [...loaded.unusedFiles]
53
- .filter((file) => relevantFiles.has(path.resolve(file)))
54
- .sort((a, b) => a.localeCompare(b));
55
- for (const file of unusedFileMatches.slice(0, 3)) {
56
- warnings.push(`Unused file: \`${path.relative(cwd, file)}\``);
57
- }
58
-
59
- const unusedExportMatches = loaded.unusedExports
60
- .filter((entry) => relevantFiles.has(path.resolve(entry.file)))
61
- .sort((a, b) => a.name.localeCompare(b.name));
62
- for (const entry of unusedExportMatches.slice(0, 3)) {
63
- warnings.push(`Unused export: \`${entry.name}\` in \`${path.relative(cwd, entry.file)}\``);
64
- }
65
-
66
- const summary: PrioritySignalsSummary = {
67
- diagnosticsCount,
68
- lowCoverageCount: lowCoverage.length,
69
- unusedCount: unusedFileMatches.length + unusedExportMatches.length,
70
- warnings,
71
- };
72
-
73
- return summary.diagnosticsCount > 0 || summary.lowCoverageCount > 0 || summary.unusedCount > 0
74
- ? summary
75
- : null;
76
- }
77
-
78
- export function loadPrioritizationSignals(
79
- cwd: string,
80
- lspService: SessionLspServiceState,
81
- options: LoadPrioritizationSignalsOptions = {},
82
- ): LoadedSignals {
83
- return {
84
- diagnostics: loadDiagnostics(cwd, lspService),
85
- coverageByFile: loadCoverageSummary(cwd, options.coveragePath),
86
- unusedFiles: loadUnusedFiles(cwd, options.unusedPath),
87
- unusedExports: loadUnusedExports(cwd, options.unusedPath),
88
- };
89
- }
90
-
91
- export function appendPrioritySignalsSection(
92
- lines: string[],
93
- summary: PrioritySignalsSummary | null,
94
- ): void {
95
- if (!summary || summary.warnings.length === 0) return;
96
- lines.push("## Priority Signals");
97
- for (const warning of summary.warnings.slice(0, 6)) {
98
- lines.push(`- ${warning}`);
99
- }
100
- lines.push("");
101
- }
102
-
103
- function loadDiagnostics(
104
- cwd: string,
105
- lspService: SessionLspServiceState,
106
- ): Array<{ file: string; total: number; errors: number; warnings: number }> {
107
- if (lspService.kind !== "ready") return [];
108
- if (typeof lspService.service.getOutstandingDiagnosticSummary !== "function") return [];
109
-
110
- return lspService.service.getOutstandingDiagnosticSummary(2).map((entry) => ({
111
- file: path.resolve(cwd, entry.file),
112
- total: entry.total,
113
- errors: entry.errors,
114
- warnings: entry.warnings,
115
- }));
116
- }
117
-
118
- function loadCoverageSummary(cwd: string, coveragePathInput?: string): Map<string, number> {
119
- const coveragePath = path.resolve(cwd, coveragePathInput ?? "coverage/coverage-summary.json");
120
- const parsed = readJsonFile(coveragePath);
121
- if (!parsed) return new Map();
122
-
123
- const map = new Map<string, number>();
124
- for (const [file, value] of Object.entries(parsed)) {
125
- if (file === "total" || typeof value !== "object" || value === null) continue;
126
- const linesPct = getPct(value, "lines");
127
- const statementsPct = getPct(value, "statements");
128
- const pct = Math.min(linesPct ?? 100, statementsPct ?? 100);
129
- map.set(path.resolve(cwd, file), pct);
130
- }
131
- return map;
132
- }
133
-
134
- function loadUnusedFiles(cwd: string, unusedPath?: string): Set<string> {
135
- const parsed = loadKnipJson(cwd, unusedPath);
136
- const values = Array.isArray(parsed?.files) ? parsed.files : [];
137
- const files = values
138
- .map((value) => toPathString(value))
139
- .filter((value): value is string => Boolean(value))
140
- .map((file) => path.resolve(cwd, file));
141
- return new Set(files);
142
- }
143
-
144
- function loadUnusedExports(
145
- cwd: string,
146
- unusedPath?: string,
147
- ): Array<{ file: string; name: string }> {
148
- const parsed = loadKnipJson(cwd, unusedPath);
149
- const values = Array.isArray(parsed?.exports) ? parsed.exports : [];
150
- const exports: Array<{ file: string; name: string }> = [];
151
-
152
- for (const value of values) {
153
- if (typeof value === "string") {
154
- exports.push({ file: path.resolve(cwd, value), name: path.basename(value) });
155
- continue;
156
- }
157
- if (typeof value !== "object" || value === null) continue;
158
- const record = value as Record<string, unknown>;
159
- const file = toPathString(record.file) ?? toPathString(record.path);
160
- const name = typeof record.name === "string" ? record.name : null;
161
- if (file && name) {
162
- exports.push({ file: path.resolve(cwd, file), name });
163
- }
164
- }
165
-
166
- return exports;
167
- }
168
-
169
- function loadKnipJson(cwd: string, unusedPath?: string): Record<string, unknown> | null {
170
- return readJsonFile(path.resolve(cwd, unusedPath ?? "knip.json"));
171
- }
172
-
173
- function getPct(value: object, key: string): number | null {
174
- const candidate = (value as Record<string, unknown>)[key];
175
- if (typeof candidate !== "object" || candidate === null) return null;
176
- const pct = (candidate as Record<string, unknown>).pct;
177
- return typeof pct === "number" ? pct : null;
178
- }
179
-
180
- function toPathString(value: unknown): string | null {
181
- if (typeof value === "string") return value;
182
- if (typeof value !== "object" || value === null) return null;
183
- const record = value as Record<string, unknown>;
184
- return typeof record.file === "string"
185
- ? record.file
186
- : typeof record.path === "string"
187
- ? record.path
188
- : null;
189
- }
@@ -1,152 +0,0 @@
1
- /**
2
- * Unified target resolution facade through src/analysis/target/*.
3
- *
4
- * This is the canonical resolution path. It handles anchored coordinates,
5
- * file-only, symbol discovery, and disambiguation cases through one path.
6
- */
7
-
8
- import type { SemanticProvider } from "@mrclrchtr/supi-code-runtime/api";
9
- import { normalizePath } from "../search/ripgrep.ts";
10
- import { resolveAnchoredSymbolTarget } from "./anchored.ts";
11
- import { resolveFileTargetGroup as resolveFile } from "./file.ts";
12
- import { normalizeQuery, type QueryInput } from "./query.ts";
13
- import { resolveSymbolTarget as resolveSymbol } from "./symbol.ts";
14
- import type {
15
- NormalizedQuery,
16
- ResolvedTargetData,
17
- ResolvedTargetGroupData,
18
- TargetOutcome,
19
- } from "./types.ts";
20
-
21
- export type { QueryInput } from "./query.ts";
22
-
23
- /**
24
- * Resolve a target from action params through one canonical path.
25
- *
26
- * Returns either a resolved target, a target group, or an error string.
27
- */
28
- export async function resolveTarget(
29
- params: QueryInput,
30
- cwd: string,
31
- semantic?: SemanticProvider,
32
- ): Promise<ResolvedTargetData | ResolvedTargetGroupData | string> {
33
- const query = normalizeQuery(params);
34
-
35
- switch (query.kind) {
36
- case "anchored":
37
- return resolveAnchoredCase(query, cwd, semantic);
38
-
39
- case "file": {
40
- const result = await resolveFile(query.file, cwd);
41
- if (result.kind === "error") return result.message;
42
- return result.group;
43
- }
44
-
45
- case "symbol": {
46
- if (!semantic) {
47
- return "**Error:** Symbol discovery requires active LSP. Use `file` + coordinates, or enable LSP and retry.";
48
- }
49
- const outcome = await resolveSymbol(query.symbol, cwd, semantic, {
50
- path: query.path,
51
- kind: query.symbolKind,
52
- exportedOnly: query.exportedOnly,
53
- });
54
- if (outcome.kind === "resolved") return outcome.target;
55
- if (outcome.kind === "error") return outcome.message;
56
- if (outcome.kind !== "disambiguation") {
57
- return "**Error:** Unexpected resolution outcome.";
58
- }
59
- // Disambiguation — format candidates
60
- return formatDisambiguation(query.symbol, outcome);
61
- }
62
-
63
- case "invalid":
64
- return `**Error:** ${query.reason}`;
65
- }
66
- }
67
-
68
- /**
69
- * Anchored case: route file + line + character through the same provider-backed
70
- * symbol resolver as `code_resolve`/`code_orientation` (resolveAnchoredSymbolTarget),
71
- * so `code_graph`/`code_impact` resolve real symbol targets (exact identifier
72
- * hit or declaration-header snap) instead of anonymous point targets.
73
- * Per ADR 0003 — no silent `name:null` point targets.
74
- */
75
- async function resolveAnchoredCase(
76
- query: Extract<NormalizedQuery, { kind: "anchored" }>,
77
- cwd: string,
78
- semantic: SemanticProvider | undefined,
79
- ): Promise<ResolvedTargetData | string> {
80
- const resolvedFile = normalizePath(query.file, cwd);
81
- const result = await resolveAnchoredSymbolTarget(
82
- resolvedFile,
83
- query.line,
84
- query.character,
85
- semantic ?? null,
86
- );
87
- if (result.kind === "error") return result.message;
88
- if (result.kind === "resolved") return result.target;
89
- if (result.kind === "disambiguation") {
90
- return formatAnchoredDisambiguation(query.file, query.line, query.character, result);
91
- }
92
- return "**Error:** Unexpected resolution outcome.";
93
- }
94
-
95
- function formatDisambiguation(
96
- symbol: string,
97
- result: Extract<TargetOutcome, { kind: "disambiguation" }>,
98
- ): string {
99
- const lines: string[] = [];
100
- lines.push(`# Disambiguation needed for \`${symbol}\``);
101
- lines.push("");
102
- const omitNote = result.omittedCount > 0 ? ` (+${result.omittedCount} more)` : "";
103
- lines.push(
104
- `Found ${result.candidates.length} candidates${omitNote}. Rerun with anchored coordinates:`,
105
- );
106
- lines.push("");
107
-
108
- for (const c of result.candidates) {
109
- const kind = c.kind ? ` (${c.kind})` : "";
110
- const container = c.container ? ` in ${c.container}` : "";
111
- lines.push(
112
- `${c.rank}. **${c.name}**${kind}${container} — \`${c.file}\`:${c.line}:${c.character}`,
113
- );
114
- }
115
-
116
- lines.push("");
117
- if (result.candidates.length > 0) {
118
- const first = result.candidates[0];
119
- lines.push(
120
- `Example: rerun with \`file: "${first.file}"\`, \`line: ${first.line}\`, and \`character: ${first.character}\`.`,
121
- );
122
- }
123
-
124
- return lines.join("\n");
125
- }
126
-
127
- /** Format anchored-coordinate disambiguation (multiple symbols match one coordinate). */
128
- function formatAnchoredDisambiguation(
129
- file: string,
130
- line: number,
131
- character: number,
132
- result: Extract<TargetOutcome, { kind: "disambiguation" }>,
133
- ): string {
134
- const lines: string[] = [];
135
- lines.push(`# Disambiguation needed at \`${file}:${line}:${character}\``);
136
- lines.push("");
137
- const omitNote = result.omittedCount > 0 ? ` (+${result.omittedCount} more)` : "";
138
- lines.push(
139
- `Found ${result.candidates.length} symbol candidates at this coordinate${omitNote}. Use \`code_resolve\` to pick one:`,
140
- );
141
- lines.push("");
142
-
143
- for (const c of result.candidates) {
144
- const kind = c.kind ? ` (${c.kind})` : "";
145
- const container = c.container ? ` in ${c.container}` : "";
146
- lines.push(
147
- `${c.rank}. **${c.name}**${kind}${container} — \`${c.file}\`:${c.line}:${c.character}`,
148
- );
149
- }
150
-
151
- return lines.join("\n");
152
- }
@@ -1,125 +0,0 @@
1
- /**
2
- * File-level resolution logic for code_resolve.
3
- *
4
- * Extracted from resolve/service.ts. Handles file-only resolution and
5
- * path-like query resolution for the code_resolve tool.
6
- */
7
-
8
- import { existsSync } from "node:fs";
9
- import { resolve } from "node:path";
10
- import type { WorkspaceCodeIntelligenceSession } from "../../session/session.ts";
11
- import type { CodeProvider } from "../provider.ts";
12
- import { normalizePath } from "../search/ripgrep.ts";
13
- import { resolveFileTargetGroup as resolveFile } from "./file.ts";
14
- import {
15
- type ResolveServiceParams,
16
- type ResolveServiceResult,
17
- registerFromTarget,
18
- } from "./resolve-common.ts";
19
-
20
- /** Resolve file-only (no coordinates) input. */
21
- export async function resolveFileOnlyInput(
22
- params: ResolveServiceParams,
23
- session: WorkspaceCodeIntelligenceSession,
24
- maxResults: number,
25
- provider: CodeProvider | null,
26
- ): Promise<ResolveServiceResult> {
27
- const cwd = session.cwd;
28
- const file = params.file;
29
- if (!file) {
30
- return { kind: "error", message: "**Error:** File required for file-level resolution." };
31
- }
32
- const resolvedFile = normalizePath(file, cwd);
33
- if (!existsSync(resolvedFile)) {
34
- return { kind: "error", message: `**Error:** File not found: \`${file}\`` };
35
- }
36
- const outcome = await resolveFile(file, cwd, {
37
- semantic: provider ?? undefined,
38
- structural: provider ?? undefined,
39
- });
40
- if (outcome.kind === "error") {
41
- return { kind: "error", message: outcome.message };
42
- }
43
- const targets = outcome.group.targets
44
- .slice(0, maxResults)
45
- .map((t) =>
46
- registerFromTarget({ ...t, position: t.position, confidence: t.confidence }, session, "file"),
47
- );
48
- return {
49
- kind: "resolved",
50
- targets,
51
- confidence: outcome.group.confidence,
52
- omittedCount: Math.max(0, outcome.group.targets.length - maxResults),
53
- nextQueries: [
54
- "Use `targetId` with `code_graph` for reference tracking",
55
- "Use `targetId` with `code_impact` for blast radius",
56
- ],
57
- };
58
- }
59
-
60
- /** Handle a path-like query with kind: "file". */
61
- export async function resolvePathQuery(
62
- query: string,
63
- session: WorkspaceCodeIntelligenceSession,
64
- maxResults: number,
65
- provider: CodeProvider | null,
66
- ): Promise<ResolveServiceResult | null> {
67
- const cwd = session.cwd;
68
- const candidatePath = resolvePathLikeQuery(query, cwd);
69
- if (!candidatePath) return null;
70
- const outcome = await resolveFile(candidatePath, cwd, {
71
- semantic: provider ?? undefined,
72
- structural: provider ?? undefined,
73
- });
74
- if (outcome.kind === "error") return null;
75
- const targets = outcome.group.targets
76
- .slice(0, maxResults)
77
- .map((t) =>
78
- registerFromTarget({ ...t, position: t.position, confidence: t.confidence }, session, "file"),
79
- );
80
- return {
81
- kind: "resolved",
82
- targets,
83
- confidence: outcome.group.confidence,
84
- omittedCount: Math.max(0, outcome.group.targets.length - maxResults),
85
- nextQueries: [
86
- "Use `targetId` with `code_graph` for reference tracking",
87
- "Use `targetId` with `code_impact` for blast radius",
88
- ],
89
- };
90
- }
91
-
92
- /** Attempt file-level resolution when query looks like a file path. */
93
- export async function tryPathLikeQuery(
94
- params: ResolveServiceParams,
95
- session: WorkspaceCodeIntelligenceSession,
96
- maxResults: number,
97
- provider: CodeProvider | null,
98
- ): Promise<ResolveServiceResult | null> {
99
- if (params.kind !== "file" && params.kind !== "File") return null;
100
- const query = params.query;
101
- if (!query || !isPathLike(query)) return null;
102
- return resolvePathQuery(query, session, maxResults, provider);
103
- }
104
-
105
- export function isPathLike(query: string): boolean {
106
- return (
107
- query.includes("/") || query.includes("\\") || query.endsWith(".ts") || query.endsWith(".js")
108
- );
109
- }
110
-
111
- /**
112
- * Attempt to resolve a path-like query string to an absolute file path.
113
- * Returns null if the path cannot be resolved to an existing file.
114
- */
115
- export function resolvePathLikeQuery(query: string, cwd: string): string | null {
116
- const candidate = resolve(cwd, query);
117
- if (existsSync(candidate)) {
118
- return candidate;
119
- }
120
- for (const ext of [".ts", ".tsx", ".js", ".jsx", ".json", ".md"]) {
121
- const withExt = candidate + ext;
122
- if (existsSync(withExt)) return withExt;
123
- }
124
- return null;
125
- }
@@ -1,92 +0,0 @@
1
- /**
2
- * Central planner for code-intelligence tool routing.
3
- *
4
- * Reads capability state from the shared workspace broker and returns
5
- * routing decisions for each tool intent. Keeps the execution strategy
6
- * explicit and centralized instead of scattering capability checks
7
- * across per-tool execute files.
8
- *
9
- * This is the canonical planner — src/planner/planner.ts becomes a
10
- * thin forwarder to here.
11
- */
12
-
13
- import { getDefaultWorkspaceRuntime } from "@mrclrchtr/supi-code-runtime/api";
14
- import type { CodeIntelligenceToolName, PlannerRoute } from "../../types/index.ts";
15
-
16
- interface RouteAvailability {
17
- semanticAvailable: boolean;
18
- structuralAvailable: boolean;
19
- refactorAvailable: boolean;
20
- }
21
-
22
- function readAvailability(cwd: string): RouteAvailability {
23
- const runtime = getDefaultWorkspaceRuntime();
24
- const workspace = runtime.getWorkspace(cwd);
25
- return {
26
- semanticAvailable:
27
- (workspace.semantic.state.kind === "ready" || workspace.semantic.state.kind === "pending") &&
28
- workspace.semantic.provider !== null,
29
- structuralAvailable:
30
- workspace.structural.state.kind === "ready" && workspace.structural.provider !== null,
31
- refactorAvailable: workspace.semantic.refactorAvailable,
32
- };
33
- }
34
-
35
- function withPreferred(
36
- availability: RouteAvailability,
37
- preferred: PlannerRoute["preferred"],
38
- ): PlannerRoute {
39
- return { ...availability, preferred };
40
- }
41
-
42
- function semanticOnly(availability: RouteAvailability): PlannerRoute["preferred"] {
43
- return availability.semanticAvailable ? "semantic" : "unavailable";
44
- }
45
-
46
- function briefPreferred(availability: RouteAvailability): PlannerRoute["preferred"] {
47
- if (availability.semanticAvailable) return "semantic";
48
- if (availability.structuralAvailable) return "structural";
49
- return "unavailable";
50
- }
51
-
52
- /**
53
- * Get the routing decision for a tool intent in a workspace.
54
- */
55
- export function routeFor(cwd: string, tool: CodeIntelligenceToolName): PlannerRoute {
56
- const availability = readAvailability(cwd);
57
-
58
- if (tool === "code_graph") {
59
- // code_graph dispatches per-relation at execution time. Return the best
60
- // available preference; the executor handles per-relation unavailability.
61
- if (availability.semanticAvailable) return withPreferred(availability, "semantic");
62
- if (availability.structuralAvailable) return withPreferred(availability, "structural");
63
- return withPreferred(availability, "unavailable");
64
- }
65
-
66
- if (tool === "code_orientation" || tool === "code_inspect") {
67
- return withPreferred(availability, briefPreferred(availability));
68
- }
69
-
70
- if (tool === "code_impact") {
71
- return withPreferred(availability, semanticOnly(availability));
72
- }
73
-
74
- if (tool === "code_refactor_plan") {
75
- return withPreferred(availability, availability.refactorAvailable ? "semantic" : "unavailable");
76
- }
77
-
78
- if (tool === "code_refactor_apply") {
79
- // Plan application does not require a live semantic provider — validity
80
- // is enforced through fingerprint comparison in the executor.
81
- // Return semantic-preferred so the route check never blocks valid plans.
82
- return withPreferred(availability, "semantic");
83
- }
84
-
85
- if (tool === "code_health") {
86
- // code_health reads diagnostics and server state from the LSP service
87
- // directly; it does not require live semantic/structural providers.
88
- return withPreferred(availability, "search");
89
- }
90
-
91
- return withPreferred(availability, briefPreferred(availability));
92
- }
@@ -1,74 +0,0 @@
1
- /**
2
- * Query normalization — converts raw tool/action parameters into a
3
- * pre-classified {@link NormalizedQuery}.
4
- *
5
- * This is the first step in the targeting pipeline. Callers receive
6
- * a disambiguated query kind so downstream resolvers can dispatch
7
- * without re-checking input shapes.
8
- */
9
-
10
- import type { NormalizedQuery } from "./types.ts";
11
-
12
- export interface QueryInput {
13
- path?: string;
14
- file?: string;
15
- line?: number;
16
- character?: number;
17
- symbol?: string;
18
- kind?: string;
19
- exportedOnly?: boolean;
20
- }
21
-
22
- /**
23
- * Normalize a raw params bag into a typed {@link NormalizedQuery}.
24
- *
25
- * Priority order:
26
- * 1. anchored: file + line + character
27
- * 2. scoped symbol: file + symbol (without coordinates) — uses file as path scope for symbol discovery
28
- * 3. file: file without coordinates or symbol
29
- * 4. symbol: symbol without file
30
- * 5. invalid: neither file nor symbol
31
- */
32
- export function normalizeQuery(input: QueryInput): NormalizedQuery {
33
- if (input.file && input.line != null && input.character != null) {
34
- return {
35
- kind: "anchored",
36
- file: input.file,
37
- line: input.line,
38
- character: input.character,
39
- };
40
- }
41
-
42
- // Scoped symbol: both file and symbol present, no line/character.
43
- // The file acts as a path scope for symbol discovery — resolves to a
44
- // precise target within that file rather than a file-level group.
45
- if (input.file && input.symbol) {
46
- return {
47
- kind: "symbol",
48
- symbol: input.symbol,
49
- path: input.file,
50
- symbolKind: input.kind,
51
- exportedOnly: input.exportedOnly,
52
- };
53
- }
54
-
55
- if (input.file) {
56
- return { kind: "file", file: input.file };
57
- }
58
-
59
- if (input.symbol) {
60
- return {
61
- kind: "symbol",
62
- symbol: input.symbol,
63
- path: input.path,
64
- symbolKind: input.kind,
65
- exportedOnly: input.exportedOnly,
66
- };
67
- }
68
-
69
- return {
70
- kind: "invalid",
71
- reason:
72
- "Semantic actions require either anchored coordinates (`file`, `line`, `character`) or a `symbol` for discovery.",
73
- };
74
- }