codevault 1.8.3 → 1.8.5

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 (479) hide show
  1. package/README.md +33 -5
  2. package/dist/chunking/file-grouper.d.ts +1 -1
  3. package/dist/chunking/file-grouper.d.ts.map +1 -1
  4. package/dist/chunking/file-grouper.js +3 -3
  5. package/dist/chunking/file-grouper.js.map +1 -1
  6. package/dist/chunking/semantic-chunker.d.ts +1 -1
  7. package/dist/chunking/semantic-chunker.d.ts.map +1 -1
  8. package/dist/chunking/token-counter.d.ts +1 -1
  9. package/dist/chunking/token-counter.d.ts.map +1 -1
  10. package/dist/chunking/token-counter.js +16 -10
  11. package/dist/chunking/token-counter.js.map +1 -1
  12. package/dist/cli/commands/ask-cmd.js +15 -15
  13. package/dist/cli/commands/ask-cmd.js.map +1 -1
  14. package/dist/cli/commands/chat-cmd.d.ts.map +1 -1
  15. package/dist/cli/commands/chat-cmd.js +40 -40
  16. package/dist/cli/commands/chat-cmd.js.map +1 -1
  17. package/dist/cli/commands/config-cmd.d.ts.map +1 -1
  18. package/dist/cli/commands/config-cmd.js +61 -52
  19. package/dist/cli/commands/config-cmd.js.map +1 -1
  20. package/dist/cli/commands/context.d.ts.map +1 -1
  21. package/dist/cli/commands/context.js +20 -11
  22. package/dist/cli/commands/context.js.map +1 -1
  23. package/dist/cli/commands/index-cmd.d.ts.map +1 -1
  24. package/dist/cli/commands/index-cmd.js +109 -85
  25. package/dist/cli/commands/index-cmd.js.map +1 -1
  26. package/dist/cli/commands/info-cmd.d.ts.map +1 -1
  27. package/dist/cli/commands/info-cmd.js +12 -11
  28. package/dist/cli/commands/info-cmd.js.map +1 -1
  29. package/dist/cli/commands/interactive-config.d.ts.map +1 -1
  30. package/dist/cli/commands/interactive-config.js +60 -20
  31. package/dist/cli/commands/interactive-config.js.map +1 -1
  32. package/dist/cli/commands/search-cmd.d.ts.map +1 -1
  33. package/dist/cli/commands/search-cmd.js +22 -11
  34. package/dist/cli/commands/search-cmd.js.map +1 -1
  35. package/dist/cli/commands/search-with-code-cmd.d.ts.map +1 -1
  36. package/dist/cli/commands/search-with-code-cmd.js +25 -16
  37. package/dist/cli/commands/search-with-code-cmd.js.map +1 -1
  38. package/dist/cli/commands/update-cmd.d.ts.map +1 -1
  39. package/dist/cli/commands/update-cmd.js +16 -7
  40. package/dist/cli/commands/update-cmd.js.map +1 -1
  41. package/dist/cli/commands/watch-cmd.d.ts.map +1 -1
  42. package/dist/cli/commands/watch-cmd.js +21 -11
  43. package/dist/cli/commands/watch-cmd.js.map +1 -1
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/cli/utils.d.ts +56 -0
  46. package/dist/cli/utils.d.ts.map +1 -0
  47. package/dist/cli/utils.js +98 -0
  48. package/dist/cli/utils.js.map +1 -0
  49. package/dist/cli.js +0 -0
  50. package/dist/codemap/io.js.map +1 -1
  51. package/dist/config/constants.d.ts +4 -0
  52. package/dist/config/constants.d.ts.map +1 -1
  53. package/dist/config/constants.js +2 -0
  54. package/dist/config/constants.js.map +1 -1
  55. package/dist/config/loader.js.map +1 -1
  56. package/dist/context/packs.d.ts +2 -2
  57. package/dist/context/packs.d.ts.map +1 -1
  58. package/dist/context/packs.js +7 -4
  59. package/dist/context/packs.js.map +1 -1
  60. package/dist/core/IndexerEngine.d.ts +2 -0
  61. package/dist/core/IndexerEngine.d.ts.map +1 -1
  62. package/dist/core/IndexerEngine.js +34 -26
  63. package/dist/core/IndexerEngine.js.map +1 -1
  64. package/dist/core/SearchService.d.ts +2 -1
  65. package/dist/core/SearchService.d.ts.map +1 -1
  66. package/dist/core/SearchService.js +25 -18
  67. package/dist/core/SearchService.js.map +1 -1
  68. package/dist/core/batch-indexer.d.ts +4 -3
  69. package/dist/core/batch-indexer.d.ts.map +1 -1
  70. package/dist/core/batch-indexer.js +32 -35
  71. package/dist/core/batch-indexer.js.map +1 -1
  72. package/dist/core/indexing/FileProcessor.d.ts +1 -0
  73. package/dist/core/indexing/FileProcessor.d.ts.map +1 -1
  74. package/dist/core/indexing/FileProcessor.js +32 -9
  75. package/dist/core/indexing/FileProcessor.js.map +1 -1
  76. package/dist/core/indexing/IndexContext.d.ts +6 -4
  77. package/dist/core/indexing/IndexContext.d.ts.map +1 -1
  78. package/dist/core/indexing/IndexContext.js +3 -3
  79. package/dist/core/indexing/IndexContext.js.map +1 -1
  80. package/dist/core/indexing/IndexFinalizationStage.d.ts +6 -1
  81. package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -1
  82. package/dist/core/indexing/IndexFinalizationStage.js +22 -3
  83. package/dist/core/indexing/IndexFinalizationStage.js.map +1 -1
  84. package/dist/core/indexing/IndexState.d.ts +3 -8
  85. package/dist/core/indexing/IndexState.d.ts.map +1 -1
  86. package/dist/core/indexing/IndexState.js.map +1 -1
  87. package/dist/core/indexing/PersistManager.d.ts +1 -1
  88. package/dist/core/indexing/PersistManager.d.ts.map +1 -1
  89. package/dist/core/indexing/PersistManager.js +17 -17
  90. package/dist/core/indexing/PersistManager.js.map +1 -1
  91. package/dist/core/indexing/chunk-pipeline.d.ts +33 -7
  92. package/dist/core/indexing/chunk-pipeline.d.ts.map +1 -1
  93. package/dist/core/indexing/chunk-pipeline.js +20 -8
  94. package/dist/core/indexing/chunk-pipeline.js.map +1 -1
  95. package/dist/core/metadata.d.ts +1 -1
  96. package/dist/core/metadata.d.ts.map +1 -1
  97. package/dist/core/metadata.js +1 -1
  98. package/dist/core/metadata.js.map +1 -1
  99. package/dist/core/search/CandidateRetriever.d.ts +1 -1
  100. package/dist/core/search/CandidateRetriever.d.ts.map +1 -1
  101. package/dist/core/search/CandidateRetriever.js +7 -5
  102. package/dist/core/search/CandidateRetriever.js.map +1 -1
  103. package/dist/core/search/HybridFusion.d.ts +1 -2
  104. package/dist/core/search/HybridFusion.d.ts.map +1 -1
  105. package/dist/core/search/HybridFusion.js +5 -17
  106. package/dist/core/search/HybridFusion.js.map +1 -1
  107. package/dist/core/search/ResultMapper.d.ts +0 -1
  108. package/dist/core/search/ResultMapper.d.ts.map +1 -1
  109. package/dist/core/search/ResultMapper.js +3 -14
  110. package/dist/core/search/ResultMapper.js.map +1 -1
  111. package/dist/core/search/SearchContextManager.d.ts +4 -1
  112. package/dist/core/search/SearchContextManager.d.ts.map +1 -1
  113. package/dist/core/search/SearchContextManager.js +19 -6
  114. package/dist/core/search/SearchContextManager.js.map +1 -1
  115. package/dist/core/search.d.ts.map +1 -1
  116. package/dist/core/search.js +9 -4
  117. package/dist/core/search.js.map +1 -1
  118. package/dist/core/types.d.ts +2 -2
  119. package/dist/core/types.d.ts.map +1 -1
  120. package/dist/database/db.d.ts +14 -14
  121. package/dist/database/db.d.ts.map +1 -1
  122. package/dist/database/db.js +14 -14
  123. package/dist/database/db.js.map +1 -1
  124. package/dist/indexer/merkle.js +1 -1
  125. package/dist/indexer/merkle.js.map +1 -1
  126. package/dist/languages/rules.d.ts +2 -1
  127. package/dist/languages/rules.d.ts.map +1 -1
  128. package/dist/languages/rules.js +14 -5
  129. package/dist/languages/rules.js.map +1 -1
  130. package/dist/languages/tree-sitter-loader.d.ts +24 -24
  131. package/dist/languages/tree-sitter-loader.d.ts.map +1 -1
  132. package/dist/languages/tree-sitter-loader.js +14 -10
  133. package/dist/languages/tree-sitter-loader.js.map +1 -1
  134. package/dist/mcp/handlers/context.d.ts +5 -11
  135. package/dist/mcp/handlers/context.d.ts.map +1 -1
  136. package/dist/mcp/handlers/context.js.map +1 -1
  137. package/dist/mcp/handlers/project.d.ts +9 -27
  138. package/dist/mcp/handlers/project.d.ts.map +1 -1
  139. package/dist/mcp/handlers/search.d.ts +24 -18
  140. package/dist/mcp/handlers/search.d.ts.map +1 -1
  141. package/dist/mcp/handlers/search.js +8 -2
  142. package/dist/mcp/handlers/search.js.map +1 -1
  143. package/dist/mcp/handlers/synthesis.d.ts +15 -11
  144. package/dist/mcp/handlers/synthesis.d.ts.map +1 -1
  145. package/dist/mcp/handlers/synthesis.js +4 -1
  146. package/dist/mcp/handlers/synthesis.js.map +1 -1
  147. package/dist/mcp/schemas.d.ts +2 -2
  148. package/dist/mcp/tools/ask-codebase.d.ts +10 -28
  149. package/dist/mcp/tools/ask-codebase.d.ts.map +1 -1
  150. package/dist/mcp/tools/ask-codebase.js +1 -1
  151. package/dist/mcp/tools/ask-codebase.js.map +1 -1
  152. package/dist/mcp/tools/use-context-pack.d.ts +14 -23
  153. package/dist/mcp/tools/use-context-pack.d.ts.map +1 -1
  154. package/dist/mcp/tools/use-context-pack.js +4 -3
  155. package/dist/mcp/tools/use-context-pack.js.map +1 -1
  156. package/dist/mcp-server.d.ts +1 -0
  157. package/dist/mcp-server.d.ts.map +1 -1
  158. package/dist/mcp-server.js +39 -24
  159. package/dist/mcp-server.js.map +1 -1
  160. package/dist/providers/base.d.ts +3 -2
  161. package/dist/providers/base.d.ts.map +1 -1
  162. package/dist/providers/base.js +3 -10
  163. package/dist/providers/base.js.map +1 -1
  164. package/dist/providers/chat-llm.d.ts +3 -2
  165. package/dist/providers/chat-llm.d.ts.map +1 -1
  166. package/dist/providers/chat-llm.js +13 -9
  167. package/dist/providers/chat-llm.js.map +1 -1
  168. package/dist/providers/mock.d.ts.map +1 -1
  169. package/dist/providers/mock.js +6 -5
  170. package/dist/providers/mock.js.map +1 -1
  171. package/dist/providers/openai.d.ts +2 -1
  172. package/dist/providers/openai.d.ts.map +1 -1
  173. package/dist/providers/openai.js +15 -19
  174. package/dist/providers/openai.js.map +1 -1
  175. package/dist/providers/token-counter.d.ts.map +1 -1
  176. package/dist/providers/token-counter.js +11 -3
  177. package/dist/providers/token-counter.js.map +1 -1
  178. package/dist/ranking/api-reranker.d.ts +1 -1
  179. package/dist/ranking/api-reranker.d.ts.map +1 -1
  180. package/dist/ranking/api-reranker.js +50 -13
  181. package/dist/ranking/api-reranker.js.map +1 -1
  182. package/dist/ranking/symbol-boost.d.ts.map +1 -1
  183. package/dist/ranking/symbol-boost.js +4 -11
  184. package/dist/ranking/symbol-boost.js.map +1 -1
  185. package/dist/search/bm25.d.ts +10 -0
  186. package/dist/search/bm25.d.ts.map +1 -1
  187. package/dist/search/bm25.js +16 -0
  188. package/dist/search/bm25.js.map +1 -1
  189. package/dist/search/hybrid.js.map +1 -1
  190. package/dist/search/scope.d.ts.map +1 -1
  191. package/dist/search/scope.js +3 -2
  192. package/dist/search/scope.js.map +1 -1
  193. package/dist/storage/encrypted-chunks.d.ts +3 -0
  194. package/dist/storage/encrypted-chunks.d.ts.map +1 -1
  195. package/dist/storage/encrypted-chunks.js +126 -47
  196. package/dist/storage/encrypted-chunks.js.map +1 -1
  197. package/dist/symbols/extract.d.ts.map +1 -1
  198. package/dist/symbols/extract.js +3 -2
  199. package/dist/symbols/extract.js.map +1 -1
  200. package/dist/symbols/graph.d.ts.map +1 -1
  201. package/dist/symbols/graph.js +14 -8
  202. package/dist/symbols/graph.js.map +1 -1
  203. package/dist/synthesis/conversational-synthesizer.d.ts +2 -1
  204. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -1
  205. package/dist/synthesis/conversational-synthesizer.js +6 -1
  206. package/dist/synthesis/conversational-synthesizer.js.map +1 -1
  207. package/dist/synthesis/markdown-formatter.d.ts.map +1 -1
  208. package/dist/synthesis/markdown-formatter.js +1 -1
  209. package/dist/synthesis/markdown-formatter.js.map +1 -1
  210. package/dist/synthesis/prompt-builder.d.ts.map +1 -1
  211. package/dist/synthesis/prompt-builder.js +42 -15
  212. package/dist/synthesis/prompt-builder.js.map +1 -1
  213. package/dist/synthesis/synthesizer.d.ts.map +1 -1
  214. package/dist/synthesis/synthesizer.js +23 -10
  215. package/dist/synthesis/synthesizer.js.map +1 -1
  216. package/dist/tests/api-reranker.test.d.ts +2 -0
  217. package/dist/tests/api-reranker.test.d.ts.map +1 -0
  218. package/dist/tests/api-reranker.test.js +575 -0
  219. package/dist/tests/api-reranker.test.js.map +1 -0
  220. package/dist/tests/bm25.test.d.ts +2 -0
  221. package/dist/tests/bm25.test.d.ts.map +1 -0
  222. package/dist/tests/bm25.test.js +340 -0
  223. package/dist/tests/bm25.test.js.map +1 -0
  224. package/dist/tests/chunking/file-grouper.test.d.ts +2 -0
  225. package/dist/tests/chunking/file-grouper.test.d.ts.map +1 -0
  226. package/dist/tests/chunking/file-grouper.test.js +495 -0
  227. package/dist/tests/chunking/file-grouper.test.js.map +1 -0
  228. package/dist/tests/chunking/semantic-chunker.test.d.ts +2 -0
  229. package/dist/tests/chunking/semantic-chunker.test.d.ts.map +1 -0
  230. package/dist/tests/chunking/semantic-chunker.test.js +509 -0
  231. package/dist/tests/chunking/semantic-chunker.test.js.map +1 -0
  232. package/dist/tests/chunking/token-counter.test.d.ts +2 -0
  233. package/dist/tests/chunking/token-counter.test.d.ts.map +1 -0
  234. package/dist/tests/chunking/token-counter.test.js +441 -0
  235. package/dist/tests/chunking/token-counter.test.js.map +1 -0
  236. package/dist/tests/cli/ask-cmd.test.d.ts +2 -0
  237. package/dist/tests/cli/ask-cmd.test.d.ts.map +1 -0
  238. package/dist/tests/cli/ask-cmd.test.js +152 -0
  239. package/dist/tests/cli/ask-cmd.test.js.map +1 -0
  240. package/dist/tests/cli/chat-cmd.test.d.ts +2 -0
  241. package/dist/tests/cli/chat-cmd.test.d.ts.map +1 -0
  242. package/dist/tests/cli/chat-cmd.test.js +118 -0
  243. package/dist/tests/cli/chat-cmd.test.js.map +1 -0
  244. package/dist/tests/cli/config-cmd.test.d.ts +2 -0
  245. package/dist/tests/cli/config-cmd.test.d.ts.map +1 -0
  246. package/dist/tests/cli/config-cmd.test.js +226 -0
  247. package/dist/tests/cli/config-cmd.test.js.map +1 -0
  248. package/dist/tests/cli/context.test.d.ts +2 -0
  249. package/dist/tests/cli/context.test.d.ts.map +1 -0
  250. package/dist/tests/cli/context.test.js +158 -0
  251. package/dist/tests/cli/context.test.js.map +1 -0
  252. package/dist/tests/cli/index-cmd.test.d.ts +2 -0
  253. package/dist/tests/cli/index-cmd.test.d.ts.map +1 -0
  254. package/dist/tests/cli/index-cmd.test.js +89 -0
  255. package/dist/tests/cli/index-cmd.test.js.map +1 -0
  256. package/dist/tests/cli/index.test.d.ts +2 -0
  257. package/dist/tests/cli/index.test.d.ts.map +1 -0
  258. package/dist/tests/cli/index.test.js +167 -0
  259. package/dist/tests/cli/index.test.js.map +1 -0
  260. package/dist/tests/cli/info-cmd.test.d.ts +2 -0
  261. package/dist/tests/cli/info-cmd.test.d.ts.map +1 -0
  262. package/dist/tests/cli/info-cmd.test.js +47 -0
  263. package/dist/tests/cli/info-cmd.test.js.map +1 -0
  264. package/dist/tests/cli/interactive-config.test.d.ts +2 -0
  265. package/dist/tests/cli/interactive-config.test.d.ts.map +1 -0
  266. package/dist/tests/cli/interactive-config.test.js +30 -0
  267. package/dist/tests/cli/interactive-config.test.js.map +1 -0
  268. package/dist/tests/cli/mcp-cmd.test.d.ts +2 -0
  269. package/dist/tests/cli/mcp-cmd.test.d.ts.map +1 -0
  270. package/dist/tests/cli/mcp-cmd.test.js +47 -0
  271. package/dist/tests/cli/mcp-cmd.test.js.map +1 -0
  272. package/dist/tests/cli/search-cmd.test.d.ts +2 -0
  273. package/dist/tests/cli/search-cmd.test.d.ts.map +1 -0
  274. package/dist/tests/cli/search-cmd.test.js +120 -0
  275. package/dist/tests/cli/search-cmd.test.js.map +1 -0
  276. package/dist/tests/cli/search-with-code-cmd.test.d.ts +2 -0
  277. package/dist/tests/cli/search-with-code-cmd.test.d.ts.map +1 -0
  278. package/dist/tests/cli/search-with-code-cmd.test.js +140 -0
  279. package/dist/tests/cli/search-with-code-cmd.test.js.map +1 -0
  280. package/dist/tests/cli/update-cmd.test.d.ts +2 -0
  281. package/dist/tests/cli/update-cmd.test.d.ts.map +1 -0
  282. package/dist/tests/cli/update-cmd.test.js +75 -0
  283. package/dist/tests/cli/update-cmd.test.js.map +1 -0
  284. package/dist/tests/cli/utils.test.d.ts +2 -0
  285. package/dist/tests/cli/utils.test.d.ts.map +1 -0
  286. package/dist/tests/cli/utils.test.js +119 -0
  287. package/dist/tests/cli/utils.test.js.map +1 -0
  288. package/dist/tests/cli/watch-cmd.test.d.ts +2 -0
  289. package/dist/tests/cli/watch-cmd.test.d.ts.map +1 -0
  290. package/dist/tests/cli/watch-cmd.test.js +84 -0
  291. package/dist/tests/cli/watch-cmd.test.js.map +1 -0
  292. package/dist/tests/cli-ui.test.d.ts +2 -0
  293. package/dist/tests/cli-ui.test.d.ts.map +1 -0
  294. package/dist/tests/cli-ui.test.js +608 -0
  295. package/dist/tests/cli-ui.test.js.map +1 -0
  296. package/dist/tests/codemap-io.test.d.ts +2 -0
  297. package/dist/tests/codemap-io.test.d.ts.map +1 -0
  298. package/dist/tests/codemap-io.test.js +992 -0
  299. package/dist/tests/codemap-io.test.js.map +1 -0
  300. package/dist/tests/config/apply-env.test.d.ts +2 -0
  301. package/dist/tests/config/apply-env.test.d.ts.map +1 -0
  302. package/dist/tests/config/apply-env.test.js +717 -0
  303. package/dist/tests/config/apply-env.test.js.map +1 -0
  304. package/dist/tests/config/constants.test.d.ts +2 -0
  305. package/dist/tests/config/constants.test.d.ts.map +1 -0
  306. package/dist/tests/config/constants.test.js +406 -0
  307. package/dist/tests/config/constants.test.js.map +1 -0
  308. package/dist/tests/config/loader.test.d.ts +2 -0
  309. package/dist/tests/config/loader.test.d.ts.map +1 -0
  310. package/dist/tests/config/loader.test.js +716 -0
  311. package/dist/tests/config/loader.test.js.map +1 -0
  312. package/dist/tests/config/resolver.test.d.ts +2 -0
  313. package/dist/tests/config/resolver.test.d.ts.map +1 -0
  314. package/dist/tests/config/resolver.test.js +402 -0
  315. package/dist/tests/config/resolver.test.js.map +1 -0
  316. package/dist/tests/config/types.test.d.ts +2 -0
  317. package/dist/tests/config/types.test.d.ts.map +1 -0
  318. package/dist/tests/config/types.test.js +460 -0
  319. package/dist/tests/config/types.test.js.map +1 -0
  320. package/dist/tests/context-packs.test.d.ts +2 -0
  321. package/dist/tests/context-packs.test.d.ts.map +1 -0
  322. package/dist/tests/context-packs.test.js +826 -0
  323. package/dist/tests/context-packs.test.js.map +1 -0
  324. package/dist/tests/conversational-synthesizer.test.d.ts +2 -0
  325. package/dist/tests/conversational-synthesizer.test.d.ts.map +1 -0
  326. package/dist/tests/conversational-synthesizer.test.js +595 -0
  327. package/dist/tests/conversational-synthesizer.test.js.map +1 -0
  328. package/dist/tests/database.test.d.ts +2 -0
  329. package/dist/tests/database.test.d.ts.map +1 -0
  330. package/dist/tests/database.test.js +965 -0
  331. package/dist/tests/database.test.js.map +1 -0
  332. package/dist/tests/encrypted-chunks.test.d.ts +2 -0
  333. package/dist/tests/encrypted-chunks.test.d.ts.map +1 -0
  334. package/dist/tests/encrypted-chunks.test.js +1470 -0
  335. package/dist/tests/encrypted-chunks.test.js.map +1 -0
  336. package/dist/tests/hybrid.test.d.ts +2 -0
  337. package/dist/tests/hybrid.test.d.ts.map +1 -0
  338. package/dist/tests/hybrid.test.js +456 -0
  339. package/dist/tests/hybrid.test.js.map +1 -0
  340. package/dist/tests/indexer/ChangeQueue.test.d.ts +12 -0
  341. package/dist/tests/indexer/ChangeQueue.test.d.ts.map +1 -0
  342. package/dist/tests/indexer/ChangeQueue.test.js +441 -0
  343. package/dist/tests/indexer/ChangeQueue.test.js.map +1 -0
  344. package/dist/tests/indexer/ProviderManager.test.d.ts +12 -0
  345. package/dist/tests/indexer/ProviderManager.test.d.ts.map +1 -0
  346. package/dist/tests/indexer/ProviderManager.test.js +290 -0
  347. package/dist/tests/indexer/ProviderManager.test.js.map +1 -0
  348. package/dist/tests/indexer/WatchService.test.d.ts +14 -0
  349. package/dist/tests/indexer/WatchService.test.d.ts.map +1 -0
  350. package/dist/tests/indexer/WatchService.test.js +667 -0
  351. package/dist/tests/indexer/WatchService.test.js.map +1 -0
  352. package/dist/tests/indexer/merkle.test.d.ts +11 -0
  353. package/dist/tests/indexer/merkle.test.d.ts.map +1 -0
  354. package/dist/tests/indexer/merkle.test.js +497 -0
  355. package/dist/tests/indexer/merkle.test.js.map +1 -0
  356. package/dist/tests/indexer/update.test.d.ts +10 -0
  357. package/dist/tests/indexer/update.test.d.ts.map +1 -0
  358. package/dist/tests/indexer/update.test.js +317 -0
  359. package/dist/tests/indexer/update.test.js.map +1 -0
  360. package/dist/tests/indexer/watch.test.d.ts +8 -0
  361. package/dist/tests/indexer/watch.test.d.ts.map +1 -0
  362. package/dist/tests/indexer/watch.test.js +95 -0
  363. package/dist/tests/indexer/watch.test.js.map +1 -0
  364. package/dist/tests/integration/index-search.integration.test.js +6 -4
  365. package/dist/tests/integration/index-search.integration.test.js.map +1 -1
  366. package/dist/tests/languages.test.d.ts +2 -0
  367. package/dist/tests/languages.test.d.ts.map +1 -0
  368. package/dist/tests/languages.test.js +575 -0
  369. package/dist/tests/languages.test.js.map +1 -0
  370. package/dist/tests/logger-redaction.test.d.ts +2 -0
  371. package/dist/tests/logger-redaction.test.d.ts.map +1 -0
  372. package/dist/tests/logger-redaction.test.js +48 -0
  373. package/dist/tests/logger-redaction.test.js.map +1 -0
  374. package/dist/tests/logger.test.d.ts +2 -0
  375. package/dist/tests/logger.test.d.ts.map +1 -0
  376. package/dist/tests/logger.test.js +468 -0
  377. package/dist/tests/logger.test.js.map +1 -0
  378. package/dist/tests/markdown-formatter.test.d.ts +2 -0
  379. package/dist/tests/markdown-formatter.test.d.ts.map +1 -0
  380. package/dist/tests/markdown-formatter.test.js +453 -0
  381. package/dist/tests/markdown-formatter.test.js.map +1 -0
  382. package/dist/tests/mcp/tools/use-context-pack.test.d.ts +7 -0
  383. package/dist/tests/mcp/tools/use-context-pack.test.d.ts.map +1 -0
  384. package/dist/tests/mcp/tools/use-context-pack.test.js +505 -0
  385. package/dist/tests/mcp/tools/use-context-pack.test.js.map +1 -0
  386. package/dist/tests/mutex.test.d.ts +2 -0
  387. package/dist/tests/mutex.test.d.ts.map +1 -0
  388. package/dist/tests/mutex.test.js +489 -0
  389. package/dist/tests/mutex.test.js.map +1 -0
  390. package/dist/tests/path-helpers.test.d.ts +2 -0
  391. package/dist/tests/path-helpers.test.d.ts.map +1 -0
  392. package/dist/tests/path-helpers.test.js +332 -0
  393. package/dist/tests/path-helpers.test.js.map +1 -0
  394. package/dist/tests/prompt-builder.test.d.ts +2 -0
  395. package/dist/tests/prompt-builder.test.d.ts.map +1 -0
  396. package/dist/tests/prompt-builder.test.js +417 -0
  397. package/dist/tests/prompt-builder.test.js.map +1 -0
  398. package/dist/tests/providers/base.test.d.ts +2 -0
  399. package/dist/tests/providers/base.test.d.ts.map +1 -0
  400. package/dist/tests/providers/base.test.js +299 -0
  401. package/dist/tests/providers/base.test.js.map +1 -0
  402. package/dist/tests/providers/chat-llm.test.d.ts +2 -0
  403. package/dist/tests/providers/chat-llm.test.d.ts.map +1 -0
  404. package/dist/tests/providers/chat-llm.test.js +435 -0
  405. package/dist/tests/providers/chat-llm.test.js.map +1 -0
  406. package/dist/tests/providers/index.test.d.ts +2 -0
  407. package/dist/tests/providers/index.test.d.ts.map +1 -0
  408. package/dist/tests/providers/index.test.js +204 -0
  409. package/dist/tests/providers/index.test.js.map +1 -0
  410. package/dist/tests/providers/mock.test.d.ts +2 -0
  411. package/dist/tests/providers/mock.test.d.ts.map +1 -0
  412. package/dist/tests/providers/mock.test.js +225 -0
  413. package/dist/tests/providers/mock.test.js.map +1 -0
  414. package/dist/tests/providers/openai.test.d.ts +2 -0
  415. package/dist/tests/providers/openai.test.d.ts.map +1 -0
  416. package/dist/tests/providers/openai.test.js +408 -0
  417. package/dist/tests/providers/openai.test.js.map +1 -0
  418. package/dist/tests/providers/token-counter.test.d.ts +2 -0
  419. package/dist/tests/providers/token-counter.test.d.ts.map +1 -0
  420. package/dist/tests/providers/token-counter.test.js +247 -0
  421. package/dist/tests/providers/token-counter.test.js.map +1 -0
  422. package/dist/tests/rate-limiter.test.js +392 -1
  423. package/dist/tests/rate-limiter.test.js.map +1 -1
  424. package/dist/tests/scope.test.d.ts +2 -0
  425. package/dist/tests/scope.test.d.ts.map +1 -0
  426. package/dist/tests/scope.test.js +529 -0
  427. package/dist/tests/scope.test.js.map +1 -0
  428. package/dist/tests/search-normalization.test.js.map +1 -1
  429. package/dist/tests/semantic-chunker.test.js.map +1 -1
  430. package/dist/tests/simple-lru.test.js +377 -0
  431. package/dist/tests/simple-lru.test.js.map +1 -1
  432. package/dist/tests/symbol-boost.test.js +730 -10
  433. package/dist/tests/symbol-boost.test.js.map +1 -1
  434. package/dist/tests/symbols-extract.test.d.ts +2 -0
  435. package/dist/tests/symbols-extract.test.d.ts.map +1 -0
  436. package/dist/tests/symbols-extract.test.js +536 -0
  437. package/dist/tests/symbols-extract.test.js.map +1 -0
  438. package/dist/tests/symbols-graph.test.d.ts +2 -0
  439. package/dist/tests/symbols-graph.test.d.ts.map +1 -0
  440. package/dist/tests/symbols-graph.test.js +656 -0
  441. package/dist/tests/symbols-graph.test.js.map +1 -0
  442. package/dist/tests/synthesizer.test.d.ts +2 -0
  443. package/dist/tests/synthesizer.test.d.ts.map +1 -0
  444. package/dist/tests/synthesizer.test.js +381 -0
  445. package/dist/tests/synthesizer.test.js.map +1 -0
  446. package/dist/types/codemap.d.ts +2 -2
  447. package/dist/types/codemap.d.ts.map +1 -1
  448. package/dist/types/codemap.js +17 -9
  449. package/dist/types/codemap.js.map +1 -1
  450. package/dist/types/context-pack.d.ts +5 -5
  451. package/dist/types/context-pack.d.ts.map +1 -1
  452. package/dist/types/context-pack.js +6 -3
  453. package/dist/types/context-pack.js.map +1 -1
  454. package/dist/utils/cli-ui.d.ts +1 -1
  455. package/dist/utils/cli-ui.d.ts.map +1 -1
  456. package/dist/utils/cli-ui.js +26 -26
  457. package/dist/utils/cli-ui.js.map +1 -1
  458. package/dist/utils/indexer-with-progress.d.ts.map +1 -1
  459. package/dist/utils/indexer-with-progress.js +0 -6
  460. package/dist/utils/indexer-with-progress.js.map +1 -1
  461. package/dist/utils/logger.d.ts +10 -1
  462. package/dist/utils/logger.d.ts.map +1 -1
  463. package/dist/utils/logger.js +158 -6
  464. package/dist/utils/logger.js.map +1 -1
  465. package/dist/utils/mutex.d.ts +7 -2
  466. package/dist/utils/mutex.d.ts.map +1 -1
  467. package/dist/utils/mutex.js +35 -7
  468. package/dist/utils/mutex.js.map +1 -1
  469. package/dist/utils/path-helpers.d.ts.map +1 -1
  470. package/dist/utils/path-helpers.js +5 -2
  471. package/dist/utils/path-helpers.js.map +1 -1
  472. package/dist/utils/rate-limiter.d.ts.map +1 -1
  473. package/dist/utils/rate-limiter.js +23 -4
  474. package/dist/utils/rate-limiter.js.map +1 -1
  475. package/dist/utils/simple-lru.d.ts +6 -0
  476. package/dist/utils/simple-lru.d.ts.map +1 -1
  477. package/dist/utils/simple-lru.js +26 -0
  478. package/dist/utils/simple-lru.js.map +1 -1
  479. package/package.json +1 -1
@@ -0,0 +1,441 @@
1
+ /**
2
+ * Unit tests for src/indexer/ChangeQueue.ts
3
+ *
4
+ * Tests queue batching and debouncing functionality including:
5
+ * - Enqueue behavior for add/change/unlink events
6
+ * - Debounce scheduling and timer management
7
+ * - Flush race condition handling
8
+ * - Drain behavior for shutdown
9
+ * - Pending count tracking
10
+ */
11
+ import test from 'node:test';
12
+ import assert from 'node:assert/strict';
13
+ import { setTimeout as delay } from 'timers/promises';
14
+ import { ChangeQueue } from '../../indexer/ChangeQueue.js';
15
+ function createMockOptions(overrides = {}, callLog = []) {
16
+ return {
17
+ repoPath: '/mock/repo',
18
+ provider: 'mock',
19
+ debounceMs: 50, // Short debounce for tests
20
+ logger: {
21
+ log: () => { },
22
+ error: () => { },
23
+ warn: () => { },
24
+ info: () => { },
25
+ debug: () => { }
26
+ },
27
+ onBatch: ({ changed, deleted }) => {
28
+ callLog.push({ changed, deleted });
29
+ },
30
+ providerGetter: async () => null, // No real provider
31
+ ...overrides
32
+ };
33
+ }
34
+ // ============================================================================
35
+ // Enqueue Tests
36
+ // ============================================================================
37
+ test('ChangeQueue enqueue adds file to pending changes', () => {
38
+ const queue = new ChangeQueue(createMockOptions());
39
+ queue.enqueue('add', 'src/test.ts');
40
+ const pending = queue.getPendingCount();
41
+ assert.equal(pending.changes, 1, 'Should have 1 pending change');
42
+ assert.equal(pending.deletes, 0, 'Should have 0 pending deletes');
43
+ queue.cancel();
44
+ });
45
+ test('ChangeQueue enqueue handles change event', () => {
46
+ const queue = new ChangeQueue(createMockOptions());
47
+ queue.enqueue('change', 'src/modified.ts');
48
+ const pending = queue.getPendingCount();
49
+ assert.equal(pending.changes, 1, 'Should have 1 pending change');
50
+ queue.cancel();
51
+ });
52
+ test('ChangeQueue enqueue handles unlink event as delete', () => {
53
+ const queue = new ChangeQueue(createMockOptions());
54
+ queue.enqueue('unlink', 'src/deleted.ts');
55
+ const pending = queue.getPendingCount();
56
+ assert.equal(pending.changes, 0, 'Should have 0 pending changes');
57
+ assert.equal(pending.deletes, 1, 'Should have 1 pending delete');
58
+ queue.cancel();
59
+ });
60
+ test('ChangeQueue enqueue moves file from changes to deletes on unlink', () => {
61
+ const queue = new ChangeQueue(createMockOptions());
62
+ // First add the file
63
+ queue.enqueue('add', 'src/file.ts');
64
+ assert.equal(queue.getPendingCount().changes, 1, 'Should be in changes');
65
+ // Then unlink it
66
+ queue.enqueue('unlink', 'src/file.ts');
67
+ const pending = queue.getPendingCount();
68
+ assert.equal(pending.changes, 0, 'Should be removed from changes');
69
+ assert.equal(pending.deletes, 1, 'Should be in deletes');
70
+ queue.cancel();
71
+ });
72
+ test('ChangeQueue enqueue moves file from deletes to changes on add', () => {
73
+ const queue = new ChangeQueue(createMockOptions());
74
+ // First delete the file
75
+ queue.enqueue('unlink', 'src/file.ts');
76
+ assert.equal(queue.getPendingCount().deletes, 1, 'Should be in deletes');
77
+ // Then re-add it
78
+ queue.enqueue('add', 'src/file.ts');
79
+ const pending = queue.getPendingCount();
80
+ assert.equal(pending.changes, 1, 'Should be in changes');
81
+ assert.equal(pending.deletes, 0, 'Should be removed from deletes');
82
+ queue.cancel();
83
+ });
84
+ test('ChangeQueue enqueue deduplicates multiple changes to same file', () => {
85
+ const queue = new ChangeQueue(createMockOptions());
86
+ queue.enqueue('change', 'src/file.ts');
87
+ queue.enqueue('change', 'src/file.ts');
88
+ queue.enqueue('change', 'src/file.ts');
89
+ const pending = queue.getPendingCount();
90
+ assert.equal(pending.changes, 1, 'Should only have 1 pending change (deduplicated)');
91
+ queue.cancel();
92
+ });
93
+ test('ChangeQueue enqueue handles multiple different files', () => {
94
+ const queue = new ChangeQueue(createMockOptions());
95
+ queue.enqueue('add', 'src/file1.ts');
96
+ queue.enqueue('change', 'src/file2.ts');
97
+ queue.enqueue('unlink', 'src/file3.ts');
98
+ const pending = queue.getPendingCount();
99
+ assert.equal(pending.changes, 2, 'Should have 2 pending changes');
100
+ assert.equal(pending.deletes, 1, 'Should have 1 pending delete');
101
+ queue.cancel();
102
+ });
103
+ // ============================================================================
104
+ // Debounce Tests
105
+ // ============================================================================
106
+ test('ChangeQueue schedules flush after debounce delay', async () => {
107
+ const callLog = [];
108
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 30 }, callLog));
109
+ queue.enqueue('add', 'src/test.ts');
110
+ // Immediately after enqueue, batch should not be processed
111
+ assert.equal(callLog.length, 0, 'Should not flush immediately');
112
+ // Wait for debounce
113
+ await delay(50);
114
+ assert.equal(callLog.length, 1, 'Should flush after debounce');
115
+ assert.deepEqual(callLog[0].changed, ['src/test.ts'], 'Should include changed file');
116
+ queue.cancel();
117
+ });
118
+ test('ChangeQueue resets debounce timer on new enqueue', async () => {
119
+ const callLog = [];
120
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 50 }, callLog));
121
+ queue.enqueue('add', 'src/file1.ts');
122
+ await delay(30); // Wait less than debounce
123
+ queue.enqueue('add', 'src/file2.ts');
124
+ await delay(30); // Still less than debounce from second enqueue
125
+ // Should not have flushed yet
126
+ assert.equal(callLog.length, 0, 'Should not flush - timer was reset');
127
+ await delay(40); // Now past debounce from second enqueue
128
+ assert.equal(callLog.length, 1, 'Should flush once');
129
+ assert.equal(callLog[0].changed.length, 2, 'Should include both files');
130
+ queue.cancel();
131
+ });
132
+ test('ChangeQueue batches rapid changes together', async () => {
133
+ const callLog = [];
134
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 50 }, callLog));
135
+ // Rapid succession of changes
136
+ for (let i = 0; i < 10; i++) {
137
+ queue.enqueue('add', `src/file${i}.ts`);
138
+ }
139
+ await delay(100);
140
+ assert.equal(callLog.length, 1, 'Should batch all changes into single flush');
141
+ assert.equal(callLog[0].changed.length, 10, 'Should include all 10 files');
142
+ queue.cancel();
143
+ });
144
+ // ============================================================================
145
+ // Flush Tests
146
+ // ============================================================================
147
+ test('ChangeQueue flush processes pending changes', async () => {
148
+ const callLog = [];
149
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 1000 }, callLog));
150
+ queue.enqueue('add', 'src/test.ts');
151
+ queue.enqueue('unlink', 'src/deleted.ts');
152
+ // Manually flush without waiting for debounce
153
+ await queue.flush();
154
+ assert.equal(callLog.length, 1, 'Should flush');
155
+ assert.deepEqual(callLog[0].changed, ['src/test.ts'], 'Should include changed file');
156
+ assert.deepEqual(callLog[0].deleted, ['src/deleted.ts'], 'Should include deleted file');
157
+ queue.cancel();
158
+ });
159
+ test('ChangeQueue flush returns immediately when no pending changes', async () => {
160
+ const callLog = [];
161
+ const queue = new ChangeQueue(createMockOptions({}, callLog));
162
+ await queue.flush();
163
+ assert.equal(callLog.length, 0, 'Should not call onBatch when nothing pending');
164
+ queue.cancel();
165
+ });
166
+ test('ChangeQueue flush clears pending changes after processing', async () => {
167
+ const callLog = [];
168
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 1000 }, callLog));
169
+ queue.enqueue('add', 'src/test.ts');
170
+ await queue.flush();
171
+ assert.equal(queue.hasPending(), false, 'Should have no pending changes after flush');
172
+ assert.equal(queue.getPendingCount().changes, 0, 'Changes count should be 0');
173
+ queue.cancel();
174
+ });
175
+ test('ChangeQueue flush handles concurrent flush calls safely', async () => {
176
+ const callLog = [];
177
+ let flushCount = 0;
178
+ const queue = new ChangeQueue(createMockOptions({
179
+ debounceMs: 1000,
180
+ onBatch: async ({ changed, deleted }) => {
181
+ flushCount++;
182
+ callLog.push({ changed, deleted });
183
+ await delay(50); // Simulate slow processing
184
+ }
185
+ }, []));
186
+ queue.enqueue('add', 'src/test.ts');
187
+ // Start multiple concurrent flushes
188
+ const flush1 = queue.flush();
189
+ const flush2 = queue.flush();
190
+ const flush3 = queue.flush();
191
+ await Promise.all([flush1, flush2, flush3]);
192
+ // Only one actual batch should have been processed
193
+ assert.equal(flushCount, 1, 'Should only process once despite concurrent calls');
194
+ queue.cancel();
195
+ });
196
+ test('ChangeQueue flush reschedules if new changes arrive during processing', async () => {
197
+ const callLog = [];
198
+ const queue = new ChangeQueue(createMockOptions({
199
+ debounceMs: 20,
200
+ onBatch: async ({ changed, deleted }) => {
201
+ callLog.push({ changed, deleted });
202
+ await delay(50); // Slow processing
203
+ }
204
+ }, []));
205
+ queue.enqueue('add', 'src/file1.ts');
206
+ // Start flush
207
+ const flushPromise = queue.flush();
208
+ // While processing, add more changes
209
+ await delay(10);
210
+ queue.enqueue('add', 'src/file2.ts');
211
+ await flushPromise;
212
+ // Wait for rescheduled flush
213
+ await delay(100);
214
+ assert.ok(callLog.length >= 1, 'Should process at least initial batch');
215
+ queue.cancel();
216
+ });
217
+ // ============================================================================
218
+ // Drain Tests
219
+ // ============================================================================
220
+ test('ChangeQueue drain flushes all pending changes', async () => {
221
+ const callLog = [];
222
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 500 }, callLog));
223
+ queue.enqueue('add', 'src/file1.ts');
224
+ queue.enqueue('add', 'src/file2.ts');
225
+ await queue.drain();
226
+ assert.equal(callLog.length, 1, 'Should have flushed');
227
+ assert.equal(callLog[0].changed.length, 2, 'Should include both files');
228
+ assert.equal(queue.hasPending(), false, 'Should have no pending after drain');
229
+ queue.cancel();
230
+ });
231
+ test('ChangeQueue drain cancels pending timer', async () => {
232
+ const callLog = [];
233
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 500 }, callLog));
234
+ queue.enqueue('add', 'src/test.ts');
235
+ // Drain should process immediately without waiting for timer
236
+ const start = Date.now();
237
+ await queue.drain();
238
+ const elapsed = Date.now() - start;
239
+ assert.ok(elapsed < 300, 'Drain should complete quickly without waiting for full debounce');
240
+ assert.equal(callLog.length, 1, 'Should have flushed');
241
+ queue.cancel();
242
+ });
243
+ test('ChangeQueue drain handles empty queue', async () => {
244
+ const callLog = [];
245
+ const queue = new ChangeQueue(createMockOptions({}, callLog));
246
+ await queue.drain();
247
+ assert.equal(callLog.length, 0, 'Should not call onBatch for empty queue');
248
+ queue.cancel();
249
+ });
250
+ test('ChangeQueue drain waits for in-progress flush', async () => {
251
+ let processingComplete = false;
252
+ const queue = new ChangeQueue(createMockOptions({
253
+ debounceMs: 10,
254
+ onBatch: async () => {
255
+ await delay(100);
256
+ processingComplete = true;
257
+ }
258
+ }, []));
259
+ queue.enqueue('add', 'src/test.ts');
260
+ // Trigger debounce flush
261
+ await delay(20);
262
+ // Drain should wait for processing to complete
263
+ await queue.drain();
264
+ assert.equal(processingComplete, true, 'Drain should wait for processing');
265
+ queue.cancel();
266
+ });
267
+ // ============================================================================
268
+ // Cancel Tests
269
+ // ============================================================================
270
+ test('ChangeQueue cancel stops pending timer', async () => {
271
+ const callLog = [];
272
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 50 }, callLog));
273
+ queue.enqueue('add', 'src/test.ts');
274
+ // Cancel before debounce triggers
275
+ queue.cancel();
276
+ await delay(100);
277
+ assert.equal(callLog.length, 0, 'Should not flush after cancel');
278
+ });
279
+ test('ChangeQueue cancel is idempotent', () => {
280
+ const queue = new ChangeQueue(createMockOptions());
281
+ // Multiple cancels should not throw
282
+ queue.cancel();
283
+ queue.cancel();
284
+ queue.cancel();
285
+ assert.ok(true, 'Multiple cancels should not throw');
286
+ });
287
+ test('ChangeQueue cancel does not clear pending changes', () => {
288
+ const queue = new ChangeQueue(createMockOptions());
289
+ queue.enqueue('add', 'src/test.ts');
290
+ queue.cancel();
291
+ assert.equal(queue.hasPending(), true, 'Pending changes should remain after cancel');
292
+ queue.cancel();
293
+ });
294
+ // ============================================================================
295
+ // hasPending Tests
296
+ // ============================================================================
297
+ test('ChangeQueue hasPending returns false for empty queue', () => {
298
+ const queue = new ChangeQueue(createMockOptions());
299
+ assert.equal(queue.hasPending(), false, 'Empty queue should not have pending');
300
+ queue.cancel();
301
+ });
302
+ test('ChangeQueue hasPending returns true when changes pending', () => {
303
+ const queue = new ChangeQueue(createMockOptions());
304
+ queue.enqueue('add', 'src/test.ts');
305
+ assert.equal(queue.hasPending(), true, 'Should have pending after enqueue');
306
+ queue.cancel();
307
+ });
308
+ test('ChangeQueue hasPending returns true when deletes pending', () => {
309
+ const queue = new ChangeQueue(createMockOptions());
310
+ queue.enqueue('unlink', 'src/test.ts');
311
+ assert.equal(queue.hasPending(), true, 'Should have pending for deletes');
312
+ queue.cancel();
313
+ });
314
+ // ============================================================================
315
+ // getPendingCount Tests
316
+ // ============================================================================
317
+ test('ChangeQueue getPendingCount returns accurate counts', () => {
318
+ const queue = new ChangeQueue(createMockOptions());
319
+ queue.enqueue('add', 'src/file1.ts');
320
+ queue.enqueue('add', 'src/file2.ts');
321
+ queue.enqueue('change', 'src/file3.ts');
322
+ queue.enqueue('unlink', 'src/deleted1.ts');
323
+ queue.enqueue('unlink', 'src/deleted2.ts');
324
+ const count = queue.getPendingCount();
325
+ assert.equal(count.changes, 3, 'Should count 3 changes');
326
+ assert.equal(count.deletes, 2, 'Should count 2 deletes');
327
+ queue.cancel();
328
+ });
329
+ test('ChangeQueue getPendingCount returns zeros for empty queue', () => {
330
+ const queue = new ChangeQueue(createMockOptions());
331
+ const count = queue.getPendingCount();
332
+ assert.equal(count.changes, 0, 'Changes should be 0');
333
+ assert.equal(count.deletes, 0, 'Deletes should be 0');
334
+ queue.cancel();
335
+ });
336
+ // ============================================================================
337
+ // Error Handling Tests
338
+ // ============================================================================
339
+ test('ChangeQueue handles onBatch errors gracefully', async () => {
340
+ let errorLogged = false;
341
+ const queue = new ChangeQueue({
342
+ repoPath: '/mock/repo',
343
+ provider: 'mock',
344
+ debounceMs: 10,
345
+ logger: {
346
+ log: () => { },
347
+ error: () => { errorLogged = true; },
348
+ warn: () => { },
349
+ info: () => { },
350
+ debug: () => { }
351
+ },
352
+ onBatch: () => {
353
+ throw new Error('Simulated error');
354
+ }
355
+ });
356
+ queue.enqueue('add', 'src/test.ts');
357
+ await queue.flush();
358
+ assert.equal(errorLogged, true, 'Error should be logged');
359
+ assert.equal(queue.hasPending(), false, 'Queue should be cleared despite error');
360
+ queue.cancel();
361
+ });
362
+ test('ChangeQueue handles providerGetter errors gracefully', async () => {
363
+ let errorLogged = false;
364
+ const queue = new ChangeQueue({
365
+ repoPath: '/mock/repo',
366
+ provider: 'mock',
367
+ debounceMs: 10,
368
+ logger: {
369
+ log: () => { },
370
+ error: () => { errorLogged = true; },
371
+ warn: () => { },
372
+ info: () => { },
373
+ debug: () => { }
374
+ },
375
+ providerGetter: async () => {
376
+ throw new Error('Provider error');
377
+ }
378
+ });
379
+ queue.enqueue('add', 'src/test.ts');
380
+ // This will fail during updateIndex due to providerGetter error
381
+ // but should handle gracefully
382
+ await queue.flush();
383
+ queue.cancel();
384
+ });
385
+ // ============================================================================
386
+ // Logging Tests
387
+ // ============================================================================
388
+ test('ChangeQueue logs batch info when no onBatch callback', async () => {
389
+ let logMessage = '';
390
+ const queue = new ChangeQueue({
391
+ repoPath: '/mock/repo',
392
+ provider: 'mock',
393
+ debounceMs: 10,
394
+ logger: {
395
+ log: (msg) => { logMessage = msg; },
396
+ error: () => { },
397
+ warn: () => { },
398
+ info: () => { },
399
+ debug: () => { }
400
+ },
401
+ onBatch: null,
402
+ providerGetter: async () => null
403
+ });
404
+ queue.enqueue('add', 'src/test.ts');
405
+ await queue.flush();
406
+ assert.ok(logMessage.includes('indexed'), 'Should log indexing message');
407
+ assert.ok(logMessage.includes('1'), 'Should include count');
408
+ queue.cancel();
409
+ });
410
+ // ============================================================================
411
+ // Edge Cases
412
+ // ============================================================================
413
+ test('ChangeQueue handles very short debounce', async () => {
414
+ const callLog = [];
415
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 1 }, callLog));
416
+ queue.enqueue('add', 'src/test.ts');
417
+ await delay(50);
418
+ assert.ok(callLog.length >= 1, 'Should flush with very short debounce');
419
+ queue.cancel();
420
+ });
421
+ test('ChangeQueue handles files with special characters', async () => {
422
+ const callLog = [];
423
+ const queue = new ChangeQueue(createMockOptions({ debounceMs: 10 }, callLog));
424
+ queue.enqueue('add', 'src/file with spaces.ts');
425
+ queue.enqueue('add', 'src/\u4E2D\u6587.ts');
426
+ queue.enqueue('add', 'src/special@#$.ts');
427
+ await queue.flush();
428
+ assert.equal(callLog.length, 1, 'Should handle special characters');
429
+ assert.equal(callLog[0].changed.length, 3, 'Should include all files');
430
+ queue.cancel();
431
+ });
432
+ test('ChangeQueue handles large number of files', () => {
433
+ const queue = new ChangeQueue(createMockOptions());
434
+ for (let i = 0; i < 1000; i++) {
435
+ queue.enqueue('add', `src/file${i}.ts`);
436
+ }
437
+ const count = queue.getPendingCount();
438
+ assert.equal(count.changes, 1000, 'Should handle 1000 files');
439
+ queue.cancel();
440
+ });
441
+ //# sourceMappingURL=ChangeQueue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeQueue.test.js","sourceRoot":"","sources":["../../../src/tests/indexer/ChangeQueue.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Unit tests for src/indexer/ProviderManager.ts
3
+ *
4
+ * Tests embedding provider lifecycle management including:
5
+ * - Provider initialization and caching
6
+ * - Concurrent initialization handling
7
+ * - Error handling and retry behavior
8
+ * - Safe provider access with error logging
9
+ * - Cleanup and resource release
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=ProviderManager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderManager.test.d.ts","sourceRoot":"","sources":["../../../src/tests/indexer/ProviderManager.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}