@mrclrchtr/supi-code-intelligence 1.6.0 → 1.8.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 (310) hide show
  1. package/README.md +53 -24
  2. package/node_modules/@mrclrchtr/supi-core/package.json +18 -3
  3. package/node_modules/@mrclrchtr/supi-core/src/api.ts +27 -82
  4. package/node_modules/@mrclrchtr/supi-core/src/config/config.ts +1 -1
  5. package/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
  6. package/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
  7. package/node_modules/@mrclrchtr/supi-core/src/index.ts +27 -82
  8. package/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
  9. package/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
  10. package/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
  11. package/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
  12. package/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
  13. package/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
  14. package/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
  15. package/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
  16. package/node_modules/@mrclrchtr/supi-lsp/README.md +13 -8
  17. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +18 -3
  18. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/api.ts +27 -82
  19. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/config.ts +1 -1
  20. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
  21. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
  22. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/index.ts +27 -82
  23. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
  24. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
  25. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
  26. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
  27. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
  28. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
  29. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
  30. package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
  31. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/License.txt +11 -0
  32. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/README.md +69 -0
  33. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
  34. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/browser.js +7 -0
  35. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  36. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
  37. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
  38. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
  39. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  40. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
  41. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  42. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
  43. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
  44. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/connection.js +1214 -0
  45. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  46. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
  47. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  48. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
  49. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  50. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
  51. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  52. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
  53. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
  54. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
  55. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  56. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
  57. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  58. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
  59. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  60. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
  61. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  62. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
  63. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  64. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
  65. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  66. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
  67. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  68. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
  69. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
  70. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
  71. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
  72. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
  73. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/node.cmd +5 -0
  74. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/node.d.ts +6 -0
  75. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/node.js +7 -0
  76. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/package.json +45 -0
  77. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
  78. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
  79. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/License.txt +11 -0
  80. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/README.md +16 -0
  81. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/browser.d.ts +6 -0
  82. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/browser.js +7 -0
  83. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +4 -0
  84. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/browser/main.js +28 -0
  85. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +58 -0
  86. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/api.js +77 -0
  87. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +187 -0
  88. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/connection.js +15 -0
  89. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +51 -0
  90. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/messages.js +44 -0
  91. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +1 -0
  92. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +43 -0
  93. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +86 -0
  94. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +42 -0
  95. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +66 -0
  96. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +32 -0
  97. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +35 -0
  98. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +24 -0
  99. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +3252 -0
  100. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +37 -0
  101. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +22 -0
  102. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +341 -0
  103. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +74 -0
  104. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +306 -0
  105. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +101 -0
  106. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +109 -0
  107. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +30 -0
  108. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +38 -0
  109. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +21 -0
  110. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +110 -0
  111. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +43 -0
  112. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +57 -0
  113. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +22 -0
  114. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +86 -0
  115. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +30 -0
  116. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +943 -0
  117. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +52 -0
  118. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +19 -0
  119. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +106 -0
  120. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +68 -0
  121. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +400 -0
  122. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +214 -0
  123. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +107 -0
  124. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +37 -0
  125. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +41 -0
  126. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +20 -0
  127. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +223 -0
  128. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +57 -0
  129. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +72 -0
  130. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +22 -0
  131. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +38 -0
  132. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +21 -0
  133. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +83 -0
  134. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +42 -0
  135. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +74 -0
  136. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +27 -0
  137. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +9 -0
  138. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +46 -0
  139. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +6 -0
  140. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/node/main.js +28 -0
  141. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/metaModel.schema.json +783 -0
  142. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node.cmd +5 -0
  143. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node.d.ts +6 -0
  144. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node.js +7 -0
  145. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/License.txt +11 -0
  146. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/README.md +69 -0
  147. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
  148. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/browser.js +7 -0
  149. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
  150. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
  151. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
  152. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
  153. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
  154. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
  155. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
  156. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
  157. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
  158. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/connection.js +1212 -0
  159. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
  160. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
  161. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
  162. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
  163. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
  164. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
  165. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
  166. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
  167. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
  168. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
  169. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
  170. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
  171. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
  172. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
  173. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
  174. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
  175. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
  176. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
  177. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
  178. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
  179. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
  180. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
  181. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
  182. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
  183. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
  184. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
  185. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
  186. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
  187. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.cmd +5 -0
  188. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.d.ts +6 -0
  189. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/node.js +7 -0
  190. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/package.json +45 -0
  191. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
  192. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
  193. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/package.json +45 -0
  194. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +31 -0
  195. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/License.txt +11 -0
  196. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/README.md +17 -0
  197. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +3139 -0
  198. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.js +2222 -0
  199. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/package.json +3 -0
  200. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +3139 -0
  201. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.js +2272 -0
  202. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/package.json +38 -0
  203. package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/thirdpartynotices.txt +16 -0
  204. package/node_modules/@mrclrchtr/supi-lsp/package.json +9 -3
  205. package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +8 -5
  206. package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +79 -190
  207. package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +1 -1
  208. package/node_modules/@mrclrchtr/supi-lsp/src/config/server-config.ts +38 -0
  209. package/node_modules/@mrclrchtr/supi-lsp/src/config/types.ts +61 -387
  210. package/node_modules/@mrclrchtr/supi-lsp/src/format.ts +16 -8
  211. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/diagnostic-injection.ts +182 -0
  212. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/session-lifecycle.ts +139 -0
  213. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/status-command.ts +38 -0
  214. package/node_modules/@mrclrchtr/supi-lsp/src/handlers/workspace-recovery.ts +92 -0
  215. package/node_modules/@mrclrchtr/supi-lsp/src/lsp.ts +15 -413
  216. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-helpers.ts +1 -1
  217. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-project-info.ts +1 -1
  218. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +1 -1
  219. package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +1 -1
  220. package/node_modules/@mrclrchtr/supi-lsp/src/session/lsp-state.ts +1 -1
  221. package/node_modules/@mrclrchtr/supi-lsp/src/session/scanner.ts +1 -1
  222. package/node_modules/@mrclrchtr/supi-lsp/src/session/service-registry.ts +1 -1
  223. package/node_modules/@mrclrchtr/supi-lsp/src/session/settings-registration.ts +1 -1
  224. package/node_modules/@mrclrchtr/supi-lsp/src/tool/guidance.ts +6 -15
  225. package/node_modules/@mrclrchtr/supi-lsp/src/tool/names.ts +12 -4
  226. package/node_modules/@mrclrchtr/supi-lsp/src/tool/register-tools.ts +2 -3
  227. package/node_modules/@mrclrchtr/supi-lsp/src/tool/service-actions.ts +141 -0
  228. package/node_modules/@mrclrchtr/supi-lsp/src/tool/tool-specs.ts +93 -93
  229. package/node_modules/@mrclrchtr/supi-lsp/src/utils.ts +1 -1
  230. package/node_modules/@mrclrchtr/supi-lsp/src/workspace-change.ts +40 -0
  231. package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +26 -15
  232. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +18 -3
  233. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/api.ts +27 -82
  234. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config.ts +1 -1
  235. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config.ts +11 -0
  236. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/context.ts +16 -0
  237. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/index.ts +27 -82
  238. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/path.ts +2 -0
  239. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/project.ts +15 -0
  240. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/session.ts +4 -0
  241. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -0
  242. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings.ts +9 -0
  243. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/substrate-types.ts +11 -0
  244. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +116 -0
  245. package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/types.ts +2 -0
  246. package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +2 -2
  247. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/runtime.ts +1 -1
  248. package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/service-registry.ts +1 -1
  249. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/guidance.ts +29 -25
  250. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/handlers.ts +196 -0
  251. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/register-tools.ts +107 -0
  252. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/tool-specs.ts +117 -0
  253. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tree-sitter.ts +4 -300
  254. package/package.json +4 -4
  255. package/src/api.ts +16 -0
  256. package/src/architecture.ts +1 -1
  257. package/src/brief-focused.ts +5 -5
  258. package/src/brief.ts +11 -55
  259. package/src/code-intelligence.ts +12 -77
  260. package/src/index.ts +16 -0
  261. package/src/pattern-structured.ts +27 -27
  262. package/src/presentation/markdown/affected.ts +170 -0
  263. package/src/presentation/markdown/brief.ts +174 -0
  264. package/src/presentation/markdown/map.ts +54 -0
  265. package/src/presentation/markdown/overview.ts +59 -0
  266. package/src/presentation/markdown/pattern.ts +239 -0
  267. package/src/presentation/markdown/relations.ts +121 -0
  268. package/src/prioritization-signals.ts +13 -26
  269. package/src/query-params.ts +15 -0
  270. package/src/resolve-target.ts +60 -42
  271. package/src/search-helpers.ts +19 -6
  272. package/src/substrates/lsp-adapter.ts +197 -0
  273. package/src/substrates/tree-sitter-adapter.ts +173 -0
  274. package/src/substrates/types.ts +113 -0
  275. package/src/target-resolution.ts +37 -493
  276. package/src/targeting/query.ts +60 -0
  277. package/src/targeting/resolve-anchored.ts +80 -0
  278. package/src/targeting/resolve-file.ts +197 -0
  279. package/src/targeting/resolve-symbol.ts +110 -0
  280. package/src/targeting/types.ts +111 -0
  281. package/src/tool/execute-affected.ts +25 -0
  282. package/src/tool/execute-brief.ts +51 -0
  283. package/src/tool/execute-map.ts +35 -0
  284. package/src/tool/execute-pattern.ts +28 -0
  285. package/src/tool/execute-relations.ts +40 -0
  286. package/src/tool/guidance.ts +52 -12
  287. package/src/tool/register-tools.ts +32 -0
  288. package/src/tool/tool-specs.ts +165 -0
  289. package/src/tool/validation.ts +43 -0
  290. package/src/types.ts +10 -0
  291. package/src/use-case/build-overview.ts +36 -0
  292. package/src/use-case/generate-affected.ts +279 -0
  293. package/src/use-case/generate-brief.ts +324 -0
  294. package/src/use-case/generate-map.ts +176 -0
  295. package/src/use-case/generate-pattern.ts +270 -0
  296. package/src/use-case/generate-relations.ts +392 -0
  297. package/src/use-case/support/semantic-references.ts +114 -0
  298. package/src/use-case/types.ts +43 -0
  299. package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/action-specs.ts +0 -92
  300. package/src/actions/affected-action.ts +0 -439
  301. package/src/actions/brief-action.ts +0 -241
  302. package/src/actions/callees-action.ts +0 -155
  303. package/src/actions/callers-action.ts +0 -282
  304. package/src/actions/implementations-action.ts +0 -208
  305. package/src/actions/index-action.ts +0 -187
  306. package/src/actions/pattern-action.ts +0 -392
  307. package/src/providers/semantic-provider.ts +0 -34
  308. package/src/providers/structural-provider.ts +0 -26
  309. package/src/tool/action-specs.ts +0 -66
  310. package/src/tool-actions.ts +0 -100
@@ -1,17 +1,20 @@
1
- // Target resolution — resolve symbol references to concrete file positions
2
- // for semantic actions (callers, callees, implementations, affected).
3
- // biome-ignore-all lint/nursery/noExcessiveLinesPerFile: anchored, symbol, and file-surface target resolution intentionally live together to share resolution helpers
1
+ /**
2
+ * Target resolution facade that delegates to the structured targeting pipeline
3
+ * while preserving backward-compatible types and exports for existing consumers.
4
+ *
5
+ * New code should import from `./targeting/` directly.
6
+ */
4
7
 
5
- import * as fs from "node:fs";
6
- import * as path from "node:path";
7
- import { isWithinOrEqual } from "@mrclrchtr/supi-core/api";
8
- import { type Position, type SessionLspService, toLspPosition } from "@mrclrchtr/supi-lsp/api";
9
- import { getSemanticService, getSemanticServiceState } from "./providers/semantic-provider.ts";
10
- import { withStructuralSession } from "./providers/structural-provider.ts";
11
- import { escapeRegex, normalizePath } from "./search-helpers.ts";
12
- import { highestConfidence } from "./semantic-action-helpers.ts";
8
+ import { type Position, toLspPosition } from "@mrclrchtr/supi-lsp/api";
9
+ import { normalizePath } from "./search-helpers.ts";
10
+ import type { SemanticSubstrate, StructuralSubstrate } from "./substrates/types.ts";
11
+ import { resolveAnchoredTarget as resolveAnchored } from "./targeting/resolve-anchored.ts";
12
+ import { resolveFileTargetGroup as resolveFile } from "./targeting/resolve-file.ts";
13
+ import { resolveSymbolTarget as resolveSymbol } from "./targeting/resolve-symbol.ts";
13
14
  import type { ConfidenceMode, DisambiguationCandidate } from "./types.ts";
14
15
 
16
+ // ── Re-exported legacy types ──────────────────────────────────────────
17
+
15
18
  export interface ResolvedTarget {
16
19
  file: string;
17
20
  /** 0-based position for LSP API */
@@ -46,8 +49,11 @@ export function toZeroBased(line: number, character: number): Position {
46
49
  return toLspPosition(line, character);
47
50
  }
48
51
 
52
+ // ── Anchored resolver ─────────────────────────────────────────────────
53
+
49
54
  /**
50
55
  * Resolve a target from anchored coordinates (file + line + character).
56
+ * Delegates to the new targeting pipeline after normalizing the file path.
51
57
  */
52
58
  export function resolveAnchoredTarget(
53
59
  file: string,
@@ -56,523 +62,61 @@ export function resolveAnchoredTarget(
56
62
  cwd: string,
57
63
  ): TargetResolutionResult {
58
64
  const resolvedFile = normalizePath(file, cwd);
65
+ const outcome = resolveAnchored(resolvedFile, line, character);
59
66
 
60
- if (!fs.existsSync(resolvedFile)) {
61
- return { kind: "error", message: `File not found: \`${file}\`` };
62
- }
63
-
64
- if (isBinaryFile(resolvedFile)) {
67
+ if (outcome.kind === "resolved") {
65
68
  return {
66
- kind: "error",
67
- message: `File type not supported for semantic analysis: \`${file}\`. Try \`code_intel pattern\` for text search.`,
69
+ kind: "resolved",
70
+ target: outcome.target as ResolvedTarget,
68
71
  };
69
72
  }
70
73
 
71
- const position = toZeroBased(line, character);
72
-
73
- return {
74
- kind: "resolved",
75
- target: {
76
- file: resolvedFile,
77
- position,
78
- displayLine: line,
79
- displayCharacter: character,
80
- name: null,
81
- kind: null,
82
- confidence: "semantic",
83
- },
84
- };
74
+ return outcome as TargetResolutionResult;
85
75
  }
86
76
 
77
+ // ── File-level target group ───────────────────────────────────────────
78
+
87
79
  /**
88
80
  * Resolve a file-only request into a group of actionable targets.
89
- * Prefers LSP document symbols when available and falls back to Tree-sitter export discovery.
81
+ * Delegates to the new targeting pipeline with optional structural substrate.
90
82
  */
91
83
  export async function resolveFileTargetGroup(
92
84
  file: string,
93
85
  cwd: string,
86
+ structural?: StructuralSubstrate,
94
87
  ): Promise<{ kind: "resolved"; group: ResolvedTargetGroup } | { kind: "error"; message: string }> {
95
- const resolvedFile = normalizePath(file, cwd);
96
-
97
- if (!fs.existsSync(resolvedFile)) {
98
- return { kind: "error", message: `File not found: \`${file}\`` };
99
- }
100
-
101
- if (isBinaryFile(resolvedFile)) {
102
- return {
103
- kind: "error",
104
- message: `File type not supported for semantic analysis: \`${file}\`. Try \`code_intel pattern\` for text search.`,
105
- };
106
- }
107
-
108
- const relPath = path.relative(cwd, resolvedFile);
109
- const structuralTargets = await resolveFileTargetsViaTreeSitter(relPath, resolvedFile, cwd);
110
- const lspTargets = await resolveFileTargetsViaLsp(resolvedFile, cwd, structuralTargets);
111
- const targets = lspTargets ?? structuralTargets;
112
-
113
- if (!targets || targets.length === 0) {
114
- return {
115
- kind: "error",
116
- message:
117
- `**Error:** File-level semantic exploration is not available for \`${file}\`. ` +
118
- "Provide `line` and `character`, or a `symbol` for discovery.",
119
- };
120
- }
121
-
88
+ const outcome = await resolveFile(file, cwd, { structural });
89
+ if (outcome.kind === "error") return outcome;
122
90
  return {
123
91
  kind: "resolved",
124
- group: {
125
- file: resolvedFile,
126
- displayName: relPath,
127
- targets,
128
- confidence: highestConfidence(targets.map((target) => target.confidence)),
129
- },
92
+ group: outcome.group as ResolvedTargetGroup,
130
93
  };
131
94
  }
132
95
 
96
+ // ── Symbol resolver ───────────────────────────────────────────────────
97
+
133
98
  /**
134
99
  * Resolve a target from symbol discovery — finds matching declarations.
135
- * Uses LSP workspace symbols when available, falls back to Tree-sitter/text search.
100
+ * Symbol discovery is semantic-only; it does not fall back to text search.
136
101
  */
137
102
  export async function resolveSymbolTarget(
138
103
  symbol: string,
139
104
  cwd: string,
105
+ semantic: SemanticSubstrate,
140
106
  options?: {
141
107
  path?: string;
142
108
  kind?: string;
143
109
  exportedOnly?: boolean;
144
110
  },
145
111
  ): Promise<TargetResolutionResult> {
146
- const lspState = await getSemanticServiceState(cwd, { waitForReady: true });
147
-
148
- if (lspState.kind === "ready") {
149
- return resolveSymbolViaLsp(symbol, cwd, lspState.service, options);
150
- }
151
-
152
- // Structural fallback via text search
153
- return resolveSymbolViaSearch(symbol, cwd, options);
154
- }
155
-
156
- async function resolveSymbolViaLsp(
157
- symbol: string,
158
- cwd: string,
159
- lsp: SessionLspService,
160
- options?: { path?: string; kind?: string; exportedOnly?: boolean },
161
- ): Promise<TargetResolutionResult> {
162
- const results = await lsp.workspaceSymbol(symbol);
163
- if (!results || results.length === 0) {
164
- return { kind: "error", message: `Symbol not found: \`${symbol}\`` };
165
- }
166
-
167
- // Filter by path scope
168
- const scopePath = options?.path ? normalizePath(options.path, cwd) : null;
169
- let candidates = results.filter((s) => {
170
- if (!("location" in s) || !s.location) return false;
171
- const uri = s.location.uri;
172
- const filePath = uri.startsWith("file://") ? decodeURIComponent(uri.slice(7)) : uri;
173
- if (scopePath && !isWithinOrEqual(scopePath, filePath)) return false;
174
- return true;
175
- });
176
-
177
- // Filter by kind
178
- if (options?.kind) {
179
- const kindLower = options.kind.toLowerCase();
180
- candidates = candidates.filter((s) => {
181
- const symbolKind = symbolKindName(s.kind);
182
- return symbolKind.toLowerCase().includes(kindLower);
183
- });
184
- }
185
-
186
- // Filter to exported symbols only (heuristic: non-local SymbolKinds)
187
- if (options?.exportedOnly) {
188
- candidates = candidates.filter((s) => {
189
- // LSP workspace symbols don't expose export visibility directly.
190
- // Filter out SymbolKinds that are typically local/private (Variable, Field, Property).
191
- const NON_EXPORTED_KINDS = new Set([7, 8, 13]); // Property, Field, Variable
192
- return !NON_EXPORTED_KINDS.has(s.kind);
193
- });
194
- }
195
-
196
- if (candidates.length === 0) {
197
- return {
198
- kind: "error",
199
- message: `Symbol not found: \`${symbol}\`${scopePath ? ` in path \`${options?.path}\`` : ""}`,
200
- };
201
- }
202
-
203
- if (candidates.length === 1) {
204
- const c = candidates[0];
205
- const loc = "location" in c ? c.location : null;
206
- if (!loc) {
207
- return { kind: "error", message: `Symbol not found: \`${symbol}\`` };
208
- }
209
- const filePath = loc.uri.startsWith("file://") ? decodeURIComponent(loc.uri.slice(7)) : loc.uri;
112
+ const outcome = await resolveSymbol(symbol, cwd, semantic, options);
210
113
 
114
+ if (outcome.kind === "resolved") {
211
115
  return {
212
116
  kind: "resolved",
213
- target: {
214
- file: filePath,
215
- position: loc.range.start,
216
- displayLine: loc.range.start.line + 1,
217
- displayCharacter: loc.range.start.character + 1,
218
- name: c.name,
219
- kind: symbolKindName(c.kind),
220
- confidence: "semantic",
221
- },
222
- };
223
- }
224
-
225
- // Multiple candidates — return disambiguation
226
- const MAX_CANDIDATES = 8;
227
- const disambiguated = candidates
228
- .slice(0, MAX_CANDIDATES)
229
- .map((c, idx) => mapCandidateToDisambiguation(c, idx, cwd));
230
-
231
- return {
232
- kind: "disambiguation",
233
- candidates: disambiguated,
234
- omittedCount: Math.max(0, candidates.length - MAX_CANDIDATES),
235
- };
236
- }
237
-
238
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ripgrep-based symbol discovery with pattern parsing
239
- async function resolveSymbolViaSearch(
240
- symbol: string,
241
- cwd: string,
242
- options?: { path?: string; kind?: string; exportedOnly?: boolean },
243
- ): Promise<TargetResolutionResult> {
244
- const { execFileSync } = await import("node:child_process");
245
- const scopePath = options?.path ? normalizePath(options.path, cwd) : cwd;
246
-
247
- try {
248
- const exportOnly = options?.exportedOnly;
249
- const pattern = exportOnly
250
- ? `export\\s+(function|class|interface|type|const|let|var)\\s+${escapeRegex(symbol)}\\b`
251
- : `(function|class|interface|type|const|let|var|export)\\s+${escapeRegex(symbol)}\\b`;
252
- let output: string;
253
- try {
254
- output = execFileSync("rg", ["--json", "-m", "10", "-e", pattern, scopePath], {
255
- encoding: "utf-8",
256
- cwd,
257
- timeout: 5000,
258
- stdio: ["pipe", "pipe", "pipe"],
259
- });
260
- } catch (err: unknown) {
261
- // rg exits 1 for no-match; capture stdout if available
262
- const e = err as { status?: number; stdout?: string };
263
- output = e.stdout ?? "";
264
- }
265
-
266
- const matches: Array<{ file: string; line: number; text: string }> = [];
267
- for (const line of output.split("\n")) {
268
- if (!line.trim()) continue;
269
- try {
270
- const parsed = JSON.parse(line);
271
- if (parsed.type === "match" && parsed.data) {
272
- const filePath = parsed.data.path?.text;
273
- const lineNum = parsed.data.line_number;
274
- const text = parsed.data.lines?.text?.trim();
275
- if (filePath && lineNum) {
276
- matches.push({ file: filePath, line: lineNum, text: text ?? "" });
277
- }
278
- }
279
- } catch {
280
- // Skip malformed JSON lines
281
- }
282
- }
283
-
284
- if (matches.length === 0) {
285
- return { kind: "error", message: `Symbol not found: \`${symbol}\`` };
286
- }
287
-
288
- if (matches.length === 1) {
289
- const m = matches[0];
290
- const resolvedFile = path.resolve(cwd, m.file);
291
- return {
292
- kind: "resolved",
293
- target: {
294
- file: resolvedFile,
295
- position: { line: m.line - 1, character: 0 },
296
- displayLine: m.line,
297
- displayCharacter: 1,
298
- name: symbol,
299
- kind: null,
300
- confidence: "heuristic",
301
- },
302
- };
303
- }
304
-
305
- // Multiple matches — disambiguation
306
- const disambiguated: DisambiguationCandidate[] = matches.slice(0, 8).map((m, idx) => ({
307
- name: symbol,
308
- kind: null,
309
- container: null,
310
- file: m.file,
311
- line: m.line,
312
- character: 1,
313
- reason: m.text.slice(0, 80),
314
- rank: idx + 1,
315
- }));
316
-
317
- return {
318
- kind: "disambiguation",
319
- candidates: disambiguated,
320
- omittedCount: Math.max(0, matches.length - 8),
117
+ target: outcome.target as ResolvedTarget,
321
118
  };
322
- } catch {
323
- return { kind: "error", message: `Symbol not found: \`${symbol}\`` };
324
- }
325
- }
326
-
327
- async function resolveFileTargetsViaLsp(
328
- resolvedFile: string,
329
- cwd: string,
330
- structuralTargets: ResolvedTarget[] | null,
331
- ): Promise<ResolvedTarget[] | null> {
332
- const lsp = await getSemanticService(cwd, { waitForReady: true });
333
- if (!lsp) return null;
334
-
335
- const symbols = await lsp.documentSymbols(resolvedFile);
336
- if (!symbols || symbols.length === 0) {
337
- return structuralTargets;
338
- }
339
-
340
- const topLevel = flattenDocumentSymbols(symbols)
341
- .filter((symbol) => !symbol.container)
342
- .map((symbol) =>
343
- createResolvedTarget({
344
- file: resolvedFile,
345
- line: symbol.line,
346
- character: symbol.character,
347
- name: symbol.name,
348
- kind: symbol.kind,
349
- confidence: "semantic",
350
- }),
351
- );
352
-
353
- if (topLevel.length === 0) {
354
- return structuralTargets;
355
- }
356
-
357
- if (!structuralTargets || structuralTargets.length === 0) {
358
- return dedupeTargets(topLevel);
359
- }
360
-
361
- const matched = structuralTargets.map((target) => {
362
- const byName = topLevel.find((candidate) => candidate.name === target.name);
363
- return byName ?? target;
364
- });
365
-
366
- return dedupeTargets(matched);
367
- }
368
-
369
- async function resolveFileTargetsViaTreeSitter(
370
- relPath: string,
371
- resolvedFile: string,
372
- cwd: string,
373
- ): Promise<ResolvedTarget[] | null> {
374
- try {
375
- return await withStructuralSession(cwd, async (tsSession) => {
376
- const exportsResult = await tsSession.exports(relPath);
377
- if (exportsResult.kind !== "success" || exportsResult.data.length === 0) {
378
- return null;
379
- }
380
-
381
- return dedupeTargets(
382
- exportsResult.data.map((record) =>
383
- createResolvedTarget({
384
- file: resolvedFile,
385
- line: record.range.startLine,
386
- character: record.range.startCharacter,
387
- name: record.name,
388
- kind: record.kind,
389
- confidence: "structural",
390
- }),
391
- ),
392
- );
393
- });
394
- } catch {
395
- return null;
396
119
  }
397
- }
398
-
399
- function flattenDocumentSymbols(
400
- symbols: Array<{
401
- name: string;
402
- kind: number;
403
- selectionRange?: { start: { line: number; character: number } };
404
- location?: { range: { start: { line: number; character: number } } };
405
- children?: Array<unknown>;
406
- }>,
407
- container: string | null = null,
408
- ): Array<{
409
- name: string;
410
- kind: string;
411
- line: number;
412
- character: number;
413
- container: string | null;
414
- }> {
415
- const flattened: Array<{
416
- name: string;
417
- kind: string;
418
- line: number;
419
- character: number;
420
- container: string | null;
421
- }> = [];
422
-
423
- for (const symbol of symbols) {
424
- const start = symbol.selectionRange?.start ?? symbol.location?.range.start;
425
- if (!start) continue;
426
120
 
427
- flattened.push({
428
- name: symbol.name,
429
- kind: symbolKindName(symbol.kind),
430
- line: start.line + 1,
431
- character: start.character + 1,
432
- container,
433
- });
434
-
435
- if (Array.isArray(symbol.children) && symbol.children.length > 0) {
436
- flattened.push(
437
- ...flattenDocumentSymbols(
438
- symbol.children as Array<{
439
- name: string;
440
- kind: number;
441
- selectionRange?: { start: { line: number; character: number } };
442
- location?: { range: { start: { line: number; character: number } } };
443
- children?: Array<unknown>;
444
- }>,
445
- symbol.name,
446
- ),
447
- );
448
- }
449
- }
450
-
451
- return flattened;
452
- }
453
-
454
- function createResolvedTarget(input: {
455
- file: string;
456
- line: number;
457
- character: number;
458
- name: string;
459
- kind: string | null;
460
- confidence: ConfidenceMode;
461
- }): ResolvedTarget {
462
- return {
463
- file: input.file,
464
- position: toZeroBased(input.line, input.character),
465
- displayLine: input.line,
466
- displayCharacter: input.character,
467
- name: input.name,
468
- kind: input.kind,
469
- confidence: input.confidence,
470
- };
471
- }
472
-
473
- function dedupeTargets(targets: ResolvedTarget[]): ResolvedTarget[] {
474
- const deduped = new Map<string, ResolvedTarget>();
475
- for (const target of targets) {
476
- const key = `${target.name ?? ""}:${target.displayLine}:${target.displayCharacter}`;
477
- if (!deduped.has(key)) {
478
- deduped.set(key, target);
479
- }
480
- }
481
- return [...deduped.values()];
482
- }
483
-
484
- // ── Helpers ───────────────────────────────────────────────────────────
485
-
486
- function mapCandidateToDisambiguation(
487
- c: {
488
- name: string;
489
- kind: number;
490
- containerName?: string | null;
491
- location?: { uri: string; range: { start: { line: number; character: number } } } | null;
492
- },
493
- idx: number,
494
- cwd: string,
495
- ): DisambiguationCandidate {
496
- const loc = "location" in c ? c.location : null;
497
- const filePath = loc
498
- ? loc.uri.startsWith("file://")
499
- ? decodeURIComponent(loc.uri.slice(7))
500
- : loc.uri
501
- : "";
502
- const relPath = filePath ? path.relative(cwd, filePath) : "";
503
-
504
- return {
505
- name: c.name,
506
- kind: symbolKindName(c.kind),
507
- container: "containerName" in c ? (c.containerName ?? null) : null,
508
- file: relPath,
509
- line: loc ? loc.range.start.line + 1 : 0,
510
- character: loc ? loc.range.start.character + 1 : 0,
511
- reason: relPath,
512
- rank: idx + 1,
513
- };
514
- }
515
-
516
- const BINARY_EXTENSIONS = new Set([
517
- ".png",
518
- ".jpg",
519
- ".jpeg",
520
- ".gif",
521
- ".webp",
522
- ".bmp",
523
- ".ico",
524
- ".woff",
525
- ".woff2",
526
- ".ttf",
527
- ".eot",
528
- ".zip",
529
- ".tar",
530
- ".gz",
531
- ".bz2",
532
- ".pdf",
533
- ".doc",
534
- ".docx",
535
- ".exe",
536
- ".dll",
537
- ".so",
538
- ".dylib",
539
- ".wasm",
540
- ".node",
541
- ]);
542
-
543
- function isBinaryFile(filePath: string): boolean {
544
- return BINARY_EXTENSIONS.has(path.extname(filePath).toLowerCase());
545
- }
546
-
547
- /** Map LSP SymbolKind to a human-readable name. */
548
- function symbolKindName(kind: number): string {
549
- const kinds: Record<number, string> = {
550
- 1: "File",
551
- 2: "Module",
552
- 3: "Namespace",
553
- 4: "Package",
554
- 5: "Class",
555
- 6: "Method",
556
- 7: "Property",
557
- 8: "Field",
558
- 9: "Constructor",
559
- 10: "Enum",
560
- 11: "Interface",
561
- 12: "Function",
562
- 13: "Variable",
563
- 14: "Constant",
564
- 15: "String",
565
- 16: "Number",
566
- 17: "Boolean",
567
- 18: "Array",
568
- 19: "Object",
569
- 20: "Key",
570
- 21: "Null",
571
- 22: "EnumMember",
572
- 23: "Struct",
573
- 24: "Event",
574
- 25: "Operator",
575
- 26: "TypeParameter",
576
- };
577
- return kinds[kind] ?? "Unknown";
121
+ return outcome as TargetResolutionResult;
578
122
  }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Query normalization — converts raw tool/action parameters into a
3
+ * pre-classified {@link NormalizedQuery}.
4
+ *
5
+ * This is the first step in the targeting pipeline. Callers receive
6
+ * a disambiguated query kind so downstream resolvers can dispatch
7
+ * without re-checking input shapes.
8
+ */
9
+
10
+ import type { NormalizedQuery } from "./types.ts";
11
+
12
+ export interface QueryInput {
13
+ path?: string;
14
+ file?: string;
15
+ line?: number;
16
+ character?: number;
17
+ symbol?: string;
18
+ kind?: string;
19
+ exportedOnly?: boolean;
20
+ }
21
+
22
+ /**
23
+ * Normalize a raw params bag into a typed {@link NormalizedQuery}.
24
+ *
25
+ * Priority order:
26
+ * 1. anchored: file + line + character
27
+ * 2. file: file without coordinates
28
+ * 3. symbol: symbol without file
29
+ * 4. invalid: neither file nor symbol
30
+ */
31
+ export function normalizeQuery(input: QueryInput): NormalizedQuery {
32
+ if (input.file && input.line != null && input.character != null) {
33
+ return {
34
+ kind: "anchored",
35
+ file: input.file,
36
+ line: input.line,
37
+ character: input.character,
38
+ };
39
+ }
40
+
41
+ if (input.file) {
42
+ return { kind: "file", file: input.file };
43
+ }
44
+
45
+ if (input.symbol) {
46
+ return {
47
+ kind: "symbol",
48
+ symbol: input.symbol,
49
+ path: input.path,
50
+ symbolKind: input.kind,
51
+ exportedOnly: input.exportedOnly,
52
+ };
53
+ }
54
+
55
+ return {
56
+ kind: "invalid",
57
+ reason:
58
+ "Semantic actions require either anchored coordinates (`file`, `line`, `character`) or a `symbol` for discovery.",
59
+ };
60
+ }