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,410 @@
1
+ /**
2
+ * Simple Reranking Creation Function
3
+ *
4
+ * Implements createReranker function with simple conditional logic and automatic
5
+ * fallback mechanism for failed strategy initialization. Follows the design
6
+ * principle of using simple functions over complex factory patterns.
7
+ */
8
+ import { getDefaultRerankingConfig, isStrategySupported, getSupportedStrategies, validateRerankingConfig } from './reranking-config.js';
9
+ import { createCrossEncoderRerankFunction, createTextDerivedRerankFunction } from './reranking-strategies.js';
10
+ /**
11
+ * Simple reranking creation function with conditional logic
12
+ *
13
+ * Creates appropriate reranking function based on mode and strategy with
14
+ * automatic fallback mechanism for failed strategy initialization.
15
+ *
16
+ * @param mode - Operating mode ('text' or 'multimodal')
17
+ * @param strategy - Desired reranking strategy
18
+ * @param config - Optional configuration for the strategy
19
+ * @returns RerankFunction or undefined if reranking is disabled
20
+ */
21
+ export function createReranker(mode, strategy, config) {
22
+ const startTime = Date.now();
23
+ try {
24
+ console.log(`🚀 Starting reranker creation for ${mode} mode`);
25
+ // Use default strategy for mode if not specified
26
+ if (!strategy) {
27
+ const defaultConfig = getDefaultRerankingConfig(mode);
28
+ strategy = defaultConfig.strategy;
29
+ console.log(`Using default strategy for ${mode} mode: ${strategy}`);
30
+ }
31
+ // Return undefined immediately for disabled strategy
32
+ if (strategy === 'disabled') {
33
+ console.log('Reranking disabled by configuration');
34
+ return undefined;
35
+ }
36
+ // Validate strategy is supported for the mode
37
+ if (!isStrategySupported(strategy, mode)) {
38
+ const supportedStrategies = getSupportedStrategies(mode);
39
+ throw new Error(`Strategy '${strategy}' not supported for ${mode} mode. ` +
40
+ `Supported strategies: ${supportedStrategies.join(', ')}`);
41
+ }
42
+ // Validate and merge configuration
43
+ let validatedConfig;
44
+ try {
45
+ validatedConfig = config ? validateRerankingConfig({
46
+ strategy,
47
+ ...config
48
+ }) : getDefaultRerankingConfig(mode);
49
+ }
50
+ catch (configError) {
51
+ console.warn(`⚠️ Configuration validation failed: ${configError instanceof Error ? configError.message : 'Unknown error'}. ` +
52
+ `Using default configuration.`);
53
+ validatedConfig = getDefaultRerankingConfig(mode);
54
+ validatedConfig.strategy = strategy; // Keep the requested strategy
55
+ }
56
+ // Create reranking function based on strategy with enhanced error handling
57
+ const reranker = createRerankingFunction(mode, strategy, validatedConfig);
58
+ const duration = Date.now() - startTime;
59
+ if (reranker) {
60
+ console.log(`✅ Reranker creation completed successfully (${duration}ms)`);
61
+ }
62
+ else {
63
+ console.log(`ℹ️ Reranker creation completed - reranking disabled (${duration}ms)`);
64
+ }
65
+ return reranker;
66
+ }
67
+ catch (error) {
68
+ const duration = Date.now() - startTime;
69
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
70
+ console.error(`❌ Failed to create reranker with strategy '${strategy}' for ${mode} mode (${duration}ms): ${errorMessage}`);
71
+ // Log error details for debugging
72
+ if (error instanceof RerankingStrategyError) {
73
+ console.error('Detailed error information:', {
74
+ strategy: error.strategy,
75
+ mode: error.mode,
76
+ errorCode: error.errorCode,
77
+ message: error.message
78
+ });
79
+ }
80
+ throw error;
81
+ }
82
+ }
83
+ /**
84
+ * Create reranking function for specific strategy with enhanced error handling and recovery
85
+ */
86
+ function createRerankingFunction(mode, strategy, config) {
87
+ const startTime = Date.now();
88
+ try {
89
+ logRerankingAttempt(mode, strategy, config);
90
+ let reranker;
91
+ switch (strategy) {
92
+ case 'cross-encoder':
93
+ console.log(`Creating cross-encoder reranker for ${mode} mode`);
94
+ reranker = createCrossEncoderRerankFunction(config.model);
95
+ break;
96
+ case 'text-derived':
97
+ if (mode !== 'multimodal') {
98
+ throw new RerankingStrategyError(strategy, mode, 'Text-derived strategy only supported in multimodal mode', 'UNSUPPORTED_MODE');
99
+ }
100
+ console.log('Creating text-derived reranker for multimodal mode');
101
+ reranker = createTextDerivedRerankFunction(config.model, // Image-to-text model
102
+ undefined // Use default cross-encoder model
103
+ );
104
+ break;
105
+ case 'disabled':
106
+ console.log('Reranking explicitly disabled');
107
+ return undefined;
108
+ default:
109
+ throw new RerankingStrategyError(strategy, mode, `Unknown reranking strategy: ${strategy}`, 'UNKNOWN_STRATEGY');
110
+ }
111
+ // Validate that reranker was created successfully
112
+ if (!reranker) {
113
+ throw new RerankingStrategyError(strategy, mode, `Strategy '${strategy}' returned undefined reranker`, 'CREATION_FAILED');
114
+ }
115
+ // Wrap reranker with error recovery
116
+ const wrappedReranker = wrapRerankFunctionWithErrorRecovery(reranker, strategy, mode);
117
+ const duration = Date.now() - startTime;
118
+ console.log(`✅ Successfully created ${strategy} reranker for ${mode} mode (${duration}ms)`);
119
+ return wrappedReranker;
120
+ }
121
+ catch (error) {
122
+ const duration = Date.now() - startTime;
123
+ const rerankingError = error instanceof RerankingStrategyError
124
+ ? error
125
+ : new RerankingStrategyError(strategy, mode, error instanceof Error ? error.message : 'Unknown error', 'CREATION_ERROR');
126
+ logRerankingError(rerankingError, duration);
127
+ throw rerankingError;
128
+ }
129
+ }
130
+ /**
131
+ * Custom error class for reranking strategy failures
132
+ */
133
+ class RerankingStrategyError extends Error {
134
+ strategy;
135
+ mode;
136
+ errorCode;
137
+ constructor(strategy, mode, message, errorCode) {
138
+ super(message);
139
+ this.strategy = strategy;
140
+ this.mode = mode;
141
+ this.errorCode = errorCode;
142
+ this.name = 'RerankingStrategyError';
143
+ }
144
+ }
145
+ /**
146
+ * Log reranking attempt details
147
+ */
148
+ function logRerankingAttempt(mode, strategy, config) {
149
+ console.log(`🔧 Creating reranker: ${strategy} (mode: ${mode})`);
150
+ if (config.model) {
151
+ console.log(` Model: ${config.model}`);
152
+ }
153
+ if (config.weights) {
154
+ console.log(` Weights: ${JSON.stringify(config.weights)}`);
155
+ }
156
+ if (config.fallback && config.fallback !== 'disabled') {
157
+ console.log(` Fallback: ${config.fallback}`);
158
+ }
159
+ }
160
+ /**
161
+ * Log comprehensive reranking error details
162
+ */
163
+ function logRerankingError(error, duration) {
164
+ console.error('❌ Reranking Strategy Creation Failed');
165
+ console.error(` Strategy: ${error.strategy}`);
166
+ console.error(` Mode: ${error.mode}`);
167
+ console.error(` Error Code: ${error.errorCode}`);
168
+ console.error(` Duration: ${duration}ms`);
169
+ console.error(` Message: ${error.message}`);
170
+ // Provide troubleshooting guidance based on error type
171
+ switch (error.errorCode) {
172
+ case 'UNSUPPORTED_MODE':
173
+ console.error('💡 Suggestion: Use a strategy supported by the current mode');
174
+ break;
175
+ case 'UNKNOWN_STRATEGY':
176
+ console.error('💡 Suggestion: Check strategy name spelling and supported strategies');
177
+ break;
178
+ case 'CREATION_FAILED':
179
+ console.error('💡 Suggestion: Check model availability and network connectivity');
180
+ break;
181
+ case 'CREATION_ERROR':
182
+ console.error('💡 Suggestion: Check logs above for specific model loading errors');
183
+ break;
184
+ }
185
+ }
186
+ /**
187
+ * Wrap rerank function with error recovery to ensure search operations continue
188
+ */
189
+ function wrapRerankFunctionWithErrorRecovery(reranker, strategy, mode) {
190
+ return async (query, results, contentType) => {
191
+ try {
192
+ const startTime = Date.now();
193
+ const rerankedResults = await reranker(query, results, contentType);
194
+ const duration = Date.now() - startTime;
195
+ console.log(`✅ ${strategy} reranking completed successfully (${duration}ms, ${results.length} → ${rerankedResults.length} results)`);
196
+ return rerankedResults;
197
+ }
198
+ catch (error) {
199
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
200
+ console.warn(`⚠️ ${strategy} reranking failed during execution: ${errorMessage}. ` +
201
+ `Falling back to vector similarity scores.`);
202
+ // Log detailed error information for debugging
203
+ console.error('Reranking execution error details:', {
204
+ strategy,
205
+ mode,
206
+ query: query.substring(0, 100) + (query.length > 100 ? '...' : ''),
207
+ resultCount: results.length,
208
+ contentType,
209
+ error: errorMessage
210
+ });
211
+ // Return original results with vector similarity scores
212
+ // This ensures search operations continue even when reranking fails
213
+ return results.map(result => ({
214
+ ...result,
215
+ metadata: {
216
+ ...result.metadata,
217
+ rerankingFailed: true,
218
+ rerankingError: errorMessage,
219
+ rerankingStrategy: strategy,
220
+ fallbackToVectorSimilarity: true
221
+ }
222
+ }));
223
+ }
224
+ };
225
+ }
226
+ /**
227
+ * Hybrid reranking strategy removed in Phase 3 - throwing error for backward compatibility
228
+ */
229
+ function createHybridRerankFunction(config) {
230
+ throw new RerankingStrategyError('hybrid', 'multimodal', 'Hybrid reranking strategy has been removed in this version. Use text-derived instead.', 'STRATEGY_REMOVED');
231
+ }
232
+ /**
233
+ * Create reranker with automatic mode detection
234
+ *
235
+ * This is a convenience function that automatically detects the appropriate
236
+ * default strategy based on mode and creates the reranker.
237
+ *
238
+ * @param mode - Operating mode ('text' or 'multimodal')
239
+ * @param config - Optional configuration override
240
+ * @returns RerankFunction or undefined if reranking is disabled
241
+ */
242
+ export function createDefaultReranker(mode, config) {
243
+ const defaultConfig = getDefaultRerankingConfig(mode);
244
+ const strategy = config?.strategy || defaultConfig.strategy;
245
+ console.log(`Creating default reranker for ${mode} mode with ${strategy} strategy`);
246
+ return createReranker(mode, strategy, config);
247
+ }
248
+ /**
249
+ * Check if reranking is available for a given mode and strategy
250
+ *
251
+ * This function can be used to test if a reranking strategy can be created
252
+ * without actually creating it.
253
+ *
254
+ * @param mode - Operating mode ('text' or 'multimodal')
255
+ * @param strategy - Reranking strategy to test
256
+ * @returns Promise<boolean> indicating if the strategy is available
257
+ */
258
+ export async function isRerankingAvailable(mode, strategy) {
259
+ try {
260
+ if (!strategy) {
261
+ const defaultConfig = getDefaultRerankingConfig(mode);
262
+ strategy = defaultConfig.strategy;
263
+ }
264
+ if (strategy === 'disabled') {
265
+ return false;
266
+ }
267
+ if (!isStrategySupported(strategy, mode)) {
268
+ return false;
269
+ }
270
+ // Try to create the reranker to test availability
271
+ const reranker = createReranker(mode, strategy);
272
+ return reranker !== undefined;
273
+ }
274
+ catch (error) {
275
+ console.warn(`Reranking availability check failed for ${strategy} in ${mode} mode: ` +
276
+ `${error instanceof Error ? error.message : 'Unknown error'}`);
277
+ return false;
278
+ }
279
+ }
280
+ /**
281
+ * Get comprehensive information about available reranking strategies for a mode
282
+ *
283
+ * @param mode - Operating mode ('text' or 'multimodal')
284
+ * @returns Object with strategy information and availability
285
+ */
286
+ export async function getRerankingInfo(mode) {
287
+ const supportedStrategies = getSupportedStrategies(mode);
288
+ const defaultConfig = getDefaultRerankingConfig(mode);
289
+ const strategyInfo = await Promise.all(supportedStrategies.map(async (strategy) => {
290
+ const startTime = Date.now();
291
+ let available = false;
292
+ let error;
293
+ try {
294
+ available = await isRerankingAvailable(mode, strategy);
295
+ }
296
+ catch (e) {
297
+ error = e instanceof Error ? e.message : 'Unknown error';
298
+ }
299
+ const duration = Date.now() - startTime;
300
+ return {
301
+ strategy,
302
+ supported: true,
303
+ available,
304
+ isDefault: strategy === defaultConfig.strategy,
305
+ checkDuration: duration,
306
+ error
307
+ };
308
+ }));
309
+ return {
310
+ mode,
311
+ defaultStrategy: defaultConfig.strategy,
312
+ strategies: strategyInfo,
313
+ hasAvailableStrategies: strategyInfo.some(info => info.available)
314
+ };
315
+ }
316
+ /**
317
+ * Test reranking system health and error recovery
318
+ *
319
+ * @param mode - Operating mode to test
320
+ * @returns Comprehensive health report
321
+ */
322
+ export async function testRerankingHealth(mode) {
323
+ console.log(`🔍 Testing reranking system health for ${mode} mode`);
324
+ const supportedStrategies = getSupportedStrategies(mode);
325
+ const defaultConfig = getDefaultRerankingConfig(mode);
326
+ const strategyTests = [];
327
+ let defaultStrategyWorking = false;
328
+ let anyStrategyWorking = false;
329
+ // Test each supported strategy
330
+ for (const strategy of supportedStrategies) {
331
+ if (strategy === 'disabled')
332
+ continue;
333
+ const startTime = Date.now();
334
+ let success = false;
335
+ let error;
336
+ try {
337
+ const reranker = createReranker(mode, strategy);
338
+ success = reranker !== undefined;
339
+ if (success && strategy === defaultConfig.strategy) {
340
+ defaultStrategyWorking = true;
341
+ }
342
+ if (success) {
343
+ anyStrategyWorking = true;
344
+ }
345
+ }
346
+ catch (e) {
347
+ error = e instanceof Error ? e.message : 'Unknown error';
348
+ }
349
+ const duration = Date.now() - startTime;
350
+ strategyTests.push({ strategy, success, duration, error });
351
+ }
352
+ // Fallback system removed - no longer testing fallback functionality
353
+ let fallbackSystemWorking = true; // Always true since we don't use fallbacks anymore
354
+ // Determine overall health
355
+ let overallHealth;
356
+ if (defaultStrategyWorking) {
357
+ overallHealth = 'healthy';
358
+ }
359
+ else if (anyStrategyWorking || fallbackSystemWorking) {
360
+ overallHealth = 'degraded';
361
+ }
362
+ else {
363
+ overallHealth = 'failed';
364
+ }
365
+ // Generate recommendations
366
+ const recommendations = [];
367
+ if (!defaultStrategyWorking) {
368
+ recommendations.push(`Default strategy '${defaultConfig.strategy}' is not working. Check model availability.`);
369
+ }
370
+ if (!anyStrategyWorking) {
371
+ recommendations.push('No reranking strategies are working. Check network connectivity and model availability.');
372
+ }
373
+ else if (!fallbackSystemWorking) {
374
+ recommendations.push('Fallback system is not working properly. Manual intervention may be required.');
375
+ }
376
+ if (overallHealth === 'degraded') {
377
+ recommendations.push('System is running in degraded mode. Some reranking strategies are unavailable.');
378
+ }
379
+ if (overallHealth === 'healthy') {
380
+ recommendations.push('Reranking system is healthy and all strategies are working properly.');
381
+ }
382
+ console.log(`🏥 Health check completed: ${overallHealth} (${strategyTests.filter(t => t.success).length}/${strategyTests.length} strategies working)`);
383
+ return {
384
+ mode,
385
+ overallHealth,
386
+ defaultStrategyWorking,
387
+ fallbackSystemWorking,
388
+ strategyTests,
389
+ recommendations
390
+ };
391
+ }
392
+ /**
393
+ * Get reranking system statistics and performance metrics
394
+ */
395
+ export function getRerankingStats() {
396
+ // This would be implemented with actual metrics collection in a real system
397
+ // For now, return placeholder data
398
+ return {
399
+ totalCreationAttempts: 0,
400
+ successfulCreations: 0,
401
+ failedCreations: 0,
402
+ fallbacksTriggered: 0,
403
+ strategiesUsed: {
404
+ 'cross-encoder': 0,
405
+ 'text-derived': 0,
406
+ 'disabled': 0
407
+ }
408
+ };
409
+ }
410
+ //# sourceMappingURL=reranking-factory.js.map