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,332 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import path from 'path';
4
+ import fs from 'fs';
5
+ import os from 'os';
6
+ import { resolveProjectRoot, withQuietLogs } from '../utils/path-helpers.js';
7
+ // ============================================================================
8
+ // resolveProjectRoot Tests - Basic Input Handling
9
+ // ============================================================================
10
+ test('resolveProjectRoot returns cwd when input is undefined', () => {
11
+ const result = resolveProjectRoot();
12
+ // Should resolve to current working directory
13
+ assert.ok(result.length > 0);
14
+ assert.ok(path.isAbsolute(result));
15
+ });
16
+ test('resolveProjectRoot returns cwd when input is empty object', () => {
17
+ const result = resolveProjectRoot({});
18
+ assert.ok(result.length > 0);
19
+ assert.ok(path.isAbsolute(result));
20
+ });
21
+ test('resolveProjectRoot uses project property when provided', () => {
22
+ const cwd = process.cwd();
23
+ const result = resolveProjectRoot({ project: '.' });
24
+ assert.ok(result.startsWith(cwd) || result === cwd);
25
+ });
26
+ test('resolveProjectRoot uses directory property when project not provided', () => {
27
+ const cwd = process.cwd();
28
+ const result = resolveProjectRoot({ directory: '.' });
29
+ assert.ok(result.startsWith(cwd) || result === cwd);
30
+ });
31
+ test('resolveProjectRoot uses path property when others not provided', () => {
32
+ const cwd = process.cwd();
33
+ const result = resolveProjectRoot({ path: '.' });
34
+ assert.ok(result.startsWith(cwd) || result === cwd);
35
+ });
36
+ test('resolveProjectRoot prioritizes project over directory and path', () => {
37
+ const cwd = process.cwd();
38
+ const result = resolveProjectRoot({
39
+ project: '.',
40
+ directory: '..',
41
+ path: '../..'
42
+ });
43
+ // Should use project (.) which resolves to cwd
44
+ assert.ok(result === cwd || result.endsWith(path.basename(cwd)));
45
+ });
46
+ test('resolveProjectRoot prioritizes directory over path', () => {
47
+ const cwd = process.cwd();
48
+ const result = resolveProjectRoot({
49
+ directory: '.',
50
+ path: '..'
51
+ });
52
+ // Should use directory (.) which resolves to cwd
53
+ assert.ok(result === cwd || result.endsWith(path.basename(cwd)));
54
+ });
55
+ // ============================================================================
56
+ // resolveProjectRoot Tests - Path Trimming and Normalization
57
+ // ============================================================================
58
+ test('resolveProjectRoot trims whitespace from paths', () => {
59
+ const cwd = process.cwd();
60
+ const result = resolveProjectRoot({ project: ' . ' });
61
+ assert.ok(result === cwd || result.endsWith(path.basename(cwd)));
62
+ });
63
+ test('resolveProjectRoot handles empty string as default', () => {
64
+ const cwd = process.cwd();
65
+ const result = resolveProjectRoot({ project: '' });
66
+ assert.ok(result === cwd || result.endsWith(path.basename(cwd)));
67
+ });
68
+ test('resolveProjectRoot handles whitespace-only string as default', () => {
69
+ const cwd = process.cwd();
70
+ const result = resolveProjectRoot({ project: ' ' });
71
+ assert.ok(result === cwd || result.endsWith(path.basename(cwd)));
72
+ });
73
+ // ============================================================================
74
+ // resolveProjectRoot Tests - Valid Subdirectory Paths
75
+ // ============================================================================
76
+ test('resolveProjectRoot resolves valid subdirectory', () => {
77
+ const cwd = process.cwd();
78
+ // Use a known subdirectory that exists in this project
79
+ const srcPath = path.join(cwd, 'src');
80
+ if (fs.existsSync(srcPath)) {
81
+ const result = resolveProjectRoot({ project: 'src' });
82
+ assert.ok(result.endsWith('src'));
83
+ assert.ok(path.isAbsolute(result));
84
+ }
85
+ });
86
+ test('resolveProjectRoot resolves nested valid subdirectory', () => {
87
+ const cwd = process.cwd();
88
+ const utilsPath = path.join(cwd, 'src', 'utils');
89
+ if (fs.existsSync(utilsPath)) {
90
+ const result = resolveProjectRoot({ project: 'src/utils' });
91
+ assert.ok(result.endsWith('utils'));
92
+ assert.ok(path.isAbsolute(result));
93
+ }
94
+ });
95
+ // ============================================================================
96
+ // resolveProjectRoot Tests - Path Validation (Security)
97
+ // ============================================================================
98
+ test('resolveProjectRoot throws on path traversal outside project', () => {
99
+ assert.throws(() => resolveProjectRoot({ project: '../../../outside-project' }), (error) => {
100
+ return error.code === 'PATH_VALIDATION_FAILED' ||
101
+ error.message.includes('outside the project root');
102
+ });
103
+ });
104
+ test('resolveProjectRoot throws on absolute path outside project', () => {
105
+ // Use a path that is definitely outside the project
106
+ const outsidePath = os.tmpdir();
107
+ assert.throws(() => resolveProjectRoot({ project: outsidePath }), (error) => {
108
+ return error.code === 'PATH_VALIDATION_FAILED' ||
109
+ error.message.includes('outside the project root');
110
+ });
111
+ });
112
+ test('resolveProjectRoot error has PATH_VALIDATION_FAILED code', () => {
113
+ try {
114
+ resolveProjectRoot({ project: '../../../outside-project' });
115
+ assert.fail('Should have thrown');
116
+ }
117
+ catch (error) {
118
+ const typedError = error;
119
+ assert.equal(typedError.code, 'PATH_VALIDATION_FAILED');
120
+ }
121
+ });
122
+ // ============================================================================
123
+ // resolveProjectRoot Tests - Non-existent Paths
124
+ // ============================================================================
125
+ test('resolveProjectRoot handles non-existent but safe path', () => {
126
+ // A path that doesn't exist but is within project root
127
+ const nonExistentPath = 'this-directory-does-not-exist-xyz123';
128
+ const result = resolveProjectRoot({ project: nonExistentPath });
129
+ assert.ok(result.endsWith(nonExistentPath));
130
+ assert.ok(path.isAbsolute(result));
131
+ });
132
+ // ============================================================================
133
+ // withQuietLogs Tests - Basic Functionality
134
+ // ============================================================================
135
+ test('withQuietLogs sets CODEVAULT_QUIET to true during execution', async () => {
136
+ const originalQuiet = process.env.CODEVAULT_QUIET;
137
+ let quietDuringExecution;
138
+ await withQuietLogs(async () => {
139
+ quietDuringExecution = process.env.CODEVAULT_QUIET;
140
+ return 'result';
141
+ });
142
+ assert.equal(quietDuringExecution, 'true');
143
+ // Verify original is restored
144
+ assert.equal(process.env.CODEVAULT_QUIET, originalQuiet);
145
+ });
146
+ test('withQuietLogs returns function result', async () => {
147
+ const result = await withQuietLogs(async () => {
148
+ return 42;
149
+ });
150
+ assert.equal(result, 42);
151
+ });
152
+ test('withQuietLogs returns complex object result', async () => {
153
+ const result = await withQuietLogs(async () => {
154
+ return { key: 'value', nested: { data: [1, 2, 3] } };
155
+ });
156
+ assert.deepEqual(result, { key: 'value', nested: { data: [1, 2, 3] } });
157
+ });
158
+ test('withQuietLogs restores CODEVAULT_QUIET on success', async () => {
159
+ const originalQuiet = process.env.CODEVAULT_QUIET;
160
+ await withQuietLogs(async () => 'done');
161
+ assert.equal(process.env.CODEVAULT_QUIET, originalQuiet);
162
+ });
163
+ test('withQuietLogs restores CODEVAULT_QUIET on error', async () => {
164
+ const originalQuiet = process.env.CODEVAULT_QUIET;
165
+ await assert.rejects(withQuietLogs(async () => {
166
+ throw new Error('Function failed');
167
+ }), { message: 'Function failed' });
168
+ assert.equal(process.env.CODEVAULT_QUIET, originalQuiet);
169
+ });
170
+ test('withQuietLogs preserves existing CODEVAULT_QUIET value', async () => {
171
+ process.env.CODEVAULT_QUIET = 'false';
172
+ await withQuietLogs(async () => 'done');
173
+ assert.equal(process.env.CODEVAULT_QUIET, 'false');
174
+ delete process.env.CODEVAULT_QUIET;
175
+ });
176
+ test('withQuietLogs deletes CODEVAULT_QUIET if originally undefined', async () => {
177
+ const originalQuiet = process.env.CODEVAULT_QUIET;
178
+ delete process.env.CODEVAULT_QUIET;
179
+ await withQuietLogs(async () => 'done');
180
+ assert.equal(process.env.CODEVAULT_QUIET, undefined);
181
+ // Restore
182
+ if (originalQuiet !== undefined) {
183
+ process.env.CODEVAULT_QUIET = originalQuiet;
184
+ }
185
+ });
186
+ // ============================================================================
187
+ // withQuietLogs Tests - cacheModelProfile Option
188
+ // ============================================================================
189
+ test('withQuietLogs sets CODEVAULT_MODEL_PROFILE_CACHED when option enabled', async () => {
190
+ const originalCache = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
191
+ let cacheDuringExecution;
192
+ await withQuietLogs(async () => {
193
+ cacheDuringExecution = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
194
+ return 'result';
195
+ }, { cacheModelProfile: true });
196
+ assert.equal(cacheDuringExecution, 'true');
197
+ // Verify original is restored
198
+ assert.equal(process.env.CODEVAULT_MODEL_PROFILE_CACHED, originalCache);
199
+ });
200
+ test('withQuietLogs does not set CODEVAULT_MODEL_PROFILE_CACHED without option', async () => {
201
+ const originalCache = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
202
+ delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
203
+ let cacheDuringExecution;
204
+ await withQuietLogs(async () => {
205
+ cacheDuringExecution = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
206
+ return 'result';
207
+ });
208
+ assert.equal(cacheDuringExecution, undefined);
209
+ // Restore
210
+ if (originalCache !== undefined) {
211
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = originalCache;
212
+ }
213
+ });
214
+ test('withQuietLogs restores CODEVAULT_MODEL_PROFILE_CACHED on success', async () => {
215
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = 'false';
216
+ await withQuietLogs(async () => 'done', { cacheModelProfile: true });
217
+ assert.equal(process.env.CODEVAULT_MODEL_PROFILE_CACHED, 'false');
218
+ delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
219
+ });
220
+ test('withQuietLogs restores CODEVAULT_MODEL_PROFILE_CACHED on error', async () => {
221
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = 'false';
222
+ await assert.rejects(withQuietLogs(async () => {
223
+ throw new Error('Function failed');
224
+ }, { cacheModelProfile: true }), { message: 'Function failed' });
225
+ assert.equal(process.env.CODEVAULT_MODEL_PROFILE_CACHED, 'false');
226
+ delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
227
+ });
228
+ test('withQuietLogs deletes CODEVAULT_MODEL_PROFILE_CACHED if originally undefined', async () => {
229
+ const originalCache = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
230
+ delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
231
+ await withQuietLogs(async () => 'done', { cacheModelProfile: true });
232
+ assert.equal(process.env.CODEVAULT_MODEL_PROFILE_CACHED, undefined);
233
+ // Restore
234
+ if (originalCache !== undefined) {
235
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = originalCache;
236
+ }
237
+ });
238
+ // ============================================================================
239
+ // withQuietLogs Tests - Async Behavior
240
+ // ============================================================================
241
+ test('withQuietLogs handles async delays', async () => {
242
+ const start = Date.now();
243
+ await withQuietLogs(async () => {
244
+ await new Promise(resolve => setTimeout(resolve, 50));
245
+ return 'delayed';
246
+ });
247
+ const elapsed = Date.now() - start;
248
+ assert.ok(elapsed >= 45, `Expected >= 45ms but got ${elapsed}ms`);
249
+ });
250
+ test('withQuietLogs handles multiple concurrent calls', async () => {
251
+ const results = await Promise.all([
252
+ withQuietLogs(async () => {
253
+ await new Promise(resolve => setTimeout(resolve, 20));
254
+ return 1;
255
+ }),
256
+ withQuietLogs(async () => {
257
+ await new Promise(resolve => setTimeout(resolve, 10));
258
+ return 2;
259
+ }),
260
+ withQuietLogs(async () => {
261
+ await new Promise(resolve => setTimeout(resolve, 30));
262
+ return 3;
263
+ }),
264
+ ]);
265
+ assert.deepEqual(results, [1, 2, 3]);
266
+ });
267
+ // ============================================================================
268
+ // withQuietLogs Tests - Edge Cases
269
+ // ============================================================================
270
+ test('withQuietLogs handles undefined return value', async () => {
271
+ const result = await withQuietLogs(async () => {
272
+ return undefined;
273
+ });
274
+ assert.equal(result, undefined);
275
+ });
276
+ test('withQuietLogs handles null return value', async () => {
277
+ const result = await withQuietLogs(async () => {
278
+ return null;
279
+ });
280
+ assert.equal(result, null);
281
+ });
282
+ test('withQuietLogs handles void function', async () => {
283
+ let sideEffect = false;
284
+ await withQuietLogs(async () => {
285
+ sideEffect = true;
286
+ });
287
+ assert.equal(sideEffect, true);
288
+ });
289
+ test('withQuietLogs handles function that throws non-Error', async () => {
290
+ await assert.rejects(withQuietLogs(async () => {
291
+ throw 'string error';
292
+ }));
293
+ });
294
+ test('withQuietLogs handles empty options object', async () => {
295
+ const result = await withQuietLogs(async () => 42, {});
296
+ assert.equal(result, 42);
297
+ });
298
+ test('withQuietLogs handles cacheModelProfile false explicitly', async () => {
299
+ const originalCache = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
300
+ delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
301
+ let cacheDuringExecution;
302
+ await withQuietLogs(async () => {
303
+ cacheDuringExecution = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
304
+ return 'result';
305
+ }, { cacheModelProfile: false });
306
+ // Should not be set when explicitly false
307
+ assert.equal(cacheDuringExecution, undefined);
308
+ // Restore
309
+ if (originalCache !== undefined) {
310
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = originalCache;
311
+ }
312
+ });
313
+ // ============================================================================
314
+ // Cross-Platform Path Tests
315
+ // ============================================================================
316
+ test('resolveProjectRoot produces absolute paths', () => {
317
+ const result = resolveProjectRoot({ project: '.' });
318
+ assert.ok(path.isAbsolute(result));
319
+ });
320
+ test('resolveProjectRoot normalizes path separators', () => {
321
+ const result = resolveProjectRoot({ project: '.' });
322
+ // Result should not contain mixed separators
323
+ assert.ok(!result.includes('//'));
324
+ });
325
+ test('resolveProjectRoot handles current directory consistently', () => {
326
+ const result1 = resolveProjectRoot({ project: '.' });
327
+ const result2 = resolveProjectRoot({ directory: '.' });
328
+ const result3 = resolveProjectRoot({ path: '.' });
329
+ assert.equal(result1, result2);
330
+ assert.equal(result2, result3);
331
+ });
332
+ //# sourceMappingURL=path-helpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helpers.test.js","sourceRoot":"","sources":["../../src/tests/path-helpers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prompt-builder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.test.d.ts","sourceRoot":"","sources":["../../src/tests/prompt-builder.test.ts"],"names":[],"mappings":""}