langgraph-ui-components 0.0.4 → 0.0.7

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 (520) 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 +143 -3134
  4. package/dist/index.es100.js.map +1 -1
  5. package/dist/index.es101.js +202 -36
  6. package/dist/index.es101.js.map +1 -1
  7. package/dist/index.es102.js +14 -5
  8. package/dist/index.es102.js.map +1 -1
  9. package/dist/index.es103.js +27 -70
  10. package/dist/index.es103.js.map +1 -1
  11. package/dist/index.es104.js +28 -31
  12. package/dist/index.es104.js.map +1 -1
  13. package/dist/index.es105.js +3157 -5
  14. package/dist/index.es105.js.map +1 -1
  15. package/dist/index.es106.js +18 -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 +11 -5
  22. package/dist/index.es109.js.map +1 -1
  23. package/dist/index.es11.js +166 -123
  24. package/dist/index.es11.js.map +1 -1
  25. package/dist/index.es110.js +503 -2
  26. package/dist/index.es110.js.map +1 -1
  27. package/dist/index.es111.js +5 -146
  28. package/dist/index.es111.js.map +1 -1
  29. package/dist/index.es112.js +2 -908
  30. package/dist/index.es112.js.map +1 -1
  31. package/dist/index.es113.js +128 -262
  32. package/dist/index.es113.js.map +1 -1
  33. package/dist/index.es114.js +907 -3
  34. package/dist/index.es114.js.map +1 -1
  35. package/dist/index.es115.js +262 -426
  36. package/dist/index.es115.js.map +1 -1
  37. package/dist/index.es116.js +3 -47
  38. package/dist/index.es116.js.map +1 -1
  39. package/dist/index.es117.js +443 -21
  40. package/dist/index.es117.js.map +1 -1
  41. package/dist/index.es118.js +42 -75
  42. package/dist/index.es118.js.map +1 -1
  43. package/dist/index.es119.js +22 -129
  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 +74 -44
  48. package/dist/index.es120.js.map +1 -1
  49. package/dist/index.es121.js +129 -10
  50. package/dist/index.es121.js.map +1 -1
  51. package/dist/index.es122.js +47 -43
  52. package/dist/index.es122.js.map +1 -1
  53. package/dist/index.es123.js +9 -98
  54. package/dist/index.es123.js.map +1 -1
  55. package/dist/index.es124.js +43 -51
  56. package/dist/index.es124.js.map +1 -1
  57. package/dist/index.es125.js +96 -13
  58. package/dist/index.es125.js.map +1 -1
  59. package/dist/index.es126.js +52 -14
  60. package/dist/index.es126.js.map +1 -1
  61. package/dist/index.es127.js +156 -81
  62. package/dist/index.es127.js.map +1 -1
  63. package/dist/index.es128.js +2 -2
  64. package/dist/index.es129.js +14 -55
  65. package/dist/index.es129.js.map +1 -1
  66. package/dist/index.es13.js +126 -32
  67. package/dist/index.es13.js.map +1 -1
  68. package/dist/index.es130.js +87 -98
  69. package/dist/index.es130.js.map +1 -1
  70. package/dist/index.es131.js +2 -191
  71. package/dist/index.es131.js.map +1 -1
  72. package/dist/index.es132.js +54 -108
  73. package/dist/index.es132.js.map +1 -1
  74. package/dist/index.es133.js +98 -33
  75. package/dist/index.es133.js.map +1 -1
  76. package/dist/index.es134.js +191 -10
  77. package/dist/index.es134.js.map +1 -1
  78. package/dist/index.es135.js +109 -10
  79. package/dist/index.es135.js.map +1 -1
  80. package/dist/index.es136.js +35 -12
  81. package/dist/index.es136.js.map +1 -1
  82. package/dist/index.es137.js +10 -91
  83. package/dist/index.es137.js.map +1 -1
  84. package/dist/index.es138.js +11 -275
  85. package/dist/index.es138.js.map +1 -1
  86. package/dist/index.es139.js +12 -2
  87. package/dist/index.es139.js.map +1 -1
  88. package/dist/index.es140.js +88 -161
  89. package/dist/index.es140.js.map +1 -1
  90. package/dist/index.es141.js +270 -46
  91. package/dist/index.es141.js.map +1 -1
  92. package/dist/index.es142.js +2 -40
  93. package/dist/index.es142.js.map +1 -1
  94. package/dist/index.es143.js +164 -35
  95. package/dist/index.es143.js.map +1 -1
  96. package/dist/index.es144.js +45 -34
  97. package/dist/index.es144.js.map +1 -1
  98. package/dist/index.es145.js +37 -21
  99. package/dist/index.es145.js.map +1 -1
  100. package/dist/index.es146.js +32 -588
  101. package/dist/index.es146.js.map +1 -1
  102. package/dist/index.es147.js +32 -117
  103. package/dist/index.es147.js.map +1 -1
  104. package/dist/index.es148.js +22 -162
  105. package/dist/index.es148.js.map +1 -1
  106. package/dist/index.es149.js +591 -2
  107. package/dist/index.es149.js.map +1 -1
  108. package/dist/index.es15.js +15 -15
  109. package/dist/index.es150.js +125 -2
  110. package/dist/index.es150.js.map +1 -1
  111. package/dist/index.es151.js +2 -2
  112. package/dist/index.es152.js +2 -22
  113. package/dist/index.es152.js.map +1 -1
  114. package/dist/index.es153.js +22 -2
  115. package/dist/index.es153.js.map +1 -1
  116. package/dist/index.es154.js +2 -25
  117. package/dist/index.es154.js.map +1 -1
  118. package/dist/index.es155.js +25 -8
  119. package/dist/index.es155.js.map +1 -1
  120. package/dist/index.es156.js +4 -5
  121. package/dist/index.es156.js.map +1 -1
  122. package/dist/index.es157.js +7 -12
  123. package/dist/index.es157.js.map +1 -1
  124. package/dist/index.es158.js +5 -6
  125. package/dist/index.es158.js.map +1 -1
  126. package/dist/index.es159.js +12 -63
  127. package/dist/index.es159.js.map +1 -1
  128. package/dist/index.es160.js +5 -21
  129. package/dist/index.es160.js.map +1 -1
  130. package/dist/index.es161.js +24 -5
  131. package/dist/index.es161.js.map +1 -1
  132. package/dist/index.es162.js +11 -348
  133. package/dist/index.es162.js.map +1 -1
  134. package/dist/index.es163.js +52 -23
  135. package/dist/index.es163.js.map +1 -1
  136. package/dist/index.es164.js +63 -11
  137. package/dist/index.es164.js.map +1 -1
  138. package/dist/index.es165.js +21 -53
  139. package/dist/index.es165.js.map +1 -1
  140. package/dist/index.es166.js +6 -7
  141. package/dist/index.es166.js.map +1 -1
  142. package/dist/index.es167.js +342 -96
  143. package/dist/index.es167.js.map +1 -1
  144. package/dist/index.es168.js +6 -118
  145. package/dist/index.es168.js.map +1 -1
  146. package/dist/index.es169.js +98 -131
  147. package/dist/index.es169.js.map +1 -1
  148. package/dist/index.es17.js +2 -2
  149. package/dist/index.es170.js +108 -104
  150. package/dist/index.es170.js.map +1 -1
  151. package/dist/index.es171.js +136 -6
  152. package/dist/index.es171.js.map +1 -1
  153. package/dist/index.es172.js +114 -3
  154. package/dist/index.es172.js.map +1 -1
  155. package/dist/index.es173.js +6 -2
  156. package/dist/index.es173.js.map +1 -1
  157. package/dist/index.es174.js +2 -3737
  158. package/dist/index.es174.js.map +1 -1
  159. package/dist/index.es175.js +3682 -287
  160. package/dist/index.es175.js.map +1 -1
  161. package/dist/index.es176.js +321 -88
  162. package/dist/index.es176.js.map +1 -1
  163. package/dist/index.es177.js +95 -119
  164. package/dist/index.es177.js.map +1 -1
  165. package/dist/index.es178.js +131 -13
  166. package/dist/index.es178.js.map +1 -1
  167. package/dist/index.es179.js +13 -150
  168. package/dist/index.es179.js.map +1 -1
  169. package/dist/index.es180.js +150 -13
  170. package/dist/index.es180.js.map +1 -1
  171. package/dist/index.es181.js +13 -6
  172. package/dist/index.es181.js.map +1 -1
  173. package/dist/index.es182.js +6 -19
  174. package/dist/index.es182.js.map +1 -1
  175. package/dist/index.es183.js +17 -86
  176. package/dist/index.es183.js.map +1 -1
  177. package/dist/index.es184.js +69 -222
  178. package/dist/index.es184.js.map +1 -1
  179. package/dist/index.es185.js +242 -23
  180. package/dist/index.es185.js.map +1 -1
  181. package/dist/index.es186.js +23 -5
  182. package/dist/index.es186.js.map +1 -1
  183. package/dist/index.es187.js +6 -4
  184. package/dist/index.es187.js.map +1 -1
  185. package/dist/index.es188.js +4 -18
  186. package/dist/index.es188.js.map +1 -1
  187. package/dist/index.es189.js +16 -6
  188. package/dist/index.es189.js.map +1 -1
  189. package/dist/index.es19.js +119 -15
  190. package/dist/index.es19.js.map +1 -1
  191. package/dist/index.es190.js +7 -141
  192. package/dist/index.es190.js.map +1 -1
  193. package/dist/index.es191.js +142 -2
  194. package/dist/index.es191.js.map +1 -1
  195. package/dist/index.es192.js +2 -32
  196. package/dist/index.es192.js.map +1 -1
  197. package/dist/index.es193.js +31 -5
  198. package/dist/index.es193.js.map +1 -1
  199. package/dist/index.es194.js +5 -105
  200. package/dist/index.es194.js.map +1 -1
  201. package/dist/index.es195.js +106 -13
  202. package/dist/index.es195.js.map +1 -1
  203. package/dist/index.es196.js +12 -17
  204. package/dist/index.es196.js.map +1 -1
  205. package/dist/index.es197.js +15 -28
  206. package/dist/index.es197.js.map +1 -1
  207. package/dist/index.es198.js +30 -3
  208. package/dist/index.es198.js.map +1 -1
  209. package/dist/index.es199.js +3 -4
  210. package/dist/index.es199.js.map +1 -1
  211. package/dist/index.es2.js +24 -16
  212. package/dist/index.es2.js.map +1 -1
  213. package/dist/index.es20.js +17 -68
  214. package/dist/index.es20.js.map +1 -1
  215. package/dist/index.es200.js +5 -5
  216. package/dist/index.es200.js.map +1 -1
  217. package/dist/index.es201.js +4 -36
  218. package/dist/index.es201.js.map +1 -1
  219. package/dist/index.es202.js +36 -7
  220. package/dist/index.es202.js.map +1 -1
  221. package/dist/index.es203.js +7 -5
  222. package/dist/index.es203.js.map +1 -1
  223. package/dist/index.es204.js +5 -6
  224. package/dist/index.es204.js.map +1 -1
  225. package/dist/index.es205.js +6 -41
  226. package/dist/index.es205.js.map +1 -1
  227. package/dist/index.es206.js +41 -12
  228. package/dist/index.es206.js.map +1 -1
  229. package/dist/index.es207.js +11 -240
  230. package/dist/index.es207.js.map +1 -1
  231. package/dist/index.es208.js +239 -48
  232. package/dist/index.es208.js.map +1 -1
  233. package/dist/index.es209.js +49 -33
  234. package/dist/index.es209.js.map +1 -1
  235. package/dist/index.es21.js +3 -3
  236. package/dist/index.es21.js.map +1 -1
  237. package/dist/index.es210.js +32 -10
  238. package/dist/index.es210.js.map +1 -1
  239. package/dist/index.es211.js +12 -7
  240. package/dist/index.es211.js.map +1 -1
  241. package/dist/index.es212.js +7 -6
  242. package/dist/index.es212.js.map +1 -1
  243. package/dist/index.es213.js +6 -64
  244. package/dist/index.es213.js.map +1 -1
  245. package/dist/index.es214.js +60 -36
  246. package/dist/index.es214.js.map +1 -1
  247. package/dist/index.es215.js +39 -30
  248. package/dist/index.es215.js.map +1 -1
  249. package/dist/index.es216.js +30 -60
  250. package/dist/index.es216.js.map +1 -1
  251. package/dist/index.es217.js +60 -13
  252. package/dist/index.es217.js.map +1 -1
  253. package/dist/index.es218.js +9 -17
  254. package/dist/index.es218.js.map +1 -1
  255. package/dist/index.es219.js +23 -5
  256. package/dist/index.es219.js.map +1 -1
  257. package/dist/index.es22.js +1 -1
  258. package/dist/index.es220.js +4 -16
  259. package/dist/index.es220.js.map +1 -1
  260. package/dist/index.es221.js +14 -30
  261. package/dist/index.es221.js.map +1 -1
  262. package/dist/index.es222.js +32 -4
  263. package/dist/index.es222.js.map +1 -1
  264. package/dist/index.es223.js +4 -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 +5 -8
  269. package/dist/index.es225.js.map +1 -1
  270. package/dist/index.es226.js +6 -90
  271. package/dist/index.es226.js.map +1 -1
  272. package/dist/index.es227.js +90 -16
  273. package/dist/index.es227.js.map +1 -1
  274. package/dist/index.es228.js +17 -761
  275. package/dist/index.es228.js.map +1 -1
  276. package/dist/index.es229.js +762 -66
  277. package/dist/index.es229.js.map +1 -1
  278. package/dist/index.es230.js +66 -174
  279. package/dist/index.es230.js.map +1 -1
  280. package/dist/index.es231.js +169 -33
  281. package/dist/index.es231.js.map +1 -1
  282. package/dist/index.es232.js +37 -136
  283. package/dist/index.es232.js.map +1 -1
  284. package/dist/index.es233.js +136 -92
  285. package/dist/index.es233.js.map +1 -1
  286. package/dist/index.es234.js +92 -32
  287. package/dist/index.es234.js.map +1 -1
  288. package/dist/index.es235.js +32 -284
  289. package/dist/index.es235.js.map +1 -1
  290. package/dist/index.es236.js +284 -25
  291. package/dist/index.es236.js.map +1 -1
  292. package/dist/index.es237.js +22 -20
  293. package/dist/index.es237.js.map +1 -1
  294. package/dist/index.es238.js +22 -13
  295. package/dist/index.es238.js.map +1 -1
  296. package/dist/index.es239.js +12 -12
  297. package/dist/index.es239.js.map +1 -1
  298. package/dist/index.es24.js +103 -305
  299. package/dist/index.es24.js.map +1 -1
  300. package/dist/index.es240.js +13 -24
  301. package/dist/index.es240.js.map +1 -1
  302. package/dist/index.es241.js +22 -42
  303. package/dist/index.es241.js.map +1 -1
  304. package/dist/index.es242.js +45 -11
  305. package/dist/index.es242.js.map +1 -1
  306. package/dist/index.es243.js +10 -10
  307. package/dist/index.es243.js.map +1 -1
  308. package/dist/index.es244.js +10 -10
  309. package/dist/index.es244.js.map +1 -1
  310. package/dist/index.es245.js +11 -14
  311. package/dist/index.es245.js.map +1 -1
  312. package/dist/index.es246.js +14 -11
  313. package/dist/index.es246.js.map +1 -1
  314. package/dist/index.es247.js +11 -11
  315. package/dist/index.es247.js.map +1 -1
  316. package/dist/index.es248.js +10 -10
  317. package/dist/index.es248.js.map +1 -1
  318. package/dist/index.es249.js +11 -15
  319. package/dist/index.es249.js.map +1 -1
  320. package/dist/index.es25.js +68 -121
  321. package/dist/index.es25.js.map +1 -1
  322. package/dist/index.es250.js +15 -11
  323. package/dist/index.es250.js.map +1 -1
  324. package/dist/index.es251.js +10 -10
  325. package/dist/index.es251.js.map +1 -1
  326. package/dist/index.es252.js +11 -11
  327. package/dist/index.es252.js.map +1 -1
  328. package/dist/index.es253.js +10 -10
  329. package/dist/index.es253.js.map +1 -1
  330. package/dist/index.es254.js +10 -10
  331. package/dist/index.es254.js.map +1 -1
  332. package/dist/index.es255.js +10 -10
  333. package/dist/index.es255.js.map +1 -1
  334. package/dist/index.es256.js +10 -10
  335. package/dist/index.es256.js.map +1 -1
  336. package/dist/index.es257.js +10 -10
  337. package/dist/index.es257.js.map +1 -1
  338. package/dist/index.es258.js +11 -56
  339. package/dist/index.es258.js.map +1 -1
  340. package/dist/index.es259.js +53 -46
  341. package/dist/index.es259.js.map +1 -1
  342. package/dist/index.es26.js +305 -5
  343. package/dist/index.es26.js.map +1 -1
  344. package/dist/index.es260.js +42 -112
  345. package/dist/index.es260.js.map +1 -1
  346. package/dist/index.es261.js +87 -352
  347. package/dist/index.es261.js.map +1 -1
  348. package/dist/index.es262.js +381 -15
  349. package/dist/index.es262.js.map +1 -1
  350. package/dist/index.es263.js +17 -10
  351. package/dist/index.es263.js.map +1 -1
  352. package/dist/index.es264.js +10 -30
  353. package/dist/index.es264.js.map +1 -1
  354. package/dist/index.es265.js +17 -17
  355. package/dist/index.es265.js.map +1 -1
  356. package/dist/index.es266.js +25 -56
  357. package/dist/index.es266.js.map +1 -1
  358. package/dist/index.es267.js +59 -14
  359. package/dist/index.es267.js.map +1 -1
  360. package/dist/index.es268.js +14 -74
  361. package/dist/index.es268.js.map +1 -1
  362. package/dist/index.es269.js +77 -11
  363. package/dist/index.es269.js.map +1 -1
  364. package/dist/index.es270.js +10 -10
  365. package/dist/index.es270.js.map +1 -1
  366. package/dist/index.es271.js +11 -15
  367. package/dist/index.es271.js.map +1 -1
  368. package/dist/index.es272.js +14 -51
  369. package/dist/index.es272.js.map +1 -1
  370. package/dist/index.es273.js +44 -158
  371. package/dist/index.es273.js.map +1 -1
  372. package/dist/index.es274.js +167 -2
  373. package/dist/index.es274.js.map +1 -1
  374. package/dist/index.es275.js +2 -11
  375. package/dist/index.es275.js.map +1 -1
  376. package/dist/index.es276.js +9 -18
  377. package/dist/index.es276.js.map +1 -1
  378. package/dist/index.es277.js +17 -36
  379. package/dist/index.es277.js.map +1 -1
  380. package/dist/index.es278.js +42 -0
  381. package/dist/index.es278.js.map +1 -0
  382. package/dist/index.es28.js +7 -7
  383. package/dist/index.es29.js +1 -1
  384. package/dist/index.es32.js +4 -4
  385. package/dist/index.es33.js +1191 -13
  386. package/dist/index.es33.js.map +1 -1
  387. package/dist/index.es34.js +6 -117
  388. package/dist/index.es34.js.map +1 -1
  389. package/dist/index.es35.js +8 -70
  390. package/dist/index.es35.js.map +1 -1
  391. package/dist/index.es36.js +148 -19
  392. package/dist/index.es36.js.map +1 -1
  393. package/dist/index.es37.js +112 -255
  394. package/dist/index.es37.js.map +1 -1
  395. package/dist/index.es38.js +68 -40
  396. package/dist/index.es38.js.map +1 -1
  397. package/dist/index.es39.js +17 -214
  398. package/dist/index.es39.js.map +1 -1
  399. package/dist/index.es40.js +247 -53
  400. package/dist/index.es40.js.map +1 -1
  401. package/dist/index.es41.js +24 -123
  402. package/dist/index.es41.js.map +1 -1
  403. package/dist/index.es42.js +205 -14
  404. package/dist/index.es42.js.map +1 -1
  405. package/dist/index.es43.js +58 -221
  406. package/dist/index.es43.js.map +1 -1
  407. package/dist/index.es44.js +140 -7
  408. package/dist/index.es44.js.map +1 -1
  409. package/dist/index.es45.js +17 -1185
  410. package/dist/index.es45.js.map +1 -1
  411. package/dist/index.es46.js +229 -6
  412. package/dist/index.es46.js.map +1 -1
  413. package/dist/index.es47.js +15 -146
  414. package/dist/index.es47.js.map +1 -1
  415. package/dist/index.es48.js +6 -8
  416. package/dist/index.es48.js.map +1 -1
  417. package/dist/index.es49.js +84 -87
  418. package/dist/index.es49.js.map +1 -1
  419. package/dist/index.es50.js +7 -3
  420. package/dist/index.es50.js.map +1 -1
  421. package/dist/index.es51.js +14 -35
  422. package/dist/index.es51.js.map +1 -1
  423. package/dist/index.es52.js +7 -71
  424. package/dist/index.es52.js.map +1 -1
  425. package/dist/index.es53.js +89 -33
  426. package/dist/index.es53.js.map +1 -1
  427. package/dist/index.es54.js +3 -305
  428. package/dist/index.es54.js.map +1 -1
  429. package/dist/index.es55.js +36 -9
  430. package/dist/index.es55.js.map +1 -1
  431. package/dist/index.es56.js +64 -83
  432. package/dist/index.es56.js.map +1 -1
  433. package/dist/index.es57.js +36 -6
  434. package/dist/index.es57.js.map +1 -1
  435. package/dist/index.es58.js +303 -12
  436. package/dist/index.es58.js.map +1 -1
  437. package/dist/index.es59.js +9 -143
  438. package/dist/index.es59.js.map +1 -1
  439. package/dist/index.es60.js +5 -299
  440. package/dist/index.es60.js.map +1 -1
  441. package/dist/index.es61.js +158 -61
  442. package/dist/index.es61.js.map +1 -1
  443. package/dist/index.es62.js +658 -199
  444. package/dist/index.es62.js.map +1 -1
  445. package/dist/index.es63.js +138 -29
  446. package/dist/index.es63.js.map +1 -1
  447. package/dist/index.es64.js +299 -8
  448. package/dist/index.es64.js.map +1 -1
  449. package/dist/index.es65.js +65 -11
  450. package/dist/index.es65.js.map +1 -1
  451. package/dist/index.es66.js +201 -175
  452. package/dist/index.es66.js.map +1 -1
  453. package/dist/index.es67.js +33 -23
  454. package/dist/index.es67.js.map +1 -1
  455. package/dist/index.es68.js +8 -1399
  456. package/dist/index.es68.js.map +1 -1
  457. package/dist/index.es69.js +12 -9
  458. package/dist/index.es69.js.map +1 -1
  459. package/dist/index.es70.js +187 -8
  460. package/dist/index.es70.js.map +1 -1
  461. package/dist/index.es71.js +24 -6
  462. package/dist/index.es71.js.map +1 -1
  463. package/dist/index.es72.js +1384 -147
  464. package/dist/index.es72.js.map +1 -1
  465. package/dist/index.es73.js +9 -672
  466. package/dist/index.es73.js.map +1 -1
  467. package/dist/index.es74.js +8 -12
  468. package/dist/index.es74.js.map +1 -1
  469. package/dist/index.es75.js +35 -38
  470. package/dist/index.es75.js.map +1 -1
  471. package/dist/index.es76.js +5 -34
  472. package/dist/index.es76.js.map +1 -1
  473. package/dist/index.es77.js +64 -223
  474. package/dist/index.es77.js.map +1 -1
  475. package/dist/index.es78.js +36 -29
  476. package/dist/index.es78.js.map +1 -1
  477. package/dist/index.es79.js +11 -74
  478. package/dist/index.es79.js.map +1 -1
  479. package/dist/index.es80.js +37 -73
  480. package/dist/index.es80.js.map +1 -1
  481. package/dist/index.es81.js +32 -50
  482. package/dist/index.es81.js.map +1 -1
  483. package/dist/index.es82.js +228 -26
  484. package/dist/index.es82.js.map +1 -1
  485. package/dist/index.es83.js +6 -19
  486. package/dist/index.es83.js.map +1 -1
  487. package/dist/index.es84.js +72 -54
  488. package/dist/index.es84.js.map +1 -1
  489. package/dist/index.es85.js +76 -13
  490. package/dist/index.es85.js.map +1 -1
  491. package/dist/index.es86.js +47 -132
  492. package/dist/index.es86.js.map +1 -1
  493. package/dist/index.es87.js +29 -20
  494. package/dist/index.es87.js.map +1 -1
  495. package/dist/index.es88.js +37 -176
  496. package/dist/index.es88.js.map +1 -1
  497. package/dist/index.es89.js +49 -233
  498. package/dist/index.es89.js.map +1 -1
  499. package/dist/index.es90.js +13 -355
  500. package/dist/index.es90.js.map +1 -1
  501. package/dist/index.es91.js +128 -128
  502. package/dist/index.es91.js.map +1 -1
  503. package/dist/index.es92.js +21 -70
  504. package/dist/index.es92.js.map +1 -1
  505. package/dist/index.es93.js +179 -34
  506. package/dist/index.es93.js.map +1 -1
  507. package/dist/index.es94.js +230 -26
  508. package/dist/index.es94.js.map +1 -1
  509. package/dist/index.es95.js +346 -157
  510. package/dist/index.es95.js.map +1 -1
  511. package/dist/index.es96.js +129 -195
  512. package/dist/index.es96.js.map +1 -1
  513. package/dist/index.es97.js +70 -14
  514. package/dist/index.es97.js.map +1 -1
  515. package/dist/index.es98.js +35 -28
  516. package/dist/index.es98.js.map +1 -1
  517. package/dist/index.es99.js +34 -31
  518. package/dist/index.es99.js.map +1 -1
  519. package/dist/styles.css +1 -1
  520. package/package.json +8 -11
@@ -1,246 +1,93 @@
1
- import { dumpCache, loadCache } from "./index.es189.js";
2
- function isStale(entry, ttlSeconds) {
3
- if (ttlSeconds === null) {
4
- return false;
5
- }
6
- const ageMs = Date.now() - entry.createdAt;
7
- return ageMs > ttlSeconds * 1e3;
8
- }
9
- class Cache {
10
- constructor(config = {}) {
11
- Object.defineProperty(this, "cache", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: /* @__PURE__ */ new Map()
16
- });
17
- Object.defineProperty(this, "maxSize", {
1
+ class LangSmithConflictError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ Object.defineProperty(this, "status", {
18
5
  enumerable: true,
19
6
  configurable: true,
20
7
  writable: true,
21
8
  value: void 0
22
9
  });
23
- Object.defineProperty(this, "ttlSeconds", {
24
- enumerable: true,
25
- configurable: true,
26
- writable: true,
27
- value: void 0
28
- });
29
- Object.defineProperty(this, "refreshIntervalSeconds", {
30
- enumerable: true,
31
- configurable: true,
32
- writable: true,
33
- value: void 0
34
- });
35
- Object.defineProperty(this, "fetchFunc", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: void 0
40
- });
41
- Object.defineProperty(this, "refreshTimer", {
10
+ this.name = "LangSmithConflictError";
11
+ this.status = 409;
12
+ }
13
+ }
14
+ class LangSmithNotFoundError extends Error {
15
+ constructor(message) {
16
+ super(message);
17
+ Object.defineProperty(this, "status", {
42
18
  enumerable: true,
43
19
  configurable: true,
44
20
  writable: true,
45
21
  value: void 0
46
22
  });
47
- Object.defineProperty(this, "_metrics", {
48
- enumerable: true,
49
- configurable: true,
50
- writable: true,
51
- value: {
52
- hits: 0,
53
- misses: 0,
54
- refreshes: 0,
55
- refreshErrors: 0
56
- }
57
- });
58
- this.maxSize = config.maxSize ?? 100;
59
- this.ttlSeconds = config.ttlSeconds ?? 3600;
60
- this.refreshIntervalSeconds = config.refreshIntervalSeconds ?? 60;
61
- this.fetchFunc = config.fetchFunc;
62
- if (this.fetchFunc && this.ttlSeconds !== null) {
63
- this.startRefreshLoop();
64
- }
23
+ this.name = "LangSmithNotFoundError";
24
+ this.status = 404;
65
25
  }
66
- /**
67
- * Get cache performance metrics.
68
- */
69
- get metrics() {
70
- return { ...this._metrics };
71
- }
72
- /**
73
- * Get total cache requests (hits + misses).
74
- */
75
- get totalRequests() {
76
- return this._metrics.hits + this._metrics.misses;
77
- }
78
- /**
79
- * Get cache hit rate (0.0 to 1.0).
80
- */
81
- get hitRate() {
82
- const total = this.totalRequests;
83
- return total > 0 ? this._metrics.hits / total : 0;
84
- }
85
- /**
86
- * Reset all metrics to zero.
87
- */
88
- resetMetrics() {
89
- this._metrics = {
90
- hits: 0,
91
- misses: 0,
92
- refreshes: 0,
93
- refreshErrors: 0
94
- };
95
- }
96
- /**
97
- * Get a value from cache.
98
- *
99
- * Returns the cached value or undefined if not found.
100
- * Stale entries are still returned (background refresh handles updates).
101
- */
102
- get(key) {
103
- const entry = this.cache.get(key);
104
- if (!entry) {
105
- this._metrics.misses += 1;
106
- return void 0;
26
+ }
27
+ function isLangSmithNotFoundError(error) {
28
+ return error != null && typeof error === "object" && "name" in error && error?.name === "LangSmithNotFoundError";
29
+ }
30
+ async function raiseForStatus(response, context, consumeOnSuccess) {
31
+ let errorBody;
32
+ if (response.ok) {
33
+ if (consumeOnSuccess) {
34
+ errorBody = await response.text();
107
35
  }
108
- this.cache.delete(key);
109
- this.cache.set(key, entry);
110
- this._metrics.hits += 1;
111
- return entry.value;
112
- }
113
- /**
114
- * Set a value in the cache.
115
- */
116
- set(key, value) {
117
- if (!this.cache.has(key) && this.cache.size >= this.maxSize) {
118
- const oldestKey = this.cache.keys().next().value;
119
- if (oldestKey !== void 0) {
120
- this.cache.delete(oldestKey);
36
+ return;
37
+ }
38
+ if (response.status === 403) {
39
+ try {
40
+ const errorData = await response.json();
41
+ const errorCode = errorData?.error;
42
+ if (errorCode === "org_scoped_key_requires_workspace") {
43
+ errorBody = "This API key is org-scoped and requires workspace specification. Please provide 'workspaceId' parameter, or set LANGSMITH_WORKSPACE_ID environment variable.";
121
44
  }
45
+ } catch (e) {
46
+ const errorWithStatus = new Error(`${response.status} ${response.statusText}`);
47
+ errorWithStatus.status = response?.status;
48
+ throw errorWithStatus;
122
49
  }
123
- const entry = {
124
- value,
125
- createdAt: Date.now()
126
- };
127
- this.cache.delete(key);
128
- this.cache.set(key, entry);
129
- }
130
- /**
131
- * Remove a specific entry from cache.
132
- */
133
- invalidate(key) {
134
- this.cache.delete(key);
135
50
  }
136
- /**
137
- * Clear all cache entries.
138
- */
139
- clear() {
140
- this.cache.clear();
141
- }
142
- /**
143
- * Get the number of entries in the cache.
144
- */
145
- get size() {
146
- return this.cache.size;
147
- }
148
- /**
149
- * Stop background refresh.
150
- * Should be called when the client is being cleaned up.
151
- */
152
- stop() {
153
- if (this.refreshTimer) {
154
- clearInterval(this.refreshTimer);
155
- this.refreshTimer = void 0;
51
+ if (errorBody === void 0) {
52
+ try {
53
+ errorBody = await response.text();
54
+ } catch (e) {
55
+ errorBody = "";
156
56
  }
157
57
  }
158
- /**
159
- * Dump cache contents to a JSON file for offline use.
160
- */
161
- dump(filePath) {
162
- for (const [key, entry] of this.cache.entries()) {
163
- entry.value;
164
- }
165
- dumpCache();
58
+ const fullMessage = `Failed to ${context}. Received status [${response.status}]: ${response.statusText}. Message: ${errorBody}`;
59
+ if (response.status === 404) {
60
+ throw new LangSmithNotFoundError(fullMessage);
166
61
  }
167
- /**
168
- * Load cache contents from a JSON file.
169
- *
170
- * Loaded entries get a fresh TTL starting from load time.
171
- *
172
- * @returns Number of entries loaded.
173
- */
174
- load(filePath) {
175
- const entries = loadCache();
176
- if (!entries) {
177
- return 0;
178
- }
179
- let loaded = 0;
180
- const now = Date.now();
181
- for (const [key, value] of Object.entries(entries)) {
182
- if (this.cache.size >= this.maxSize) {
183
- break;
184
- }
185
- const entry = {
186
- value,
187
- createdAt: now
188
- // Fresh TTL from load time
189
- };
190
- this.cache.set(key, entry);
191
- loaded += 1;
192
- }
193
- return loaded;
62
+ if (response.status === 409) {
63
+ throw new LangSmithConflictError(fullMessage);
194
64
  }
195
- /**
196
- * Start the background refresh loop.
197
- */
198
- startRefreshLoop() {
199
- this.refreshTimer = setInterval(() => {
200
- this.refreshStaleEntries().catch((e) => {
201
- console.warn("Unexpected error in cache refresh loop:", e);
202
- });
203
- }, this.refreshIntervalSeconds * 1e3);
204
- if (this.refreshTimer.unref) {
205
- this.refreshTimer.unref();
206
- }
207
- }
208
- /**
209
- * Get list of stale cache keys.
210
- */
211
- getStaleKeys() {
212
- const staleKeys = [];
213
- for (const [key, entry] of this.cache.entries()) {
214
- if (isStale(entry, this.ttlSeconds)) {
215
- staleKeys.push(key);
216
- }
217
- }
218
- return staleKeys;
219
- }
220
- /**
221
- * Check for stale entries and refresh them.
222
- */
223
- async refreshStaleEntries() {
224
- if (!this.fetchFunc) {
225
- return;
226
- }
227
- const staleKeys = this.getStaleKeys();
228
- if (staleKeys.length === 0) {
229
- return;
230
- }
231
- for (const key of staleKeys) {
232
- try {
233
- const newValue = await this.fetchFunc(key);
234
- this.set(key, newValue);
235
- this._metrics.refreshes += 1;
236
- } catch (e) {
237
- this._metrics.refreshErrors += 1;
238
- console.warn(`Failed to refresh cache entry ${key}:`, e);
239
- }
240
- }
65
+ const err = new Error(fullMessage);
66
+ err.status = response.status;
67
+ throw err;
68
+ }
69
+ const ERR_CONFLICTING_ENDPOINTS = "ERR_CONFLICTING_ENDPOINTS";
70
+ class ConflictingEndpointsError extends Error {
71
+ constructor() {
72
+ super("You cannot provide both LANGSMITH_ENDPOINT / LANGCHAIN_ENDPOINT and LANGSMITH_RUNS_ENDPOINTS.");
73
+ Object.defineProperty(this, "code", {
74
+ enumerable: true,
75
+ configurable: true,
76
+ writable: true,
77
+ value: ERR_CONFLICTING_ENDPOINTS
78
+ });
79
+ this.name = "ConflictingEndpointsError";
241
80
  }
242
81
  }
82
+ function isConflictingEndpointsError(err) {
83
+ return typeof err === "object" && err !== null && err.code === ERR_CONFLICTING_ENDPOINTS;
84
+ }
243
85
  export {
244
- Cache
86
+ ConflictingEndpointsError,
87
+ LangSmithConflictError,
88
+ LangSmithNotFoundError,
89
+ isConflictingEndpointsError,
90
+ isLangSmithNotFoundError,
91
+ raiseForStatus
245
92
  };
246
93
  //# sourceMappingURL=index.es184.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es184.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompts_cache.js"],"sourcesContent":["/**\n * Prompt caching module for LangSmith SDK.\n *\n * Provides an LRU cache with background refresh for prompt caching.\n * Uses stale-while-revalidate pattern for optimal performance.\n *\n * Works in all environments. File operations (dump/load) use helpers\n * that are swapped for browser builds via package.json browser field.\n */\nimport { dumpCache, loadCache } from \"./prompts_cache_fs.js\";\n/**\n * Check if a cache entry is stale based on TTL.\n */\nfunction isStale(entry, ttlSeconds) {\n if (ttlSeconds === null) {\n return false; // Infinite TTL, never stale\n }\n const ageMs = Date.now() - entry.createdAt;\n return ageMs > ttlSeconds * 1000;\n}\n/**\n * LRU cache with background refresh for prompts.\n *\n * Features:\n * - In-memory LRU cache with configurable max size\n * - Background refresh using setInterval\n * - Stale-while-revalidate: returns stale data while refresh happens\n * - JSON dump/load for offline use\n *\n * @example\n * ```typescript\n * const cache = new Cache({\n * maxSize: 100,\n * ttlSeconds: 3600,\n * fetchFunc: async (key) => client.pullPromptCommit(key),\n * });\n *\n * // Use the cache\n * cache.set(\"my-prompt:latest\", promptCommit);\n * const cached = cache.get(\"my-prompt:latest\");\n *\n * // Cleanup\n * cache.stop();\n * ```\n */\nexport class Cache {\n constructor(config = {}) {\n Object.defineProperty(this, \"cache\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ttlSeconds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"refreshIntervalSeconds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fetchFunc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"refreshTimer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_metrics\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n hits: 0,\n misses: 0,\n refreshes: 0,\n refreshErrors: 0,\n }\n });\n this.maxSize = config.maxSize ?? 100;\n this.ttlSeconds = config.ttlSeconds ?? 3600;\n this.refreshIntervalSeconds = config.refreshIntervalSeconds ?? 60;\n this.fetchFunc = config.fetchFunc;\n // Start background refresh if fetch function provided and TTL is set\n if (this.fetchFunc && this.ttlSeconds !== null) {\n this.startRefreshLoop();\n }\n }\n /**\n * Get cache performance metrics.\n */\n get metrics() {\n return { ...this._metrics };\n }\n /**\n * Get total cache requests (hits + misses).\n */\n get totalRequests() {\n return this._metrics.hits + this._metrics.misses;\n }\n /**\n * Get cache hit rate (0.0 to 1.0).\n */\n get hitRate() {\n const total = this.totalRequests;\n return total > 0 ? this._metrics.hits / total : 0;\n }\n /**\n * Reset all metrics to zero.\n */\n resetMetrics() {\n this._metrics = {\n hits: 0,\n misses: 0,\n refreshes: 0,\n refreshErrors: 0,\n };\n }\n /**\n * Get a value from cache.\n *\n * Returns the cached value or undefined if not found.\n * Stale entries are still returned (background refresh handles updates).\n */\n get(key) {\n const entry = this.cache.get(key);\n if (!entry) {\n this._metrics.misses += 1;\n return undefined;\n }\n // Move to end for LRU (delete and re-add)\n this.cache.delete(key);\n this.cache.set(key, entry);\n this._metrics.hits += 1;\n return entry.value;\n }\n /**\n * Set a value in the cache.\n */\n set(key, value) {\n // Check if we need to evict (and key is new)\n if (!this.cache.has(key) && this.cache.size >= this.maxSize) {\n // Evict oldest (first item in Map)\n const oldestKey = this.cache.keys().next().value;\n if (oldestKey !== undefined) {\n this.cache.delete(oldestKey);\n }\n }\n const entry = {\n value,\n createdAt: Date.now(),\n };\n // Delete first to ensure it's at the end\n this.cache.delete(key);\n this.cache.set(key, entry);\n }\n /**\n * Remove a specific entry from cache.\n */\n invalidate(key) {\n this.cache.delete(key);\n }\n /**\n * Clear all cache entries.\n */\n clear() {\n this.cache.clear();\n }\n /**\n * Get the number of entries in the cache.\n */\n get size() {\n return this.cache.size;\n }\n /**\n * Stop background refresh.\n * Should be called when the client is being cleaned up.\n */\n stop() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n this.refreshTimer = undefined;\n }\n }\n /**\n * Dump cache contents to a JSON file for offline use.\n */\n dump(filePath) {\n const entries = {};\n for (const [key, entry] of this.cache.entries()) {\n entries[key] = entry.value;\n }\n dumpCache(filePath, entries);\n }\n /**\n * Load cache contents from a JSON file.\n *\n * Loaded entries get a fresh TTL starting from load time.\n *\n * @returns Number of entries loaded.\n */\n load(filePath) {\n const entries = loadCache(filePath);\n if (!entries) {\n return 0;\n }\n let loaded = 0;\n const now = Date.now();\n for (const [key, value] of Object.entries(entries)) {\n if (this.cache.size >= this.maxSize) {\n break;\n }\n const entry = {\n value: value,\n createdAt: now, // Fresh TTL from load time\n };\n this.cache.set(key, entry);\n loaded += 1;\n }\n return loaded;\n }\n /**\n * Start the background refresh loop.\n */\n startRefreshLoop() {\n this.refreshTimer = setInterval(() => {\n this.refreshStaleEntries().catch((e) => {\n // Log but don't die - keep the refresh loop running\n console.warn(\"Unexpected error in cache refresh loop:\", e);\n });\n }, this.refreshIntervalSeconds * 1000);\n // Don't block Node.js from exiting\n if (this.refreshTimer.unref) {\n this.refreshTimer.unref();\n }\n }\n /**\n * Get list of stale cache keys.\n */\n getStaleKeys() {\n const staleKeys = [];\n for (const [key, entry] of this.cache.entries()) {\n if (isStale(entry, this.ttlSeconds)) {\n staleKeys.push(key);\n }\n }\n return staleKeys;\n }\n /**\n * Check for stale entries and refresh them.\n */\n async refreshStaleEntries() {\n if (!this.fetchFunc) {\n return;\n }\n const staleKeys = this.getStaleKeys();\n if (staleKeys.length === 0) {\n return;\n }\n for (const key of staleKeys) {\n try {\n const newValue = await this.fetchFunc(key);\n this.set(key, newValue);\n this._metrics.refreshes += 1;\n }\n catch (e) {\n // Keep stale data on refresh failure\n this._metrics.refreshErrors += 1;\n console.warn(`Failed to refresh cache entry ${key}:`, e);\n }\n }\n }\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es184.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/error.js"],"sourcesContent":["function getErrorStackTrace(e) {\n if (typeof e !== \"object\" || e == null)\n return undefined;\n if (!(\"stack\" in e) || typeof e.stack !== \"string\")\n return undefined;\n let stack = e.stack;\n const prevLine = `${e}`;\n if (stack.startsWith(prevLine)) {\n stack = stack.slice(prevLine.length);\n }\n if (stack.startsWith(\"\\n\")) {\n stack = stack.slice(1);\n }\n return stack;\n}\nexport function printErrorStackTrace(e) {\n const stack = getErrorStackTrace(e);\n if (stack == null)\n return;\n console.error(stack);\n}\n/**\n * LangSmithConflictError\n *\n * Represents an error that occurs when there's a conflict during an operation,\n * typically corresponding to HTTP 409 status code responses.\n *\n * This error is thrown when an attempt to create or modify a resource conflicts\n * with the current state of the resource on the server. Common scenarios include:\n * - Attempting to create a resource that already exists\n * - Trying to update a resource that has been modified by another process\n * - Violating a uniqueness constraint in the data\n *\n * @extends Error\n *\n * @example\n * try {\n * await createProject(\"existingProject\");\n * } catch (error) {\n * if (error instanceof ConflictError) {\n * console.log(\"A conflict occurred:\", error.message);\n * // Handle the conflict, e.g., by suggesting a different project name\n * } else {\n * // Handle other types of errors\n * }\n * }\n *\n * @property {string} name - Always set to 'ConflictError' for easy identification\n * @property {string} message - Detailed error message including server response\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409\n */\nexport class LangSmithConflictError extends Error {\n constructor(message) {\n super(message);\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = \"LangSmithConflictError\";\n this.status = 409;\n }\n}\n/**\n * LangSmithNotFoundError\n *\n * Represents an error that occurs when a requested resource is not found,\n * typically corresponding to HTTP 404 status code responses.\n *\n * @extends Error\n */\nexport class LangSmithNotFoundError extends Error {\n constructor(message) {\n super(message);\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = \"LangSmithNotFoundError\";\n this.status = 404;\n }\n}\nexport function isLangSmithNotFoundError(error) {\n return (error != null &&\n typeof error === \"object\" &&\n \"name\" in error &&\n error?.name === \"LangSmithNotFoundError\");\n}\n/**\n * Throws an appropriate error based on the response status and body.\n *\n * @param response - The fetch Response object\n * @param context - Additional context to include in the error message (e.g., operation being performed)\n * @throws {LangSmithConflictError} When the response status is 409\n * @throws {Error} For all other non-ok responses\n */\nexport async function raiseForStatus(response, context, consumeOnSuccess) {\n let errorBody;\n if (response.ok) {\n // consume the response body to release the connection\n // https://undici.nodejs.org/#/?id=garbage-collection\n if (consumeOnSuccess) {\n errorBody = await response.text();\n }\n return;\n }\n if (response.status === 403) {\n try {\n const errorData = await response.json();\n const errorCode = errorData?.error;\n if (errorCode === \"org_scoped_key_requires_workspace\") {\n errorBody =\n \"This API key is org-scoped and requires workspace specification. \" +\n \"Please provide 'workspaceId' parameter, \" +\n \"or set LANGSMITH_WORKSPACE_ID environment variable.\";\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n const errorWithStatus = new Error(`${response.status} ${response.statusText}`);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n errorWithStatus.status = response?.status;\n throw errorWithStatus;\n }\n }\n if (errorBody === undefined) {\n try {\n errorBody = await response.text();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n errorBody = \"\";\n }\n }\n const fullMessage = `Failed to ${context}. Received status [${response.status}]: ${response.statusText}. Message: ${errorBody}`;\n if (response.status === 404) {\n throw new LangSmithNotFoundError(fullMessage);\n }\n if (response.status === 409) {\n throw new LangSmithConflictError(fullMessage);\n }\n const err = new Error(fullMessage);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err.status = response.status;\n throw err;\n}\nconst ERR_CONFLICTING_ENDPOINTS = \"ERR_CONFLICTING_ENDPOINTS\";\nexport class ConflictingEndpointsError extends Error {\n constructor() {\n super(\"You cannot provide both LANGSMITH_ENDPOINT / LANGCHAIN_ENDPOINT \" +\n \"and LANGSMITH_RUNS_ENDPOINTS.\");\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: ERR_CONFLICTING_ENDPOINTS\n });\n this.name = \"ConflictingEndpointsError\"; // helpful in logs\n }\n}\nexport function isConflictingEndpointsError(err) {\n return (typeof err === \"object\" &&\n err !== null &&\n err.code === ERR_CONFLICTING_ENDPOINTS);\n}\n"],"names":[],"mappings":"AAoDO,MAAM,+BAA+B,MAAM;AAAA,EAC9C,YAAY,SAAS;AACjB,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,UAAU;AAAA,MAClC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAClB;AACJ;AASO,MAAM,+BAA+B,MAAM;AAAA,EAC9C,YAAY,SAAS;AACjB,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,UAAU;AAAA,MAClC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAClB;AACJ;AACO,SAAS,yBAAyB,OAAO;AAC5C,SAAQ,SAAS,QACb,OAAO,UAAU,YACjB,UAAU,SACV,OAAO,SAAS;AACxB;AASO,eAAe,eAAe,UAAU,SAAS,kBAAkB;AACtE,MAAI;AACJ,MAAI,SAAS,IAAI;AAGb,QAAI,kBAAkB;AAClB,kBAAY,MAAM,SAAS,KAAI;AAAA,IACnC;AACA;AAAA,EACJ;AACA,MAAI,SAAS,WAAW,KAAK;AACzB,QAAI;AACA,YAAM,YAAY,MAAM,SAAS,KAAI;AACrC,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,qCAAqC;AACnD,oBACI;AAAA,MAGR;AAAA,IAEJ,SACO,GAAG;AACN,YAAM,kBAAkB,IAAI,MAAM,GAAG,SAAS,MAAM,IAAI,SAAS,UAAU,EAAE;AAE7E,sBAAgB,SAAS,UAAU;AACnC,YAAM;AAAA,IACV;AAAA,EACJ;AACA,MAAI,cAAc,QAAW;AACzB,QAAI;AACA,kBAAY,MAAM,SAAS,KAAI;AAAA,IAEnC,SACO,GAAG;AACN,kBAAY;AAAA,IAChB;AAAA,EACJ;AACA,QAAM,cAAc,aAAa,OAAO,sBAAsB,SAAS,MAAM,MAAM,SAAS,UAAU,cAAc,SAAS;AAC7H,MAAI,SAAS,WAAW,KAAK;AACzB,UAAM,IAAI,uBAAuB,WAAW;AAAA,EAChD;AACA,MAAI,SAAS,WAAW,KAAK;AACzB,UAAM,IAAI,uBAAuB,WAAW;AAAA,EAChD;AACA,QAAM,MAAM,IAAI,MAAM,WAAW;AAEjC,MAAI,SAAS,SAAS;AACtB,QAAM;AACV;AACA,MAAM,4BAA4B;AAC3B,MAAM,kCAAkC,MAAM;AAAA,EACjD,cAAc;AACV,UAAM,+FAC6B;AACnC,WAAO,eAAe,MAAM,QAAQ;AAAA,MAChC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,SAAK,OAAO;AAAA,EAChB;AACJ;AACO,SAAS,4BAA4B,KAAK;AAC7C,SAAQ,OAAO,QAAQ,YACnB,QAAQ,QACR,IAAI,SAAS;AACrB;","x_google_ignoreList":[0]}
@@ -1,27 +1,246 @@
1
- import { getLangSmithEnvironmentVariable } from "./index.es179.js";
2
- const DEFAULT_FETCH_IMPLEMENTATION = (...args) => fetch(...args);
3
- const LANGSMITH_FETCH_IMPLEMENTATION_KEY = /* @__PURE__ */ Symbol.for("ls:fetch_implementation");
4
- const _globalFetchImplementationIsNodeFetch = () => {
5
- const fetchImpl = globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY];
6
- if (!fetchImpl)
1
+ import { dumpCache, loadCache } from "./index.es190.js";
2
+ function isStale(entry, ttlSeconds) {
3
+ if (ttlSeconds === null) {
7
4
  return false;
8
- return typeof fetchImpl === "function" && "Headers" in fetchImpl && "Request" in fetchImpl && "Response" in fetchImpl;
9
- };
10
- const _getFetchImplementation = (debug) => {
11
- return async (...args) => {
12
- if (debug || getLangSmithEnvironmentVariable("DEBUG") === "true") {
13
- const [url, options] = args;
14
- console.log(`→ ${options?.method || "GET"} ${url}`);
15
- }
16
- const res = await (globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY] ?? DEFAULT_FETCH_IMPLEMENTATION)(...args);
17
- if (debug || getLangSmithEnvironmentVariable("DEBUG") === "true") {
18
- console.log(`← ${res.status} ${res.statusText} ${res.url}`);
19
- }
20
- return res;
21
- };
22
- };
5
+ }
6
+ const ageMs = Date.now() - entry.createdAt;
7
+ return ageMs > ttlSeconds * 1e3;
8
+ }
9
+ class Cache {
10
+ constructor(config = {}) {
11
+ Object.defineProperty(this, "cache", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: /* @__PURE__ */ new Map()
16
+ });
17
+ Object.defineProperty(this, "maxSize", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ Object.defineProperty(this, "ttlSeconds", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ Object.defineProperty(this, "refreshIntervalSeconds", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
35
+ Object.defineProperty(this, "fetchFunc", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: void 0
40
+ });
41
+ Object.defineProperty(this, "refreshTimer", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: void 0
46
+ });
47
+ Object.defineProperty(this, "_metrics", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: {
52
+ hits: 0,
53
+ misses: 0,
54
+ refreshes: 0,
55
+ refreshErrors: 0
56
+ }
57
+ });
58
+ this.maxSize = config.maxSize ?? 100;
59
+ this.ttlSeconds = config.ttlSeconds ?? 3600;
60
+ this.refreshIntervalSeconds = config.refreshIntervalSeconds ?? 60;
61
+ this.fetchFunc = config.fetchFunc;
62
+ if (this.fetchFunc && this.ttlSeconds !== null) {
63
+ this.startRefreshLoop();
64
+ }
65
+ }
66
+ /**
67
+ * Get cache performance metrics.
68
+ */
69
+ get metrics() {
70
+ return { ...this._metrics };
71
+ }
72
+ /**
73
+ * Get total cache requests (hits + misses).
74
+ */
75
+ get totalRequests() {
76
+ return this._metrics.hits + this._metrics.misses;
77
+ }
78
+ /**
79
+ * Get cache hit rate (0.0 to 1.0).
80
+ */
81
+ get hitRate() {
82
+ const total = this.totalRequests;
83
+ return total > 0 ? this._metrics.hits / total : 0;
84
+ }
85
+ /**
86
+ * Reset all metrics to zero.
87
+ */
88
+ resetMetrics() {
89
+ this._metrics = {
90
+ hits: 0,
91
+ misses: 0,
92
+ refreshes: 0,
93
+ refreshErrors: 0
94
+ };
95
+ }
96
+ /**
97
+ * Get a value from cache.
98
+ *
99
+ * Returns the cached value or undefined if not found.
100
+ * Stale entries are still returned (background refresh handles updates).
101
+ */
102
+ get(key) {
103
+ const entry = this.cache.get(key);
104
+ if (!entry) {
105
+ this._metrics.misses += 1;
106
+ return void 0;
107
+ }
108
+ this.cache.delete(key);
109
+ this.cache.set(key, entry);
110
+ this._metrics.hits += 1;
111
+ return entry.value;
112
+ }
113
+ /**
114
+ * Set a value in the cache.
115
+ */
116
+ set(key, value) {
117
+ if (!this.cache.has(key) && this.cache.size >= this.maxSize) {
118
+ const oldestKey = this.cache.keys().next().value;
119
+ if (oldestKey !== void 0) {
120
+ this.cache.delete(oldestKey);
121
+ }
122
+ }
123
+ const entry = {
124
+ value,
125
+ createdAt: Date.now()
126
+ };
127
+ this.cache.delete(key);
128
+ this.cache.set(key, entry);
129
+ }
130
+ /**
131
+ * Remove a specific entry from cache.
132
+ */
133
+ invalidate(key) {
134
+ this.cache.delete(key);
135
+ }
136
+ /**
137
+ * Clear all cache entries.
138
+ */
139
+ clear() {
140
+ this.cache.clear();
141
+ }
142
+ /**
143
+ * Get the number of entries in the cache.
144
+ */
145
+ get size() {
146
+ return this.cache.size;
147
+ }
148
+ /**
149
+ * Stop background refresh.
150
+ * Should be called when the client is being cleaned up.
151
+ */
152
+ stop() {
153
+ if (this.refreshTimer) {
154
+ clearInterval(this.refreshTimer);
155
+ this.refreshTimer = void 0;
156
+ }
157
+ }
158
+ /**
159
+ * Dump cache contents to a JSON file for offline use.
160
+ */
161
+ dump(filePath) {
162
+ for (const [key, entry] of this.cache.entries()) {
163
+ entry.value;
164
+ }
165
+ dumpCache();
166
+ }
167
+ /**
168
+ * Load cache contents from a JSON file.
169
+ *
170
+ * Loaded entries get a fresh TTL starting from load time.
171
+ *
172
+ * @returns Number of entries loaded.
173
+ */
174
+ load(filePath) {
175
+ const entries = loadCache();
176
+ if (!entries) {
177
+ return 0;
178
+ }
179
+ let loaded = 0;
180
+ const now = Date.now();
181
+ for (const [key, value] of Object.entries(entries)) {
182
+ if (this.cache.size >= this.maxSize) {
183
+ break;
184
+ }
185
+ const entry = {
186
+ value,
187
+ createdAt: now
188
+ // Fresh TTL from load time
189
+ };
190
+ this.cache.set(key, entry);
191
+ loaded += 1;
192
+ }
193
+ return loaded;
194
+ }
195
+ /**
196
+ * Start the background refresh loop.
197
+ */
198
+ startRefreshLoop() {
199
+ this.refreshTimer = setInterval(() => {
200
+ this.refreshStaleEntries().catch((e) => {
201
+ console.warn("Unexpected error in cache refresh loop:", e);
202
+ });
203
+ }, this.refreshIntervalSeconds * 1e3);
204
+ if (this.refreshTimer.unref) {
205
+ this.refreshTimer.unref();
206
+ }
207
+ }
208
+ /**
209
+ * Get list of stale cache keys.
210
+ */
211
+ getStaleKeys() {
212
+ const staleKeys = [];
213
+ for (const [key, entry] of this.cache.entries()) {
214
+ if (isStale(entry, this.ttlSeconds)) {
215
+ staleKeys.push(key);
216
+ }
217
+ }
218
+ return staleKeys;
219
+ }
220
+ /**
221
+ * Check for stale entries and refresh them.
222
+ */
223
+ async refreshStaleEntries() {
224
+ if (!this.fetchFunc) {
225
+ return;
226
+ }
227
+ const staleKeys = this.getStaleKeys();
228
+ if (staleKeys.length === 0) {
229
+ return;
230
+ }
231
+ for (const key of staleKeys) {
232
+ try {
233
+ const newValue = await this.fetchFunc(key);
234
+ this.set(key, newValue);
235
+ this._metrics.refreshes += 1;
236
+ } catch (e) {
237
+ this._metrics.refreshErrors += 1;
238
+ console.warn(`Failed to refresh cache entry ${key}:`, e);
239
+ }
240
+ }
241
+ }
242
+ }
23
243
  export {
24
- _getFetchImplementation,
25
- _globalFetchImplementationIsNodeFetch
244
+ Cache
26
245
  };
27
246
  //# sourceMappingURL=index.es185.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es185.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/singletons/fetch.js"],"sourcesContent":["import { getLangSmithEnvironmentVariable } from \"../utils/env.js\";\n// Wrap the default fetch call due to issues with illegal invocations\n// in some environments:\n// https://stackoverflow.com/questions/69876859/why-does-bind-fix-failed-to-execute-fetch-on-window-illegal-invocation-err\n// @ts-expect-error Broad typing to support a range of fetch implementations\nconst DEFAULT_FETCH_IMPLEMENTATION = (...args) => fetch(...args);\nconst LANGSMITH_FETCH_IMPLEMENTATION_KEY = Symbol.for(\"ls:fetch_implementation\");\n/**\n * Overrides the fetch implementation used for LangSmith calls.\n * You should use this if you need to use an implementation of fetch\n * other than the default global (e.g. for dealing with proxies).\n * @param fetch The new fetch functino to use.\n */\nexport const overrideFetchImplementation = (fetch) => {\n globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY] = fetch;\n};\nexport const clearFetchImplementation = () => {\n delete globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY];\n};\nexport const _globalFetchImplementationIsNodeFetch = () => {\n const fetchImpl = globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY];\n if (!fetchImpl)\n return false;\n // Check if the implementation has node-fetch specific properties\n return (typeof fetchImpl === \"function\" &&\n \"Headers\" in fetchImpl &&\n \"Request\" in fetchImpl &&\n \"Response\" in fetchImpl);\n};\n/**\n * @internal\n */\nexport const _getFetchImplementation = (debug) => {\n return async (...args) => {\n if (debug || getLangSmithEnvironmentVariable(\"DEBUG\") === \"true\") {\n const [url, options] = args;\n console.log(`→ ${options?.method || \"GET\"} ${url}`);\n }\n const res = await (globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY] ??\n DEFAULT_FETCH_IMPLEMENTATION)(...args);\n if (debug || getLangSmithEnvironmentVariable(\"DEBUG\") === \"true\") {\n console.log(`← ${res.status} ${res.statusText} ${res.url}`);\n }\n return res;\n };\n};\n"],"names":[],"mappings":";AAKA,MAAM,+BAA+B,IAAI,SAAS,MAAM,GAAG,IAAI;AAC/D,MAAM,qCAAqC,uBAAO,IAAI,yBAAyB;AAanE,MAAC,wCAAwC,MAAM;AACvD,QAAM,YAAY,WAAW,kCAAkC;AAC/D,MAAI,CAAC;AACD,WAAO;AAEX,SAAQ,OAAO,cAAc,cACzB,aAAa,aACb,aAAa,aACb,cAAc;AACtB;AAIY,MAAC,0BAA0B,CAAC,UAAU;AAC9C,SAAO,UAAU,SAAS;AACtB,QAAI,SAAS,gCAAgC,OAAO,MAAM,QAAQ;AAC9D,YAAM,CAAC,KAAK,OAAO,IAAI;AACvB,cAAQ,IAAI,KAAK,SAAS,UAAU,KAAK,IAAI,GAAG,EAAE;AAAA,IACtD;AACA,UAAM,MAAM,OAAO,WAAW,kCAAkC,KAC5D,8BAA8B,GAAG,IAAI;AACzC,QAAI,SAAS,gCAAgC,OAAO,MAAM,QAAQ;AAC9D,cAAQ,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,UAAU,IAAI,IAAI,GAAG,EAAE;AAAA,IAC9D;AACA,WAAO;AAAA,EACX;AACJ;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es185.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompts_cache.js"],"sourcesContent":["/**\n * Prompt caching module for LangSmith SDK.\n *\n * Provides an LRU cache with background refresh for prompt caching.\n * Uses stale-while-revalidate pattern for optimal performance.\n *\n * Works in all environments. File operations (dump/load) use helpers\n * that are swapped for browser builds via package.json browser field.\n */\nimport { dumpCache, loadCache } from \"./prompts_cache_fs.js\";\n/**\n * Check if a cache entry is stale based on TTL.\n */\nfunction isStale(entry, ttlSeconds) {\n if (ttlSeconds === null) {\n return false; // Infinite TTL, never stale\n }\n const ageMs = Date.now() - entry.createdAt;\n return ageMs > ttlSeconds * 1000;\n}\n/**\n * LRU cache with background refresh for prompts.\n *\n * Features:\n * - In-memory LRU cache with configurable max size\n * - Background refresh using setInterval\n * - Stale-while-revalidate: returns stale data while refresh happens\n * - JSON dump/load for offline use\n *\n * @example\n * ```typescript\n * const cache = new Cache({\n * maxSize: 100,\n * ttlSeconds: 3600,\n * fetchFunc: async (key) => client.pullPromptCommit(key),\n * });\n *\n * // Use the cache\n * cache.set(\"my-prompt:latest\", promptCommit);\n * const cached = cache.get(\"my-prompt:latest\");\n *\n * // Cleanup\n * cache.stop();\n * ```\n */\nexport class Cache {\n constructor(config = {}) {\n Object.defineProperty(this, \"cache\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ttlSeconds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"refreshIntervalSeconds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fetchFunc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"refreshTimer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_metrics\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n hits: 0,\n misses: 0,\n refreshes: 0,\n refreshErrors: 0,\n }\n });\n this.maxSize = config.maxSize ?? 100;\n this.ttlSeconds = config.ttlSeconds ?? 3600;\n this.refreshIntervalSeconds = config.refreshIntervalSeconds ?? 60;\n this.fetchFunc = config.fetchFunc;\n // Start background refresh if fetch function provided and TTL is set\n if (this.fetchFunc && this.ttlSeconds !== null) {\n this.startRefreshLoop();\n }\n }\n /**\n * Get cache performance metrics.\n */\n get metrics() {\n return { ...this._metrics };\n }\n /**\n * Get total cache requests (hits + misses).\n */\n get totalRequests() {\n return this._metrics.hits + this._metrics.misses;\n }\n /**\n * Get cache hit rate (0.0 to 1.0).\n */\n get hitRate() {\n const total = this.totalRequests;\n return total > 0 ? this._metrics.hits / total : 0;\n }\n /**\n * Reset all metrics to zero.\n */\n resetMetrics() {\n this._metrics = {\n hits: 0,\n misses: 0,\n refreshes: 0,\n refreshErrors: 0,\n };\n }\n /**\n * Get a value from cache.\n *\n * Returns the cached value or undefined if not found.\n * Stale entries are still returned (background refresh handles updates).\n */\n get(key) {\n const entry = this.cache.get(key);\n if (!entry) {\n this._metrics.misses += 1;\n return undefined;\n }\n // Move to end for LRU (delete and re-add)\n this.cache.delete(key);\n this.cache.set(key, entry);\n this._metrics.hits += 1;\n return entry.value;\n }\n /**\n * Set a value in the cache.\n */\n set(key, value) {\n // Check if we need to evict (and key is new)\n if (!this.cache.has(key) && this.cache.size >= this.maxSize) {\n // Evict oldest (first item in Map)\n const oldestKey = this.cache.keys().next().value;\n if (oldestKey !== undefined) {\n this.cache.delete(oldestKey);\n }\n }\n const entry = {\n value,\n createdAt: Date.now(),\n };\n // Delete first to ensure it's at the end\n this.cache.delete(key);\n this.cache.set(key, entry);\n }\n /**\n * Remove a specific entry from cache.\n */\n invalidate(key) {\n this.cache.delete(key);\n }\n /**\n * Clear all cache entries.\n */\n clear() {\n this.cache.clear();\n }\n /**\n * Get the number of entries in the cache.\n */\n get size() {\n return this.cache.size;\n }\n /**\n * Stop background refresh.\n * Should be called when the client is being cleaned up.\n */\n stop() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n this.refreshTimer = undefined;\n }\n }\n /**\n * Dump cache contents to a JSON file for offline use.\n */\n dump(filePath) {\n const entries = {};\n for (const [key, entry] of this.cache.entries()) {\n entries[key] = entry.value;\n }\n dumpCache(filePath, entries);\n }\n /**\n * Load cache contents from a JSON file.\n *\n * Loaded entries get a fresh TTL starting from load time.\n *\n * @returns Number of entries loaded.\n */\n load(filePath) {\n const entries = loadCache(filePath);\n if (!entries) {\n return 0;\n }\n let loaded = 0;\n const now = Date.now();\n for (const [key, value] of Object.entries(entries)) {\n if (this.cache.size >= this.maxSize) {\n break;\n }\n const entry = {\n value: value,\n createdAt: now, // Fresh TTL from load time\n };\n this.cache.set(key, entry);\n loaded += 1;\n }\n return loaded;\n }\n /**\n * Start the background refresh loop.\n */\n startRefreshLoop() {\n this.refreshTimer = setInterval(() => {\n this.refreshStaleEntries().catch((e) => {\n // Log but don't die - keep the refresh loop running\n console.warn(\"Unexpected error in cache refresh loop:\", e);\n });\n }, this.refreshIntervalSeconds * 1000);\n // Don't block Node.js from exiting\n if (this.refreshTimer.unref) {\n this.refreshTimer.unref();\n }\n }\n /**\n * Get list of stale cache keys.\n */\n getStaleKeys() {\n const staleKeys = [];\n for (const [key, entry] of this.cache.entries()) {\n if (isStale(entry, this.ttlSeconds)) {\n staleKeys.push(key);\n }\n }\n return staleKeys;\n }\n /**\n * Check for stale entries and refresh them.\n */\n async refreshStaleEntries() {\n if (!this.fetchFunc) {\n return;\n }\n const staleKeys = this.getStaleKeys();\n if (staleKeys.length === 0) {\n return;\n }\n for (const key of staleKeys) {\n try {\n const newValue = await this.fetchFunc(key);\n this.set(key, newValue);\n this._metrics.refreshes += 1;\n }\n catch (e) {\n // Keep stale data on refresh failure\n this._metrics.refreshErrors += 1;\n console.warn(`Failed to refresh cache entry ${key}:`, e);\n }\n }\n }\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}