rag-lite-ts 2.1.1 → 2.2.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 (309) hide show
  1. package/dist/{core → cjs/core}/model-validator.js +1 -1
  2. package/dist/{core → cjs/core}/vector-index.js +4 -2
  3. package/dist/esm/api-errors.d.ts +90 -0
  4. package/dist/esm/api-errors.js +320 -0
  5. package/dist/esm/cli/indexer.d.ts +11 -0
  6. package/dist/esm/cli/indexer.js +471 -0
  7. package/dist/esm/cli/search.d.ts +7 -0
  8. package/dist/esm/cli/search.js +332 -0
  9. package/dist/esm/cli.d.ts +3 -0
  10. package/dist/esm/cli.js +529 -0
  11. package/dist/esm/config.d.ts +51 -0
  12. package/dist/esm/config.js +79 -0
  13. package/dist/esm/core/abstract-embedder.d.ts +125 -0
  14. package/dist/esm/core/abstract-embedder.js +264 -0
  15. package/dist/esm/core/actionable-error-messages.d.ts +60 -0
  16. package/dist/esm/core/actionable-error-messages.js +397 -0
  17. package/dist/esm/core/adapters.d.ts +93 -0
  18. package/dist/esm/core/adapters.js +139 -0
  19. package/dist/esm/core/batch-processing-optimizer.d.ts +155 -0
  20. package/dist/esm/core/batch-processing-optimizer.js +536 -0
  21. package/dist/esm/core/binary-index-format.d.ts +78 -0
  22. package/dist/esm/core/binary-index-format.js +291 -0
  23. package/dist/esm/core/chunker.d.ts +119 -0
  24. package/dist/esm/core/chunker.js +73 -0
  25. package/dist/esm/core/cli-database-utils.d.ts +53 -0
  26. package/dist/esm/core/cli-database-utils.js +239 -0
  27. package/dist/esm/core/config.d.ts +102 -0
  28. package/dist/esm/core/config.js +247 -0
  29. package/dist/esm/core/content-errors.d.ts +111 -0
  30. package/dist/esm/core/content-errors.js +362 -0
  31. package/dist/esm/core/content-manager.d.ts +335 -0
  32. package/dist/esm/core/content-manager.js +1476 -0
  33. package/dist/esm/core/content-performance-optimizer.d.ts +150 -0
  34. package/dist/esm/core/content-performance-optimizer.js +516 -0
  35. package/dist/esm/core/content-resolver.d.ts +104 -0
  36. package/dist/esm/core/content-resolver.js +285 -0
  37. package/dist/esm/core/cross-modal-search.d.ts +164 -0
  38. package/dist/esm/core/cross-modal-search.js +342 -0
  39. package/dist/esm/core/database-connection-manager.d.ts +109 -0
  40. package/dist/esm/core/database-connection-manager.js +310 -0
  41. package/dist/esm/core/db.d.ts +213 -0
  42. package/dist/esm/core/db.js +895 -0
  43. package/dist/esm/core/embedder-factory.d.ts +154 -0
  44. package/dist/esm/core/embedder-factory.js +311 -0
  45. package/dist/esm/core/error-handler.d.ts +112 -0
  46. package/dist/esm/core/error-handler.js +239 -0
  47. package/dist/esm/core/index.d.ts +59 -0
  48. package/dist/esm/core/index.js +69 -0
  49. package/dist/esm/core/ingestion.d.ts +202 -0
  50. package/dist/esm/core/ingestion.js +901 -0
  51. package/dist/esm/core/interfaces.d.ts +408 -0
  52. package/dist/esm/core/interfaces.js +106 -0
  53. package/dist/esm/core/lazy-dependency-loader.d.ts +147 -0
  54. package/dist/esm/core/lazy-dependency-loader.js +435 -0
  55. package/dist/esm/core/mode-detection-service.d.ts +150 -0
  56. package/dist/esm/core/mode-detection-service.js +565 -0
  57. package/dist/esm/core/mode-model-validator.d.ts +92 -0
  58. package/dist/esm/core/mode-model-validator.js +203 -0
  59. package/dist/esm/core/model-registry.d.ts +116 -0
  60. package/dist/esm/core/model-registry.js +411 -0
  61. package/dist/esm/core/model-validator.d.ts +217 -0
  62. package/dist/esm/core/model-validator.js +782 -0
  63. package/dist/esm/core/path-manager.d.ts +47 -0
  64. package/dist/esm/core/path-manager.js +71 -0
  65. package/dist/esm/core/raglite-paths.d.ts +121 -0
  66. package/dist/esm/core/raglite-paths.js +145 -0
  67. package/dist/esm/core/reranking-config.d.ts +42 -0
  68. package/dist/esm/core/reranking-config.js +147 -0
  69. package/dist/esm/core/reranking-factory.d.ts +92 -0
  70. package/dist/esm/core/reranking-factory.js +410 -0
  71. package/dist/esm/core/reranking-strategies.d.ts +310 -0
  72. package/dist/esm/core/reranking-strategies.js +650 -0
  73. package/dist/esm/core/resource-cleanup.d.ts +163 -0
  74. package/dist/esm/core/resource-cleanup.js +371 -0
  75. package/dist/esm/core/resource-manager.d.ts +212 -0
  76. package/dist/esm/core/resource-manager.js +564 -0
  77. package/dist/esm/core/search-pipeline.d.ts +111 -0
  78. package/dist/esm/core/search-pipeline.js +287 -0
  79. package/dist/esm/core/search.d.ts +141 -0
  80. package/dist/esm/core/search.js +320 -0
  81. package/dist/esm/core/streaming-operations.d.ts +145 -0
  82. package/dist/esm/core/streaming-operations.js +409 -0
  83. package/dist/esm/core/types.d.ts +66 -0
  84. package/dist/esm/core/types.js +6 -0
  85. package/dist/esm/core/universal-embedder.d.ts +177 -0
  86. package/dist/esm/core/universal-embedder.js +139 -0
  87. package/dist/esm/core/validation-messages.d.ts +99 -0
  88. package/dist/esm/core/validation-messages.js +334 -0
  89. package/dist/esm/core/vector-index.d.ts +72 -0
  90. package/dist/esm/core/vector-index.js +333 -0
  91. package/dist/esm/dom-polyfills.d.ts +6 -0
  92. package/dist/esm/dom-polyfills.js +37 -0
  93. package/dist/esm/factories/index.d.ts +27 -0
  94. package/dist/esm/factories/index.js +29 -0
  95. package/dist/esm/factories/ingestion-factory.d.ts +200 -0
  96. package/dist/esm/factories/ingestion-factory.js +477 -0
  97. package/dist/esm/factories/search-factory.d.ts +154 -0
  98. package/dist/esm/factories/search-factory.js +344 -0
  99. package/dist/esm/file-processor.d.ts +147 -0
  100. package/dist/esm/file-processor.js +963 -0
  101. package/dist/esm/index-manager.d.ts +116 -0
  102. package/dist/esm/index-manager.js +598 -0
  103. package/dist/esm/index.d.ts +75 -0
  104. package/dist/esm/index.js +110 -0
  105. package/dist/esm/indexer.d.ts +7 -0
  106. package/dist/esm/indexer.js +54 -0
  107. package/dist/esm/ingestion.d.ts +63 -0
  108. package/dist/esm/ingestion.js +124 -0
  109. package/dist/esm/mcp-server.d.ts +46 -0
  110. package/dist/esm/mcp-server.js +1820 -0
  111. package/dist/esm/multimodal/clip-embedder.d.ts +327 -0
  112. package/dist/esm/multimodal/clip-embedder.js +996 -0
  113. package/dist/esm/multimodal/index.d.ts +6 -0
  114. package/dist/esm/multimodal/index.js +6 -0
  115. package/dist/esm/preprocess.d.ts +19 -0
  116. package/dist/esm/preprocess.js +203 -0
  117. package/dist/esm/preprocessors/index.d.ts +17 -0
  118. package/dist/esm/preprocessors/index.js +38 -0
  119. package/dist/esm/preprocessors/mdx.d.ts +25 -0
  120. package/dist/esm/preprocessors/mdx.js +101 -0
  121. package/dist/esm/preprocessors/mermaid.d.ts +68 -0
  122. package/dist/esm/preprocessors/mermaid.js +329 -0
  123. package/dist/esm/preprocessors/registry.d.ts +56 -0
  124. package/dist/esm/preprocessors/registry.js +179 -0
  125. package/dist/esm/run-error-recovery-tests.d.ts +7 -0
  126. package/dist/esm/run-error-recovery-tests.js +101 -0
  127. package/dist/esm/search-standalone.d.ts +7 -0
  128. package/dist/esm/search-standalone.js +117 -0
  129. package/dist/esm/search.d.ts +99 -0
  130. package/dist/esm/search.js +177 -0
  131. package/dist/esm/test-utils.d.ts +18 -0
  132. package/dist/esm/test-utils.js +27 -0
  133. package/dist/esm/text/chunker.d.ts +33 -0
  134. package/dist/esm/text/chunker.js +279 -0
  135. package/dist/esm/text/embedder.d.ts +111 -0
  136. package/dist/esm/text/embedder.js +386 -0
  137. package/dist/esm/text/index.d.ts +8 -0
  138. package/dist/esm/text/index.js +9 -0
  139. package/dist/esm/text/preprocessors/index.d.ts +17 -0
  140. package/dist/esm/text/preprocessors/index.js +38 -0
  141. package/dist/esm/text/preprocessors/mdx.d.ts +25 -0
  142. package/dist/esm/text/preprocessors/mdx.js +101 -0
  143. package/dist/esm/text/preprocessors/mermaid.d.ts +68 -0
  144. package/dist/esm/text/preprocessors/mermaid.js +330 -0
  145. package/dist/esm/text/preprocessors/registry.d.ts +56 -0
  146. package/dist/esm/text/preprocessors/registry.js +180 -0
  147. package/dist/esm/text/reranker.d.ts +49 -0
  148. package/dist/esm/text/reranker.js +274 -0
  149. package/dist/esm/text/sentence-transformer-embedder.d.ts +96 -0
  150. package/dist/esm/text/sentence-transformer-embedder.js +340 -0
  151. package/dist/esm/text/tokenizer.d.ts +22 -0
  152. package/dist/esm/text/tokenizer.js +64 -0
  153. package/dist/esm/types.d.ts +83 -0
  154. package/dist/esm/types.js +3 -0
  155. package/dist/esm/utils/vector-math.d.ts +31 -0
  156. package/dist/esm/utils/vector-math.js +70 -0
  157. package/package.json +30 -12
  158. /package/dist/{api-errors.d.ts → cjs/api-errors.d.ts} +0 -0
  159. /package/dist/{api-errors.js → cjs/api-errors.js} +0 -0
  160. /package/dist/{cli → cjs/cli}/indexer.d.ts +0 -0
  161. /package/dist/{cli → cjs/cli}/indexer.js +0 -0
  162. /package/dist/{cli → cjs/cli}/search.d.ts +0 -0
  163. /package/dist/{cli → cjs/cli}/search.js +0 -0
  164. /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
  165. /package/dist/{cli.js → cjs/cli.js} +0 -0
  166. /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
  167. /package/dist/{config.js → cjs/config.js} +0 -0
  168. /package/dist/{core → cjs/core}/abstract-embedder.d.ts +0 -0
  169. /package/dist/{core → cjs/core}/abstract-embedder.js +0 -0
  170. /package/dist/{core → cjs/core}/actionable-error-messages.d.ts +0 -0
  171. /package/dist/{core → cjs/core}/actionable-error-messages.js +0 -0
  172. /package/dist/{core → cjs/core}/adapters.d.ts +0 -0
  173. /package/dist/{core → cjs/core}/adapters.js +0 -0
  174. /package/dist/{core → cjs/core}/batch-processing-optimizer.d.ts +0 -0
  175. /package/dist/{core → cjs/core}/batch-processing-optimizer.js +0 -0
  176. /package/dist/{core → cjs/core}/binary-index-format.d.ts +0 -0
  177. /package/dist/{core → cjs/core}/binary-index-format.js +0 -0
  178. /package/dist/{core → cjs/core}/chunker.d.ts +0 -0
  179. /package/dist/{core → cjs/core}/chunker.js +0 -0
  180. /package/dist/{core → cjs/core}/cli-database-utils.d.ts +0 -0
  181. /package/dist/{core → cjs/core}/cli-database-utils.js +0 -0
  182. /package/dist/{core → cjs/core}/config.d.ts +0 -0
  183. /package/dist/{core → cjs/core}/config.js +0 -0
  184. /package/dist/{core → cjs/core}/content-errors.d.ts +0 -0
  185. /package/dist/{core → cjs/core}/content-errors.js +0 -0
  186. /package/dist/{core → cjs/core}/content-manager.d.ts +0 -0
  187. /package/dist/{core → cjs/core}/content-manager.js +0 -0
  188. /package/dist/{core → cjs/core}/content-performance-optimizer.d.ts +0 -0
  189. /package/dist/{core → cjs/core}/content-performance-optimizer.js +0 -0
  190. /package/dist/{core → cjs/core}/content-resolver.d.ts +0 -0
  191. /package/dist/{core → cjs/core}/content-resolver.js +0 -0
  192. /package/dist/{core → cjs/core}/cross-modal-search.d.ts +0 -0
  193. /package/dist/{core → cjs/core}/cross-modal-search.js +0 -0
  194. /package/dist/{core → cjs/core}/database-connection-manager.d.ts +0 -0
  195. /package/dist/{core → cjs/core}/database-connection-manager.js +0 -0
  196. /package/dist/{core → cjs/core}/db.d.ts +0 -0
  197. /package/dist/{core → cjs/core}/db.js +0 -0
  198. /package/dist/{core → cjs/core}/embedder-factory.d.ts +0 -0
  199. /package/dist/{core → cjs/core}/embedder-factory.js +0 -0
  200. /package/dist/{core → cjs/core}/error-handler.d.ts +0 -0
  201. /package/dist/{core → cjs/core}/error-handler.js +0 -0
  202. /package/dist/{core → cjs/core}/index.d.ts +0 -0
  203. /package/dist/{core → cjs/core}/index.js +0 -0
  204. /package/dist/{core → cjs/core}/ingestion.d.ts +0 -0
  205. /package/dist/{core → cjs/core}/ingestion.js +0 -0
  206. /package/dist/{core → cjs/core}/interfaces.d.ts +0 -0
  207. /package/dist/{core → cjs/core}/interfaces.js +0 -0
  208. /package/dist/{core → cjs/core}/lazy-dependency-loader.d.ts +0 -0
  209. /package/dist/{core → cjs/core}/lazy-dependency-loader.js +0 -0
  210. /package/dist/{core → cjs/core}/mode-detection-service.d.ts +0 -0
  211. /package/dist/{core → cjs/core}/mode-detection-service.js +0 -0
  212. /package/dist/{core → cjs/core}/mode-model-validator.d.ts +0 -0
  213. /package/dist/{core → cjs/core}/mode-model-validator.js +0 -0
  214. /package/dist/{core → cjs/core}/model-registry.d.ts +0 -0
  215. /package/dist/{core → cjs/core}/model-registry.js +0 -0
  216. /package/dist/{core → cjs/core}/model-validator.d.ts +0 -0
  217. /package/dist/{core → cjs/core}/path-manager.d.ts +0 -0
  218. /package/dist/{core → cjs/core}/path-manager.js +0 -0
  219. /package/dist/{core → cjs/core}/raglite-paths.d.ts +0 -0
  220. /package/dist/{core → cjs/core}/raglite-paths.js +0 -0
  221. /package/dist/{core → cjs/core}/reranking-config.d.ts +0 -0
  222. /package/dist/{core → cjs/core}/reranking-config.js +0 -0
  223. /package/dist/{core → cjs/core}/reranking-factory.d.ts +0 -0
  224. /package/dist/{core → cjs/core}/reranking-factory.js +0 -0
  225. /package/dist/{core → cjs/core}/reranking-strategies.d.ts +0 -0
  226. /package/dist/{core → cjs/core}/reranking-strategies.js +0 -0
  227. /package/dist/{core → cjs/core}/resource-cleanup.d.ts +0 -0
  228. /package/dist/{core → cjs/core}/resource-cleanup.js +0 -0
  229. /package/dist/{core → cjs/core}/resource-manager.d.ts +0 -0
  230. /package/dist/{core → cjs/core}/resource-manager.js +0 -0
  231. /package/dist/{core → cjs/core}/search-pipeline.d.ts +0 -0
  232. /package/dist/{core → cjs/core}/search-pipeline.js +0 -0
  233. /package/dist/{core → cjs/core}/search.d.ts +0 -0
  234. /package/dist/{core → cjs/core}/search.js +0 -0
  235. /package/dist/{core → cjs/core}/streaming-operations.d.ts +0 -0
  236. /package/dist/{core → cjs/core}/streaming-operations.js +0 -0
  237. /package/dist/{core → cjs/core}/types.d.ts +0 -0
  238. /package/dist/{core → cjs/core}/types.js +0 -0
  239. /package/dist/{core → cjs/core}/universal-embedder.d.ts +0 -0
  240. /package/dist/{core → cjs/core}/universal-embedder.js +0 -0
  241. /package/dist/{core → cjs/core}/validation-messages.d.ts +0 -0
  242. /package/dist/{core → cjs/core}/validation-messages.js +0 -0
  243. /package/dist/{core → cjs/core}/vector-index.d.ts +0 -0
  244. /package/dist/{dom-polyfills.d.ts → cjs/dom-polyfills.d.ts} +0 -0
  245. /package/dist/{dom-polyfills.js → cjs/dom-polyfills.js} +0 -0
  246. /package/dist/{factories → cjs/factories}/index.d.ts +0 -0
  247. /package/dist/{factories → cjs/factories}/index.js +0 -0
  248. /package/dist/{factories → cjs/factories}/ingestion-factory.d.ts +0 -0
  249. /package/dist/{factories → cjs/factories}/ingestion-factory.js +0 -0
  250. /package/dist/{factories → cjs/factories}/search-factory.d.ts +0 -0
  251. /package/dist/{factories → cjs/factories}/search-factory.js +0 -0
  252. /package/dist/{file-processor.d.ts → cjs/file-processor.d.ts} +0 -0
  253. /package/dist/{file-processor.js → cjs/file-processor.js} +0 -0
  254. /package/dist/{index-manager.d.ts → cjs/index-manager.d.ts} +0 -0
  255. /package/dist/{index-manager.js → cjs/index-manager.js} +0 -0
  256. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  257. /package/dist/{index.js → cjs/index.js} +0 -0
  258. /package/dist/{indexer.d.ts → cjs/indexer.d.ts} +0 -0
  259. /package/dist/{indexer.js → cjs/indexer.js} +0 -0
  260. /package/dist/{ingestion.d.ts → cjs/ingestion.d.ts} +0 -0
  261. /package/dist/{ingestion.js → cjs/ingestion.js} +0 -0
  262. /package/dist/{mcp-server.d.ts → cjs/mcp-server.d.ts} +0 -0
  263. /package/dist/{mcp-server.js → cjs/mcp-server.js} +0 -0
  264. /package/dist/{multimodal → cjs/multimodal}/clip-embedder.d.ts +0 -0
  265. /package/dist/{multimodal → cjs/multimodal}/clip-embedder.js +0 -0
  266. /package/dist/{multimodal → cjs/multimodal}/index.d.ts +0 -0
  267. /package/dist/{multimodal → cjs/multimodal}/index.js +0 -0
  268. /package/dist/{preprocess.d.ts → cjs/preprocess.d.ts} +0 -0
  269. /package/dist/{preprocess.js → cjs/preprocess.js} +0 -0
  270. /package/dist/{preprocessors → cjs/preprocessors}/index.d.ts +0 -0
  271. /package/dist/{preprocessors → cjs/preprocessors}/index.js +0 -0
  272. /package/dist/{preprocessors → cjs/preprocessors}/mdx.d.ts +0 -0
  273. /package/dist/{preprocessors → cjs/preprocessors}/mdx.js +0 -0
  274. /package/dist/{preprocessors → cjs/preprocessors}/mermaid.d.ts +0 -0
  275. /package/dist/{preprocessors → cjs/preprocessors}/mermaid.js +0 -0
  276. /package/dist/{preprocessors → cjs/preprocessors}/registry.d.ts +0 -0
  277. /package/dist/{preprocessors → cjs/preprocessors}/registry.js +0 -0
  278. /package/dist/{run-error-recovery-tests.d.ts → cjs/run-error-recovery-tests.d.ts} +0 -0
  279. /package/dist/{run-error-recovery-tests.js → cjs/run-error-recovery-tests.js} +0 -0
  280. /package/dist/{search-standalone.d.ts → cjs/search-standalone.d.ts} +0 -0
  281. /package/dist/{search-standalone.js → cjs/search-standalone.js} +0 -0
  282. /package/dist/{search.d.ts → cjs/search.d.ts} +0 -0
  283. /package/dist/{search.js → cjs/search.js} +0 -0
  284. /package/dist/{test-utils.d.ts → cjs/test-utils.d.ts} +0 -0
  285. /package/dist/{test-utils.js → cjs/test-utils.js} +0 -0
  286. /package/dist/{text → cjs/text}/chunker.d.ts +0 -0
  287. /package/dist/{text → cjs/text}/chunker.js +0 -0
  288. /package/dist/{text → cjs/text}/embedder.d.ts +0 -0
  289. /package/dist/{text → cjs/text}/embedder.js +0 -0
  290. /package/dist/{text → cjs/text}/index.d.ts +0 -0
  291. /package/dist/{text → cjs/text}/index.js +0 -0
  292. /package/dist/{text → cjs/text}/preprocessors/index.d.ts +0 -0
  293. /package/dist/{text → cjs/text}/preprocessors/index.js +0 -0
  294. /package/dist/{text → cjs/text}/preprocessors/mdx.d.ts +0 -0
  295. /package/dist/{text → cjs/text}/preprocessors/mdx.js +0 -0
  296. /package/dist/{text → cjs/text}/preprocessors/mermaid.d.ts +0 -0
  297. /package/dist/{text → cjs/text}/preprocessors/mermaid.js +0 -0
  298. /package/dist/{text → cjs/text}/preprocessors/registry.d.ts +0 -0
  299. /package/dist/{text → cjs/text}/preprocessors/registry.js +0 -0
  300. /package/dist/{text → cjs/text}/reranker.d.ts +0 -0
  301. /package/dist/{text → cjs/text}/reranker.js +0 -0
  302. /package/dist/{text → cjs/text}/sentence-transformer-embedder.d.ts +0 -0
  303. /package/dist/{text → cjs/text}/sentence-transformer-embedder.js +0 -0
  304. /package/dist/{text → cjs/text}/tokenizer.d.ts +0 -0
  305. /package/dist/{text → cjs/text}/tokenizer.js +0 -0
  306. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  307. /package/dist/{types.js → cjs/types.js} +0 -0
  308. /package/dist/{utils → cjs/utils}/vector-math.d.ts +0 -0
  309. /package/dist/{utils → cjs/utils}/vector-math.js +0 -0
@@ -0,0 +1,203 @@
1
+ /**
2
+ * CORE MODULE — Mode-Model Compatibility Validator
3
+ * Validates compatibility between processing modes and embedding models
4
+ * Provides clear error messages for incompatible configurations
5
+ */
6
+ import { ModelRegistry } from './model-registry.js';
7
+ import { createError } from './error-handler.js';
8
+ // =============================================================================
9
+ // MODE-MODEL COMPATIBILITY RULES
10
+ // =============================================================================
11
+ /**
12
+ * Compatibility matrix defining which model types work with which modes
13
+ */
14
+ const MODE_MODEL_COMPATIBILITY = {
15
+ 'text': ['sentence-transformer', 'clip'], // Text mode can use both (CLIP converts images to text)
16
+ 'multimodal': ['clip'] // Multimodal mode requires CLIP for unified embedding space
17
+ };
18
+ /**
19
+ * Recommended models for each mode
20
+ */
21
+ const RECOMMENDED_MODELS = {
22
+ 'text': [
23
+ 'sentence-transformers/all-MiniLM-L6-v2', // Fast, efficient
24
+ 'Xenova/all-mpnet-base-v2' // Higher quality
25
+ ],
26
+ 'multimodal': [
27
+ 'Xenova/clip-vit-base-patch32', // Standard CLIP model
28
+ 'Xenova/clip-vit-base-patch16' // Higher resolution CLIP
29
+ ]
30
+ };
31
+ /**
32
+ * Validate compatibility between a mode and model
33
+ *
34
+ * @param mode - Processing mode (text or multimodal)
35
+ * @param modelName - Name of the embedding model
36
+ * @returns Validation result with errors and suggestions
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const result = validateModeModelCompatibility('multimodal', 'sentence-transformers/all-MiniLM-L6-v2');
41
+ * if (!result.isValid) {
42
+ * console.error('Incompatible configuration:', result.errors);
43
+ * console.log('Suggestions:', result.suggestions);
44
+ * }
45
+ * ```
46
+ */
47
+ export function validateModeModelCompatibility(mode, modelName) {
48
+ const errors = [];
49
+ const warnings = [];
50
+ const suggestions = [];
51
+ // Step 1: Validate that the model exists in the registry
52
+ const modelInfo = ModelRegistry.getModelInfo(modelName);
53
+ if (!modelInfo) {
54
+ errors.push(`Model '${modelName}' is not supported`);
55
+ suggestions.push(`Available models: ${ModelRegistry.getSupportedModels().join(', ')}`);
56
+ return {
57
+ isValid: false,
58
+ errors,
59
+ warnings,
60
+ suggestions,
61
+ recommendedModels: RECOMMENDED_MODELS[mode]
62
+ };
63
+ }
64
+ // Step 2: Validate mode-model type compatibility
65
+ const compatibleModelTypes = MODE_MODEL_COMPATIBILITY[mode];
66
+ if (!compatibleModelTypes.includes(modelInfo.type)) {
67
+ errors.push(`Model '${modelName}' (type: ${modelInfo.type}) is not compatible with ${mode} mode`);
68
+ // Provide specific guidance based on the incompatibility
69
+ if (mode === 'multimodal' && modelInfo.type === 'sentence-transformer') {
70
+ suggestions.push(`Multimodal mode requires CLIP models for unified text-image embedding space. ` +
71
+ `Sentence-transformer models only support text.`);
72
+ suggestions.push(`Recommended CLIP models: ${RECOMMENDED_MODELS.multimodal.join(', ')}`);
73
+ }
74
+ else if (mode === 'text' && modelInfo.type === 'clip') {
75
+ // This is actually valid, but provide guidance
76
+ warnings.push(`Using CLIP model '${modelName}' in text mode. Images will be converted to text descriptions. ` +
77
+ `For text-only content, sentence-transformer models may be more efficient.`);
78
+ suggestions.push(`For text-only: ${RECOMMENDED_MODELS.text.join(', ')}`);
79
+ }
80
+ }
81
+ // Step 3: Check content type support
82
+ const requiredContentTypes = mode === 'multimodal' ? ['text', 'image'] : ['text'];
83
+ const unsupportedTypes = requiredContentTypes.filter(type => !modelInfo.supportedContentTypes.includes(type));
84
+ if (unsupportedTypes.length > 0) {
85
+ errors.push(`Model '${modelName}' does not support required content types for ${mode} mode: ${unsupportedTypes.join(', ')}`);
86
+ suggestions.push(`Required content types: ${requiredContentTypes.join(', ')}`);
87
+ }
88
+ // Step 4: Provide recommendations if everything is valid
89
+ if (errors.length === 0) {
90
+ const recommendedModels = RECOMMENDED_MODELS[mode];
91
+ if (!recommendedModels.includes(modelName)) {
92
+ suggestions.push(`Consider using recommended models for optimal performance: ${recommendedModels.join(', ')}`);
93
+ }
94
+ }
95
+ return {
96
+ isValid: errors.length === 0,
97
+ errors,
98
+ warnings,
99
+ suggestions,
100
+ recommendedModels: RECOMMENDED_MODELS[mode]
101
+ };
102
+ }
103
+ /**
104
+ * Validate mode-model compatibility and throw clear error if invalid
105
+ *
106
+ * @param mode - Processing mode
107
+ * @param modelName - Name of the embedding model
108
+ * @throws {Error} If the combination is invalid, with actionable error message
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * try {
113
+ * validateModeModelCompatibilityOrThrow('multimodal', 'sentence-transformers/all-MiniLM-L6-v2');
114
+ * } catch (error) {
115
+ * console.error('Configuration error:', error.message);
116
+ * }
117
+ * ```
118
+ */
119
+ export function validateModeModelCompatibilityOrThrow(mode, modelName) {
120
+ const result = validateModeModelCompatibility(mode, modelName);
121
+ if (!result.isValid) {
122
+ const errorMessage = [
123
+ `Invalid configuration: ${mode} mode with model '${modelName}'`,
124
+ '',
125
+ 'Errors:',
126
+ ...result.errors.map(error => ` • ${error}`),
127
+ ''
128
+ ];
129
+ if (result.suggestions.length > 0) {
130
+ errorMessage.push('Suggestions:');
131
+ errorMessage.push(...result.suggestions.map(suggestion => ` • ${suggestion}`));
132
+ errorMessage.push('');
133
+ }
134
+ if (result.recommendedModels && result.recommendedModels.length > 0) {
135
+ errorMessage.push(`Recommended models for ${mode} mode:`);
136
+ errorMessage.push(...result.recommendedModels.map(model => ` • ${model}`));
137
+ }
138
+ throw createError.validation(errorMessage.join('\n'));
139
+ }
140
+ // Log warnings if any
141
+ if (result.warnings.length > 0) {
142
+ console.warn(`⚠️ Configuration warnings for ${mode} mode with '${modelName}':`);
143
+ result.warnings.forEach(warning => console.warn(` • ${warning}`));
144
+ }
145
+ // Log suggestions if any
146
+ if (result.suggestions.length > 0) {
147
+ console.info(`💡 Suggestions for ${mode} mode with '${modelName}':`);
148
+ result.suggestions.forEach(suggestion => console.info(` • ${suggestion}`));
149
+ }
150
+ }
151
+ /**
152
+ * Get recommended models for a specific mode
153
+ *
154
+ * @param mode - Processing mode
155
+ * @returns Array of recommended model names
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * const textModels = getRecommendedModelsForMode('text');
160
+ * const multimodalModels = getRecommendedModelsForMode('multimodal');
161
+ * ```
162
+ */
163
+ export function getRecommendedModelsForMode(mode) {
164
+ return [...RECOMMENDED_MODELS[mode]];
165
+ }
166
+ /**
167
+ * Check if a model is compatible with a mode (without detailed validation)
168
+ *
169
+ * @param mode - Processing mode
170
+ * @param modelName - Name of the embedding model
171
+ * @returns True if compatible, false otherwise
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * if (isModeModelCompatible('multimodal', 'Xenova/clip-vit-base-patch32')) {
176
+ * // Proceed with configuration
177
+ * }
178
+ * ```
179
+ */
180
+ export function isModeModelCompatible(mode, modelName) {
181
+ const result = validateModeModelCompatibility(mode, modelName);
182
+ return result.isValid;
183
+ }
184
+ /**
185
+ * Get all compatible models for a specific mode
186
+ *
187
+ * @param mode - Processing mode
188
+ * @returns Array of compatible model names
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * const compatibleModels = getCompatibleModelsForMode('multimodal');
193
+ * console.log('Compatible models:', compatibleModels);
194
+ * ```
195
+ */
196
+ export function getCompatibleModelsForMode(mode) {
197
+ const compatibleModelTypes = MODE_MODEL_COMPATIBILITY[mode];
198
+ return ModelRegistry.getSupportedModels().filter(modelName => {
199
+ const modelInfo = ModelRegistry.getModelInfo(modelName);
200
+ return modelInfo && compatibleModelTypes.includes(modelInfo.type);
201
+ });
202
+ }
203
+ //# sourceMappingURL=mode-model-validator.js.map
@@ -0,0 +1,116 @@
1
+ /**
2
+ * CORE MODULE — Model Registry for Chameleon Architecture
3
+ * Centralized registry of supported models with validation and compatibility checking
4
+ * Model-agnostic registry supporting both text and multimodal models
5
+ */
6
+ import type { ModelInfo, ModelType, ModelValidationResult } from './universal-embedder.js';
7
+ /**
8
+ * Registry of supported models with their metadata and capabilities
9
+ * This registry defines all models compatible with the Chameleon architecture
10
+ */
11
+ export declare const SUPPORTED_MODELS: Record<string, ModelInfo>;
12
+ /**
13
+ * Model registry class providing validation and model information services
14
+ * Enhanced with comprehensive validation and compatibility checking
15
+ */
16
+ export declare class ModelRegistry {
17
+ /**
18
+ * Gets model information for a given model name
19
+ * @param modelName - Name of the model
20
+ * @returns Model information or null if not supported
21
+ */
22
+ static getModelInfo(modelName: string): ModelInfo | null;
23
+ /**
24
+ * Validates a model name and returns compatibility information
25
+ * @param modelName - Name of the model to validate
26
+ * @returns Model validation result with errors, warnings, and suggestions
27
+ */
28
+ static validateModel(modelName: string): ModelValidationResult;
29
+ /**
30
+ * Validate model requirements and add warnings/suggestions
31
+ * @private
32
+ */
33
+ private static validateModelRequirements;
34
+ /**
35
+ * Validate model capabilities and add warnings/suggestions
36
+ * @private
37
+ */
38
+ private static validateModelCapabilities;
39
+ /**
40
+ * Lists all supported models, optionally filtered by type
41
+ * @param modelType - Optional model type filter
42
+ * @returns Array of supported model names
43
+ */
44
+ static getSupportedModels(modelType?: ModelType): string[];
45
+ /**
46
+ * Gets models that support a specific content type
47
+ * @param contentType - Content type to filter by
48
+ * @returns Array of model names that support the content type
49
+ */
50
+ static getModelsByContentType(contentType: string): string[];
51
+ /**
52
+ * Gets the default model for a given model type
53
+ * @param modelType - Model type to get default for
54
+ * @returns Default model name or null if no default available
55
+ */
56
+ static getDefaultModel(modelType: ModelType): string | null;
57
+ /**
58
+ * Checks if a model supports a specific content type
59
+ * @param modelName - Name of the model
60
+ * @param contentType - Content type to check
61
+ * @returns True if the model supports the content type
62
+ */
63
+ static supportsContentType(modelName: string, contentType: string): boolean;
64
+ /**
65
+ * Gets models similar to the given model name (for suggestions)
66
+ * @param modelName - Model name to find similar models for
67
+ * @returns Array of similar model names
68
+ */
69
+ private static getSimilarModels;
70
+ /**
71
+ * Validates model compatibility with system requirements
72
+ * @param modelName - Name of the model to validate
73
+ * @param systemCapabilities - System capabilities to check against
74
+ * @returns Validation result with compatibility information
75
+ */
76
+ static validateSystemCompatibility(modelName: string, systemCapabilities: {
77
+ availableMemory?: number;
78
+ platform?: string;
79
+ transformersJsVersion?: string;
80
+ }): ModelValidationResult;
81
+ }
82
+ /**
83
+ * Gets the model type for a given model name
84
+ * @param modelName - Name of the model
85
+ * @returns Model type or null if model not supported
86
+ */
87
+ export declare function getModelType(modelName: string): ModelType | null;
88
+ /**
89
+ * Gets the dimensions for a given model name
90
+ * @param modelName - Name of the model
91
+ * @returns Number of dimensions or null if model not supported
92
+ */
93
+ export declare function getModelDimensions(modelName: string): number | null;
94
+ /**
95
+ * Checks if a model is a text-only model
96
+ * @param modelName - Name of the model
97
+ * @returns True if the model only supports text
98
+ */
99
+ export declare function isTextOnlyModel(modelName: string): boolean;
100
+ /**
101
+ * Checks if a model is a multimodal model
102
+ * @param modelName - Name of the model
103
+ * @returns True if the model supports multiple content types
104
+ */
105
+ export declare function isMultimodalModel(modelName: string): boolean;
106
+ /**
107
+ * Gets recommended batch size for a model
108
+ * @param modelName - Name of the model
109
+ * @returns Recommended batch size or default value
110
+ */
111
+ export declare function getRecommendedBatchSize(modelName: string): number;
112
+ /**
113
+ * Default model names for different types
114
+ */
115
+ export declare const DEFAULT_MODELS: Record<ModelType, string>;
116
+ //# sourceMappingURL=model-registry.d.ts.map