@mrclrchtr/supi-code-intelligence 3.2.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (577) hide show
  1. package/README.md +157 -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/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
  10. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
  11. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
  12. package/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  13. package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  14. package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  15. package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  16. package/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  17. package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  18. package/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  19. package/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  20. package/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  21. package/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  22. package/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  23. package/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  24. package/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
  25. package/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
  26. package/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
  27. package/node_modules/@mrclrchtr/supi-lsp/README.md +72 -62
  28. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  29. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -8
  30. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  31. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  32. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  33. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  34. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  35. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
  36. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
  37. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
  38. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  39. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  40. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  41. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  42. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  43. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  44. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  45. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  46. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  47. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  48. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  49. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  50. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
  51. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
  52. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
  53. package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -5
  54. package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +9 -9
  55. package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +70 -41
  56. package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +16 -13
  57. package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +2 -2
  58. package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +0 -2
  59. package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +6 -6
  60. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-diagnostics.ts +5 -95
  61. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-recovery.ts +4 -3
  62. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +44 -6
  63. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +47 -65
  64. package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +132 -79
  65. package/node_modules/@mrclrchtr/supi-lsp/src/provider/refactor-planning.ts +6 -14
  66. package/node_modules/@mrclrchtr/supi-lsp/src/session/readiness.ts +38 -0
  67. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +87 -75
  68. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +5 -5
  69. package/node_modules/@mrclrchtr/supi-lsp/src/session/{service-registry.ts → runtime-registry.ts} +163 -71
  70. package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +4 -0
  71. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  72. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -8
  73. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  74. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  75. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  76. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  77. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  78. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
  79. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
  80. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
  81. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  82. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  83. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  84. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  85. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  86. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  87. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  88. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  89. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  90. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  91. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  92. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  93. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +1 -0
  94. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +9 -0
  95. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings.ts +1 -0
  96. package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +4 -21
  97. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm +0 -0
  98. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm.json +2 -2
  99. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm +0 -0
  100. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm.json +2 -2
  101. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm +0 -0
  102. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm.json +2 -2
  103. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm +0 -0
  104. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm.json +2 -2
  105. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm +0 -0
  106. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm.json +2 -2
  107. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm +0 -0
  108. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm.json +2 -2
  109. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm +0 -0
  110. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm.json +2 -2
  111. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/rust/tree-sitter-rust.wasm.json +1 -1
  112. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm +0 -0
  113. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm.json +3 -3
  114. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-kotlin-wasm.mjs +6 -0
  115. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-sql-wasm.mjs +18 -4
  116. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/vendor-wasm.mjs +17 -1
  117. package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +2 -0
  118. package/node_modules/@mrclrchtr/supi-tree-sitter/src/coordinates.ts +20 -41
  119. package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +2 -0
  120. package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +7 -0
  121. package/node_modules/@mrclrchtr/supi-tree-sitter/src/operation-support.ts +40 -0
  122. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +9 -7
  123. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +6 -1
  124. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +76 -37
  125. package/node_modules/yaml/LICENSE +13 -0
  126. package/node_modules/yaml/README.md +172 -0
  127. package/node_modules/yaml/bin.mjs +11 -0
  128. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  129. package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  130. package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  131. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  132. package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
  133. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  134. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  135. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  136. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  137. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  138. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
  139. package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  140. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  141. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  142. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  143. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  144. package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  145. package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  146. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  147. package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  148. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  149. package/node_modules/yaml/browser/dist/errors.js +57 -0
  150. package/node_modules/yaml/browser/dist/index.js +17 -0
  151. package/node_modules/yaml/browser/dist/log.js +11 -0
  152. package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
  153. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  154. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  155. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  156. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  157. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  158. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  159. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  160. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  161. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  162. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  163. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  164. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  165. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  166. package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
  167. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  168. package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
  169. package/node_modules/yaml/browser/dist/public-api.js +102 -0
  170. package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  171. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  172. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  173. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  174. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  175. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  176. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  177. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  178. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  179. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  180. package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  181. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  182. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  183. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  184. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  185. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
  186. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  187. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  188. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  189. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  190. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  191. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  192. package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  193. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  194. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  195. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  196. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
  197. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  198. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  199. package/node_modules/yaml/browser/dist/util.js +11 -0
  200. package/node_modules/yaml/browser/dist/visit.js +233 -0
  201. package/node_modules/yaml/browser/index.js +5 -0
  202. package/node_modules/yaml/browser/package.json +3 -0
  203. package/node_modules/yaml/dist/cli.d.ts +8 -0
  204. package/node_modules/yaml/dist/cli.mjs +201 -0
  205. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  206. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  207. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  208. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  209. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  210. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  211. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  212. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  213. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  214. package/node_modules/yaml/dist/compose/composer.js +224 -0
  215. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  216. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  217. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  218. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  219. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  220. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  221. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  222. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  223. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  224. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  225. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  226. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  227. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  228. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  229. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  230. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  231. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  232. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  233. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  234. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  235. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  236. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  237. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  238. package/node_modules/yaml/dist/doc/Document.js +337 -0
  239. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  240. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  241. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  242. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  243. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  244. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  245. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  246. package/node_modules/yaml/dist/doc/directives.js +178 -0
  247. package/node_modules/yaml/dist/errors.d.ts +21 -0
  248. package/node_modules/yaml/dist/errors.js +62 -0
  249. package/node_modules/yaml/dist/index.d.ts +25 -0
  250. package/node_modules/yaml/dist/index.js +50 -0
  251. package/node_modules/yaml/dist/log.d.ts +3 -0
  252. package/node_modules/yaml/dist/log.js +19 -0
  253. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  254. package/node_modules/yaml/dist/nodes/Alias.js +118 -0
  255. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  256. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  257. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  258. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  259. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  260. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  261. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  262. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  263. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  264. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  265. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  266. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  267. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  268. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  269. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  270. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  271. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  272. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  273. package/node_modules/yaml/dist/options.d.ts +350 -0
  274. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  275. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  276. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  277. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  278. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  279. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  280. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  281. package/node_modules/yaml/dist/parse/cst.js +112 -0
  282. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  283. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  284. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  285. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  286. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  287. package/node_modules/yaml/dist/parse/parser.js +980 -0
  288. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  289. package/node_modules/yaml/dist/public-api.js +107 -0
  290. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  291. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  292. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  293. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  294. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  295. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  296. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  297. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  298. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  299. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  300. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  301. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  302. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  303. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  304. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  305. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  306. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  307. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  308. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  309. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  310. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  311. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  312. package/node_modules/yaml/dist/schema/tags.js +99 -0
  313. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  314. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  315. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  316. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  317. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  318. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  319. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  320. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  321. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  322. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  323. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  324. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  325. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  326. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  327. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  328. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  329. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  330. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  331. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  332. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  333. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  334. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  335. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  336. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  337. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  338. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  339. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  340. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  341. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  342. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  343. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  344. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  345. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  346. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  347. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  348. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  349. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  350. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  351. package/node_modules/yaml/dist/test-events.js +134 -0
  352. package/node_modules/yaml/dist/util.d.ts +16 -0
  353. package/node_modules/yaml/dist/util.js +28 -0
  354. package/node_modules/yaml/dist/visit.d.ts +102 -0
  355. package/node_modules/yaml/dist/visit.js +236 -0
  356. package/node_modules/yaml/package.json +97 -0
  357. package/node_modules/yaml/util.js +2 -0
  358. package/package.json +10 -8
  359. package/src/analysis/architecture/discovery.ts +213 -227
  360. package/src/analysis/architecture/manifest.ts +147 -0
  361. package/src/analysis/architecture/model.ts +119 -52
  362. package/src/analysis/architecture/workspace-config.ts +229 -0
  363. package/src/analysis/{coverage/coverage-warnings.ts → capability/capability-warnings.ts} +41 -78
  364. package/src/analysis/evidence.ts +22 -5
  365. package/src/analysis/health/diagnostics.ts +183 -0
  366. package/src/analysis/health/recovery.ts +39 -0
  367. package/src/analysis/health/signals.ts +20 -0
  368. package/src/analysis/instruction-files.ts +60 -48
  369. package/src/analysis/provider.ts +31 -12
  370. package/src/analysis/readiness.ts +29 -9
  371. package/src/{tool/refactor-apply → analysis/refactor}/apply.ts +120 -26
  372. package/src/analysis/refactor/position.ts +6 -0
  373. package/src/analysis/refactor/safety.ts +4 -11
  374. package/src/analysis/references/locations.ts +20 -0
  375. package/src/analysis/references/semantic-refs.ts +21 -11
  376. package/src/{tool/graph → analysis/relations}/implementations.ts +27 -23
  377. package/src/analysis/relations/provider-locations.ts +179 -0
  378. package/src/{tool/graph → analysis/relations}/references.ts +25 -21
  379. package/src/{tool/graph → analysis/relations}/types.ts +4 -19
  380. package/src/analysis/search/ast-scan.ts +376 -0
  381. package/src/analysis/search/call-name.ts +68 -0
  382. package/src/analysis/search/deadline.ts +84 -0
  383. package/src/analysis/search/paths.ts +88 -0
  384. package/src/analysis/search/pattern.ts +290 -246
  385. package/src/analysis/target/anchored.ts +72 -27
  386. package/src/analysis/target/file.ts +292 -132
  387. package/src/analysis/target/identity.ts +237 -0
  388. package/src/analysis/target/symbol.ts +169 -86
  389. package/src/analysis/target/types.ts +36 -4
  390. package/src/api.ts +21 -4
  391. package/src/app/app.ts +54 -44
  392. package/src/extension.ts +21 -97
  393. package/src/headless.ts +41 -0
  394. package/src/session/capability-adapter.ts +26 -118
  395. package/src/session/find-types.ts +38 -0
  396. package/src/session/find-workflow.ts +141 -0
  397. package/src/session/graph/collect.ts +181 -0
  398. package/src/session/graph-types.ts +77 -0
  399. package/src/session/graph-workflow.ts +152 -0
  400. package/src/session/health-types.ts +134 -0
  401. package/src/session/health-workflow.ts +341 -0
  402. package/src/session/input/common.ts +216 -0
  403. package/src/session/input/health-refactor.ts +169 -0
  404. package/src/session/input/workflows.ts +211 -0
  405. package/src/session/inspect/collect.ts +304 -0
  406. package/src/session/inspect/file-point.ts +69 -0
  407. package/src/session/inspect-types.ts +78 -0
  408. package/src/session/inspect-workflow.ts +157 -0
  409. package/src/session/orientation/collect.ts +718 -0
  410. package/src/session/orientation/context-facts.ts +319 -0
  411. package/src/session/orientation/context-sections.ts +352 -0
  412. package/src/session/orientation-types.ts +97 -0
  413. package/src/session/orientation-workflow.ts +307 -0
  414. package/src/session/refactor-plans.ts +1 -1
  415. package/src/session/refactor-types.ts +51 -0
  416. package/src/session/refactor-workflow.ts +263 -0
  417. package/src/session/session.ts +263 -234
  418. package/src/session/target-candidates.ts +60 -0
  419. package/src/session/target-input.ts +98 -0
  420. package/src/session/target-store.ts +132 -29
  421. package/src/session/target-workflow.ts +254 -302
  422. package/src/session/workflow-control.ts +35 -0
  423. package/src/substrate/lsp/lifecycle.ts +26 -53
  424. package/src/substrate/lsp/maintenance.ts +75 -0
  425. package/src/substrate/lsp/recovery.ts +41 -25
  426. package/src/substrate/lsp/settings.ts +1 -10
  427. package/src/substrate/lsp/state.ts +5 -13
  428. package/src/substrate/workspace-provider-host.ts +129 -0
  429. package/src/tool/find/ast-kinds.ts +35 -0
  430. package/src/tool/find/execute.ts +22 -113
  431. package/src/tool/find/markdown.ts +85 -221
  432. package/src/tool/find/modes.ts +5 -0
  433. package/src/tool/find/render.ts +57 -0
  434. package/src/tool/find/tui.ts +1 -1
  435. package/src/tool/graph/calls-md.ts +17 -30
  436. package/src/tool/graph/execute.ts +42 -103
  437. package/src/tool/graph/implementations-md.ts +32 -54
  438. package/src/tool/graph/markdown-base.ts +73 -196
  439. package/src/tool/graph/provider-location-md.ts +9 -0
  440. package/src/tool/graph/references-md.ts +34 -27
  441. package/src/tool/graph/tui.ts +8 -26
  442. package/src/tool/guidance.ts +31 -48
  443. package/src/tool/health/execute.ts +15 -56
  444. package/src/tool/health/markdown.ts +199 -148
  445. package/src/tool/health/semantic-state.ts +24 -0
  446. package/src/tool/health/tui.ts +262 -36
  447. package/src/tool/infra/error-results.ts +0 -2
  448. package/src/tool/infra/progress.ts +2 -2
  449. package/src/tool/infra/workflow-control.ts +11 -0
  450. package/src/tool/inspect/execute.ts +23 -63
  451. package/src/tool/inspect/markdown.ts +114 -95
  452. package/src/tool/inspect/tui.ts +7 -7
  453. package/src/tool/orientation/execute.ts +50 -37
  454. package/src/tool/orientation/markdown.ts +26 -31
  455. package/src/tool/orientation/tui.ts +41 -39
  456. package/src/tool/refactor-apply/execute.ts +23 -9
  457. package/src/tool/refactor-apply/tui.ts +7 -3
  458. package/src/tool/refactor-plan/execute.ts +44 -61
  459. package/src/tool/refactor-plan/markdown.ts +33 -56
  460. package/src/tool/refactor-plan/tui.ts +10 -11
  461. package/src/tool/register.ts +6 -5
  462. package/src/tool/resolve/execute.ts +23 -69
  463. package/src/tool/resolve/markdown.ts +125 -114
  464. package/src/tool/resolve/tui.ts +11 -9
  465. package/src/tool/result/assembly.ts +125 -0
  466. package/src/tool/result/errors.ts +20 -34
  467. package/src/tool/result/find.ts +107 -21
  468. package/src/tool/result/graph.ts +163 -64
  469. package/src/tool/result/health.ts +170 -73
  470. package/src/tool/result/inspect.ts +183 -41
  471. package/src/tool/result/orientation.ts +118 -16
  472. package/src/tool/result/refactor.ts +101 -21
  473. package/src/tool/result/resolve.ts +243 -80
  474. package/src/tool/result/types.ts +100 -56
  475. package/src/tool/schemas.ts +160 -231
  476. package/src/tool/specs.ts +57 -168
  477. package/src/types/details.ts +2 -4
  478. package/src/types/execution.ts +6 -15
  479. package/src/types/index.ts +2 -4
  480. package/src/types/tool-names.ts +1 -2
  481. package/src/ui/footer.ts +3 -3
  482. package/src/ui/markdown/gather.ts +17 -65
  483. package/src/ui/markdown/overview-data.ts +143 -21
  484. package/src/ui/markdown/overview.ts +27 -8
  485. package/src/ui/markdown/types.ts +12 -16
  486. package/src/ui/status-command.ts +39 -31
  487. package/src/ui/status-overlay.ts +23 -15
  488. package/src/ui/tui/common.ts +121 -74
  489. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  490. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  491. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  492. package/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  493. package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  494. package/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  495. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  496. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  497. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  498. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  499. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  500. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  501. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-augmentation.ts +0 -82
  502. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-context.ts +0 -116
  503. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-display.ts +0 -69
  504. package/node_modules/@mrclrchtr/supi-lsp/src/manager/capability-index.ts +0 -24
  505. package/node_modules/@mrclrchtr/supi-lsp/src/manager/client-pool.ts +0 -33
  506. package/node_modules/@mrclrchtr/supi-lsp/src/manager/diagnostic-store.ts +0 -51
  507. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-stale-resync.ts +0 -47
  508. package/node_modules/@mrclrchtr/supi-lsp/src/manager/recovery-coordinator.ts +0 -37
  509. package/node_modules/@mrclrchtr/supi-lsp/src/manager/workspace-router.ts +0 -44
  510. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  511. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  512. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  513. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  514. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  515. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  516. package/src/analysis/brief/directory.ts +0 -324
  517. package/src/analysis/brief/enrich.ts +0 -157
  518. package/src/analysis/brief/file.ts +0 -84
  519. package/src/analysis/brief/inventory.ts +0 -177
  520. package/src/analysis/brief/main.ts +0 -176
  521. package/src/analysis/brief/models.ts +0 -75
  522. package/src/analysis/brief/public-brief.ts +0 -179
  523. package/src/analysis/brief/summarize.ts +0 -208
  524. package/src/analysis/brief/types.ts +0 -27
  525. package/src/analysis/brief/use-case.ts +0 -264
  526. package/src/analysis/search/ripgrep.ts +0 -558
  527. package/src/analysis/signals/git.ts +0 -89
  528. package/src/analysis/signals/project.ts +0 -189
  529. package/src/analysis/target/bridge.ts +0 -152
  530. package/src/analysis/target/file-resolution.ts +0 -125
  531. package/src/analysis/target/planner.ts +0 -92
  532. package/src/analysis/target/query.ts +0 -74
  533. package/src/analysis/target/resolve-common.ts +0 -115
  534. package/src/analysis/target/service.ts +0 -229
  535. package/src/analysis/tests/likely-tests.ts +0 -174
  536. package/src/analysis/tests/test-discovery.ts +0 -540
  537. package/src/analysis/tests/vitest.ts +0 -87
  538. package/src/app/manager.ts +0 -65
  539. package/src/substrate/lsp/diagnostic-injection.ts +0 -203
  540. package/src/substrate/lsp/overrides.ts +0 -132
  541. package/src/substrate/tree-sitter/lifecycle.ts +0 -52
  542. package/src/tool/find/orchestrate.ts +0 -317
  543. package/src/tool/find/semantic-search.ts +0 -128
  544. package/src/tool/graph/collect-relation.ts +0 -372
  545. package/src/tool/graph/orchestrate.ts +0 -259
  546. package/src/tool/health/orchestrate.ts +0 -151
  547. package/src/tool/health/sections/diagnostics.ts +0 -182
  548. package/src/tool/health/sections/recovery.ts +0 -89
  549. package/src/tool/health/sections/signals.ts +0 -89
  550. package/src/tool/impact/analysis.ts +0 -220
  551. package/src/tool/impact/change-set-impact.ts +0 -152
  552. package/src/tool/impact/execute.ts +0 -125
  553. package/src/tool/impact/file-level-impact.ts +0 -82
  554. package/src/tool/impact/markdown.ts +0 -283
  555. package/src/tool/impact/orchestrate.ts +0 -97
  556. package/src/tool/impact/result.ts +0 -2
  557. package/src/tool/impact/single-impact.ts +0 -90
  558. package/src/tool/impact/tui.ts +0 -39
  559. package/src/tool/impact/types.ts +0 -34
  560. package/src/tool/infra/cross-field.ts +0 -335
  561. package/src/tool/infra/pipeline.ts +0 -334
  562. package/src/tool/infra/readiness-message.ts +0 -5
  563. package/src/tool/inspect/orchestrate.ts +0 -154
  564. package/src/tool/orientation/deps.ts +0 -63
  565. package/src/tool/orientation/mode.ts +0 -139
  566. package/src/tool/orientation/orchestrate.ts +0 -475
  567. package/src/tool/orientation/precise-target.ts +0 -253
  568. package/src/tool/params.ts +0 -15
  569. package/src/tool/refactor-apply/markdown.ts +0 -118
  570. package/src/tool/refactor-apply/orchestrate.ts +0 -84
  571. package/src/tool/refactor-plan/orchestrate.ts +0 -355
  572. package/src/tool/resolve/orchestrate.ts +0 -38
  573. package/src/tool/result/impact.ts +0 -50
  574. package/src/ui/markdown/brief.ts +0 -218
  575. package/src/ui/message-renderer.ts +0 -121
  576. package/src/ui/tui/index.ts +0 -37
  577. /package/src/{tool/graph → analysis/relations}/callees.ts +0 -0
@@ -8,10 +8,10 @@
8
8
  *
9
9
  * Trust considerations:
10
10
  * - The @derekstride/tree-sitter-sql install script uses "npx --yes", which
11
- * some package managers flag as a supply-chain risk. pnpm ignores build
12
- * scripts by default, so this script never runs during install.
11
+ * some package managers flag as a supply-chain risk. This workspace disables
12
+ * that package's build script explicitly via pnpm `allowBuilds`.
13
13
  * - The WASM is built locally from the installed package source (not downloaded
14
- * from npm). The build uses tree-sitter-cli 0.22.6 with Emscripten/Docker.
14
+ * from npm). The build uses tree-sitter-cli with Emscripten/Docker.
15
15
  * - Alternatives considered: tree-sitter-sql (m-novikov, stale since 2021),
16
16
  * tree-sitter-sql-bigquery (dialect-specific), and dialect-specific grammars.
17
17
  * derekstride/tree-sitter-sql is the most mature general-purpose SQL grammar.
@@ -55,6 +55,7 @@ function readMetadata() {
55
55
 
56
56
  function assertSqlWasmCurrent() {
57
57
  const sqlPackage = readPackage("@derekstride/tree-sitter-sql");
58
+ const cliPackage = readPackage("tree-sitter-cli");
58
59
  const metadata = readMetadata();
59
60
  const actualSha = sha256(wasmPath);
60
61
  const errors = [];
@@ -67,6 +68,11 @@ function assertSqlWasmCurrent() {
67
68
  `metadata pins @derekstride/tree-sitter-sql ${metadata.source?.version}, but installed package is ${sqlPackage.json.version}`,
68
69
  );
69
70
  }
71
+ if (metadata.generatedWith?.treeSitterCli !== cliPackage.json.version) {
72
+ errors.push(
73
+ `metadata pins tree-sitter-cli ${metadata.generatedWith?.treeSitterCli}, but installed CLI is ${cliPackage.json.version}`,
74
+ );
75
+ }
70
76
  if (metadata.sha256 !== actualSha) {
71
77
  errors.push(`metadata sha256 ${metadata.sha256} does not match vendored file ${actualSha}`);
72
78
  }
@@ -92,7 +98,7 @@ function generateSqlWasm() {
92
98
  try {
93
99
  fs.cpSync(sqlPackage.dir, grammarDir, { recursive: true });
94
100
 
95
- // tree-sitter-cli 0.22.6 requires a "tree-sitter" section in package.json
101
+ // tree-sitter-cli requires a "tree-sitter" section in package.json
96
102
  const grammarPackageJsonPath = path.join(grammarDir, "package.json");
97
103
  const grammarPackageJson = JSON.parse(fs.readFileSync(grammarPackageJsonPath, "utf-8"));
98
104
  grammarPackageJson["tree-sitter"] = [{ scope: "source.sql" }];
@@ -128,6 +134,14 @@ function generateSqlWasm() {
128
134
  treeSitterCli: cliPackage.json.version,
129
135
  },
130
136
  sha256: checksum,
137
+ trust: {
138
+ note: "The @derekstride/tree-sitter-sql npm package is a devDependency only. It is never resolved at runtime; the vendored WASM above is the sole runtime artifact. This workspace explicitly disables the package's npx-based install script via pnpm allowBuilds. The WASM was built locally from the installed package source. See scripts/generate-sql-wasm.mjs for the rebuild procedure.",
139
+ alternativesConsidered: [
140
+ "tree-sitter-sql (m-novikov, 2021, stale)",
141
+ "tree-sitter-sql-bigquery (BigQuery-specific)",
142
+ "dialect-specific grammars (too narrow)",
143
+ ],
144
+ },
131
145
  };
132
146
  fs.writeFileSync(metadataPath, `${JSON.stringify(metadata, null, 2)}\n`);
133
147
  process.stdout.write(`Generated ${wasmPath}\n`);
@@ -108,8 +108,14 @@ function checkGrammar(grammarId, source) {
108
108
 
109
109
  try {
110
110
  const pkg = readPackage(source.npmPackage);
111
+ const sourceWasmPath = path.join(pkg.dir, source.wasmFile);
112
+ if (!fs.existsSync(sourceWasmPath)) {
113
+ errors.push(`${grammarId}: installed package is missing ${source.wasmFile}`);
114
+ return errors;
115
+ }
111
116
  const metadata = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
112
117
  const actualSha = sha256(wasmPath);
118
+ const sourceSha = sha256(sourceWasmPath);
113
119
 
114
120
  if (metadata.source?.npmPackage !== source.npmPackage) {
115
121
  errors.push(`${grammarId}: metadata source npmPackage mismatch`);
@@ -119,8 +125,18 @@ function checkGrammar(grammarId, source) {
119
125
  `${grammarId}: metadata version ${metadata.source?.version} !== installed ${pkg.json.version}`,
120
126
  );
121
127
  }
128
+ if (actualSha !== sourceSha) {
129
+ errors.push(
130
+ `${grammarId}: vendored sha256 ${actualSha} !== installed package source ${sourceSha}`,
131
+ );
132
+ }
122
133
  if (metadata.sha256 !== actualSha) {
123
- errors.push(`${grammarId}: metadata sha256 ${metadata.sha256} !== actual ${actualSha}`);
134
+ errors.push(`${grammarId}: metadata sha256 ${metadata.sha256} !== vendored ${actualSha}`);
135
+ }
136
+ if (metadata.sha256 !== sourceSha) {
137
+ errors.push(
138
+ `${grammarId}: metadata sha256 ${metadata.sha256} !== installed package source ${sourceSha}`,
139
+ );
124
140
  }
125
141
  } catch (err) {
126
142
  errors.push(`${grammarId}: ${err.message}`);
@@ -12,6 +12,8 @@ export {
12
12
  isJsTsGrammar,
13
13
  isSupportedFile,
14
14
  } from "./language.ts";
15
+ export type { StructuralSearchOperation } from "./operation-support.ts";
16
+ export { getStructuralSearchSupportedExtensions } from "./operation-support.ts";
15
17
  export { TreeSitterRuntime } from "./session/runtime.ts";
16
18
  export type {
17
19
  TsControllerState,
@@ -1,10 +1,16 @@
1
1
  // Coordinate conversion between public 1-based UTF-16 positions
2
- // and Tree-sitter runtime byte/row/column positions.
2
+ // and Tree-sitter runtime positions.
3
+ //
4
+ // web-tree-sitter's Parser.parse(string) uses JavaScript string columns
5
+ // (UTF-16 code unit offsets) for startPosition/endPosition. We convert
6
+ // 1-based user-facing positions to 0-based row/column and back without
7
+ // any byte-level encoding.
8
+ //
9
+ // This matches the column convention used by LSP and Monaco, so ranges
10
+ // are directly shareable between tree-sitter and LSP workflows.
3
11
 
4
12
  import type { SourceRange } from "./types.ts";
5
13
 
6
- const encoder = new TextEncoder();
7
-
8
14
  /** Point in source: 1-based line and UTF-16 character. */
9
15
  export interface PublicPoint {
10
16
  line: number;
@@ -16,7 +22,8 @@ export interface PublicPoint {
16
22
  * for Tree-sitter lookup.
17
23
  *
18
24
  * `character` is a UTF-16 code-unit column (editor/LSP convention).
19
- * We convert it to a byte offset within the line by counting UTF-8 bytes.
25
+ * The column maps directly to JavaScript string code units no byte
26
+ * conversion is needed for web-tree-sitter's string-parsing mode.
20
27
  */
21
28
  export function publicToTreeSitter(
22
29
  line: number,
@@ -25,32 +32,27 @@ export function publicToTreeSitter(
25
32
  ): { row: number; column: number } {
26
33
  const row = line - 1;
27
34
  const lines = splitSourceLines(source);
28
- const lineText = row < lines.length ? lines[row] : "";
29
- // character is 1-based; clamp to line length
30
- const charIndex = Math.max(0, Math.min(character - 1, lineText.length));
31
- // Convert UTF-16 code unit index to byte offset
32
- const textBefore = lineText.substring(0, charIndex);
33
- const byteOffset = encoder.encode(textBefore).length;
34
- return { row, column: byteOffset };
35
+ const lineText = row < lines.length ? (lines[row] ?? "") : "";
36
+ // Clamp column to the line length.
37
+ const column = Math.max(0, Math.min(character - 1, lineText.length));
38
+ return { row, column };
35
39
  }
36
40
 
37
41
  /**
38
42
  * Convert a Tree-sitter (row, column) pair to a 1-based (line, character) pair.
39
43
  *
40
- * `column` is a byte offset within the line; we convert it to a UTF-16
41
- * code-unit index.
44
+ * `column` is a zero-based JavaScript string code unit offset within the line.
42
45
  */
43
46
  export function treeSitterToPublic(row: number, column: number, source: string): PublicPoint {
47
+ // Clamp to EOL for positions right after the last character.
44
48
  const lines = splitSourceLines(source);
45
- const lineText = row < lines.length ? lines[row] : "";
46
- // Convert byte offset to UTF-16 code unit index
47
- const charIndex = byteToUtf16Index(lineText, column);
48
- return { line: row + 1, character: charIndex + 1 };
49
+ const lineText = row < lines.length ? (lines[row] ?? "") : "";
50
+ const safeColumn = Math.max(0, Math.min(column, lineText.length));
51
+ return { line: row + 1, character: safeColumn + 1 };
49
52
  }
50
53
 
51
54
  /**
52
55
  * Convert a Tree-sitter point {row, column} to a SourceRange-compatible point.
53
- * Uses the source text for byte-to-UTF16 conversion.
54
56
  */
55
57
  export function tsPointToPublic(
56
58
  point: { row: number; column: number },
@@ -83,26 +85,3 @@ export function nodeToRange(
83
85
  export function splitSourceLines(source: string): string[] {
84
86
  return source.replace(/\r\n?/g, "\n").split("\n");
85
87
  }
86
-
87
- /**
88
- * Convert a byte offset within a line to a UTF-16 code unit index.
89
- */
90
- function byteToUtf16Index(line: string, byteOffset: number): number {
91
- let byteCount = 0;
92
- for (let i = 0; i < line.length; i++) {
93
- if (byteCount >= byteOffset) return i;
94
- const char = line.charCodeAt(i);
95
- // surrogate pair — 4 bytes in UTF-8, but 2 UTF-16 code units
96
- if (char >= 0xd800 && char <= 0xdbff) {
97
- byteCount += 4;
98
- i++; // skip low surrogate
99
- } else if (char > 0x7f) {
100
- // Non-ASCII: 2-3 bytes in UTF-8
101
- if (char <= 0x7ff) byteCount += 2;
102
- else byteCount += 3;
103
- } else {
104
- byteCount += 1;
105
- }
106
- }
107
- return line.length;
108
- }
@@ -11,6 +11,8 @@ export {
11
11
  isJsTsGrammar,
12
12
  isSupportedFile,
13
13
  } from "./language.ts";
14
+ export type { StructuralSearchOperation } from "./operation-support.ts";
15
+ export { getStructuralSearchSupportedExtensions } from "./operation-support.ts";
14
16
  // Provider implementation
15
17
  export { createTreeSitterProvider } from "./provider/tree-sitter-provider.ts";
16
18
  export { TreeSitterRuntime } from "./session/runtime.ts";
@@ -61,6 +61,13 @@ export function getSupportedExtensions(): string[] {
61
61
  return [...SUPPORTED_EXTENSIONS];
62
62
  }
63
63
 
64
+ /** Internal registry snapshot used to derive operation-specific language support. */
65
+ export function getSupportedExtensionGrammarEntries(): Array<
66
+ readonly [SupportedExtension, GrammarId]
67
+ > {
68
+ return Object.entries(EXTENSION_GRAMMAR) as Array<readonly [SupportedExtension, GrammarId]>;
69
+ }
70
+
64
71
  /** Get the file extension if it's supported, otherwise undefined. */
65
72
  export function getSupportedExtension(filePath: string): SupportedExtension | undefined {
66
73
  const ext = path.extname(filePath).toLowerCase();
@@ -0,0 +1,40 @@
1
+ import { getSupportedExtensionGrammarEntries, isJsTsGrammar } from "./language.ts";
2
+ import { supportsCallSitesGrammar } from "./tool/call-sites.ts";
3
+ import type { GrammarId, SupportedExtension } from "./types.ts";
4
+
5
+ /** Structural collection operations whose language support defines an AST Scan universe. */
6
+ const STRUCTURAL_SEARCH_OPERATIONS = ["outline", "imports", "exports", "call-sites"] as const;
7
+
8
+ /** One Tree-sitter structural collection operation used by code-aware search. */
9
+ export type StructuralSearchOperation = (typeof STRUCTURAL_SEARCH_OPERATIONS)[number];
10
+
11
+ /**
12
+ * Return the file extensions that the concrete extractor supports for an operation.
13
+ *
14
+ * This is operation support, not general parser support. The result is derived from
15
+ * the same grammar predicates and query registry used by the extractors themselves.
16
+ */
17
+ export function getStructuralSearchSupportedExtensions(
18
+ operation: StructuralSearchOperation,
19
+ ): SupportedExtension[] {
20
+ return getSupportedExtensionGrammarEntries()
21
+ .filter(([, grammar]) => supportsGrammarOperation(grammar, operation))
22
+ .map(([extension]) => extension);
23
+ }
24
+
25
+ /** Return whether one grammar is supported by the requested structural operation. */
26
+ export function supportsGrammarOperation(
27
+ grammar: GrammarId,
28
+ operation: StructuralSearchOperation,
29
+ ): boolean {
30
+ switch (operation) {
31
+ case "call-sites":
32
+ return supportsCallSitesGrammar(grammar);
33
+ case "outline":
34
+ case "imports":
35
+ case "exports":
36
+ return isJsTsGrammar(grammar);
37
+ default:
38
+ throw new TypeError(`Unsupported structural search operation: ${String(operation)}`);
39
+ }
40
+ }
@@ -1,6 +1,7 @@
1
1
  // Session factory — creates runtime-backed Tree-sitter services and owned sessions.
2
2
 
3
- import { detectGrammar, isJsTsGrammar } from "../language.ts";
3
+ import { detectGrammar } from "../language.ts";
4
+ import { supportsGrammarOperation } from "../operation-support.ts";
4
5
  import {
5
6
  extractCallSites,
6
7
  extractExports,
@@ -45,15 +46,16 @@ export function createTreeSitterService(runtime: TreeSitterRuntime): TreeSitterS
45
46
  },
46
47
 
47
48
  async outline(file: string): Promise<TreeSitterResult<OutlineItem[]>> {
48
- const parseResult = await runtime.parseFile(file);
49
- if (parseResult.kind !== "success") return parseResult;
50
- if (!isJsTsGrammar(parseResult.data.grammarId)) {
49
+ const grammarId = detectGrammar(file);
50
+ if (grammarId && !supportsGrammarOperation(grammarId, "outline")) {
51
51
  return {
52
52
  kind: "unsupported-language",
53
53
  file,
54
- message: `outline is not supported for ${parseResult.data.grammarId} files`,
54
+ message: `outline is not supported for ${grammarId} files`,
55
55
  };
56
56
  }
57
+ const parseResult = await runtime.parseFile(file);
58
+ if (parseResult.kind !== "success") return parseResult;
57
59
  const { tree, source } = parseResult.data;
58
60
  try {
59
61
  const items = extractOutline(tree.rootNode, source);
@@ -65,7 +67,7 @@ export function createTreeSitterService(runtime: TreeSitterRuntime): TreeSitterS
65
67
 
66
68
  async imports(file: string): Promise<TreeSitterResult<ImportRecord[]>> {
67
69
  const grammarId = detectGrammar(file);
68
- if (grammarId && !isJsTsGrammar(grammarId)) {
70
+ if (grammarId && !supportsGrammarOperation(grammarId, "imports")) {
69
71
  return {
70
72
  kind: "unsupported-language",
71
73
  file,
@@ -77,7 +79,7 @@ export function createTreeSitterService(runtime: TreeSitterRuntime): TreeSitterS
77
79
 
78
80
  async exports(file: string): Promise<TreeSitterResult<ExportRecord[]>> {
79
81
  const grammarId = detectGrammar(file);
80
- if (grammarId && !isJsTsGrammar(grammarId)) {
82
+ if (grammarId && !supportsGrammarOperation(grammarId, "exports")) {
81
83
  return {
82
84
  kind: "unsupported-language",
83
85
  file,
@@ -30,10 +30,15 @@ const CALL_SITE_QUERIES: Partial<Record<GrammarId, string>> = {
30
30
  kotlin:
31
31
  "(call_expression . (simple_identifier) @call) (call_expression . (navigation_expression . (simple_identifier) @call))",
32
32
  ruby: "(call method: (identifier) @call)",
33
- bash: "(command name: (word) @call)",
33
+ bash: "(command name: (command_name) @call)",
34
34
  r: "(call function: (identifier) @call)",
35
35
  };
36
36
 
37
+ /** Return whether the call-site extractor has a query for one grammar. */
38
+ export function supportsCallSitesGrammar(grammarId: GrammarId): boolean {
39
+ return CALL_SITE_QUERIES[grammarId] !== undefined;
40
+ }
41
+
37
42
  /**
38
43
  * Extract all call-site callee expressions from a file.
39
44
  *
@@ -188,7 +188,7 @@ export async function lookupCalleesAt(
188
188
 
189
189
  try {
190
190
  const scopes = ENCLOSING_SCOPE_TYPES[grammarId];
191
- const tsPoint = tsPosition(line, character);
191
+ const tsPoint = { row: line - 1, column: character - 1 };
192
192
  const node = tree.rootNode.descendantForPosition(tsPoint);
193
193
 
194
194
  if (!node) {
@@ -222,13 +222,7 @@ export async function lookupCalleesAt(
222
222
  };
223
223
  }
224
224
 
225
- const callees = filterCalleeCaptures(
226
- queryResult.data,
227
- enclosingNode,
228
- scopes,
229
- tsPoint.row,
230
- depth,
231
- );
225
+ const callees = filterCalleeCaptures(queryResult.data, enclosingNode, scopes, tsPoint, depth);
232
226
 
233
227
  const enclosingRange = nodeToSourceRange(enclosingNode);
234
228
  const scopeName = extractScopeName(enclosingNode.type, enclosingNode.text);
@@ -250,47 +244,74 @@ export async function lookupCalleesAt(
250
244
  }
251
245
 
252
246
  /**
253
- * Recursively collect line ranges of inner function/method/callback scopes that
254
- * do not contain the anchor row. Captures from these ranges are excluded so
247
+ * Recursively collect inner function/method/callback scopes that do NOT
248
+ * contain the anchor point. Captures from these ranges are excluded so
255
249
  * nested calls are not attributed to the parent scope.
250
+ *
251
+ * Containment compares both row and column to handle same-line nested
252
+ * functions correctly.
256
253
  */
257
254
  function collectInnerScopes(
258
255
  node: {
259
256
  type: string;
260
257
  children: unknown[];
261
- startPosition: { row: number };
262
- endPosition: { row: number };
258
+ startPosition: { row: number; column: number };
259
+ endPosition: { row: number; column: number };
263
260
  } | null,
264
261
  scopeTypes: ReadonlySet<string>,
265
- anchorRow: number,
266
- ranges: Array<{ startRow: number; endRow: number }>,
262
+ anchor: { row: number; column: number },
263
+ ranges: Array<{
264
+ startRow: number;
265
+ startColumn: number;
266
+ endRow: number;
267
+ endColumn: number;
268
+ }>,
267
269
  ): void {
268
270
  if (!node) return;
269
271
  // biome-ignore lint/complexity/noForEach: safe iteration over node children
270
272
  (node.children ?? []).forEach((child) => {
271
273
  const childNode = child as {
272
274
  type: string;
273
- startPosition: { row: number };
274
- endPosition: { row: number };
275
+ startPosition: { row: number; column: number };
276
+ endPosition: { row: number; column: number };
275
277
  children: unknown[];
276
278
  };
277
279
  if (scopeTypes.has(childNode.type)) {
278
- // Exclude this inner scope if it does NOT contain the anchor
279
- if (!(childNode.startPosition.row <= anchorRow && childNode.endPosition.row >= anchorRow)) {
280
+ // Exclude this inner scope if it does NOT contain the anchor point.
281
+ const contains = containsPoint(childNode, anchor);
282
+ if (!contains) {
280
283
  ranges.push({
281
- startRow: childNode.startPosition.row + 1,
282
- endRow: childNode.endPosition.row + 1,
284
+ startRow: childNode.startPosition.row,
285
+ startColumn: childNode.startPosition.column,
286
+ endRow: childNode.endPosition.row,
287
+ endColumn: childNode.endPosition.column,
283
288
  });
284
289
  }
285
290
  // Still recurse into it for deeper nesting
286
- collectInnerScopes(childNode, scopeTypes, anchorRow, ranges);
291
+ collectInnerScopes(childNode, scopeTypes, anchor, ranges);
287
292
  } else {
288
293
  // Recurse into non-scope children to find deeper scopes
289
- collectInnerScopes(childNode, scopeTypes, anchorRow, ranges);
294
+ collectInnerScopes(childNode, scopeTypes, anchor, ranges);
290
295
  }
291
296
  });
292
297
  }
293
298
 
299
+ function containsPoint(
300
+ node: {
301
+ startPosition: { row: number; column: number };
302
+ endPosition: { row: number; column: number };
303
+ },
304
+ point: { row: number; column: number },
305
+ ): boolean {
306
+ const afterStart =
307
+ point.row > node.startPosition.row ||
308
+ (point.row === node.startPosition.row && point.column >= node.startPosition.column);
309
+ const beforeEnd =
310
+ point.row < node.endPosition.row ||
311
+ (point.row === node.endPosition.row && point.column <= node.endPosition.column);
312
+ return afterStart && beforeEnd;
313
+ }
314
+
294
315
  /**
295
316
  * Filter query captures to only those within the enclosing scope.
296
317
  * In `direct` depth, excludes captures that fall within inner nested
@@ -298,35 +319,57 @@ function collectInnerScopes(
298
319
  * enclosing scope are included regardless of nesting.
299
320
  */
300
321
  // biome-ignore lint/complexity/useMaxParams: filtering needs captures + node context + depth
322
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: filtering combines scope containment, column-aware inner-scope exclusion, and dedup in one cohesive pass
301
323
  function filterCalleeCaptures(
302
324
  captures: Array<{ range: SourceRange; text: string }>,
303
325
  // biome-ignore lint/suspicious/noExplicitAny: tree-sitter SyntaxNode is complex
304
326
  enclosingNode: any,
305
327
  scopeTypes: ReadonlySet<string>,
306
- anchorRow: number,
328
+ anchor: { row: number; column: number },
307
329
  depth: "direct" | "deep" = "direct",
308
330
  ): Array<{ name: string; range: SourceRange }> {
309
- const excludeRanges: Array<{ startRow: number; endRow: number }> = [];
331
+ const excludeRanges: Array<{
332
+ startRow: number;
333
+ startColumn: number;
334
+ endRow: number;
335
+ endColumn: number;
336
+ }> = [];
310
337
  if (depth === "direct") {
311
- collectInnerScopes(enclosingNode, scopeTypes, anchorRow, excludeRanges);
338
+ collectInnerScopes(enclosingNode, scopeTypes, anchor, excludeRanges);
312
339
  }
313
340
 
314
341
  const seen = new Set<string>();
315
342
  const callees: Array<{ name: string; range: SourceRange }> = [];
316
343
 
317
- const enclosingStartRow = enclosingNode.startPosition.row + 1;
318
- const enclosingEndRow = enclosingNode.endPosition.row + 1;
344
+ const enclosingStartRow = enclosingNode.startPosition.row;
345
+ const enclosingEndRow = enclosingNode.endPosition.row;
346
+ const enclosingStartColumn = enclosingNode.startPosition.column;
347
+ const enclosingEndColumn = enclosingNode.endPosition.column;
319
348
 
320
349
  for (const capture of captures) {
321
- // Only include captures within the enclosing scope
322
- if (capture.range.startLine < enclosingStartRow || capture.range.endLine > enclosingEndRow) {
350
+ // Only include captures within the enclosing scope, using columns
351
+ // for same-line containment.
352
+ const capStartLine = capture.range.startLine - 1;
353
+ const capEndLine = capture.range.endLine - 1;
354
+ const capStartChar = capture.range.startCharacter - 1;
355
+ const capEndChar = capture.range.endCharacter - 1;
356
+ if (capStartLine < enclosingStartRow || capEndLine > enclosingEndRow) {
357
+ continue;
358
+ }
359
+ if (capStartLine === enclosingStartRow && capStartChar < enclosingStartColumn) {
360
+ continue;
361
+ }
362
+ if (capEndLine === enclosingEndRow && capEndChar > enclosingEndColumn) {
323
363
  continue;
324
364
  }
325
365
 
326
- // In direct depth, exclude captures that fall within inner nested function scopes
366
+ // In direct depth, exclude captures within inner nested function scopes
327
367
  if (depth === "direct") {
328
368
  const isInInner = excludeRanges.some(
329
- (exc) => capture.range.startLine >= exc.startRow && capture.range.endLine <= exc.endRow,
369
+ (exc) =>
370
+ (capStartLine > exc.startRow ||
371
+ (capStartLine === exc.startRow && capStartChar >= exc.startColumn)) &&
372
+ (capEndLine < exc.endRow || (capEndLine === exc.endRow && capEndChar <= exc.endColumn)),
330
373
  );
331
374
  if (isInInner) continue;
332
375
  }
@@ -343,7 +386,8 @@ function filterCalleeCaptures(
343
386
 
344
387
  // ── Internal helpers ──────────────────────────────────────────────────
345
388
 
346
- /** Convert a tree-sitter node to a SourceRange. */
389
+ /** Convert a tree-sitter node to a SourceRange using the source text for
390
+ * UTF-16 column conversion. */
347
391
  function nodeToSourceRange(node: {
348
392
  startPosition: { row: number; column: number };
349
393
  endPosition: { row: number; column: number };
@@ -355,8 +399,3 @@ function nodeToSourceRange(node: {
355
399
  endCharacter: node.endPosition.column + 1,
356
400
  };
357
401
  }
358
-
359
- /** Convert 1-based position to tree-sitter 0-based point. */
360
- function tsPosition(line: number, character: number): { row: number; column: number } {
361
- return { row: line - 1, column: character - 1 };
362
- }
@@ -0,0 +1,13 @@
1
+ Copyright Eemeli Aro <eemeli@gmail.com>
2
+
3
+ Permission to use, copy, modify, and/or distribute this software for any purpose
4
+ with or without fee is hereby granted, provided that the above copyright notice
5
+ and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
9
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
11
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
12
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
13
+ THIS SOFTWARE.