langgraph-ui-components 0.0.3 → 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 (536) hide show
  1. package/README.md +32 -0
  2. package/dist/index.es10.js +31 -16
  3. package/dist/index.es10.js.map +1 -1
  4. package/dist/index.es100.js +37 -5
  5. package/dist/index.es100.js.map +1 -1
  6. package/dist/index.es101.js +160 -67
  7. package/dist/index.es101.js.map +1 -1
  8. package/dist/index.es102.js +196 -30
  9. package/dist/index.es102.js.map +1 -1
  10. package/dist/index.es103.js +14 -5
  11. package/dist/index.es103.js.map +1 -1
  12. package/dist/index.es104.js +32 -2
  13. package/dist/index.es104.js.map +1 -1
  14. package/dist/index.es105.js +33 -10
  15. package/dist/index.es105.js.map +1 -1
  16. package/dist/index.es106.js +3110 -454
  17. package/dist/index.es106.js.map +1 -1
  18. package/dist/index.es107.js +5 -5
  19. package/dist/index.es108.js +2 -2
  20. package/dist/index.es109.js +12 -142
  21. package/dist/index.es109.js.map +1 -1
  22. package/dist/index.es11.js +146 -120
  23. package/dist/index.es11.js.map +1 -1
  24. package/dist/index.es110.js +11 -906
  25. package/dist/index.es110.js.map +1 -1
  26. package/dist/index.es111.js +483 -262
  27. package/dist/index.es111.js.map +1 -1
  28. package/dist/index.es112.js +7 -4
  29. package/dist/index.es112.js.map +1 -1
  30. package/dist/index.es113.js +2 -446
  31. package/dist/index.es113.js.map +1 -1
  32. package/dist/index.es114.js +141 -41
  33. package/dist/index.es114.js.map +1 -1
  34. package/dist/index.es115.js +904 -20
  35. package/dist/index.es115.js.map +1 -1
  36. package/dist/index.es116.js +267 -66
  37. package/dist/index.es116.js.map +1 -1
  38. package/dist/index.es117.js +3 -130
  39. package/dist/index.es117.js.map +1 -1
  40. package/dist/index.es118.js +437 -42
  41. package/dist/index.es118.js.map +1 -1
  42. package/dist/index.es119.js +46 -10
  43. package/dist/index.es119.js.map +1 -1
  44. package/dist/index.es12.js +13 -103
  45. package/dist/index.es12.js.map +1 -1
  46. package/dist/index.es120.js +22 -45
  47. package/dist/index.es120.js.map +1 -1
  48. package/dist/index.es121.js +72 -92
  49. package/dist/index.es121.js.map +1 -1
  50. package/dist/index.es122.js +126 -50
  51. package/dist/index.es122.js.map +1 -1
  52. package/dist/index.es123.js +46 -13
  53. package/dist/index.es123.js.map +1 -1
  54. package/dist/index.es124.js +9 -14
  55. package/dist/index.es124.js.map +1 -1
  56. package/dist/index.es125.js +45 -89
  57. package/dist/index.es125.js.map +1 -1
  58. package/dist/index.es126.js +99 -2
  59. package/dist/index.es126.js.map +1 -1
  60. package/dist/index.es127.js +48 -51
  61. package/dist/index.es127.js.map +1 -1
  62. package/dist/index.es128.js +14 -99
  63. package/dist/index.es128.js.map +1 -1
  64. package/dist/index.es129.js +88 -190
  65. package/dist/index.es129.js.map +1 -1
  66. package/dist/index.es13.js +126 -33
  67. package/dist/index.es13.js.map +1 -1
  68. package/dist/index.es130.js +2 -110
  69. package/dist/index.es130.js.map +1 -1
  70. package/dist/index.es131.js +163 -34
  71. package/dist/index.es131.js.map +1 -1
  72. package/dist/index.es132.js +2 -10
  73. package/dist/index.es132.js.map +1 -1
  74. package/dist/index.es133.js +55 -10
  75. package/dist/index.es133.js.map +1 -1
  76. package/dist/index.es134.js +99 -11
  77. package/dist/index.es134.js.map +1 -1
  78. package/dist/index.es135.js +181 -81
  79. package/dist/index.es135.js.map +1 -1
  80. package/dist/index.es136.js +105 -270
  81. package/dist/index.es136.js.map +1 -1
  82. package/dist/index.es137.js +35 -2
  83. package/dist/index.es137.js.map +1 -1
  84. package/dist/index.es138.js +10 -164
  85. package/dist/index.es138.js.map +1 -1
  86. package/dist/index.es139.js +11 -51
  87. package/dist/index.es139.js.map +1 -1
  88. package/dist/index.es140.js +11 -39
  89. package/dist/index.es140.js.map +1 -1
  90. package/dist/index.es141.js +89 -33
  91. package/dist/index.es141.js.map +1 -1
  92. package/dist/index.es142.js +264 -29
  93. package/dist/index.es142.js.map +1 -1
  94. package/dist/index.es143.js +2 -24
  95. package/dist/index.es143.js.map +1 -1
  96. package/dist/index.es144.js +158 -585
  97. package/dist/index.es144.js.map +1 -1
  98. package/dist/index.es145.js +44 -118
  99. package/dist/index.es145.js.map +1 -1
  100. package/dist/index.es146.js +34 -158
  101. package/dist/index.es146.js.map +1 -1
  102. package/dist/index.es147.js +35 -2
  103. package/dist/index.es147.js.map +1 -1
  104. package/dist/index.es148.js +40 -2
  105. package/dist/index.es148.js.map +1 -1
  106. package/dist/index.es149.js +24 -2
  107. package/dist/index.es149.js.map +1 -1
  108. package/dist/index.es15.js +15 -15
  109. package/dist/index.es150.js +589 -20
  110. package/dist/index.es150.js.map +1 -1
  111. package/dist/index.es151.js +125 -2
  112. package/dist/index.es151.js.map +1 -1
  113. package/dist/index.es152.js +3 -24
  114. package/dist/index.es152.js.map +1 -1
  115. package/dist/index.es153.js +2 -4
  116. package/dist/index.es153.js.map +1 -1
  117. package/dist/index.es154.js +2 -5
  118. package/dist/index.es154.js.map +1 -1
  119. package/dist/index.es155.js +22 -13
  120. package/dist/index.es155.js.map +1 -1
  121. package/dist/index.es156.js +2 -6
  122. package/dist/index.es156.js.map +1 -1
  123. package/dist/index.es157.js +25 -8
  124. package/dist/index.es157.js.map +1 -1
  125. package/dist/index.es158.js +5 -64
  126. package/dist/index.es158.js.map +1 -1
  127. package/dist/index.es159.js +12 -21
  128. package/dist/index.es159.js.map +1 -1
  129. package/dist/index.es16.js +2 -2
  130. package/dist/index.es160.js +5 -5
  131. package/dist/index.es160.js.map +1 -1
  132. package/dist/index.es161.js +8 -349
  133. package/dist/index.es161.js.map +1 -1
  134. package/dist/index.es162.js +1 -1
  135. package/dist/index.es163.js +1 -1
  136. package/dist/index.es164.js +3 -3
  137. package/dist/index.es165.js +63 -6
  138. package/dist/index.es165.js.map +1 -1
  139. package/dist/index.es166.js +21 -102
  140. package/dist/index.es166.js.map +1 -1
  141. package/dist/index.es167.js +5 -118
  142. package/dist/index.es167.js.map +1 -1
  143. package/dist/index.es168.js +330 -117
  144. package/dist/index.es168.js.map +1 -1
  145. package/dist/index.es169.js +6 -114
  146. package/dist/index.es169.js.map +1 -1
  147. package/dist/index.es17.js +2 -2
  148. package/dist/index.es170.js +103 -6
  149. package/dist/index.es170.js.map +1 -1
  150. package/dist/index.es171.js +119 -2
  151. package/dist/index.es171.js.map +1 -1
  152. package/dist/index.es172.js +134 -140
  153. package/dist/index.es172.js.map +1 -1
  154. package/dist/index.es173.js +115 -2
  155. package/dist/index.es173.js.map +1 -1
  156. package/dist/index.es174.js +6 -3737
  157. package/dist/index.es174.js.map +1 -1
  158. package/dist/index.es175.js +2 -342
  159. package/dist/index.es175.js.map +1 -1
  160. package/dist/index.es176.js +138 -105
  161. package/dist/index.es176.js.map +1 -1
  162. package/dist/index.es177.js +2 -133
  163. package/dist/index.es177.js.map +1 -1
  164. package/dist/index.es178.js +3734 -12
  165. package/dist/index.es178.js.map +1 -1
  166. package/dist/index.es179.js +326 -136
  167. package/dist/index.es179.js.map +1 -1
  168. package/dist/index.es180.js +107 -13
  169. package/dist/index.es180.js.map +1 -1
  170. package/dist/index.es181.js +131 -6
  171. package/dist/index.es181.js.map +1 -1
  172. package/dist/index.es182.js +13 -19
  173. package/dist/index.es182.js.map +1 -1
  174. package/dist/index.es183.js +139 -77
  175. package/dist/index.es183.js.map +1 -1
  176. package/dist/index.es184.js +13 -241
  177. package/dist/index.es184.js.map +1 -1
  178. package/dist/index.es185.js +8 -24
  179. package/dist/index.es185.js.map +1 -1
  180. package/dist/index.es186.js +21 -6
  181. package/dist/index.es186.js.map +1 -1
  182. package/dist/index.es187.js +90 -4
  183. package/dist/index.es187.js.map +1 -1
  184. package/dist/index.es188.js +240 -15
  185. package/dist/index.es188.js.map +1 -1
  186. package/dist/index.es189.js +24 -8
  187. package/dist/index.es189.js.map +1 -1
  188. package/dist/index.es19.js +15 -119
  189. package/dist/index.es19.js.map +1 -1
  190. package/dist/index.es190.js +5 -31
  191. package/dist/index.es190.js.map +1 -1
  192. package/dist/index.es191.js +4 -6
  193. package/dist/index.es191.js.map +1 -1
  194. package/dist/index.es192.js +17 -105
  195. package/dist/index.es192.js.map +1 -1
  196. package/dist/index.es193.js +6 -11
  197. package/dist/index.es193.js.map +1 -1
  198. package/dist/index.es194.js +32 -18
  199. package/dist/index.es194.js.map +1 -1
  200. package/dist/index.es195.js +6 -31
  201. package/dist/index.es195.js.map +1 -1
  202. package/dist/index.es196.js +106 -4
  203. package/dist/index.es196.js.map +1 -1
  204. package/dist/index.es197.js +12 -4
  205. package/dist/index.es197.js.map +1 -1
  206. package/dist/index.es198.js +17 -4
  207. package/dist/index.es198.js.map +1 -1
  208. package/dist/index.es199.js +21 -27
  209. package/dist/index.es199.js.map +1 -1
  210. package/dist/index.es2.js +25 -16
  211. package/dist/index.es2.js.map +1 -1
  212. package/dist/index.es20.js +37 -17
  213. package/dist/index.es20.js.map +1 -1
  214. package/dist/index.es200.js +3 -7
  215. package/dist/index.es200.js.map +1 -1
  216. package/dist/index.es201.js +3 -4
  217. package/dist/index.es201.js.map +1 -1
  218. package/dist/index.es202.js +5 -7
  219. package/dist/index.es202.js.map +1 -1
  220. package/dist/index.es203.js +36 -41
  221. package/dist/index.es203.js.map +1 -1
  222. package/dist/index.es204.js +5 -10
  223. package/dist/index.es204.js.map +1 -1
  224. package/dist/index.es205.js +5 -241
  225. package/dist/index.es205.js.map +1 -1
  226. package/dist/index.es206.js +5 -49
  227. package/dist/index.es206.js.map +1 -1
  228. package/dist/index.es207.js +29 -22
  229. package/dist/index.es207.js.map +1 -1
  230. package/dist/index.es208.js +10 -10
  231. package/dist/index.es208.js.map +1 -1
  232. package/dist/index.es209.js +241 -7
  233. package/dist/index.es209.js.map +1 -1
  234. package/dist/index.es21.js +27 -67
  235. package/dist/index.es21.js.map +1 -1
  236. package/dist/index.es210.js +50 -6
  237. package/dist/index.es210.js.map +1 -1
  238. package/dist/index.es211.js +30 -60
  239. package/dist/index.es211.js.map +1 -1
  240. package/dist/index.es212.js +11 -39
  241. package/dist/index.es212.js.map +1 -1
  242. package/dist/index.es213.js +7 -31
  243. package/dist/index.es213.js.map +1 -1
  244. package/dist/index.es214.js +6 -61
  245. package/dist/index.es214.js.map +1 -1
  246. package/dist/index.es215.js +58 -8
  247. package/dist/index.es215.js.map +1 -1
  248. package/dist/index.es216.js +34 -16
  249. package/dist/index.es216.js.map +1 -1
  250. package/dist/index.es217.js +31 -4
  251. package/dist/index.es217.js.map +1 -1
  252. package/dist/index.es218.js +58 -13
  253. package/dist/index.es218.js.map +1 -1
  254. package/dist/index.es219.js +14 -32
  255. package/dist/index.es219.js.map +1 -1
  256. package/dist/index.es22.js +140 -30
  257. package/dist/index.es22.js.map +1 -1
  258. package/dist/index.es220.js +23 -5
  259. package/dist/index.es220.js.map +1 -1
  260. package/dist/index.es221.js +4 -4
  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 -7
  265. package/dist/index.es223.js.map +1 -1
  266. package/dist/index.es224.js +4 -91
  267. package/dist/index.es224.js.map +1 -1
  268. package/dist/index.es225.js +4 -17
  269. package/dist/index.es225.js.map +1 -1
  270. package/dist/index.es226.js +5 -762
  271. package/dist/index.es226.js.map +1 -1
  272. package/dist/index.es227.js +8 -66
  273. package/dist/index.es227.js.map +1 -1
  274. package/dist/index.es228.js +83 -165
  275. package/dist/index.es228.js.map +1 -1
  276. package/dist/index.es229.js +16 -36
  277. package/dist/index.es229.js.map +1 -1
  278. package/dist/index.es23.js +17 -32
  279. package/dist/index.es23.js.map +1 -1
  280. package/dist/index.es230.js +761 -136
  281. package/dist/index.es230.js.map +1 -1
  282. package/dist/index.es231.js +66 -93
  283. package/dist/index.es231.js.map +1 -1
  284. package/dist/index.es232.js +172 -31
  285. package/dist/index.es232.js.map +1 -1
  286. package/dist/index.es233.js +129 -277
  287. package/dist/index.es233.js.map +1 -1
  288. package/dist/index.es234.js +92 -25
  289. package/dist/index.es234.js.map +1 -1
  290. package/dist/index.es235.js +31 -22
  291. package/dist/index.es235.js.map +1 -1
  292. package/dist/index.es236.js +284 -14
  293. package/dist/index.es236.js.map +1 -1
  294. package/dist/index.es237.js +24 -13
  295. package/dist/index.es237.js.map +1 -1
  296. package/dist/index.es238.js +17 -19
  297. package/dist/index.es238.js.map +1 -1
  298. package/dist/index.es239.js +12 -43
  299. package/dist/index.es239.js.map +1 -1
  300. package/dist/index.es24.js +57 -136
  301. package/dist/index.es24.js.map +1 -1
  302. package/dist/index.es240.js +14 -11
  303. package/dist/index.es240.js.map +1 -1
  304. package/dist/index.es241.js +24 -10
  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 +11 -14
  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 -11
  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 +10 -14
  317. package/dist/index.es247.js.map +1 -1
  318. package/dist/index.es248.js +11 -11
  319. package/dist/index.es248.js.map +1 -1
  320. package/dist/index.es249.js +11 -11
  321. package/dist/index.es249.js.map +1 -1
  322. package/dist/index.es25.js +298 -94
  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 +11 -11
  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 +11 -56
  337. package/dist/index.es256.js.map +1 -1
  338. package/dist/index.es257.js +11 -49
  339. package/dist/index.es257.js.map +1 -1
  340. package/dist/index.es258.js +11 -119
  341. package/dist/index.es258.js.map +1 -1
  342. package/dist/index.es259.js +56 -384
  343. package/dist/index.es259.js.map +1 -1
  344. package/dist/index.es26.js +116 -65
  345. package/dist/index.es26.js.map +1 -1
  346. package/dist/index.es260.js +47 -16
  347. package/dist/index.es260.js.map +1 -1
  348. package/dist/index.es261.js +118 -10
  349. package/dist/index.es261.js.map +1 -1
  350. package/dist/index.es262.js +379 -26
  351. package/dist/index.es262.js.map +1 -1
  352. package/dist/index.es263.js +13 -26
  353. package/dist/index.es263.js.map +1 -1
  354. package/dist/index.es264.js +10 -61
  355. package/dist/index.es264.js.map +1 -1
  356. package/dist/index.es265.js +25 -11
  357. package/dist/index.es265.js.map +1 -1
  358. package/dist/index.es266.js +25 -71
  359. package/dist/index.es266.js.map +1 -1
  360. package/dist/index.es267.js +62 -11
  361. package/dist/index.es267.js.map +1 -1
  362. package/dist/index.es268.js +17 -11
  363. package/dist/index.es268.js.map +1 -1
  364. package/dist/index.es269.js +75 -13
  365. package/dist/index.es269.js.map +1 -1
  366. package/dist/index.es27.js +91 -168
  367. package/dist/index.es27.js.map +1 -1
  368. package/dist/index.es270.js +11 -52
  369. package/dist/index.es270.js.map +1 -1
  370. package/dist/index.es271.js +11 -166
  371. package/dist/index.es271.js.map +1 -1
  372. package/dist/index.es272.js +16 -2
  373. package/dist/index.es272.js.map +1 -1
  374. package/dist/index.es273.js +51 -9
  375. package/dist/index.es273.js.map +1 -1
  376. package/dist/index.es274.js +165 -18
  377. package/dist/index.es274.js.map +1 -1
  378. package/dist/index.es275.js +36 -37
  379. package/dist/index.es275.js.map +1 -1
  380. package/dist/index.es276.js +5 -0
  381. package/dist/index.es276.js.map +1 -0
  382. package/dist/index.es277.js +14 -0
  383. package/dist/index.es277.js.map +1 -0
  384. package/dist/index.es278.js +23 -0
  385. package/dist/index.es278.js.map +1 -0
  386. package/dist/index.es279.js +42 -0
  387. package/dist/index.es279.js.map +1 -0
  388. package/dist/index.es28.js +68 -24
  389. package/dist/index.es28.js.map +1 -1
  390. package/dist/index.es29.js +178 -12
  391. package/dist/index.es29.js.map +1 -1
  392. package/dist/index.es30.js +23 -437
  393. package/dist/index.es30.js.map +1 -1
  394. package/dist/index.es31.js +13 -15
  395. package/dist/index.es31.js.map +1 -1
  396. package/dist/index.es32.js +429 -107
  397. package/dist/index.es32.js.map +1 -1
  398. package/dist/index.es33.js +112 -65
  399. package/dist/index.es33.js.map +1 -1
  400. package/dist/index.es34.js +71 -18
  401. package/dist/index.es34.js.map +1 -1
  402. package/dist/index.es35.js +17 -260
  403. package/dist/index.es35.js.map +1 -1
  404. package/dist/index.es36.js +249 -31
  405. package/dist/index.es36.js.map +1 -1
  406. package/dist/index.es37.js +27 -199
  407. package/dist/index.es37.js.map +1 -1
  408. package/dist/index.es38.js +198 -50
  409. package/dist/index.es38.js.map +1 -1
  410. package/dist/index.es39.js +45 -120
  411. package/dist/index.es39.js.map +1 -1
  412. package/dist/index.es40.js +132 -14
  413. package/dist/index.es40.js.map +1 -1
  414. package/dist/index.es41.js +19 -225
  415. package/dist/index.es41.js.map +1 -1
  416. package/dist/index.es42.js +229 -8
  417. package/dist/index.es42.js.map +1 -1
  418. package/dist/index.es43.js +7 -1190
  419. package/dist/index.es43.js.map +1 -1
  420. package/dist/index.es44.js +1191 -6
  421. package/dist/index.es44.js.map +1 -1
  422. package/dist/index.es45.js +6 -146
  423. package/dist/index.es45.js.map +1 -1
  424. package/dist/index.es46.js +147 -7
  425. package/dist/index.es46.js.map +1 -1
  426. package/dist/index.es47.js +15 -92
  427. package/dist/index.es47.js.map +1 -1
  428. package/dist/index.es49.js +5 -35
  429. package/dist/index.es49.js.map +1 -1
  430. package/dist/index.es50.js +7 -71
  431. package/dist/index.es50.js.map +1 -1
  432. package/dist/index.es51.js +89 -33
  433. package/dist/index.es51.js.map +1 -1
  434. package/dist/index.es52.js +3 -305
  435. package/dist/index.es52.js.map +1 -1
  436. package/dist/index.es53.js +36 -9
  437. package/dist/index.es53.js.map +1 -1
  438. package/dist/index.es54.js +64 -83
  439. package/dist/index.es54.js.map +1 -1
  440. package/dist/index.es55.js +36 -6
  441. package/dist/index.es55.js.map +1 -1
  442. package/dist/index.es56.js +303 -12
  443. package/dist/index.es56.js.map +1 -1
  444. package/dist/index.es57.js +9 -143
  445. package/dist/index.es57.js.map +1 -1
  446. package/dist/index.es58.js +83 -292
  447. package/dist/index.es58.js.map +1 -1
  448. package/dist/index.es59.js +6 -64
  449. package/dist/index.es59.js.map +1 -1
  450. package/dist/index.es6.js +21 -5
  451. package/dist/index.es6.js.map +1 -1
  452. package/dist/index.es60.js +12 -210
  453. package/dist/index.es60.js.map +1 -1
  454. package/dist/index.es61.js +138 -29
  455. package/dist/index.es61.js.map +1 -1
  456. package/dist/index.es62.js +299 -8
  457. package/dist/index.es62.js.map +1 -1
  458. package/dist/index.es63.js +65 -11
  459. package/dist/index.es63.js.map +1 -1
  460. package/dist/index.es64.js +201 -175
  461. package/dist/index.es64.js.map +1 -1
  462. package/dist/index.es65.js +33 -23
  463. package/dist/index.es65.js.map +1 -1
  464. package/dist/index.es66.js +8 -1399
  465. package/dist/index.es66.js.map +1 -1
  466. package/dist/index.es67.js +12 -9
  467. package/dist/index.es67.js.map +1 -1
  468. package/dist/index.es68.js +187 -8
  469. package/dist/index.es68.js.map +1 -1
  470. package/dist/index.es69.js +24 -6
  471. package/dist/index.es69.js.map +1 -1
  472. package/dist/index.es70.js +1384 -147
  473. package/dist/index.es70.js.map +1 -1
  474. package/dist/index.es71.js +9 -672
  475. package/dist/index.es71.js.map +1 -1
  476. package/dist/index.es72.js +8 -12
  477. package/dist/index.es72.js.map +1 -1
  478. package/dist/index.es73.js +6 -40
  479. package/dist/index.es73.js.map +1 -1
  480. package/dist/index.es74.js +155 -26
  481. package/dist/index.es74.js.map +1 -1
  482. package/dist/index.es75.js +657 -217
  483. package/dist/index.es75.js.map +1 -1
  484. package/dist/index.es76.js +11 -29
  485. package/dist/index.es76.js.map +1 -1
  486. package/dist/index.es77.js +37 -72
  487. package/dist/index.es77.js.map +1 -1
  488. package/dist/index.es78.js +32 -74
  489. package/dist/index.es78.js.map +1 -1
  490. package/dist/index.es79.js +226 -46
  491. package/dist/index.es79.js.map +1 -1
  492. package/dist/index.es80.js +6 -6
  493. package/dist/index.es80.js.map +1 -1
  494. package/dist/index.es81.js +71 -39
  495. package/dist/index.es81.js.map +1 -1
  496. package/dist/index.es82.js +73 -54
  497. package/dist/index.es82.js.map +1 -1
  498. package/dist/index.es83.js +52 -13
  499. package/dist/index.es83.js.map +1 -1
  500. package/dist/index.es84.js +28 -135
  501. package/dist/index.es84.js.map +1 -1
  502. package/dist/index.es85.js +42 -20
  503. package/dist/index.es85.js.map +1 -1
  504. package/dist/index.es86.js +36 -181
  505. package/dist/index.es86.js.map +1 -1
  506. package/dist/index.es87.js +5 -241
  507. package/dist/index.es87.js.map +1 -1
  508. package/dist/index.es88.js +65 -347
  509. package/dist/index.es88.js.map +1 -1
  510. package/dist/index.es89.js +31 -131
  511. package/dist/index.es89.js.map +1 -1
  512. package/dist/index.es90.js +49 -62
  513. package/dist/index.es90.js.map +1 -1
  514. package/dist/index.es91.js +13 -37
  515. package/dist/index.es91.js.map +1 -1
  516. package/dist/index.es92.js +134 -34
  517. package/dist/index.es92.js.map +1 -1
  518. package/dist/index.es93.js +20 -165
  519. package/dist/index.es93.js.map +1 -1
  520. package/dist/index.es94.js +162 -183
  521. package/dist/index.es94.js.map +1 -1
  522. package/dist/index.es95.js +240 -13
  523. package/dist/index.es95.js.map +1 -1
  524. package/dist/index.es96.js +352 -27
  525. package/dist/index.es96.js.map +1 -1
  526. package/dist/index.es97.js +130 -27
  527. package/dist/index.es97.js.map +1 -1
  528. package/dist/index.es98.js +64 -3151
  529. package/dist/index.es98.js.map +1 -1
  530. package/dist/index.es99.js +34 -34
  531. package/dist/index.es99.js.map +1 -1
  532. package/dist/langgraph-ui-components.css +107 -0
  533. package/dist/styles.css +1 -1
  534. package/package.json +8 -7
  535. package/dist/index.es48.js +0 -7
  536. package/dist/index.es48.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { getDefaultExportFromCjs } from "./index.es153.js";
2
- import { __require as requireDist } from "./index.es136.js";
3
- var distExports = requireDist();
4
- const PQueueMod = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
1
+ import { getDefaultExportFromCjs } from "./index.es152.js";
2
+ import { __require as requireDecamelize } from "./index.es128.js";
3
+ var decamelizeExports = requireDecamelize();
4
+ const snakeCase = /* @__PURE__ */ getDefaultExportFromCjs(decamelizeExports);
5
5
  export {
6
- PQueueMod as default
6
+ snakeCase as default
7
7
  };
8
8
  //# sourceMappingURL=index.es107.js.map
@@ -1,3 +1,3 @@
1
- import { __require as requireSemver } from "./index.es230.js";
2
- requireSemver();
1
+ import { __require as requireCamelcase } from "./index.es129.js";
2
+ requireCamelcase();
3
3
  //# sourceMappingURL=index.es108.js.map
@@ -1,149 +1,19 @@
1
- import { getLangSmithEnvironmentVariable } from "./index.es179.js";
2
- var LIMIT_REPLACE_NODE = "[...]";
3
- var CIRCULAR_REPLACE_NODE = { result: "[Circular]" };
4
- var arr = [];
5
- var replacerStack = [];
6
- const encoder = new TextEncoder();
7
- function defaultOptions() {
8
- return {
9
- depthLimit: Number.MAX_SAFE_INTEGER,
10
- edgesLimit: Number.MAX_SAFE_INTEGER
11
- };
12
- }
13
- function encodeString(str) {
14
- return encoder.encode(str);
15
- }
16
- function serializeWellKnownTypes(val) {
17
- if (val && typeof val === "object" && val !== null) {
18
- if (val instanceof Map) {
19
- return Object.fromEntries(val);
20
- } else if (val instanceof Set) {
21
- return Array.from(val);
22
- } else if (val instanceof Date) {
23
- return val.toISOString();
24
- } else if (val instanceof RegExp) {
25
- return val.toString();
26
- } else if (val instanceof Error) {
27
- return {
28
- name: val.name,
29
- message: val.message
30
- };
31
- }
32
- } else if (typeof val === "bigint") {
33
- return val.toString();
34
- }
35
- return val;
36
- }
37
- function createDefaultReplacer(userReplacer) {
38
- return function(key, val) {
39
- return serializeWellKnownTypes(val);
40
- };
41
- }
42
- function serialize(obj, errorContext, replacer, spacer, options) {
43
- try {
44
- const str = JSON.stringify(obj, createDefaultReplacer(replacer), spacer);
45
- return encodeString(str);
46
- } catch (e) {
47
- if (!e.message?.includes("Converting circular structure to JSON")) {
48
- console.warn(`[WARNING]: LangSmith received unserializable value.${errorContext ? `
49
- Context: ${errorContext}` : ""}`);
50
- return encodeString("[Unserializable]");
51
- }
52
- getLangSmithEnvironmentVariable("SUPPRESS_CIRCULAR_JSON_WARNINGS") !== "true" && console.warn(`[WARNING]: LangSmith received circular JSON. This will decrease tracer performance. ${errorContext ? `
53
- Context: ${errorContext}` : ""}`);
54
- if (typeof options === "undefined") {
55
- options = defaultOptions();
56
- }
57
- decirc(obj, "", 0, [], void 0, 0, options);
58
- let res;
59
- try {
60
- if (replacerStack.length === 0) {
61
- res = JSON.stringify(obj, replacer, spacer);
62
- } else {
63
- res = JSON.stringify(obj, replaceGetterValues(replacer), spacer);
64
- }
65
- } catch (_) {
66
- return encodeString("[unable to serialize, circular reference is too complex to analyze]");
67
- } finally {
68
- while (arr.length !== 0) {
69
- const part = arr.pop();
70
- if (part.length === 4) {
71
- Object.defineProperty(part[0], part[1], part[3]);
72
- } else {
73
- part[0][part[1]] = part[2];
74
- }
75
- }
76
- }
77
- return encodeString(res);
78
- }
79
- }
80
- function setReplace(replace, val, k, parent) {
81
- var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k);
82
- if (propertyDescriptor.get !== void 0) {
83
- if (propertyDescriptor.configurable) {
84
- Object.defineProperty(parent, k, { value: replace });
85
- arr.push([parent, k, val, propertyDescriptor]);
86
- } else {
87
- replacerStack.push([val, k, replace]);
88
- }
89
- } else {
90
- parent[k] = replace;
91
- arr.push([parent, k, val]);
92
- }
93
- }
94
- function decirc(val, k, edgeIndex, stack, parent, depth, options) {
95
- depth += 1;
96
- var i;
97
- if (typeof val === "object" && val !== null) {
98
- for (i = 0; i < stack.length; i++) {
99
- if (stack[i] === val) {
100
- setReplace(CIRCULAR_REPLACE_NODE, val, k, parent);
101
- return;
102
- }
103
- }
104
- if (typeof options.depthLimit !== "undefined" && depth > options.depthLimit) {
105
- setReplace(LIMIT_REPLACE_NODE, val, k, parent);
106
- return;
107
- }
108
- if (typeof options.edgesLimit !== "undefined" && edgeIndex + 1 > options.edgesLimit) {
109
- setReplace(LIMIT_REPLACE_NODE, val, k, parent);
110
- return;
111
- }
112
- stack.push(val);
113
- if (Array.isArray(val)) {
114
- for (i = 0; i < val.length; i++) {
115
- decirc(val[i], i, i, stack, val, depth, options);
116
- }
1
+ function lowerBound(array, value, comparator) {
2
+ let first = 0;
3
+ let count = array.length;
4
+ while (count > 0) {
5
+ const step = Math.trunc(count / 2);
6
+ let it = first + step;
7
+ if (comparator(array[it], value) <= 0) {
8
+ first = ++it;
9
+ count -= step + 1;
117
10
  } else {
118
- val = serializeWellKnownTypes(val);
119
- var keys = Object.keys(val);
120
- for (i = 0; i < keys.length; i++) {
121
- var key = keys[i];
122
- decirc(val[key], key, i, stack, val, depth, options);
123
- }
11
+ count = step;
124
12
  }
125
- stack.pop();
126
13
  }
127
- }
128
- function replaceGetterValues(replacer) {
129
- replacer = typeof replacer !== "undefined" ? replacer : function(k, v) {
130
- return v;
131
- };
132
- return function(key, val) {
133
- if (replacerStack.length > 0) {
134
- for (var i = 0; i < replacerStack.length; i++) {
135
- var part = replacerStack[i];
136
- if (part[1] === key && part[0] === val) {
137
- val = part[2];
138
- replacerStack.splice(i, 1);
139
- break;
140
- }
141
- }
142
- }
143
- return replacer.call(this, key, val);
144
- };
14
+ return first;
145
15
  }
146
16
  export {
147
- serialize
17
+ lowerBound as default
148
18
  };
149
19
  //# sourceMappingURL=index.es109.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es109.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/fast-safe-stringify/index.js"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\nimport { getLangSmithEnvironmentVariable } from \"../../utils/env.js\";\nvar LIMIT_REPLACE_NODE = \"[...]\";\nvar CIRCULAR_REPLACE_NODE = { result: \"[Circular]\" };\nvar arr = [];\nvar replacerStack = [];\nconst encoder = new TextEncoder();\nfunction defaultOptions() {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER,\n };\n}\nfunction encodeString(str) {\n return encoder.encode(str);\n}\n// Shared function to handle well-known types\nfunction serializeWellKnownTypes(val) {\n if (val && typeof val === \"object\" && val !== null) {\n if (val instanceof Map) {\n return Object.fromEntries(val);\n }\n else if (val instanceof Set) {\n return Array.from(val);\n }\n else if (val instanceof Date) {\n return val.toISOString();\n }\n else if (val instanceof RegExp) {\n return val.toString();\n }\n else if (val instanceof Error) {\n return {\n name: val.name,\n message: val.message,\n };\n }\n }\n else if (typeof val === \"bigint\") {\n return val.toString();\n }\n return val;\n}\n// Default replacer function to handle well-known types\nfunction createDefaultReplacer(userReplacer) {\n return function (key, val) {\n // Apply user replacer first if provided\n if (userReplacer) {\n const userResult = userReplacer.call(this, key, val);\n // If user replacer returned undefined, fall back to our serialization\n if (userResult !== undefined) {\n return userResult;\n }\n }\n // Fall back to our well-known type handling\n return serializeWellKnownTypes(val);\n };\n}\n// Regular stringify\nexport function serialize(obj, errorContext, replacer, spacer, options) {\n try {\n const str = JSON.stringify(obj, createDefaultReplacer(replacer), spacer);\n return encodeString(str);\n }\n catch (e) {\n // Fall back to more complex stringify if circular reference\n if (!e.message?.includes(\"Converting circular structure to JSON\")) {\n console.warn(`[WARNING]: LangSmith received unserializable value.${errorContext ? `\\nContext: ${errorContext}` : \"\"}`);\n return encodeString(\"[Unserializable]\");\n }\n getLangSmithEnvironmentVariable(\"SUPPRESS_CIRCULAR_JSON_WARNINGS\") !==\n \"true\" &&\n console.warn(`[WARNING]: LangSmith received circular JSON. This will decrease tracer performance. ${errorContext ? `\\nContext: ${errorContext}` : \"\"}`);\n if (typeof options === \"undefined\") {\n options = defaultOptions();\n }\n decirc(obj, \"\", 0, [], undefined, 0, options);\n let res;\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer);\n }\n else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer);\n }\n }\n catch (_) {\n return encodeString(\"[unable to serialize, circular reference is too complex to analyze]\");\n }\n finally {\n while (arr.length !== 0) {\n const part = arr.pop();\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3]);\n }\n else {\n part[0][part[1]] = part[2];\n }\n }\n }\n return encodeString(res);\n }\n}\nfunction setReplace(replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k);\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace });\n arr.push([parent, k, val, propertyDescriptor]);\n }\n else {\n replacerStack.push([val, k, replace]);\n }\n }\n else {\n parent[k] = replace;\n arr.push([parent, k, val]);\n }\n}\nfunction decirc(val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1;\n var i;\n if (typeof val === \"object\" && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent);\n return;\n }\n }\n if (typeof options.depthLimit !== \"undefined\" &&\n depth > options.depthLimit) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent);\n return;\n }\n if (typeof options.edgesLimit !== \"undefined\" &&\n edgeIndex + 1 > options.edgesLimit) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent);\n return;\n }\n stack.push(val);\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options);\n }\n }\n else {\n // Handle well-known types before Object.keys iteration\n val = serializeWellKnownTypes(val);\n var keys = Object.keys(val);\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n decirc(val[key], key, i, stack, val, depth, options);\n }\n }\n stack.pop();\n }\n}\n// Stable-stringify\nfunction compareFunction(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nfunction deterministicStringify(obj, replacer, spacer, options) {\n if (typeof options === \"undefined\") {\n options = defaultOptions();\n }\n var tmp = deterministicDecirc(obj, \"\", 0, [], undefined, 0, options) || obj;\n var res;\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer);\n }\n else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer);\n }\n }\n catch (_) {\n return JSON.stringify(\"[unable to serialize, circular reference is too complex to analyze]\");\n }\n finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop();\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3]);\n }\n else {\n part[0][part[1]] = part[2];\n }\n }\n }\n return res;\n}\nfunction deterministicDecirc(val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1;\n var i;\n if (typeof val === \"object\" && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent);\n return;\n }\n }\n try {\n if (typeof val.toJSON === \"function\") {\n return;\n }\n }\n catch (_) {\n return;\n }\n if (typeof options.depthLimit !== \"undefined\" &&\n depth > options.depthLimit) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent);\n return;\n }\n if (typeof options.edgesLimit !== \"undefined\" &&\n edgeIndex + 1 > options.edgesLimit) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent);\n return;\n }\n stack.push(val);\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options);\n }\n }\n else {\n // Handle well-known types before Object.keys iteration\n val = serializeWellKnownTypes(val);\n // Create a temporary object in the required way\n var tmp = {};\n var keys = Object.keys(val).sort(compareFunction);\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n deterministicDecirc(val[key], key, i, stack, val, depth, options);\n tmp[key] = val[key];\n }\n if (typeof parent !== \"undefined\") {\n arr.push([parent, k, val]);\n parent[k] = tmp;\n }\n else {\n return tmp;\n }\n }\n stack.pop();\n }\n}\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues(replacer) {\n replacer =\n typeof replacer !== \"undefined\"\n ? replacer\n : function (k, v) {\n return v;\n };\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i];\n if (part[1] === key && part[0] === val) {\n val = part[2];\n replacerStack.splice(i, 1);\n break;\n }\n }\n }\n return replacer.call(this, key, val);\n };\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es109.js","sources":["../node_modules/.pnpm/p-queue@9.1.0/node_modules/p-queue/dist/lower-bound.js"],"sourcesContent":["// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n"],"names":[],"mappings":"AAEe,SAAS,WAAW,OAAO,OAAO,YAAY;AACzD,MAAI,QAAQ;AACZ,MAAI,QAAQ,MAAM;AAClB,SAAO,QAAQ,GAAG;AACd,UAAM,OAAO,KAAK,MAAM,QAAQ,CAAC;AACjC,QAAI,KAAK,QAAQ;AACjB,QAAI,WAAW,MAAM,EAAE,GAAG,KAAK,KAAK,GAAG;AACnC,cAAQ,EAAE;AACV,eAAS,OAAO;AAAA,IACpB,OACK;AACD,cAAQ;AAAA,IACZ;AAAA,EACJ;AACA,SAAO;AACX;","x_google_ignoreList":[0]}
@@ -1,130 +1,156 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { FileIcon, X, Paperclip, MoveUp } from "lucide-react";
3
- import "react";
4
- function ChatInput({
5
- input,
6
- inputFileAccept = ".png,.jpg,.jpeg,.pdf,.docx",
7
- setInput,
8
- handleSubmit,
9
- fileInput,
10
- setFileInput,
11
- handleFileSelect,
12
- isLoading = false,
13
- onCancel
14
- }) {
15
- const canSubmit = (input.trim().length > 0 || fileInput.length > 0) && !isLoading;
16
- return /* @__PURE__ */ jsxs(
17
- "form",
18
- {
19
- onSubmit: handleSubmit,
20
- className: "relative flex flex-col gap-2 border rounded-xl m-2 bg-zinc-900 border-zinc-800",
21
- children: [
22
- fileInput.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex-1 flex-col gap-2 p-2 bg-zinc-900 border-b border-zinc-700 max-h-48 thread-scrollbar", children: fileInput.map((file, index) => /* @__PURE__ */ jsxs(
23
- "div",
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useStreamContext } from "./index.es6.js";
3
+ import { isToolMessage, isAiWithToolCalls } from "./index.es19.js";
4
+ import React__default, { useMemo, useRef, useCallback, useEffect, useLayoutEffect } from "react";
5
+ import AgentMessage from "./index.es20.js";
6
+ import CustomComponentRender from "./index.es21.js";
7
+ import HumanMessage from "./index.es22.js";
8
+ import Thinking from "./index.es23.js";
9
+ import ToolCallFunctions from "./index.es24.js";
10
+ function ChatBody({ setIsFirstMessage, enableToolCallIndicator }) {
11
+ const stream = useStreamContext();
12
+ const messages = stream.messages;
13
+ const isLoading = stream.isLoading;
14
+ const memoMessages = useMemo(() => messages ?? [], [messages]);
15
+ const containerRef = useRef(null);
16
+ const prevMessageCountRef = useRef(0);
17
+ const shouldAutoScrollRef = useRef(true);
18
+ const getScrollContainer = useCallback(() => {
19
+ if (containerRef.current) {
20
+ let parent = containerRef.current.parentElement;
21
+ while (parent) {
22
+ const style = window.getComputedStyle(parent);
23
+ if (style.overflowY === "auto" || style.overflowY === "scroll") {
24
+ return parent;
25
+ }
26
+ parent = parent.parentElement;
27
+ }
28
+ }
29
+ return null;
30
+ }, []);
31
+ useEffect(() => {
32
+ if (memoMessages.length > 0 && setIsFirstMessage) {
33
+ setIsFirstMessage(false);
34
+ }
35
+ }, [memoMessages.length, setIsFirstMessage]);
36
+ const renderMessage = useCallback((msg, index, messagesArray) => {
37
+ if (!msg.content.length) return null;
38
+ if (msg.additional_kwargs?.hidden) {
39
+ return null;
40
+ }
41
+ const isLastMessage = index === messagesArray.length - 1;
42
+ const isStreamingThisMessage = isLoading && isLastMessage && msg.type === "ai";
43
+ const msgKey = msg.id ?? `msg-${index}`;
44
+ if (msg.type === "human") {
45
+ return /* @__PURE__ */ jsx(HumanMessage, { message: msg }, msgKey);
46
+ }
47
+ if (isToolMessage(msg)) {
48
+ return null;
49
+ }
50
+ if (isAiWithToolCalls(msg)) {
51
+ const toolMessages = [];
52
+ let nextIndex = index + 1;
53
+ while (nextIndex < messagesArray.length && isToolMessage(messagesArray[nextIndex])) {
54
+ toolMessages.push(messagesArray[nextIndex]);
55
+ nextIndex++;
56
+ }
57
+ const hasTextContent = typeof msg.content === "string" && msg.content.trim() || Array.isArray(msg.content) && msg.content.some((c) => c.type === "text" && c.text?.trim());
58
+ return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
59
+ toolMessages.length > 0 && enableToolCallIndicator && /* @__PURE__ */ jsx(
60
+ ToolCallFunctions,
24
61
  {
25
- className: "flex items-center justify-between gap-3 bg-zinc-800 p-2 rounded group hover:bg-zinc-700 transition-colors",
26
- children: [
27
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 min-w-0 flex-1", children: [
28
- /* @__PURE__ */ jsx(FileIcon, { className: "text-blue-400 shrink-0", size: 20 }),
29
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 overflow-hidden", children: [
30
- /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-zinc-200 truncate", children: file.fileName }),
31
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-zinc-500 truncate", children: file.fileType || "Unknown file type" })
32
- ] })
33
- ] }),
34
- /* @__PURE__ */ jsx(
35
- "button",
36
- {
37
- type: "button",
38
- onClick: () => setFileInput((prev) => prev.filter((_, i) => i !== index)),
39
- className: "shrink-0 p-1 rounded hover:bg-zinc-600 transition-colors",
40
- "aria-label": "Remove file",
41
- children: /* @__PURE__ */ jsx(X, { size: 16, className: "text-red-400" })
42
- }
43
- )
44
- ]
45
- },
46
- `file-${index}-${file.fileName}`
47
- )) }),
48
- /* @__PURE__ */ jsx(
49
- "textarea",
62
+ title: "Agent Thinking",
63
+ toolMessages
64
+ }
65
+ ),
66
+ hasTextContent && /* @__PURE__ */ jsx(
67
+ AgentMessage,
50
68
  {
51
- placeholder: "Type your message...",
52
- value: input,
53
- onChange: (e) => {
54
- setInput(e.target.value);
55
- const maxHeight = 300;
56
- e.target.style.height = "auto";
57
- e.target.style.height = Math.min(e.target.scrollHeight, maxHeight) + "px";
58
- },
59
- onKeyDown: (e) => {
60
- if (e.key === "Enter" && !e.shiftKey && !e.metaKey && !e.nativeEvent.isComposing) {
61
- e.preventDefault();
62
- if (canSubmit) {
63
- e.currentTarget.form?.requestSubmit();
64
- }
65
- }
66
- },
67
- disabled: isLoading,
68
- className: "w-full field-sizing-content resize-none p-3.5 bg-transparent text-white placeholder-zinc-500 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed overflow-y-auto thread-scrollbar",
69
- rows: 1
69
+ message: msg,
70
+ isStreaming: isStreamingThisMessage
70
71
  }
71
72
  ),
72
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center px-1 pb-2", children: [
73
- /* @__PURE__ */ jsxs("div", { className: "flex gap-1 m-2", children: [
74
- /* @__PURE__ */ jsx(
75
- "label",
76
- {
77
- htmlFor: "file-input",
78
- className: `cursor-pointer ${isLoading ? "opacity-50 cursor-not-allowed" : ""}`,
79
- children: /* @__PURE__ */ jsx(
80
- Paperclip,
81
- {
82
- size: 24,
83
- className: "text-zinc-400 hover:text-white hover:bg-zinc-800 rounded p-1 transition-colors"
84
- }
85
- )
86
- }
87
- ),
88
- /* @__PURE__ */ jsx(
89
- "input",
90
- {
91
- id: "file-input",
92
- type: "file",
93
- multiple: true,
94
- disabled: isLoading,
95
- accept: inputFileAccept,
96
- className: "hidden",
97
- onChange: handleFileSelect
98
- }
99
- )
100
- ] }),
101
- /* @__PURE__ */ jsxs("div", { className: "flex gap-2 items-center", children: [
102
- isLoading && onCancel && /* @__PURE__ */ jsx(
103
- "button",
104
- {
105
- type: "button",
106
- onClick: onCancel,
107
- className: "px-3 py-1 text-xs text-zinc-400 hover:text-white hover:bg-zinc-800 rounded transition-colors",
108
- children: "Cancel"
109
- }
110
- ),
111
- /* @__PURE__ */ jsx(
112
- "button",
113
- {
114
- type: "submit",
115
- disabled: !canSubmit,
116
- className: "focus:outline-none transition-all bg-zinc-300 border rounded-full p-1 cursor-pointer",
117
- style: { border: "none" },
118
- children: /* @__PURE__ */ jsx(MoveUp, { size: 24, className: "text-black p-1" })
119
- }
120
- )
121
- ] })
122
- ] })
123
- ]
73
+ /* @__PURE__ */ jsx(CustomComponentRender, { message: msg, thread: stream })
74
+ ] }, msgKey);
75
+ }
76
+ return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
77
+ /* @__PURE__ */ jsx(
78
+ AgentMessage,
79
+ {
80
+ message: msg,
81
+ isStreaming: isStreamingThisMessage
82
+ }
83
+ ),
84
+ /* @__PURE__ */ jsx(CustomComponentRender, { message: msg, thread: stream })
85
+ ] }, msgKey);
86
+ }, [isLoading, stream, enableToolCallIndicator]);
87
+ const renderedMessages = useMemo(() => {
88
+ return memoMessages.map((msg, index) => {
89
+ const element = renderMessage(msg, index, memoMessages);
90
+ if (element && !element.key) {
91
+ return React__default.cloneElement(element, { key: msg.id ?? `msg-${index}` });
92
+ }
93
+ return element;
94
+ });
95
+ }, [memoMessages, renderMessage]);
96
+ useEffect(() => {
97
+ const scrollContainer = getScrollContainer();
98
+ if (!scrollContainer) return;
99
+ const handleScroll = () => {
100
+ const { scrollTop, scrollHeight, clientHeight } = scrollContainer;
101
+ const distanceFromBottom = scrollHeight - scrollTop - clientHeight;
102
+ shouldAutoScrollRef.current = distanceFromBottom < 100;
103
+ };
104
+ scrollContainer.addEventListener("scroll", handleScroll);
105
+ return () => scrollContainer.removeEventListener("scroll", handleScroll);
106
+ }, [getScrollContainer]);
107
+ useEffect(() => {
108
+ const scrollContainer = getScrollContainer();
109
+ if (!scrollContainer) return;
110
+ const currentCount = memoMessages.length;
111
+ const hasNewMessage = currentCount > prevMessageCountRef.current;
112
+ if (hasNewMessage) {
113
+ scrollContainer.scrollTop = scrollContainer.scrollHeight;
114
+ shouldAutoScrollRef.current = true;
115
+ }
116
+ prevMessageCountRef.current = currentCount;
117
+ }, [memoMessages, getScrollContainer]);
118
+ useEffect(() => {
119
+ const scrollContainer = getScrollContainer();
120
+ if (!scrollContainer || !isLoading) return;
121
+ const observer = new MutationObserver(() => {
122
+ if (shouldAutoScrollRef.current && scrollContainer) {
123
+ scrollContainer.scrollTop = scrollContainer.scrollHeight;
124
+ }
125
+ });
126
+ if (containerRef.current) {
127
+ observer.observe(containerRef.current, {
128
+ childList: true,
129
+ subtree: true,
130
+ characterData: true
131
+ });
132
+ }
133
+ return () => observer.disconnect();
134
+ }, [isLoading, getScrollContainer]);
135
+ useLayoutEffect(() => {
136
+ const scrollContainer = getScrollContainer();
137
+ if (isLoading && shouldAutoScrollRef.current && scrollContainer) {
138
+ scrollContainer.scrollTop = scrollContainer.scrollHeight;
139
+ }
140
+ });
141
+ return /* @__PURE__ */ jsx(
142
+ "div",
143
+ {
144
+ ref: containerRef,
145
+ className: "flex flex-col gap-4 rounded-4xl p-2",
146
+ children: memoMessages.length === 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full text-zinc-500", children: "Start a conversation..." }) : /* @__PURE__ */ jsxs(Fragment, { children: [
147
+ renderedMessages,
148
+ isLoading && memoMessages.length > 0 && memoMessages[memoMessages.length - 1].type === "human" && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx(Thinking, {}) })
149
+ ] })
124
150
  }
125
151
  );
126
152
  }
127
153
  export {
128
- ChatInput as default
154
+ ChatBody as default
129
155
  };
130
156
  //# sourceMappingURL=index.es11.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es11.js","sources":["../src/components/sidebar/ChatInput.tsx"],"sourcesContent":["import type { FileInfo } from \"@/types/fileInput\";\nimport { FileIcon, MoveUp, Paperclip, X } from \"lucide-react\";\nimport {\n type ChangeEvent,\n type Dispatch,\n type FormEvent,\n type SetStateAction,\n} from \"react\";\n\nexport default function ChatInput({\n input,\n inputFileAccept = \".png,.jpg,.jpeg,.pdf,.docx\",\n setInput,\n handleSubmit,\n fileInput,\n setFileInput,\n handleFileSelect,\n isLoading = false,\n onCancel,\n}: {\n input: string;\n setInput: (value: string) => void;\n handleSubmit: (e: FormEvent<HTMLFormElement>) => void;\n fileInput: FileInfo[];\n setFileInput: Dispatch<SetStateAction<FileInfo[]>>;\n handleFileSelect: (event: ChangeEvent<HTMLInputElement>) => void;\n inputFileAccept?: string;\n isLoading?: boolean;\n onCancel?: () => void;\n}) {\n const canSubmit =\n (input.trim().length > 0 || fileInput.length > 0) && !isLoading;\n\n return (\n <form\n onSubmit={handleSubmit}\n className=\"relative flex flex-col gap-2 border rounded-xl m-2 bg-zinc-900 border-zinc-800\"\n >\n {/* File attachments preview */}\n {fileInput.length > 0 && (\n <div className=\"flex-1 flex-col gap-2 p-2 bg-zinc-900 border-b border-zinc-700 max-h-48 thread-scrollbar\">\n {fileInput.map((file, index) => (\n <div\n key={`file-${index}-${file.fileName}`}\n className=\"flex items-center justify-between gap-3 bg-zinc-800 p-2 rounded group hover:bg-zinc-700 transition-colors\"\n >\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\n <FileIcon className=\"text-blue-400 shrink-0\" size={20} />\n <div className=\"flex flex-col min-w-0 overflow-hidden\">\n <span className=\"text-xs font-medium text-zinc-200 truncate\">\n {file.fileName}\n </span>\n <span className=\"text-[10px] text-zinc-500 truncate\">\n {file.fileType || \"Unknown file type\"}\n </span>\n </div>\n </div>\n\n <button\n type=\"button\"\n onClick={() =>\n setFileInput((prev) => prev.filter((_, i) => i !== index))\n }\n className=\"shrink-0 p-1 rounded hover:bg-zinc-600 transition-colors\"\n aria-label=\"Remove file\"\n >\n <X size={16} className=\"text-red-400\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Text input */}\n <textarea\n placeholder=\"Type your message...\"\n value={input}\n onChange={(e) => {\n setInput(e.target.value)\n const maxHeight = 300; // max height in pixels\n e.target.style.height = \"auto\"; // reset height\n e.target.style.height = Math.min(e.target.scrollHeight, maxHeight) + \"px\";\n }}\n onKeyDown={(e) => {\n if (\n e.key === \"Enter\" &&\n !e.shiftKey &&\n !e.metaKey &&\n !e.nativeEvent.isComposing\n ) {\n e.preventDefault();\n if (canSubmit) {\n e.currentTarget.form?.requestSubmit();\n }\n }\n }}\n disabled={isLoading}\n className=\"w-full field-sizing-content resize-none p-3.5 bg-transparent text-white placeholder-zinc-500 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed overflow-y-auto thread-scrollbar\"\n rows={1}\n />\n\n {/* Footer with controls */}\n <div className=\"flex justify-between items-center px-1 pb-2\">\n <div className=\"flex gap-1 m-2\">\n <label\n htmlFor=\"file-input\"\n className={`cursor-pointer ${isLoading ? \"opacity-50 cursor-not-allowed\" : \"\"\n }`}\n >\n <Paperclip\n size={24}\n className=\"text-zinc-400 hover:text-white hover:bg-zinc-800 rounded p-1 transition-colors\"\n />\n </label>\n <input\n id=\"file-input\"\n type=\"file\"\n multiple\n disabled={isLoading}\n accept={inputFileAccept}\n className=\"hidden\"\n onChange={handleFileSelect}\n />\n </div>\n\n <div className=\"flex gap-2 items-center\">\n {isLoading && onCancel && (\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"px-3 py-1 text-xs text-zinc-400 hover:text-white hover:bg-zinc-800 rounded transition-colors\"\n >\n Cancel\n </button>\n )}\n\n <button\n type=\"submit\"\n disabled={!canSubmit}\n className=\"focus:outline-none transition-all bg-zinc-300 border rounded-full p-1 cursor-pointer\"\n style={{ border: \"none\" }}\n >\n <MoveUp size={24} className=\"text-black p-1\" />\n </button>\n </div>\n </div>\n </form>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.es11.js","sources":["../src/components/ChatBody.tsx"],"sourcesContent":["import { useStreamContext } from \"@/providers/Stream\";\nimport { logger } from \"@/utils/logger\";\nimport { isAiWithToolCalls, isToolMessage } from \"@/utils/utils\";\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from \"react\";\nimport AgentMessage from \"./messages/AgentMessage\";\nimport CustomComponentRender from \"./messages/CustomComponentRender\";\nimport HumanMessage from \"./messages/HumanMessage\";\nimport Thinking from \"./Thinking\";\nimport ToolCallFunctions from \"./ToolCallFunctions\";\n\nexport default function ChatBody({ setIsFirstMessage, enableToolCallIndicator }: { setIsFirstMessage?: React.Dispatch<React.SetStateAction<boolean>>, enableToolCallIndicator?: boolean }) {\n const stream = useStreamContext();\n const messages = stream.messages;\n const isLoading = stream.isLoading;\n\n logger.debug(\"ChatBody render - messages count:\", messages, \"isLoading:\", isLoading);\n\n // Memoize messages with stable reference\n const memoMessages = useMemo(() => messages ?? [], [messages]);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const prevMessageCountRef = useRef(0);\n const shouldAutoScrollRef = useRef(true);\n\n // Get the parent scroll container\n const getScrollContainer = useCallback(() => {\n if (containerRef.current) {\n // Find the parent with overflow-y-auto class\n let parent = containerRef.current.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n if (style.overflowY === 'auto' || style.overflowY === 'scroll') {\n return parent;\n }\n parent = parent.parentElement;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n if (memoMessages.length > 0 && setIsFirstMessage) {\n setIsFirstMessage(false);\n }\n }, [memoMessages.length, setIsFirstMessage]);\n\n // Memoize message rendering logic to prevent unnecessary re-renders\n const renderMessage = useCallback((msg: typeof messages[0], index: number, messagesArray: typeof messages) => {\n if (!msg.content.length) return null;\n\n if (msg.additional_kwargs?.hidden) {\n return null;\n }\n\n const isLastMessage = index === messagesArray.length - 1;\n const isStreamingThisMessage =\n isLoading && isLastMessage && msg.type === \"ai\";\n\n // Use message id or fallback to index for key\n const msgKey = msg.id ?? `msg-${index}`;\n\n if (msg.type === \"human\") {\n return <HumanMessage key={msgKey} message={msg} />;\n }\n\n // Skip standalone tool messages\n if (isToolMessage(msg)) {\n return null;\n }\n\n // Group AI message with tool calls and subsequent tool messages\n if (isAiWithToolCalls(msg)) {\n const toolMessages = [];\n let nextIndex = index + 1;\n while (\n nextIndex < messagesArray.length &&\n isToolMessage(messagesArray[nextIndex])\n ) {\n toolMessages.push(messagesArray[nextIndex]);\n nextIndex++;\n }\n\n // Check if there's text content to display\n // Handle both string and array content formats\n const hasTextContent =\n (typeof msg.content === \"string\" && msg.content.trim()) ||\n (Array.isArray(msg.content) && msg.content.some((c: any) => c.type === \"text\" && c.text?.trim()));\n\n return (\n <React.Fragment key={msgKey}>\n {/* 1. Thinking indicator - only show if tool messages exist */}\n {toolMessages.length > 0 && enableToolCallIndicator && (\n <ToolCallFunctions\n title=\"Agent Thinking\"\n toolMessages={toolMessages}\n />\n )}\n {/* 2. Agent message (if has text) */}\n {hasTextContent && (\n <AgentMessage\n message={msg}\n isStreaming={isStreamingThisMessage}\n />\n )}\n {/* 3. Custom component */}\n <CustomComponentRender message={msg} thread={stream} />\n </React.Fragment>\n );\n }\n\n return (\n <React.Fragment key={msgKey}>\n <AgentMessage\n message={msg}\n isStreaming={isStreamingThisMessage}\n />\n <CustomComponentRender message={msg} thread={stream} />\n </React.Fragment>\n );\n }, [isLoading, stream, enableToolCallIndicator]);\n\n // Memoize the rendered messages array\n const renderedMessages = useMemo(() => {\n return memoMessages.map((msg, index) => {\n const element = renderMessage(msg, index, memoMessages);\n // Ensure every element has a key, using message id or fallback to index\n if (element && !element.key) {\n return React.cloneElement(element, { key: msg.id ?? `msg-${index}` });\n }\n return element;\n });\n }, [memoMessages, renderMessage]);\n\n // Track user scroll position to determine if we should auto-scroll\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n // Consider \"at bottom\" if within 100px\n shouldAutoScrollRef.current = distanceFromBottom < 100;\n };\n\n scrollContainer.addEventListener('scroll', handleScroll);\n return () => scrollContainer.removeEventListener('scroll', handleScroll);\n }, [getScrollContainer]);\n\n // Auto-scroll when new messages are added\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const currentCount = memoMessages.length;\n const hasNewMessage = currentCount > prevMessageCountRef.current;\n\n if (hasNewMessage) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n shouldAutoScrollRef.current = true;\n }\n\n prevMessageCountRef.current = currentCount;\n }, [memoMessages, getScrollContainer]);\n\n // Use MutationObserver to detect DOM changes and auto-scroll during streaming\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer || !isLoading) return;\n\n const observer = new MutationObserver(() => {\n if (shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n // Observe the ChatBody container for changes\n if (containerRef.current) {\n observer.observe(containerRef.current, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return () => observer.disconnect();\n }, [isLoading, getScrollContainer]);\n\n // Use useLayoutEffect to scroll after DOM updates\n useLayoutEffect(() => {\n const scrollContainer = getScrollContainer();\n if (isLoading && shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n return (\n <div\n ref={containerRef}\n className=\"flex flex-col gap-4 rounded-4xl p-2\"\n >\n {memoMessages.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-zinc-500\">\n Start a conversation...\n </div>\n ) : (\n <>\n {renderedMessages}\n {/* Show thinking indicator when loading but no AI response yet */}\n {isLoading && memoMessages.length > 0 && memoMessages[memoMessages.length - 1].type === \"human\" && (\n <div className=\"flex items-center gap-2\">\n {/* Thinking<span className=\"animate-pulse\">...</span> */}\n <Thinking />\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"],"names":["React"],"mappings":"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"}