@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
@@ -1,76 +1,143 @@
1
- /**
2
- * Architecture model types and query helpers.
3
- *
4
- * Discovery logic lives in {@link ./discovery.ts}.
5
- */
1
+ /** Direct manifest and workspace-configuration facts for Orientation and the session overview. */
6
2
 
7
3
  import * as path from "node:path";
8
4
  import { isWithinOrEqual } from "@mrclrchtr/supi-core/project";
9
5
 
10
- // ── Types ─────────────────────────────────────────────────────────────
6
+ /** Completion state for one directly observed architecture collection. */
7
+ export type ArchitectureObservationStatus = "complete" | "partial" | "unavailable";
11
8
 
12
- export interface ArchitectureModel {
13
- /** Absolute root directory of the project */
14
- root: string;
15
- /** Project name from root manifest */
16
- name: string | null;
17
- /** Project description from root manifest */
18
- description: string | null;
19
- /** Detected modules/packages */
20
- modules: ModuleInfo[];
21
- /** Internal dependency edges between modules */
22
- edges: DependencyEdge[];
9
+ /** Manifest fields whose values are surfaced without assigning a derived role. */
10
+ export interface ManifestField {
11
+ /** Exact field path in the package manifest, such as `exports` or `pi.extensions`. */
12
+ readonly field: string;
13
+ /** JSON value declared at that field. */
14
+ readonly value: unknown;
15
+ }
16
+
17
+ /** One dependency declaration from an exact package-manifest section. */
18
+ export interface ManifestDependency {
19
+ /** Source package.json field. */
20
+ readonly field: ManifestDependencyField;
21
+ /** Dependency name as declared in the manifest object key. */
22
+ readonly name: string;
23
+ /** Version/range value as declared in the manifest object value. */
24
+ readonly specifier: unknown;
23
25
  }
24
26
 
27
+ /** Dependency-map fields whose entries may declare package relationships. */
28
+ export type ManifestDependencyField =
29
+ | "dependencies"
30
+ | "devDependencies"
31
+ | "optionalDependencies"
32
+ | "peerDependencies";
33
+
34
+ /** One dependency-map field retained with its source field name. */
35
+ export interface ManifestDependencySection {
36
+ /** Source package.json field. */
37
+ readonly field: ManifestDependencyField;
38
+ /** Every directly declared dependency entry in the section. */
39
+ readonly entries: readonly ManifestDependency[];
40
+ }
41
+
42
+ /** Facts from one successfully parsed package.json file. */
25
43
  export interface ModuleInfo {
26
- /** Package/module name */
27
- name: string;
28
- /** Short description from manifest */
29
- description: string | null;
30
- /** Absolute path to the module root */
31
- root: string;
32
- /** Relative path from project root */
33
- relativePath: string;
34
- /** Main entrypoint(s) from manifest */
35
- entrypoints: string[];
36
- /** Whether this is a leaf module (no internal dependents) */
37
- isLeaf: boolean;
38
- /** Internal dependency names */
39
- internalDeps: string[];
40
- /** External dependency names */
41
- externalDeps: string[];
44
+ /** Package name from package.json; null when the manifest omits a string name. */
45
+ readonly name: string | null;
46
+ /** Package description from package.json when it is a string. */
47
+ readonly description: string | null;
48
+ /** Absolute package directory. */
49
+ readonly root: string;
50
+ /** Package directory relative to the orientation root. */
51
+ readonly relativePath: string;
52
+ /** Package manifest path relative to the orientation root. */
53
+ readonly manifestPath: string;
54
+ /** Directly declared non-dependency manifest fields. */
55
+ readonly fields: readonly ManifestField[];
56
+ /** Directly declared dependency-map sections. */
57
+ readonly dependencySections: readonly ManifestDependencySection[];
58
+ }
59
+
60
+ /** Result of reading the root package manifest. */
61
+ export interface PackageManifestObservation {
62
+ /** Whether the root package manifest was read and parsed. */
63
+ readonly status: ArchitectureObservationStatus;
64
+ /** Root-relative path of the expected manifest. */
65
+ readonly path: string;
66
+ /** Failure explanation when the manifest is partial or unavailable. */
67
+ readonly reason: string | null;
68
+ /** Parsed package facts when available. */
69
+ readonly package: ModuleInfo | null;
70
+ }
71
+
72
+ /** Configuration file and field that declared workspace membership. */
73
+ export interface WorkspaceTopologySource {
74
+ /** Root-relative configuration file path. */
75
+ readonly path: string;
76
+ /** Exact configuration field. */
77
+ readonly field: string;
78
+ }
79
+
80
+ /** Directly observed package-topology collection state. */
81
+ export interface WorkspaceTopology {
82
+ /** Whether this is a workspace declaration, one root package, or unavailable metadata. */
83
+ readonly kind: "workspace" | "single-package" | "unavailable";
84
+ /** Collection completion state. */
85
+ readonly status: ArchitectureObservationStatus;
86
+ /** Configuration source that declared workspace membership, when applicable. */
87
+ readonly source: WorkspaceTopologySource | null;
88
+ /** Failure explanation when discovery was partial or unavailable. */
89
+ readonly reason: string | null;
90
+ /** Package manifests matched by configuration but not successfully parsed. */
91
+ readonly failedPackageManifestCount: number;
42
92
  }
43
93
 
94
+ /** One manifest-declared dependency whose name matches exactly one discovered package. */
44
95
  export interface DependencyEdge {
45
- /** Source module name */
46
- from: string;
47
- /** Target module name */
48
- to: string;
96
+ /** Declaring package name. */
97
+ readonly from: string;
98
+ /** Declared package name that identifies one discovered package. */
99
+ readonly to: string;
100
+ /** Exact dependency-map field that declared the relationship. */
101
+ readonly field: ManifestDependencyField;
102
+ /** Declared version/range value. */
103
+ readonly specifier: unknown;
104
+ /** Root-relative manifest that declared the relationship. */
105
+ readonly manifestPath: string;
49
106
  }
50
107
 
51
- // ── Query helpers ─────────────────────────────────────────────────────
108
+ /**
109
+ * Factual package and workspace observations.
110
+ *
111
+ * `modules` and `edges` describe manifest declarations only; they are not a
112
+ * runtime architecture graph.
113
+ */
114
+ export interface ArchitectureModel {
115
+ /** Absolute supported workspace root, or the requested cwd when no supported metadata exists. */
116
+ readonly root: string;
117
+ /** Root package manifest observation. */
118
+ readonly rootManifest: PackageManifestObservation;
119
+ /** Workspace membership observation. */
120
+ readonly topology: WorkspaceTopology;
121
+ /** Parsed package manifests declared by the selected topology. */
122
+ readonly modules: readonly ModuleInfo[];
123
+ /** Manifest-declared dependencies between uniquely discovered packages. */
124
+ readonly edges: readonly DependencyEdge[];
125
+ /** Root package name when directly declared. */
126
+ readonly name: string | null;
127
+ /** Root package description when directly declared. */
128
+ readonly description: string | null;
129
+ }
52
130
 
131
+ /** Find the most specific discovered package containing a filesystem path. */
53
132
  export function findModuleForPath(model: ArchitectureModel, filePath: string): ModuleInfo | null {
54
133
  const resolved = path.resolve(filePath);
55
134
  let best: ModuleInfo | null = null;
56
135
 
57
136
  for (const mod of model.modules) {
58
- if (isWithinOrEqual(mod.root, resolved)) {
59
- if (!best || mod.root.length > best.root.length) {
60
- best = mod;
61
- }
137
+ if (isWithinOrEqual(mod.root, resolved) && (!best || mod.root.length > best.root.length)) {
138
+ best = mod;
62
139
  }
63
140
  }
64
141
 
65
142
  return best;
66
143
  }
67
-
68
- export function getDependents(model: ArchitectureModel, moduleName: string): ModuleInfo[] {
69
- return model.modules.filter((m) => m.internalDeps.includes(moduleName));
70
- }
71
-
72
- export function getDependencies(model: ArchitectureModel, moduleName: string): ModuleInfo[] {
73
- const mod = model.modules.find((m) => m.name === moduleName);
74
- if (!mod) return [];
75
- return model.modules.filter((m) => mod.internalDeps.includes(m.name));
76
- }
@@ -0,0 +1,229 @@
1
+ /** Supported workspace-configuration parsing and pattern validation. */
2
+
3
+ import * as fs from "node:fs";
4
+ import * as path from "node:path";
5
+ import { parseDocument } from "yaml";
6
+ import { errorMessage, isRecord, type PackageJsonRead, readPackageJson } from "./manifest.ts";
7
+ import type { WorkspaceTopologySource } from "./model.ts";
8
+
9
+ export const PNPM_WORKSPACE = "pnpm-workspace.yaml";
10
+
11
+ /** Parsed supported workspace membership declaration. */
12
+ export type WorkspaceDeclaration =
13
+ | {
14
+ readonly kind: "workspace";
15
+ readonly source: WorkspaceTopologySource;
16
+ readonly patterns: string[];
17
+ }
18
+ | { readonly kind: "single-package" }
19
+ | { readonly kind: "unavailable"; readonly reason: string };
20
+
21
+ type PatternValidation =
22
+ | { readonly kind: "complete"; readonly patterns: string[] }
23
+ | { readonly kind: "unavailable"; readonly reason: string };
24
+
25
+ type ParsedPattern =
26
+ | {
27
+ readonly kind: "complete";
28
+ readonly pattern: { readonly value: string; readonly negative: boolean };
29
+ }
30
+ | { readonly kind: "unavailable"; readonly reason: string };
31
+
32
+ /** Prefer an enclosing workspace declaration, then the nearest package manifest. */
33
+ export function findArchitectureRoot(cwd: string): string {
34
+ const directories = ancestors(path.resolve(cwd));
35
+ const pnpmRoot = directories.find((directory) =>
36
+ fs.existsSync(path.join(directory, PNPM_WORKSPACE)),
37
+ );
38
+ if (pnpmRoot) return pnpmRoot;
39
+
40
+ const packageWorkspaceRoot = directories.find((directory) => {
41
+ const manifest = readPackageJson(directory);
42
+ return manifest.kind === "complete" && Object.hasOwn(manifest.value, "workspaces");
43
+ });
44
+ if (packageWorkspaceRoot) return packageWorkspaceRoot;
45
+
46
+ return (
47
+ directories.find((directory) => fs.existsSync(path.join(directory, "package.json"))) ?? cwd
48
+ );
49
+ }
50
+
51
+ /** Read only the supported package.json/pnpm workspace membership declarations. */
52
+ export function readWorkspaceDeclaration(
53
+ root: string,
54
+ rootRead: PackageJsonRead,
55
+ ): WorkspaceDeclaration {
56
+ const pnpmPath = path.join(root, PNPM_WORKSPACE);
57
+ if (fs.existsSync(pnpmPath)) return readPnpmWorkspaceDeclaration(pnpmPath);
58
+
59
+ if (rootRead.kind !== "complete") {
60
+ return {
61
+ kind: "unavailable",
62
+ reason:
63
+ "No supported workspace configuration is available because the root package manifest could not be read.",
64
+ };
65
+ }
66
+
67
+ if (!Object.hasOwn(rootRead.value, "workspaces")) return { kind: "single-package" };
68
+ const workspaces = rootRead.value.workspaces;
69
+ const patterns = Array.isArray(workspaces)
70
+ ? workspaces
71
+ : isRecord(workspaces) && Array.isArray(workspaces.packages)
72
+ ? workspaces.packages
73
+ : null;
74
+ if (!patterns) {
75
+ return {
76
+ kind: "unavailable",
77
+ reason:
78
+ "package.json#workspaces must be a string array or an object with a string packages array.",
79
+ };
80
+ }
81
+
82
+ const validated = validateWorkspacePatterns(patterns);
83
+ if (validated.kind === "unavailable") return validated;
84
+ if (validated.patterns.length === 0) return { kind: "single-package" };
85
+ return {
86
+ kind: "workspace",
87
+ source: {
88
+ path: "package.json",
89
+ field: Array.isArray(workspaces) ? "workspaces" : "workspaces.packages",
90
+ },
91
+ patterns: validated.patterns,
92
+ };
93
+ }
94
+
95
+ function readPnpmWorkspaceDeclaration(workspacePath: string): WorkspaceDeclaration {
96
+ let raw: string;
97
+ try {
98
+ raw = fs.readFileSync(workspacePath, "utf-8");
99
+ } catch (error) {
100
+ return {
101
+ kind: "unavailable",
102
+ reason: `Could not read ${PNPM_WORKSPACE}: ${errorMessage(error)}`,
103
+ };
104
+ }
105
+
106
+ let value: unknown;
107
+ try {
108
+ const document = parseDocument(raw);
109
+ if (document.errors.length > 0) {
110
+ return {
111
+ kind: "unavailable",
112
+ reason: `Could not parse ${PNPM_WORKSPACE}: ${document.errors[0]?.message ?? "invalid YAML"}`,
113
+ };
114
+ }
115
+ value = document.toJS();
116
+ } catch (error) {
117
+ return {
118
+ kind: "unavailable",
119
+ reason: `Could not parse ${PNPM_WORKSPACE}: ${errorMessage(error)}`,
120
+ };
121
+ }
122
+
123
+ if (!isRecord(value)) {
124
+ return { kind: "unavailable", reason: `${PNPM_WORKSPACE} must contain a YAML mapping.` };
125
+ }
126
+ if (!Object.hasOwn(value, "packages")) return { kind: "single-package" };
127
+ if (!Array.isArray(value.packages)) {
128
+ return { kind: "unavailable", reason: `${PNPM_WORKSPACE}#packages must be a string array.` };
129
+ }
130
+
131
+ const validated = validateWorkspacePatterns(value.packages);
132
+ if (validated.kind === "unavailable") return validated;
133
+ if (validated.patterns.length === 0) return { kind: "single-package" };
134
+ return {
135
+ kind: "workspace",
136
+ source: { path: PNPM_WORKSPACE, field: "packages" },
137
+ patterns: validated.patterns,
138
+ };
139
+ }
140
+
141
+ function validateWorkspacePatterns(values: unknown[]): PatternValidation {
142
+ const parsed = values.map(parseWorkspacePattern);
143
+ const invalid = parsed.find(
144
+ (entry): entry is Extract<PatternValidation, { kind: "unavailable" }> =>
145
+ entry.kind === "unavailable",
146
+ );
147
+ if (invalid) return invalid;
148
+
149
+ const patterns = parsed
150
+ .filter(
151
+ (entry): entry is Extract<ParsedPattern, { kind: "complete" }> => entry.kind === "complete",
152
+ )
153
+ .map((entry) => entry.pattern);
154
+ if (patterns.length > 0 && patterns.every((pattern) => pattern.negative)) {
155
+ return {
156
+ kind: "unavailable",
157
+ reason:
158
+ "Workspace configuration contains only exclusion patterns and cannot establish package membership.",
159
+ };
160
+ }
161
+ if (reincludesAfterExclusion(patterns)) {
162
+ return {
163
+ kind: "unavailable",
164
+ reason:
165
+ "Workspace patterns that re-include a path after an exclusion are unsupported; module discovery is unavailable rather than approximated.",
166
+ };
167
+ }
168
+ return { kind: "complete", patterns: patterns.map(({ value }) => value) };
169
+ }
170
+
171
+ function parseWorkspacePattern(value: unknown): ParsedPattern {
172
+ if (typeof value !== "string" || value.trim() !== value || value.length === 0) {
173
+ return {
174
+ kind: "unavailable",
175
+ reason: "Workspace patterns must be non-empty strings without surrounding whitespace.",
176
+ };
177
+ }
178
+
179
+ const negative = value.startsWith("!");
180
+ const normalized = normalizeWorkspacePattern(negative ? value.slice(1) : value);
181
+ if (!normalized) {
182
+ return {
183
+ kind: "unavailable",
184
+ reason: `Unsupported workspace pattern: \`${value}\`. Supported patterns use literal path segments, \`*\`, \`**\`, and an optional leading \`!\`.`,
185
+ };
186
+ }
187
+ return {
188
+ kind: "complete",
189
+ pattern: { value: `${negative ? "!" : ""}${normalized}`, negative },
190
+ };
191
+ }
192
+
193
+ function reincludesAfterExclusion(patterns: readonly { readonly negative: boolean }[]): boolean {
194
+ let sawExclusion = false;
195
+ for (const pattern of patterns) {
196
+ if (!pattern.negative && sawExclusion) return true;
197
+ if (pattern.negative) sawExclusion = true;
198
+ }
199
+ return false;
200
+ }
201
+
202
+ /** Normalize only path spelling; matching itself remains owned by Node's native glob. */
203
+ function normalizeWorkspacePattern(pattern: string): string | null {
204
+ const withoutDotPrefix = pattern.replace(/^\.\//, "").replace(/\/$/, "");
205
+ if (!withoutDotPrefix || path.isAbsolute(withoutDotPrefix) || withoutDotPrefix.includes("\\")) {
206
+ return null;
207
+ }
208
+ if (withoutDotPrefix.split("/").some((segment) => segment === ".." || segment.length === 0)) {
209
+ return null;
210
+ }
211
+ if (
212
+ ["?", "[", "]", "{", "}", "(", ")", "!"].some((token) => withoutDotPrefix.includes(token)) ||
213
+ withoutDotPrefix.includes("***")
214
+ ) {
215
+ return null;
216
+ }
217
+ return withoutDotPrefix;
218
+ }
219
+
220
+ function ancestors(start: string): string[] {
221
+ const directories: string[] = [];
222
+ let current = start;
223
+ while (true) {
224
+ directories.push(current);
225
+ const parent = path.dirname(current);
226
+ if (parent === current) return directories;
227
+ current = parent;
228
+ }
229
+ }
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Coverage warning evaluation for degraded structural and semantic coverage.
2
+ * Capability Warning evaluation for reduced semantic and structural analysis.
3
3
  *
4
4
  * Normalizes LSP startup state, Tree-sitter health, and deprecated config keys
5
- * into a structured warning report consumed by chat warnings, /supi-ci-status,
5
+ * into a structured report consumed by the startup notice, /supi-ci-status,
6
6
  * and code_health.
7
7
  */
8
8
 
@@ -10,42 +10,37 @@ import { getDefaultWorkspaceRuntime } from "@mrclrchtr/supi-code-runtime/api";
10
10
  import { loadSupiConfigForScope } from "@mrclrchtr/supi-core/config";
11
11
  import { getDeprecatedLspKeys, loadConfig, scanMissingServers } from "@mrclrchtr/supi-lsp/api";
12
12
 
13
- export interface CoverageWarning {
13
+ /** One actionable warning about reduced Code intelligence capability. */
14
+ export interface CapabilityWarning {
14
15
  type: "deprecated-key" | "language-disabled" | "missing-server" | "structural-unavailable";
15
16
  message: string;
16
17
  language?: string;
17
18
  detail?: string;
18
19
  }
19
20
 
20
- export interface CoverageWarningReport {
21
+ /** Current Capability Warnings and their aggregate presence flag. */
22
+ export interface CapabilityWarningReport {
21
23
  hasWarnings: boolean;
22
- warnings: CoverageWarning[];
24
+ warnings: CapabilityWarning[];
23
25
  }
24
26
 
25
- export interface CoverageMissingServerSource {
27
+ /** Minimal LSP-controller surface needed to discover missing servers. */
28
+ export interface CapabilityWarningMissingServerSource {
26
29
  getMissingServers(): Array<{ name: string; command: string; foundExtensions?: string[] }>;
27
30
  }
28
31
 
29
- /** Input needed to evaluate coverage. */
30
- export interface CoverageEvalInput {
32
+ /** Current runtime/config facts needed to evaluate Capability Warnings. */
33
+ export interface CapabilityWarningInput {
31
34
  deprecatedKeys: ReturnType<typeof getDeprecatedLspKeys>;
32
35
  explicitlyDisabledLanguages: string[];
33
36
  missingServers: Array<{ name: string; command: string; foundExtensions: string[] }>;
34
37
  structuralState: { kind: string; reason?: string };
35
38
  }
36
39
 
37
- // ── Evaluation ───────────────────────────────────────────────
40
+ /** Evaluate current capability/configuration facts into a structured warning report. */
41
+ export function evaluateCapabilityWarnings(input: CapabilityWarningInput): CapabilityWarningReport {
42
+ const warnings: CapabilityWarning[] = [];
38
43
 
39
- /**
40
- * Evaluate the current coverage state and return a structured warning report.
41
- *
42
- * Does not handle deduplication or grace period — callers are responsible
43
- * for managing emission timing through CoverageWarningState.
44
- */
45
- export function evaluateCoverageWarnings(input: CoverageEvalInput): CoverageWarningReport {
46
- const warnings: CoverageWarning[] = [];
47
-
48
- // 1. Deprecated keys
49
44
  if (input.deprecatedKeys.projectEnabled || input.deprecatedKeys.globalEnabled) {
50
45
  warnings.push({
51
46
  type: "deprecated-key",
@@ -61,16 +56,14 @@ export function evaluateCoverageWarnings(input: CoverageEvalInput): CoverageWarn
61
56
  });
62
57
  }
63
58
 
64
- // 2. Explicitly disabled languages
65
- for (const lang of input.explicitlyDisabledLanguages) {
59
+ for (const language of input.explicitlyDisabledLanguages) {
66
60
  warnings.push({
67
61
  type: "language-disabled",
68
- language: lang,
69
- message: `Semantic coverage reduced: "${lang}" servers are disabled via lsp.servers.${lang}.enabled: false`,
62
+ language,
63
+ message: `Semantic capability reduced: "${language}" servers are disabled via lsp.servers.${language}.enabled: false`,
70
64
  });
71
65
  }
72
66
 
73
- // 3. Missing server binaries
74
67
  for (const server of input.missingServers) {
75
68
  warnings.push({
76
69
  type: "missing-server",
@@ -83,102 +76,73 @@ export function evaluateCoverageWarnings(input: CoverageEvalInput): CoverageWarn
83
76
  });
84
77
  }
85
78
 
86
- // 4. Structural (Tree-sitter) failure
87
79
  if (input.structuralState.kind === "unavailable") {
88
80
  warnings.push({
89
81
  type: "structural-unavailable",
90
- message: `Structural coverage unavailable: ${input.structuralState.reason ?? "Tree-sitter initialization failed"}`,
82
+ message: `Structural capability unavailable: ${input.structuralState.reason ?? "Tree-sitter initialization failed"}`,
91
83
  });
92
84
  }
93
85
 
94
86
  return { hasWarnings: warnings.length > 0, warnings };
95
87
  }
96
88
 
97
- // ── Session state (deduplication + grace period) ─────────────
98
-
99
- /**
100
- * Per-session state for managing warning emission timing and deduplication.
101
- */
102
- export class CoverageWarningState {
89
+ /** Per-session state for warning grace-period timing and deduplication. */
90
+ export class CapabilityWarningState {
103
91
  private lastWarningsHash: string | null = null;
104
92
  private forceEmitted = false;
105
- private readonly startedAt: number;
106
-
107
- constructor() {
108
- this.startedAt = Date.now();
109
- }
93
+ private readonly startedAt = Date.now();
110
94
 
111
95
  /**
112
- * Return warnings that should be emitted to the user now.
96
+ * Return warnings that should be emitted now.
113
97
  *
114
- * Deduplication is hash-based rather than once-per-session: if the
115
- * warning set changes (e.g., a new missing server is detected), the
116
- * new warnings are emitted. Identical sets are suppressed.
117
- * - Respects grace period (no warnings before `gracePeriodMs` has elapsed)
118
- * - An empty report (no warnings) does not consume emission state
98
+ * Changed warning sets may emit again; identical sets are suppressed. Empty
99
+ * reports do not consume emission state, and startup honors a grace period.
119
100
  */
120
101
  getPendingWarnings(
121
- report: CoverageWarningReport,
102
+ report: CapabilityWarningReport,
122
103
  gracePeriodMs: number = 5_000,
123
- ): CoverageWarning[] {
124
- // Grace period: don't emit during initial pending/settling state
125
- if (Date.now() - this.startedAt < gracePeriodMs) {
126
- return [];
127
- }
128
-
129
- if (!report.hasWarnings || report.warnings.length === 0) {
130
- return [];
131
- }
132
-
104
+ ): CapabilityWarning[] {
105
+ if (Date.now() - this.startedAt < gracePeriodMs) return [];
106
+ if (!report.hasWarnings || report.warnings.length === 0) return [];
133
107
  if (this.forceEmitted) return [];
134
108
 
135
109
  const nextHash = this.computeHash(report);
136
- if (nextHash === this.lastWarningsHash) {
137
- return [];
138
- }
110
+ if (nextHash === this.lastWarningsHash) return [];
139
111
 
140
112
  this.lastWarningsHash = nextHash;
141
113
  return report.warnings;
142
114
  }
143
115
 
144
- /** Check whether a warning has already been emitted this session. */
116
+ /** Whether any warning set has been emitted in this session. */
145
117
  get hasEmitted(): boolean {
146
118
  return this.lastWarningsHash !== null;
147
119
  }
148
120
 
149
- /** Force the state to consider warnings as already emitted. Useful for testing. */
121
+ /** Force warnings to be considered emitted. Useful for tests. */
150
122
  markEmitted(): void {
151
123
  this.forceEmitted = true;
152
124
  this.lastWarningsHash = "emitted";
153
125
  }
154
126
 
155
- /** Reset the session state. */
127
+ /** Reset warning emission state. */
156
128
  reset(): void {
157
129
  this.forceEmitted = false;
158
130
  this.lastWarningsHash = null;
159
131
  }
160
132
 
161
- private computeHash(report: CoverageWarningReport): string {
133
+ private computeHash(report: CapabilityWarningReport): string {
162
134
  return report.warnings
163
- .map((w) => `${w.type}:${w.language ?? ""}:${w.message}`)
164
- .sort((a, b) => a.localeCompare(b))
135
+ .map((warning) => `${warning.type}:${warning.language ?? ""}:${warning.message}`)
136
+ .sort((left, right) => left.localeCompare(right))
165
137
  .join("|");
166
138
  }
167
139
  }
168
140
 
169
- // ── Runtime state gathering ─────────────────────────────────
170
-
171
- /**
172
- * Gather the coverage evaluation input from current runtime state.
173
- *
174
- * Reads deprecated keys from supi-lsp, structural state from the
175
- * workspace runtime, and explicitly disabled languages / missing server
176
- * info from the LSP controller or a config-based fallback scan.
177
- */
178
- export function gatherCoverageEvalInput(
141
+ /** Gather current runtime/config facts for Capability Warning evaluation. */
142
+ export function gatherCapabilityWarningInput(
179
143
  cwd: string,
180
- lspController: CoverageMissingServerSource | null,
181
- ): CoverageEvalInput {
144
+ lspController: CapabilityWarningMissingServerSource | null,
145
+ ): CapabilityWarningInput {
182
146
  const deprecatedKeys = getDeprecatedLspKeys(cwd);
183
147
  const structuralState = getDefaultWorkspaceRuntime().getWorkspace(cwd).structural.state;
184
148
  const explicitlyDisabledLanguages = detectExplicitlyDisabledLanguages(cwd);
@@ -204,7 +168,6 @@ function normalizeMissingServers(
204
168
  }));
205
169
  }
206
170
 
207
- /** Read raw scoped config to find languages with `servers.<lang>.enabled: false`. */
208
171
  function detectExplicitlyDisabledLanguages(cwd: string): string[] {
209
172
  const disabled = new Set<string>();
210
173
  for (const scope of ["project", "global"] as const) {
@@ -216,8 +179,8 @@ function detectExplicitlyDisabledLanguages(cwd: string): string[] {
216
179
  );
217
180
  const servers = (raw as { servers?: Record<string, { enabled?: boolean }> }).servers;
218
181
  if (!servers) continue;
219
- for (const [name, srv] of Object.entries(servers)) {
220
- if (srv.enabled === false) disabled.add(name);
182
+ for (const [name, server] of Object.entries(servers)) {
183
+ if (server.enabled === false) disabled.add(name);
221
184
  }
222
185
  }
223
186
  return [...disabled].sort();