codevault 1.8.4 → 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 (351) hide show
  1. package/README.md +3 -2
  2. package/dist/chunking/token-counter.d.ts.map +1 -1
  3. package/dist/chunking/token-counter.js +16 -10
  4. package/dist/chunking/token-counter.js.map +1 -1
  5. package/dist/cli/commands/index-cmd.d.ts.map +1 -1
  6. package/dist/cli/commands/index-cmd.js +108 -97
  7. package/dist/cli/commands/index-cmd.js.map +1 -1
  8. package/dist/cli/commands/interactive-config.d.ts.map +1 -1
  9. package/dist/cli/commands/interactive-config.js +40 -3
  10. package/dist/cli/commands/interactive-config.js.map +1 -1
  11. package/dist/cli/commands/search-cmd.d.ts.map +1 -1
  12. package/dist/cli/commands/search-cmd.js +11 -7
  13. package/dist/cli/commands/search-cmd.js.map +1 -1
  14. package/dist/cli/commands/search-with-code-cmd.d.ts.map +1 -1
  15. package/dist/cli/commands/search-with-code-cmd.js +3 -1
  16. package/dist/cli/commands/search-with-code-cmd.js.map +1 -1
  17. package/dist/cli/utils.d.ts +56 -0
  18. package/dist/cli/utils.d.ts.map +1 -0
  19. package/dist/cli/utils.js +98 -0
  20. package/dist/cli/utils.js.map +1 -0
  21. package/dist/config/constants.d.ts +4 -0
  22. package/dist/config/constants.d.ts.map +1 -1
  23. package/dist/config/constants.js +2 -0
  24. package/dist/config/constants.js.map +1 -1
  25. package/dist/context/packs.d.ts.map +1 -1
  26. package/dist/context/packs.js +3 -1
  27. package/dist/context/packs.js.map +1 -1
  28. package/dist/core/IndexerEngine.d.ts +2 -0
  29. package/dist/core/IndexerEngine.d.ts.map +1 -1
  30. package/dist/core/IndexerEngine.js +34 -26
  31. package/dist/core/IndexerEngine.js.map +1 -1
  32. package/dist/core/SearchService.d.ts +1 -0
  33. package/dist/core/SearchService.d.ts.map +1 -1
  34. package/dist/core/SearchService.js +18 -12
  35. package/dist/core/SearchService.js.map +1 -1
  36. package/dist/core/batch-indexer.d.ts.map +1 -1
  37. package/dist/core/batch-indexer.js +5 -13
  38. package/dist/core/batch-indexer.js.map +1 -1
  39. package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -1
  40. package/dist/core/indexing/IndexFinalizationStage.js +21 -2
  41. package/dist/core/indexing/IndexFinalizationStage.js.map +1 -1
  42. package/dist/core/indexing/IndexState.d.ts +3 -8
  43. package/dist/core/indexing/IndexState.d.ts.map +1 -1
  44. package/dist/core/indexing/IndexState.js.map +1 -1
  45. package/dist/core/indexing/PersistManager.d.ts +1 -1
  46. package/dist/core/indexing/PersistManager.d.ts.map +1 -1
  47. package/dist/core/indexing/PersistManager.js +17 -17
  48. package/dist/core/indexing/PersistManager.js.map +1 -1
  49. package/dist/core/search/HybridFusion.d.ts +0 -1
  50. package/dist/core/search/HybridFusion.d.ts.map +1 -1
  51. package/dist/core/search/HybridFusion.js +2 -14
  52. package/dist/core/search/HybridFusion.js.map +1 -1
  53. package/dist/core/search/ResultMapper.d.ts +0 -1
  54. package/dist/core/search/ResultMapper.d.ts.map +1 -1
  55. package/dist/core/search/ResultMapper.js +2 -13
  56. package/dist/core/search/ResultMapper.js.map +1 -1
  57. package/dist/core/search/SearchContextManager.d.ts +3 -0
  58. package/dist/core/search/SearchContextManager.d.ts.map +1 -1
  59. package/dist/core/search/SearchContextManager.js +15 -2
  60. package/dist/core/search/SearchContextManager.js.map +1 -1
  61. package/dist/core/search.d.ts.map +1 -1
  62. package/dist/core/search.js +9 -4
  63. package/dist/core/search.js.map +1 -1
  64. package/dist/languages/rules.d.ts.map +1 -1
  65. package/dist/languages/rules.js +14 -5
  66. package/dist/languages/rules.js.map +1 -1
  67. package/dist/mcp/schemas.d.ts +2 -2
  68. package/dist/mcp-server.d.ts +1 -0
  69. package/dist/mcp-server.d.ts.map +1 -1
  70. package/dist/mcp-server.js +32 -21
  71. package/dist/mcp-server.js.map +1 -1
  72. package/dist/providers/base.d.ts +3 -2
  73. package/dist/providers/base.d.ts.map +1 -1
  74. package/dist/providers/base.js +3 -1
  75. package/dist/providers/base.js.map +1 -1
  76. package/dist/providers/chat-llm.d.ts +2 -2
  77. package/dist/providers/chat-llm.d.ts.map +1 -1
  78. package/dist/providers/chat-llm.js +4 -1
  79. package/dist/providers/chat-llm.js.map +1 -1
  80. package/dist/providers/openai.d.ts.map +1 -1
  81. package/dist/providers/openai.js +4 -1
  82. package/dist/providers/openai.js.map +1 -1
  83. package/dist/ranking/api-reranker.d.ts.map +1 -1
  84. package/dist/ranking/api-reranker.js +27 -8
  85. package/dist/ranking/api-reranker.js.map +1 -1
  86. package/dist/ranking/symbol-boost.d.ts.map +1 -1
  87. package/dist/ranking/symbol-boost.js +4 -11
  88. package/dist/ranking/symbol-boost.js.map +1 -1
  89. package/dist/search/bm25.d.ts +10 -0
  90. package/dist/search/bm25.d.ts.map +1 -1
  91. package/dist/search/bm25.js +16 -0
  92. package/dist/search/bm25.js.map +1 -1
  93. package/dist/storage/encrypted-chunks.d.ts +3 -0
  94. package/dist/storage/encrypted-chunks.d.ts.map +1 -1
  95. package/dist/storage/encrypted-chunks.js +108 -16
  96. package/dist/storage/encrypted-chunks.js.map +1 -1
  97. package/dist/synthesis/conversational-synthesizer.d.ts +2 -1
  98. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -1
  99. package/dist/synthesis/conversational-synthesizer.js +6 -1
  100. package/dist/synthesis/conversational-synthesizer.js.map +1 -1
  101. package/dist/synthesis/prompt-builder.d.ts.map +1 -1
  102. package/dist/synthesis/prompt-builder.js +40 -13
  103. package/dist/synthesis/prompt-builder.js.map +1 -1
  104. package/dist/synthesis/synthesizer.d.ts.map +1 -1
  105. package/dist/synthesis/synthesizer.js +14 -2
  106. package/dist/synthesis/synthesizer.js.map +1 -1
  107. package/dist/tests/api-reranker.test.d.ts +2 -0
  108. package/dist/tests/api-reranker.test.d.ts.map +1 -0
  109. package/dist/tests/api-reranker.test.js +575 -0
  110. package/dist/tests/api-reranker.test.js.map +1 -0
  111. package/dist/tests/bm25.test.d.ts +2 -0
  112. package/dist/tests/bm25.test.d.ts.map +1 -0
  113. package/dist/tests/bm25.test.js +340 -0
  114. package/dist/tests/bm25.test.js.map +1 -0
  115. package/dist/tests/chunking/file-grouper.test.d.ts +2 -0
  116. package/dist/tests/chunking/file-grouper.test.d.ts.map +1 -0
  117. package/dist/tests/chunking/file-grouper.test.js +495 -0
  118. package/dist/tests/chunking/file-grouper.test.js.map +1 -0
  119. package/dist/tests/chunking/semantic-chunker.test.d.ts +2 -0
  120. package/dist/tests/chunking/semantic-chunker.test.d.ts.map +1 -0
  121. package/dist/tests/chunking/semantic-chunker.test.js +509 -0
  122. package/dist/tests/chunking/semantic-chunker.test.js.map +1 -0
  123. package/dist/tests/chunking/token-counter.test.d.ts +2 -0
  124. package/dist/tests/chunking/token-counter.test.d.ts.map +1 -0
  125. package/dist/tests/chunking/token-counter.test.js +441 -0
  126. package/dist/tests/chunking/token-counter.test.js.map +1 -0
  127. package/dist/tests/cli/ask-cmd.test.d.ts +2 -0
  128. package/dist/tests/cli/ask-cmd.test.d.ts.map +1 -0
  129. package/dist/tests/cli/ask-cmd.test.js +152 -0
  130. package/dist/tests/cli/ask-cmd.test.js.map +1 -0
  131. package/dist/tests/cli/chat-cmd.test.d.ts +2 -0
  132. package/dist/tests/cli/chat-cmd.test.d.ts.map +1 -0
  133. package/dist/tests/cli/chat-cmd.test.js +118 -0
  134. package/dist/tests/cli/chat-cmd.test.js.map +1 -0
  135. package/dist/tests/cli/config-cmd.test.d.ts +2 -0
  136. package/dist/tests/cli/config-cmd.test.d.ts.map +1 -0
  137. package/dist/tests/cli/config-cmd.test.js +226 -0
  138. package/dist/tests/cli/config-cmd.test.js.map +1 -0
  139. package/dist/tests/cli/context.test.d.ts +2 -0
  140. package/dist/tests/cli/context.test.d.ts.map +1 -0
  141. package/dist/tests/cli/context.test.js +158 -0
  142. package/dist/tests/cli/context.test.js.map +1 -0
  143. package/dist/tests/cli/index-cmd.test.d.ts +2 -0
  144. package/dist/tests/cli/index-cmd.test.d.ts.map +1 -0
  145. package/dist/tests/cli/index-cmd.test.js +89 -0
  146. package/dist/tests/cli/index-cmd.test.js.map +1 -0
  147. package/dist/tests/cli/index.test.d.ts +2 -0
  148. package/dist/tests/cli/index.test.d.ts.map +1 -0
  149. package/dist/tests/cli/index.test.js +167 -0
  150. package/dist/tests/cli/index.test.js.map +1 -0
  151. package/dist/tests/cli/info-cmd.test.d.ts +2 -0
  152. package/dist/tests/cli/info-cmd.test.d.ts.map +1 -0
  153. package/dist/tests/cli/info-cmd.test.js +47 -0
  154. package/dist/tests/cli/info-cmd.test.js.map +1 -0
  155. package/dist/tests/cli/interactive-config.test.d.ts +2 -0
  156. package/dist/tests/cli/interactive-config.test.d.ts.map +1 -0
  157. package/dist/tests/cli/interactive-config.test.js +30 -0
  158. package/dist/tests/cli/interactive-config.test.js.map +1 -0
  159. package/dist/tests/cli/mcp-cmd.test.d.ts +2 -0
  160. package/dist/tests/cli/mcp-cmd.test.d.ts.map +1 -0
  161. package/dist/tests/cli/mcp-cmd.test.js +47 -0
  162. package/dist/tests/cli/mcp-cmd.test.js.map +1 -0
  163. package/dist/tests/cli/search-cmd.test.d.ts +2 -0
  164. package/dist/tests/cli/search-cmd.test.d.ts.map +1 -0
  165. package/dist/tests/cli/search-cmd.test.js +120 -0
  166. package/dist/tests/cli/search-cmd.test.js.map +1 -0
  167. package/dist/tests/cli/search-with-code-cmd.test.d.ts +2 -0
  168. package/dist/tests/cli/search-with-code-cmd.test.d.ts.map +1 -0
  169. package/dist/tests/cli/search-with-code-cmd.test.js +140 -0
  170. package/dist/tests/cli/search-with-code-cmd.test.js.map +1 -0
  171. package/dist/tests/cli/update-cmd.test.d.ts +2 -0
  172. package/dist/tests/cli/update-cmd.test.d.ts.map +1 -0
  173. package/dist/tests/cli/update-cmd.test.js +75 -0
  174. package/dist/tests/cli/update-cmd.test.js.map +1 -0
  175. package/dist/tests/cli/utils.test.d.ts +2 -0
  176. package/dist/tests/cli/utils.test.d.ts.map +1 -0
  177. package/dist/tests/cli/utils.test.js +119 -0
  178. package/dist/tests/cli/utils.test.js.map +1 -0
  179. package/dist/tests/cli/watch-cmd.test.d.ts +2 -0
  180. package/dist/tests/cli/watch-cmd.test.d.ts.map +1 -0
  181. package/dist/tests/cli/watch-cmd.test.js +84 -0
  182. package/dist/tests/cli/watch-cmd.test.js.map +1 -0
  183. package/dist/tests/cli-ui.test.d.ts +2 -0
  184. package/dist/tests/cli-ui.test.d.ts.map +1 -0
  185. package/dist/tests/cli-ui.test.js +608 -0
  186. package/dist/tests/cli-ui.test.js.map +1 -0
  187. package/dist/tests/codemap-io.test.d.ts +2 -0
  188. package/dist/tests/codemap-io.test.d.ts.map +1 -0
  189. package/dist/tests/codemap-io.test.js +992 -0
  190. package/dist/tests/codemap-io.test.js.map +1 -0
  191. package/dist/tests/config/apply-env.test.d.ts +2 -0
  192. package/dist/tests/config/apply-env.test.d.ts.map +1 -0
  193. package/dist/tests/config/apply-env.test.js +717 -0
  194. package/dist/tests/config/apply-env.test.js.map +1 -0
  195. package/dist/tests/config/constants.test.d.ts +2 -0
  196. package/dist/tests/config/constants.test.d.ts.map +1 -0
  197. package/dist/tests/config/constants.test.js +406 -0
  198. package/dist/tests/config/constants.test.js.map +1 -0
  199. package/dist/tests/config/loader.test.d.ts +2 -0
  200. package/dist/tests/config/loader.test.d.ts.map +1 -0
  201. package/dist/tests/config/loader.test.js +716 -0
  202. package/dist/tests/config/loader.test.js.map +1 -0
  203. package/dist/tests/config/resolver.test.d.ts +2 -0
  204. package/dist/tests/config/resolver.test.d.ts.map +1 -0
  205. package/dist/tests/config/resolver.test.js +402 -0
  206. package/dist/tests/config/resolver.test.js.map +1 -0
  207. package/dist/tests/config/types.test.d.ts +2 -0
  208. package/dist/tests/config/types.test.d.ts.map +1 -0
  209. package/dist/tests/config/types.test.js +460 -0
  210. package/dist/tests/config/types.test.js.map +1 -0
  211. package/dist/tests/context-packs.test.d.ts +2 -0
  212. package/dist/tests/context-packs.test.d.ts.map +1 -0
  213. package/dist/tests/context-packs.test.js +826 -0
  214. package/dist/tests/context-packs.test.js.map +1 -0
  215. package/dist/tests/conversational-synthesizer.test.d.ts +2 -0
  216. package/dist/tests/conversational-synthesizer.test.d.ts.map +1 -0
  217. package/dist/tests/conversational-synthesizer.test.js +595 -0
  218. package/dist/tests/conversational-synthesizer.test.js.map +1 -0
  219. package/dist/tests/database.test.d.ts +2 -0
  220. package/dist/tests/database.test.d.ts.map +1 -0
  221. package/dist/tests/database.test.js +965 -0
  222. package/dist/tests/database.test.js.map +1 -0
  223. package/dist/tests/encrypted-chunks.test.d.ts +2 -0
  224. package/dist/tests/encrypted-chunks.test.d.ts.map +1 -0
  225. package/dist/tests/encrypted-chunks.test.js +1470 -0
  226. package/dist/tests/encrypted-chunks.test.js.map +1 -0
  227. package/dist/tests/hybrid.test.d.ts +2 -0
  228. package/dist/tests/hybrid.test.d.ts.map +1 -0
  229. package/dist/tests/hybrid.test.js +456 -0
  230. package/dist/tests/hybrid.test.js.map +1 -0
  231. package/dist/tests/indexer/ChangeQueue.test.d.ts +12 -0
  232. package/dist/tests/indexer/ChangeQueue.test.d.ts.map +1 -0
  233. package/dist/tests/indexer/ChangeQueue.test.js +441 -0
  234. package/dist/tests/indexer/ChangeQueue.test.js.map +1 -0
  235. package/dist/tests/indexer/ProviderManager.test.d.ts +12 -0
  236. package/dist/tests/indexer/ProviderManager.test.d.ts.map +1 -0
  237. package/dist/tests/indexer/ProviderManager.test.js +290 -0
  238. package/dist/tests/indexer/ProviderManager.test.js.map +1 -0
  239. package/dist/tests/indexer/WatchService.test.d.ts +14 -0
  240. package/dist/tests/indexer/WatchService.test.d.ts.map +1 -0
  241. package/dist/tests/indexer/WatchService.test.js +667 -0
  242. package/dist/tests/indexer/WatchService.test.js.map +1 -0
  243. package/dist/tests/indexer/merkle.test.d.ts +11 -0
  244. package/dist/tests/indexer/merkle.test.d.ts.map +1 -0
  245. package/dist/tests/indexer/merkle.test.js +497 -0
  246. package/dist/tests/indexer/merkle.test.js.map +1 -0
  247. package/dist/tests/indexer/update.test.d.ts +10 -0
  248. package/dist/tests/indexer/update.test.d.ts.map +1 -0
  249. package/dist/tests/indexer/update.test.js +317 -0
  250. package/dist/tests/indexer/update.test.js.map +1 -0
  251. package/dist/tests/indexer/watch.test.d.ts +8 -0
  252. package/dist/tests/indexer/watch.test.d.ts.map +1 -0
  253. package/dist/tests/indexer/watch.test.js +95 -0
  254. package/dist/tests/indexer/watch.test.js.map +1 -0
  255. package/dist/tests/integration/index-search.integration.test.js +1 -0
  256. package/dist/tests/integration/index-search.integration.test.js.map +1 -1
  257. package/dist/tests/languages.test.d.ts +2 -0
  258. package/dist/tests/languages.test.d.ts.map +1 -0
  259. package/dist/tests/languages.test.js +575 -0
  260. package/dist/tests/languages.test.js.map +1 -0
  261. package/dist/tests/logger-redaction.test.d.ts +2 -0
  262. package/dist/tests/logger-redaction.test.d.ts.map +1 -0
  263. package/dist/tests/logger-redaction.test.js +48 -0
  264. package/dist/tests/logger-redaction.test.js.map +1 -0
  265. package/dist/tests/logger.test.d.ts +2 -0
  266. package/dist/tests/logger.test.d.ts.map +1 -0
  267. package/dist/tests/logger.test.js +468 -0
  268. package/dist/tests/logger.test.js.map +1 -0
  269. package/dist/tests/markdown-formatter.test.d.ts +2 -0
  270. package/dist/tests/markdown-formatter.test.d.ts.map +1 -0
  271. package/dist/tests/markdown-formatter.test.js +453 -0
  272. package/dist/tests/markdown-formatter.test.js.map +1 -0
  273. package/dist/tests/mcp/tools/use-context-pack.test.d.ts +7 -0
  274. package/dist/tests/mcp/tools/use-context-pack.test.d.ts.map +1 -0
  275. package/dist/tests/mcp/tools/use-context-pack.test.js +505 -0
  276. package/dist/tests/mcp/tools/use-context-pack.test.js.map +1 -0
  277. package/dist/tests/mutex.test.d.ts +2 -0
  278. package/dist/tests/mutex.test.d.ts.map +1 -0
  279. package/dist/tests/mutex.test.js +489 -0
  280. package/dist/tests/mutex.test.js.map +1 -0
  281. package/dist/tests/path-helpers.test.d.ts +2 -0
  282. package/dist/tests/path-helpers.test.d.ts.map +1 -0
  283. package/dist/tests/path-helpers.test.js +332 -0
  284. package/dist/tests/path-helpers.test.js.map +1 -0
  285. package/dist/tests/prompt-builder.test.d.ts +2 -0
  286. package/dist/tests/prompt-builder.test.d.ts.map +1 -0
  287. package/dist/tests/prompt-builder.test.js +417 -0
  288. package/dist/tests/prompt-builder.test.js.map +1 -0
  289. package/dist/tests/providers/base.test.d.ts +2 -0
  290. package/dist/tests/providers/base.test.d.ts.map +1 -0
  291. package/dist/tests/providers/base.test.js +299 -0
  292. package/dist/tests/providers/base.test.js.map +1 -0
  293. package/dist/tests/providers/chat-llm.test.d.ts +2 -0
  294. package/dist/tests/providers/chat-llm.test.d.ts.map +1 -0
  295. package/dist/tests/providers/chat-llm.test.js +435 -0
  296. package/dist/tests/providers/chat-llm.test.js.map +1 -0
  297. package/dist/tests/providers/index.test.d.ts +2 -0
  298. package/dist/tests/providers/index.test.d.ts.map +1 -0
  299. package/dist/tests/providers/index.test.js +204 -0
  300. package/dist/tests/providers/index.test.js.map +1 -0
  301. package/dist/tests/providers/mock.test.d.ts +2 -0
  302. package/dist/tests/providers/mock.test.d.ts.map +1 -0
  303. package/dist/tests/providers/mock.test.js +225 -0
  304. package/dist/tests/providers/mock.test.js.map +1 -0
  305. package/dist/tests/providers/openai.test.d.ts +2 -0
  306. package/dist/tests/providers/openai.test.d.ts.map +1 -0
  307. package/dist/tests/providers/openai.test.js +408 -0
  308. package/dist/tests/providers/openai.test.js.map +1 -0
  309. package/dist/tests/providers/token-counter.test.d.ts +2 -0
  310. package/dist/tests/providers/token-counter.test.d.ts.map +1 -0
  311. package/dist/tests/providers/token-counter.test.js +247 -0
  312. package/dist/tests/providers/token-counter.test.js.map +1 -0
  313. package/dist/tests/rate-limiter.test.js +392 -1
  314. package/dist/tests/rate-limiter.test.js.map +1 -1
  315. package/dist/tests/scope.test.d.ts +2 -0
  316. package/dist/tests/scope.test.d.ts.map +1 -0
  317. package/dist/tests/scope.test.js +529 -0
  318. package/dist/tests/scope.test.js.map +1 -0
  319. package/dist/tests/simple-lru.test.js +377 -0
  320. package/dist/tests/simple-lru.test.js.map +1 -1
  321. package/dist/tests/symbol-boost.test.js +730 -10
  322. package/dist/tests/symbol-boost.test.js.map +1 -1
  323. package/dist/tests/symbols-extract.test.d.ts +2 -0
  324. package/dist/tests/symbols-extract.test.d.ts.map +1 -0
  325. package/dist/tests/symbols-extract.test.js +536 -0
  326. package/dist/tests/symbols-extract.test.js.map +1 -0
  327. package/dist/tests/symbols-graph.test.d.ts +2 -0
  328. package/dist/tests/symbols-graph.test.d.ts.map +1 -0
  329. package/dist/tests/symbols-graph.test.js +656 -0
  330. package/dist/tests/symbols-graph.test.js.map +1 -0
  331. package/dist/tests/synthesizer.test.d.ts +2 -0
  332. package/dist/tests/synthesizer.test.d.ts.map +1 -0
  333. package/dist/tests/synthesizer.test.js +381 -0
  334. package/dist/tests/synthesizer.test.js.map +1 -0
  335. package/dist/types/context-pack.d.ts +3 -3
  336. package/dist/utils/logger.d.ts +5 -1
  337. package/dist/utils/logger.d.ts.map +1 -1
  338. package/dist/utils/logger.js +149 -4
  339. package/dist/utils/logger.js.map +1 -1
  340. package/dist/utils/mutex.d.ts +7 -2
  341. package/dist/utils/mutex.d.ts.map +1 -1
  342. package/dist/utils/mutex.js +31 -7
  343. package/dist/utils/mutex.js.map +1 -1
  344. package/dist/utils/path-helpers.d.ts.map +1 -1
  345. package/dist/utils/path-helpers.js +5 -2
  346. package/dist/utils/path-helpers.js.map +1 -1
  347. package/dist/utils/simple-lru.d.ts +6 -0
  348. package/dist/utils/simple-lru.d.ts.map +1 -1
  349. package/dist/utils/simple-lru.js +26 -0
  350. package/dist/utils/simple-lru.js.map +1 -1
  351. package/package.json +1 -1
@@ -0,0 +1,495 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { groupNodesForChunking, createCombinedChunk } from '../../chunking/file-grouper.js';
4
+ function makeNode(type, startIndex = 0, endIndex = 0, children = []) {
5
+ return {
6
+ type,
7
+ startIndex,
8
+ endIndex,
9
+ childCount: children.length,
10
+ child: (idx) => children[idx] ?? null
11
+ };
12
+ }
13
+ // Character-based profile (no token counting)
14
+ const charProfile = {
15
+ maxTokens: 1000,
16
+ optimalTokens: 500,
17
+ minChunkTokens: 50,
18
+ maxChunkTokens: 800,
19
+ overlapTokens: 100,
20
+ optimalChars: 200, // Small for testing
21
+ minChunkChars: 20,
22
+ maxChunkChars: 400,
23
+ overlapChars: 40,
24
+ dimensions: 1536,
25
+ useTokens: false,
26
+ tokenizerType: 'estimate'
27
+ };
28
+ // Token-based profile
29
+ const tokenProfile = {
30
+ ...charProfile,
31
+ useTokens: true,
32
+ tokenCounter: (text) => Math.ceil(text.length / 4)
33
+ };
34
+ // Language rule with container types
35
+ const tsRule = {
36
+ subdivisionTypes: {
37
+ class_declaration: ['method_definition', 'public_field_definition'],
38
+ interface_declaration: ['property_signature', 'method_signature']
39
+ }
40
+ };
41
+ // -------------------------------------------------------------------
42
+ // Tests for groupNodesForChunking
43
+ // -------------------------------------------------------------------
44
+ test('groupNodesForChunking returns empty array for null nodes', async () => {
45
+ const result = await groupNodesForChunking(null, 'source', charProfile, tsRule);
46
+ assert.deepEqual(result, []);
47
+ });
48
+ test('groupNodesForChunking returns empty array for empty array', async () => {
49
+ const result = await groupNodesForChunking([], 'source', charProfile, tsRule);
50
+ assert.deepEqual(result, []);
51
+ });
52
+ test('groupNodesForChunking returns individual nodes for 10 or fewer nodes', async () => {
53
+ const source = 'function a() {}\nfunction b() {}\nfunction c() {}';
54
+ const nodes = [
55
+ makeNode('function_declaration', 0, 15),
56
+ makeNode('function_declaration', 16, 31),
57
+ makeNode('function_declaration', 32, 47)
58
+ ];
59
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
60
+ // With <= 10 nodes, returns each as its own group
61
+ assert.equal(result.length, 3);
62
+ result.forEach((group, i) => {
63
+ assert.equal(group.nodes.length, 1);
64
+ assert.equal(group.nodes[0], nodes[i]);
65
+ assert.equal(group.totalSize, 0); // Not analyzed for small counts
66
+ assert.deepEqual(group.groupInfo, []);
67
+ });
68
+ });
69
+ test('groupNodesForChunking groups more than 10 nodes', async () => {
70
+ // Create 15 small functions
71
+ const functions = [];
72
+ const nodes = [];
73
+ let offset = 0;
74
+ for (let i = 0; i < 15; i++) {
75
+ const fn = `function fn${i}() { return ${i}; }`;
76
+ functions.push(fn);
77
+ nodes.push(makeNode('function_declaration', offset, offset + fn.length));
78
+ offset += fn.length + 1; // +1 for newline
79
+ }
80
+ const source = functions.join('\n');
81
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
82
+ // Should group nodes together
83
+ assert.ok(result.length > 0);
84
+ assert.ok(result.length < 15, 'Should group some nodes together');
85
+ // Total nodes across all groups should equal input
86
+ const totalNodes = result.reduce((sum, g) => sum + g.nodes.length, 0);
87
+ assert.equal(totalNodes, 15);
88
+ });
89
+ test('groupNodesForChunking separates container nodes', async () => {
90
+ // Create a mix of classes and functions
91
+ const classDecl = 'class MyClass {\n method() {}\n}';
92
+ const funcDecl1 = 'function helper1() {}';
93
+ const funcDecl2 = 'function helper2() {}';
94
+ const source = `${funcDecl1}\n${classDecl}\n${funcDecl2}`;
95
+ const nodes = [
96
+ makeNode('function_declaration', 0, funcDecl1.length),
97
+ makeNode('class_declaration', funcDecl1.length + 1, funcDecl1.length + 1 + classDecl.length),
98
+ makeNode('function_declaration', source.length - funcDecl2.length, source.length)
99
+ ];
100
+ // Need more than 10 nodes for grouping to kick in
101
+ // Add padding nodes
102
+ for (let i = 0; i < 10; i++) {
103
+ nodes.push(makeNode('function_declaration', 0, 10));
104
+ }
105
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
106
+ // Classes should be separated into their own groups
107
+ const containerGroups = result.filter((g) => g.groupInfo?.some((info) => info.type === 'container'));
108
+ assert.ok(containerGroups.length >= 1);
109
+ });
110
+ test('groupNodesForChunking uses token counter when available', async () => {
111
+ const functions = [];
112
+ const nodes = [];
113
+ let offset = 0;
114
+ for (let i = 0; i < 12; i++) {
115
+ const fn = `fn${i}()`;
116
+ functions.push(fn);
117
+ nodes.push(makeNode('function', offset, offset + fn.length));
118
+ offset += fn.length + 1;
119
+ }
120
+ const source = functions.join('\n');
121
+ let tokenCounterCalled = false;
122
+ const profile = {
123
+ ...tokenProfile,
124
+ tokenCounter: (text) => {
125
+ tokenCounterCalled = true;
126
+ return Math.ceil(text.length / 4);
127
+ }
128
+ };
129
+ await groupNodesForChunking(nodes, source, profile, tsRule);
130
+ assert.ok(tokenCounterCalled, 'Token counter should be called');
131
+ });
132
+ test('groupNodesForChunking respects size limits when grouping', async () => {
133
+ // Create nodes that together exceed optimal size (200 chars)
134
+ // Each line is ~30 chars, so more than ~7 nodes will exceed optimal
135
+ const lines = [];
136
+ const nodes = [];
137
+ let offset = 0;
138
+ for (let i = 0; i < 20; i++) {
139
+ // Each line is ~30 chars, optimal is 200
140
+ const line = `const variable${i} = "value${i}";`;
141
+ lines.push(line);
142
+ nodes.push(makeNode('variable_declaration', offset, offset + line.length));
143
+ offset += line.length + 1;
144
+ }
145
+ const source = lines.join('\n');
146
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
147
+ // Should create at least one group
148
+ assert.ok(result.length >= 1);
149
+ // Total nodes across all groups should equal input
150
+ const totalNodes = result.reduce((sum, g) => sum + g.nodes.length, 0);
151
+ assert.equal(totalNodes, 20);
152
+ });
153
+ test('groupNodesForChunking handles interface declarations', async () => {
154
+ const interfaceDecl = 'interface MyInterface {\n prop: string;\n}';
155
+ const source = interfaceDecl;
156
+ const nodes = [];
157
+ // Need > 10 nodes
158
+ for (let i = 0; i < 12; i++) {
159
+ nodes.push(makeNode('interface_declaration', 0, interfaceDecl.length));
160
+ }
161
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
162
+ assert.ok(result.length > 0);
163
+ });
164
+ test('groupNodesForChunking handles module declarations', async () => {
165
+ const nodes = [];
166
+ for (let i = 0; i < 12; i++) {
167
+ nodes.push(makeNode('module_declaration', 0, 50));
168
+ }
169
+ const source = 'module Test { export function foo() {} }';
170
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
171
+ // Module declarations are container types
172
+ const containerCount = result.filter((g) => g.groupInfo?.some((info) => info.type === 'container')).length;
173
+ assert.ok(containerCount > 0);
174
+ });
175
+ test('groupNodesForChunking handles trait declarations', async () => {
176
+ const nodes = [];
177
+ for (let i = 0; i < 12; i++) {
178
+ nodes.push(makeNode('trait_declaration', 0, 30));
179
+ }
180
+ const source = 'trait MyTrait { fn method(); }';
181
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
182
+ assert.ok(result.length > 0);
183
+ });
184
+ test('groupNodesForChunking handles enum declarations', async () => {
185
+ const nodes = [];
186
+ for (let i = 0; i < 12; i++) {
187
+ nodes.push(makeNode('enum_declaration', 0, 40));
188
+ }
189
+ const source = 'enum Status { Active, Inactive, Pending }';
190
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
191
+ assert.ok(result.length > 0);
192
+ });
193
+ test('groupNodesForChunking handles namespace declarations', async () => {
194
+ const nodes = [];
195
+ for (let i = 0; i < 12; i++) {
196
+ nodes.push(makeNode('namespace_declaration', 0, 50));
197
+ }
198
+ const source = 'namespace MyNamespace { export const x = 1; }';
199
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
200
+ assert.ok(result.length > 0);
201
+ });
202
+ test('groupNodesForChunking combines small groups efficiently', async () => {
203
+ // Create many very small nodes
204
+ const nodes = [];
205
+ for (let i = 0; i < 50; i++) {
206
+ // Each node covers just a few characters
207
+ nodes.push(makeNode('identifier', i * 5, i * 5 + 4));
208
+ }
209
+ const source = Array.from({ length: 50 }, (_, i) => `x${i} `).join('');
210
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
211
+ // Should combine many small nodes into fewer groups
212
+ assert.ok(result.length < 50, 'Should combine nodes into groups');
213
+ assert.ok(result.length > 0);
214
+ });
215
+ // -------------------------------------------------------------------
216
+ // Tests for createCombinedChunk
217
+ // -------------------------------------------------------------------
218
+ test('createCombinedChunk returns null for empty node group', () => {
219
+ const group = {
220
+ nodes: [],
221
+ totalSize: 0,
222
+ groupInfo: []
223
+ };
224
+ const result = createCombinedChunk(group, 'source');
225
+ assert.equal(result, null);
226
+ });
227
+ test('createCombinedChunk returns null when nodes is null', () => {
228
+ const group = {
229
+ nodes: null,
230
+ totalSize: 0,
231
+ groupInfo: []
232
+ };
233
+ const result = createCombinedChunk(group, 'source');
234
+ assert.equal(result, null);
235
+ });
236
+ test('createCombinedChunk creates chunk for single node', () => {
237
+ const source = 'function test() { return 42; }';
238
+ const node = makeNode('function_declaration', 0, source.length);
239
+ const group = {
240
+ nodes: [node],
241
+ totalSize: source.length,
242
+ groupInfo: [{ type: 'file_section', nodes: [node], analyses: [], parentNode: null }]
243
+ };
244
+ const result = createCombinedChunk(group, source);
245
+ assert.notEqual(result, null);
246
+ assert.equal(result.code, source);
247
+ assert.equal(result.metadata.nodeCount, 1);
248
+ assert.equal(result.metadata.isGroup, true);
249
+ });
250
+ test('createCombinedChunk combines multiple nodes with double newline', () => {
251
+ const fn1 = 'function a() {}';
252
+ const fn2 = 'function b() {}';
253
+ const source = `${fn1}\n${fn2}`;
254
+ const node1 = makeNode('function', 0, fn1.length);
255
+ const node2 = makeNode('function', fn1.length + 1, source.length);
256
+ const group = {
257
+ nodes: [node1, node2],
258
+ totalSize: source.length,
259
+ groupInfo: []
260
+ };
261
+ const result = createCombinedChunk(group, source);
262
+ assert.notEqual(result, null);
263
+ assert.ok(result.code.includes('\n\n'), 'Should join with double newline');
264
+ assert.equal(result.metadata.nodeCount, 2);
265
+ });
266
+ test('createCombinedChunk sets correct type for grouped nodes', () => {
267
+ const source = 'const a = 1;\nconst b = 2;\nconst c = 3;';
268
+ const nodes = [
269
+ makeNode('variable_declaration', 0, 12),
270
+ makeNode('variable_declaration', 13, 25),
271
+ makeNode('variable_declaration', 26, 38)
272
+ ];
273
+ const group = {
274
+ nodes: nodes,
275
+ totalSize: source.length,
276
+ groupInfo: []
277
+ };
278
+ const result = createCombinedChunk(group, source);
279
+ assert.notEqual(result, null);
280
+ assert.equal(result.node.type, 'variable_declaration_group_3');
281
+ });
282
+ test('createCombinedChunk sets endIndex from last node', () => {
283
+ const source = 'line1\nline2\nline3';
284
+ const nodes = [
285
+ makeNode('line', 0, 5),
286
+ makeNode('line', 6, 11),
287
+ makeNode('line', 12, 17)
288
+ ];
289
+ const group = {
290
+ nodes: nodes,
291
+ totalSize: source.length,
292
+ groupInfo: []
293
+ };
294
+ const result = createCombinedChunk(group, source);
295
+ assert.notEqual(result, null);
296
+ assert.equal(result.node.endIndex, 17);
297
+ });
298
+ test('createCombinedChunk includes group types in metadata', () => {
299
+ const source = 'code';
300
+ const node = makeNode('statement', 0, 4);
301
+ const group = {
302
+ nodes: [node],
303
+ totalSize: 4,
304
+ groupInfo: [
305
+ { type: 'container', containerType: 'class', nodes: [], analyses: [], parentNode: null },
306
+ { type: 'file_section', nodes: [], analyses: [], parentNode: null }
307
+ ]
308
+ };
309
+ const result = createCombinedChunk(group, source);
310
+ assert.notEqual(result, null);
311
+ assert.deepEqual(result.metadata.groupTypes, ['container', 'file_section']);
312
+ });
313
+ test('createCombinedChunk returns empty groupTypes for empty groupInfo array', () => {
314
+ const source = 'code';
315
+ const node = makeNode('statement', 0, 4);
316
+ const group = {
317
+ nodes: [node],
318
+ totalSize: 4,
319
+ groupInfo: []
320
+ };
321
+ const result = createCombinedChunk(group, source);
322
+ assert.notEqual(result, null);
323
+ // Empty array maps to empty array, not 'combined' fallback
324
+ // The 'combined' fallback only applies when groupInfo is null/undefined
325
+ assert.deepEqual(result.metadata.groupTypes, []);
326
+ });
327
+ test('createCombinedChunk handles undefined groupInfo', () => {
328
+ const source = 'code';
329
+ const node = makeNode('statement', 0, 4);
330
+ const group = {
331
+ nodes: [node],
332
+ totalSize: 4
333
+ // groupInfo intentionally omitted
334
+ };
335
+ const result = createCombinedChunk(group, source);
336
+ assert.notEqual(result, null);
337
+ assert.deepEqual(result.metadata.groupTypes, ['combined']);
338
+ });
339
+ test('createCombinedChunk preserves first node properties', () => {
340
+ const source = 'const x = 1;\nconst y = 2;';
341
+ const node1 = makeNode('variable_declaration', 0, 12);
342
+ const node2 = makeNode('variable_declaration', 13, 25);
343
+ const group = {
344
+ nodes: [node1, node2],
345
+ totalSize: source.length,
346
+ groupInfo: []
347
+ };
348
+ const result = createCombinedChunk(group, source);
349
+ assert.notEqual(result, null);
350
+ // Should preserve startIndex from first node
351
+ assert.equal(result.node.startIndex, 0);
352
+ });
353
+ test('createCombinedChunk reports totalSize in metadata', () => {
354
+ const source = 'x'.repeat(100);
355
+ const node = makeNode('content', 0, 100);
356
+ const group = {
357
+ nodes: [node],
358
+ totalSize: 150, // Can be different from actual code length
359
+ groupInfo: []
360
+ };
361
+ const result = createCombinedChunk(group, source);
362
+ assert.notEqual(result, null);
363
+ assert.equal(result.metadata.totalSize, 150);
364
+ });
365
+ // -------------------------------------------------------------------
366
+ // Edge case tests
367
+ // -------------------------------------------------------------------
368
+ test('groupNodesForChunking handles exactly 10 nodes', async () => {
369
+ const nodes = [];
370
+ for (let i = 0; i < 10; i++) {
371
+ nodes.push(makeNode('function', i * 10, i * 10 + 9));
372
+ }
373
+ const source = 'x'.repeat(100);
374
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
375
+ // Should return individual groups (threshold is <= 10)
376
+ assert.equal(result.length, 10);
377
+ });
378
+ test('groupNodesForChunking handles exactly 11 nodes', async () => {
379
+ const nodes = [];
380
+ for (let i = 0; i < 11; i++) {
381
+ nodes.push(makeNode('function', i * 10, i * 10 + 9));
382
+ }
383
+ const source = 'x'.repeat(110);
384
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
385
+ // Should perform grouping (threshold is > 10)
386
+ assert.ok(result.length >= 1);
387
+ });
388
+ test('groupNodesForChunking handles nodes with overlapping indices', async () => {
389
+ // This shouldn't happen in practice but test robustness
390
+ const nodes = [];
391
+ for (let i = 0; i < 12; i++) {
392
+ nodes.push(makeNode('statement', 0, 50)); // All same range
393
+ }
394
+ const source = 'const repeated = "same code block repeated";';
395
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
396
+ assert.ok(result.length >= 1);
397
+ });
398
+ test('groupNodesForChunking handles single very large node', async () => {
399
+ const largeSource = 'x'.repeat(10000);
400
+ const nodes = [makeNode('large_block', 0, 10000)];
401
+ // Add padding to exceed threshold
402
+ for (let i = 0; i < 11; i++) {
403
+ nodes.push(makeNode('small', 0, 10));
404
+ }
405
+ const result = await groupNodesForChunking(nodes, largeSource, charProfile, tsRule);
406
+ // Large node should be in its own group
407
+ const largeGroup = result.find((g) => g.totalSize > charProfile.optimalChars);
408
+ assert.ok(largeGroup !== undefined || result.length > 1);
409
+ });
410
+ test('createCombinedChunk handles special characters in source', () => {
411
+ const source = 'const emoji = "\\uD83D\\uDE00"; const special = "<>&\\"\'";';
412
+ const node = makeNode('declarations', 0, source.length);
413
+ const group = {
414
+ nodes: [node],
415
+ totalSize: source.length,
416
+ groupInfo: []
417
+ };
418
+ const result = createCombinedChunk(group, source);
419
+ assert.notEqual(result, null);
420
+ assert.equal(result.code, source);
421
+ });
422
+ test('createCombinedChunk handles empty source', () => {
423
+ const node = makeNode('empty', 0, 0);
424
+ const group = {
425
+ nodes: [node],
426
+ totalSize: 0,
427
+ groupInfo: []
428
+ };
429
+ const result = createCombinedChunk(group, '');
430
+ assert.notEqual(result, null);
431
+ assert.equal(result.code, '');
432
+ assert.equal(result.metadata.nodeCount, 1);
433
+ });
434
+ test('groupNodesForChunking with async token counter', async () => {
435
+ const nodes = [];
436
+ for (let i = 0; i < 15; i++) {
437
+ nodes.push(makeNode('function', i * 20, i * 20 + 19));
438
+ }
439
+ const source = 'x'.repeat(300);
440
+ const asyncProfile = {
441
+ ...tokenProfile,
442
+ tokenCounter: async (text) => {
443
+ await new Promise((resolve) => setTimeout(resolve, 1));
444
+ return Math.ceil(text.length / 4);
445
+ }
446
+ };
447
+ const result = await groupNodesForChunking(nodes, source, asyncProfile, tsRule);
448
+ assert.ok(result.length > 0);
449
+ });
450
+ test('groupNodesForChunking preserves node order', async () => {
451
+ const nodes = [];
452
+ for (let i = 0; i < 15; i++) {
453
+ nodes.push(makeNode(`function_${i}`, i * 10, i * 10 + 9));
454
+ }
455
+ const source = 'x'.repeat(150);
456
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
457
+ // Flatten all nodes from groups and check order is preserved
458
+ const flatNodes = [];
459
+ result.forEach((group) => {
460
+ group.nodes.forEach((n) => flatNodes.push(n));
461
+ });
462
+ for (let i = 0; i < flatNodes.length - 1; i++) {
463
+ assert.ok(flatNodes[i].startIndex <= flatNodes[i + 1].startIndex, 'Nodes should maintain order');
464
+ }
465
+ });
466
+ test('groupNodesForChunking fills groups to 90% of optimal before creating new group', async () => {
467
+ // Create nodes where combined size is just under optimal * 0.9
468
+ // Each node is 20 chars, optimal is 200, so ~9 nodes should fit
469
+ const nodes = [];
470
+ for (let i = 0; i < 25; i++) {
471
+ nodes.push(makeNode('small_function', i * 22, i * 22 + 20));
472
+ }
473
+ const source = Array.from({ length: 25 }, () => 'function f() { x; }').join('\n\n');
474
+ const result = await groupNodesForChunking(nodes, source, charProfile, tsRule);
475
+ // Should have fewer groups than nodes due to combining
476
+ assert.ok(result.length < 25);
477
+ });
478
+ test('createCombinedChunk handles multiline code correctly', () => {
479
+ const fn1 = 'function a() {\n return 1;\n}';
480
+ const fn2 = 'function b() {\n return 2;\n}';
481
+ const source = `${fn1}\n${fn2}`;
482
+ const node1 = makeNode('function', 0, fn1.length);
483
+ const node2 = makeNode('function', fn1.length + 1, source.length);
484
+ const group = {
485
+ nodes: [node1, node2],
486
+ totalSize: source.length,
487
+ groupInfo: []
488
+ };
489
+ const result = createCombinedChunk(group, source);
490
+ assert.notEqual(result, null);
491
+ // Combined code should have both functions
492
+ assert.ok(result.code.includes('function a()'));
493
+ assert.ok(result.code.includes('function b()'));
494
+ });
495
+ //# sourceMappingURL=file-grouper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-grouper.test.js","sourceRoot":"","sources":["../../../src/tests/chunking/file-grouper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=semantic-chunker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-chunker.test.d.ts","sourceRoot":"","sources":["../../../src/tests/chunking/semantic-chunker.test.ts"],"names":[],"mappings":""}