@mrclrchtr/supi-code-intelligence 1.16.1 → 2.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 (344) hide show
  1. package/README.md +373 -63
  2. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  3. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  4. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  5. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  6. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  7. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  8. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  9. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  10. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  11. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  12. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  13. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  14. package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  15. package/node_modules/@mrclrchtr/supi-code-runtime/package.json +3 -2
  16. package/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +7 -0
  17. package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +56 -2
  18. package/node_modules/@mrclrchtr/supi-code-runtime/src/evidence-badge.ts +40 -0
  19. package/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +5 -0
  20. package/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +76 -3
  21. package/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/runtime.ts +37 -2
  22. package/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  23. package/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  24. package/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  25. package/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  26. package/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  27. package/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  28. package/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  29. package/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  30. package/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  31. package/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  32. package/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  33. package/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  34. package/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  35. package/node_modules/@mrclrchtr/supi-lsp/README.md +44 -56
  36. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  37. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  38. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  39. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  40. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  41. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  42. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  43. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  44. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  45. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  46. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  47. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  48. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  49. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +3 -2
  50. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +7 -0
  51. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +56 -2
  52. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/evidence-badge.ts +40 -0
  53. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +5 -0
  54. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +76 -3
  55. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/runtime.ts +37 -2
  56. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  57. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  58. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  59. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  60. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  61. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  62. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  63. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  64. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  65. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  66. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  67. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  68. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  69. package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -31
  70. package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +27 -0
  71. package/node_modules/@mrclrchtr/supi-lsp/src/client/client-refresh.ts +5 -0
  72. package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +246 -1
  73. package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +4 -0
  74. package/node_modules/@mrclrchtr/supi-lsp/src/config/capabilities.ts +3 -0
  75. package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +4 -2
  76. package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +102 -0
  77. package/node_modules/@mrclrchtr/supi-lsp/src/config/server-actions.ts +59 -0
  78. package/node_modules/@mrclrchtr/supi-lsp/src/config/server-config.ts +4 -0
  79. package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +11 -0
  80. package/node_modules/@mrclrchtr/supi-lsp/src/manager/capability-index.ts +1 -1
  81. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-project-info.ts +2 -1
  82. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +115 -26
  83. package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +177 -134
  84. package/node_modules/@mrclrchtr/supi-lsp/src/provider/refactor-planning.ts +214 -0
  85. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +320 -0
  86. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +26 -5
  87. package/node_modules/@mrclrchtr/supi-lsp/src/session/service-registry.ts +81 -4
  88. package/node_modules/@mrclrchtr/supi-lsp/src/summary.ts +2 -0
  89. package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +18 -37
  90. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  91. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  92. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  93. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  94. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  95. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  96. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  97. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  98. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  99. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  100. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  101. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  102. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  103. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +3 -2
  104. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +7 -0
  105. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +56 -2
  106. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/evidence-badge.ts +40 -0
  107. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +5 -0
  108. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +76 -3
  109. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/runtime.ts +37 -2
  110. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  111. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  112. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  113. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  114. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  115. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  116. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  117. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  118. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  119. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  120. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  121. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  122. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  123. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/LICENSE +21 -0
  124. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/README.md +265 -0
  125. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.cjs +4661 -0
  126. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.cjs.map +7 -0
  127. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.js +4605 -0
  128. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.js.map +7 -0
  129. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.wasm +0 -0
  130. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.wasm.map +57 -0
  131. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/package.json +100 -0
  132. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.cjs +4063 -0
  133. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.cjs.map +7 -0
  134. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.cts +1025 -0
  135. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.cts.map +58 -0
  136. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.ts +1025 -0
  137. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.ts.map +58 -0
  138. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.js +4007 -0
  139. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.js.map +7 -0
  140. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.wasm +0 -0
  141. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.wasm.map +55 -0
  142. package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +6 -12
  143. package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +29 -0
  144. package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +28 -0
  145. package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +5 -0
  146. package/node_modules/@mrclrchtr/supi-tree-sitter/src/provider/tree-sitter-provider.ts +14 -2
  147. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/runtime-controller.ts +157 -0
  148. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +8 -1
  149. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +86 -0
  150. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +35 -16
  151. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/structure.ts +1 -0
  152. package/node_modules/@mrclrchtr/supi-tree-sitter/src/types.ts +10 -0
  153. package/package.json +14 -9
  154. package/src/{model.ts → analysis/architecture/discovery.ts} +15 -72
  155. package/src/analysis/architecture/model.ts +76 -0
  156. package/src/analysis/brief/directory.ts +324 -0
  157. package/src/analysis/brief/enrich.ts +157 -0
  158. package/src/analysis/brief/file.ts +84 -0
  159. package/src/analysis/brief/inventory.ts +177 -0
  160. package/src/analysis/brief/main.ts +176 -0
  161. package/src/analysis/brief/models.ts +75 -0
  162. package/src/{brief.ts → analysis/brief/public-brief.ts} +21 -26
  163. package/src/analysis/brief/summarize.ts +208 -0
  164. package/src/analysis/brief/types.ts +27 -0
  165. package/src/{use-case/generate-brief.ts → analysis/brief/use-case.ts} +67 -144
  166. package/src/analysis/coverage/coverage-warnings.ts +224 -0
  167. package/src/analysis/evidence.ts +91 -0
  168. package/src/{semantic-action-helpers.ts → analysis/helpers.ts} +4 -4
  169. package/src/analysis/provider.ts +186 -0
  170. package/src/analysis/read-next.ts +126 -0
  171. package/src/analysis/readiness.ts +73 -0
  172. package/src/{refactor → analysis/refactor}/safety.ts +1 -1
  173. package/src/{use-case/support/semantic-references.ts → analysis/references/semantic-refs.ts} +58 -26
  174. package/src/analysis/search/pattern.ts +345 -0
  175. package/src/analysis/search/ripgrep.ts +473 -0
  176. package/src/{git-context.ts → analysis/signals/git.ts} +20 -7
  177. package/src/{prioritization-signals.ts → analysis/signals/project.ts} +33 -19
  178. package/src/analysis/target/anchored.ts +349 -0
  179. package/src/analysis/target/bridge.ts +152 -0
  180. package/src/analysis/target/file-resolution.ts +125 -0
  181. package/src/{targeting/resolve-file.ts → analysis/target/file.ts} +40 -20
  182. package/src/{planner → analysis/target}/planner.ts +30 -20
  183. package/src/{targeting → analysis/target}/query.ts +17 -3
  184. package/src/analysis/target/resolve-common.ts +115 -0
  185. package/src/analysis/target/service.ts +229 -0
  186. package/src/analysis/target/symbol.ts +196 -0
  187. package/src/{targeting → analysis/target}/types.ts +17 -1
  188. package/src/analysis/tests/likely-tests.ts +174 -0
  189. package/src/analysis/tests/test-discovery.ts +540 -0
  190. package/src/analysis/tests/vitest.ts +87 -0
  191. package/src/api.ts +34 -41
  192. package/src/app/app.ts +125 -0
  193. package/src/app/manager.ts +65 -0
  194. package/src/extension.ts +132 -1
  195. package/src/index.ts +1 -57
  196. package/src/session/refactor-plans.ts +82 -0
  197. package/src/session/session.ts +300 -0
  198. package/src/session/target-store.ts +293 -0
  199. package/src/substrate/lsp/diagnostic-injection.ts +218 -0
  200. package/src/substrate/lsp/lifecycle.ts +66 -0
  201. package/src/substrate/lsp/overrides.ts +132 -0
  202. package/src/substrate/lsp/recovery.ts +55 -0
  203. package/src/substrate/lsp/settings.ts +286 -0
  204. package/src/substrate/lsp/state.ts +46 -0
  205. package/src/substrate/lsp/utils.ts +17 -0
  206. package/src/substrate/tree-sitter/lifecycle.ts +52 -0
  207. package/src/tool/find/execute.ts +118 -0
  208. package/src/{presentation/markdown/pattern.ts → tool/find/markdown.ts} +102 -53
  209. package/src/{use-case/generate-pattern.ts → tool/find/orchestrate.ts} +67 -33
  210. package/src/tool/find/semantic-search.ts +114 -0
  211. package/src/tool/find/tui.ts +39 -0
  212. package/src/tool/graph/callees.ts +87 -0
  213. package/src/tool/graph/calls-md.ts +54 -0
  214. package/src/tool/graph/collect-relation.ts +371 -0
  215. package/src/tool/graph/execute.ts +95 -0
  216. package/src/tool/graph/implementations-md.ts +79 -0
  217. package/src/tool/graph/implementations.ts +76 -0
  218. package/src/tool/graph/markdown-base.ts +243 -0
  219. package/src/tool/graph/orchestrate.ts +285 -0
  220. package/src/tool/graph/references-md.ts +34 -0
  221. package/src/tool/graph/references.ts +81 -0
  222. package/src/tool/graph/tui.ts +120 -0
  223. package/src/tool/graph/types.ts +97 -0
  224. package/src/tool/guidance.ts +96 -49
  225. package/src/tool/health/execute.ts +76 -0
  226. package/src/tool/health/markdown.ts +280 -0
  227. package/src/tool/health/orchestrate.ts +159 -0
  228. package/src/tool/health/sections/diagnostics.ts +182 -0
  229. package/src/tool/health/sections/recovery.ts +89 -0
  230. package/src/tool/health/sections/signals.ts +89 -0
  231. package/src/tool/health/tui.ts +137 -0
  232. package/src/tool/impact/analysis.ts +247 -0
  233. package/src/tool/impact/change-set-impact.ts +151 -0
  234. package/src/tool/impact/execute.ts +98 -0
  235. package/src/tool/impact/file-level-impact.ts +81 -0
  236. package/src/tool/impact/markdown.ts +283 -0
  237. package/src/tool/impact/orchestrate.ts +97 -0
  238. package/src/tool/impact/result.ts +21 -0
  239. package/src/tool/impact/single-impact.ts +89 -0
  240. package/src/tool/impact/tui.ts +39 -0
  241. package/src/tool/impact/types.ts +34 -0
  242. package/src/tool/infra/cross-field.ts +335 -0
  243. package/src/tool/infra/error-results.ts +199 -0
  244. package/src/tool/infra/pipeline.ts +311 -0
  245. package/src/tool/infra/progress.ts +21 -0
  246. package/src/tool/infra/readiness-message.ts +5 -0
  247. package/src/tool/infra/truncate.ts +49 -0
  248. package/src/tool/inspect/execute.ts +76 -0
  249. package/src/tool/inspect/markdown.ts +169 -0
  250. package/src/tool/inspect/orchestrate.ts +156 -0
  251. package/src/tool/inspect/tui.ts +36 -0
  252. package/src/tool/orientation/deps.ts +63 -0
  253. package/src/tool/orientation/execute.ts +50 -0
  254. package/src/tool/orientation/markdown.ts +35 -0
  255. package/src/tool/orientation/mode.ts +88 -0
  256. package/src/tool/orientation/orchestrate.ts +478 -0
  257. package/src/tool/orientation/precise-target.ts +257 -0
  258. package/src/tool/orientation/tui.ts +131 -0
  259. package/src/{refactor/apply-workspace-edit.ts → tool/refactor-apply/apply.ts} +39 -16
  260. package/src/tool/refactor-apply/execute.ts +20 -0
  261. package/src/tool/refactor-apply/markdown.ts +118 -0
  262. package/src/tool/refactor-apply/orchestrate.ts +89 -0
  263. package/src/tool/refactor-apply/tui.ts +51 -0
  264. package/src/tool/refactor-plan/execute.ts +73 -0
  265. package/src/tool/refactor-plan/markdown.ts +118 -0
  266. package/src/tool/refactor-plan/orchestrate.ts +363 -0
  267. package/src/tool/refactor-plan/tui.ts +42 -0
  268. package/src/tool/register.ts +123 -0
  269. package/src/tool/resolve/execute.ts +82 -0
  270. package/src/tool/resolve/markdown.ts +150 -0
  271. package/src/tool/resolve/orchestrate.ts +134 -0
  272. package/src/tool/resolve/tui.ts +40 -0
  273. package/src/tool/schemas.ts +337 -0
  274. package/src/tool/specs.ts +257 -0
  275. package/src/types/details.ts +188 -0
  276. package/src/types/execution.ts +60 -0
  277. package/src/types/index.ts +28 -0
  278. package/src/{intent/types.ts → types/tool-names.ts} +15 -14
  279. package/src/ui/footer.ts +52 -0
  280. package/src/ui/markdown/brief.ts +218 -0
  281. package/src/ui/markdown/gather.ts +177 -0
  282. package/src/{use-case/build-overview.ts → ui/markdown/overview-data.ts} +2 -2
  283. package/src/{presentation → ui}/markdown/overview.ts +2 -2
  284. package/src/ui/markdown/types.ts +80 -0
  285. package/{node_modules/@mrclrchtr/supi-lsp/src/ui/renderer.ts → src/ui/message-renderer.ts} +11 -10
  286. package/src/ui/status-command.ts +260 -0
  287. package/src/ui/status-overlay.ts +500 -0
  288. package/src/ui/tui/common.ts +220 -0
  289. package/src/ui/tui/index.ts +37 -0
  290. package/node_modules/@mrclrchtr/supi-lsp/src/extension.ts +0 -1
  291. package/node_modules/@mrclrchtr/supi-lsp/src/format.ts +0 -373
  292. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/diagnostic-injection.ts +0 -182
  293. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/session-lifecycle.ts +0 -149
  294. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/status-command.ts +0 -38
  295. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/workspace-recovery.ts +0 -92
  296. package/node_modules/@mrclrchtr/supi-lsp/src/lsp.ts +0 -37
  297. package/node_modules/@mrclrchtr/supi-lsp/src/session/lsp-state.ts +0 -93
  298. package/node_modules/@mrclrchtr/supi-lsp/src/session/settings-registration.ts +0 -296
  299. package/node_modules/@mrclrchtr/supi-lsp/src/session/tree-persist.ts +0 -75
  300. package/node_modules/@mrclrchtr/supi-lsp/src/tool/guidance.ts +0 -69
  301. package/node_modules/@mrclrchtr/supi-lsp/src/tool/names.ts +0 -27
  302. package/node_modules/@mrclrchtr/supi-lsp/src/tool/overrides.ts +0 -204
  303. package/node_modules/@mrclrchtr/supi-lsp/src/tool/register-tools.ts +0 -69
  304. package/node_modules/@mrclrchtr/supi-lsp/src/tool/service-actions.ts +0 -399
  305. package/node_modules/@mrclrchtr/supi-lsp/src/tool/tool-specs.ts +0 -248
  306. package/node_modules/@mrclrchtr/supi-lsp/src/ui/ui.ts +0 -360
  307. package/node_modules/@mrclrchtr/supi-lsp/src/workspace-change.ts +0 -40
  308. package/node_modules/@mrclrchtr/supi-tree-sitter/src/extension.ts +0 -1
  309. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/formatting.ts +0 -104
  310. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/guidance.ts +0 -35
  311. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/handlers.ts +0 -196
  312. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/register-tools.ts +0 -107
  313. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/tool-specs.ts +0 -117
  314. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tree-sitter.ts +0 -47
  315. package/src/brief-focused.ts +0 -563
  316. package/src/code-intelligence.ts +0 -70
  317. package/src/pattern-structured.ts +0 -194
  318. package/src/presentation/markdown/affected.ts +0 -170
  319. package/src/presentation/markdown/brief.ts +0 -174
  320. package/src/presentation/markdown/map.ts +0 -54
  321. package/src/presentation/markdown/refactor.ts +0 -27
  322. package/src/presentation/markdown/relations.ts +0 -121
  323. package/src/resolve-target.ts +0 -130
  324. package/src/search-helpers.ts +0 -303
  325. package/src/substrates/types.ts +0 -30
  326. package/src/target-resolution.ts +0 -122
  327. package/src/targeting/resolve-anchored.ts +0 -80
  328. package/src/targeting/resolve-symbol.ts +0 -110
  329. package/src/tool/execute-affected.ts +0 -71
  330. package/src/tool/execute-brief.ts +0 -59
  331. package/src/tool/execute-map.ts +0 -35
  332. package/src/tool/execute-pattern.ts +0 -29
  333. package/src/tool/execute-refactor.ts +0 -101
  334. package/src/tool/execute-relations.ts +0 -79
  335. package/src/tool/register-tools.ts +0 -32
  336. package/src/tool/tool-specs.ts +0 -190
  337. package/src/tool/validation.ts +0 -43
  338. package/src/types.ts +0 -169
  339. package/src/use-case/generate-affected.ts +0 -297
  340. package/src/use-case/generate-map.ts +0 -176
  341. package/src/use-case/generate-relations.ts +0 -438
  342. package/src/use-case/types.ts +0 -43
  343. package/src/workspace/request-context.ts +0 -139
  344. /package/src/{query-params.ts → tool/params.ts} +0 -0
@@ -1,438 +0,0 @@
1
- // Relations orchestration use-case — dispatches by kind (callers/callees/implementations),
2
- // coordinates target resolution and provider access, and returns fully rendered results.
3
- import * as path from "node:path";
4
- import {
5
- renderCalleesResult,
6
- renderCallersResult,
7
- renderImplementationsResult,
8
- } from "../presentation/markdown/relations.ts";
9
- import { resolveTarget } from "../resolve-target.ts";
10
- import { isInProjectPath, uriToFile } from "../search-helpers.ts";
11
- import { isResolvedTargetGroup } from "../semantic-action-helpers.ts";
12
- import type { ResolvedTarget, ResolvedTargetGroup } from "../target-resolution.ts";
13
- import type { CodeIntelResult, SearchDetails } from "../types.ts";
14
- import type { CodeProvider } from "../workspace/request-context.ts";
15
- import { aggregatePerTarget, collectReferences } from "./support/semantic-references.ts";
16
- export interface RelationsInput {
17
- kind: "callers" | "callees" | "implementations";
18
- path?: string;
19
- file?: string;
20
- line?: number;
21
- character?: number;
22
- symbol?: string;
23
- exportedOnly?: boolean;
24
- maxResults?: number;
25
- }
26
- type RelationsResolutionParams = Omit<RelationsInput, "kind">;
27
- export interface RelationsDeps {
28
- cwd: string;
29
- provider: CodeProvider | null;
30
- }
31
- export async function executeRelations(
32
- input: RelationsInput,
33
- deps: RelationsDeps,
34
- ): Promise<CodeIntelResult> {
35
- const { kind: _kind, ...resolutionParams } = input;
36
- switch (input.kind) {
37
- case "callers":
38
- return executeCallers(resolutionParams, deps);
39
- case "callees":
40
- return executeCallees(resolutionParams, deps);
41
- case "implementations":
42
- return executeImplementations(resolutionParams, deps);
43
- }
44
- }
45
- async function executeCallers(
46
- input: RelationsResolutionParams,
47
- deps: RelationsDeps,
48
- ): Promise<CodeIntelResult> {
49
- const semantic = deps.provider;
50
- if (!semantic) {
51
- return {
52
- content:
53
- "**Error:** Caller discovery requires an active code provider (LSP). Enable LSP and retry.",
54
- details: {
55
- type: "search" as const,
56
- data: {
57
- confidence: "unavailable",
58
- scope: null,
59
- candidateCount: 0,
60
- omittedCount: 0,
61
- nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
62
- },
63
- },
64
- };
65
- }
66
- const target = await resolveTarget(input, deps.cwd, semantic);
67
- if (typeof target === "string") {
68
- return {
69
- content: target,
70
- details: {
71
- type: "search" as const,
72
- data: {
73
- confidence: "unavailable",
74
- scope: null,
75
- candidateCount: 0,
76
- omittedCount: 0,
77
- nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
78
- },
79
- },
80
- };
81
- }
82
- if (isResolvedTargetGroup(target)) {
83
- return executeFileLevelCallers(target, input, deps.cwd, semantic);
84
- }
85
- return executeSingleCallers(target, input, deps.cwd, semantic);
86
- }
87
- async function executeSingleCallers(
88
- target: ResolvedTarget,
89
- input: RelationsResolutionParams,
90
- cwd: string,
91
- semantic: CodeProvider,
92
- ): Promise<CodeIntelResult> {
93
- const result = await collectReferences(target, cwd, semantic);
94
- if (result.refs.length > 0) {
95
- const symbolName = target.name ?? "symbol";
96
- const content = renderCallersResult(symbolName, result, cwd, input.maxResults ?? 5);
97
- const details: SearchDetails = {
98
- confidence: result.confidence,
99
- scope: input.path ?? null,
100
- candidateCount: result.refs.length,
101
- omittedCount: result.externalCount,
102
- nextQueries: [
103
- "`code_affected` for impact analysis",
104
- "Use `code_pattern` only when you explicitly want text-search hints",
105
- ],
106
- };
107
- return { content, details: { type: "search" as const, data: details } };
108
- }
109
- if (target.name) {
110
- return {
111
- content: `No references found for \`${target.name}\` (${result.confidence}).`,
112
- details: {
113
- type: "search" as const,
114
- data: {
115
- confidence: result.confidence,
116
- scope: input.path ?? null,
117
- candidateCount: 0,
118
- omittedCount: 0,
119
- nextQueries: ["Use `code_affected` before editing a broadly referenced target"],
120
- },
121
- },
122
- };
123
- }
124
- const relPath = path.relative(cwd, target.file);
125
- return {
126
- content: `No caller data available for ${relPath}:${target.displayLine}:${target.displayCharacter}.`,
127
- details: {
128
- type: "search" as const,
129
- data: {
130
- confidence: "unavailable",
131
- scope: input.path ?? null,
132
- candidateCount: 0,
133
- omittedCount: 0,
134
- nextQueries: ["Enable LSP for semantic caller resolution or use `code_pattern` explicitly"],
135
- },
136
- },
137
- };
138
- }
139
- async function executeFileLevelCallers(
140
- targetGroup: ResolvedTargetGroup,
141
- input: RelationsResolutionParams,
142
- cwd: string,
143
- semantic: CodeProvider,
144
- ): Promise<CodeIntelResult> {
145
- const aggregated = await aggregatePerTarget(targetGroup.targets, (target) =>
146
- collectReferences(target, cwd, semantic),
147
- );
148
- const perTarget = await Promise.all(
149
- targetGroup.targets.map(async (target) => ({
150
- target,
151
- result: await collectReferences(target, cwd, semantic),
152
- })),
153
- );
154
- const withRefs = perTarget.filter((entry) => entry.result.refs.length > 0);
155
- const lines: string[] = [];
156
- lines.push(`# Callers in \`${targetGroup.displayName}\``);
157
- lines.push("");
158
- lines.push(
159
- `**${targetGroup.targets.length} exported target${targetGroup.targets.length !== 1 ? "s" : ""}** | **${aggregated.refs.length} reference${aggregated.refs.length !== 1 ? "s" : ""}** (${aggregated.confidence})`,
160
- );
161
- if (aggregated.externalCount > 0) {
162
- lines.push(
163
- `_+${aggregated.externalCount} external reference${aggregated.externalCount !== 1 ? "s" : ""}_`,
164
- );
165
- }
166
- lines.push("");
167
- for (const entry of withRefs) {
168
- lines.push(`## \`${entry.target.name ?? "symbol"}\``);
169
- const { formatReferenceList } = await import("./support/semantic-references.ts");
170
- formatReferenceList(lines, entry.result.refs, input.maxResults ?? 5, cwd);
171
- lines.push("");
172
- }
173
- if (withRefs.length === 0) {
174
- lines.push("No caller references found for the discovered file-level targets.");
175
- lines.push("");
176
- }
177
- const details: SearchDetails = {
178
- confidence: aggregated.confidence,
179
- scope: input.path ?? null,
180
- candidateCount: aggregated.refs.length,
181
- omittedCount: aggregated.externalCount,
182
- nextQueries: [
183
- "`code_affected` for impact analysis",
184
- "Use `file` + coordinates to drill into one symbol precisely",
185
- ],
186
- };
187
- return {
188
- content: lines.join("\n"),
189
- details: { type: "search" as const, data: details },
190
- };
191
- }
192
- async function executeImplementations(
193
- input: RelationsResolutionParams,
194
- deps: RelationsDeps,
195
- ): Promise<CodeIntelResult> {
196
- const semantic = deps.provider;
197
- if (!semantic) {
198
- return {
199
- content:
200
- "**Error:** Implementation discovery requires an active code provider (LSP). Enable LSP and retry.",
201
- details: {
202
- type: "search" as const,
203
- data: {
204
- confidence: "unavailable",
205
- scope: null,
206
- candidateCount: 0,
207
- omittedCount: 0,
208
- nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
209
- },
210
- },
211
- };
212
- }
213
- const target = await resolveTarget(input, deps.cwd, semantic);
214
- if (typeof target === "string") {
215
- return {
216
- content: target,
217
- details: {
218
- type: "search" as const,
219
- data: {
220
- confidence: "unavailable",
221
- scope: null,
222
- candidateCount: 0,
223
- omittedCount: 0,
224
- nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
225
- },
226
- },
227
- };
228
- }
229
- if (isResolvedTargetGroup(target)) {
230
- return {
231
- content: `**Error:** File-level implementation discovery is not available for \`${path.relative(deps.cwd, target.file)}\`.\n\nProvide \`line\` and \`character\`, or a \`symbol\` for discovery.`,
232
- details: {
233
- type: "search" as const,
234
- data: {
235
- confidence: "unavailable",
236
- scope: input.path ?? null,
237
- candidateCount: 0,
238
- omittedCount: 0,
239
- nextQueries: ["Use `file` + coordinates or `symbol` for implementation lookup"],
240
- },
241
- },
242
- };
243
- }
244
- const relPath = path.relative(deps.cwd, target.file);
245
- const impls = await semantic.implementation(target.file, target.position);
246
- if (impls) {
247
- if (impls.length > 0) {
248
- const content = renderImplementationsResult(impls, deps.cwd, input.maxResults ?? 8);
249
- const { project: projectLocs, external: externalLocs } = partitionImpls(impls, deps.cwd);
250
- const searchDetails: SearchDetails = {
251
- confidence: "semantic",
252
- scope: input.path ?? null,
253
- candidateCount: projectLocs.length,
254
- omittedCount: externalLocs.length,
255
- nextQueries: [
256
- "`code_affected` before changing implementations",
257
- "`code_brief` on containing modules for deeper context",
258
- ],
259
- };
260
- return {
261
- content,
262
- details: { type: "search" as const, data: searchDetails },
263
- };
264
- }
265
- return {
266
- content: target.name
267
- ? `No implementations found for \`${target.name}\`.`
268
- : `No implementations found for ${relPath}:${target.displayLine}:${target.displayCharacter}.`,
269
- details: {
270
- type: "search" as const,
271
- data: {
272
- confidence: "semantic",
273
- scope: input.path ?? null,
274
- candidateCount: 0,
275
- omittedCount: 0,
276
- nextQueries: [
277
- "`code_pattern` only if you explicitly want text-search hints for likely implementations",
278
- ],
279
- },
280
- },
281
- };
282
- }
283
- return {
284
- content: target.name
285
- ? `No implementations found for \`${target.name}\`.`
286
- : `No implementations found for ${relPath}:${target.displayLine}:${target.displayCharacter}.`,
287
- details: {
288
- type: "search" as const,
289
- data: {
290
- confidence: "unavailable",
291
- scope: input.path ?? null,
292
- candidateCount: 0,
293
- omittedCount: 0,
294
- nextQueries: ["Enable LSP for semantic implementation resolution."],
295
- },
296
- },
297
- };
298
- }
299
- function partitionImpls(
300
- locations: Array<{
301
- uri?: string;
302
- targetUri?: string;
303
- range?: { start: { line: number } };
304
- targetRange?: { start: { line: number } };
305
- }>,
306
- cwd: string,
307
- ): { project: typeof locations; external: typeof locations } {
308
- const project: typeof locations = [];
309
- const external: typeof locations = [];
310
- for (const loc of locations) {
311
- const uri = loc.uri ?? loc.targetUri ?? "";
312
- const filePath = uriToFile(uri);
313
- if (filePath && isInProjectPath(filePath, cwd)) {
314
- project.push(loc);
315
- } else {
316
- external.push(loc);
317
- }
318
- }
319
- return { project, external };
320
- }
321
- async function executeCallees(
322
- input: RelationsResolutionParams,
323
- deps: RelationsDeps,
324
- ): Promise<CodeIntelResult> {
325
- const provider = deps.provider;
326
- if (!provider) {
327
- return {
328
- content:
329
- "**Error:** Callee discovery requires an active code provider. Enable LSP and tree-sitter and retry.",
330
- details: {
331
- type: "search" as const,
332
- data: {
333
- confidence: "unavailable",
334
- scope: null,
335
- candidateCount: 0,
336
- omittedCount: 0,
337
- nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
338
- },
339
- },
340
- };
341
- }
342
- const target = await resolveTarget(input, deps.cwd, provider);
343
- if (typeof target === "string") {
344
- return {
345
- content: target,
346
- details: {
347
- type: "search" as const,
348
- data: {
349
- confidence: "unavailable",
350
- scope: null,
351
- candidateCount: 0,
352
- omittedCount: 0,
353
- nextQueries: ["Provide `file`, `line`, `character` or a `symbol` to resolve the target"],
354
- },
355
- },
356
- };
357
- }
358
- if (isResolvedTargetGroup(target)) {
359
- return {
360
- content: `**Error:** File-level callee discovery is not available for \`${path.relative(deps.cwd, target.file)}\`.\n\nProvide \`line\` and \`character\`, or a \`symbol\` for discovery.`,
361
- details: {
362
- type: "search" as const,
363
- data: {
364
- confidence: "unavailable",
365
- scope: input.path ?? null,
366
- candidateCount: 0,
367
- omittedCount: 0,
368
- nextQueries: ["Use `file` + coordinates or `symbol` for callee lookup"],
369
- },
370
- },
371
- };
372
- }
373
- const relPath = path.relative(deps.cwd, target.file);
374
- try {
375
- const result = await provider.calleesAt(relPath, target.displayLine, target.displayCharacter);
376
- if (result.kind !== "success") {
377
- return {
378
- content: `No callee data available for ${relPath}:${target.displayLine}:${target.displayCharacter}.\n\nUse \`tree_sitter_callees\` with \`file\`, \`line\`, and \`character\` for structural drill-down.`,
379
- details: {
380
- type: "search" as const,
381
- data: {
382
- confidence: "unavailable",
383
- scope: null,
384
- candidateCount: 0,
385
- omittedCount: 0,
386
- nextQueries: [
387
- "Use `lsp_hover` with `file`, `line`, and `character` for type-aware analysis on this file",
388
- ],
389
- },
390
- },
391
- };
392
- }
393
- if (result.data.callees.length === 0) {
394
- return {
395
- content: `No callee data available for ${relPath}:${target.displayLine}:${target.displayCharacter}.\n\nUse \`tree_sitter_callees\` with \`file\`, \`line\`, and \`character\` for structural drill-down.`,
396
- details: {
397
- type: "search" as const,
398
- data: {
399
- confidence: "structural",
400
- scope: null,
401
- candidateCount: 0,
402
- omittedCount: 0,
403
- nextQueries: [
404
- "Use `lsp_hover` with `file`, `line`, and `character` for type-aware analysis on this file",
405
- ],
406
- },
407
- },
408
- };
409
- }
410
- const content = renderCalleesResult(result.data, relPath, input.maxResults ?? 8);
411
- const details: SearchDetails = {
412
- confidence: "structural",
413
- scope: null,
414
- candidateCount: result.data.callees.length,
415
- omittedCount: Math.max(0, result.data.callees.length - (input.maxResults ?? 8)),
416
- nextQueries: [
417
- "Use `lsp_hover` with `file`, `line`, and `character` for precise type information on callees",
418
- ],
419
- };
420
- return { content, details: { type: "search" as const, data: details } };
421
- } catch {
422
- return {
423
- content: `No callee data available for ${relPath}:${target.displayLine}:${target.displayCharacter}.\n\nUse \`tree_sitter_callees\` with \`file\`, \`line\`, and \`character\` for structural drill-down.`,
424
- details: {
425
- type: "search" as const,
426
- data: {
427
- confidence: "unavailable",
428
- scope: null,
429
- candidateCount: 0,
430
- omittedCount: 0,
431
- nextQueries: [
432
- "Use `lsp_hover` with `file`, `line`, and `character` for type-aware analysis on this file",
433
- ],
434
- },
435
- },
436
- };
437
- }
438
- }
@@ -1,43 +0,0 @@
1
- // Shared typed data interfaces between use-case and presentation layers.
2
-
3
- import type { ArchitectureModel } from "../model.ts";
4
- import type { BriefDetails } from "../types.ts";
5
- import type { CodeProvider } from "../workspace/request-context.ts";
6
-
7
- // ── Overview use-case ────────────────────────────────────────────────
8
-
9
- export interface OverviewModule {
10
- name: string;
11
- shortName: string;
12
- description: string | null;
13
- isLeaf: boolean;
14
- internalDeps: string[];
15
- }
16
-
17
- export interface OverviewData {
18
- projectName: string | null;
19
- projectDescription: string | null;
20
- modules: OverviewModule[];
21
- omittedModuleCount: number;
22
- gitContextOverview: string | null;
23
- }
24
-
25
- // ── Brief use-case ───────────────────────────────────────────────────
26
-
27
- export type BriefInput =
28
- | { kind: "project" }
29
- | { kind: "path"; path: string }
30
- | { kind: "file"; file: string }
31
- | { kind: "anchored"; file: string; line: number; character: number }
32
- | { kind: "symbol"; symbol: string; path?: string };
33
-
34
- export interface BriefDeps {
35
- model: ArchitectureModel | null;
36
- provider: CodeProvider | null;
37
- cwd: string;
38
- }
39
-
40
- export interface BriefUseCaseResult {
41
- content: string;
42
- details: BriefDetails;
43
- }
@@ -1,139 +0,0 @@
1
- /**
2
- * Central access point for code-intelligence to read shared workspace
3
- * runtime capability state from @mrclrchtr/supi-code-runtime.
4
- *
5
- * Replaces the old local provider registry/wiring layer. The substrate
6
- * packages (supi-lsp, supi-tree-sitter) publish their capabilities into
7
- * the shared runtime via getDefaultWorkspaceRuntime(). This module reads
8
- * that same singleton to provide per-cwd capability state to the
9
- * code_* tool use-cases.
10
- */
11
-
12
- import {
13
- type CodeLocation,
14
- type CodePosition,
15
- type CodeResult,
16
- type CodeSymbol,
17
- getDefaultWorkspaceRuntime,
18
- type SemanticProvider,
19
- type StructuralProvider,
20
- } from "@mrclrchtr/supi-code-runtime/api";
21
- import type { CalleesData, ExportData, ImportData, NodeAtData, OutlineData } from "../types.ts";
22
-
23
- /**
24
- * Unified code analysis provider combining semantic (LSP-backed) and
25
- * structural (tree-sitter-backed) operations.
26
- *
27
- * This is the same shape as the old CodeProvider interface, now backed
28
- * by the shared workspace runtime instead of a local registry.
29
- */
30
- export interface CodeProvider extends SemanticProvider, StructuralProvider {}
31
-
32
- /** Availability state for the code provider in a workspace. */
33
- export type CodeProviderState =
34
- | { kind: "ready"; provider: CodeProvider }
35
- | { kind: "unavailable"; reason: string };
36
-
37
- /**
38
- * Get the code provider state for a workspace cwd from the shared runtime.
39
- *
40
- * Returns `ready` if at least one capability (semantic or structural) is
41
- * available. The provider object delegates to whichever capability is
42
- * present — null / unsupported-language for the missing ones.
43
- *
44
- * Returns `unavailable` if no capabilities are registered.
45
- */
46
- export function getCodeProvider(cwd: string): CodeProviderState {
47
- const runtime = getDefaultWorkspaceRuntime();
48
- const ws = runtime.getWorkspace(cwd);
49
-
50
- const hasSemantic = ws.semantic.state.kind === "ready" && ws.semantic.provider !== null;
51
- const hasStructural = ws.structural.state.kind === "ready" && ws.structural.provider !== null;
52
-
53
- if (!hasSemantic && !hasStructural) {
54
- return {
55
- kind: "unavailable",
56
- reason: "No code provider initialized for this workspace",
57
- };
58
- }
59
-
60
- return {
61
- kind: "ready",
62
- provider: createCompositeProvider(
63
- (hasSemantic ? ws.semantic.provider : null) as SemanticProvider | null,
64
- (hasStructural ? ws.structural.provider : null) as StructuralProvider | null,
65
- ),
66
- };
67
- }
68
-
69
- /**
70
- * Create a single CodeProvider that delegates semantic methods to the
71
- * semantic (LSP) provider and structural methods to the structural
72
- * (tree-sitter) provider.
73
- */
74
- function createCompositeProvider(
75
- semantic: SemanticProvider | null,
76
- structural: StructuralProvider | null,
77
- ): CodeProvider {
78
- return {
79
- // Semantic methods
80
- async references(filePath: string, position: CodePosition): Promise<CodeLocation[] | null> {
81
- return semantic?.references(filePath, position) ?? null;
82
- },
83
- async implementation(filePath: string, position: CodePosition): Promise<CodeLocation[] | null> {
84
- return semantic?.implementation(filePath, position) ?? null;
85
- },
86
- async documentSymbols(filePath: string): Promise<CodeSymbol[] | null> {
87
- return semantic?.documentSymbols(filePath) ?? null;
88
- },
89
- async workspaceSymbols(query: string): Promise<CodeSymbol[] | null> {
90
- return semantic?.workspaceSymbols(query) ?? null;
91
- },
92
-
93
- // Structural methods
94
- async calleesAt(
95
- file: string,
96
- line: number,
97
- character: number,
98
- ): Promise<CodeResult<CalleesData>> {
99
- return (
100
- structural?.calleesAt(file, line, character) ?? {
101
- kind: "unavailable",
102
- message: "Structural analysis not available. Use tree_sitter_callees.",
103
- }
104
- );
105
- },
106
- async exports(file: string): Promise<CodeResult<ExportData[]>> {
107
- return (
108
- structural?.exports(file) ?? {
109
- kind: "unavailable",
110
- message: "Structural analysis not available. Use tree_sitter_exports.",
111
- }
112
- );
113
- },
114
- async outline(file: string): Promise<CodeResult<OutlineData[]>> {
115
- return (
116
- structural?.outline(file) ?? {
117
- kind: "unavailable",
118
- message: "Structural analysis not available. Use tree_sitter_outline.",
119
- }
120
- );
121
- },
122
- async imports(file: string): Promise<CodeResult<ImportData[]>> {
123
- return (
124
- structural?.imports(file) ?? {
125
- kind: "unavailable",
126
- message: "Structural analysis not available. Use tree_sitter_imports.",
127
- }
128
- );
129
- },
130
- async nodeAt(file: string, line: number, character: number): Promise<CodeResult<NodeAtData>> {
131
- return (
132
- structural?.nodeAt(file, line, character) ?? {
133
- kind: "unavailable",
134
- message: "Structural analysis not available. Use tree_sitter_node_at.",
135
- }
136
- );
137
- },
138
- };
139
- }
File without changes