rag-lite-ts 2.1.0 → 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 (310) hide show
  1. package/dist/{cli → cjs/cli}/indexer.js +1 -1
  2. package/dist/{cli → cjs/cli}/search.js +5 -10
  3. package/dist/{core → cjs/core}/binary-index-format.d.ts +28 -2
  4. package/dist/cjs/core/binary-index-format.js +291 -0
  5. package/dist/{core → cjs/core}/ingestion.d.ts +5 -1
  6. package/dist/{core → cjs/core}/ingestion.js +76 -9
  7. package/dist/{core → cjs/core}/model-validator.js +1 -1
  8. package/dist/{core → cjs/core}/reranking-strategies.js +4 -5
  9. package/dist/{core → cjs/core}/search.js +2 -1
  10. package/dist/{core → cjs/core}/types.d.ts +1 -1
  11. package/dist/{core → cjs/core}/vector-index.d.ts +4 -0
  12. package/dist/{core → cjs/core}/vector-index.js +10 -2
  13. package/dist/{file-processor.d.ts → cjs/file-processor.d.ts} +2 -0
  14. package/dist/{file-processor.js → cjs/file-processor.js} +20 -0
  15. package/dist/{index-manager.d.ts → cjs/index-manager.d.ts} +17 -1
  16. package/dist/{index-manager.js → cjs/index-manager.js} +148 -7
  17. package/dist/{multimodal → cjs/multimodal}/clip-embedder.js +71 -66
  18. package/dist/esm/api-errors.d.ts +90 -0
  19. package/dist/esm/api-errors.js +320 -0
  20. package/dist/esm/cli/indexer.d.ts +11 -0
  21. package/dist/esm/cli/indexer.js +471 -0
  22. package/dist/esm/cli/search.d.ts +7 -0
  23. package/dist/esm/cli/search.js +332 -0
  24. package/dist/esm/cli.d.ts +3 -0
  25. package/dist/esm/cli.js +529 -0
  26. package/dist/esm/config.d.ts +51 -0
  27. package/dist/esm/config.js +79 -0
  28. package/dist/esm/core/abstract-embedder.d.ts +125 -0
  29. package/dist/esm/core/abstract-embedder.js +264 -0
  30. package/dist/esm/core/actionable-error-messages.d.ts +60 -0
  31. package/dist/esm/core/actionable-error-messages.js +397 -0
  32. package/dist/esm/core/adapters.d.ts +93 -0
  33. package/dist/esm/core/adapters.js +139 -0
  34. package/dist/esm/core/batch-processing-optimizer.d.ts +155 -0
  35. package/dist/esm/core/batch-processing-optimizer.js +536 -0
  36. package/dist/esm/core/binary-index-format.d.ts +78 -0
  37. package/dist/esm/core/binary-index-format.js +291 -0
  38. package/dist/esm/core/chunker.d.ts +119 -0
  39. package/dist/esm/core/chunker.js +73 -0
  40. package/dist/esm/core/cli-database-utils.d.ts +53 -0
  41. package/dist/esm/core/cli-database-utils.js +239 -0
  42. package/dist/esm/core/config.d.ts +102 -0
  43. package/dist/esm/core/config.js +247 -0
  44. package/dist/esm/core/content-errors.d.ts +111 -0
  45. package/dist/esm/core/content-errors.js +362 -0
  46. package/dist/esm/core/content-manager.d.ts +335 -0
  47. package/dist/esm/core/content-manager.js +1476 -0
  48. package/dist/esm/core/content-performance-optimizer.d.ts +150 -0
  49. package/dist/esm/core/content-performance-optimizer.js +516 -0
  50. package/dist/esm/core/content-resolver.d.ts +104 -0
  51. package/dist/esm/core/content-resolver.js +285 -0
  52. package/dist/esm/core/cross-modal-search.d.ts +164 -0
  53. package/dist/esm/core/cross-modal-search.js +342 -0
  54. package/dist/esm/core/database-connection-manager.d.ts +109 -0
  55. package/dist/esm/core/database-connection-manager.js +310 -0
  56. package/dist/esm/core/db.d.ts +213 -0
  57. package/dist/esm/core/db.js +895 -0
  58. package/dist/esm/core/embedder-factory.d.ts +154 -0
  59. package/dist/esm/core/embedder-factory.js +311 -0
  60. package/dist/esm/core/error-handler.d.ts +112 -0
  61. package/dist/esm/core/error-handler.js +239 -0
  62. package/dist/esm/core/index.d.ts +59 -0
  63. package/dist/esm/core/index.js +69 -0
  64. package/dist/esm/core/ingestion.d.ts +202 -0
  65. package/dist/esm/core/ingestion.js +901 -0
  66. package/dist/esm/core/interfaces.d.ts +408 -0
  67. package/dist/esm/core/interfaces.js +106 -0
  68. package/dist/esm/core/lazy-dependency-loader.d.ts +147 -0
  69. package/dist/esm/core/lazy-dependency-loader.js +435 -0
  70. package/dist/esm/core/mode-detection-service.d.ts +150 -0
  71. package/dist/esm/core/mode-detection-service.js +565 -0
  72. package/dist/esm/core/mode-model-validator.d.ts +92 -0
  73. package/dist/esm/core/mode-model-validator.js +203 -0
  74. package/dist/esm/core/model-registry.d.ts +116 -0
  75. package/dist/esm/core/model-registry.js +411 -0
  76. package/dist/esm/core/model-validator.d.ts +217 -0
  77. package/dist/esm/core/model-validator.js +782 -0
  78. package/dist/esm/core/path-manager.d.ts +47 -0
  79. package/dist/esm/core/path-manager.js +71 -0
  80. package/dist/esm/core/raglite-paths.d.ts +121 -0
  81. package/dist/esm/core/raglite-paths.js +145 -0
  82. package/dist/esm/core/reranking-config.d.ts +42 -0
  83. package/dist/esm/core/reranking-config.js +147 -0
  84. package/dist/esm/core/reranking-factory.d.ts +92 -0
  85. package/dist/esm/core/reranking-factory.js +410 -0
  86. package/dist/esm/core/reranking-strategies.d.ts +310 -0
  87. package/dist/esm/core/reranking-strategies.js +650 -0
  88. package/dist/esm/core/resource-cleanup.d.ts +163 -0
  89. package/dist/esm/core/resource-cleanup.js +371 -0
  90. package/dist/esm/core/resource-manager.d.ts +212 -0
  91. package/dist/esm/core/resource-manager.js +564 -0
  92. package/dist/esm/core/search-pipeline.d.ts +111 -0
  93. package/dist/esm/core/search-pipeline.js +287 -0
  94. package/dist/esm/core/search.d.ts +141 -0
  95. package/dist/esm/core/search.js +320 -0
  96. package/dist/esm/core/streaming-operations.d.ts +145 -0
  97. package/dist/esm/core/streaming-operations.js +409 -0
  98. package/dist/esm/core/types.d.ts +66 -0
  99. package/dist/esm/core/types.js +6 -0
  100. package/dist/esm/core/universal-embedder.d.ts +177 -0
  101. package/dist/esm/core/universal-embedder.js +139 -0
  102. package/dist/esm/core/validation-messages.d.ts +99 -0
  103. package/dist/esm/core/validation-messages.js +334 -0
  104. package/dist/esm/core/vector-index.d.ts +72 -0
  105. package/dist/esm/core/vector-index.js +333 -0
  106. package/dist/esm/dom-polyfills.d.ts +6 -0
  107. package/dist/esm/dom-polyfills.js +37 -0
  108. package/dist/esm/factories/index.d.ts +27 -0
  109. package/dist/esm/factories/index.js +29 -0
  110. package/dist/esm/factories/ingestion-factory.d.ts +200 -0
  111. package/dist/esm/factories/ingestion-factory.js +477 -0
  112. package/dist/esm/factories/search-factory.d.ts +154 -0
  113. package/dist/esm/factories/search-factory.js +344 -0
  114. package/dist/esm/file-processor.d.ts +147 -0
  115. package/dist/esm/file-processor.js +963 -0
  116. package/dist/esm/index-manager.d.ts +116 -0
  117. package/dist/esm/index-manager.js +598 -0
  118. package/dist/esm/index.d.ts +75 -0
  119. package/dist/esm/index.js +110 -0
  120. package/dist/esm/indexer.d.ts +7 -0
  121. package/dist/esm/indexer.js +54 -0
  122. package/dist/esm/ingestion.d.ts +63 -0
  123. package/dist/esm/ingestion.js +124 -0
  124. package/dist/esm/mcp-server.d.ts +46 -0
  125. package/dist/esm/mcp-server.js +1820 -0
  126. package/dist/esm/multimodal/clip-embedder.d.ts +327 -0
  127. package/dist/esm/multimodal/clip-embedder.js +996 -0
  128. package/dist/esm/multimodal/index.d.ts +6 -0
  129. package/dist/esm/multimodal/index.js +6 -0
  130. package/dist/esm/preprocess.d.ts +19 -0
  131. package/dist/esm/preprocess.js +203 -0
  132. package/dist/esm/preprocessors/index.d.ts +17 -0
  133. package/dist/esm/preprocessors/index.js +38 -0
  134. package/dist/esm/preprocessors/mdx.d.ts +25 -0
  135. package/dist/esm/preprocessors/mdx.js +101 -0
  136. package/dist/esm/preprocessors/mermaid.d.ts +68 -0
  137. package/dist/esm/preprocessors/mermaid.js +329 -0
  138. package/dist/esm/preprocessors/registry.d.ts +56 -0
  139. package/dist/esm/preprocessors/registry.js +179 -0
  140. package/dist/esm/run-error-recovery-tests.d.ts +7 -0
  141. package/dist/esm/run-error-recovery-tests.js +101 -0
  142. package/dist/esm/search-standalone.d.ts +7 -0
  143. package/dist/esm/search-standalone.js +117 -0
  144. package/dist/esm/search.d.ts +99 -0
  145. package/dist/esm/search.js +177 -0
  146. package/dist/esm/test-utils.d.ts +18 -0
  147. package/dist/esm/test-utils.js +27 -0
  148. package/dist/esm/text/chunker.d.ts +33 -0
  149. package/dist/esm/text/chunker.js +279 -0
  150. package/dist/esm/text/embedder.d.ts +111 -0
  151. package/dist/esm/text/embedder.js +386 -0
  152. package/dist/esm/text/index.d.ts +8 -0
  153. package/dist/esm/text/index.js +9 -0
  154. package/dist/esm/text/preprocessors/index.d.ts +17 -0
  155. package/dist/esm/text/preprocessors/index.js +38 -0
  156. package/dist/esm/text/preprocessors/mdx.d.ts +25 -0
  157. package/dist/esm/text/preprocessors/mdx.js +101 -0
  158. package/dist/esm/text/preprocessors/mermaid.d.ts +68 -0
  159. package/dist/esm/text/preprocessors/mermaid.js +330 -0
  160. package/dist/esm/text/preprocessors/registry.d.ts +56 -0
  161. package/dist/esm/text/preprocessors/registry.js +180 -0
  162. package/dist/esm/text/reranker.d.ts +49 -0
  163. package/dist/esm/text/reranker.js +274 -0
  164. package/dist/esm/text/sentence-transformer-embedder.d.ts +96 -0
  165. package/dist/esm/text/sentence-transformer-embedder.js +340 -0
  166. package/dist/esm/text/tokenizer.d.ts +22 -0
  167. package/dist/esm/text/tokenizer.js +64 -0
  168. package/dist/esm/types.d.ts +83 -0
  169. package/dist/esm/types.js +3 -0
  170. package/dist/esm/utils/vector-math.d.ts +31 -0
  171. package/dist/esm/utils/vector-math.js +70 -0
  172. package/package.json +30 -12
  173. package/dist/core/binary-index-format.js +0 -122
  174. /package/dist/{api-errors.d.ts → cjs/api-errors.d.ts} +0 -0
  175. /package/dist/{api-errors.js → cjs/api-errors.js} +0 -0
  176. /package/dist/{cli → cjs/cli}/indexer.d.ts +0 -0
  177. /package/dist/{cli → cjs/cli}/search.d.ts +0 -0
  178. /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
  179. /package/dist/{cli.js → cjs/cli.js} +0 -0
  180. /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
  181. /package/dist/{config.js → cjs/config.js} +0 -0
  182. /package/dist/{core → cjs/core}/abstract-embedder.d.ts +0 -0
  183. /package/dist/{core → cjs/core}/abstract-embedder.js +0 -0
  184. /package/dist/{core → cjs/core}/actionable-error-messages.d.ts +0 -0
  185. /package/dist/{core → cjs/core}/actionable-error-messages.js +0 -0
  186. /package/dist/{core → cjs/core}/adapters.d.ts +0 -0
  187. /package/dist/{core → cjs/core}/adapters.js +0 -0
  188. /package/dist/{core → cjs/core}/batch-processing-optimizer.d.ts +0 -0
  189. /package/dist/{core → cjs/core}/batch-processing-optimizer.js +0 -0
  190. /package/dist/{core → cjs/core}/chunker.d.ts +0 -0
  191. /package/dist/{core → cjs/core}/chunker.js +0 -0
  192. /package/dist/{core → cjs/core}/cli-database-utils.d.ts +0 -0
  193. /package/dist/{core → cjs/core}/cli-database-utils.js +0 -0
  194. /package/dist/{core → cjs/core}/config.d.ts +0 -0
  195. /package/dist/{core → cjs/core}/config.js +0 -0
  196. /package/dist/{core → cjs/core}/content-errors.d.ts +0 -0
  197. /package/dist/{core → cjs/core}/content-errors.js +0 -0
  198. /package/dist/{core → cjs/core}/content-manager.d.ts +0 -0
  199. /package/dist/{core → cjs/core}/content-manager.js +0 -0
  200. /package/dist/{core → cjs/core}/content-performance-optimizer.d.ts +0 -0
  201. /package/dist/{core → cjs/core}/content-performance-optimizer.js +0 -0
  202. /package/dist/{core → cjs/core}/content-resolver.d.ts +0 -0
  203. /package/dist/{core → cjs/core}/content-resolver.js +0 -0
  204. /package/dist/{core → cjs/core}/cross-modal-search.d.ts +0 -0
  205. /package/dist/{core → cjs/core}/cross-modal-search.js +0 -0
  206. /package/dist/{core → cjs/core}/database-connection-manager.d.ts +0 -0
  207. /package/dist/{core → cjs/core}/database-connection-manager.js +0 -0
  208. /package/dist/{core → cjs/core}/db.d.ts +0 -0
  209. /package/dist/{core → cjs/core}/db.js +0 -0
  210. /package/dist/{core → cjs/core}/embedder-factory.d.ts +0 -0
  211. /package/dist/{core → cjs/core}/embedder-factory.js +0 -0
  212. /package/dist/{core → cjs/core}/error-handler.d.ts +0 -0
  213. /package/dist/{core → cjs/core}/error-handler.js +0 -0
  214. /package/dist/{core → cjs/core}/index.d.ts +0 -0
  215. /package/dist/{core → cjs/core}/index.js +0 -0
  216. /package/dist/{core → cjs/core}/interfaces.d.ts +0 -0
  217. /package/dist/{core → cjs/core}/interfaces.js +0 -0
  218. /package/dist/{core → cjs/core}/lazy-dependency-loader.d.ts +0 -0
  219. /package/dist/{core → cjs/core}/lazy-dependency-loader.js +0 -0
  220. /package/dist/{core → cjs/core}/mode-detection-service.d.ts +0 -0
  221. /package/dist/{core → cjs/core}/mode-detection-service.js +0 -0
  222. /package/dist/{core → cjs/core}/mode-model-validator.d.ts +0 -0
  223. /package/dist/{core → cjs/core}/mode-model-validator.js +0 -0
  224. /package/dist/{core → cjs/core}/model-registry.d.ts +0 -0
  225. /package/dist/{core → cjs/core}/model-registry.js +0 -0
  226. /package/dist/{core → cjs/core}/model-validator.d.ts +0 -0
  227. /package/dist/{core → cjs/core}/path-manager.d.ts +0 -0
  228. /package/dist/{core → cjs/core}/path-manager.js +0 -0
  229. /package/dist/{core → cjs/core}/raglite-paths.d.ts +0 -0
  230. /package/dist/{core → cjs/core}/raglite-paths.js +0 -0
  231. /package/dist/{core → cjs/core}/reranking-config.d.ts +0 -0
  232. /package/dist/{core → cjs/core}/reranking-config.js +0 -0
  233. /package/dist/{core → cjs/core}/reranking-factory.d.ts +0 -0
  234. /package/dist/{core → cjs/core}/reranking-factory.js +0 -0
  235. /package/dist/{core → cjs/core}/reranking-strategies.d.ts +0 -0
  236. /package/dist/{core → cjs/core}/resource-cleanup.d.ts +0 -0
  237. /package/dist/{core → cjs/core}/resource-cleanup.js +0 -0
  238. /package/dist/{core → cjs/core}/resource-manager.d.ts +0 -0
  239. /package/dist/{core → cjs/core}/resource-manager.js +0 -0
  240. /package/dist/{core → cjs/core}/search-pipeline.d.ts +0 -0
  241. /package/dist/{core → cjs/core}/search-pipeline.js +0 -0
  242. /package/dist/{core → cjs/core}/search.d.ts +0 -0
  243. /package/dist/{core → cjs/core}/streaming-operations.d.ts +0 -0
  244. /package/dist/{core → cjs/core}/streaming-operations.js +0 -0
  245. /package/dist/{core → cjs/core}/types.js +0 -0
  246. /package/dist/{core → cjs/core}/universal-embedder.d.ts +0 -0
  247. /package/dist/{core → cjs/core}/universal-embedder.js +0 -0
  248. /package/dist/{core → cjs/core}/validation-messages.d.ts +0 -0
  249. /package/dist/{core → cjs/core}/validation-messages.js +0 -0
  250. /package/dist/{dom-polyfills.d.ts → cjs/dom-polyfills.d.ts} +0 -0
  251. /package/dist/{dom-polyfills.js → cjs/dom-polyfills.js} +0 -0
  252. /package/dist/{factories → cjs/factories}/index.d.ts +0 -0
  253. /package/dist/{factories → cjs/factories}/index.js +0 -0
  254. /package/dist/{factories → cjs/factories}/ingestion-factory.d.ts +0 -0
  255. /package/dist/{factories → cjs/factories}/ingestion-factory.js +0 -0
  256. /package/dist/{factories → cjs/factories}/search-factory.d.ts +0 -0
  257. /package/dist/{factories → cjs/factories}/search-factory.js +0 -0
  258. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  259. /package/dist/{index.js → cjs/index.js} +0 -0
  260. /package/dist/{indexer.d.ts → cjs/indexer.d.ts} +0 -0
  261. /package/dist/{indexer.js → cjs/indexer.js} +0 -0
  262. /package/dist/{ingestion.d.ts → cjs/ingestion.d.ts} +0 -0
  263. /package/dist/{ingestion.js → cjs/ingestion.js} +0 -0
  264. /package/dist/{mcp-server.d.ts → cjs/mcp-server.d.ts} +0 -0
  265. /package/dist/{mcp-server.js → cjs/mcp-server.js} +0 -0
  266. /package/dist/{multimodal → cjs/multimodal}/clip-embedder.d.ts +0 -0
  267. /package/dist/{multimodal → cjs/multimodal}/index.d.ts +0 -0
  268. /package/dist/{multimodal → cjs/multimodal}/index.js +0 -0
  269. /package/dist/{preprocess.d.ts → cjs/preprocess.d.ts} +0 -0
  270. /package/dist/{preprocess.js → cjs/preprocess.js} +0 -0
  271. /package/dist/{preprocessors → cjs/preprocessors}/index.d.ts +0 -0
  272. /package/dist/{preprocessors → cjs/preprocessors}/index.js +0 -0
  273. /package/dist/{preprocessors → cjs/preprocessors}/mdx.d.ts +0 -0
  274. /package/dist/{preprocessors → cjs/preprocessors}/mdx.js +0 -0
  275. /package/dist/{preprocessors → cjs/preprocessors}/mermaid.d.ts +0 -0
  276. /package/dist/{preprocessors → cjs/preprocessors}/mermaid.js +0 -0
  277. /package/dist/{preprocessors → cjs/preprocessors}/registry.d.ts +0 -0
  278. /package/dist/{preprocessors → cjs/preprocessors}/registry.js +0 -0
  279. /package/dist/{run-error-recovery-tests.d.ts → cjs/run-error-recovery-tests.d.ts} +0 -0
  280. /package/dist/{run-error-recovery-tests.js → cjs/run-error-recovery-tests.js} +0 -0
  281. /package/dist/{search-standalone.d.ts → cjs/search-standalone.d.ts} +0 -0
  282. /package/dist/{search-standalone.js → cjs/search-standalone.js} +0 -0
  283. /package/dist/{search.d.ts → cjs/search.d.ts} +0 -0
  284. /package/dist/{search.js → cjs/search.js} +0 -0
  285. /package/dist/{test-utils.d.ts → cjs/test-utils.d.ts} +0 -0
  286. /package/dist/{test-utils.js → cjs/test-utils.js} +0 -0
  287. /package/dist/{text → cjs/text}/chunker.d.ts +0 -0
  288. /package/dist/{text → cjs/text}/chunker.js +0 -0
  289. /package/dist/{text → cjs/text}/embedder.d.ts +0 -0
  290. /package/dist/{text → cjs/text}/embedder.js +0 -0
  291. /package/dist/{text → cjs/text}/index.d.ts +0 -0
  292. /package/dist/{text → cjs/text}/index.js +0 -0
  293. /package/dist/{text → cjs/text}/preprocessors/index.d.ts +0 -0
  294. /package/dist/{text → cjs/text}/preprocessors/index.js +0 -0
  295. /package/dist/{text → cjs/text}/preprocessors/mdx.d.ts +0 -0
  296. /package/dist/{text → cjs/text}/preprocessors/mdx.js +0 -0
  297. /package/dist/{text → cjs/text}/preprocessors/mermaid.d.ts +0 -0
  298. /package/dist/{text → cjs/text}/preprocessors/mermaid.js +0 -0
  299. /package/dist/{text → cjs/text}/preprocessors/registry.d.ts +0 -0
  300. /package/dist/{text → cjs/text}/preprocessors/registry.js +0 -0
  301. /package/dist/{text → cjs/text}/reranker.d.ts +0 -0
  302. /package/dist/{text → cjs/text}/reranker.js +0 -0
  303. /package/dist/{text → cjs/text}/sentence-transformer-embedder.d.ts +0 -0
  304. /package/dist/{text → cjs/text}/sentence-transformer-embedder.js +0 -0
  305. /package/dist/{text → cjs/text}/tokenizer.d.ts +0 -0
  306. /package/dist/{text → cjs/text}/tokenizer.js +0 -0
  307. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  308. /package/dist/{types.js → cjs/types.js} +0 -0
  309. /package/dist/{utils → cjs/utils}/vector-math.d.ts +0 -0
  310. /package/dist/{utils → cjs/utils}/vector-math.js +0 -0
@@ -0,0 +1,320 @@
1
+ /**
2
+ * User-friendly error classes with actionable suggestions
3
+ * Requirements: 5.3 - Create user-friendly error classes with actionable suggestions
4
+ */
5
+ /**
6
+ * Base class for API errors with actionable suggestions
7
+ */
8
+ export class APIError extends Error {
9
+ code;
10
+ suggestions;
11
+ context;
12
+ constructor(message, code, suggestions, context) {
13
+ super(message);
14
+ this.code = code;
15
+ this.suggestions = suggestions;
16
+ this.context = context;
17
+ this.name = this.constructor.name;
18
+ }
19
+ /**
20
+ * Get formatted error message with suggestions
21
+ */
22
+ getFormattedMessage() {
23
+ let formatted = this.message;
24
+ if (this.suggestions.length > 0) {
25
+ formatted += '\n\nSuggestions:';
26
+ this.suggestions.forEach((suggestion, index) => {
27
+ formatted += `\n ${index + 1}. ${suggestion}`;
28
+ });
29
+ }
30
+ return formatted;
31
+ }
32
+ /**
33
+ * Log the error with proper formatting
34
+ */
35
+ logError() {
36
+ console.error(`\n${this.name}: ${this.message}`);
37
+ if (this.context) {
38
+ console.error(`Context: ${this.context}`);
39
+ }
40
+ if (this.suggestions.length > 0) {
41
+ console.error('\nSuggestions:');
42
+ this.suggestions.forEach((suggestion, index) => {
43
+ console.error(` ${index + 1}. ${suggestion}`);
44
+ });
45
+ }
46
+ console.error(''); // Empty line for better readability
47
+ }
48
+ }
49
+ /**
50
+ * Ingestion-related errors
51
+ */
52
+ export class IngestionError extends APIError {
53
+ constructor(message, code, suggestions, context) {
54
+ super(message, code, suggestions, context);
55
+ }
56
+ }
57
+ /**
58
+ * Search-related errors
59
+ */
60
+ export class SearchError extends APIError {
61
+ constructor(message, code, suggestions, context) {
62
+ super(message, code, suggestions, context);
63
+ }
64
+ }
65
+ /**
66
+ * Resource management errors
67
+ */
68
+ export class ResourceError extends APIError {
69
+ constructor(message, code, suggestions, context) {
70
+ super(message, code, suggestions, context);
71
+ }
72
+ }
73
+ /**
74
+ * Model compatibility errors
75
+ */
76
+ export class ModelCompatibilityError extends APIError {
77
+ constructor(message, code, suggestions, context) {
78
+ super(message, code, suggestions, context);
79
+ }
80
+ }
81
+ /**
82
+ * Error factory for creating user-friendly errors from internal errors
83
+ * Requirements: 5.3 - Map internal errors to clear guidance
84
+ */
85
+ export class ErrorFactory {
86
+ /**
87
+ * Create user-friendly ingestion error from internal error
88
+ */
89
+ static createIngestionError(error, context) {
90
+ const errorMessage = error instanceof Error ? error.message : String(error);
91
+ // Handle common error scenarios with specific guidance
92
+ if (errorMessage.includes('ENOENT') || errorMessage.includes('no such file')) {
93
+ if (context === 'path_validation') {
94
+ return new IngestionError(`Directory or file path does not exist: ${errorMessage}`, 'PATH_NOT_FOUND', [
95
+ 'Check that the path exists and is accessible',
96
+ 'Ensure you have read permissions for the directory',
97
+ 'Use an absolute path if the relative path is not working'
98
+ ], context);
99
+ }
100
+ else {
101
+ return new IngestionError(`Required files not found during ${context}`, 'FILES_NOT_FOUND', [
102
+ 'Ensure the base directory exists and is writable',
103
+ 'Check file permissions in the target directory',
104
+ 'Try using an absolute path instead of a relative path'
105
+ ], context);
106
+ }
107
+ }
108
+ if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
109
+ return new IngestionError(`Permission denied during ${context}`, 'PERMISSION_DENIED', [
110
+ 'Check that you have write permissions to the directory',
111
+ 'Try running with appropriate permissions',
112
+ 'Ensure the directory is not read-only'
113
+ ], context);
114
+ }
115
+ if (errorMessage.includes('ENOSPC') || errorMessage.includes('no space left')) {
116
+ return new IngestionError(`Insufficient disk space during ${context}`, 'DISK_SPACE_FULL', [
117
+ 'Free up disk space in the target directory',
118
+ 'Choose a different location with more available space',
119
+ 'Check disk usage with your system tools'
120
+ ], context);
121
+ }
122
+ if (errorMessage.includes('model') && errorMessage.includes('version')) {
123
+ return new ModelCompatibilityError(`Embedding model compatibility issue: ${errorMessage}`, 'MODEL_COMPATIBILITY', [
124
+ 'Run pipeline.rebuildIndex() to rebuild with the current model',
125
+ 'Or specify the same model that was used during original ingestion',
126
+ 'Check the model configuration in your setup'
127
+ ], context);
128
+ }
129
+ if (errorMessage.includes('embedding') || errorMessage.includes('model')) {
130
+ return new IngestionError(`Embedding model initialization failed: ${errorMessage}`, 'MODEL_INIT_FAILED', [
131
+ 'Check your internet connection for model downloads',
132
+ 'Ensure you have sufficient memory available',
133
+ 'Try specifying a different embedding model',
134
+ 'Check that the model name is correct and supported'
135
+ ], context);
136
+ }
137
+ if (errorMessage.includes('database') || errorMessage.includes('sqlite')) {
138
+ return new IngestionError(`Database initialization failed: ${errorMessage}`, 'DATABASE_ERROR', [
139
+ 'Check that the database file is not corrupted',
140
+ 'Ensure the directory is writable',
141
+ 'Try deleting the database file to start fresh',
142
+ 'Check for sufficient disk space'
143
+ ], context);
144
+ }
145
+ // Generic error with basic suggestions
146
+ return new IngestionError(`${context} failed: ${errorMessage}`, 'GENERAL_ERROR', [
147
+ 'Check the error message above for specific details',
148
+ 'Ensure all file paths are correct and accessible',
149
+ 'Verify you have necessary permissions',
150
+ 'Try the operation again or contact support if the issue persists'
151
+ ], context);
152
+ }
153
+ /**
154
+ * Create user-friendly search error from internal error
155
+ */
156
+ static createSearchError(error, context) {
157
+ const errorMessage = error instanceof Error ? error.message : String(error);
158
+ // Handle common search error scenarios
159
+ if (context === 'missing_database') {
160
+ return new SearchError(`Database file not found`, 'DATABASE_NOT_FOUND', [
161
+ 'Run ingestion first to create the database: pipeline.ingestDirectory("./docs/")',
162
+ 'Check that the database path is correct',
163
+ 'Ensure the ingestion process completed successfully'
164
+ ], context);
165
+ }
166
+ if (context === 'missing_index') {
167
+ return new SearchError(`Vector index file not found`, 'INDEX_NOT_FOUND', [
168
+ 'Run ingestion first to create the index: pipeline.ingestDirectory("./docs/")',
169
+ 'Check that the index path is correct',
170
+ 'Ensure the ingestion process completed successfully'
171
+ ], context);
172
+ }
173
+ if (context === 'missing_model_info') {
174
+ return new SearchError('No embedding model information found in database. The database may be from an older version or corrupted.', 'MODEL_INFO_NOT_FOUND', [
175
+ 'Run ingestion again to store model information: pipeline.ingestDirectory("./docs/")',
176
+ 'If the problem persists, delete the database and index files and run ingestion from scratch',
177
+ 'Check that the database was created with a compatible version of the library'
178
+ ], context);
179
+ }
180
+ if (context === 'model_loading') {
181
+ return new SearchError(`Failed to load embedding model: ${errorMessage}`, 'MODEL_LOADING_FAILED', [
182
+ 'Check that the model name is correct and supported',
183
+ 'Ensure you have internet connection for model download',
184
+ 'Try running ingestion again with a supported model',
185
+ 'Check the model configuration in your setup'
186
+ ], context);
187
+ }
188
+ if (context === 'model_compatibility' || (errorMessage.includes('model') && errorMessage.includes('mismatch'))) {
189
+ return new ModelCompatibilityError(`Model compatibility issue detected: ${errorMessage}`, 'MODEL_COMPATIBILITY', [
190
+ 'The stored model information doesn\'t match the current configuration',
191
+ 'Run pipeline.rebuildIndex() to rebuild with the current model',
192
+ 'Or ensure you\'re using the same model that was used during ingestion',
193
+ 'Check that the index and database files are from the same ingestion run'
194
+ ], context);
195
+ }
196
+ if (errorMessage.includes('ENOENT') || errorMessage.includes('no such file')) {
197
+ return new SearchError(`Required files not found: ${errorMessage}`, 'FILES_NOT_FOUND', [
198
+ 'Run ingestion first to create the required files',
199
+ 'Check that the file paths are correct',
200
+ 'Ensure you have read permissions for the files'
201
+ ], context);
202
+ }
203
+ if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
204
+ return new SearchError(`Permission denied: ${errorMessage}`, 'PERMISSION_DENIED', [
205
+ 'Check that you have read permissions for the database and index files',
206
+ 'Ensure the files are not locked by another process',
207
+ 'Try running with appropriate permissions'
208
+ ], context);
209
+ }
210
+ if (errorMessage.includes('database') || errorMessage.includes('sqlite')) {
211
+ return new SearchError(`Database error: ${errorMessage}`, 'DATABASE_ERROR', [
212
+ 'Check that the database file is not corrupted',
213
+ 'Ensure no other processes are using the database',
214
+ 'Try recreating the database by running ingestion again'
215
+ ], context);
216
+ }
217
+ // Generic error with basic suggestions
218
+ return new SearchError(`Search engine ${context} failed: ${errorMessage}`, 'GENERAL_ERROR', [
219
+ 'Check the error message above for specific details',
220
+ 'Ensure all required files exist and are accessible',
221
+ 'Try running ingestion first if you haven\'t already',
222
+ 'Contact support if the issue persists'
223
+ ], context);
224
+ }
225
+ /**
226
+ * Create user-friendly resource error from internal error
227
+ */
228
+ static createResourceError(error, context) {
229
+ const errorMessage = error instanceof Error ? error.message : String(error);
230
+ if (errorMessage.includes('initialization')) {
231
+ return new ResourceError(`Resource initialization failed: ${errorMessage}`, 'INITIALIZATION_FAILED', [
232
+ 'Check that all required files exist and are accessible',
233
+ 'Ensure you have proper permissions for the resource files',
234
+ 'Try cleaning up and reinitializing the resources',
235
+ 'Check for sufficient disk space and memory'
236
+ ], context);
237
+ }
238
+ if (errorMessage.includes('cleanup')) {
239
+ return new ResourceError(`Resource cleanup failed: ${errorMessage}`, 'CLEANUP_FAILED', [
240
+ 'Some resources may not have been properly released',
241
+ 'Try restarting the application to ensure clean state',
242
+ 'Check for any locked files or processes',
243
+ 'This may not affect functionality but could cause resource leaks'
244
+ ], context);
245
+ }
246
+ // Generic resource error
247
+ return new ResourceError(`Resource management error: ${errorMessage}`, 'RESOURCE_ERROR', [
248
+ 'Check the error message above for specific details',
249
+ 'Try restarting the application',
250
+ 'Ensure sufficient system resources are available',
251
+ 'Contact support if the issue persists'
252
+ ], context);
253
+ }
254
+ }
255
+ /**
256
+ * Common error scenarios with predefined messages and suggestions
257
+ * Requirements: 5.3 - Add specific error handling for common scenarios
258
+ */
259
+ export const CommonErrors = {
260
+ /**
261
+ * Error when trying to search without running ingestion first
262
+ */
263
+ NO_DOCUMENTS_INGESTED: new SearchError('No documents found to search. Run ingestion first.', 'NO_DOCUMENTS', [
264
+ 'Call pipeline.ingestDirectory("./docs/") to add documents',
265
+ 'Check that your document directory contains .md, .txt, or .mdx files',
266
+ 'Ensure the ingestion process completed successfully'
267
+ ], 'search_initialization'),
268
+ /**
269
+ * Error when model versions don't match
270
+ */
271
+ MODEL_VERSION_MISMATCH: new ModelCompatibilityError('Embedding model version mismatch detected between stored index and current configuration.', 'MODEL_MISMATCH', [
272
+ 'Run pipeline.rebuildIndex() to rebuild with current model',
273
+ 'Or specify the same model used during ingestion',
274
+ 'Check your model configuration settings'
275
+ ], 'model_validation'),
276
+ /**
277
+ * Error when required files are missing
278
+ */
279
+ MISSING_REQUIRED_FILES: new SearchError('Required database or index files are missing.', 'MISSING_FILES', [
280
+ 'Run ingestion first: pipeline.ingestDirectory("./docs/")',
281
+ 'Check that the file paths are correct',
282
+ 'Ensure the ingestion process completed without errors'
283
+ ], 'file_validation'),
284
+ /**
285
+ * Error when initialization fails
286
+ */
287
+ INITIALIZATION_FAILED: new ResourceError('Failed to initialize required resources.', 'INIT_FAILED', [
288
+ 'Check that all file paths are correct and accessible',
289
+ 'Ensure you have proper read/write permissions',
290
+ 'Try running ingestion first if this is a new setup',
291
+ 'Check for sufficient disk space and memory'
292
+ ], 'resource_initialization')
293
+ };
294
+ /**
295
+ * Utility function to handle and log errors appropriately
296
+ */
297
+ export function handleAPIError(error, context, operation) {
298
+ let apiError;
299
+ if (error instanceof APIError) {
300
+ apiError = error;
301
+ }
302
+ else {
303
+ switch (operation) {
304
+ case 'ingestion':
305
+ apiError = ErrorFactory.createIngestionError(error, context);
306
+ break;
307
+ case 'search':
308
+ apiError = ErrorFactory.createSearchError(error, context);
309
+ break;
310
+ case 'resource':
311
+ apiError = ErrorFactory.createResourceError(error, context);
312
+ break;
313
+ default:
314
+ apiError = new ResourceError(`Unexpected error in ${context}: ${error instanceof Error ? error.message : String(error)}`, 'UNEXPECTED_ERROR', ['Contact support with the error details above'], context);
315
+ }
316
+ }
317
+ apiError.logError();
318
+ throw apiError;
319
+ }
320
+ //# sourceMappingURL=api-errors.js.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Run document ingestion from CLI
3
+ * @param path - File or directory path to ingest
4
+ * @param options - CLI options including model selection
5
+ */
6
+ export declare function runIngest(path: string, options?: Record<string, any>): Promise<void>;
7
+ /**
8
+ * Run index rebuild from CLI
9
+ */
10
+ export declare function runRebuild(): Promise<void>;
11
+ //# sourceMappingURL=indexer.d.ts.map