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 @@
1
+ {"version":3,"file":"WatchService.test.js","sourceRoot":"","sources":["../../../src/tests/indexer/WatchService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Unit tests for src/indexer/merkle.ts
3
+ *
4
+ * Tests Merkle tree operations including:
5
+ * - Hash computation (xxhash)
6
+ * - Merkle tree load/save operations
7
+ * - Path normalization and safety validation
8
+ * - Merkle entry manipulation (add, remove, clone)
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=merkle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.test.d.ts","sourceRoot":"","sources":["../../../src/tests/indexer/merkle.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,497 @@
1
+ /**
2
+ * Unit tests for src/indexer/merkle.ts
3
+ *
4
+ * Tests Merkle tree operations including:
5
+ * - Hash computation (xxhash)
6
+ * - Merkle tree load/save operations
7
+ * - Path normalization and safety validation
8
+ * - Merkle entry manipulation (add, remove, clone)
9
+ */
10
+ import test from 'node:test';
11
+ import assert from 'node:assert/strict';
12
+ import fs from 'fs';
13
+ import path from 'path';
14
+ import os from 'os';
15
+ import { computeFastHash, loadMerkle, saveMerkle, saveMerkleAsync, toPosixPath, validatePathSafety, normalizeToProjectPath, removeMerkleEntry, cloneMerkle } from '../../indexer/merkle.js';
16
+ // Helper to create a temporary directory
17
+ async function createTempDir() {
18
+ const tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'merkle-test-'));
19
+ return tmpDir;
20
+ }
21
+ // Helper to clean up temp directory
22
+ async function cleanupTempDir(tmpDir) {
23
+ await fs.promises.rm(tmpDir, { recursive: true, force: true });
24
+ }
25
+ // ============================================================================
26
+ // computeFastHash Tests
27
+ // ============================================================================
28
+ test('computeFastHash returns consistent hash for same string input', async () => {
29
+ const input = 'function hello() { return "world"; }';
30
+ const hash1 = await computeFastHash(input);
31
+ const hash2 = await computeFastHash(input);
32
+ assert.equal(hash1, hash2, 'Same input should produce same hash');
33
+ assert.ok(typeof hash1 === 'string', 'Hash should be a string');
34
+ assert.ok(hash1.length > 0, 'Hash should not be empty');
35
+ });
36
+ test('computeFastHash returns different hashes for different inputs', async () => {
37
+ const hash1 = await computeFastHash('content1');
38
+ const hash2 = await computeFastHash('content2');
39
+ assert.notEqual(hash1, hash2, 'Different inputs should produce different hashes');
40
+ });
41
+ test('computeFastHash handles Buffer input', async () => {
42
+ const text = 'buffer content';
43
+ const buffer = Buffer.from(text, 'utf8');
44
+ const hashFromBuffer = await computeFastHash(buffer);
45
+ const hashFromString = await computeFastHash(text);
46
+ assert.equal(hashFromBuffer, hashFromString, 'Buffer and string with same content should hash equally');
47
+ });
48
+ test('computeFastHash handles empty string', async () => {
49
+ const hash = await computeFastHash('');
50
+ assert.ok(typeof hash === 'string', 'Hash of empty string should be a string');
51
+ assert.ok(hash.length > 0, 'Hash of empty string should not be empty');
52
+ });
53
+ test('computeFastHash handles special characters', async () => {
54
+ const input = 'const x = "\u00E9\u00E8\u00EA\u4E2D\u6587\u65E5\u672C\u8A9E";';
55
+ const hash = await computeFastHash(input);
56
+ assert.ok(typeof hash === 'string', 'Hash should handle unicode');
57
+ assert.ok(hash.length > 0, 'Hash should not be empty');
58
+ });
59
+ test('computeFastHash handles large content', async () => {
60
+ const largeContent = 'x'.repeat(100000);
61
+ const hash = await computeFastHash(largeContent);
62
+ assert.ok(typeof hash === 'string', 'Hash should handle large content');
63
+ assert.ok(hash.length > 0, 'Hash should not be empty');
64
+ });
65
+ // ============================================================================
66
+ // loadMerkle Tests
67
+ // ============================================================================
68
+ test('loadMerkle returns empty object when merkle file does not exist', async () => {
69
+ const tmpDir = await createTempDir();
70
+ try {
71
+ const merkle = loadMerkle(tmpDir);
72
+ assert.deepEqual(merkle, {}, 'Should return empty object for non-existent merkle');
73
+ }
74
+ finally {
75
+ await cleanupTempDir(tmpDir);
76
+ }
77
+ });
78
+ test('loadMerkle returns empty object when merkle file contains invalid JSON', async () => {
79
+ const tmpDir = await createTempDir();
80
+ try {
81
+ const merkleDir = path.join(tmpDir, '.codevault');
82
+ fs.mkdirSync(merkleDir, { recursive: true });
83
+ fs.writeFileSync(path.join(merkleDir, 'merkle.json'), 'not valid json{{{');
84
+ const merkle = loadMerkle(tmpDir);
85
+ assert.deepEqual(merkle, {}, 'Should return empty object for invalid JSON');
86
+ }
87
+ finally {
88
+ await cleanupTempDir(tmpDir);
89
+ }
90
+ });
91
+ test('loadMerkle correctly loads valid merkle file', async () => {
92
+ const tmpDir = await createTempDir();
93
+ try {
94
+ const merkleDir = path.join(tmpDir, '.codevault');
95
+ fs.mkdirSync(merkleDir, { recursive: true });
96
+ const testMerkle = {
97
+ 'src/index.ts': {
98
+ shaFile: 'abc123',
99
+ chunkShas: ['chunk1', 'chunk2']
100
+ }
101
+ };
102
+ fs.writeFileSync(path.join(merkleDir, 'merkle.json'), JSON.stringify(testMerkle));
103
+ const loaded = loadMerkle(tmpDir);
104
+ assert.deepEqual(loaded, testMerkle, 'Should load merkle correctly');
105
+ }
106
+ finally {
107
+ await cleanupTempDir(tmpDir);
108
+ }
109
+ });
110
+ test('loadMerkle handles non-object JSON (returns fallback)', async () => {
111
+ const tmpDir = await createTempDir();
112
+ try {
113
+ const merkleDir = path.join(tmpDir, '.codevault');
114
+ fs.mkdirSync(merkleDir, { recursive: true });
115
+ fs.writeFileSync(path.join(merkleDir, 'merkle.json'), '"just a string"');
116
+ const merkle = loadMerkle(tmpDir);
117
+ assert.deepEqual(merkle, {}, 'Should return empty object for non-object JSON');
118
+ }
119
+ finally {
120
+ await cleanupTempDir(tmpDir);
121
+ }
122
+ });
123
+ test('loadMerkle handles null JSON (returns fallback)', async () => {
124
+ const tmpDir = await createTempDir();
125
+ try {
126
+ const merkleDir = path.join(tmpDir, '.codevault');
127
+ fs.mkdirSync(merkleDir, { recursive: true });
128
+ fs.writeFileSync(path.join(merkleDir, 'merkle.json'), 'null');
129
+ const merkle = loadMerkle(tmpDir);
130
+ assert.deepEqual(merkle, {}, 'Should return empty object for null JSON');
131
+ }
132
+ finally {
133
+ await cleanupTempDir(tmpDir);
134
+ }
135
+ });
136
+ // ============================================================================
137
+ // saveMerkle Tests
138
+ // ============================================================================
139
+ test('saveMerkle creates .codevault directory if not exists', async () => {
140
+ const tmpDir = await createTempDir();
141
+ try {
142
+ const testMerkle = {
143
+ 'file.ts': { shaFile: 'hash', chunkShas: [] }
144
+ };
145
+ saveMerkle(tmpDir, testMerkle);
146
+ const merkleDir = path.join(tmpDir, '.codevault');
147
+ assert.ok(fs.existsSync(merkleDir), '.codevault directory should be created');
148
+ assert.ok(fs.existsSync(path.join(merkleDir, 'merkle.json')), 'merkle.json should be created');
149
+ }
150
+ finally {
151
+ await cleanupTempDir(tmpDir);
152
+ }
153
+ });
154
+ test('saveMerkle writes valid JSON that can be loaded back', async () => {
155
+ const tmpDir = await createTempDir();
156
+ try {
157
+ const testMerkle = {
158
+ 'src/utils.ts': { shaFile: 'xyz789', chunkShas: ['a', 'b', 'c'] },
159
+ 'src/main.ts': { shaFile: 'abc123', chunkShas: ['d'] }
160
+ };
161
+ saveMerkle(tmpDir, testMerkle);
162
+ const loaded = loadMerkle(tmpDir);
163
+ assert.deepEqual(loaded, testMerkle, 'Saved merkle should match loaded merkle');
164
+ }
165
+ finally {
166
+ await cleanupTempDir(tmpDir);
167
+ }
168
+ });
169
+ test('saveMerkle overwrites existing merkle file', async () => {
170
+ const tmpDir = await createTempDir();
171
+ try {
172
+ const firstMerkle = {
173
+ 'old.ts': { shaFile: 'old', chunkShas: [] }
174
+ };
175
+ const secondMerkle = {
176
+ 'new.ts': { shaFile: 'new', chunkShas: ['chunk'] }
177
+ };
178
+ saveMerkle(tmpDir, firstMerkle);
179
+ saveMerkle(tmpDir, secondMerkle);
180
+ const loaded = loadMerkle(tmpDir);
181
+ assert.deepEqual(loaded, secondMerkle, 'Second save should overwrite first');
182
+ assert.ok(!('old.ts' in loaded), 'Old entry should not exist');
183
+ }
184
+ finally {
185
+ await cleanupTempDir(tmpDir);
186
+ }
187
+ });
188
+ test('saveMerkle handles empty merkle tree', async () => {
189
+ const tmpDir = await createTempDir();
190
+ try {
191
+ saveMerkle(tmpDir, {});
192
+ const loaded = loadMerkle(tmpDir);
193
+ assert.deepEqual(loaded, {}, 'Empty merkle should be saved and loaded correctly');
194
+ }
195
+ finally {
196
+ await cleanupTempDir(tmpDir);
197
+ }
198
+ });
199
+ test('saveMerkle uses default empty object when merkle is undefined', async () => {
200
+ const tmpDir = await createTempDir();
201
+ try {
202
+ saveMerkle(tmpDir);
203
+ const loaded = loadMerkle(tmpDir);
204
+ assert.deepEqual(loaded, {}, 'Default empty merkle should be saved');
205
+ }
206
+ finally {
207
+ await cleanupTempDir(tmpDir);
208
+ }
209
+ });
210
+ // ============================================================================
211
+ // saveMerkleAsync Tests
212
+ // ============================================================================
213
+ test('saveMerkleAsync creates directory and file asynchronously', async () => {
214
+ const tmpDir = await createTempDir();
215
+ try {
216
+ const testMerkle = {
217
+ 'async-file.ts': { shaFile: 'asynchash', chunkShas: ['x'] }
218
+ };
219
+ await saveMerkleAsync(tmpDir, testMerkle);
220
+ const loaded = loadMerkle(tmpDir);
221
+ assert.deepEqual(loaded, testMerkle, 'Async save should work correctly');
222
+ }
223
+ finally {
224
+ await cleanupTempDir(tmpDir);
225
+ }
226
+ });
227
+ test('saveMerkleAsync handles concurrent writes', async () => {
228
+ const tmpDir = await createTempDir();
229
+ try {
230
+ const merkle1 = { 'file1.ts': { shaFile: 'h1', chunkShas: [] } };
231
+ const merkle2 = { 'file2.ts': { shaFile: 'h2', chunkShas: [] } };
232
+ // Both writes should complete without error
233
+ await Promise.all([
234
+ saveMerkleAsync(tmpDir, merkle1),
235
+ saveMerkleAsync(tmpDir, merkle2)
236
+ ]);
237
+ const loaded = loadMerkle(tmpDir);
238
+ // One of them should have won
239
+ assert.ok('file1.ts' in loaded || 'file2.ts' in loaded, 'At least one write should succeed');
240
+ }
241
+ finally {
242
+ await cleanupTempDir(tmpDir);
243
+ }
244
+ });
245
+ // ============================================================================
246
+ // toPosixPath Tests
247
+ // ============================================================================
248
+ test('toPosixPath converts Windows-style paths to POSIX', () => {
249
+ // On Unix, path.sep is '/', so this test simulates the conversion
250
+ const input = 'src\\utils\\helper.ts';
251
+ const result = toPosixPath(input.split('\\').join(path.sep));
252
+ // The function replaces path.sep with '/', so on Unix it's a no-op for Unix paths
253
+ assert.ok(typeof result === 'string');
254
+ });
255
+ test('toPosixPath returns null for null input', () => {
256
+ const result = toPosixPath(null);
257
+ assert.equal(result, null, 'Should return null for null input');
258
+ });
259
+ test('toPosixPath handles empty string', () => {
260
+ const result = toPosixPath('');
261
+ assert.equal(result, '', 'Should return empty string for empty input');
262
+ });
263
+ test('toPosixPath handles already POSIX paths', () => {
264
+ const input = 'src/utils/helper.ts';
265
+ const result = toPosixPath(input);
266
+ assert.equal(result, input, 'POSIX paths should remain unchanged');
267
+ });
268
+ test('toPosixPath handles single filename', () => {
269
+ const result = toPosixPath('file.ts');
270
+ assert.equal(result, 'file.ts', 'Single filename should remain unchanged');
271
+ });
272
+ // ============================================================================
273
+ // validatePathSafety Tests
274
+ // ============================================================================
275
+ test('validatePathSafety marks paths inside base as safe', async () => {
276
+ const tmpDir = await createTempDir();
277
+ try {
278
+ // Create a test file
279
+ const testFile = path.join(tmpDir, 'test.ts');
280
+ fs.writeFileSync(testFile, 'content');
281
+ const result = validatePathSafety(tmpDir, 'test.ts');
282
+ assert.equal(result.safe, true, 'Path inside base should be safe');
283
+ assert.ok(result.normalized !== null, 'Normalized path should not be null');
284
+ }
285
+ finally {
286
+ await cleanupTempDir(tmpDir);
287
+ }
288
+ });
289
+ test('validatePathSafety marks parent traversal as unsafe', async () => {
290
+ const tmpDir = await createTempDir();
291
+ try {
292
+ const result = validatePathSafety(tmpDir, '../outside.ts');
293
+ assert.equal(result.safe, false, 'Parent traversal should be unsafe');
294
+ assert.equal(result.reason, 'path_outside_base', 'Should have correct reason');
295
+ }
296
+ finally {
297
+ await cleanupTempDir(tmpDir);
298
+ }
299
+ });
300
+ test('validatePathSafety marks absolute paths outside base as unsafe', async () => {
301
+ const tmpDir = await createTempDir();
302
+ try {
303
+ const result = validatePathSafety(tmpDir, '/etc/passwd');
304
+ assert.equal(result.safe, false, 'Absolute path outside base should be unsafe');
305
+ }
306
+ finally {
307
+ await cleanupTempDir(tmpDir);
308
+ }
309
+ });
310
+ test('validatePathSafety handles empty relative path', async () => {
311
+ const tmpDir = await createTempDir();
312
+ try {
313
+ const result = validatePathSafety(tmpDir, '');
314
+ assert.equal(result.safe, true, 'Empty relative path (base itself) should be safe');
315
+ }
316
+ finally {
317
+ await cleanupTempDir(tmpDir);
318
+ }
319
+ });
320
+ test('validatePathSafety handles nested paths correctly', async () => {
321
+ const tmpDir = await createTempDir();
322
+ try {
323
+ // Create nested directory structure
324
+ const nestedDir = path.join(tmpDir, 'src', 'utils');
325
+ fs.mkdirSync(nestedDir, { recursive: true });
326
+ fs.writeFileSync(path.join(nestedDir, 'helper.ts'), 'content');
327
+ const result = validatePathSafety(tmpDir, 'src/utils/helper.ts');
328
+ assert.equal(result.safe, true, 'Nested path should be safe');
329
+ assert.ok(result.normalized?.includes('helper.ts'), 'Normalized should include filename');
330
+ }
331
+ finally {
332
+ await cleanupTempDir(tmpDir);
333
+ }
334
+ });
335
+ test('validatePathSafety handles non-existent but valid relative path', async () => {
336
+ const tmpDir = await createTempDir();
337
+ try {
338
+ const result = validatePathSafety(tmpDir, 'nonexistent/path/file.ts');
339
+ assert.equal(result.safe, true, 'Non-existent but valid relative path should be safe');
340
+ }
341
+ finally {
342
+ await cleanupTempDir(tmpDir);
343
+ }
344
+ });
345
+ test('validatePathSafety detects symlink escaping', async () => {
346
+ const tmpDir = await createTempDir();
347
+ const outsideDir = await createTempDir();
348
+ try {
349
+ // Create a symlink that points outside the base
350
+ const symlinkPath = path.join(tmpDir, 'escape-link');
351
+ try {
352
+ fs.symlinkSync(outsideDir, symlinkPath);
353
+ }
354
+ catch {
355
+ // Symlinks may not be supported on all systems/permissions
356
+ // Skip this test in that case
357
+ return;
358
+ }
359
+ const result = validatePathSafety(tmpDir, 'escape-link');
360
+ assert.equal(result.safe, false, 'Symlink escaping should be detected');
361
+ assert.equal(result.reason, 'symlink_escape', 'Should have symlink_escape reason');
362
+ }
363
+ finally {
364
+ await cleanupTempDir(tmpDir);
365
+ await cleanupTempDir(outsideDir);
366
+ }
367
+ });
368
+ // ============================================================================
369
+ // normalizeToProjectPath Tests
370
+ // ============================================================================
371
+ test('normalizeToProjectPath returns null for empty string', async () => {
372
+ const tmpDir = await createTempDir();
373
+ try {
374
+ const result = normalizeToProjectPath(tmpDir, '');
375
+ assert.equal(result, null, 'Empty string should return null');
376
+ }
377
+ finally {
378
+ await cleanupTempDir(tmpDir);
379
+ }
380
+ });
381
+ test('normalizeToProjectPath returns null for undefined', async () => {
382
+ const tmpDir = await createTempDir();
383
+ try {
384
+ const result = normalizeToProjectPath(tmpDir, undefined);
385
+ assert.equal(result, null, 'Undefined should return null');
386
+ }
387
+ finally {
388
+ await cleanupTempDir(tmpDir);
389
+ }
390
+ });
391
+ test('normalizeToProjectPath returns null for non-string input', async () => {
392
+ const tmpDir = await createTempDir();
393
+ try {
394
+ const result = normalizeToProjectPath(tmpDir, 123);
395
+ assert.equal(result, null, 'Non-string should return null');
396
+ }
397
+ finally {
398
+ await cleanupTempDir(tmpDir);
399
+ }
400
+ });
401
+ test('normalizeToProjectPath normalizes valid path', async () => {
402
+ const tmpDir = await createTempDir();
403
+ try {
404
+ const testFile = path.join(tmpDir, 'src', 'test.ts');
405
+ fs.mkdirSync(path.dirname(testFile), { recursive: true });
406
+ fs.writeFileSync(testFile, 'content');
407
+ const result = normalizeToProjectPath(tmpDir, 'src/test.ts');
408
+ assert.ok(result !== null, 'Valid path should return non-null');
409
+ assert.ok(result?.includes('test.ts'), 'Should include filename');
410
+ }
411
+ finally {
412
+ await cleanupTempDir(tmpDir);
413
+ }
414
+ });
415
+ test('normalizeToProjectPath returns null for unsafe path', async () => {
416
+ const tmpDir = await createTempDir();
417
+ try {
418
+ const result = normalizeToProjectPath(tmpDir, '../escape.ts');
419
+ assert.equal(result, null, 'Unsafe path should return null');
420
+ }
421
+ finally {
422
+ await cleanupTempDir(tmpDir);
423
+ }
424
+ });
425
+ // ============================================================================
426
+ // removeMerkleEntry Tests
427
+ // ============================================================================
428
+ test('removeMerkleEntry removes existing entry and returns true', () => {
429
+ const merkle = {
430
+ 'file1.ts': { shaFile: 'h1', chunkShas: [] },
431
+ 'file2.ts': { shaFile: 'h2', chunkShas: [] }
432
+ };
433
+ const result = removeMerkleEntry(merkle, 'file1.ts');
434
+ assert.equal(result, true, 'Should return true for existing entry');
435
+ assert.ok(!('file1.ts' in merkle), 'Entry should be removed');
436
+ assert.ok('file2.ts' in merkle, 'Other entries should remain');
437
+ });
438
+ test('removeMerkleEntry returns false for non-existent entry', () => {
439
+ const merkle = {
440
+ 'file1.ts': { shaFile: 'h1', chunkShas: [] }
441
+ };
442
+ const result = removeMerkleEntry(merkle, 'nonexistent.ts');
443
+ assert.equal(result, false, 'Should return false for non-existent entry');
444
+ assert.ok('file1.ts' in merkle, 'Existing entry should remain');
445
+ });
446
+ test('removeMerkleEntry returns false for null merkle', () => {
447
+ const result = removeMerkleEntry(null, 'file.ts');
448
+ assert.equal(result, false, 'Should return false for null merkle');
449
+ });
450
+ test('removeMerkleEntry returns false for non-object merkle', () => {
451
+ const result = removeMerkleEntry('not an object', 'file.ts');
452
+ assert.equal(result, false, 'Should return false for non-object merkle');
453
+ });
454
+ test('removeMerkleEntry handles empty merkle tree', () => {
455
+ const merkle = {};
456
+ const result = removeMerkleEntry(merkle, 'file.ts');
457
+ assert.equal(result, false, 'Should return false for empty merkle');
458
+ });
459
+ // ============================================================================
460
+ // cloneMerkle Tests
461
+ // ============================================================================
462
+ test('cloneMerkle creates a deep copy', () => {
463
+ const original = {
464
+ 'file.ts': { shaFile: 'hash', chunkShas: ['a', 'b'] }
465
+ };
466
+ const cloned = cloneMerkle(original);
467
+ assert.deepEqual(cloned, original, 'Clone should equal original');
468
+ // Modify clone and verify original is unchanged
469
+ cloned['file.ts'].shaFile = 'modified';
470
+ cloned['file.ts'].chunkShas.push('c');
471
+ assert.equal(original['file.ts'].shaFile, 'hash', 'Original should be unchanged');
472
+ assert.equal(original['file.ts'].chunkShas.length, 2, 'Original chunks should be unchanged');
473
+ });
474
+ test('cloneMerkle handles empty merkle', () => {
475
+ const original = {};
476
+ const cloned = cloneMerkle(original);
477
+ assert.deepEqual(cloned, {}, 'Empty merkle clone should be empty');
478
+ });
479
+ test('cloneMerkle handles null by returning empty object', () => {
480
+ const cloned = cloneMerkle(null);
481
+ assert.deepEqual(cloned, {}, 'Null should clone to empty object');
482
+ });
483
+ test('cloneMerkle handles undefined by returning empty object', () => {
484
+ const cloned = cloneMerkle(undefined);
485
+ assert.deepEqual(cloned, {}, 'Undefined should clone to empty object');
486
+ });
487
+ test('cloneMerkle preserves complex merkle structure', () => {
488
+ const original = {
489
+ 'src/index.ts': { shaFile: 'h1', chunkShas: ['c1', 'c2', 'c3'] },
490
+ 'src/utils/helper.ts': { shaFile: 'h2', chunkShas: [] },
491
+ 'lib/core.ts': { shaFile: 'h3', chunkShas: ['c4'] }
492
+ };
493
+ const cloned = cloneMerkle(original);
494
+ assert.deepEqual(cloned, original, 'Complex merkle should clone correctly');
495
+ assert.notEqual(cloned, original, 'Clone should be a different object reference');
496
+ });
497
+ //# sourceMappingURL=merkle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.test.js","sourceRoot":"","sources":["../../../src/tests/indexer/merkle.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Unit tests for src/indexer/update.ts
3
+ *
4
+ * Tests partial re-indexing functionality including:
5
+ * - Path normalization for changed/deleted files
6
+ * - Early return when no changes detected
7
+ * - Delegation to indexProject with correct parameters
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=update.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.test.d.ts","sourceRoot":"","sources":["../../../src/tests/indexer/update.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}