@mrclrchtr/supi-code-intelligence 1.16.0 → 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 (348) 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/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +21 -2
  70. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +1 -0
  71. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +2 -1
  72. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/package.json +1 -1
  73. package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -31
  74. package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +27 -0
  75. package/node_modules/@mrclrchtr/supi-lsp/src/client/client-refresh.ts +5 -0
  76. package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +246 -1
  77. package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +4 -0
  78. package/node_modules/@mrclrchtr/supi-lsp/src/config/capabilities.ts +3 -0
  79. package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +4 -2
  80. package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +102 -0
  81. package/node_modules/@mrclrchtr/supi-lsp/src/config/server-actions.ts +59 -0
  82. package/node_modules/@mrclrchtr/supi-lsp/src/config/server-config.ts +4 -0
  83. package/node_modules/@mrclrchtr/supi-lsp/src/index.ts +11 -0
  84. package/node_modules/@mrclrchtr/supi-lsp/src/manager/capability-index.ts +1 -1
  85. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-project-info.ts +2 -1
  86. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +115 -26
  87. package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +177 -134
  88. package/node_modules/@mrclrchtr/supi-lsp/src/provider/refactor-planning.ts +214 -0
  89. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +320 -0
  90. package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +26 -5
  91. package/node_modules/@mrclrchtr/supi-lsp/src/session/service-registry.ts +81 -4
  92. package/node_modules/@mrclrchtr/supi-lsp/src/summary.ts +2 -0
  93. package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +18 -37
  94. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  95. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  96. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  97. 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
  98. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  99. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  100. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  101. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  102. 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
  103. 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
  104. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  105. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  106. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  107. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +3 -2
  108. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/api.ts +7 -0
  109. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +56 -2
  110. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/evidence-badge.ts +40 -0
  111. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/index.ts +5 -0
  112. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/types.ts +76 -3
  113. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/workspace/runtime.ts +37 -2
  114. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +6 -1
  115. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/abort-utils.ts +31 -0
  116. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +8 -0
  117. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +10 -4
  118. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config.ts +1 -0
  119. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/footer-registry.ts +1 -1
  120. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +6 -0
  121. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/model-selection.ts +134 -0
  122. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +9 -2
  123. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +109 -4
  124. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +5 -1
  125. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/spinner-frames.ts +11 -0
  126. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/status-spinner.ts +68 -0
  127. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/LICENSE +21 -0
  128. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/README.md +265 -0
  129. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.cjs +4661 -0
  130. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.cjs.map +7 -0
  131. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.js +4605 -0
  132. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.js.map +7 -0
  133. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.wasm +0 -0
  134. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/debug/web-tree-sitter.wasm.map +57 -0
  135. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/package.json +100 -0
  136. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.cjs +4063 -0
  137. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.cjs.map +7 -0
  138. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.cts +1025 -0
  139. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.cts.map +58 -0
  140. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.ts +1025 -0
  141. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.d.ts.map +58 -0
  142. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.js +4007 -0
  143. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.js.map +7 -0
  144. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.wasm +0 -0
  145. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/web-tree-sitter/web-tree-sitter.wasm.map +55 -0
  146. package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +6 -12
  147. package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +29 -0
  148. package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +28 -0
  149. package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +5 -0
  150. package/node_modules/@mrclrchtr/supi-tree-sitter/src/provider/tree-sitter-provider.ts +14 -2
  151. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/runtime-controller.ts +157 -0
  152. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +8 -1
  153. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +86 -0
  154. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +35 -16
  155. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/structure.ts +1 -0
  156. package/node_modules/@mrclrchtr/supi-tree-sitter/src/types.ts +10 -0
  157. package/package.json +14 -9
  158. package/src/{model.ts → analysis/architecture/discovery.ts} +15 -72
  159. package/src/analysis/architecture/model.ts +76 -0
  160. package/src/analysis/brief/directory.ts +324 -0
  161. package/src/analysis/brief/enrich.ts +157 -0
  162. package/src/analysis/brief/file.ts +84 -0
  163. package/src/analysis/brief/inventory.ts +177 -0
  164. package/src/analysis/brief/main.ts +176 -0
  165. package/src/analysis/brief/models.ts +75 -0
  166. package/src/{brief.ts → analysis/brief/public-brief.ts} +21 -26
  167. package/src/analysis/brief/summarize.ts +208 -0
  168. package/src/analysis/brief/types.ts +27 -0
  169. package/src/{use-case/generate-brief.ts → analysis/brief/use-case.ts} +67 -144
  170. package/src/analysis/coverage/coverage-warnings.ts +224 -0
  171. package/src/analysis/evidence.ts +91 -0
  172. package/src/{semantic-action-helpers.ts → analysis/helpers.ts} +4 -4
  173. package/src/analysis/provider.ts +186 -0
  174. package/src/analysis/read-next.ts +126 -0
  175. package/src/analysis/readiness.ts +73 -0
  176. package/src/{refactor → analysis/refactor}/safety.ts +1 -1
  177. package/src/{use-case/support/semantic-references.ts → analysis/references/semantic-refs.ts} +58 -26
  178. package/src/analysis/search/pattern.ts +345 -0
  179. package/src/analysis/search/ripgrep.ts +473 -0
  180. package/src/{git-context.ts → analysis/signals/git.ts} +20 -7
  181. package/src/{prioritization-signals.ts → analysis/signals/project.ts} +33 -19
  182. package/src/analysis/target/anchored.ts +349 -0
  183. package/src/analysis/target/bridge.ts +152 -0
  184. package/src/analysis/target/file-resolution.ts +125 -0
  185. package/src/{targeting/resolve-file.ts → analysis/target/file.ts} +40 -20
  186. package/src/{planner → analysis/target}/planner.ts +30 -20
  187. package/src/{targeting → analysis/target}/query.ts +17 -3
  188. package/src/analysis/target/resolve-common.ts +115 -0
  189. package/src/analysis/target/service.ts +229 -0
  190. package/src/analysis/target/symbol.ts +196 -0
  191. package/src/{targeting → analysis/target}/types.ts +17 -1
  192. package/src/analysis/tests/likely-tests.ts +174 -0
  193. package/src/analysis/tests/test-discovery.ts +540 -0
  194. package/src/analysis/tests/vitest.ts +87 -0
  195. package/src/api.ts +34 -41
  196. package/src/app/app.ts +125 -0
  197. package/src/app/manager.ts +65 -0
  198. package/src/extension.ts +132 -1
  199. package/src/index.ts +1 -57
  200. package/src/session/refactor-plans.ts +82 -0
  201. package/src/session/session.ts +300 -0
  202. package/src/session/target-store.ts +293 -0
  203. package/src/substrate/lsp/diagnostic-injection.ts +218 -0
  204. package/src/substrate/lsp/lifecycle.ts +66 -0
  205. package/src/substrate/lsp/overrides.ts +132 -0
  206. package/src/substrate/lsp/recovery.ts +55 -0
  207. package/src/substrate/lsp/settings.ts +286 -0
  208. package/src/substrate/lsp/state.ts +46 -0
  209. package/src/substrate/lsp/utils.ts +17 -0
  210. package/src/substrate/tree-sitter/lifecycle.ts +52 -0
  211. package/src/tool/find/execute.ts +118 -0
  212. package/src/{presentation/markdown/pattern.ts → tool/find/markdown.ts} +102 -53
  213. package/src/{use-case/generate-pattern.ts → tool/find/orchestrate.ts} +67 -33
  214. package/src/tool/find/semantic-search.ts +114 -0
  215. package/src/tool/find/tui.ts +39 -0
  216. package/src/tool/graph/callees.ts +87 -0
  217. package/src/tool/graph/calls-md.ts +54 -0
  218. package/src/tool/graph/collect-relation.ts +371 -0
  219. package/src/tool/graph/execute.ts +95 -0
  220. package/src/tool/graph/implementations-md.ts +79 -0
  221. package/src/tool/graph/implementations.ts +76 -0
  222. package/src/tool/graph/markdown-base.ts +243 -0
  223. package/src/tool/graph/orchestrate.ts +285 -0
  224. package/src/tool/graph/references-md.ts +34 -0
  225. package/src/tool/graph/references.ts +81 -0
  226. package/src/tool/graph/tui.ts +120 -0
  227. package/src/tool/graph/types.ts +97 -0
  228. package/src/tool/guidance.ts +96 -49
  229. package/src/tool/health/execute.ts +76 -0
  230. package/src/tool/health/markdown.ts +280 -0
  231. package/src/tool/health/orchestrate.ts +159 -0
  232. package/src/tool/health/sections/diagnostics.ts +182 -0
  233. package/src/tool/health/sections/recovery.ts +89 -0
  234. package/src/tool/health/sections/signals.ts +89 -0
  235. package/src/tool/health/tui.ts +137 -0
  236. package/src/tool/impact/analysis.ts +247 -0
  237. package/src/tool/impact/change-set-impact.ts +151 -0
  238. package/src/tool/impact/execute.ts +98 -0
  239. package/src/tool/impact/file-level-impact.ts +81 -0
  240. package/src/tool/impact/markdown.ts +283 -0
  241. package/src/tool/impact/orchestrate.ts +97 -0
  242. package/src/tool/impact/result.ts +21 -0
  243. package/src/tool/impact/single-impact.ts +89 -0
  244. package/src/tool/impact/tui.ts +39 -0
  245. package/src/tool/impact/types.ts +34 -0
  246. package/src/tool/infra/cross-field.ts +335 -0
  247. package/src/tool/infra/error-results.ts +199 -0
  248. package/src/tool/infra/pipeline.ts +311 -0
  249. package/src/tool/infra/progress.ts +21 -0
  250. package/src/tool/infra/readiness-message.ts +5 -0
  251. package/src/tool/infra/truncate.ts +49 -0
  252. package/src/tool/inspect/execute.ts +76 -0
  253. package/src/tool/inspect/markdown.ts +169 -0
  254. package/src/tool/inspect/orchestrate.ts +156 -0
  255. package/src/tool/inspect/tui.ts +36 -0
  256. package/src/tool/orientation/deps.ts +63 -0
  257. package/src/tool/orientation/execute.ts +50 -0
  258. package/src/tool/orientation/markdown.ts +35 -0
  259. package/src/tool/orientation/mode.ts +88 -0
  260. package/src/tool/orientation/orchestrate.ts +478 -0
  261. package/src/tool/orientation/precise-target.ts +257 -0
  262. package/src/tool/orientation/tui.ts +131 -0
  263. package/src/{refactor/apply-workspace-edit.ts → tool/refactor-apply/apply.ts} +39 -16
  264. package/src/tool/refactor-apply/execute.ts +20 -0
  265. package/src/tool/refactor-apply/markdown.ts +118 -0
  266. package/src/tool/refactor-apply/orchestrate.ts +89 -0
  267. package/src/tool/refactor-apply/tui.ts +51 -0
  268. package/src/tool/refactor-plan/execute.ts +73 -0
  269. package/src/tool/refactor-plan/markdown.ts +118 -0
  270. package/src/tool/refactor-plan/orchestrate.ts +363 -0
  271. package/src/tool/refactor-plan/tui.ts +42 -0
  272. package/src/tool/register.ts +123 -0
  273. package/src/tool/resolve/execute.ts +82 -0
  274. package/src/tool/resolve/markdown.ts +150 -0
  275. package/src/tool/resolve/orchestrate.ts +134 -0
  276. package/src/tool/resolve/tui.ts +40 -0
  277. package/src/tool/schemas.ts +337 -0
  278. package/src/tool/specs.ts +257 -0
  279. package/src/types/details.ts +188 -0
  280. package/src/types/execution.ts +60 -0
  281. package/src/types/index.ts +28 -0
  282. package/src/{intent/types.ts → types/tool-names.ts} +15 -14
  283. package/src/ui/footer.ts +52 -0
  284. package/src/ui/markdown/brief.ts +218 -0
  285. package/src/ui/markdown/gather.ts +177 -0
  286. package/src/{use-case/build-overview.ts → ui/markdown/overview-data.ts} +2 -2
  287. package/src/{presentation → ui}/markdown/overview.ts +2 -2
  288. package/src/ui/markdown/types.ts +80 -0
  289. package/{node_modules/@mrclrchtr/supi-lsp/src/ui/renderer.ts → src/ui/message-renderer.ts} +11 -10
  290. package/src/ui/status-command.ts +260 -0
  291. package/src/ui/status-overlay.ts +500 -0
  292. package/src/ui/tui/common.ts +220 -0
  293. package/src/ui/tui/index.ts +37 -0
  294. package/node_modules/@mrclrchtr/supi-lsp/src/extension.ts +0 -1
  295. package/node_modules/@mrclrchtr/supi-lsp/src/format.ts +0 -373
  296. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/diagnostic-injection.ts +0 -182
  297. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/session-lifecycle.ts +0 -149
  298. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/status-command.ts +0 -38
  299. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/workspace-recovery.ts +0 -92
  300. package/node_modules/@mrclrchtr/supi-lsp/src/lsp.ts +0 -37
  301. package/node_modules/@mrclrchtr/supi-lsp/src/session/lsp-state.ts +0 -93
  302. package/node_modules/@mrclrchtr/supi-lsp/src/session/settings-registration.ts +0 -296
  303. package/node_modules/@mrclrchtr/supi-lsp/src/session/tree-persist.ts +0 -75
  304. package/node_modules/@mrclrchtr/supi-lsp/src/tool/guidance.ts +0 -69
  305. package/node_modules/@mrclrchtr/supi-lsp/src/tool/names.ts +0 -27
  306. package/node_modules/@mrclrchtr/supi-lsp/src/tool/overrides.ts +0 -204
  307. package/node_modules/@mrclrchtr/supi-lsp/src/tool/register-tools.ts +0 -69
  308. package/node_modules/@mrclrchtr/supi-lsp/src/tool/service-actions.ts +0 -399
  309. package/node_modules/@mrclrchtr/supi-lsp/src/tool/tool-specs.ts +0 -248
  310. package/node_modules/@mrclrchtr/supi-lsp/src/ui/ui.ts +0 -360
  311. package/node_modules/@mrclrchtr/supi-lsp/src/workspace-change.ts +0 -40
  312. package/node_modules/@mrclrchtr/supi-tree-sitter/src/extension.ts +0 -1
  313. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/formatting.ts +0 -104
  314. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/guidance.ts +0 -35
  315. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/handlers.ts +0 -196
  316. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/register-tools.ts +0 -107
  317. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/tool-specs.ts +0 -117
  318. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tree-sitter.ts +0 -47
  319. package/src/brief-focused.ts +0 -563
  320. package/src/code-intelligence.ts +0 -70
  321. package/src/pattern-structured.ts +0 -194
  322. package/src/presentation/markdown/affected.ts +0 -170
  323. package/src/presentation/markdown/brief.ts +0 -174
  324. package/src/presentation/markdown/map.ts +0 -54
  325. package/src/presentation/markdown/refactor.ts +0 -27
  326. package/src/presentation/markdown/relations.ts +0 -121
  327. package/src/resolve-target.ts +0 -130
  328. package/src/search-helpers.ts +0 -303
  329. package/src/substrates/types.ts +0 -30
  330. package/src/target-resolution.ts +0 -122
  331. package/src/targeting/resolve-anchored.ts +0 -80
  332. package/src/targeting/resolve-symbol.ts +0 -110
  333. package/src/tool/execute-affected.ts +0 -71
  334. package/src/tool/execute-brief.ts +0 -59
  335. package/src/tool/execute-map.ts +0 -35
  336. package/src/tool/execute-pattern.ts +0 -29
  337. package/src/tool/execute-refactor.ts +0 -101
  338. package/src/tool/execute-relations.ts +0 -79
  339. package/src/tool/register-tools.ts +0 -32
  340. package/src/tool/tool-specs.ts +0 -190
  341. package/src/tool/validation.ts +0 -43
  342. package/src/types.ts +0 -169
  343. package/src/use-case/generate-affected.ts +0 -297
  344. package/src/use-case/generate-map.ts +0 -176
  345. package/src/use-case/generate-relations.ts +0 -438
  346. package/src/use-case/types.ts +0 -43
  347. package/src/workspace/request-context.ts +0 -139
  348. /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