@hazeljs/rag 0.2.0-alpha.1

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 (379) hide show
  1. package/LICENSE +192 -0
  2. package/README.md +504 -0
  3. package/dist/__tests__/graph/community-detector.test.d.ts +2 -0
  4. package/dist/__tests__/graph/community-detector.test.d.ts.map +1 -0
  5. package/dist/__tests__/graph/community-detector.test.js +87 -0
  6. package/dist/__tests__/graph/community-detector.test.js.map +1 -0
  7. package/dist/__tests__/graph/community-summarizer.test.d.ts +2 -0
  8. package/dist/__tests__/graph/community-summarizer.test.d.ts.map +1 -0
  9. package/dist/__tests__/graph/community-summarizer.test.js +131 -0
  10. package/dist/__tests__/graph/community-summarizer.test.js.map +1 -0
  11. package/dist/__tests__/graph/entity-extractor.test.d.ts +2 -0
  12. package/dist/__tests__/graph/entity-extractor.test.d.ts.map +1 -0
  13. package/dist/__tests__/graph/entity-extractor.test.js +129 -0
  14. package/dist/__tests__/graph/entity-extractor.test.js.map +1 -0
  15. package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts +2 -0
  16. package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts.map +1 -0
  17. package/dist/__tests__/graph/graph-rag-pipeline.test.js +158 -0
  18. package/dist/__tests__/graph/graph-rag-pipeline.test.js.map +1 -0
  19. package/dist/__tests__/graph/knowledge-graph.test.d.ts +2 -0
  20. package/dist/__tests__/graph/knowledge-graph.test.d.ts.map +1 -0
  21. package/dist/__tests__/graph/knowledge-graph.test.js +208 -0
  22. package/dist/__tests__/graph/knowledge-graph.test.js.map +1 -0
  23. package/dist/__tests__/loaders/base.loader.test.d.ts +2 -0
  24. package/dist/__tests__/loaders/base.loader.test.d.ts.map +1 -0
  25. package/dist/__tests__/loaders/base.loader.test.js +114 -0
  26. package/dist/__tests__/loaders/base.loader.test.js.map +1 -0
  27. package/dist/__tests__/loaders/csv-file.loader.test.d.ts +2 -0
  28. package/dist/__tests__/loaders/csv-file.loader.test.d.ts.map +1 -0
  29. package/dist/__tests__/loaders/csv-file.loader.test.js +98 -0
  30. package/dist/__tests__/loaders/csv-file.loader.test.js.map +1 -0
  31. package/dist/__tests__/loaders/directory.loader.test.d.ts +2 -0
  32. package/dist/__tests__/loaders/directory.loader.test.d.ts.map +1 -0
  33. package/dist/__tests__/loaders/directory.loader.test.js +154 -0
  34. package/dist/__tests__/loaders/directory.loader.test.js.map +1 -0
  35. package/dist/__tests__/loaders/html-file.loader.test.d.ts +2 -0
  36. package/dist/__tests__/loaders/html-file.loader.test.d.ts.map +1 -0
  37. package/dist/__tests__/loaders/html-file.loader.test.js +93 -0
  38. package/dist/__tests__/loaders/html-file.loader.test.js.map +1 -0
  39. package/dist/__tests__/loaders/json-file.loader.test.d.ts +2 -0
  40. package/dist/__tests__/loaders/json-file.loader.test.d.ts.map +1 -0
  41. package/dist/__tests__/loaders/json-file.loader.test.js +84 -0
  42. package/dist/__tests__/loaders/json-file.loader.test.js.map +1 -0
  43. package/dist/__tests__/loaders/markdown-file.loader.test.d.ts +2 -0
  44. package/dist/__tests__/loaders/markdown-file.loader.test.d.ts.map +1 -0
  45. package/dist/__tests__/loaders/markdown-file.loader.test.js +83 -0
  46. package/dist/__tests__/loaders/markdown-file.loader.test.js.map +1 -0
  47. package/dist/__tests__/loaders/text-file.loader.test.d.ts +2 -0
  48. package/dist/__tests__/loaders/text-file.loader.test.d.ts.map +1 -0
  49. package/dist/__tests__/loaders/text-file.loader.test.js +50 -0
  50. package/dist/__tests__/loaders/text-file.loader.test.js.map +1 -0
  51. package/dist/__tests__/rag-pipeline.test.d.ts +2 -0
  52. package/dist/__tests__/rag-pipeline.test.d.ts.map +1 -0
  53. package/dist/__tests__/rag-pipeline.test.js +210 -0
  54. package/dist/__tests__/rag-pipeline.test.js.map +1 -0
  55. package/dist/__tests__/retrieval/bm25.test.d.ts +2 -0
  56. package/dist/__tests__/retrieval/bm25.test.d.ts.map +1 -0
  57. package/dist/__tests__/retrieval/bm25.test.js +86 -0
  58. package/dist/__tests__/retrieval/bm25.test.js.map +1 -0
  59. package/dist/__tests__/retrieval/hybrid-search.test.d.ts +2 -0
  60. package/dist/__tests__/retrieval/hybrid-search.test.d.ts.map +1 -0
  61. package/dist/__tests__/retrieval/hybrid-search.test.js +85 -0
  62. package/dist/__tests__/retrieval/hybrid-search.test.js.map +1 -0
  63. package/dist/__tests__/retrieval/multi-query.test.d.ts +2 -0
  64. package/dist/__tests__/retrieval/multi-query.test.d.ts.map +1 -0
  65. package/dist/__tests__/retrieval/multi-query.test.js +90 -0
  66. package/dist/__tests__/retrieval/multi-query.test.js.map +1 -0
  67. package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts +2 -0
  68. package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts.map +1 -0
  69. package/dist/__tests__/text-splitters/recursive-text-splitter.test.js +97 -0
  70. package/dist/__tests__/text-splitters/recursive-text-splitter.test.js.map +1 -0
  71. package/dist/__tests__/utils/similarity.test.d.ts +2 -0
  72. package/dist/__tests__/utils/similarity.test.d.ts.map +1 -0
  73. package/dist/__tests__/utils/similarity.test.js +47 -0
  74. package/dist/__tests__/utils/similarity.test.js.map +1 -0
  75. package/dist/agentic/agentic-rag.service.d.ts +49 -0
  76. package/dist/agentic/agentic-rag.service.d.ts.map +1 -0
  77. package/dist/agentic/agentic-rag.service.js +149 -0
  78. package/dist/agentic/agentic-rag.service.js.map +1 -0
  79. package/dist/agentic/decorators/active-learning.decorator.d.ts +19 -0
  80. package/dist/agentic/decorators/active-learning.decorator.d.ts.map +1 -0
  81. package/dist/agentic/decorators/active-learning.decorator.js +98 -0
  82. package/dist/agentic/decorators/active-learning.decorator.js.map +1 -0
  83. package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts +17 -0
  84. package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts.map +1 -0
  85. package/dist/agentic/decorators/adaptive-retrieval.decorator.js +103 -0
  86. package/dist/agentic/decorators/adaptive-retrieval.decorator.js.map +1 -0
  87. package/dist/agentic/decorators/cached.decorator.d.ts +18 -0
  88. package/dist/agentic/decorators/cached.decorator.d.ts.map +1 -0
  89. package/dist/agentic/decorators/cached.decorator.js +93 -0
  90. package/dist/agentic/decorators/cached.decorator.js.map +1 -0
  91. package/dist/agentic/decorators/context-aware.decorator.d.ts +16 -0
  92. package/dist/agentic/decorators/context-aware.decorator.d.ts.map +1 -0
  93. package/dist/agentic/decorators/context-aware.decorator.js +169 -0
  94. package/dist/agentic/decorators/context-aware.decorator.js.map +1 -0
  95. package/dist/agentic/decorators/corrective-rag.decorator.d.ts +16 -0
  96. package/dist/agentic/decorators/corrective-rag.decorator.d.ts.map +1 -0
  97. package/dist/agentic/decorators/corrective-rag.decorator.js +142 -0
  98. package/dist/agentic/decorators/corrective-rag.decorator.js.map +1 -0
  99. package/dist/agentic/decorators/hyde.decorator.d.ts +15 -0
  100. package/dist/agentic/decorators/hyde.decorator.d.ts.map +1 -0
  101. package/dist/agentic/decorators/hyde.decorator.js +91 -0
  102. package/dist/agentic/decorators/hyde.decorator.js.map +1 -0
  103. package/dist/agentic/decorators/index.d.ts +16 -0
  104. package/dist/agentic/decorators/index.d.ts.map +1 -0
  105. package/dist/agentic/decorators/index.js +32 -0
  106. package/dist/agentic/decorators/index.js.map +1 -0
  107. package/dist/agentic/decorators/multi-hop.decorator.d.ts +15 -0
  108. package/dist/agentic/decorators/multi-hop.decorator.d.ts.map +1 -0
  109. package/dist/agentic/decorators/multi-hop.decorator.js +109 -0
  110. package/dist/agentic/decorators/multi-hop.decorator.js.map +1 -0
  111. package/dist/agentic/decorators/query-planner.decorator.d.ts +20 -0
  112. package/dist/agentic/decorators/query-planner.decorator.d.ts.map +1 -0
  113. package/dist/agentic/decorators/query-planner.decorator.js +213 -0
  114. package/dist/agentic/decorators/query-planner.decorator.js.map +1 -0
  115. package/dist/agentic/decorators/query-rewriter.decorator.d.ts +16 -0
  116. package/dist/agentic/decorators/query-rewriter.decorator.d.ts.map +1 -0
  117. package/dist/agentic/decorators/query-rewriter.decorator.js +143 -0
  118. package/dist/agentic/decorators/query-rewriter.decorator.js.map +1 -0
  119. package/dist/agentic/decorators/self-reflective.decorator.d.ts +20 -0
  120. package/dist/agentic/decorators/self-reflective.decorator.d.ts.map +1 -0
  121. package/dist/agentic/decorators/self-reflective.decorator.js +189 -0
  122. package/dist/agentic/decorators/self-reflective.decorator.js.map +1 -0
  123. package/dist/agentic/decorators/source-verification.decorator.d.ts +15 -0
  124. package/dist/agentic/decorators/source-verification.decorator.d.ts.map +1 -0
  125. package/dist/agentic/decorators/source-verification.decorator.js +121 -0
  126. package/dist/agentic/decorators/source-verification.decorator.js.map +1 -0
  127. package/dist/agentic/index.d.ts +9 -0
  128. package/dist/agentic/index.d.ts.map +1 -0
  129. package/dist/agentic/index.js +25 -0
  130. package/dist/agentic/index.js.map +1 -0
  131. package/dist/agentic/types.d.ts +210 -0
  132. package/dist/agentic/types.d.ts.map +1 -0
  133. package/dist/agentic/types.js +7 -0
  134. package/dist/agentic/types.js.map +1 -0
  135. package/dist/decorators/embeddable.decorator.d.ts +31 -0
  136. package/dist/decorators/embeddable.decorator.d.ts.map +1 -0
  137. package/dist/decorators/embeddable.decorator.js +44 -0
  138. package/dist/decorators/embeddable.decorator.js.map +1 -0
  139. package/dist/decorators/rag.decorator.d.ts +58 -0
  140. package/dist/decorators/rag.decorator.d.ts.map +1 -0
  141. package/dist/decorators/rag.decorator.js +78 -0
  142. package/dist/decorators/rag.decorator.js.map +1 -0
  143. package/dist/decorators/semantic-search.decorator.d.ts +69 -0
  144. package/dist/decorators/semantic-search.decorator.d.ts.map +1 -0
  145. package/dist/decorators/semantic-search.decorator.js +116 -0
  146. package/dist/decorators/semantic-search.decorator.js.map +1 -0
  147. package/dist/embeddings/cohere-embeddings.d.ts +33 -0
  148. package/dist/embeddings/cohere-embeddings.d.ts.map +1 -0
  149. package/dist/embeddings/cohere-embeddings.js +91 -0
  150. package/dist/embeddings/cohere-embeddings.js.map +1 -0
  151. package/dist/embeddings/openai-embeddings.d.ts +21 -0
  152. package/dist/embeddings/openai-embeddings.d.ts.map +1 -0
  153. package/dist/embeddings/openai-embeddings.js +53 -0
  154. package/dist/embeddings/openai-embeddings.js.map +1 -0
  155. package/dist/graph/community-detector.d.ts +45 -0
  156. package/dist/graph/community-detector.d.ts.map +1 -0
  157. package/dist/graph/community-detector.js +153 -0
  158. package/dist/graph/community-detector.js.map +1 -0
  159. package/dist/graph/community-summarizer.d.ts +41 -0
  160. package/dist/graph/community-summarizer.d.ts.map +1 -0
  161. package/dist/graph/community-summarizer.js +119 -0
  162. package/dist/graph/community-summarizer.js.map +1 -0
  163. package/dist/graph/entity-extractor.d.ts +47 -0
  164. package/dist/graph/entity-extractor.d.ts.map +1 -0
  165. package/dist/graph/entity-extractor.js +224 -0
  166. package/dist/graph/entity-extractor.js.map +1 -0
  167. package/dist/graph/graph-rag-pipeline.d.ts +83 -0
  168. package/dist/graph/graph-rag-pipeline.d.ts.map +1 -0
  169. package/dist/graph/graph-rag-pipeline.js +390 -0
  170. package/dist/graph/graph-rag-pipeline.js.map +1 -0
  171. package/dist/graph/graph.types.d.ts +186 -0
  172. package/dist/graph/graph.types.d.ts.map +1 -0
  173. package/dist/graph/graph.types.js +20 -0
  174. package/dist/graph/graph.types.js.map +1 -0
  175. package/dist/graph/index.d.ts +15 -0
  176. package/dist/graph/index.d.ts.map +1 -0
  177. package/dist/graph/index.js +31 -0
  178. package/dist/graph/index.js.map +1 -0
  179. package/dist/graph/knowledge-graph.d.ts +57 -0
  180. package/dist/graph/knowledge-graph.d.ts.map +1 -0
  181. package/dist/graph/knowledge-graph.js +198 -0
  182. package/dist/graph/knowledge-graph.js.map +1 -0
  183. package/dist/index.d.ts +29 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +58 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/loaders/base.loader.d.ts +108 -0
  188. package/dist/loaders/base.loader.d.ts.map +1 -0
  189. package/dist/loaders/base.loader.js +123 -0
  190. package/dist/loaders/base.loader.js.map +1 -0
  191. package/dist/loaders/csv-file.loader.d.ts +61 -0
  192. package/dist/loaders/csv-file.loader.d.ts.map +1 -0
  193. package/dist/loaders/csv-file.loader.js +162 -0
  194. package/dist/loaders/csv-file.loader.js.map +1 -0
  195. package/dist/loaders/directory.loader.d.ts +67 -0
  196. package/dist/loaders/directory.loader.d.ts.map +1 -0
  197. package/dist/loaders/directory.loader.js +163 -0
  198. package/dist/loaders/directory.loader.js.map +1 -0
  199. package/dist/loaders/docx.loader.d.ts +52 -0
  200. package/dist/loaders/docx.loader.d.ts.map +1 -0
  201. package/dist/loaders/docx.loader.js +110 -0
  202. package/dist/loaders/docx.loader.js.map +1 -0
  203. package/dist/loaders/github.loader.d.ts +114 -0
  204. package/dist/loaders/github.loader.d.ts.map +1 -0
  205. package/dist/loaders/github.loader.js +217 -0
  206. package/dist/loaders/github.loader.js.map +1 -0
  207. package/dist/loaders/html-file.loader.d.ts +55 -0
  208. package/dist/loaders/html-file.loader.d.ts.map +1 -0
  209. package/dist/loaders/html-file.loader.js +170 -0
  210. package/dist/loaders/html-file.loader.js.map +1 -0
  211. package/dist/loaders/index.d.ts +52 -0
  212. package/dist/loaders/index.d.ts.map +1 -0
  213. package/dist/loaders/index.js +61 -0
  214. package/dist/loaders/index.js.map +1 -0
  215. package/dist/loaders/json-file.loader.d.ts +51 -0
  216. package/dist/loaders/json-file.loader.d.ts.map +1 -0
  217. package/dist/loaders/json-file.loader.js +100 -0
  218. package/dist/loaders/json-file.loader.js.map +1 -0
  219. package/dist/loaders/markdown-file.loader.d.ts +61 -0
  220. package/dist/loaders/markdown-file.loader.d.ts.map +1 -0
  221. package/dist/loaders/markdown-file.loader.js +148 -0
  222. package/dist/loaders/markdown-file.loader.js.map +1 -0
  223. package/dist/loaders/pdf.loader.d.ts +64 -0
  224. package/dist/loaders/pdf.loader.d.ts.map +1 -0
  225. package/dist/loaders/pdf.loader.js +163 -0
  226. package/dist/loaders/pdf.loader.js.map +1 -0
  227. package/dist/loaders/text-file.loader.d.ts +39 -0
  228. package/dist/loaders/text-file.loader.d.ts.map +1 -0
  229. package/dist/loaders/text-file.loader.js +69 -0
  230. package/dist/loaders/text-file.loader.js.map +1 -0
  231. package/dist/loaders/web.loader.d.ts +87 -0
  232. package/dist/loaders/web.loader.d.ts.map +1 -0
  233. package/dist/loaders/web.loader.js +194 -0
  234. package/dist/loaders/web.loader.js.map +1 -0
  235. package/dist/loaders/youtube-transcript.loader.d.ts +92 -0
  236. package/dist/loaders/youtube-transcript.loader.d.ts.map +1 -0
  237. package/dist/loaders/youtube-transcript.loader.js +254 -0
  238. package/dist/loaders/youtube-transcript.loader.js.map +1 -0
  239. package/dist/memory/index.d.ts +11 -0
  240. package/dist/memory/index.d.ts.map +1 -0
  241. package/dist/memory/index.js +31 -0
  242. package/dist/memory/index.js.map +1 -0
  243. package/dist/memory/memory-manager.d.ts +96 -0
  244. package/dist/memory/memory-manager.d.ts.map +1 -0
  245. package/dist/memory/memory-manager.js +369 -0
  246. package/dist/memory/memory-manager.js.map +1 -0
  247. package/dist/memory/memory-store.interface.d.ts +73 -0
  248. package/dist/memory/memory-store.interface.d.ts.map +1 -0
  249. package/dist/memory/memory-store.interface.js +6 -0
  250. package/dist/memory/memory-store.interface.js.map +1 -0
  251. package/dist/memory/stores/buffer-memory.d.ts +47 -0
  252. package/dist/memory/stores/buffer-memory.d.ts.map +1 -0
  253. package/dist/memory/stores/buffer-memory.js +280 -0
  254. package/dist/memory/stores/buffer-memory.js.map +1 -0
  255. package/dist/memory/stores/hybrid-memory.d.ts +49 -0
  256. package/dist/memory/stores/hybrid-memory.d.ts.map +1 -0
  257. package/dist/memory/stores/hybrid-memory.js +194 -0
  258. package/dist/memory/stores/hybrid-memory.js.map +1 -0
  259. package/dist/memory/stores/vector-memory.d.ts +48 -0
  260. package/dist/memory/stores/vector-memory.d.ts.map +1 -0
  261. package/dist/memory/stores/vector-memory.js +312 -0
  262. package/dist/memory/stores/vector-memory.js.map +1 -0
  263. package/dist/memory/types.d.ts +119 -0
  264. package/dist/memory/types.d.ts.map +1 -0
  265. package/dist/memory/types.js +18 -0
  266. package/dist/memory/types.js.map +1 -0
  267. package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts +8 -0
  268. package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts.map +1 -0
  269. package/dist/prompts/agentic/adaptive-retrieval.prompt.js +27 -0
  270. package/dist/prompts/agentic/adaptive-retrieval.prompt.js.map +1 -0
  271. package/dist/prompts/agentic/corrective-rag.prompt.d.ts +9 -0
  272. package/dist/prompts/agentic/corrective-rag.prompt.d.ts.map +1 -0
  273. package/dist/prompts/agentic/corrective-rag.prompt.js +23 -0
  274. package/dist/prompts/agentic/corrective-rag.prompt.js.map +1 -0
  275. package/dist/prompts/agentic/hyde.prompt.d.ts +9 -0
  276. package/dist/prompts/agentic/hyde.prompt.d.ts.map +1 -0
  277. package/dist/prompts/agentic/hyde.prompt.js +18 -0
  278. package/dist/prompts/agentic/hyde.prompt.js.map +1 -0
  279. package/dist/prompts/agentic/multi-hop.prompt.d.ts +15 -0
  280. package/dist/prompts/agentic/multi-hop.prompt.d.ts.map +1 -0
  281. package/dist/prompts/agentic/multi-hop.prompt.js +38 -0
  282. package/dist/prompts/agentic/multi-hop.prompt.js.map +1 -0
  283. package/dist/prompts/agentic/query-planner.prompt.d.ts +8 -0
  284. package/dist/prompts/agentic/query-planner.prompt.d.ts.map +1 -0
  285. package/dist/prompts/agentic/query-planner.prompt.js +30 -0
  286. package/dist/prompts/agentic/query-planner.prompt.js.map +1 -0
  287. package/dist/prompts/agentic/query-rewriter.prompt.d.ts +10 -0
  288. package/dist/prompts/agentic/query-rewriter.prompt.d.ts.map +1 -0
  289. package/dist/prompts/agentic/query-rewriter.prompt.js +17 -0
  290. package/dist/prompts/agentic/query-rewriter.prompt.js.map +1 -0
  291. package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts +10 -0
  292. package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts.map +1 -0
  293. package/dist/prompts/agentic/self-reflective-improve.prompt.js +24 -0
  294. package/dist/prompts/agentic/self-reflective-improve.prompt.js.map +1 -0
  295. package/dist/prompts/agentic/self-reflective.prompt.d.ts +9 -0
  296. package/dist/prompts/agentic/self-reflective.prompt.d.ts.map +1 -0
  297. package/dist/prompts/agentic/self-reflective.prompt.js +32 -0
  298. package/dist/prompts/agentic/self-reflective.prompt.js.map +1 -0
  299. package/dist/prompts/community-summary.prompt.d.ts +9 -0
  300. package/dist/prompts/community-summary.prompt.d.ts.map +1 -0
  301. package/dist/prompts/community-summary.prompt.js +30 -0
  302. package/dist/prompts/community-summary.prompt.js.map +1 -0
  303. package/dist/prompts/entity-extraction.prompt.d.ts +10 -0
  304. package/dist/prompts/entity-extraction.prompt.d.ts.map +1 -0
  305. package/dist/prompts/entity-extraction.prompt.js +39 -0
  306. package/dist/prompts/entity-extraction.prompt.js.map +1 -0
  307. package/dist/prompts/graph-search.prompt.d.ts +10 -0
  308. package/dist/prompts/graph-search.prompt.d.ts.map +1 -0
  309. package/dist/prompts/graph-search.prompt.js +23 -0
  310. package/dist/prompts/graph-search.prompt.js.map +1 -0
  311. package/dist/prompts/index.d.ts +13 -0
  312. package/dist/prompts/index.d.ts.map +1 -0
  313. package/dist/prompts/index.js +29 -0
  314. package/dist/prompts/index.js.map +1 -0
  315. package/dist/prompts/rag-answer.prompt.d.ts +9 -0
  316. package/dist/prompts/rag-answer.prompt.d.ts.map +1 -0
  317. package/dist/prompts/rag-answer.prompt.js +20 -0
  318. package/dist/prompts/rag-answer.prompt.js.map +1 -0
  319. package/dist/rag-pipeline-with-memory.d.ts +68 -0
  320. package/dist/rag-pipeline-with-memory.d.ts.map +1 -0
  321. package/dist/rag-pipeline-with-memory.js +186 -0
  322. package/dist/rag-pipeline-with-memory.js.map +1 -0
  323. package/dist/rag-pipeline.d.ts +59 -0
  324. package/dist/rag-pipeline.d.ts.map +1 -0
  325. package/dist/rag-pipeline.js +181 -0
  326. package/dist/rag-pipeline.js.map +1 -0
  327. package/dist/rag.module.d.ts +26 -0
  328. package/dist/rag.module.d.ts.map +1 -0
  329. package/dist/rag.module.js +40 -0
  330. package/dist/rag.module.js.map +1 -0
  331. package/dist/rag.service.d.ts +96 -0
  332. package/dist/rag.service.d.ts.map +1 -0
  333. package/dist/rag.service.js +173 -0
  334. package/dist/rag.service.js.map +1 -0
  335. package/dist/retrieval/bm25.d.ts +57 -0
  336. package/dist/retrieval/bm25.d.ts.map +1 -0
  337. package/dist/retrieval/bm25.js +106 -0
  338. package/dist/retrieval/bm25.js.map +1 -0
  339. package/dist/retrieval/hybrid-search.d.ts +48 -0
  340. package/dist/retrieval/hybrid-search.d.ts.map +1 -0
  341. package/dist/retrieval/hybrid-search.js +123 -0
  342. package/dist/retrieval/hybrid-search.js.map +1 -0
  343. package/dist/retrieval/multi-query.d.ts +38 -0
  344. package/dist/retrieval/multi-query.d.ts.map +1 -0
  345. package/dist/retrieval/multi-query.js +135 -0
  346. package/dist/retrieval/multi-query.js.map +1 -0
  347. package/dist/text-splitters/recursive-text-splitter.d.ts +21 -0
  348. package/dist/text-splitters/recursive-text-splitter.d.ts.map +1 -0
  349. package/dist/text-splitters/recursive-text-splitter.js +95 -0
  350. package/dist/text-splitters/recursive-text-splitter.js.map +1 -0
  351. package/dist/types/index.d.ts +144 -0
  352. package/dist/types/index.d.ts.map +1 -0
  353. package/dist/types/index.js +16 -0
  354. package/dist/types/index.js.map +1 -0
  355. package/dist/utils/similarity.d.ts +16 -0
  356. package/dist/utils/similarity.d.ts.map +1 -0
  357. package/dist/utils/similarity.js +58 -0
  358. package/dist/utils/similarity.js.map +1 -0
  359. package/dist/vector-stores/chroma.store.d.ts +42 -0
  360. package/dist/vector-stores/chroma.store.d.ts.map +1 -0
  361. package/dist/vector-stores/chroma.store.js +242 -0
  362. package/dist/vector-stores/chroma.store.js.map +1 -0
  363. package/dist/vector-stores/memory-vector-store.d.ts +20 -0
  364. package/dist/vector-stores/memory-vector-store.d.ts.map +1 -0
  365. package/dist/vector-stores/memory-vector-store.js +94 -0
  366. package/dist/vector-stores/memory-vector-store.js.map +1 -0
  367. package/dist/vector-stores/pinecone.store.d.ts +34 -0
  368. package/dist/vector-stores/pinecone.store.d.ts.map +1 -0
  369. package/dist/vector-stores/pinecone.store.js +146 -0
  370. package/dist/vector-stores/pinecone.store.js.map +1 -0
  371. package/dist/vector-stores/qdrant.store.d.ts +33 -0
  372. package/dist/vector-stores/qdrant.store.d.ts.map +1 -0
  373. package/dist/vector-stores/qdrant.store.js +174 -0
  374. package/dist/vector-stores/qdrant.store.js.map +1 -0
  375. package/dist/vector-stores/weaviate.store.d.ts +37 -0
  376. package/dist/vector-stores/weaviate.store.d.ts.map +1 -0
  377. package/dist/vector-stores/weaviate.store.js +226 -0
  378. package/dist/vector-stores/weaviate.store.js.map +1 -0
  379. package/package.json +146 -0
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Base Document Loader
3
+ *
4
+ * Abstract base class for all document loaders in @hazeljs/rag.
5
+ * Every loader:
6
+ * 1. Extends `BaseDocumentLoader`
7
+ * 2. Implements `load(): Promise<Document[]>`
8
+ * 3. May optionally be decorated with `@Loader` for metadata reflection
9
+ *
10
+ * The `@Loader` decorator stores descriptive metadata on the class so that
11
+ * a DocumentLoaderRegistry or DI container can enumerate available loaders,
12
+ * display them in a developer UI, and auto-select the right one by MIME type
13
+ * or file extension.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @Loader({
18
+ * name: 'MyCustomLoader',
19
+ * description: 'Loads .xyz files from a proprietary database',
20
+ * extensions: ['.xyz'],
21
+ * })
22
+ * export class MyCustomLoader extends BaseDocumentLoader {
23
+ * async load(): Promise<Document[]> {
24
+ * return [this.createDocument('content', { source: 'custom' })];
25
+ * }
26
+ * }
27
+ * ```
28
+ */
29
+ import 'reflect-metadata';
30
+ import type { Document, DocumentLoader } from '../types';
31
+ export interface LoaderConfig {
32
+ /** Human-readable name used in logs and the registry. */
33
+ name: string;
34
+ /** Short description of what this loader handles. */
35
+ description?: string;
36
+ /**
37
+ * File extensions this loader handles (with leading dot).
38
+ * @example ['.pdf', '.PDF']
39
+ */
40
+ extensions?: string[];
41
+ /**
42
+ * MIME types this loader handles.
43
+ * @example ['application/pdf']
44
+ */
45
+ mimeTypes?: string[];
46
+ }
47
+ /**
48
+ * Mark a class as a document loader.
49
+ *
50
+ * Stores `LoaderConfig` metadata on the class that can be read at runtime
51
+ * via `getLoaderConfig()`. Applying `@Loader` is optional — any class that
52
+ * extends `BaseDocumentLoader` works without it.
53
+ */
54
+ export declare function Loader(config: LoaderConfig): ClassDecorator;
55
+ /**
56
+ * Read the `@Loader` config from a class.
57
+ * Returns `undefined` if the decorator was not applied.
58
+ */
59
+ export declare function getLoaderConfig(target: object): LoaderConfig | undefined;
60
+ /**
61
+ * Abstract base class for all document loaders.
62
+ *
63
+ * Provides convenience helpers for creating well-formed `Document` objects
64
+ * and normalising metadata. All loaders must implement `load()`.
65
+ */
66
+ export declare abstract class BaseDocumentLoader implements DocumentLoader {
67
+ /** Load documents from the source. */
68
+ abstract load(): Promise<Document[]>;
69
+ /**
70
+ * Convenience factory for creating a `Document` with normalised whitespace.
71
+ *
72
+ * @param content The raw text content.
73
+ * @param metadata Optional metadata attached to the document.
74
+ */
75
+ protected createDocument(content: string, metadata?: Record<string, unknown>): Document;
76
+ /**
77
+ * Split a large string into multiple `Document` objects, one per page or
78
+ * logical section. Useful for loaders that produce multi-page content
79
+ * (PDF, DOCX) where you want one document per page.
80
+ */
81
+ protected createDocuments(pages: string[], baseMetadata?: Record<string, unknown>): Document[];
82
+ }
83
+ /**
84
+ * Simple in-process registry that maps file extensions and MIME types to
85
+ * loader factories. Loaders self-register by calling `registerLoader()`.
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * DocumentLoaderRegistry.register(PdfLoader, () => new PdfLoader({ path: '...' }));
90
+ * const loader = DocumentLoaderRegistry.forExtension('.pdf', { path: 'doc.pdf' });
91
+ * const docs = await loader.load();
92
+ * ```
93
+ */
94
+ type LoaderFactory<T extends BaseDocumentLoader> = (opts: unknown) => T;
95
+ export declare class DocumentLoaderRegistry {
96
+ private static byExtension;
97
+ private static byMimeType;
98
+ /** Register a loader class and factory for all its declared extensions / MIME types. */
99
+ static register<T extends BaseDocumentLoader>(loaderClass: new (...args: unknown[]) => T, factory: LoaderFactory<T>): void;
100
+ /** Get a loader factory by file extension (e.g. `".pdf"`). */
101
+ static forExtension(ext: string, opts?: unknown): BaseDocumentLoader | undefined;
102
+ /** Get a loader factory by MIME type (e.g. `"application/pdf"`). */
103
+ static forMimeType(mimeType: string, opts?: unknown): BaseDocumentLoader | undefined;
104
+ /** List all registered extensions. */
105
+ static registeredExtensions(): string[];
106
+ }
107
+ export {};
108
+ //# sourceMappingURL=base.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.loader.d.ts","sourceRoot":"","sources":["../../src/loaders/base.loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQzD,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAI3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAExE;AAID;;;;;GAKG;AACH,8BAAsB,kBAAmB,YAAW,cAAc;IAChE,sCAAsC;IACtC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEpC;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ;IAOvF;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAE;CAW/F;AAID;;;;;;;;;;GAUG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,kBAAkB,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC;AAExE,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAwD;IAClF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAwD;IAEjF,wFAAwF;IACxF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,kBAAkB,EAC1C,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAC1C,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,IAAI;IAkBP,8DAA8D;IAC9D,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;IAKhF,oEAAoE;IACpE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;IAKpF,sCAAsC;IACtC,MAAM,CAAC,oBAAoB,IAAI,MAAM,EAAE;CAGxC"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * Base Document Loader
4
+ *
5
+ * Abstract base class for all document loaders in @hazeljs/rag.
6
+ * Every loader:
7
+ * 1. Extends `BaseDocumentLoader`
8
+ * 2. Implements `load(): Promise<Document[]>`
9
+ * 3. May optionally be decorated with `@Loader` for metadata reflection
10
+ *
11
+ * The `@Loader` decorator stores descriptive metadata on the class so that
12
+ * a DocumentLoaderRegistry or DI container can enumerate available loaders,
13
+ * display them in a developer UI, and auto-select the right one by MIME type
14
+ * or file extension.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * @Loader({
19
+ * name: 'MyCustomLoader',
20
+ * description: 'Loads .xyz files from a proprietary database',
21
+ * extensions: ['.xyz'],
22
+ * })
23
+ * export class MyCustomLoader extends BaseDocumentLoader {
24
+ * async load(): Promise<Document[]> {
25
+ * return [this.createDocument('content', { source: 'custom' })];
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.DocumentLoaderRegistry = exports.BaseDocumentLoader = void 0;
32
+ exports.Loader = Loader;
33
+ exports.getLoaderConfig = getLoaderConfig;
34
+ require("reflect-metadata");
35
+ // ── Metadata keys ────────────────────────────────────────────────────────────
36
+ const LOADER_METADATA_KEY = Symbol('hazel:rag:loader');
37
+ /**
38
+ * Mark a class as a document loader.
39
+ *
40
+ * Stores `LoaderConfig` metadata on the class that can be read at runtime
41
+ * via `getLoaderConfig()`. Applying `@Loader` is optional — any class that
42
+ * extends `BaseDocumentLoader` works without it.
43
+ */
44
+ function Loader(config) {
45
+ return (target) => {
46
+ Reflect.defineMetadata(LOADER_METADATA_KEY, config, target);
47
+ };
48
+ }
49
+ /**
50
+ * Read the `@Loader` config from a class.
51
+ * Returns `undefined` if the decorator was not applied.
52
+ */
53
+ function getLoaderConfig(target) {
54
+ return Reflect.getMetadata(LOADER_METADATA_KEY, target);
55
+ }
56
+ // ── Base class ───────────────────────────────────────────────────────────────
57
+ /**
58
+ * Abstract base class for all document loaders.
59
+ *
60
+ * Provides convenience helpers for creating well-formed `Document` objects
61
+ * and normalising metadata. All loaders must implement `load()`.
62
+ */
63
+ class BaseDocumentLoader {
64
+ /**
65
+ * Convenience factory for creating a `Document` with normalised whitespace.
66
+ *
67
+ * @param content The raw text content.
68
+ * @param metadata Optional metadata attached to the document.
69
+ */
70
+ createDocument(content, metadata) {
71
+ return {
72
+ content: content.trim(),
73
+ metadata: metadata ?? {},
74
+ };
75
+ }
76
+ /**
77
+ * Split a large string into multiple `Document` objects, one per page or
78
+ * logical section. Useful for loaders that produce multi-page content
79
+ * (PDF, DOCX) where you want one document per page.
80
+ */
81
+ createDocuments(pages, baseMetadata) {
82
+ return pages
83
+ .map((page, idx) => this.createDocument(page, {
84
+ ...baseMetadata,
85
+ pageNumber: idx + 1,
86
+ totalPages: pages.length,
87
+ }))
88
+ .filter((doc) => doc.content.length > 0);
89
+ }
90
+ }
91
+ exports.BaseDocumentLoader = BaseDocumentLoader;
92
+ class DocumentLoaderRegistry {
93
+ /** Register a loader class and factory for all its declared extensions / MIME types. */
94
+ static register(loaderClass, factory) {
95
+ const config = getLoaderConfig(loaderClass);
96
+ if (!config)
97
+ return;
98
+ for (const ext of config.extensions ?? []) {
99
+ DocumentLoaderRegistry.byExtension.set(ext.toLowerCase(), factory);
100
+ }
101
+ for (const mime of config.mimeTypes ?? []) {
102
+ DocumentLoaderRegistry.byMimeType.set(mime.toLowerCase(), factory);
103
+ }
104
+ }
105
+ /** Get a loader factory by file extension (e.g. `".pdf"`). */
106
+ static forExtension(ext, opts) {
107
+ const factory = DocumentLoaderRegistry.byExtension.get(ext.toLowerCase());
108
+ return factory ? factory(opts) : undefined;
109
+ }
110
+ /** Get a loader factory by MIME type (e.g. `"application/pdf"`). */
111
+ static forMimeType(mimeType, opts) {
112
+ const factory = DocumentLoaderRegistry.byMimeType.get(mimeType.toLowerCase());
113
+ return factory ? factory(opts) : undefined;
114
+ }
115
+ /** List all registered extensions. */
116
+ static registeredExtensions() {
117
+ return [...DocumentLoaderRegistry.byExtension.keys()];
118
+ }
119
+ }
120
+ exports.DocumentLoaderRegistry = DocumentLoaderRegistry;
121
+ DocumentLoaderRegistry.byExtension = new Map();
122
+ DocumentLoaderRegistry.byMimeType = new Map();
123
+ //# sourceMappingURL=base.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.loader.js","sourceRoot":"","sources":["../../src/loaders/base.loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * CSVFileLoader
3
+ *
4
+ * Loads a CSV file and converts each row to a `Document`.
5
+ * No external dependency — uses a built-in parser that handles quoted fields
6
+ * and escaped commas.
7
+ *
8
+ * Each row's content is built from either:
9
+ * - A specific `contentColumns` list (concatenated with a separator), or
10
+ * - All columns joined as `key: value` pairs.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // products.csv has columns: id, name, description, price
15
+ * const loader = new CSVFileLoader({
16
+ * path: './products.csv',
17
+ * contentColumns: ['name', 'description'],
18
+ * metadataColumns: ['id', 'price'],
19
+ * });
20
+ * const docs = await loader.load();
21
+ * // docs[0].content === "Product Name\nProduct description here"
22
+ * // docs[0].metadata === { id: '1', price: '9.99', row: 0, source: 'products.csv' }
23
+ * ```
24
+ */
25
+ import { BaseDocumentLoader } from './base.loader';
26
+ import type { Document } from '../types';
27
+ export interface CSVFileLoaderOptions {
28
+ path: string;
29
+ /** Column delimiter. @default ',' */
30
+ delimiter?: string;
31
+ /** Quote character for fields containing delimiters. @default '"' */
32
+ quote?: string;
33
+ /** If true, the first row is a header row. @default true */
34
+ hasHeader?: boolean;
35
+ /**
36
+ * Columns whose values are concatenated to form the document content.
37
+ * If omitted, all columns are used in `key: value` format.
38
+ */
39
+ contentColumns?: string[];
40
+ /** Separator used between content column values. @default '\n' */
41
+ contentSeparator?: string;
42
+ /**
43
+ * Columns included in the document metadata.
44
+ * If omitted, all non-content columns are included.
45
+ */
46
+ metadataColumns?: string[];
47
+ /** Extra metadata merged into every document. */
48
+ metadata?: Record<string, unknown>;
49
+ }
50
+ export declare class CSVFileLoader extends BaseDocumentLoader {
51
+ private readonly opts;
52
+ constructor(options: CSVFileLoaderOptions);
53
+ load(): Promise<Document[]>;
54
+ /**
55
+ * Minimal RFC-4180-compliant CSV parser.
56
+ * Handles quoted fields with embedded commas and escaped quotes.
57
+ */
58
+ private parseCSV;
59
+ private parseLine;
60
+ }
61
+ //# sourceMappingURL=csv-file.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-file.loader.d.ts","sourceRoot":"","sources":["../../src/loaders/csv-file.loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAE,kBAAkB,EAAU,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAMa,aAAc,SAAQ,kBAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;gBAE1C,OAAO,EAAE,oBAAoB;IAcnC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA4DjC;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,SAAS;CAgClB"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ /**
3
+ * CSVFileLoader
4
+ *
5
+ * Loads a CSV file and converts each row to a `Document`.
6
+ * No external dependency — uses a built-in parser that handles quoted fields
7
+ * and escaped commas.
8
+ *
9
+ * Each row's content is built from either:
10
+ * - A specific `contentColumns` list (concatenated with a separator), or
11
+ * - All columns joined as `key: value` pairs.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // products.csv has columns: id, name, description, price
16
+ * const loader = new CSVFileLoader({
17
+ * path: './products.csv',
18
+ * contentColumns: ['name', 'description'],
19
+ * metadataColumns: ['id', 'price'],
20
+ * });
21
+ * const docs = await loader.load();
22
+ * // docs[0].content === "Product Name\nProduct description here"
23
+ * // docs[0].metadata === { id: '1', price: '9.99', row: 0, source: 'products.csv' }
24
+ * ```
25
+ */
26
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
27
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
31
+ };
32
+ var __metadata = (this && this.__metadata) || function (k, v) {
33
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CSVFileLoader = void 0;
37
+ const promises_1 = require("fs/promises");
38
+ const path_1 = require("path");
39
+ const base_loader_1 = require("./base.loader");
40
+ let CSVFileLoader = class CSVFileLoader extends base_loader_1.BaseDocumentLoader {
41
+ constructor(options) {
42
+ super();
43
+ this.opts = {
44
+ path: options.path,
45
+ delimiter: options.delimiter ?? ',',
46
+ quote: options.quote ?? '"',
47
+ hasHeader: options.hasHeader ?? true,
48
+ contentColumns: options.contentColumns ?? [],
49
+ contentSeparator: options.contentSeparator ?? '\n',
50
+ metadataColumns: options.metadataColumns ?? [],
51
+ metadata: options.metadata ?? {},
52
+ };
53
+ }
54
+ async load() {
55
+ const raw = await (0, promises_1.readFile)(this.opts.path, { encoding: 'utf-8' });
56
+ const rows = this.parseCSV(raw);
57
+ if (rows.length === 0)
58
+ return [];
59
+ let headers;
60
+ let dataRows;
61
+ if (this.opts.hasHeader) {
62
+ headers = rows[0];
63
+ dataRows = rows.slice(1);
64
+ }
65
+ else {
66
+ // Generate column names col0, col1, ...
67
+ headers = rows[0].map((_, i) => `col${i}`);
68
+ dataRows = rows;
69
+ }
70
+ const fileName = (0, path_1.basename)(this.opts.path);
71
+ const contentCols = this.opts.contentColumns.length > 0 ? this.opts.contentColumns : headers;
72
+ const metaCols = this.opts.metadataColumns.length > 0
73
+ ? this.opts.metadataColumns
74
+ : headers.filter((h) => !contentCols.includes(h));
75
+ return dataRows
76
+ .map((row, rowIdx) => {
77
+ const obj = {};
78
+ headers.forEach((h, i) => {
79
+ obj[h] = row[i] ?? '';
80
+ });
81
+ // Build content
82
+ const contentParts = contentCols
83
+ .filter((col) => col in obj && obj[col].trim().length > 0)
84
+ .map((col) => contentCols.length === 1
85
+ ? obj[col] // single column: raw value
86
+ : `${col}: ${obj[col]}` // multiple: key: value
87
+ );
88
+ const content = contentParts.join(this.opts.contentSeparator);
89
+ // Build metadata
90
+ const metadata = {
91
+ source: fileName,
92
+ filePath: this.opts.path,
93
+ row: rowIdx,
94
+ loaderType: 'csv',
95
+ ...this.opts.metadata,
96
+ };
97
+ for (const col of metaCols) {
98
+ if (col in obj)
99
+ metadata[col] = obj[col];
100
+ }
101
+ return this.createDocument(content, metadata);
102
+ })
103
+ .filter((doc) => doc.content.length > 0);
104
+ }
105
+ /**
106
+ * Minimal RFC-4180-compliant CSV parser.
107
+ * Handles quoted fields with embedded commas and escaped quotes.
108
+ */
109
+ parseCSV(text) {
110
+ const rows = [];
111
+ const lines = text.split(/\r?\n/);
112
+ for (const line of lines) {
113
+ if (line.trim() === '')
114
+ continue;
115
+ rows.push(this.parseLine(line));
116
+ }
117
+ return rows;
118
+ }
119
+ parseLine(line) {
120
+ const fields = [];
121
+ const { delimiter, quote } = this.opts;
122
+ let field = '';
123
+ let inQuotes = false;
124
+ let i = 0;
125
+ while (i < line.length) {
126
+ const char = line[i];
127
+ if (char === quote) {
128
+ if (inQuotes && line[i + 1] === quote) {
129
+ // Escaped quote inside quoted field
130
+ field += quote;
131
+ i += 2;
132
+ }
133
+ else {
134
+ inQuotes = !inQuotes;
135
+ i++;
136
+ }
137
+ }
138
+ else if (char === delimiter && !inQuotes) {
139
+ fields.push(field);
140
+ field = '';
141
+ i++;
142
+ }
143
+ else {
144
+ field += char;
145
+ i++;
146
+ }
147
+ }
148
+ fields.push(field);
149
+ return fields;
150
+ }
151
+ };
152
+ exports.CSVFileLoader = CSVFileLoader;
153
+ exports.CSVFileLoader = CSVFileLoader = __decorate([
154
+ (0, base_loader_1.Loader)({
155
+ name: 'CSVFileLoader',
156
+ description: 'Loads rows from a CSV file, one document per row.',
157
+ extensions: ['.csv'],
158
+ mimeTypes: ['text/csv'],
159
+ }),
160
+ __metadata("design:paramtypes", [Object])
161
+ ], CSVFileLoader);
162
+ //# sourceMappingURL=csv-file.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-file.loader.js","sourceRoot":"","sources":["../../src/loaders/csv-file.loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * DirectoryLoader
3
+ *
4
+ * Walks a directory (optionally recursively) and loads every file whose
5
+ * extension is matched by a registered loader or the `loaders` map.
6
+ *
7
+ * Supported patterns:
8
+ * 1. **Extension map** (recommended) — pass a `loaders` map of
9
+ * `{ '.pdf': (path) => new PdfLoader({ path }) }` to customise which
10
+ * loader handles which extension.
11
+ * 2. **Auto-detect** — falls back to the built-in file loaders for the
12
+ * common types (.txt, .md, .html, .json, .csv) with default options.
13
+ * 3. **Glob filter** — pass `glob` to only load files matching a pattern.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const loader = new DirectoryLoader({
18
+ * path: './docs',
19
+ * recursive: true,
20
+ * loaders: {
21
+ * '.txt': (p) => new TextFileLoader({ path: p }),
22
+ * '.md': (p) => new MarkdownFileLoader({ path: p, splitByHeading: 'h2' }),
23
+ * '.pdf': (p) => new PdfLoader({ path: p }),
24
+ * },
25
+ * });
26
+ * const docs = await loader.load();
27
+ * ```
28
+ */
29
+ import { BaseDocumentLoader } from './base.loader';
30
+ import type { Document } from '../types';
31
+ import type { BaseDocumentLoader as IBaseDocumentLoader } from './base.loader';
32
+ export type LoaderFactory = (filePath: string) => IBaseDocumentLoader;
33
+ export interface DirectoryLoaderOptions {
34
+ /** Root directory path to scan. */
35
+ path: string;
36
+ /**
37
+ * Map of file extension → loader factory.
38
+ * @example { '.txt': (p) => new TextFileLoader({ path: p }) }
39
+ */
40
+ loaders?: Record<string, LoaderFactory>;
41
+ /** Recurse into sub-directories. @default true */
42
+ recursive?: boolean;
43
+ /**
44
+ * Extensions to include. If provided, only files with these extensions are
45
+ * loaded (even if a loader is registered for other types).
46
+ * @example ['.txt', '.md', '.pdf']
47
+ */
48
+ includeExtensions?: string[];
49
+ /**
50
+ * Extensions to exclude.
51
+ * @example ['.DS_Store', '.gitkeep']
52
+ */
53
+ excludeExtensions?: string[];
54
+ /** Maximum number of files to load (safety limit). @default 1000 */
55
+ maxFiles?: number;
56
+ /** Extra metadata merged into every document produced by this loader. */
57
+ metadata?: Record<string, unknown>;
58
+ }
59
+ export declare class DirectoryLoader extends BaseDocumentLoader {
60
+ private readonly opts;
61
+ constructor(options: DirectoryLoaderOptions);
62
+ load(): Promise<Document[]>;
63
+ private collectFiles;
64
+ private resolveLoader;
65
+ private autoDetectLoader;
66
+ }
67
+ //# sourceMappingURL=directory.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.loader.d.ts","sourceRoot":"","sources":["../../src/loaders/directory.loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAE,kBAAkB,EAAU,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAO/E,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,mBAAmB,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAIa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;gBAE5C,OAAO,EAAE,sBAAsB;IAarC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAwCnB,YAAY;IAiC1B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;CAqBzB"}