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,93 @@
1
+ /**
2
+ * LanceDB vector store for code embeddings
3
+ *
4
+ * Supports:
5
+ * - Vector similarity search (embeddings)
6
+ * - Full-text search (BM25)
7
+ * - Hybrid search with RRF (Reciprocal Rank Fusion)
8
+ */
9
+ import type { EmbeddedChunk, EmbeddingConfig, IndexStatus, SearchResult } from "@core/embeddings/types";
10
+ /**
11
+ * Search mode for queries
12
+ */
13
+ export type SearchMode = "vector" | "fts" | "hybrid";
14
+ /**
15
+ * Options for hybrid search
16
+ */
17
+ export interface HybridSearchOptions {
18
+ /** Search mode: vector only, fts only, or hybrid (default: hybrid) */
19
+ mode?: SearchMode;
20
+ /** Weight for vector search in hybrid mode (0-1, default: 0.5) */
21
+ vectorWeight?: number;
22
+ /** RRF constant k for rank fusion (default: 60) */
23
+ rrfK?: number;
24
+ }
25
+ /**
26
+ * LanceDB vector store wrapper
27
+ */
28
+ export declare class VectorStore {
29
+ private db;
30
+ private table;
31
+ private readonly indexPath;
32
+ private ftsIndexCreated;
33
+ constructor(directory: string, _config: Pick<EmbeddingConfig, "embeddingDimensions">);
34
+ /**
35
+ * Initialize the database connection
36
+ */
37
+ connect(): Promise<void>;
38
+ /**
39
+ * Close the database connection
40
+ */
41
+ close(): void;
42
+ /**
43
+ * Check if the index exists
44
+ */
45
+ exists(): boolean;
46
+ /**
47
+ * Add embedded chunks to the store
48
+ */
49
+ addChunks(chunks: EmbeddedChunk[]): Promise<void>;
50
+ /**
51
+ * Create FTS (Full-Text Search) index on content column
52
+ * This enables BM25-based text search
53
+ */
54
+ createFtsIndex(): Promise<void>;
55
+ /**
56
+ * Search for similar chunks using vector similarity
57
+ */
58
+ search(queryVector: number[], limit?: number): Promise<SearchResult[]>;
59
+ /**
60
+ * Full-text search using BM25
61
+ */
62
+ searchFts(queryText: string, limit?: number): Promise<SearchResult[]>;
63
+ /**
64
+ * Hybrid search combining vector similarity and full-text search
65
+ * Uses Reciprocal Rank Fusion (RRF) to combine results
66
+ */
67
+ searchHybrid(queryVector: number[], queryText: string, limit?: number, options?: HybridSearchOptions): Promise<SearchResult[]>;
68
+ /**
69
+ * Delete chunks by file path
70
+ */
71
+ deleteByFilePath(filePath: string): Promise<void>;
72
+ /**
73
+ * Clear all data from the store
74
+ */
75
+ clear(): Promise<void>;
76
+ /**
77
+ * Get index status
78
+ */
79
+ getStatus(directory: string): Promise<IndexStatus>;
80
+ /**
81
+ * Get all indexed file paths
82
+ */
83
+ getIndexedFiles(): Promise<string[]>;
84
+ }
85
+ /**
86
+ * Create a vector store for a directory
87
+ */
88
+ export declare function createVectorStore(directory: string, config: Pick<EmbeddingConfig, "embeddingDimensions">): VectorStore;
89
+ /**
90
+ * Get the index path for a directory
91
+ */
92
+ export declare function getIndexPath(directory: string): string;
93
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,wBAAwB,CAAC;AAMhC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAkED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,eAAe,CAAS;gBAG9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAKvD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvD;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrC;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyBxE;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqCvE;;;OAGG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,SAAK,EACV,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC;IA8B1B;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAiB3C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC,GACnD,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,304 @@
1
+ /**
2
+ * LanceDB vector store for code embeddings
3
+ *
4
+ * Supports:
5
+ * - Vector similarity search (embeddings)
6
+ * - Full-text search (BM25)
7
+ * - Hybrid search with RRF (Reciprocal Rank Fusion)
8
+ */
9
+ import * as lancedb from "@lancedb/lancedb";
10
+ import * as fs from "node:fs";
11
+ import * as path from "node:path";
12
+ import { logger } from "@utils";
13
+ const TABLE_NAME = "code_chunks";
14
+ const INDEX_DIR_NAME = ".src-index";
15
+ /**
16
+ * Reciprocal Rank Fusion (RRF) to combine ranked lists
17
+ *
18
+ * RRF score = sum(1 / (k + rank_i)) for each list
19
+ * where k is a constant (typically 60) and rank_i is the 1-based rank in list i
20
+ */
21
+ function rrfFusion(vectorResults, ftsResults, k = 60) {
22
+ const scores = new Map();
23
+ // Add vector results with RRF scoring
24
+ vectorResults.forEach((result, index) => {
25
+ const rank = index + 1;
26
+ const rrfScore = 1 / (k + rank);
27
+ const existing = scores.get(result.chunk.id);
28
+ if (existing) {
29
+ existing.score += rrfScore;
30
+ }
31
+ else {
32
+ scores.set(result.chunk.id, { score: rrfScore, result });
33
+ }
34
+ });
35
+ // Add FTS results with RRF scoring
36
+ ftsResults.forEach((result, index) => {
37
+ const rank = index + 1;
38
+ const rrfScore = 1 / (k + rank);
39
+ const existing = scores.get(result.chunk.id);
40
+ if (existing) {
41
+ existing.score += rrfScore;
42
+ }
43
+ else {
44
+ scores.set(result.chunk.id, { score: rrfScore, result });
45
+ }
46
+ });
47
+ // Sort by combined RRF score (higher is better)
48
+ const combined = Array.from(scores.values())
49
+ .sort((a, b) => b.score - a.score)
50
+ .map(({ score, result }) => ({
51
+ ...result,
52
+ score, // Replace distance with RRF score
53
+ }));
54
+ return combined;
55
+ }
56
+ /**
57
+ * LanceDB vector store wrapper
58
+ */
59
+ export class VectorStore {
60
+ db = null;
61
+ table = null;
62
+ indexPath;
63
+ ftsIndexCreated = false;
64
+ constructor(directory, _config) {
65
+ this.indexPath = path.join(directory, INDEX_DIR_NAME);
66
+ }
67
+ /**
68
+ * Initialize the database connection
69
+ */
70
+ async connect() {
71
+ this.db = await lancedb.connect(this.indexPath);
72
+ const tableNames = await this.db.tableNames();
73
+ if (tableNames.includes(TABLE_NAME)) {
74
+ this.table = await this.db.openTable(TABLE_NAME);
75
+ }
76
+ }
77
+ /**
78
+ * Close the database connection
79
+ */
80
+ close() {
81
+ this.db = null;
82
+ this.table = null;
83
+ }
84
+ /**
85
+ * Check if the index exists
86
+ */
87
+ exists() {
88
+ return fs.existsSync(this.indexPath);
89
+ }
90
+ /**
91
+ * Add embedded chunks to the store
92
+ */
93
+ async addChunks(chunks) {
94
+ if (!this.db) {
95
+ throw new Error("Database not connected. Call connect() first.");
96
+ }
97
+ const records = chunks.map((chunk) => ({
98
+ id: chunk.id,
99
+ content: chunk.content,
100
+ filePath: chunk.filePath,
101
+ language: chunk.language,
102
+ startLine: chunk.startLine,
103
+ endLine: chunk.endLine,
104
+ symbolName: chunk.symbolName ?? "",
105
+ symbolType: chunk.symbolType ?? "",
106
+ vector: chunk.vector,
107
+ }));
108
+ if (!this.table) {
109
+ this.table = await this.db.createTable(TABLE_NAME, records);
110
+ }
111
+ else {
112
+ await this.table.add(records);
113
+ }
114
+ }
115
+ /**
116
+ * Create FTS (Full-Text Search) index on content column
117
+ * This enables BM25-based text search
118
+ */
119
+ async createFtsIndex() {
120
+ if (!this.table || this.ftsIndexCreated) {
121
+ return;
122
+ }
123
+ try {
124
+ await this.table.createIndex("content", {
125
+ config: lancedb.Index.fts(),
126
+ });
127
+ this.ftsIndexCreated = true;
128
+ logger.debug("FTS index created on content column");
129
+ }
130
+ catch (error) {
131
+ // Index may already exist
132
+ if (error instanceof Error && error.message.includes("already exists")) {
133
+ this.ftsIndexCreated = true;
134
+ logger.debug("FTS index already exists");
135
+ }
136
+ else {
137
+ logger.warn(`Failed to create FTS index: ${error instanceof Error ? error.message : String(error)}`);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Search for similar chunks using vector similarity
143
+ */
144
+ async search(queryVector, limit = 10) {
145
+ if (!this.table) {
146
+ return [];
147
+ }
148
+ const results = (await this.table
149
+ .vectorSearch(queryVector)
150
+ .limit(limit)
151
+ .toArray());
152
+ return results.map((row) => ({
153
+ chunk: {
154
+ id: row.id,
155
+ content: row.content,
156
+ filePath: row.filePath,
157
+ language: row.language,
158
+ startLine: row.startLine,
159
+ endLine: row.endLine,
160
+ symbolName: row.symbolName || undefined,
161
+ symbolType: row.symbolType || undefined,
162
+ },
163
+ score: row._distance ?? 0,
164
+ }));
165
+ }
166
+ /**
167
+ * Full-text search using BM25
168
+ */
169
+ async searchFts(queryText, limit = 10) {
170
+ if (!this.table) {
171
+ return [];
172
+ }
173
+ // Ensure FTS index exists
174
+ await this.createFtsIndex();
175
+ try {
176
+ const results = (await this.table
177
+ .query()
178
+ .nearestToText(queryText)
179
+ .limit(limit)
180
+ .toArray());
181
+ return results.map((row, index) => ({
182
+ chunk: {
183
+ id: row.id,
184
+ content: row.content,
185
+ filePath: row.filePath,
186
+ language: row.language,
187
+ startLine: row.startLine,
188
+ endLine: row.endLine,
189
+ symbolName: row.symbolName || undefined,
190
+ symbolType: row.symbolType || undefined,
191
+ },
192
+ // FTS doesn't return distance, use rank-based score
193
+ score: 1 / (index + 1),
194
+ }));
195
+ }
196
+ catch (error) {
197
+ logger.warn(`FTS search failed, falling back to empty results: ${error instanceof Error ? error.message : String(error)}`);
198
+ return [];
199
+ }
200
+ }
201
+ /**
202
+ * Hybrid search combining vector similarity and full-text search
203
+ * Uses Reciprocal Rank Fusion (RRF) to combine results
204
+ */
205
+ async searchHybrid(queryVector, queryText, limit = 10, options = {}) {
206
+ const { mode = "hybrid", rrfK = 60 } = options;
207
+ if (!this.table) {
208
+ return [];
209
+ }
210
+ // Vector-only search
211
+ if (mode === "vector") {
212
+ return this.search(queryVector, limit);
213
+ }
214
+ // FTS-only search
215
+ if (mode === "fts") {
216
+ return this.searchFts(queryText, limit);
217
+ }
218
+ // Hybrid search: run both searches in parallel
219
+ const [vectorResults, ftsResults] = await Promise.all([
220
+ this.search(queryVector, limit * 2), // Get more results for fusion
221
+ this.searchFts(queryText, limit * 2),
222
+ ]);
223
+ // Fuse results using RRF
224
+ const fusedResults = rrfFusion(vectorResults, ftsResults, rrfK);
225
+ // Return top N results
226
+ return fusedResults.slice(0, limit);
227
+ }
228
+ /**
229
+ * Delete chunks by file path
230
+ */
231
+ async deleteByFilePath(filePath) {
232
+ if (!this.table) {
233
+ return;
234
+ }
235
+ await this.table.delete(`"filePath" = '${filePath.replace(/'/g, "''")}'`);
236
+ }
237
+ /**
238
+ * Clear all data from the store
239
+ */
240
+ async clear() {
241
+ if (this.db && this.table) {
242
+ await this.db.dropTable(TABLE_NAME);
243
+ this.table = null;
244
+ }
245
+ }
246
+ /**
247
+ * Get index status
248
+ */
249
+ async getStatus(directory) {
250
+ const status = {
251
+ directory,
252
+ indexPath: this.indexPath,
253
+ exists: this.exists(),
254
+ totalChunks: 0,
255
+ totalFiles: 0,
256
+ languages: {},
257
+ };
258
+ if (!this.table) {
259
+ return status;
260
+ }
261
+ const allRows = (await this.table.query().toArray());
262
+ status.totalChunks = allRows.length;
263
+ const uniqueFiles = new Set();
264
+ const languageCounts = {};
265
+ for (const row of allRows) {
266
+ uniqueFiles.add(row.filePath);
267
+ const lang = row.language;
268
+ languageCounts[lang] = (languageCounts[lang] ?? 0) + 1;
269
+ }
270
+ status.totalFiles = uniqueFiles.size;
271
+ status.languages = languageCounts;
272
+ return status;
273
+ }
274
+ /**
275
+ * Get all indexed file paths
276
+ */
277
+ async getIndexedFiles() {
278
+ if (!this.table) {
279
+ return [];
280
+ }
281
+ const rows = (await this.table
282
+ .query()
283
+ .select(["filePath"])
284
+ .toArray());
285
+ const uniqueFiles = new Set();
286
+ for (const row of rows) {
287
+ uniqueFiles.add(row.filePath);
288
+ }
289
+ return Array.from(uniqueFiles);
290
+ }
291
+ }
292
+ /**
293
+ * Create a vector store for a directory
294
+ */
295
+ export function createVectorStore(directory, config) {
296
+ return new VectorStore(directory, config);
297
+ }
298
+ /**
299
+ * Get the index path for a directory
300
+ */
301
+ export function getIndexPath(directory) {
302
+ return path.join(directory, INDEX_DIR_NAME);
303
+ }
304
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/embeddings/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Embedding types for Ollama + LanceDB integration
3
+ */
4
+ /**
5
+ * A chunk of code with metadata
6
+ */
7
+ export interface CodeChunk {
8
+ id: string;
9
+ content: string;
10
+ filePath: string;
11
+ language: string;
12
+ startLine: number;
13
+ endLine: number;
14
+ symbolName?: string;
15
+ symbolType?: string;
16
+ }
17
+ /**
18
+ * A chunk with its embedding vector
19
+ */
20
+ export interface EmbeddedChunk extends CodeChunk {
21
+ vector: number[];
22
+ }
23
+ /**
24
+ * Search result from LanceDB
25
+ */
26
+ export interface SearchResult {
27
+ chunk: CodeChunk;
28
+ score: number;
29
+ }
30
+ /**
31
+ * Index status information
32
+ */
33
+ export interface IndexStatus {
34
+ directory: string;
35
+ indexPath: string;
36
+ exists: boolean;
37
+ totalChunks: number;
38
+ totalFiles: number;
39
+ languages: Record<string, number>;
40
+ lastUpdated?: Date;
41
+ }
42
+ /**
43
+ * Embedding configuration
44
+ */
45
+ export interface EmbeddingConfig {
46
+ ollamaBaseUrl: string;
47
+ embeddingModel: string;
48
+ embeddingDimensions: number;
49
+ defaultChunkSize: number;
50
+ defaultChunkOverlap: number;
51
+ batchSize: number;
52
+ /** Model for re-ranking search results (lightweight model recommended) */
53
+ rerankModel?: string;
54
+ }
55
+ /**
56
+ * A symbol contained within a chunk
57
+ */
58
+ export interface ChunkSymbol {
59
+ /** Symbol name */
60
+ name: string;
61
+ /** Symbol type (function, class, variable, etc.) */
62
+ type: string;
63
+ /** Optional signature for functions/methods */
64
+ signature?: string;
65
+ }
66
+ /**
67
+ * A chunk enriched with semantic metadata
68
+ */
69
+ export interface EnrichedChunk extends CodeChunk {
70
+ /** The enriched content to be used for embedding */
71
+ enrichedContent: string;
72
+ /** Symbols contained within this chunk */
73
+ containedSymbols: ChunkSymbol[];
74
+ /** Whether enrichment was successfully applied */
75
+ wasEnriched: boolean;
76
+ }
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Embedding types for Ollama + LanceDB integration
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/embeddings/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * File watcher for automatic index updates
3
+ *
4
+ * Features:
5
+ * - SHA-256 hash comparison to detect real content changes
6
+ * - Debounce (5s default) to handle rapid changes
7
+ * - Persistent hash cache to avoid unnecessary re-indexing
8
+ * - fast-glob for efficient file scanning
9
+ */
10
+ import type { EmbeddingConfig } from "@core/embeddings/types";
11
+ export interface WatcherOptions {
12
+ directory: string;
13
+ config: EmbeddingConfig;
14
+ /** Debounce delay in ms (default: 5000) */
15
+ debounceMs?: number;
16
+ onReady?: () => void;
17
+ onError?: (error: Error) => void;
18
+ onIndexed?: (filePath: string) => void;
19
+ onRemoved?: (filePath: string) => void;
20
+ }
21
+ export declare class IndexWatcher {
22
+ private readonly directory;
23
+ private readonly config;
24
+ private readonly debounceMs;
25
+ private readonly ollamaClient;
26
+ private readonly vectorStore;
27
+ private watcher;
28
+ private ig;
29
+ private isProcessing;
30
+ private hashCache;
31
+ private pendingChanges;
32
+ private operationQueue;
33
+ private readonly onReady?;
34
+ private readonly onError?;
35
+ private readonly onIndexed?;
36
+ private readonly onRemoved?;
37
+ constructor(options: WatcherOptions);
38
+ /**
39
+ * Compute SHA-256 hash of content
40
+ */
41
+ private computeHash;
42
+ /**
43
+ * Get hash cache file path
44
+ */
45
+ private getHashCachePath;
46
+ /**
47
+ * Load hash cache from disk
48
+ */
49
+ private loadHashCache;
50
+ /**
51
+ * Save hash cache to disk
52
+ */
53
+ private saveHashCache;
54
+ /**
55
+ * Check if file content has changed by comparing hashes
56
+ */
57
+ private hasContentChanged;
58
+ /**
59
+ * Remove file from hash cache
60
+ */
61
+ private removeFromHashCache;
62
+ /**
63
+ * Create ignore filter from .gitignore
64
+ */
65
+ private createIgnoreFilter;
66
+ /**
67
+ * Check if a file should be indexed
68
+ */
69
+ private shouldIndex;
70
+ /**
71
+ * Schedule a file change with debouncing
72
+ */
73
+ private scheduleChange;
74
+ /**
75
+ * Process a file change after debounce
76
+ */
77
+ private processChange;
78
+ /**
79
+ * Index a single file
80
+ */
81
+ private indexFile;
82
+ /**
83
+ * Remove a file from the index
84
+ */
85
+ private removeFile;
86
+ /**
87
+ * Queue an operation to prevent concurrent modifications
88
+ */
89
+ private queueOperation;
90
+ /**
91
+ * Process queued operations sequentially
92
+ */
93
+ private processQueue;
94
+ /**
95
+ * Collect files using fast-glob
96
+ */
97
+ private collectFilesWithGlob;
98
+ /**
99
+ * Perform full initial indexing
100
+ */
101
+ private fullIndex;
102
+ /**
103
+ * Start watching for file changes
104
+ */
105
+ start(): Promise<void>;
106
+ /**
107
+ * Stop watching and cleanup
108
+ */
109
+ stop(): Promise<void>;
110
+ /**
111
+ * Check if watcher is running
112
+ */
113
+ isRunning(): boolean;
114
+ /**
115
+ * Clear the hash cache
116
+ */
117
+ clearCache(): void;
118
+ /**
119
+ * Get cache statistics
120
+ */
121
+ getCacheStats(): {
122
+ cachedFiles: number;
123
+ cacheSize: number;
124
+ };
125
+ }
126
+ /**
127
+ * Create a new index watcher
128
+ */
129
+ export declare function createIndexWatcher(options: WatcherOptions): IndexWatcher;
130
+ //# sourceMappingURL=watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiB9D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAUD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA6B;gBAE5C,OAAO,EAAE,cAAc;IAgBnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;YACW,aAAa;IAW3B;;OAEG;YACW,SAAS;IAsDvB;;OAEG;YACW,UAAU;IAexB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;YACW,YAAY;IAsB1B;;OAEG;YACW,oBAAoB;IAsBlC;;OAEG;YACW,SAAS;IAyDvB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACH,aAAa,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAM5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CAExE"}