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
@@ -1,155 +1,345 @@
1
- import { __version__ } from "./index.es155.js";
2
- let globalEnv;
3
- const isBrowser = () => typeof window !== "undefined" && typeof window.document !== "undefined";
4
- const isWebWorker = () => typeof globalThis === "object" && globalThis.constructor && globalThis.constructor.name === "DedicatedWorkerGlobalScope";
5
- const isJsDom = () => typeof window !== "undefined" && window.name === "nodejs" || typeof navigator !== "undefined" && navigator.userAgent.includes("jsdom");
6
- const isDeno = () => typeof Deno !== "undefined";
7
- const isNode = () => typeof process !== "undefined" && typeof process.versions !== "undefined" && typeof process.versions.node !== "undefined" && !isDeno();
8
- const getEnv = () => {
9
- if (globalEnv) {
10
- return globalEnv;
1
+ import { LANGSMITH_RUN_TYPE, GEN_AI_OPERATION_NAME, LANGSMITH_NAME, LANGSMITH_SESSION_ID, LANGSMITH_SESSION_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, GEN_AI_USAGE_TOTAL_TOKENS, LANGSMITH_METADATA, LANGSMITH_TAGS, GEN_AI_SERIALIZED_NAME, GEN_AI_SERIALIZED_SIGNATURE, GEN_AI_SERIALIZED_DOC, GEN_AI_SYSTEM, GEN_AI_REQUEST_MAX_TOKENS, GEN_AI_REQUEST_TEMPERATURE, GEN_AI_REQUEST_TOP_P, GEN_AI_REQUEST_FREQUENCY_PENALTY, GEN_AI_REQUEST_PRESENCE_PENALTY, LANGSMITH_REQUEST_STREAMING, LANGSMITH_REQUEST_HEADERS, GEN_AI_REQUEST_EXTRA_QUERY, GEN_AI_REQUEST_EXTRA_BODY, GENAI_PROMPT, GEN_AI_RESPONSE_MODEL, GEN_AI_RESPONSE_ID, GEN_AI_RESPONSE_FINISH_REASONS, GEN_AI_RESPONSE_SERVICE_TIER, GEN_AI_RESPONSE_SYSTEM_FINGERPRINT, GEN_AI_USAGE_INPUT_TOKEN_DETAILS, GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS, GENAI_COMPLETION } from "./index.es231.js";
2
+ import { getOTELTrace } from "./index.es180.js";
3
+ const WELL_KNOWN_OPERATION_NAMES = {
4
+ llm: "chat",
5
+ tool: "execute_tool",
6
+ retriever: "embeddings",
7
+ embedding: "embeddings",
8
+ prompt: "chat"
9
+ };
10
+ function getOperationName(runType) {
11
+ return WELL_KNOWN_OPERATION_NAMES[runType] || runType;
12
+ }
13
+ class LangSmithToOTELTranslator {
14
+ constructor() {
15
+ Object.defineProperty(this, "spans", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: /* @__PURE__ */ new Map()
20
+ });
11
21
  }
12
- if (typeof Bun !== "undefined") {
13
- globalEnv = "bun";
14
- } else if (isBrowser()) {
15
- globalEnv = "browser";
16
- } else if (isNode()) {
17
- globalEnv = "node";
18
- } else if (isWebWorker()) {
19
- globalEnv = "webworker";
20
- } else if (isJsDom()) {
21
- globalEnv = "jsdom";
22
- } else if (isDeno()) {
23
- globalEnv = "deno";
24
- } else {
25
- globalEnv = "other";
22
+ exportBatch(operations, otelContextMap) {
23
+ for (const op of operations) {
24
+ try {
25
+ if (!op.run) {
26
+ continue;
27
+ }
28
+ if (op.operation === "post") {
29
+ const span = this.createSpanForRun(op, op.run, otelContextMap.get(op.id));
30
+ if (span && !op.run.end_time) {
31
+ this.spans.set(op.id, span);
32
+ }
33
+ } else {
34
+ this.updateSpanForRun(op, op.run);
35
+ }
36
+ } catch (e) {
37
+ console.error(`Error processing operation ${op.id}:`, e);
38
+ }
39
+ }
26
40
  }
27
- return globalEnv;
28
- };
29
- let runtimeEnvironment;
30
- function getRuntimeEnvironment() {
31
- if (runtimeEnvironment === void 0) {
32
- const env = getEnv();
33
- const releaseEnv = getShas();
34
- runtimeEnvironment = {
35
- library: "langsmith",
36
- runtime: env,
37
- sdk: "langsmith-js",
38
- sdk_version: __version__,
39
- ...releaseEnv
40
- };
41
+ createSpanForRun(op, runInfo, otelContext) {
42
+ const activeSpan = otelContext && getOTELTrace().getSpan(otelContext);
43
+ if (!activeSpan) {
44
+ return;
45
+ }
46
+ try {
47
+ return this.finishSpanSetup(activeSpan, runInfo, op);
48
+ } catch (e) {
49
+ console.error(`Failed to create span for run ${op.id}:`, e);
50
+ return void 0;
51
+ }
41
52
  }
42
- return runtimeEnvironment;
43
- }
44
- function getLangSmithEnvVarsMetadata() {
45
- const allEnvVars = getLangSmithEnvironmentVariables();
46
- const envVars = {};
47
- const excluded = [
48
- "LANGCHAIN_API_KEY",
49
- "LANGCHAIN_ENDPOINT",
50
- "LANGCHAIN_TRACING_V2",
51
- "LANGCHAIN_PROJECT",
52
- "LANGCHAIN_SESSION",
53
- "LANGSMITH_API_KEY",
54
- "LANGSMITH_ENDPOINT",
55
- "LANGSMITH_TRACING_V2",
56
- "LANGSMITH_PROJECT",
57
- "LANGSMITH_SESSION"
58
- ];
59
- for (const [key, value] of Object.entries(allEnvVars)) {
60
- if (typeof value === "string" && !excluded.includes(key) && !key.toLowerCase().includes("key") && !key.toLowerCase().includes("secret") && !key.toLowerCase().includes("token")) {
61
- if (key === "LANGCHAIN_REVISION_ID") {
62
- envVars["revision_id"] = value;
53
+ finishSpanSetup(span, runInfo, op) {
54
+ this.setSpanAttributes(span, runInfo, op);
55
+ if (runInfo.error) {
56
+ span.setStatus({ code: 2 });
57
+ span.recordException(new Error(runInfo.error));
58
+ } else {
59
+ span.setStatus({ code: 1 });
60
+ }
61
+ if (runInfo.end_time) {
62
+ span.end(new Date(runInfo.end_time));
63
+ }
64
+ return span;
65
+ }
66
+ updateSpanForRun(op, runInfo) {
67
+ try {
68
+ const span = this.spans.get(op.id);
69
+ if (!span) {
70
+ console.debug(`No span found for run ${op.id} during update`);
71
+ return;
72
+ }
73
+ this.setSpanAttributes(span, runInfo, op);
74
+ if (runInfo.error) {
75
+ span.setStatus({ code: 2 });
76
+ span.recordException(new Error(runInfo.error));
63
77
  } else {
64
- envVars[key] = value;
78
+ span.setStatus({ code: 1 });
65
79
  }
80
+ const endTime = runInfo.end_time;
81
+ if (endTime) {
82
+ span.end(new Date(endTime));
83
+ this.spans.delete(op.id);
84
+ }
85
+ } catch (e) {
86
+ console.error(`Failed to update span for run ${op.id}:`, e);
66
87
  }
67
88
  }
68
- return envVars;
69
- }
70
- function getLangSmithEnvironmentVariables() {
71
- const envVars = {};
72
- try {
73
- if (typeof process !== "undefined" && process.env) {
74
- for (const [key, value] of Object.entries(process.env)) {
75
- if ((key.startsWith("LANGCHAIN_") || key.startsWith("LANGSMITH_")) && value != null) {
76
- if ((key.toLowerCase().includes("key") || key.toLowerCase().includes("secret") || key.toLowerCase().includes("token")) && typeof value === "string") {
77
- envVars[key] = value.slice(0, 2) + "*".repeat(value.length - 4) + value.slice(-2);
78
- } else {
79
- envVars[key] = value;
80
- }
89
+ extractModelName(runInfo) {
90
+ if (runInfo.extra?.metadata) {
91
+ const metadata = runInfo.extra.metadata;
92
+ if (metadata.ls_model_name) {
93
+ return metadata.ls_model_name;
94
+ }
95
+ if (metadata.invocation_params) {
96
+ const invocationParams = metadata.invocation_params;
97
+ if (invocationParams.model) {
98
+ return invocationParams.model;
99
+ } else if (invocationParams.model_name) {
100
+ return invocationParams.model_name;
81
101
  }
82
102
  }
83
103
  }
84
- } catch (e) {
104
+ return;
85
105
  }
86
- return envVars;
87
- }
88
- function getEnvironmentVariable(name) {
89
- try {
90
- return typeof process !== "undefined" ? (
91
- // eslint-disable-next-line no-process-env
92
- process.env?.[name]
93
- ) : void 0;
94
- } catch (e) {
95
- return void 0;
106
+ setSpanAttributes(span, runInfo, op) {
107
+ if ("run_type" in runInfo && runInfo.run_type) {
108
+ span.setAttribute(LANGSMITH_RUN_TYPE, runInfo.run_type);
109
+ const operationName = getOperationName(runInfo.run_type || "chain");
110
+ span.setAttribute(GEN_AI_OPERATION_NAME, operationName);
111
+ }
112
+ if ("name" in runInfo && runInfo.name) {
113
+ span.setAttribute(LANGSMITH_NAME, runInfo.name);
114
+ }
115
+ if ("session_id" in runInfo && runInfo.session_id) {
116
+ span.setAttribute(LANGSMITH_SESSION_ID, runInfo.session_id);
117
+ }
118
+ if ("session_name" in runInfo && runInfo.session_name) {
119
+ span.setAttribute(LANGSMITH_SESSION_NAME, runInfo.session_name);
120
+ }
121
+ this.setGenAiSystem(span, runInfo);
122
+ const modelName = this.extractModelName(runInfo);
123
+ if (modelName) {
124
+ span.setAttribute(GEN_AI_REQUEST_MODEL, modelName);
125
+ }
126
+ if ("prompt_tokens" in runInfo && typeof runInfo.prompt_tokens === "number") {
127
+ span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, runInfo.prompt_tokens);
128
+ }
129
+ if ("completion_tokens" in runInfo && typeof runInfo.completion_tokens === "number") {
130
+ span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, runInfo.completion_tokens);
131
+ }
132
+ if ("total_tokens" in runInfo && typeof runInfo.total_tokens === "number") {
133
+ span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS, runInfo.total_tokens);
134
+ }
135
+ this.setInvocationParameters(span, runInfo);
136
+ const metadata = runInfo.extra?.metadata || {};
137
+ for (const [key, value] of Object.entries(metadata)) {
138
+ if (value !== null && value !== void 0) {
139
+ span.setAttribute(`${LANGSMITH_METADATA}.${key}`, String(value));
140
+ }
141
+ }
142
+ const tags = runInfo.tags;
143
+ if (tags && Array.isArray(tags)) {
144
+ span.setAttribute(LANGSMITH_TAGS, tags.join(", "));
145
+ } else if (tags) {
146
+ span.setAttribute(LANGSMITH_TAGS, String(tags));
147
+ }
148
+ if ("serialized" in runInfo && typeof runInfo.serialized === "object") {
149
+ const serialized = runInfo.serialized;
150
+ if (serialized.name) {
151
+ span.setAttribute(GEN_AI_SERIALIZED_NAME, String(serialized.name));
152
+ }
153
+ if (serialized.signature) {
154
+ span.setAttribute(GEN_AI_SERIALIZED_SIGNATURE, String(serialized.signature));
155
+ }
156
+ if (serialized.doc) {
157
+ span.setAttribute(GEN_AI_SERIALIZED_DOC, String(serialized.doc));
158
+ }
159
+ }
160
+ this.setIOAttributes(span, op);
96
161
  }
97
- }
98
- function getLangSmithEnvironmentVariable(name) {
99
- return getEnvironmentVariable(`LANGSMITH_${name}`) || getEnvironmentVariable(`LANGCHAIN_${name}`);
100
- }
101
- let cachedCommitSHAs;
102
- function getShas() {
103
- if (cachedCommitSHAs !== void 0) {
104
- return cachedCommitSHAs;
162
+ setGenAiSystem(span, runInfo) {
163
+ let system = "langchain";
164
+ const modelName = this.extractModelName(runInfo);
165
+ if (modelName) {
166
+ const modelLower = modelName.toLowerCase();
167
+ if (modelLower.includes("anthropic") || modelLower.startsWith("claude")) {
168
+ system = "anthropic";
169
+ } else if (modelLower.includes("bedrock")) {
170
+ system = "aws.bedrock";
171
+ } else if (modelLower.includes("azure") && modelLower.includes("openai")) {
172
+ system = "az.ai.openai";
173
+ } else if (modelLower.includes("azure") && modelLower.includes("inference")) {
174
+ system = "az.ai.inference";
175
+ } else if (modelLower.includes("cohere")) {
176
+ system = "cohere";
177
+ } else if (modelLower.includes("deepseek")) {
178
+ system = "deepseek";
179
+ } else if (modelLower.includes("gemini")) {
180
+ system = "gemini";
181
+ } else if (modelLower.includes("groq")) {
182
+ system = "groq";
183
+ } else if (modelLower.includes("watson") || modelLower.includes("ibm")) {
184
+ system = "ibm.watsonx.ai";
185
+ } else if (modelLower.includes("mistral")) {
186
+ system = "mistral_ai";
187
+ } else if (modelLower.includes("gpt") || modelLower.includes("openai")) {
188
+ system = "openai";
189
+ } else if (modelLower.includes("perplexity") || modelLower.includes("sonar")) {
190
+ system = "perplexity";
191
+ } else if (modelLower.includes("vertex")) {
192
+ system = "vertex_ai";
193
+ } else if (modelLower.includes("xai") || modelLower.includes("grok")) {
194
+ system = "xai";
195
+ }
196
+ }
197
+ span.setAttribute(GEN_AI_SYSTEM, system);
105
198
  }
106
- const common_release_envs = [
107
- "VERCEL_GIT_COMMIT_SHA",
108
- "NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA",
109
- "COMMIT_REF",
110
- "RENDER_GIT_COMMIT",
111
- "CI_COMMIT_SHA",
112
- "CIRCLE_SHA1",
113
- "CF_PAGES_COMMIT_SHA",
114
- "REACT_APP_GIT_SHA",
115
- "SOURCE_VERSION",
116
- "GITHUB_SHA",
117
- "TRAVIS_COMMIT",
118
- "GIT_COMMIT",
119
- "BUILD_VCS_NUMBER",
120
- "bamboo_planRepository_revision",
121
- "Build.SourceVersion",
122
- "BITBUCKET_COMMIT",
123
- "DRONE_COMMIT_SHA",
124
- "SEMAPHORE_GIT_SHA",
125
- "BUILDKITE_COMMIT"
126
- ];
127
- const shas = {};
128
- for (const env of common_release_envs) {
129
- const envVar = getEnvironmentVariable(env);
130
- if (envVar !== void 0) {
131
- shas[env] = envVar;
199
+ setInvocationParameters(span, runInfo) {
200
+ if (!runInfo.extra?.metadata?.invocation_params) {
201
+ return;
202
+ }
203
+ const invocationParams = runInfo.extra.metadata.invocation_params;
204
+ if (invocationParams.max_tokens !== void 0) {
205
+ span.setAttribute(GEN_AI_REQUEST_MAX_TOKENS, invocationParams.max_tokens);
206
+ }
207
+ if (invocationParams.temperature !== void 0) {
208
+ span.setAttribute(GEN_AI_REQUEST_TEMPERATURE, invocationParams.temperature);
209
+ }
210
+ if (invocationParams.top_p !== void 0) {
211
+ span.setAttribute(GEN_AI_REQUEST_TOP_P, invocationParams.top_p);
212
+ }
213
+ if (invocationParams.frequency_penalty !== void 0) {
214
+ span.setAttribute(GEN_AI_REQUEST_FREQUENCY_PENALTY, invocationParams.frequency_penalty);
215
+ }
216
+ if (invocationParams.presence_penalty !== void 0) {
217
+ span.setAttribute(GEN_AI_REQUEST_PRESENCE_PENALTY, invocationParams.presence_penalty);
132
218
  }
133
219
  }
134
- cachedCommitSHAs = shas;
135
- return shas;
136
- }
137
- function getOtelEnabled() {
138
- return getEnvironmentVariable("OTEL_ENABLED") === "true" || getLangSmithEnvironmentVariable("OTEL_ENABLED") === "true";
220
+ setIOAttributes(span, op) {
221
+ if (op.run.inputs) {
222
+ try {
223
+ const inputs = op.run.inputs;
224
+ if (typeof inputs === "object" && inputs !== null) {
225
+ if (inputs.model && Array.isArray(inputs.messages)) {
226
+ span.setAttribute(GEN_AI_REQUEST_MODEL, inputs.model);
227
+ }
228
+ if (inputs.stream !== void 0) {
229
+ span.setAttribute(LANGSMITH_REQUEST_STREAMING, inputs.stream);
230
+ }
231
+ if (inputs.extra_headers) {
232
+ span.setAttribute(LANGSMITH_REQUEST_HEADERS, JSON.stringify(inputs.extra_headers));
233
+ }
234
+ if (inputs.extra_query) {
235
+ span.setAttribute(GEN_AI_REQUEST_EXTRA_QUERY, JSON.stringify(inputs.extra_query));
236
+ }
237
+ if (inputs.extra_body) {
238
+ span.setAttribute(GEN_AI_REQUEST_EXTRA_BODY, JSON.stringify(inputs.extra_body));
239
+ }
240
+ }
241
+ span.setAttribute(GENAI_PROMPT, JSON.stringify(inputs));
242
+ } catch (e) {
243
+ console.debug(`Failed to process inputs for run ${op.id}`, e);
244
+ }
245
+ }
246
+ if (op.run.outputs) {
247
+ try {
248
+ const outputs = op.run.outputs;
249
+ const tokenUsage = this.getUnifiedRunTokens(outputs);
250
+ if (tokenUsage) {
251
+ span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, tokenUsage[0]);
252
+ span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, tokenUsage[1]);
253
+ span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS, tokenUsage[0] + tokenUsage[1]);
254
+ }
255
+ if (outputs && typeof outputs === "object") {
256
+ if (outputs.model) {
257
+ span.setAttribute(GEN_AI_RESPONSE_MODEL, String(outputs.model));
258
+ }
259
+ if (outputs.id) {
260
+ span.setAttribute(GEN_AI_RESPONSE_ID, outputs.id);
261
+ }
262
+ if (outputs.choices && Array.isArray(outputs.choices)) {
263
+ const finishReasons = outputs.choices.map((choice) => choice.finish_reason).filter((reason) => reason).map(String);
264
+ if (finishReasons.length > 0) {
265
+ span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS, finishReasons.join(", "));
266
+ }
267
+ }
268
+ if (outputs.service_tier) {
269
+ span.setAttribute(GEN_AI_RESPONSE_SERVICE_TIER, outputs.service_tier);
270
+ }
271
+ if (outputs.system_fingerprint) {
272
+ span.setAttribute(GEN_AI_RESPONSE_SYSTEM_FINGERPRINT, outputs.system_fingerprint);
273
+ }
274
+ if (outputs.usage_metadata && typeof outputs.usage_metadata === "object") {
275
+ const usageMetadata = outputs.usage_metadata;
276
+ if (usageMetadata.input_token_details) {
277
+ span.setAttribute(GEN_AI_USAGE_INPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.input_token_details));
278
+ }
279
+ if (usageMetadata.output_token_details) {
280
+ span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.output_token_details));
281
+ }
282
+ }
283
+ }
284
+ span.setAttribute(GENAI_COMPLETION, JSON.stringify(outputs));
285
+ } catch (e) {
286
+ console.debug(`Failed to process outputs for run ${op.id}`, e);
287
+ }
288
+ }
289
+ }
290
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
291
+ getUnifiedRunTokens(outputs) {
292
+ if (!outputs) {
293
+ return null;
294
+ }
295
+ let tokenUsage = this.extractUnifiedRunTokens(outputs.usage_metadata);
296
+ if (tokenUsage) {
297
+ return tokenUsage;
298
+ }
299
+ const keys = Object.keys(outputs);
300
+ for (const key of keys) {
301
+ const haystack = outputs[key];
302
+ if (!haystack || typeof haystack !== "object") {
303
+ continue;
304
+ }
305
+ tokenUsage = this.extractUnifiedRunTokens(haystack.usage_metadata);
306
+ if (tokenUsage) {
307
+ return tokenUsage;
308
+ }
309
+ if (haystack.lc === 1 && haystack.kwargs && typeof haystack.kwargs === "object") {
310
+ tokenUsage = this.extractUnifiedRunTokens(haystack.kwargs.usage_metadata);
311
+ if (tokenUsage) {
312
+ return tokenUsage;
313
+ }
314
+ }
315
+ }
316
+ const generations = outputs.generations || [];
317
+ if (!Array.isArray(generations)) {
318
+ return null;
319
+ }
320
+ const flatGenerations = Array.isArray(generations[0]) ? generations.flat() : generations;
321
+ for (const generation of flatGenerations) {
322
+ if (typeof generation === "object" && generation.message && typeof generation.message === "object" && generation.message.kwargs && typeof generation.message.kwargs === "object") {
323
+ tokenUsage = this.extractUnifiedRunTokens(generation.message.kwargs.usage_metadata);
324
+ if (tokenUsage) {
325
+ return tokenUsage;
326
+ }
327
+ }
328
+ }
329
+ return null;
330
+ }
331
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
332
+ extractUnifiedRunTokens(outputs) {
333
+ if (!outputs || typeof outputs !== "object") {
334
+ return null;
335
+ }
336
+ if (typeof outputs.input_tokens !== "number" || typeof outputs.output_tokens !== "number") {
337
+ return null;
338
+ }
339
+ return [outputs.input_tokens, outputs.output_tokens];
340
+ }
139
341
  }
140
342
  export {
141
- getEnv,
142
- getEnvironmentVariable,
143
- getLangSmithEnvVarsMetadata,
144
- getLangSmithEnvironmentVariable,
145
- getLangSmithEnvironmentVariables,
146
- getOtelEnabled,
147
- getRuntimeEnvironment,
148
- getShas,
149
- isBrowser,
150
- isDeno,
151
- isJsDom,
152
- isNode,
153
- isWebWorker
343
+ LangSmithToOTELTranslator
154
344
  };
155
345
  //# sourceMappingURL=index.es179.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es179.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/env.js"],"sourcesContent":["// Inlined from https://github.com/flexdinesh/browser-or-node\nimport { __version__ } from \"../index.js\";\nlet globalEnv;\nexport const isBrowser = () => typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\nexport const isWebWorker = () => typeof globalThis === \"object\" &&\n globalThis.constructor &&\n globalThis.constructor.name === \"DedicatedWorkerGlobalScope\";\nexport const isJsDom = () => (typeof window !== \"undefined\" && window.name === \"nodejs\") ||\n (typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"jsdom\"));\n// Supabase Edge Function provides a `Deno` global object\n// without `version` property\nexport const isDeno = () => typeof Deno !== \"undefined\";\n// Mark not-as-node if in Supabase Edge Function\nexport const isNode = () => typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\" &&\n !isDeno();\nexport const getEnv = () => {\n if (globalEnv) {\n return globalEnv;\n }\n // @ts-expect-error Bun types are not imported due to conflicts with Node types\n if (typeof Bun !== \"undefined\") {\n globalEnv = \"bun\";\n }\n else if (isBrowser()) {\n globalEnv = \"browser\";\n }\n else if (isNode()) {\n globalEnv = \"node\";\n }\n else if (isWebWorker()) {\n globalEnv = \"webworker\";\n }\n else if (isJsDom()) {\n globalEnv = \"jsdom\";\n }\n else if (isDeno()) {\n globalEnv = \"deno\";\n }\n else {\n globalEnv = \"other\";\n }\n return globalEnv;\n};\nlet runtimeEnvironment;\nexport function getRuntimeEnvironment() {\n if (runtimeEnvironment === undefined) {\n const env = getEnv();\n const releaseEnv = getShas();\n runtimeEnvironment = {\n library: \"langsmith\",\n runtime: env,\n sdk: \"langsmith-js\",\n sdk_version: __version__,\n ...releaseEnv,\n };\n }\n return runtimeEnvironment;\n}\n/**\n * Retrieves the LangSmith-specific metadata from the current runtime environment.\n *\n * @returns {Record<string, string>}\n * - A record of LangSmith-specific metadata environment variables.\n */\nexport function getLangSmithEnvVarsMetadata() {\n const allEnvVars = getLangSmithEnvironmentVariables();\n const envVars = {};\n const excluded = [\n \"LANGCHAIN_API_KEY\",\n \"LANGCHAIN_ENDPOINT\",\n \"LANGCHAIN_TRACING_V2\",\n \"LANGCHAIN_PROJECT\",\n \"LANGCHAIN_SESSION\",\n \"LANGSMITH_API_KEY\",\n \"LANGSMITH_ENDPOINT\",\n \"LANGSMITH_TRACING_V2\",\n \"LANGSMITH_PROJECT\",\n \"LANGSMITH_SESSION\",\n ];\n for (const [key, value] of Object.entries(allEnvVars)) {\n if (typeof value === \"string\" &&\n !excluded.includes(key) &&\n !key.toLowerCase().includes(\"key\") &&\n !key.toLowerCase().includes(\"secret\") &&\n !key.toLowerCase().includes(\"token\")) {\n if (key === \"LANGCHAIN_REVISION_ID\") {\n envVars[\"revision_id\"] = value;\n }\n else {\n envVars[key] = value;\n }\n }\n }\n return envVars;\n}\n/**\n * Retrieves only the LangChain/LangSmith-prefixed environment variables from the current runtime environment.\n * This is more efficient than copying all environment variables.\n *\n * @returns {Record<string, string>}\n * - A record of LangChain/LangSmith environment variables.\n */\nexport function getLangSmithEnvironmentVariables() {\n const envVars = {};\n try {\n // Check for Node.js environment\n // eslint-disable-next-line no-process-env\n if (typeof process !== \"undefined\" && process.env) {\n // eslint-disable-next-line no-process-env\n for (const [key, value] of Object.entries(process.env)) {\n if ((key.startsWith(\"LANGCHAIN_\") || key.startsWith(\"LANGSMITH_\")) &&\n value != null) {\n if ((key.toLowerCase().includes(\"key\") ||\n key.toLowerCase().includes(\"secret\") ||\n key.toLowerCase().includes(\"token\")) &&\n typeof value === \"string\") {\n envVars[key] =\n value.slice(0, 2) +\n \"*\".repeat(value.length - 4) +\n value.slice(-2);\n }\n else {\n envVars[key] = value;\n }\n }\n }\n }\n }\n catch (e) {\n // Catch any errors that might occur while trying to access environment variables\n }\n return envVars;\n}\nexport function getEnvironmentVariable(name) {\n // Certain Deno setups will throw an error if you try to access environment variables\n // https://github.com/hwchase17/langchainjs/issues/1412\n try {\n return typeof process !== \"undefined\"\n ? // eslint-disable-next-line no-process-env\n process.env?.[name]\n : undefined;\n }\n catch (e) {\n return undefined;\n }\n}\nexport function getLangSmithEnvironmentVariable(name) {\n return (getEnvironmentVariable(`LANGSMITH_${name}`) ||\n getEnvironmentVariable(`LANGCHAIN_${name}`));\n}\nexport function setEnvironmentVariable(name, value) {\n if (typeof process !== \"undefined\") {\n // eslint-disable-next-line no-process-env\n process.env[name] = value;\n }\n}\nlet cachedCommitSHAs;\n/**\n * Get the Git commit SHA from common environment variables\n * used by different CI/CD platforms.\n * @returns {string | undefined} The Git commit SHA or undefined if not found.\n */\nexport function getShas() {\n if (cachedCommitSHAs !== undefined) {\n return cachedCommitSHAs;\n }\n const common_release_envs = [\n \"VERCEL_GIT_COMMIT_SHA\",\n \"NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA\",\n \"COMMIT_REF\",\n \"RENDER_GIT_COMMIT\",\n \"CI_COMMIT_SHA\",\n \"CIRCLE_SHA1\",\n \"CF_PAGES_COMMIT_SHA\",\n \"REACT_APP_GIT_SHA\",\n \"SOURCE_VERSION\",\n \"GITHUB_SHA\",\n \"TRAVIS_COMMIT\",\n \"GIT_COMMIT\",\n \"BUILD_VCS_NUMBER\",\n \"bamboo_planRepository_revision\",\n \"Build.SourceVersion\",\n \"BITBUCKET_COMMIT\",\n \"DRONE_COMMIT_SHA\",\n \"SEMAPHORE_GIT_SHA\",\n \"BUILDKITE_COMMIT\",\n ];\n const shas = {};\n for (const env of common_release_envs) {\n const envVar = getEnvironmentVariable(env);\n if (envVar !== undefined) {\n shas[env] = envVar;\n }\n }\n cachedCommitSHAs = shas;\n return shas;\n}\nexport function getOtelEnabled() {\n return (getEnvironmentVariable(\"OTEL_ENABLED\") === \"true\" ||\n getLangSmithEnvironmentVariable(\"OTEL_ENABLED\") === \"true\");\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es179.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/experimental/otel/translator.js"],"sourcesContent":["import * as constants from \"./constants.js\";\nimport { getOTELTrace } from \"../../singletons/otel.js\";\nconst WELL_KNOWN_OPERATION_NAMES = {\n llm: \"chat\",\n tool: \"execute_tool\",\n retriever: \"embeddings\",\n embedding: \"embeddings\",\n prompt: \"chat\",\n};\nfunction getOperationName(runType) {\n return WELL_KNOWN_OPERATION_NAMES[runType] || runType;\n}\nexport class LangSmithToOTELTranslator {\n constructor() {\n Object.defineProperty(this, \"spans\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n }\n exportBatch(operations, otelContextMap) {\n for (const op of operations) {\n try {\n if (!op.run) {\n continue;\n }\n if (op.operation === \"post\") {\n const span = this.createSpanForRun(op, op.run, otelContextMap.get(op.id));\n if (span && !op.run.end_time) {\n this.spans.set(op.id, span);\n }\n }\n else {\n this.updateSpanForRun(op, op.run);\n }\n }\n catch (e) {\n console.error(`Error processing operation ${op.id}:`, e);\n }\n }\n }\n createSpanForRun(op, runInfo, otelContext) {\n const activeSpan = otelContext && getOTELTrace().getSpan(otelContext);\n if (!activeSpan) {\n return;\n }\n try {\n return this.finishSpanSetup(activeSpan, runInfo, op);\n }\n catch (e) {\n console.error(`Failed to create span for run ${op.id}:`, e);\n return undefined;\n }\n }\n finishSpanSetup(span, runInfo, op) {\n // Set all attributes\n this.setSpanAttributes(span, runInfo, op);\n // Set status based on error\n if (runInfo.error) {\n span.setStatus({ code: 2 }); // ERROR status\n span.recordException(new Error(runInfo.error));\n }\n else {\n span.setStatus({ code: 1 }); // OK status\n }\n // End the span if end_time is present\n if (runInfo.end_time) {\n span.end(new Date(runInfo.end_time));\n }\n return span;\n }\n updateSpanForRun(op, runInfo) {\n try {\n const span = this.spans.get(op.id);\n if (!span) {\n console.debug(`No span found for run ${op.id} during update`);\n return;\n }\n // Update attributes\n this.setSpanAttributes(span, runInfo, op);\n // Update status based on error\n if (runInfo.error) {\n span.setStatus({ code: 2 }); // ERROR status\n span.recordException(new Error(runInfo.error));\n }\n else {\n span.setStatus({ code: 1 }); // OK status\n }\n // End the span if end_time is present\n const endTime = runInfo.end_time;\n if (endTime) {\n span.end(new Date(endTime));\n this.spans.delete(op.id);\n }\n }\n catch (e) {\n console.error(`Failed to update span for run ${op.id}:`, e);\n }\n }\n extractModelName(runInfo) {\n // Try to get model name from metadata\n if (runInfo.extra?.metadata) {\n const metadata = runInfo.extra.metadata;\n // First check for ls_model_name in metadata\n if (metadata.ls_model_name) {\n return metadata.ls_model_name;\n }\n // Then check invocation_params for model info\n if (metadata.invocation_params) {\n const invocationParams = metadata.invocation_params;\n if (invocationParams.model) {\n return invocationParams.model;\n }\n else if (invocationParams.model_name) {\n return invocationParams.model_name;\n }\n }\n }\n return;\n }\n setSpanAttributes(span, runInfo, op) {\n if (\"run_type\" in runInfo && runInfo.run_type) {\n span.setAttribute(constants.LANGSMITH_RUN_TYPE, runInfo.run_type);\n // Set GenAI attributes according to OTEL semantic conventions\n const operationName = getOperationName(runInfo.run_type || \"chain\");\n span.setAttribute(constants.GEN_AI_OPERATION_NAME, operationName);\n }\n if (\"name\" in runInfo && runInfo.name) {\n span.setAttribute(constants.LANGSMITH_NAME, runInfo.name);\n }\n if (\"session_id\" in runInfo && runInfo.session_id) {\n span.setAttribute(constants.LANGSMITH_SESSION_ID, runInfo.session_id);\n }\n if (\"session_name\" in runInfo && runInfo.session_name) {\n span.setAttribute(constants.LANGSMITH_SESSION_NAME, runInfo.session_name);\n }\n // Set gen_ai.system\n this.setGenAiSystem(span, runInfo);\n // Set model name if available\n const modelName = this.extractModelName(runInfo);\n if (modelName) {\n span.setAttribute(constants.GEN_AI_REQUEST_MODEL, modelName);\n }\n // Set token usage information\n if (\"prompt_tokens\" in runInfo &&\n typeof runInfo.prompt_tokens === \"number\") {\n span.setAttribute(constants.GEN_AI_USAGE_INPUT_TOKENS, runInfo.prompt_tokens);\n }\n if (\"completion_tokens\" in runInfo &&\n typeof runInfo.completion_tokens === \"number\") {\n span.setAttribute(constants.GEN_AI_USAGE_OUTPUT_TOKENS, runInfo.completion_tokens);\n }\n if (\"total_tokens\" in runInfo && typeof runInfo.total_tokens === \"number\") {\n span.setAttribute(constants.GEN_AI_USAGE_TOTAL_TOKENS, runInfo.total_tokens);\n }\n // Set other parameters from invocation_params\n this.setInvocationParameters(span, runInfo);\n // Set metadata and tags if available\n const metadata = runInfo.extra?.metadata || {};\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== null && value !== undefined) {\n span.setAttribute(`${constants.LANGSMITH_METADATA}.${key}`, String(value));\n }\n }\n const tags = runInfo.tags;\n if (tags && Array.isArray(tags)) {\n span.setAttribute(constants.LANGSMITH_TAGS, tags.join(\", \"));\n }\n else if (tags) {\n span.setAttribute(constants.LANGSMITH_TAGS, String(tags));\n }\n // Support additional serialized attributes, if present\n if (\"serialized\" in runInfo && typeof runInfo.serialized === \"object\") {\n const serialized = runInfo.serialized;\n if (serialized.name) {\n span.setAttribute(constants.GEN_AI_SERIALIZED_NAME, String(serialized.name));\n }\n if (serialized.signature) {\n span.setAttribute(constants.GEN_AI_SERIALIZED_SIGNATURE, String(serialized.signature));\n }\n if (serialized.doc) {\n span.setAttribute(constants.GEN_AI_SERIALIZED_DOC, String(serialized.doc));\n }\n }\n // Set inputs/outputs if available\n this.setIOAttributes(span, op);\n }\n setGenAiSystem(span, runInfo) {\n // Default to \"langchain\" if we can't determine the system\n let system = \"langchain\";\n // Extract model name to determine the system\n const modelName = this.extractModelName(runInfo);\n if (modelName) {\n const modelLower = modelName.toLowerCase();\n if (modelLower.includes(\"anthropic\") || modelLower.startsWith(\"claude\")) {\n system = \"anthropic\";\n }\n else if (modelLower.includes(\"bedrock\")) {\n system = \"aws.bedrock\";\n }\n else if (modelLower.includes(\"azure\") &&\n modelLower.includes(\"openai\")) {\n system = \"az.ai.openai\";\n }\n else if (modelLower.includes(\"azure\") &&\n modelLower.includes(\"inference\")) {\n system = \"az.ai.inference\";\n }\n else if (modelLower.includes(\"cohere\")) {\n system = \"cohere\";\n }\n else if (modelLower.includes(\"deepseek\")) {\n system = \"deepseek\";\n }\n else if (modelLower.includes(\"gemini\")) {\n system = \"gemini\";\n }\n else if (modelLower.includes(\"groq\")) {\n system = \"groq\";\n }\n else if (modelLower.includes(\"watson\") || modelLower.includes(\"ibm\")) {\n system = \"ibm.watsonx.ai\";\n }\n else if (modelLower.includes(\"mistral\")) {\n system = \"mistral_ai\";\n }\n else if (modelLower.includes(\"gpt\") || modelLower.includes(\"openai\")) {\n system = \"openai\";\n }\n else if (modelLower.includes(\"perplexity\") ||\n modelLower.includes(\"sonar\")) {\n system = \"perplexity\";\n }\n else if (modelLower.includes(\"vertex\")) {\n system = \"vertex_ai\";\n }\n else if (modelLower.includes(\"xai\") || modelLower.includes(\"grok\")) {\n system = \"xai\";\n }\n }\n span.setAttribute(constants.GEN_AI_SYSTEM, system);\n }\n setInvocationParameters(span, runInfo) {\n if (!runInfo.extra?.metadata?.invocation_params) {\n return;\n }\n const invocationParams = runInfo.extra.metadata.invocation_params;\n // Set relevant invocation parameters\n if (invocationParams.max_tokens !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_MAX_TOKENS, invocationParams.max_tokens);\n }\n if (invocationParams.temperature !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_TEMPERATURE, invocationParams.temperature);\n }\n if (invocationParams.top_p !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_TOP_P, invocationParams.top_p);\n }\n if (invocationParams.frequency_penalty !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_FREQUENCY_PENALTY, invocationParams.frequency_penalty);\n }\n if (invocationParams.presence_penalty !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_PRESENCE_PENALTY, invocationParams.presence_penalty);\n }\n }\n setIOAttributes(span, op) {\n if (op.run.inputs) {\n try {\n const inputs = op.run.inputs;\n if (typeof inputs === \"object\" && inputs !== null) {\n if (inputs.model && Array.isArray(inputs.messages)) {\n span.setAttribute(constants.GEN_AI_REQUEST_MODEL, inputs.model);\n }\n // Set additional request attributes if available\n if (inputs.stream !== undefined) {\n span.setAttribute(constants.LANGSMITH_REQUEST_STREAMING, inputs.stream);\n }\n if (inputs.extra_headers) {\n span.setAttribute(constants.LANGSMITH_REQUEST_HEADERS, JSON.stringify(inputs.extra_headers));\n }\n if (inputs.extra_query) {\n span.setAttribute(constants.GEN_AI_REQUEST_EXTRA_QUERY, JSON.stringify(inputs.extra_query));\n }\n if (inputs.extra_body) {\n span.setAttribute(constants.GEN_AI_REQUEST_EXTRA_BODY, JSON.stringify(inputs.extra_body));\n }\n }\n span.setAttribute(constants.GENAI_PROMPT, JSON.stringify(inputs));\n }\n catch (e) {\n console.debug(`Failed to process inputs for run ${op.id}`, e);\n }\n }\n if (op.run.outputs) {\n try {\n const outputs = op.run.outputs;\n // Extract token usage from outputs (for LLM runs)\n const tokenUsage = this.getUnifiedRunTokens(outputs);\n if (tokenUsage) {\n span.setAttribute(constants.GEN_AI_USAGE_INPUT_TOKENS, tokenUsage[0]);\n span.setAttribute(constants.GEN_AI_USAGE_OUTPUT_TOKENS, tokenUsage[1]);\n span.setAttribute(constants.GEN_AI_USAGE_TOTAL_TOKENS, tokenUsage[0] + tokenUsage[1]);\n }\n if (outputs && typeof outputs === \"object\") {\n if (outputs.model) {\n span.setAttribute(constants.GEN_AI_RESPONSE_MODEL, String(outputs.model));\n }\n // Extract additional response attributes\n if (outputs.id) {\n span.setAttribute(constants.GEN_AI_RESPONSE_ID, outputs.id);\n }\n if (outputs.choices && Array.isArray(outputs.choices)) {\n const finishReasons = outputs.choices\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((choice) => choice.finish_reason)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .filter((reason) => reason)\n .map(String);\n if (finishReasons.length > 0) {\n span.setAttribute(constants.GEN_AI_RESPONSE_FINISH_REASONS, finishReasons.join(\", \"));\n }\n }\n if (outputs.service_tier) {\n span.setAttribute(constants.GEN_AI_RESPONSE_SERVICE_TIER, outputs.service_tier);\n }\n if (outputs.system_fingerprint) {\n span.setAttribute(constants.GEN_AI_RESPONSE_SYSTEM_FINGERPRINT, outputs.system_fingerprint);\n }\n if (outputs.usage_metadata &&\n typeof outputs.usage_metadata === \"object\") {\n const usageMetadata = outputs.usage_metadata;\n if (usageMetadata.input_token_details) {\n span.setAttribute(constants.GEN_AI_USAGE_INPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.input_token_details));\n }\n if (usageMetadata.output_token_details) {\n span.setAttribute(constants.GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.output_token_details));\n }\n }\n }\n span.setAttribute(constants.GENAI_COMPLETION, JSON.stringify(outputs));\n }\n catch (e) {\n console.debug(`Failed to process outputs for run ${op.id}`, e);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getUnifiedRunTokens(outputs) {\n if (!outputs) {\n return null;\n }\n // Search in non-generations lists\n let tokenUsage = this.extractUnifiedRunTokens(outputs.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n // Find if direct kwarg in outputs\n const keys = Object.keys(outputs);\n for (const key of keys) {\n const haystack = outputs[key];\n if (!haystack || typeof haystack !== \"object\") {\n continue;\n }\n tokenUsage = this.extractUnifiedRunTokens(haystack.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n if (haystack.lc === 1 &&\n haystack.kwargs &&\n typeof haystack.kwargs === \"object\") {\n tokenUsage = this.extractUnifiedRunTokens(haystack.kwargs.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n }\n }\n // Find in generations\n const generations = outputs.generations || [];\n if (!Array.isArray(generations)) {\n return null;\n }\n const flatGenerations = Array.isArray(generations[0])\n ? generations.flat()\n : generations;\n for (const generation of flatGenerations) {\n if (typeof generation === \"object\" &&\n generation.message &&\n typeof generation.message === \"object\" &&\n generation.message.kwargs &&\n typeof generation.message.kwargs === \"object\") {\n tokenUsage = this.extractUnifiedRunTokens(generation.message.kwargs.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n }\n }\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extractUnifiedRunTokens(outputs) {\n if (!outputs || typeof outputs !== \"object\") {\n return null;\n }\n if (typeof outputs.input_tokens !== \"number\" ||\n typeof outputs.output_tokens !== \"number\") {\n return null;\n }\n return [outputs.input_tokens, outputs.output_tokens];\n }\n}\n"],"names":["constants.LANGSMITH_RUN_TYPE","constants.GEN_AI_OPERATION_NAME","constants.LANGSMITH_NAME","constants.LANGSMITH_SESSION_ID","constants.LANGSMITH_SESSION_NAME","constants.GEN_AI_REQUEST_MODEL","constants.GEN_AI_USAGE_INPUT_TOKENS","constants.GEN_AI_USAGE_OUTPUT_TOKENS","constants.GEN_AI_USAGE_TOTAL_TOKENS","constants.LANGSMITH_METADATA","constants.LANGSMITH_TAGS","constants.GEN_AI_SERIALIZED_NAME","constants.GEN_AI_SERIALIZED_SIGNATURE","constants.GEN_AI_SERIALIZED_DOC","constants.GEN_AI_SYSTEM","constants.GEN_AI_REQUEST_MAX_TOKENS","constants.GEN_AI_REQUEST_TEMPERATURE","constants.GEN_AI_REQUEST_TOP_P","constants.GEN_AI_REQUEST_FREQUENCY_PENALTY","constants.GEN_AI_REQUEST_PRESENCE_PENALTY","constants.LANGSMITH_REQUEST_STREAMING","constants.LANGSMITH_REQUEST_HEADERS","constants.GEN_AI_REQUEST_EXTRA_QUERY","constants.GEN_AI_REQUEST_EXTRA_BODY","constants.GENAI_PROMPT","constants.GEN_AI_RESPONSE_MODEL","constants.GEN_AI_RESPONSE_ID","constants.GEN_AI_RESPONSE_FINISH_REASONS","constants.GEN_AI_RESPONSE_SERVICE_TIER","constants.GEN_AI_RESPONSE_SYSTEM_FINGERPRINT","constants.GEN_AI_USAGE_INPUT_TOKEN_DETAILS","constants.GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS","constants.GENAI_COMPLETION"],"mappings":";;AAEA,MAAM,6BAA6B;AAAA,EAC/B,KAAK;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AACZ;AACA,SAAS,iBAAiB,SAAS;AAC/B,SAAO,2BAA2B,OAAO,KAAK;AAClD;AACO,MAAM,0BAA0B;AAAA,EACnC,cAAc;AACV,WAAO,eAAe,MAAM,SAAS;AAAA,MACjC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO,oBAAI,IAAG;AAAA,IAC1B,CAAS;AAAA,EACL;AAAA,EACA,YAAY,YAAY,gBAAgB;AACpC,eAAW,MAAM,YAAY;AACzB,UAAI;AACA,YAAI,CAAC,GAAG,KAAK;AACT;AAAA,QACJ;AACA,YAAI,GAAG,cAAc,QAAQ;AACzB,gBAAM,OAAO,KAAK,iBAAiB,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,EAAE,CAAC;AACxE,cAAI,QAAQ,CAAC,GAAG,IAAI,UAAU;AAC1B,iBAAK,MAAM,IAAI,GAAG,IAAI,IAAI;AAAA,UAC9B;AAAA,QACJ,OACK;AACD,eAAK,iBAAiB,IAAI,GAAG,GAAG;AAAA,QACpC;AAAA,MACJ,SACO,GAAG;AACN,gBAAQ,MAAM,8BAA8B,GAAG,EAAE,KAAK,CAAC;AAAA,MAC3D;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,iBAAiB,IAAI,SAAS,aAAa;AACvC,UAAM,aAAa,eAAe,aAAY,EAAG,QAAQ,WAAW;AACpE,QAAI,CAAC,YAAY;AACb;AAAA,IACJ;AACA,QAAI;AACA,aAAO,KAAK,gBAAgB,YAAY,SAAS,EAAE;AAAA,IACvD,SACO,GAAG;AACN,cAAQ,MAAM,iCAAiC,GAAG,EAAE,KAAK,CAAC;AAC1D,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,gBAAgB,MAAM,SAAS,IAAI;AAE/B,SAAK,kBAAkB,MAAM,SAAS,EAAE;AAExC,QAAI,QAAQ,OAAO;AACf,WAAK,UAAU,EAAE,MAAM,EAAC,CAAE;AAC1B,WAAK,gBAAgB,IAAI,MAAM,QAAQ,KAAK,CAAC;AAAA,IACjD,OACK;AACD,WAAK,UAAU,EAAE,MAAM,EAAC,CAAE;AAAA,IAC9B;AAEA,QAAI,QAAQ,UAAU;AAClB,WAAK,IAAI,IAAI,KAAK,QAAQ,QAAQ,CAAC;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AAAA,EACA,iBAAiB,IAAI,SAAS;AAC1B,QAAI;AACA,YAAM,OAAO,KAAK,MAAM,IAAI,GAAG,EAAE;AACjC,UAAI,CAAC,MAAM;AACP,gBAAQ,MAAM,yBAAyB,GAAG,EAAE,gBAAgB;AAC5D;AAAA,MACJ;AAEA,WAAK,kBAAkB,MAAM,SAAS,EAAE;AAExC,UAAI,QAAQ,OAAO;AACf,aAAK,UAAU,EAAE,MAAM,EAAC,CAAE;AAC1B,aAAK,gBAAgB,IAAI,MAAM,QAAQ,KAAK,CAAC;AAAA,MACjD,OACK;AACD,aAAK,UAAU,EAAE,MAAM,EAAC,CAAE;AAAA,MAC9B;AAEA,YAAM,UAAU,QAAQ;AACxB,UAAI,SAAS;AACT,aAAK,IAAI,IAAI,KAAK,OAAO,CAAC;AAC1B,aAAK,MAAM,OAAO,GAAG,EAAE;AAAA,MAC3B;AAAA,IACJ,SACO,GAAG;AACN,cAAQ,MAAM,iCAAiC,GAAG,EAAE,KAAK,CAAC;AAAA,IAC9D;AAAA,EACJ;AAAA,EACA,iBAAiB,SAAS;AAEtB,QAAI,QAAQ,OAAO,UAAU;AACzB,YAAM,WAAW,QAAQ,MAAM;AAE/B,UAAI,SAAS,eAAe;AACxB,eAAO,SAAS;AAAA,MACpB;AAEA,UAAI,SAAS,mBAAmB;AAC5B,cAAM,mBAAmB,SAAS;AAClC,YAAI,iBAAiB,OAAO;AACxB,iBAAO,iBAAiB;AAAA,QAC5B,WACS,iBAAiB,YAAY;AAClC,iBAAO,iBAAiB;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AACA;AAAA,EACJ;AAAA,EACA,kBAAkB,MAAM,SAAS,IAAI;AACjC,QAAI,cAAc,WAAW,QAAQ,UAAU;AAC3C,WAAK,aAAaA,oBAA8B,QAAQ,QAAQ;AAEhE,YAAM,gBAAgB,iBAAiB,QAAQ,YAAY,OAAO;AAClE,WAAK,aAAaC,uBAAiC,aAAa;AAAA,IACpE;AACA,QAAI,UAAU,WAAW,QAAQ,MAAM;AACnC,WAAK,aAAaC,gBAA0B,QAAQ,IAAI;AAAA,IAC5D;AACA,QAAI,gBAAgB,WAAW,QAAQ,YAAY;AAC/C,WAAK,aAAaC,sBAAgC,QAAQ,UAAU;AAAA,IACxE;AACA,QAAI,kBAAkB,WAAW,QAAQ,cAAc;AACnD,WAAK,aAAaC,wBAAkC,QAAQ,YAAY;AAAA,IAC5E;AAEA,SAAK,eAAe,MAAM,OAAO;AAEjC,UAAM,YAAY,KAAK,iBAAiB,OAAO;AAC/C,QAAI,WAAW;AACX,WAAK,aAAaC,sBAAgC,SAAS;AAAA,IAC/D;AAEA,QAAI,mBAAmB,WACnB,OAAO,QAAQ,kBAAkB,UAAU;AAC3C,WAAK,aAAaC,2BAAqC,QAAQ,aAAa;AAAA,IAChF;AACA,QAAI,uBAAuB,WACvB,OAAO,QAAQ,sBAAsB,UAAU;AAC/C,WAAK,aAAaC,4BAAsC,QAAQ,iBAAiB;AAAA,IACrF;AACA,QAAI,kBAAkB,WAAW,OAAO,QAAQ,iBAAiB,UAAU;AACvE,WAAK,aAAaC,2BAAqC,QAAQ,YAAY;AAAA,IAC/E;AAEA,SAAK,wBAAwB,MAAM,OAAO;AAE1C,UAAM,WAAW,QAAQ,OAAO,YAAY,CAAA;AAC5C,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACjD,UAAI,UAAU,QAAQ,UAAU,QAAW;AACvC,aAAK,aAAa,GAAGC,kBAA4B,IAAI,GAAG,IAAI,OAAO,KAAK,CAAC;AAAA,MAC7E;AAAA,IACJ;AACA,UAAM,OAAO,QAAQ;AACrB,QAAI,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAC7B,WAAK,aAAaC,gBAA0B,KAAK,KAAK,IAAI,CAAC;AAAA,IAC/D,WACS,MAAM;AACX,WAAK,aAAaA,gBAA0B,OAAO,IAAI,CAAC;AAAA,IAC5D;AAEA,QAAI,gBAAgB,WAAW,OAAO,QAAQ,eAAe,UAAU;AACnE,YAAM,aAAa,QAAQ;AAC3B,UAAI,WAAW,MAAM;AACjB,aAAK,aAAaC,wBAAkC,OAAO,WAAW,IAAI,CAAC;AAAA,MAC/E;AACA,UAAI,WAAW,WAAW;AACtB,aAAK,aAAaC,6BAAuC,OAAO,WAAW,SAAS,CAAC;AAAA,MACzF;AACA,UAAI,WAAW,KAAK;AAChB,aAAK,aAAaC,uBAAiC,OAAO,WAAW,GAAG,CAAC;AAAA,MAC7E;AAAA,IACJ;AAEA,SAAK,gBAAgB,MAAM,EAAE;AAAA,EACjC;AAAA,EACA,eAAe,MAAM,SAAS;AAE1B,QAAI,SAAS;AAEb,UAAM,YAAY,KAAK,iBAAiB,OAAO;AAC/C,QAAI,WAAW;AACX,YAAM,aAAa,UAAU,YAAW;AACxC,UAAI,WAAW,SAAS,WAAW,KAAK,WAAW,WAAW,QAAQ,GAAG;AACrE,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,SAAS,GAAG;AACrC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,OAAO,KAChC,WAAW,SAAS,QAAQ,GAAG;AAC/B,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,OAAO,KAChC,WAAW,SAAS,WAAW,GAAG;AAClC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,QAAQ,GAAG;AACpC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,UAAU,GAAG;AACtC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,QAAQ,GAAG;AACpC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,MAAM,GAAG;AAClC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,QAAQ,KAAK,WAAW,SAAS,KAAK,GAAG;AAClE,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,SAAS,GAAG;AACrC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,KAAK,KAAK,WAAW,SAAS,QAAQ,GAAG;AAClE,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,YAAY,KACrC,WAAW,SAAS,OAAO,GAAG;AAC9B,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,QAAQ,GAAG;AACpC,iBAAS;AAAA,MACb,WACS,WAAW,SAAS,KAAK,KAAK,WAAW,SAAS,MAAM,GAAG;AAChE,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,SAAK,aAAaC,eAAyB,MAAM;AAAA,EACrD;AAAA,EACA,wBAAwB,MAAM,SAAS;AACnC,QAAI,CAAC,QAAQ,OAAO,UAAU,mBAAmB;AAC7C;AAAA,IACJ;AACA,UAAM,mBAAmB,QAAQ,MAAM,SAAS;AAEhD,QAAI,iBAAiB,eAAe,QAAW;AAC3C,WAAK,aAAaC,2BAAqC,iBAAiB,UAAU;AAAA,IACtF;AACA,QAAI,iBAAiB,gBAAgB,QAAW;AAC5C,WAAK,aAAaC,4BAAsC,iBAAiB,WAAW;AAAA,IACxF;AACA,QAAI,iBAAiB,UAAU,QAAW;AACtC,WAAK,aAAaC,sBAAgC,iBAAiB,KAAK;AAAA,IAC5E;AACA,QAAI,iBAAiB,sBAAsB,QAAW;AAClD,WAAK,aAAaC,kCAA4C,iBAAiB,iBAAiB;AAAA,IACpG;AACA,QAAI,iBAAiB,qBAAqB,QAAW;AACjD,WAAK,aAAaC,iCAA2C,iBAAiB,gBAAgB;AAAA,IAClG;AAAA,EACJ;AAAA,EACA,gBAAgB,MAAM,IAAI;AACtB,QAAI,GAAG,IAAI,QAAQ;AACf,UAAI;AACA,cAAM,SAAS,GAAG,IAAI;AACtB,YAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AAC/C,cAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,QAAQ,GAAG;AAChD,iBAAK,aAAad,sBAAgC,OAAO,KAAK;AAAA,UAClE;AAEA,cAAI,OAAO,WAAW,QAAW;AAC7B,iBAAK,aAAae,6BAAuC,OAAO,MAAM;AAAA,UAC1E;AACA,cAAI,OAAO,eAAe;AACtB,iBAAK,aAAaC,2BAAqC,KAAK,UAAU,OAAO,aAAa,CAAC;AAAA,UAC/F;AACA,cAAI,OAAO,aAAa;AACpB,iBAAK,aAAaC,4BAAsC,KAAK,UAAU,OAAO,WAAW,CAAC;AAAA,UAC9F;AACA,cAAI,OAAO,YAAY;AACnB,iBAAK,aAAaC,2BAAqC,KAAK,UAAU,OAAO,UAAU,CAAC;AAAA,UAC5F;AAAA,QACJ;AACA,aAAK,aAAaC,cAAwB,KAAK,UAAU,MAAM,CAAC;AAAA,MACpE,SACO,GAAG;AACN,gBAAQ,MAAM,oCAAoC,GAAG,EAAE,IAAI,CAAC;AAAA,MAChE;AAAA,IACJ;AACA,QAAI,GAAG,IAAI,SAAS;AAChB,UAAI;AACA,cAAM,UAAU,GAAG,IAAI;AAEvB,cAAM,aAAa,KAAK,oBAAoB,OAAO;AACnD,YAAI,YAAY;AACZ,eAAK,aAAalB,2BAAqC,WAAW,CAAC,CAAC;AACpE,eAAK,aAAaC,4BAAsC,WAAW,CAAC,CAAC;AACrE,eAAK,aAAaC,2BAAqC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC;AAAA,QACxF;AACA,YAAI,WAAW,OAAO,YAAY,UAAU;AACxC,cAAI,QAAQ,OAAO;AACf,iBAAK,aAAaiB,uBAAiC,OAAO,QAAQ,KAAK,CAAC;AAAA,UAC5E;AAEA,cAAI,QAAQ,IAAI;AACZ,iBAAK,aAAaC,oBAA8B,QAAQ,EAAE;AAAA,UAC9D;AACA,cAAI,QAAQ,WAAW,MAAM,QAAQ,QAAQ,OAAO,GAAG;AACnD,kBAAM,gBAAgB,QAAQ,QAEzB,IAAI,CAAC,WAAW,OAAO,aAAa,EAEpC,OAAO,CAAC,WAAW,MAAM,EACzB,IAAI,MAAM;AACf,gBAAI,cAAc,SAAS,GAAG;AAC1B,mBAAK,aAAaC,gCAA0C,cAAc,KAAK,IAAI,CAAC;AAAA,YACxF;AAAA,UACJ;AACA,cAAI,QAAQ,cAAc;AACtB,iBAAK,aAAaC,8BAAwC,QAAQ,YAAY;AAAA,UAClF;AACA,cAAI,QAAQ,oBAAoB;AAC5B,iBAAK,aAAaC,oCAA8C,QAAQ,kBAAkB;AAAA,UAC9F;AACA,cAAI,QAAQ,kBACR,OAAO,QAAQ,mBAAmB,UAAU;AAC5C,kBAAM,gBAAgB,QAAQ;AAC9B,gBAAI,cAAc,qBAAqB;AACnC,mBAAK,aAAaC,kCAA4C,KAAK,UAAU,cAAc,mBAAmB,CAAC;AAAA,YACnH;AACA,gBAAI,cAAc,sBAAsB;AACpC,mBAAK,aAAaC,mCAA6C,KAAK,UAAU,cAAc,oBAAoB,CAAC;AAAA,YACrH;AAAA,UACJ;AAAA,QACJ;AACA,aAAK,aAAaC,kBAA4B,KAAK,UAAU,OAAO,CAAC;AAAA,MACzE,SACO,GAAG;AACN,gBAAQ,MAAM,qCAAqC,GAAG,EAAE,IAAI,CAAC;AAAA,MACjE;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAEA,oBAAoB,SAAS;AACzB,QAAI,CAAC,SAAS;AACV,aAAO;AAAA,IACX;AAEA,QAAI,aAAa,KAAK,wBAAwB,QAAQ,cAAc;AACpE,QAAI,YAAY;AACZ,aAAO;AAAA,IACX;AAEA,UAAM,OAAO,OAAO,KAAK,OAAO;AAChC,eAAW,OAAO,MAAM;AACpB,YAAM,WAAW,QAAQ,GAAG;AAC5B,UAAI,CAAC,YAAY,OAAO,aAAa,UAAU;AAC3C;AAAA,MACJ;AACA,mBAAa,KAAK,wBAAwB,SAAS,cAAc;AACjE,UAAI,YAAY;AACZ,eAAO;AAAA,MACX;AACA,UAAI,SAAS,OAAO,KAChB,SAAS,UACT,OAAO,SAAS,WAAW,UAAU;AACrC,qBAAa,KAAK,wBAAwB,SAAS,OAAO,cAAc;AACxE,YAAI,YAAY;AACZ,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,cAAc,QAAQ,eAAe,CAAA;AAC3C,QAAI,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC7B,aAAO;AAAA,IACX;AACA,UAAM,kBAAkB,MAAM,QAAQ,YAAY,CAAC,CAAC,IAC9C,YAAY,KAAI,IAChB;AACN,eAAW,cAAc,iBAAiB;AACtC,UAAI,OAAO,eAAe,YACtB,WAAW,WACX,OAAO,WAAW,YAAY,YAC9B,WAAW,QAAQ,UACnB,OAAO,WAAW,QAAQ,WAAW,UAAU;AAC/C,qBAAa,KAAK,wBAAwB,WAAW,QAAQ,OAAO,cAAc;AAClF,YAAI,YAAY;AACZ,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA,EAEA,wBAAwB,SAAS;AAC7B,QAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AACzC,aAAO;AAAA,IACX;AACA,QAAI,OAAO,QAAQ,iBAAiB,YAChC,OAAO,QAAQ,kBAAkB,UAAU;AAC3C,aAAO;AAAA,IACX;AACA,WAAO,CAAC,QAAQ,cAAc,QAAQ,aAAa;AAAA,EACvD;AACJ;","x_google_ignoreList":[0]}