src-mcp 1.0.1

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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +721 -0
  3. package/assets/languages.json +219 -0
  4. package/assets/queries/_javascript/highlights.scm +36 -0
  5. package/assets/queries/_javascript/locals.scm +14 -0
  6. package/assets/queries/_javascript/tags.scm +88 -0
  7. package/assets/queries/_jsx/highlights.scm +43 -0
  8. package/assets/queries/_jsx/indents.scm +6 -0
  9. package/assets/queries/_jsx/textobjects.scm +7 -0
  10. package/assets/queries/_typescript/highlights.scm +148 -0
  11. package/assets/queries/_typescript/indents.scm +5 -0
  12. package/assets/queries/_typescript/locals.scm +34 -0
  13. package/assets/queries/_typescript/tags.scm +23 -0
  14. package/assets/queries/_typescript/textobjects.scm +12 -0
  15. package/assets/queries/c/highlights.scm +167 -0
  16. package/assets/queries/c/indents.scm +51 -0
  17. package/assets/queries/c/injections.scm +2 -0
  18. package/assets/queries/c/locals.scm +38 -0
  19. package/assets/queries/c/rainbows.scm +29 -0
  20. package/assets/queries/c/tags.scm +9 -0
  21. package/assets/queries/c/textobjects.scm +27 -0
  22. package/assets/queries/c_sharp/highlights.scm +208 -0
  23. package/assets/queries/c_sharp/injections.scm +2 -0
  24. package/assets/queries/c_sharp/tags.scm +21 -0
  25. package/assets/queries/c_sharp/textobjects.scm +20 -0
  26. package/assets/queries/cpp/highlights.scm +177 -0
  27. package/assets/queries/cpp/indents.scm +3 -0
  28. package/assets/queries/cpp/injections.scm +4 -0
  29. package/assets/queries/cpp/rainbows.scm +49 -0
  30. package/assets/queries/cpp/tags.scm +12 -0
  31. package/assets/queries/cpp/textobjects.scm +7 -0
  32. package/assets/queries/ecma/highlights.scm +288 -0
  33. package/assets/queries/ecma/indents.scm +28 -0
  34. package/assets/queries/ecma/injections.scm +100 -0
  35. package/assets/queries/ecma/locals.scm +26 -0
  36. package/assets/queries/ecma/rainbows.scm +28 -0
  37. package/assets/queries/ecma/textobjects.scm +45 -0
  38. package/assets/queries/go/highlights.scm +236 -0
  39. package/assets/queries/go/indents.scm +40 -0
  40. package/assets/queries/go/injections.scm +92 -0
  41. package/assets/queries/go/locals.scm +25 -0
  42. package/assets/queries/go/rainbows.scm +33 -0
  43. package/assets/queries/go/tags.scm +30 -0
  44. package/assets/queries/go/textobjects.scm +33 -0
  45. package/assets/queries/html/highlights.scm +47 -0
  46. package/assets/queries/html/injections.scm +10 -0
  47. package/assets/queries/html/rainbows.scm +13 -0
  48. package/assets/queries/html/textobjects.scm +9 -0
  49. package/assets/queries/java/highlights.scm +227 -0
  50. package/assets/queries/java/indents.scm +35 -0
  51. package/assets/queries/java/injections.scm +2 -0
  52. package/assets/queries/java/rainbows.scm +35 -0
  53. package/assets/queries/java/tags.scm +27 -0
  54. package/assets/queries/java/textobjects.scm +44 -0
  55. package/assets/queries/javascript/highlights.scm +3 -0
  56. package/assets/queries/javascript/indents.scm +3 -0
  57. package/assets/queries/javascript/injections.scm +3 -0
  58. package/assets/queries/javascript/locals.scm +3 -0
  59. package/assets/queries/javascript/rainbows.scm +1 -0
  60. package/assets/queries/javascript/tags.scm +3 -0
  61. package/assets/queries/javascript/textobjects.scm +3 -0
  62. package/assets/queries/jsx/highlights.scm +3 -0
  63. package/assets/queries/jsx/indents.scm +3 -0
  64. package/assets/queries/jsx/injections.scm +3 -0
  65. package/assets/queries/jsx/locals.scm +3 -0
  66. package/assets/queries/jsx/rainbows.scm +9 -0
  67. package/assets/queries/jsx/tags.scm +3 -0
  68. package/assets/queries/jsx/textobjects.scm +3 -0
  69. package/assets/queries/kotlin/folds.scm +17 -0
  70. package/assets/queries/kotlin/highlights.scm +330 -0
  71. package/assets/queries/kotlin/indents.scm +44 -0
  72. package/assets/queries/kotlin/injections.scm +42 -0
  73. package/assets/queries/kotlin/locals.scm +23 -0
  74. package/assets/queries/kotlin/tags.scm +12 -0
  75. package/assets/queries/kotlin/textobjects.scm +45 -0
  76. package/assets/queries/ocaml/highlights.scm +151 -0
  77. package/assets/queries/ocaml/indents.scm +12 -0
  78. package/assets/queries/ocaml/injections.scm +2 -0
  79. package/assets/queries/ocaml/locals.scm +24 -0
  80. package/assets/queries/php/highlights.scm +319 -0
  81. package/assets/queries/php/indents.scm +18 -0
  82. package/assets/queries/php/injections.scm +25 -0
  83. package/assets/queries/php/rainbows.scm +15 -0
  84. package/assets/queries/php/tags.scm +26 -0
  85. package/assets/queries/php/textobjects.scm +52 -0
  86. package/assets/queries/python/highlights.scm +308 -0
  87. package/assets/queries/python/indents.scm +84 -0
  88. package/assets/queries/python/injections.scm +14 -0
  89. package/assets/queries/python/locals.scm +50 -0
  90. package/assets/queries/python/rainbows.scm +30 -0
  91. package/assets/queries/python/tags.scm +14 -0
  92. package/assets/queries/python/textobjects.scm +35 -0
  93. package/assets/queries/ruby/highlights.scm +191 -0
  94. package/assets/queries/ruby/indents.scm +24 -0
  95. package/assets/queries/ruby/injections.scm +35 -0
  96. package/assets/queries/ruby/locals.scm +20 -0
  97. package/assets/queries/ruby/rainbows.scm +28 -0
  98. package/assets/queries/ruby/tags.scm +64 -0
  99. package/assets/queries/ruby/textobjects.scm +56 -0
  100. package/assets/queries/rust/highlights.scm +514 -0
  101. package/assets/queries/rust/indents.scm +148 -0
  102. package/assets/queries/rust/injections.scm +170 -0
  103. package/assets/queries/rust/locals.scm +28 -0
  104. package/assets/queries/rust/rainbows.scm +60 -0
  105. package/assets/queries/rust/tags.scm +26 -0
  106. package/assets/queries/rust/textobjects.scm +85 -0
  107. package/assets/queries/scala/highlights.scm +267 -0
  108. package/assets/queries/scala/indents.scm +22 -0
  109. package/assets/queries/scala/injections.scm +16 -0
  110. package/assets/queries/scala/locals.scm +14 -0
  111. package/assets/queries/scala/textobjects.scm +65 -0
  112. package/assets/queries/svelte/folds.scm +13 -0
  113. package/assets/queries/svelte/highlights.scm +38 -0
  114. package/assets/queries/svelte/indents.scm +24 -0
  115. package/assets/queries/svelte/injections.scm +46 -0
  116. package/assets/queries/svelte/locals.scm +1 -0
  117. package/assets/queries/swift/highlights.scm +200 -0
  118. package/assets/queries/swift/indents.scm +100 -0
  119. package/assets/queries/swift/injections.scm +10 -0
  120. package/assets/queries/swift/locals.scm +19 -0
  121. package/assets/queries/swift/rainbows.scm +60 -0
  122. package/assets/queries/swift/textobjects.scm +23 -0
  123. package/assets/queries/tsx/highlights.scm +3 -0
  124. package/assets/queries/tsx/indents.scm +3 -0
  125. package/assets/queries/tsx/injections.scm +3 -0
  126. package/assets/queries/tsx/locals.scm +3 -0
  127. package/assets/queries/tsx/rainbows.scm +2 -0
  128. package/assets/queries/tsx/tags.scm +3 -0
  129. package/assets/queries/tsx/textobjects.scm +3 -0
  130. package/assets/queries/typescript/highlights.scm +3 -0
  131. package/assets/queries/typescript/indents.scm +3 -0
  132. package/assets/queries/typescript/injections.scm +3 -0
  133. package/assets/queries/typescript/locals.scm +3 -0
  134. package/assets/queries/typescript/rainbows.scm +19 -0
  135. package/assets/queries/typescript/tags.scm +3 -0
  136. package/assets/queries/typescript/textobjects.scm +3 -0
  137. package/assets/wasm/tree-sitter-c.wasm +0 -0
  138. package/assets/wasm/tree-sitter-c_sharp.wasm +0 -0
  139. package/assets/wasm/tree-sitter-cpp.wasm +0 -0
  140. package/assets/wasm/tree-sitter-go.wasm +0 -0
  141. package/assets/wasm/tree-sitter-html.wasm +0 -0
  142. package/assets/wasm/tree-sitter-java.wasm +0 -0
  143. package/assets/wasm/tree-sitter-javascript.wasm +0 -0
  144. package/assets/wasm/tree-sitter-kotlin.wasm +0 -0
  145. package/assets/wasm/tree-sitter-ocaml.wasm +0 -0
  146. package/assets/wasm/tree-sitter-php.wasm +0 -0
  147. package/assets/wasm/tree-sitter-python.wasm +0 -0
  148. package/assets/wasm/tree-sitter-ruby.wasm +0 -0
  149. package/assets/wasm/tree-sitter-rust.wasm +0 -0
  150. package/assets/wasm/tree-sitter-scala.wasm +0 -0
  151. package/assets/wasm/tree-sitter-svelte.wasm +0 -0
  152. package/assets/wasm/tree-sitter-swift.wasm +0 -0
  153. package/assets/wasm/tree-sitter-tsx.wasm +0 -0
  154. package/assets/wasm/tree-sitter-typescript.wasm +0 -0
  155. package/dist/bin.d.ts +3 -0
  156. package/dist/bin.d.ts.map +1 -0
  157. package/dist/bin.js +4 -0
  158. package/dist/bin.js.map +1 -0
  159. package/dist/cli/adapter.d.ts +7 -0
  160. package/dist/cli/adapter.d.ts.map +1 -0
  161. package/dist/cli/adapter.js +39 -0
  162. package/dist/cli/adapter.js.map +1 -0
  163. package/dist/cli/commands/index.d.ts +24 -0
  164. package/dist/cli/commands/index.d.ts.map +1 -0
  165. package/dist/cli/commands/index.js +13 -0
  166. package/dist/cli/commands/index.js.map +1 -0
  167. package/dist/cli/commands/serve.command.d.ts +21 -0
  168. package/dist/cli/commands/serve.command.d.ts.map +1 -0
  169. package/dist/cli/commands/serve.command.js +62 -0
  170. package/dist/cli/commands/serve.command.js.map +1 -0
  171. package/dist/cli/commands/version.command.d.ts +2 -0
  172. package/dist/cli/commands/version.command.d.ts.map +1 -0
  173. package/dist/cli/commands/version.command.js +12 -0
  174. package/dist/cli/commands/version.command.js.map +1 -0
  175. package/dist/cli/index.d.ts +2 -0
  176. package/dist/cli/index.d.ts.map +1 -0
  177. package/dist/cli/index.js +15 -0
  178. package/dist/cli/index.js.map +1 -0
  179. package/dist/cli/parser.d.ts +7 -0
  180. package/dist/cli/parser.d.ts.map +1 -0
  181. package/dist/cli/parser.js +99 -0
  182. package/dist/cli/parser.js.map +1 -0
  183. package/dist/config/index.d.ts +24 -0
  184. package/dist/config/index.d.ts.map +1 -0
  185. package/dist/config/index.js +38 -0
  186. package/dist/config/index.js.map +1 -0
  187. package/dist/core/ast/index.d.ts +82 -0
  188. package/dist/core/ast/index.d.ts.map +1 -0
  189. package/dist/core/ast/index.js +204 -0
  190. package/dist/core/ast/index.js.map +1 -0
  191. package/dist/core/ast/types.d.ts +152 -0
  192. package/dist/core/ast/types.d.ts.map +1 -0
  193. package/dist/core/ast/types.js +5 -0
  194. package/dist/core/ast/types.js.map +1 -0
  195. package/dist/core/constants.d.ts +17 -0
  196. package/dist/core/constants.d.ts.map +1 -0
  197. package/dist/core/constants.js +49 -0
  198. package/dist/core/constants.js.map +1 -0
  199. package/dist/core/embeddings/callgraph.d.ts +98 -0
  200. package/dist/core/embeddings/callgraph.d.ts.map +1 -0
  201. package/dist/core/embeddings/callgraph.js +415 -0
  202. package/dist/core/embeddings/callgraph.js.map +1 -0
  203. package/dist/core/embeddings/chunker.d.ts +37 -0
  204. package/dist/core/embeddings/chunker.d.ts.map +1 -0
  205. package/dist/core/embeddings/chunker.js +298 -0
  206. package/dist/core/embeddings/chunker.js.map +1 -0
  207. package/dist/core/embeddings/client.d.ts +30 -0
  208. package/dist/core/embeddings/client.d.ts.map +1 -0
  209. package/dist/core/embeddings/client.js +65 -0
  210. package/dist/core/embeddings/client.js.map +1 -0
  211. package/dist/core/embeddings/crossfile.d.ts +58 -0
  212. package/dist/core/embeddings/crossfile.d.ts.map +1 -0
  213. package/dist/core/embeddings/crossfile.js +202 -0
  214. package/dist/core/embeddings/crossfile.js.map +1 -0
  215. package/dist/core/embeddings/enricher.d.ts +53 -0
  216. package/dist/core/embeddings/enricher.d.ts.map +1 -0
  217. package/dist/core/embeddings/enricher.js +308 -0
  218. package/dist/core/embeddings/enricher.js.map +1 -0
  219. package/dist/core/embeddings/index.d.ts +13 -0
  220. package/dist/core/embeddings/index.d.ts.map +1 -0
  221. package/dist/core/embeddings/index.js +20 -0
  222. package/dist/core/embeddings/index.js.map +1 -0
  223. package/dist/core/embeddings/reranker.d.ts +41 -0
  224. package/dist/core/embeddings/reranker.d.ts.map +1 -0
  225. package/dist/core/embeddings/reranker.js +117 -0
  226. package/dist/core/embeddings/reranker.js.map +1 -0
  227. package/dist/core/embeddings/store.d.ts +93 -0
  228. package/dist/core/embeddings/store.d.ts.map +1 -0
  229. package/dist/core/embeddings/store.js +304 -0
  230. package/dist/core/embeddings/store.js.map +1 -0
  231. package/dist/core/embeddings/types.d.ts +77 -0
  232. package/dist/core/embeddings/types.d.ts.map +1 -0
  233. package/dist/core/embeddings/types.js +5 -0
  234. package/dist/core/embeddings/types.js.map +1 -0
  235. package/dist/core/embeddings/watcher.d.ts +130 -0
  236. package/dist/core/embeddings/watcher.d.ts.map +1 -0
  237. package/dist/core/embeddings/watcher.js +448 -0
  238. package/dist/core/embeddings/watcher.js.map +1 -0
  239. package/dist/core/fallback/index.d.ts +26 -0
  240. package/dist/core/fallback/index.d.ts.map +1 -0
  241. package/dist/core/fallback/index.js +76 -0
  242. package/dist/core/fallback/index.js.map +1 -0
  243. package/dist/core/parser/index.d.ts +64 -0
  244. package/dist/core/parser/index.d.ts.map +1 -0
  245. package/dist/core/parser/index.js +205 -0
  246. package/dist/core/parser/index.js.map +1 -0
  247. package/dist/core/parser/languages.d.ts +26 -0
  248. package/dist/core/parser/languages.d.ts.map +1 -0
  249. package/dist/core/parser/languages.js +101 -0
  250. package/dist/core/parser/languages.js.map +1 -0
  251. package/dist/core/queries/helpers.d.ts +72 -0
  252. package/dist/core/queries/helpers.d.ts.map +1 -0
  253. package/dist/core/queries/helpers.js +101 -0
  254. package/dist/core/queries/helpers.js.map +1 -0
  255. package/dist/core/queries/index.d.ts +144 -0
  256. package/dist/core/queries/index.d.ts.map +1 -0
  257. package/dist/core/queries/index.js +396 -0
  258. package/dist/core/queries/index.js.map +1 -0
  259. package/dist/core/queries/loader.d.ts +46 -0
  260. package/dist/core/queries/loader.d.ts.map +1 -0
  261. package/dist/core/queries/loader.js +216 -0
  262. package/dist/core/queries/loader.js.map +1 -0
  263. package/dist/core/queries/patterns.d.ts +10 -0
  264. package/dist/core/queries/patterns.d.ts.map +1 -0
  265. package/dist/core/queries/patterns.js +112 -0
  266. package/dist/core/queries/patterns.js.map +1 -0
  267. package/dist/core/symbols/index.d.ts +70 -0
  268. package/dist/core/symbols/index.d.ts.map +1 -0
  269. package/dist/core/symbols/index.js +359 -0
  270. package/dist/core/symbols/index.js.map +1 -0
  271. package/dist/core/unified/index.d.ts +118 -0
  272. package/dist/core/unified/index.d.ts.map +1 -0
  273. package/dist/core/unified/index.js +428 -0
  274. package/dist/core/unified/index.js.map +1 -0
  275. package/dist/core/utils/assets.d.ts +34 -0
  276. package/dist/core/utils/assets.d.ts.map +1 -0
  277. package/dist/core/utils/assets.js +85 -0
  278. package/dist/core/utils/assets.js.map +1 -0
  279. package/dist/core/utils/cache.d.ts +43 -0
  280. package/dist/core/utils/cache.d.ts.map +1 -0
  281. package/dist/core/utils/cache.js +60 -0
  282. package/dist/core/utils/cache.js.map +1 -0
  283. package/dist/core/utils/index.d.ts +7 -0
  284. package/dist/core/utils/index.d.ts.map +1 -0
  285. package/dist/core/utils/index.js +10 -0
  286. package/dist/core/utils/index.js.map +1 -0
  287. package/dist/core/utils/tsconfig.d.ts +34 -0
  288. package/dist/core/utils/tsconfig.d.ts.map +1 -0
  289. package/dist/core/utils/tsconfig.js +173 -0
  290. package/dist/core/utils/tsconfig.js.map +1 -0
  291. package/dist/features/analyze-file/index.d.ts +15 -0
  292. package/dist/features/analyze-file/index.d.ts.map +1 -0
  293. package/dist/features/analyze-file/index.js +164 -0
  294. package/dist/features/analyze-file/index.js.map +1 -0
  295. package/dist/features/get-call-graph/index.d.ts +24 -0
  296. package/dist/features/get-call-graph/index.d.ts.map +1 -0
  297. package/dist/features/get-call-graph/index.js +246 -0
  298. package/dist/features/get-call-graph/index.js.map +1 -0
  299. package/dist/features/get-index-status/index.d.ts +20 -0
  300. package/dist/features/get-index-status/index.d.ts.map +1 -0
  301. package/dist/features/get-index-status/index.js +90 -0
  302. package/dist/features/get-index-status/index.js.map +1 -0
  303. package/dist/features/index-codebase/index.d.ts +24 -0
  304. package/dist/features/index-codebase/index.d.ts.map +1 -0
  305. package/dist/features/index-codebase/index.js +283 -0
  306. package/dist/features/index-codebase/index.js.map +1 -0
  307. package/dist/features/index.d.ts +15 -0
  308. package/dist/features/index.d.ts.map +1 -0
  309. package/dist/features/index.js +28 -0
  310. package/dist/features/index.js.map +1 -0
  311. package/dist/features/info/index.d.ts +19 -0
  312. package/dist/features/info/index.d.ts.map +1 -0
  313. package/dist/features/info/index.js +41 -0
  314. package/dist/features/info/index.js.map +1 -0
  315. package/dist/features/list-symbols/index.d.ts +22 -0
  316. package/dist/features/list-symbols/index.d.ts.map +1 -0
  317. package/dist/features/list-symbols/index.js +74 -0
  318. package/dist/features/list-symbols/index.js.map +1 -0
  319. package/dist/features/parse-ast/index.d.ts +12 -0
  320. package/dist/features/parse-ast/index.d.ts.map +1 -0
  321. package/dist/features/parse-ast/index.js +71 -0
  322. package/dist/features/parse-ast/index.js.map +1 -0
  323. package/dist/features/query-code/index.d.ts +23 -0
  324. package/dist/features/query-code/index.d.ts.map +1 -0
  325. package/dist/features/query-code/index.js +96 -0
  326. package/dist/features/query-code/index.js.map +1 -0
  327. package/dist/features/search-code/index.d.ts +39 -0
  328. package/dist/features/search-code/index.d.ts.map +1 -0
  329. package/dist/features/search-code/index.js +258 -0
  330. package/dist/features/search-code/index.js.map +1 -0
  331. package/dist/features/types.d.ts +14 -0
  332. package/dist/features/types.d.ts.map +1 -0
  333. package/dist/features/types.js +2 -0
  334. package/dist/features/types.js.map +1 -0
  335. package/dist/features/update-index/index.d.ts +24 -0
  336. package/dist/features/update-index/index.d.ts.map +1 -0
  337. package/dist/features/update-index/index.js +358 -0
  338. package/dist/features/update-index/index.js.map +1 -0
  339. package/dist/features/utils/content.d.ts +30 -0
  340. package/dist/features/utils/content.d.ts.map +1 -0
  341. package/dist/features/utils/content.js +49 -0
  342. package/dist/features/utils/content.js.map +1 -0
  343. package/dist/features/utils/index.d.ts +6 -0
  344. package/dist/features/utils/index.d.ts.map +1 -0
  345. package/dist/features/utils/index.js +8 -0
  346. package/dist/features/utils/index.js.map +1 -0
  347. package/dist/features/utils/result.d.ts +37 -0
  348. package/dist/features/utils/result.d.ts.map +1 -0
  349. package/dist/features/utils/result.js +53 -0
  350. package/dist/features/utils/result.js.map +1 -0
  351. package/dist/index.d.ts +2 -0
  352. package/dist/index.d.ts.map +1 -0
  353. package/dist/index.js +4 -0
  354. package/dist/index.js.map +1 -0
  355. package/dist/prompts/index.d.ts +9 -0
  356. package/dist/prompts/index.d.ts.map +1 -0
  357. package/dist/prompts/index.js +188 -0
  358. package/dist/prompts/index.js.map +1 -0
  359. package/dist/resources/index.d.ts +3 -0
  360. package/dist/resources/index.d.ts.map +1 -0
  361. package/dist/resources/index.js +17 -0
  362. package/dist/resources/index.js.map +1 -0
  363. package/dist/server.d.ts +4 -0
  364. package/dist/server.d.ts.map +1 -0
  365. package/dist/server.js +24 -0
  366. package/dist/server.js.map +1 -0
  367. package/dist/tools/adapter.d.ts +4 -0
  368. package/dist/tools/adapter.d.ts.map +1 -0
  369. package/dist/tools/adapter.js +28 -0
  370. package/dist/tools/adapter.js.map +1 -0
  371. package/dist/tools/index.d.ts +5 -0
  372. package/dist/tools/index.d.ts.map +1 -0
  373. package/dist/tools/index.js +9 -0
  374. package/dist/tools/index.js.map +1 -0
  375. package/dist/types/index.d.ts +20 -0
  376. package/dist/types/index.d.ts.map +1 -0
  377. package/dist/types/index.js +2 -0
  378. package/dist/types/index.js.map +1 -0
  379. package/dist/utils/colors.d.ts +24 -0
  380. package/dist/utils/colors.d.ts.map +1 -0
  381. package/dist/utils/colors.js +30 -0
  382. package/dist/utils/colors.js.map +1 -0
  383. package/dist/utils/index.d.ts +4 -0
  384. package/dist/utils/index.d.ts.map +1 -0
  385. package/dist/utils/index.js +4 -0
  386. package/dist/utils/index.js.map +1 -0
  387. package/dist/utils/logger.d.ts +8 -0
  388. package/dist/utils/logger.d.ts.map +1 -0
  389. package/dist/utils/logger.js +57 -0
  390. package/dist/utils/logger.js.map +1 -0
  391. package/dist/utils/spinner.d.ts +11 -0
  392. package/dist/utils/spinner.d.ts.map +1 -0
  393. package/dist/utils/spinner.js +36 -0
  394. package/dist/utils/spinner.js.map +1 -0
  395. package/package.json +110 -0
@@ -0,0 +1,96 @@
1
+ import { z } from "zod";
2
+ import { parseCode } from "@core/parser";
3
+ import { executePresetQuery, executeQuery, getAvailablePresets, } from "@core/queries";
4
+ import { errorMessage, errorResult, readContent, successResult, } from "@features/utils";
5
+ const presetValues = [
6
+ "functions",
7
+ "classes",
8
+ "imports",
9
+ "exports",
10
+ "comments",
11
+ "strings",
12
+ "variables",
13
+ "types",
14
+ ];
15
+ export const queryCodeSchema = z
16
+ .object({
17
+ file_path: z
18
+ .string()
19
+ .optional()
20
+ .describe("Path to the file to query (either file_path or content required)"),
21
+ content: z
22
+ .string()
23
+ .optional()
24
+ .describe("Code content to query directly (either file_path or content required)"),
25
+ language: z
26
+ .string()
27
+ .optional()
28
+ .describe("Language name (auto-detected from file path if not provided)"),
29
+ query: z
30
+ .string()
31
+ .optional()
32
+ .describe("SCM query pattern (either query or preset required)"),
33
+ preset: z
34
+ .enum(presetValues)
35
+ .optional()
36
+ .describe("Preset query name: functions, classes, imports, exports, comments, strings, variables, types"),
37
+ max_matches: z
38
+ .number()
39
+ .int()
40
+ .positive()
41
+ .optional()
42
+ .describe("Maximum number of matches to return"),
43
+ })
44
+ .refine((data) => data.file_path ?? data.content, {
45
+ message: "Either file_path or content must be provided",
46
+ })
47
+ .refine((data) => data.query ?? data.preset, {
48
+ message: "Either query or preset must be provided",
49
+ });
50
+ export async function execute(input) {
51
+ const { file_path, content: inputContent, language, query, preset, max_matches, } = input;
52
+ // Get content
53
+ const contentResult = readContent(file_path, inputContent);
54
+ if (!contentResult.success) {
55
+ return { success: false, error: contentResult.error };
56
+ }
57
+ try {
58
+ // Parse the code
59
+ const parseResult = await parseCode(contentResult.content, {
60
+ language,
61
+ filePath: file_path,
62
+ });
63
+ // Execute query
64
+ let result;
65
+ if (preset) {
66
+ // Check if preset is available for this language
67
+ const availablePresets = getAvailablePresets(parseResult.language);
68
+ if (!availablePresets.includes(preset)) {
69
+ return errorMessage(`Preset '${preset}' is not available for ${parseResult.language}. Available presets: ${availablePresets.join(", ")}`);
70
+ }
71
+ result = executePresetQuery(parseResult.tree, parseResult.languageInstance, parseResult.language, preset, { maxMatches: max_matches });
72
+ }
73
+ else if (query) {
74
+ result = executeQuery(parseResult.tree, parseResult.languageInstance, query, parseResult.language, { maxMatches: max_matches });
75
+ }
76
+ else {
77
+ return errorMessage("Either query or preset must be provided");
78
+ }
79
+ return successResult({
80
+ matches: result.matches,
81
+ count: result.count,
82
+ language: result.language,
83
+ query: result.query,
84
+ }, `Found ${String(result.count)} match${result.count === 1 ? "" : "es"} in ${parseResult.language} code`);
85
+ }
86
+ catch (error) {
87
+ return errorResult("query", error);
88
+ }
89
+ }
90
+ export const queryCodeFeature = {
91
+ name: "query_code",
92
+ description: "Execute Tree-sitter SCM queries on code to find patterns. Use preset queries (functions, classes, imports, exports, comments, strings, variables, types) or custom SCM query patterns.",
93
+ schema: queryCodeSchema,
94
+ execute,
95
+ };
96
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/query-code/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Search Code Feature
3
+ *
4
+ * Performs hybrid search on indexed codebase combining:
5
+ * 1. Vector similarity search (semantic embeddings via Ollama)
6
+ * 2. Full-text search (BM25 keyword matching)
7
+ * 3. RRF (Reciprocal Rank Fusion) to combine results
8
+ *
9
+ * Supports three search modes:
10
+ * - 'hybrid' (default): Best of both vector and keyword search
11
+ * - 'vector': Semantic search only
12
+ * - 'fts': Keyword search only
13
+ *
14
+ * Optional features:
15
+ * - LLM re-ranking for improved relevance
16
+ * - Call context to show callers/callees for each result
17
+ */
18
+ import { z } from "zod";
19
+ import type { Feature, FeatureResult } from "@features/types";
20
+ export declare const searchCodeSchema: z.ZodObject<{
21
+ query: z.ZodString;
22
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
23
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
24
+ threshold: z.ZodOptional<z.ZodNumber>;
25
+ mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
26
+ vector: "vector";
27
+ fts: "fts";
28
+ hybrid: "hybrid";
29
+ }>>>;
30
+ rerank: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
31
+ includeCallContext: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
32
+ }, z.core.$strip>;
33
+ export type SearchCodeInput = z.infer<typeof searchCodeSchema>;
34
+ /**
35
+ * Execute the search_code feature
36
+ */
37
+ export declare function execute(input: SearchCodeInput): Promise<FeatureResult>;
38
+ export declare const searchCodeFeature: Feature<typeof searchCodeSchema>;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/search-code/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAa9D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAyC3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAkG/D;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAoK5E;AAED,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,OAAO,gBAAgB,CAM9D,CAAC"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Search Code Feature
3
+ *
4
+ * Performs hybrid search on indexed codebase combining:
5
+ * 1. Vector similarity search (semantic embeddings via Ollama)
6
+ * 2. Full-text search (BM25 keyword matching)
7
+ * 3. RRF (Reciprocal Rank Fusion) to combine results
8
+ *
9
+ * Supports three search modes:
10
+ * - 'hybrid' (default): Best of both vector and keyword search
11
+ * - 'vector': Semantic search only
12
+ * - 'fts': Keyword search only
13
+ *
14
+ * Optional features:
15
+ * - LLM re-ranking for improved relevance
16
+ * - Call context to show callers/callees for each result
17
+ */
18
+ import { z } from "zod";
19
+ import * as fs from "node:fs";
20
+ import * as path from "node:path";
21
+ import ignore from "ignore";
22
+ import { EMBEDDING_CONFIG } from "@config";
23
+ import { createOllamaClient, createVectorStore, rerank, buildCallGraph, getCallContext, shouldIndexFile, } from "@core/embeddings";
24
+ export const searchCodeSchema = z.object({
25
+ query: z.string().min(1).describe("Natural language search query"),
26
+ directory: z
27
+ .string()
28
+ .optional()
29
+ .default(".")
30
+ .describe("Path to the indexed directory (defaults to current directory)"),
31
+ limit: z
32
+ .number()
33
+ .int()
34
+ .positive()
35
+ .optional()
36
+ .default(10)
37
+ .describe("Maximum number of results to return"),
38
+ threshold: z
39
+ .number()
40
+ .min(0)
41
+ .max(2)
42
+ .optional()
43
+ .describe("Maximum distance threshold for results (lower = more similar)"),
44
+ mode: z
45
+ .enum(["vector", "fts", "hybrid"])
46
+ .optional()
47
+ .default("hybrid")
48
+ .describe("Search mode: 'vector' (semantic only), 'fts' (keyword only), 'hybrid' (combined with RRF fusion)"),
49
+ rerank: z
50
+ .boolean()
51
+ .optional()
52
+ .default(true)
53
+ .describe("Enable LLM re-ranking for improved relevance (enabled by default)"),
54
+ includeCallContext: z
55
+ .boolean()
56
+ .optional()
57
+ .default(true)
58
+ .describe("Include caller/callee information for each result (uses cached call graph)"),
59
+ });
60
+ /**
61
+ * Create gitignore filter
62
+ */
63
+ function createIgnoreFilter(directory) {
64
+ const ig = ignore();
65
+ ig.add(["node_modules", ".git", "dist", "build", ".src-index"]);
66
+ const gitignorePath = path.join(directory, ".gitignore");
67
+ if (fs.existsSync(gitignorePath)) {
68
+ const content = fs.readFileSync(gitignorePath, "utf-8");
69
+ ig.add(content);
70
+ }
71
+ return ig;
72
+ }
73
+ /**
74
+ * Check if hidden file/folder
75
+ */
76
+ function isHidden(name) {
77
+ return name.startsWith(".");
78
+ }
79
+ /**
80
+ * Recursively collect files for call graph
81
+ */
82
+ function collectFiles(dir, ig, baseDir) {
83
+ const files = [];
84
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
85
+ for (const entry of entries) {
86
+ if (isHidden(entry.name)) {
87
+ continue;
88
+ }
89
+ const fullPath = path.join(dir, entry.name);
90
+ const relativePath = path.relative(baseDir, fullPath).replace(/\\/g, "/");
91
+ if (ig.ignores(relativePath)) {
92
+ continue;
93
+ }
94
+ if (entry.isDirectory()) {
95
+ files.push(...collectFiles(fullPath, ig, baseDir));
96
+ }
97
+ else if (entry.isFile() && shouldIndexFile(entry.name)) {
98
+ files.push(fullPath);
99
+ }
100
+ }
101
+ return files;
102
+ }
103
+ /**
104
+ * Format search results for output
105
+ */
106
+ function formatResults(results, baseDir) {
107
+ return results.map((r) => ({
108
+ filePath: path.relative(baseDir, r.chunk.filePath),
109
+ language: r.chunk.language,
110
+ startLine: r.chunk.startLine,
111
+ endLine: r.chunk.endLine,
112
+ content: r.chunk.content,
113
+ score: r.score,
114
+ symbolName: r.chunk.symbolName,
115
+ symbolType: r.chunk.symbolType,
116
+ }));
117
+ }
118
+ /**
119
+ * Execute the search_code feature
120
+ */
121
+ export async function execute(input) {
122
+ const { query, directory, limit, threshold, mode, rerank: enableRerank, includeCallContext, } = input;
123
+ // Validate directory exists
124
+ if (!fs.existsSync(directory)) {
125
+ return {
126
+ success: false,
127
+ error: `Directory not found: ${directory}`,
128
+ };
129
+ }
130
+ const absoluteDir = path.resolve(directory);
131
+ // Initialize components
132
+ const ollamaClient = createOllamaClient(EMBEDDING_CONFIG);
133
+ const vectorStore = createVectorStore(absoluteDir, EMBEDDING_CONFIG);
134
+ // Check if index exists
135
+ if (!vectorStore.exists()) {
136
+ return {
137
+ success: false,
138
+ error: `No index found for directory. Run index_codebase first: ${absoluteDir}`,
139
+ };
140
+ }
141
+ try {
142
+ // Check Ollama health
143
+ const health = await ollamaClient.healthCheck();
144
+ if (!health.ok) {
145
+ return {
146
+ success: false,
147
+ error: health.error ?? "Ollama is not available",
148
+ };
149
+ }
150
+ // Connect to vector store
151
+ await vectorStore.connect();
152
+ // Generate query embedding
153
+ const queryVector = await ollamaClient.embed(query);
154
+ // Search for similar chunks using hybrid search (vector + BM25 + RRF)
155
+ let results = await vectorStore.searchHybrid(queryVector, query, limit, {
156
+ mode: mode,
157
+ });
158
+ // Apply threshold filter if specified (only for vector mode where lower = better)
159
+ // For hybrid/fts modes, RRF scores are higher = better, so threshold is ignored
160
+ if (threshold !== undefined && mode === "vector") {
161
+ results = results.filter((r) => r.score <= threshold);
162
+ }
163
+ // Apply LLM re-ranking if enabled (default: true)
164
+ if (enableRerank && results.length > 0) {
165
+ results = await rerank(query, results, {
166
+ ollamaBaseUrl: EMBEDDING_CONFIG.ollamaBaseUrl,
167
+ model: EMBEDDING_CONFIG.rerankModel,
168
+ maxResults: limit,
169
+ });
170
+ }
171
+ vectorStore.close();
172
+ let formattedResults = formatResults(results, absoluteDir);
173
+ // Add call context if requested
174
+ if (includeCallContext && formattedResults.length > 0) {
175
+ // Build call graph for the directory
176
+ const ig = createIgnoreFilter(absoluteDir);
177
+ const files = collectFiles(absoluteDir, ig, absoluteDir);
178
+ const fileContents = files.map((f) => ({
179
+ path: f,
180
+ content: fs.readFileSync(f, "utf-8"),
181
+ }));
182
+ const callGraph = await buildCallGraph(fileContents);
183
+ // Add call context to each result that has a symbol name
184
+ formattedResults = formattedResults.map((result) => {
185
+ if (!result.symbolName) {
186
+ return result;
187
+ }
188
+ const fullPath = path.join(absoluteDir, result.filePath);
189
+ const context = getCallContext(callGraph, fullPath, result.symbolName);
190
+ if (context) {
191
+ return {
192
+ ...result,
193
+ callContext: {
194
+ callers: context.callers.map((c) => c.name),
195
+ callees: context.callees.map((c) => c.name),
196
+ },
197
+ };
198
+ }
199
+ return result;
200
+ });
201
+ }
202
+ const output = {
203
+ query,
204
+ directory: absoluteDir,
205
+ resultsCount: formattedResults.length,
206
+ results: formattedResults,
207
+ };
208
+ if (formattedResults.length === 0) {
209
+ return {
210
+ success: true,
211
+ message: "No matching code found",
212
+ data: output,
213
+ };
214
+ }
215
+ // Build text message with results
216
+ const resultLines = formattedResults.map((r, i) => {
217
+ const location = `${r.filePath}:${String(r.startLine)}-${String(r.endLine)}`;
218
+ const symbol = r.symbolName
219
+ ? ` (${r.symbolType ?? "symbol"}: ${r.symbolName})`
220
+ : "";
221
+ const preview = r.content.slice(0, 100).replace(/\n/g, " ");
222
+ let callInfo = "";
223
+ if (r.callContext) {
224
+ const callers = r.callContext.callers.length > 0
225
+ ? `Called by: ${r.callContext.callers.slice(0, 3).join(", ")}${r.callContext.callers.length > 3 ? "..." : ""}`
226
+ : "";
227
+ const callees = r.callContext.callees.length > 0
228
+ ? `Calls: ${r.callContext.callees.slice(0, 3).join(", ")}${r.callContext.callees.length > 3 ? "..." : ""}`
229
+ : "";
230
+ if (callers || callees) {
231
+ callInfo = `\n ${[callers, callees].filter(Boolean).join(" | ")}`;
232
+ }
233
+ }
234
+ return `${String(i + 1)}. [${r.language}] ${location}${symbol}\n ${preview}...${callInfo}`;
235
+ });
236
+ const message = `Found ${String(formattedResults.length)} results for "${query}":\n\n${resultLines.join("\n\n")}`;
237
+ return {
238
+ success: true,
239
+ message,
240
+ data: output,
241
+ };
242
+ }
243
+ catch (err) {
244
+ vectorStore.close();
245
+ const errorMsg = err instanceof Error ? err.message : String(err);
246
+ return {
247
+ success: false,
248
+ error: `Search failed: ${errorMsg}`,
249
+ };
250
+ }
251
+ }
252
+ export const searchCodeFeature = {
253
+ name: "search_code",
254
+ description: "Search code semantically using natural language queries. USE THIS to find code by concept/meaning (e.g., 'authentication logic', 'error handling'). Requires index_codebase first. Returns relevant code chunks with file locations, function names, and call relationships (who calls what).",
255
+ schema: searchCodeSchema,
256
+ execute,
257
+ };
258
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/search-code/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { z } from "zod";
2
+ export interface FeatureResult {
3
+ success: boolean;
4
+ data?: unknown;
5
+ message?: string;
6
+ error?: string;
7
+ }
8
+ export interface Feature<TInput extends z.ZodType = z.ZodType> {
9
+ name: string;
10
+ description: string;
11
+ schema: TInput;
12
+ execute: (input: z.infer<TInput>) => FeatureResult | Promise<FeatureResult>;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/features/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/features/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Update Index Feature
3
+ *
4
+ * Incrementally updates the codebase index by:
5
+ * 1. Detecting files that have changed since last indexing
6
+ * 2. Re-indexing only the changed files
7
+ * 3. Removing deleted files from the index
8
+ *
9
+ * Uses SHA-256 hash comparison to detect real content changes.
10
+ */
11
+ import { z } from "zod";
12
+ import type { Feature, FeatureResult } from "@features/types";
13
+ export declare const updateIndexSchema: z.ZodObject<{
14
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
15
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
16
+ force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ }, z.core.$strip>;
18
+ export type UpdateIndexInput = z.infer<typeof updateIndexSchema>;
19
+ /**
20
+ * Execute the update_index feature
21
+ */
22
+ export declare function execute(input: UpdateIndexInput): Promise<FeatureResult>;
23
+ export declare const updateIndexFeature: Feature<typeof updateIndexSchema>;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/update-index/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgB9D,eAAO,MAAM,iBAAiB;;;;iBAgB5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AA6GjE;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+L7E;AAuFD,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAMhE,CAAC"}