langgraph-ui-components 0.0.4 → 0.0.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 (525) hide show
  1. package/dist/index.es10.js +31 -16
  2. package/dist/index.es10.js.map +1 -1
  3. package/dist/index.es100.js +36 -3156
  4. package/dist/index.es100.js.map +1 -1
  5. package/dist/index.es101.js +162 -33
  6. package/dist/index.es101.js.map +1 -1
  7. package/dist/index.es102.js +203 -5
  8. package/dist/index.es102.js.map +1 -1
  9. package/dist/index.es103.js +13 -72
  10. package/dist/index.es103.js.map +1 -1
  11. package/dist/index.es104.js +27 -34
  12. package/dist/index.es104.js.map +1 -1
  13. package/dist/index.es105.js +34 -5
  14. package/dist/index.es105.js.map +1 -1
  15. package/dist/index.es106.js +3159 -2
  16. package/dist/index.es106.js.map +1 -1
  17. package/dist/index.es107.js +5 -11
  18. package/dist/index.es107.js.map +1 -1
  19. package/dist/index.es108.js +2 -503
  20. package/dist/index.es108.js.map +1 -1
  21. package/dist/index.es109.js +16 -5
  22. package/dist/index.es109.js.map +1 -1
  23. package/dist/index.es11.js +146 -120
  24. package/dist/index.es11.js.map +1 -1
  25. package/dist/index.es110.js +13 -2
  26. package/dist/index.es110.js.map +1 -1
  27. package/dist/index.es111.js +484 -129
  28. package/dist/index.es111.js.map +1 -1
  29. package/dist/index.es112.js +5 -906
  30. package/dist/index.es112.js.map +1 -1
  31. package/dist/index.es113.js +2 -282
  32. package/dist/index.es113.js.map +1 -1
  33. package/dist/index.es114.js +148 -4
  34. package/dist/index.es114.js.map +1 -1
  35. package/dist/index.es115.js +869 -407
  36. package/dist/index.es115.js.map +1 -1
  37. package/dist/index.es116.js +274 -40
  38. package/dist/index.es116.js.map +1 -1
  39. package/dist/index.es117.js +4 -24
  40. package/dist/index.es117.js.map +1 -1
  41. package/dist/index.es118.js +437 -72
  42. package/dist/index.es118.js.map +1 -1
  43. package/dist/index.es119.js +42 -125
  44. package/dist/index.es119.js.map +1 -1
  45. package/dist/index.es12.js +13 -103
  46. package/dist/index.es12.js.map +1 -1
  47. package/dist/index.es120.js +21 -48
  48. package/dist/index.es120.js.map +1 -1
  49. package/dist/index.es121.js +77 -8
  50. package/dist/index.es121.js.map +1 -1
  51. package/dist/index.es122.js +127 -43
  52. package/dist/index.es122.js.map +1 -1
  53. package/dist/index.es123.js +41 -91
  54. package/dist/index.es123.js.map +1 -1
  55. package/dist/index.es124.js +9 -52
  56. package/dist/index.es124.js.map +1 -1
  57. package/dist/index.es125.js +44 -15
  58. package/dist/index.es125.js.map +1 -1
  59. package/dist/index.es126.js +97 -13
  60. package/dist/index.es126.js.map +1 -1
  61. package/dist/index.es127.js +52 -88
  62. package/dist/index.es127.js.map +1 -1
  63. package/dist/index.es128.js +15 -2
  64. package/dist/index.es128.js.map +1 -1
  65. package/dist/index.es129.js +87 -54
  66. package/dist/index.es129.js.map +1 -1
  67. package/dist/index.es13.js +126 -32
  68. package/dist/index.es13.js.map +1 -1
  69. package/dist/index.es130.js +2 -100
  70. package/dist/index.es130.js.map +1 -1
  71. package/dist/index.es131.js +163 -190
  72. package/dist/index.es131.js.map +1 -1
  73. package/dist/index.es132.js +2 -110
  74. package/dist/index.es132.js.map +1 -1
  75. package/dist/index.es133.js +53 -32
  76. package/dist/index.es133.js.map +1 -1
  77. package/dist/index.es134.js +99 -9
  78. package/dist/index.es134.js.map +1 -1
  79. package/dist/index.es135.js +190 -10
  80. package/dist/index.es135.js.map +1 -1
  81. package/dist/index.es136.js +108 -10
  82. package/dist/index.es136.js.map +1 -1
  83. package/dist/index.es137.js +30 -86
  84. package/dist/index.es137.js.map +1 -1
  85. package/dist/index.es138.js +10 -275
  86. package/dist/index.es138.js.map +1 -1
  87. package/dist/index.es139.js +11 -2
  88. package/dist/index.es139.js.map +1 -1
  89. package/dist/index.es140.js +11 -163
  90. package/dist/index.es140.js.map +1 -1
  91. package/dist/index.es141.js +87 -47
  92. package/dist/index.es141.js.map +1 -1
  93. package/dist/index.es142.js +266 -31
  94. package/dist/index.es142.js.map +1 -1
  95. package/dist/index.es143.js +2 -35
  96. package/dist/index.es143.js.map +1 -1
  97. package/dist/index.es144.js +155 -31
  98. package/dist/index.es144.js.map +1 -1
  99. package/dist/index.es145.js +48 -21
  100. package/dist/index.es145.js.map +1 -1
  101. package/dist/index.es146.js +33 -584
  102. package/dist/index.es146.js.map +1 -1
  103. package/dist/index.es147.js +34 -124
  104. package/dist/index.es147.js.map +1 -1
  105. package/dist/index.es148.js +31 -155
  106. package/dist/index.es148.js.map +1 -1
  107. package/dist/index.es149.js +24 -2
  108. package/dist/index.es149.js.map +1 -1
  109. package/dist/index.es15.js +15 -15
  110. package/dist/index.es150.js +591 -2
  111. package/dist/index.es150.js.map +1 -1
  112. package/dist/index.es151.js +125 -2
  113. package/dist/index.es151.js.map +1 -1
  114. package/dist/index.es152.js +3 -21
  115. package/dist/index.es152.js.map +1 -1
  116. package/dist/index.es153.js +2 -2
  117. package/dist/index.es154.js +2 -25
  118. package/dist/index.es154.js.map +1 -1
  119. package/dist/index.es155.js +22 -8
  120. package/dist/index.es155.js.map +1 -1
  121. package/dist/index.es156.js +2 -5
  122. package/dist/index.es156.js.map +1 -1
  123. package/dist/index.es157.js +24 -12
  124. package/dist/index.es157.js.map +1 -1
  125. package/dist/index.es158.js +5 -6
  126. package/dist/index.es158.js.map +1 -1
  127. package/dist/index.es159.js +12 -63
  128. package/dist/index.es159.js.map +1 -1
  129. package/dist/index.es160.js +5 -21
  130. package/dist/index.es160.js.map +1 -1
  131. package/dist/index.es161.js +8 -6
  132. package/dist/index.es161.js.map +1 -1
  133. package/dist/index.es162.js +22 -346
  134. package/dist/index.es162.js.map +1 -1
  135. package/dist/index.es163.js +12 -25
  136. package/dist/index.es163.js.map +1 -1
  137. package/dist/index.es164.js +53 -11
  138. package/dist/index.es164.js.map +1 -1
  139. package/dist/index.es165.js +59 -49
  140. package/dist/index.es165.js.map +1 -1
  141. package/dist/index.es166.js +22 -7
  142. package/dist/index.es166.js.map +1 -1
  143. package/dist/index.es167.js +5 -102
  144. package/dist/index.es167.js.map +1 -1
  145. package/dist/index.es168.js +339 -109
  146. package/dist/index.es168.js.map +1 -1
  147. package/dist/index.es169.js +7 -136
  148. package/dist/index.es169.js.map +1 -1
  149. package/dist/index.es17.js +2 -2
  150. package/dist/index.es170.js +97 -109
  151. package/dist/index.es170.js.map +1 -1
  152. package/dist/index.es171.js +119 -6
  153. package/dist/index.es171.js.map +1 -1
  154. package/dist/index.es172.js +136 -4
  155. package/dist/index.es172.js.map +1 -1
  156. package/dist/index.es173.js +115 -2
  157. package/dist/index.es173.js.map +1 -1
  158. package/dist/index.es174.js +6 -3737
  159. package/dist/index.es174.js.map +1 -1
  160. package/dist/index.es175.js +2 -342
  161. package/dist/index.es175.js.map +1 -1
  162. package/dist/index.es176.js +138 -105
  163. package/dist/index.es176.js.map +1 -1
  164. package/dist/index.es177.js +2 -133
  165. package/dist/index.es177.js.map +1 -1
  166. package/dist/index.es178.js +3734 -12
  167. package/dist/index.es178.js.map +1 -1
  168. package/dist/index.es179.js +326 -136
  169. package/dist/index.es179.js.map +1 -1
  170. package/dist/index.es180.js +107 -13
  171. package/dist/index.es180.js.map +1 -1
  172. package/dist/index.es181.js +131 -6
  173. package/dist/index.es181.js.map +1 -1
  174. package/dist/index.es182.js +13 -19
  175. package/dist/index.es182.js.map +1 -1
  176. package/dist/index.es183.js +139 -77
  177. package/dist/index.es183.js.map +1 -1
  178. package/dist/index.es184.js +13 -241
  179. package/dist/index.es184.js.map +1 -1
  180. package/dist/index.es185.js +8 -24
  181. package/dist/index.es185.js.map +1 -1
  182. package/dist/index.es186.js +21 -6
  183. package/dist/index.es186.js.map +1 -1
  184. package/dist/index.es187.js +90 -4
  185. package/dist/index.es187.js.map +1 -1
  186. package/dist/index.es188.js +240 -15
  187. package/dist/index.es188.js.map +1 -1
  188. package/dist/index.es189.js +24 -8
  189. package/dist/index.es189.js.map +1 -1
  190. package/dist/index.es190.js +6 -142
  191. package/dist/index.es190.js.map +1 -1
  192. package/dist/index.es191.js +4 -2
  193. package/dist/index.es191.js.map +1 -1
  194. package/dist/index.es192.js +18 -32
  195. package/dist/index.es192.js.map +1 -1
  196. package/dist/index.es193.js +8 -6
  197. package/dist/index.es193.js.map +1 -1
  198. package/dist/index.es194.js +31 -105
  199. package/dist/index.es194.js.map +1 -1
  200. package/dist/index.es195.js +6 -13
  201. package/dist/index.es195.js.map +1 -1
  202. package/dist/index.es196.js +105 -17
  203. package/dist/index.es196.js.map +1 -1
  204. package/dist/index.es197.js +11 -29
  205. package/dist/index.es197.js.map +1 -1
  206. package/dist/index.es198.js +17 -3
  207. package/dist/index.es198.js.map +1 -1
  208. package/dist/index.es199.js +30 -4
  209. package/dist/index.es199.js.map +1 -1
  210. package/dist/index.es2.js +24 -15
  211. package/dist/index.es2.js.map +1 -1
  212. package/dist/index.es20.js +35 -66
  213. package/dist/index.es20.js.map +1 -1
  214. package/dist/index.es200.js +4 -5
  215. package/dist/index.es200.js.map +1 -1
  216. package/dist/index.es201.js +4 -36
  217. package/dist/index.es201.js.map +1 -1
  218. package/dist/index.es202.js +5 -8
  219. package/dist/index.es202.js.map +1 -1
  220. package/dist/index.es203.js +36 -5
  221. package/dist/index.es203.js.map +1 -1
  222. package/dist/index.es204.js +5 -4
  223. package/dist/index.es204.js.map +1 -1
  224. package/dist/index.es205.js +5 -41
  225. package/dist/index.es205.js.map +1 -1
  226. package/dist/index.es206.js +4 -10
  227. package/dist/index.es206.js.map +1 -1
  228. package/dist/index.es207.js +39 -239
  229. package/dist/index.es207.js.map +1 -1
  230. package/dist/index.es208.js +10 -48
  231. package/dist/index.es208.js.map +1 -1
  232. package/dist/index.es209.js +239 -32
  233. package/dist/index.es209.js.map +1 -1
  234. package/dist/index.es21.js +25 -34
  235. package/dist/index.es21.js.map +1 -1
  236. package/dist/index.es210.js +49 -11
  237. package/dist/index.es210.js.map +1 -1
  238. package/dist/index.es211.js +33 -6
  239. package/dist/index.es211.js.map +1 -1
  240. package/dist/index.es212.js +12 -6
  241. package/dist/index.es212.js.map +1 -1
  242. package/dist/index.es213.js +7 -64
  243. package/dist/index.es213.js.map +1 -1
  244. package/dist/index.es214.js +6 -40
  245. package/dist/index.es214.js.map +1 -1
  246. package/dist/index.es215.js +63 -30
  247. package/dist/index.es215.js.map +1 -1
  248. package/dist/index.es216.js +35 -56
  249. package/dist/index.es216.js.map +1 -1
  250. package/dist/index.es217.js +32 -15
  251. package/dist/index.es217.js.map +1 -1
  252. package/dist/index.es218.js +60 -21
  253. package/dist/index.es218.js.map +1 -1
  254. package/dist/index.es219.js +15 -5
  255. package/dist/index.es219.js.map +1 -1
  256. package/dist/index.es22.js +146 -27
  257. package/dist/index.es22.js.map +1 -1
  258. package/dist/index.es220.js +21 -15
  259. package/dist/index.es220.js.map +1 -1
  260. package/dist/index.es221.js +4 -32
  261. package/dist/index.es221.js.map +1 -1
  262. package/dist/index.es222.js +16 -4
  263. package/dist/index.es222.js.map +1 -1
  264. package/dist/index.es223.js +32 -4
  265. package/dist/index.es223.js.map +1 -1
  266. package/dist/index.es224.js +5 -5
  267. package/dist/index.es224.js.map +1 -1
  268. package/dist/index.es225.js +4 -7
  269. package/dist/index.es225.js.map +1 -1
  270. package/dist/index.es226.js +4 -91
  271. package/dist/index.es226.js.map +1 -1
  272. package/dist/index.es227.js +7 -17
  273. package/dist/index.es227.js.map +1 -1
  274. package/dist/index.es228.js +90 -760
  275. package/dist/index.es228.js.map +1 -1
  276. package/dist/index.es229.js +18 -66
  277. package/dist/index.es229.js.map +1 -1
  278. package/dist/index.es23.js +16 -146
  279. package/dist/index.es23.js.map +1 -1
  280. package/dist/index.es230.js +749 -161
  281. package/dist/index.es230.js.map +1 -1
  282. package/dist/index.es231.js +66 -38
  283. package/dist/index.es231.js.map +1 -1
  284. package/dist/index.es232.js +172 -135
  285. package/dist/index.es232.js.map +1 -1
  286. package/dist/index.es233.js +136 -92
  287. package/dist/index.es233.js.map +1 -1
  288. package/dist/index.es234.js +92 -32
  289. package/dist/index.es234.js.map +1 -1
  290. package/dist/index.es235.js +32 -284
  291. package/dist/index.es235.js.map +1 -1
  292. package/dist/index.es236.js +284 -25
  293. package/dist/index.es236.js.map +1 -1
  294. package/dist/index.es237.js +22 -20
  295. package/dist/index.es237.js.map +1 -1
  296. package/dist/index.es238.js +22 -13
  297. package/dist/index.es238.js.map +1 -1
  298. package/dist/index.es239.js +12 -12
  299. package/dist/index.es239.js.map +1 -1
  300. package/dist/index.es24.js +58 -295
  301. package/dist/index.es24.js.map +1 -1
  302. package/dist/index.es240.js +13 -24
  303. package/dist/index.es240.js.map +1 -1
  304. package/dist/index.es241.js +22 -42
  305. package/dist/index.es241.js.map +1 -1
  306. package/dist/index.es242.js +45 -11
  307. package/dist/index.es242.js.map +1 -1
  308. package/dist/index.es243.js +10 -10
  309. package/dist/index.es243.js.map +1 -1
  310. package/dist/index.es244.js +10 -10
  311. package/dist/index.es244.js.map +1 -1
  312. package/dist/index.es245.js +11 -14
  313. package/dist/index.es245.js.map +1 -1
  314. package/dist/index.es246.js +14 -11
  315. package/dist/index.es246.js.map +1 -1
  316. package/dist/index.es247.js +11 -11
  317. package/dist/index.es247.js.map +1 -1
  318. package/dist/index.es248.js +10 -10
  319. package/dist/index.es248.js.map +1 -1
  320. package/dist/index.es249.js +11 -15
  321. package/dist/index.es249.js.map +1 -1
  322. package/dist/index.es25.js +298 -114
  323. package/dist/index.es25.js.map +1 -1
  324. package/dist/index.es250.js +15 -11
  325. package/dist/index.es250.js.map +1 -1
  326. package/dist/index.es251.js +10 -10
  327. package/dist/index.es251.js.map +1 -1
  328. package/dist/index.es252.js +11 -11
  329. package/dist/index.es252.js.map +1 -1
  330. package/dist/index.es253.js +10 -10
  331. package/dist/index.es253.js.map +1 -1
  332. package/dist/index.es254.js +10 -10
  333. package/dist/index.es254.js.map +1 -1
  334. package/dist/index.es255.js +10 -10
  335. package/dist/index.es255.js.map +1 -1
  336. package/dist/index.es256.js +10 -10
  337. package/dist/index.es256.js.map +1 -1
  338. package/dist/index.es257.js +10 -10
  339. package/dist/index.es257.js.map +1 -1
  340. package/dist/index.es258.js +11 -56
  341. package/dist/index.es258.js.map +1 -1
  342. package/dist/index.es259.js +53 -46
  343. package/dist/index.es259.js.map +1 -1
  344. package/dist/index.es26.js +121 -5
  345. package/dist/index.es26.js.map +1 -1
  346. package/dist/index.es260.js +42 -112
  347. package/dist/index.es260.js.map +1 -1
  348. package/dist/index.es261.js +87 -352
  349. package/dist/index.es261.js.map +1 -1
  350. package/dist/index.es262.js +381 -15
  351. package/dist/index.es262.js.map +1 -1
  352. package/dist/index.es263.js +17 -10
  353. package/dist/index.es263.js.map +1 -1
  354. package/dist/index.es264.js +10 -30
  355. package/dist/index.es264.js.map +1 -1
  356. package/dist/index.es265.js +17 -17
  357. package/dist/index.es265.js.map +1 -1
  358. package/dist/index.es266.js +25 -56
  359. package/dist/index.es266.js.map +1 -1
  360. package/dist/index.es267.js +59 -14
  361. package/dist/index.es267.js.map +1 -1
  362. package/dist/index.es268.js +14 -74
  363. package/dist/index.es268.js.map +1 -1
  364. package/dist/index.es269.js +77 -11
  365. package/dist/index.es269.js.map +1 -1
  366. package/dist/index.es270.js +10 -10
  367. package/dist/index.es270.js.map +1 -1
  368. package/dist/index.es271.js +11 -15
  369. package/dist/index.es271.js.map +1 -1
  370. package/dist/index.es272.js +14 -51
  371. package/dist/index.es272.js.map +1 -1
  372. package/dist/index.es273.js +44 -158
  373. package/dist/index.es273.js.map +1 -1
  374. package/dist/index.es274.js +167 -2
  375. package/dist/index.es274.js.map +1 -1
  376. package/dist/index.es275.js +37 -10
  377. package/dist/index.es275.js.map +1 -1
  378. package/dist/index.es276.js +2 -20
  379. package/dist/index.es276.js.map +1 -1
  380. package/dist/index.es277.js +10 -38
  381. package/dist/index.es277.js.map +1 -1
  382. package/dist/index.es278.js +23 -0
  383. package/dist/index.es278.js.map +1 -0
  384. package/dist/index.es279.js +42 -0
  385. package/dist/index.es279.js.map +1 -0
  386. package/dist/index.es28.js +7 -7
  387. package/dist/index.es29.js +1 -1
  388. package/dist/index.es32.js +4 -4
  389. package/dist/index.es33.js +117 -13
  390. package/dist/index.es33.js.map +1 -1
  391. package/dist/index.es34.js +65 -112
  392. package/dist/index.es34.js.map +1 -1
  393. package/dist/index.es35.js +18 -71
  394. package/dist/index.es35.js.map +1 -1
  395. package/dist/index.es36.js +260 -17
  396. package/dist/index.es36.js.map +1 -1
  397. package/dist/index.es37.js +31 -249
  398. package/dist/index.es37.js.map +1 -1
  399. package/dist/index.es38.js +199 -27
  400. package/dist/index.es38.js.map +1 -1
  401. package/dist/index.es39.js +50 -198
  402. package/dist/index.es39.js.map +1 -1
  403. package/dist/index.es40.js +120 -45
  404. package/dist/index.es40.js.map +1 -1
  405. package/dist/index.es41.js +14 -132
  406. package/dist/index.es41.js.map +1 -1
  407. package/dist/index.es42.js +225 -19
  408. package/dist/index.es42.js.map +1 -1
  409. package/dist/index.es43.js +8 -229
  410. package/dist/index.es43.js.map +1 -1
  411. package/dist/index.es44.js +1190 -7
  412. package/dist/index.es44.js.map +1 -1
  413. package/dist/index.es45.js +6 -1191
  414. package/dist/index.es45.js.map +1 -1
  415. package/dist/index.es46.js +146 -6
  416. package/dist/index.es46.js.map +1 -1
  417. package/dist/index.es47.js +15 -146
  418. package/dist/index.es47.js.map +1 -1
  419. package/dist/index.es49.js +5 -93
  420. package/dist/index.es49.js.map +1 -1
  421. package/dist/index.es50.js +8 -4
  422. package/dist/index.es50.js.map +1 -1
  423. package/dist/index.es51.js +91 -33
  424. package/dist/index.es51.js.map +1 -1
  425. package/dist/index.es52.js +3 -71
  426. package/dist/index.es52.js.map +1 -1
  427. package/dist/index.es53.js +34 -36
  428. package/dist/index.es53.js.map +1 -1
  429. package/dist/index.es54.js +61 -295
  430. package/dist/index.es54.js.map +1 -1
  431. package/dist/index.es55.js +38 -9
  432. package/dist/index.es55.js.map +1 -1
  433. package/dist/index.es56.js +296 -81
  434. package/dist/index.es56.js.map +1 -1
  435. package/dist/index.es57.js +9 -8
  436. package/dist/index.es57.js.map +1 -1
  437. package/dist/index.es58.js +89 -13
  438. package/dist/index.es58.js.map +1 -1
  439. package/dist/index.es59.js +6 -141
  440. package/dist/index.es59.js.map +1 -1
  441. package/dist/index.es60.js +12 -297
  442. package/dist/index.es60.js.map +1 -1
  443. package/dist/index.es61.js +137 -60
  444. package/dist/index.es61.js.map +1 -1
  445. package/dist/index.es62.js +247 -160
  446. package/dist/index.es62.js.map +1 -1
  447. package/dist/index.es63.js +63 -31
  448. package/dist/index.es63.js.map +1 -1
  449. package/dist/index.es64.js +212 -8
  450. package/dist/index.es64.js.map +1 -1
  451. package/dist/index.es65.js +32 -10
  452. package/dist/index.es65.js.map +1 -1
  453. package/dist/index.es66.js +8 -186
  454. package/dist/index.es66.js.map +1 -1
  455. package/dist/index.es67.js +11 -23
  456. package/dist/index.es67.js.map +1 -1
  457. package/dist/index.es68.js +183 -1396
  458. package/dist/index.es68.js.map +1 -1
  459. package/dist/index.es69.js +24 -9
  460. package/dist/index.es69.js.map +1 -1
  461. package/dist/index.es70.js +1400 -8
  462. package/dist/index.es70.js.map +1 -1
  463. package/dist/index.es71.js +9 -6
  464. package/dist/index.es71.js.map +1 -1
  465. package/dist/index.es72.js +8 -163
  466. package/dist/index.es72.js.map +1 -1
  467. package/dist/index.es73.js +6 -672
  468. package/dist/index.es73.js.map +1 -1
  469. package/dist/index.es74.js +161 -10
  470. package/dist/index.es74.js.map +1 -1
  471. package/dist/index.es75.js +671 -39
  472. package/dist/index.es75.js.map +1 -1
  473. package/dist/index.es76.js +10 -32
  474. package/dist/index.es76.js.map +1 -1
  475. package/dist/index.es77.js +31 -223
  476. package/dist/index.es77.js.map +1 -1
  477. package/dist/index.es78.js +33 -29
  478. package/dist/index.es78.js.map +1 -1
  479. package/dist/index.es79.js +193 -36
  480. package/dist/index.es79.js.map +1 -1
  481. package/dist/index.es80.js +26 -72
  482. package/dist/index.es80.js.map +1 -1
  483. package/dist/index.es81.js +70 -47
  484. package/dist/index.es81.js.map +1 -1
  485. package/dist/index.es82.js +72 -26
  486. package/dist/index.es82.js.map +1 -1
  487. package/dist/index.es83.js +37 -28
  488. package/dist/index.es83.js.map +1 -1
  489. package/dist/index.es84.js +28 -55
  490. package/dist/index.es84.js.map +1 -1
  491. package/dist/index.es85.js +43 -13
  492. package/dist/index.es85.js.map +1 -1
  493. package/dist/index.es86.js +32 -132
  494. package/dist/index.es86.js.map +1 -1
  495. package/dist/index.es87.js +5 -21
  496. package/dist/index.es87.js.map +1 -1
  497. package/dist/index.es88.js +61 -170
  498. package/dist/index.es88.js.map +1 -1
  499. package/dist/index.es89.js +31 -235
  500. package/dist/index.es89.js.map +1 -1
  501. package/dist/index.es90.js +50 -348
  502. package/dist/index.es90.js.map +1 -1
  503. package/dist/index.es91.js +13 -137
  504. package/dist/index.es91.js.map +1 -1
  505. package/dist/index.es92.js +132 -65
  506. package/dist/index.es92.js.map +1 -1
  507. package/dist/index.es93.js +21 -37
  508. package/dist/index.es93.js.map +1 -1
  509. package/dist/index.es94.js +179 -34
  510. package/dist/index.es94.js.map +1 -1
  511. package/dist/index.es95.js +230 -155
  512. package/dist/index.es95.js.map +1 -1
  513. package/dist/index.es96.js +341 -189
  514. package/dist/index.es96.js.map +1 -1
  515. package/dist/index.es97.js +136 -13
  516. package/dist/index.es97.js.map +1 -1
  517. package/dist/index.es98.js +68 -28
  518. package/dist/index.es98.js.map +1 -1
  519. package/dist/index.es99.js +33 -30
  520. package/dist/index.es99.js.map +1 -1
  521. package/dist/langgraph-ui-components.css +107 -0
  522. package/dist/styles.css +1 -1
  523. package/package.json +8 -11
  524. package/dist/index.es48.js +0 -11
  525. package/dist/index.es48.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ var lrucache;
2
+ var hasRequiredLrucache;
3
+ function requireLrucache() {
4
+ if (hasRequiredLrucache) return lrucache;
5
+ hasRequiredLrucache = 1;
6
+ class LRUCache {
7
+ constructor() {
8
+ this.max = 1e3;
9
+ this.map = /* @__PURE__ */ new Map();
10
+ }
11
+ get(key) {
12
+ const value = this.map.get(key);
13
+ if (value === void 0) {
14
+ return void 0;
15
+ } else {
16
+ this.map.delete(key);
17
+ this.map.set(key, value);
18
+ return value;
19
+ }
20
+ }
21
+ delete(key) {
22
+ return this.map.delete(key);
23
+ }
24
+ set(key, value) {
25
+ const deleted = this.delete(key);
26
+ if (!deleted && value !== void 0) {
27
+ if (this.map.size >= this.max) {
28
+ const firstKey = this.map.keys().next().value;
29
+ this.delete(firstKey);
30
+ }
31
+ this.map.set(key, value);
32
+ }
33
+ return this;
34
+ }
35
+ }
36
+ lrucache = LRUCache;
37
+ return lrucache;
38
+ }
39
+ export {
40
+ requireLrucache as __require
41
+ };
42
+ //# sourceMappingURL=index.es279.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es279.js","sources":["../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js"],"sourcesContent":["'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n"],"names":[],"mappings":";;;;;EAEA,MAAM,SAAS;AAAA,IACb,cAAe;AACb,WAAK,MAAM;AACX,WAAK,MAAM,oBAAI,IAAG;AAAA,IACtB;AAAA,IAEE,IAAK,KAAK;AACR,YAAM,QAAQ,KAAK,IAAI,IAAI,GAAG;AAC9B,UAAI,UAAU,QAAW;AACvB,eAAO;AAAA,MACb,OAAW;AAEL,aAAK,IAAI,OAAO,GAAG;AACnB,aAAK,IAAI,IAAI,KAAK,KAAK;AACvB,eAAO;AAAA,MACb;AAAA,IACA;AAAA,IAEE,OAAQ,KAAK;AACX,aAAO,KAAK,IAAI,OAAO,GAAG;AAAA,IAC9B;AAAA,IAEE,IAAK,KAAK,OAAO;AACf,YAAM,UAAU,KAAK,OAAO,GAAG;AAE/B,UAAI,CAAC,WAAW,UAAU,QAAW;AAEnC,YAAI,KAAK,IAAI,QAAQ,KAAK,KAAK;AAC7B,gBAAM,WAAW,KAAK,IAAI,KAAI,EAAG,KAAI,EAAG;AACxC,eAAK,OAAO,QAAQ;AAAA,QAC5B;AAEM,aAAK,IAAI,IAAI,KAAK,KAAK;AAAA,MAC7B;AAEI,aAAO;AAAA,IACX;AAAA,EACA;AAEA,aAAiB;;;","x_google_ignoreList":[0]}
@@ -1,11 +1,11 @@
1
1
  import "./index.es15.js";
2
- import { isBaseMessageChunk } from "./index.es37.js";
3
- import { HumanMessageChunk } from "./index.es38.js";
4
- import { AIMessageChunk } from "./index.es39.js";
5
- import { SystemMessageChunk } from "./index.es40.js";
6
- import { ToolMessageChunk } from "./index.es41.js";
7
- import { RemoveMessage } from "./index.es42.js";
8
- import { coerceMessageLikeToMessage, convertToChunk } from "./index.es43.js";
2
+ import { isBaseMessageChunk } from "./index.es36.js";
3
+ import { HumanMessageChunk } from "./index.es37.js";
4
+ import { AIMessageChunk } from "./index.es38.js";
5
+ import { SystemMessageChunk } from "./index.es39.js";
6
+ import { ToolMessageChunk } from "./index.es40.js";
7
+ import { RemoveMessage } from "./index.es41.js";
8
+ import { coerceMessageLikeToMessage, convertToChunk } from "./index.es42.js";
9
9
  function tryConvertToChunk(message) {
10
10
  try {
11
11
  if (isBaseMessageChunk(message)) return message;
@@ -1,4 +1,4 @@
1
- import { StreamError } from "./index.es44.js";
1
+ import { StreamError } from "./index.es43.js";
2
2
  import { toMessageDict } from "./index.es28.js";
3
3
  const REMOVE_ALL_MESSAGES = "__remove_all__";
4
4
  var StreamManager = class {
@@ -1,7 +1,7 @@
1
- import { Client, getClientConfigHash } from "./index.es45.js";
2
- import { findLast, unique } from "./index.es46.js";
3
- import { StreamError } from "./index.es44.js";
4
- import { getBranchContext } from "./index.es47.js";
1
+ import { Client, getClientConfigHash } from "./index.es44.js";
2
+ import { findLast, unique } from "./index.es45.js";
3
+ import { StreamError } from "./index.es43.js";
4
+ import { getBranchContext } from "./index.es46.js";
5
5
  import { MessageTupleManager } from "./index.es28.js";
6
6
  import { StreamManager } from "./index.es29.js";
7
7
  import { getToolCallsWithResults } from "./index.es30.js";
@@ -1,18 +1,122 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import ReactMarkdown from "react-markdown";
3
- import remarkGfm from "remark-gfm";
4
- import rehypeHighlight from "rehype-highlight";
5
- function AgentMarkdown({ content }) {
6
- return /* @__PURE__ */ jsx(
7
- ReactMarkdown,
8
- {
9
- remarkPlugins: [remarkGfm],
10
- rehypePlugins: [rehypeHighlight],
11
- children: content
1
+ const CR = "\r".charCodeAt(0);
2
+ const LF = "\n".charCodeAt(0);
3
+ const NULL = "\0".charCodeAt(0);
4
+ const COLON = ":".charCodeAt(0);
5
+ const SPACE = " ".charCodeAt(0);
6
+ const TRAILING_NEWLINE = [CR, LF];
7
+ function BytesLineDecoder() {
8
+ let buffer = [];
9
+ let trailingCr = false;
10
+ return new TransformStream({
11
+ start() {
12
+ buffer = [];
13
+ trailingCr = false;
14
+ },
15
+ transform(chunk, controller) {
16
+ let text = chunk;
17
+ if (trailingCr) {
18
+ text = joinArrays([[CR], text]);
19
+ trailingCr = false;
20
+ }
21
+ if (text.length > 0 && text.at(-1) === CR) {
22
+ trailingCr = true;
23
+ text = text.subarray(0, -1);
24
+ }
25
+ if (!text.length) return;
26
+ const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));
27
+ const lastIdx = text.length - 1;
28
+ const { lines } = text.reduce((acc, cur, idx) => {
29
+ if (acc.from > idx) return acc;
30
+ if (cur === CR || cur === LF) {
31
+ acc.lines.push(text.subarray(acc.from, idx));
32
+ if (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;
33
+ else acc.from = idx + 1;
34
+ }
35
+ if (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));
36
+ return acc;
37
+ }, {
38
+ lines: [],
39
+ from: 0
40
+ });
41
+ if (lines.length === 1 && !trailingNewline) {
42
+ buffer.push(lines[0]);
43
+ return;
44
+ }
45
+ if (buffer.length) {
46
+ buffer.push(lines[0]);
47
+ lines[0] = joinArrays(buffer);
48
+ buffer = [];
49
+ }
50
+ if (!trailingNewline) {
51
+ if (lines.length) buffer = [lines.pop()];
52
+ }
53
+ for (const line of lines) controller.enqueue(line);
54
+ },
55
+ flush(controller) {
56
+ if (buffer.length) controller.enqueue(joinArrays(buffer));
12
57
  }
13
- );
58
+ });
59
+ }
60
+ function SSEDecoder() {
61
+ let event = "";
62
+ let data = [];
63
+ let lastEventId = "";
64
+ let retry = null;
65
+ const decoder = new TextDecoder();
66
+ return new TransformStream({
67
+ transform(chunk, controller) {
68
+ if (!chunk.length) {
69
+ if (!event && !data.length && !lastEventId && retry == null) return;
70
+ const sse = {
71
+ id: lastEventId || void 0,
72
+ event,
73
+ data: data.length ? decodeArraysToJson(decoder, data) : null
74
+ };
75
+ event = "";
76
+ data = [];
77
+ retry = null;
78
+ controller.enqueue(sse);
79
+ return;
80
+ }
81
+ if (chunk[0] === COLON) return;
82
+ const sepIdx = chunk.indexOf(COLON);
83
+ if (sepIdx === -1) return;
84
+ const fieldName = decoder.decode(chunk.subarray(0, sepIdx));
85
+ let value = chunk.subarray(sepIdx + 1);
86
+ if (value[0] === SPACE) value = value.subarray(1);
87
+ if (fieldName === "event") event = decoder.decode(value);
88
+ else if (fieldName === "data") data.push(value);
89
+ else if (fieldName === "id") {
90
+ if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);
91
+ } else if (fieldName === "retry") {
92
+ const retryNum = Number.parseInt(decoder.decode(value), 10);
93
+ if (!Number.isNaN(retryNum)) retry = retryNum;
94
+ }
95
+ },
96
+ flush(controller) {
97
+ if (event) controller.enqueue({
98
+ id: lastEventId || void 0,
99
+ event,
100
+ data: data.length ? decodeArraysToJson(decoder, data) : null
101
+ });
102
+ }
103
+ });
104
+ }
105
+ function joinArrays(data) {
106
+ const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
107
+ const merged = new Uint8Array(totalLength);
108
+ let offset = 0;
109
+ for (const c of data) {
110
+ merged.set(c, offset);
111
+ offset += c.length;
112
+ }
113
+ return merged;
114
+ }
115
+ function decodeArraysToJson(decoder, data) {
116
+ return JSON.parse(decoder.decode(joinArrays(data)));
14
117
  }
15
118
  export {
16
- AgentMarkdown
119
+ BytesLineDecoder,
120
+ SSEDecoder
17
121
  };
18
122
  //# sourceMappingURL=index.es33.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es33.js","sources":["../src/components/messages/AgentMarkdown.tsx"],"sourcesContent":["import ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport rehypeHighlight from \"rehype-highlight\";\n// import \"highlight.js/styles/github.css\";\n\nexport function AgentMarkdown({ content }: { content: string }) {\n return (\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n rehypePlugins={[rehypeHighlight]}\n >\n {content}\n </ReactMarkdown>\n );\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,cAAc,EAAE,WAAgC;AAC9D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAe,CAAC,SAAS;AAAA,MACzB,eAAe,CAAC,eAAe;AAAA,MAE9B,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"index.es33.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/sse.js"],"sourcesContent":["//#region src/utils/sse.ts\nconst CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst TRAILING_NEWLINE = [CR, LF];\nfunction BytesLineDecoder() {\n\tlet buffer = [];\n\tlet trailingCr = false;\n\treturn new TransformStream({\n\t\tstart() {\n\t\t\tbuffer = [];\n\t\t\ttrailingCr = false;\n\t\t},\n\t\ttransform(chunk, controller) {\n\t\t\tlet text = chunk;\n\t\t\tif (trailingCr) {\n\t\t\t\ttext = joinArrays([[CR], text]);\n\t\t\t\ttrailingCr = false;\n\t\t\t}\n\t\t\tif (text.length > 0 && text.at(-1) === CR) {\n\t\t\t\ttrailingCr = true;\n\t\t\t\ttext = text.subarray(0, -1);\n\t\t\t}\n\t\t\tif (!text.length) return;\n\t\t\tconst trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));\n\t\t\tconst lastIdx = text.length - 1;\n\t\t\tconst { lines } = text.reduce((acc, cur, idx) => {\n\t\t\t\tif (acc.from > idx) return acc;\n\t\t\t\tif (cur === CR || cur === LF) {\n\t\t\t\t\tacc.lines.push(text.subarray(acc.from, idx));\n\t\t\t\t\tif (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;\n\t\t\t\t\telse acc.from = idx + 1;\n\t\t\t\t}\n\t\t\t\tif (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));\n\t\t\t\treturn acc;\n\t\t\t}, {\n\t\t\t\tlines: [],\n\t\t\t\tfrom: 0\n\t\t\t});\n\t\t\tif (lines.length === 1 && !trailingNewline) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (buffer.length) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\tlines[0] = joinArrays(buffer);\n\t\t\t\tbuffer = [];\n\t\t\t}\n\t\t\tif (!trailingNewline) {\n\t\t\t\tif (lines.length) buffer = [lines.pop()];\n\t\t\t}\n\t\t\tfor (const line of lines) controller.enqueue(line);\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (buffer.length) controller.enqueue(joinArrays(buffer));\n\t\t}\n\t});\n}\nfunction SSEDecoder() {\n\tlet event = \"\";\n\tlet data = [];\n\tlet lastEventId = \"\";\n\tlet retry = null;\n\tconst decoder = new TextDecoder();\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (!chunk.length) {\n\t\t\t\tif (!event && !data.length && !lastEventId && retry == null) return;\n\t\t\t\tconst sse = {\n\t\t\t\t\tid: lastEventId || void 0,\n\t\t\t\t\tevent,\n\t\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t\t};\n\t\t\t\tevent = \"\";\n\t\t\t\tdata = [];\n\t\t\t\tretry = null;\n\t\t\t\tcontroller.enqueue(sse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (chunk[0] === COLON) return;\n\t\t\tconst sepIdx = chunk.indexOf(COLON);\n\t\t\tif (sepIdx === -1) return;\n\t\t\tconst fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n\t\t\tlet value = chunk.subarray(sepIdx + 1);\n\t\t\tif (value[0] === SPACE) value = value.subarray(1);\n\t\t\tif (fieldName === \"event\") event = decoder.decode(value);\n\t\t\telse if (fieldName === \"data\") data.push(value);\n\t\t\telse if (fieldName === \"id\") {\n\t\t\t\tif (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n\t\t\t} else if (fieldName === \"retry\") {\n\t\t\t\tconst retryNum = Number.parseInt(decoder.decode(value), 10);\n\t\t\t\tif (!Number.isNaN(retryNum)) retry = retryNum;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (event) controller.enqueue({\n\t\t\t\tid: lastEventId || void 0,\n\t\t\t\tevent,\n\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t});\n\t\t}\n\t});\n}\nfunction joinArrays(data) {\n\tconst totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n\tconst merged = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const c of data) {\n\t\tmerged.set(c, offset);\n\t\toffset += c.length;\n\t}\n\treturn merged;\n}\nfunction decodeArraysToJson(decoder, data) {\n\treturn JSON.parse(decoder.decode(joinArrays(data)));\n}\n\n//#endregion\nexport { BytesLineDecoder, SSEDecoder };\n//# sourceMappingURL=sse.js.map"],"names":[],"mappings":"AACA,MAAM,KAAK,KAAK,WAAW,CAAC;AAC5B,MAAM,KAAK,KAAK,WAAW,CAAC;AAC5B,MAAM,OAAO,KAAK,WAAW,CAAC;AAC9B,MAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,MAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,MAAM,mBAAmB,CAAC,IAAI,EAAE;AAChC,SAAS,mBAAmB;AAC3B,MAAI,SAAS,CAAA;AACb,MAAI,aAAa;AACjB,SAAO,IAAI,gBAAgB;AAAA,IAC1B,QAAQ;AACP,eAAS,CAAA;AACT,mBAAa;AAAA,IACd;AAAA,IACA,UAAU,OAAO,YAAY;AAC5B,UAAI,OAAO;AACX,UAAI,YAAY;AACf,eAAO,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;AAC9B,qBAAa;AAAA,MACd;AACA,UAAI,KAAK,SAAS,KAAK,KAAK,GAAG,EAAE,MAAM,IAAI;AAC1C,qBAAa;AACb,eAAO,KAAK,SAAS,GAAG,EAAE;AAAA,MAC3B;AACA,UAAI,CAAC,KAAK,OAAQ;AAClB,YAAM,kBAAkB,iBAAiB,SAAS,KAAK,GAAG,EAAE,CAAC;AAC7D,YAAM,UAAU,KAAK,SAAS;AAC9B,YAAM,EAAE,MAAK,IAAK,KAAK,OAAO,CAAC,KAAK,KAAK,QAAQ;AAChD,YAAI,IAAI,OAAO,IAAK,QAAO;AAC3B,YAAI,QAAQ,MAAM,QAAQ,IAAI;AAC7B,cAAI,MAAM,KAAK,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC;AAC3C,cAAI,QAAQ,MAAM,KAAK,MAAM,CAAC,MAAM,GAAI,KAAI,OAAO,MAAM;AAAA,cACpD,KAAI,OAAO,MAAM;AAAA,QACvB;AACA,YAAI,QAAQ,WAAW,IAAI,QAAQ,QAAS,KAAI,MAAM,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC;AAClF,eAAO;AAAA,MACR,GAAG;AAAA,QACF,OAAO,CAAA;AAAA,QACP,MAAM;AAAA,MACV,CAAI;AACD,UAAI,MAAM,WAAW,KAAK,CAAC,iBAAiB;AAC3C,eAAO,KAAK,MAAM,CAAC,CAAC;AACpB;AAAA,MACD;AACA,UAAI,OAAO,QAAQ;AAClB,eAAO,KAAK,MAAM,CAAC,CAAC;AACpB,cAAM,CAAC,IAAI,WAAW,MAAM;AAC5B,iBAAS,CAAA;AAAA,MACV;AACA,UAAI,CAAC,iBAAiB;AACrB,YAAI,MAAM,OAAQ,UAAS,CAAC,MAAM,IAAG,CAAE;AAAA,MACxC;AACA,iBAAW,QAAQ,MAAO,YAAW,QAAQ,IAAI;AAAA,IAClD;AAAA,IACA,MAAM,YAAY;AACjB,UAAI,OAAO,OAAQ,YAAW,QAAQ,WAAW,MAAM,CAAC;AAAA,IACzD;AAAA,EACF,CAAE;AACF;AACA,SAAS,aAAa;AACrB,MAAI,QAAQ;AACZ,MAAI,OAAO,CAAA;AACX,MAAI,cAAc;AAClB,MAAI,QAAQ;AACZ,QAAM,UAAU,IAAI,YAAW;AAC/B,SAAO,IAAI,gBAAgB;AAAA,IAC1B,UAAU,OAAO,YAAY;AAC5B,UAAI,CAAC,MAAM,QAAQ;AAClB,YAAI,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,eAAe,SAAS,KAAM;AAC7D,cAAM,MAAM;AAAA,UACX,IAAI,eAAe;AAAA,UACnB;AAAA,UACA,MAAM,KAAK,SAAS,mBAAmB,SAAS,IAAI,IAAI;AAAA,QAC7D;AACI,gBAAQ;AACR,eAAO,CAAA;AACP,gBAAQ;AACR,mBAAW,QAAQ,GAAG;AACtB;AAAA,MACD;AACA,UAAI,MAAM,CAAC,MAAM,MAAO;AACxB,YAAM,SAAS,MAAM,QAAQ,KAAK;AAClC,UAAI,WAAW,GAAI;AACnB,YAAM,YAAY,QAAQ,OAAO,MAAM,SAAS,GAAG,MAAM,CAAC;AAC1D,UAAI,QAAQ,MAAM,SAAS,SAAS,CAAC;AACrC,UAAI,MAAM,CAAC,MAAM,MAAO,SAAQ,MAAM,SAAS,CAAC;AAChD,UAAI,cAAc,QAAS,SAAQ,QAAQ,OAAO,KAAK;AAAA,eAC9C,cAAc,OAAQ,MAAK,KAAK,KAAK;AAAA,eACrC,cAAc,MAAM;AAC5B,YAAI,MAAM,QAAQ,IAAI,MAAM,GAAI,eAAc,QAAQ,OAAO,KAAK;AAAA,MACnE,WAAW,cAAc,SAAS;AACjC,cAAM,WAAW,OAAO,SAAS,QAAQ,OAAO,KAAK,GAAG,EAAE;AAC1D,YAAI,CAAC,OAAO,MAAM,QAAQ,EAAG,SAAQ;AAAA,MACtC;AAAA,IACD;AAAA,IACA,MAAM,YAAY;AACjB,UAAI,MAAO,YAAW,QAAQ;AAAA,QAC7B,IAAI,eAAe;AAAA,QACnB;AAAA,QACA,MAAM,KAAK,SAAS,mBAAmB,SAAS,IAAI,IAAI;AAAA,MAC5D,CAAI;AAAA,IACF;AAAA,EACF,CAAE;AACF;AACA,SAAS,WAAW,MAAM;AACzB,QAAM,cAAc,KAAK,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AACnE,QAAM,SAAS,IAAI,WAAW,WAAW;AACzC,MAAI,SAAS;AACb,aAAW,KAAK,MAAM;AACrB,WAAO,IAAI,GAAG,MAAM;AACpB,cAAU,EAAE;AAAA,EACb;AACA,SAAO;AACR;AACA,SAAS,mBAAmB,SAAS,MAAM;AAC1C,SAAO,KAAK,MAAM,QAAQ,OAAO,WAAW,IAAI,CAAC,CAAC;AACnD;","x_google_ignoreList":[0]}
@@ -1,122 +1,75 @@
1
- const CR = "\r".charCodeAt(0);
2
- const LF = "\n".charCodeAt(0);
3
- const NULL = "\0".charCodeAt(0);
4
- const COLON = ":".charCodeAt(0);
5
- const SPACE = " ".charCodeAt(0);
6
- const TRAILING_NEWLINE = [CR, LF];
7
- function BytesLineDecoder() {
8
- let buffer = [];
9
- let trailingCr = false;
10
- return new TransformStream({
11
- start() {
12
- buffer = [];
13
- trailingCr = false;
14
- },
15
- transform(chunk, controller) {
16
- let text = chunk;
17
- if (trailingCr) {
18
- text = joinArrays([[CR], text]);
19
- trailingCr = false;
20
- }
21
- if (text.length > 0 && text.at(-1) === CR) {
22
- trailingCr = true;
23
- text = text.subarray(0, -1);
24
- }
25
- if (!text.length) return;
26
- const trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));
27
- const lastIdx = text.length - 1;
28
- const { lines } = text.reduce((acc, cur, idx) => {
29
- if (acc.from > idx) return acc;
30
- if (cur === CR || cur === LF) {
31
- acc.lines.push(text.subarray(acc.from, idx));
32
- if (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;
33
- else acc.from = idx + 1;
1
+ import { isNetworkError } from "./index.es35.js";
2
+ var MaxReconnectAttemptsError = class extends Error {
3
+ constructor(maxAttempts, cause) {
4
+ super(`Exceeded maximum SSE reconnection attempts (${maxAttempts})`);
5
+ this.name = "MaxReconnectAttemptsError";
6
+ this.cause = cause;
7
+ }
8
+ };
9
+ async function* streamWithRetry(makeRequest, options = {}) {
10
+ const maxRetries = options.maxRetries ?? 5;
11
+ let attempt = 0;
12
+ let lastEventId;
13
+ let reconnectPath;
14
+ while (true) {
15
+ let shouldRetry = false;
16
+ let lastError;
17
+ let reader;
18
+ try {
19
+ if (options.signal?.aborted) return;
20
+ const { response, stream } = await makeRequest(reconnectPath ? {
21
+ lastEventId,
22
+ reconnectPath
23
+ } : void 0);
24
+ const locationHeader = response.headers.get("location");
25
+ if (locationHeader) reconnectPath = locationHeader;
26
+ const contentType = response.headers.get("content-type")?.split(";")[0];
27
+ if (contentType && !contentType.includes("text/event-stream")) throw new Error(`Expected response header Content-Type to contain 'text/event-stream', got '${contentType}'`);
28
+ reader = stream.getReader();
29
+ try {
30
+ while (true) {
31
+ if (options.signal?.aborted) {
32
+ await reader.cancel();
33
+ return;
34
+ }
35
+ const { done, value } = await reader.read();
36
+ if (done) break;
37
+ if (value.id) lastEventId = value.id;
38
+ yield value;
39
+ }
40
+ break;
41
+ } catch (error) {
42
+ if (reconnectPath && !options.signal?.aborted) shouldRetry = true;
43
+ else throw error;
44
+ } finally {
45
+ if (reader) try {
46
+ reader.releaseLock();
47
+ } catch {
34
48
  }
35
- if (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));
36
- return acc;
37
- }, {
38
- lines: [],
39
- from: 0
40
- });
41
- if (lines.length === 1 && !trailingNewline) {
42
- buffer.push(lines[0]);
43
- return;
44
- }
45
- if (buffer.length) {
46
- buffer.push(lines[0]);
47
- lines[0] = joinArrays(buffer);
48
- buffer = [];
49
- }
50
- if (!trailingNewline) {
51
- if (lines.length) buffer = [lines.pop()];
52
49
  }
53
- for (const line of lines) controller.enqueue(line);
54
- },
55
- flush(controller) {
56
- if (buffer.length) controller.enqueue(joinArrays(buffer));
50
+ } catch (error) {
51
+ lastError = error;
52
+ if (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;
53
+ else throw error;
57
54
  }
58
- });
59
- }
60
- function SSEDecoder() {
61
- let event = "";
62
- let data = [];
63
- let lastEventId = "";
64
- let retry = null;
65
- const decoder = new TextDecoder();
66
- return new TransformStream({
67
- transform(chunk, controller) {
68
- if (!chunk.length) {
69
- if (!event && !data.length && !lastEventId && retry == null) return;
70
- const sse = {
71
- id: lastEventId || void 0,
72
- event,
73
- data: data.length ? decodeArraysToJson(decoder, data) : null
74
- };
75
- event = "";
76
- data = [];
77
- retry = null;
78
- controller.enqueue(sse);
79
- return;
80
- }
81
- if (chunk[0] === COLON) return;
82
- const sepIdx = chunk.indexOf(COLON);
83
- if (sepIdx === -1) return;
84
- const fieldName = decoder.decode(chunk.subarray(0, sepIdx));
85
- let value = chunk.subarray(sepIdx + 1);
86
- if (value[0] === SPACE) value = value.subarray(1);
87
- if (fieldName === "event") event = decoder.decode(value);
88
- else if (fieldName === "data") data.push(value);
89
- else if (fieldName === "id") {
90
- if (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);
91
- } else if (fieldName === "retry") {
92
- const retryNum = Number.parseInt(decoder.decode(value), 10);
93
- if (!Number.isNaN(retryNum)) retry = retryNum;
94
- }
95
- },
96
- flush(controller) {
97
- if (event) controller.enqueue({
98
- id: lastEventId || void 0,
99
- event,
100
- data: data.length ? decodeArraysToJson(decoder, data) : null
55
+ if (shouldRetry) {
56
+ attempt += 1;
57
+ if (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);
58
+ options.onReconnect?.({
59
+ attempt,
60
+ lastEventId,
61
+ cause: lastError
101
62
  });
63
+ const delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;
64
+ await new Promise((resolve) => {
65
+ setTimeout(resolve, delay);
66
+ });
67
+ continue;
102
68
  }
103
- });
104
- }
105
- function joinArrays(data) {
106
- const totalLength = data.reduce((acc, curr) => acc + curr.length, 0);
107
- const merged = new Uint8Array(totalLength);
108
- let offset = 0;
109
- for (const c of data) {
110
- merged.set(c, offset);
111
- offset += c.length;
69
+ break;
112
70
  }
113
- return merged;
114
- }
115
- function decodeArraysToJson(decoder, data) {
116
- return JSON.parse(decoder.decode(joinArrays(data)));
117
71
  }
118
72
  export {
119
- BytesLineDecoder,
120
- SSEDecoder
73
+ streamWithRetry
121
74
  };
122
75
  //# sourceMappingURL=index.es34.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es34.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/sse.js"],"sourcesContent":["//#region src/utils/sse.ts\nconst CR = \"\\r\".charCodeAt(0);\nconst LF = \"\\n\".charCodeAt(0);\nconst NULL = \"\\0\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst TRAILING_NEWLINE = [CR, LF];\nfunction BytesLineDecoder() {\n\tlet buffer = [];\n\tlet trailingCr = false;\n\treturn new TransformStream({\n\t\tstart() {\n\t\t\tbuffer = [];\n\t\t\ttrailingCr = false;\n\t\t},\n\t\ttransform(chunk, controller) {\n\t\t\tlet text = chunk;\n\t\t\tif (trailingCr) {\n\t\t\t\ttext = joinArrays([[CR], text]);\n\t\t\t\ttrailingCr = false;\n\t\t\t}\n\t\t\tif (text.length > 0 && text.at(-1) === CR) {\n\t\t\t\ttrailingCr = true;\n\t\t\t\ttext = text.subarray(0, -1);\n\t\t\t}\n\t\t\tif (!text.length) return;\n\t\t\tconst trailingNewline = TRAILING_NEWLINE.includes(text.at(-1));\n\t\t\tconst lastIdx = text.length - 1;\n\t\t\tconst { lines } = text.reduce((acc, cur, idx) => {\n\t\t\t\tif (acc.from > idx) return acc;\n\t\t\t\tif (cur === CR || cur === LF) {\n\t\t\t\t\tacc.lines.push(text.subarray(acc.from, idx));\n\t\t\t\t\tif (cur === CR && text[idx + 1] === LF) acc.from = idx + 2;\n\t\t\t\t\telse acc.from = idx + 1;\n\t\t\t\t}\n\t\t\t\tif (idx === lastIdx && acc.from <= lastIdx) acc.lines.push(text.subarray(acc.from));\n\t\t\t\treturn acc;\n\t\t\t}, {\n\t\t\t\tlines: [],\n\t\t\t\tfrom: 0\n\t\t\t});\n\t\t\tif (lines.length === 1 && !trailingNewline) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (buffer.length) {\n\t\t\t\tbuffer.push(lines[0]);\n\t\t\t\tlines[0] = joinArrays(buffer);\n\t\t\t\tbuffer = [];\n\t\t\t}\n\t\t\tif (!trailingNewline) {\n\t\t\t\tif (lines.length) buffer = [lines.pop()];\n\t\t\t}\n\t\t\tfor (const line of lines) controller.enqueue(line);\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (buffer.length) controller.enqueue(joinArrays(buffer));\n\t\t}\n\t});\n}\nfunction SSEDecoder() {\n\tlet event = \"\";\n\tlet data = [];\n\tlet lastEventId = \"\";\n\tlet retry = null;\n\tconst decoder = new TextDecoder();\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (!chunk.length) {\n\t\t\t\tif (!event && !data.length && !lastEventId && retry == null) return;\n\t\t\t\tconst sse = {\n\t\t\t\t\tid: lastEventId || void 0,\n\t\t\t\t\tevent,\n\t\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t\t};\n\t\t\t\tevent = \"\";\n\t\t\t\tdata = [];\n\t\t\t\tretry = null;\n\t\t\t\tcontroller.enqueue(sse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (chunk[0] === COLON) return;\n\t\t\tconst sepIdx = chunk.indexOf(COLON);\n\t\t\tif (sepIdx === -1) return;\n\t\t\tconst fieldName = decoder.decode(chunk.subarray(0, sepIdx));\n\t\t\tlet value = chunk.subarray(sepIdx + 1);\n\t\t\tif (value[0] === SPACE) value = value.subarray(1);\n\t\t\tif (fieldName === \"event\") event = decoder.decode(value);\n\t\t\telse if (fieldName === \"data\") data.push(value);\n\t\t\telse if (fieldName === \"id\") {\n\t\t\t\tif (value.indexOf(NULL) === -1) lastEventId = decoder.decode(value);\n\t\t\t} else if (fieldName === \"retry\") {\n\t\t\t\tconst retryNum = Number.parseInt(decoder.decode(value), 10);\n\t\t\t\tif (!Number.isNaN(retryNum)) retry = retryNum;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (event) controller.enqueue({\n\t\t\t\tid: lastEventId || void 0,\n\t\t\t\tevent,\n\t\t\t\tdata: data.length ? decodeArraysToJson(decoder, data) : null\n\t\t\t});\n\t\t}\n\t});\n}\nfunction joinArrays(data) {\n\tconst totalLength = data.reduce((acc, curr) => acc + curr.length, 0);\n\tconst merged = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const c of data) {\n\t\tmerged.set(c, offset);\n\t\toffset += c.length;\n\t}\n\treturn merged;\n}\nfunction decodeArraysToJson(decoder, data) {\n\treturn JSON.parse(decoder.decode(joinArrays(data)));\n}\n\n//#endregion\nexport { BytesLineDecoder, SSEDecoder };\n//# sourceMappingURL=sse.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es34.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/stream.js"],"sourcesContent":["import { isNetworkError } from \"./error.js\";\n\n//#region src/utils/stream.ts\n/**\n* Error thrown when maximum reconnection attempts are exceeded.\n*/\nvar MaxReconnectAttemptsError = class extends Error {\n\tconstructor(maxAttempts, cause) {\n\t\tsuper(`Exceeded maximum SSE reconnection attempts (${maxAttempts})`);\n\t\tthis.name = \"MaxReconnectAttemptsError\";\n\t\tthis.cause = cause;\n\t}\n};\n/**\n* Stream with automatic retry logic for SSE connections.\n* Implements reconnection behavior similar to the Python SDK.\n*\n* @param makeRequest Function to make requests. When `params` is undefined/empty, it's the initial request.\n* When `params.reconnectPath` is provided, it's a reconnection request.\n* @param options Configuration options\n* @returns AsyncGenerator yielding stream events\n*/\nasync function* streamWithRetry(makeRequest, options = {}) {\n\tconst maxRetries = options.maxRetries ?? 5;\n\tlet attempt = 0;\n\tlet lastEventId;\n\tlet reconnectPath;\n\twhile (true) {\n\t\tlet shouldRetry = false;\n\t\tlet lastError;\n\t\tlet reader;\n\t\ttry {\n\t\t\tif (options.signal?.aborted) return;\n\t\t\tconst { response, stream } = await makeRequest(reconnectPath ? {\n\t\t\t\tlastEventId,\n\t\t\t\treconnectPath\n\t\t\t} : void 0);\n\t\t\tconst locationHeader = response.headers.get(\"location\");\n\t\t\tif (locationHeader) reconnectPath = locationHeader;\n\t\t\tconst contentType = response.headers.get(\"content-type\")?.split(\";\")[0];\n\t\t\tif (contentType && !contentType.includes(\"text/event-stream\")) throw new Error(`Expected response header Content-Type to contain 'text/event-stream', got '${contentType}'`);\n\t\t\treader = stream.getReader();\n\t\t\ttry {\n\t\t\t\twhile (true) {\n\t\t\t\t\tif (options.signal?.aborted) {\n\t\t\t\t\t\tawait reader.cancel();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\tif (done) break;\n\t\t\t\t\tif (value.id) lastEventId = value.id;\n\t\t\t\t\tyield value;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t} catch (error) {\n\t\t\t\tif (reconnectPath && !options.signal?.aborted) shouldRetry = true;\n\t\t\t\telse throw error;\n\t\t\t} finally {\n\t\t\t\tif (reader) try {\n\t\t\t\t\treader.releaseLock();\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlastError = error;\n\t\t\tif (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;\n\t\t\telse throw error;\n\t\t}\n\t\tif (shouldRetry) {\n\t\t\tattempt += 1;\n\t\t\tif (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);\n\t\t\toptions.onReconnect?.({\n\t\t\t\tattempt,\n\t\t\t\tlastEventId,\n\t\t\t\tcause: lastError\n\t\t\t});\n\t\t\tconst delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\tsetTimeout(resolve, delay);\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n}\nvar IterableReadableStream = class IterableReadableStream extends ReadableStream {\n\treader;\n\tensureReader() {\n\t\tif (!this.reader) this.reader = this.getReader();\n\t}\n\tasync next() {\n\t\tthis.ensureReader();\n\t\ttry {\n\t\t\tconst result = await this.reader.read();\n\t\t\tif (result.done) {\n\t\t\t\tthis.reader.releaseLock();\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void 0\n\t\t\t\t};\n\t\t\t} else return {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: result.value\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tthis.reader.releaseLock();\n\t\t\tthrow e;\n\t\t}\n\t}\n\tasync return() {\n\t\tthis.ensureReader();\n\t\tif (this.locked) {\n\t\t\tconst cancelPromise = this.reader.cancel();\n\t\t\tthis.reader.releaseLock();\n\t\t\tawait cancelPromise;\n\t\t}\n\t\treturn {\n\t\t\tdone: true,\n\t\t\tvalue: void 0\n\t\t};\n\t}\n\tasync throw(e) {\n\t\tthis.ensureReader();\n\t\tif (this.locked) {\n\t\t\tconst cancelPromise = this.reader.cancel();\n\t\t\tthis.reader.releaseLock();\n\t\t\tawait cancelPromise;\n\t\t}\n\t\tthrow e;\n\t}\n\tasync [Symbol.asyncDispose]() {\n\t\tawait this.return();\n\t}\n\t[Symbol.asyncIterator]() {\n\t\treturn this;\n\t}\n\tstatic fromReadableStream(stream) {\n\t\tconst reader = stream.getReader();\n\t\treturn new IterableReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\treturn pump();\n\t\t\t\tfunction pump() {\n\t\t\t\t\treturn reader.read().then(({ done, value }) => {\n\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue(value);\n\t\t\t\t\t\treturn pump();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancel() {\n\t\t\t\treader.releaseLock();\n\t\t\t}\n\t\t});\n\t}\n\tstatic fromAsyncGenerator(generator) {\n\t\treturn new IterableReadableStream({\n\t\t\tasync pull(controller) {\n\t\t\t\tconst { value, done } = await generator.next();\n\t\t\t\tif (done) controller.close();\n\t\t\t\tcontroller.enqueue(value);\n\t\t\t},\n\t\t\tasync cancel(reason) {\n\t\t\t\tawait generator.return(reason);\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { IterableReadableStream, streamWithRetry };\n//# sourceMappingURL=stream.js.map"],"names":[],"mappings":";AAMA,IAAI,4BAA4B,cAAc,MAAM;AAAA,EACnD,YAAY,aAAa,OAAO;AAC/B,UAAM,+CAA+C,WAAW,GAAG;AACnE,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACd;AACD;AAUA,gBAAgB,gBAAgB,aAAa,UAAU,IAAI;AAC1D,QAAM,aAAa,QAAQ,cAAc;AACzC,MAAI,UAAU;AACd,MAAI;AACJ,MAAI;AACJ,SAAO,MAAM;AACZ,QAAI,cAAc;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AACH,UAAI,QAAQ,QAAQ,QAAS;AAC7B,YAAM,EAAE,UAAU,OAAM,IAAK,MAAM,YAAY,gBAAgB;AAAA,QAC9D;AAAA,QACA;AAAA,MACJ,IAAO,MAAM;AACV,YAAM,iBAAiB,SAAS,QAAQ,IAAI,UAAU;AACtD,UAAI,eAAgB,iBAAgB;AACpC,YAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,GAAG,MAAM,GAAG,EAAE,CAAC;AACtE,UAAI,eAAe,CAAC,YAAY,SAAS,mBAAmB,EAAG,OAAM,IAAI,MAAM,8EAA8E,WAAW,GAAG;AAC3K,eAAS,OAAO,UAAS;AACzB,UAAI;AACH,eAAO,MAAM;AACZ,cAAI,QAAQ,QAAQ,SAAS;AAC5B,kBAAM,OAAO,OAAM;AACnB;AAAA,UACD;AACA,gBAAM,EAAE,MAAM,MAAK,IAAK,MAAM,OAAO,KAAI;AACzC,cAAI,KAAM;AACV,cAAI,MAAM,GAAI,eAAc,MAAM;AAClC,gBAAM;AAAA,QACP;AACA;AAAA,MACD,SAAS,OAAO;AACf,YAAI,iBAAiB,CAAC,QAAQ,QAAQ,QAAS,eAAc;AAAA,YACxD,OAAM;AAAA,MACZ,UAAC;AACA,YAAI,OAAQ,KAAI;AACf,iBAAO,YAAW;AAAA,QACnB,QAAQ;AAAA,QAAC;AAAA,MACV;AAAA,IACD,SAAS,OAAO;AACf,kBAAY;AACZ,UAAI,eAAe,KAAK,KAAK,iBAAiB,CAAC,QAAQ,QAAQ,QAAS,eAAc;AAAA,UACjF,OAAM;AAAA,IACZ;AACA,QAAI,aAAa;AAChB,iBAAW;AACX,UAAI,UAAU,WAAY,OAAM,IAAI,0BAA0B,YAAY,SAAS;AACnF,cAAQ,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACX,CAAI;AACD,YAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,UAAU,IAAI,GAAG,IAAI,KAAK,OAAM,IAAK;AACxE,YAAM,IAAI,QAAQ,CAAC,YAAY;AAC9B,mBAAW,SAAS,KAAK;AAAA,MAC1B,CAAC;AACD;AAAA,IACD;AACA;AAAA,EACD;AACD;","x_google_ignoreList":[0]}
@@ -1,75 +1,22 @@
1
- import { isNetworkError } from "./index.es36.js";
2
- var MaxReconnectAttemptsError = class extends Error {
3
- constructor(maxAttempts, cause) {
4
- super(`Exceeded maximum SSE reconnection attempts (${maxAttempts})`);
5
- this.name = "MaxReconnectAttemptsError";
6
- this.cause = cause;
7
- }
1
+ const isError = (error) => {
2
+ if ("isError" in Error && typeof Error.isError === "function") return Error.isError(error);
3
+ const stringTag = Object.prototype.toString.call(error);
4
+ return stringTag === "[object Error]" || stringTag === "[object DOMException]" || stringTag === "[object DOMError]" || stringTag === "[object Exception]";
5
+ };
6
+ const getCauseError = (error) => {
7
+ const { cause } = error;
8
+ if (typeof cause !== "object" || cause == null) return null;
9
+ if (!isError(cause)) return null;
10
+ return cause;
11
+ };
12
+ const isNetworkError = (error) => {
13
+ if (!isError(error)) return false;
14
+ if (error.name !== "TypeError" || typeof error.message !== "string") return false;
15
+ const msg = error.message.toLowerCase();
16
+ const causeMsg = getCauseError(error)?.message?.toLowerCase() ?? "";
17
+ return msg.includes("fetch") || msg.includes("network") || msg.includes("connection") || msg.includes("error sending request") || msg.includes("load failed") || msg.includes("terminated") || causeMsg.includes("other side closed") || causeMsg.includes("socket");
8
18
  };
9
- async function* streamWithRetry(makeRequest, options = {}) {
10
- const maxRetries = options.maxRetries ?? 5;
11
- let attempt = 0;
12
- let lastEventId;
13
- let reconnectPath;
14
- while (true) {
15
- let shouldRetry = false;
16
- let lastError;
17
- let reader;
18
- try {
19
- if (options.signal?.aborted) return;
20
- const { response, stream } = await makeRequest(reconnectPath ? {
21
- lastEventId,
22
- reconnectPath
23
- } : void 0);
24
- const locationHeader = response.headers.get("location");
25
- if (locationHeader) reconnectPath = locationHeader;
26
- const contentType = response.headers.get("content-type")?.split(";")[0];
27
- if (contentType && !contentType.includes("text/event-stream")) throw new Error(`Expected response header Content-Type to contain 'text/event-stream', got '${contentType}'`);
28
- reader = stream.getReader();
29
- try {
30
- while (true) {
31
- if (options.signal?.aborted) {
32
- await reader.cancel();
33
- return;
34
- }
35
- const { done, value } = await reader.read();
36
- if (done) break;
37
- if (value.id) lastEventId = value.id;
38
- yield value;
39
- }
40
- break;
41
- } catch (error) {
42
- if (reconnectPath && !options.signal?.aborted) shouldRetry = true;
43
- else throw error;
44
- } finally {
45
- if (reader) try {
46
- reader.releaseLock();
47
- } catch {
48
- }
49
- }
50
- } catch (error) {
51
- lastError = error;
52
- if (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;
53
- else throw error;
54
- }
55
- if (shouldRetry) {
56
- attempt += 1;
57
- if (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);
58
- options.onReconnect?.({
59
- attempt,
60
- lastEventId,
61
- cause: lastError
62
- });
63
- const delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;
64
- await new Promise((resolve) => {
65
- setTimeout(resolve, delay);
66
- });
67
- continue;
68
- }
69
- break;
70
- }
71
- }
72
19
  export {
73
- streamWithRetry
20
+ isNetworkError
74
21
  };
75
22
  //# sourceMappingURL=index.es35.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es35.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/stream.js"],"sourcesContent":["import { isNetworkError } from \"./error.js\";\n\n//#region src/utils/stream.ts\n/**\n* Error thrown when maximum reconnection attempts are exceeded.\n*/\nvar MaxReconnectAttemptsError = class extends Error {\n\tconstructor(maxAttempts, cause) {\n\t\tsuper(`Exceeded maximum SSE reconnection attempts (${maxAttempts})`);\n\t\tthis.name = \"MaxReconnectAttemptsError\";\n\t\tthis.cause = cause;\n\t}\n};\n/**\n* Stream with automatic retry logic for SSE connections.\n* Implements reconnection behavior similar to the Python SDK.\n*\n* @param makeRequest Function to make requests. When `params` is undefined/empty, it's the initial request.\n* When `params.reconnectPath` is provided, it's a reconnection request.\n* @param options Configuration options\n* @returns AsyncGenerator yielding stream events\n*/\nasync function* streamWithRetry(makeRequest, options = {}) {\n\tconst maxRetries = options.maxRetries ?? 5;\n\tlet attempt = 0;\n\tlet lastEventId;\n\tlet reconnectPath;\n\twhile (true) {\n\t\tlet shouldRetry = false;\n\t\tlet lastError;\n\t\tlet reader;\n\t\ttry {\n\t\t\tif (options.signal?.aborted) return;\n\t\t\tconst { response, stream } = await makeRequest(reconnectPath ? {\n\t\t\t\tlastEventId,\n\t\t\t\treconnectPath\n\t\t\t} : void 0);\n\t\t\tconst locationHeader = response.headers.get(\"location\");\n\t\t\tif (locationHeader) reconnectPath = locationHeader;\n\t\t\tconst contentType = response.headers.get(\"content-type\")?.split(\";\")[0];\n\t\t\tif (contentType && !contentType.includes(\"text/event-stream\")) throw new Error(`Expected response header Content-Type to contain 'text/event-stream', got '${contentType}'`);\n\t\t\treader = stream.getReader();\n\t\t\ttry {\n\t\t\t\twhile (true) {\n\t\t\t\t\tif (options.signal?.aborted) {\n\t\t\t\t\t\tawait reader.cancel();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\tif (done) break;\n\t\t\t\t\tif (value.id) lastEventId = value.id;\n\t\t\t\t\tyield value;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t} catch (error) {\n\t\t\t\tif (reconnectPath && !options.signal?.aborted) shouldRetry = true;\n\t\t\t\telse throw error;\n\t\t\t} finally {\n\t\t\t\tif (reader) try {\n\t\t\t\t\treader.releaseLock();\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlastError = error;\n\t\t\tif (isNetworkError(error) && reconnectPath && !options.signal?.aborted) shouldRetry = true;\n\t\t\telse throw error;\n\t\t}\n\t\tif (shouldRetry) {\n\t\t\tattempt += 1;\n\t\t\tif (attempt > maxRetries) throw new MaxReconnectAttemptsError(maxRetries, lastError);\n\t\t\toptions.onReconnect?.({\n\t\t\t\tattempt,\n\t\t\t\tlastEventId,\n\t\t\t\tcause: lastError\n\t\t\t});\n\t\t\tconst delay = Math.min(1e3 * 2 ** (attempt - 1), 5e3) + Math.random() * 1e3;\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\tsetTimeout(resolve, delay);\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n}\nvar IterableReadableStream = class IterableReadableStream extends ReadableStream {\n\treader;\n\tensureReader() {\n\t\tif (!this.reader) this.reader = this.getReader();\n\t}\n\tasync next() {\n\t\tthis.ensureReader();\n\t\ttry {\n\t\t\tconst result = await this.reader.read();\n\t\t\tif (result.done) {\n\t\t\t\tthis.reader.releaseLock();\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void 0\n\t\t\t\t};\n\t\t\t} else return {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: result.value\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tthis.reader.releaseLock();\n\t\t\tthrow e;\n\t\t}\n\t}\n\tasync return() {\n\t\tthis.ensureReader();\n\t\tif (this.locked) {\n\t\t\tconst cancelPromise = this.reader.cancel();\n\t\t\tthis.reader.releaseLock();\n\t\t\tawait cancelPromise;\n\t\t}\n\t\treturn {\n\t\t\tdone: true,\n\t\t\tvalue: void 0\n\t\t};\n\t}\n\tasync throw(e) {\n\t\tthis.ensureReader();\n\t\tif (this.locked) {\n\t\t\tconst cancelPromise = this.reader.cancel();\n\t\t\tthis.reader.releaseLock();\n\t\t\tawait cancelPromise;\n\t\t}\n\t\tthrow e;\n\t}\n\tasync [Symbol.asyncDispose]() {\n\t\tawait this.return();\n\t}\n\t[Symbol.asyncIterator]() {\n\t\treturn this;\n\t}\n\tstatic fromReadableStream(stream) {\n\t\tconst reader = stream.getReader();\n\t\treturn new IterableReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\treturn pump();\n\t\t\t\tfunction pump() {\n\t\t\t\t\treturn reader.read().then(({ done, value }) => {\n\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue(value);\n\t\t\t\t\t\treturn pump();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcancel() {\n\t\t\t\treader.releaseLock();\n\t\t\t}\n\t\t});\n\t}\n\tstatic fromAsyncGenerator(generator) {\n\t\treturn new IterableReadableStream({\n\t\t\tasync pull(controller) {\n\t\t\t\tconst { value, done } = await generator.next();\n\t\t\t\tif (done) controller.close();\n\t\t\t\tcontroller.enqueue(value);\n\t\t\t},\n\t\t\tasync cancel(reason) {\n\t\t\t\tawait generator.return(reason);\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { IterableReadableStream, streamWithRetry };\n//# sourceMappingURL=stream.js.map"],"names":[],"mappings":";AAMA,IAAI,4BAA4B,cAAc,MAAM;AAAA,EACnD,YAAY,aAAa,OAAO;AAC/B,UAAM,+CAA+C,WAAW,GAAG;AACnE,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACd;AACD;AAUA,gBAAgB,gBAAgB,aAAa,UAAU,IAAI;AAC1D,QAAM,aAAa,QAAQ,cAAc;AACzC,MAAI,UAAU;AACd,MAAI;AACJ,MAAI;AACJ,SAAO,MAAM;AACZ,QAAI,cAAc;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AACH,UAAI,QAAQ,QAAQ,QAAS;AAC7B,YAAM,EAAE,UAAU,OAAM,IAAK,MAAM,YAAY,gBAAgB;AAAA,QAC9D;AAAA,QACA;AAAA,MACJ,IAAO,MAAM;AACV,YAAM,iBAAiB,SAAS,QAAQ,IAAI,UAAU;AACtD,UAAI,eAAgB,iBAAgB;AACpC,YAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,GAAG,MAAM,GAAG,EAAE,CAAC;AACtE,UAAI,eAAe,CAAC,YAAY,SAAS,mBAAmB,EAAG,OAAM,IAAI,MAAM,8EAA8E,WAAW,GAAG;AAC3K,eAAS,OAAO,UAAS;AACzB,UAAI;AACH,eAAO,MAAM;AACZ,cAAI,QAAQ,QAAQ,SAAS;AAC5B,kBAAM,OAAO,OAAM;AACnB;AAAA,UACD;AACA,gBAAM,EAAE,MAAM,MAAK,IAAK,MAAM,OAAO,KAAI;AACzC,cAAI,KAAM;AACV,cAAI,MAAM,GAAI,eAAc,MAAM;AAClC,gBAAM;AAAA,QACP;AACA;AAAA,MACD,SAAS,OAAO;AACf,YAAI,iBAAiB,CAAC,QAAQ,QAAQ,QAAS,eAAc;AAAA,YACxD,OAAM;AAAA,MACZ,UAAC;AACA,YAAI,OAAQ,KAAI;AACf,iBAAO,YAAW;AAAA,QACnB,QAAQ;AAAA,QAAC;AAAA,MACV;AAAA,IACD,SAAS,OAAO;AACf,kBAAY;AACZ,UAAI,eAAe,KAAK,KAAK,iBAAiB,CAAC,QAAQ,QAAQ,QAAS,eAAc;AAAA,UACjF,OAAM;AAAA,IACZ;AACA,QAAI,aAAa;AAChB,iBAAW;AACX,UAAI,UAAU,WAAY,OAAM,IAAI,0BAA0B,YAAY,SAAS;AACnF,cAAQ,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACX,CAAI;AACD,YAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,UAAU,IAAI,GAAG,IAAI,KAAK,OAAM,IAAK;AACxE,YAAM,IAAI,QAAQ,CAAC,YAAY;AAC9B,mBAAW,SAAS,KAAK;AAAA,MAC1B,CAAC;AACD;AAAA,IACD;AACA;AAAA,EACD;AACD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es35.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/utils/error.js"],"sourcesContent":["//#region src/utils/error.ts\nconst isError = (error) => {\n\tif (\"isError\" in Error && typeof Error.isError === \"function\") return Error.isError(error);\n\tconst stringTag = Object.prototype.toString.call(error);\n\treturn stringTag === \"[object Error]\" || stringTag === \"[object DOMException]\" || stringTag === \"[object DOMError]\" || stringTag === \"[object Exception]\";\n};\nconst getCauseError = (error) => {\n\tconst { cause } = error;\n\tif (typeof cause !== \"object\" || cause == null) return null;\n\tif (!isError(cause)) return null;\n\treturn cause;\n};\nconst isNetworkError = (error) => {\n\tif (!isError(error)) return false;\n\tif (error.name !== \"TypeError\" || typeof error.message !== \"string\") return false;\n\tconst msg = error.message.toLowerCase();\n\tconst causeMsg = getCauseError(error)?.message?.toLowerCase() ?? \"\";\n\treturn msg.includes(\"fetch\") || msg.includes(\"network\") || msg.includes(\"connection\") || msg.includes(\"error sending request\") || msg.includes(\"load failed\") || msg.includes(\"terminated\") || causeMsg.includes(\"other side closed\") || causeMsg.includes(\"socket\");\n};\n\n//#endregion\nexport { isNetworkError };\n//# sourceMappingURL=error.js.map"],"names":[],"mappings":"AACA,MAAM,UAAU,CAAC,UAAU;AAC1B,MAAI,aAAa,SAAS,OAAO,MAAM,YAAY,WAAY,QAAO,MAAM,QAAQ,KAAK;AACzF,QAAM,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK;AACtD,SAAO,cAAc,oBAAoB,cAAc,2BAA2B,cAAc,uBAAuB,cAAc;AACtI;AACA,MAAM,gBAAgB,CAAC,UAAU;AAChC,QAAM,EAAE,MAAK,IAAK;AAClB,MAAI,OAAO,UAAU,YAAY,SAAS,KAAM,QAAO;AACvD,MAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,SAAO;AACR;AACK,MAAC,iBAAiB,CAAC,UAAU;AACjC,MAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,MAAI,MAAM,SAAS,eAAe,OAAO,MAAM,YAAY,SAAU,QAAO;AAC5E,QAAM,MAAM,MAAM,QAAQ,YAAW;AACrC,QAAM,WAAW,cAAc,KAAK,GAAG,SAAS,YAAW,KAAM;AACjE,SAAO,IAAI,SAAS,OAAO,KAAK,IAAI,SAAS,SAAS,KAAK,IAAI,SAAS,YAAY,KAAK,IAAI,SAAS,uBAAuB,KAAK,IAAI,SAAS,aAAa,KAAK,IAAI,SAAS,YAAY,KAAK,SAAS,SAAS,mBAAmB,KAAK,SAAS,SAAS,QAAQ;AACpQ;","x_google_ignoreList":[0]}