langgraph-ui-components 0.0.1 → 0.0.2

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 (532) hide show
  1. package/dist/index.es.js +9 -27085
  2. package/dist/index.es.js.map +1 -1
  3. package/dist/index.es10.js +21 -0
  4. package/dist/index.es10.js.map +1 -0
  5. package/dist/index.es100.js +43 -0
  6. package/dist/index.es100.js.map +1 -0
  7. package/dist/index.es101.js +94 -0
  8. package/dist/index.es101.js.map +1 -0
  9. package/dist/index.es102.js +5 -0
  10. package/dist/index.es102.js.map +1 -0
  11. package/dist/index.es103.js +5 -0
  12. package/dist/index.es103.js.map +1 -0
  13. package/dist/index.es104.js +25 -0
  14. package/dist/index.es104.js.map +1 -0
  15. package/dist/index.es105.js +5 -0
  16. package/dist/index.es105.js.map +1 -0
  17. package/dist/index.es106.js +28 -0
  18. package/dist/index.es106.js.map +1 -0
  19. package/dist/index.es107.js +8 -0
  20. package/dist/index.es107.js.map +1 -0
  21. package/dist/index.es108.js +3 -0
  22. package/dist/index.es108.js.map +1 -0
  23. package/dist/index.es109.js +14 -0
  24. package/dist/index.es109.js.map +1 -0
  25. package/dist/index.es11.js +125 -0
  26. package/dist/index.es11.js.map +1 -0
  27. package/dist/index.es110.js +504 -0
  28. package/dist/index.es110.js.map +1 -0
  29. package/dist/index.es111.js +3 -0
  30. package/dist/index.es111.js.map +1 -0
  31. package/dist/index.es112.js +149 -0
  32. package/dist/index.es112.js.map +1 -0
  33. package/dist/index.es113.js +889 -0
  34. package/dist/index.es113.js.map +1 -0
  35. package/dist/index.es114.js +283 -0
  36. package/dist/index.es114.js.map +1 -0
  37. package/dist/index.es115.js +5 -0
  38. package/dist/index.es115.js.map +1 -0
  39. package/dist/index.es116.js +447 -0
  40. package/dist/index.es116.js.map +1 -0
  41. package/dist/index.es117.js +49 -0
  42. package/dist/index.es117.js.map +1 -0
  43. package/dist/index.es118.js +25 -0
  44. package/dist/index.es118.js.map +1 -0
  45. package/dist/index.es119.js +82 -0
  46. package/dist/index.es119.js.map +1 -0
  47. package/dist/index.es12.js +104 -0
  48. package/dist/index.es12.js.map +1 -0
  49. package/dist/index.es120.js +132 -0
  50. package/dist/index.es120.js.map +1 -0
  51. package/dist/index.es121.js +52 -0
  52. package/dist/index.es121.js.map +1 -0
  53. package/dist/index.es122.js +13 -0
  54. package/dist/index.es122.js.map +1 -0
  55. package/dist/index.es123.js +48 -0
  56. package/dist/index.es123.js.map +1 -0
  57. package/dist/index.es124.js +102 -0
  58. package/dist/index.es124.js.map +1 -0
  59. package/dist/index.es125.js +56 -0
  60. package/dist/index.es125.js.map +1 -0
  61. package/dist/index.es126.js +5 -0
  62. package/dist/index.es126.js.map +1 -0
  63. package/dist/index.es127.js +140 -0
  64. package/dist/index.es127.js.map +1 -0
  65. package/dist/index.es128.js +5 -0
  66. package/dist/index.es128.js.map +1 -0
  67. package/dist/index.es129.js +18 -0
  68. package/dist/index.es129.js.map +1 -0
  69. package/dist/index.es13.js +37 -0
  70. package/dist/index.es13.js.map +1 -0
  71. package/dist/index.es130.js +92 -0
  72. package/dist/index.es130.js.map +1 -0
  73. package/dist/index.es131.js +5 -0
  74. package/dist/index.es131.js.map +1 -0
  75. package/dist/index.es132.js +59 -0
  76. package/dist/index.es132.js.map +1 -0
  77. package/dist/index.es133.js +103 -0
  78. package/dist/index.es133.js.map +1 -0
  79. package/dist/index.es134.js +194 -0
  80. package/dist/index.es134.js.map +1 -0
  81. package/dist/index.es135.js +113 -0
  82. package/dist/index.es135.js.map +1 -0
  83. package/dist/index.es136.js +38 -0
  84. package/dist/index.es136.js.map +1 -0
  85. package/dist/index.es137.js +13 -0
  86. package/dist/index.es137.js.map +1 -0
  87. package/dist/index.es138.js +14 -0
  88. package/dist/index.es138.js.map +1 -0
  89. package/dist/index.es139.js +15 -0
  90. package/dist/index.es139.js.map +1 -0
  91. package/dist/index.es14.js +148 -0
  92. package/dist/index.es14.js.map +1 -0
  93. package/dist/index.es140.js +94 -0
  94. package/dist/index.es140.js.map +1 -0
  95. package/dist/index.es141.js +38 -0
  96. package/dist/index.es141.js.map +1 -0
  97. package/dist/index.es142.js +43 -0
  98. package/dist/index.es142.js.map +1 -0
  99. package/dist/index.es143.js +27 -0
  100. package/dist/index.es143.js.map +1 -0
  101. package/dist/index.es144.js +594 -0
  102. package/dist/index.es144.js.map +1 -0
  103. package/dist/index.es145.js +128 -0
  104. package/dist/index.es145.js.map +1 -0
  105. package/dist/index.es146.js +7 -0
  106. package/dist/index.es146.js.map +1 -0
  107. package/dist/index.es147.js +8 -0
  108. package/dist/index.es147.js.map +1 -0
  109. package/dist/index.es148.js +16 -0
  110. package/dist/index.es148.js.map +1 -0
  111. package/dist/index.es149.js +9 -0
  112. package/dist/index.es149.js.map +1 -0
  113. package/dist/index.es15.js +15 -0
  114. package/dist/index.es15.js.map +1 -0
  115. package/dist/index.es150.js +11 -0
  116. package/dist/index.es150.js.map +1 -0
  117. package/dist/index.es151.js +28 -0
  118. package/dist/index.es151.js.map +1 -0
  119. package/dist/index.es152.js +15 -0
  120. package/dist/index.es152.js.map +1 -0
  121. package/dist/index.es153.js +57 -0
  122. package/dist/index.es153.js.map +1 -0
  123. package/dist/index.es154.js +67 -0
  124. package/dist/index.es154.js.map +1 -0
  125. package/dist/index.es155.js +25 -0
  126. package/dist/index.es155.js.map +1 -0
  127. package/dist/index.es156.js +9 -0
  128. package/dist/index.es156.js.map +1 -0
  129. package/dist/index.es157.js +352 -0
  130. package/dist/index.es157.js.map +1 -0
  131. package/dist/index.es158.js +10 -0
  132. package/dist/index.es158.js.map +1 -0
  133. package/dist/index.es159.js +106 -0
  134. package/dist/index.es159.js.map +1 -0
  135. package/dist/index.es16.js +8 -0
  136. package/dist/index.es16.js.map +1 -0
  137. package/dist/index.es160.js +122 -0
  138. package/dist/index.es160.js.map +1 -0
  139. package/dist/index.es161.js +139 -0
  140. package/dist/index.es161.js.map +1 -0
  141. package/dist/index.es162.js +118 -0
  142. package/dist/index.es162.js.map +1 -0
  143. package/dist/index.es163.js +9 -0
  144. package/dist/index.es163.js.map +1 -0
  145. package/dist/index.es164.js +145 -0
  146. package/dist/index.es164.js.map +1 -0
  147. package/dist/index.es165.js +5 -0
  148. package/dist/index.es165.js.map +1 -0
  149. package/dist/index.es166.js +3685 -0
  150. package/dist/index.es166.js.map +1 -0
  151. package/dist/index.es167.js +345 -0
  152. package/dist/index.es167.js.map +1 -0
  153. package/dist/index.es168.js +112 -0
  154. package/dist/index.es168.js.map +1 -0
  155. package/dist/index.es169.js +136 -0
  156. package/dist/index.es169.js.map +1 -0
  157. package/dist/index.es17.js +36 -0
  158. package/dist/index.es17.js.map +1 -0
  159. package/dist/index.es170.js +18 -0
  160. package/dist/index.es170.js.map +1 -0
  161. package/dist/index.es171.js +155 -0
  162. package/dist/index.es171.js.map +1 -0
  163. package/dist/index.es172.js +18 -0
  164. package/dist/index.es172.js.map +1 -0
  165. package/dist/index.es173.js +11 -0
  166. package/dist/index.es173.js.map +1 -0
  167. package/dist/index.es174.js +24 -0
  168. package/dist/index.es174.js.map +1 -0
  169. package/dist/index.es175.js +93 -0
  170. package/dist/index.es175.js.map +1 -0
  171. package/dist/index.es176.js +27 -0
  172. package/dist/index.es176.js.map +1 -0
  173. package/dist/index.es177.js +9 -0
  174. package/dist/index.es177.js.map +1 -0
  175. package/dist/index.es178.js +7 -0
  176. package/dist/index.es178.js.map +1 -0
  177. package/dist/index.es179.js +21 -0
  178. package/dist/index.es179.js.map +1 -0
  179. package/dist/index.es18.js +126 -0
  180. package/dist/index.es18.js.map +1 -0
  181. package/dist/index.es180.js +35 -0
  182. package/dist/index.es180.js.map +1 -0
  183. package/dist/index.es181.js +9 -0
  184. package/dist/index.es181.js.map +1 -0
  185. package/dist/index.es182.js +109 -0
  186. package/dist/index.es182.js.map +1 -0
  187. package/dist/index.es183.js +16 -0
  188. package/dist/index.es183.js.map +1 -0
  189. package/dist/index.es184.js +21 -0
  190. package/dist/index.es184.js.map +1 -0
  191. package/dist/index.es185.js +34 -0
  192. package/dist/index.es185.js.map +1 -0
  193. package/dist/index.es186.js +7 -0
  194. package/dist/index.es186.js.map +1 -0
  195. package/dist/index.es187.js +8 -0
  196. package/dist/index.es187.js.map +1 -0
  197. package/dist/index.es188.js +8 -0
  198. package/dist/index.es188.js.map +1 -0
  199. package/dist/index.es189.js +40 -0
  200. package/dist/index.es189.js.map +1 -0
  201. package/dist/index.es19.js +41 -0
  202. package/dist/index.es19.js.map +1 -0
  203. package/dist/index.es190.js +11 -0
  204. package/dist/index.es190.js.map +1 -0
  205. package/dist/index.es191.js +9 -0
  206. package/dist/index.es191.js.map +1 -0
  207. package/dist/index.es192.js +10 -0
  208. package/dist/index.es192.js.map +1 -0
  209. package/dist/index.es193.js +45 -0
  210. package/dist/index.es193.js.map +1 -0
  211. package/dist/index.es194.js +16 -0
  212. package/dist/index.es194.js.map +1 -0
  213. package/dist/index.es195.js +245 -0
  214. package/dist/index.es195.js.map +1 -0
  215. package/dist/index.es196.js +54 -0
  216. package/dist/index.es196.js.map +1 -0
  217. package/dist/index.es197.js +38 -0
  218. package/dist/index.es197.js.map +1 -0
  219. package/dist/index.es198.js +16 -0
  220. package/dist/index.es198.js.map +1 -0
  221. package/dist/index.es199.js +11 -0
  222. package/dist/index.es199.js.map +1 -0
  223. package/dist/index.es2.js +142 -0
  224. package/dist/index.es2.js.map +1 -0
  225. package/dist/index.es20.js +46 -0
  226. package/dist/index.es20.js.map +1 -0
  227. package/dist/index.es200.js +10 -0
  228. package/dist/index.es200.js.map +1 -0
  229. package/dist/index.es201.js +68 -0
  230. package/dist/index.es201.js.map +1 -0
  231. package/dist/index.es202.js +44 -0
  232. package/dist/index.es202.js.map +1 -0
  233. package/dist/index.es203.js +35 -0
  234. package/dist/index.es203.js.map +1 -0
  235. package/dist/index.es204.js +65 -0
  236. package/dist/index.es204.js.map +1 -0
  237. package/dist/index.es205.js +18 -0
  238. package/dist/index.es205.js.map +1 -0
  239. package/dist/index.es206.js +26 -0
  240. package/dist/index.es206.js.map +1 -0
  241. package/dist/index.es207.js +8 -0
  242. package/dist/index.es207.js.map +1 -0
  243. package/dist/index.es208.js +20 -0
  244. package/dist/index.es208.js.map +1 -0
  245. package/dist/index.es209.js +36 -0
  246. package/dist/index.es209.js.map +1 -0
  247. package/dist/index.es21.js +21 -0
  248. package/dist/index.es21.js.map +1 -0
  249. package/dist/index.es210.js +8 -0
  250. package/dist/index.es210.js.map +1 -0
  251. package/dist/index.es211.js +8 -0
  252. package/dist/index.es211.js.map +1 -0
  253. package/dist/index.es212.js +8 -0
  254. package/dist/index.es212.js.map +1 -0
  255. package/dist/index.es213.js +11 -0
  256. package/dist/index.es213.js.map +1 -0
  257. package/dist/index.es214.js +95 -0
  258. package/dist/index.es214.js.map +1 -0
  259. package/dist/index.es215.js +21 -0
  260. package/dist/index.es215.js.map +1 -0
  261. package/dist/index.es216.js +765 -0
  262. package/dist/index.es216.js.map +1 -0
  263. package/dist/index.es217.js +69 -0
  264. package/dist/index.es217.js.map +1 -0
  265. package/dist/index.es218.js +177 -0
  266. package/dist/index.es218.js.map +1 -0
  267. package/dist/index.es219.js +41 -0
  268. package/dist/index.es219.js.map +1 -0
  269. package/dist/index.es22.js +76 -0
  270. package/dist/index.es22.js.map +1 -0
  271. package/dist/index.es220.js +140 -0
  272. package/dist/index.es220.js.map +1 -0
  273. package/dist/index.es221.js +96 -0
  274. package/dist/index.es221.js.map +1 -0
  275. package/dist/index.es222.js +36 -0
  276. package/dist/index.es222.js.map +1 -0
  277. package/dist/index.es223.js +288 -0
  278. package/dist/index.es223.js.map +1 -0
  279. package/dist/index.es224.js +29 -0
  280. package/dist/index.es224.js.map +1 -0
  281. package/dist/index.es225.js +27 -0
  282. package/dist/index.es225.js.map +1 -0
  283. package/dist/index.es226.js +18 -0
  284. package/dist/index.es226.js.map +1 -0
  285. package/dist/index.es227.js +18 -0
  286. package/dist/index.es227.js.map +1 -0
  287. package/dist/index.es228.js +29 -0
  288. package/dist/index.es228.js.map +1 -0
  289. package/dist/index.es229.js +49 -0
  290. package/dist/index.es229.js.map +1 -0
  291. package/dist/index.es23.js +34 -0
  292. package/dist/index.es23.js.map +1 -0
  293. package/dist/index.es230.js +15 -0
  294. package/dist/index.es230.js.map +1 -0
  295. package/dist/index.es231.js +15 -0
  296. package/dist/index.es231.js.map +1 -0
  297. package/dist/index.es232.js +15 -0
  298. package/dist/index.es232.js.map +1 -0
  299. package/dist/index.es233.js +18 -0
  300. package/dist/index.es233.js.map +1 -0
  301. package/dist/index.es234.js +15 -0
  302. package/dist/index.es234.js.map +1 -0
  303. package/dist/index.es235.js +15 -0
  304. package/dist/index.es235.js.map +1 -0
  305. package/dist/index.es236.js +15 -0
  306. package/dist/index.es236.js.map +1 -0
  307. package/dist/index.es237.js +19 -0
  308. package/dist/index.es237.js.map +1 -0
  309. package/dist/index.es238.js +15 -0
  310. package/dist/index.es238.js.map +1 -0
  311. package/dist/index.es239.js +15 -0
  312. package/dist/index.es239.js.map +1 -0
  313. package/dist/index.es24.js +97 -0
  314. package/dist/index.es24.js.map +1 -0
  315. package/dist/index.es240.js +15 -0
  316. package/dist/index.es240.js.map +1 -0
  317. package/dist/index.es241.js +15 -0
  318. package/dist/index.es241.js.map +1 -0
  319. package/dist/index.es242.js +15 -0
  320. package/dist/index.es242.js.map +1 -0
  321. package/dist/index.es243.js +15 -0
  322. package/dist/index.es243.js.map +1 -0
  323. package/dist/index.es244.js +15 -0
  324. package/dist/index.es244.js.map +1 -0
  325. package/dist/index.es245.js +15 -0
  326. package/dist/index.es245.js.map +1 -0
  327. package/dist/index.es246.js +60 -0
  328. package/dist/index.es246.js.map +1 -0
  329. package/dist/index.es247.js +53 -0
  330. package/dist/index.es247.js.map +1 -0
  331. package/dist/index.es248.js +123 -0
  332. package/dist/index.es248.js.map +1 -0
  333. package/dist/index.es249.js +388 -0
  334. package/dist/index.es249.js.map +1 -0
  335. package/dist/index.es25.js +74 -0
  336. package/dist/index.es25.js.map +1 -0
  337. package/dist/index.es250.js +22 -0
  338. package/dist/index.es250.js.map +1 -0
  339. package/dist/index.es251.js +15 -0
  340. package/dist/index.es251.js.map +1 -0
  341. package/dist/index.es252.js +35 -0
  342. package/dist/index.es252.js.map +1 -0
  343. package/dist/index.es253.js +35 -0
  344. package/dist/index.es253.js.map +1 -0
  345. package/dist/index.es254.js +66 -0
  346. package/dist/index.es254.js.map +1 -0
  347. package/dist/index.es255.js +21 -0
  348. package/dist/index.es255.js.map +1 -0
  349. package/dist/index.es256.js +81 -0
  350. package/dist/index.es256.js.map +1 -0
  351. package/dist/index.es257.js +15 -0
  352. package/dist/index.es257.js.map +1 -0
  353. package/dist/index.es258.js +15 -0
  354. package/dist/index.es258.js.map +1 -0
  355. package/dist/index.es259.js +19 -0
  356. package/dist/index.es259.js.map +1 -0
  357. package/dist/index.es26.js +180 -0
  358. package/dist/index.es26.js.map +1 -0
  359. package/dist/index.es260.js +56 -0
  360. package/dist/index.es260.js.map +1 -0
  361. package/dist/index.es261.js +170 -0
  362. package/dist/index.es261.js.map +1 -0
  363. package/dist/index.es262.js +5 -0
  364. package/dist/index.es262.js.map +1 -0
  365. package/dist/index.es263.js +14 -0
  366. package/dist/index.es263.js.map +1 -0
  367. package/dist/index.es264.js +23 -0
  368. package/dist/index.es264.js.map +1 -0
  369. package/dist/index.es265.js +42 -0
  370. package/dist/index.es265.js.map +1 -0
  371. package/dist/index.es27.js +16 -0
  372. package/dist/index.es27.js.map +1 -0
  373. package/dist/index.es28.js +441 -0
  374. package/dist/index.es28.js.map +1 -0
  375. package/dist/index.es29.js +122 -0
  376. package/dist/index.es29.js.map +1 -0
  377. package/dist/index.es3.js +30 -0
  378. package/dist/index.es3.js.map +1 -0
  379. package/dist/index.es30.js +77 -0
  380. package/dist/index.es30.js.map +1 -0
  381. package/dist/index.es31.js +15 -0
  382. package/dist/index.es31.js.map +1 -0
  383. package/dist/index.es32.js +262 -0
  384. package/dist/index.es32.js.map +1 -0
  385. package/dist/index.es33.js +47 -0
  386. package/dist/index.es33.js.map +1 -0
  387. package/dist/index.es34.js +215 -0
  388. package/dist/index.es34.js.map +1 -0
  389. package/dist/index.es35.js +71 -0
  390. package/dist/index.es35.js.map +1 -0
  391. package/dist/index.es36.js +146 -0
  392. package/dist/index.es36.js.map +1 -0
  393. package/dist/index.es37.js +28 -0
  394. package/dist/index.es37.js.map +1 -0
  395. package/dist/index.es38.js +228 -0
  396. package/dist/index.es38.js.map +1 -0
  397. package/dist/index.es39.js +13 -0
  398. package/dist/index.es39.js.map +1 -0
  399. package/dist/index.es4.js +30 -0
  400. package/dist/index.es4.js.map +1 -0
  401. package/dist/index.es40.js +1203 -0
  402. package/dist/index.es40.js.map +1 -0
  403. package/dist/index.es41.js +12 -0
  404. package/dist/index.es41.js.map +1 -0
  405. package/dist/index.es42.js +151 -0
  406. package/dist/index.es42.js.map +1 -0
  407. package/dist/index.es43.js +18 -0
  408. package/dist/index.es43.js.map +1 -0
  409. package/dist/index.es44.js +11 -0
  410. package/dist/index.es44.js.map +1 -0
  411. package/dist/index.es45.js +97 -0
  412. package/dist/index.es45.js.map +1 -0
  413. package/dist/index.es46.js +7 -0
  414. package/dist/index.es46.js.map +1 -0
  415. package/dist/index.es47.js +39 -0
  416. package/dist/index.es47.js.map +1 -0
  417. package/dist/index.es48.js +75 -0
  418. package/dist/index.es48.js.map +1 -0
  419. package/dist/index.es49.js +41 -0
  420. package/dist/index.es49.js.map +1 -0
  421. package/dist/index.es5.js +26 -0
  422. package/dist/index.es5.js.map +1 -0
  423. package/dist/index.es50.js +309 -0
  424. package/dist/index.es50.js.map +1 -0
  425. package/dist/index.es51.js +12 -0
  426. package/dist/index.es51.js.map +1 -0
  427. package/dist/index.es52.js +88 -0
  428. package/dist/index.es52.js.map +1 -0
  429. package/dist/index.es53.js +11 -0
  430. package/dist/index.es53.js.map +1 -0
  431. package/dist/index.es54.js +18 -0
  432. package/dist/index.es54.js.map +1 -0
  433. package/dist/index.es55.js +144 -0
  434. package/dist/index.es55.js.map +1 -0
  435. package/dist/index.es56.js +303 -0
  436. package/dist/index.es56.js.map +1 -0
  437. package/dist/index.es57.js +69 -0
  438. package/dist/index.es57.js.map +1 -0
  439. package/dist/index.es58.js +216 -0
  440. package/dist/index.es58.js.map +1 -0
  441. package/dist/index.es59.js +37 -0
  442. package/dist/index.es59.js.map +1 -0
  443. package/dist/index.es6.js +122 -0
  444. package/dist/index.es6.js.map +1 -0
  445. package/dist/index.es60.js +12 -0
  446. package/dist/index.es60.js.map +1 -0
  447. package/dist/index.es61.js +15 -0
  448. package/dist/index.es61.js.map +1 -0
  449. package/dist/index.es62.js +190 -0
  450. package/dist/index.es62.js.map +1 -0
  451. package/dist/index.es63.js +19 -0
  452. package/dist/index.es63.js.map +1 -0
  453. package/dist/index.es64.js +1403 -0
  454. package/dist/index.es64.js.map +1 -0
  455. package/dist/index.es65.js +12 -0
  456. package/dist/index.es65.js.map +1 -0
  457. package/dist/index.es66.js +11 -0
  458. package/dist/index.es66.js.map +1 -0
  459. package/dist/index.es67.js +9 -0
  460. package/dist/index.es67.js.map +1 -0
  461. package/dist/index.es68.js +8 -0
  462. package/dist/index.es68.js.map +1 -0
  463. package/dist/index.es69.js +8 -0
  464. package/dist/index.es69.js.map +1 -0
  465. package/dist/index.es7.js +19 -0
  466. package/dist/index.es7.js.map +1 -0
  467. package/dist/index.es70.js +15 -0
  468. package/dist/index.es70.js.map +1 -0
  469. package/dist/index.es71.js +26 -0
  470. package/dist/index.es71.js.map +1 -0
  471. package/dist/index.es72.js +37 -0
  472. package/dist/index.es72.js.map +1 -0
  473. package/dist/index.es73.js +235 -0
  474. package/dist/index.es73.js.map +1 -0
  475. package/dist/index.es74.js +71 -0
  476. package/dist/index.es74.js.map +1 -0
  477. package/dist/index.es75.js +72 -0
  478. package/dist/index.es75.js.map +1 -0
  479. package/dist/index.es76.js +60 -0
  480. package/dist/index.es76.js.map +1 -0
  481. package/dist/index.es77.js +16 -0
  482. package/dist/index.es77.js.map +1 -0
  483. package/dist/index.es78.js +140 -0
  484. package/dist/index.es78.js.map +1 -0
  485. package/dist/index.es79.js +24 -0
  486. package/dist/index.es79.js.map +1 -0
  487. package/dist/index.es8.js +61 -0
  488. package/dist/index.es8.js.map +1 -0
  489. package/dist/index.es80.js +185 -0
  490. package/dist/index.es80.js.map +1 -0
  491. package/dist/index.es81.js +244 -0
  492. package/dist/index.es81.js.map +1 -0
  493. package/dist/index.es82.js +358 -0
  494. package/dist/index.es82.js.map +1 -0
  495. package/dist/index.es83.js +140 -0
  496. package/dist/index.es83.js.map +1 -0
  497. package/dist/index.es84.js +73 -0
  498. package/dist/index.es84.js.map +1 -0
  499. package/dist/index.es85.js +40 -0
  500. package/dist/index.es85.js.map +1 -0
  501. package/dist/index.es86.js +40 -0
  502. package/dist/index.es86.js.map +1 -0
  503. package/dist/index.es87.js +169 -0
  504. package/dist/index.es87.js.map +1 -0
  505. package/dist/index.es88.js +206 -0
  506. package/dist/index.es88.js.map +1 -0
  507. package/dist/index.es89.js +17 -0
  508. package/dist/index.es89.js.map +1 -0
  509. package/dist/index.es9.js +109 -0
  510. package/dist/index.es9.js.map +1 -0
  511. package/dist/index.es90.js +33 -0
  512. package/dist/index.es90.js.map +1 -0
  513. package/dist/index.es91.js +37 -0
  514. package/dist/index.es91.js.map +1 -0
  515. package/dist/index.es92.js +3160 -0
  516. package/dist/index.es92.js.map +1 -0
  517. package/dist/index.es93.js +84 -0
  518. package/dist/index.es93.js.map +1 -0
  519. package/dist/index.es94.js +5 -0
  520. package/dist/index.es94.js.map +1 -0
  521. package/dist/index.es95.js +13 -0
  522. package/dist/index.es95.js.map +1 -0
  523. package/dist/index.es96.js +278 -0
  524. package/dist/index.es96.js.map +1 -0
  525. package/dist/index.es97.js +5 -0
  526. package/dist/index.es97.js.map +1 -0
  527. package/dist/index.es98.js +167 -0
  528. package/dist/index.es98.js.map +1 -0
  529. package/dist/index.es99.js +54 -0
  530. package/dist/index.es99.js.map +1 -0
  531. package/dist/styles.css +1 -1
  532. package/package.json +12 -10
@@ -0,0 +1,1403 @@
1
+ import { Serializable } from "./index.es55.js";
2
+ import { _isToolCall, ToolInputParsingException } from "./index.es61.js";
3
+ import { AsyncLocalStorageProviderSingleton } from "./index.es76.js";
4
+ import "./index.es77.js";
5
+ import { patchConfig, DEFAULT_RECURSION_LIMIT, pickRunnableConfigKeys, ensureConfig, getCallbackManagerForConfig, mergeConfigs } from "./index.es78.js";
6
+ import { raceWithSignal, getAbortSignalError } from "./index.es79.js";
7
+ import { AsyncGeneratorWithSetup, IterableReadableStream, concat, pipeGeneratorWithSetup, atee } from "./index.es80.js";
8
+ import { isLogStreamHandler, LogStreamCallbackHandler, RunLog, RunLogPatch } from "./index.es81.js";
9
+ import { isStreamEventsHandler, EventStreamCallbackHandler } from "./index.es82.js";
10
+ import { pRetry } from "./index.es83.js";
11
+ import { AsyncCaller } from "./index.es84.js";
12
+ import { RootListenersTracer } from "./index.es85.js";
13
+ import { _RootEventFilter, isRunnableInterface } from "./index.es86.js";
14
+ import { getSchemaDescription, isSimpleStringZodSchema, interopParseAsync } from "./index.es87.js";
15
+ import { Graph } from "./index.es88.js";
16
+ import { convertToHttpEventStream } from "./index.es89.js";
17
+ import { isAsyncIterable, consumeAsyncIterableInContext, isIterableIterator, consumeIteratorInContext, isIterator } from "./index.es90.js";
18
+ import { v4 } from "uuid";
19
+ import { isTraceableFunction } from "./index.es91.js";
20
+ import { any as anyType, object as objectType, string as stringType } from "./index.es92.js";
21
+ function _coerceToDict(value, defaultKey) {
22
+ return value && !Array.isArray(value) && !(value instanceof Date) && typeof value === "object" ? value : { [defaultKey]: value };
23
+ }
24
+ var Runnable = class extends Serializable {
25
+ lc_runnable = true;
26
+ name;
27
+ getName(suffix) {
28
+ const name = this.name ?? this.constructor.lc_name() ?? this.constructor.name;
29
+ return suffix ? `${name}${suffix}` : name;
30
+ }
31
+ /**
32
+ * Add retry logic to an existing runnable.
33
+ * @param fields.stopAfterAttempt The number of attempts to retry.
34
+ * @param fields.onFailedAttempt A function that is called when a retry fails.
35
+ * @returns A new RunnableRetry that, when invoked, will retry according to the parameters.
36
+ */
37
+ withRetry(fields) {
38
+ return new RunnableRetry({
39
+ bound: this,
40
+ kwargs: {},
41
+ config: {},
42
+ maxAttemptNumber: fields?.stopAfterAttempt,
43
+ ...fields
44
+ });
45
+ }
46
+ /**
47
+ * Bind config to a Runnable, returning a new Runnable.
48
+ * @param config New configuration parameters to attach to the new runnable.
49
+ * @returns A new RunnableBinding with a config matching what's passed.
50
+ */
51
+ withConfig(config) {
52
+ return new RunnableBinding({
53
+ bound: this,
54
+ config,
55
+ kwargs: {}
56
+ });
57
+ }
58
+ /**
59
+ * Create a new runnable from the current one that will try invoking
60
+ * other passed fallback runnables if the initial invocation fails.
61
+ * @param fields.fallbacks Other runnables to call if the runnable errors.
62
+ * @returns A new RunnableWithFallbacks.
63
+ */
64
+ withFallbacks(fields) {
65
+ const fallbacks = Array.isArray(fields) ? fields : fields.fallbacks;
66
+ return new RunnableWithFallbacks({
67
+ runnable: this,
68
+ fallbacks
69
+ });
70
+ }
71
+ _getOptionsList(options, length = 0) {
72
+ if (Array.isArray(options) && options.length !== length) throw new Error(`Passed "options" must be an array with the same length as the inputs, but got ${options.length} options for ${length} inputs`);
73
+ if (Array.isArray(options)) return options.map(ensureConfig);
74
+ if (length > 1 && !Array.isArray(options) && options.runId) {
75
+ console.warn("Provided runId will be used only for the first element of the batch.");
76
+ const subsequent = Object.fromEntries(Object.entries(options).filter(([key]) => key !== "runId"));
77
+ return Array.from({ length }, (_, i) => ensureConfig(i === 0 ? options : subsequent));
78
+ }
79
+ return Array.from({ length }, () => ensureConfig(options));
80
+ }
81
+ async batch(inputs, options, batchOptions) {
82
+ const configList = this._getOptionsList(options ?? {}, inputs.length);
83
+ const maxConcurrency = configList[0]?.maxConcurrency ?? batchOptions?.maxConcurrency;
84
+ const caller = new AsyncCaller({
85
+ maxConcurrency,
86
+ onFailedAttempt: (e) => {
87
+ throw e;
88
+ }
89
+ });
90
+ const batchCalls = inputs.map((input, i) => caller.call(async () => {
91
+ try {
92
+ const result = await this.invoke(input, configList[i]);
93
+ return result;
94
+ } catch (e) {
95
+ if (batchOptions?.returnExceptions) return e;
96
+ throw e;
97
+ }
98
+ }));
99
+ return Promise.all(batchCalls);
100
+ }
101
+ /**
102
+ * Default streaming implementation.
103
+ * Subclasses should override this method if they support streaming output.
104
+ * @param input
105
+ * @param options
106
+ */
107
+ async *_streamIterator(input, options) {
108
+ yield this.invoke(input, options);
109
+ }
110
+ /**
111
+ * Stream output in chunks.
112
+ * @param input
113
+ * @param options
114
+ * @returns A readable stream that is also an iterable.
115
+ */
116
+ async stream(input, options) {
117
+ const config = ensureConfig(options);
118
+ const wrappedGenerator = new AsyncGeneratorWithSetup({
119
+ generator: this._streamIterator(input, config),
120
+ config
121
+ });
122
+ await wrappedGenerator.setup;
123
+ return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
124
+ }
125
+ _separateRunnableConfigFromCallOptions(options) {
126
+ let runnableConfig;
127
+ if (options === void 0) runnableConfig = ensureConfig(options);
128
+ else runnableConfig = ensureConfig({
129
+ callbacks: options.callbacks,
130
+ tags: options.tags,
131
+ metadata: options.metadata,
132
+ runName: options.runName,
133
+ configurable: options.configurable,
134
+ recursionLimit: options.recursionLimit,
135
+ maxConcurrency: options.maxConcurrency,
136
+ runId: options.runId,
137
+ timeout: options.timeout,
138
+ signal: options.signal
139
+ });
140
+ const callOptions = { ...options };
141
+ delete callOptions.callbacks;
142
+ delete callOptions.tags;
143
+ delete callOptions.metadata;
144
+ delete callOptions.runName;
145
+ delete callOptions.configurable;
146
+ delete callOptions.recursionLimit;
147
+ delete callOptions.maxConcurrency;
148
+ delete callOptions.runId;
149
+ delete callOptions.timeout;
150
+ delete callOptions.signal;
151
+ return [runnableConfig, callOptions];
152
+ }
153
+ async _callWithConfig(func, input, options) {
154
+ const config = ensureConfig(options);
155
+ const callbackManager_ = await getCallbackManagerForConfig(config);
156
+ const runManager = await callbackManager_?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), config.runId, config?.runType, void 0, void 0, config?.runName ?? this.getName());
157
+ delete config.runId;
158
+ let output;
159
+ try {
160
+ const promise = func.call(this, input, config, runManager);
161
+ output = await raceWithSignal(promise, options?.signal);
162
+ } catch (e) {
163
+ await runManager?.handleChainError(e);
164
+ throw e;
165
+ }
166
+ await runManager?.handleChainEnd(_coerceToDict(output, "output"));
167
+ return output;
168
+ }
169
+ /**
170
+ * Internal method that handles batching and configuration for a runnable
171
+ * It takes a function, input values, and optional configuration, and
172
+ * returns a promise that resolves to the output values.
173
+ * @param func The function to be executed for each input value.
174
+ * @param input The input values to be processed.
175
+ * @param config Optional configuration for the function execution.
176
+ * @returns A promise that resolves to the output values.
177
+ */
178
+ async _batchWithConfig(func, inputs, options, batchOptions) {
179
+ const optionsList = this._getOptionsList(options ?? {}, inputs.length);
180
+ const callbackManagers = await Promise.all(optionsList.map(getCallbackManagerForConfig));
181
+ const runManagers = await Promise.all(callbackManagers.map(async (callbackManager, i) => {
182
+ const handleStartRes = await callbackManager?.handleChainStart(this.toJSON(), _coerceToDict(inputs[i], "input"), optionsList[i].runId, optionsList[i].runType, void 0, void 0, optionsList[i].runName ?? this.getName());
183
+ delete optionsList[i].runId;
184
+ return handleStartRes;
185
+ }));
186
+ let outputs;
187
+ try {
188
+ const promise = func.call(this, inputs, optionsList, runManagers, batchOptions);
189
+ outputs = await raceWithSignal(promise, optionsList?.[0]?.signal);
190
+ } catch (e) {
191
+ await Promise.all(runManagers.map((runManager) => runManager?.handleChainError(e)));
192
+ throw e;
193
+ }
194
+ await Promise.all(runManagers.map((runManager) => runManager?.handleChainEnd(_coerceToDict(outputs, "output"))));
195
+ return outputs;
196
+ }
197
+ /** @internal */
198
+ _concatOutputChunks(first, second) {
199
+ return concat(first, second);
200
+ }
201
+ /**
202
+ * Helper method to transform an Iterator of Input values into an Iterator of
203
+ * Output values, with callbacks.
204
+ * Use this to implement `stream()` or `transform()` in Runnable subclasses.
205
+ */
206
+ async *_transformStreamWithConfig(inputGenerator, transformer, options) {
207
+ let finalInput;
208
+ let finalInputSupported = true;
209
+ let finalOutput;
210
+ let finalOutputSupported = true;
211
+ const config = ensureConfig(options);
212
+ const callbackManager_ = await getCallbackManagerForConfig(config);
213
+ const outerThis = this;
214
+ async function* wrapInputForTracing() {
215
+ for await (const chunk of inputGenerator) {
216
+ if (finalInputSupported) if (finalInput === void 0) finalInput = chunk;
217
+ else try {
218
+ finalInput = outerThis._concatOutputChunks(finalInput, chunk);
219
+ } catch {
220
+ finalInput = void 0;
221
+ finalInputSupported = false;
222
+ }
223
+ yield chunk;
224
+ }
225
+ }
226
+ let runManager;
227
+ try {
228
+ const pipe = await pipeGeneratorWithSetup(transformer.bind(this), wrapInputForTracing(), async () => callbackManager_?.handleChainStart(this.toJSON(), { input: "" }, config.runId, config.runType, void 0, void 0, config.runName ?? this.getName(), void 0, { lc_defers_inputs: true }), options?.signal, config);
229
+ delete config.runId;
230
+ runManager = pipe.setup;
231
+ const streamEventsHandler = runManager?.handlers.find(isStreamEventsHandler);
232
+ let iterator = pipe.output;
233
+ if (streamEventsHandler !== void 0 && runManager !== void 0) iterator = streamEventsHandler.tapOutputIterable(runManager.runId, iterator);
234
+ const streamLogHandler = runManager?.handlers.find(isLogStreamHandler);
235
+ if (streamLogHandler !== void 0 && runManager !== void 0) iterator = streamLogHandler.tapOutputIterable(runManager.runId, iterator);
236
+ for await (const chunk of iterator) {
237
+ yield chunk;
238
+ if (finalOutputSupported) if (finalOutput === void 0) finalOutput = chunk;
239
+ else try {
240
+ finalOutput = this._concatOutputChunks(finalOutput, chunk);
241
+ } catch {
242
+ finalOutput = void 0;
243
+ finalOutputSupported = false;
244
+ }
245
+ }
246
+ } catch (e) {
247
+ await runManager?.handleChainError(e, void 0, void 0, void 0, { inputs: _coerceToDict(finalInput, "input") });
248
+ throw e;
249
+ }
250
+ await runManager?.handleChainEnd(finalOutput ?? {}, void 0, void 0, void 0, { inputs: _coerceToDict(finalInput, "input") });
251
+ }
252
+ getGraph(_) {
253
+ const graph = new Graph();
254
+ const inputNode = graph.addNode({
255
+ name: `${this.getName()}Input`,
256
+ schema: anyType()
257
+ });
258
+ const runnableNode = graph.addNode(this);
259
+ const outputNode = graph.addNode({
260
+ name: `${this.getName()}Output`,
261
+ schema: anyType()
262
+ });
263
+ graph.addEdge(inputNode, runnableNode);
264
+ graph.addEdge(runnableNode, outputNode);
265
+ return graph;
266
+ }
267
+ /**
268
+ * Create a new runnable sequence that runs each individual runnable in series,
269
+ * piping the output of one runnable into another runnable or runnable-like.
270
+ * @param coerceable A runnable, function, or object whose values are functions or runnables.
271
+ * @returns A new runnable sequence.
272
+ */
273
+ pipe(coerceable) {
274
+ return new RunnableSequence({
275
+ first: this,
276
+ last: _coerceToRunnable(coerceable)
277
+ });
278
+ }
279
+ /**
280
+ * Pick keys from the dict output of this runnable. Returns a new runnable.
281
+ */
282
+ pick(keys) {
283
+ return this.pipe(new RunnablePick(keys));
284
+ }
285
+ /**
286
+ * Assigns new fields to the dict output of this runnable. Returns a new runnable.
287
+ */
288
+ assign(mapping) {
289
+ return this.pipe(new RunnableAssign(new RunnableMap({ steps: mapping })));
290
+ }
291
+ /**
292
+ * Default implementation of transform, which buffers input and then calls stream.
293
+ * Subclasses should override this method if they can start producing output while
294
+ * input is still being generated.
295
+ * @param generator
296
+ * @param options
297
+ */
298
+ async *transform(generator, options) {
299
+ let finalChunk;
300
+ for await (const chunk of generator) if (finalChunk === void 0) finalChunk = chunk;
301
+ else finalChunk = this._concatOutputChunks(finalChunk, chunk);
302
+ yield* this._streamIterator(finalChunk, ensureConfig(options));
303
+ }
304
+ /**
305
+ * Stream all output from a runnable, as reported to the callback system.
306
+ * This includes all inner runs of LLMs, Retrievers, Tools, etc.
307
+ * Output is streamed as Log objects, which include a list of
308
+ * jsonpatch ops that describe how the state of the run has changed in each
309
+ * step, and the final state of the run.
310
+ * The jsonpatch ops can be applied in order to construct state.
311
+ * @param input
312
+ * @param options
313
+ * @param streamOptions
314
+ */
315
+ async *streamLog(input, options, streamOptions) {
316
+ const logStreamCallbackHandler = new LogStreamCallbackHandler({
317
+ ...streamOptions,
318
+ autoClose: false,
319
+ _schemaFormat: "original"
320
+ });
321
+ const config = ensureConfig(options);
322
+ yield* this._streamLog(input, logStreamCallbackHandler, config);
323
+ }
324
+ async *_streamLog(input, logStreamCallbackHandler, config) {
325
+ const { callbacks } = config;
326
+ if (callbacks === void 0) config.callbacks = [logStreamCallbackHandler];
327
+ else if (Array.isArray(callbacks)) config.callbacks = callbacks.concat([logStreamCallbackHandler]);
328
+ else {
329
+ const copiedCallbacks = callbacks.copy();
330
+ copiedCallbacks.addHandler(logStreamCallbackHandler, true);
331
+ config.callbacks = copiedCallbacks;
332
+ }
333
+ const runnableStreamPromise = this.stream(input, config);
334
+ async function consumeRunnableStream() {
335
+ try {
336
+ const runnableStream = await runnableStreamPromise;
337
+ for await (const chunk of runnableStream) {
338
+ const patch = new RunLogPatch({ ops: [{
339
+ op: "add",
340
+ path: "/streamed_output/-",
341
+ value: chunk
342
+ }] });
343
+ await logStreamCallbackHandler.writer.write(patch);
344
+ }
345
+ } finally {
346
+ await logStreamCallbackHandler.writer.close();
347
+ }
348
+ }
349
+ const runnableStreamConsumePromise = consumeRunnableStream();
350
+ try {
351
+ for await (const log of logStreamCallbackHandler) yield log;
352
+ } finally {
353
+ await runnableStreamConsumePromise;
354
+ }
355
+ }
356
+ streamEvents(input, options, streamOptions) {
357
+ let stream;
358
+ if (options.version === "v1") stream = this._streamEventsV1(input, options, streamOptions);
359
+ else if (options.version === "v2") stream = this._streamEventsV2(input, options, streamOptions);
360
+ else throw new Error(`Only versions "v1" and "v2" of the schema are currently supported.`);
361
+ if (options.encoding === "text/event-stream") return convertToHttpEventStream(stream);
362
+ else return IterableReadableStream.fromAsyncGenerator(stream);
363
+ }
364
+ async *_streamEventsV2(input, options, streamOptions) {
365
+ const eventStreamer = new EventStreamCallbackHandler({
366
+ ...streamOptions,
367
+ autoClose: false
368
+ });
369
+ const config = ensureConfig(options);
370
+ const runId = config.runId ?? v4();
371
+ config.runId = runId;
372
+ const callbacks = config.callbacks;
373
+ if (callbacks === void 0) config.callbacks = [eventStreamer];
374
+ else if (Array.isArray(callbacks)) config.callbacks = callbacks.concat(eventStreamer);
375
+ else {
376
+ const copiedCallbacks = callbacks.copy();
377
+ copiedCallbacks.addHandler(eventStreamer, true);
378
+ config.callbacks = copiedCallbacks;
379
+ }
380
+ const abortController = new AbortController();
381
+ const outerThis = this;
382
+ async function consumeRunnableStream() {
383
+ let signal;
384
+ let listener = null;
385
+ try {
386
+ if (options?.signal) if ("any" in AbortSignal) signal = AbortSignal.any([abortController.signal, options.signal]);
387
+ else {
388
+ signal = options.signal;
389
+ listener = () => {
390
+ abortController.abort();
391
+ };
392
+ options.signal.addEventListener("abort", listener, { once: true });
393
+ }
394
+ else signal = abortController.signal;
395
+ const runnableStream = await outerThis.stream(input, {
396
+ ...config,
397
+ signal
398
+ });
399
+ const tappedStream = eventStreamer.tapOutputIterable(runId, runnableStream);
400
+ for await (const _ of tappedStream) if (abortController.signal.aborted) break;
401
+ } finally {
402
+ await eventStreamer.finish();
403
+ if (signal && listener) signal.removeEventListener("abort", listener);
404
+ }
405
+ }
406
+ const runnableStreamConsumePromise = consumeRunnableStream();
407
+ let firstEventSent = false;
408
+ let firstEventRunId;
409
+ try {
410
+ for await (const event of eventStreamer) {
411
+ if (!firstEventSent) {
412
+ event.data.input = input;
413
+ firstEventSent = true;
414
+ firstEventRunId = event.run_id;
415
+ yield event;
416
+ continue;
417
+ }
418
+ if (event.run_id === firstEventRunId && event.event.endsWith("_end")) {
419
+ if (event.data?.input) delete event.data.input;
420
+ }
421
+ yield event;
422
+ }
423
+ } finally {
424
+ abortController.abort();
425
+ await runnableStreamConsumePromise;
426
+ }
427
+ }
428
+ async *_streamEventsV1(input, options, streamOptions) {
429
+ let runLog;
430
+ let hasEncounteredStartEvent = false;
431
+ const config = ensureConfig(options);
432
+ const rootTags = config.tags ?? [];
433
+ const rootMetadata = config.metadata ?? {};
434
+ const rootName = config.runName ?? this.getName();
435
+ const logStreamCallbackHandler = new LogStreamCallbackHandler({
436
+ ...streamOptions,
437
+ autoClose: false,
438
+ _schemaFormat: "streaming_events"
439
+ });
440
+ const rootEventFilter = new _RootEventFilter({ ...streamOptions });
441
+ const logStream = this._streamLog(input, logStreamCallbackHandler, config);
442
+ for await (const log of logStream) {
443
+ if (!runLog) runLog = RunLog.fromRunLogPatch(log);
444
+ else runLog = runLog.concat(log);
445
+ if (runLog.state === void 0) throw new Error(`Internal error: "streamEvents" state is missing. Please open a bug report.`);
446
+ if (!hasEncounteredStartEvent) {
447
+ hasEncounteredStartEvent = true;
448
+ const state$2 = { ...runLog.state };
449
+ const event = {
450
+ run_id: state$2.id,
451
+ event: `on_${state$2.type}_start`,
452
+ name: rootName,
453
+ tags: rootTags,
454
+ metadata: rootMetadata,
455
+ data: { input }
456
+ };
457
+ if (rootEventFilter.includeEvent(event, state$2.type)) yield event;
458
+ }
459
+ const paths = log.ops.filter((op) => op.path.startsWith("/logs/")).map((op) => op.path.split("/")[2]);
460
+ const dedupedPaths = [...new Set(paths)];
461
+ for (const path of dedupedPaths) {
462
+ let eventType;
463
+ let data = {};
464
+ const logEntry = runLog.state.logs[path];
465
+ if (logEntry.end_time === void 0) if (logEntry.streamed_output.length > 0) eventType = "stream";
466
+ else eventType = "start";
467
+ else eventType = "end";
468
+ if (eventType === "start") {
469
+ if (logEntry.inputs !== void 0) data.input = logEntry.inputs;
470
+ } else if (eventType === "end") {
471
+ if (logEntry.inputs !== void 0) data.input = logEntry.inputs;
472
+ data.output = logEntry.final_output;
473
+ } else if (eventType === "stream") {
474
+ const chunkCount = logEntry.streamed_output.length;
475
+ if (chunkCount !== 1) throw new Error(`Expected exactly one chunk of streamed output, got ${chunkCount} instead. Encountered in: "${logEntry.name}"`);
476
+ data = { chunk: logEntry.streamed_output[0] };
477
+ logEntry.streamed_output = [];
478
+ }
479
+ yield {
480
+ event: `on_${logEntry.type}_${eventType}`,
481
+ name: logEntry.name,
482
+ run_id: logEntry.id,
483
+ tags: logEntry.tags,
484
+ metadata: logEntry.metadata,
485
+ data
486
+ };
487
+ }
488
+ const { state: state$1 } = runLog;
489
+ if (state$1.streamed_output.length > 0) {
490
+ const chunkCount = state$1.streamed_output.length;
491
+ if (chunkCount !== 1) throw new Error(`Expected exactly one chunk of streamed output, got ${chunkCount} instead. Encountered in: "${state$1.name}"`);
492
+ const data = { chunk: state$1.streamed_output[0] };
493
+ state$1.streamed_output = [];
494
+ const event = {
495
+ event: `on_${state$1.type}_stream`,
496
+ run_id: state$1.id,
497
+ tags: rootTags,
498
+ metadata: rootMetadata,
499
+ name: rootName,
500
+ data
501
+ };
502
+ if (rootEventFilter.includeEvent(event, state$1.type)) yield event;
503
+ }
504
+ }
505
+ const state = runLog?.state;
506
+ if (state !== void 0) {
507
+ const event = {
508
+ event: `on_${state.type}_end`,
509
+ name: rootName,
510
+ run_id: state.id,
511
+ tags: rootTags,
512
+ metadata: rootMetadata,
513
+ data: { output: state.final_output }
514
+ };
515
+ if (rootEventFilter.includeEvent(event, state.type)) yield event;
516
+ }
517
+ }
518
+ static isRunnable(thing) {
519
+ return isRunnableInterface(thing);
520
+ }
521
+ /**
522
+ * Bind lifecycle listeners to a Runnable, returning a new Runnable.
523
+ * The Run object contains information about the run, including its id,
524
+ * type, input, output, error, startTime, endTime, and any tags or metadata
525
+ * added to the run.
526
+ *
527
+ * @param {Object} params - The object containing the callback functions.
528
+ * @param {(run: Run) => void} params.onStart - Called before the runnable starts running, with the Run object.
529
+ * @param {(run: Run) => void} params.onEnd - Called after the runnable finishes running, with the Run object.
530
+ * @param {(run: Run) => void} params.onError - Called if the runnable throws an error, with the Run object.
531
+ */
532
+ withListeners({ onStart, onEnd, onError }) {
533
+ return new RunnableBinding({
534
+ bound: this,
535
+ config: {},
536
+ configFactories: [(config) => ({ callbacks: [new RootListenersTracer({
537
+ config,
538
+ onStart,
539
+ onEnd,
540
+ onError
541
+ })] })]
542
+ });
543
+ }
544
+ /**
545
+ * Convert a runnable to a tool. Return a new instance of `RunnableToolLike`
546
+ * which contains the runnable, name, description and schema.
547
+ *
548
+ * @template {T extends RunInput = RunInput} RunInput - The input type of the runnable. Should be the same as the `RunInput` type of the runnable.
549
+ *
550
+ * @param fields
551
+ * @param {string | undefined} [fields.name] The name of the tool. If not provided, it will default to the name of the runnable.
552
+ * @param {string | undefined} [fields.description] The description of the tool. Falls back to the description on the Zod schema if not provided, or undefined if neither are provided.
553
+ * @param {z.ZodType<T>} [fields.schema] The Zod schema for the input of the tool. Infers the Zod type from the input type of the runnable.
554
+ * @returns {RunnableToolLike<z.ZodType<T>, RunOutput>} An instance of `RunnableToolLike` which is a runnable that can be used as a tool.
555
+ */
556
+ asTool(fields) {
557
+ return convertRunnableToTool(this, fields);
558
+ }
559
+ };
560
+ var RunnableBinding = class RunnableBinding2 extends Runnable {
561
+ static lc_name() {
562
+ return "RunnableBinding";
563
+ }
564
+ lc_namespace = ["langchain_core", "runnables"];
565
+ lc_serializable = true;
566
+ bound;
567
+ config;
568
+ kwargs;
569
+ configFactories;
570
+ constructor(fields) {
571
+ super(fields);
572
+ this.bound = fields.bound;
573
+ this.kwargs = fields.kwargs;
574
+ this.config = fields.config;
575
+ this.configFactories = fields.configFactories;
576
+ }
577
+ getName(suffix) {
578
+ return this.bound.getName(suffix);
579
+ }
580
+ async _mergeConfig(...options) {
581
+ const config = mergeConfigs(this.config, ...options);
582
+ return mergeConfigs(config, ...this.configFactories ? await Promise.all(this.configFactories.map(async (configFactory) => await configFactory(config))) : []);
583
+ }
584
+ withConfig(config) {
585
+ return new this.constructor({
586
+ bound: this.bound,
587
+ kwargs: this.kwargs,
588
+ config: {
589
+ ...this.config,
590
+ ...config
591
+ }
592
+ });
593
+ }
594
+ withRetry(fields) {
595
+ return new RunnableRetry({
596
+ bound: this.bound,
597
+ kwargs: this.kwargs,
598
+ config: this.config,
599
+ maxAttemptNumber: fields?.stopAfterAttempt,
600
+ ...fields
601
+ });
602
+ }
603
+ async invoke(input, options) {
604
+ return this.bound.invoke(input, await this._mergeConfig(options, this.kwargs));
605
+ }
606
+ async batch(inputs, options, batchOptions) {
607
+ const mergedOptions = Array.isArray(options) ? await Promise.all(options.map(async (individualOption) => this._mergeConfig(ensureConfig(individualOption), this.kwargs))) : await this._mergeConfig(ensureConfig(options), this.kwargs);
608
+ return this.bound.batch(inputs, mergedOptions, batchOptions);
609
+ }
610
+ /** @internal */
611
+ _concatOutputChunks(first, second) {
612
+ return this.bound._concatOutputChunks(first, second);
613
+ }
614
+ async *_streamIterator(input, options) {
615
+ yield* this.bound._streamIterator(input, await this._mergeConfig(ensureConfig(options), this.kwargs));
616
+ }
617
+ async stream(input, options) {
618
+ return this.bound.stream(input, await this._mergeConfig(ensureConfig(options), this.kwargs));
619
+ }
620
+ async *transform(generator, options) {
621
+ yield* this.bound.transform(generator, await this._mergeConfig(ensureConfig(options), this.kwargs));
622
+ }
623
+ streamEvents(input, options, streamOptions) {
624
+ const outerThis = this;
625
+ const generator = async function* () {
626
+ yield* outerThis.bound.streamEvents(input, {
627
+ ...await outerThis._mergeConfig(ensureConfig(options), outerThis.kwargs),
628
+ version: options.version
629
+ }, streamOptions);
630
+ };
631
+ return IterableReadableStream.fromAsyncGenerator(generator());
632
+ }
633
+ static isRunnableBinding(thing) {
634
+ return thing.bound && Runnable.isRunnable(thing.bound);
635
+ }
636
+ /**
637
+ * Bind lifecycle listeners to a Runnable, returning a new Runnable.
638
+ * The Run object contains information about the run, including its id,
639
+ * type, input, output, error, startTime, endTime, and any tags or metadata
640
+ * added to the run.
641
+ *
642
+ * @param {Object} params - The object containing the callback functions.
643
+ * @param {(run: Run) => void} params.onStart - Called before the runnable starts running, with the Run object.
644
+ * @param {(run: Run) => void} params.onEnd - Called after the runnable finishes running, with the Run object.
645
+ * @param {(run: Run) => void} params.onError - Called if the runnable throws an error, with the Run object.
646
+ */
647
+ withListeners({ onStart, onEnd, onError }) {
648
+ return new RunnableBinding2({
649
+ bound: this.bound,
650
+ kwargs: this.kwargs,
651
+ config: this.config,
652
+ configFactories: [(config) => ({ callbacks: [new RootListenersTracer({
653
+ config,
654
+ onStart,
655
+ onEnd,
656
+ onError
657
+ })] })]
658
+ });
659
+ }
660
+ };
661
+ var RunnableRetry = class extends RunnableBinding {
662
+ static lc_name() {
663
+ return "RunnableRetry";
664
+ }
665
+ lc_namespace = ["langchain_core", "runnables"];
666
+ maxAttemptNumber = 3;
667
+ onFailedAttempt = () => {
668
+ };
669
+ constructor(fields) {
670
+ super(fields);
671
+ this.maxAttemptNumber = fields.maxAttemptNumber ?? this.maxAttemptNumber;
672
+ this.onFailedAttempt = fields.onFailedAttempt ?? this.onFailedAttempt;
673
+ }
674
+ _patchConfigForRetry(attempt, config, runManager) {
675
+ const tag = attempt > 1 ? `retry:attempt:${attempt}` : void 0;
676
+ return patchConfig(config, { callbacks: runManager?.getChild(tag) });
677
+ }
678
+ async _invoke(input, config, runManager) {
679
+ return pRetry((attemptNumber) => super.invoke(input, this._patchConfigForRetry(attemptNumber, config, runManager)), {
680
+ onFailedAttempt: ({ error }) => this.onFailedAttempt(error, input),
681
+ retries: Math.max(this.maxAttemptNumber - 1, 0),
682
+ randomize: true
683
+ });
684
+ }
685
+ /**
686
+ * Method that invokes the runnable with the specified input, run manager,
687
+ * and config. It handles the retry logic by catching any errors and
688
+ * recursively invoking itself with the updated config for the next retry
689
+ * attempt.
690
+ * @param input The input for the runnable.
691
+ * @param runManager The run manager for the runnable.
692
+ * @param config The config for the runnable.
693
+ * @returns A promise that resolves to the output of the runnable.
694
+ */
695
+ async invoke(input, config) {
696
+ return this._callWithConfig(this._invoke.bind(this), input, config);
697
+ }
698
+ async _batch(inputs, configs, runManagers, batchOptions) {
699
+ const resultsMap = {};
700
+ try {
701
+ await pRetry(async (attemptNumber) => {
702
+ const remainingIndexes = inputs.map((_, i) => i).filter((i) => resultsMap[i.toString()] === void 0 || resultsMap[i.toString()] instanceof Error);
703
+ const remainingInputs = remainingIndexes.map((i) => inputs[i]);
704
+ const patchedConfigs = remainingIndexes.map((i) => this._patchConfigForRetry(attemptNumber, configs?.[i], runManagers?.[i]));
705
+ const results = await super.batch(remainingInputs, patchedConfigs, {
706
+ ...batchOptions,
707
+ returnExceptions: true
708
+ });
709
+ let firstException;
710
+ for (let i = 0; i < results.length; i += 1) {
711
+ const result = results[i];
712
+ const resultMapIndex = remainingIndexes[i];
713
+ if (result instanceof Error) {
714
+ if (firstException === void 0) {
715
+ firstException = result;
716
+ firstException.input = remainingInputs[i];
717
+ }
718
+ }
719
+ resultsMap[resultMapIndex.toString()] = result;
720
+ }
721
+ if (firstException) throw firstException;
722
+ return results;
723
+ }, {
724
+ onFailedAttempt: ({ error }) => this.onFailedAttempt(error, error.input),
725
+ retries: Math.max(this.maxAttemptNumber - 1, 0),
726
+ randomize: true
727
+ });
728
+ } catch (e) {
729
+ if (batchOptions?.returnExceptions !== true) throw e;
730
+ }
731
+ return Object.keys(resultsMap).sort((a, b) => parseInt(a, 10) - parseInt(b, 10)).map((key) => resultsMap[parseInt(key, 10)]);
732
+ }
733
+ async batch(inputs, options, batchOptions) {
734
+ return this._batchWithConfig(this._batch.bind(this), inputs, options, batchOptions);
735
+ }
736
+ };
737
+ var RunnableSequence = class RunnableSequence2 extends Runnable {
738
+ static lc_name() {
739
+ return "RunnableSequence";
740
+ }
741
+ first;
742
+ middle = [];
743
+ last;
744
+ omitSequenceTags = false;
745
+ lc_serializable = true;
746
+ lc_namespace = ["langchain_core", "runnables"];
747
+ constructor(fields) {
748
+ super(fields);
749
+ this.first = fields.first;
750
+ this.middle = fields.middle ?? this.middle;
751
+ this.last = fields.last;
752
+ this.name = fields.name;
753
+ this.omitSequenceTags = fields.omitSequenceTags ?? this.omitSequenceTags;
754
+ }
755
+ get steps() {
756
+ return [
757
+ this.first,
758
+ ...this.middle,
759
+ this.last
760
+ ];
761
+ }
762
+ async invoke(input, options) {
763
+ const config = ensureConfig(options);
764
+ const callbackManager_ = await getCallbackManagerForConfig(config);
765
+ const runManager = await callbackManager_?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), config.runId, void 0, void 0, void 0, config?.runName);
766
+ delete config.runId;
767
+ let nextStepInput = input;
768
+ let finalOutput;
769
+ try {
770
+ const initialSteps = [this.first, ...this.middle];
771
+ for (let i = 0; i < initialSteps.length; i += 1) {
772
+ const step = initialSteps[i];
773
+ const promise = step.invoke(nextStepInput, patchConfig(config, { callbacks: runManager?.getChild(this.omitSequenceTags ? void 0 : `seq:step:${i + 1}`) }));
774
+ nextStepInput = await raceWithSignal(promise, options?.signal);
775
+ }
776
+ if (options?.signal?.aborted) throw getAbortSignalError(options.signal);
777
+ finalOutput = await this.last.invoke(nextStepInput, patchConfig(config, { callbacks: runManager?.getChild(this.omitSequenceTags ? void 0 : `seq:step:${this.steps.length}`) }));
778
+ } catch (e) {
779
+ await runManager?.handleChainError(e);
780
+ throw e;
781
+ }
782
+ await runManager?.handleChainEnd(_coerceToDict(finalOutput, "output"));
783
+ return finalOutput;
784
+ }
785
+ async batch(inputs, options, batchOptions) {
786
+ const configList = this._getOptionsList(options ?? {}, inputs.length);
787
+ const callbackManagers = await Promise.all(configList.map(getCallbackManagerForConfig));
788
+ const runManagers = await Promise.all(callbackManagers.map(async (callbackManager, i) => {
789
+ const handleStartRes = await callbackManager?.handleChainStart(this.toJSON(), _coerceToDict(inputs[i], "input"), configList[i].runId, void 0, void 0, void 0, configList[i].runName);
790
+ delete configList[i].runId;
791
+ return handleStartRes;
792
+ }));
793
+ let nextStepInputs = inputs;
794
+ try {
795
+ for (let i = 0; i < this.steps.length; i += 1) {
796
+ const step = this.steps[i];
797
+ const promise = step.batch(nextStepInputs, runManagers.map((runManager, j) => {
798
+ const childRunManager = runManager?.getChild(this.omitSequenceTags ? void 0 : `seq:step:${i + 1}`);
799
+ return patchConfig(configList[j], { callbacks: childRunManager });
800
+ }), batchOptions);
801
+ nextStepInputs = await raceWithSignal(promise, configList[0]?.signal);
802
+ }
803
+ } catch (e) {
804
+ await Promise.all(runManagers.map((runManager) => runManager?.handleChainError(e)));
805
+ throw e;
806
+ }
807
+ await Promise.all(runManagers.map((runManager) => runManager?.handleChainEnd(_coerceToDict(nextStepInputs, "output"))));
808
+ return nextStepInputs;
809
+ }
810
+ /** @internal */
811
+ _concatOutputChunks(first, second) {
812
+ return this.last._concatOutputChunks(first, second);
813
+ }
814
+ async *_streamIterator(input, options) {
815
+ const callbackManager_ = await getCallbackManagerForConfig(options);
816
+ const { runId, ...otherOptions } = options ?? {};
817
+ const runManager = await callbackManager_?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), runId, void 0, void 0, void 0, otherOptions?.runName);
818
+ const steps = [
819
+ this.first,
820
+ ...this.middle,
821
+ this.last
822
+ ];
823
+ let concatSupported = true;
824
+ let finalOutput;
825
+ async function* inputGenerator() {
826
+ yield input;
827
+ }
828
+ try {
829
+ let finalGenerator = steps[0].transform(inputGenerator(), patchConfig(otherOptions, { callbacks: runManager?.getChild(this.omitSequenceTags ? void 0 : `seq:step:1`) }));
830
+ for (let i = 1; i < steps.length; i += 1) {
831
+ const step = steps[i];
832
+ finalGenerator = await step.transform(finalGenerator, patchConfig(otherOptions, { callbacks: runManager?.getChild(this.omitSequenceTags ? void 0 : `seq:step:${i + 1}`) }));
833
+ }
834
+ for await (const chunk of finalGenerator) {
835
+ options?.signal?.throwIfAborted();
836
+ yield chunk;
837
+ if (concatSupported) if (finalOutput === void 0) finalOutput = chunk;
838
+ else try {
839
+ finalOutput = this._concatOutputChunks(finalOutput, chunk);
840
+ } catch {
841
+ finalOutput = void 0;
842
+ concatSupported = false;
843
+ }
844
+ }
845
+ } catch (e) {
846
+ await runManager?.handleChainError(e);
847
+ throw e;
848
+ }
849
+ await runManager?.handleChainEnd(_coerceToDict(finalOutput, "output"));
850
+ }
851
+ getGraph(config) {
852
+ const graph = new Graph();
853
+ let currentLastNode = null;
854
+ this.steps.forEach((step, index) => {
855
+ const stepGraph = step.getGraph(config);
856
+ if (index !== 0) stepGraph.trimFirstNode();
857
+ if (index !== this.steps.length - 1) stepGraph.trimLastNode();
858
+ graph.extend(stepGraph);
859
+ const stepFirstNode = stepGraph.firstNode();
860
+ if (!stepFirstNode) throw new Error(`Runnable ${step} has no first node`);
861
+ if (currentLastNode) graph.addEdge(currentLastNode, stepFirstNode);
862
+ currentLastNode = stepGraph.lastNode();
863
+ });
864
+ return graph;
865
+ }
866
+ pipe(coerceable) {
867
+ if (RunnableSequence2.isRunnableSequence(coerceable)) return new RunnableSequence2({
868
+ first: this.first,
869
+ middle: this.middle.concat([
870
+ this.last,
871
+ coerceable.first,
872
+ ...coerceable.middle
873
+ ]),
874
+ last: coerceable.last,
875
+ name: this.name ?? coerceable.name
876
+ });
877
+ else return new RunnableSequence2({
878
+ first: this.first,
879
+ middle: [...this.middle, this.last],
880
+ last: _coerceToRunnable(coerceable),
881
+ name: this.name
882
+ });
883
+ }
884
+ static isRunnableSequence(thing) {
885
+ return Array.isArray(thing.middle) && Runnable.isRunnable(thing);
886
+ }
887
+ static from([first, ...runnables], nameOrFields) {
888
+ let extra = {};
889
+ if (typeof nameOrFields === "string") extra.name = nameOrFields;
890
+ else if (nameOrFields !== void 0) extra = nameOrFields;
891
+ return new RunnableSequence2({
892
+ ...extra,
893
+ first: _coerceToRunnable(first),
894
+ middle: runnables.slice(0, -1).map(_coerceToRunnable),
895
+ last: _coerceToRunnable(runnables[runnables.length - 1])
896
+ });
897
+ }
898
+ };
899
+ var RunnableMap = class RunnableMap2 extends Runnable {
900
+ static lc_name() {
901
+ return "RunnableMap";
902
+ }
903
+ lc_namespace = ["langchain_core", "runnables"];
904
+ lc_serializable = true;
905
+ steps;
906
+ getStepsKeys() {
907
+ return Object.keys(this.steps);
908
+ }
909
+ constructor(fields) {
910
+ super(fields);
911
+ this.steps = {};
912
+ for (const [key, value] of Object.entries(fields.steps)) this.steps[key] = _coerceToRunnable(value);
913
+ }
914
+ static from(steps) {
915
+ return new RunnableMap2({ steps });
916
+ }
917
+ async invoke(input, options) {
918
+ const config = ensureConfig(options);
919
+ const callbackManager_ = await getCallbackManagerForConfig(config);
920
+ const runManager = await callbackManager_?.handleChainStart(this.toJSON(), { input }, config.runId, void 0, void 0, void 0, config?.runName);
921
+ delete config.runId;
922
+ const output = {};
923
+ try {
924
+ const promises = Object.entries(this.steps).map(async ([key, runnable]) => {
925
+ output[key] = await runnable.invoke(input, patchConfig(config, { callbacks: runManager?.getChild(`map:key:${key}`) }));
926
+ });
927
+ await raceWithSignal(Promise.all(promises), options?.signal);
928
+ } catch (e) {
929
+ await runManager?.handleChainError(e);
930
+ throw e;
931
+ }
932
+ await runManager?.handleChainEnd(output);
933
+ return output;
934
+ }
935
+ async *_transform(generator, runManager, options) {
936
+ const steps = { ...this.steps };
937
+ const inputCopies = atee(generator, Object.keys(steps).length);
938
+ const tasks = new Map(Object.entries(steps).map(([key, runnable], i) => {
939
+ const gen = runnable.transform(inputCopies[i], patchConfig(options, { callbacks: runManager?.getChild(`map:key:${key}`) }));
940
+ return [key, gen.next().then((result) => ({
941
+ key,
942
+ gen,
943
+ result
944
+ }))];
945
+ }));
946
+ while (tasks.size) {
947
+ const promise = Promise.race(tasks.values());
948
+ const { key, result, gen } = await raceWithSignal(promise, options?.signal);
949
+ tasks.delete(key);
950
+ if (!result.done) {
951
+ yield { [key]: result.value };
952
+ tasks.set(key, gen.next().then((result$1) => ({
953
+ key,
954
+ gen,
955
+ result: result$1
956
+ })));
957
+ }
958
+ }
959
+ }
960
+ transform(generator, options) {
961
+ return this._transformStreamWithConfig(generator, this._transform.bind(this), options);
962
+ }
963
+ async stream(input, options) {
964
+ async function* generator() {
965
+ yield input;
966
+ }
967
+ const config = ensureConfig(options);
968
+ const wrappedGenerator = new AsyncGeneratorWithSetup({
969
+ generator: this.transform(generator(), config),
970
+ config
971
+ });
972
+ await wrappedGenerator.setup;
973
+ return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
974
+ }
975
+ };
976
+ var RunnableTraceable = class RunnableTraceable2 extends Runnable {
977
+ lc_serializable = false;
978
+ lc_namespace = ["langchain_core", "runnables"];
979
+ func;
980
+ constructor(fields) {
981
+ super(fields);
982
+ if (!isTraceableFunction(fields.func)) throw new Error("RunnableTraceable requires a function that is wrapped in traceable higher-order function");
983
+ this.func = fields.func;
984
+ }
985
+ async invoke(input, options) {
986
+ const [config] = this._getOptionsList(options ?? {}, 1);
987
+ const callbacks = await getCallbackManagerForConfig(config);
988
+ const promise = this.func(patchConfig(config, { callbacks }), input);
989
+ return raceWithSignal(promise, config?.signal);
990
+ }
991
+ async *_streamIterator(input, options) {
992
+ const [config] = this._getOptionsList(options ?? {}, 1);
993
+ const result = await this.invoke(input, options);
994
+ if (isAsyncIterable(result)) {
995
+ for await (const item of result) {
996
+ config?.signal?.throwIfAborted();
997
+ yield item;
998
+ }
999
+ return;
1000
+ }
1001
+ if (isIterator(result)) {
1002
+ while (true) {
1003
+ config?.signal?.throwIfAborted();
1004
+ const state = result.next();
1005
+ if (state.done) break;
1006
+ yield state.value;
1007
+ }
1008
+ return;
1009
+ }
1010
+ yield result;
1011
+ }
1012
+ static from(func) {
1013
+ return new RunnableTraceable2({ func });
1014
+ }
1015
+ };
1016
+ function assertNonTraceableFunction(func) {
1017
+ if (isTraceableFunction(func)) throw new Error("RunnableLambda requires a function that is not wrapped in traceable higher-order function. This shouldn't happen.");
1018
+ }
1019
+ var RunnableLambda = class RunnableLambda2 extends Runnable {
1020
+ static lc_name() {
1021
+ return "RunnableLambda";
1022
+ }
1023
+ lc_namespace = ["langchain_core", "runnables"];
1024
+ func;
1025
+ constructor(fields) {
1026
+ if (isTraceableFunction(fields.func)) return RunnableTraceable.from(fields.func);
1027
+ super(fields);
1028
+ assertNonTraceableFunction(fields.func);
1029
+ this.func = fields.func;
1030
+ }
1031
+ static from(func) {
1032
+ return new RunnableLambda2({ func });
1033
+ }
1034
+ async _invoke(input, config, runManager) {
1035
+ return new Promise((resolve, reject) => {
1036
+ const childConfig = patchConfig(config, {
1037
+ callbacks: runManager?.getChild(),
1038
+ recursionLimit: (config?.recursionLimit ?? DEFAULT_RECURSION_LIMIT) - 1
1039
+ });
1040
+ AsyncLocalStorageProviderSingleton.runWithConfig(pickRunnableConfigKeys(childConfig), async () => {
1041
+ try {
1042
+ let output = await this.func(input, { ...childConfig });
1043
+ if (output && Runnable.isRunnable(output)) {
1044
+ if (config?.recursionLimit === 0) throw new Error("Recursion limit reached.");
1045
+ output = await output.invoke(input, {
1046
+ ...childConfig,
1047
+ recursionLimit: (childConfig.recursionLimit ?? DEFAULT_RECURSION_LIMIT) - 1
1048
+ });
1049
+ } else if (isAsyncIterable(output)) {
1050
+ let finalOutput;
1051
+ for await (const chunk of consumeAsyncIterableInContext(childConfig, output)) {
1052
+ config?.signal?.throwIfAborted();
1053
+ if (finalOutput === void 0) finalOutput = chunk;
1054
+ else try {
1055
+ finalOutput = this._concatOutputChunks(finalOutput, chunk);
1056
+ } catch {
1057
+ finalOutput = chunk;
1058
+ }
1059
+ }
1060
+ output = finalOutput;
1061
+ } else if (isIterableIterator(output)) {
1062
+ let finalOutput;
1063
+ for (const chunk of consumeIteratorInContext(childConfig, output)) {
1064
+ config?.signal?.throwIfAborted();
1065
+ if (finalOutput === void 0) finalOutput = chunk;
1066
+ else try {
1067
+ finalOutput = this._concatOutputChunks(finalOutput, chunk);
1068
+ } catch {
1069
+ finalOutput = chunk;
1070
+ }
1071
+ }
1072
+ output = finalOutput;
1073
+ }
1074
+ resolve(output);
1075
+ } catch (e) {
1076
+ reject(e);
1077
+ }
1078
+ });
1079
+ });
1080
+ }
1081
+ async invoke(input, options) {
1082
+ return this._callWithConfig(this._invoke.bind(this), input, options);
1083
+ }
1084
+ async *_transform(generator, runManager, config) {
1085
+ let finalChunk;
1086
+ for await (const chunk of generator) if (finalChunk === void 0) finalChunk = chunk;
1087
+ else try {
1088
+ finalChunk = this._concatOutputChunks(finalChunk, chunk);
1089
+ } catch {
1090
+ finalChunk = chunk;
1091
+ }
1092
+ const childConfig = patchConfig(config, {
1093
+ callbacks: runManager?.getChild(),
1094
+ recursionLimit: (config?.recursionLimit ?? DEFAULT_RECURSION_LIMIT) - 1
1095
+ });
1096
+ const output = await new Promise((resolve, reject) => {
1097
+ AsyncLocalStorageProviderSingleton.runWithConfig(pickRunnableConfigKeys(childConfig), async () => {
1098
+ try {
1099
+ const res = await this.func(finalChunk, {
1100
+ ...childConfig,
1101
+ config: childConfig
1102
+ });
1103
+ resolve(res);
1104
+ } catch (e) {
1105
+ reject(e);
1106
+ }
1107
+ });
1108
+ });
1109
+ if (output && Runnable.isRunnable(output)) {
1110
+ if (config?.recursionLimit === 0) throw new Error("Recursion limit reached.");
1111
+ const stream = await output.stream(finalChunk, childConfig);
1112
+ for await (const chunk of stream) yield chunk;
1113
+ } else if (isAsyncIterable(output)) for await (const chunk of consumeAsyncIterableInContext(childConfig, output)) {
1114
+ config?.signal?.throwIfAborted();
1115
+ yield chunk;
1116
+ }
1117
+ else if (isIterableIterator(output)) for (const chunk of consumeIteratorInContext(childConfig, output)) {
1118
+ config?.signal?.throwIfAborted();
1119
+ yield chunk;
1120
+ }
1121
+ else yield output;
1122
+ }
1123
+ transform(generator, options) {
1124
+ return this._transformStreamWithConfig(generator, this._transform.bind(this), options);
1125
+ }
1126
+ async stream(input, options) {
1127
+ async function* generator() {
1128
+ yield input;
1129
+ }
1130
+ const config = ensureConfig(options);
1131
+ const wrappedGenerator = new AsyncGeneratorWithSetup({
1132
+ generator: this.transform(generator(), config),
1133
+ config
1134
+ });
1135
+ await wrappedGenerator.setup;
1136
+ return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
1137
+ }
1138
+ };
1139
+ var RunnableWithFallbacks = class extends Runnable {
1140
+ static lc_name() {
1141
+ return "RunnableWithFallbacks";
1142
+ }
1143
+ lc_namespace = ["langchain_core", "runnables"];
1144
+ lc_serializable = true;
1145
+ runnable;
1146
+ fallbacks;
1147
+ constructor(fields) {
1148
+ super(fields);
1149
+ this.runnable = fields.runnable;
1150
+ this.fallbacks = fields.fallbacks;
1151
+ }
1152
+ *runnables() {
1153
+ yield this.runnable;
1154
+ for (const fallback of this.fallbacks) yield fallback;
1155
+ }
1156
+ async invoke(input, options) {
1157
+ const config = ensureConfig(options);
1158
+ const callbackManager_ = await getCallbackManagerForConfig(config);
1159
+ const { runId, ...otherConfigFields } = config;
1160
+ const runManager = await callbackManager_?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), runId, void 0, void 0, void 0, otherConfigFields?.runName);
1161
+ const childConfig = patchConfig(otherConfigFields, { callbacks: runManager?.getChild() });
1162
+ const res = await AsyncLocalStorageProviderSingleton.runWithConfig(childConfig, async () => {
1163
+ let firstError;
1164
+ for (const runnable of this.runnables()) {
1165
+ config?.signal?.throwIfAborted();
1166
+ try {
1167
+ const output = await runnable.invoke(input, childConfig);
1168
+ await runManager?.handleChainEnd(_coerceToDict(output, "output"));
1169
+ return output;
1170
+ } catch (e) {
1171
+ if (firstError === void 0) firstError = e;
1172
+ }
1173
+ }
1174
+ if (firstError === void 0) throw new Error("No error stored at end of fallback.");
1175
+ await runManager?.handleChainError(firstError);
1176
+ throw firstError;
1177
+ });
1178
+ return res;
1179
+ }
1180
+ async *_streamIterator(input, options) {
1181
+ const config = ensureConfig(options);
1182
+ const callbackManager_ = await getCallbackManagerForConfig(config);
1183
+ const { runId, ...otherConfigFields } = config;
1184
+ const runManager = await callbackManager_?.handleChainStart(this.toJSON(), _coerceToDict(input, "input"), runId, void 0, void 0, void 0, otherConfigFields?.runName);
1185
+ let firstError;
1186
+ let stream;
1187
+ for (const runnable of this.runnables()) {
1188
+ config?.signal?.throwIfAborted();
1189
+ const childConfig = patchConfig(otherConfigFields, { callbacks: runManager?.getChild() });
1190
+ try {
1191
+ const originalStream = await runnable.stream(input, childConfig);
1192
+ stream = consumeAsyncIterableInContext(childConfig, originalStream);
1193
+ break;
1194
+ } catch (e) {
1195
+ if (firstError === void 0) firstError = e;
1196
+ }
1197
+ }
1198
+ if (stream === void 0) {
1199
+ const error = firstError ?? /* @__PURE__ */ new Error("No error stored at end of fallback.");
1200
+ await runManager?.handleChainError(error);
1201
+ throw error;
1202
+ }
1203
+ let output;
1204
+ try {
1205
+ for await (const chunk of stream) {
1206
+ yield chunk;
1207
+ try {
1208
+ output = output === void 0 ? output : this._concatOutputChunks(output, chunk);
1209
+ } catch {
1210
+ output = void 0;
1211
+ }
1212
+ }
1213
+ } catch (e) {
1214
+ await runManager?.handleChainError(e);
1215
+ throw e;
1216
+ }
1217
+ await runManager?.handleChainEnd(_coerceToDict(output, "output"));
1218
+ }
1219
+ async batch(inputs, options, batchOptions) {
1220
+ if (batchOptions?.returnExceptions) throw new Error("Not implemented.");
1221
+ const configList = this._getOptionsList(options ?? {}, inputs.length);
1222
+ const callbackManagers = await Promise.all(configList.map((config) => getCallbackManagerForConfig(config)));
1223
+ const runManagers = await Promise.all(callbackManagers.map(async (callbackManager, i) => {
1224
+ const handleStartRes = await callbackManager?.handleChainStart(this.toJSON(), _coerceToDict(inputs[i], "input"), configList[i].runId, void 0, void 0, void 0, configList[i].runName);
1225
+ delete configList[i].runId;
1226
+ return handleStartRes;
1227
+ }));
1228
+ let firstError;
1229
+ for (const runnable of this.runnables()) {
1230
+ configList[0].signal?.throwIfAborted();
1231
+ try {
1232
+ const outputs = await runnable.batch(inputs, runManagers.map((runManager, j) => patchConfig(configList[j], { callbacks: runManager?.getChild() })), batchOptions);
1233
+ await Promise.all(runManagers.map((runManager, i) => runManager?.handleChainEnd(_coerceToDict(outputs[i], "output"))));
1234
+ return outputs;
1235
+ } catch (e) {
1236
+ if (firstError === void 0) firstError = e;
1237
+ }
1238
+ }
1239
+ if (!firstError) throw new Error("No error stored at end of fallbacks.");
1240
+ await Promise.all(runManagers.map((runManager) => runManager?.handleChainError(firstError)));
1241
+ throw firstError;
1242
+ }
1243
+ };
1244
+ function _coerceToRunnable(coerceable) {
1245
+ if (typeof coerceable === "function") return new RunnableLambda({ func: coerceable });
1246
+ else if (Runnable.isRunnable(coerceable)) return coerceable;
1247
+ else if (!Array.isArray(coerceable) && typeof coerceable === "object") {
1248
+ const runnables = {};
1249
+ for (const [key, value] of Object.entries(coerceable)) runnables[key] = _coerceToRunnable(value);
1250
+ return new RunnableMap({ steps: runnables });
1251
+ } else throw new Error(`Expected a Runnable, function or object.
1252
+ Instead got an unsupported type.`);
1253
+ }
1254
+ var RunnableAssign = class extends Runnable {
1255
+ static lc_name() {
1256
+ return "RunnableAssign";
1257
+ }
1258
+ lc_namespace = ["langchain_core", "runnables"];
1259
+ lc_serializable = true;
1260
+ mapper;
1261
+ constructor(fields) {
1262
+ if (fields instanceof RunnableMap) fields = { mapper: fields };
1263
+ super(fields);
1264
+ this.mapper = fields.mapper;
1265
+ }
1266
+ async invoke(input, options) {
1267
+ const mapperResult = await this.mapper.invoke(input, options);
1268
+ return {
1269
+ ...input,
1270
+ ...mapperResult
1271
+ };
1272
+ }
1273
+ async *_transform(generator, runManager, options) {
1274
+ const mapperKeys = this.mapper.getStepsKeys();
1275
+ const [forPassthrough, forMapper] = atee(generator);
1276
+ const mapperOutput = this.mapper.transform(forMapper, patchConfig(options, { callbacks: runManager?.getChild() }));
1277
+ const firstMapperChunkPromise = mapperOutput.next();
1278
+ for await (const chunk of forPassthrough) {
1279
+ if (typeof chunk !== "object" || Array.isArray(chunk)) throw new Error(`RunnableAssign can only be used with objects as input, got ${typeof chunk}`);
1280
+ const filtered = Object.fromEntries(Object.entries(chunk).filter(([key]) => !mapperKeys.includes(key)));
1281
+ if (Object.keys(filtered).length > 0) yield filtered;
1282
+ }
1283
+ yield (await firstMapperChunkPromise).value;
1284
+ for await (const chunk of mapperOutput) yield chunk;
1285
+ }
1286
+ transform(generator, options) {
1287
+ return this._transformStreamWithConfig(generator, this._transform.bind(this), options);
1288
+ }
1289
+ async stream(input, options) {
1290
+ async function* generator() {
1291
+ yield input;
1292
+ }
1293
+ const config = ensureConfig(options);
1294
+ const wrappedGenerator = new AsyncGeneratorWithSetup({
1295
+ generator: this.transform(generator(), config),
1296
+ config
1297
+ });
1298
+ await wrappedGenerator.setup;
1299
+ return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
1300
+ }
1301
+ };
1302
+ var RunnablePick = class extends Runnable {
1303
+ static lc_name() {
1304
+ return "RunnablePick";
1305
+ }
1306
+ lc_namespace = ["langchain_core", "runnables"];
1307
+ lc_serializable = true;
1308
+ keys;
1309
+ constructor(fields) {
1310
+ if (typeof fields === "string" || Array.isArray(fields)) fields = { keys: fields };
1311
+ super(fields);
1312
+ this.keys = fields.keys;
1313
+ }
1314
+ async _pick(input) {
1315
+ if (typeof this.keys === "string") return input[this.keys];
1316
+ else {
1317
+ const picked = this.keys.map((key) => [key, input[key]]).filter((v) => v[1] !== void 0);
1318
+ return picked.length === 0 ? void 0 : Object.fromEntries(picked);
1319
+ }
1320
+ }
1321
+ async invoke(input, options) {
1322
+ return this._callWithConfig(this._pick.bind(this), input, options);
1323
+ }
1324
+ async *_transform(generator) {
1325
+ for await (const chunk of generator) {
1326
+ const picked = await this._pick(chunk);
1327
+ if (picked !== void 0) yield picked;
1328
+ }
1329
+ }
1330
+ transform(generator, options) {
1331
+ return this._transformStreamWithConfig(generator, this._transform.bind(this), options);
1332
+ }
1333
+ async stream(input, options) {
1334
+ async function* generator() {
1335
+ yield input;
1336
+ }
1337
+ const config = ensureConfig(options);
1338
+ const wrappedGenerator = new AsyncGeneratorWithSetup({
1339
+ generator: this.transform(generator(), config),
1340
+ config
1341
+ });
1342
+ await wrappedGenerator.setup;
1343
+ return IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
1344
+ }
1345
+ };
1346
+ var RunnableToolLike = class extends RunnableBinding {
1347
+ name;
1348
+ description;
1349
+ schema;
1350
+ constructor(fields) {
1351
+ const sequence = RunnableSequence.from([RunnableLambda.from(async (input) => {
1352
+ let toolInput;
1353
+ if (_isToolCall(input)) try {
1354
+ toolInput = await interopParseAsync(this.schema, input.args);
1355
+ } catch {
1356
+ throw new ToolInputParsingException(`Received tool input did not match expected schema`, JSON.stringify(input.args));
1357
+ }
1358
+ else toolInput = input;
1359
+ return toolInput;
1360
+ }).withConfig({ runName: `${fields.name}:parse_input` }), fields.bound]).withConfig({ runName: fields.name });
1361
+ super({
1362
+ bound: sequence,
1363
+ config: fields.config ?? {}
1364
+ });
1365
+ this.name = fields.name;
1366
+ this.description = fields.description;
1367
+ this.schema = fields.schema;
1368
+ }
1369
+ static lc_name() {
1370
+ return "RunnableToolLike";
1371
+ }
1372
+ };
1373
+ function convertRunnableToTool(runnable, fields) {
1374
+ const name = fields.name ?? runnable.getName();
1375
+ const description = fields.description ?? getSchemaDescription(fields.schema);
1376
+ if (isSimpleStringZodSchema(fields.schema)) return new RunnableToolLike({
1377
+ name,
1378
+ description,
1379
+ schema: objectType({ input: stringType() }).transform((input) => input.input),
1380
+ bound: runnable
1381
+ });
1382
+ return new RunnableToolLike({
1383
+ name,
1384
+ description,
1385
+ schema: fields.schema,
1386
+ bound: runnable
1387
+ });
1388
+ }
1389
+ export {
1390
+ Runnable,
1391
+ RunnableAssign,
1392
+ RunnableBinding,
1393
+ RunnableLambda,
1394
+ RunnableMap,
1395
+ RunnablePick,
1396
+ RunnableRetry,
1397
+ RunnableSequence,
1398
+ RunnableToolLike,
1399
+ RunnableWithFallbacks,
1400
+ _coerceToDict,
1401
+ _coerceToRunnable
1402
+ };
1403
+ //# sourceMappingURL=index.es64.js.map