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,256 @@
1
+ /**
2
+ * Knowledge Base Manager
3
+ *
4
+ * Provides a unified API for managing the knowledge base (database + vector index).
5
+ * This module is designed to solve file locking issues on Windows by using
6
+ * in-place reset operations instead of file deletion.
7
+ *
8
+ * Key Features:
9
+ * - Reset database and index without file deletion (avoids EBUSY/EACCES errors)
10
+ * - Coordinated reset of both database and index in a single operation
11
+ * - Connection management to prevent orphaned handles
12
+ * - Cross-platform compatibility (especially Windows)
13
+ *
14
+ * @module knowledge-base-manager
15
+ */
16
+ import { openDatabase, resetDatabase, hasDatabaseData } from './db.js';
17
+ import { IndexManager } from '../index-manager.js';
18
+ import { DatabaseConnectionManager } from './database-connection-manager.js';
19
+ import { getModelDefaults, config } from './config.js';
20
+ import { existsSync } from 'fs';
21
+ /**
22
+ * Knowledge Base Manager
23
+ *
24
+ * Manages the complete knowledge base lifecycle including database and vector index.
25
+ * Provides safe reset operations that avoid file locking issues on Windows.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Reset knowledge base for force rebuild
30
+ * const result = await KnowledgeBaseManager.reset('./db.sqlite', './index.bin');
31
+ * console.log(`Reset ${result.database.documentsDeleted} documents and ${result.index.vectorsCleared} vectors`);
32
+ *
33
+ * // Reset with options
34
+ * const result = await KnowledgeBaseManager.reset('./db.sqlite', './index.bin', {
35
+ * preserveSystemInfo: true, // Keep mode/model configuration
36
+ * modelName: 'all-MiniLM-L6-v2' // Specify model for index
37
+ * });
38
+ * ```
39
+ */
40
+ export class KnowledgeBaseManager {
41
+ /**
42
+ * Reset the knowledge base by clearing all data while keeping files intact.
43
+ * This is a safer alternative to file deletion that avoids file locking issues on Windows.
44
+ *
45
+ * The reset operation:
46
+ * 1. Closes any existing connections via DatabaseConnectionManager
47
+ * 2. Opens a fresh connection to the database
48
+ * 3. Deletes all rows from documents, chunks, content_metadata tables
49
+ * 4. Optionally runs VACUUM to reclaim disk space
50
+ * 5. Reinitializes the vector index (clears all vectors)
51
+ * 6. Saves the empty index to disk (overwrites existing file content)
52
+ *
53
+ * This approach works because:
54
+ * - We don't delete files, so no EBUSY/EACCES errors
55
+ * - The same file handles can be reused or replaced safely
56
+ * - SQLite transactions ensure data integrity
57
+ * - Index overwrite uses standard file write operations
58
+ *
59
+ * @param dbPath - Path to the SQLite database file
60
+ * @param indexPath - Path to the vector index file
61
+ * @param options - Reset options
62
+ * @returns Promise resolving to reset result statistics
63
+ *
64
+ * @throws Error if database or index reset fails
65
+ */
66
+ static async reset(dbPath, indexPath, options = {}) {
67
+ const startTime = Date.now();
68
+ const warnings = [];
69
+ console.log('🔄 Starting knowledge base reset...');
70
+ console.log(` Database: ${dbPath}`);
71
+ console.log(` Index: ${indexPath}`);
72
+ // Step 1: Close any existing managed connections to prevent conflicts
73
+ console.log('\n📡 Step 1: Closing existing connections...');
74
+ try {
75
+ if (DatabaseConnectionManager.hasConnection(dbPath)) {
76
+ await DatabaseConnectionManager.forceCloseConnection(dbPath);
77
+ console.log(' ✓ Closed existing database connection');
78
+ }
79
+ else {
80
+ console.log(' ✓ No existing connection to close');
81
+ }
82
+ }
83
+ catch (error) {
84
+ const warning = `Warning: Error closing existing connection: ${error instanceof Error ? error.message : 'Unknown error'}`;
85
+ warnings.push(warning);
86
+ console.warn(` ⚠️ ${warning}`);
87
+ }
88
+ // Small delay to ensure handles are fully released
89
+ await new Promise(resolve => setTimeout(resolve, 50));
90
+ // Step 2: Reset the database
91
+ console.log('\n💾 Step 2: Resetting database...');
92
+ let db = null;
93
+ let dbResetResult;
94
+ try {
95
+ // Open a fresh connection
96
+ db = await openDatabase(dbPath);
97
+ // Perform the reset
98
+ dbResetResult = await resetDatabase(db, {
99
+ preserveSystemInfo: options.preserveSystemInfo,
100
+ runVacuum: options.runVacuum
101
+ });
102
+ console.log(' ✓ Database reset complete');
103
+ }
104
+ catch (error) {
105
+ console.error(' ❌ Database reset failed:', error);
106
+ throw new Error(`Failed to reset database: ${error instanceof Error ? error.message : 'Unknown error'}`);
107
+ }
108
+ finally {
109
+ // Close the database connection
110
+ if (db) {
111
+ try {
112
+ await db.close();
113
+ }
114
+ catch (closeError) {
115
+ warnings.push(`Warning: Error closing database after reset: ${closeError}`);
116
+ }
117
+ }
118
+ }
119
+ // Step 3: Reset the vector index
120
+ console.log('\n📇 Step 3: Resetting vector index...');
121
+ let indexResetResult;
122
+ const indexStartTime = Date.now();
123
+ try {
124
+ // Determine model and dimensions
125
+ const modelName = options.modelName || config.embedding_model;
126
+ const modelDefaults = getModelDefaults(modelName);
127
+ // Check if index file exists
128
+ if (!existsSync(indexPath)) {
129
+ console.log(' Index file does not exist, will be created during ingestion');
130
+ indexResetResult = {
131
+ vectorsCleared: 0,
132
+ resetTimeMs: Date.now() - indexStartTime
133
+ };
134
+ }
135
+ else {
136
+ // Create IndexManager and reset
137
+ // We need to handle dimension mismatch gracefully since the user might be
138
+ // switching models (e.g., from MPNet 768D to MiniLM 384D)
139
+ const indexManager = new IndexManager(indexPath, dbPath, modelDefaults.dimensions, modelName);
140
+ let previousVectorCount = 0;
141
+ try {
142
+ // Try to initialize with forceRecreate=false first to get the vector count
143
+ // skipModelCheck=true since we're resetting anyway
144
+ await indexManager.initialize(true, false);
145
+ // Get current vector count before reset
146
+ previousVectorCount = (await indexManager.hasVectors()) ?
147
+ (await indexManager.getStats()).totalVectors : 0;
148
+ // Perform the reset
149
+ await indexManager.reset();
150
+ }
151
+ catch (initError) {
152
+ // If initialization failed (e.g., dimension mismatch), force recreate the index
153
+ // This handles the case where user is switching models
154
+ const errorMessage = initError?.message || String(initError);
155
+ if (errorMessage.includes('dimension mismatch') || errorMessage.includes('Vector dimension')) {
156
+ console.log(' ⚠️ Dimension mismatch detected - forcing index recreation');
157
+ console.log(' (This is expected when switching embedding models)');
158
+ // Create a fresh IndexManager and force recreate
159
+ const freshIndexManager = new IndexManager(indexPath, dbPath, modelDefaults.dimensions, modelName);
160
+ await freshIndexManager.initialize(true, true); // skipModelCheck=true, forceRecreate=true
161
+ await freshIndexManager.saveIndex();
162
+ await freshIndexManager.close();
163
+ // We don't know the previous count since we couldn't load the old index
164
+ // But we can estimate it was non-zero since the file existed
165
+ previousVectorCount = -1; // Indicate unknown
166
+ }
167
+ else {
168
+ // Re-throw other errors
169
+ throw initError;
170
+ }
171
+ }
172
+ // Close the index manager
173
+ await indexManager.close();
174
+ indexResetResult = {
175
+ vectorsCleared: previousVectorCount,
176
+ resetTimeMs: Date.now() - indexStartTime
177
+ };
178
+ console.log(' ✓ Index reset complete');
179
+ }
180
+ }
181
+ catch (error) {
182
+ console.error(' ❌ Index reset failed:', error);
183
+ throw new Error(`Failed to reset index: ${error instanceof Error ? error.message : 'Unknown error'}`);
184
+ }
185
+ const totalTimeMs = Date.now() - startTime;
186
+ // Summary
187
+ console.log('\n✅ Knowledge base reset complete!');
188
+ console.log(` Total time: ${totalTimeMs}ms`);
189
+ console.log(` Documents deleted: ${dbResetResult.documentsDeleted}`);
190
+ console.log(` Chunks deleted: ${dbResetResult.chunksDeleted}`);
191
+ console.log(` Vectors cleared: ${indexResetResult.vectorsCleared === -1 ? '(unknown - index recreated due to model change)' : indexResetResult.vectorsCleared}`);
192
+ if (warnings.length > 0) {
193
+ console.log(` Warnings: ${warnings.length}`);
194
+ }
195
+ return {
196
+ success: true,
197
+ database: dbResetResult,
198
+ index: indexResetResult,
199
+ totalTimeMs,
200
+ warnings
201
+ };
202
+ }
203
+ /**
204
+ * Check if the knowledge base has any data
205
+ *
206
+ * @param dbPath - Path to the SQLite database file
207
+ * @returns Promise resolving to true if database has data, false if empty
208
+ */
209
+ static async hasData(dbPath) {
210
+ let db = null;
211
+ try {
212
+ db = await openDatabase(dbPath);
213
+ return await hasDatabaseData(db);
214
+ }
215
+ catch (error) {
216
+ // If we can't open the database, assume no data
217
+ return false;
218
+ }
219
+ finally {
220
+ if (db) {
221
+ try {
222
+ await db.close();
223
+ }
224
+ catch {
225
+ // Ignore close errors
226
+ }
227
+ }
228
+ }
229
+ }
230
+ /**
231
+ * Close all connections to the knowledge base
232
+ * Useful before operations that might conflict with open handles
233
+ *
234
+ * @param dbPath - Path to the SQLite database file
235
+ */
236
+ static async closeAllConnections(dbPath) {
237
+ console.log('🔒 Closing all knowledge base connections...');
238
+ try {
239
+ if (DatabaseConnectionManager.hasConnection(dbPath)) {
240
+ await DatabaseConnectionManager.forceCloseConnection(dbPath);
241
+ }
242
+ // Also close WAL/SHM connections if they exist
243
+ const sidecars = [`${dbPath}-wal`, `${dbPath}-shm`];
244
+ for (const sidecar of sidecars) {
245
+ if (DatabaseConnectionManager.hasConnection(sidecar)) {
246
+ await DatabaseConnectionManager.forceCloseConnection(sidecar);
247
+ }
248
+ }
249
+ console.log('✓ All connections closed');
250
+ }
251
+ catch (error) {
252
+ console.warn('⚠️ Error closing connections:', error);
253
+ }
254
+ }
255
+ }
256
+ //# sourceMappingURL=knowledge-base-manager.js.map
@@ -0,0 +1,147 @@
1
+ /**
2
+ * CORE MODULE — Lazy Dependency Loading System
3
+ * Implements dynamic imports for multimodal-specific dependencies
4
+ * Ensures text mode performance is not impacted by multimodal code
5
+ *
6
+ * Requirements: 9.2 - Lazy loading for multimodal dependencies
7
+ */
8
+ import '../dom-polyfills.js';
9
+ import type { UniversalEmbedder } from './universal-embedder.js';
10
+ import type { RerankFunction } from './interfaces.js';
11
+ /**
12
+ * Lazy loader for embedder implementations
13
+ * Only loads the specific embedder type when needed
14
+ */
15
+ export declare class LazyEmbedderLoader {
16
+ private static cache;
17
+ /**
18
+ * Lazily load and create a sentence transformer embedder
19
+ * Only imports the module when actually needed for text mode
20
+ */
21
+ static loadSentenceTransformerEmbedder(modelName: string, options?: any): Promise<UniversalEmbedder>;
22
+ /**
23
+ * Lazily load and create a CLIP embedder
24
+ * Only imports the module when actually needed for multimodal mode
25
+ */
26
+ static loadCLIPEmbedder(modelName: string, options?: any): Promise<UniversalEmbedder>;
27
+ /**
28
+ * Check if an embedder is already loaded in cache
29
+ */
30
+ static isEmbedderLoaded(modelName: string, modelType: 'sentence-transformer' | 'clip'): boolean;
31
+ /**
32
+ * Remove an embedder from the cache (called when embedder is cleaned up)
33
+ */
34
+ static removeEmbedderFromCache(modelName: string, modelType: 'sentence-transformer' | 'clip'): void;
35
+ /**
36
+ * Get statistics about loaded embedders
37
+ */
38
+ static getLoadingStats(): {
39
+ loadedEmbedders: string[];
40
+ totalLoaded: number;
41
+ textEmbedders: number;
42
+ multimodalEmbedders: number;
43
+ };
44
+ }
45
+ /**
46
+ * Lazy loader for reranking implementations
47
+ * Only loads the specific reranker type when needed
48
+ */
49
+ export declare class LazyRerankerLoader {
50
+ private static cache;
51
+ /**
52
+ * Lazily load text reranker (cross-encoder)
53
+ * Always available for both text and multimodal modes
54
+ */
55
+ static loadTextReranker(): Promise<RerankFunction>;
56
+ /**
57
+ * Lazily load text-derived reranker for multimodal mode
58
+ * Only imports multimodal-specific dependencies when needed
59
+ */
60
+ static loadTextDerivedReranker(): Promise<RerankFunction>;
61
+ /**
62
+ * Lazily load CLIP AutoProcessor for consistent image preprocessing
63
+ * Shares processor instances across embedder instances to ensure identical preprocessing
64
+ */
65
+ static loadCLIPAutoProcessor(modelName: string): Promise<any>;
66
+ /**
67
+ * Check if a reranker is already loaded in cache
68
+ */
69
+ static isRerankerLoaded(strategy: string): boolean;
70
+ /**
71
+ * Get statistics about loaded rerankers
72
+ */
73
+ static getLoadingStats(): {
74
+ loadedRerankers: string[];
75
+ totalLoaded: number;
76
+ textRerankers: number;
77
+ multimodalRerankers: number;
78
+ };
79
+ }
80
+ /**
81
+ * Lazy loader for multimodal content processing
82
+ * Only loads image processing dependencies when needed
83
+ */
84
+ export declare class LazyMultimodalLoader {
85
+ private static cache;
86
+ /**
87
+ * Lazily load image-to-text processing capabilities
88
+ * Only imports when multimodal content processing is needed
89
+ */
90
+ static loadImageToTextProcessor(modelName?: string): Promise<any>;
91
+ /**
92
+ * Lazily load image metadata extraction capabilities
93
+ * Only imports Sharp when image metadata processing is needed
94
+ */
95
+ static loadImageMetadataExtractor(): Promise<any>;
96
+ /**
97
+ * Check if multimodal processing capabilities are loaded
98
+ */
99
+ static getMultimodalLoadingStatus(): {
100
+ imageToTextLoaded: boolean;
101
+ metadataExtractorLoaded: boolean;
102
+ loadedProcessors: string[];
103
+ };
104
+ }
105
+ /**
106
+ * Unified interface for all lazy loading operations
107
+ * Provides a single entry point for dependency management
108
+ */
109
+ export declare class LazyDependencyManager {
110
+ /**
111
+ * Load embedder based on model type with lazy loading
112
+ */
113
+ static loadEmbedder(modelName: string, modelType: 'sentence-transformer' | 'clip', options?: any): Promise<UniversalEmbedder>;
114
+ /**
115
+ * Load reranker based on strategy with lazy loading
116
+ */
117
+ static loadReranker(strategy: string): Promise<RerankFunction | undefined>;
118
+ /**
119
+ * Get comprehensive loading statistics
120
+ */
121
+ static getLoadingStatistics(): {
122
+ embedders: ReturnType<typeof LazyEmbedderLoader.getLoadingStats>;
123
+ rerankers: ReturnType<typeof LazyRerankerLoader.getLoadingStats>;
124
+ multimodal: ReturnType<typeof LazyMultimodalLoader.getMultimodalLoadingStatus>;
125
+ totalModulesLoaded: number;
126
+ memoryImpact: 'low' | 'medium' | 'high';
127
+ };
128
+ /**
129
+ * Clear all cached modules (for testing or memory management)
130
+ */
131
+ static clearCache(): void;
132
+ /**
133
+ * Check if system is running in text-only mode (no multimodal dependencies loaded)
134
+ */
135
+ static isTextOnlyMode(): boolean;
136
+ /**
137
+ * Get performance impact assessment
138
+ */
139
+ static getPerformanceImpact(): {
140
+ mode: 'text-only' | 'multimodal';
141
+ startupTime: 'fast' | 'medium' | 'slow';
142
+ memoryUsage: 'low' | 'medium' | 'high';
143
+ recommendations: string[];
144
+ };
145
+ }
146
+ export default LazyDependencyManager;
147
+ //# sourceMappingURL=lazy-dependency-loader.d.ts.map