@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
@@ -0,0 +1,237 @@
1
+ import { resolve } from "node:path";
2
+ import type { CodeSymbol, StructuralProvider } from "@mrclrchtr/supi-code-runtime/api";
3
+ import type { ResolvedTargetData, TargetOutcome } from "./types.ts";
4
+
5
+ /**
6
+ * Normalize provider-specific declaration kinds into stable identity families.
7
+ * Display kinds remain untouched; this value is used only for matching and
8
+ * target-handle identity across semantic/structural observations.
9
+ */
10
+ export function canonicalDeclarationKind(kind: string | null): string {
11
+ const normalized = (kind ?? "").toLowerCase();
12
+ if (
13
+ ["function", "variable", "constant", "field", "field-function", "property"].includes(normalized)
14
+ ) {
15
+ return "value";
16
+ }
17
+ if (["method", "constructor"].includes(normalized)) return "member";
18
+ return normalized;
19
+ }
20
+
21
+ /** Exact declaration-name observation used to derive provider-independent identity. */
22
+ export interface DeclarationIdentityObservation {
23
+ readonly file: string;
24
+ readonly name: string | null;
25
+ readonly providerKind: string | null;
26
+ readonly nameAnchor: { readonly line: number; readonly character: number } | null;
27
+ }
28
+
29
+ /** Evidence-backed canonical kind and whether structural syntax established it. */
30
+ export interface DeclarationIdentityResult {
31
+ readonly identityKind: string;
32
+ readonly structuralEvidence: boolean;
33
+ }
34
+
35
+ /** Canonical identity plus the same-line occurrence used by Target handles. */
36
+ export interface DeclarationOccurrenceIdentity extends DeclarationIdentityResult {
37
+ readonly declarationOccurrence: number;
38
+ }
39
+
40
+ /**
41
+ * Resolve an identity kind without rewriting the provider-reported display kind.
42
+ * An LSP `Variable` becomes `type` only when Tree-sitter reports the exact name
43
+ * anchor inside a type-alias declaration.
44
+ */
45
+ export async function resolveDeclarationIdentityKind(
46
+ observation: DeclarationIdentityObservation,
47
+ structural: Pick<StructuralProvider, "nodeAt"> | undefined,
48
+ ): Promise<DeclarationIdentityResult> {
49
+ const identityKind = canonicalDeclarationKind(observation.providerKind);
50
+ if (
51
+ !structural ||
52
+ observation.providerKind?.toLowerCase() !== "variable" ||
53
+ !observation.nameAnchor
54
+ ) {
55
+ return { identityKind, structuralEvidence: false };
56
+ }
57
+ try {
58
+ const { line, character } = observation.nameAnchor;
59
+ const result = await structural.nodeAt(observation.file, line, character);
60
+ if (result.kind !== "success") return { identityKind, structuralEvidence: false };
61
+ const node = result.data;
62
+ const exactNameAnchor =
63
+ node.text === observation.name &&
64
+ node.startLine === line &&
65
+ node.startCharacter === character;
66
+ const isTypeAlias =
67
+ node.type === "type_identifier" &&
68
+ node.ancestry.some((ancestor) => ancestor.type === "type_alias_declaration");
69
+ return exactNameAnchor && isTypeAlias
70
+ ? { identityKind: "type", structuralEvidence: true }
71
+ : { identityKind, structuralEvidence: false };
72
+ } catch {
73
+ return { identityKind, structuralEvidence: false };
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Build an evidence-backed identity resolver for one semantic declaration set.
79
+ * Results are cached so disambiguation candidates share structural observations.
80
+ */
81
+ export function createCodeSymbolIdentityResolver(
82
+ file: string,
83
+ allSymbols: readonly CodeSymbol[],
84
+ structural: Pick<StructuralProvider, "nodeAt"> | undefined,
85
+ ): (symbol: CodeSymbol) => Promise<DeclarationOccurrenceIdentity> {
86
+ const identities = new Map<CodeSymbol, Promise<DeclarationIdentityResult>>();
87
+ const occurrences = new Map<CodeSymbol, Promise<DeclarationOccurrenceIdentity>>();
88
+
89
+ const resolveIdentity = (symbol: CodeSymbol): Promise<DeclarationIdentityResult> => {
90
+ const existing = identities.get(symbol);
91
+ if (existing) return existing;
92
+ const identity = resolveDeclarationIdentityKind(
93
+ {
94
+ file,
95
+ name: symbol.name,
96
+ providerKind: symbol.kind,
97
+ nameAnchor: symbol.nameAnchor ?? null,
98
+ },
99
+ structural,
100
+ );
101
+ identities.set(symbol, identity);
102
+ return identity;
103
+ };
104
+
105
+ return (symbol) => {
106
+ const existing = occurrences.get(symbol);
107
+ if (existing) return existing;
108
+ const occurrence = resolveCodeSymbolOccurrence(symbol, allSymbols, resolveIdentity);
109
+ occurrences.set(symbol, occurrence);
110
+ return occurrence;
111
+ };
112
+ }
113
+
114
+ async function resolveCodeSymbolOccurrence(
115
+ symbol: CodeSymbol,
116
+ allSymbols: readonly CodeSymbol[],
117
+ resolveIdentity: (symbol: CodeSymbol) => Promise<DeclarationIdentityResult>,
118
+ ): Promise<DeclarationOccurrenceIdentity> {
119
+ const peers = allSymbols.filter(
120
+ (candidate) =>
121
+ candidate.name === symbol.name &&
122
+ (candidate.container ?? null) === (symbol.container ?? null) &&
123
+ candidate.declarationAnchor.line === symbol.declarationAnchor.line,
124
+ );
125
+ const observed = await Promise.all(
126
+ peers.map(async (candidate) => ({ candidate, identity: await resolveIdentity(candidate) })),
127
+ );
128
+ const selectedIdentity = await resolveIdentity(symbol);
129
+ const matching = observed
130
+ .filter(({ identity }) => identity.identityKind === selectedIdentity.identityKind)
131
+ .map(({ candidate }) => candidate)
132
+ .sort(compareCodeSymbolDeclarations);
133
+ return {
134
+ ...selectedIdentity,
135
+ declarationOccurrence: Math.max(0, matching.indexOf(symbol)),
136
+ };
137
+ }
138
+
139
+ function compareCodeSymbolDeclarations(left: CodeSymbol, right: CodeSymbol): number {
140
+ return (
141
+ left.declarationAnchor.character - right.declarationAnchor.character ||
142
+ (left.nameAnchor?.character ?? 0) - (right.nameAnchor?.character ?? 0)
143
+ );
144
+ }
145
+
146
+ /** Refine one semantic target with exact structural type-alias evidence. */
147
+ export async function refineTypeAliasIdentity(
148
+ target: ResolvedTargetData,
149
+ structural: Pick<StructuralProvider, "nodeAt"> | undefined,
150
+ ): Promise<ResolvedTargetData> {
151
+ if (target.identityKind !== undefined) return target;
152
+ const identity = await resolveDeclarationIdentityKind(
153
+ {
154
+ file: target.file,
155
+ name: target.name,
156
+ providerKind: target.kind,
157
+ nameAnchor:
158
+ target.anchorKind === "name"
159
+ ? { line: target.displayLine, character: target.displayCharacter }
160
+ : null,
161
+ },
162
+ structural,
163
+ );
164
+ return {
165
+ ...target,
166
+ identityKind: identity.identityKind,
167
+ provenance: identity.structuralEvidence ? ["semantic", "structural"] : target.provenance,
168
+ };
169
+ }
170
+
171
+ /** Refine resolved and candidate identities before Target-handle registration. */
172
+ export async function refineTargetOutcomeIdentity(
173
+ outcome: TargetOutcome,
174
+ cwd: string,
175
+ structural: Pick<StructuralProvider, "nodeAt"> | undefined,
176
+ ): Promise<TargetOutcome> {
177
+ if (outcome.kind === "resolved") {
178
+ return { kind: "resolved", target: await refineTypeAliasIdentity(outcome.target, structural) };
179
+ }
180
+ if (outcome.kind !== "disambiguation" && outcome.kind !== "kind-mismatch") return outcome;
181
+
182
+ const observations = await Promise.all(
183
+ outcome.candidates.map(async (candidate) => {
184
+ if (candidate.identityKind !== undefined) {
185
+ return { candidate, identityRefined: false };
186
+ }
187
+ const identity = await resolveDeclarationIdentityKind(
188
+ {
189
+ file: resolve(cwd, candidate.file),
190
+ name: candidate.name,
191
+ providerKind: candidate.kind,
192
+ nameAnchor:
193
+ candidate.anchorKind === "name"
194
+ ? { line: candidate.line, character: candidate.character }
195
+ : null,
196
+ },
197
+ structural,
198
+ );
199
+ return {
200
+ candidate: {
201
+ ...candidate,
202
+ identityKind: identity.identityKind,
203
+ provenance: identity.structuralEvidence
204
+ ? (["semantic", "structural"] as const)
205
+ : (["semantic"] as const),
206
+ },
207
+ identityRefined: true,
208
+ };
209
+ }),
210
+ );
211
+ const candidates = observations.map(({ candidate }) => candidate);
212
+ return {
213
+ ...outcome,
214
+ candidates: observations.some(({ identityRefined }) => identityRefined)
215
+ ? assignCandidateOccurrences(candidates, cwd)
216
+ : candidates,
217
+ };
218
+ }
219
+
220
+ function assignCandidateOccurrences(
221
+ candidates: Extract<TargetOutcome, { kind: "disambiguation" | "kind-mismatch" }>["candidates"],
222
+ cwd: string,
223
+ ): Extract<TargetOutcome, { kind: "disambiguation" | "kind-mismatch" }>["candidates"] {
224
+ const occurrences = new Map<string, number>();
225
+ return candidates.map((candidate) => {
226
+ const key = [
227
+ resolve(cwd, candidate.file),
228
+ candidate.declarationAnchor.line,
229
+ candidate.name,
230
+ candidate.identityKind ?? canonicalDeclarationKind(candidate.kind),
231
+ candidate.container ?? "",
232
+ ].join("\0");
233
+ const declarationOccurrence = occurrences.get(key) ?? 0;
234
+ occurrences.set(key, declarationOccurrence + 1);
235
+ return { ...candidate, declarationOccurrence };
236
+ });
237
+ }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Symbol target resolution — discovers symbols via the semantic substrate
3
- * and returns typed outcomes (resolved, disambiguation, or error).
3
+ * and returns typed outcomes (resolved, disambiguation, kind mismatch, or error).
4
4
  *
5
5
  * This resolver is semantic-only: it does not fall back to text search
6
6
  * or heuristic guessing. Ambiguous matches produce explicit disambiguation.
@@ -12,8 +12,9 @@ import type {
12
12
  SemanticProvider as SemanticSubstrate,
13
13
  } from "@mrclrchtr/supi-code-runtime/api";
14
14
  import { isWithinOrEqual } from "@mrclrchtr/supi-core/project";
15
+ import type { TargetSymbolKind } from "../../session/target-input.ts";
15
16
  import type { AnchorKind } from "../../session/target-store.ts";
16
- import { normalizePath } from "../search/ripgrep.ts";
17
+ import { normalizePath } from "../search/paths.ts";
17
18
  import type { DisambiguationCandidateData, TargetOutcome } from "./types.ts";
18
19
 
19
20
  const MAX_CANDIDATES = 8; // default fallback when maxResults is not provided
@@ -31,6 +32,13 @@ function isExactDocumentSymbolMatch(candidate: CodeSymbol, workspaceSymbol: Code
31
32
  );
32
33
  }
33
34
 
35
+ function hasSameDeclarationAnchor(candidate: CodeSymbol, workspaceSymbol: CodeSymbol): boolean {
36
+ return (
37
+ candidate.declarationAnchor.line === workspaceSymbol.declarationAnchor.line &&
38
+ candidate.declarationAnchor.character === workspaceSymbol.declarationAnchor.character
39
+ );
40
+ }
41
+
34
42
  /**
35
43
  * The preferred anchor for resolution/downstream: the name (identifier) anchor
36
44
  * when the provider derived it, else the declaration anchor. Strict consumers
@@ -53,19 +61,23 @@ async function refineResolvedSymbolAnchor(
53
61
  semantic: SemanticSubstrate,
54
62
  ): Promise<CodeSymbol> {
55
63
  try {
56
- const documentSymbols = await semantic.documentSymbols(workspaceSymbol.file);
57
- if (!documentSymbols || documentSymbols.length === 0) {
58
- return workspaceSymbol;
59
- }
64
+ const result = await semantic.documentSymbols(workspaceSymbol.file);
65
+ if (result.kind === "unavailable" || result.data.length === 0) return workspaceSymbol;
60
66
 
61
- const exactMatches = documentSymbols.filter((candidate) =>
67
+ const exactMatches = result.data.filter((candidate) =>
62
68
  isExactDocumentSymbolMatch(candidate, workspaceSymbol),
63
69
  );
64
- if (exactMatches.length !== 1) {
65
- return workspaceSymbol;
66
- }
70
+ const declarationMatches = exactMatches.filter((candidate) =>
71
+ hasSameDeclarationAnchor(candidate, workspaceSymbol),
72
+ );
73
+ const refined =
74
+ declarationMatches.length === 1
75
+ ? declarationMatches[0]
76
+ : exactMatches.length === 1
77
+ ? exactMatches[0]
78
+ : undefined;
79
+ if (!refined) return workspaceSymbol;
67
80
 
68
- const refined = exactMatches[0];
69
81
  const a = anchorOf(refined);
70
82
  if (a.line <= 0 && a.character <= 0) {
71
83
  return workspaceSymbol;
@@ -84,7 +96,7 @@ async function refineResolvedSymbolAnchor(
84
96
  * @param cwd - session working directory
85
97
  * @param semantic - the semantic substrate (LSP-backed)
86
98
  * @param options - optional filters: path scope, kind filter, exported-only
87
- * @returns Typed outcome: resolved, disambiguation, or error
99
+ * @returns Typed outcome: resolved, disambiguation, kind mismatch, or error
88
100
  */
89
101
  export async function resolveSymbolTarget(
90
102
  symbol: string,
@@ -92,105 +104,176 @@ export async function resolveSymbolTarget(
92
104
  semantic: SemanticSubstrate,
93
105
  options?: {
94
106
  path?: string;
95
- kind?: string;
107
+ kind?: TargetSymbolKind;
96
108
  exportedOnly?: boolean;
97
109
  maxResults?: number;
98
110
  },
99
111
  ): Promise<TargetOutcome> {
100
- const results = await semantic.workspaceSymbols(symbol);
101
- if (results === null) {
112
+ const result = await semantic.workspaceSymbols(symbol);
113
+ if (result.kind === "unavailable") {
102
114
  return {
103
115
  kind: "error",
104
- message: `Symbol discovery for \`${symbol}\` requires active LSP. Use \`file\` + coordinates, or enable LSP and retry.`,
116
+ message: `Symbol discovery for \`${symbol}\` is unavailable: ${result.reason}`,
105
117
  };
106
118
  }
107
- if (results.length === 0) {
119
+ if (result.data.length === 0) {
108
120
  return { kind: "error", message: `Symbol not found: \`${symbol}\`` };
109
121
  }
110
122
 
111
- // Filter by path scope. Tool paths may include pi's leading `@` prefix;
112
- // normalize through the shared path helper so every caller gets the same
113
- // scope semantics.
114
123
  const scopePath = options?.path ? normalizePath(options.path, cwd) : null;
115
- let candidates = results.filter((s) => {
116
- if (scopePath && !isWithinOrEqual(scopePath, s.file)) return false;
117
- return true;
118
- });
119
-
120
- // Filter by kind
121
- if (options?.kind) {
122
- const kindLower = options.kind.toLowerCase();
123
- candidates = candidates.filter((s) => s.kind.toLowerCase().includes(kindLower));
124
+ const scoped = result.data.filter((candidate) =>
125
+ scopePath ? isWithinOrEqual(scopePath, candidate.file) : true,
126
+ );
127
+ const eligible = options?.exportedOnly
128
+ ? scoped.filter((candidate) => !NON_EXPORTED_KINDS.has(candidate.kind))
129
+ : scoped;
130
+ if (eligible.length === 0) {
131
+ return {
132
+ kind: "error",
133
+ message: `Symbol not found: \`${symbol}\`${scopePath ? ` in path \`${options?.path}\`` : ""}`,
134
+ };
124
135
  }
125
136
 
126
- // Filter to exported symbols only
127
- if (options?.exportedOnly) {
128
- candidates = candidates.filter((s) => !NON_EXPORTED_KINDS.has(s.kind));
137
+ const requestedKind = options?.kind;
138
+ if (requestedKind) {
139
+ const exactKind = eligible.filter((candidate) =>
140
+ providerKindMatches(candidate.kind, requestedKind),
141
+ );
142
+ if (exactKind.length === 0) {
143
+ return buildCandidateOutcome({
144
+ kind: "kind-mismatch",
145
+ candidates: eligible,
146
+ semantic,
147
+ cwd,
148
+ maxResults: options.maxResults,
149
+ requestedKind,
150
+ });
151
+ }
152
+ return resolveCandidates(exactKind, semantic, cwd, options.maxResults);
129
153
  }
130
154
 
131
- // Range-less candidates (line=0,char=0) come from URI-only workspace symbols.
132
- // Keep them for disambiguation but don't promote to single-match resolution.
155
+ return resolveCandidates(eligible, semantic, cwd, options?.maxResults);
156
+ }
157
+
158
+ function providerKindMatches(reported: string, requested: TargetSymbolKind): boolean {
159
+ return normalizeProviderKind(reported) === normalizeProviderKind(requested);
160
+ }
161
+
162
+ function normalizeProviderKind(kind: string): string {
163
+ return kind.replace(/[\s_-]/g, "").toLowerCase();
164
+ }
165
+
166
+ async function resolveCandidates(
167
+ candidates: readonly CodeSymbol[],
168
+ semantic: SemanticSubstrate,
169
+ cwd: string,
170
+ maxResults?: number,
171
+ ): Promise<TargetOutcome> {
133
172
  const ranged = candidates.filter(
134
- (s) => s.declarationAnchor.line > 0 || s.declarationAnchor.character > 0,
173
+ (candidate) =>
174
+ candidate.declarationAnchor.line > 0 || candidate.declarationAnchor.character > 0,
135
175
  );
136
-
137
176
  if (ranged.length === 1) {
138
- const c = await refineResolvedSymbolAnchor(ranged[0], semantic);
139
- const a = anchorOf(c);
140
- return {
141
- kind: "resolved",
142
- target: {
143
- file: c.file,
144
- position: { line: a.line - 1, character: a.character - 1 },
145
- displayLine: a.line,
146
- displayCharacter: a.character,
147
- name: c.name,
148
- kind: c.kind,
149
- confidence: "semantic",
150
- anchorKind: (c.nameAnchor ? "name" : "declaration") as AnchorKind,
151
- container: c.container ?? null,
152
- },
153
- };
177
+ return resolvedTarget(await refineResolvedSymbolAnchor(ranged[0], semantic));
154
178
  }
179
+ return buildCandidateOutcome({
180
+ kind: "disambiguation",
181
+ candidates,
182
+ semantic,
183
+ cwd,
184
+ maxResults,
185
+ });
186
+ }
155
187
 
156
- // All candidates lost or only rangeless
157
- if (candidates.length === 0) {
158
- return {
159
- kind: "error",
160
- message: `Symbol not found: \`${symbol}\`${scopePath ? ` in path \`${options?.path}\`` : ""}`,
161
- };
162
- }
188
+ function resolvedTarget(candidate: CodeSymbol): TargetOutcome {
189
+ const anchor = anchorOf(candidate);
190
+ return {
191
+ kind: "resolved",
192
+ target: {
193
+ file: candidate.file,
194
+ position: { line: anchor.line - 1, character: anchor.character - 1 },
195
+ displayLine: anchor.line,
196
+ displayCharacter: anchor.character,
197
+ declarationAnchor: { ...candidate.declarationAnchor },
198
+ declarationOccurrence: 0,
199
+ name: candidate.name,
200
+ kind: candidate.kind,
201
+ confidence: "semantic",
202
+ provenance: ["semantic"],
203
+ anchorKind: (candidate.nameAnchor ? "name" : "declaration") as AnchorKind,
204
+ container: candidate.container ?? null,
205
+ },
206
+ };
207
+ }
208
+
209
+ interface CandidateOutcomeBase {
210
+ candidates: readonly CodeSymbol[];
211
+ semantic: SemanticSubstrate;
212
+ cwd: string;
213
+ maxResults?: number;
214
+ }
215
+
216
+ type CandidateOutcomeOptions = CandidateOutcomeBase &
217
+ (
218
+ | { kind: "disambiguation"; requestedKind?: never }
219
+ | { kind: "kind-mismatch"; requestedKind: TargetSymbolKind }
220
+ );
163
221
 
164
- // Multiple candidates — refine each to a name (identifier) anchor before
165
- // returning disambiguation, so position-strict downstream substrates
166
- // (tree-sitter calleesAt, LSP rename) receive the identifier anchor rather
167
- // than the declaration anchor (the `export` keyword) that workspace-symbol
168
- // hits carry. Mirrors the single-match refine path above.
169
- // Per ADR 0003, `anchorOf` prefers the refined doc symbol's `nameAnchor`.
170
- // TODO: batch the per-file documentSymbols dedupe across candidates.
171
- const cap = options?.maxResults ?? MAX_CANDIDATES;
222
+ /**
223
+ * Refine only bounded visible candidates to name anchors while retaining the
224
+ * exact provider result count for omission disclosure. No candidate is
225
+ * promoted when the requested provider kind did not match.
226
+ */
227
+ async function buildCandidateOutcome(
228
+ options: CandidateOutcomeOptions,
229
+ ): Promise<Extract<TargetOutcome, { kind: "disambiguation" | "kind-mismatch" }>> {
230
+ const cap = options.maxResults ?? MAX_CANDIDATES;
172
231
  const refined = await Promise.all(
173
- candidates.slice(0, cap).map((c) => refineResolvedSymbolAnchor(c, semantic)),
232
+ options.candidates
233
+ .slice(0, cap)
234
+ .map((candidate) => refineResolvedSymbolAnchor(candidate, options.semantic)),
174
235
  );
175
- const candidatesOut = refined.map((c, idx) => {
176
- const relFile = path.relative(cwd, c.file);
177
- const a = anchorOf(c);
236
+ const common = {
237
+ candidates: toDisambiguationCandidates(refined, options.cwd),
238
+ omittedCount: Math.max(0, options.candidates.length - cap),
239
+ };
240
+ return options.kind === "kind-mismatch"
241
+ ? {
242
+ kind: options.kind,
243
+ requestedKind: options.requestedKind,
244
+ ...common,
245
+ }
246
+ : { kind: options.kind, ...common };
247
+ }
248
+
249
+ function toDisambiguationCandidates(
250
+ candidates: readonly CodeSymbol[],
251
+ cwd: string,
252
+ ): DisambiguationCandidateData[] {
253
+ const occurrences = new Map<string, number>();
254
+ return candidates.map((candidate, index) => {
255
+ const relFile = path.relative(cwd, candidate.file);
256
+ const anchor = anchorOf(candidate);
257
+ const occurrenceKey = [
258
+ relFile,
259
+ candidate.declarationAnchor.line,
260
+ candidate.name,
261
+ candidate.kind,
262
+ candidate.container ?? "",
263
+ ].join("\0");
264
+ const declarationOccurrence = occurrences.get(occurrenceKey) ?? 0;
265
+ occurrences.set(occurrenceKey, declarationOccurrence + 1);
178
266
  return {
179
- name: c.name,
180
- kind: c.kind,
181
- container: c.container ?? null,
267
+ name: candidate.name,
268
+ kind: candidate.kind,
269
+ container: candidate.container ?? null,
182
270
  file: relFile,
183
- line: a.line,
184
- character: a.character,
185
- reason: relFile,
186
- rank: idx + 1,
187
- anchorKind: (c.nameAnchor ? "name" : "declaration") as AnchorKind,
271
+ line: anchor.line,
272
+ character: anchor.character,
273
+ declarationAnchor: { ...candidate.declarationAnchor },
274
+ declarationOccurrence,
275
+ rank: index + 1,
276
+ anchorKind: (candidate.nameAnchor ? "name" : "declaration") as AnchorKind,
188
277
  };
189
- }) satisfies DisambiguationCandidateData[];
190
-
191
- return {
192
- kind: "disambiguation",
193
- candidates: candidatesOut,
194
- omittedCount: Math.max(0, candidates.length - cap),
195
- };
278
+ });
196
279
  }
@@ -10,7 +10,10 @@ import type {
10
10
  SemanticProvider as SemanticSubstrate,
11
11
  StructuralProvider as StructuralSubstrate,
12
12
  } from "@mrclrchtr/supi-code-runtime/api";
13
- import type { AnchorKind } from "../../session/target-store.ts";
13
+ import type { TargetSymbolKind } from "../../session/target-input.ts";
14
+ import type { AnchorKind, TargetProviderProvenance } from "../../session/target-store.ts";
15
+
16
+ export type { TargetProviderProvenance } from "../../session/target-store.ts";
14
17
 
15
18
  // ── Normalized query ──────────────────────────────────────────────────
16
19
 
@@ -69,12 +72,23 @@ export interface ResolvedTargetData {
69
72
  /** 1-based position for user display */
70
73
  displayLine: number;
71
74
  displayCharacter: number;
75
+ /**
76
+ * Stable 1-based declaration occurrence used for target identity. Unlike
77
+ * the preferred display anchor, this does not move during name refinement.
78
+ */
79
+ declarationAnchor: { line: number; character: number };
80
+ /** Zero-based occurrence among otherwise-identical declarations on that line. */
81
+ declarationOccurrence: number;
72
82
  name: string | null;
73
83
  kind: string | null;
84
+ /** Evidence-backed provider-independent kind used for matching and handle identity. */
85
+ identityKind?: string;
74
86
  confidence: "semantic" | "structural" | "heuristic" | "unavailable";
87
+ /** Provider families that established this declaration, strongest first. */
88
+ provenance: readonly TargetProviderProvenance[];
75
89
  /** Which anchor this target carries — drives strict-consumer enforcement (ADR 0003). */
76
90
  anchorKind: AnchorKind;
77
- /** Symbolic container (class/namespace/module name), or null for top-level. */
91
+ /** Named symbolic container, or null when no container name was reported. */
78
92
  container: string | null;
79
93
  /**
80
94
  * Resolution provenance — present when the target was resolved from
@@ -85,13 +99,18 @@ export interface ResolvedTargetData {
85
99
  }
86
100
 
87
101
  /**
88
- * A file-level target group with one or more discoverable targets.
102
+ * A file-derived Target group with zero or more evidence-backed declarations.
89
103
  */
90
104
  export interface ResolvedTargetGroupData {
91
105
  file: string;
92
106
  displayName: string;
93
107
  targets: ResolvedTargetData[];
108
+ /** Providers that successfully enumerated the selected file. */
109
+ discoveryProvenance: readonly TargetProviderProvenance[];
110
+ /** Conservative confidence across the complete group, before display capping. */
94
111
  confidence: "semantic" | "structural" | "heuristic" | "unavailable";
112
+ /** Complete-group declarations whose provider observations could not establish hierarchy. */
113
+ unknownNestingCount: number;
95
114
  }
96
115
 
97
116
  /**
@@ -100,11 +119,18 @@ export interface ResolvedTargetGroupData {
100
119
  export interface DisambiguationCandidateData {
101
120
  name: string;
102
121
  kind: string | null;
122
+ /** Evidence-backed provider-independent kind used for handle identity. */
123
+ identityKind?: string;
124
+ /** Provider families that established this candidate declaration. */
125
+ provenance?: readonly TargetProviderProvenance[];
103
126
  container: string | null;
104
127
  file: string;
105
128
  line: number;
106
129
  character: number;
107
- reason: string;
130
+ /** Stable 1-based declaration occurrence for target identity. */
131
+ declarationAnchor: { line: number; character: number };
132
+ /** Zero-based occurrence among otherwise-identical declarations on that line. */
133
+ declarationOccurrence: number;
108
134
  rank: number;
109
135
  /** Which anchor this candidate carries (ADR 0003). */
110
136
  anchorKind: AnchorKind;
@@ -124,4 +150,10 @@ export type TargetOutcome =
124
150
  candidates: DisambiguationCandidateData[];
125
151
  omittedCount: number;
126
152
  }
153
+ | {
154
+ kind: "kind-mismatch";
155
+ requestedKind: TargetSymbolKind;
156
+ candidates: DisambiguationCandidateData[];
157
+ omittedCount: number;
158
+ }
127
159
  | { kind: "error"; message: string };