@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
@@ -1,269 +1,255 @@
1
- /**
2
- * Architecture model discovery — scans project metadata to build a structural
3
- * workspace model for auto-injected overviews and on-demand briefs.
4
- */
1
+ /** Direct package-manifest and workspace-configuration collection for Orientation. */
5
2
 
6
- import * as fs from "node:fs";
3
+ import { glob } from "node:fs/promises";
7
4
  import * as path from "node:path";
8
- import { findProjectRoot, walkProject } from "@mrclrchtr/supi-core/project";
9
- import type { ArchitectureModel, DependencyEdge, ModuleInfo } from "./model.ts";
10
-
11
- // ── Constants ─────────────────────────────────────────────────────────
12
-
13
- const PROJECT_MARKERS = [
14
- "package.json",
15
- "pnpm-workspace.yaml",
16
- "deno.json",
17
- "deno.jsonc",
18
- "Cargo.toml",
19
- "go.mod",
20
- "pyproject.toml",
21
- ];
22
-
23
- interface PackageJson {
24
- name?: string;
25
- description?: string;
26
- main?: string;
27
- module?: string;
28
- exports?: unknown;
29
- dependencies?: Record<string, string>;
30
- devDependencies?: Record<string, string>;
31
- peerDependencies?: Record<string, string>;
32
- workspaces?: string[] | { packages?: string[] };
33
- pi?: { extensions?: string[] };
5
+ import {
6
+ errorMessage,
7
+ readPackageJson,
8
+ toModuleInfo,
9
+ toRootManifestObservation,
10
+ } from "./manifest.ts";
11
+ import type {
12
+ ArchitectureModel,
13
+ ArchitectureObservationStatus,
14
+ DependencyEdge,
15
+ ModuleInfo,
16
+ PackageManifestObservation,
17
+ WorkspaceTopology,
18
+ } from "./model.ts";
19
+ import { findArchitectureRoot, readWorkspaceDeclaration } from "./workspace-config.ts";
20
+
21
+ interface WorkspaceCollection {
22
+ readonly modules: readonly ModuleInfo[];
23
+ readonly edges: readonly DependencyEdge[];
24
+ readonly status: ArchitectureObservationStatus;
25
+ readonly reason: string | null;
26
+ readonly failedPackageManifestCount: number;
34
27
  }
35
28
 
36
- // ── Public entry point ────────────────────────────────────────────────
37
-
38
29
  /**
39
- * Build an architecture model from project metadata.
40
- * Starts from cheap manifest scanning — no deep AST or LSP analysis.
30
+ * Collect directly observed package-manifest and workspace-configuration facts.
31
+ *
32
+ * Only `package.json#workspaces` and `pnpm-workspace.yaml#packages` establish
33
+ * workspace membership. Pattern expansion uses Node's native glob after
34
+ * documented pattern validation; unsupported patterns fail closed.
41
35
  */
42
- export async function buildArchitectureModel(cwd: string): Promise<ArchitectureModel | null> {
43
- const root = findProjectRoot(cwd, PROJECT_MARKERS, cwd);
44
- const rootManifest = readPackageJson(root);
45
-
46
- if (!rootManifest) {
47
- return buildMinimalModel(root);
48
- }
49
-
50
- const projectName = rootManifest.name ?? null;
51
- const projectDescription = rootManifest.description ?? null;
52
- const workspaceModules = await detectWorkspaceModules(root, rootManifest);
53
-
54
- if (workspaceModules.length === 0) {
55
- return buildSinglePackageModel(root, rootManifest);
56
- }
57
-
58
- const moduleNames = new Set(workspaceModules.map((m) => m.name));
59
- const edges: DependencyEdge[] = [];
60
-
61
- for (const mod of workspaceModules) {
62
- for (const dep of mod.internalDeps) {
63
- if (moduleNames.has(dep)) {
64
- edges.push({ from: mod.name, to: dep });
65
- }
66
- }
36
+ export async function buildArchitectureModel(cwd: string): Promise<ArchitectureModel> {
37
+ const root = findArchitectureRoot(cwd);
38
+ const rootRead = readPackageJson(root);
39
+ const rootPackage =
40
+ rootRead.kind === "complete" ? toModuleInfo(rootRead.value, root, root) : null;
41
+ const rootManifest = toRootManifestObservation(rootRead, rootPackage);
42
+ const declaration = readWorkspaceDeclaration(root, rootRead);
43
+
44
+ if (declaration.kind === "unavailable") {
45
+ return createModel({
46
+ root,
47
+ rootManifest,
48
+ topology: {
49
+ kind: "unavailable",
50
+ status: "unavailable",
51
+ source: null,
52
+ reason: declaration.reason,
53
+ failedPackageManifestCount: 0,
54
+ },
55
+ });
67
56
  }
68
57
 
69
- const dependedOn = new Set(edges.map((e) => e.to));
70
- for (const mod of workspaceModules) {
71
- mod.isLeaf = !dependedOn.has(mod.name);
58
+ if (declaration.kind === "single-package") {
59
+ return rootPackage
60
+ ? createModel({
61
+ root,
62
+ rootManifest,
63
+ topology: {
64
+ kind: "single-package",
65
+ status: "complete",
66
+ source: null,
67
+ reason: null,
68
+ failedPackageManifestCount: 0,
69
+ },
70
+ modules: [rootPackage],
71
+ })
72
+ : createModel({
73
+ root,
74
+ rootManifest,
75
+ topology: {
76
+ kind: "unavailable",
77
+ status: "unavailable",
78
+ source: null,
79
+ reason: rootManifest.reason ?? "Root package manifest is unavailable.",
80
+ failedPackageManifestCount: 0,
81
+ },
82
+ });
72
83
  }
73
84
 
74
- return {
85
+ const collected = await collectWorkspaceModules(root, declaration.patterns);
86
+ return createModel({
75
87
  root,
76
- name: projectName,
77
- description: projectDescription,
78
- modules: workspaceModules,
79
- edges,
80
- };
88
+ rootManifest,
89
+ topology: {
90
+ kind: collected.status === "unavailable" ? "unavailable" : "workspace",
91
+ status: collected.status,
92
+ source: declaration.source,
93
+ reason: collected.reason,
94
+ failedPackageManifestCount: collected.failedPackageManifestCount,
95
+ },
96
+ modules: collected.modules,
97
+ edges: collected.edges,
98
+ });
81
99
  }
82
100
 
83
- // ── Manifest reading ──────────────────────────────────────────────────
84
-
85
- function readPackageJson(dir: string): PackageJson | null {
86
- try {
87
- const raw = fs.readFileSync(path.join(dir, "package.json"), "utf-8");
88
- return JSON.parse(raw);
89
- } catch {
90
- return null;
91
- }
101
+ function createModel(input: {
102
+ root: string;
103
+ rootManifest: PackageManifestObservation;
104
+ topology: WorkspaceTopology;
105
+ modules?: readonly ModuleInfo[];
106
+ edges?: readonly DependencyEdge[];
107
+ }): ArchitectureModel {
108
+ return {
109
+ root: input.root,
110
+ rootManifest: input.rootManifest,
111
+ topology: input.topology,
112
+ modules: input.modules ?? [],
113
+ edges: input.edges ?? [],
114
+ name: input.rootManifest.package?.name ?? null,
115
+ description: input.rootManifest.package?.description ?? null,
116
+ };
92
117
  }
93
118
 
94
- // ── Workspace detection ───────────────────────────────────────────────
95
-
96
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: workspace detection with manifest parsing
97
- async function detectWorkspaceModules(
119
+ async function collectWorkspaceModules(
98
120
  root: string,
99
- rootManifest: PackageJson,
100
- ): Promise<ModuleInfo[]> {
101
- let workspaceGlobs: string[] = [];
102
-
121
+ patterns: readonly string[],
122
+ ): Promise<WorkspaceCollection> {
123
+ let directories: string[];
103
124
  try {
104
- const pnpmWs = fs.readFileSync(path.join(root, "pnpm-workspace.yaml"), "utf-8");
105
- const packagesMatch = pnpmWs.match(/packages:\s*\n((?:\s*-\s*.+\n?)*)/);
106
- if (packagesMatch) {
107
- workspaceGlobs = packagesMatch[1]
108
- .split("\n")
109
- .map((line) => line.replace(/^\s*-\s*/, "").replace(/['"\s]/g, ""))
110
- .filter(Boolean);
111
- }
112
- } catch {
113
- const ws = rootManifest.workspaces;
114
- if (Array.isArray(ws)) {
115
- workspaceGlobs = ws;
116
- } else if (ws && Array.isArray(ws.packages)) {
117
- workspaceGlobs = ws.packages;
118
- }
125
+ directories = await collectWorkspaceDirectories(root, patterns);
126
+ } catch (error) {
127
+ return unavailableCollection(`Could not expand workspace patterns: ${errorMessage(error)}`);
119
128
  }
120
129
 
121
- if (workspaceGlobs.length === 0) return [];
122
-
123
- const modules: ModuleInfo[] = [];
124
- const resolvedDirs = resolveWorkspaceGlobs(root, workspaceGlobs);
130
+ const result = collectPackageManifests(root, directories);
131
+ const relationships = collectManifestRelationships(result.modules);
132
+ const reasons = [
133
+ result.failedPackageManifestCount > 0
134
+ ? `${result.failedPackageManifestCount} matched package manifest${result.failedPackageManifestCount === 1 ? " is" : "s are"} unreadable or invalid`
135
+ : null,
136
+ relationships.duplicateNames.length > 0
137
+ ? `duplicate package names: ${relationships.duplicateNames.join(", ")}`
138
+ : null,
139
+ ].filter((reason): reason is string => reason !== null);
125
140
 
126
- for (const dir of resolvedDirs) {
127
- const manifest = readPackageJson(dir);
128
- if (!manifest?.name) continue;
129
-
130
- const relativePath = path.relative(root, dir);
131
- const allDeps = { ...manifest.dependencies, ...manifest.peerDependencies };
132
-
133
- const internalDeps: string[] = [];
134
- const externalDeps: string[] = [];
135
- for (const depName of Object.keys(allDeps)) {
136
- const depVersion = allDeps[depName];
137
- if (depVersion?.startsWith("workspace:")) {
138
- internalDeps.push(depName);
139
- } else {
140
- externalDeps.push(depName);
141
- }
142
- }
143
-
144
- const entrypoints: string[] = [];
145
- if (manifest.pi?.extensions) {
146
- entrypoints.push(...manifest.pi.extensions);
147
- } else if (manifest.main) {
148
- entrypoints.push(manifest.main);
149
- } else if (manifest.module) {
150
- entrypoints.push(manifest.module);
151
- }
141
+ return {
142
+ modules: result.modules,
143
+ edges: relationships.edges,
144
+ status: reasons.length > 0 ? "partial" : "complete",
145
+ reason: reasons.length > 0 ? reasons.join("; ") : null,
146
+ failedPackageManifestCount: result.failedPackageManifestCount,
147
+ };
148
+ }
152
149
 
153
- modules.push({
154
- name: manifest.name,
155
- description: manifest.description ?? null,
156
- root: dir,
157
- relativePath,
158
- entrypoints,
159
- isLeaf: false,
160
- internalDeps,
161
- externalDeps,
162
- });
150
+ /** Expand validated inclusion patterns and trailing exclusions with Node's native glob. */
151
+ async function collectWorkspaceDirectories(
152
+ root: string,
153
+ patterns: readonly string[],
154
+ ): Promise<string[]> {
155
+ const inclusions = patterns.filter((pattern) => !pattern.startsWith("!"));
156
+ const exclusions = [
157
+ "**/node_modules/**",
158
+ "**/.pnpm/**",
159
+ "**/.git/**",
160
+ ...patterns.filter((pattern) => pattern.startsWith("!")).map((pattern) => pattern.slice(1)),
161
+ ];
162
+ const directories = new Set<string>();
163
+ for await (const entry of glob(inclusions, {
164
+ cwd: root,
165
+ exclude: exclusions,
166
+ withFileTypes: true,
167
+ })) {
168
+ if (entry.isDirectory()) directories.add(path.join(entry.parentPath, entry.name));
163
169
  }
164
-
165
- return modules;
170
+ return [...directories];
166
171
  }
167
172
 
168
- function resolveWorkspaceGlobs(root: string, globs: string[]): string[] {
169
- const dirs: string[] = [];
170
-
171
- for (const glob of globs) {
172
- if (glob.includes("*")) {
173
- const prefix = glob.replace(/\/?\*.*$/, "");
174
- const baseDir = path.join(root, prefix);
175
- const recursive = glob.includes("**");
176
- try {
177
- collectPackageDirs(baseDir, dirs, recursive ? 5 : 0);
178
- } catch {
179
- // Glob base directory doesn't exist
180
- }
181
- } else {
182
- const fullPath = path.join(root, glob);
183
- if (fs.existsSync(path.join(fullPath, "package.json"))) {
184
- dirs.push(fullPath);
185
- }
173
+ function collectPackageManifests(root: string, directories: readonly string[]) {
174
+ const byDirectory = new Map<string, ModuleInfo>();
175
+ let failedPackageManifestCount = 0;
176
+ for (const directory of sortedDirectories(directories)) {
177
+ const manifest = readPackageJson(directory);
178
+ if (manifest.kind === "missing") continue;
179
+ if (manifest.kind === "unavailable") {
180
+ failedPackageManifestCount++;
181
+ continue;
186
182
  }
183
+ byDirectory.set(directory, toModuleInfo(manifest.value, directory, root));
187
184
  }
188
-
189
- return dirs;
185
+ return {
186
+ modules: [...byDirectory.values()].sort((left, right) =>
187
+ left.relativePath.localeCompare(right.relativePath),
188
+ ),
189
+ failedPackageManifestCount,
190
+ };
190
191
  }
191
192
 
192
- function collectPackageDirs(baseDir: string, dirs: string[], depth: number): void {
193
- let entries: fs.Dirent[];
194
- try {
195
- entries = fs.readdirSync(baseDir, { withFileTypes: true });
196
- } catch {
197
- return;
198
- }
199
- for (const entry of entries) {
200
- if (!entry.isDirectory()) continue;
201
- if (entry.name.startsWith(".")) continue;
202
- if (entry.name === "node_modules") continue;
203
- const fullPath = path.join(baseDir, entry.name);
204
- if (fs.existsSync(path.join(fullPath, "package.json"))) {
205
- dirs.push(fullPath);
206
- } else if (depth > 0) {
207
- collectPackageDirs(fullPath, dirs, depth - 1);
208
- }
209
- }
193
+ function sortedDirectories(directories: readonly string[]): string[] {
194
+ return directories
195
+ .map((entry) => path.resolve(entry))
196
+ .sort((left, right) => left.localeCompare(right));
210
197
  }
211
198
 
212
- // ── Fallback models ───────────────────────────────────────────────────
199
+ function collectManifestRelationships(modules: readonly ModuleInfo[]) {
200
+ const byName = indexModulesByName(modules);
201
+ const duplicateNames = [...byName.entries()]
202
+ .filter(([, entries]) => entries.length > 1)
203
+ .map(([name]) => name)
204
+ .sort((left, right) => left.localeCompare(right));
205
+ return { edges: collectEdges(modules, byName), duplicateNames };
206
+ }
213
207
 
214
- function buildSinglePackageModel(root: string, manifest: PackageJson): ArchitectureModel {
215
- const entrypoints: string[] = [];
216
- if (manifest.pi?.extensions) {
217
- entrypoints.push(...manifest.pi.extensions);
218
- } else if (manifest.main) {
219
- entrypoints.push(manifest.main);
208
+ function indexModulesByName(modules: readonly ModuleInfo[]): Map<string, ModuleInfo[]> {
209
+ const byName = new Map<string, ModuleInfo[]>();
210
+ for (const module of modules) {
211
+ if (!module.name) continue;
212
+ const entries = byName.get(module.name) ?? [];
213
+ entries.push(module);
214
+ byName.set(module.name, entries);
220
215
  }
221
-
222
- const mod: ModuleInfo = {
223
- name: manifest.name ?? path.basename(root),
224
- description: manifest.description ?? null,
225
- root,
226
- relativePath: ".",
227
- entrypoints,
228
- isLeaf: true,
229
- internalDeps: [],
230
- externalDeps: Object.keys({ ...manifest.dependencies, ...manifest.peerDependencies }),
231
- };
232
-
233
- return {
234
- root,
235
- name: manifest.name ?? null,
236
- description: manifest.description ?? null,
237
- modules: [mod],
238
- edges: [],
239
- };
216
+ return byName;
240
217
  }
241
218
 
242
- function buildMinimalModel(root: string): ArchitectureModel | null {
243
- let hasSource = false;
244
- walkProject(root, 2, (_dir, entries) => {
245
- for (const name of entries) {
246
- if (
247
- name.endsWith(".ts") ||
248
- name.endsWith(".js") ||
249
- name.endsWith(".tsx") ||
250
- name.endsWith(".jsx") ||
251
- name.endsWith(".py") ||
252
- name.endsWith(".rs") ||
253
- name.endsWith(".go")
254
- ) {
255
- hasSource = true;
219
+ function collectEdges(
220
+ modules: readonly ModuleInfo[],
221
+ byName: ReadonlyMap<string, readonly ModuleInfo[]>,
222
+ ): DependencyEdge[] {
223
+ const edges: DependencyEdge[] = [];
224
+ for (const module of modules) {
225
+ if (!module.name) continue;
226
+ for (const section of module.dependencySections) {
227
+ for (const dependency of section.entries) {
228
+ if ((byName.get(dependency.name)?.length ?? 0) !== 1) continue;
229
+ edges.push({
230
+ from: module.name,
231
+ to: dependency.name,
232
+ field: section.field,
233
+ specifier: dependency.specifier,
234
+ manifestPath: module.manifestPath,
235
+ });
256
236
  }
257
237
  }
258
- });
259
-
260
- if (!hasSource) return null;
238
+ }
239
+ return edges.sort(
240
+ (left, right) =>
241
+ left.from.localeCompare(right.from) ||
242
+ left.to.localeCompare(right.to) ||
243
+ left.field.localeCompare(right.field),
244
+ );
245
+ }
261
246
 
247
+ function unavailableCollection(reason: string): WorkspaceCollection {
262
248
  return {
263
- root,
264
- name: path.basename(root),
265
- description: null,
266
249
  modules: [],
267
250
  edges: [],
251
+ status: "unavailable",
252
+ reason,
253
+ failedPackageManifestCount: 0,
268
254
  };
269
255
  }
@@ -0,0 +1,147 @@
1
+ /** Package.json reading and field-preserving fact extraction. */
2
+
3
+ import * as fs from "node:fs";
4
+ import * as path from "node:path";
5
+ import type {
6
+ ManifestDependency,
7
+ ManifestDependencyField,
8
+ ManifestDependencySection,
9
+ ManifestField,
10
+ ModuleInfo,
11
+ PackageManifestObservation,
12
+ } from "./model.ts";
13
+
14
+ export const PACKAGE_MANIFEST = "package.json";
15
+ const DEPENDENCY_FIELDS = [
16
+ "dependencies",
17
+ "devDependencies",
18
+ "optionalDependencies",
19
+ "peerDependencies",
20
+ ] as const satisfies readonly ManifestDependencyField[];
21
+ const OTHER_MANIFEST_FIELDS = [
22
+ "workspaces",
23
+ "main",
24
+ "module",
25
+ "exports",
26
+ "bin",
27
+ "bundledDependencies",
28
+ "bundleDependencies",
29
+ "peerDependenciesMeta",
30
+ ] as const;
31
+
32
+ /** Parsed JSON object from one package manifest. */
33
+ export interface PackageJson extends Record<string, unknown> {}
34
+
35
+ /** Read outcome that distinguishes an absent manifest from an unreadable or malformed one. */
36
+ export type PackageJsonRead =
37
+ | { readonly kind: "complete"; readonly value: PackageJson }
38
+ | { readonly kind: "missing"; readonly reason: string }
39
+ | { readonly kind: "unavailable"; readonly reason: string };
40
+
41
+ /** Read one package.json without turning absent or malformed data into an empty manifest. */
42
+ export function readPackageJson(directory: string): PackageJsonRead {
43
+ const manifestPath = path.join(directory, PACKAGE_MANIFEST);
44
+ let raw: string;
45
+ try {
46
+ raw = fs.readFileSync(manifestPath, "utf-8");
47
+ } catch (error) {
48
+ if (isErrno(error, "ENOENT"))
49
+ return { kind: "missing", reason: `No ${PACKAGE_MANIFEST} found.` };
50
+ return {
51
+ kind: "unavailable",
52
+ reason: `Could not read ${PACKAGE_MANIFEST}: ${errorMessage(error)}`,
53
+ };
54
+ }
55
+
56
+ try {
57
+ const value: unknown = JSON.parse(raw);
58
+ if (!isRecord(value)) {
59
+ return { kind: "unavailable", reason: `${PACKAGE_MANIFEST} must contain a JSON object.` };
60
+ }
61
+ return { kind: "complete", value };
62
+ } catch (error) {
63
+ return {
64
+ kind: "unavailable",
65
+ reason: `Could not parse ${PACKAGE_MANIFEST}: ${errorMessage(error)}`,
66
+ };
67
+ }
68
+ }
69
+
70
+ /** Build a root-manifest observation from one package.json read outcome. */
71
+ export function toRootManifestObservation(
72
+ read: PackageJsonRead,
73
+ packageInfo: ModuleInfo | null,
74
+ ): PackageManifestObservation {
75
+ return {
76
+ status: read.kind === "complete" ? "complete" : "unavailable",
77
+ path: PACKAGE_MANIFEST,
78
+ reason: read.kind === "complete" ? null : read.reason,
79
+ package: packageInfo,
80
+ };
81
+ }
82
+
83
+ /** Extract only field-preserving package facts from a successfully parsed manifest. */
84
+ export function toModuleInfo(manifest: PackageJson, directory: string, root: string): ModuleInfo {
85
+ const relativePath = toRelativePath(root, directory);
86
+ const manifestPath =
87
+ relativePath === "." ? PACKAGE_MANIFEST : `${relativePath}/${PACKAGE_MANIFEST}`;
88
+ return {
89
+ name: stringValue(manifest.name),
90
+ description: stringValue(manifest.description),
91
+ root: directory,
92
+ relativePath,
93
+ manifestPath,
94
+ fields: collectManifestFields(manifest),
95
+ dependencySections: collectDependencySections(manifest),
96
+ };
97
+ }
98
+
99
+ function collectManifestFields(manifest: PackageJson): ManifestField[] {
100
+ const fields: ManifestField[] = [];
101
+ for (const field of OTHER_MANIFEST_FIELDS) {
102
+ if (Object.hasOwn(manifest, field)) fields.push({ field, value: manifest[field] });
103
+ }
104
+ if (isRecord(manifest.pi) && Object.hasOwn(manifest.pi, "extensions")) {
105
+ fields.push({ field: "pi.extensions", value: manifest.pi.extensions });
106
+ }
107
+ for (const field of DEPENDENCY_FIELDS) {
108
+ if (Object.hasOwn(manifest, field) && !isRecord(manifest[field])) {
109
+ fields.push({ field, value: manifest[field] });
110
+ }
111
+ }
112
+ return fields;
113
+ }
114
+
115
+ function collectDependencySections(manifest: PackageJson): ManifestDependencySection[] {
116
+ const sections: ManifestDependencySection[] = [];
117
+ for (const field of DEPENDENCY_FIELDS) {
118
+ const value = manifest[field];
119
+ if (!isRecord(value)) continue;
120
+ const entries: ManifestDependency[] = Object.entries(value)
121
+ .map(([name, specifier]) => ({ field, name, specifier }))
122
+ .sort((left, right) => left.name.localeCompare(right.name));
123
+ sections.push({ field, entries });
124
+ }
125
+ return sections;
126
+ }
127
+
128
+ export function isRecord(value: unknown): value is Record<string, unknown> {
129
+ return typeof value === "object" && value !== null && !Array.isArray(value);
130
+ }
131
+
132
+ export function errorMessage(error: unknown): string {
133
+ return error instanceof Error ? error.message : String(error);
134
+ }
135
+
136
+ function toRelativePath(root: string, target: string): string {
137
+ const relative = path.relative(root, target);
138
+ return relative.length === 0 ? "." : relative.replaceAll(path.sep, "/");
139
+ }
140
+
141
+ function stringValue(value: unknown): string | null {
142
+ return typeof value === "string" ? value : null;
143
+ }
144
+
145
+ function isErrno(error: unknown, code: string): error is NodeJS.ErrnoException {
146
+ return typeof error === "object" && error !== null && "code" in error && error.code === code;
147
+ }