rag-lite-ts 2.1.1 → 2.3.0

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 (328) hide show
  1. package/README.md +88 -5
  2. package/dist/{cli → cjs/cli}/indexer.js +73 -15
  3. package/dist/cjs/cli/ui-server.d.ts +5 -0
  4. package/dist/cjs/cli/ui-server.js +152 -0
  5. package/dist/{cli.js → cjs/cli.js} +25 -6
  6. package/dist/{core → cjs/core}/binary-index-format.js +6 -3
  7. package/dist/{core → cjs/core}/db.d.ts +56 -0
  8. package/dist/{core → cjs/core}/db.js +105 -0
  9. package/dist/{core → cjs/core}/ingestion.js +3 -0
  10. package/dist/cjs/core/knowledge-base-manager.d.ts +109 -0
  11. package/dist/cjs/core/knowledge-base-manager.js +256 -0
  12. package/dist/{core → cjs/core}/model-validator.js +1 -1
  13. package/dist/{core → cjs/core}/search-pipeline.js +1 -1
  14. package/dist/{core → cjs/core}/search.js +1 -1
  15. package/dist/cjs/core/vector-index-messages.d.ts +52 -0
  16. package/dist/cjs/core/vector-index-messages.js +5 -0
  17. package/dist/cjs/core/vector-index-worker.d.ts +6 -0
  18. package/dist/cjs/core/vector-index-worker.js +304 -0
  19. package/dist/cjs/core/vector-index.d.ts +107 -0
  20. package/dist/cjs/core/vector-index.js +344 -0
  21. package/dist/{factories → cjs/factories}/ingestion-factory.js +3 -7
  22. package/dist/{factories → cjs/factories}/search-factory.js +11 -0
  23. package/dist/{index-manager.d.ts → cjs/index-manager.d.ts} +23 -3
  24. package/dist/{index-manager.js → cjs/index-manager.js} +84 -15
  25. package/dist/{index.d.ts → cjs/index.d.ts} +2 -1
  26. package/dist/{index.js → cjs/index.js} +3 -1
  27. package/dist/esm/api-errors.d.ts +90 -0
  28. package/dist/esm/api-errors.js +320 -0
  29. package/dist/esm/cli/indexer.d.ts +11 -0
  30. package/dist/esm/cli/indexer.js +529 -0
  31. package/dist/esm/cli/search.d.ts +7 -0
  32. package/dist/esm/cli/search.js +332 -0
  33. package/dist/esm/cli/ui-server.d.ts +5 -0
  34. package/dist/esm/cli/ui-server.js +152 -0
  35. package/dist/esm/cli.d.ts +3 -0
  36. package/dist/esm/cli.js +548 -0
  37. package/dist/esm/config.d.ts +51 -0
  38. package/dist/esm/config.js +79 -0
  39. package/dist/esm/core/abstract-embedder.d.ts +125 -0
  40. package/dist/esm/core/abstract-embedder.js +264 -0
  41. package/dist/esm/core/actionable-error-messages.d.ts +60 -0
  42. package/dist/esm/core/actionable-error-messages.js +397 -0
  43. package/dist/esm/core/adapters.d.ts +93 -0
  44. package/dist/esm/core/adapters.js +139 -0
  45. package/dist/esm/core/batch-processing-optimizer.d.ts +155 -0
  46. package/dist/esm/core/batch-processing-optimizer.js +536 -0
  47. package/dist/esm/core/binary-index-format.d.ts +78 -0
  48. package/dist/esm/core/binary-index-format.js +294 -0
  49. package/dist/esm/core/chunker.d.ts +119 -0
  50. package/dist/esm/core/chunker.js +73 -0
  51. package/dist/esm/core/cli-database-utils.d.ts +53 -0
  52. package/dist/esm/core/cli-database-utils.js +239 -0
  53. package/dist/esm/core/config.d.ts +102 -0
  54. package/dist/esm/core/config.js +247 -0
  55. package/dist/esm/core/content-errors.d.ts +111 -0
  56. package/dist/esm/core/content-errors.js +362 -0
  57. package/dist/esm/core/content-manager.d.ts +335 -0
  58. package/dist/esm/core/content-manager.js +1476 -0
  59. package/dist/esm/core/content-performance-optimizer.d.ts +150 -0
  60. package/dist/esm/core/content-performance-optimizer.js +516 -0
  61. package/dist/esm/core/content-resolver.d.ts +104 -0
  62. package/dist/esm/core/content-resolver.js +285 -0
  63. package/dist/esm/core/cross-modal-search.d.ts +164 -0
  64. package/dist/esm/core/cross-modal-search.js +342 -0
  65. package/dist/esm/core/database-connection-manager.d.ts +109 -0
  66. package/dist/esm/core/database-connection-manager.js +310 -0
  67. package/dist/esm/core/db.d.ts +269 -0
  68. package/dist/esm/core/db.js +1000 -0
  69. package/dist/esm/core/embedder-factory.d.ts +154 -0
  70. package/dist/esm/core/embedder-factory.js +311 -0
  71. package/dist/esm/core/error-handler.d.ts +112 -0
  72. package/dist/esm/core/error-handler.js +239 -0
  73. package/dist/esm/core/index.d.ts +59 -0
  74. package/dist/esm/core/index.js +69 -0
  75. package/dist/esm/core/ingestion.d.ts +202 -0
  76. package/dist/esm/core/ingestion.js +904 -0
  77. package/dist/esm/core/interfaces.d.ts +408 -0
  78. package/dist/esm/core/interfaces.js +106 -0
  79. package/dist/esm/core/knowledge-base-manager.d.ts +109 -0
  80. package/dist/esm/core/knowledge-base-manager.js +256 -0
  81. package/dist/esm/core/lazy-dependency-loader.d.ts +147 -0
  82. package/dist/esm/core/lazy-dependency-loader.js +435 -0
  83. package/dist/esm/core/mode-detection-service.d.ts +150 -0
  84. package/dist/esm/core/mode-detection-service.js +565 -0
  85. package/dist/esm/core/mode-model-validator.d.ts +92 -0
  86. package/dist/esm/core/mode-model-validator.js +203 -0
  87. package/dist/esm/core/model-registry.d.ts +116 -0
  88. package/dist/esm/core/model-registry.js +411 -0
  89. package/dist/esm/core/model-validator.d.ts +217 -0
  90. package/dist/esm/core/model-validator.js +782 -0
  91. package/dist/esm/core/path-manager.d.ts +47 -0
  92. package/dist/esm/core/path-manager.js +71 -0
  93. package/dist/esm/core/raglite-paths.d.ts +121 -0
  94. package/dist/esm/core/raglite-paths.js +145 -0
  95. package/dist/esm/core/reranking-config.d.ts +42 -0
  96. package/dist/esm/core/reranking-config.js +147 -0
  97. package/dist/esm/core/reranking-factory.d.ts +92 -0
  98. package/dist/esm/core/reranking-factory.js +410 -0
  99. package/dist/esm/core/reranking-strategies.d.ts +310 -0
  100. package/dist/esm/core/reranking-strategies.js +650 -0
  101. package/dist/esm/core/resource-cleanup.d.ts +163 -0
  102. package/dist/esm/core/resource-cleanup.js +371 -0
  103. package/dist/esm/core/resource-manager.d.ts +212 -0
  104. package/dist/esm/core/resource-manager.js +564 -0
  105. package/dist/esm/core/search-pipeline.d.ts +111 -0
  106. package/dist/esm/core/search-pipeline.js +287 -0
  107. package/dist/esm/core/search.d.ts +141 -0
  108. package/dist/esm/core/search.js +320 -0
  109. package/dist/esm/core/streaming-operations.d.ts +145 -0
  110. package/dist/esm/core/streaming-operations.js +409 -0
  111. package/dist/esm/core/types.d.ts +66 -0
  112. package/dist/esm/core/types.js +6 -0
  113. package/dist/esm/core/universal-embedder.d.ts +177 -0
  114. package/dist/esm/core/universal-embedder.js +139 -0
  115. package/dist/esm/core/validation-messages.d.ts +99 -0
  116. package/dist/esm/core/validation-messages.js +334 -0
  117. package/dist/esm/core/vector-index-messages.d.ts +52 -0
  118. package/dist/esm/core/vector-index-messages.js +5 -0
  119. package/dist/esm/core/vector-index-worker.d.ts +6 -0
  120. package/dist/esm/core/vector-index-worker.js +304 -0
  121. package/dist/esm/core/vector-index.d.ts +107 -0
  122. package/dist/esm/core/vector-index.js +344 -0
  123. package/dist/esm/dom-polyfills.d.ts +6 -0
  124. package/dist/esm/dom-polyfills.js +37 -0
  125. package/dist/esm/factories/index.d.ts +27 -0
  126. package/dist/esm/factories/index.js +29 -0
  127. package/dist/esm/factories/ingestion-factory.d.ts +200 -0
  128. package/dist/esm/factories/ingestion-factory.js +473 -0
  129. package/dist/esm/factories/search-factory.d.ts +154 -0
  130. package/dist/esm/factories/search-factory.js +355 -0
  131. package/dist/esm/file-processor.d.ts +147 -0
  132. package/dist/esm/file-processor.js +963 -0
  133. package/dist/esm/index-manager.d.ts +136 -0
  134. package/dist/esm/index-manager.js +667 -0
  135. package/dist/esm/index.d.ts +76 -0
  136. package/dist/esm/index.js +112 -0
  137. package/dist/esm/indexer.d.ts +7 -0
  138. package/dist/esm/indexer.js +54 -0
  139. package/dist/esm/ingestion.d.ts +63 -0
  140. package/dist/esm/ingestion.js +124 -0
  141. package/dist/esm/mcp-server.d.ts +46 -0
  142. package/dist/esm/mcp-server.js +1820 -0
  143. package/dist/esm/multimodal/clip-embedder.d.ts +327 -0
  144. package/dist/esm/multimodal/clip-embedder.js +996 -0
  145. package/dist/esm/multimodal/index.d.ts +6 -0
  146. package/dist/esm/multimodal/index.js +6 -0
  147. package/dist/esm/preprocess.d.ts +19 -0
  148. package/dist/esm/preprocess.js +203 -0
  149. package/dist/esm/preprocessors/index.d.ts +17 -0
  150. package/dist/esm/preprocessors/index.js +38 -0
  151. package/dist/esm/preprocessors/mdx.d.ts +25 -0
  152. package/dist/esm/preprocessors/mdx.js +101 -0
  153. package/dist/esm/preprocessors/mermaid.d.ts +68 -0
  154. package/dist/esm/preprocessors/mermaid.js +329 -0
  155. package/dist/esm/preprocessors/registry.d.ts +56 -0
  156. package/dist/esm/preprocessors/registry.js +179 -0
  157. package/dist/esm/run-error-recovery-tests.d.ts +7 -0
  158. package/dist/esm/run-error-recovery-tests.js +101 -0
  159. package/dist/esm/search-standalone.d.ts +7 -0
  160. package/dist/esm/search-standalone.js +117 -0
  161. package/dist/esm/search.d.ts +99 -0
  162. package/dist/esm/search.js +177 -0
  163. package/dist/esm/test-utils.d.ts +18 -0
  164. package/dist/esm/test-utils.js +27 -0
  165. package/dist/esm/text/chunker.d.ts +33 -0
  166. package/dist/esm/text/chunker.js +279 -0
  167. package/dist/esm/text/embedder.d.ts +111 -0
  168. package/dist/esm/text/embedder.js +386 -0
  169. package/dist/esm/text/index.d.ts +8 -0
  170. package/dist/esm/text/index.js +9 -0
  171. package/dist/esm/text/preprocessors/index.d.ts +17 -0
  172. package/dist/esm/text/preprocessors/index.js +38 -0
  173. package/dist/esm/text/preprocessors/mdx.d.ts +25 -0
  174. package/dist/esm/text/preprocessors/mdx.js +101 -0
  175. package/dist/esm/text/preprocessors/mermaid.d.ts +68 -0
  176. package/dist/esm/text/preprocessors/mermaid.js +330 -0
  177. package/dist/esm/text/preprocessors/registry.d.ts +56 -0
  178. package/dist/esm/text/preprocessors/registry.js +180 -0
  179. package/dist/esm/text/reranker.d.ts +49 -0
  180. package/dist/esm/text/reranker.js +274 -0
  181. package/dist/esm/text/sentence-transformer-embedder.d.ts +96 -0
  182. package/dist/esm/text/sentence-transformer-embedder.js +340 -0
  183. package/dist/esm/text/tokenizer.d.ts +22 -0
  184. package/dist/esm/text/tokenizer.js +64 -0
  185. package/dist/esm/types.d.ts +83 -0
  186. package/dist/esm/types.js +3 -0
  187. package/dist/esm/utils/vector-math.d.ts +31 -0
  188. package/dist/esm/utils/vector-math.js +70 -0
  189. package/package.json +39 -14
  190. package/dist/core/vector-index.d.ts +0 -72
  191. package/dist/core/vector-index.js +0 -331
  192. /package/dist/{api-errors.d.ts → cjs/api-errors.d.ts} +0 -0
  193. /package/dist/{api-errors.js → cjs/api-errors.js} +0 -0
  194. /package/dist/{cli → cjs/cli}/indexer.d.ts +0 -0
  195. /package/dist/{cli → cjs/cli}/search.d.ts +0 -0
  196. /package/dist/{cli → cjs/cli}/search.js +0 -0
  197. /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
  198. /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
  199. /package/dist/{config.js → cjs/config.js} +0 -0
  200. /package/dist/{core → cjs/core}/abstract-embedder.d.ts +0 -0
  201. /package/dist/{core → cjs/core}/abstract-embedder.js +0 -0
  202. /package/dist/{core → cjs/core}/actionable-error-messages.d.ts +0 -0
  203. /package/dist/{core → cjs/core}/actionable-error-messages.js +0 -0
  204. /package/dist/{core → cjs/core}/adapters.d.ts +0 -0
  205. /package/dist/{core → cjs/core}/adapters.js +0 -0
  206. /package/dist/{core → cjs/core}/batch-processing-optimizer.d.ts +0 -0
  207. /package/dist/{core → cjs/core}/batch-processing-optimizer.js +0 -0
  208. /package/dist/{core → cjs/core}/binary-index-format.d.ts +0 -0
  209. /package/dist/{core → cjs/core}/chunker.d.ts +0 -0
  210. /package/dist/{core → cjs/core}/chunker.js +0 -0
  211. /package/dist/{core → cjs/core}/cli-database-utils.d.ts +0 -0
  212. /package/dist/{core → cjs/core}/cli-database-utils.js +0 -0
  213. /package/dist/{core → cjs/core}/config.d.ts +0 -0
  214. /package/dist/{core → cjs/core}/config.js +0 -0
  215. /package/dist/{core → cjs/core}/content-errors.d.ts +0 -0
  216. /package/dist/{core → cjs/core}/content-errors.js +0 -0
  217. /package/dist/{core → cjs/core}/content-manager.d.ts +0 -0
  218. /package/dist/{core → cjs/core}/content-manager.js +0 -0
  219. /package/dist/{core → cjs/core}/content-performance-optimizer.d.ts +0 -0
  220. /package/dist/{core → cjs/core}/content-performance-optimizer.js +0 -0
  221. /package/dist/{core → cjs/core}/content-resolver.d.ts +0 -0
  222. /package/dist/{core → cjs/core}/content-resolver.js +0 -0
  223. /package/dist/{core → cjs/core}/cross-modal-search.d.ts +0 -0
  224. /package/dist/{core → cjs/core}/cross-modal-search.js +0 -0
  225. /package/dist/{core → cjs/core}/database-connection-manager.d.ts +0 -0
  226. /package/dist/{core → cjs/core}/database-connection-manager.js +0 -0
  227. /package/dist/{core → cjs/core}/embedder-factory.d.ts +0 -0
  228. /package/dist/{core → cjs/core}/embedder-factory.js +0 -0
  229. /package/dist/{core → cjs/core}/error-handler.d.ts +0 -0
  230. /package/dist/{core → cjs/core}/error-handler.js +0 -0
  231. /package/dist/{core → cjs/core}/index.d.ts +0 -0
  232. /package/dist/{core → cjs/core}/index.js +0 -0
  233. /package/dist/{core → cjs/core}/ingestion.d.ts +0 -0
  234. /package/dist/{core → cjs/core}/interfaces.d.ts +0 -0
  235. /package/dist/{core → cjs/core}/interfaces.js +0 -0
  236. /package/dist/{core → cjs/core}/lazy-dependency-loader.d.ts +0 -0
  237. /package/dist/{core → cjs/core}/lazy-dependency-loader.js +0 -0
  238. /package/dist/{core → cjs/core}/mode-detection-service.d.ts +0 -0
  239. /package/dist/{core → cjs/core}/mode-detection-service.js +0 -0
  240. /package/dist/{core → cjs/core}/mode-model-validator.d.ts +0 -0
  241. /package/dist/{core → cjs/core}/mode-model-validator.js +0 -0
  242. /package/dist/{core → cjs/core}/model-registry.d.ts +0 -0
  243. /package/dist/{core → cjs/core}/model-registry.js +0 -0
  244. /package/dist/{core → cjs/core}/model-validator.d.ts +0 -0
  245. /package/dist/{core → cjs/core}/path-manager.d.ts +0 -0
  246. /package/dist/{core → cjs/core}/path-manager.js +0 -0
  247. /package/dist/{core → cjs/core}/raglite-paths.d.ts +0 -0
  248. /package/dist/{core → cjs/core}/raglite-paths.js +0 -0
  249. /package/dist/{core → cjs/core}/reranking-config.d.ts +0 -0
  250. /package/dist/{core → cjs/core}/reranking-config.js +0 -0
  251. /package/dist/{core → cjs/core}/reranking-factory.d.ts +0 -0
  252. /package/dist/{core → cjs/core}/reranking-factory.js +0 -0
  253. /package/dist/{core → cjs/core}/reranking-strategies.d.ts +0 -0
  254. /package/dist/{core → cjs/core}/reranking-strategies.js +0 -0
  255. /package/dist/{core → cjs/core}/resource-cleanup.d.ts +0 -0
  256. /package/dist/{core → cjs/core}/resource-cleanup.js +0 -0
  257. /package/dist/{core → cjs/core}/resource-manager.d.ts +0 -0
  258. /package/dist/{core → cjs/core}/resource-manager.js +0 -0
  259. /package/dist/{core → cjs/core}/search-pipeline.d.ts +0 -0
  260. /package/dist/{core → cjs/core}/search.d.ts +0 -0
  261. /package/dist/{core → cjs/core}/streaming-operations.d.ts +0 -0
  262. /package/dist/{core → cjs/core}/streaming-operations.js +0 -0
  263. /package/dist/{core → cjs/core}/types.d.ts +0 -0
  264. /package/dist/{core → cjs/core}/types.js +0 -0
  265. /package/dist/{core → cjs/core}/universal-embedder.d.ts +0 -0
  266. /package/dist/{core → cjs/core}/universal-embedder.js +0 -0
  267. /package/dist/{core → cjs/core}/validation-messages.d.ts +0 -0
  268. /package/dist/{core → cjs/core}/validation-messages.js +0 -0
  269. /package/dist/{dom-polyfills.d.ts → cjs/dom-polyfills.d.ts} +0 -0
  270. /package/dist/{dom-polyfills.js → cjs/dom-polyfills.js} +0 -0
  271. /package/dist/{factories → cjs/factories}/index.d.ts +0 -0
  272. /package/dist/{factories → cjs/factories}/index.js +0 -0
  273. /package/dist/{factories → cjs/factories}/ingestion-factory.d.ts +0 -0
  274. /package/dist/{factories → cjs/factories}/search-factory.d.ts +0 -0
  275. /package/dist/{file-processor.d.ts → cjs/file-processor.d.ts} +0 -0
  276. /package/dist/{file-processor.js → cjs/file-processor.js} +0 -0
  277. /package/dist/{indexer.d.ts → cjs/indexer.d.ts} +0 -0
  278. /package/dist/{indexer.js → cjs/indexer.js} +0 -0
  279. /package/dist/{ingestion.d.ts → cjs/ingestion.d.ts} +0 -0
  280. /package/dist/{ingestion.js → cjs/ingestion.js} +0 -0
  281. /package/dist/{mcp-server.d.ts → cjs/mcp-server.d.ts} +0 -0
  282. /package/dist/{mcp-server.js → cjs/mcp-server.js} +0 -0
  283. /package/dist/{multimodal → cjs/multimodal}/clip-embedder.d.ts +0 -0
  284. /package/dist/{multimodal → cjs/multimodal}/clip-embedder.js +0 -0
  285. /package/dist/{multimodal → cjs/multimodal}/index.d.ts +0 -0
  286. /package/dist/{multimodal → cjs/multimodal}/index.js +0 -0
  287. /package/dist/{preprocess.d.ts → cjs/preprocess.d.ts} +0 -0
  288. /package/dist/{preprocess.js → cjs/preprocess.js} +0 -0
  289. /package/dist/{preprocessors → cjs/preprocessors}/index.d.ts +0 -0
  290. /package/dist/{preprocessors → cjs/preprocessors}/index.js +0 -0
  291. /package/dist/{preprocessors → cjs/preprocessors}/mdx.d.ts +0 -0
  292. /package/dist/{preprocessors → cjs/preprocessors}/mdx.js +0 -0
  293. /package/dist/{preprocessors → cjs/preprocessors}/mermaid.d.ts +0 -0
  294. /package/dist/{preprocessors → cjs/preprocessors}/mermaid.js +0 -0
  295. /package/dist/{preprocessors → cjs/preprocessors}/registry.d.ts +0 -0
  296. /package/dist/{preprocessors → cjs/preprocessors}/registry.js +0 -0
  297. /package/dist/{run-error-recovery-tests.d.ts → cjs/run-error-recovery-tests.d.ts} +0 -0
  298. /package/dist/{run-error-recovery-tests.js → cjs/run-error-recovery-tests.js} +0 -0
  299. /package/dist/{search-standalone.d.ts → cjs/search-standalone.d.ts} +0 -0
  300. /package/dist/{search-standalone.js → cjs/search-standalone.js} +0 -0
  301. /package/dist/{search.d.ts → cjs/search.d.ts} +0 -0
  302. /package/dist/{search.js → cjs/search.js} +0 -0
  303. /package/dist/{test-utils.d.ts → cjs/test-utils.d.ts} +0 -0
  304. /package/dist/{test-utils.js → cjs/test-utils.js} +0 -0
  305. /package/dist/{text → cjs/text}/chunker.d.ts +0 -0
  306. /package/dist/{text → cjs/text}/chunker.js +0 -0
  307. /package/dist/{text → cjs/text}/embedder.d.ts +0 -0
  308. /package/dist/{text → cjs/text}/embedder.js +0 -0
  309. /package/dist/{text → cjs/text}/index.d.ts +0 -0
  310. /package/dist/{text → cjs/text}/index.js +0 -0
  311. /package/dist/{text → cjs/text}/preprocessors/index.d.ts +0 -0
  312. /package/dist/{text → cjs/text}/preprocessors/index.js +0 -0
  313. /package/dist/{text → cjs/text}/preprocessors/mdx.d.ts +0 -0
  314. /package/dist/{text → cjs/text}/preprocessors/mdx.js +0 -0
  315. /package/dist/{text → cjs/text}/preprocessors/mermaid.d.ts +0 -0
  316. /package/dist/{text → cjs/text}/preprocessors/mermaid.js +0 -0
  317. /package/dist/{text → cjs/text}/preprocessors/registry.d.ts +0 -0
  318. /package/dist/{text → cjs/text}/preprocessors/registry.js +0 -0
  319. /package/dist/{text → cjs/text}/reranker.d.ts +0 -0
  320. /package/dist/{text → cjs/text}/reranker.js +0 -0
  321. /package/dist/{text → cjs/text}/sentence-transformer-embedder.d.ts +0 -0
  322. /package/dist/{text → cjs/text}/sentence-transformer-embedder.js +0 -0
  323. /package/dist/{text → cjs/text}/tokenizer.d.ts +0 -0
  324. /package/dist/{text → cjs/text}/tokenizer.js +0 -0
  325. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  326. /package/dist/{types.js → cjs/types.js} +0 -0
  327. /package/dist/{utils → cjs/utils}/vector-math.d.ts +0 -0
  328. /package/dist/{utils → cjs/utils}/vector-math.js +0 -0
@@ -0,0 +1,548 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname, join } from 'path';
5
+ import { EXIT_CODES, ConfigurationError } from './core/config.js';
6
+ // Get package.json for version info
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ // When built, CLI is at dist/esm/cli.js, so go up two levels to root
10
+ // When running from source, CLI is at src/cli.ts, so go up one level to root
11
+ const packageJsonPath = join(__dirname, '..', '..', 'package.json');
12
+ let packageJson;
13
+ try {
14
+ packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
15
+ }
16
+ catch {
17
+ // Fallback: try one level up (for source execution)
18
+ const fallbackPath = join(__dirname, '..', 'package.json');
19
+ packageJson = JSON.parse(readFileSync(fallbackPath, 'utf-8'));
20
+ }
21
+ /**
22
+ * Display version information
23
+ */
24
+ function showVersion() {
25
+ console.log(`RAG-lite TS v${packageJson.version}`);
26
+ }
27
+ /**
28
+ * Display help information
29
+ */
30
+ function showHelp() {
31
+ console.log(`
32
+ RAG-lite TS v${packageJson.version}
33
+ Local-first TypeScript retrieval engine for semantic search
34
+
35
+ Usage:
36
+ raglite <command> [options]
37
+
38
+ Commands:
39
+ ingest <path> Ingest documents from file or directory
40
+ search <query> Search indexed documents (text or image)
41
+ ui Launch the web interface
42
+ rebuild Rebuild the vector index
43
+ version Show version information
44
+ help Show this help message
45
+
46
+ Examples:
47
+ raglite ingest ./docs/ # Ingest all .md/.txt/.docx/.pdf files in docs/
48
+ raglite ingest ./readme.md # Ingest single file
49
+ raglite ingest ./docs/ --model Xenova/all-mpnet-base-v2 # Use higher quality model
50
+ raglite ingest ./docs/ --mode multimodal # Enable multimodal processing
51
+ raglite ingest ./docs/ --path-strategy relative --path-base /project # Use relative paths
52
+ raglite search "machine learning" # Search for documents about machine learning
53
+ raglite search "API documentation" --top-k 10 # Get top 10 results
54
+ raglite search "red car" --content-type image # Search only image results
55
+ raglite search ./photo.jpg # Search with image (multimodal mode only)
56
+ raglite search ./image.png --top-k 5 # Find similar images
57
+ raglite ui # Launch web interface
58
+
59
+ raglite rebuild # Rebuild the entire index
60
+
61
+ Options for search:
62
+ --top-k <number> Number of results to return (default: 10)
63
+ --rerank Enable reranking for better results
64
+ --no-rerank Disable reranking
65
+ --content-type <type> Filter results by content type: 'text', 'image', or 'all' (default: all)
66
+
67
+ Options for ingest:
68
+ --model <name> Use specific embedding model
69
+ --mode <mode> Processing mode: 'text' (default) or 'multimodal'
70
+ --force-rebuild Wipe DB+index and rebuild from scratch (DESTRUCTIVE)
71
+ --path-strategy <strategy> Path storage strategy: 'relative' (default) or 'absolute'
72
+ --path-base <path> Base directory for relative paths (defaults to current directory)
73
+
74
+ Available models:
75
+ Text mode:
76
+ sentence-transformers/all-MiniLM-L6-v2 (384 dim, fast, default)
77
+ Xenova/all-mpnet-base-v2 (768 dim, higher quality)
78
+ Multimodal mode:
79
+ Xenova/clip-vit-base-patch32 (512 dim, faster, default)
80
+ Xenova/clip-vit-base-patch16 (512 dim, more accurate, slower)
81
+
82
+ Available reranking strategies (multimodal mode):
83
+ text-derived Use image-to-text conversion + cross-encoder (default)
84
+ disabled No reranking, use vector similarity only
85
+
86
+ For more information, visit: https://github.com/your-repo/rag-lite-ts
87
+ `);
88
+ }
89
+ /**
90
+ * Parse command line arguments
91
+ */
92
+ function parseArgs() {
93
+ const args = process.argv.slice(2);
94
+ if (args.length === 0) {
95
+ return { command: 'help', args: [], options: {} };
96
+ }
97
+ // Handle --version and --help flags at the top level
98
+ if (args[0] === '--version' || args[0] === '-v') {
99
+ return { command: 'version', args: [], options: {} };
100
+ }
101
+ if (args[0] === '--help' || args[0] === '-h') {
102
+ return { command: 'help', args: [], options: {} };
103
+ }
104
+ const command = args[0];
105
+ const remainingArgs = [];
106
+ const options = {};
107
+ // Parse arguments and options
108
+ for (let i = 1; i < args.length; i++) {
109
+ const arg = args[i];
110
+ if (arg.startsWith('--')) {
111
+ const optionName = arg.slice(2);
112
+ // Handle boolean flags with optional values
113
+ if (optionName === 'rerank') {
114
+ const nextArg = args[i + 1];
115
+ if (nextArg && (nextArg === 'true' || nextArg === 'false')) {
116
+ options.rerank = nextArg === 'true';
117
+ i++; // Skip the next argument as it's the value
118
+ }
119
+ else {
120
+ options.rerank = true;
121
+ }
122
+ }
123
+ else if (optionName === 'no-rerank') {
124
+ options.rerank = false;
125
+ }
126
+ else if (optionName === 'force-rebuild') {
127
+ options.forceRebuild = true;
128
+ }
129
+ else if (optionName === 'help') {
130
+ return { command: 'help', args: [], options: {} };
131
+ }
132
+ else if (optionName === 'version') {
133
+ return { command: 'version', args: [], options: {} };
134
+ }
135
+ else {
136
+ // Handle options with values
137
+ const nextArg = args[i + 1];
138
+ if (nextArg && !nextArg.startsWith('--')) {
139
+ options[optionName] = nextArg;
140
+ i++; // Skip the next argument as it's the value
141
+ }
142
+ else {
143
+ options[optionName] = true;
144
+ }
145
+ }
146
+ }
147
+ else {
148
+ remainingArgs.push(arg);
149
+ }
150
+ }
151
+ return { command, args: remainingArgs, options };
152
+ }
153
+ /**
154
+ * Validate command line arguments
155
+ */
156
+ function validateArgs(command, args, options) {
157
+ // Phase 3: Reject the removed --rerank-strategy option
158
+ if (options['rerank-strategy'] !== undefined) {
159
+ console.error('Error: --rerank-strategy option has been removed in this version');
160
+ console.error('');
161
+ console.error('Reranking strategy is now automatically selected based on mode:');
162
+ console.error(' Text mode: cross-encoder (or disabled)');
163
+ console.error(' Multimodal mode: text-derived (or disabled)');
164
+ console.error('');
165
+ console.error('Use --rerank or --no-rerank to control reranking instead.');
166
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
167
+ }
168
+ switch (command) {
169
+ case 'ingest':
170
+ if (args.length === 0) {
171
+ console.error('Error: ingest command requires a path argument');
172
+ console.error('');
173
+ console.error('Usage: raglite ingest <path>');
174
+ console.error('');
175
+ console.error('Examples:');
176
+ console.error(' raglite ingest ./docs/ # Ingest all .md/.txt/.docx/.pdf files in docs/');
177
+ console.error(' raglite ingest ./readme.md # Ingest single file');
178
+ console.error(' raglite ingest ./docs/ --model Xenova/all-mpnet-base-v2 # Use higher quality model');
179
+ console.error(' raglite ingest ./docs/ --mode multimodal # Enable multimodal processing');
180
+ console.error('');
181
+ console.error('Options:');
182
+ console.error(' --model <name> Use specific embedding model');
183
+ console.error(' --mode <mode> Processing mode: text (default) or multimodal');
184
+ console.error(' --force-rebuild Wipe DB+index and rebuild from scratch (DESTRUCTIVE)');
185
+ console.error('');
186
+ console.error('The path can be either a file (.md or .txt) or a directory.');
187
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
188
+ }
189
+ break;
190
+ case 'search':
191
+ if (args.length === 0) {
192
+ console.error('Error: search command requires a query argument');
193
+ console.error('');
194
+ console.error('Usage: raglite search <query> [options]');
195
+ console.error(' raglite search <image-path> [options]');
196
+ console.error('');
197
+ console.error('Examples:');
198
+ console.error(' raglite search "machine learning"');
199
+ console.error(' raglite search "API documentation" --top-k 10');
200
+ console.error(' raglite search "tutorial" --rerank');
201
+ console.error(' raglite search "red car" --content-type image');
202
+ console.error(' raglite search ./photo.jpg # Image search (multimodal mode)');
203
+ console.error(' raglite search ./image.png --top-k 5 # Find similar images');
204
+ console.error('');
205
+ console.error('Options:');
206
+ console.error(' --top-k <number> Number of results to return (default: 10)');
207
+ console.error(' --rerank Enable reranking for better results');
208
+ console.error(' --no-rerank Disable reranking');
209
+ console.error(' --content-type <type> Filter by content type: text, image, or all (default: all)');
210
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
211
+ }
212
+ break;
213
+ case 'rebuild':
214
+ // No arguments required
215
+ break;
216
+ case 'ui':
217
+ // No arguments required
218
+ break;
219
+ case 'version':
220
+ // No validation needed
221
+ break;
222
+ case 'help':
223
+ // No validation needed
224
+ break;
225
+ default:
226
+ console.error(`Error: Unknown command '${command}'`);
227
+ console.error('');
228
+ console.error('Available commands: ingest, search, rebuild, version, help');
229
+ console.error('Run "raglite help" for detailed usage information');
230
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
231
+ }
232
+ // Validate numeric options
233
+ if (options['top-k'] !== undefined) {
234
+ const topK = parseInt(options['top-k'], 10);
235
+ if (isNaN(topK) || topK <= 0) {
236
+ console.error('Error: --top-k must be a positive number');
237
+ console.error('');
238
+ console.error('Examples:');
239
+ console.error(' --top-k 5 # Return 5 results');
240
+ console.error(' --top-k 20 # Return 20 results');
241
+ console.error('');
242
+ console.error('Valid range: 1-100 results');
243
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
244
+ }
245
+ if (topK > 100) {
246
+ console.warn(`Warning: Large --top-k value (${topK}) may impact performance. Consider using a smaller value.`);
247
+ }
248
+ options['top-k'] = topK;
249
+ }
250
+ // Validate content-type option (only for search command)
251
+ if (options['content-type'] !== undefined) {
252
+ if (command !== 'search') {
253
+ console.error(`Error: --content-type option is only available for the 'search' command`);
254
+ console.error('');
255
+ console.error('Use this option to filter search results by content type.');
256
+ console.error('');
257
+ console.error('Examples:');
258
+ console.error(' raglite search "query" --content-type text # Only text results');
259
+ console.error(' raglite search "query" --content-type image # Only image results');
260
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
261
+ }
262
+ const supportedTypes = ['text', 'image', 'all'];
263
+ if (!supportedTypes.includes(options['content-type'])) {
264
+ console.error(`Error: Unsupported content type '${options['content-type']}'`);
265
+ console.error('');
266
+ console.error('Supported content types:');
267
+ console.error(' text Filter to show only text results');
268
+ console.error(' image Filter to show only image results');
269
+ console.error(' all Show all results (default)');
270
+ console.error('');
271
+ console.error('Examples:');
272
+ console.error(' --content-type text');
273
+ console.error(' --content-type image');
274
+ console.error(' --content-type all');
275
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
276
+ }
277
+ }
278
+ // Validate mode option (only for ingest command)
279
+ if (options.mode !== undefined) {
280
+ if (command !== 'ingest') {
281
+ console.error(`Error: --mode option is only available for the 'ingest' command`);
282
+ console.error('');
283
+ console.error('The search command automatically detects the mode from the database.');
284
+ console.error('Mode is set once during ingestion and persists for all searches.');
285
+ console.error('');
286
+ console.error('Examples:');
287
+ console.error(' raglite ingest ./docs/ --mode multimodal');
288
+ console.error(' raglite search "your query" # Uses mode from ingestion');
289
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
290
+ }
291
+ const supportedModes = ['text', 'multimodal'];
292
+ if (!supportedModes.includes(options.mode)) {
293
+ console.error(`Error: Unsupported mode '${options.mode}'`);
294
+ console.error('');
295
+ console.error('Supported modes:');
296
+ console.error(' text Process text documents only (default)');
297
+ console.error(' multimodal Process text and image documents');
298
+ console.error('');
299
+ console.error('Examples:');
300
+ console.error(' --mode text');
301
+ console.error(' --mode multimodal');
302
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
303
+ }
304
+ }
305
+ // Validate model option (only for ingest command)
306
+ if (options.model !== undefined) {
307
+ if (command !== 'ingest') {
308
+ console.error(`Error: --model option is only available for the 'ingest' command`);
309
+ console.error('');
310
+ console.error('The search command automatically uses the model that was used during ingestion.');
311
+ console.error('To search with a different model, you need to re-ingest with that model first.');
312
+ console.error('');
313
+ console.error('Examples:');
314
+ console.error(' raglite ingest ./docs/ --model Xenova/all-mpnet-base-v2');
315
+ console.error(' raglite search "your query" # Uses the model from ingestion');
316
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
317
+ }
318
+ const mode = options.mode || 'text';
319
+ const textModels = [
320
+ 'sentence-transformers/all-MiniLM-L6-v2',
321
+ 'Xenova/all-mpnet-base-v2'
322
+ ];
323
+ const multimodalModels = [
324
+ 'Xenova/clip-vit-base-patch32',
325
+ 'Xenova/clip-vit-base-patch16'
326
+ ];
327
+ let supportedModels;
328
+ let modelTypeDescription;
329
+ if (mode === 'multimodal') {
330
+ supportedModels = multimodalModels;
331
+ modelTypeDescription = 'multimodal models';
332
+ }
333
+ else {
334
+ supportedModels = textModels;
335
+ modelTypeDescription = 'text models';
336
+ }
337
+ if (!supportedModels.includes(options.model)) {
338
+ console.error(`Error: Model '${options.model}' is not supported for ${mode} mode`);
339
+ console.error('');
340
+ if (mode === 'text') {
341
+ console.error('Supported models for text mode:');
342
+ console.error(' sentence-transformers/all-MiniLM-L6-v2 (384 dim, fast, default)');
343
+ console.error(' Xenova/all-mpnet-base-v2 (768 dim, higher quality)');
344
+ }
345
+ else {
346
+ console.error('Supported models for multimodal mode:');
347
+ console.error(' Xenova/clip-vit-base-patch32 (512 dim, faster, default)');
348
+ console.error(' Xenova/clip-vit-base-patch16 (512 dim, more accurate, slower)');
349
+ }
350
+ console.error('');
351
+ console.error('Examples:');
352
+ if (mode === 'text') {
353
+ console.error(' --model sentence-transformers/all-MiniLM-L6-v2');
354
+ console.error(' --model Xenova/all-mpnet-base-v2');
355
+ }
356
+ else {
357
+ console.error(' --model Xenova/clip-vit-base-patch32 --mode multimodal');
358
+ console.error(' --model Xenova/clip-vit-base-patch16 --mode multimodal');
359
+ }
360
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
361
+ }
362
+ }
363
+ // Validate path-strategy option (only for ingest command)
364
+ if (options['path-strategy'] !== undefined) {
365
+ if (command !== 'ingest') {
366
+ console.error(`Error: --path-strategy option is only available for the 'ingest' command`);
367
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
368
+ }
369
+ const supportedStrategies = ['absolute', 'relative'];
370
+ if (!supportedStrategies.includes(options['path-strategy'])) {
371
+ console.error(`Error: Unsupported path strategy '${options['path-strategy']}'`);
372
+ console.error('');
373
+ console.error('Supported strategies:');
374
+ console.error(' relative Store paths relative to base directory (default, portable)');
375
+ console.error(' absolute Store absolute paths');
376
+ console.error('');
377
+ console.error('Examples:');
378
+ console.error(' --path-strategy relative');
379
+ console.error(' --path-strategy absolute');
380
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
381
+ }
382
+ }
383
+ // Validate path-base option (only for ingest command)
384
+ if (options['path-base'] !== undefined) {
385
+ if (command !== 'ingest') {
386
+ console.error(`Error: --path-base option is only available for the 'ingest' command`);
387
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
388
+ }
389
+ if (typeof options['path-base'] !== 'string' || options['path-base'].trim() === '') {
390
+ console.error('Error: --path-base must be a non-empty directory path');
391
+ console.error('');
392
+ console.error('Examples:');
393
+ console.error(' --path-base /project/docs');
394
+ console.error(' --path-base ./my-docs');
395
+ process.exit(EXIT_CODES.INVALID_ARGUMENTS);
396
+ }
397
+ }
398
+ }
399
+ /**
400
+ * Main CLI entry point
401
+ */
402
+ async function main() {
403
+ // Set CLI mode to prevent database connection manager from starting timers
404
+ process.env.RAG_CLI_MODE = 'true';
405
+ try {
406
+ const { command, args, options } = parseArgs();
407
+ // Validate arguments
408
+ validateArgs(command, args, options);
409
+ // Handle commands
410
+ switch (command) {
411
+ case 'version':
412
+ showVersion();
413
+ break;
414
+ case 'help':
415
+ showHelp();
416
+ break;
417
+ case 'ingest':
418
+ const { runIngest } = await import('./cli/indexer.js');
419
+ await runIngest(args[0], options);
420
+ break;
421
+ case 'search':
422
+ const { runSearch } = await import('./cli/search.js');
423
+ const query = args.join(' '); // Join all args as query
424
+ await runSearch(query, options);
425
+ break;
426
+ case 'rebuild':
427
+ const { runRebuild } = await import('./cli/indexer.js');
428
+ await runRebuild();
429
+ break;
430
+ case 'ui':
431
+ const { runUI } = await import('./cli/ui-server.js');
432
+ await runUI(options);
433
+ break;
434
+ default:
435
+ console.error(`Error: Unknown command '${command}'`);
436
+ process.exit(1);
437
+ }
438
+ }
439
+ catch (error) {
440
+ // Handle different error types with appropriate exit codes
441
+ if (error instanceof ConfigurationError) {
442
+ console.error('Configuration Error:');
443
+ console.error(error.message);
444
+ process.exit(error.exitCode);
445
+ }
446
+ else if (error instanceof Error) {
447
+ console.error('Error:', error.message);
448
+ // Provide context-specific help for common errors
449
+ if (error.message.includes('ENOENT')) {
450
+ console.error('');
451
+ console.error('This usually means a file or directory was not found.');
452
+ console.error('Please check that the path exists and you have read permissions.');
453
+ process.exit(EXIT_CODES.FILE_NOT_FOUND);
454
+ }
455
+ else if (error.message.includes('EACCES') || error.message.includes('permission')) {
456
+ console.error('');
457
+ console.error('Permission denied. Please check file/directory permissions.');
458
+ process.exit(EXIT_CODES.PERMISSION_ERROR);
459
+ }
460
+ else if (error.message.includes('SQLITE') || error.message.includes('database')) {
461
+ console.error('');
462
+ console.error('Database error. Try running "raglite rebuild" to fix index issues.');
463
+ process.exit(EXIT_CODES.DATABASE_ERROR);
464
+ }
465
+ else if (error.message.includes('model') || error.message.includes('ONNX')) {
466
+ console.error('');
467
+ console.error('Model loading error. The embedding model will be downloaded automatically on first run.');
468
+ process.exit(EXIT_CODES.MODEL_ERROR);
469
+ }
470
+ else {
471
+ process.exit(EXIT_CODES.GENERAL_ERROR);
472
+ }
473
+ }
474
+ else {
475
+ console.error('Unknown error:', String(error));
476
+ process.exit(EXIT_CODES.GENERAL_ERROR);
477
+ }
478
+ }
479
+ }
480
+ // Handle unhandled promise rejections
481
+ process.on('unhandledRejection', (reason, promise) => {
482
+ console.error('🚨 Unhandled Promise Rejection:');
483
+ console.error('Reason:', reason);
484
+ console.error('Promise:', promise);
485
+ console.error('');
486
+ console.error('This is usually caused by an async operation that failed without proper error handling.');
487
+ console.error('The system will exit to prevent undefined behavior.');
488
+ console.error('');
489
+ console.error('If this error persists, please report it with the above details.');
490
+ process.exit(EXIT_CODES.GENERAL_ERROR);
491
+ });
492
+ // Handle uncaught exceptions
493
+ process.on('uncaughtException', (error) => {
494
+ console.error('🚨 Uncaught Exception:');
495
+ console.error('Error:', error.message);
496
+ console.error('');
497
+ if (error.stack) {
498
+ console.error('Stack trace:');
499
+ console.error(error.stack);
500
+ console.error('');
501
+ }
502
+ console.error('This indicates a serious error in the application.');
503
+ console.error('The system will exit immediately to prevent data corruption.');
504
+ console.error('');
505
+ console.error('Please report this issue with the above details.');
506
+ process.exit(EXIT_CODES.GENERAL_ERROR);
507
+ });
508
+ // Handle process termination signals gracefully
509
+ process.on('SIGINT', async () => {
510
+ console.log('\n\nReceived SIGINT (Ctrl+C). Shutting down gracefully...');
511
+ console.log('If you need to force quit, press Ctrl+C again.');
512
+ // Clean up database connections before exit
513
+ try {
514
+ const { DatabaseConnectionManager } = await import('./core/database-connection-manager.js');
515
+ await DatabaseConnectionManager.closeAllConnections();
516
+ }
517
+ catch (error) {
518
+ // Ignore cleanup errors during shutdown
519
+ }
520
+ process.exit(EXIT_CODES.SUCCESS);
521
+ });
522
+ process.on('SIGTERM', async () => {
523
+ console.log('\n\nReceived SIGTERM. Shutting down gracefully...');
524
+ // Clean up database connections before exit
525
+ try {
526
+ const { DatabaseConnectionManager } = await import('./core/database-connection-manager.js');
527
+ await DatabaseConnectionManager.closeAllConnections();
528
+ }
529
+ catch (error) {
530
+ // Ignore cleanup errors during shutdown
531
+ }
532
+ process.exit(EXIT_CODES.SUCCESS);
533
+ });
534
+ // Run the CLI only if this file is executed directly
535
+ // In ES modules, we need to check import.meta.url instead of require.main
536
+ // Check if this file is being run directly
537
+ if (process.argv[1] === __filename || process.argv[1].endsWith('cli.js')) {
538
+ main().catch((error) => {
539
+ console.error('Fatal error:', error instanceof Error ? error.message : String(error));
540
+ if (error instanceof ConfigurationError) {
541
+ process.exit(error.exitCode);
542
+ }
543
+ else {
544
+ process.exit(EXIT_CODES.GENERAL_ERROR);
545
+ }
546
+ });
547
+ }
548
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Main configuration file with text-specific settings
3
+ * Extends core configuration with implementation-specific properties
4
+ */
5
+ import { CoreConfig } from './core/config.js';
6
+ /**
7
+ * Text-specific configuration properties
8
+ */
9
+ export interface TextConfig {
10
+ embedding_model: string;
11
+ rerank_enabled: boolean;
12
+ rerank_model: string;
13
+ preprocessing: {
14
+ enabled: boolean;
15
+ mdx: boolean;
16
+ mermaid: boolean;
17
+ code_blocks: boolean;
18
+ };
19
+ }
20
+ /**
21
+ * Complete configuration interface combining core and text-specific settings
22
+ */
23
+ export interface Config extends CoreConfig {
24
+ embedding_model: string;
25
+ rerank_enabled: boolean;
26
+ rerank_model: string;
27
+ preprocessing: {
28
+ enabled: boolean;
29
+ mdx: boolean;
30
+ mermaid: boolean;
31
+ code_blocks: boolean;
32
+ };
33
+ }
34
+ /**
35
+ * Default configuration object with both core and text-specific settings
36
+ */
37
+ export declare const config: Config;
38
+ export * from './core/config.js';
39
+ /**
40
+ * Validate complete configuration including text-specific settings
41
+ */
42
+ export declare function validateConfig(config: any): asserts config is Config;
43
+ /**
44
+ * Validate preprocessing configuration
45
+ */
46
+ export declare function validatePreprocessingConfig(config: any): boolean;
47
+ /**
48
+ * Merge preprocessing configurations
49
+ */
50
+ export declare function mergePreprocessingConfig(base: any, override: any): any;
51
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Main configuration file with text-specific settings
3
+ * Extends core configuration with implementation-specific properties
4
+ */
5
+ import { getDefaultModelCachePath } from './core/config.js';
6
+ import { createRequire } from 'module';
7
+ // Create require for CommonJS modules in ES module context
8
+ const require = createRequire(import.meta.url);
9
+ /**
10
+ * Default configuration object with both core and text-specific settings
11
+ */
12
+ export const config = {
13
+ // Core settings
14
+ chunk_size: parseInt(process.env.RAG_CHUNK_SIZE || '250', 10),
15
+ chunk_overlap: parseInt(process.env.RAG_CHUNK_OVERLAP || '50', 10),
16
+ batch_size: parseInt(process.env.RAG_BATCH_SIZE || '16', 10),
17
+ top_k: parseInt(process.env.RAG_TOP_K || '10', 10),
18
+ db_file: process.env.RAG_DB_FILE || 'db.sqlite',
19
+ index_file: process.env.RAG_INDEX_FILE || 'vector-index.bin',
20
+ model_cache_path: process.env.RAG_MODEL_CACHE_PATH || getDefaultModelCachePath(),
21
+ path_storage_strategy: process.env.RAG_PATH_STORAGE_STRATEGY || 'relative',
22
+ // Text-specific settings
23
+ embedding_model: process.env.RAG_EMBEDDING_MODEL || 'sentence-transformers/all-MiniLM-L6-v2',
24
+ rerank_enabled: process.env.RAG_RERANK_ENABLED !== 'false', // Default to true unless explicitly disabled
25
+ rerank_model: process.env.RAG_RERANK_MODEL || 'cross-encoder/ms-marco-MiniLM-L-6-v2',
26
+ // Preprocessing settings
27
+ preprocessing: {
28
+ enabled: process.env.RAG_PREPROCESSING_ENABLED !== 'false',
29
+ mdx: process.env.RAG_PREPROCESSING_MDX !== 'false',
30
+ mermaid: process.env.RAG_PREPROCESSING_MERMAID !== 'false',
31
+ code_blocks: process.env.RAG_PREPROCESSING_CODE_BLOCKS !== 'false'
32
+ }
33
+ };
34
+ // Re-export everything from core config
35
+ export * from './core/config.js';
36
+ /**
37
+ * Validate complete configuration including text-specific settings
38
+ */
39
+ export function validateConfig(config) {
40
+ // First validate core config
41
+ const { validateCoreConfig } = require('./core/config.js');
42
+ validateCoreConfig(config);
43
+ // Validate text-specific settings
44
+ if (!config.embedding_model || typeof config.embedding_model !== 'string') {
45
+ throw new Error('embedding_model must be a non-empty string');
46
+ }
47
+ if (typeof config.rerank_enabled !== 'boolean') {
48
+ throw new Error('rerank_enabled must be a boolean');
49
+ }
50
+ if (!config.rerank_model || typeof config.rerank_model !== 'string') {
51
+ throw new Error('rerank_model must be a non-empty string');
52
+ }
53
+ if (!config.preprocessing || typeof config.preprocessing !== 'object') {
54
+ throw new Error('preprocessing must be an object');
55
+ }
56
+ }
57
+ /**
58
+ * Validate preprocessing configuration
59
+ */
60
+ export function validatePreprocessingConfig(config) {
61
+ return config &&
62
+ typeof config === 'object' &&
63
+ typeof config.enabled === 'boolean' &&
64
+ typeof config.mdx === 'boolean' &&
65
+ typeof config.mermaid === 'boolean' &&
66
+ typeof config.code_blocks === 'boolean';
67
+ }
68
+ /**
69
+ * Merge preprocessing configurations
70
+ */
71
+ export function mergePreprocessingConfig(base, override) {
72
+ return {
73
+ enabled: override.enabled !== undefined ? override.enabled : base.enabled,
74
+ mdx: override.mdx !== undefined ? override.mdx : base.mdx,
75
+ mermaid: override.mermaid !== undefined ? override.mermaid : base.mermaid,
76
+ code_blocks: override.code_blocks !== undefined ? override.code_blocks : base.code_blocks
77
+ };
78
+ }
79
+ //# sourceMappingURL=config.js.map