@mrclrchtr/supi-code-intelligence 3.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/README.md +154 -435
  2. package/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  3. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  4. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  5. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  6. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  7. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  8. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  9. package/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  10. package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  11. package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  12. package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  13. package/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  14. package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  15. package/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  16. package/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  17. package/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  18. package/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  19. package/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  20. package/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  21. package/node_modules/@mrclrchtr/supi-lsp/README.md +72 -62
  22. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  23. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  24. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  25. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  26. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  27. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  28. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  29. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  30. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  31. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  32. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  33. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  34. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  35. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  36. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  37. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  38. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  39. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  40. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  41. package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -5
  42. package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +9 -9
  43. package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +70 -41
  44. package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +16 -13
  45. package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +2 -2
  46. package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +0 -2
  47. package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +6 -6
  48. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-diagnostics.ts +5 -95
  49. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-recovery.ts +4 -3
  50. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +44 -6
  51. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +47 -65
  52. package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +132 -79
  53. package/node_modules/@mrclrchtr/supi-lsp/src/provider/refactor-planning.ts +6 -14
  54. package/node_modules/@mrclrchtr/supi-lsp/src/session/readiness.ts +38 -0
  55. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +87 -75
  56. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +5 -5
  57. package/node_modules/@mrclrchtr/supi-lsp/src/session/{service-registry.ts → runtime-registry.ts} +163 -71
  58. package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +4 -0
  59. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/README.md +8 -0
  60. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  61. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  62. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  63. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  64. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  65. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  66. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
  67. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +10 -1
  68. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +19 -29
  69. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +7 -1
  70. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/query-result.ts +42 -0
  71. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +15 -10
  72. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +2 -4
  73. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +0 -4
  74. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/evidence-badge.ts +3 -2
  75. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +0 -4
  76. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/llm.ts +0 -10
  77. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/path-utils.ts +19 -15
  78. package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +4 -21
  79. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm +0 -0
  80. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/bash/tree-sitter-bash.wasm.json +2 -2
  81. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm +0 -0
  82. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/c/tree-sitter-c.wasm.json +2 -2
  83. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm +0 -0
  84. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/go/tree-sitter-go.wasm.json +2 -2
  85. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm +0 -0
  86. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/javascript/tree-sitter-javascript.wasm.json +2 -2
  87. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm +0 -0
  88. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm.json +2 -2
  89. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm +0 -0
  90. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/python/tree-sitter-python.wasm.json +2 -2
  91. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm +0 -0
  92. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/r/tree-sitter-r.wasm.json +2 -2
  93. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/rust/tree-sitter-rust.wasm.json +1 -1
  94. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm +0 -0
  95. package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm.json +3 -3
  96. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-kotlin-wasm.mjs +6 -0
  97. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-sql-wasm.mjs +18 -4
  98. package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/vendor-wasm.mjs +17 -1
  99. package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +2 -0
  100. package/node_modules/@mrclrchtr/supi-tree-sitter/src/coordinates.ts +20 -41
  101. package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +2 -0
  102. package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +7 -0
  103. package/node_modules/@mrclrchtr/supi-tree-sitter/src/operation-support.ts +40 -0
  104. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +9 -7
  105. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +6 -1
  106. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +76 -37
  107. package/node_modules/yaml/LICENSE +13 -0
  108. package/node_modules/yaml/README.md +172 -0
  109. package/node_modules/yaml/bin.mjs +11 -0
  110. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  111. package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  112. package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  113. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  114. package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
  115. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  116. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  117. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  118. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  119. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  120. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
  121. package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  122. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  123. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  124. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  125. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  126. package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  127. package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  128. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  129. package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  130. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  131. package/node_modules/yaml/browser/dist/errors.js +57 -0
  132. package/node_modules/yaml/browser/dist/index.js +17 -0
  133. package/node_modules/yaml/browser/dist/log.js +11 -0
  134. package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
  135. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  136. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  137. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  138. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  139. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  140. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  141. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  142. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  143. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  144. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  145. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  146. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  147. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  148. package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
  149. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  150. package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
  151. package/node_modules/yaml/browser/dist/public-api.js +102 -0
  152. package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  153. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  154. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  155. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  156. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  157. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  158. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  159. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  160. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  161. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  162. package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  163. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  164. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  165. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  166. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  167. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
  168. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  169. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  170. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  171. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  172. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  173. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  174. package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  175. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  176. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  177. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  178. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
  179. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  180. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  181. package/node_modules/yaml/browser/dist/util.js +11 -0
  182. package/node_modules/yaml/browser/dist/visit.js +233 -0
  183. package/node_modules/yaml/browser/index.js +5 -0
  184. package/node_modules/yaml/browser/package.json +3 -0
  185. package/node_modules/yaml/dist/cli.d.ts +8 -0
  186. package/node_modules/yaml/dist/cli.mjs +201 -0
  187. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  188. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  189. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  190. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  191. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  192. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  193. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  194. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  195. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  196. package/node_modules/yaml/dist/compose/composer.js +224 -0
  197. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  198. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  199. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  200. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  201. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  202. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  203. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  204. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  205. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  206. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  207. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  208. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  209. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  210. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  211. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  212. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  213. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  214. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  215. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  216. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  217. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  218. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  219. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  220. package/node_modules/yaml/dist/doc/Document.js +337 -0
  221. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  222. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  223. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  224. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  225. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  226. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  227. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  228. package/node_modules/yaml/dist/doc/directives.js +178 -0
  229. package/node_modules/yaml/dist/errors.d.ts +21 -0
  230. package/node_modules/yaml/dist/errors.js +62 -0
  231. package/node_modules/yaml/dist/index.d.ts +25 -0
  232. package/node_modules/yaml/dist/index.js +50 -0
  233. package/node_modules/yaml/dist/log.d.ts +3 -0
  234. package/node_modules/yaml/dist/log.js +19 -0
  235. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  236. package/node_modules/yaml/dist/nodes/Alias.js +118 -0
  237. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  238. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  239. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  240. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  241. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  242. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  243. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  244. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  245. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  246. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  247. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  248. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  249. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  250. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  251. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  252. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  253. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  254. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  255. package/node_modules/yaml/dist/options.d.ts +350 -0
  256. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  257. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  258. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  259. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  260. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  261. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  262. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  263. package/node_modules/yaml/dist/parse/cst.js +112 -0
  264. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  265. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  266. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  267. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  268. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  269. package/node_modules/yaml/dist/parse/parser.js +980 -0
  270. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  271. package/node_modules/yaml/dist/public-api.js +107 -0
  272. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  273. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  274. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  275. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  276. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  277. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  278. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  279. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  280. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  281. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  282. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  283. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  284. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  285. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  286. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  287. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  288. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  289. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  290. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  291. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  292. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  293. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  294. package/node_modules/yaml/dist/schema/tags.js +99 -0
  295. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  296. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  297. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  298. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  299. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  300. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  301. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  302. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  303. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  304. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  305. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  306. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  307. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  308. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  309. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  310. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  311. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  312. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  313. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  314. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  315. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  316. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  317. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  318. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  319. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  320. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  321. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  322. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  323. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  324. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  325. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  326. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  327. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  328. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  329. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  330. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  331. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  332. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  333. package/node_modules/yaml/dist/test-events.js +134 -0
  334. package/node_modules/yaml/dist/util.d.ts +16 -0
  335. package/node_modules/yaml/dist/util.js +28 -0
  336. package/node_modules/yaml/dist/visit.d.ts +102 -0
  337. package/node_modules/yaml/dist/visit.js +236 -0
  338. package/node_modules/yaml/package.json +97 -0
  339. package/node_modules/yaml/util.js +2 -0
  340. package/package.json +9 -8
  341. package/src/analysis/architecture/discovery.ts +213 -227
  342. package/src/analysis/architecture/manifest.ts +147 -0
  343. package/src/analysis/architecture/model.ts +119 -52
  344. package/src/analysis/architecture/workspace-config.ts +229 -0
  345. package/src/analysis/{coverage/coverage-warnings.ts → capability/capability-warnings.ts} +41 -78
  346. package/src/analysis/evidence.ts +22 -5
  347. package/src/analysis/health/diagnostics.ts +183 -0
  348. package/src/analysis/health/recovery.ts +39 -0
  349. package/src/analysis/health/signals.ts +20 -0
  350. package/src/analysis/instruction-files.ts +60 -48
  351. package/src/analysis/provider.ts +31 -12
  352. package/src/analysis/readiness.ts +29 -9
  353. package/src/{tool/refactor-apply → analysis/refactor}/apply.ts +120 -26
  354. package/src/analysis/refactor/position.ts +6 -0
  355. package/src/analysis/refactor/safety.ts +4 -11
  356. package/src/analysis/references/locations.ts +20 -0
  357. package/src/analysis/references/semantic-refs.ts +21 -11
  358. package/src/{tool/graph → analysis/relations}/implementations.ts +27 -23
  359. package/src/analysis/relations/provider-locations.ts +179 -0
  360. package/src/{tool/graph → analysis/relations}/references.ts +25 -21
  361. package/src/{tool/graph → analysis/relations}/types.ts +4 -19
  362. package/src/analysis/search/ast-scan.ts +376 -0
  363. package/src/analysis/search/call-name.ts +68 -0
  364. package/src/analysis/search/deadline.ts +84 -0
  365. package/src/analysis/search/paths.ts +88 -0
  366. package/src/analysis/search/pattern.ts +290 -246
  367. package/src/analysis/target/anchored.ts +72 -27
  368. package/src/analysis/target/file.ts +292 -132
  369. package/src/analysis/target/identity.ts +237 -0
  370. package/src/analysis/target/symbol.ts +169 -86
  371. package/src/analysis/target/types.ts +36 -4
  372. package/src/api.ts +21 -4
  373. package/src/app/app.ts +53 -46
  374. package/src/extension.ts +68 -66
  375. package/src/session/capability-adapter.ts +26 -118
  376. package/src/session/find-types.ts +38 -0
  377. package/src/session/find-workflow.ts +141 -0
  378. package/src/session/graph/collect.ts +181 -0
  379. package/src/session/graph-types.ts +77 -0
  380. package/src/session/graph-workflow.ts +152 -0
  381. package/src/session/health-types.ts +134 -0
  382. package/src/session/health-workflow.ts +341 -0
  383. package/src/session/input/common.ts +216 -0
  384. package/src/session/input/health-refactor.ts +169 -0
  385. package/src/session/input/workflows.ts +211 -0
  386. package/src/session/inspect/collect.ts +304 -0
  387. package/src/session/inspect/file-point.ts +69 -0
  388. package/src/session/inspect-types.ts +78 -0
  389. package/src/session/inspect-workflow.ts +157 -0
  390. package/src/session/orientation/collect.ts +718 -0
  391. package/src/session/orientation/context-facts.ts +319 -0
  392. package/src/session/orientation/context-sections.ts +352 -0
  393. package/src/session/orientation-types.ts +97 -0
  394. package/src/session/orientation-workflow.ts +307 -0
  395. package/src/session/refactor-plans.ts +1 -1
  396. package/src/session/refactor-types.ts +51 -0
  397. package/src/session/refactor-workflow.ts +263 -0
  398. package/src/session/session.ts +263 -234
  399. package/src/session/target-candidates.ts +60 -0
  400. package/src/session/target-input.ts +98 -0
  401. package/src/session/target-store.ts +132 -29
  402. package/src/session/target-workflow.ts +254 -302
  403. package/src/session/workflow-control.ts +35 -0
  404. package/src/substrate/lsp/lifecycle.ts +9 -22
  405. package/src/substrate/lsp/maintenance.ts +75 -0
  406. package/src/substrate/lsp/recovery.ts +41 -25
  407. package/src/substrate/lsp/settings.ts +1 -10
  408. package/src/substrate/lsp/state.ts +2 -13
  409. package/src/tool/find/ast-kinds.ts +35 -0
  410. package/src/tool/find/execute.ts +22 -113
  411. package/src/tool/find/markdown.ts +85 -221
  412. package/src/tool/find/modes.ts +5 -0
  413. package/src/tool/find/render.ts +57 -0
  414. package/src/tool/find/tui.ts +1 -1
  415. package/src/tool/graph/calls-md.ts +17 -30
  416. package/src/tool/graph/execute.ts +42 -103
  417. package/src/tool/graph/implementations-md.ts +32 -54
  418. package/src/tool/graph/markdown-base.ts +73 -196
  419. package/src/tool/graph/provider-location-md.ts +9 -0
  420. package/src/tool/graph/references-md.ts +34 -27
  421. package/src/tool/graph/tui.ts +8 -26
  422. package/src/tool/guidance.ts +31 -48
  423. package/src/tool/health/execute.ts +15 -56
  424. package/src/tool/health/markdown.ts +199 -148
  425. package/src/tool/health/semantic-state.ts +24 -0
  426. package/src/tool/health/tui.ts +262 -36
  427. package/src/tool/infra/error-results.ts +0 -2
  428. package/src/tool/infra/progress.ts +2 -2
  429. package/src/tool/infra/workflow-control.ts +11 -0
  430. package/src/tool/inspect/execute.ts +23 -63
  431. package/src/tool/inspect/markdown.ts +114 -95
  432. package/src/tool/inspect/tui.ts +7 -7
  433. package/src/tool/orientation/execute.ts +50 -37
  434. package/src/tool/orientation/markdown.ts +26 -31
  435. package/src/tool/orientation/tui.ts +41 -39
  436. package/src/tool/refactor-apply/execute.ts +23 -9
  437. package/src/tool/refactor-apply/tui.ts +7 -3
  438. package/src/tool/refactor-plan/execute.ts +44 -61
  439. package/src/tool/refactor-plan/markdown.ts +33 -56
  440. package/src/tool/refactor-plan/tui.ts +10 -11
  441. package/src/tool/register.ts +6 -5
  442. package/src/tool/resolve/execute.ts +23 -69
  443. package/src/tool/resolve/markdown.ts +125 -114
  444. package/src/tool/resolve/tui.ts +11 -9
  445. package/src/tool/result/assembly.ts +125 -0
  446. package/src/tool/result/errors.ts +20 -34
  447. package/src/tool/result/find.ts +107 -21
  448. package/src/tool/result/graph.ts +163 -64
  449. package/src/tool/result/health.ts +170 -73
  450. package/src/tool/result/inspect.ts +183 -41
  451. package/src/tool/result/orientation.ts +118 -16
  452. package/src/tool/result/refactor.ts +101 -21
  453. package/src/tool/result/resolve.ts +243 -80
  454. package/src/tool/result/types.ts +100 -56
  455. package/src/tool/schemas.ts +160 -231
  456. package/src/tool/specs.ts +57 -168
  457. package/src/types/details.ts +2 -4
  458. package/src/types/execution.ts +6 -15
  459. package/src/types/index.ts +2 -4
  460. package/src/types/tool-names.ts +1 -2
  461. package/src/ui/footer.ts +3 -3
  462. package/src/ui/markdown/gather.ts +17 -65
  463. package/src/ui/markdown/overview-data.ts +143 -21
  464. package/src/ui/markdown/overview.ts +27 -8
  465. package/src/ui/markdown/types.ts +12 -16
  466. package/src/ui/status-command.ts +39 -31
  467. package/src/ui/status-overlay.ts +23 -15
  468. package/src/ui/tui/common.ts +121 -74
  469. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  470. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  471. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  472. package/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  473. package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  474. package/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  475. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  476. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  477. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  478. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  479. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  480. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  481. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-augmentation.ts +0 -82
  482. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-context.ts +0 -116
  483. package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-display.ts +0 -69
  484. package/node_modules/@mrclrchtr/supi-lsp/src/manager/capability-index.ts +0 -24
  485. package/node_modules/@mrclrchtr/supi-lsp/src/manager/client-pool.ts +0 -33
  486. package/node_modules/@mrclrchtr/supi-lsp/src/manager/diagnostic-store.ts +0 -51
  487. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-stale-resync.ts +0 -47
  488. package/node_modules/@mrclrchtr/supi-lsp/src/manager/recovery-coordinator.ts +0 -37
  489. package/node_modules/@mrclrchtr/supi-lsp/src/manager/workspace-router.ts +0 -44
  490. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  491. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  492. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  493. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +0 -31
  494. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +0 -11
  495. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/types.ts +0 -2
  496. package/src/analysis/brief/directory.ts +0 -324
  497. package/src/analysis/brief/enrich.ts +0 -157
  498. package/src/analysis/brief/file.ts +0 -84
  499. package/src/analysis/brief/inventory.ts +0 -177
  500. package/src/analysis/brief/main.ts +0 -176
  501. package/src/analysis/brief/models.ts +0 -75
  502. package/src/analysis/brief/public-brief.ts +0 -179
  503. package/src/analysis/brief/summarize.ts +0 -208
  504. package/src/analysis/brief/types.ts +0 -27
  505. package/src/analysis/brief/use-case.ts +0 -264
  506. package/src/analysis/search/ripgrep.ts +0 -558
  507. package/src/analysis/signals/git.ts +0 -89
  508. package/src/analysis/signals/project.ts +0 -189
  509. package/src/analysis/target/bridge.ts +0 -152
  510. package/src/analysis/target/file-resolution.ts +0 -125
  511. package/src/analysis/target/planner.ts +0 -92
  512. package/src/analysis/target/query.ts +0 -74
  513. package/src/analysis/target/resolve-common.ts +0 -115
  514. package/src/analysis/target/service.ts +0 -229
  515. package/src/analysis/tests/likely-tests.ts +0 -174
  516. package/src/analysis/tests/test-discovery.ts +0 -540
  517. package/src/analysis/tests/vitest.ts +0 -87
  518. package/src/app/manager.ts +0 -65
  519. package/src/substrate/lsp/diagnostic-injection.ts +0 -203
  520. package/src/substrate/lsp/overrides.ts +0 -132
  521. package/src/tool/find/orchestrate.ts +0 -317
  522. package/src/tool/find/semantic-search.ts +0 -128
  523. package/src/tool/graph/collect-relation.ts +0 -372
  524. package/src/tool/graph/orchestrate.ts +0 -259
  525. package/src/tool/health/orchestrate.ts +0 -151
  526. package/src/tool/health/sections/diagnostics.ts +0 -182
  527. package/src/tool/health/sections/recovery.ts +0 -89
  528. package/src/tool/health/sections/signals.ts +0 -89
  529. package/src/tool/impact/analysis.ts +0 -220
  530. package/src/tool/impact/change-set-impact.ts +0 -152
  531. package/src/tool/impact/execute.ts +0 -125
  532. package/src/tool/impact/file-level-impact.ts +0 -82
  533. package/src/tool/impact/markdown.ts +0 -283
  534. package/src/tool/impact/orchestrate.ts +0 -97
  535. package/src/tool/impact/result.ts +0 -2
  536. package/src/tool/impact/single-impact.ts +0 -90
  537. package/src/tool/impact/tui.ts +0 -39
  538. package/src/tool/impact/types.ts +0 -34
  539. package/src/tool/infra/cross-field.ts +0 -335
  540. package/src/tool/infra/pipeline.ts +0 -334
  541. package/src/tool/infra/readiness-message.ts +0 -5
  542. package/src/tool/inspect/orchestrate.ts +0 -154
  543. package/src/tool/orientation/deps.ts +0 -63
  544. package/src/tool/orientation/mode.ts +0 -139
  545. package/src/tool/orientation/orchestrate.ts +0 -475
  546. package/src/tool/orientation/precise-target.ts +0 -253
  547. package/src/tool/params.ts +0 -15
  548. package/src/tool/refactor-apply/markdown.ts +0 -118
  549. package/src/tool/refactor-apply/orchestrate.ts +0 -84
  550. package/src/tool/refactor-plan/orchestrate.ts +0 -355
  551. package/src/tool/resolve/orchestrate.ts +0 -38
  552. package/src/tool/result/impact.ts +0 -50
  553. package/src/ui/markdown/brief.ts +0 -218
  554. package/src/ui/message-renderer.ts +0 -121
  555. package/src/ui/tui/index.ts +0 -37
  556. /package/src/{tool/graph → analysis/relations}/callees.ts +0 -0
@@ -0,0 +1,141 @@
1
+ /** Session-owned unified code search workflow. */
2
+
3
+ import type { CodeSymbol } from "@mrclrchtr/supi-code-runtime/api";
4
+ import { isWithinOrEqual } from "@mrclrchtr/supi-core/project";
5
+ import { resolveScopeSet } from "../analysis/search/paths.ts";
6
+ import { getStructuredPatternMatches } from "../analysis/search/pattern.ts";
7
+ import { isCodeFindAstKind } from "../tool/find/ast-kinds.ts";
8
+ import type { CapabilityAdapter } from "./capability-adapter.ts";
9
+ import type { FindWorkflowInput, FindWorkflowOutcome } from "./find-types.ts";
10
+ import { parseFindWorkflowInput } from "./input/workflows.ts";
11
+ import { reportProgress, throwIfAborted, type WorkflowControl } from "./workflow-control.ts";
12
+
13
+ export interface FindWorkflowDeps {
14
+ readonly cwd: string;
15
+ readonly capability: CapabilityAdapter;
16
+ }
17
+
18
+ /** Search one explicit substrate without silently falling back to another mode. */
19
+ export async function runFindWorkflow(
20
+ input: FindWorkflowInput,
21
+ deps: FindWorkflowDeps,
22
+ control?: WorkflowControl,
23
+ ): Promise<FindWorkflowOutcome> {
24
+ const parsed = parseFindWorkflowInput(input);
25
+ if (parsed.kind === "invalid-input") return parsed;
26
+ const request = parsed.value;
27
+ const query = request.query;
28
+ const mode = request.mode;
29
+
30
+ const scope = resolveScopeSet(request.scope ? [...request.scope] : undefined, deps.cwd);
31
+ if (scope.kind === "error") return { kind: "invalid-input", message: scope.reason };
32
+
33
+ throwIfAborted(control);
34
+ reportProgress(control, {
35
+ intent: "find",
36
+ phase: mode,
37
+ message: `Searching in ${mode} mode`,
38
+ });
39
+
40
+ const maxResults = request.maxResults ?? 8;
41
+ const scopeLabel = scope.display ?? ".";
42
+ if (mode === "semantic") {
43
+ return runSemanticSearch({
44
+ query,
45
+ scopePaths: scope.paths,
46
+ scopeLabel,
47
+ maxResults,
48
+ deps,
49
+ control,
50
+ });
51
+ }
52
+ return runAstSearch({
53
+ query,
54
+ input: request,
55
+ scopePaths: scope.paths,
56
+ scopeLabel,
57
+ maxResults,
58
+ deps,
59
+ control,
60
+ });
61
+ }
62
+
63
+ async function runSemanticSearch(options: {
64
+ query: string;
65
+ scopePaths: readonly string[];
66
+ scopeLabel: string;
67
+ maxResults: number;
68
+ deps: FindWorkflowDeps;
69
+ control?: WorkflowControl;
70
+ }): Promise<FindWorkflowOutcome> {
71
+ const { query, scopePaths, scopeLabel, maxResults, deps, control } = options;
72
+ const readiness = await deps.capability.ensureSemanticReadiness(deps.cwd, {
73
+ kind: "workspace",
74
+ });
75
+ if (readiness.kind === "timeout") {
76
+ return { kind: "unavailable", reason: "Semantic readiness timed out." };
77
+ }
78
+ if (readiness.kind === "unavailable") return readiness;
79
+ throwIfAborted(control);
80
+
81
+ const provider = deps.capability.getSemanticProvider(deps.cwd);
82
+ if (!provider?.workspaceSymbols) {
83
+ return { kind: "unavailable", reason: "No semantic workspace-symbol provider is active." };
84
+ }
85
+ const result = await provider.workspaceSymbols(query);
86
+ if (result.kind === "unavailable") {
87
+ return { kind: "unavailable", reason: result.reason };
88
+ }
89
+ const scopedSymbols: CodeSymbol[] = result.data.filter((symbol) =>
90
+ scopePaths.some((scopePath) => isWithinOrEqual(scopePath, symbol.file)),
91
+ );
92
+ return {
93
+ kind: "completed",
94
+ query,
95
+ mode: "semantic",
96
+ scopeLabel,
97
+ maxResults,
98
+ data: {
99
+ kind: "semantic",
100
+ symbols: scopedSymbols,
101
+ partialReason: result.kind === "partial" ? result.reason : null,
102
+ },
103
+ };
104
+ }
105
+
106
+ async function runAstSearch(options: {
107
+ query: string;
108
+ input: FindWorkflowInput;
109
+ scopePaths: readonly string[];
110
+ scopeLabel: string;
111
+ maxResults: number;
112
+ deps: FindWorkflowDeps;
113
+ control?: WorkflowControl;
114
+ }): Promise<FindWorkflowOutcome> {
115
+ const { query, input, scopePaths, scopeLabel, maxResults, deps, control } = options;
116
+ if (!isCodeFindAstKind(input.kind)) {
117
+ return { kind: "invalid-input", message: "Unsupported AST kind." };
118
+ }
119
+ const provider = deps.capability.getStructuralProvider(deps.cwd);
120
+ if (!provider) {
121
+ return { kind: "unavailable", reason: "No structural provider is active." };
122
+ }
123
+ throwIfAborted(control);
124
+ const outcome = await getStructuredPatternMatches({
125
+ params: { pattern: query, kind: input.kind },
126
+ roots: scopePaths,
127
+ cwd: deps.cwd,
128
+ structural: provider,
129
+ control: { signal: control?.signal },
130
+ });
131
+ if (outcome.kind === "invalid-input") return outcome;
132
+ if (outcome.kind === "unavailable") return outcome;
133
+ return {
134
+ kind: "completed",
135
+ query,
136
+ mode: "ast",
137
+ scopeLabel,
138
+ maxResults,
139
+ data: { kind: "ast", astKind: input.kind, result: outcome.result },
140
+ };
141
+ }
@@ -0,0 +1,181 @@
1
+ /** Presentation-neutral relation collection used by the session-owned graph workflow. */
2
+
3
+ import type { CodeProvider } from "../../analysis/provider.ts";
4
+ import {
5
+ readNextEnclosingScope,
6
+ readNextTarget,
7
+ readNextTopSites,
8
+ } from "../../analysis/read-next.ts";
9
+ import { collectCallees } from "../../analysis/relations/callees.ts";
10
+ import { collectImplementations } from "../../analysis/relations/implementations.ts";
11
+ import { collectCallers } from "../../analysis/relations/references.ts";
12
+ import type { CallEntry } from "../../analysis/relations/types.ts";
13
+ import { toDisplayPath } from "../../analysis/search/paths.ts";
14
+ import type { GraphRelationKind, GraphSection } from "../graph-types.ts";
15
+ import type { AnchorKind } from "../target-store.ts";
16
+
17
+ /** Inputs shared by relation collectors. */
18
+ export interface CollectRelationOptions {
19
+ file: string;
20
+ position: { line: number; character: number };
21
+ displayName: string;
22
+ cwd: string;
23
+ provider: CodeProvider | null;
24
+ maxResults: number;
25
+ semanticReadinessError: string | null;
26
+ anchorKind: AnchorKind;
27
+ calleeDepth?: "direct" | "deep";
28
+ }
29
+
30
+ /** Collect one evidence-backed graph relation without rendering it. */
31
+ export async function collectRelation(
32
+ relation: GraphRelationKind,
33
+ options: CollectRelationOptions,
34
+ ): Promise<GraphSection> {
35
+ if (options.semanticReadinessError && (relation === "references" || relation === "implements")) {
36
+ return { kind: "unavailable", rel: relation, message: options.semanticReadinessError };
37
+ }
38
+
39
+ try {
40
+ switch (relation) {
41
+ case "references":
42
+ return collectReferences(options);
43
+ case "callees":
44
+ return collectCalleesRelation(options);
45
+ case "implements":
46
+ return collectImplementationsRelation(options);
47
+ }
48
+ } catch (error) {
49
+ return {
50
+ kind: "unavailable",
51
+ rel: relation,
52
+ message: error instanceof Error ? error.message : "Unknown relation failure",
53
+ };
54
+ }
55
+ }
56
+
57
+ async function collectReferences(options: CollectRelationOptions): Promise<GraphSection> {
58
+ if (!options.provider?.references) {
59
+ return { kind: "unavailable", rel: "references", message: "No semantic references provider" };
60
+ }
61
+
62
+ const result = await collectCallers(options.file, options.position, options.displayName, {
63
+ cwd: options.cwd,
64
+ provider: { references: options.provider.references },
65
+ });
66
+ if (result.confidence === "unavailable") {
67
+ return { kind: "unavailable", rel: "references", message: "References unavailable" };
68
+ }
69
+
70
+ const targetLine = options.position.line + 1;
71
+ const references = result.references;
72
+ return {
73
+ kind: "ok",
74
+ rel: "references",
75
+ data: {
76
+ references,
77
+ externalCount: result.externalCount,
78
+ invalidLocationCount: result.invalidLocationCount,
79
+ partialReason: result.partialReason,
80
+ confidence: "semantic",
81
+ },
82
+ readNext: [
83
+ readNextTarget(
84
+ toDisplayPath(options.cwd, options.file),
85
+ targetLine,
86
+ "inspect the resolved target before editing",
87
+ ),
88
+ ...readNextTopSites(
89
+ references.slice(0, options.maxResults).map((reference) => ({
90
+ file: toDisplayPath(options.cwd, reference.file),
91
+ line: reference.line,
92
+ })),
93
+ 2,
94
+ "reference",
95
+ ),
96
+ ],
97
+ };
98
+ }
99
+
100
+ async function collectCalleesRelation(options: CollectRelationOptions): Promise<GraphSection> {
101
+ if (options.anchorKind === "declaration") {
102
+ return {
103
+ kind: "unavailable",
104
+ rel: "callees",
105
+ message:
106
+ "Callees require a name anchor. Resolve an identifier coordinate with code_resolve and retry.",
107
+ };
108
+ }
109
+ if (!options.provider?.calleesAt) {
110
+ return { kind: "unavailable", rel: "callees", message: "No structural callee provider" };
111
+ }
112
+
113
+ const result = await collectCallees(
114
+ options.file,
115
+ options.position.line + 1,
116
+ options.position.character + 1,
117
+ options.displayName,
118
+ { cwd: options.cwd, provider: { calleesAt: options.provider.calleesAt } },
119
+ undefined,
120
+ options.calleeDepth ?? "direct",
121
+ );
122
+ if (result.confidence === "unavailable") {
123
+ return { kind: "unavailable", rel: "callees", message: "Callees unavailable" };
124
+ }
125
+
126
+ const enclosingScope = result.enclosingScope ?? {
127
+ name: options.displayName,
128
+ file: options.file,
129
+ startLine: options.position.line + 1,
130
+ endLine: options.position.line + 1,
131
+ };
132
+ const calls: CallEntry[] = result.callees.map((callee) => ({
133
+ name: callee.name,
134
+ file: callee.file,
135
+ line: callee.line,
136
+ }));
137
+ return {
138
+ kind: "ok",
139
+ rel: "callees",
140
+ data: { enclosingScope, calls, depth: result.depth },
141
+ readNext: [
142
+ readNextEnclosingScope(
143
+ toDisplayPath(options.cwd, options.file),
144
+ enclosingScope,
145
+ options.position.line + 1,
146
+ ),
147
+ ],
148
+ };
149
+ }
150
+
151
+ async function collectImplementationsRelation(
152
+ options: CollectRelationOptions,
153
+ ): Promise<GraphSection> {
154
+ if (!options.provider?.implementation) {
155
+ return {
156
+ kind: "unavailable",
157
+ rel: "implements",
158
+ message: "No semantic implementations provider",
159
+ };
160
+ }
161
+
162
+ const result = await collectImplementations(options.file, options.position, options.displayName, {
163
+ cwd: options.cwd,
164
+ provider: { implementation: options.provider.implementation },
165
+ });
166
+ if (result.confidence === "unavailable") {
167
+ return { kind: "unavailable", rel: "implements", message: "Implementations unavailable" };
168
+ }
169
+
170
+ return {
171
+ kind: "ok",
172
+ rel: "implements",
173
+ data: {
174
+ implementations: result.implementations,
175
+ externalCount: result.externalCount,
176
+ invalidLocationCount: result.invalidLocationCount,
177
+ partialReason: result.partialReason,
178
+ },
179
+ readNext: [],
180
+ };
181
+ }
@@ -0,0 +1,77 @@
1
+ import type { ReadNextItem } from "../analysis/read-next.ts";
2
+ import type { RelationLocationPartialReason } from "../analysis/relations/provider-locations.ts";
3
+ import type {
4
+ CallEntry,
5
+ CalleeScope,
6
+ ImplementationEntry,
7
+ ReferenceEntry,
8
+ } from "../analysis/relations/types.ts";
9
+ import type { GraphTargetInput } from "./target-input.ts";
10
+ import type { TargetWorkflowOutcome } from "./target-workflow.ts";
11
+
12
+ /** Concrete graph relation families. */
13
+ export type GraphRelationKind = "references" | "callees" | "implements";
14
+ export type RequestedGraphRelation = GraphRelationKind | "all";
15
+
16
+ /** Canonical input to the session-owned graph workflow. */
17
+ export interface GraphWorkflowInput {
18
+ readonly target: GraphTargetInput;
19
+ readonly relations?: readonly RequestedGraphRelation[];
20
+ readonly calleeDepth?: "direct" | "deep";
21
+ readonly maxResults?: number;
22
+ }
23
+
24
+ /** Presentation-neutral relation sections. */
25
+ export type GraphSection =
26
+ | {
27
+ readonly kind: "ok";
28
+ readonly rel: "references";
29
+ readonly data: {
30
+ readonly references: readonly ReferenceEntry[];
31
+ readonly externalCount: number;
32
+ readonly invalidLocationCount: number;
33
+ readonly partialReason: RelationLocationPartialReason | null;
34
+ readonly confidence: "semantic";
35
+ };
36
+ readonly readNext: readonly ReadNextItem[];
37
+ }
38
+ | {
39
+ readonly kind: "ok";
40
+ readonly rel: "callees";
41
+ readonly data: {
42
+ readonly enclosingScope: CalleeScope;
43
+ readonly calls: readonly CallEntry[];
44
+ readonly depth: "direct" | "deep";
45
+ };
46
+ readonly readNext: readonly ReadNextItem[];
47
+ }
48
+ | {
49
+ readonly kind: "ok";
50
+ readonly rel: "implements";
51
+ readonly data: {
52
+ readonly implementations: readonly ImplementationEntry[];
53
+ readonly externalCount: number;
54
+ readonly invalidLocationCount: number;
55
+ readonly partialReason: RelationLocationPartialReason | null;
56
+ };
57
+ readonly readNext: readonly ReadNextItem[];
58
+ }
59
+ | {
60
+ readonly kind: "unavailable";
61
+ readonly rel: GraphRelationKind;
62
+ readonly message: string;
63
+ };
64
+
65
+ /** Completed graph facts after one Target workflow execution. */
66
+ export interface CompletedGraphWorkflow {
67
+ readonly kind: "completed";
68
+ readonly displayName: string;
69
+ readonly resolvedDisplayFile: string;
70
+ readonly maxResults: number;
71
+ readonly sections: readonly GraphSection[];
72
+ }
73
+
74
+ /** Graph workflow outcome, preserving target disambiguation and failure states. */
75
+ export type GraphWorkflowOutcome =
76
+ | CompletedGraphWorkflow
77
+ | Exclude<TargetWorkflowOutcome, { kind: "resolved" } | { kind: "target-group" }>;
@@ -0,0 +1,152 @@
1
+ /** Session-owned graph workflow: one Target workflow followed by relation collection. */
2
+
3
+ import { toDisplayPath } from "../analysis/search/paths.ts";
4
+ import type { CapabilityAdapter } from "./capability-adapter.ts";
5
+ import { collectRelation } from "./graph/collect.ts";
6
+ import type {
7
+ GraphRelationKind,
8
+ GraphSection,
9
+ GraphWorkflowInput,
10
+ GraphWorkflowOutcome,
11
+ } from "./graph-types.ts";
12
+ import { parseGraphWorkflowInput } from "./input/workflows.ts";
13
+ import type { TargetInput } from "./target-input.ts";
14
+ import {
15
+ resolveTargetWorkflow,
16
+ type TargetWorkflowDeps,
17
+ type TargetWorkflowOutcome,
18
+ } from "./target-workflow.ts";
19
+ import { reportProgress, throwIfAborted, type WorkflowControl } from "./workflow-control.ts";
20
+
21
+ const DEFAULT_RELATIONS: readonly GraphRelationKind[] = ["references"];
22
+ const ALL_RELATIONS: readonly GraphRelationKind[] = ["references", "callees", "implements"];
23
+
24
+ export interface GraphWorkflowDeps extends TargetWorkflowDeps {
25
+ readonly capability: CapabilityAdapter;
26
+ }
27
+
28
+ /** Execute graph analysis without assembling or rendering a public Tool result. */
29
+ export async function runGraphWorkflow(
30
+ input: GraphWorkflowInput,
31
+ deps: GraphWorkflowDeps,
32
+ control?: WorkflowControl,
33
+ ): Promise<GraphWorkflowOutcome> {
34
+ const parsed = parseGraphWorkflowInput(input);
35
+ if (parsed.kind === "invalid-input") return parsed;
36
+ const request = parsed.value;
37
+ const relations = normalizeRelations(request.relations);
38
+ if (typeof relations === "string") {
39
+ return { kind: "invalid-input", message: relations };
40
+ }
41
+
42
+ throwIfAborted(control);
43
+ reportProgress(control, {
44
+ intent: "graph",
45
+ phase: "target",
46
+ message: "Resolving graph target",
47
+ });
48
+
49
+ const targetOutcome = await resolveTargetWorkflow(
50
+ request.target as TargetInput,
51
+ {
52
+ fileLevelAllowed: false,
53
+ nameAnchorRequired: false,
54
+ maxResults: request.maxResults,
55
+ },
56
+ deps,
57
+ );
58
+ if (targetOutcome.kind === "target-group") {
59
+ return {
60
+ kind: "invalid-input",
61
+ message: "Graph analysis requires one member handle from a Target group.",
62
+ };
63
+ }
64
+ if (targetOutcome.kind !== "resolved") return targetOutcome;
65
+
66
+ const entry = targetOutcome.entry;
67
+ const semanticReadinessError = await getSemanticReadinessError(
68
+ relations,
69
+ entry.file,
70
+ deps.capability,
71
+ deps.cwd,
72
+ );
73
+ const provider = deps.capability.getProvider(deps.cwd);
74
+ const maxResults = request.maxResults ?? 8;
75
+ const displayName =
76
+ entry.name ?? `symbol at ${toDisplayPath(deps.cwd, entry.file)}:${entry.displayLine}`;
77
+
78
+ const sections: GraphSection[] = [];
79
+ for (const relation of relations) {
80
+ throwIfAborted(control);
81
+ reportProgress(control, {
82
+ intent: "graph",
83
+ phase: relation,
84
+ message: `Collecting ${relation}`,
85
+ });
86
+ sections.push(
87
+ await collectRelation(relation, {
88
+ file: entry.file,
89
+ position: entry.position,
90
+ displayName,
91
+ cwd: deps.cwd,
92
+ provider,
93
+ maxResults,
94
+ semanticReadinessError,
95
+ anchorKind: entry.anchorKind,
96
+ calleeDepth: request.calleeDepth,
97
+ }),
98
+ );
99
+ }
100
+
101
+ if (sections.length > 0 && sections.every((section) => section.kind === "unavailable")) {
102
+ return {
103
+ kind: "unavailable",
104
+ reason: sections.map((section) => section.message).join("; "),
105
+ };
106
+ }
107
+
108
+ return Object.freeze({
109
+ kind: "completed",
110
+ displayName,
111
+ resolvedDisplayFile: toDisplayPath(deps.cwd, entry.file),
112
+ maxResults,
113
+ sections: Object.freeze(sections),
114
+ });
115
+ }
116
+
117
+ function normalizeRelations(
118
+ requested: readonly (GraphRelationKind | "all")[] | undefined,
119
+ ): readonly GraphRelationKind[] | string {
120
+ if (!requested || requested.length === 0) return DEFAULT_RELATIONS;
121
+ if (requested.includes("all")) {
122
+ if (requested.length !== 1) {
123
+ return '`relations: ["all"]` cannot be combined with named relations.';
124
+ }
125
+ return ALL_RELATIONS;
126
+ }
127
+ return requested as readonly GraphRelationKind[];
128
+ }
129
+
130
+ async function getSemanticReadinessError(
131
+ relations: readonly GraphRelationKind[],
132
+ file: string,
133
+ capability: CapabilityAdapter,
134
+ cwd: string,
135
+ ): Promise<string | null> {
136
+ if (!relations.some((relation) => relation === "references" || relation === "implements")) {
137
+ return null;
138
+ }
139
+ const readiness = await capability.ensureSemanticReadiness(cwd, { kind: "file", file });
140
+ if (readiness.kind === "ready") return null;
141
+ if (readiness.kind === "timeout") {
142
+ return "Semantic readiness timed out. Retry shortly or inspect code_health.";
143
+ }
144
+ return readiness.reason;
145
+ }
146
+
147
+ /** Narrow helper retained for session method typing. */
148
+ export function isTargetFailure(
149
+ outcome: TargetWorkflowOutcome,
150
+ ): outcome is Exclude<TargetWorkflowOutcome, { kind: "resolved" } | { kind: "target-group" }> {
151
+ return outcome.kind !== "resolved" && outcome.kind !== "target-group";
152
+ }
@@ -0,0 +1,134 @@
1
+ import type { CapabilityWarningReport } from "../analysis/capability/capability-warnings.ts";
2
+
3
+ export type HealthSection = "diagnostics" | "servers";
4
+
5
+ /** Final semantic-diagnostics readiness after routing and requested recovery. */
6
+ export type SemanticHealthState =
7
+ | { readonly kind: "ready" }
8
+ | { readonly kind: "pending"; readonly reason: string }
9
+ | { readonly kind: "inactive"; readonly reason: string }
10
+ | { readonly kind: "disabled"; readonly reason: string }
11
+ | { readonly kind: "unavailable"; readonly reason: string };
12
+
13
+ export interface HealthWorkflowInput {
14
+ readonly scope?: string;
15
+ readonly refresh?: boolean;
16
+ readonly include?: readonly HealthSection[];
17
+ readonly level?: "summary" | "detailed";
18
+ }
19
+
20
+ export interface HealthServerInfo {
21
+ readonly name: string;
22
+ readonly root: string;
23
+ readonly fileTypes: readonly string[];
24
+ readonly status: string;
25
+ readonly ready: boolean;
26
+ }
27
+
28
+ /** A single diagnostic message extracted for detailed health output. */
29
+ export interface HealthDiagnosticMessage {
30
+ readonly line: number;
31
+ readonly severity: "error" | "warning";
32
+ readonly message: string;
33
+ readonly source?: string;
34
+ }
35
+
36
+ export interface HealthDiagnosticEntry {
37
+ readonly file: string;
38
+ readonly errors: number;
39
+ readonly warnings: number;
40
+ /** Individual messages, present only in detailed mode. Capped per file. */
41
+ readonly messages?: readonly HealthDiagnosticMessage[];
42
+ }
43
+
44
+ /** The evidence boundary for diagnostics collected by one health request. */
45
+ export type HealthDiagnosticScope =
46
+ | { readonly kind: "file"; readonly path: string }
47
+ | { readonly kind: "tracked-files"; readonly filter: string | null };
48
+
49
+ /** A diagnostic observation that preserves completed-empty, partial, and unavailable states. */
50
+ export type HealthDiagnosticObservation =
51
+ | { readonly kind: "not-requested"; readonly entries: readonly HealthDiagnosticEntry[] }
52
+ | {
53
+ readonly kind: "completed";
54
+ readonly scope: HealthDiagnosticScope;
55
+ readonly entries: readonly HealthDiagnosticEntry[];
56
+ }
57
+ | {
58
+ readonly kind: "partial";
59
+ readonly scope: HealthDiagnosticScope;
60
+ readonly entries: readonly HealthDiagnosticEntry[];
61
+ readonly reason: string;
62
+ }
63
+ | {
64
+ readonly kind: "unavailable";
65
+ readonly scope: HealthDiagnosticScope;
66
+ readonly entries: readonly HealthDiagnosticEntry[];
67
+ readonly reason: string;
68
+ };
69
+
70
+ /** Bounded stale-diagnostic metadata from a completed workspace recovery pass. */
71
+ export interface HealthStaleAssessment {
72
+ readonly suspected: boolean;
73
+ readonly matchedFileCount: number;
74
+ readonly warning: string | null;
75
+ }
76
+
77
+ /** A diagnostic refresh attempt against the workspace LSP runtime. */
78
+ export type HealthRefreshAttempt =
79
+ | {
80
+ readonly kind: "completed";
81
+ readonly attemptedAt: number;
82
+ /** The diagnostic evidence scope requested by the caller, not the runtime operation scope. */
83
+ readonly requestedDiagnosticScope: HealthDiagnosticScope;
84
+ /** Recovery always operates against the workspace runtime. */
85
+ readonly operationScope: "workspace-runtime";
86
+ /** Active clients targeted by the best-effort refresh; this is not a confirmed-success count. */
87
+ readonly attemptedActiveClients: number;
88
+ readonly restartedClients: number;
89
+ readonly staleAssessment: HealthStaleAssessment;
90
+ }
91
+ | {
92
+ readonly kind: "failed";
93
+ readonly attemptedAt: number;
94
+ readonly requestedDiagnosticScope: HealthDiagnosticScope;
95
+ readonly operationScope: "workspace-runtime";
96
+ readonly reason: string;
97
+ };
98
+
99
+ /** Refresh state for this health call, retaining the prior actual attempt when none ran. */
100
+ export type HealthRefreshState =
101
+ | HealthRefreshAttempt
102
+ | {
103
+ readonly kind: "not-requested";
104
+ readonly reason: string;
105
+ readonly lastAttempt: HealthRefreshAttempt | null;
106
+ }
107
+ | {
108
+ readonly kind: "not-attempted";
109
+ readonly reason: string;
110
+ readonly lastAttempt: HealthRefreshAttempt | null;
111
+ };
112
+
113
+ /** Presentation-neutral health facts. */
114
+ export interface HealthData {
115
+ readonly includedSections: readonly HealthSection[];
116
+ /** Final semantic state, or null when no semantic health section was requested. */
117
+ readonly semanticState: SemanticHealthState | null;
118
+ /** Whether server inventory was observed from a live owner or explicit disabled state. */
119
+ readonly serverInventoryAvailable: boolean;
120
+ /** True only when the structural capability is explicitly ready. */
121
+ readonly structuralAvailable?: boolean;
122
+ readonly structuralStatus?: string;
123
+ readonly diagnostics: HealthDiagnosticObservation;
124
+ /** Server inventory is always workspace-wide, independent of diagnostic scope. */
125
+ readonly servers: readonly HealthServerInfo[];
126
+ readonly refresh: HealthRefreshState;
127
+ readonly level: "summary" | "detailed";
128
+ readonly capabilityWarnings?: CapabilityWarningReport;
129
+ }
130
+
131
+ export type HealthWorkflowOutcome =
132
+ | { readonly kind: "completed"; readonly data: HealthData }
133
+ | { readonly kind: "invalid-input"; readonly message: string }
134
+ | { readonly kind: "unavailable"; readonly reason: string };