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
@@ -892,4 +892,109 @@ export async function updateStorageStats(connection, stats) {
892
892
  throw new Error(`Failed to update storage stats: ${error instanceof Error ? error.message : 'Unknown error'}`);
893
893
  }
894
894
  }
895
+ /**
896
+ * Reset the database by deleting all data while keeping the schema intact.
897
+ * This is a safer alternative to file deletion that avoids file locking issues on Windows.
898
+ *
899
+ * This function:
900
+ * 1. Deletes all rows from chunks, documents, content_metadata tables
901
+ * 2. Optionally clears system_info (mode/model configuration)
902
+ * 3. Resets storage_stats counters
903
+ * 4. Optionally runs VACUUM to reclaim disk space
904
+ *
905
+ * @param connection - Database connection object
906
+ * @param options - Reset options
907
+ * @returns Promise resolving to reset result statistics
908
+ *
909
+ * @example
910
+ * ```typescript
911
+ * const db = await openDatabase('./db.sqlite');
912
+ * const result = await resetDatabase(db, { preserveSystemInfo: false });
913
+ * console.log(`Deleted ${result.documentsDeleted} documents and ${result.chunksDeleted} chunks`);
914
+ * ```
915
+ */
916
+ export async function resetDatabase(connection, options = {}) {
917
+ const startTime = Date.now();
918
+ const { preserveSystemInfo = false, runVacuum = true } = options;
919
+ try {
920
+ console.log('🔄 Starting database reset...');
921
+ // Get counts before deletion for reporting
922
+ const docCountResult = await connection.get('SELECT COUNT(*) as count FROM documents');
923
+ const chunkCountResult = await connection.get('SELECT COUNT(*) as count FROM chunks');
924
+ const contentMetadataCountResult = await connection.get('SELECT COUNT(*) as count FROM content_metadata');
925
+ const documentsDeleted = docCountResult?.count || 0;
926
+ const chunksDeleted = chunkCountResult?.count || 0;
927
+ const contentMetadataDeleted = contentMetadataCountResult?.count || 0;
928
+ // Delete in order respecting foreign key constraints
929
+ // chunks → documents → content_metadata (chunks reference documents, documents reference content_metadata)
930
+ console.log(' Deleting chunks...');
931
+ await connection.run('DELETE FROM chunks');
932
+ console.log(' Deleting documents...');
933
+ await connection.run('DELETE FROM documents');
934
+ console.log(' Deleting content_metadata...');
935
+ await connection.run('DELETE FROM content_metadata');
936
+ // Reset storage_stats counters
937
+ console.log(' Resetting storage_stats...');
938
+ await connection.run(`
939
+ UPDATE storage_stats SET
940
+ content_dir_files = 0,
941
+ content_dir_size = 0,
942
+ filesystem_refs = 0,
943
+ updated_at = CURRENT_TIMESTAMP
944
+ WHERE id = 1
945
+ `);
946
+ // Optionally clear system_info
947
+ let systemInfoCleared = false;
948
+ if (!preserveSystemInfo) {
949
+ console.log(' Clearing system_info...');
950
+ await connection.run('DELETE FROM system_info WHERE id = 1');
951
+ systemInfoCleared = true;
952
+ }
953
+ else {
954
+ console.log(' Preserving system_info (mode/model configuration)');
955
+ }
956
+ // Run VACUUM to reclaim disk space
957
+ if (runVacuum) {
958
+ console.log(' Running VACUUM to reclaim disk space...');
959
+ await connection.run('VACUUM');
960
+ }
961
+ const resetTimeMs = Date.now() - startTime;
962
+ console.log(`✓ Database reset complete in ${resetTimeMs}ms`);
963
+ console.log(` Documents deleted: ${documentsDeleted}`);
964
+ console.log(` Chunks deleted: ${chunksDeleted}`);
965
+ console.log(` Content metadata deleted: ${contentMetadataDeleted}`);
966
+ console.log(` System info cleared: ${systemInfoCleared}`);
967
+ return {
968
+ success: true,
969
+ documentsDeleted,
970
+ chunksDeleted,
971
+ contentMetadataDeleted,
972
+ systemInfoCleared,
973
+ resetTimeMs
974
+ };
975
+ }
976
+ catch (error) {
977
+ const resetTimeMs = Date.now() - startTime;
978
+ console.error(`❌ Database reset failed after ${resetTimeMs}ms:`, error);
979
+ throw new Error(`Failed to reset database: ${error instanceof Error ? error.message : 'Unknown error'}`);
980
+ }
981
+ }
982
+ /**
983
+ * Check if the database has any data (documents, chunks, or content)
984
+ * Useful for determining if a reset is needed
985
+ *
986
+ * @param connection - Database connection object
987
+ * @returns Promise resolving to true if database has data, false if empty
988
+ */
989
+ export async function hasDatabaseData(connection) {
990
+ try {
991
+ const docCount = await connection.get('SELECT COUNT(*) as count FROM documents');
992
+ const chunkCount = await connection.get('SELECT COUNT(*) as count FROM chunks');
993
+ return (docCount?.count || 0) > 0 || (chunkCount?.count || 0) > 0;
994
+ }
995
+ catch (error) {
996
+ // If tables don't exist, consider it empty
997
+ return false;
998
+ }
999
+ }
895
1000
  //# sourceMappingURL=db.js.map
@@ -340,6 +340,9 @@ export class IngestionPipeline {
340
340
  // Phase 5: Vector Index Updates
341
341
  console.log('\n--- Phase 5: Vector Index Updates ---');
342
342
  await this.updateVectorIndex(embeddingResult.embeddings);
343
+ // Final save to ensure all vectors are persisted
344
+ console.log('Performing final index save...');
345
+ await this.indexManager.saveIndex();
343
346
  const endTime = Date.now();
344
347
  const processingTimeMs = endTime - startTime;
345
348
  const result = {
@@ -0,0 +1,109 @@
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 { type DatabaseResetResult } from './db.js';
17
+ /**
18
+ * Result of a knowledge base reset operation
19
+ */
20
+ export interface KnowledgeBaseResetResult {
21
+ /** Whether the overall reset was successful */
22
+ success: boolean;
23
+ /** Database reset result */
24
+ database: DatabaseResetResult;
25
+ /** Index reset statistics */
26
+ index: {
27
+ /** Number of vectors cleared */
28
+ vectorsCleared: number;
29
+ /** Time taken for index reset in milliseconds */
30
+ resetTimeMs: number;
31
+ };
32
+ /** Total time for the complete reset operation */
33
+ totalTimeMs: number;
34
+ /** Any warnings that occurred during reset */
35
+ warnings: string[];
36
+ }
37
+ /**
38
+ * Options for knowledge base reset operation
39
+ */
40
+ export interface KnowledgeBaseResetOptions {
41
+ /** Whether to preserve system_info (mode, model configuration) - default: false */
42
+ preserveSystemInfo?: boolean;
43
+ /** Whether to run VACUUM after database reset - default: true */
44
+ runVacuum?: boolean;
45
+ /** Model name to use for index recreation - default: from config */
46
+ modelName?: string;
47
+ }
48
+ /**
49
+ * Knowledge Base Manager
50
+ *
51
+ * Manages the complete knowledge base lifecycle including database and vector index.
52
+ * Provides safe reset operations that avoid file locking issues on Windows.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * // Reset knowledge base for force rebuild
57
+ * const result = await KnowledgeBaseManager.reset('./db.sqlite', './index.bin');
58
+ * console.log(`Reset ${result.database.documentsDeleted} documents and ${result.index.vectorsCleared} vectors`);
59
+ *
60
+ * // Reset with options
61
+ * const result = await KnowledgeBaseManager.reset('./db.sqlite', './index.bin', {
62
+ * preserveSystemInfo: true, // Keep mode/model configuration
63
+ * modelName: 'all-MiniLM-L6-v2' // Specify model for index
64
+ * });
65
+ * ```
66
+ */
67
+ export declare class KnowledgeBaseManager {
68
+ /**
69
+ * Reset the knowledge base by clearing all data while keeping files intact.
70
+ * This is a safer alternative to file deletion that avoids file locking issues on Windows.
71
+ *
72
+ * The reset operation:
73
+ * 1. Closes any existing connections via DatabaseConnectionManager
74
+ * 2. Opens a fresh connection to the database
75
+ * 3. Deletes all rows from documents, chunks, content_metadata tables
76
+ * 4. Optionally runs VACUUM to reclaim disk space
77
+ * 5. Reinitializes the vector index (clears all vectors)
78
+ * 6. Saves the empty index to disk (overwrites existing file content)
79
+ *
80
+ * This approach works because:
81
+ * - We don't delete files, so no EBUSY/EACCES errors
82
+ * - The same file handles can be reused or replaced safely
83
+ * - SQLite transactions ensure data integrity
84
+ * - Index overwrite uses standard file write operations
85
+ *
86
+ * @param dbPath - Path to the SQLite database file
87
+ * @param indexPath - Path to the vector index file
88
+ * @param options - Reset options
89
+ * @returns Promise resolving to reset result statistics
90
+ *
91
+ * @throws Error if database or index reset fails
92
+ */
93
+ static reset(dbPath: string, indexPath: string, options?: KnowledgeBaseResetOptions): Promise<KnowledgeBaseResetResult>;
94
+ /**
95
+ * Check if the knowledge base has any data
96
+ *
97
+ * @param dbPath - Path to the SQLite database file
98
+ * @returns Promise resolving to true if database has data, false if empty
99
+ */
100
+ static hasData(dbPath: string): Promise<boolean>;
101
+ /**
102
+ * Close all connections to the knowledge base
103
+ * Useful before operations that might conflict with open handles
104
+ *
105
+ * @param dbPath - Path to the SQLite database file
106
+ */
107
+ static closeAllConnections(dbPath: string): Promise<void>;
108
+ }
109
+ //# sourceMappingURL=knowledge-base-manager.d.ts.map
@@ -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
@@ -105,7 +105,7 @@ export class ModelValidator {
105
105
  }
106
106
  // Fallback: try to detect from package.json import
107
107
  try {
108
- const packageInfo = await import('@huggingface/transformers/package.json');
108
+ const packageInfo = await import('@huggingface/transformers/package.json' + '');
109
109
  if (packageInfo.version) {
110
110
  this.currentTransformersVersion = packageInfo.version;
111
111
  return packageInfo.version;
@@ -123,7 +123,7 @@ export class SearchPipelineCoordinator {
123
123
  throw new Error('Index manager not set. Set index manager before executing pipeline.');
124
124
  }
125
125
  try {
126
- return this.indexManager.search(queryVector, topK);
126
+ return await this.indexManager.search(queryVector, topK);
127
127
  }
128
128
  catch (error) {
129
129
  if (error instanceof Error && error.message.includes('No embedding ID found for hash')) {
@@ -140,7 +140,7 @@ export class SearchEngine {
140
140
  let searchResult;
141
141
  try {
142
142
  const contentType = options.contentType;
143
- searchResult = this.indexManager.search(queryVector, topK, contentType);
143
+ searchResult = await this.indexManager.search(queryVector, topK, contentType);
144
144
  }
145
145
  catch (error) {
146
146
  if (error instanceof Error && error.message.includes('No embedding ID found for hash')) {
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Message protocol for VectorIndex worker thread communication
3
+ */
4
+ export interface VectorIndexRequest {
5
+ id: number;
6
+ type: 'init' | 'loadIndex' | 'saveIndex' | 'addVector' | 'addVectors' | 'search' | 'getCurrentCount' | 'resizeIndex' | 'reset' | 'cleanup' | 'indexExists' | 'setEf';
7
+ payload?: any;
8
+ }
9
+ export interface VectorIndexResponse {
10
+ id: number;
11
+ type: 'success' | 'error';
12
+ payload?: any;
13
+ error?: string;
14
+ }
15
+ export interface InitPayload {
16
+ dimensions: number;
17
+ maxElements: number;
18
+ M?: number;
19
+ efConstruction?: number;
20
+ seed?: number;
21
+ indexPath: string;
22
+ }
23
+ export interface LoadIndexPayload {
24
+ indexPath: string;
25
+ }
26
+ export interface AddVectorPayload {
27
+ id: number;
28
+ vector: ArrayBuffer;
29
+ dimensions: number;
30
+ }
31
+ export interface AddVectorsPayload {
32
+ vectors: Array<{
33
+ id: number;
34
+ vector: ArrayBuffer;
35
+ dimensions: number;
36
+ }>;
37
+ }
38
+ export interface SearchPayload {
39
+ queryVector: ArrayBuffer;
40
+ dimensions: number;
41
+ k: number;
42
+ }
43
+ export interface ResizeIndexPayload {
44
+ newMaxElements: number;
45
+ }
46
+ export interface SetEfPayload {
47
+ ef: number;
48
+ }
49
+ export interface IndexExistsPayload {
50
+ indexPath: string;
51
+ }
52
+ //# sourceMappingURL=vector-index-messages.d.ts.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Message protocol for VectorIndex worker thread communication
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=vector-index-messages.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Worker thread for VectorIndex operations
3
+ * Isolates hnswlib-wasm WebAssembly memory to prevent accumulation
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=vector-index-worker.d.ts.map