@langchain/core 1.2.4 → 1.2.6

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 (1262) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/agents.d.cts.map +1 -1
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/caches/index.cjs.map +1 -1
  5. package/dist/caches/index.d.cts +0 -1
  6. package/dist/caches/index.d.cts.map +1 -1
  7. package/dist/caches/index.d.ts +0 -1
  8. package/dist/caches/index.d.ts.map +1 -1
  9. package/dist/caches/index.js.map +1 -1
  10. package/dist/callbacks/base.cjs.map +1 -1
  11. package/dist/callbacks/base.d.cts +68 -36
  12. package/dist/callbacks/base.d.cts.map +1 -1
  13. package/dist/callbacks/base.d.ts +68 -36
  14. package/dist/callbacks/base.d.ts.map +1 -1
  15. package/dist/callbacks/base.js.map +1 -1
  16. package/dist/callbacks/dispatch/index.cjs +0 -1
  17. package/dist/callbacks/dispatch/index.cjs.map +1 -1
  18. package/dist/callbacks/dispatch/index.d.cts +1 -0
  19. package/dist/callbacks/dispatch/index.d.cts.map +1 -1
  20. package/dist/callbacks/dispatch/index.d.ts +1 -0
  21. package/dist/callbacks/dispatch/index.d.ts.map +1 -1
  22. package/dist/callbacks/dispatch/index.js.map +1 -1
  23. package/dist/callbacks/dispatch/web.cjs.map +1 -1
  24. package/dist/callbacks/dispatch/web.d.cts +1 -0
  25. package/dist/callbacks/dispatch/web.d.cts.map +1 -1
  26. package/dist/callbacks/dispatch/web.d.ts +1 -0
  27. package/dist/callbacks/dispatch/web.d.ts.map +1 -1
  28. package/dist/callbacks/dispatch/web.js.map +1 -1
  29. package/dist/callbacks/manager.cjs +8 -0
  30. package/dist/callbacks/manager.cjs.map +1 -1
  31. package/dist/callbacks/manager.d.cts +1 -2
  32. package/dist/callbacks/manager.d.cts.map +1 -1
  33. package/dist/callbacks/manager.d.ts +1 -2
  34. package/dist/callbacks/manager.d.ts.map +1 -1
  35. package/dist/callbacks/manager.js +8 -0
  36. package/dist/callbacks/manager.js.map +1 -1
  37. package/dist/chat_history.cjs.map +1 -1
  38. package/dist/chat_history.d.cts +1 -0
  39. package/dist/chat_history.d.cts.map +1 -1
  40. package/dist/chat_history.d.ts +1 -0
  41. package/dist/chat_history.d.ts.map +1 -1
  42. package/dist/chat_history.js.map +1 -1
  43. package/dist/context.cjs +0 -1
  44. package/dist/context.cjs.map +1 -1
  45. package/dist/context.d.cts +0 -1
  46. package/dist/context.d.cts.map +1 -1
  47. package/dist/context.d.ts +0 -1
  48. package/dist/context.d.ts.map +1 -1
  49. package/dist/context.js.map +1 -1
  50. package/dist/document_loaders/base.cjs.map +1 -1
  51. package/dist/document_loaders/base.d.cts +0 -1
  52. package/dist/document_loaders/base.d.cts.map +1 -1
  53. package/dist/document_loaders/base.d.ts +0 -1
  54. package/dist/document_loaders/base.d.ts.map +1 -1
  55. package/dist/document_loaders/base.js.map +1 -1
  56. package/dist/document_loaders/langsmith.cjs.map +1 -1
  57. package/dist/document_loaders/langsmith.d.cts +0 -1
  58. package/dist/document_loaders/langsmith.d.cts.map +1 -1
  59. package/dist/document_loaders/langsmith.d.ts +0 -1
  60. package/dist/document_loaders/langsmith.d.ts.map +1 -1
  61. package/dist/document_loaders/langsmith.js.map +1 -1
  62. package/dist/documents/document.cjs.map +1 -1
  63. package/dist/documents/document.d.cts.map +1 -1
  64. package/dist/documents/document.d.ts.map +1 -1
  65. package/dist/documents/document.js.map +1 -1
  66. package/dist/documents/transformers.cjs.map +1 -1
  67. package/dist/documents/transformers.d.cts +0 -1
  68. package/dist/documents/transformers.d.cts.map +1 -1
  69. package/dist/documents/transformers.d.ts +0 -1
  70. package/dist/documents/transformers.d.ts.map +1 -1
  71. package/dist/documents/transformers.js.map +1 -1
  72. package/dist/embeddings.cjs.map +1 -1
  73. package/dist/embeddings.d.cts +0 -1
  74. package/dist/embeddings.d.cts.map +1 -1
  75. package/dist/embeddings.d.ts +0 -1
  76. package/dist/embeddings.d.ts.map +1 -1
  77. package/dist/embeddings.js.map +1 -1
  78. package/dist/errors/index.cjs.map +1 -1
  79. package/dist/errors/index.d.cts +0 -1
  80. package/dist/errors/index.d.cts.map +1 -1
  81. package/dist/errors/index.d.ts +0 -1
  82. package/dist/errors/index.d.ts.map +1 -1
  83. package/dist/errors/index.js.map +1 -1
  84. package/dist/example_selectors/base.cjs.map +1 -1
  85. package/dist/example_selectors/base.d.cts +0 -1
  86. package/dist/example_selectors/base.d.cts.map +1 -1
  87. package/dist/example_selectors/base.d.ts +0 -1
  88. package/dist/example_selectors/base.d.ts.map +1 -1
  89. package/dist/example_selectors/base.js.map +1 -1
  90. package/dist/example_selectors/conditional.cjs.map +1 -1
  91. package/dist/example_selectors/conditional.d.cts +0 -1
  92. package/dist/example_selectors/conditional.d.cts.map +1 -1
  93. package/dist/example_selectors/conditional.d.ts +0 -1
  94. package/dist/example_selectors/conditional.d.ts.map +1 -1
  95. package/dist/example_selectors/conditional.js.map +1 -1
  96. package/dist/example_selectors/length_based.cjs.map +1 -1
  97. package/dist/example_selectors/length_based.d.cts +0 -1
  98. package/dist/example_selectors/length_based.d.cts.map +1 -1
  99. package/dist/example_selectors/length_based.d.ts +0 -1
  100. package/dist/example_selectors/length_based.d.ts.map +1 -1
  101. package/dist/example_selectors/length_based.js.map +1 -1
  102. package/dist/example_selectors/semantic_similarity.cjs +2 -1
  103. package/dist/example_selectors/semantic_similarity.cjs.map +1 -1
  104. package/dist/example_selectors/semantic_similarity.d.cts +0 -1
  105. package/dist/example_selectors/semantic_similarity.d.cts.map +1 -1
  106. package/dist/example_selectors/semantic_similarity.d.ts +0 -1
  107. package/dist/example_selectors/semantic_similarity.d.ts.map +1 -1
  108. package/dist/example_selectors/semantic_similarity.js +2 -1
  109. package/dist/example_selectors/semantic_similarity.js.map +1 -1
  110. package/dist/index.d.cts +1 -1
  111. package/dist/index.d.ts +1 -1
  112. package/dist/indexing/base.cjs.map +1 -1
  113. package/dist/indexing/base.d.cts +0 -1
  114. package/dist/indexing/base.d.cts.map +1 -1
  115. package/dist/indexing/base.d.ts +0 -1
  116. package/dist/indexing/base.d.ts.map +1 -1
  117. package/dist/indexing/base.js.map +1 -1
  118. package/dist/indexing/record_manager.cjs.map +1 -1
  119. package/dist/indexing/record_manager.d.cts +0 -1
  120. package/dist/indexing/record_manager.d.cts.map +1 -1
  121. package/dist/indexing/record_manager.d.ts +0 -1
  122. package/dist/indexing/record_manager.d.ts.map +1 -1
  123. package/dist/indexing/record_manager.js.map +1 -1
  124. package/dist/language_models/base.cjs +1 -1
  125. package/dist/language_models/base.cjs.map +1 -1
  126. package/dist/language_models/base.d.cts +9 -16
  127. package/dist/language_models/base.d.cts.map +1 -1
  128. package/dist/language_models/base.d.ts +9 -16
  129. package/dist/language_models/base.d.ts.map +1 -1
  130. package/dist/language_models/base.js +1 -1
  131. package/dist/language_models/base.js.map +1 -1
  132. package/dist/language_models/chat_models.cjs +12 -6
  133. package/dist/language_models/chat_models.cjs.map +1 -1
  134. package/dist/language_models/chat_models.d.cts +6 -8
  135. package/dist/language_models/chat_models.d.cts.map +1 -1
  136. package/dist/language_models/chat_models.d.ts +6 -8
  137. package/dist/language_models/chat_models.d.ts.map +1 -1
  138. package/dist/language_models/chat_models.js +12 -6
  139. package/dist/language_models/chat_models.js.map +1 -1
  140. package/dist/language_models/compat.cjs.map +1 -1
  141. package/dist/language_models/compat.d.cts +0 -1
  142. package/dist/language_models/compat.d.cts.map +1 -1
  143. package/dist/language_models/compat.d.ts +0 -1
  144. package/dist/language_models/compat.d.ts.map +1 -1
  145. package/dist/language_models/compat.js.map +1 -1
  146. package/dist/language_models/event.d.cts +0 -1
  147. package/dist/language_models/event.d.cts.map +1 -1
  148. package/dist/language_models/event.d.ts +0 -1
  149. package/dist/language_models/event.d.ts.map +1 -1
  150. package/dist/language_models/llms.cjs.map +1 -1
  151. package/dist/language_models/llms.d.cts +2 -9
  152. package/dist/language_models/llms.d.cts.map +1 -1
  153. package/dist/language_models/llms.d.ts +2 -9
  154. package/dist/language_models/llms.d.ts.map +1 -1
  155. package/dist/language_models/llms.js.map +1 -1
  156. package/dist/language_models/openai_completions_stream.cjs.map +1 -1
  157. package/dist/language_models/openai_completions_stream.d.cts +0 -1
  158. package/dist/language_models/openai_completions_stream.d.cts.map +1 -1
  159. package/dist/language_models/openai_completions_stream.d.ts +0 -1
  160. package/dist/language_models/openai_completions_stream.d.ts.map +1 -1
  161. package/dist/language_models/openai_completions_stream.js.map +1 -1
  162. package/dist/language_models/profile.d.cts.map +1 -1
  163. package/dist/language_models/profile.d.ts.map +1 -1
  164. package/dist/language_models/stream.cjs.map +1 -1
  165. package/dist/language_models/stream.d.cts +2 -1
  166. package/dist/language_models/stream.d.cts.map +1 -1
  167. package/dist/language_models/stream.d.ts +2 -1
  168. package/dist/language_models/stream.d.ts.map +1 -1
  169. package/dist/language_models/stream.js.map +1 -1
  170. package/dist/language_models/structured_output.cjs.map +1 -1
  171. package/dist/language_models/structured_output.d.cts +4 -0
  172. package/dist/language_models/structured_output.d.cts.map +1 -1
  173. package/dist/language_models/structured_output.d.ts +4 -0
  174. package/dist/language_models/structured_output.d.ts.map +1 -1
  175. package/dist/language_models/structured_output.js.map +1 -1
  176. package/dist/language_models/utils.cjs.map +1 -1
  177. package/dist/language_models/utils.js.map +1 -1
  178. package/dist/load/import_constants.cjs.map +1 -1
  179. package/dist/load/import_constants.js.map +1 -1
  180. package/dist/load/import_map.cjs +410 -0
  181. package/dist/load/import_map.cjs.map +1 -1
  182. package/dist/load/import_map.js +3 -1
  183. package/dist/load/import_map.js.map +1 -1
  184. package/dist/load/import_type.d.cts.map +1 -1
  185. package/dist/load/import_type.d.ts.map +1 -1
  186. package/dist/load/index.cjs.map +1 -1
  187. package/dist/load/index.d.cts +0 -1
  188. package/dist/load/index.d.cts.map +1 -1
  189. package/dist/load/index.d.ts +0 -1
  190. package/dist/load/index.d.ts.map +1 -1
  191. package/dist/load/index.js.map +1 -1
  192. package/dist/load/map_keys.cjs.map +1 -1
  193. package/dist/load/map_keys.d.cts.map +1 -1
  194. package/dist/load/map_keys.d.ts.map +1 -1
  195. package/dist/load/map_keys.js.map +1 -1
  196. package/dist/load/serializable.cjs.map +1 -1
  197. package/dist/load/serializable.d.cts +0 -1
  198. package/dist/load/serializable.d.cts.map +1 -1
  199. package/dist/load/serializable.d.ts +0 -1
  200. package/dist/load/serializable.d.ts.map +1 -1
  201. package/dist/load/serializable.js.map +1 -1
  202. package/dist/load/validation.cjs +3 -0
  203. package/dist/load/validation.cjs.map +1 -1
  204. package/dist/load/validation.js +1 -1
  205. package/dist/load/validation.js.map +1 -1
  206. package/dist/memory.cjs +8 -2
  207. package/dist/memory.cjs.map +1 -1
  208. package/dist/memory.d.cts.map +1 -1
  209. package/dist/memory.d.ts.map +1 -1
  210. package/dist/memory.js +8 -2
  211. package/dist/memory.js.map +1 -1
  212. package/dist/messages/ai.cjs +6 -0
  213. package/dist/messages/ai.cjs.map +1 -1
  214. package/dist/messages/ai.d.cts +3 -2
  215. package/dist/messages/ai.d.cts.map +1 -1
  216. package/dist/messages/ai.d.ts +3 -2
  217. package/dist/messages/ai.d.ts.map +1 -1
  218. package/dist/messages/ai.js +6 -0
  219. package/dist/messages/ai.js.map +1 -1
  220. package/dist/messages/base.cjs +6 -0
  221. package/dist/messages/base.cjs.map +1 -1
  222. package/dist/messages/base.d.cts +9 -10
  223. package/dist/messages/base.d.cts.map +1 -1
  224. package/dist/messages/base.d.ts +9 -10
  225. package/dist/messages/base.d.ts.map +1 -1
  226. package/dist/messages/base.js +6 -0
  227. package/dist/messages/base.js.map +1 -1
  228. package/dist/messages/block_translators/anthropic.cjs +2 -0
  229. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  230. package/dist/messages/block_translators/anthropic.js +1 -1
  231. package/dist/messages/block_translators/anthropic.js.map +1 -1
  232. package/dist/messages/block_translators/bedrock_converse.cjs.map +1 -1
  233. package/dist/messages/block_translators/bedrock_converse.js.map +1 -1
  234. package/dist/messages/block_translators/data.cjs +1 -0
  235. package/dist/messages/block_translators/data.cjs.map +1 -1
  236. package/dist/messages/block_translators/data.js +1 -1
  237. package/dist/messages/block_translators/data.js.map +1 -1
  238. package/dist/messages/block_translators/deepseek.cjs +1 -0
  239. package/dist/messages/block_translators/deepseek.cjs.map +1 -1
  240. package/dist/messages/block_translators/deepseek.js +1 -1
  241. package/dist/messages/block_translators/deepseek.js.map +1 -1
  242. package/dist/messages/block_translators/google.cjs.map +1 -1
  243. package/dist/messages/block_translators/google.js.map +1 -1
  244. package/dist/messages/block_translators/google_genai.cjs.map +1 -1
  245. package/dist/messages/block_translators/google_genai.js.map +1 -1
  246. package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
  247. package/dist/messages/block_translators/google_vertexai.js.map +1 -1
  248. package/dist/messages/block_translators/groq.cjs +1 -0
  249. package/dist/messages/block_translators/groq.cjs.map +1 -1
  250. package/dist/messages/block_translators/groq.js +1 -1
  251. package/dist/messages/block_translators/groq.js.map +1 -1
  252. package/dist/messages/block_translators/index.cjs +1 -1
  253. package/dist/messages/block_translators/index.cjs.map +1 -1
  254. package/dist/messages/block_translators/index.js +1 -1
  255. package/dist/messages/block_translators/index.js.map +1 -1
  256. package/dist/messages/block_translators/ollama.cjs +1 -0
  257. package/dist/messages/block_translators/ollama.cjs.map +1 -1
  258. package/dist/messages/block_translators/ollama.js +1 -1
  259. package/dist/messages/block_translators/ollama.js.map +1 -1
  260. package/dist/messages/block_translators/openai.cjs +4 -0
  261. package/dist/messages/block_translators/openai.cjs.map +1 -1
  262. package/dist/messages/block_translators/openai.js +1 -1
  263. package/dist/messages/block_translators/openai.js.map +1 -1
  264. package/dist/messages/block_translators/openrouter.cjs +1 -0
  265. package/dist/messages/block_translators/openrouter.cjs.map +1 -1
  266. package/dist/messages/block_translators/openrouter.js +1 -1
  267. package/dist/messages/block_translators/openrouter.js.map +1 -1
  268. package/dist/messages/block_translators/utils.cjs.map +1 -1
  269. package/dist/messages/block_translators/utils.js.map +1 -1
  270. package/dist/messages/block_translators/xai.cjs +1 -0
  271. package/dist/messages/block_translators/xai.cjs.map +1 -1
  272. package/dist/messages/block_translators/xai.js +1 -1
  273. package/dist/messages/block_translators/xai.js.map +1 -1
  274. package/dist/messages/chat.cjs +6 -0
  275. package/dist/messages/chat.cjs.map +1 -1
  276. package/dist/messages/chat.d.cts +3 -2
  277. package/dist/messages/chat.d.cts.map +1 -1
  278. package/dist/messages/chat.d.ts +3 -2
  279. package/dist/messages/chat.d.ts.map +1 -1
  280. package/dist/messages/chat.js +6 -0
  281. package/dist/messages/chat.js.map +1 -1
  282. package/dist/messages/content/base.d.cts.map +1 -1
  283. package/dist/messages/content/base.d.ts.map +1 -1
  284. package/dist/messages/content/data.cjs.map +1 -1
  285. package/dist/messages/content/data.d.cts +2 -9
  286. package/dist/messages/content/data.d.cts.map +1 -1
  287. package/dist/messages/content/data.d.ts +2 -9
  288. package/dist/messages/content/data.d.ts.map +1 -1
  289. package/dist/messages/content/data.js.map +1 -1
  290. package/dist/messages/content/index.cjs.map +1 -1
  291. package/dist/messages/content/index.d.cts +0 -1
  292. package/dist/messages/content/index.d.cts.map +1 -1
  293. package/dist/messages/content/index.d.ts +0 -1
  294. package/dist/messages/content/index.d.ts.map +1 -1
  295. package/dist/messages/content/index.js.map +1 -1
  296. package/dist/messages/content/multimodal.cjs.map +1 -1
  297. package/dist/messages/content/multimodal.d.cts +8 -5
  298. package/dist/messages/content/multimodal.d.cts.map +1 -1
  299. package/dist/messages/content/multimodal.d.ts +8 -5
  300. package/dist/messages/content/multimodal.d.ts.map +1 -1
  301. package/dist/messages/content/multimodal.js.map +1 -1
  302. package/dist/messages/content/tools.cjs.map +1 -1
  303. package/dist/messages/content/tools.d.cts +0 -1
  304. package/dist/messages/content/tools.d.cts.map +1 -1
  305. package/dist/messages/content/tools.d.ts +0 -1
  306. package/dist/messages/content/tools.d.ts.map +1 -1
  307. package/dist/messages/content/tools.js.map +1 -1
  308. package/dist/messages/format.cjs.map +1 -1
  309. package/dist/messages/format.d.cts.map +1 -1
  310. package/dist/messages/format.d.ts.map +1 -1
  311. package/dist/messages/format.js.map +1 -1
  312. package/dist/messages/function.cjs +12 -0
  313. package/dist/messages/function.cjs.map +1 -1
  314. package/dist/messages/function.d.cts +5 -2
  315. package/dist/messages/function.d.cts.map +1 -1
  316. package/dist/messages/function.d.ts +5 -2
  317. package/dist/messages/function.d.ts.map +1 -1
  318. package/dist/messages/function.js +12 -0
  319. package/dist/messages/function.js.map +1 -1
  320. package/dist/messages/human.cjs +6 -0
  321. package/dist/messages/human.cjs.map +1 -1
  322. package/dist/messages/human.d.cts +3 -2
  323. package/dist/messages/human.d.cts.map +1 -1
  324. package/dist/messages/human.d.ts +3 -2
  325. package/dist/messages/human.d.ts.map +1 -1
  326. package/dist/messages/human.js +6 -0
  327. package/dist/messages/human.js.map +1 -1
  328. package/dist/messages/message.cjs.map +1 -1
  329. package/dist/messages/message.d.cts +31 -22
  330. package/dist/messages/message.d.cts.map +1 -1
  331. package/dist/messages/message.d.ts +31 -22
  332. package/dist/messages/message.d.ts.map +1 -1
  333. package/dist/messages/message.js.map +1 -1
  334. package/dist/messages/metadata.cjs.map +1 -1
  335. package/dist/messages/metadata.d.cts +0 -1
  336. package/dist/messages/metadata.d.cts.map +1 -1
  337. package/dist/messages/metadata.d.ts +0 -1
  338. package/dist/messages/metadata.d.ts.map +1 -1
  339. package/dist/messages/metadata.js.map +1 -1
  340. package/dist/messages/modifier.cjs +3 -0
  341. package/dist/messages/modifier.cjs.map +1 -1
  342. package/dist/messages/modifier.d.cts +1 -1
  343. package/dist/messages/modifier.d.cts.map +1 -1
  344. package/dist/messages/modifier.d.ts +1 -1
  345. package/dist/messages/modifier.d.ts.map +1 -1
  346. package/dist/messages/modifier.js +3 -0
  347. package/dist/messages/modifier.js.map +1 -1
  348. package/dist/messages/system.cjs +6 -0
  349. package/dist/messages/system.cjs.map +1 -1
  350. package/dist/messages/system.d.cts +3 -2
  351. package/dist/messages/system.d.cts.map +1 -1
  352. package/dist/messages/system.d.ts +3 -2
  353. package/dist/messages/system.d.ts.map +1 -1
  354. package/dist/messages/system.js +6 -0
  355. package/dist/messages/system.js.map +1 -1
  356. package/dist/messages/tool.cjs +9 -0
  357. package/dist/messages/tool.cjs.map +1 -1
  358. package/dist/messages/tool.d.cts +7 -5
  359. package/dist/messages/tool.d.cts.map +1 -1
  360. package/dist/messages/tool.d.ts +7 -5
  361. package/dist/messages/tool.d.ts.map +1 -1
  362. package/dist/messages/tool.js +9 -0
  363. package/dist/messages/tool.js.map +1 -1
  364. package/dist/messages/transformers.cjs.map +1 -1
  365. package/dist/messages/transformers.d.cts +0 -1
  366. package/dist/messages/transformers.d.cts.map +1 -1
  367. package/dist/messages/transformers.d.ts +0 -1
  368. package/dist/messages/transformers.d.ts.map +1 -1
  369. package/dist/messages/transformers.js.map +1 -1
  370. package/dist/messages/utils.cjs.map +1 -1
  371. package/dist/messages/utils.d.cts +4 -5
  372. package/dist/messages/utils.d.cts.map +1 -1
  373. package/dist/messages/utils.d.ts +4 -5
  374. package/dist/messages/utils.d.ts.map +1 -1
  375. package/dist/messages/utils.js.map +1 -1
  376. package/dist/output_parsers/base.cjs.map +1 -1
  377. package/dist/output_parsers/base.d.cts +3 -0
  378. package/dist/output_parsers/base.d.cts.map +1 -1
  379. package/dist/output_parsers/base.d.ts +3 -0
  380. package/dist/output_parsers/base.d.ts.map +1 -1
  381. package/dist/output_parsers/base.js.map +1 -1
  382. package/dist/output_parsers/bytes.cjs.map +1 -1
  383. package/dist/output_parsers/bytes.d.cts +0 -1
  384. package/dist/output_parsers/bytes.d.cts.map +1 -1
  385. package/dist/output_parsers/bytes.d.ts +0 -1
  386. package/dist/output_parsers/bytes.d.ts.map +1 -1
  387. package/dist/output_parsers/bytes.js.map +1 -1
  388. package/dist/output_parsers/json.cjs +2 -0
  389. package/dist/output_parsers/json.cjs.map +1 -1
  390. package/dist/output_parsers/json.d.cts +2 -2
  391. package/dist/output_parsers/json.d.cts.map +1 -1
  392. package/dist/output_parsers/json.d.ts +2 -2
  393. package/dist/output_parsers/json.d.ts.map +1 -1
  394. package/dist/output_parsers/json.js +2 -2
  395. package/dist/output_parsers/json.js.map +1 -1
  396. package/dist/output_parsers/list.cjs.map +1 -1
  397. package/dist/output_parsers/list.d.cts +2 -5
  398. package/dist/output_parsers/list.d.cts.map +1 -1
  399. package/dist/output_parsers/list.d.ts +2 -5
  400. package/dist/output_parsers/list.d.ts.map +1 -1
  401. package/dist/output_parsers/list.js.map +1 -1
  402. package/dist/output_parsers/openai_functions/json_output_functions_parsers.cjs.map +1 -1
  403. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts +1 -1
  404. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts.map +1 -1
  405. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
  406. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts.map +1 -1
  407. package/dist/output_parsers/openai_functions/json_output_functions_parsers.js.map +1 -1
  408. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  409. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts +2 -2
  410. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts.map +1 -1
  411. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts +2 -2
  412. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts.map +1 -1
  413. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  414. package/dist/output_parsers/standard_schema.cjs.map +1 -1
  415. package/dist/output_parsers/standard_schema.d.cts +1 -1
  416. package/dist/output_parsers/standard_schema.d.cts.map +1 -1
  417. package/dist/output_parsers/standard_schema.d.ts +1 -1
  418. package/dist/output_parsers/standard_schema.d.ts.map +1 -1
  419. package/dist/output_parsers/standard_schema.js.map +1 -1
  420. package/dist/output_parsers/string.cjs.map +1 -1
  421. package/dist/output_parsers/string.d.cts +1 -1
  422. package/dist/output_parsers/string.d.cts.map +1 -1
  423. package/dist/output_parsers/string.d.ts +1 -1
  424. package/dist/output_parsers/string.d.ts.map +1 -1
  425. package/dist/output_parsers/string.js.map +1 -1
  426. package/dist/output_parsers/structured.cjs +1 -1
  427. package/dist/output_parsers/structured.cjs.map +1 -1
  428. package/dist/output_parsers/structured.d.cts +2 -4
  429. package/dist/output_parsers/structured.d.cts.map +1 -1
  430. package/dist/output_parsers/structured.d.ts +2 -4
  431. package/dist/output_parsers/structured.d.ts.map +1 -1
  432. package/dist/output_parsers/structured.js +1 -0
  433. package/dist/output_parsers/structured.js.map +1 -1
  434. package/dist/output_parsers/transform.cjs +0 -1
  435. package/dist/output_parsers/transform.cjs.map +1 -1
  436. package/dist/output_parsers/transform.d.cts +0 -1
  437. package/dist/output_parsers/transform.d.cts.map +1 -1
  438. package/dist/output_parsers/transform.d.ts +0 -1
  439. package/dist/output_parsers/transform.d.ts.map +1 -1
  440. package/dist/output_parsers/transform.js.map +1 -1
  441. package/dist/output_parsers/xml.cjs.map +1 -1
  442. package/dist/output_parsers/xml.d.cts +0 -1
  443. package/dist/output_parsers/xml.d.cts.map +1 -1
  444. package/dist/output_parsers/xml.d.ts +0 -1
  445. package/dist/output_parsers/xml.d.ts.map +1 -1
  446. package/dist/output_parsers/xml.js.map +1 -1
  447. package/dist/outputs.cjs.map +1 -1
  448. package/dist/outputs.d.cts +0 -1
  449. package/dist/outputs.d.cts.map +1 -1
  450. package/dist/outputs.d.ts +0 -1
  451. package/dist/outputs.d.ts.map +1 -1
  452. package/dist/outputs.js.map +1 -1
  453. package/dist/prompt_values.cjs.map +1 -1
  454. package/dist/prompt_values.d.cts +3 -2
  455. package/dist/prompt_values.d.cts.map +1 -1
  456. package/dist/prompt_values.d.ts +3 -2
  457. package/dist/prompt_values.d.ts.map +1 -1
  458. package/dist/prompt_values.js.map +1 -1
  459. package/dist/prompts/base.cjs.map +1 -1
  460. package/dist/prompts/base.d.cts +1 -0
  461. package/dist/prompts/base.d.cts.map +1 -1
  462. package/dist/prompts/base.d.ts +1 -0
  463. package/dist/prompts/base.d.ts.map +1 -1
  464. package/dist/prompts/base.js.map +1 -1
  465. package/dist/prompts/chat.cjs +3 -2
  466. package/dist/prompts/chat.cjs.map +1 -1
  467. package/dist/prompts/chat.d.cts +3 -3
  468. package/dist/prompts/chat.d.cts.map +1 -1
  469. package/dist/prompts/chat.d.ts +3 -3
  470. package/dist/prompts/chat.d.ts.map +1 -1
  471. package/dist/prompts/chat.js +3 -2
  472. package/dist/prompts/chat.js.map +1 -1
  473. package/dist/prompts/dict.cjs.map +1 -1
  474. package/dist/prompts/dict.d.cts +0 -1
  475. package/dist/prompts/dict.d.cts.map +1 -1
  476. package/dist/prompts/dict.d.ts +0 -1
  477. package/dist/prompts/dict.d.ts.map +1 -1
  478. package/dist/prompts/dict.js.map +1 -1
  479. package/dist/prompts/few_shot.cjs +6 -4
  480. package/dist/prompts/few_shot.cjs.map +1 -1
  481. package/dist/prompts/few_shot.d.cts +1 -1
  482. package/dist/prompts/few_shot.d.cts.map +1 -1
  483. package/dist/prompts/few_shot.d.ts +1 -1
  484. package/dist/prompts/few_shot.d.ts.map +1 -1
  485. package/dist/prompts/few_shot.js +6 -4
  486. package/dist/prompts/few_shot.js.map +1 -1
  487. package/dist/prompts/image.cjs +3 -2
  488. package/dist/prompts/image.cjs.map +1 -1
  489. package/dist/prompts/image.d.cts +1 -1
  490. package/dist/prompts/image.d.cts.map +1 -1
  491. package/dist/prompts/image.d.ts +1 -1
  492. package/dist/prompts/image.d.ts.map +1 -1
  493. package/dist/prompts/image.js +3 -2
  494. package/dist/prompts/image.js.map +1 -1
  495. package/dist/prompts/pipeline.cjs.map +1 -1
  496. package/dist/prompts/pipeline.d.cts +0 -1
  497. package/dist/prompts/pipeline.d.cts.map +1 -1
  498. package/dist/prompts/pipeline.d.ts +0 -1
  499. package/dist/prompts/pipeline.d.ts.map +1 -1
  500. package/dist/prompts/pipeline.js.map +1 -1
  501. package/dist/prompts/prompt.cjs +9 -7
  502. package/dist/prompts/prompt.cjs.map +1 -1
  503. package/dist/prompts/prompt.d.cts +2 -2
  504. package/dist/prompts/prompt.d.cts.map +1 -1
  505. package/dist/prompts/prompt.d.ts +2 -2
  506. package/dist/prompts/prompt.d.ts.map +1 -1
  507. package/dist/prompts/prompt.js +9 -7
  508. package/dist/prompts/prompt.js.map +1 -1
  509. package/dist/prompts/serde.d.cts +1 -1
  510. package/dist/prompts/serde.d.cts.map +1 -1
  511. package/dist/prompts/serde.d.ts +1 -1
  512. package/dist/prompts/serde.d.ts.map +1 -1
  513. package/dist/prompts/string.cjs.map +1 -1
  514. package/dist/prompts/string.d.cts +0 -1
  515. package/dist/prompts/string.d.cts.map +1 -1
  516. package/dist/prompts/string.d.ts +0 -1
  517. package/dist/prompts/string.d.ts.map +1 -1
  518. package/dist/prompts/string.js.map +1 -1
  519. package/dist/prompts/structured.cjs.map +1 -1
  520. package/dist/prompts/structured.d.cts +1 -1
  521. package/dist/prompts/structured.d.cts.map +1 -1
  522. package/dist/prompts/structured.d.ts +1 -1
  523. package/dist/prompts/structured.d.ts.map +1 -1
  524. package/dist/prompts/structured.js.map +1 -1
  525. package/dist/prompts/template.cjs +9 -9
  526. package/dist/prompts/template.cjs.map +1 -1
  527. package/dist/prompts/template.d.cts +1 -0
  528. package/dist/prompts/template.d.cts.map +1 -1
  529. package/dist/prompts/template.d.ts +1 -0
  530. package/dist/prompts/template.d.ts.map +1 -1
  531. package/dist/prompts/template.js +9 -9
  532. package/dist/prompts/template.js.map +1 -1
  533. package/dist/retrievers/document_compressors/index.cjs.map +1 -1
  534. package/dist/retrievers/document_compressors/index.d.cts +0 -1
  535. package/dist/retrievers/document_compressors/index.d.cts.map +1 -1
  536. package/dist/retrievers/document_compressors/index.d.ts +0 -1
  537. package/dist/retrievers/document_compressors/index.d.ts.map +1 -1
  538. package/dist/retrievers/document_compressors/index.js.map +1 -1
  539. package/dist/retrievers/index.cjs.map +1 -1
  540. package/dist/retrievers/index.d.cts +1 -1
  541. package/dist/retrievers/index.d.cts.map +1 -1
  542. package/dist/retrievers/index.d.ts +1 -1
  543. package/dist/retrievers/index.d.ts.map +1 -1
  544. package/dist/retrievers/index.js.map +1 -1
  545. package/dist/runnables/base.cjs +2 -1
  546. package/dist/runnables/base.cjs.map +1 -1
  547. package/dist/runnables/base.d.cts +7 -19
  548. package/dist/runnables/base.d.cts.map +1 -1
  549. package/dist/runnables/base.d.ts +7 -19
  550. package/dist/runnables/base.d.ts.map +1 -1
  551. package/dist/runnables/base.js +1 -1
  552. package/dist/runnables/base.js.map +1 -1
  553. package/dist/runnables/branch.cjs.map +1 -1
  554. package/dist/runnables/branch.d.cts +1 -1
  555. package/dist/runnables/branch.d.cts.map +1 -1
  556. package/dist/runnables/branch.d.ts +1 -1
  557. package/dist/runnables/branch.d.ts.map +1 -1
  558. package/dist/runnables/branch.js.map +1 -1
  559. package/dist/runnables/config.cjs +3 -2
  560. package/dist/runnables/config.cjs.map +1 -1
  561. package/dist/runnables/config.d.cts +2 -10
  562. package/dist/runnables/config.d.cts.map +1 -1
  563. package/dist/runnables/config.d.ts +2 -10
  564. package/dist/runnables/config.d.ts.map +1 -1
  565. package/dist/runnables/config.js +3 -3
  566. package/dist/runnables/config.js.map +1 -1
  567. package/dist/runnables/graph.cjs.map +1 -1
  568. package/dist/runnables/graph.d.cts +1 -2
  569. package/dist/runnables/graph.d.cts.map +1 -1
  570. package/dist/runnables/graph.d.ts +1 -2
  571. package/dist/runnables/graph.d.ts.map +1 -1
  572. package/dist/runnables/graph.js.map +1 -1
  573. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  574. package/dist/runnables/graph_mermaid.js.map +1 -1
  575. package/dist/runnables/history.cjs.map +1 -1
  576. package/dist/runnables/history.d.cts +2 -1
  577. package/dist/runnables/history.d.cts.map +1 -1
  578. package/dist/runnables/history.d.ts +2 -1
  579. package/dist/runnables/history.d.ts.map +1 -1
  580. package/dist/runnables/history.js.map +1 -1
  581. package/dist/runnables/iter.cjs.map +1 -1
  582. package/dist/runnables/iter.js.map +1 -1
  583. package/dist/runnables/passthrough.cjs.map +1 -1
  584. package/dist/runnables/passthrough.d.cts +1 -1
  585. package/dist/runnables/passthrough.d.cts.map +1 -1
  586. package/dist/runnables/passthrough.d.ts +1 -1
  587. package/dist/runnables/passthrough.d.ts.map +1 -1
  588. package/dist/runnables/passthrough.js.map +1 -1
  589. package/dist/runnables/router.cjs.map +1 -1
  590. package/dist/runnables/router.d.cts +1 -1
  591. package/dist/runnables/router.d.cts.map +1 -1
  592. package/dist/runnables/router.d.ts +1 -1
  593. package/dist/runnables/router.d.ts.map +1 -1
  594. package/dist/runnables/router.js.map +1 -1
  595. package/dist/runnables/types.d.cts +2 -2
  596. package/dist/runnables/types.d.cts.map +1 -1
  597. package/dist/runnables/types.d.ts +2 -2
  598. package/dist/runnables/types.d.ts.map +1 -1
  599. package/dist/runnables/utils.cjs.map +1 -1
  600. package/dist/runnables/utils.js.map +1 -1
  601. package/dist/runnables/wrappers.cjs.map +1 -1
  602. package/dist/runnables/wrappers.js.map +1 -1
  603. package/dist/singletons/async_local_storage/context.cjs +0 -1
  604. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  605. package/dist/singletons/async_local_storage/context.d.cts +0 -1
  606. package/dist/singletons/async_local_storage/context.d.cts.map +1 -1
  607. package/dist/singletons/async_local_storage/context.d.ts +0 -1
  608. package/dist/singletons/async_local_storage/context.d.ts.map +1 -1
  609. package/dist/singletons/async_local_storage/context.js.map +1 -1
  610. package/dist/singletons/async_local_storage/globals.cjs +1 -0
  611. package/dist/singletons/async_local_storage/globals.cjs.map +1 -1
  612. package/dist/singletons/async_local_storage/globals.d.cts.map +1 -1
  613. package/dist/singletons/async_local_storage/globals.d.ts.map +1 -1
  614. package/dist/singletons/async_local_storage/globals.js +1 -1
  615. package/dist/singletons/async_local_storage/globals.js.map +1 -1
  616. package/dist/singletons/async_local_storage/index.cjs +0 -1
  617. package/dist/singletons/async_local_storage/index.cjs.map +1 -1
  618. package/dist/singletons/async_local_storage/index.d.cts +1 -2
  619. package/dist/singletons/async_local_storage/index.d.cts.map +1 -1
  620. package/dist/singletons/async_local_storage/index.d.ts +1 -2
  621. package/dist/singletons/async_local_storage/index.d.ts.map +1 -1
  622. package/dist/singletons/async_local_storage/index.js.map +1 -1
  623. package/dist/singletons/callbacks.cjs +1 -0
  624. package/dist/singletons/callbacks.cjs.map +1 -1
  625. package/dist/singletons/callbacks.d.cts +1 -0
  626. package/dist/singletons/callbacks.d.cts.map +1 -1
  627. package/dist/singletons/callbacks.d.ts +0 -1
  628. package/dist/singletons/callbacks.d.ts.map +1 -1
  629. package/dist/singletons/callbacks.js +1 -1
  630. package/dist/singletons/callbacks.js.map +1 -1
  631. package/dist/singletons/tracer.cjs +0 -1
  632. package/dist/singletons/tracer.cjs.map +1 -1
  633. package/dist/singletons/tracer.js.map +1 -1
  634. package/dist/stores.cjs.map +1 -1
  635. package/dist/stores.d.cts +0 -1
  636. package/dist/stores.d.cts.map +1 -1
  637. package/dist/stores.d.ts +0 -1
  638. package/dist/stores.d.ts.map +1 -1
  639. package/dist/stores.js.map +1 -1
  640. package/dist/structured_query/base.cjs.map +1 -1
  641. package/dist/structured_query/base.d.cts +0 -1
  642. package/dist/structured_query/base.d.cts.map +1 -1
  643. package/dist/structured_query/base.d.ts +0 -1
  644. package/dist/structured_query/base.d.ts.map +1 -1
  645. package/dist/structured_query/base.js.map +1 -1
  646. package/dist/structured_query/functional.cjs.map +1 -1
  647. package/dist/structured_query/functional.d.cts +0 -1
  648. package/dist/structured_query/functional.d.cts.map +1 -1
  649. package/dist/structured_query/functional.d.ts +0 -1
  650. package/dist/structured_query/functional.d.ts.map +1 -1
  651. package/dist/structured_query/functional.js.map +1 -1
  652. package/dist/structured_query/ir.cjs +7 -0
  653. package/dist/structured_query/ir.cjs.map +1 -1
  654. package/dist/structured_query/ir.d.cts +0 -1
  655. package/dist/structured_query/ir.d.cts.map +1 -1
  656. package/dist/structured_query/ir.d.ts +0 -1
  657. package/dist/structured_query/ir.d.ts.map +1 -1
  658. package/dist/structured_query/ir.js +7 -0
  659. package/dist/structured_query/ir.js.map +1 -1
  660. package/dist/structured_query/utils.cjs.map +1 -1
  661. package/dist/structured_query/utils.d.cts.map +1 -1
  662. package/dist/structured_query/utils.d.ts.map +1 -1
  663. package/dist/structured_query/utils.js.map +1 -1
  664. package/dist/testing/fake_model_builder.cjs.map +1 -1
  665. package/dist/testing/fake_model_builder.d.cts +1 -1
  666. package/dist/testing/fake_model_builder.d.cts.map +1 -1
  667. package/dist/testing/fake_model_builder.d.ts +1 -1
  668. package/dist/testing/fake_model_builder.d.ts.map +1 -1
  669. package/dist/testing/fake_model_builder.js.map +1 -1
  670. package/dist/testing/matchers.cjs.map +1 -1
  671. package/dist/testing/matchers.d.cts +0 -1
  672. package/dist/testing/matchers.d.cts.map +1 -1
  673. package/dist/testing/matchers.d.ts +0 -1
  674. package/dist/testing/matchers.d.ts.map +1 -1
  675. package/dist/testing/matchers.js.map +1 -1
  676. package/dist/tools/index.cjs.map +1 -1
  677. package/dist/tools/index.d.cts +8 -7
  678. package/dist/tools/index.d.cts.map +1 -1
  679. package/dist/tools/index.d.ts +8 -7
  680. package/dist/tools/index.d.ts.map +1 -1
  681. package/dist/tools/index.js.map +1 -1
  682. package/dist/tools/types.cjs.map +1 -1
  683. package/dist/tools/types.d.cts +4 -3
  684. package/dist/tools/types.d.cts.map +1 -1
  685. package/dist/tools/types.d.ts +4 -3
  686. package/dist/tools/types.d.ts.map +1 -1
  687. package/dist/tools/types.js.map +1 -1
  688. package/dist/tools/utils.cjs.map +1 -1
  689. package/dist/tools/utils.d.cts.map +1 -1
  690. package/dist/tools/utils.d.ts.map +1 -1
  691. package/dist/tools/utils.js.map +1 -1
  692. package/dist/tracers/base.cjs.map +1 -1
  693. package/dist/tracers/base.d.cts +18 -14
  694. package/dist/tracers/base.d.cts.map +1 -1
  695. package/dist/tracers/base.d.ts +18 -14
  696. package/dist/tracers/base.d.ts.map +1 -1
  697. package/dist/tracers/base.js.map +1 -1
  698. package/dist/tracers/console.cjs.map +1 -1
  699. package/dist/tracers/console.d.cts +0 -1
  700. package/dist/tracers/console.d.cts.map +1 -1
  701. package/dist/tracers/console.d.ts +0 -1
  702. package/dist/tracers/console.d.ts.map +1 -1
  703. package/dist/tracers/console.js.map +1 -1
  704. package/dist/tracers/event_stream.cjs.map +1 -1
  705. package/dist/tracers/event_stream.d.cts +5 -2
  706. package/dist/tracers/event_stream.d.cts.map +1 -1
  707. package/dist/tracers/event_stream.d.ts +5 -2
  708. package/dist/tracers/event_stream.d.ts.map +1 -1
  709. package/dist/tracers/event_stream.js.map +1 -1
  710. package/dist/tracers/log_stream.cjs.map +1 -1
  711. package/dist/tracers/log_stream.d.cts +30 -15
  712. package/dist/tracers/log_stream.d.cts.map +1 -1
  713. package/dist/tracers/log_stream.d.ts +30 -15
  714. package/dist/tracers/log_stream.d.ts.map +1 -1
  715. package/dist/tracers/log_stream.js.map +1 -1
  716. package/dist/tracers/root_listener.cjs.map +1 -1
  717. package/dist/tracers/root_listener.js.map +1 -1
  718. package/dist/tracers/run_collector.cjs.map +1 -1
  719. package/dist/tracers/run_collector.d.cts +1 -4
  720. package/dist/tracers/run_collector.d.cts.map +1 -1
  721. package/dist/tracers/run_collector.d.ts +1 -4
  722. package/dist/tracers/run_collector.d.ts.map +1 -1
  723. package/dist/tracers/run_collector.js.map +1 -1
  724. package/dist/tracers/tracer_langchain.cjs +4 -3
  725. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  726. package/dist/tracers/tracer_langchain.d.cts +1 -5
  727. package/dist/tracers/tracer_langchain.d.cts.map +1 -1
  728. package/dist/tracers/tracer_langchain.d.ts +1 -5
  729. package/dist/tracers/tracer_langchain.d.ts.map +1 -1
  730. package/dist/tracers/tracer_langchain.js +4 -3
  731. package/dist/tracers/tracer_langchain.js.map +1 -1
  732. package/dist/types/_internal.d.cts.map +1 -1
  733. package/dist/types/_internal.d.ts.map +1 -1
  734. package/dist/types/stream.d.cts +1 -1
  735. package/dist/types/stream.d.ts +1 -1
  736. package/dist/types/type-utils.d.cts +1 -1
  737. package/dist/types/type-utils.d.cts.map +1 -1
  738. package/dist/types/type-utils.d.ts +1 -1
  739. package/dist/types/type-utils.d.ts.map +1 -1
  740. package/dist/utils/async_caller.cjs.map +1 -1
  741. package/dist/utils/async_caller.d.cts.map +1 -1
  742. package/dist/utils/async_caller.d.ts.map +1 -1
  743. package/dist/utils/async_caller.js.map +1 -1
  744. package/dist/utils/callbacks.cjs.map +1 -1
  745. package/dist/utils/callbacks.js.map +1 -1
  746. package/dist/utils/chunk_array.cjs.map +1 -1
  747. package/dist/utils/chunk_array.d.cts.map +1 -1
  748. package/dist/utils/chunk_array.d.ts.map +1 -1
  749. package/dist/utils/chunk_array.js.map +1 -1
  750. package/dist/utils/context.cjs.map +1 -1
  751. package/dist/utils/context.d.cts.map +1 -1
  752. package/dist/utils/context.d.ts.map +1 -1
  753. package/dist/utils/context.js.map +1 -1
  754. package/dist/utils/env.cjs.map +1 -1
  755. package/dist/utils/env.d.cts.map +1 -1
  756. package/dist/utils/env.d.ts.map +1 -1
  757. package/dist/utils/env.js.map +1 -1
  758. package/dist/utils/event_source_parse.cjs +2 -2
  759. package/dist/utils/event_source_parse.cjs.map +1 -1
  760. package/dist/utils/event_source_parse.d.cts +0 -1
  761. package/dist/utils/event_source_parse.d.cts.map +1 -1
  762. package/dist/utils/event_source_parse.d.ts +0 -1
  763. package/dist/utils/event_source_parse.d.ts.map +1 -1
  764. package/dist/utils/event_source_parse.js +2 -2
  765. package/dist/utils/event_source_parse.js.map +1 -1
  766. package/dist/utils/fast-json-patch/index.cjs +9 -1
  767. package/dist/utils/fast-json-patch/index.cjs.map +1 -1
  768. package/dist/utils/fast-json-patch/index.js +3 -3
  769. package/dist/utils/fast-json-patch/index.js.map +1 -1
  770. package/dist/utils/fast-json-patch/src/core.cjs +7 -0
  771. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  772. package/dist/utils/fast-json-patch/src/core.d.cts +1 -1
  773. package/dist/utils/fast-json-patch/src/core.d.cts.map +1 -1
  774. package/dist/utils/fast-json-patch/src/core.d.ts +1 -1
  775. package/dist/utils/fast-json-patch/src/core.d.ts.map +1 -1
  776. package/dist/utils/fast-json-patch/src/core.js +6 -1
  777. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  778. package/dist/utils/fast-json-patch/src/duplex.cjs.map +1 -1
  779. package/dist/utils/fast-json-patch/src/duplex.d.cts +0 -1
  780. package/dist/utils/fast-json-patch/src/duplex.d.cts.map +1 -1
  781. package/dist/utils/fast-json-patch/src/duplex.d.ts +0 -1
  782. package/dist/utils/fast-json-patch/src/duplex.d.ts.map +1 -1
  783. package/dist/utils/fast-json-patch/src/duplex.js.map +1 -1
  784. package/dist/utils/fast-json-patch/src/helpers.cjs +4 -0
  785. package/dist/utils/fast-json-patch/src/helpers.cjs.map +1 -1
  786. package/dist/utils/fast-json-patch/src/helpers.js +4 -0
  787. package/dist/utils/fast-json-patch/src/helpers.js.map +1 -1
  788. package/dist/utils/format.d.cts.map +1 -1
  789. package/dist/utils/format.d.ts.map +1 -1
  790. package/dist/utils/function_calling.cjs.map +1 -1
  791. package/dist/utils/function_calling.d.cts +0 -1
  792. package/dist/utils/function_calling.d.cts.map +1 -1
  793. package/dist/utils/function_calling.d.ts +0 -1
  794. package/dist/utils/function_calling.d.ts.map +1 -1
  795. package/dist/utils/function_calling.js.map +1 -1
  796. package/dist/utils/gateway.cjs +43 -0
  797. package/dist/utils/gateway.cjs.map +1 -0
  798. package/dist/utils/gateway.d.cts +13 -0
  799. package/dist/utils/gateway.d.cts.map +1 -0
  800. package/dist/utils/gateway.d.ts +13 -0
  801. package/dist/utils/gateway.d.ts.map +1 -0
  802. package/dist/utils/gateway.js +36 -0
  803. package/dist/utils/gateway.js.map +1 -0
  804. package/dist/utils/hash.d.cts +0 -1
  805. package/dist/utils/hash.d.cts.map +1 -1
  806. package/dist/utils/hash.d.ts +0 -1
  807. package/dist/utils/hash.d.ts.map +1 -1
  808. package/dist/utils/is-network-error/index.cjs +1 -1
  809. package/dist/utils/is-network-error/index.cjs.map +1 -1
  810. package/dist/utils/is-network-error/index.js +1 -1
  811. package/dist/utils/is-network-error/index.js.map +1 -1
  812. package/dist/utils/js-sha256/hash.cjs.map +1 -1
  813. package/dist/utils/js-sha256/hash.d.cts.map +1 -1
  814. package/dist/utils/js-sha256/hash.d.ts.map +1 -1
  815. package/dist/utils/js-sha256/hash.js.map +1 -1
  816. package/dist/utils/json.cjs +1 -0
  817. package/dist/utils/json.cjs.map +1 -1
  818. package/dist/utils/json.d.cts.map +1 -1
  819. package/dist/utils/json.d.ts.map +1 -1
  820. package/dist/utils/json.js +1 -1
  821. package/dist/utils/json.js.map +1 -1
  822. package/dist/utils/json_schema.cjs.map +1 -1
  823. package/dist/utils/json_schema.d.cts +1 -1
  824. package/dist/utils/json_schema.d.cts.map +1 -1
  825. package/dist/utils/json_schema.d.ts +1 -1
  826. package/dist/utils/json_schema.d.ts.map +1 -1
  827. package/dist/utils/json_schema.js.map +1 -1
  828. package/dist/utils/math.cjs.map +1 -1
  829. package/dist/utils/math.d.cts.map +1 -1
  830. package/dist/utils/math.d.ts.map +1 -1
  831. package/dist/utils/math.js.map +1 -1
  832. package/dist/utils/ml-distance/distances.cjs.map +1 -1
  833. package/dist/utils/ml-distance/distances.js.map +1 -1
  834. package/dist/utils/ml-distance/similarities.cjs.map +1 -1
  835. package/dist/utils/ml-distance/similarities.d.cts.map +1 -1
  836. package/dist/utils/ml-distance/similarities.d.ts.map +1 -1
  837. package/dist/utils/ml-distance/similarities.js.map +1 -1
  838. package/dist/utils/ml-distance-euclidean/euclidean.cjs +1 -0
  839. package/dist/utils/ml-distance-euclidean/euclidean.cjs.map +1 -1
  840. package/dist/utils/ml-distance-euclidean/euclidean.js +1 -1
  841. package/dist/utils/ml-distance-euclidean/euclidean.js.map +1 -1
  842. package/dist/utils/namespace.cjs +4 -0
  843. package/dist/utils/namespace.cjs.map +1 -1
  844. package/dist/utils/namespace.d.cts.map +1 -1
  845. package/dist/utils/namespace.d.ts.map +1 -1
  846. package/dist/utils/namespace.js +4 -1
  847. package/dist/utils/namespace.js.map +1 -1
  848. package/dist/utils/p-retry/index.cjs +1 -0
  849. package/dist/utils/p-retry/index.cjs.map +1 -1
  850. package/dist/utils/p-retry/index.js +1 -1
  851. package/dist/utils/p-retry/index.js.map +1 -1
  852. package/dist/utils/sax-js/sax.cjs.map +1 -1
  853. package/dist/utils/sax-js/sax.js.map +1 -1
  854. package/dist/utils/signal.cjs.map +1 -1
  855. package/dist/utils/signal.d.cts.map +1 -1
  856. package/dist/utils/signal.d.ts.map +1 -1
  857. package/dist/utils/signal.js.map +1 -1
  858. package/dist/utils/ssrf.cjs.map +1 -1
  859. package/dist/utils/ssrf.d.cts.map +1 -1
  860. package/dist/utils/ssrf.d.ts.map +1 -1
  861. package/dist/utils/ssrf.js.map +1 -1
  862. package/dist/utils/standard_schema.cjs.map +1 -1
  863. package/dist/utils/standard_schema.d.cts +0 -1
  864. package/dist/utils/standard_schema.d.cts.map +1 -1
  865. package/dist/utils/standard_schema.d.ts +0 -1
  866. package/dist/utils/standard_schema.d.ts.map +1 -1
  867. package/dist/utils/standard_schema.js.map +1 -1
  868. package/dist/utils/stream.cjs.map +1 -1
  869. package/dist/utils/stream.d.cts +0 -1
  870. package/dist/utils/stream.d.cts.map +1 -1
  871. package/dist/utils/stream.d.ts +0 -1
  872. package/dist/utils/stream.d.ts.map +1 -1
  873. package/dist/utils/stream.js.map +1 -1
  874. package/dist/utils/testing/chat_models.cjs.map +1 -1
  875. package/dist/utils/testing/chat_models.d.cts +2 -9
  876. package/dist/utils/testing/chat_models.d.cts.map +1 -1
  877. package/dist/utils/testing/chat_models.d.ts +2 -9
  878. package/dist/utils/testing/chat_models.d.ts.map +1 -1
  879. package/dist/utils/testing/chat_models.js.map +1 -1
  880. package/dist/utils/testing/embeddings.cjs.map +1 -1
  881. package/dist/utils/testing/embeddings.d.cts +0 -1
  882. package/dist/utils/testing/embeddings.d.cts.map +1 -1
  883. package/dist/utils/testing/embeddings.d.ts +0 -1
  884. package/dist/utils/testing/embeddings.d.ts.map +1 -1
  885. package/dist/utils/testing/embeddings.js.map +1 -1
  886. package/dist/utils/testing/llms.cjs.map +1 -1
  887. package/dist/utils/testing/llms.d.cts +0 -1
  888. package/dist/utils/testing/llms.d.cts.map +1 -1
  889. package/dist/utils/testing/llms.d.ts +0 -1
  890. package/dist/utils/testing/llms.d.ts.map +1 -1
  891. package/dist/utils/testing/llms.js.map +1 -1
  892. package/dist/utils/testing/message_history.cjs.map +1 -1
  893. package/dist/utils/testing/message_history.d.cts +1 -1
  894. package/dist/utils/testing/message_history.d.cts.map +1 -1
  895. package/dist/utils/testing/message_history.d.ts +1 -1
  896. package/dist/utils/testing/message_history.d.ts.map +1 -1
  897. package/dist/utils/testing/message_history.js.map +1 -1
  898. package/dist/utils/testing/openai_stream_fixtures.cjs.map +1 -1
  899. package/dist/utils/testing/openai_stream_fixtures.d.cts +0 -1
  900. package/dist/utils/testing/openai_stream_fixtures.d.cts.map +1 -1
  901. package/dist/utils/testing/openai_stream_fixtures.d.ts +0 -1
  902. package/dist/utils/testing/openai_stream_fixtures.d.ts.map +1 -1
  903. package/dist/utils/testing/openai_stream_fixtures.js.map +1 -1
  904. package/dist/utils/testing/output_parsers.cjs.map +1 -1
  905. package/dist/utils/testing/output_parsers.d.cts +0 -1
  906. package/dist/utils/testing/output_parsers.d.cts.map +1 -1
  907. package/dist/utils/testing/output_parsers.d.ts +0 -1
  908. package/dist/utils/testing/output_parsers.d.ts.map +1 -1
  909. package/dist/utils/testing/output_parsers.js.map +1 -1
  910. package/dist/utils/testing/retrievers.cjs.map +1 -1
  911. package/dist/utils/testing/retrievers.d.cts +0 -1
  912. package/dist/utils/testing/retrievers.d.cts.map +1 -1
  913. package/dist/utils/testing/retrievers.d.ts +0 -1
  914. package/dist/utils/testing/retrievers.d.ts.map +1 -1
  915. package/dist/utils/testing/retrievers.js.map +1 -1
  916. package/dist/utils/testing/runnables.cjs.map +1 -1
  917. package/dist/utils/testing/runnables.d.cts +0 -1
  918. package/dist/utils/testing/runnables.d.cts.map +1 -1
  919. package/dist/utils/testing/runnables.d.ts +0 -1
  920. package/dist/utils/testing/runnables.d.ts.map +1 -1
  921. package/dist/utils/testing/runnables.js.map +1 -1
  922. package/dist/utils/testing/stream.cjs +5 -0
  923. package/dist/utils/testing/stream.cjs.map +1 -1
  924. package/dist/utils/testing/stream.d.cts.map +1 -1
  925. package/dist/utils/testing/stream.d.ts.map +1 -1
  926. package/dist/utils/testing/stream.js +1 -1
  927. package/dist/utils/testing/stream.js.map +1 -1
  928. package/dist/utils/testing/tools.cjs.map +1 -1
  929. package/dist/utils/testing/tools.d.cts +0 -1
  930. package/dist/utils/testing/tools.d.cts.map +1 -1
  931. package/dist/utils/testing/tools.d.ts +0 -1
  932. package/dist/utils/testing/tools.d.ts.map +1 -1
  933. package/dist/utils/testing/tools.js.map +1 -1
  934. package/dist/utils/testing/tracers.cjs.map +1 -1
  935. package/dist/utils/testing/tracers.d.cts +0 -1
  936. package/dist/utils/testing/tracers.d.cts.map +1 -1
  937. package/dist/utils/testing/tracers.d.ts +0 -1
  938. package/dist/utils/testing/tracers.d.ts.map +1 -1
  939. package/dist/utils/testing/tracers.js.map +1 -1
  940. package/dist/utils/testing/vectorstores.cjs.map +1 -1
  941. package/dist/utils/testing/vectorstores.d.cts +1 -5
  942. package/dist/utils/testing/vectorstores.d.cts.map +1 -1
  943. package/dist/utils/testing/vectorstores.d.ts +1 -5
  944. package/dist/utils/testing/vectorstores.d.ts.map +1 -1
  945. package/dist/utils/testing/vectorstores.js.map +1 -1
  946. package/dist/utils/tiktoken.cjs +1 -1
  947. package/dist/utils/tiktoken.cjs.map +1 -1
  948. package/dist/utils/tiktoken.d.cts +0 -1
  949. package/dist/utils/tiktoken.d.cts.map +1 -1
  950. package/dist/utils/tiktoken.d.ts +0 -1
  951. package/dist/utils/tiktoken.d.ts.map +1 -1
  952. package/dist/utils/tiktoken.js +1 -1
  953. package/dist/utils/tiktoken.js.map +1 -1
  954. package/dist/utils/types/index.d.cts +0 -1
  955. package/dist/utils/types/index.d.cts.map +1 -1
  956. package/dist/utils/types/index.d.ts +0 -1
  957. package/dist/utils/types/index.d.ts.map +1 -1
  958. package/dist/utils/types/zod.cjs +0 -1
  959. package/dist/utils/types/zod.cjs.map +1 -1
  960. package/dist/utils/types/zod.d.cts +2 -3
  961. package/dist/utils/types/zod.d.cts.map +1 -1
  962. package/dist/utils/types/zod.d.ts +2 -3
  963. package/dist/utils/types/zod.d.ts.map +1 -1
  964. package/dist/utils/types/zod.js.map +1 -1
  965. package/dist/utils/uuid/index.d.cts +10 -11
  966. package/dist/utils/uuid/index.d.cts.map +1 -1
  967. package/dist/utils/uuid/index.d.ts +10 -11
  968. package/dist/utils/uuid/index.d.ts.map +1 -1
  969. package/dist/utils/uuid/parse.cjs.map +1 -1
  970. package/dist/utils/uuid/parse.d.cts +1 -3
  971. package/dist/utils/uuid/parse.d.cts.map +1 -1
  972. package/dist/utils/uuid/parse.d.ts +1 -2
  973. package/dist/utils/uuid/parse.d.ts.map +1 -1
  974. package/dist/utils/uuid/parse.js.map +1 -1
  975. package/dist/utils/uuid/rng.cjs +1 -1
  976. package/dist/utils/uuid/rng.cjs.map +1 -1
  977. package/dist/utils/uuid/rng.js +1 -1
  978. package/dist/utils/uuid/rng.js.map +1 -1
  979. package/dist/utils/uuid/sha1.cjs +2 -2
  980. package/dist/utils/uuid/sha1.cjs.map +1 -1
  981. package/dist/utils/uuid/sha1.js +2 -2
  982. package/dist/utils/uuid/sha1.js.map +1 -1
  983. package/dist/utils/uuid/stringify.cjs.map +1 -1
  984. package/dist/utils/uuid/stringify.d.cts +1 -2
  985. package/dist/utils/uuid/stringify.d.cts.map +1 -1
  986. package/dist/utils/uuid/stringify.d.ts +1 -1
  987. package/dist/utils/uuid/stringify.d.ts.map +1 -1
  988. package/dist/utils/uuid/stringify.js.map +1 -1
  989. package/dist/utils/uuid/types.d.cts.map +1 -1
  990. package/dist/utils/uuid/types.d.ts.map +1 -1
  991. package/dist/utils/uuid/v1.cjs +2 -1
  992. package/dist/utils/uuid/v1.cjs.map +1 -1
  993. package/dist/utils/uuid/v1.d.cts +1 -3
  994. package/dist/utils/uuid/v1.d.cts.map +1 -1
  995. package/dist/utils/uuid/v1.d.ts +1 -2
  996. package/dist/utils/uuid/v1.d.ts.map +1 -1
  997. package/dist/utils/uuid/v1.js +2 -2
  998. package/dist/utils/uuid/v1.js.map +1 -1
  999. package/dist/utils/uuid/v1ToV6.cjs.map +1 -1
  1000. package/dist/utils/uuid/v1ToV6.js.map +1 -1
  1001. package/dist/utils/uuid/v35.cjs +1 -0
  1002. package/dist/utils/uuid/v35.cjs.map +1 -1
  1003. package/dist/utils/uuid/v35.d.cts +6 -0
  1004. package/dist/utils/uuid/v35.d.cts.map +1 -0
  1005. package/dist/utils/uuid/v35.d.ts +6 -0
  1006. package/dist/utils/uuid/v35.d.ts.map +1 -0
  1007. package/dist/utils/uuid/v35.js +1 -1
  1008. package/dist/utils/uuid/v35.js.map +1 -1
  1009. package/dist/utils/uuid/v4.cjs.map +1 -1
  1010. package/dist/utils/uuid/v4.d.cts +1 -3
  1011. package/dist/utils/uuid/v4.d.cts.map +1 -1
  1012. package/dist/utils/uuid/v4.d.ts +1 -2
  1013. package/dist/utils/uuid/v4.d.ts.map +1 -1
  1014. package/dist/utils/uuid/v4.js.map +1 -1
  1015. package/dist/utils/uuid/v5.cjs.map +1 -1
  1016. package/dist/utils/uuid/v5.d.cts +5 -8
  1017. package/dist/utils/uuid/v5.d.cts.map +1 -1
  1018. package/dist/utils/uuid/v5.d.ts +5 -7
  1019. package/dist/utils/uuid/v5.d.ts.map +1 -1
  1020. package/dist/utils/uuid/v5.js.map +1 -1
  1021. package/dist/utils/uuid/v6.cjs +1 -1
  1022. package/dist/utils/uuid/v6.cjs.map +1 -1
  1023. package/dist/utils/uuid/v6.d.cts +1 -3
  1024. package/dist/utils/uuid/v6.d.cts.map +1 -1
  1025. package/dist/utils/uuid/v6.d.ts +1 -2
  1026. package/dist/utils/uuid/v6.d.ts.map +1 -1
  1027. package/dist/utils/uuid/v6.js +1 -1
  1028. package/dist/utils/uuid/v6.js.map +1 -1
  1029. package/dist/utils/uuid/v7.cjs +2 -1
  1030. package/dist/utils/uuid/v7.cjs.map +1 -1
  1031. package/dist/utils/uuid/v7.d.cts +1 -3
  1032. package/dist/utils/uuid/v7.d.cts.map +1 -1
  1033. package/dist/utils/uuid/v7.d.ts +1 -2
  1034. package/dist/utils/uuid/v7.d.ts.map +1 -1
  1035. package/dist/utils/uuid/v7.js +2 -2
  1036. package/dist/utils/uuid/v7.js.map +1 -1
  1037. package/dist/utils/uuid/validate.cjs.map +1 -1
  1038. package/dist/utils/uuid/validate.d.cts +1 -2
  1039. package/dist/utils/uuid/validate.d.cts.map +1 -1
  1040. package/dist/utils/uuid/validate.d.ts +1 -1
  1041. package/dist/utils/uuid/validate.d.ts.map +1 -1
  1042. package/dist/utils/uuid/validate.js.map +1 -1
  1043. package/dist/utils/uuid/version.cjs.map +1 -1
  1044. package/dist/utils/uuid/version.d.cts +1 -2
  1045. package/dist/utils/uuid/version.d.cts.map +1 -1
  1046. package/dist/utils/uuid/version.d.ts +1 -1
  1047. package/dist/utils/uuid/version.d.ts.map +1 -1
  1048. package/dist/utils/uuid/version.js.map +1 -1
  1049. package/dist/utils/zod-to-json-schema/Options.cjs.map +1 -1
  1050. package/dist/utils/zod-to-json-schema/Options.d.cts +3 -1
  1051. package/dist/utils/zod-to-json-schema/Options.d.ts +3 -1
  1052. package/dist/utils/zod-to-json-schema/Options.js.map +1 -1
  1053. package/dist/utils/zod-to-json-schema/Refs.cjs.map +1 -1
  1054. package/dist/utils/zod-to-json-schema/Refs.d.cts +3 -1
  1055. package/dist/utils/zod-to-json-schema/Refs.d.ts +3 -1
  1056. package/dist/utils/zod-to-json-schema/Refs.js.map +1 -1
  1057. package/dist/utils/zod-to-json-schema/errorMessages.cjs.map +1 -1
  1058. package/dist/utils/zod-to-json-schema/errorMessages.d.cts +2 -1
  1059. package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +1 -1
  1060. package/dist/utils/zod-to-json-schema/errorMessages.d.ts +2 -1
  1061. package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +1 -1
  1062. package/dist/utils/zod-to-json-schema/errorMessages.js.map +1 -1
  1063. package/dist/utils/zod-to-json-schema/getRelativePath.cjs.map +1 -1
  1064. package/dist/utils/zod-to-json-schema/getRelativePath.js.map +1 -1
  1065. package/dist/utils/zod-to-json-schema/index.cjs +79 -37
  1066. package/dist/utils/zod-to-json-schema/index.d.cts +15 -1
  1067. package/dist/utils/zod-to-json-schema/index.d.ts +15 -1
  1068. package/dist/utils/zod-to-json-schema/index.js +38 -38
  1069. package/dist/utils/zod-to-json-schema/parseDef.cjs.map +1 -1
  1070. package/dist/utils/zod-to-json-schema/parseDef.d.cts +3 -1
  1071. package/dist/utils/zod-to-json-schema/parseDef.d.ts +3 -1
  1072. package/dist/utils/zod-to-json-schema/parseDef.js.map +1 -1
  1073. package/dist/utils/zod-to-json-schema/parseTypes.d.cts +0 -1
  1074. package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +1 -1
  1075. package/dist/utils/zod-to-json-schema/parseTypes.d.ts +0 -1
  1076. package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +1 -1
  1077. package/dist/utils/zod-to-json-schema/parsers/any.cjs.map +1 -1
  1078. package/dist/utils/zod-to-json-schema/parsers/any.d.cts +1 -0
  1079. package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +1 -1
  1080. package/dist/utils/zod-to-json-schema/parsers/any.d.ts +1 -0
  1081. package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +1 -1
  1082. package/dist/utils/zod-to-json-schema/parsers/any.js.map +1 -1
  1083. package/dist/utils/zod-to-json-schema/parsers/array.cjs +0 -1
  1084. package/dist/utils/zod-to-json-schema/parsers/array.cjs.map +1 -1
  1085. package/dist/utils/zod-to-json-schema/parsers/array.d.cts +2 -0
  1086. package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +1 -1
  1087. package/dist/utils/zod-to-json-schema/parsers/array.d.ts +2 -0
  1088. package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +1 -1
  1089. package/dist/utils/zod-to-json-schema/parsers/array.js.map +1 -1
  1090. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -1
  1091. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts +2 -0
  1092. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +1 -1
  1093. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +2 -0
  1094. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  1095. package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -1
  1096. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs.map +1 -1
  1097. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +1 -1
  1098. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +1 -1
  1099. package/dist/utils/zod-to-json-schema/parsers/boolean.js.map +1 -1
  1100. package/dist/utils/zod-to-json-schema/parsers/branded.cjs.map +1 -1
  1101. package/dist/utils/zod-to-json-schema/parsers/branded.d.cts +3 -1
  1102. package/dist/utils/zod-to-json-schema/parsers/branded.d.ts +3 -1
  1103. package/dist/utils/zod-to-json-schema/parsers/branded.js.map +1 -1
  1104. package/dist/utils/zod-to-json-schema/parsers/catch.cjs.map +1 -1
  1105. package/dist/utils/zod-to-json-schema/parsers/catch.d.cts +3 -1
  1106. package/dist/utils/zod-to-json-schema/parsers/catch.d.ts +3 -1
  1107. package/dist/utils/zod-to-json-schema/parsers/catch.js.map +1 -1
  1108. package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -1
  1109. package/dist/utils/zod-to-json-schema/parsers/date.d.cts +3 -0
  1110. package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +1 -1
  1111. package/dist/utils/zod-to-json-schema/parsers/date.d.ts +3 -0
  1112. package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +1 -1
  1113. package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -1
  1114. package/dist/utils/zod-to-json-schema/parsers/default.cjs.map +1 -1
  1115. package/dist/utils/zod-to-json-schema/parsers/default.d.cts +3 -1
  1116. package/dist/utils/zod-to-json-schema/parsers/default.d.ts +3 -1
  1117. package/dist/utils/zod-to-json-schema/parsers/default.js.map +1 -1
  1118. package/dist/utils/zod-to-json-schema/parsers/effects.cjs.map +1 -1
  1119. package/dist/utils/zod-to-json-schema/parsers/effects.d.cts +3 -1
  1120. package/dist/utils/zod-to-json-schema/parsers/effects.d.ts +3 -1
  1121. package/dist/utils/zod-to-json-schema/parsers/effects.js.map +1 -1
  1122. package/dist/utils/zod-to-json-schema/parsers/enum.cjs.map +1 -1
  1123. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts +1 -0
  1124. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +1 -1
  1125. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts +1 -0
  1126. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +1 -1
  1127. package/dist/utils/zod-to-json-schema/parsers/enum.js.map +1 -1
  1128. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs.map +1 -1
  1129. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts +2 -0
  1130. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +1 -1
  1131. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +2 -0
  1132. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +1 -1
  1133. package/dist/utils/zod-to-json-schema/parsers/intersection.js.map +1 -1
  1134. package/dist/utils/zod-to-json-schema/parsers/literal.cjs.map +1 -1
  1135. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts +2 -0
  1136. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +1 -1
  1137. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +2 -0
  1138. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  1139. package/dist/utils/zod-to-json-schema/parsers/literal.js.map +1 -1
  1140. package/dist/utils/zod-to-json-schema/parsers/map.cjs.map +1 -1
  1141. package/dist/utils/zod-to-json-schema/parsers/map.d.cts +3 -0
  1142. package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +1 -1
  1143. package/dist/utils/zod-to-json-schema/parsers/map.d.ts +3 -0
  1144. package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +1 -1
  1145. package/dist/utils/zod-to-json-schema/parsers/map.js.map +1 -1
  1146. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
  1147. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts +1 -0
  1148. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +1 -1
  1149. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts +1 -0
  1150. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -1
  1151. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  1152. package/dist/utils/zod-to-json-schema/parsers/never.cjs.map +1 -1
  1153. package/dist/utils/zod-to-json-schema/parsers/never.d.cts +1 -0
  1154. package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +1 -1
  1155. package/dist/utils/zod-to-json-schema/parsers/never.d.ts +1 -0
  1156. package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +1 -1
  1157. package/dist/utils/zod-to-json-schema/parsers/never.js.map +1 -1
  1158. package/dist/utils/zod-to-json-schema/parsers/null.cjs.map +1 -1
  1159. package/dist/utils/zod-to-json-schema/parsers/null.d.cts +1 -0
  1160. package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +1 -1
  1161. package/dist/utils/zod-to-json-schema/parsers/null.d.ts +1 -0
  1162. package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  1163. package/dist/utils/zod-to-json-schema/parsers/null.js.map +1 -1
  1164. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs.map +1 -1
  1165. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts +2 -0
  1166. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +1 -1
  1167. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +2 -0
  1168. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  1169. package/dist/utils/zod-to-json-schema/parsers/nullable.js.map +1 -1
  1170. package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -1
  1171. package/dist/utils/zod-to-json-schema/parsers/number.d.cts +2 -0
  1172. package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +1 -1
  1173. package/dist/utils/zod-to-json-schema/parsers/number.d.ts +2 -0
  1174. package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  1175. package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -1
  1176. package/dist/utils/zod-to-json-schema/parsers/object.cjs.map +1 -1
  1177. package/dist/utils/zod-to-json-schema/parsers/object.d.cts +2 -0
  1178. package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +1 -1
  1179. package/dist/utils/zod-to-json-schema/parsers/object.d.ts +2 -0
  1180. package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +1 -1
  1181. package/dist/utils/zod-to-json-schema/parsers/object.js.map +1 -1
  1182. package/dist/utils/zod-to-json-schema/parsers/optional.cjs.map +1 -1
  1183. package/dist/utils/zod-to-json-schema/parsers/optional.d.cts +3 -1
  1184. package/dist/utils/zod-to-json-schema/parsers/optional.d.ts +3 -1
  1185. package/dist/utils/zod-to-json-schema/parsers/optional.js.map +1 -1
  1186. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
  1187. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.cts +4 -1
  1188. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.ts +4 -1
  1189. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  1190. package/dist/utils/zod-to-json-schema/parsers/promise.cjs.map +1 -1
  1191. package/dist/utils/zod-to-json-schema/parsers/promise.d.cts +3 -1
  1192. package/dist/utils/zod-to-json-schema/parsers/promise.d.ts +3 -1
  1193. package/dist/utils/zod-to-json-schema/parsers/promise.js.map +1 -1
  1194. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs.map +1 -1
  1195. package/dist/utils/zod-to-json-schema/parsers/readonly.d.cts +3 -1
  1196. package/dist/utils/zod-to-json-schema/parsers/readonly.d.ts +3 -1
  1197. package/dist/utils/zod-to-json-schema/parsers/readonly.js.map +1 -1
  1198. package/dist/utils/zod-to-json-schema/parsers/record.cjs +0 -1
  1199. package/dist/utils/zod-to-json-schema/parsers/record.cjs.map +1 -1
  1200. package/dist/utils/zod-to-json-schema/parsers/record.d.cts +2 -0
  1201. package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +1 -1
  1202. package/dist/utils/zod-to-json-schema/parsers/record.d.ts +2 -0
  1203. package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  1204. package/dist/utils/zod-to-json-schema/parsers/record.js.map +1 -1
  1205. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
  1206. package/dist/utils/zod-to-json-schema/parsers/set.d.cts +2 -0
  1207. package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +1 -1
  1208. package/dist/utils/zod-to-json-schema/parsers/set.d.ts +2 -0
  1209. package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +1 -1
  1210. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
  1211. package/dist/utils/zod-to-json-schema/parsers/string.cjs +0 -2
  1212. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  1213. package/dist/utils/zod-to-json-schema/parsers/string.d.cts +2 -0
  1214. package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +1 -1
  1215. package/dist/utils/zod-to-json-schema/parsers/string.d.ts +2 -0
  1216. package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  1217. package/dist/utils/zod-to-json-schema/parsers/string.js +0 -2
  1218. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  1219. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs.map +1 -1
  1220. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts +2 -0
  1221. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +1 -1
  1222. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +2 -0
  1223. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +1 -1
  1224. package/dist/utils/zod-to-json-schema/parsers/tuple.js.map +1 -1
  1225. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs.map +1 -1
  1226. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts +1 -0
  1227. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +1 -1
  1228. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +1 -0
  1229. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +1 -1
  1230. package/dist/utils/zod-to-json-schema/parsers/undefined.js.map +1 -1
  1231. package/dist/utils/zod-to-json-schema/parsers/union.cjs.map +1 -1
  1232. package/dist/utils/zod-to-json-schema/parsers/union.d.cts +2 -0
  1233. package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +1 -1
  1234. package/dist/utils/zod-to-json-schema/parsers/union.d.ts +2 -0
  1235. package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  1236. package/dist/utils/zod-to-json-schema/parsers/union.js.map +1 -1
  1237. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs.map +1 -1
  1238. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts +1 -0
  1239. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +1 -1
  1240. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +1 -0
  1241. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +1 -1
  1242. package/dist/utils/zod-to-json-schema/parsers/unknown.js.map +1 -1
  1243. package/dist/utils/zod-to-json-schema/selectParser.cjs +0 -1
  1244. package/dist/utils/zod-to-json-schema/selectParser.cjs.map +1 -1
  1245. package/dist/utils/zod-to-json-schema/selectParser.d.cts +3 -1
  1246. package/dist/utils/zod-to-json-schema/selectParser.d.ts +2 -0
  1247. package/dist/utils/zod-to-json-schema/selectParser.js.map +1 -1
  1248. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs.map +1 -1
  1249. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.cts +3 -1
  1250. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.ts +3 -1
  1251. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  1252. package/dist/vectorstores.cjs.map +1 -1
  1253. package/dist/vectorstores.d.cts +0 -1
  1254. package/dist/vectorstores.d.cts.map +1 -1
  1255. package/dist/vectorstores.d.ts +0 -1
  1256. package/dist/vectorstores.d.ts.map +1 -1
  1257. package/dist/vectorstores.js.map +1 -1
  1258. package/package.json +15 -4
  1259. package/utils/gateway.cjs +1 -0
  1260. package/utils/gateway.d.cts +1 -0
  1261. package/utils/gateway.d.ts +1 -0
  1262. package/utils/gateway.js +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"base.cjs","names":["Visitor","Operators","Comparators","castValue","isFilterEmpty"],"sources":["../../src/structured_query/base.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n Visitor,\n VisitorComparisonResult,\n VisitorOperationResult,\n VisitorResult,\n VisitorStructuredQueryResult,\n} from \"./ir.js\";\nimport { isFilterEmpty, castValue } from \"./utils.js\";\n\n/**\n * Options object for the BasicTranslator class. Specifies the allowed\n * operators and comparators.\n */\nexport type TranslatorOpts = {\n allowedOperators: Operator[];\n allowedComparators: Comparator[];\n};\n\n/**\n * Abstract class that provides a blueprint for creating specific\n * translator classes. Defines two abstract methods: formatFunction and\n * mergeFilters.\n */\nexport abstract class BaseTranslator<\n T extends VectorStore = VectorStore,\n> extends Visitor<T> {\n /**\n * Formats a given function (either an operator or a comparator) into a\n * string.\n * @param func The function to format.\n * @returns Formatted string representation of the function.\n */\n abstract formatFunction(func: Operator | Comparator): string;\n\n /**\n * Merges two filters into one, using a specified merge type.\n * @param defaultFilter The default filter.\n * @param generatedFilter The generated filter.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'.\n * @param forceDefaultFilter If true, the default filter will be used even if the generated filter is not empty.\n * @returns The merged filter, or undefined if both filters are empty.\n */\n abstract mergeFilters(\n defaultFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n generatedFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n mergeType?: \"and\" | \"or\" | \"replace\",\n forceDefaultFilter?: boolean\n ): this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined;\n}\n\n/**\n * Class that extends the BaseTranslator class and provides concrete\n * implementations for the abstract methods. Also declares three types:\n * VisitOperationOutput, VisitComparisonOutput, and\n * VisitStructuredQueryOutput, which are used as the return types for the\n * visitOperation, visitComparison, and visitStructuredQuery methods\n * respectively.\n */\nexport class BasicTranslator<\n T extends VectorStore = VectorStore,\n> extends BaseTranslator<T> {\n declare VisitOperationOutput: VisitorOperationResult;\n\n declare VisitComparisonOutput: VisitorComparisonResult;\n\n declare VisitStructuredQueryOutput: VisitorStructuredQueryResult;\n\n allowedOperators: Operator[];\n\n allowedComparators: Comparator[];\n\n constructor(opts?: TranslatorOpts) {\n super();\n this.allowedOperators = opts?.allowedOperators ?? [\n Operators.and,\n Operators.or,\n ];\n this.allowedComparators = opts?.allowedComparators ?? [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n\n formatFunction(func: Operator | Comparator): string {\n if (func in Comparators) {\n if (\n this.allowedComparators.length > 0 &&\n this.allowedComparators.indexOf(func as Comparator) === -1\n ) {\n throw new Error(\n `Comparator ${func} not allowed. Allowed comparators: ${this.allowedComparators.join(\n \", \"\n )}`\n );\n }\n } else if (func in Operators) {\n if (\n this.allowedOperators.length > 0 &&\n this.allowedOperators.indexOf(func as Operator) === -1\n ) {\n throw new Error(\n `Operator ${func} not allowed. Allowed operators: ${this.allowedOperators.join(\n \", \"\n )}`\n );\n }\n } else {\n throw new Error(\"Unknown comparator or operator\");\n }\n return `$${func}`;\n }\n\n /**\n * Visits an operation and returns a result.\n * @param operation The operation to visit.\n * @returns The result of visiting the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const args = operation.args?.map((arg) =>\n arg.accept(this)\n ) as VisitorResult[];\n return {\n [this.formatFunction(operation.operator)]: args,\n };\n }\n\n /**\n * Visits a comparison and returns a result.\n * @param comparison The comparison to visit.\n * @returns The result of visiting the comparison.\n */\n visitComparison(comparison: Comparison): this[\"VisitComparisonOutput\"] {\n return {\n [comparison.attribute]: {\n [this.formatFunction(comparison.comparator)]: castValue(\n comparison.value\n ),\n },\n };\n }\n\n /**\n * Visits a structured query and returns a result.\n * @param query The structured query to visit.\n * @returns The result of visiting the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n let nextArg = {};\n if (query.filter) {\n nextArg = {\n filter: query.filter.accept(this),\n };\n }\n return nextArg;\n }\n\n mergeFilters(\n defaultFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n generatedFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n mergeType = \"and\",\n forceDefaultFilter = false\n ): VisitorStructuredQueryResult[\"filter\"] | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (forceDefaultFilter) {\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return {\n $and: [defaultFilter, generatedFilter],\n };\n } else if (mergeType === \"or\") {\n return {\n $or: [defaultFilter, generatedFilter],\n };\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":";;;;;;;;AA+BA,IAAsB,iBAAtB,cAEUA,WAAAA,QAAW;;;;;;;;;AAiCrB,IAAa,kBAAb,cAEU,eAAkB;CAO1B;CAEA;CAEA,YAAY,MAAuB;AACjC,SAAO;AACP,OAAK,mBAAmB,MAAM,oBAAoB,CAChDC,WAAAA,UAAU,KACVA,WAAAA,UAAU,GACX;AACD,OAAK,qBAAqB,MAAM,sBAAsB;GACpDC,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACb;;CAGH,eAAe,MAAqC;AAClD,MAAI,QAAQA,WAAAA;OAER,KAAK,mBAAmB,SAAS,KACjC,KAAK,mBAAmB,QAAQ,KAAmB,KAAK,GAExD,OAAM,IAAI,MACR,cAAc,KAAK,qCAAqC,KAAK,mBAAmB,KAC9E,KACD,GACF;aAEM,QAAQD,WAAAA;OAEf,KAAK,iBAAiB,SAAS,KAC/B,KAAK,iBAAiB,QAAQ,KAAiB,KAAK,GAEpD,OAAM,IAAI,MACR,YAAY,KAAK,mCAAmC,KAAK,iBAAiB,KACxE,KACD,GACF;QAGH,OAAM,IAAI,MAAM,iCAAiC;AAEnD,SAAO,IAAI;;;;;;;CAQb,eAAe,WAAoD;EACjE,MAAM,OAAO,UAAU,MAAM,KAAK,QAChC,IAAI,OAAO,KAAK,CACjB;AACD,SAAO,GACJ,KAAK,eAAe,UAAU,SAAS,GAAG,MAC5C;;;;;;;CAQH,gBAAgB,YAAuD;AACrE,SAAO,GACJ,WAAW,YAAY,GACrB,KAAK,eAAe,WAAW,WAAW,GAAGE,cAAAA,UAC5C,WAAW,MACZ,EACF,EACF;;;;;;;CAQH,qBACE,OACoC;EACpC,IAAI,UAAU,EAAE;AAChB,MAAI,MAAM,OACR,WAAU,EACR,QAAQ,MAAM,OAAO,OAAO,KAAK,EAClC;AAEH,SAAO;;CAGT,aACE,eACA,iBACA,YAAY,OACZ,qBAAqB,OAC+B;AACpD,MAAIC,cAAAA,cAAc,cAAc,IAAIA,cAAAA,cAAc,gBAAgB,CAChE;AAEF,MAAIA,cAAAA,cAAc,cAAc,IAAI,cAAc,WAAW;AAC3D,OAAIA,cAAAA,cAAc,gBAAgB,CAChC;AAEF,UAAO;;AAET,MAAIA,cAAAA,cAAc,gBAAgB,EAAE;AAClC,OAAI,mBACF,QAAO;AAET,OAAI,cAAc,MAChB;AAEF,UAAO;;AAET,MAAI,cAAc,MAChB,QAAO,EACL,MAAM,CAAC,eAAe,gBAAgB,EACvC;WACQ,cAAc,KACvB,QAAO,EACL,KAAK,CAAC,eAAe,gBAAgB,EACtC;MAED,OAAM,IAAI,MAAM,qBAAqB"}
1
+ {"version":3,"file":"base.cjs","names":["Visitor","Operators","Comparators","castValue","isFilterEmpty"],"sources":["../../src/structured_query/base.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n Visitor,\n VisitorComparisonResult,\n VisitorOperationResult,\n VisitorResult,\n VisitorStructuredQueryResult,\n} from \"./ir.js\";\nimport { isFilterEmpty, castValue } from \"./utils.js\";\n\n/**\n * Options object for the BasicTranslator class. Specifies the allowed\n * operators and comparators.\n */\nexport type TranslatorOpts = {\n allowedOperators: Operator[];\n allowedComparators: Comparator[];\n};\n\n/**\n * Abstract class that provides a blueprint for creating specific\n * translator classes. Defines two abstract methods: formatFunction and\n * mergeFilters.\n */\nexport abstract class BaseTranslator<\n T extends VectorStore = VectorStore,\n> extends Visitor<T> {\n /**\n * Formats a given function (either an operator or a comparator) into a\n * string.\n * @param func The function to format.\n * @returns Formatted string representation of the function.\n */\n abstract formatFunction(func: Operator | Comparator): string;\n\n /**\n * Merges two filters into one, using a specified merge type.\n * @param defaultFilter The default filter.\n * @param generatedFilter The generated filter.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'.\n * @param forceDefaultFilter If true, the default filter will be used even if the generated filter is not empty.\n * @returns The merged filter, or undefined if both filters are empty.\n */\n abstract mergeFilters(\n defaultFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n generatedFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n mergeType?: \"and\" | \"or\" | \"replace\",\n forceDefaultFilter?: boolean\n ): this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined;\n}\n\n/**\n * Class that extends the BaseTranslator class and provides concrete\n * implementations for the abstract methods. Also declares three types:\n * VisitOperationOutput, VisitComparisonOutput, and\n * VisitStructuredQueryOutput, which are used as the return types for the\n * visitOperation, visitComparison, and visitStructuredQuery methods\n * respectively.\n */\nexport class BasicTranslator<\n T extends VectorStore = VectorStore,\n> extends BaseTranslator<T> {\n declare VisitOperationOutput: VisitorOperationResult;\n\n declare VisitComparisonOutput: VisitorComparisonResult;\n\n declare VisitStructuredQueryOutput: VisitorStructuredQueryResult;\n\n allowedOperators: Operator[];\n\n allowedComparators: Comparator[];\n\n constructor(opts?: TranslatorOpts) {\n super();\n this.allowedOperators = opts?.allowedOperators ?? [\n Operators.and,\n Operators.or,\n ];\n this.allowedComparators = opts?.allowedComparators ?? [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n\n formatFunction(func: Operator | Comparator): string {\n if (func in Comparators) {\n if (\n this.allowedComparators.length > 0 &&\n this.allowedComparators.indexOf(func as Comparator) === -1\n ) {\n throw new Error(\n `Comparator ${func} not allowed. Allowed comparators: ${this.allowedComparators.join(\n \", \"\n )}`\n );\n }\n } else if (func in Operators) {\n if (\n this.allowedOperators.length > 0 &&\n this.allowedOperators.indexOf(func as Operator) === -1\n ) {\n throw new Error(\n `Operator ${func} not allowed. Allowed operators: ${this.allowedOperators.join(\n \", \"\n )}`\n );\n }\n } else {\n throw new Error(\"Unknown comparator or operator\");\n }\n return `$${func}`;\n }\n\n /**\n * Visits an operation and returns a result.\n * @param operation The operation to visit.\n * @returns The result of visiting the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const args = operation.args?.map((arg) =>\n arg.accept(this)\n ) as VisitorResult[];\n return {\n [this.formatFunction(operation.operator)]: args,\n };\n }\n\n /**\n * Visits a comparison and returns a result.\n * @param comparison The comparison to visit.\n * @returns The result of visiting the comparison.\n */\n visitComparison(comparison: Comparison): this[\"VisitComparisonOutput\"] {\n return {\n [comparison.attribute]: {\n [this.formatFunction(comparison.comparator)]: castValue(\n comparison.value\n ),\n },\n };\n }\n\n /**\n * Visits a structured query and returns a result.\n * @param query The structured query to visit.\n * @returns The result of visiting the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n let nextArg = {};\n if (query.filter) {\n nextArg = {\n filter: query.filter.accept(this),\n };\n }\n return nextArg;\n }\n\n mergeFilters(\n defaultFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n generatedFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n mergeType = \"and\",\n forceDefaultFilter = false\n ): VisitorStructuredQueryResult[\"filter\"] | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (forceDefaultFilter) {\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return {\n $and: [defaultFilter, generatedFilter],\n };\n } else if (mergeType === \"or\") {\n return {\n $or: [defaultFilter, generatedFilter],\n };\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":";;;;;;;;AA+BA,IAAsB,iBAAtB,cAEUA,WAAAA,QAAW,CAuBrB;;;;;;;;;AAUA,IAAa,kBAAb,cAEU,eAAkB;CAO1B;CAEA;CAEA,YAAY,MAAuB;EACjC,MAAM;EACN,KAAK,mBAAmB,MAAM,oBAAoB,CAChDC,WAAAA,UAAU,KACVA,WAAAA,UAAU,EACZ;EACA,KAAK,qBAAqB,MAAM,sBAAsB;GACpDC,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;GACZA,WAAAA,YAAY;EACd;CACF;CAEA,eAAe,MAAqC;EAClD,IAAI,QAAQA,WAAAA,aAER;OAAA,KAAK,mBAAmB,SAAS,KACjC,KAAK,mBAAmB,QAAQ,IAAkB,MAAM,IAExD,MAAM,IAAI,MACR,cAAc,KAAK,qCAAqC,KAAK,mBAAmB,KAC9E,IACF,GACF;EAAA,OAEG,IAAI,QAAQD,WAAAA,WAEf;OAAA,KAAK,iBAAiB,SAAS,KAC/B,KAAK,iBAAiB,QAAQ,IAAgB,MAAM,IAEpD,MAAM,IAAI,MACR,YAAY,KAAK,mCAAmC,KAAK,iBAAiB,KACxE,IACF,GACF;EAAA,OAGF,MAAM,IAAI,MAAM,gCAAgC;EAElD,OAAO,IAAI;CACb;;;;;;CAOA,eAAe,WAAoD;EACjE,MAAM,OAAO,UAAU,MAAM,KAAK,QAChC,IAAI,OAAO,IAAI,CACjB;EACA,OAAO,GACJ,KAAK,eAAe,UAAU,QAAQ,IAAI,KAC7C;CACF;;;;;;CAOA,gBAAgB,YAAuD;EACrE,OAAO,GACJ,WAAW,YAAY,GACrB,KAAK,eAAe,WAAW,UAAU,IAAIE,cAAAA,UAC5C,WAAW,KACb,EACF,EACF;CACF;;;;;;CAOA,qBACE,OACoC;EACpC,IAAI,UAAU,CAAC;EACf,IAAI,MAAM,QACR,UAAU,EACR,QAAQ,MAAM,OAAO,OAAO,IAAI,EAClC;EAEF,OAAO;CACT;CAEA,aACE,eACA,iBACA,YAAY,OACZ,qBAAqB,OAC+B;EACpD,IAAIC,cAAAA,cAAc,aAAa,KAAKA,cAAAA,cAAc,eAAe,GAC/D;EAEF,IAAIA,cAAAA,cAAc,aAAa,KAAK,cAAc,WAAW;GAC3D,IAAIA,cAAAA,cAAc,eAAe,GAC/B;GAEF,OAAO;EACT;EACA,IAAIA,cAAAA,cAAc,eAAe,GAAG;GAClC,IAAI,oBACF,OAAO;GAET,IAAI,cAAc,OAChB;GAEF,OAAO;EACT;EACA,IAAI,cAAc,OAChB,OAAO,EACL,MAAM,CAAC,eAAe,eAAe,EACvC;OACK,IAAI,cAAc,MACvB,OAAO,EACL,KAAK,CAAC,eAAe,eAAe,EACtC;OAEA,MAAM,IAAI,MAAM,oBAAoB;CAExC;AACF"}
@@ -1,6 +1,5 @@
1
1
  import { VectorStore } from "../vectorstores.cjs";
2
2
  import { Comparator, Comparison, Operation, Operator, StructuredQuery, Visitor, VisitorComparisonResult, VisitorOperationResult, VisitorStructuredQueryResult } from "./ir.cjs";
3
-
4
3
  //#region src/structured_query/base.d.ts
5
4
  /**
6
5
  * Options object for the BasicTranslator class. Specifies the allowed
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.cts","names":[],"sources":["../../src/structured_query/base.ts"],"mappings":";;;;;;AAqBA;;KAAY,cAAA;EACV,gBAAA,EAAkB,QAAA;EAClB,kBAAA,EAAoB,UAAA;AAAA;;;;;AAQtB;uBAAsB,cAAA,WACV,WAAA,GAAc,WAAA,UAChB,OAAA,CAAQ,CAAA;EAFkB;;;;;;EAAA,SASzB,cAAA,CAAe,IAAA,EAAM,QAAA,GAAW,UAAA;EAP1B;;;;;;;;EAAA,SAiBN,YAAA,CACP,aAAA,4DACA,eAAA,4DACA,SAAA,6BACA,kBAAA;AAAA;;;;;;;;;cAYS,eAAA,WACD,WAAA,GAAc,WAAA,UAChB,cAAA,CAAe,CAAA;EACf,oBAAA,EAAsB,sBAAA;EAEtB,qBAAA,EAAuB,uBAAA;EAEvB,0BAAA,EAA4B,4BAAA;EAEpC,gBAAA,EAAkB,QAAA;EAElB,kBAAA,EAAoB,UAAA;EAEpB,WAAA,CAAY,IAAA,GAAO,cAAA;EAgBnB,cAAA,CAAe,IAAA,EAAM,QAAA,GAAW,UAAA;EAtBI;;;;;EAwDpC,cAAA,CAAe,SAAA,EAAW,SAAA;EAAA;;;;;EAc1B,eAAA,CAAgB,UAAA,EAAY,UAAA;EA3EpB;;;;;EA0FR,oBAAA,CACE,KAAA,EAAO,eAAA;EAWT,YAAA,CACE,aAAA,EAAe,4BAAA,wBACf,eAAA,EAAiB,4BAAA,wBACjB,SAAA,WACA,kBAAA,aACC,4BAAA;AAAA"}
1
+ {"version":3,"file":"base.d.cts","names":[],"sources":["../../src/structured_query/base.ts"],"mappings":";;;;;;;KAqBY;EACV,kBAAkB;EAClB,oBAAoB;;;;;;;uBAQA,eACpB,UAAU,cAAc,qBAChB,QAAQ;;;;;;;WAOP,eAAe,MAAM,WAAW;;;;;;;;;WAUhC,aACP,yEACA,2EACA,sCACA;;;;;;;;;;cAYS,gBACX,UAAU,cAAc,qBAChB,eAAe;EACf,sBAAsB;EAEtB,uBAAuB;EAEvB,4BAA4B;EAEpC,kBAAkB;EAElB,oBAAoB;EAEpB,YAAY,OAAO;EAgBnB,eAAe,MAAM,WAAW;;;;;;EAkChC,eAAe,WAAW;;;;;;EAc1B,gBAAgB,YAAY;;;;;;EAe5B,qBACE,OAAO;EAWT,aACE,eAAe,oDACf,iBAAiB,oDACjB,oBACA,+BACC"}
@@ -1,6 +1,5 @@
1
1
  import { VectorStore } from "../vectorstores.js";
2
2
  import { Comparator, Comparison, Operation, Operator, StructuredQuery, Visitor, VisitorComparisonResult, VisitorOperationResult, VisitorStructuredQueryResult } from "./ir.js";
3
-
4
3
  //#region src/structured_query/base.d.ts
5
4
  /**
6
5
  * Options object for the BasicTranslator class. Specifies the allowed
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/structured_query/base.ts"],"mappings":";;;;;;AAqBA;;KAAY,cAAA;EACV,gBAAA,EAAkB,QAAA;EAClB,kBAAA,EAAoB,UAAA;AAAA;;;;;AAQtB;uBAAsB,cAAA,WACV,WAAA,GAAc,WAAA,UAChB,OAAA,CAAQ,CAAA;EAFkB;;;;;;EAAA,SASzB,cAAA,CAAe,IAAA,EAAM,QAAA,GAAW,UAAA;EAP1B;;;;;;;;EAAA,SAiBN,YAAA,CACP,aAAA,4DACA,eAAA,4DACA,SAAA,6BACA,kBAAA;AAAA;;;;;;;;;cAYS,eAAA,WACD,WAAA,GAAc,WAAA,UAChB,cAAA,CAAe,CAAA;EACf,oBAAA,EAAsB,sBAAA;EAEtB,qBAAA,EAAuB,uBAAA;EAEvB,0BAAA,EAA4B,4BAAA;EAEpC,gBAAA,EAAkB,QAAA;EAElB,kBAAA,EAAoB,UAAA;EAEpB,WAAA,CAAY,IAAA,GAAO,cAAA;EAgBnB,cAAA,CAAe,IAAA,EAAM,QAAA,GAAW,UAAA;EAtBI;;;;;EAwDpC,cAAA,CAAe,SAAA,EAAW,SAAA;EAAA;;;;;EAc1B,eAAA,CAAgB,UAAA,EAAY,UAAA;EA3EpB;;;;;EA0FR,oBAAA,CACE,KAAA,EAAO,eAAA;EAWT,YAAA,CACE,aAAA,EAAe,4BAAA,wBACf,eAAA,EAAiB,4BAAA,wBACjB,SAAA,WACA,kBAAA,aACC,4BAAA;AAAA"}
1
+ {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/structured_query/base.ts"],"mappings":";;;;;;;KAqBY;EACV,kBAAkB;EAClB,oBAAoB;;;;;;;uBAQA,eACpB,UAAU,cAAc,qBAChB,QAAQ;;;;;;;WAOP,eAAe,MAAM,WAAW;;;;;;;;;WAUhC,aACP,yEACA,2EACA,sCACA;;;;;;;;;;cAYS,gBACX,UAAU,cAAc,qBAChB,eAAe;EACf,sBAAsB;EAEtB,uBAAuB;EAEvB,4BAA4B;EAEpC,kBAAkB;EAElB,oBAAoB;EAEpB,YAAY,OAAO;EAgBnB,eAAe,MAAM,WAAW;;;;;;EAkChC,eAAe,WAAW;;;;;;EAc1B,gBAAgB,YAAY;;;;;;EAe5B,qBACE,OAAO;EAWT,aACE,eAAe,oDACf,iBAAiB,oDACjB,oBACA,+BACC"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":[],"sources":["../../src/structured_query/base.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n Visitor,\n VisitorComparisonResult,\n VisitorOperationResult,\n VisitorResult,\n VisitorStructuredQueryResult,\n} from \"./ir.js\";\nimport { isFilterEmpty, castValue } from \"./utils.js\";\n\n/**\n * Options object for the BasicTranslator class. Specifies the allowed\n * operators and comparators.\n */\nexport type TranslatorOpts = {\n allowedOperators: Operator[];\n allowedComparators: Comparator[];\n};\n\n/**\n * Abstract class that provides a blueprint for creating specific\n * translator classes. Defines two abstract methods: formatFunction and\n * mergeFilters.\n */\nexport abstract class BaseTranslator<\n T extends VectorStore = VectorStore,\n> extends Visitor<T> {\n /**\n * Formats a given function (either an operator or a comparator) into a\n * string.\n * @param func The function to format.\n * @returns Formatted string representation of the function.\n */\n abstract formatFunction(func: Operator | Comparator): string;\n\n /**\n * Merges two filters into one, using a specified merge type.\n * @param defaultFilter The default filter.\n * @param generatedFilter The generated filter.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'.\n * @param forceDefaultFilter If true, the default filter will be used even if the generated filter is not empty.\n * @returns The merged filter, or undefined if both filters are empty.\n */\n abstract mergeFilters(\n defaultFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n generatedFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n mergeType?: \"and\" | \"or\" | \"replace\",\n forceDefaultFilter?: boolean\n ): this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined;\n}\n\n/**\n * Class that extends the BaseTranslator class and provides concrete\n * implementations for the abstract methods. Also declares three types:\n * VisitOperationOutput, VisitComparisonOutput, and\n * VisitStructuredQueryOutput, which are used as the return types for the\n * visitOperation, visitComparison, and visitStructuredQuery methods\n * respectively.\n */\nexport class BasicTranslator<\n T extends VectorStore = VectorStore,\n> extends BaseTranslator<T> {\n declare VisitOperationOutput: VisitorOperationResult;\n\n declare VisitComparisonOutput: VisitorComparisonResult;\n\n declare VisitStructuredQueryOutput: VisitorStructuredQueryResult;\n\n allowedOperators: Operator[];\n\n allowedComparators: Comparator[];\n\n constructor(opts?: TranslatorOpts) {\n super();\n this.allowedOperators = opts?.allowedOperators ?? [\n Operators.and,\n Operators.or,\n ];\n this.allowedComparators = opts?.allowedComparators ?? [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n\n formatFunction(func: Operator | Comparator): string {\n if (func in Comparators) {\n if (\n this.allowedComparators.length > 0 &&\n this.allowedComparators.indexOf(func as Comparator) === -1\n ) {\n throw new Error(\n `Comparator ${func} not allowed. Allowed comparators: ${this.allowedComparators.join(\n \", \"\n )}`\n );\n }\n } else if (func in Operators) {\n if (\n this.allowedOperators.length > 0 &&\n this.allowedOperators.indexOf(func as Operator) === -1\n ) {\n throw new Error(\n `Operator ${func} not allowed. Allowed operators: ${this.allowedOperators.join(\n \", \"\n )}`\n );\n }\n } else {\n throw new Error(\"Unknown comparator or operator\");\n }\n return `$${func}`;\n }\n\n /**\n * Visits an operation and returns a result.\n * @param operation The operation to visit.\n * @returns The result of visiting the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const args = operation.args?.map((arg) =>\n arg.accept(this)\n ) as VisitorResult[];\n return {\n [this.formatFunction(operation.operator)]: args,\n };\n }\n\n /**\n * Visits a comparison and returns a result.\n * @param comparison The comparison to visit.\n * @returns The result of visiting the comparison.\n */\n visitComparison(comparison: Comparison): this[\"VisitComparisonOutput\"] {\n return {\n [comparison.attribute]: {\n [this.formatFunction(comparison.comparator)]: castValue(\n comparison.value\n ),\n },\n };\n }\n\n /**\n * Visits a structured query and returns a result.\n * @param query The structured query to visit.\n * @returns The result of visiting the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n let nextArg = {};\n if (query.filter) {\n nextArg = {\n filter: query.filter.accept(this),\n };\n }\n return nextArg;\n }\n\n mergeFilters(\n defaultFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n generatedFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n mergeType = \"and\",\n forceDefaultFilter = false\n ): VisitorStructuredQueryResult[\"filter\"] | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (forceDefaultFilter) {\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return {\n $and: [defaultFilter, generatedFilter],\n };\n } else if (mergeType === \"or\") {\n return {\n $or: [defaultFilter, generatedFilter],\n };\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":";;;;;;;;AA+BA,IAAsB,iBAAtB,cAEU,QAAW;;;;;;;;;AAiCrB,IAAa,kBAAb,cAEU,eAAkB;CAO1B;CAEA;CAEA,YAAY,MAAuB;AACjC,SAAO;AACP,OAAK,mBAAmB,MAAM,oBAAoB,CAChD,UAAU,KACV,UAAU,GACX;AACD,OAAK,qBAAqB,MAAM,sBAAsB;GACpD,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACb;;CAGH,eAAe,MAAqC;AAClD,MAAI,QAAQ;OAER,KAAK,mBAAmB,SAAS,KACjC,KAAK,mBAAmB,QAAQ,KAAmB,KAAK,GAExD,OAAM,IAAI,MACR,cAAc,KAAK,qCAAqC,KAAK,mBAAmB,KAC9E,KACD,GACF;aAEM,QAAQ;OAEf,KAAK,iBAAiB,SAAS,KAC/B,KAAK,iBAAiB,QAAQ,KAAiB,KAAK,GAEpD,OAAM,IAAI,MACR,YAAY,KAAK,mCAAmC,KAAK,iBAAiB,KACxE,KACD,GACF;QAGH,OAAM,IAAI,MAAM,iCAAiC;AAEnD,SAAO,IAAI;;;;;;;CAQb,eAAe,WAAoD;EACjE,MAAM,OAAO,UAAU,MAAM,KAAK,QAChC,IAAI,OAAO,KAAK,CACjB;AACD,SAAO,GACJ,KAAK,eAAe,UAAU,SAAS,GAAG,MAC5C;;;;;;;CAQH,gBAAgB,YAAuD;AACrE,SAAO,GACJ,WAAW,YAAY,GACrB,KAAK,eAAe,WAAW,WAAW,GAAG,UAC5C,WAAW,MACZ,EACF,EACF;;;;;;;CAQH,qBACE,OACoC;EACpC,IAAI,UAAU,EAAE;AAChB,MAAI,MAAM,OACR,WAAU,EACR,QAAQ,MAAM,OAAO,OAAO,KAAK,EAClC;AAEH,SAAO;;CAGT,aACE,eACA,iBACA,YAAY,OACZ,qBAAqB,OAC+B;AACpD,MAAI,cAAc,cAAc,IAAI,cAAc,gBAAgB,CAChE;AAEF,MAAI,cAAc,cAAc,IAAI,cAAc,WAAW;AAC3D,OAAI,cAAc,gBAAgB,CAChC;AAEF,UAAO;;AAET,MAAI,cAAc,gBAAgB,EAAE;AAClC,OAAI,mBACF,QAAO;AAET,OAAI,cAAc,MAChB;AAEF,UAAO;;AAET,MAAI,cAAc,MAChB,QAAO,EACL,MAAM,CAAC,eAAe,gBAAgB,EACvC;WACQ,cAAc,KACvB,QAAO,EACL,KAAK,CAAC,eAAe,gBAAgB,EACtC;MAED,OAAM,IAAI,MAAM,qBAAqB"}
1
+ {"version":3,"file":"base.js","names":[],"sources":["../../src/structured_query/base.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n Visitor,\n VisitorComparisonResult,\n VisitorOperationResult,\n VisitorResult,\n VisitorStructuredQueryResult,\n} from \"./ir.js\";\nimport { isFilterEmpty, castValue } from \"./utils.js\";\n\n/**\n * Options object for the BasicTranslator class. Specifies the allowed\n * operators and comparators.\n */\nexport type TranslatorOpts = {\n allowedOperators: Operator[];\n allowedComparators: Comparator[];\n};\n\n/**\n * Abstract class that provides a blueprint for creating specific\n * translator classes. Defines two abstract methods: formatFunction and\n * mergeFilters.\n */\nexport abstract class BaseTranslator<\n T extends VectorStore = VectorStore,\n> extends Visitor<T> {\n /**\n * Formats a given function (either an operator or a comparator) into a\n * string.\n * @param func The function to format.\n * @returns Formatted string representation of the function.\n */\n abstract formatFunction(func: Operator | Comparator): string;\n\n /**\n * Merges two filters into one, using a specified merge type.\n * @param defaultFilter The default filter.\n * @param generatedFilter The generated filter.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'.\n * @param forceDefaultFilter If true, the default filter will be used even if the generated filter is not empty.\n * @returns The merged filter, or undefined if both filters are empty.\n */\n abstract mergeFilters(\n defaultFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n generatedFilter: this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined,\n mergeType?: \"and\" | \"or\" | \"replace\",\n forceDefaultFilter?: boolean\n ): this[\"VisitStructuredQueryOutput\"][\"filter\"] | undefined;\n}\n\n/**\n * Class that extends the BaseTranslator class and provides concrete\n * implementations for the abstract methods. Also declares three types:\n * VisitOperationOutput, VisitComparisonOutput, and\n * VisitStructuredQueryOutput, which are used as the return types for the\n * visitOperation, visitComparison, and visitStructuredQuery methods\n * respectively.\n */\nexport class BasicTranslator<\n T extends VectorStore = VectorStore,\n> extends BaseTranslator<T> {\n declare VisitOperationOutput: VisitorOperationResult;\n\n declare VisitComparisonOutput: VisitorComparisonResult;\n\n declare VisitStructuredQueryOutput: VisitorStructuredQueryResult;\n\n allowedOperators: Operator[];\n\n allowedComparators: Comparator[];\n\n constructor(opts?: TranslatorOpts) {\n super();\n this.allowedOperators = opts?.allowedOperators ?? [\n Operators.and,\n Operators.or,\n ];\n this.allowedComparators = opts?.allowedComparators ?? [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n\n formatFunction(func: Operator | Comparator): string {\n if (func in Comparators) {\n if (\n this.allowedComparators.length > 0 &&\n this.allowedComparators.indexOf(func as Comparator) === -1\n ) {\n throw new Error(\n `Comparator ${func} not allowed. Allowed comparators: ${this.allowedComparators.join(\n \", \"\n )}`\n );\n }\n } else if (func in Operators) {\n if (\n this.allowedOperators.length > 0 &&\n this.allowedOperators.indexOf(func as Operator) === -1\n ) {\n throw new Error(\n `Operator ${func} not allowed. Allowed operators: ${this.allowedOperators.join(\n \", \"\n )}`\n );\n }\n } else {\n throw new Error(\"Unknown comparator or operator\");\n }\n return `$${func}`;\n }\n\n /**\n * Visits an operation and returns a result.\n * @param operation The operation to visit.\n * @returns The result of visiting the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const args = operation.args?.map((arg) =>\n arg.accept(this)\n ) as VisitorResult[];\n return {\n [this.formatFunction(operation.operator)]: args,\n };\n }\n\n /**\n * Visits a comparison and returns a result.\n * @param comparison The comparison to visit.\n * @returns The result of visiting the comparison.\n */\n visitComparison(comparison: Comparison): this[\"VisitComparisonOutput\"] {\n return {\n [comparison.attribute]: {\n [this.formatFunction(comparison.comparator)]: castValue(\n comparison.value\n ),\n },\n };\n }\n\n /**\n * Visits a structured query and returns a result.\n * @param query The structured query to visit.\n * @returns The result of visiting the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n let nextArg = {};\n if (query.filter) {\n nextArg = {\n filter: query.filter.accept(this),\n };\n }\n return nextArg;\n }\n\n mergeFilters(\n defaultFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n generatedFilter: VisitorStructuredQueryResult[\"filter\"] | undefined,\n mergeType = \"and\",\n forceDefaultFilter = false\n ): VisitorStructuredQueryResult[\"filter\"] | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (forceDefaultFilter) {\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n if (mergeType === \"and\") {\n return {\n $and: [defaultFilter, generatedFilter],\n };\n } else if (mergeType === \"or\") {\n return {\n $or: [defaultFilter, generatedFilter],\n };\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":";;;;;;;;AA+BA,IAAsB,iBAAtB,cAEU,QAAW,CAuBrB;;;;;;;;;AAUA,IAAa,kBAAb,cAEU,eAAkB;CAO1B;CAEA;CAEA,YAAY,MAAuB;EACjC,MAAM;EACN,KAAK,mBAAmB,MAAM,oBAAoB,CAChD,UAAU,KACV,UAAU,EACZ;EACA,KAAK,qBAAqB,MAAM,sBAAsB;GACpD,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;EACd;CACF;CAEA,eAAe,MAAqC;EAClD,IAAI,QAAQ,aAER;OAAA,KAAK,mBAAmB,SAAS,KACjC,KAAK,mBAAmB,QAAQ,IAAkB,MAAM,IAExD,MAAM,IAAI,MACR,cAAc,KAAK,qCAAqC,KAAK,mBAAmB,KAC9E,IACF,GACF;EAAA,OAEG,IAAI,QAAQ,WAEf;OAAA,KAAK,iBAAiB,SAAS,KAC/B,KAAK,iBAAiB,QAAQ,IAAgB,MAAM,IAEpD,MAAM,IAAI,MACR,YAAY,KAAK,mCAAmC,KAAK,iBAAiB,KACxE,IACF,GACF;EAAA,OAGF,MAAM,IAAI,MAAM,gCAAgC;EAElD,OAAO,IAAI;CACb;;;;;;CAOA,eAAe,WAAoD;EACjE,MAAM,OAAO,UAAU,MAAM,KAAK,QAChC,IAAI,OAAO,IAAI,CACjB;EACA,OAAO,GACJ,KAAK,eAAe,UAAU,QAAQ,IAAI,KAC7C;CACF;;;;;;CAOA,gBAAgB,YAAuD;EACrE,OAAO,GACJ,WAAW,YAAY,GACrB,KAAK,eAAe,WAAW,UAAU,IAAI,UAC5C,WAAW,KACb,EACF,EACF;CACF;;;;;;CAOA,qBACE,OACoC;EACpC,IAAI,UAAU,CAAC;EACf,IAAI,MAAM,QACR,UAAU,EACR,QAAQ,MAAM,OAAO,OAAO,IAAI,EAClC;EAEF,OAAO;CACT;CAEA,aACE,eACA,iBACA,YAAY,OACZ,qBAAqB,OAC+B;EACpD,IAAI,cAAc,aAAa,KAAK,cAAc,eAAe,GAC/D;EAEF,IAAI,cAAc,aAAa,KAAK,cAAc,WAAW;GAC3D,IAAI,cAAc,eAAe,GAC/B;GAEF,OAAO;EACT;EACA,IAAI,cAAc,eAAe,GAAG;GAClC,IAAI,oBACF,OAAO;GAET,IAAI,cAAc,OAChB;GAEF,OAAO;EACT;EACA,IAAI,cAAc,OAChB,OAAO,EACL,MAAM,CAAC,eAAe,eAAe,EACvC;OACK,IAAI,cAAc,MACvB,OAAO,EACL,KAAK,CAAC,eAAe,eAAe,EACtC;OAEA,MAAM,IAAI,MAAM,oBAAoB;CAExC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"functional.cjs","names":["BaseTranslator","Operators","Comparators","castValue","isFilterEmpty"],"sources":["../../src/structured_query/functional.ts"],"sourcesContent":["import { Document } from \"../documents/document.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n} from \"./ir.js\";\nimport { BaseTranslator } from \"./base.js\";\nimport { castValue, isFilterEmpty } from \"./utils.js\";\n\n/**\n * A type alias for an object that maps comparison operators to string or\n * number values. This is used in the comparison functions to determine\n * the result of a comparison operation.\n */\ntype ValueType = {\n eq: string | number | boolean;\n ne: string | number | boolean;\n lt: string | number;\n lte: string | number;\n gt: string | number;\n gte: string | number;\n};\n\n/**\n * A type alias for a function that takes a `Document` as an argument and\n * returns a boolean. This function is used as a filter for documents.\n */\nexport type FunctionFilter = (document: Document) => boolean;\n\n/**\n * A class that extends `BaseTranslator` to translate structured queries\n * into functional filters.\n * @example\n * ```typescript\n * const functionalTranslator = new FunctionalTranslator();\n * const relevantDocuments = await functionalTranslator.getRelevantDocuments(\n * \"Which movies are rated higher than 8.5?\",\n * );\n * ```\n */\nexport class FunctionalTranslator extends BaseTranslator {\n declare VisitOperationOutput: FunctionFilter;\n\n declare VisitComparisonOutput: FunctionFilter;\n\n declare VisitStructuredQueryOutput:\n | { filter: FunctionFilter }\n | { [k: string]: never };\n\n allowedOperators: Operator[] = [Operators.and, Operators.or];\n\n allowedComparators: Comparator[] = [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n\n formatFunction(): string {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Returns the allowed comparators for a given data type.\n * @param input The input value to get the allowed comparators for.\n * @returns An array of allowed comparators for the input data type.\n */\n getAllowedComparatorsForType(inputType: string): Comparator[] {\n switch (inputType) {\n case \"string\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"number\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"boolean\": {\n return [Comparators.eq, Comparators.ne];\n }\n default: {\n throw new Error(`Unsupported data type: ${inputType}`);\n }\n }\n }\n\n /**\n * Returns a function that performs a comparison based on the provided\n * comparator.\n * @param comparator The comparator to base the comparison function on.\n * @returns A function that takes two arguments and returns a boolean based on the comparison.\n */\n getComparatorFunction<C extends Comparator>(\n comparator: Comparator\n ): (a: string | number, b: ValueType[C]) => boolean {\n switch (comparator) {\n case Comparators.eq: {\n return (a: string | number, b: ValueType[C]) => a === b;\n }\n case Comparators.ne: {\n return (a: string | number, b: ValueType[C]) => a !== b;\n }\n case Comparators.gt: {\n return (a: string | number, b: ValueType[C]) => a > b;\n }\n case Comparators.gte: {\n return (a: string | number, b: ValueType[C]) => a >= b;\n }\n case Comparators.lt: {\n return (a: string | number, b: ValueType[C]) => a < b;\n }\n case Comparators.lte: {\n return (a: string | number, b: ValueType[C]) => a <= b;\n }\n default: {\n throw new Error(\"Unknown comparator\");\n }\n }\n }\n\n /**\n * Returns a function that performs an operation based on the provided\n * operator.\n * @param operator The operator to base the operation function on.\n * @returns A function that takes two boolean arguments and returns a boolean based on the operation.\n */\n getOperatorFunction(operator: Operator): (a: boolean, b: boolean) => boolean {\n switch (operator) {\n case Operators.and: {\n return (a, b) => a && b;\n }\n case Operators.or: {\n return (a, b) => a || b;\n }\n default: {\n throw new Error(\"Unknown operator\");\n }\n }\n }\n\n /**\n * Visits the operation part of a structured query and translates it into\n * a functional filter.\n * @param operation The operation part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const { operator, args } = operation;\n if (this.allowedOperators.includes(operator)) {\n const operatorFunction = this.getOperatorFunction(operator);\n return (document: Document) => {\n if (!args) {\n return true;\n }\n\n return args.reduce((acc, arg) => {\n const result = arg.accept(this);\n if (typeof result === \"function\") {\n return operatorFunction(acc, result(document));\n } else {\n throw new Error(\"Filter is not a function\");\n }\n }, true);\n };\n } else {\n throw new Error(\"Operator not allowed\");\n }\n }\n\n /**\n * Visits the comparison part of a structured query and translates it into\n * a functional filter.\n * @param comparison The comparison part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the comparison.\n */\n visitComparison(\n comparison: Comparison<string | number | boolean>\n ): this[\"VisitComparisonOutput\"] {\n const { comparator, attribute, value } = comparison;\n const undefinedTrue = [Comparators.ne];\n if (this.allowedComparators.includes(comparator)) {\n if (\n !this.getAllowedComparatorsForType(typeof value).includes(comparator)\n ) {\n throw new Error(\n `'${comparator}' comparator not allowed to be used with ${typeof value}`\n );\n }\n const comparatorFunction = this.getComparatorFunction(comparator);\n return (document: Document) => {\n const documentValue = document.metadata[attribute];\n if (documentValue === undefined) {\n if (undefinedTrue.includes(comparator)) {\n return true;\n }\n return false;\n }\n return comparatorFunction(documentValue, castValue(value));\n };\n } else {\n throw new Error(\"Comparator not allowed\");\n }\n }\n\n /**\n * Visits a structured query and translates it into a functional filter.\n * @param query The structured query to translate.\n * @returns An object containing a `filter` property, which is a function that takes a `Document` as an argument and returns a boolean based on the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n if (!query.filter) {\n return {};\n }\n const filterFunction = query.filter?.accept(this);\n if (typeof filterFunction !== \"function\") {\n throw new Error(\"Structured query filter is not a function\");\n }\n return { filter: filterFunction as FunctionFilter };\n }\n\n /**\n * Merges two filters into one, based on the specified merge type.\n * @param defaultFilter The default filter function.\n * @param generatedFilter The generated filter function.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'. Default is 'and'.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the merged filters, or `undefined` if both filters are empty.\n */\n mergeFilters(\n defaultFilter: FunctionFilter,\n generatedFilter: FunctionFilter,\n mergeType = \"and\"\n ): FunctionFilter | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n\n if (mergeType === \"and\") {\n return (document: Document) =>\n defaultFilter(document) && generatedFilter(document);\n } else if (mergeType === \"or\") {\n return (document: Document) =>\n defaultFilter(document) || generatedFilter(document);\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA4CA,IAAa,uBAAb,cAA0CA,aAAAA,eAAe;CASvD,mBAA+B,CAACC,WAAAA,UAAU,KAAKA,WAAAA,UAAU,GAAG;CAE5D,qBAAmC;EACjCC,WAAAA,YAAY;EACZA,WAAAA,YAAY;EACZA,WAAAA,YAAY;EACZA,WAAAA,YAAY;EACZA,WAAAA,YAAY;EACZA,WAAAA,YAAY;EACb;CAED,iBAAyB;AACvB,QAAM,IAAI,MAAM,kBAAkB;;;;;;;CAQpC,6BAA6B,WAAiC;AAC5D,UAAQ,WAAR;GACE,KAAK,SACH,QAAO;IACLA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACb;GAEH,KAAK,SACH,QAAO;IACLA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACZA,WAAAA,YAAY;IACb;GAEH,KAAK,UACH,QAAO,CAACA,WAAAA,YAAY,IAAIA,WAAAA,YAAY,GAAG;GAEzC,QACE,OAAM,IAAI,MAAM,0BAA0B,YAAY;;;;;;;;;CAW5D,sBACE,YACkD;AAClD,UAAQ,YAAR;GACE,KAAKA,WAAAA,YAAY,GACf,SAAQ,GAAoB,MAAoB,MAAM;GAExD,KAAKA,WAAAA,YAAY,GACf,SAAQ,GAAoB,MAAoB,MAAM;GAExD,KAAKA,WAAAA,YAAY,GACf,SAAQ,GAAoB,MAAoB,IAAI;GAEtD,KAAKA,WAAAA,YAAY,IACf,SAAQ,GAAoB,MAAoB,KAAK;GAEvD,KAAKA,WAAAA,YAAY,GACf,SAAQ,GAAoB,MAAoB,IAAI;GAEtD,KAAKA,WAAAA,YAAY,IACf,SAAQ,GAAoB,MAAoB,KAAK;GAEvD,QACE,OAAM,IAAI,MAAM,qBAAqB;;;;;;;;;CAW3C,oBAAoB,UAAyD;AAC3E,UAAQ,UAAR;GACE,KAAKD,WAAAA,UAAU,IACb,SAAQ,GAAG,MAAM,KAAK;GAExB,KAAKA,WAAAA,UAAU,GACb,SAAQ,GAAG,MAAM,KAAK;GAExB,QACE,OAAM,IAAI,MAAM,mBAAmB;;;;;;;;;CAWzC,eAAe,WAAoD;EACjE,MAAM,EAAE,UAAU,SAAS;AAC3B,MAAI,KAAK,iBAAiB,SAAS,SAAS,EAAE;GAC5C,MAAM,mBAAmB,KAAK,oBAAoB,SAAS;AAC3D,WAAQ,aAAuB;AAC7B,QAAI,CAAC,KACH,QAAO;AAGT,WAAO,KAAK,QAAQ,KAAK,QAAQ;KAC/B,MAAM,SAAS,IAAI,OAAO,KAAK;AAC/B,SAAI,OAAO,WAAW,WACpB,QAAO,iBAAiB,KAAK,OAAO,SAAS,CAAC;SAE9C,OAAM,IAAI,MAAM,2BAA2B;OAE5C,KAAK;;QAGV,OAAM,IAAI,MAAM,uBAAuB;;;;;;;;CAU3C,gBACE,YAC+B;EAC/B,MAAM,EAAE,YAAY,WAAW,UAAU;EACzC,MAAM,gBAAgB,CAACC,WAAAA,YAAY,GAAG;AACtC,MAAI,KAAK,mBAAmB,SAAS,WAAW,EAAE;AAChD,OACE,CAAC,KAAK,6BAA6B,OAAO,MAAM,CAAC,SAAS,WAAW,CAErE,OAAM,IAAI,MACR,IAAI,WAAW,2CAA2C,OAAO,QAClE;GAEH,MAAM,qBAAqB,KAAK,sBAAsB,WAAW;AACjE,WAAQ,aAAuB;IAC7B,MAAM,gBAAgB,SAAS,SAAS;AACxC,QAAI,kBAAkB,KAAA,GAAW;AAC/B,SAAI,cAAc,SAAS,WAAW,CACpC,QAAO;AAET,YAAO;;AAET,WAAO,mBAAmB,eAAeC,cAAAA,UAAU,MAAM,CAAC;;QAG5D,OAAM,IAAI,MAAM,yBAAyB;;;;;;;CAS7C,qBACE,OACoC;AACpC,MAAI,CAAC,MAAM,OACT,QAAO,EAAE;EAEX,MAAM,iBAAiB,MAAM,QAAQ,OAAO,KAAK;AACjD,MAAI,OAAO,mBAAmB,WAC5B,OAAM,IAAI,MAAM,4CAA4C;AAE9D,SAAO,EAAE,QAAQ,gBAAkC;;;;;;;;;CAUrD,aACE,eACA,iBACA,YAAY,OACgB;AAC5B,MAAIC,cAAAA,cAAc,cAAc,IAAIA,cAAAA,cAAc,gBAAgB,CAChE;AAEF,MAAIA,cAAAA,cAAc,cAAc,IAAI,cAAc,WAAW;AAC3D,OAAIA,cAAAA,cAAc,gBAAgB,CAChC;AAEF,UAAO;;AAET,MAAIA,cAAAA,cAAc,gBAAgB,EAAE;AAClC,OAAI,cAAc,MAChB;AAEF,UAAO;;AAGT,MAAI,cAAc,MAChB,SAAQ,aACN,cAAc,SAAS,IAAI,gBAAgB,SAAS;WAC7C,cAAc,KACvB,SAAQ,aACN,cAAc,SAAS,IAAI,gBAAgB,SAAS;MAEtD,OAAM,IAAI,MAAM,qBAAqB"}
1
+ {"version":3,"file":"functional.cjs","names":["BaseTranslator","Operators","Comparators","castValue","isFilterEmpty"],"sources":["../../src/structured_query/functional.ts"],"sourcesContent":["import { Document } from \"../documents/document.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n} from \"./ir.js\";\nimport { BaseTranslator } from \"./base.js\";\nimport { castValue, isFilterEmpty } from \"./utils.js\";\n\n/**\n * A type alias for an object that maps comparison operators to string or\n * number values. This is used in the comparison functions to determine\n * the result of a comparison operation.\n */\ntype ValueType = {\n eq: string | number | boolean;\n ne: string | number | boolean;\n lt: string | number;\n lte: string | number;\n gt: string | number;\n gte: string | number;\n};\n\n/**\n * A type alias for a function that takes a `Document` as an argument and\n * returns a boolean. This function is used as a filter for documents.\n */\nexport type FunctionFilter = (document: Document) => boolean;\n\n/**\n * A class that extends `BaseTranslator` to translate structured queries\n * into functional filters.\n * @example\n * ```typescript\n * const functionalTranslator = new FunctionalTranslator();\n * const relevantDocuments = await functionalTranslator.getRelevantDocuments(\n * \"Which movies are rated higher than 8.5?\",\n * );\n * ```\n */\nexport class FunctionalTranslator extends BaseTranslator {\n declare VisitOperationOutput: FunctionFilter;\n\n declare VisitComparisonOutput: FunctionFilter;\n\n declare VisitStructuredQueryOutput:\n | { filter: FunctionFilter }\n | { [k: string]: never };\n\n allowedOperators: Operator[] = [Operators.and, Operators.or];\n\n allowedComparators: Comparator[] = [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n\n formatFunction(): string {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Returns the allowed comparators for a given data type.\n * @param input The input value to get the allowed comparators for.\n * @returns An array of allowed comparators for the input data type.\n */\n getAllowedComparatorsForType(inputType: string): Comparator[] {\n switch (inputType) {\n case \"string\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"number\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"boolean\": {\n return [Comparators.eq, Comparators.ne];\n }\n default: {\n throw new Error(`Unsupported data type: ${inputType}`);\n }\n }\n }\n\n /**\n * Returns a function that performs a comparison based on the provided\n * comparator.\n * @param comparator The comparator to base the comparison function on.\n * @returns A function that takes two arguments and returns a boolean based on the comparison.\n */\n getComparatorFunction<C extends Comparator>(\n comparator: Comparator\n ): (a: string | number, b: ValueType[C]) => boolean {\n switch (comparator) {\n case Comparators.eq: {\n return (a: string | number, b: ValueType[C]) => a === b;\n }\n case Comparators.ne: {\n return (a: string | number, b: ValueType[C]) => a !== b;\n }\n case Comparators.gt: {\n return (a: string | number, b: ValueType[C]) => a > b;\n }\n case Comparators.gte: {\n return (a: string | number, b: ValueType[C]) => a >= b;\n }\n case Comparators.lt: {\n return (a: string | number, b: ValueType[C]) => a < b;\n }\n case Comparators.lte: {\n return (a: string | number, b: ValueType[C]) => a <= b;\n }\n default: {\n throw new Error(\"Unknown comparator\");\n }\n }\n }\n\n /**\n * Returns a function that performs an operation based on the provided\n * operator.\n * @param operator The operator to base the operation function on.\n * @returns A function that takes two boolean arguments and returns a boolean based on the operation.\n */\n getOperatorFunction(operator: Operator): (a: boolean, b: boolean) => boolean {\n switch (operator) {\n case Operators.and: {\n return (a, b) => a && b;\n }\n case Operators.or: {\n return (a, b) => a || b;\n }\n default: {\n throw new Error(\"Unknown operator\");\n }\n }\n }\n\n /**\n * Visits the operation part of a structured query and translates it into\n * a functional filter.\n * @param operation The operation part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const { operator, args } = operation;\n if (this.allowedOperators.includes(operator)) {\n const operatorFunction = this.getOperatorFunction(operator);\n return (document: Document) => {\n if (!args) {\n return true;\n }\n\n return args.reduce((acc, arg) => {\n const result = arg.accept(this);\n if (typeof result === \"function\") {\n return operatorFunction(acc, result(document));\n } else {\n throw new Error(\"Filter is not a function\");\n }\n }, true);\n };\n } else {\n throw new Error(\"Operator not allowed\");\n }\n }\n\n /**\n * Visits the comparison part of a structured query and translates it into\n * a functional filter.\n * @param comparison The comparison part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the comparison.\n */\n visitComparison(\n comparison: Comparison<string | number | boolean>\n ): this[\"VisitComparisonOutput\"] {\n const { comparator, attribute, value } = comparison;\n const undefinedTrue = [Comparators.ne];\n if (this.allowedComparators.includes(comparator)) {\n if (\n !this.getAllowedComparatorsForType(typeof value).includes(comparator)\n ) {\n throw new Error(\n `'${comparator}' comparator not allowed to be used with ${typeof value}`\n );\n }\n const comparatorFunction = this.getComparatorFunction(comparator);\n return (document: Document) => {\n const documentValue = document.metadata[attribute];\n if (documentValue === undefined) {\n if (undefinedTrue.includes(comparator)) {\n return true;\n }\n return false;\n }\n return comparatorFunction(documentValue, castValue(value));\n };\n } else {\n throw new Error(\"Comparator not allowed\");\n }\n }\n\n /**\n * Visits a structured query and translates it into a functional filter.\n * @param query The structured query to translate.\n * @returns An object containing a `filter` property, which is a function that takes a `Document` as an argument and returns a boolean based on the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n if (!query.filter) {\n return {};\n }\n const filterFunction = query.filter?.accept(this);\n if (typeof filterFunction !== \"function\") {\n throw new Error(\"Structured query filter is not a function\");\n }\n return { filter: filterFunction as FunctionFilter };\n }\n\n /**\n * Merges two filters into one, based on the specified merge type.\n * @param defaultFilter The default filter function.\n * @param generatedFilter The generated filter function.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'. Default is 'and'.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the merged filters, or `undefined` if both filters are empty.\n */\n mergeFilters(\n defaultFilter: FunctionFilter,\n generatedFilter: FunctionFilter,\n mergeType = \"and\"\n ): FunctionFilter | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n\n if (mergeType === \"and\") {\n return (document: Document) =>\n defaultFilter(document) && generatedFilter(document);\n } else if (mergeType === \"or\") {\n return (document: Document) =>\n defaultFilter(document) || generatedFilter(document);\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { Document } from "../documents/document.cjs";
2
2
  import { Comparator, Comparison, Operation, Operator, StructuredQuery } from "./ir.cjs";
3
3
  import { BaseTranslator } from "./base.cjs";
4
-
5
4
  //#region src/structured_query/functional.d.ts
6
5
  /**
7
6
  * A type alias for an object that maps comparison operators to string or
@@ -1 +1 @@
1
- {"version":3,"file":"functional.d.cts","names":[],"sources":["../../src/structured_query/functional.ts"],"mappings":";;;;;;;AAU2C;;;KAQtC,SAAA;EACH,EAAA;EACA,EAAA;EACA,EAAA;EACA,GAAA;EACA,EAAA;EACA,GAAA;AAAA;;AAOF;;;KAAY,cAAA,IAAkB,QAAA,EAAU,QAAA;;AAaxC;;;;;;;;;;cAAa,oBAAA,SAA6B,cAAA;EAChC,oBAAA,EAAsB,cAAA;EAEtB,qBAAA,EAAuB,cAAA;EAEvB,0BAAA;IACF,MAAA,EAAQ,cAAA;EAAA;IAAA,CACP,CAAA;EAAA;EAEP,gBAAA,EAAkB,QAAA;EAElB,kBAAA,EAAoB,UAAA;EASpB,cAAA,CAAA;EApBsD;;;;;EA6BtD,4BAAA,CAA6B,SAAA,WAAoB,UAAA;EA1BlB;;;;;;EA+D/B,qBAAA,WAAgC,UAAA,CAAA,CAC9B,UAAA,EAAY,UAAA,IACV,CAAA,mBAAoB,CAAA,EAAG,SAAA,CAAU,CAAA;EAzDrC;;;;;;EAyFA,mBAAA,CAAoB,QAAA,EAAU,QAAA,IAAY,CAAA,WAAY,CAAA;EAlChC;;;;;;EAsDtB,cAAA,CAAe,SAAA,EAAW,SAAA;EApDF;;;;;;EAiFxB,eAAA,CACE,UAAA,EAAY,UAAA;EA9BY;;;;;EA+D1B,oBAAA,CACE,KAAA,EAAO,eAAA;EAAA;;;;;;;EAmBT,YAAA,CACE,aAAA,EAAe,cAAA,EACf,eAAA,EAAiB,cAAA,EACjB,SAAA,YACC,cAAA;AAAA"}
1
+ {"version":3,"file":"functional.d.cts","names":[],"sources":["../../src/structured_query/functional.ts"],"mappings":";;;;;;;;;KAkBK;EACH;EACA;EACA;EACA;EACA;EACA;;;;;;KAOU,kBAAkB,UAAU;;;;;;;;;;;;cAa3B,6BAA6B;EAChC,sBAAsB;EAEtB,uBAAuB;EAEvB;IACF,QAAQ;;KACP;;EAEP,kBAAkB;EAElB,oBAAoB;EASpB;;;;;;EASA,6BAA6B,oBAAoB;;;;;;;EAqCjD,sBAAsB,UAAU,YAC9B,YAAY,cACV,oBAAoB,GAAG,UAAU;;;;;;;EAgCrC,oBAAoB,UAAU,YAAY,YAAY;;;;;;;EAoBtD,eAAe,WAAW;;;;;;;EA6B1B,gBACE,YAAY;;;;;;EAiCd,qBACE,OAAO;;;;;;;;EAmBT,aACE,eAAe,gBACf,iBAAiB,gBACjB,qBACC"}
@@ -1,7 +1,6 @@
1
1
  import { Document } from "../documents/document.js";
2
2
  import { Comparator, Comparison, Operation, Operator, StructuredQuery } from "./ir.js";
3
3
  import { BaseTranslator } from "./base.js";
4
-
5
4
  //#region src/structured_query/functional.d.ts
6
5
  /**
7
6
  * A type alias for an object that maps comparison operators to string or
@@ -1 +1 @@
1
- {"version":3,"file":"functional.d.ts","names":[],"sources":["../../src/structured_query/functional.ts"],"mappings":";;;;;;;AAU2C;;;KAQtC,SAAA;EACH,EAAA;EACA,EAAA;EACA,EAAA;EACA,GAAA;EACA,EAAA;EACA,GAAA;AAAA;;AAOF;;;KAAY,cAAA,IAAkB,QAAA,EAAU,QAAA;;AAaxC;;;;;;;;;;cAAa,oBAAA,SAA6B,cAAA;EAChC,oBAAA,EAAsB,cAAA;EAEtB,qBAAA,EAAuB,cAAA;EAEvB,0BAAA;IACF,MAAA,EAAQ,cAAA;EAAA;IAAA,CACP,CAAA;EAAA;EAEP,gBAAA,EAAkB,QAAA;EAElB,kBAAA,EAAoB,UAAA;EASpB,cAAA,CAAA;EApBsD;;;;;EA6BtD,4BAAA,CAA6B,SAAA,WAAoB,UAAA;EA1BlB;;;;;;EA+D/B,qBAAA,WAAgC,UAAA,CAAA,CAC9B,UAAA,EAAY,UAAA,IACV,CAAA,mBAAoB,CAAA,EAAG,SAAA,CAAU,CAAA;EAzDrC;;;;;;EAyFA,mBAAA,CAAoB,QAAA,EAAU,QAAA,IAAY,CAAA,WAAY,CAAA;EAlChC;;;;;;EAsDtB,cAAA,CAAe,SAAA,EAAW,SAAA;EApDF;;;;;;EAiFxB,eAAA,CACE,UAAA,EAAY,UAAA;EA9BY;;;;;EA+D1B,oBAAA,CACE,KAAA,EAAO,eAAA;EAAA;;;;;;;EAmBT,YAAA,CACE,aAAA,EAAe,cAAA,EACf,eAAA,EAAiB,cAAA,EACjB,SAAA,YACC,cAAA;AAAA"}
1
+ {"version":3,"file":"functional.d.ts","names":[],"sources":["../../src/structured_query/functional.ts"],"mappings":";;;;;;;;;KAkBK;EACH;EACA;EACA;EACA;EACA;EACA;;;;;;KAOU,kBAAkB,UAAU;;;;;;;;;;;;cAa3B,6BAA6B;EAChC,sBAAsB;EAEtB,uBAAuB;EAEvB;IACF,QAAQ;;KACP;;EAEP,kBAAkB;EAElB,oBAAoB;EASpB;;;;;;EASA,6BAA6B,oBAAoB;;;;;;;EAqCjD,sBAAsB,UAAU,YAC9B,YAAY,cACV,oBAAoB,GAAG,UAAU;;;;;;;EAgCrC,oBAAoB,UAAU,YAAY,YAAY;;;;;;;EAoBtD,eAAe,WAAW;;;;;;;EA6B1B,gBACE,YAAY;;;;;;EAiCd,qBACE,OAAO;;;;;;;;EAmBT,aACE,eAAe,gBACf,iBAAiB,gBACjB,qBACC"}
@@ -1 +1 @@
1
- {"version":3,"file":"functional.js","names":[],"sources":["../../src/structured_query/functional.ts"],"sourcesContent":["import { Document } from \"../documents/document.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n} from \"./ir.js\";\nimport { BaseTranslator } from \"./base.js\";\nimport { castValue, isFilterEmpty } from \"./utils.js\";\n\n/**\n * A type alias for an object that maps comparison operators to string or\n * number values. This is used in the comparison functions to determine\n * the result of a comparison operation.\n */\ntype ValueType = {\n eq: string | number | boolean;\n ne: string | number | boolean;\n lt: string | number;\n lte: string | number;\n gt: string | number;\n gte: string | number;\n};\n\n/**\n * A type alias for a function that takes a `Document` as an argument and\n * returns a boolean. This function is used as a filter for documents.\n */\nexport type FunctionFilter = (document: Document) => boolean;\n\n/**\n * A class that extends `BaseTranslator` to translate structured queries\n * into functional filters.\n * @example\n * ```typescript\n * const functionalTranslator = new FunctionalTranslator();\n * const relevantDocuments = await functionalTranslator.getRelevantDocuments(\n * \"Which movies are rated higher than 8.5?\",\n * );\n * ```\n */\nexport class FunctionalTranslator extends BaseTranslator {\n declare VisitOperationOutput: FunctionFilter;\n\n declare VisitComparisonOutput: FunctionFilter;\n\n declare VisitStructuredQueryOutput:\n | { filter: FunctionFilter }\n | { [k: string]: never };\n\n allowedOperators: Operator[] = [Operators.and, Operators.or];\n\n allowedComparators: Comparator[] = [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n\n formatFunction(): string {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Returns the allowed comparators for a given data type.\n * @param input The input value to get the allowed comparators for.\n * @returns An array of allowed comparators for the input data type.\n */\n getAllowedComparatorsForType(inputType: string): Comparator[] {\n switch (inputType) {\n case \"string\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"number\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"boolean\": {\n return [Comparators.eq, Comparators.ne];\n }\n default: {\n throw new Error(`Unsupported data type: ${inputType}`);\n }\n }\n }\n\n /**\n * Returns a function that performs a comparison based on the provided\n * comparator.\n * @param comparator The comparator to base the comparison function on.\n * @returns A function that takes two arguments and returns a boolean based on the comparison.\n */\n getComparatorFunction<C extends Comparator>(\n comparator: Comparator\n ): (a: string | number, b: ValueType[C]) => boolean {\n switch (comparator) {\n case Comparators.eq: {\n return (a: string | number, b: ValueType[C]) => a === b;\n }\n case Comparators.ne: {\n return (a: string | number, b: ValueType[C]) => a !== b;\n }\n case Comparators.gt: {\n return (a: string | number, b: ValueType[C]) => a > b;\n }\n case Comparators.gte: {\n return (a: string | number, b: ValueType[C]) => a >= b;\n }\n case Comparators.lt: {\n return (a: string | number, b: ValueType[C]) => a < b;\n }\n case Comparators.lte: {\n return (a: string | number, b: ValueType[C]) => a <= b;\n }\n default: {\n throw new Error(\"Unknown comparator\");\n }\n }\n }\n\n /**\n * Returns a function that performs an operation based on the provided\n * operator.\n * @param operator The operator to base the operation function on.\n * @returns A function that takes two boolean arguments and returns a boolean based on the operation.\n */\n getOperatorFunction(operator: Operator): (a: boolean, b: boolean) => boolean {\n switch (operator) {\n case Operators.and: {\n return (a, b) => a && b;\n }\n case Operators.or: {\n return (a, b) => a || b;\n }\n default: {\n throw new Error(\"Unknown operator\");\n }\n }\n }\n\n /**\n * Visits the operation part of a structured query and translates it into\n * a functional filter.\n * @param operation The operation part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const { operator, args } = operation;\n if (this.allowedOperators.includes(operator)) {\n const operatorFunction = this.getOperatorFunction(operator);\n return (document: Document) => {\n if (!args) {\n return true;\n }\n\n return args.reduce((acc, arg) => {\n const result = arg.accept(this);\n if (typeof result === \"function\") {\n return operatorFunction(acc, result(document));\n } else {\n throw new Error(\"Filter is not a function\");\n }\n }, true);\n };\n } else {\n throw new Error(\"Operator not allowed\");\n }\n }\n\n /**\n * Visits the comparison part of a structured query and translates it into\n * a functional filter.\n * @param comparison The comparison part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the comparison.\n */\n visitComparison(\n comparison: Comparison<string | number | boolean>\n ): this[\"VisitComparisonOutput\"] {\n const { comparator, attribute, value } = comparison;\n const undefinedTrue = [Comparators.ne];\n if (this.allowedComparators.includes(comparator)) {\n if (\n !this.getAllowedComparatorsForType(typeof value).includes(comparator)\n ) {\n throw new Error(\n `'${comparator}' comparator not allowed to be used with ${typeof value}`\n );\n }\n const comparatorFunction = this.getComparatorFunction(comparator);\n return (document: Document) => {\n const documentValue = document.metadata[attribute];\n if (documentValue === undefined) {\n if (undefinedTrue.includes(comparator)) {\n return true;\n }\n return false;\n }\n return comparatorFunction(documentValue, castValue(value));\n };\n } else {\n throw new Error(\"Comparator not allowed\");\n }\n }\n\n /**\n * Visits a structured query and translates it into a functional filter.\n * @param query The structured query to translate.\n * @returns An object containing a `filter` property, which is a function that takes a `Document` as an argument and returns a boolean based on the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n if (!query.filter) {\n return {};\n }\n const filterFunction = query.filter?.accept(this);\n if (typeof filterFunction !== \"function\") {\n throw new Error(\"Structured query filter is not a function\");\n }\n return { filter: filterFunction as FunctionFilter };\n }\n\n /**\n * Merges two filters into one, based on the specified merge type.\n * @param defaultFilter The default filter function.\n * @param generatedFilter The generated filter function.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'. Default is 'and'.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the merged filters, or `undefined` if both filters are empty.\n */\n mergeFilters(\n defaultFilter: FunctionFilter,\n generatedFilter: FunctionFilter,\n mergeType = \"and\"\n ): FunctionFilter | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n\n if (mergeType === \"and\") {\n return (document: Document) =>\n defaultFilter(document) && generatedFilter(document);\n } else if (mergeType === \"or\") {\n return (document: Document) =>\n defaultFilter(document) || generatedFilter(document);\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"functional.js","names":[],"sources":["../../src/structured_query/functional.ts"],"sourcesContent":["import { Document } from \"../documents/document.js\";\nimport {\n Comparator,\n Comparators,\n Comparison,\n Operation,\n Operator,\n Operators,\n StructuredQuery,\n} from \"./ir.js\";\nimport { BaseTranslator } from \"./base.js\";\nimport { castValue, isFilterEmpty } from \"./utils.js\";\n\n/**\n * A type alias for an object that maps comparison operators to string or\n * number values. This is used in the comparison functions to determine\n * the result of a comparison operation.\n */\ntype ValueType = {\n eq: string | number | boolean;\n ne: string | number | boolean;\n lt: string | number;\n lte: string | number;\n gt: string | number;\n gte: string | number;\n};\n\n/**\n * A type alias for a function that takes a `Document` as an argument and\n * returns a boolean. This function is used as a filter for documents.\n */\nexport type FunctionFilter = (document: Document) => boolean;\n\n/**\n * A class that extends `BaseTranslator` to translate structured queries\n * into functional filters.\n * @example\n * ```typescript\n * const functionalTranslator = new FunctionalTranslator();\n * const relevantDocuments = await functionalTranslator.getRelevantDocuments(\n * \"Which movies are rated higher than 8.5?\",\n * );\n * ```\n */\nexport class FunctionalTranslator extends BaseTranslator {\n declare VisitOperationOutput: FunctionFilter;\n\n declare VisitComparisonOutput: FunctionFilter;\n\n declare VisitStructuredQueryOutput:\n | { filter: FunctionFilter }\n | { [k: string]: never };\n\n allowedOperators: Operator[] = [Operators.and, Operators.or];\n\n allowedComparators: Comparator[] = [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n\n formatFunction(): string {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * Returns the allowed comparators for a given data type.\n * @param input The input value to get the allowed comparators for.\n * @returns An array of allowed comparators for the input data type.\n */\n getAllowedComparatorsForType(inputType: string): Comparator[] {\n switch (inputType) {\n case \"string\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"number\": {\n return [\n Comparators.eq,\n Comparators.ne,\n Comparators.gt,\n Comparators.gte,\n Comparators.lt,\n Comparators.lte,\n ];\n }\n case \"boolean\": {\n return [Comparators.eq, Comparators.ne];\n }\n default: {\n throw new Error(`Unsupported data type: ${inputType}`);\n }\n }\n }\n\n /**\n * Returns a function that performs a comparison based on the provided\n * comparator.\n * @param comparator The comparator to base the comparison function on.\n * @returns A function that takes two arguments and returns a boolean based on the comparison.\n */\n getComparatorFunction<C extends Comparator>(\n comparator: Comparator\n ): (a: string | number, b: ValueType[C]) => boolean {\n switch (comparator) {\n case Comparators.eq: {\n return (a: string | number, b: ValueType[C]) => a === b;\n }\n case Comparators.ne: {\n return (a: string | number, b: ValueType[C]) => a !== b;\n }\n case Comparators.gt: {\n return (a: string | number, b: ValueType[C]) => a > b;\n }\n case Comparators.gte: {\n return (a: string | number, b: ValueType[C]) => a >= b;\n }\n case Comparators.lt: {\n return (a: string | number, b: ValueType[C]) => a < b;\n }\n case Comparators.lte: {\n return (a: string | number, b: ValueType[C]) => a <= b;\n }\n default: {\n throw new Error(\"Unknown comparator\");\n }\n }\n }\n\n /**\n * Returns a function that performs an operation based on the provided\n * operator.\n * @param operator The operator to base the operation function on.\n * @returns A function that takes two boolean arguments and returns a boolean based on the operation.\n */\n getOperatorFunction(operator: Operator): (a: boolean, b: boolean) => boolean {\n switch (operator) {\n case Operators.and: {\n return (a, b) => a && b;\n }\n case Operators.or: {\n return (a, b) => a || b;\n }\n default: {\n throw new Error(\"Unknown operator\");\n }\n }\n }\n\n /**\n * Visits the operation part of a structured query and translates it into\n * a functional filter.\n * @param operation The operation part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the operation.\n */\n visitOperation(operation: Operation): this[\"VisitOperationOutput\"] {\n const { operator, args } = operation;\n if (this.allowedOperators.includes(operator)) {\n const operatorFunction = this.getOperatorFunction(operator);\n return (document: Document) => {\n if (!args) {\n return true;\n }\n\n return args.reduce((acc, arg) => {\n const result = arg.accept(this);\n if (typeof result === \"function\") {\n return operatorFunction(acc, result(document));\n } else {\n throw new Error(\"Filter is not a function\");\n }\n }, true);\n };\n } else {\n throw new Error(\"Operator not allowed\");\n }\n }\n\n /**\n * Visits the comparison part of a structured query and translates it into\n * a functional filter.\n * @param comparison The comparison part of a structured query.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the comparison.\n */\n visitComparison(\n comparison: Comparison<string | number | boolean>\n ): this[\"VisitComparisonOutput\"] {\n const { comparator, attribute, value } = comparison;\n const undefinedTrue = [Comparators.ne];\n if (this.allowedComparators.includes(comparator)) {\n if (\n !this.getAllowedComparatorsForType(typeof value).includes(comparator)\n ) {\n throw new Error(\n `'${comparator}' comparator not allowed to be used with ${typeof value}`\n );\n }\n const comparatorFunction = this.getComparatorFunction(comparator);\n return (document: Document) => {\n const documentValue = document.metadata[attribute];\n if (documentValue === undefined) {\n if (undefinedTrue.includes(comparator)) {\n return true;\n }\n return false;\n }\n return comparatorFunction(documentValue, castValue(value));\n };\n } else {\n throw new Error(\"Comparator not allowed\");\n }\n }\n\n /**\n * Visits a structured query and translates it into a functional filter.\n * @param query The structured query to translate.\n * @returns An object containing a `filter` property, which is a function that takes a `Document` as an argument and returns a boolean based on the structured query.\n */\n visitStructuredQuery(\n query: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"] {\n if (!query.filter) {\n return {};\n }\n const filterFunction = query.filter?.accept(this);\n if (typeof filterFunction !== \"function\") {\n throw new Error(\"Structured query filter is not a function\");\n }\n return { filter: filterFunction as FunctionFilter };\n }\n\n /**\n * Merges two filters into one, based on the specified merge type.\n * @param defaultFilter The default filter function.\n * @param generatedFilter The generated filter function.\n * @param mergeType The type of merge to perform. Can be 'and', 'or', or 'replace'. Default is 'and'.\n * @returns A function that takes a `Document` as an argument and returns a boolean based on the merged filters, or `undefined` if both filters are empty.\n */\n mergeFilters(\n defaultFilter: FunctionFilter,\n generatedFilter: FunctionFilter,\n mergeType = \"and\"\n ): FunctionFilter | undefined {\n if (isFilterEmpty(defaultFilter) && isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n if (isFilterEmpty(defaultFilter) || mergeType === \"replace\") {\n if (isFilterEmpty(generatedFilter)) {\n return undefined;\n }\n return generatedFilter;\n }\n if (isFilterEmpty(generatedFilter)) {\n if (mergeType === \"and\") {\n return undefined;\n }\n return defaultFilter;\n }\n\n if (mergeType === \"and\") {\n return (document: Document) =>\n defaultFilter(document) && generatedFilter(document);\n } else if (mergeType === \"or\") {\n return (document: Document) =>\n defaultFilter(document) || generatedFilter(document);\n } else {\n throw new Error(\"Unknown merge type\");\n }\n }\n}\n"],"mappings":"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"}
@@ -39,6 +39,9 @@ var FilterDirective = class extends Expression {};
39
39
  * FilterDirective class.
40
40
  */
41
41
  var Comparison = class extends FilterDirective {
42
+ comparator;
43
+ attribute;
44
+ value;
42
45
  exprName = "Comparison";
43
46
  constructor(comparator, attribute, value) {
44
47
  super();
@@ -52,6 +55,8 @@ var Comparison = class extends FilterDirective {
52
55
  * FilterDirective class.
53
56
  */
54
57
  var Operation = class extends FilterDirective {
58
+ operator;
59
+ args;
55
60
  exprName = "Operation";
56
61
  constructor(operator, args) {
57
62
  super();
@@ -64,6 +69,8 @@ var Operation = class extends FilterDirective {
64
69
  * Expression class.
65
70
  */
66
71
  var StructuredQuery = class extends Expression {
72
+ query;
73
+ filter;
67
74
  exprName = "StructuredQuery";
68
75
  constructor(query, filter) {
69
76
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"ir.cjs","names":[],"sources":["../../src/structured_query/ir.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\n\n/**\n * Represents logical AND operator.\n */\nexport type AND = \"and\";\n/**\n * Represents logical OR operator.\n */\nexport type OR = \"or\";\n/**\n * Represents logical NOT operator.\n */\nexport type NOT = \"not\";\n\n/**\n * Represents a logical operator which can be AND, OR, or NOT.\n */\nexport type Operator = AND | OR | NOT;\n\n/**\n * Represents equality comparison operator.\n */\nexport type EQ = \"eq\";\n/**\n * Represents inequality comparison operator.\n */\nexport type NE = \"ne\";\n/**\n * Represents less than comparison operator.\n */\nexport type LT = \"lt\";\n/**\n * Represents greater than comparison operator.\n */\nexport type GT = \"gt\";\n/**\n * Represents less than or equal to comparison operator.\n */\nexport type LTE = \"lte\";\n/**\n * Represents greater than or equal to comparison operator.\n */\nexport type GTE = \"gte\";\n\n/**\n * Represents a comparison operator which can be EQ, NE, LT, GT, LTE, or\n * GTE.\n */\nexport type Comparator = EQ | NE | LT | GT | LTE | GTE;\n\nexport const Operators: { [key: string]: Operator } = {\n and: \"and\",\n or: \"or\",\n not: \"not\",\n};\n\nexport const Comparators: { [key: string]: Comparator } = {\n eq: \"eq\",\n ne: \"ne\",\n lt: \"lt\",\n gt: \"gt\",\n lte: \"lte\",\n gte: \"gte\",\n};\n\n/**\n * Represents the result of visiting an operation or comparison\n * expression.\n */\nexport type VisitorResult = VisitorOperationResult | VisitorComparisonResult;\n\n/**\n * Represents the result of visiting an operation expression.\n */\nexport type VisitorOperationResult = {\n [operator: string]: VisitorResult[];\n};\n\n/**\n * Represents the result of visiting a comparison expression.\n */\nexport type VisitorComparisonResult = {\n [attr: string]: {\n [comparator: string]: string | number | boolean;\n };\n};\n\n/**\n * Represents the result of visiting a structured query expression.\n */\nexport type VisitorStructuredQueryResult = {\n filter?: VisitorComparisonResult | VisitorOperationResult;\n};\n\n/**\n * Abstract class for visiting expressions. Subclasses must implement\n * visitOperation, visitComparison, and visitStructuredQuery methods.\n */\nexport abstract class Visitor<T extends VectorStore = VectorStore> {\n declare VisitOperationOutput: object;\n\n declare VisitComparisonOutput: object;\n\n declare VisitStructuredQueryOutput: { filter?: T[\"FilterType\"] };\n\n abstract allowedOperators: Operator[];\n\n abstract allowedComparators: Comparator[];\n\n abstract visitOperation(operation: Operation): this[\"VisitOperationOutput\"];\n\n abstract visitComparison(\n comparison: Comparison\n ): this[\"VisitComparisonOutput\"];\n\n abstract visitStructuredQuery(\n structuredQuery: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"];\n}\n\n/**\n * Abstract class representing an expression. Subclasses must implement\n * the exprName property and the accept method.\n */\nexport abstract class Expression {\n abstract exprName: \"Operation\" | \"Comparison\" | \"StructuredQuery\";\n\n accept(visitor: Visitor) {\n if (this.exprName === \"Operation\") {\n return visitor.visitOperation(this as unknown as Operation);\n } else if (this.exprName === \"Comparison\") {\n return visitor.visitComparison(this as unknown as Comparison);\n } else if (this.exprName === \"StructuredQuery\") {\n return visitor.visitStructuredQuery(this as unknown as StructuredQuery);\n } else {\n throw new Error(\"Unknown Expression type\");\n }\n }\n}\n\n/**\n * Abstract class representing a filter directive. It extends the\n * Expression class.\n */\nexport abstract class FilterDirective extends Expression {}\n\n/**\n * Class representing a comparison filter directive. It extends the\n * FilterDirective class.\n */\nexport class Comparison<ValueTypes = string | number> extends FilterDirective {\n exprName = \"Comparison\" as const;\n\n constructor(\n public comparator: Comparator,\n public attribute: string,\n public value: ValueTypes\n ) {\n super();\n }\n}\n\n/**\n * Class representing an operation filter directive. It extends the\n * FilterDirective class.\n */\nexport class Operation extends FilterDirective {\n exprName = \"Operation\" as const;\n\n constructor(\n public operator: Operator,\n public args?: FilterDirective[]\n ) {\n super();\n }\n}\n\n/**\n * Class representing a structured query expression. It extends the\n * Expression class.\n */\nexport class StructuredQuery extends Expression {\n exprName = \"StructuredQuery\" as const;\n\n constructor(\n public query: string,\n public filter?: FilterDirective\n ) {\n super();\n }\n}\n"],"mappings":";AAmDA,MAAa,YAAyC;CACpD,KAAK;CACL,IAAI;CACJ,KAAK;CACN;AAED,MAAa,cAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,KAAK;CACN;;;;;AAmCD,IAAsB,UAAtB,MAAmE;;;;;AA0BnE,IAAsB,aAAtB,MAAiC;CAG/B,OAAO,SAAkB;AACvB,MAAI,KAAK,aAAa,YACpB,QAAO,QAAQ,eAAe,KAA6B;WAClD,KAAK,aAAa,aAC3B,QAAO,QAAQ,gBAAgB,KAA8B;WACpD,KAAK,aAAa,kBAC3B,QAAO,QAAQ,qBAAqB,KAAmC;MAEvE,OAAM,IAAI,MAAM,0BAA0B;;;;;;;AAShD,IAAsB,kBAAtB,cAA8C,WAAW;;;;;AAMzD,IAAa,aAAb,cAA8D,gBAAgB;CAC5E,WAAW;CAEX,YACE,YACA,WACA,OACA;AACA,SAAO;AAJA,OAAA,aAAA;AACA,OAAA,YAAA;AACA,OAAA,QAAA;;;;;;;AAUX,IAAa,YAAb,cAA+B,gBAAgB;CAC7C,WAAW;CAEX,YACE,UACA,MACA;AACA,SAAO;AAHA,OAAA,WAAA;AACA,OAAA,OAAA;;;;;;;AAUX,IAAa,kBAAb,cAAqC,WAAW;CAC9C,WAAW;CAEX,YACE,OACA,QACA;AACA,SAAO;AAHA,OAAA,QAAA;AACA,OAAA,SAAA"}
1
+ {"version":3,"file":"ir.cjs","names":[],"sources":["../../src/structured_query/ir.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\n\n/**\n * Represents logical AND operator.\n */\nexport type AND = \"and\";\n/**\n * Represents logical OR operator.\n */\nexport type OR = \"or\";\n/**\n * Represents logical NOT operator.\n */\nexport type NOT = \"not\";\n\n/**\n * Represents a logical operator which can be AND, OR, or NOT.\n */\nexport type Operator = AND | OR | NOT;\n\n/**\n * Represents equality comparison operator.\n */\nexport type EQ = \"eq\";\n/**\n * Represents inequality comparison operator.\n */\nexport type NE = \"ne\";\n/**\n * Represents less than comparison operator.\n */\nexport type LT = \"lt\";\n/**\n * Represents greater than comparison operator.\n */\nexport type GT = \"gt\";\n/**\n * Represents less than or equal to comparison operator.\n */\nexport type LTE = \"lte\";\n/**\n * Represents greater than or equal to comparison operator.\n */\nexport type GTE = \"gte\";\n\n/**\n * Represents a comparison operator which can be EQ, NE, LT, GT, LTE, or\n * GTE.\n */\nexport type Comparator = EQ | NE | LT | GT | LTE | GTE;\n\nexport const Operators: { [key: string]: Operator } = {\n and: \"and\",\n or: \"or\",\n not: \"not\",\n};\n\nexport const Comparators: { [key: string]: Comparator } = {\n eq: \"eq\",\n ne: \"ne\",\n lt: \"lt\",\n gt: \"gt\",\n lte: \"lte\",\n gte: \"gte\",\n};\n\n/**\n * Represents the result of visiting an operation or comparison\n * expression.\n */\nexport type VisitorResult = VisitorOperationResult | VisitorComparisonResult;\n\n/**\n * Represents the result of visiting an operation expression.\n */\nexport type VisitorOperationResult = {\n [operator: string]: VisitorResult[];\n};\n\n/**\n * Represents the result of visiting a comparison expression.\n */\nexport type VisitorComparisonResult = {\n [attr: string]: {\n [comparator: string]: string | number | boolean;\n };\n};\n\n/**\n * Represents the result of visiting a structured query expression.\n */\nexport type VisitorStructuredQueryResult = {\n filter?: VisitorComparisonResult | VisitorOperationResult;\n};\n\n/**\n * Abstract class for visiting expressions. Subclasses must implement\n * visitOperation, visitComparison, and visitStructuredQuery methods.\n */\nexport abstract class Visitor<T extends VectorStore = VectorStore> {\n declare VisitOperationOutput: object;\n\n declare VisitComparisonOutput: object;\n\n declare VisitStructuredQueryOutput: { filter?: T[\"FilterType\"] };\n\n abstract allowedOperators: Operator[];\n\n abstract allowedComparators: Comparator[];\n\n abstract visitOperation(operation: Operation): this[\"VisitOperationOutput\"];\n\n abstract visitComparison(\n comparison: Comparison\n ): this[\"VisitComparisonOutput\"];\n\n abstract visitStructuredQuery(\n structuredQuery: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"];\n}\n\n/**\n * Abstract class representing an expression. Subclasses must implement\n * the exprName property and the accept method.\n */\nexport abstract class Expression {\n abstract exprName: \"Operation\" | \"Comparison\" | \"StructuredQuery\";\n\n accept(visitor: Visitor) {\n if (this.exprName === \"Operation\") {\n return visitor.visitOperation(this as unknown as Operation);\n } else if (this.exprName === \"Comparison\") {\n return visitor.visitComparison(this as unknown as Comparison);\n } else if (this.exprName === \"StructuredQuery\") {\n return visitor.visitStructuredQuery(this as unknown as StructuredQuery);\n } else {\n throw new Error(\"Unknown Expression type\");\n }\n }\n}\n\n/**\n * Abstract class representing a filter directive. It extends the\n * Expression class.\n */\nexport abstract class FilterDirective extends Expression {}\n\n/**\n * Class representing a comparison filter directive. It extends the\n * FilterDirective class.\n */\nexport class Comparison<ValueTypes = string | number> extends FilterDirective {\n exprName = \"Comparison\" as const;\n\n constructor(\n public comparator: Comparator,\n public attribute: string,\n public value: ValueTypes\n ) {\n super();\n }\n}\n\n/**\n * Class representing an operation filter directive. It extends the\n * FilterDirective class.\n */\nexport class Operation extends FilterDirective {\n exprName = \"Operation\" as const;\n\n constructor(\n public operator: Operator,\n public args?: FilterDirective[]\n ) {\n super();\n }\n}\n\n/**\n * Class representing a structured query expression. It extends the\n * Expression class.\n */\nexport class StructuredQuery extends Expression {\n exprName = \"StructuredQuery\" as const;\n\n constructor(\n public query: string,\n public filter?: FilterDirective\n ) {\n super();\n }\n}\n"],"mappings":";AAmDA,MAAa,YAAyC;CACpD,KAAK;CACL,IAAI;CACJ,KAAK;AACP;AAEA,MAAa,cAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,KAAK;AACP;;;;;AAmCA,IAAsB,UAAtB,MAAmE,CAoBnE;;;;;AAMA,IAAsB,aAAtB,MAAiC;CAG/B,OAAO,SAAkB;EACvB,IAAI,KAAK,aAAa,aACpB,OAAO,QAAQ,eAAe,IAA4B;OACrD,IAAI,KAAK,aAAa,cAC3B,OAAO,QAAQ,gBAAgB,IAA6B;OACvD,IAAI,KAAK,aAAa,mBAC3B,OAAO,QAAQ,qBAAqB,IAAkC;OAEtE,MAAM,IAAI,MAAM,yBAAyB;CAE7C;AACF;;;;;AAMA,IAAsB,kBAAtB,cAA8C,WAAW,CAAC;;;;;AAM1D,IAAa,aAAb,cAA8D,gBAAgB;CAInE;CACA;CACA;CALT,WAAW;CAEX,YACE,YACA,WACA,OACA;EACA,MAAM;EAJC,KAAA,aAAA;EACA,KAAA,YAAA;EACA,KAAA,QAAA;CAGT;AACF;;;;;AAMA,IAAa,YAAb,cAA+B,gBAAgB;CAIpC;CACA;CAJT,WAAW;CAEX,YACE,UACA,MACA;EACA,MAAM;EAHC,KAAA,WAAA;EACA,KAAA,OAAA;CAGT;AACF;;;;;AAMA,IAAa,kBAAb,cAAqC,WAAW;CAIrC;CACA;CAJT,WAAW;CAEX,YACE,OACA,QACA;EACA,MAAM;EAHC,KAAA,QAAA;EACA,KAAA,SAAA;CAGT;AACF"}
@@ -1,5 +1,4 @@
1
1
  import { VectorStore } from "../vectorstores.cjs";
2
-
3
2
  //#region src/structured_query/ir.d.ts
4
3
  /**
5
4
  * Represents logical AND operator.
@@ -1 +1 @@
1
- {"version":3,"file":"ir.d.cts","names":[],"sources":["../../src/structured_query/ir.ts"],"mappings":";;;;;AAKA;KAAY,GAAA;;;;KAIA,EAAA;;;;KAIA,GAAA;AAAZ;;;AAAA,KAKY,QAAA,GAAW,GAAA,GAAM,EAAA,GAAK,GAAA;;AAAlC;;KAKY,EAAA;;;;KAIA,EAAA;;;;KAIA,EAAA;;;AARZ;KAYY,EAAA;;;;KAIA,GAAA;;;;KAIA,GAAA;AAZZ;;;;AAAA,KAkBY,UAAA,GAAa,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA,GAAM,GAAA;AAAA,cAEtC,SAAA;EAAA,CAAc,GAAA,WAAc,QAAA;AAAA;AAAA,cAM5B,WAAA;EAAA,CAAgB,GAAA,WAAc,UAAA;AAAA;;;;;KAa/B,aAAA,GAAgB,sBAAA,GAAyB,uBAAA;;;;KAKzC,sBAAA;EAAA,CACT,QAAA,WAAmB,aAAA;AAAA;;;;KAMV,uBAAA;EAAA,CACT,IAAA;IAAA,CACE,UAAA;EAAA;AAAA;;;;KAOO,4BAAA;EACV,MAAA,GAAS,uBAAA,GAA0B,sBAAA;AAAA;;;;AAzCrC;uBAgDsB,OAAA,WAAkB,WAAA,GAAc,WAAA;EAC5C,oBAAA;EAEA,qBAAA;EAEA,0BAAA;IAA8B,MAAA,GAAS,CAAA;EAAA;EAAA,SAEtC,gBAAA,EAAkB,QAAA;EAAA,SAElB,kBAAA,EAAoB,UAAA;EAAA,SAEpB,cAAA,CAAe,SAAA,EAAW,SAAA;EAAA,SAE1B,eAAA,CACP,UAAA,EAAY,UAAA;EAAA,SAGL,oBAAA,CACP,eAAA,EAAiB,eAAA;AAAA;;;AA1CrB;;uBAkDsB,UAAA;EAAA,SACX,QAAA;EAET,MAAA,CAAO,OAAA,EAAS,OAAA;AAAA;;;;;uBAiBI,eAAA,SAAwB,UAAA;;;;;cAMjC,UAAA,uCAAiD,eAAA;EAInD,UAAA,EAAY,UAAA;EACZ,SAAA;EACA,KAAA,EAAO,UAAA;EALhB,QAAA;EAEA,WAAA,CACS,UAAA,EAAY,UAAA,EACZ,SAAA,UACA,KAAA,EAAO,UAAA;AAAA;;;;;cAUL,SAAA,SAAkB,eAAA;EAIpB,QAAA,EAAU,QAAA;EACV,IAAA,GAAO,eAAA;EAJhB,QAAA;EAEA,WAAA,CACS,QAAA,EAAU,QAAA,EACV,IAAA,GAAO,eAAA;AAAA;;;;;cAUL,eAAA,SAAwB,UAAA;EAI1B,KAAA;EACA,MAAA,GAAS,eAAA;EAJlB,QAAA;EAEA,WAAA,CACS,KAAA,UACA,MAAA,GAAS,eAAA;AAAA"}
1
+ {"version":3,"file":"ir.d.cts","names":[],"sources":["../../src/structured_query/ir.ts"],"mappings":";;;;;KAKY;;;;KAIA;;;;KAIA;;;;KAKA,WAAW,MAAM,KAAK;;;;KAKtB;;;;KAIA;;;;KAIA;;;;KAIA;;;;KAIA;;;;KAIA;;;;;KAMA,aAAa,KAAK,KAAK,KAAK,KAAK,MAAM;cAEtC;GAAc,cAAc;;cAM5B;GAAgB,cAAc;;;;;;KAa/B,gBAAgB,yBAAyB;;;;KAKzC;GACT,mBAAmB;;;;;KAMV;GACT;KACE;;;;;;KAOO;EACV,SAAS,0BAA0B;;;;;;uBAOf,QAAQ,UAAU,cAAc;EAC5C;EAEA;EAEA;IAA8B,SAAS;;WAEtC,kBAAkB;WAElB,oBAAoB;WAEpB,eAAe,WAAW;WAE1B,gBACP,YAAY;WAGL,qBACP,iBAAiB;;;;;;uBAQC;WACX;EAET,OAAO,SAAS;;;;;;uBAiBI,wBAAwB;;;;;cAMjC,WAAW,sCAAsC;EAInD,YAAY;EACZ;EACA,OAAO;EALhB;EAEA,YACS,YAAY,YACZ,mBACA,OAAO;;;;;;cAUL,kBAAkB;EAIpB,UAAU;EACV,OAAO;EAJhB;EAEA,YACS,UAAU,UACV,OAAO;;;;;;cAUL,wBAAwB;EAI1B;EACA,SAAS;EAJlB;EAEA,YACS,eACA,SAAS"}
@@ -1,5 +1,4 @@
1
1
  import { VectorStore } from "../vectorstores.js";
2
-
3
2
  //#region src/structured_query/ir.d.ts
4
3
  /**
5
4
  * Represents logical AND operator.
@@ -1 +1 @@
1
- {"version":3,"file":"ir.d.ts","names":[],"sources":["../../src/structured_query/ir.ts"],"mappings":";;;;;AAKA;KAAY,GAAA;;;;KAIA,EAAA;;;;KAIA,GAAA;AAAZ;;;AAAA,KAKY,QAAA,GAAW,GAAA,GAAM,EAAA,GAAK,GAAA;;AAAlC;;KAKY,EAAA;;;;KAIA,EAAA;;;;KAIA,EAAA;;;AARZ;KAYY,EAAA;;;;KAIA,GAAA;;;;KAIA,GAAA;AAZZ;;;;AAAA,KAkBY,UAAA,GAAa,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA,GAAM,GAAA;AAAA,cAEtC,SAAA;EAAA,CAAc,GAAA,WAAc,QAAA;AAAA;AAAA,cAM5B,WAAA;EAAA,CAAgB,GAAA,WAAc,UAAA;AAAA;;;;;KAa/B,aAAA,GAAgB,sBAAA,GAAyB,uBAAA;;;;KAKzC,sBAAA;EAAA,CACT,QAAA,WAAmB,aAAA;AAAA;;;;KAMV,uBAAA;EAAA,CACT,IAAA;IAAA,CACE,UAAA;EAAA;AAAA;;;;KAOO,4BAAA;EACV,MAAA,GAAS,uBAAA,GAA0B,sBAAA;AAAA;;;;AAzCrC;uBAgDsB,OAAA,WAAkB,WAAA,GAAc,WAAA;EAC5C,oBAAA;EAEA,qBAAA;EAEA,0BAAA;IAA8B,MAAA,GAAS,CAAA;EAAA;EAAA,SAEtC,gBAAA,EAAkB,QAAA;EAAA,SAElB,kBAAA,EAAoB,UAAA;EAAA,SAEpB,cAAA,CAAe,SAAA,EAAW,SAAA;EAAA,SAE1B,eAAA,CACP,UAAA,EAAY,UAAA;EAAA,SAGL,oBAAA,CACP,eAAA,EAAiB,eAAA;AAAA;;;AA1CrB;;uBAkDsB,UAAA;EAAA,SACX,QAAA;EAET,MAAA,CAAO,OAAA,EAAS,OAAA;AAAA;;;;;uBAiBI,eAAA,SAAwB,UAAA;;;;;cAMjC,UAAA,uCAAiD,eAAA;EAInD,UAAA,EAAY,UAAA;EACZ,SAAA;EACA,KAAA,EAAO,UAAA;EALhB,QAAA;EAEA,WAAA,CACS,UAAA,EAAY,UAAA,EACZ,SAAA,UACA,KAAA,EAAO,UAAA;AAAA;;;;;cAUL,SAAA,SAAkB,eAAA;EAIpB,QAAA,EAAU,QAAA;EACV,IAAA,GAAO,eAAA;EAJhB,QAAA;EAEA,WAAA,CACS,QAAA,EAAU,QAAA,EACV,IAAA,GAAO,eAAA;AAAA;;;;;cAUL,eAAA,SAAwB,UAAA;EAI1B,KAAA;EACA,MAAA,GAAS,eAAA;EAJlB,QAAA;EAEA,WAAA,CACS,KAAA,UACA,MAAA,GAAS,eAAA;AAAA"}
1
+ {"version":3,"file":"ir.d.ts","names":[],"sources":["../../src/structured_query/ir.ts"],"mappings":";;;;;KAKY;;;;KAIA;;;;KAIA;;;;KAKA,WAAW,MAAM,KAAK;;;;KAKtB;;;;KAIA;;;;KAIA;;;;KAIA;;;;KAIA;;;;KAIA;;;;;KAMA,aAAa,KAAK,KAAK,KAAK,KAAK,MAAM;cAEtC;GAAc,cAAc;;cAM5B;GAAgB,cAAc;;;;;;KAa/B,gBAAgB,yBAAyB;;;;KAKzC;GACT,mBAAmB;;;;;KAMV;GACT;KACE;;;;;;KAOO;EACV,SAAS,0BAA0B;;;;;;uBAOf,QAAQ,UAAU,cAAc;EAC5C;EAEA;EAEA;IAA8B,SAAS;;WAEtC,kBAAkB;WAElB,oBAAoB;WAEpB,eAAe,WAAW;WAE1B,gBACP,YAAY;WAGL,qBACP,iBAAiB;;;;;;uBAQC;WACX;EAET,OAAO,SAAS;;;;;;uBAiBI,wBAAwB;;;;;cAMjC,WAAW,sCAAsC;EAInD,YAAY;EACZ;EACA,OAAO;EALhB;EAEA,YACS,YAAY,YACZ,mBACA,OAAO;;;;;;cAUL,kBAAkB;EAIpB,UAAU;EACV,OAAO;EAJhB;EAEA,YACS,UAAU,UACV,OAAO;;;;;;cAUL,wBAAwB;EAI1B;EACA,SAAS;EAJlB;EAEA,YACS,eACA,SAAS"}
@@ -39,6 +39,9 @@ var FilterDirective = class extends Expression {};
39
39
  * FilterDirective class.
40
40
  */
41
41
  var Comparison = class extends FilterDirective {
42
+ comparator;
43
+ attribute;
44
+ value;
42
45
  exprName = "Comparison";
43
46
  constructor(comparator, attribute, value) {
44
47
  super();
@@ -52,6 +55,8 @@ var Comparison = class extends FilterDirective {
52
55
  * FilterDirective class.
53
56
  */
54
57
  var Operation = class extends FilterDirective {
58
+ operator;
59
+ args;
55
60
  exprName = "Operation";
56
61
  constructor(operator, args) {
57
62
  super();
@@ -64,6 +69,8 @@ var Operation = class extends FilterDirective {
64
69
  * Expression class.
65
70
  */
66
71
  var StructuredQuery = class extends Expression {
72
+ query;
73
+ filter;
67
74
  exprName = "StructuredQuery";
68
75
  constructor(query, filter) {
69
76
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"ir.js","names":[],"sources":["../../src/structured_query/ir.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\n\n/**\n * Represents logical AND operator.\n */\nexport type AND = \"and\";\n/**\n * Represents logical OR operator.\n */\nexport type OR = \"or\";\n/**\n * Represents logical NOT operator.\n */\nexport type NOT = \"not\";\n\n/**\n * Represents a logical operator which can be AND, OR, or NOT.\n */\nexport type Operator = AND | OR | NOT;\n\n/**\n * Represents equality comparison operator.\n */\nexport type EQ = \"eq\";\n/**\n * Represents inequality comparison operator.\n */\nexport type NE = \"ne\";\n/**\n * Represents less than comparison operator.\n */\nexport type LT = \"lt\";\n/**\n * Represents greater than comparison operator.\n */\nexport type GT = \"gt\";\n/**\n * Represents less than or equal to comparison operator.\n */\nexport type LTE = \"lte\";\n/**\n * Represents greater than or equal to comparison operator.\n */\nexport type GTE = \"gte\";\n\n/**\n * Represents a comparison operator which can be EQ, NE, LT, GT, LTE, or\n * GTE.\n */\nexport type Comparator = EQ | NE | LT | GT | LTE | GTE;\n\nexport const Operators: { [key: string]: Operator } = {\n and: \"and\",\n or: \"or\",\n not: \"not\",\n};\n\nexport const Comparators: { [key: string]: Comparator } = {\n eq: \"eq\",\n ne: \"ne\",\n lt: \"lt\",\n gt: \"gt\",\n lte: \"lte\",\n gte: \"gte\",\n};\n\n/**\n * Represents the result of visiting an operation or comparison\n * expression.\n */\nexport type VisitorResult = VisitorOperationResult | VisitorComparisonResult;\n\n/**\n * Represents the result of visiting an operation expression.\n */\nexport type VisitorOperationResult = {\n [operator: string]: VisitorResult[];\n};\n\n/**\n * Represents the result of visiting a comparison expression.\n */\nexport type VisitorComparisonResult = {\n [attr: string]: {\n [comparator: string]: string | number | boolean;\n };\n};\n\n/**\n * Represents the result of visiting a structured query expression.\n */\nexport type VisitorStructuredQueryResult = {\n filter?: VisitorComparisonResult | VisitorOperationResult;\n};\n\n/**\n * Abstract class for visiting expressions. Subclasses must implement\n * visitOperation, visitComparison, and visitStructuredQuery methods.\n */\nexport abstract class Visitor<T extends VectorStore = VectorStore> {\n declare VisitOperationOutput: object;\n\n declare VisitComparisonOutput: object;\n\n declare VisitStructuredQueryOutput: { filter?: T[\"FilterType\"] };\n\n abstract allowedOperators: Operator[];\n\n abstract allowedComparators: Comparator[];\n\n abstract visitOperation(operation: Operation): this[\"VisitOperationOutput\"];\n\n abstract visitComparison(\n comparison: Comparison\n ): this[\"VisitComparisonOutput\"];\n\n abstract visitStructuredQuery(\n structuredQuery: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"];\n}\n\n/**\n * Abstract class representing an expression. Subclasses must implement\n * the exprName property and the accept method.\n */\nexport abstract class Expression {\n abstract exprName: \"Operation\" | \"Comparison\" | \"StructuredQuery\";\n\n accept(visitor: Visitor) {\n if (this.exprName === \"Operation\") {\n return visitor.visitOperation(this as unknown as Operation);\n } else if (this.exprName === \"Comparison\") {\n return visitor.visitComparison(this as unknown as Comparison);\n } else if (this.exprName === \"StructuredQuery\") {\n return visitor.visitStructuredQuery(this as unknown as StructuredQuery);\n } else {\n throw new Error(\"Unknown Expression type\");\n }\n }\n}\n\n/**\n * Abstract class representing a filter directive. It extends the\n * Expression class.\n */\nexport abstract class FilterDirective extends Expression {}\n\n/**\n * Class representing a comparison filter directive. It extends the\n * FilterDirective class.\n */\nexport class Comparison<ValueTypes = string | number> extends FilterDirective {\n exprName = \"Comparison\" as const;\n\n constructor(\n public comparator: Comparator,\n public attribute: string,\n public value: ValueTypes\n ) {\n super();\n }\n}\n\n/**\n * Class representing an operation filter directive. It extends the\n * FilterDirective class.\n */\nexport class Operation extends FilterDirective {\n exprName = \"Operation\" as const;\n\n constructor(\n public operator: Operator,\n public args?: FilterDirective[]\n ) {\n super();\n }\n}\n\n/**\n * Class representing a structured query expression. It extends the\n * Expression class.\n */\nexport class StructuredQuery extends Expression {\n exprName = \"StructuredQuery\" as const;\n\n constructor(\n public query: string,\n public filter?: FilterDirective\n ) {\n super();\n }\n}\n"],"mappings":";AAmDA,MAAa,YAAyC;CACpD,KAAK;CACL,IAAI;CACJ,KAAK;CACN;AAED,MAAa,cAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,KAAK;CACN;;;;;AAmCD,IAAsB,UAAtB,MAAmE;;;;;AA0BnE,IAAsB,aAAtB,MAAiC;CAG/B,OAAO,SAAkB;AACvB,MAAI,KAAK,aAAa,YACpB,QAAO,QAAQ,eAAe,KAA6B;WAClD,KAAK,aAAa,aAC3B,QAAO,QAAQ,gBAAgB,KAA8B;WACpD,KAAK,aAAa,kBAC3B,QAAO,QAAQ,qBAAqB,KAAmC;MAEvE,OAAM,IAAI,MAAM,0BAA0B;;;;;;;AAShD,IAAsB,kBAAtB,cAA8C,WAAW;;;;;AAMzD,IAAa,aAAb,cAA8D,gBAAgB;CAC5E,WAAW;CAEX,YACE,YACA,WACA,OACA;AACA,SAAO;AAJA,OAAA,aAAA;AACA,OAAA,YAAA;AACA,OAAA,QAAA;;;;;;;AAUX,IAAa,YAAb,cAA+B,gBAAgB;CAC7C,WAAW;CAEX,YACE,UACA,MACA;AACA,SAAO;AAHA,OAAA,WAAA;AACA,OAAA,OAAA;;;;;;;AAUX,IAAa,kBAAb,cAAqC,WAAW;CAC9C,WAAW;CAEX,YACE,OACA,QACA;AACA,SAAO;AAHA,OAAA,QAAA;AACA,OAAA,SAAA"}
1
+ {"version":3,"file":"ir.js","names":[],"sources":["../../src/structured_query/ir.ts"],"sourcesContent":["import { VectorStore } from \"../vectorstores.js\";\n\n/**\n * Represents logical AND operator.\n */\nexport type AND = \"and\";\n/**\n * Represents logical OR operator.\n */\nexport type OR = \"or\";\n/**\n * Represents logical NOT operator.\n */\nexport type NOT = \"not\";\n\n/**\n * Represents a logical operator which can be AND, OR, or NOT.\n */\nexport type Operator = AND | OR | NOT;\n\n/**\n * Represents equality comparison operator.\n */\nexport type EQ = \"eq\";\n/**\n * Represents inequality comparison operator.\n */\nexport type NE = \"ne\";\n/**\n * Represents less than comparison operator.\n */\nexport type LT = \"lt\";\n/**\n * Represents greater than comparison operator.\n */\nexport type GT = \"gt\";\n/**\n * Represents less than or equal to comparison operator.\n */\nexport type LTE = \"lte\";\n/**\n * Represents greater than or equal to comparison operator.\n */\nexport type GTE = \"gte\";\n\n/**\n * Represents a comparison operator which can be EQ, NE, LT, GT, LTE, or\n * GTE.\n */\nexport type Comparator = EQ | NE | LT | GT | LTE | GTE;\n\nexport const Operators: { [key: string]: Operator } = {\n and: \"and\",\n or: \"or\",\n not: \"not\",\n};\n\nexport const Comparators: { [key: string]: Comparator } = {\n eq: \"eq\",\n ne: \"ne\",\n lt: \"lt\",\n gt: \"gt\",\n lte: \"lte\",\n gte: \"gte\",\n};\n\n/**\n * Represents the result of visiting an operation or comparison\n * expression.\n */\nexport type VisitorResult = VisitorOperationResult | VisitorComparisonResult;\n\n/**\n * Represents the result of visiting an operation expression.\n */\nexport type VisitorOperationResult = {\n [operator: string]: VisitorResult[];\n};\n\n/**\n * Represents the result of visiting a comparison expression.\n */\nexport type VisitorComparisonResult = {\n [attr: string]: {\n [comparator: string]: string | number | boolean;\n };\n};\n\n/**\n * Represents the result of visiting a structured query expression.\n */\nexport type VisitorStructuredQueryResult = {\n filter?: VisitorComparisonResult | VisitorOperationResult;\n};\n\n/**\n * Abstract class for visiting expressions. Subclasses must implement\n * visitOperation, visitComparison, and visitStructuredQuery methods.\n */\nexport abstract class Visitor<T extends VectorStore = VectorStore> {\n declare VisitOperationOutput: object;\n\n declare VisitComparisonOutput: object;\n\n declare VisitStructuredQueryOutput: { filter?: T[\"FilterType\"] };\n\n abstract allowedOperators: Operator[];\n\n abstract allowedComparators: Comparator[];\n\n abstract visitOperation(operation: Operation): this[\"VisitOperationOutput\"];\n\n abstract visitComparison(\n comparison: Comparison\n ): this[\"VisitComparisonOutput\"];\n\n abstract visitStructuredQuery(\n structuredQuery: StructuredQuery\n ): this[\"VisitStructuredQueryOutput\"];\n}\n\n/**\n * Abstract class representing an expression. Subclasses must implement\n * the exprName property and the accept method.\n */\nexport abstract class Expression {\n abstract exprName: \"Operation\" | \"Comparison\" | \"StructuredQuery\";\n\n accept(visitor: Visitor) {\n if (this.exprName === \"Operation\") {\n return visitor.visitOperation(this as unknown as Operation);\n } else if (this.exprName === \"Comparison\") {\n return visitor.visitComparison(this as unknown as Comparison);\n } else if (this.exprName === \"StructuredQuery\") {\n return visitor.visitStructuredQuery(this as unknown as StructuredQuery);\n } else {\n throw new Error(\"Unknown Expression type\");\n }\n }\n}\n\n/**\n * Abstract class representing a filter directive. It extends the\n * Expression class.\n */\nexport abstract class FilterDirective extends Expression {}\n\n/**\n * Class representing a comparison filter directive. It extends the\n * FilterDirective class.\n */\nexport class Comparison<ValueTypes = string | number> extends FilterDirective {\n exprName = \"Comparison\" as const;\n\n constructor(\n public comparator: Comparator,\n public attribute: string,\n public value: ValueTypes\n ) {\n super();\n }\n}\n\n/**\n * Class representing an operation filter directive. It extends the\n * FilterDirective class.\n */\nexport class Operation extends FilterDirective {\n exprName = \"Operation\" as const;\n\n constructor(\n public operator: Operator,\n public args?: FilterDirective[]\n ) {\n super();\n }\n}\n\n/**\n * Class representing a structured query expression. It extends the\n * Expression class.\n */\nexport class StructuredQuery extends Expression {\n exprName = \"StructuredQuery\" as const;\n\n constructor(\n public query: string,\n public filter?: FilterDirective\n ) {\n super();\n }\n}\n"],"mappings":";AAmDA,MAAa,YAAyC;CACpD,KAAK;CACL,IAAI;CACJ,KAAK;AACP;AAEA,MAAa,cAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,KAAK;AACP;;;;;AAmCA,IAAsB,UAAtB,MAAmE,CAoBnE;;;;;AAMA,IAAsB,aAAtB,MAAiC;CAG/B,OAAO,SAAkB;EACvB,IAAI,KAAK,aAAa,aACpB,OAAO,QAAQ,eAAe,IAA4B;OACrD,IAAI,KAAK,aAAa,cAC3B,OAAO,QAAQ,gBAAgB,IAA6B;OACvD,IAAI,KAAK,aAAa,mBAC3B,OAAO,QAAQ,qBAAqB,IAAkC;OAEtE,MAAM,IAAI,MAAM,yBAAyB;CAE7C;AACF;;;;;AAMA,IAAsB,kBAAtB,cAA8C,WAAW,CAAC;;;;;AAM1D,IAAa,aAAb,cAA8D,gBAAgB;CAInE;CACA;CACA;CALT,WAAW;CAEX,YACE,YACA,WACA,OACA;EACA,MAAM;EAJC,KAAA,aAAA;EACA,KAAA,YAAA;EACA,KAAA,QAAA;CAGT;AACF;;;;;AAMA,IAAa,YAAb,cAA+B,gBAAgB;CAIpC;CACA;CAJT,WAAW;CAEX,YACE,UACA,MACA;EACA,MAAM;EAHC,KAAA,WAAA;EACA,KAAA,OAAA;CAGT;AACF;;;;;AAMA,IAAa,kBAAb,cAAqC,WAAW;CAIrC;CACA;CAJT,WAAW;CAEX,YACE,OACA,QACA;EACA,MAAM;EAHC,KAAA,QAAA;EACA,KAAA,SAAA;CAGT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":[],"sources":["../../src/structured_query/utils.ts"],"sourcesContent":["/**\n * Checks if the provided argument is an object and not an array.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isObject(obj: any): obj is object {\n return obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\n/**\n * Checks if a provided filter is empty. The filter can be a function, an\n * object, a string, or undefined.\n */\nexport function isFilterEmpty(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n filter: ((q: any) => any) | object | string | undefined\n): filter is undefined {\n if (!filter) return true;\n // for Milvus\n if (typeof filter === \"string\" && filter.length > 0) {\n return false;\n }\n if (typeof filter === \"function\") {\n return false;\n }\n return isObject(filter) && Object.keys(filter).length === 0;\n}\n\n/**\n * Checks if the provided value is an integer.\n */\nexport function isInt(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 === 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseInt(value, 10);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 === 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a floating-point number.\n */\nexport function isFloat(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 !== 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseFloat(value);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 !== 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a string that cannot be parsed into a\n * number.\n */\nexport function isString(value: unknown): boolean {\n return (\n typeof value === \"string\" &&\n (Number.isNaN(parseFloat(value)) || parseFloat(value).toString() !== value)\n );\n}\n\n/**\n * Checks if the provided value is a boolean.\n */\nexport function isBoolean(value: unknown): boolean {\n return typeof value === \"boolean\";\n}\n\n/**\n * Casts a value that might be string or number to actual string or number.\n * Since LLM might return back an integer/float as a string, we need to cast\n * it back to a number, as many vector databases can't handle number as string\n * values as a comparator.\n */\nexport function castValue(input: unknown): string | number | boolean {\n let value;\n if (isString(input)) {\n value = input as string;\n } else if (isInt(input)) {\n value = parseInt(input as string, 10);\n } else if (isFloat(input)) {\n value = parseFloat(input as string);\n } else if (isBoolean(input)) {\n value = Boolean(input);\n } else {\n throw new Error(\"Unsupported value type\");\n }\n\n return value;\n}\n"],"mappings":";;;;AAIA,SAAgB,SAAS,KAAyB;AAChD,QAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,IAAI;;;;;;AAO9D,SAAgB,cAEd,QACqB;AACrB,KAAI,CAAC,OAAQ,QAAO;AAEpB,KAAI,OAAO,WAAW,YAAY,OAAO,SAAS,EAChD,QAAO;AAET,KAAI,OAAO,WAAW,WACpB,QAAO;AAET,QAAO,SAAS,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW;;;;;AAM5D,SAAgB,MAAM,OAAyB;AAC7C,KAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,MAAM;UACZ,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,SAAS,OAAO,GAAG;AACvC,SACE,CAAC,OAAO,MAAM,YAAY,IAC1B,cAAc,MAAM,KACpB,YAAY,UAAU,KAAK;;AAI/B,QAAO;;;;;AAMT,SAAgB,QAAQ,OAAyB;AAC/C,KAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,MAAM;UACZ,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,WAAW,MAAM;AACrC,SACE,CAAC,OAAO,MAAM,YAAY,IAC1B,cAAc,MAAM,KACpB,YAAY,UAAU,KAAK;;AAI/B,QAAO;;;;;;AAOT,SAAgB,SAAS,OAAyB;AAChD,QACE,OAAO,UAAU,aAChB,OAAO,MAAM,WAAW,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,UAAU,KAAK;;;;;AAOzE,SAAgB,UAAU,OAAyB;AACjD,QAAO,OAAO,UAAU;;;;;;;;AAS1B,SAAgB,UAAU,OAA2C;CACnE,IAAI;AACJ,KAAI,SAAS,MAAM,CACjB,SAAQ;UACC,MAAM,MAAM,CACrB,SAAQ,SAAS,OAAiB,GAAG;UAC5B,QAAQ,MAAM,CACvB,SAAQ,WAAW,MAAgB;UAC1B,UAAU,MAAM,CACzB,SAAQ,QAAQ,MAAM;KAEtB,OAAM,IAAI,MAAM,yBAAyB;AAG3C,QAAO"}
1
+ {"version":3,"file":"utils.cjs","names":[],"sources":["../../src/structured_query/utils.ts"],"sourcesContent":["/**\n * Checks if the provided argument is an object and not an array.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isObject(obj: any): obj is object {\n return obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\n/**\n * Checks if a provided filter is empty. The filter can be a function, an\n * object, a string, or undefined.\n */\nexport function isFilterEmpty(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n filter: ((q: any) => any) | object | string | undefined\n): filter is undefined {\n if (!filter) return true;\n // for Milvus\n if (typeof filter === \"string\" && filter.length > 0) {\n return false;\n }\n if (typeof filter === \"function\") {\n return false;\n }\n return isObject(filter) && Object.keys(filter).length === 0;\n}\n\n/**\n * Checks if the provided value is an integer.\n */\nexport function isInt(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 === 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseInt(value, 10);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 === 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a floating-point number.\n */\nexport function isFloat(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 !== 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseFloat(value);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 !== 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a string that cannot be parsed into a\n * number.\n */\nexport function isString(value: unknown): boolean {\n return (\n typeof value === \"string\" &&\n (Number.isNaN(parseFloat(value)) || parseFloat(value).toString() !== value)\n );\n}\n\n/**\n * Checks if the provided value is a boolean.\n */\nexport function isBoolean(value: unknown): boolean {\n return typeof value === \"boolean\";\n}\n\n/**\n * Casts a value that might be string or number to actual string or number.\n * Since LLM might return back an integer/float as a string, we need to cast\n * it back to a number, as many vector databases can't handle number as string\n * values as a comparator.\n */\nexport function castValue(input: unknown): string | number | boolean {\n let value;\n if (isString(input)) {\n value = input as string;\n } else if (isInt(input)) {\n value = parseInt(input as string, 10);\n } else if (isFloat(input)) {\n value = parseFloat(input as string);\n } else if (isBoolean(input)) {\n value = Boolean(input);\n } else {\n throw new Error(\"Unsupported value type\");\n }\n\n return value;\n}\n"],"mappings":";;;;AAIA,SAAgB,SAAS,KAAyB;CAChD,OAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAC7D;;;;;AAMA,SAAgB,cAEd,QACqB;CACrB,IAAI,CAAC,QAAQ,OAAO;CAEpB,IAAI,OAAO,WAAW,YAAY,OAAO,SAAS,GAChD,OAAO;CAET,IAAI,OAAO,WAAW,YACpB,OAAO;CAET,OAAO,SAAS,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW;AAC5D;;;;AAKA,SAAgB,MAAM,OAAyB;CAC7C,IAAI,OAAO,UAAU,UACnB,OAAO,QAAQ,MAAM;MAChB,IAAI,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,SAAS,OAAO,EAAE;EACtC,OACE,CAAC,OAAO,MAAM,WAAW,KACzB,cAAc,MAAM,KACpB,YAAY,SAAS,MAAM;CAE/B;CAEA,OAAO;AACT;;;;AAKA,SAAgB,QAAQ,OAAyB;CAC/C,IAAI,OAAO,UAAU,UACnB,OAAO,QAAQ,MAAM;MAChB,IAAI,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,WAAW,KAAK;EACpC,OACE,CAAC,OAAO,MAAM,WAAW,KACzB,cAAc,MAAM,KACpB,YAAY,SAAS,MAAM;CAE/B;CAEA,OAAO;AACT;;;;;AAMA,SAAgB,SAAS,OAAyB;CAChD,OACE,OAAO,UAAU,aAChB,OAAO,MAAM,WAAW,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,CAAC,SAAS,MAAM;AAEzE;;;;AAKA,SAAgB,UAAU,OAAyB;CACjD,OAAO,OAAO,UAAU;AAC1B;;;;;;;AAQA,SAAgB,UAAU,OAA2C;CACnE,IAAI;CACJ,IAAI,SAAS,KAAK,GAChB,QAAQ;MACH,IAAI,MAAM,KAAK,GACpB,QAAQ,SAAS,OAAiB,EAAE;MAC/B,IAAI,QAAQ,KAAK,GACtB,QAAQ,WAAW,KAAe;MAC7B,IAAI,UAAU,KAAK,GACxB,QAAQ,QAAQ,KAAK;MAErB,MAAM,IAAI,MAAM,wBAAwB;CAG1C,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/structured_query/utils.ts"],"mappings":";;AAIA;;iBAAgB,QAAA,CAAS,GAAA,QAAW,GAAA;;;AAQpC;;iBAAgB,aAAA,CAEd,MAAA,IAAU,CAAA,+CACT,MAAA;;;;iBAea,KAAA,CAAM,KAAA;;;AAAtB;iBAkBgB,OAAA,CAAQ,KAAA;;;;AAAxB;iBAmBgB,QAAA,CAAS,KAAA;;;;iBAUT,SAAA,CAAU,KAAA;;;;;AAA1B;;iBAUgB,SAAA,CAAU,KAAA"}
1
+ {"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/structured_query/utils.ts"],"mappings":";;;;iBAIgB,SAAS,WAAW;;;;;iBAQpB,cAEd,UAAU,gDACT;;;;iBAea,MAAM;;;;iBAkBN,QAAQ;;;;;iBAmBR,SAAS;;;;iBAUT,UAAU;;;;;;;iBAUV,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/structured_query/utils.ts"],"mappings":";;AAIA;;iBAAgB,QAAA,CAAS,GAAA,QAAW,GAAA;;;AAQpC;;iBAAgB,aAAA,CAEd,MAAA,IAAU,CAAA,+CACT,MAAA;;;;iBAea,KAAA,CAAM,KAAA;;;AAAtB;iBAkBgB,OAAA,CAAQ,KAAA;;;;AAAxB;iBAmBgB,QAAA,CAAS,KAAA;;;;iBAUT,SAAA,CAAU,KAAA;;;;;AAA1B;;iBAUgB,SAAA,CAAU,KAAA"}
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/structured_query/utils.ts"],"mappings":";;;;iBAIgB,SAAS,WAAW;;;;;iBAQpB,cAEd,UAAU,gDACT;;;;iBAea,MAAM;;;;iBAkBN,QAAQ;;;;;iBAmBR,SAAS;;;;iBAUT,UAAU;;;;;;;iBAUV,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../src/structured_query/utils.ts"],"sourcesContent":["/**\n * Checks if the provided argument is an object and not an array.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isObject(obj: any): obj is object {\n return obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\n/**\n * Checks if a provided filter is empty. The filter can be a function, an\n * object, a string, or undefined.\n */\nexport function isFilterEmpty(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n filter: ((q: any) => any) | object | string | undefined\n): filter is undefined {\n if (!filter) return true;\n // for Milvus\n if (typeof filter === \"string\" && filter.length > 0) {\n return false;\n }\n if (typeof filter === \"function\") {\n return false;\n }\n return isObject(filter) && Object.keys(filter).length === 0;\n}\n\n/**\n * Checks if the provided value is an integer.\n */\nexport function isInt(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 === 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseInt(value, 10);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 === 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a floating-point number.\n */\nexport function isFloat(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 !== 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseFloat(value);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 !== 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a string that cannot be parsed into a\n * number.\n */\nexport function isString(value: unknown): boolean {\n return (\n typeof value === \"string\" &&\n (Number.isNaN(parseFloat(value)) || parseFloat(value).toString() !== value)\n );\n}\n\n/**\n * Checks if the provided value is a boolean.\n */\nexport function isBoolean(value: unknown): boolean {\n return typeof value === \"boolean\";\n}\n\n/**\n * Casts a value that might be string or number to actual string or number.\n * Since LLM might return back an integer/float as a string, we need to cast\n * it back to a number, as many vector databases can't handle number as string\n * values as a comparator.\n */\nexport function castValue(input: unknown): string | number | boolean {\n let value;\n if (isString(input)) {\n value = input as string;\n } else if (isInt(input)) {\n value = parseInt(input as string, 10);\n } else if (isFloat(input)) {\n value = parseFloat(input as string);\n } else if (isBoolean(input)) {\n value = Boolean(input);\n } else {\n throw new Error(\"Unsupported value type\");\n }\n\n return value;\n}\n"],"mappings":";;;;AAIA,SAAgB,SAAS,KAAyB;AAChD,QAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,IAAI;;;;;;AAO9D,SAAgB,cAEd,QACqB;AACrB,KAAI,CAAC,OAAQ,QAAO;AAEpB,KAAI,OAAO,WAAW,YAAY,OAAO,SAAS,EAChD,QAAO;AAET,KAAI,OAAO,WAAW,WACpB,QAAO;AAET,QAAO,SAAS,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW;;;;;AAM5D,SAAgB,MAAM,OAAyB;AAC7C,KAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,MAAM;UACZ,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,SAAS,OAAO,GAAG;AACvC,SACE,CAAC,OAAO,MAAM,YAAY,IAC1B,cAAc,MAAM,KACpB,YAAY,UAAU,KAAK;;AAI/B,QAAO;;;;;AAMT,SAAgB,QAAQ,OAAyB;AAC/C,KAAI,OAAO,UAAU,SACnB,QAAO,QAAQ,MAAM;UACZ,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,WAAW,MAAM;AACrC,SACE,CAAC,OAAO,MAAM,YAAY,IAC1B,cAAc,MAAM,KACpB,YAAY,UAAU,KAAK;;AAI/B,QAAO;;;;;;AAOT,SAAgB,SAAS,OAAyB;AAChD,QACE,OAAO,UAAU,aAChB,OAAO,MAAM,WAAW,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,UAAU,KAAK;;;;;AAOzE,SAAgB,UAAU,OAAyB;AACjD,QAAO,OAAO,UAAU;;;;;;;;AAS1B,SAAgB,UAAU,OAA2C;CACnE,IAAI;AACJ,KAAI,SAAS,MAAM,CACjB,SAAQ;UACC,MAAM,MAAM,CACrB,SAAQ,SAAS,OAAiB,GAAG;UAC5B,QAAQ,MAAM,CACvB,SAAQ,WAAW,MAAgB;UAC1B,UAAU,MAAM,CACzB,SAAQ,QAAQ,MAAM;KAEtB,OAAM,IAAI,MAAM,yBAAyB;AAG3C,QAAO"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/structured_query/utils.ts"],"sourcesContent":["/**\n * Checks if the provided argument is an object and not an array.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isObject(obj: any): obj is object {\n return obj && typeof obj === \"object\" && !Array.isArray(obj);\n}\n\n/**\n * Checks if a provided filter is empty. The filter can be a function, an\n * object, a string, or undefined.\n */\nexport function isFilterEmpty(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n filter: ((q: any) => any) | object | string | undefined\n): filter is undefined {\n if (!filter) return true;\n // for Milvus\n if (typeof filter === \"string\" && filter.length > 0) {\n return false;\n }\n if (typeof filter === \"function\") {\n return false;\n }\n return isObject(filter) && Object.keys(filter).length === 0;\n}\n\n/**\n * Checks if the provided value is an integer.\n */\nexport function isInt(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 === 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseInt(value, 10);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 === 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a floating-point number.\n */\nexport function isFloat(value: unknown): boolean {\n if (typeof value === \"number\") {\n return value % 1 !== 0;\n } else if (typeof value === \"string\") {\n const numberValue = parseFloat(value);\n return (\n !Number.isNaN(numberValue) &&\n numberValue % 1 !== 0 &&\n numberValue.toString() === value\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the provided value is a string that cannot be parsed into a\n * number.\n */\nexport function isString(value: unknown): boolean {\n return (\n typeof value === \"string\" &&\n (Number.isNaN(parseFloat(value)) || parseFloat(value).toString() !== value)\n );\n}\n\n/**\n * Checks if the provided value is a boolean.\n */\nexport function isBoolean(value: unknown): boolean {\n return typeof value === \"boolean\";\n}\n\n/**\n * Casts a value that might be string or number to actual string or number.\n * Since LLM might return back an integer/float as a string, we need to cast\n * it back to a number, as many vector databases can't handle number as string\n * values as a comparator.\n */\nexport function castValue(input: unknown): string | number | boolean {\n let value;\n if (isString(input)) {\n value = input as string;\n } else if (isInt(input)) {\n value = parseInt(input as string, 10);\n } else if (isFloat(input)) {\n value = parseFloat(input as string);\n } else if (isBoolean(input)) {\n value = Boolean(input);\n } else {\n throw new Error(\"Unsupported value type\");\n }\n\n return value;\n}\n"],"mappings":";;;;AAIA,SAAgB,SAAS,KAAyB;CAChD,OAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAC7D;;;;;AAMA,SAAgB,cAEd,QACqB;CACrB,IAAI,CAAC,QAAQ,OAAO;CAEpB,IAAI,OAAO,WAAW,YAAY,OAAO,SAAS,GAChD,OAAO;CAET,IAAI,OAAO,WAAW,YACpB,OAAO;CAET,OAAO,SAAS,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW;AAC5D;;;;AAKA,SAAgB,MAAM,OAAyB;CAC7C,IAAI,OAAO,UAAU,UACnB,OAAO,QAAQ,MAAM;MAChB,IAAI,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,SAAS,OAAO,EAAE;EACtC,OACE,CAAC,OAAO,MAAM,WAAW,KACzB,cAAc,MAAM,KACpB,YAAY,SAAS,MAAM;CAE/B;CAEA,OAAO;AACT;;;;AAKA,SAAgB,QAAQ,OAAyB;CAC/C,IAAI,OAAO,UAAU,UACnB,OAAO,QAAQ,MAAM;MAChB,IAAI,OAAO,UAAU,UAAU;EACpC,MAAM,cAAc,WAAW,KAAK;EACpC,OACE,CAAC,OAAO,MAAM,WAAW,KACzB,cAAc,MAAM,KACpB,YAAY,SAAS,MAAM;CAE/B;CAEA,OAAO;AACT;;;;;AAMA,SAAgB,SAAS,OAAyB;CAChD,OACE,OAAO,UAAU,aAChB,OAAO,MAAM,WAAW,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,CAAC,SAAS,MAAM;AAEzE;;;;AAKA,SAAgB,UAAU,OAAyB;CACjD,OAAO,OAAO,UAAU;AAC1B;;;;;;;AAQA,SAAgB,UAAU,OAA2C;CACnE,IAAI;CACJ,IAAI,SAAS,KAAK,GAChB,QAAQ;MACH,IAAI,MAAM,KAAK,GACpB,QAAQ,SAAS,OAAiB,EAAE;MAC/B,IAAI,QAAQ,KAAK,GACtB,QAAQ,WAAW,KAAe;MAC7B,IAAI,UAAU,KAAK,GACxB,QAAQ,QAAQ,KAAK;MAErB,MAAM,IAAI,MAAM,wBAAwB;CAG1C,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"fake_model_builder.cjs","names":["BaseChatModel","BaseMessage","RunnableLambda","AIMessage"],"sources":["../../src/testing/fake_model_builder.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport { CallbackManagerForLLMRun } from \"../callbacks/manager.js\";\nimport {\n BaseChatModel,\n BaseChatModelCallOptions,\n} from \"../language_models/chat_models.js\";\nimport {\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n StructuredOutputMethodParams,\n} from \"../language_models/base.js\";\nimport { BaseMessage, AIMessage } from \"../messages/index.js\";\nimport type { ToolCall } from \"../messages/tool.js\";\nimport type { ChatResult } from \"../outputs.js\";\nimport { Runnable, RunnableLambda } from \"../runnables/base.js\";\nimport { StructuredTool } from \"../tools/index.js\";\nimport type { InteropZodType } from \"../utils/types/zod.js\";\nimport type { ToolSpec } from \"../utils/testing/chat_models.js\";\n\ntype ResponseFactory = (messages: BaseMessage[]) => BaseMessage | Error;\n\ntype QueueEntry =\n | { kind: \"message\"; message: BaseMessage }\n | { kind: \"toolCalls\"; toolCalls: ToolCall[] }\n | { kind: \"error\"; error: Error }\n | { kind: \"factory\"; factory: ResponseFactory };\n\ninterface FakeModelCall {\n messages: BaseMessage[];\n options: any;\n}\n\ninterface FakeModelState {\n callIndex: number;\n calls: FakeModelCall[];\n}\n\nfunction deriveContent(messages: BaseMessage[]): string {\n return messages\n .map((m) => m.text)\n .filter(Boolean)\n .join(\"-\");\n}\n\nlet idCounter = 0;\nfunction nextToolCallId(): string {\n idCounter += 1;\n return `fake_tc_${idCounter}`;\n}\n\n/**\n * A fake chat model for testing, created via {@link fakeModel}.\n *\n * Queue responses with `.respond()` and `.respondWithTools()`, then\n * pass the instance directly wherever a chat model is expected.\n * Responses are consumed in first-in-first-out order — one per `invoke()` call.\n * When all queued responses are consumed, further invocations throw.\n */\nexport class FakeBuiltModel extends BaseChatModel {\n private queue: QueueEntry[] = [];\n\n private _alwaysThrowError: Error | undefined;\n\n private _structuredResponseValue: any;\n\n private _tools: (StructuredTool | ToolSpec)[] = [];\n\n private _state: FakeModelState = { callIndex: 0, calls: [] };\n\n /**\n * All invocations recorded by this model, in order.\n * Each entry contains the `messages` array and `options` that were\n * passed to `invoke()`.\n */\n get calls(): FakeModelCall[] {\n return this._state.calls;\n }\n\n /**\n * The number of times this model has been invoked.\n */\n get callCount(): number {\n return this._state.calls.length;\n }\n\n constructor() {\n super({});\n }\n\n _llmType(): string {\n return \"fake-model-builder\";\n }\n\n _combineLLMOutput() {\n return [];\n }\n\n /**\n * Enqueue a response that the model will return on its next invocation.\n * @param entry A {@link BaseMessage} to return, an `Error` to throw, or\n * a factory `(messages) => BaseMessage | Error` for dynamic responses.\n * @returns `this`, for chaining.\n */\n respond(entry: BaseMessage | Error | ResponseFactory): this {\n if (typeof entry === \"function\") {\n this.queue.push({ kind: \"factory\", factory: entry });\n } else if (BaseMessage.isInstance(entry)) {\n this.queue.push({ kind: \"message\", message: entry });\n } else {\n this.queue.push({ kind: \"error\", error: entry });\n }\n return this;\n }\n\n /**\n * Enqueue an {@link AIMessage} that carries the given tool calls.\n * Content is derived from the input messages at invocation time.\n * @param toolCalls Array of tool calls. Each entry needs `name` and\n * `args`; `id` is optional and auto-generated when omitted.\n * @returns `this`, for chaining.\n */\n respondWithTools(\n toolCalls: Array<{ name: string; args: Record<string, any>; id?: string }>\n ): this {\n this.queue.push({\n kind: \"toolCalls\",\n toolCalls: toolCalls.map((tc) => ({\n name: tc.name,\n args: tc.args,\n id: tc.id ?? nextToolCallId(),\n type: \"tool_call\" as const,\n })),\n });\n return this;\n }\n\n /**\n * Make every invocation throw the given error, regardless of the queue.\n * @param error The error to throw.\n * @returns `this`, for chaining.\n */\n alwaysThrow(error: Error): this {\n this._alwaysThrowError = error;\n return this;\n }\n\n /**\n * Set the value that {@link withStructuredOutput} will resolve to.\n * @param value The structured object to return.\n * @returns `this`, for chaining.\n */\n structuredResponse(value: Record<string, any>): this {\n this._structuredResponseValue = value;\n return this;\n }\n\n /**\n * Bind tools to the model. Returns a new model that shares the same\n * response queue and call history.\n * @param tools The tools to bind, as {@link StructuredTool} instances or\n * plain {@link ToolSpec} objects.\n * @returns A new RunnableBinding with the tools bound.\n */\n bindTools(tools: (StructuredTool | ToolSpec)[]) {\n const merged = [...this._tools, ...tools];\n const next = new FakeBuiltModel();\n next.queue = this.queue;\n next._alwaysThrowError = this._alwaysThrowError;\n next._structuredResponseValue = this._structuredResponseValue;\n next._tools = merged;\n next._state = this._state;\n\n return next.withConfig({} as BaseChatModelCallOptions);\n }\n\n /**\n * Returns a {@link Runnable} that produces the {@link structuredResponse}\n * value. The schema argument is accepted for compatibility but ignored.\n * @param _params Schema or params (ignored).\n * @param _config Options (ignored).\n * @returns A Runnable that resolves to the structured response value.\n */\n withStructuredOutput<\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n | Record<string, any>,\n _config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n const { _structuredResponseValue } = this;\n return RunnableLambda.from(async () => {\n return _structuredResponseValue as RunOutput;\n }) as Runnable;\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n this._state.calls.push({ messages: [...messages], options });\n\n const currentCallIndex = this._state.callIndex;\n this._state.callIndex += 1;\n\n if (this._alwaysThrowError) {\n throw this._alwaysThrowError;\n }\n\n const entry = this.queue[currentCallIndex];\n if (!entry) {\n throw new Error(\n `FakeModel: no response queued for invocation ${currentCallIndex} (${this.queue.length} total queued).`\n );\n }\n\n if (entry.kind === \"error\") {\n throw entry.error;\n }\n\n if (entry.kind === \"factory\") {\n const result = entry.factory(messages);\n if (!BaseMessage.isInstance(result)) {\n throw result;\n }\n return {\n generations: [{ text: \"\", message: result }],\n };\n }\n\n if (entry.kind === \"message\") {\n return {\n generations: [{ text: \"\", message: entry.message }],\n };\n }\n\n const content = deriveContent(messages);\n const message = new AIMessage({\n content,\n id: currentCallIndex.toString(),\n tool_calls:\n entry.toolCalls.length > 0\n ? entry.toolCalls.map((tc) => ({\n ...tc,\n type: \"tool_call\" as const,\n }))\n : undefined,\n });\n\n return {\n generations: [{ text: content, message }],\n llmOutput: {},\n };\n }\n}\n\n/**\n * Creates a new {@link FakeBuiltModel} for testing.\n *\n * Returns a chainable builder — queue responses, then pass the model\n * anywhere a chat model is expected. Responses are consumed in FIFO\n * order, one per `invoke()` call.\n *\n * ## API summary\n *\n * | Method | Description |\n * | --- | --- |\n * | `fakeModel()` | Creates a new fake chat model. Returns a chainable builder. |\n * | `.respond(message)` | Queue an `AIMessage` (or any `BaseMessage`) to return on the next invocation. |\n * | `.respond(error)` | Queue an `Error` to throw on the next invocation. |\n * | `.respond(factory)` | Queue a function `(messages) => BaseMessage \\| Error` for dynamic responses. |\n * | `.respondWithTools(toolCalls)` | Shorthand for `.respond()` with tool calls. Each entry needs `name` and `args`; `id` is optional. |\n * | `.alwaysThrow(error)` | Make every invocation throw this error, regardless of the queue. |\n * | `.structuredResponse(value)` | Set the value returned by `.withStructuredOutput()`. |\n * | `.bindTools(tools)` | Bind tools to the model. Returns a `RunnableBinding` that shares the response queue and call recording. |\n * | `.withStructuredOutput(schema)` | Returns a runnable that produces the `.structuredResponse()` value. |\n * | `.calls` | Array of `{ messages, options }` for every invocation (read-only). |\n * | `.callCount` | Number of times the model has been invoked. |\n *\n * @example\n * ```typescript\n * const model = fakeModel()\n * .respondWithTools([{ name: \"search\", args: { query: \"weather\" } }])\n * .respond(new AIMessage(\"Sunny and warm.\"));\n *\n * const r1 = await model.invoke([new HumanMessage(\"What's the weather?\")]);\n * // r1.tool_calls[0].name === \"search\"\n *\n * const r2 = await model.invoke([new HumanMessage(\"Thanks\")]);\n * // r2.content === \"Sunny and warm.\"\n * ```\n */\nexport function fakeModel(): FakeBuiltModel {\n return new FakeBuiltModel();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fake_model_builder.cjs","names":["BaseChatModel","BaseMessage","RunnableLambda","AIMessage"],"sources":["../../src/testing/fake_model_builder.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport { CallbackManagerForLLMRun } from \"../callbacks/manager.js\";\nimport {\n BaseChatModel,\n BaseChatModelCallOptions,\n} from \"../language_models/chat_models.js\";\nimport {\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n StructuredOutputMethodParams,\n} from \"../language_models/base.js\";\nimport { BaseMessage, AIMessage } from \"../messages/index.js\";\nimport type { ToolCall } from \"../messages/tool.js\";\nimport type { ChatResult } from \"../outputs.js\";\nimport { Runnable, RunnableLambda } from \"../runnables/base.js\";\nimport { StructuredTool } from \"../tools/index.js\";\nimport type { InteropZodType } from \"../utils/types/zod.js\";\nimport type { ToolSpec } from \"../utils/testing/chat_models.js\";\n\ntype ResponseFactory = (messages: BaseMessage[]) => BaseMessage | Error;\n\ntype QueueEntry =\n | { kind: \"message\"; message: BaseMessage }\n | { kind: \"toolCalls\"; toolCalls: ToolCall[] }\n | { kind: \"error\"; error: Error }\n | { kind: \"factory\"; factory: ResponseFactory };\n\ninterface FakeModelCall {\n messages: BaseMessage[];\n options: any;\n}\n\ninterface FakeModelState {\n callIndex: number;\n calls: FakeModelCall[];\n}\n\nfunction deriveContent(messages: BaseMessage[]): string {\n return messages\n .map((m) => m.text)\n .filter(Boolean)\n .join(\"-\");\n}\n\nlet idCounter = 0;\nfunction nextToolCallId(): string {\n idCounter += 1;\n return `fake_tc_${idCounter}`;\n}\n\n/**\n * A fake chat model for testing, created via {@link fakeModel}.\n *\n * Queue responses with `.respond()` and `.respondWithTools()`, then\n * pass the instance directly wherever a chat model is expected.\n * Responses are consumed in first-in-first-out order — one per `invoke()` call.\n * When all queued responses are consumed, further invocations throw.\n */\nexport class FakeBuiltModel extends BaseChatModel {\n private queue: QueueEntry[] = [];\n\n private _alwaysThrowError: Error | undefined;\n\n private _structuredResponseValue: any;\n\n private _tools: (StructuredTool | ToolSpec)[] = [];\n\n private _state: FakeModelState = { callIndex: 0, calls: [] };\n\n /**\n * All invocations recorded by this model, in order.\n * Each entry contains the `messages` array and `options` that were\n * passed to `invoke()`.\n */\n get calls(): FakeModelCall[] {\n return this._state.calls;\n }\n\n /**\n * The number of times this model has been invoked.\n */\n get callCount(): number {\n return this._state.calls.length;\n }\n\n constructor() {\n super({});\n }\n\n _llmType(): string {\n return \"fake-model-builder\";\n }\n\n _combineLLMOutput() {\n return [];\n }\n\n /**\n * Enqueue a response that the model will return on its next invocation.\n * @param entry A {@link BaseMessage} to return, an `Error` to throw, or\n * a factory `(messages) => BaseMessage | Error` for dynamic responses.\n * @returns `this`, for chaining.\n */\n respond(entry: BaseMessage | Error | ResponseFactory): this {\n if (typeof entry === \"function\") {\n this.queue.push({ kind: \"factory\", factory: entry });\n } else if (BaseMessage.isInstance(entry)) {\n this.queue.push({ kind: \"message\", message: entry });\n } else {\n this.queue.push({ kind: \"error\", error: entry });\n }\n return this;\n }\n\n /**\n * Enqueue an {@link AIMessage} that carries the given tool calls.\n * Content is derived from the input messages at invocation time.\n * @param toolCalls Array of tool calls. Each entry needs `name` and\n * `args`; `id` is optional and auto-generated when omitted.\n * @returns `this`, for chaining.\n */\n respondWithTools(\n toolCalls: Array<{ name: string; args: Record<string, any>; id?: string }>\n ): this {\n this.queue.push({\n kind: \"toolCalls\",\n toolCalls: toolCalls.map((tc) => ({\n name: tc.name,\n args: tc.args,\n id: tc.id ?? nextToolCallId(),\n type: \"tool_call\" as const,\n })),\n });\n return this;\n }\n\n /**\n * Make every invocation throw the given error, regardless of the queue.\n * @param error The error to throw.\n * @returns `this`, for chaining.\n */\n alwaysThrow(error: Error): this {\n this._alwaysThrowError = error;\n return this;\n }\n\n /**\n * Set the value that {@link withStructuredOutput} will resolve to.\n * @param value The structured object to return.\n * @returns `this`, for chaining.\n */\n structuredResponse(value: Record<string, any>): this {\n this._structuredResponseValue = value;\n return this;\n }\n\n /**\n * Bind tools to the model. Returns a new model that shares the same\n * response queue and call history.\n * @param tools The tools to bind, as {@link StructuredTool} instances or\n * plain {@link ToolSpec} objects.\n * @returns A new RunnableBinding with the tools bound.\n */\n bindTools(tools: (StructuredTool | ToolSpec)[]) {\n const merged = [...this._tools, ...tools];\n const next = new FakeBuiltModel();\n next.queue = this.queue;\n next._alwaysThrowError = this._alwaysThrowError;\n next._structuredResponseValue = this._structuredResponseValue;\n next._tools = merged;\n next._state = this._state;\n\n return next.withConfig({} as BaseChatModelCallOptions);\n }\n\n /**\n * Returns a {@link Runnable} that produces the {@link structuredResponse}\n * value. The schema argument is accepted for compatibility but ignored.\n * @param _params Schema or params (ignored).\n * @param _config Options (ignored).\n * @returns A Runnable that resolves to the structured response value.\n */\n withStructuredOutput<\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n | Record<string, any>,\n _config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n const { _structuredResponseValue } = this;\n return RunnableLambda.from(async () => {\n return _structuredResponseValue as RunOutput;\n }) as Runnable;\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n this._state.calls.push({ messages: [...messages], options });\n\n const currentCallIndex = this._state.callIndex;\n this._state.callIndex += 1;\n\n if (this._alwaysThrowError) {\n throw this._alwaysThrowError;\n }\n\n const entry = this.queue[currentCallIndex];\n if (!entry) {\n throw new Error(\n `FakeModel: no response queued for invocation ${currentCallIndex} (${this.queue.length} total queued).`\n );\n }\n\n if (entry.kind === \"error\") {\n throw entry.error;\n }\n\n if (entry.kind === \"factory\") {\n const result = entry.factory(messages);\n if (!BaseMessage.isInstance(result)) {\n throw result;\n }\n return {\n generations: [{ text: \"\", message: result }],\n };\n }\n\n if (entry.kind === \"message\") {\n return {\n generations: [{ text: \"\", message: entry.message }],\n };\n }\n\n const content = deriveContent(messages);\n const message = new AIMessage({\n content,\n id: currentCallIndex.toString(),\n tool_calls:\n entry.toolCalls.length > 0\n ? entry.toolCalls.map((tc) => ({\n ...tc,\n type: \"tool_call\" as const,\n }))\n : undefined,\n });\n\n return {\n generations: [{ text: content, message }],\n llmOutput: {},\n };\n }\n}\n\n/**\n * Creates a new {@link FakeBuiltModel} for testing.\n *\n * Returns a chainable builder — queue responses, then pass the model\n * anywhere a chat model is expected. Responses are consumed in FIFO\n * order, one per `invoke()` call.\n *\n * ## API summary\n *\n * | Method | Description |\n * | --- | --- |\n * | `fakeModel()` | Creates a new fake chat model. Returns a chainable builder. |\n * | `.respond(message)` | Queue an `AIMessage` (or any `BaseMessage`) to return on the next invocation. |\n * | `.respond(error)` | Queue an `Error` to throw on the next invocation. |\n * | `.respond(factory)` | Queue a function `(messages) => BaseMessage \\| Error` for dynamic responses. |\n * | `.respondWithTools(toolCalls)` | Shorthand for `.respond()` with tool calls. Each entry needs `name` and `args`; `id` is optional. |\n * | `.alwaysThrow(error)` | Make every invocation throw this error, regardless of the queue. |\n * | `.structuredResponse(value)` | Set the value returned by `.withStructuredOutput()`. |\n * | `.bindTools(tools)` | Bind tools to the model. Returns a `RunnableBinding` that shares the response queue and call recording. |\n * | `.withStructuredOutput(schema)` | Returns a runnable that produces the `.structuredResponse()` value. |\n * | `.calls` | Array of `{ messages, options }` for every invocation (read-only). |\n * | `.callCount` | Number of times the model has been invoked. |\n *\n * @example\n * ```typescript\n * const model = fakeModel()\n * .respondWithTools([{ name: \"search\", args: { query: \"weather\" } }])\n * .respond(new AIMessage(\"Sunny and warm.\"));\n *\n * const r1 = await model.invoke([new HumanMessage(\"What's the weather?\")]);\n * // r1.tool_calls[0].name === \"search\"\n *\n * const r2 = await model.invoke([new HumanMessage(\"Thanks\")]);\n * // r2.content === \"Sunny and warm.\"\n * ```\n */\nexport function fakeModel(): FakeBuiltModel {\n return new FakeBuiltModel();\n}\n"],"mappings":"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"}