@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
@@ -11,14 +11,24 @@
11
11
  * evidence-list primitive beneath it.
12
12
  */
13
13
 
14
- export type EvidencePartialReason = "timeout" | "safety-limit" | "interrupted" | "provider-limited";
14
+ export type EvidencePartialReason =
15
+ | "timeout"
16
+ | "safety-limit"
17
+ | "interrupted"
18
+ | "provider-limited"
19
+ | "filesystem-error"
20
+ | "configuration-error"
21
+ | "invalid-provider-location";
15
22
 
16
23
  export interface EvidenceListMetadata {
17
24
  key: string;
18
25
  totalCount: number | null;
19
26
  shownCount: number;
27
+ /** Known collected atoms hidden by presentation; null when not tracked. */
20
28
  omittedCount: number | null;
21
29
  partialReason: EvidencePartialReason | null;
30
+ /** Unusable semantic-provider locations excluded from valid evidence totals. */
31
+ invalidLocationCount?: number;
22
32
  }
23
33
 
24
34
  export interface EvidenceList<T> {
@@ -38,6 +48,8 @@ export interface CreatePartialEvidenceListParams<T> {
38
48
  key: string;
39
49
  items: T[];
40
50
  partialReason: EvidencePartialReason;
51
+ /** Optional display cap; the overall evidence total remains unknown. */
52
+ maxResults?: number;
41
53
  }
42
54
 
43
55
  export interface EvidenceListSummary {
@@ -67,14 +79,17 @@ export function createEvidenceList<T>(params: CreateEvidenceListParams<T>): Evid
67
79
  export function createPartialEvidenceList<T>(
68
80
  params: CreatePartialEvidenceListParams<T>,
69
81
  ): EvidenceList<T> {
82
+ const maxResults = params.maxResults ?? params.items.length;
83
+ const items = params.items.slice(0, Math.max(0, maxResults));
70
84
  return {
71
85
  key: params.key,
72
- items: [...params.items],
86
+ items,
73
87
  metadata: {
74
88
  key: params.key,
75
89
  totalCount: null,
76
- shownCount: params.items.length,
77
- omittedCount: null,
90
+ shownCount: items.length,
91
+ omittedCount:
92
+ params.maxResults === undefined ? null : Math.max(0, params.items.length - items.length),
78
93
  partialReason: params.partialReason,
79
94
  },
80
95
  };
@@ -89,7 +104,9 @@ export function renderEvidenceListMetadataDisclosure(
89
104
  ): string | null {
90
105
  if (metadata.totalCount === null) {
91
106
  if (metadata.partialReason === null) return null;
92
- return `_(showing ${metadata.shownCount}; more may exist — ${metadata.partialReason})_`;
107
+ const omitted = metadata.omittedCount ?? 0;
108
+ const omittedDisclosure = omitted > 0 ? `; ${omitted} collected omitted` : "";
109
+ return `_(showing ${metadata.shownCount}${omittedDisclosure}; more may exist — ${metadata.partialReason})_`;
93
110
  }
94
111
 
95
112
  if ((metadata.omittedCount ?? 0) <= 0) return null;
@@ -0,0 +1,183 @@
1
+ // Diagnostics collection for code_health.
2
+ // Extracted from orchestrate.ts.
3
+
4
+ import { existsSync, statSync } from "node:fs";
5
+ import { resolve } from "node:path";
6
+ import { isWithinOrEqual } from "@mrclrchtr/supi-core/api";
7
+ import type { Diagnostic, WorkspaceLspRuntime } from "@mrclrchtr/supi-lsp/api";
8
+ import type {
9
+ HealthDiagnosticEntry,
10
+ HealthDiagnosticMessage,
11
+ HealthDiagnosticObservation,
12
+ HealthDiagnosticScope,
13
+ HealthSection,
14
+ } from "../../session/health-types.ts";
15
+
16
+ // ── Diagnostics ───────────────────────────────────────────────────────
17
+
18
+ export function isScopedFile(scopeFilter: string | null): scopeFilter is string {
19
+ return scopeFilter !== null && existsSync(scopeFilter) && !isDirectory(scopeFilter);
20
+ }
21
+
22
+ /** Describe exactly what a health diagnostic observation can establish. */
23
+ export function diagnosticScope(scopeFilter: string | null): HealthDiagnosticScope {
24
+ return isScopedFile(scopeFilter)
25
+ ? { kind: "file", path: scopeFilter }
26
+ : { kind: "tracked-files", filter: scopeFilter };
27
+ }
28
+
29
+ interface CollectDiagnosticsOptions {
30
+ readonly service: WorkspaceLspRuntime | null;
31
+ readonly included: readonly HealthSection[];
32
+ readonly scope: HealthDiagnosticScope;
33
+ readonly cwd: string;
34
+ readonly unavailableReason: string;
35
+ /** Collect individual messages per file (detailed level). */
36
+ readonly detailed?: boolean;
37
+ }
38
+
39
+ /** Collect diagnostics without widening the requested evidence scope. */
40
+ export async function collectDiagnostics(
41
+ options: CollectDiagnosticsOptions,
42
+ ): Promise<HealthDiagnosticObservation> {
43
+ const { service, included, scope, cwd, unavailableReason, detailed } = options;
44
+ if (!included.includes("diagnostics")) return { kind: "not-requested", entries: [] };
45
+ if (!service) return unavailableDiagnostics(scope, unavailableReason);
46
+
47
+ return scope.kind === "file"
48
+ ? collectScopedFileDiagnostics(service, scope, detailed)
49
+ : collectTrackedFileDiagnostics(service, scope, cwd, detailed);
50
+ }
51
+
52
+ async function collectScopedFileDiagnostics(
53
+ service: WorkspaceLspRuntime,
54
+ scope: Extract<HealthDiagnosticScope, { kind: "file" }>,
55
+ detailed?: boolean,
56
+ ): Promise<HealthDiagnosticObservation> {
57
+ try {
58
+ const result = await service.fileDiagnostics(scope.path, 4);
59
+ if (result.kind === "unavailable") return unavailableDiagnostics(scope, result.reason);
60
+
61
+ const entries = toFileDiagnosticEntries(scope.path, result.data, detailed);
62
+ return result.kind === "partial"
63
+ ? { kind: "partial", scope, entries, reason: result.reason }
64
+ : { kind: "completed", scope, entries };
65
+ } catch (error) {
66
+ return unavailableDiagnostics(scope, errorMessage(error, "File diagnostic request failed."));
67
+ }
68
+ }
69
+
70
+ function collectTrackedFileDiagnostics(
71
+ service: WorkspaceLspRuntime,
72
+ scope: Extract<HealthDiagnosticScope, { kind: "tracked-files" }>,
73
+ cwd: string,
74
+ detailed?: boolean,
75
+ ): HealthDiagnosticObservation {
76
+ try {
77
+ const entries = detailed
78
+ ? collectWorkspaceDiagnosticsDetailed(service, scope.filter, cwd)
79
+ : collectWorkspaceDiagnostics(service, scope.filter, cwd);
80
+ return { kind: "completed", scope, entries };
81
+ } catch (error) {
82
+ return unavailableDiagnostics(
83
+ scope,
84
+ errorMessage(error, "Tracked-file diagnostic snapshot is unavailable."),
85
+ );
86
+ }
87
+ }
88
+
89
+ function toFileDiagnosticEntries(
90
+ file: string,
91
+ diagnostics: ReadonlyArray<Pick<Diagnostic, "severity" | "message" | "source" | "range">>,
92
+ detailed?: boolean,
93
+ ): HealthDiagnosticEntry[] {
94
+ const errors = diagnostics.filter((diagnostic) => (diagnostic.severity ?? 1) === 1).length;
95
+ const warnings = diagnostics.filter((diagnostic) => (diagnostic.severity ?? 1) === 2).length;
96
+ if (!hasIssueCounts(errors, warnings)) return [];
97
+ const entry: HealthDiagnosticEntry = { file, errors, warnings };
98
+ if (detailed) {
99
+ return [{ ...entry, messages: extractMessages(diagnostics) }];
100
+ }
101
+ return [entry];
102
+ }
103
+
104
+ function collectWorkspaceDiagnostics(
105
+ service: WorkspaceLspRuntime,
106
+ scopeFilter: string | null,
107
+ cwd: string,
108
+ ): HealthDiagnosticEntry[] {
109
+ const summary = service.getWorkspaceDiagnosticSummary();
110
+ const result: HealthDiagnosticEntry[] = [];
111
+
112
+ for (const entry of summary) {
113
+ const filePath = resolve(cwd, entry.file);
114
+ if (scopeFilter && !isWithinOrEqual(scopeFilter, filePath)) continue;
115
+ if (!hasIssueCounts(entry.errors, entry.warnings)) continue;
116
+ result.push({ file: filePath, errors: entry.errors, warnings: entry.warnings });
117
+ }
118
+
119
+ return result;
120
+ }
121
+
122
+ /** Detailed workspace path: full diagnostics with messages, capped per file. */
123
+ function collectWorkspaceDiagnosticsDetailed(
124
+ service: WorkspaceLspRuntime,
125
+ scopeFilter: string | null,
126
+ cwd: string,
127
+ ): HealthDiagnosticEntry[] {
128
+ const outstanding = service.getOutstandingDiagnostics(2);
129
+ const result: HealthDiagnosticEntry[] = [];
130
+
131
+ for (const { file, diagnostics } of outstanding) {
132
+ const filePath = resolve(cwd, file);
133
+ if (scopeFilter && !isWithinOrEqual(scopeFilter, filePath)) continue;
134
+ const entries = toFileDiagnosticEntries(filePath, diagnostics, true);
135
+ result.push(...entries);
136
+ }
137
+
138
+ return result;
139
+ }
140
+
141
+ // ── Message extraction ────────────────────────────────────────────────
142
+
143
+ const MAX_MESSAGES_PER_FILE = 3;
144
+
145
+ function extractMessages(
146
+ diagnostics: ReadonlyArray<Pick<Diagnostic, "severity" | "message" | "source" | "range">>,
147
+ ): HealthDiagnosticMessage[] {
148
+ const errorsAndWarnings = diagnostics
149
+ .filter((d) => (d.severity ?? 1) <= 2)
150
+ .sort(
151
+ (a, b) => (a.severity ?? 1) - (b.severity ?? 1) || a.range.start.line - b.range.start.line,
152
+ );
153
+
154
+ return errorsAndWarnings.slice(0, MAX_MESSAGES_PER_FILE).map((d) => ({
155
+ line: d.range.start.line + 1,
156
+ severity: (d.severity ?? 1) === 1 ? ("error" as const) : ("warning" as const),
157
+ message: typeof d.message === "string" ? d.message : d.message.value,
158
+ ...(d.source ? { source: d.source } : {}),
159
+ }));
160
+ }
161
+
162
+ function unavailableDiagnostics(
163
+ scope: HealthDiagnosticScope,
164
+ reason: string,
165
+ ): HealthDiagnosticObservation {
166
+ return { kind: "unavailable", scope, entries: [], reason };
167
+ }
168
+
169
+ function errorMessage(error: unknown, fallback: string): string {
170
+ return error instanceof Error && error.message ? error.message : fallback;
171
+ }
172
+
173
+ function hasIssueCounts(errors: number, warnings: number): boolean {
174
+ return errors > 0 || warnings > 0;
175
+ }
176
+
177
+ export function isDirectory(filePath: string): boolean {
178
+ try {
179
+ return statSync(filePath).isDirectory();
180
+ } catch {
181
+ return false;
182
+ }
183
+ }
@@ -0,0 +1,39 @@
1
+ // Recovery and state description helpers for code_health.
2
+ // Extracted from orchestrate.ts.
3
+
4
+ import type { CapabilityState } from "@mrclrchtr/supi-code-runtime/api";
5
+ import type { RecoverDiagnosticsResult, WorkspaceLspRuntime } from "@mrclrchtr/supi-lsp/api";
6
+
7
+ // ── Recovery ──────────────────────────────────────────────────────────
8
+
9
+ interface RecoverOptions {
10
+ service: WorkspaceLspRuntime;
11
+ progress?: () => void;
12
+ }
13
+
14
+ /** Run the runtime's best-effort recovery and preserve its established outcome. */
15
+ export async function recoverDiagnosticRuntime(
16
+ opts: RecoverOptions,
17
+ ): Promise<RecoverDiagnosticsResult> {
18
+ opts.progress?.();
19
+ return opts.service.recoverDiagnostics({ restartIfStillStale: true });
20
+ }
21
+
22
+ // ── State description helpers ─────────────────────────────────────────
23
+
24
+ export function describeStructuralState(state: CapabilityState): string {
25
+ switch (state.kind) {
26
+ case "ready":
27
+ return "ready";
28
+ case "pending":
29
+ return "starting…";
30
+ case "inactive":
31
+ return "inactive";
32
+ case "disabled":
33
+ return "disabled by configuration";
34
+ case "unavailable":
35
+ return `unavailable — ${state.reason}`;
36
+ default:
37
+ return "unknown state";
38
+ }
39
+ }
@@ -0,0 +1,20 @@
1
+ // Live server collection for code_health.
2
+
3
+ import type { WorkspaceLspRuntime } from "@mrclrchtr/supi-lsp/api";
4
+ import type { HealthData, HealthSection } from "../../session/health-types.ts";
5
+
6
+ /** Collect the current language-server inventory when requested. */
7
+ export function collectServers(
8
+ service: WorkspaceLspRuntime | null,
9
+ included: readonly HealthSection[],
10
+ ): HealthData["servers"] {
11
+ if (!included.includes("servers") || !service) return [];
12
+
13
+ return service.getProjectServers().map((server) => ({
14
+ name: server.name,
15
+ root: server.root,
16
+ fileTypes: server.fileTypes,
17
+ status: server.status,
18
+ ready: server.ready,
19
+ }));
20
+ }
@@ -1,6 +1,6 @@
1
1
  // Directory-local instruction file discovery and rendering for code_orientation.
2
2
 
3
- import { readFileSync, statSync } from "node:fs";
3
+ import { readFileSync, realpathSync, statSync } from "node:fs";
4
4
  import * as path from "node:path";
5
5
  import { isWithinOrEqual } from "@mrclrchtr/supi-core/project";
6
6
 
@@ -33,11 +33,30 @@ export interface InstructionFilesMetadata {
33
33
  files: Array<Omit<RenderedInstructionFile, "content">>;
34
34
  }
35
35
 
36
+ /**
37
+ * Validate that a configured instruction file name is a plain filename
38
+ * with no directory components. Rejects names that would allow path traversal.
39
+ */
40
+ export function isValidInstructionFileName(name: unknown): name is string {
41
+ if (typeof name !== "string") return false;
42
+ const trimmed = name.trim();
43
+ if (trimmed.length === 0 || trimmed !== name) return false;
44
+ if (trimmed !== path.basename(trimmed)) return false;
45
+ if (trimmed === "." || trimmed === "..") return false;
46
+ return true;
47
+ }
48
+
36
49
  /**
37
50
  * Find configured instruction files for a directory focus.
38
51
  *
39
52
  * Walks from cwd to the focused directory (shallowest first, deepest last),
40
- * selecting the first configured file name that exists in each directory.
53
+ * selecting the first valid configured file name that exists in each directory.
54
+ * Each configured name is validated as a plain filename; resolved candidates
55
+ * are verified via realpath to remain within the workspace root.
56
+ *
57
+ * When the project is not trusted, all project-configured instruction files
58
+ * are rejected so a repository-authored path cannot cause reads outside the
59
+ * workspace root.
41
60
  */
42
61
  export function findInstructionFilesForDirectory(options: {
43
62
  directory: string;
@@ -45,11 +64,17 @@ export function findInstructionFilesForDirectory(options: {
45
64
  fileNames: string[];
46
65
  nativeContextPaths: Set<string>;
47
66
  surfacedDirectories: Set<string>;
67
+ /** Whether project-local configuration is trusted. */
68
+ projectTrusted: boolean;
48
69
  }): InstructionFileMatch[] {
49
70
  const cwd = path.resolve(options.cwd);
50
71
  const directory = path.resolve(options.directory);
51
- const fileNames = options.fileNames.filter((name) => name.trim().length > 0);
52
- if (fileNames.length === 0) return [];
72
+
73
+ const validNames =
74
+ options.projectTrusted && Array.isArray(options.fileNames)
75
+ ? options.fileNames.filter(isValidInstructionFileName)
76
+ : [];
77
+ if (validNames.length === 0) return [];
53
78
  if (!isDirectoryWithinCwd(directory, cwd)) return [];
54
79
 
55
80
  const dirs = collectDirsShallowestFirst(directory, cwd);
@@ -57,7 +82,7 @@ export function findInstructionFilesForDirectory(options: {
57
82
 
58
83
  for (const dir of dirs) {
59
84
  if (options.surfacedDirectories.has(dir)) continue;
60
- const match = findFirstInstructionFile(dir, cwd, fileNames);
85
+ const match = findFirstInstructionFile(dir, cwd, validNames);
61
86
  if (!match) continue;
62
87
  if (options.nativeContextPaths.has(match.absolutePath)) continue;
63
88
  matches.push(match);
@@ -68,7 +93,9 @@ export function findInstructionFilesForDirectory(options: {
68
93
 
69
94
  function isDirectoryWithinCwd(directory: string, cwd: string): boolean {
70
95
  try {
71
- return statSync(directory).isDirectory() && isWithinOrEqual(cwd, directory);
96
+ const realCwd = path.resolve(realpathSync(cwd));
97
+ const realDirectory = path.resolve(realpathSync(directory));
98
+ return statSync(realDirectory).isDirectory() && isWithinOrEqual(realCwd, realDirectory);
72
99
  } catch {
73
100
  return false;
74
101
  }
@@ -96,9 +123,30 @@ function findFirstInstructionFile(
96
123
  ): InstructionFileMatch | null {
97
124
  for (const fileName of fileNames) {
98
125
  const candidate = path.join(dir, fileName);
99
- if (!isFile(candidate)) continue;
126
+
127
+ // Resolve the candidate to its real path to defuse symlinks that
128
+ // may point outside the workspace.
129
+ let realCandidate: string;
130
+ try {
131
+ realCandidate = path.resolve(realpathSync(candidate));
132
+ } catch {
133
+ continue;
134
+ }
135
+ if (!isFile(realCandidate)) continue;
136
+
137
+ // Verify containment: both the workspace root and the candidate must
138
+ // be resolved consistently so symlinks in temp directories (e.g. macOS
139
+ // /var → /private/var) don't break containment.
140
+ let realCwd: string;
141
+ try {
142
+ realCwd = path.resolve(realpathSync(cwd));
143
+ } catch {
144
+ continue;
145
+ }
146
+ if (!isWithinOrEqual(realCwd, realCandidate)) continue;
147
+
100
148
  return {
101
- absolutePath: candidate,
149
+ absolutePath: realCandidate,
102
150
  relativePath: path.relative(cwd, candidate),
103
151
  directory: dir,
104
152
  relativeDirectory: path.relative(cwd, dir) || ".",
@@ -107,32 +155,15 @@ function findFirstInstructionFile(
107
155
  return null;
108
156
  }
109
157
 
110
- /** Render instruction files as a markdown section and structured metadata. */
111
- export function renderInstructionFiles(
158
+ /** Read bounded instruction-file facts for session-owned Orientation. */
159
+ export function collectInstructionFiles(
112
160
  files: InstructionFileMatch[],
113
161
  lineLimit = INSTRUCTION_FILE_LINE_LIMIT,
114
- ): { markdown: string; metadata: InstructionFilesMetadata } | null {
162
+ ): { files: RenderedInstructionFile[]; metadata: InstructionFilesMetadata } | null {
115
163
  const rendered = files.map((file) => renderInstructionFile(file, lineLimit)).filter(isRendered);
116
164
  if (rendered.length === 0) return null;
117
-
118
- const lines: string[] = [];
119
- lines.push("## Instructions");
120
- lines.push("");
121
- for (const file of rendered) {
122
- lines.push(`### ${file.path}`);
123
- lines.push("");
124
- lines.push(file.content);
125
- if (file.truncated) {
126
- lines.push("");
127
- lines.push(
128
- `_Instruction file truncated to ${file.shownLines} of ${file.totalLines} lines. Use \`read\` on \`${file.path}\` for the full file._`,
129
- );
130
- }
131
- lines.push("");
132
- }
133
-
134
165
  return {
135
- markdown: lines.join("\n").trimEnd(),
166
+ files: rendered,
136
167
  metadata: {
137
168
  files: rendered.map(({ content: _content, ...metadata }) => metadata),
138
169
  },
@@ -173,22 +204,3 @@ function renderInstructionFile(
173
204
  function isRendered(value: RenderedInstructionFile | null): value is RenderedInstructionFile {
174
205
  return value !== null;
175
206
  }
176
-
177
- /** Insert instruction markdown after the opening title/summary block of a brief. */
178
- export function insertInstructionsNearTop(content: string, instructionsMarkdown: string): string {
179
- const lines = content.split("\n");
180
- const insertAt = findFirstSectionIndexAfterTitle(lines);
181
- const before = lines.slice(0, insertAt).join("\n").trimEnd();
182
- const after = lines.slice(insertAt).join("\n").trimStart();
183
-
184
- if (!before) return `${instructionsMarkdown}\n\n${after}`.trimEnd();
185
- if (!after) return `${before}\n\n${instructionsMarkdown}`.trimEnd();
186
- return `${before}\n\n${instructionsMarkdown}\n\n${after}`.trimEnd();
187
- }
188
-
189
- function findFirstSectionIndexAfterTitle(lines: string[]): number {
190
- for (let i = 1; i < lines.length; i++) {
191
- if (lines[i].startsWith("## ")) return i;
192
- }
193
- return lines.length;
194
- }
@@ -14,8 +14,9 @@ import {
14
14
  getDefaultWorkspaceRuntime,
15
15
  type SemanticProvider,
16
16
  type StructuralProvider,
17
+ unavailableCodeQuery,
17
18
  } from "@mrclrchtr/supi-code-runtime/api";
18
- import { getSessionLspService, type SessionLspServiceState } from "@mrclrchtr/supi-lsp/api";
19
+ import { getWorkspaceLspRuntime, type WorkspaceLspRuntimeState } from "@mrclrchtr/supi-lsp/api";
19
20
 
20
21
  /**
21
22
  * Unified code analysis provider combining semantic (LSP-backed) and
@@ -25,7 +26,7 @@ export interface CodeProvider extends SemanticProvider, StructuralProvider {}
25
26
 
26
27
  /** Availability state for the code provider in a workspace. */
27
28
  export type CodeProviderState =
28
- | { kind: "ready"; provider: CodeProvider; lspService: SessionLspServiceState }
29
+ | { kind: "ready"; provider: CodeProvider; lspRuntime: WorkspaceLspRuntimeState }
29
30
  | { kind: "unavailable"; reason: string };
30
31
 
31
32
  /**
@@ -77,7 +78,7 @@ export function getCodeProviderState(cwd: string): CodeProviderState {
77
78
  (hasSemantic ? ws.semantic.provider : null) as SemanticProvider | null,
78
79
  (hasStructural ? ws.structural.provider : null) as StructuralProvider | null,
79
80
  ),
80
- lspService: getSessionLspService(cwd),
81
+ lspRuntime: getWorkspaceLspRuntime(cwd),
81
82
  };
82
83
  }
83
84
 
@@ -93,6 +94,13 @@ export const getCodeProvider = getCodeProviderState;
93
94
  * provider methods are forwarded automatically — no need to update
94
95
  * the composite wrapper.
95
96
  */
97
+ /** Build a composite facade that deliberately exposes structural evidence only. */
98
+ export function createStructuralCodeProvider(
99
+ structural: StructuralProvider | null,
100
+ ): CodeProvider | null {
101
+ return structural ? createCompositeProvider(null, structural) : null;
102
+ }
103
+
96
104
  function createCompositeProvider(
97
105
  semantic: SemanticProvider | null,
98
106
  structural: StructuralProvider | null,
@@ -100,29 +108,40 @@ function createCompositeProvider(
100
108
  return {
101
109
  // ── Semantic methods ──────────────────────────────────────────────
102
110
  async references(...args: Parameters<SemanticProvider["references"]>) {
103
- return semantic?.references(...args) ?? null;
111
+ return (
112
+ semantic?.references(...args) ?? unavailableCodeQuery("Semantic references unavailable")
113
+ );
104
114
  },
105
115
  async implementation(...args: Parameters<SemanticProvider["implementation"]>) {
106
- return semantic?.implementation(...args) ?? null;
116
+ return (
117
+ semantic?.implementation(...args) ??
118
+ unavailableCodeQuery("Semantic implementations unavailable")
119
+ );
107
120
  },
108
121
  async documentSymbols(...args: Parameters<SemanticProvider["documentSymbols"]>) {
109
- return semantic?.documentSymbols(...args) ?? null;
122
+ return (
123
+ semantic?.documentSymbols(...args) ??
124
+ unavailableCodeQuery("Semantic document symbols unavailable")
125
+ );
110
126
  },
111
127
  async workspaceSymbols(...args: Parameters<SemanticProvider["workspaceSymbols"]>) {
112
- return semantic?.workspaceSymbols(...args) ?? null;
128
+ return (
129
+ semantic?.workspaceSymbols(...args) ??
130
+ unavailableCodeQuery("Semantic workspace symbols unavailable")
131
+ );
113
132
  },
114
133
  async hover(...args: Parameters<NonNullable<SemanticProvider["hover"]>>) {
115
- return semantic?.hover?.(...args) ?? null;
134
+ return semantic?.hover?.(...args) ?? unavailableCodeQuery("Semantic hover unavailable");
116
135
  },
117
136
  async definition(...args: Parameters<NonNullable<SemanticProvider["definition"]>>) {
118
- return semantic?.definition?.(...args) ?? null;
137
+ return (
138
+ semantic?.definition?.(...args) ?? unavailableCodeQuery("Semantic definition unavailable")
139
+ );
119
140
  },
120
141
  async codeActions(...args: Parameters<NonNullable<SemanticProvider["codeActions"]>>) {
121
142
  return semantic?.codeActions?.(...args) ?? [];
122
143
  },
123
- async codeActionTitles(...args: Parameters<NonNullable<SemanticProvider["codeActionTitles"]>>) {
124
- return semantic?.codeActionTitles?.(...args) ?? null;
125
- },
144
+
126
145
  async rename(...args: Parameters<NonNullable<SemanticProvider["rename"]>>) {
127
146
  const result = await semantic?.rename?.(...args);
128
147
  return (
@@ -1,9 +1,9 @@
1
1
  import { getDefaultWorkspaceRuntime } from "@mrclrchtr/supi-code-runtime/api";
2
2
  import {
3
- getSessionLspService,
3
+ getWorkspaceLspRuntime,
4
4
  type SemanticReadinessResult,
5
- type SessionLspServiceState,
6
- waitForSessionLspService,
5
+ type WorkspaceLspRuntimeState,
6
+ waitForWorkspaceLspRuntime,
7
7
  } from "@mrclrchtr/supi-lsp/api";
8
8
 
9
9
  export const DEFAULT_SEMANTIC_STARTUP_TIMEOUT_MS = 15_000;
@@ -24,7 +24,7 @@ export async function ensureSemanticReadiness(
24
24
  }
25
25
 
26
26
  if (workspace.semantic.state.kind === "ready") {
27
- return { kind: "ready" };
27
+ return resolveReadySemanticState(cwd, scope, timeoutMs);
28
28
  }
29
29
 
30
30
  if (workspace.semantic.state.kind !== "pending") {
@@ -59,15 +59,35 @@ export async function ensureSemanticReadiness(
59
59
  return { kind: "timeout" };
60
60
  }
61
61
  return scope.kind === "workspace"
62
- ? lspState.service.waitUntilReadyForWorkspace({ timeoutMs: remainingAfterLsp })
63
- : lspState.service.waitUntilReadyForFile(scope.file, { timeoutMs: remainingAfterLsp });
62
+ ? lspState.runtime.waitUntilReadyForWorkspace({ timeoutMs: remainingAfterLsp })
63
+ : lspState.runtime.waitUntilReadyForFile(scope.file, { timeoutMs: remainingAfterLsp });
64
+ }
65
+
66
+ function resolveReadySemanticState(
67
+ cwd: string,
68
+ scope: SemanticStartupScope,
69
+ timeoutMs: number,
70
+ ): Promise<SemanticReadinessResult> | SemanticReadinessResult {
71
+ const lspState = getWorkspaceLspRuntime(cwd);
72
+ if (lspState.kind === "ready") {
73
+ return scope.kind === "workspace"
74
+ ? lspState.runtime.waitUntilReadyForWorkspace({ timeoutMs })
75
+ : lspState.runtime.waitUntilReadyForFile(scope.file, { timeoutMs });
76
+ }
77
+ return {
78
+ kind: "unavailable",
79
+ reason:
80
+ lspState.kind === "unavailable"
81
+ ? lspState.reason
82
+ : `LSP service is ${lspState.kind} for this workspace.`,
83
+ };
64
84
  }
65
85
 
66
86
  async function resolveSemanticServiceState(
67
87
  cwd: string,
68
88
  timeoutMs: number,
69
- ): Promise<SessionLspServiceState> {
70
- const initialState = getSessionLspService(cwd);
89
+ ): Promise<WorkspaceLspRuntimeState> {
90
+ const initialState = getWorkspaceLspRuntime(cwd);
71
91
  if (initialState.kind !== "pending") return initialState;
72
- return waitForSessionLspService(cwd, timeoutMs);
92
+ return waitForWorkspaceLspRuntime(cwd, timeoutMs);
73
93
  }