src-mcp 1.0.1 → 1.0.3

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 (250) hide show
  1. package/README.md +8 -18
  2. package/dist/bin.d.mts +1 -0
  3. package/dist/bin.mjs +205 -0
  4. package/dist/bin.mjs.map +1 -0
  5. package/dist/index.d.mts +1 -0
  6. package/dist/index.mjs +8 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/dist/server-DL8hfycz.mjs +3791 -0
  9. package/dist/server-DL8hfycz.mjs.map +1 -0
  10. package/package.json +10 -9
  11. package/dist/bin.d.ts +0 -3
  12. package/dist/bin.d.ts.map +0 -1
  13. package/dist/bin.js +0 -4
  14. package/dist/bin.js.map +0 -1
  15. package/dist/cli/adapter.d.ts +0 -7
  16. package/dist/cli/adapter.d.ts.map +0 -1
  17. package/dist/cli/adapter.js +0 -39
  18. package/dist/cli/adapter.js.map +0 -1
  19. package/dist/cli/commands/index.d.ts +0 -24
  20. package/dist/cli/commands/index.d.ts.map +0 -1
  21. package/dist/cli/commands/index.js +0 -13
  22. package/dist/cli/commands/index.js.map +0 -1
  23. package/dist/cli/commands/serve.command.d.ts +0 -21
  24. package/dist/cli/commands/serve.command.d.ts.map +0 -1
  25. package/dist/cli/commands/serve.command.js +0 -62
  26. package/dist/cli/commands/serve.command.js.map +0 -1
  27. package/dist/cli/commands/version.command.d.ts +0 -2
  28. package/dist/cli/commands/version.command.d.ts.map +0 -1
  29. package/dist/cli/commands/version.command.js +0 -12
  30. package/dist/cli/commands/version.command.js.map +0 -1
  31. package/dist/cli/index.d.ts +0 -2
  32. package/dist/cli/index.d.ts.map +0 -1
  33. package/dist/cli/index.js +0 -15
  34. package/dist/cli/index.js.map +0 -1
  35. package/dist/cli/parser.d.ts +0 -7
  36. package/dist/cli/parser.d.ts.map +0 -1
  37. package/dist/cli/parser.js +0 -99
  38. package/dist/cli/parser.js.map +0 -1
  39. package/dist/config/index.d.ts +0 -24
  40. package/dist/config/index.d.ts.map +0 -1
  41. package/dist/config/index.js +0 -38
  42. package/dist/config/index.js.map +0 -1
  43. package/dist/core/ast/index.d.ts +0 -82
  44. package/dist/core/ast/index.d.ts.map +0 -1
  45. package/dist/core/ast/index.js +0 -204
  46. package/dist/core/ast/index.js.map +0 -1
  47. package/dist/core/ast/types.d.ts +0 -152
  48. package/dist/core/ast/types.d.ts.map +0 -1
  49. package/dist/core/ast/types.js +0 -5
  50. package/dist/core/ast/types.js.map +0 -1
  51. package/dist/core/constants.d.ts +0 -17
  52. package/dist/core/constants.d.ts.map +0 -1
  53. package/dist/core/constants.js +0 -49
  54. package/dist/core/constants.js.map +0 -1
  55. package/dist/core/embeddings/callgraph.d.ts +0 -98
  56. package/dist/core/embeddings/callgraph.d.ts.map +0 -1
  57. package/dist/core/embeddings/callgraph.js +0 -415
  58. package/dist/core/embeddings/callgraph.js.map +0 -1
  59. package/dist/core/embeddings/chunker.d.ts +0 -37
  60. package/dist/core/embeddings/chunker.d.ts.map +0 -1
  61. package/dist/core/embeddings/chunker.js +0 -298
  62. package/dist/core/embeddings/chunker.js.map +0 -1
  63. package/dist/core/embeddings/client.d.ts +0 -30
  64. package/dist/core/embeddings/client.d.ts.map +0 -1
  65. package/dist/core/embeddings/client.js +0 -65
  66. package/dist/core/embeddings/client.js.map +0 -1
  67. package/dist/core/embeddings/crossfile.d.ts +0 -58
  68. package/dist/core/embeddings/crossfile.d.ts.map +0 -1
  69. package/dist/core/embeddings/crossfile.js +0 -202
  70. package/dist/core/embeddings/crossfile.js.map +0 -1
  71. package/dist/core/embeddings/enricher.d.ts +0 -53
  72. package/dist/core/embeddings/enricher.d.ts.map +0 -1
  73. package/dist/core/embeddings/enricher.js +0 -308
  74. package/dist/core/embeddings/enricher.js.map +0 -1
  75. package/dist/core/embeddings/index.d.ts +0 -13
  76. package/dist/core/embeddings/index.d.ts.map +0 -1
  77. package/dist/core/embeddings/index.js +0 -20
  78. package/dist/core/embeddings/index.js.map +0 -1
  79. package/dist/core/embeddings/reranker.d.ts +0 -41
  80. package/dist/core/embeddings/reranker.d.ts.map +0 -1
  81. package/dist/core/embeddings/reranker.js +0 -117
  82. package/dist/core/embeddings/reranker.js.map +0 -1
  83. package/dist/core/embeddings/store.d.ts +0 -93
  84. package/dist/core/embeddings/store.d.ts.map +0 -1
  85. package/dist/core/embeddings/store.js +0 -304
  86. package/dist/core/embeddings/store.js.map +0 -1
  87. package/dist/core/embeddings/types.d.ts +0 -77
  88. package/dist/core/embeddings/types.d.ts.map +0 -1
  89. package/dist/core/embeddings/types.js +0 -5
  90. package/dist/core/embeddings/types.js.map +0 -1
  91. package/dist/core/embeddings/watcher.d.ts +0 -130
  92. package/dist/core/embeddings/watcher.d.ts.map +0 -1
  93. package/dist/core/embeddings/watcher.js +0 -448
  94. package/dist/core/embeddings/watcher.js.map +0 -1
  95. package/dist/core/fallback/index.d.ts +0 -26
  96. package/dist/core/fallback/index.d.ts.map +0 -1
  97. package/dist/core/fallback/index.js +0 -76
  98. package/dist/core/fallback/index.js.map +0 -1
  99. package/dist/core/parser/index.d.ts +0 -64
  100. package/dist/core/parser/index.d.ts.map +0 -1
  101. package/dist/core/parser/index.js +0 -205
  102. package/dist/core/parser/index.js.map +0 -1
  103. package/dist/core/parser/languages.d.ts +0 -26
  104. package/dist/core/parser/languages.d.ts.map +0 -1
  105. package/dist/core/parser/languages.js +0 -101
  106. package/dist/core/parser/languages.js.map +0 -1
  107. package/dist/core/queries/helpers.d.ts +0 -72
  108. package/dist/core/queries/helpers.d.ts.map +0 -1
  109. package/dist/core/queries/helpers.js +0 -101
  110. package/dist/core/queries/helpers.js.map +0 -1
  111. package/dist/core/queries/index.d.ts +0 -144
  112. package/dist/core/queries/index.d.ts.map +0 -1
  113. package/dist/core/queries/index.js +0 -396
  114. package/dist/core/queries/index.js.map +0 -1
  115. package/dist/core/queries/loader.d.ts +0 -46
  116. package/dist/core/queries/loader.d.ts.map +0 -1
  117. package/dist/core/queries/loader.js +0 -216
  118. package/dist/core/queries/loader.js.map +0 -1
  119. package/dist/core/queries/patterns.d.ts +0 -10
  120. package/dist/core/queries/patterns.d.ts.map +0 -1
  121. package/dist/core/queries/patterns.js +0 -112
  122. package/dist/core/queries/patterns.js.map +0 -1
  123. package/dist/core/symbols/index.d.ts +0 -70
  124. package/dist/core/symbols/index.d.ts.map +0 -1
  125. package/dist/core/symbols/index.js +0 -359
  126. package/dist/core/symbols/index.js.map +0 -1
  127. package/dist/core/unified/index.d.ts +0 -118
  128. package/dist/core/unified/index.d.ts.map +0 -1
  129. package/dist/core/unified/index.js +0 -428
  130. package/dist/core/unified/index.js.map +0 -1
  131. package/dist/core/utils/assets.d.ts +0 -34
  132. package/dist/core/utils/assets.d.ts.map +0 -1
  133. package/dist/core/utils/assets.js +0 -85
  134. package/dist/core/utils/assets.js.map +0 -1
  135. package/dist/core/utils/cache.d.ts +0 -43
  136. package/dist/core/utils/cache.d.ts.map +0 -1
  137. package/dist/core/utils/cache.js +0 -60
  138. package/dist/core/utils/cache.js.map +0 -1
  139. package/dist/core/utils/index.d.ts +0 -7
  140. package/dist/core/utils/index.d.ts.map +0 -1
  141. package/dist/core/utils/index.js +0 -10
  142. package/dist/core/utils/index.js.map +0 -1
  143. package/dist/core/utils/tsconfig.d.ts +0 -34
  144. package/dist/core/utils/tsconfig.d.ts.map +0 -1
  145. package/dist/core/utils/tsconfig.js +0 -173
  146. package/dist/core/utils/tsconfig.js.map +0 -1
  147. package/dist/features/analyze-file/index.d.ts +0 -15
  148. package/dist/features/analyze-file/index.d.ts.map +0 -1
  149. package/dist/features/analyze-file/index.js +0 -164
  150. package/dist/features/analyze-file/index.js.map +0 -1
  151. package/dist/features/get-call-graph/index.d.ts +0 -24
  152. package/dist/features/get-call-graph/index.d.ts.map +0 -1
  153. package/dist/features/get-call-graph/index.js +0 -246
  154. package/dist/features/get-call-graph/index.js.map +0 -1
  155. package/dist/features/get-index-status/index.d.ts +0 -20
  156. package/dist/features/get-index-status/index.d.ts.map +0 -1
  157. package/dist/features/get-index-status/index.js +0 -90
  158. package/dist/features/get-index-status/index.js.map +0 -1
  159. package/dist/features/index-codebase/index.d.ts +0 -24
  160. package/dist/features/index-codebase/index.d.ts.map +0 -1
  161. package/dist/features/index-codebase/index.js +0 -283
  162. package/dist/features/index-codebase/index.js.map +0 -1
  163. package/dist/features/index.d.ts +0 -15
  164. package/dist/features/index.d.ts.map +0 -1
  165. package/dist/features/index.js +0 -28
  166. package/dist/features/index.js.map +0 -1
  167. package/dist/features/info/index.d.ts +0 -19
  168. package/dist/features/info/index.d.ts.map +0 -1
  169. package/dist/features/info/index.js +0 -41
  170. package/dist/features/info/index.js.map +0 -1
  171. package/dist/features/list-symbols/index.d.ts +0 -22
  172. package/dist/features/list-symbols/index.d.ts.map +0 -1
  173. package/dist/features/list-symbols/index.js +0 -74
  174. package/dist/features/list-symbols/index.js.map +0 -1
  175. package/dist/features/parse-ast/index.d.ts +0 -12
  176. package/dist/features/parse-ast/index.d.ts.map +0 -1
  177. package/dist/features/parse-ast/index.js +0 -71
  178. package/dist/features/parse-ast/index.js.map +0 -1
  179. package/dist/features/query-code/index.d.ts +0 -23
  180. package/dist/features/query-code/index.d.ts.map +0 -1
  181. package/dist/features/query-code/index.js +0 -96
  182. package/dist/features/query-code/index.js.map +0 -1
  183. package/dist/features/search-code/index.d.ts +0 -39
  184. package/dist/features/search-code/index.d.ts.map +0 -1
  185. package/dist/features/search-code/index.js +0 -258
  186. package/dist/features/search-code/index.js.map +0 -1
  187. package/dist/features/types.d.ts +0 -14
  188. package/dist/features/types.d.ts.map +0 -1
  189. package/dist/features/types.js +0 -2
  190. package/dist/features/types.js.map +0 -1
  191. package/dist/features/update-index/index.d.ts +0 -24
  192. package/dist/features/update-index/index.d.ts.map +0 -1
  193. package/dist/features/update-index/index.js +0 -358
  194. package/dist/features/update-index/index.js.map +0 -1
  195. package/dist/features/utils/content.d.ts +0 -30
  196. package/dist/features/utils/content.d.ts.map +0 -1
  197. package/dist/features/utils/content.js +0 -49
  198. package/dist/features/utils/content.js.map +0 -1
  199. package/dist/features/utils/index.d.ts +0 -6
  200. package/dist/features/utils/index.d.ts.map +0 -1
  201. package/dist/features/utils/index.js +0 -8
  202. package/dist/features/utils/index.js.map +0 -1
  203. package/dist/features/utils/result.d.ts +0 -37
  204. package/dist/features/utils/result.d.ts.map +0 -1
  205. package/dist/features/utils/result.js +0 -53
  206. package/dist/features/utils/result.js.map +0 -1
  207. package/dist/index.d.ts +0 -2
  208. package/dist/index.d.ts.map +0 -1
  209. package/dist/index.js +0 -4
  210. package/dist/index.js.map +0 -1
  211. package/dist/prompts/index.d.ts +0 -9
  212. package/dist/prompts/index.d.ts.map +0 -1
  213. package/dist/prompts/index.js +0 -188
  214. package/dist/prompts/index.js.map +0 -1
  215. package/dist/resources/index.d.ts +0 -3
  216. package/dist/resources/index.d.ts.map +0 -1
  217. package/dist/resources/index.js +0 -17
  218. package/dist/resources/index.js.map +0 -1
  219. package/dist/server.d.ts +0 -4
  220. package/dist/server.d.ts.map +0 -1
  221. package/dist/server.js +0 -24
  222. package/dist/server.js.map +0 -1
  223. package/dist/tools/adapter.d.ts +0 -4
  224. package/dist/tools/adapter.d.ts.map +0 -1
  225. package/dist/tools/adapter.js +0 -28
  226. package/dist/tools/adapter.js.map +0 -1
  227. package/dist/tools/index.d.ts +0 -5
  228. package/dist/tools/index.d.ts.map +0 -1
  229. package/dist/tools/index.js +0 -9
  230. package/dist/tools/index.js.map +0 -1
  231. package/dist/types/index.d.ts +0 -20
  232. package/dist/types/index.d.ts.map +0 -1
  233. package/dist/types/index.js +0 -2
  234. package/dist/types/index.js.map +0 -1
  235. package/dist/utils/colors.d.ts +0 -24
  236. package/dist/utils/colors.d.ts.map +0 -1
  237. package/dist/utils/colors.js +0 -30
  238. package/dist/utils/colors.js.map +0 -1
  239. package/dist/utils/index.d.ts +0 -4
  240. package/dist/utils/index.d.ts.map +0 -1
  241. package/dist/utils/index.js +0 -4
  242. package/dist/utils/index.js.map +0 -1
  243. package/dist/utils/logger.d.ts +0 -8
  244. package/dist/utils/logger.d.ts.map +0 -1
  245. package/dist/utils/logger.js +0 -57
  246. package/dist/utils/logger.js.map +0 -1
  247. package/dist/utils/spinner.d.ts +0 -11
  248. package/dist/utils/spinner.d.ts.map +0 -1
  249. package/dist/utils/spinner.js +0 -36
  250. package/dist/utils/spinner.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/queries/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,KAAK,QAAQ,EAGb,KAAK,IAAI,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,OAAO,EAAgB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAUzE,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAGpB,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAEnE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,WAAW,CA+Cb;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,EACvB,OAAO,GAAE,YAAiB,GACzB,WAAW,GAAG,SAAS,CAwCzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,WAAW,GAAG,SAAS,CAQzB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,YAAiB,GACzB,WAAW,CAyGb;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,GACf;IACD,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B,CA2CA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GACf,UAAU,GACV,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,WAAW,GACX,UAAU,GACV,MAAM,GACN,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,EAAE,CA+BX;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,EAAE,CAkCX;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,EAAE,CAiBX;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,EAAE,CAmBX;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,EAAE,CAcX;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,EAAE,CAkBX;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA2BrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAmBnE"}
@@ -1,396 +0,0 @@
1
- /**
2
- * SCM Query engine for Tree-sitter
3
- *
4
- * Supports both official .scm query files and custom preset patterns
5
- */
6
- import { Query, } from "web-tree-sitter";
7
- import { toASTNode } from "@core/parser";
8
- import { deduplicateNodes, extractNodes, findCapture, findCaptureByPrefix, getCaptureKind, } from "./helpers";
9
- import { hasOfficialTags, loadHighlightsQuery, loadLocalsQuery, loadTagsQuery, } from "./loader";
10
- import { getAvailablePresets as getAvailablePresetsBase, getQueryPattern, } from "./patterns";
11
- // Re-export helpers for external use
12
- export * from "./helpers";
13
- // Re-export patterns and loader (except getAvailablePresets which we override)
14
- export * from "./loader";
15
- export { getQueryPattern, getQuerySupportedLanguages, isPresetAvailable, FALLBACK_PATTERNS, } from "./patterns";
16
- /**
17
- * Get all available presets for a language
18
- * Automatically checks for official tags.scm support
19
- */
20
- export function getAvailablePresets(language) {
21
- return getAvailablePresetsBase(language, hasOfficialTags(language));
22
- }
23
- /**
24
- * Execute a SCM query on parsed code
25
- */
26
- export function executeQuery(tree, languageInstance, queryString, language, options = {}) {
27
- const { maxMatches, startIndex, endIndex } = options;
28
- // Create query
29
- let query;
30
- try {
31
- query = new Query(languageInstance, queryString);
32
- }
33
- catch (error) {
34
- const message = error instanceof Error ? error.message : String(error);
35
- throw new Error(`Invalid query: ${message}`);
36
- }
37
- // Get matches
38
- const queryMatches = query.matches(tree.rootNode, {
39
- startIndex,
40
- endIndex,
41
- });
42
- const matches = [];
43
- let count = 0;
44
- for (const match of queryMatches) {
45
- // Check max matches limit
46
- if (maxMatches !== undefined && count >= maxMatches) {
47
- break;
48
- }
49
- const captures = match.captures.map((capture) => ({
50
- name: capture.name,
51
- node: toASTNode(capture.node),
52
- }));
53
- matches.push({
54
- pattern: match.patternIndex,
55
- captures,
56
- });
57
- count++;
58
- }
59
- return {
60
- matches,
61
- count,
62
- query: queryString,
63
- language,
64
- source: "preset",
65
- };
66
- }
67
- /**
68
- * Execute an official .scm query file
69
- *
70
- * @param tree - Parsed tree
71
- * @param languageInstance - Tree-sitter language instance
72
- * @param language - Language name
73
- * @param queryType - Type of query (tags, highlights, locals, etc.)
74
- * @param options - Query options
75
- */
76
- export function executeOfficialQuery(tree, languageInstance, language, queryType, options = {}) {
77
- let queryString;
78
- switch (queryType) {
79
- case "tags":
80
- queryString = loadTagsQuery(language);
81
- break;
82
- case "highlights":
83
- queryString = loadHighlightsQuery(language);
84
- break;
85
- case "locals":
86
- queryString = loadLocalsQuery(language);
87
- break;
88
- case "injections":
89
- case "indents":
90
- case "folds":
91
- // These query types are not yet implemented
92
- return undefined;
93
- }
94
- if (!queryString) {
95
- return undefined;
96
- }
97
- try {
98
- const result = executeQuery(tree, languageInstance, queryString, language, options);
99
- return {
100
- ...result,
101
- source: "official",
102
- };
103
- }
104
- catch {
105
- // Official query might have incompatible patterns
106
- return undefined;
107
- }
108
- }
109
- /**
110
- * Execute tags.scm for comprehensive symbol extraction
111
- *
112
- * This uses the official Tree-sitter tags.scm file which provides:
113
- * - Function definitions with documentation
114
- * - Class definitions
115
- * - Method definitions
116
- * - Module/interface definitions
117
- * - Reference tracking (calls, types)
118
- */
119
- export function executeTagsQuery(tree, languageInstance, language, options = {}) {
120
- return executeOfficialQuery(tree, languageInstance, language, "tags", options);
121
- }
122
- /**
123
- * Execute a preset query
124
- * Uses official tags.scm for functions/classes when available,
125
- * otherwise falls back to preset patterns
126
- */
127
- export function executePresetQuery(tree, languageInstance, language, preset, options = {}) {
128
- const { maxMatches } = options;
129
- // Check if we have a language-specific fallback pattern for this preset
130
- // This is needed for languages like TypeScript where official tags.scm is incomplete
131
- const fallbackPattern = getQueryPattern(language, preset);
132
- // For functions and classes, try official tags.scm first, then fallback patterns
133
- if (preset === "functions" || preset === "classes") {
134
- // First try official tags.scm
135
- if (hasOfficialTags(language)) {
136
- const { definitions } = extractSymbolsFromTags(tree, languageInstance, language);
137
- let filteredDefs = preset === "functions"
138
- ? definitions.filter((d) => d.kind === "function" || d.kind === "method")
139
- : definitions.filter((d) => d.kind === "class" ||
140
- d.kind === "interface" ||
141
- d.kind === "module");
142
- // If official tags.scm found results, use them
143
- if (filteredDefs.length > 0) {
144
- // Apply maxMatches limit
145
- if (maxMatches !== undefined && filteredDefs.length > maxMatches) {
146
- filteredDefs = filteredDefs.slice(0, maxMatches);
147
- }
148
- // Convert to QueryResult format
149
- const matches = filteredDefs.map((def) => ({
150
- pattern: 0,
151
- captures: [
152
- {
153
- name: preset === "functions"
154
- ? "function.definition"
155
- : "class.definition",
156
- node: def.node,
157
- },
158
- { name: `${preset.slice(0, -1)}.name`, node: def.nameNode },
159
- ],
160
- }));
161
- return {
162
- matches,
163
- count: matches.length,
164
- query: `[tags.scm ${preset}]`,
165
- language,
166
- source: "official",
167
- };
168
- }
169
- // Official tags.scm found 0 results - try fallback pattern or return empty
170
- if (fallbackPattern) {
171
- return executeQuery(tree, languageInstance, fallbackPattern, language, options);
172
- }
173
- // No fallback pattern and 0 results from official - return empty result
174
- return {
175
- matches: [],
176
- count: 0,
177
- query: `[tags.scm ${preset}]`,
178
- language,
179
- source: "official",
180
- };
181
- }
182
- // No official tags.scm - must use fallback pattern
183
- if (fallbackPattern) {
184
- return executeQuery(tree, languageInstance, fallbackPattern, language, options);
185
- }
186
- }
187
- // For other presets, use fallback patterns
188
- if (!fallbackPattern) {
189
- throw new Error(`No '${preset}' query pattern available for ${language}`);
190
- }
191
- return executeQuery(tree, languageInstance, fallbackPattern, language, options);
192
- }
193
- /**
194
- * Extract symbols using official tags.scm when available
195
- *
196
- * This is the recommended method for symbol extraction as it uses
197
- * the official Tree-sitter query files for better accuracy.
198
- */
199
- export function extractSymbolsFromTags(tree, languageInstance, language) {
200
- const result = executeTagsQuery(tree, languageInstance, language);
201
- if (!result) {
202
- return { definitions: [], references: [] };
203
- }
204
- const definitions = [];
205
- const references = [];
206
- for (const match of result.matches) {
207
- // Extract name capture
208
- const nameCapture = findCapture(match.captures, "name");
209
- if (!nameCapture) {
210
- continue;
211
- }
212
- // Check if it's a definition or reference
213
- const defCapture = findCaptureByPrefix(match.captures, "definition.");
214
- const refCapture = findCaptureByPrefix(match.captures, "reference.");
215
- const docCapture = findCapture(match.captures, "doc");
216
- if (defCapture) {
217
- const kind = getCaptureKind(defCapture.name, "definition.");
218
- definitions.push({
219
- name: nameCapture.node.text,
220
- kind,
221
- node: defCapture.node,
222
- nameNode: nameCapture.node,
223
- documentation: docCapture?.node.text,
224
- });
225
- }
226
- else if (refCapture) {
227
- const kind = getCaptureKind(refCapture.name, "reference.");
228
- references.push({
229
- name: nameCapture.node.text,
230
- kind,
231
- node: refCapture.node,
232
- nameNode: nameCapture.node,
233
- });
234
- }
235
- }
236
- return { definitions, references };
237
- }
238
- /**
239
- * Find all functions in the code
240
- * Prefers official tags.scm when available
241
- */
242
- export function findFunctions(tree, languageInstance, language, options = {}) {
243
- // Try official tags.scm first if preferOfficial is true or default
244
- if (options.preferOfficial !== false && hasOfficialTags(language)) {
245
- const { definitions } = extractSymbolsFromTags(tree, languageInstance, language);
246
- return definitions
247
- .filter((d) => d.kind === "function" || d.kind === "method")
248
- .map((d) => d.node);
249
- }
250
- // Fall back to preset patterns
251
- try {
252
- const result = executePresetQuery(tree, languageInstance, language, "functions", options);
253
- return extractNodes(result.matches, [
254
- "function.definition",
255
- "method.definition",
256
- "function.declaration",
257
- ]);
258
- }
259
- catch {
260
- return [];
261
- }
262
- }
263
- /**
264
- * Find all classes/structs in the code
265
- * Prefers official tags.scm when available
266
- */
267
- export function findClasses(tree, languageInstance, language, options = {}) {
268
- // Try official tags.scm first
269
- if (options.preferOfficial !== false && hasOfficialTags(language)) {
270
- const { definitions } = extractSymbolsFromTags(tree, languageInstance, language);
271
- return definitions
272
- .filter((d) => d.kind === "class" || d.kind === "interface" || d.kind === "module")
273
- .map((d) => d.node);
274
- }
275
- // Fall back to preset patterns
276
- try {
277
- const result = executePresetQuery(tree, languageInstance, language, "classes", options);
278
- return extractNodes(result.matches, [
279
- "class.definition",
280
- "struct.definition",
281
- "impl.definition",
282
- ]);
283
- }
284
- catch {
285
- return [];
286
- }
287
- }
288
- /**
289
- * Find all imports in the code
290
- */
291
- export function findImports(tree, languageInstance, language, options = {}) {
292
- try {
293
- const result = executePresetQuery(tree, languageInstance, language, "imports", options);
294
- return deduplicateNodes(result.matches, [
295
- "import.statement",
296
- "include.statement",
297
- ]);
298
- }
299
- catch {
300
- return [];
301
- }
302
- }
303
- /**
304
- * Find all exports in the code
305
- */
306
- export function findExports(tree, languageInstance, language, options = {}) {
307
- try {
308
- const result = executePresetQuery(tree, languageInstance, language, "exports", options);
309
- return deduplicateNodes(result.matches, [
310
- "export.statement",
311
- "export.function",
312
- "export.class",
313
- "export.type",
314
- ]);
315
- }
316
- catch {
317
- return [];
318
- }
319
- }
320
- /**
321
- * Find all comments in the code
322
- */
323
- export function findComments(tree, languageInstance, language, options = {}) {
324
- try {
325
- const result = executePresetQuery(tree, languageInstance, language, "comments", options);
326
- return extractNodes(result.matches, ["comment", "comment.block"]);
327
- }
328
- catch {
329
- return [];
330
- }
331
- }
332
- /**
333
- * Find all string literals in the code
334
- */
335
- export function findStrings(tree, languageInstance, language, options = {}) {
336
- try {
337
- const result = executePresetQuery(tree, languageInstance, language, "strings", options);
338
- return extractNodes(result.matches, [
339
- "string",
340
- "string.template",
341
- "string.raw",
342
- ]);
343
- }
344
- catch {
345
- return [];
346
- }
347
- }
348
- /**
349
- * Get function name from a function node
350
- */
351
- export function getFunctionName(funcNode) {
352
- // Look in fields first
353
- if (funcNode.fields?.name) {
354
- const nameNode = funcNode.fields.name;
355
- if (!Array.isArray(nameNode)) {
356
- return nameNode.text;
357
- }
358
- }
359
- // Look in children for identifier
360
- if (funcNode.children) {
361
- for (const child of funcNode.children) {
362
- if (child.type === "identifier" ||
363
- child.type === "property_identifier" ||
364
- child.type === "field_identifier") {
365
- return child.text;
366
- }
367
- // Recursive for function_declarator
368
- if (child.type === "function_declarator") {
369
- return getFunctionName(child);
370
- }
371
- }
372
- }
373
- return undefined;
374
- }
375
- /**
376
- * Get class name from a class node
377
- */
378
- export function getClassName(classNode) {
379
- // Look in fields first
380
- if (classNode.fields?.name) {
381
- const nameNode = classNode.fields.name;
382
- if (!Array.isArray(nameNode)) {
383
- return nameNode.text;
384
- }
385
- }
386
- // Look in children for identifier
387
- if (classNode.children) {
388
- for (const child of classNode.children) {
389
- if (child.type === "identifier" || child.type === "type_identifier") {
390
- return child.text;
391
- }
392
- }
393
- }
394
- return undefined;
395
- }
396
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/queries/index.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Query type available in Tree-sitter grammars
3
- */
4
- export type SCMQueryType = "tags" | "highlights" | "locals" | "injections" | "indents" | "folds";
5
- /**
6
- * Get the path to a .scm query file
7
- */
8
- export declare function getSCMPath(language: string, queryType: SCMQueryType): string | undefined;
9
- /**
10
- * Load a .scm query file for a language with inheritance resolved
11
- *
12
- * @param language - Language name (e.g., "javascript", "python")
13
- * @param queryType - Type of query (e.g., "tags", "highlights")
14
- * @param visited - Set of visited languages to prevent circular inheritance
15
- * @returns Query string or undefined if not found
16
- */
17
- export declare function loadSCMQuery(language: string, queryType: SCMQueryType, visited?: Set<string>): string | undefined;
18
- /**
19
- * Load tags.scm for symbol extraction
20
- */
21
- export declare function loadTagsQuery(language: string): string | undefined;
22
- /**
23
- * Load highlights.scm for syntax highlighting
24
- */
25
- export declare function loadHighlightsQuery(language: string): string | undefined;
26
- /**
27
- * Load locals.scm for local variable scoping
28
- */
29
- export declare function loadLocalsQuery(language: string): string | undefined;
30
- /**
31
- * Check which query types are available for a language
32
- */
33
- export declare function getAvailableQueryTypes(language: string): SCMQueryType[];
34
- /**
35
- * Check if a language has official tags.scm
36
- */
37
- export declare function hasOfficialTags(language: string): boolean;
38
- /**
39
- * Get all languages with official tags.scm
40
- */
41
- export declare function getLanguagesWithTags(): string[];
42
- /**
43
- * Clear the SCM cache
44
- */
45
- export declare function clearSCMCache(): void;
46
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/queries/loader.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,OAAO,CAAC;AA0DZ;;GAEG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,GACtB,MAAM,GAAG,SAAS,CASpB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,EACvB,OAAO,cAAoB,GAC1B,MAAM,GAAG,SAAS,CA6CpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAWvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -1,216 +0,0 @@
1
- /**
2
- * SCM Query file loader
3
- *
4
- * Loads official Tree-sitter .scm query files from local assets directory
5
- * Supports inheritance via `; inherits: lang1,lang2` directives
6
- */
7
- import { existsSync, readFileSync } from "fs";
8
- import { join } from "path";
9
- import { assetExists, getAssetsDir, registerCache } from "@core/utils";
10
- /**
11
- * Cache for loaded SCM queries (with inheritance resolved)
12
- */
13
- const scmCache = new Map();
14
- /**
15
- * Supported languages with SCM query files
16
- */
17
- const SUPPORTED_LANGUAGES = new Set([
18
- // Web & Frontend
19
- "javascript",
20
- "typescript",
21
- "tsx",
22
- "svelte",
23
- "html",
24
- // Systems Programming
25
- "c",
26
- "cpp",
27
- "rust",
28
- "go",
29
- "swift",
30
- // JVM Languages
31
- "java",
32
- "scala",
33
- "kotlin",
34
- // Scripting Languages
35
- "python",
36
- "ruby",
37
- "php",
38
- // .NET
39
- "csharp",
40
- "c_sharp",
41
- // Functional
42
- "ocaml",
43
- // Base/dependency languages (for inheritance)
44
- "_javascript",
45
- "_jsx",
46
- "_typescript",
47
- "ecma",
48
- "jsx",
49
- ]);
50
- /**
51
- * Normalize language name for directory lookup
52
- */
53
- function normalizeLanguageName(language) {
54
- // Map aliases to directory names
55
- if (language === "csharp") {
56
- return "c_sharp";
57
- }
58
- if (language === "tsx") {
59
- return "typescript"; // TSX uses typescript queries
60
- }
61
- return language;
62
- }
63
- /**
64
- * Get the path to a .scm query file
65
- */
66
- export function getSCMPath(language, queryType) {
67
- const langDir = normalizeLanguageName(language);
68
- const relativePath = join("queries", langDir, `${queryType}.scm`);
69
- if (assetExists(relativePath)) {
70
- return join(getAssetsDir(), relativePath);
71
- }
72
- return undefined;
73
- }
74
- /**
75
- * Parse inherit directives from SCM content
76
- * Supports: `; inherits: lang1,lang2` and `; inherits lang1`
77
- */
78
- function parseInherits(content) {
79
- const inherits = [];
80
- // Normalize line endings (handle CRLF and CR)
81
- const normalizedContent = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
82
- const lines = normalizedContent.split("\n");
83
- for (const line of lines) {
84
- const match = /^;\s*inherits:?\s+([^\s].*)$/.exec(line);
85
- if (match?.[1]) {
86
- const langs = match[1].split(",").map((l) => l.trim());
87
- inherits.push(...langs);
88
- }
89
- }
90
- return inherits;
91
- }
92
- /**
93
- * Remove inherit directives from SCM content
94
- */
95
- function removeInheritDirectives(content) {
96
- // Normalize line endings (handle CRLF and CR)
97
- const normalizedContent = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
98
- return normalizedContent
99
- .split("\n")
100
- .filter((line) => !/^;\s*inherits:?\s+/.exec(line))
101
- .join("\n");
102
- }
103
- /**
104
- * Load a raw .scm file without resolving inheritance
105
- */
106
- function loadRawSCM(language, queryType) {
107
- const assetsDir = getAssetsDir();
108
- const scmPath = join(assetsDir, "queries", language, `${queryType}.scm`);
109
- if (!existsSync(scmPath)) {
110
- return undefined;
111
- }
112
- try {
113
- return readFileSync(scmPath, "utf-8");
114
- }
115
- catch {
116
- return undefined;
117
- }
118
- }
119
- /**
120
- * Load a .scm query file for a language with inheritance resolved
121
- *
122
- * @param language - Language name (e.g., "javascript", "python")
123
- * @param queryType - Type of query (e.g., "tags", "highlights")
124
- * @param visited - Set of visited languages to prevent circular inheritance
125
- * @returns Query string or undefined if not found
126
- */
127
- export function loadSCMQuery(language, queryType, visited = new Set()) {
128
- const cacheKey = `${language}:${queryType}`;
129
- // Check cache first
130
- if (scmCache.has(cacheKey)) {
131
- return scmCache.get(cacheKey);
132
- }
133
- // Prevent circular inheritance
134
- if (visited.has(language)) {
135
- return undefined;
136
- }
137
- visited.add(language);
138
- // Normalize language name for file lookup
139
- const langDir = normalizeLanguageName(language);
140
- const rawContent = loadRawSCM(langDir, queryType);
141
- if (!rawContent) {
142
- return undefined;
143
- }
144
- // Parse inherits directives
145
- const inherits = parseInherits(rawContent);
146
- const ownContent = removeInheritDirectives(rawContent).trim();
147
- // Load inherited content
148
- const inheritedParts = [];
149
- for (const inheritLang of inherits) {
150
- const inheritedContent = loadSCMQuery(inheritLang, queryType, visited);
151
- if (inheritedContent) {
152
- inheritedParts.push(inheritedContent);
153
- }
154
- }
155
- // Combine inherited content with own content
156
- const finalContent = [...inheritedParts, ownContent]
157
- .filter(Boolean)
158
- .join("\n\n");
159
- if (finalContent) {
160
- scmCache.set(cacheKey, finalContent);
161
- }
162
- return finalContent || undefined;
163
- }
164
- /**
165
- * Load tags.scm for symbol extraction
166
- */
167
- export function loadTagsQuery(language) {
168
- return loadSCMQuery(language, "tags");
169
- }
170
- /**
171
- * Load highlights.scm for syntax highlighting
172
- */
173
- export function loadHighlightsQuery(language) {
174
- return loadSCMQuery(language, "highlights");
175
- }
176
- /**
177
- * Load locals.scm for local variable scoping
178
- */
179
- export function loadLocalsQuery(language) {
180
- return loadSCMQuery(language, "locals");
181
- }
182
- /**
183
- * Check which query types are available for a language
184
- */
185
- export function getAvailableQueryTypes(language) {
186
- const types = [
187
- "tags",
188
- "highlights",
189
- "locals",
190
- "injections",
191
- "indents",
192
- "folds",
193
- ];
194
- return types.filter((type) => getSCMPath(language, type) !== undefined);
195
- }
196
- /**
197
- * Check if a language has official tags.scm
198
- */
199
- export function hasOfficialTags(language) {
200
- return getSCMPath(language, "tags") !== undefined;
201
- }
202
- /**
203
- * Get all languages with official tags.scm
204
- */
205
- export function getLanguagesWithTags() {
206
- return Array.from(SUPPORTED_LANGUAGES).filter(hasOfficialTags);
207
- }
208
- /**
209
- * Clear the SCM cache
210
- */
211
- export function clearSCMCache() {
212
- scmCache.clear();
213
- }
214
- // Register cache for centralized clearing
215
- registerCache("queries:scm", clearSCMCache);
216
- //# sourceMappingURL=loader.js.map