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.
- package/dist/index.es10.js +31 -16
- package/dist/index.es10.js.map +1 -1
- package/dist/index.es100.js +36 -3156
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +162 -33
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +203 -5
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +13 -72
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +27 -34
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +34 -5
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +3159 -2
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +5 -11
- package/dist/index.es107.js.map +1 -1
- package/dist/index.es108.js +2 -503
- package/dist/index.es108.js.map +1 -1
- package/dist/index.es109.js +16 -5
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es11.js +146 -120
- package/dist/index.es11.js.map +1 -1
- package/dist/index.es110.js +13 -2
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +484 -129
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +5 -906
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +2 -282
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +148 -4
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +869 -407
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +274 -40
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +4 -24
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es118.js +437 -72
- package/dist/index.es118.js.map +1 -1
- package/dist/index.es119.js +42 -125
- package/dist/index.es119.js.map +1 -1
- package/dist/index.es12.js +13 -103
- package/dist/index.es12.js.map +1 -1
- package/dist/index.es120.js +21 -48
- package/dist/index.es120.js.map +1 -1
- package/dist/index.es121.js +77 -8
- package/dist/index.es121.js.map +1 -1
- package/dist/index.es122.js +127 -43
- package/dist/index.es122.js.map +1 -1
- package/dist/index.es123.js +41 -91
- package/dist/index.es123.js.map +1 -1
- package/dist/index.es124.js +9 -52
- package/dist/index.es124.js.map +1 -1
- package/dist/index.es125.js +44 -15
- package/dist/index.es125.js.map +1 -1
- package/dist/index.es126.js +97 -13
- package/dist/index.es126.js.map +1 -1
- package/dist/index.es127.js +52 -88
- package/dist/index.es127.js.map +1 -1
- package/dist/index.es128.js +15 -2
- package/dist/index.es128.js.map +1 -1
- package/dist/index.es129.js +87 -54
- package/dist/index.es129.js.map +1 -1
- package/dist/index.es13.js +126 -32
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es130.js +2 -100
- package/dist/index.es130.js.map +1 -1
- package/dist/index.es131.js +163 -190
- package/dist/index.es131.js.map +1 -1
- package/dist/index.es132.js +2 -110
- package/dist/index.es132.js.map +1 -1
- package/dist/index.es133.js +53 -32
- package/dist/index.es133.js.map +1 -1
- package/dist/index.es134.js +99 -9
- package/dist/index.es134.js.map +1 -1
- package/dist/index.es135.js +190 -10
- package/dist/index.es135.js.map +1 -1
- package/dist/index.es136.js +108 -10
- package/dist/index.es136.js.map +1 -1
- package/dist/index.es137.js +30 -86
- package/dist/index.es137.js.map +1 -1
- package/dist/index.es138.js +10 -275
- package/dist/index.es138.js.map +1 -1
- package/dist/index.es139.js +11 -2
- package/dist/index.es139.js.map +1 -1
- package/dist/index.es140.js +11 -163
- package/dist/index.es140.js.map +1 -1
- package/dist/index.es141.js +87 -47
- package/dist/index.es141.js.map +1 -1
- package/dist/index.es142.js +266 -31
- package/dist/index.es142.js.map +1 -1
- package/dist/index.es143.js +2 -35
- package/dist/index.es143.js.map +1 -1
- package/dist/index.es144.js +155 -31
- package/dist/index.es144.js.map +1 -1
- package/dist/index.es145.js +48 -21
- package/dist/index.es145.js.map +1 -1
- package/dist/index.es146.js +33 -584
- package/dist/index.es146.js.map +1 -1
- package/dist/index.es147.js +34 -124
- package/dist/index.es147.js.map +1 -1
- package/dist/index.es148.js +31 -155
- package/dist/index.es148.js.map +1 -1
- package/dist/index.es149.js +24 -2
- package/dist/index.es149.js.map +1 -1
- package/dist/index.es15.js +15 -15
- package/dist/index.es150.js +591 -2
- package/dist/index.es150.js.map +1 -1
- package/dist/index.es151.js +125 -2
- package/dist/index.es151.js.map +1 -1
- package/dist/index.es152.js +3 -21
- package/dist/index.es152.js.map +1 -1
- package/dist/index.es153.js +2 -2
- package/dist/index.es154.js +2 -25
- package/dist/index.es154.js.map +1 -1
- package/dist/index.es155.js +22 -8
- package/dist/index.es155.js.map +1 -1
- package/dist/index.es156.js +2 -5
- package/dist/index.es156.js.map +1 -1
- package/dist/index.es157.js +24 -12
- package/dist/index.es157.js.map +1 -1
- package/dist/index.es158.js +5 -6
- package/dist/index.es158.js.map +1 -1
- package/dist/index.es159.js +12 -63
- package/dist/index.es159.js.map +1 -1
- package/dist/index.es160.js +5 -21
- package/dist/index.es160.js.map +1 -1
- package/dist/index.es161.js +8 -6
- package/dist/index.es161.js.map +1 -1
- package/dist/index.es162.js +22 -346
- package/dist/index.es162.js.map +1 -1
- package/dist/index.es163.js +12 -25
- package/dist/index.es163.js.map +1 -1
- package/dist/index.es164.js +53 -11
- package/dist/index.es164.js.map +1 -1
- package/dist/index.es165.js +59 -49
- package/dist/index.es165.js.map +1 -1
- package/dist/index.es166.js +22 -7
- package/dist/index.es166.js.map +1 -1
- package/dist/index.es167.js +5 -102
- package/dist/index.es167.js.map +1 -1
- package/dist/index.es168.js +339 -109
- package/dist/index.es168.js.map +1 -1
- package/dist/index.es169.js +7 -136
- package/dist/index.es169.js.map +1 -1
- package/dist/index.es17.js +2 -2
- package/dist/index.es170.js +97 -109
- package/dist/index.es170.js.map +1 -1
- package/dist/index.es171.js +119 -6
- package/dist/index.es171.js.map +1 -1
- package/dist/index.es172.js +136 -4
- package/dist/index.es172.js.map +1 -1
- package/dist/index.es173.js +115 -2
- package/dist/index.es173.js.map +1 -1
- package/dist/index.es174.js +6 -3737
- package/dist/index.es174.js.map +1 -1
- package/dist/index.es175.js +2 -342
- package/dist/index.es175.js.map +1 -1
- package/dist/index.es176.js +138 -105
- package/dist/index.es176.js.map +1 -1
- package/dist/index.es177.js +2 -133
- package/dist/index.es177.js.map +1 -1
- package/dist/index.es178.js +3734 -12
- package/dist/index.es178.js.map +1 -1
- package/dist/index.es179.js +326 -136
- package/dist/index.es179.js.map +1 -1
- package/dist/index.es180.js +107 -13
- package/dist/index.es180.js.map +1 -1
- package/dist/index.es181.js +131 -6
- package/dist/index.es181.js.map +1 -1
- package/dist/index.es182.js +13 -19
- package/dist/index.es182.js.map +1 -1
- package/dist/index.es183.js +139 -77
- package/dist/index.es183.js.map +1 -1
- package/dist/index.es184.js +13 -241
- package/dist/index.es184.js.map +1 -1
- package/dist/index.es185.js +8 -24
- package/dist/index.es185.js.map +1 -1
- package/dist/index.es186.js +21 -6
- package/dist/index.es186.js.map +1 -1
- package/dist/index.es187.js +90 -4
- package/dist/index.es187.js.map +1 -1
- package/dist/index.es188.js +240 -15
- package/dist/index.es188.js.map +1 -1
- package/dist/index.es189.js +24 -8
- package/dist/index.es189.js.map +1 -1
- package/dist/index.es190.js +6 -142
- package/dist/index.es190.js.map +1 -1
- package/dist/index.es191.js +4 -2
- package/dist/index.es191.js.map +1 -1
- package/dist/index.es192.js +18 -32
- package/dist/index.es192.js.map +1 -1
- package/dist/index.es193.js +8 -6
- package/dist/index.es193.js.map +1 -1
- package/dist/index.es194.js +31 -105
- package/dist/index.es194.js.map +1 -1
- package/dist/index.es195.js +6 -13
- package/dist/index.es195.js.map +1 -1
- package/dist/index.es196.js +105 -17
- package/dist/index.es196.js.map +1 -1
- package/dist/index.es197.js +11 -29
- package/dist/index.es197.js.map +1 -1
- package/dist/index.es198.js +17 -3
- package/dist/index.es198.js.map +1 -1
- package/dist/index.es199.js +30 -4
- package/dist/index.es199.js.map +1 -1
- package/dist/index.es2.js +24 -15
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +35 -66
- package/dist/index.es20.js.map +1 -1
- package/dist/index.es200.js +4 -5
- package/dist/index.es200.js.map +1 -1
- package/dist/index.es201.js +4 -36
- package/dist/index.es201.js.map +1 -1
- package/dist/index.es202.js +5 -8
- package/dist/index.es202.js.map +1 -1
- package/dist/index.es203.js +36 -5
- package/dist/index.es203.js.map +1 -1
- package/dist/index.es204.js +5 -4
- package/dist/index.es204.js.map +1 -1
- package/dist/index.es205.js +5 -41
- package/dist/index.es205.js.map +1 -1
- package/dist/index.es206.js +4 -10
- package/dist/index.es206.js.map +1 -1
- package/dist/index.es207.js +39 -239
- package/dist/index.es207.js.map +1 -1
- package/dist/index.es208.js +10 -48
- package/dist/index.es208.js.map +1 -1
- package/dist/index.es209.js +239 -32
- package/dist/index.es209.js.map +1 -1
- package/dist/index.es21.js +25 -34
- package/dist/index.es21.js.map +1 -1
- package/dist/index.es210.js +49 -11
- package/dist/index.es210.js.map +1 -1
- package/dist/index.es211.js +33 -6
- package/dist/index.es211.js.map +1 -1
- package/dist/index.es212.js +12 -6
- package/dist/index.es212.js.map +1 -1
- package/dist/index.es213.js +7 -64
- package/dist/index.es213.js.map +1 -1
- package/dist/index.es214.js +6 -40
- package/dist/index.es214.js.map +1 -1
- package/dist/index.es215.js +63 -30
- package/dist/index.es215.js.map +1 -1
- package/dist/index.es216.js +35 -56
- package/dist/index.es216.js.map +1 -1
- package/dist/index.es217.js +32 -15
- package/dist/index.es217.js.map +1 -1
- package/dist/index.es218.js +60 -21
- package/dist/index.es218.js.map +1 -1
- package/dist/index.es219.js +15 -5
- package/dist/index.es219.js.map +1 -1
- package/dist/index.es22.js +146 -27
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es220.js +21 -15
- package/dist/index.es220.js.map +1 -1
- package/dist/index.es221.js +4 -32
- package/dist/index.es221.js.map +1 -1
- package/dist/index.es222.js +16 -4
- package/dist/index.es222.js.map +1 -1
- package/dist/index.es223.js +32 -4
- package/dist/index.es223.js.map +1 -1
- package/dist/index.es224.js +5 -5
- package/dist/index.es224.js.map +1 -1
- package/dist/index.es225.js +4 -7
- package/dist/index.es225.js.map +1 -1
- package/dist/index.es226.js +4 -91
- package/dist/index.es226.js.map +1 -1
- package/dist/index.es227.js +7 -17
- package/dist/index.es227.js.map +1 -1
- package/dist/index.es228.js +90 -760
- package/dist/index.es228.js.map +1 -1
- package/dist/index.es229.js +18 -66
- package/dist/index.es229.js.map +1 -1
- package/dist/index.es23.js +16 -146
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es230.js +749 -161
- package/dist/index.es230.js.map +1 -1
- package/dist/index.es231.js +66 -38
- package/dist/index.es231.js.map +1 -1
- package/dist/index.es232.js +172 -135
- package/dist/index.es232.js.map +1 -1
- package/dist/index.es233.js +136 -92
- package/dist/index.es233.js.map +1 -1
- package/dist/index.es234.js +92 -32
- package/dist/index.es234.js.map +1 -1
- package/dist/index.es235.js +32 -284
- package/dist/index.es235.js.map +1 -1
- package/dist/index.es236.js +284 -25
- package/dist/index.es236.js.map +1 -1
- package/dist/index.es237.js +22 -20
- package/dist/index.es237.js.map +1 -1
- package/dist/index.es238.js +22 -13
- package/dist/index.es238.js.map +1 -1
- package/dist/index.es239.js +12 -12
- package/dist/index.es239.js.map +1 -1
- package/dist/index.es24.js +58 -295
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es240.js +13 -24
- package/dist/index.es240.js.map +1 -1
- package/dist/index.es241.js +22 -42
- package/dist/index.es241.js.map +1 -1
- package/dist/index.es242.js +45 -11
- package/dist/index.es242.js.map +1 -1
- package/dist/index.es243.js +10 -10
- package/dist/index.es243.js.map +1 -1
- package/dist/index.es244.js +10 -10
- package/dist/index.es244.js.map +1 -1
- package/dist/index.es245.js +11 -14
- package/dist/index.es245.js.map +1 -1
- package/dist/index.es246.js +14 -11
- package/dist/index.es246.js.map +1 -1
- package/dist/index.es247.js +11 -11
- package/dist/index.es247.js.map +1 -1
- package/dist/index.es248.js +10 -10
- package/dist/index.es248.js.map +1 -1
- package/dist/index.es249.js +11 -15
- package/dist/index.es249.js.map +1 -1
- package/dist/index.es25.js +298 -114
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es250.js +15 -11
- package/dist/index.es250.js.map +1 -1
- package/dist/index.es251.js +10 -10
- package/dist/index.es251.js.map +1 -1
- package/dist/index.es252.js +11 -11
- package/dist/index.es252.js.map +1 -1
- package/dist/index.es253.js +10 -10
- package/dist/index.es253.js.map +1 -1
- package/dist/index.es254.js +10 -10
- package/dist/index.es254.js.map +1 -1
- package/dist/index.es255.js +10 -10
- package/dist/index.es255.js.map +1 -1
- package/dist/index.es256.js +10 -10
- package/dist/index.es256.js.map +1 -1
- package/dist/index.es257.js +10 -10
- package/dist/index.es257.js.map +1 -1
- package/dist/index.es258.js +11 -56
- package/dist/index.es258.js.map +1 -1
- package/dist/index.es259.js +53 -46
- package/dist/index.es259.js.map +1 -1
- package/dist/index.es26.js +121 -5
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es260.js +42 -112
- package/dist/index.es260.js.map +1 -1
- package/dist/index.es261.js +87 -352
- package/dist/index.es261.js.map +1 -1
- package/dist/index.es262.js +381 -15
- package/dist/index.es262.js.map +1 -1
- package/dist/index.es263.js +17 -10
- package/dist/index.es263.js.map +1 -1
- package/dist/index.es264.js +10 -30
- package/dist/index.es264.js.map +1 -1
- package/dist/index.es265.js +17 -17
- package/dist/index.es265.js.map +1 -1
- package/dist/index.es266.js +25 -56
- package/dist/index.es266.js.map +1 -1
- package/dist/index.es267.js +59 -14
- package/dist/index.es267.js.map +1 -1
- package/dist/index.es268.js +14 -74
- package/dist/index.es268.js.map +1 -1
- package/dist/index.es269.js +77 -11
- package/dist/index.es269.js.map +1 -1
- package/dist/index.es270.js +10 -10
- package/dist/index.es270.js.map +1 -1
- package/dist/index.es271.js +11 -15
- package/dist/index.es271.js.map +1 -1
- package/dist/index.es272.js +14 -51
- package/dist/index.es272.js.map +1 -1
- package/dist/index.es273.js +44 -158
- package/dist/index.es273.js.map +1 -1
- package/dist/index.es274.js +167 -2
- package/dist/index.es274.js.map +1 -1
- package/dist/index.es275.js +37 -10
- package/dist/index.es275.js.map +1 -1
- package/dist/index.es276.js +2 -20
- package/dist/index.es276.js.map +1 -1
- package/dist/index.es277.js +10 -38
- package/dist/index.es277.js.map +1 -1
- package/dist/index.es278.js +23 -0
- package/dist/index.es278.js.map +1 -0
- package/dist/index.es279.js +42 -0
- package/dist/index.es279.js.map +1 -0
- package/dist/index.es28.js +7 -7
- package/dist/index.es29.js +1 -1
- package/dist/index.es32.js +4 -4
- package/dist/index.es33.js +117 -13
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es34.js +65 -112
- package/dist/index.es34.js.map +1 -1
- package/dist/index.es35.js +18 -71
- package/dist/index.es35.js.map +1 -1
- package/dist/index.es36.js +260 -17
- package/dist/index.es36.js.map +1 -1
- package/dist/index.es37.js +31 -249
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +199 -27
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +50 -198
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es40.js +120 -45
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +14 -132
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +225 -19
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +8 -229
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +1190 -7
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +6 -1191
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +146 -6
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +15 -146
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es49.js +5 -93
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es50.js +8 -4
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +91 -33
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +3 -71
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +34 -36
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +61 -295
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +38 -9
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es56.js +296 -81
- package/dist/index.es56.js.map +1 -1
- package/dist/index.es57.js +9 -8
- package/dist/index.es57.js.map +1 -1
- package/dist/index.es58.js +89 -13
- package/dist/index.es58.js.map +1 -1
- package/dist/index.es59.js +6 -141
- package/dist/index.es59.js.map +1 -1
- package/dist/index.es60.js +12 -297
- package/dist/index.es60.js.map +1 -1
- package/dist/index.es61.js +137 -60
- package/dist/index.es61.js.map +1 -1
- package/dist/index.es62.js +247 -160
- package/dist/index.es62.js.map +1 -1
- package/dist/index.es63.js +63 -31
- package/dist/index.es63.js.map +1 -1
- package/dist/index.es64.js +212 -8
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +32 -10
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +8 -186
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +11 -23
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +183 -1396
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +24 -9
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es70.js +1400 -8
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +9 -6
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +8 -163
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +6 -672
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +161 -10
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +671 -39
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +10 -32
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +31 -223
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +33 -29
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +193 -36
- package/dist/index.es79.js.map +1 -1
- package/dist/index.es80.js +26 -72
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +70 -47
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +72 -26
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +37 -28
- package/dist/index.es83.js.map +1 -1
- package/dist/index.es84.js +28 -55
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +43 -13
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +32 -132
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +5 -21
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +61 -170
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +31 -235
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es90.js +50 -348
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +13 -137
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +132 -65
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +21 -37
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +179 -34
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +230 -155
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +341 -189
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +136 -13
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +68 -28
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +33 -30
- package/dist/index.es99.js.map +1 -1
- package/dist/langgraph-ui-components.css +107 -0
- package/dist/styles.css +1 -1
- package/package.json +8 -11
- package/dist/index.es48.js +0 -11
- package/dist/index.es48.js.map +0 -1
package/dist/index.es183.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es183.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
|
+
{"version":3,"file":"index.es183.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]}
|
package/dist/index.es184.js
CHANGED
|
@@ -1,246 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { v7 } from "uuid";
|
|
2
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3
|
+
function assertUuid(str, which) {
|
|
4
|
+
if (!UUID_REGEX.test(str)) {
|
|
5
|
+
const msg = which !== void 0 ? `Invalid UUID for ${which}: ${str}` : `Invalid UUID: ${str}`;
|
|
6
|
+
throw new Error(msg);
|
|
7
|
+
}
|
|
8
|
+
return str;
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
}
|
|
10
|
+
function uuid7FromTime(timestamp) {
|
|
11
|
+
const msecs = typeof timestamp === "string" ? Date.parse(timestamp) : timestamp;
|
|
12
|
+
return v7({ msecs, seq: 0 });
|
|
242
13
|
}
|
|
243
14
|
export {
|
|
244
|
-
|
|
15
|
+
assertUuid,
|
|
16
|
+
uuid7FromTime
|
|
245
17
|
};
|
|
246
18
|
//# sourceMappingURL=index.es184.js.map
|
package/dist/index.es184.js.map
CHANGED
|
@@ -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":";AAaA,SAAS,QAAQ,OAAO,YAAY;AAChC,MAAI,eAAe,MAAM;AACrB,WAAO;AAAA,EACX;AACA,QAAM,QAAQ,KAAK,IAAG,IAAK,MAAM;AACjC,SAAO,QAAQ,aAAa;AAChC;AA0BO,MAAM,MAAM;AAAA,EACf,YAAY,SAAS,IAAI;AACrB,WAAO,eAAe,MAAM,SAAS;AAAA,MACjC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO,oBAAI,IAAG;AAAA,IAC1B,CAAS;AACD,WAAO,eAAe,MAAM,WAAW;AAAA,MACnC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,WAAO,eAAe,MAAM,cAAc;AAAA,MACtC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,WAAO,eAAe,MAAM,0BAA0B;AAAA,MAClD,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,WAAO,eAAe,MAAM,aAAa;AAAA,MACrC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,WAAO,eAAe,MAAM,gBAAgB;AAAA,MACxC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AACD,WAAO,eAAe,MAAM,YAAY;AAAA,MACpC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,QACH,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,eAAe;AAAA,MAC/B;AAAA,IACA,CAAS;AACD,SAAK,UAAU,OAAO,WAAW;AACjC,SAAK,aAAa,OAAO,cAAc;AACvC,SAAK,yBAAyB,OAAO,0BAA0B;AAC/D,SAAK,YAAY,OAAO;AAExB,QAAI,KAAK,aAAa,KAAK,eAAe,MAAM;AAC5C,WAAK,iBAAgB;AAAA,IACzB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAU;AACV,WAAO,EAAE,GAAG,KAAK,SAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,gBAAgB;AAChB,WAAO,KAAK,SAAS,OAAO,KAAK,SAAS;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAU;AACV,UAAM,QAAQ,KAAK;AACnB,WAAO,QAAQ,IAAI,KAAK,SAAS,OAAO,QAAQ;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe;AACX,SAAK,WAAW;AAAA,MACZ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,eAAe;AAAA,IAC3B;AAAA,EACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,KAAK;AACL,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAChC,QAAI,CAAC,OAAO;AACR,WAAK,SAAS,UAAU;AACxB,aAAO;AAAA,IACX;AAEA,SAAK,MAAM,OAAO,GAAG;AACrB,SAAK,MAAM,IAAI,KAAK,KAAK;AACzB,SAAK,SAAS,QAAQ;AACtB,WAAO,MAAM;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,KAAK,OAAO;AAEZ,QAAI,CAAC,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,KAAK,SAAS;AAEzD,YAAM,YAAY,KAAK,MAAM,KAAI,EAAG,KAAI,EAAG;AAC3C,UAAI,cAAc,QAAW;AACzB,aAAK,MAAM,OAAO,SAAS;AAAA,MAC/B;AAAA,IACJ;AACA,UAAM,QAAQ;AAAA,MACV;AAAA,MACA,WAAW,KAAK,IAAG;AAAA,IAC/B;AAEQ,SAAK,MAAM,OAAO,GAAG;AACrB,SAAK,MAAM,IAAI,KAAK,KAAK;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW,KAAK;AACZ,SAAK,MAAM,OAAO,GAAG;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACJ,SAAK,MAAM,MAAK;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO;AACP,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AACH,QAAI,KAAK,cAAc;AACnB,oBAAc,KAAK,YAAY;AAC/B,WAAK,eAAe;AAAA,IACxB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,UAAU;AAEX,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,WAAW;AAC9B,YAAM;AAAA,IACzB;AACA,cAA2B;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAK,UAAU;AACX,UAAM,UAAU,UAAkB;AAClC,QAAI,CAAC,SAAS;AACV,aAAO;AAAA,IACX;AACA,QAAI,SAAS;AACb,UAAM,MAAM,KAAK,IAAG;AACpB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAChD,UAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AACjC;AAAA,MACJ;AACA,YAAM,QAAQ;AAAA,QACV;AAAA,QACA,WAAW;AAAA;AAAA,MAC3B;AACY,WAAK,MAAM,IAAI,KAAK,KAAK;AACzB,gBAAU;AAAA,IACd;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAmB;AACf,SAAK,eAAe,YAAY,MAAM;AAClC,WAAK,oBAAmB,EAAG,MAAM,CAAC,MAAM;AAEpC,gBAAQ,KAAK,2CAA2C,CAAC;AAAA,MAC7D,CAAC;AAAA,IACL,GAAG,KAAK,yBAAyB,GAAI;AAErC,QAAI,KAAK,aAAa,OAAO;AACzB,WAAK,aAAa,MAAK;AAAA,IAC3B;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe;AACX,UAAM,YAAY,CAAA;AAClB,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,WAAW;AAC7C,UAAI,QAAQ,OAAO,KAAK,UAAU,GAAG;AACjC,kBAAU,KAAK,GAAG;AAAA,MACtB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,sBAAsB;AACxB,QAAI,CAAC,KAAK,WAAW;AACjB;AAAA,IACJ;AACA,UAAM,YAAY,KAAK,aAAY;AACnC,QAAI,UAAU,WAAW,GAAG;AACxB;AAAA,IACJ;AACA,eAAW,OAAO,WAAW;AACzB,UAAI;AACA,cAAM,WAAW,MAAM,KAAK,UAAU,GAAG;AACzC,aAAK,IAAI,KAAK,QAAQ;AACtB,aAAK,SAAS,aAAa;AAAA,MAC/B,SACO,GAAG;AAEN,aAAK,SAAS,iBAAiB;AAC/B,gBAAQ,KAAK,iCAAiC,GAAG,KAAK,CAAC;AAAA,MAC3D;AAAA,IACJ;AAAA,EACJ;AACJ;","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/_uuid.js"],"sourcesContent":["// Relaxed UUID validation regex (allows any valid UUID format including nil UUIDs)\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nimport { v7 as uuidv7 } from \"uuid\";\nimport { warnOnce } from \"./warn.js\";\nlet UUID7_WARNING_EMITTED = false;\nexport function assertUuid(str, which) {\n // Use relaxed regex validation instead of strict uuid.validate()\n // This allows edge cases like nil UUIDs or test UUIDs that might not pass strict validation\n if (!UUID_REGEX.test(str)) {\n const msg = which !== undefined\n ? `Invalid UUID for ${which}: ${str}`\n : `Invalid UUID: ${str}`;\n throw new Error(msg);\n }\n return str;\n}\n/**\n * Generate a UUID v7 from a timestamp.\n *\n * @param timestamp - The timestamp in milliseconds\n * @returns A UUID v7 string\n */\nexport function uuid7FromTime(timestamp) {\n const msecs = typeof timestamp === \"string\" ? Date.parse(timestamp) : timestamp;\n // Work around uuid@10 behavior where providing only { msecs }\n // may not set the internal timestamp used for stringification.\n // Providing a seq ensures the implementation updates its internal state\n // and encodes the provided milliseconds into the UUID bytes.\n return uuidv7({ msecs, seq: 0 });\n}\n/**\n * Get the version of a UUID string.\n * @param uuidStr - The UUID string to check\n * @returns The version number (1-7) or null if invalid\n */\nexport function getUuidVersion(uuidStr) {\n if (!UUID_REGEX.test(uuidStr)) {\n return null;\n }\n // Version is in bits 48-51\n // Format: xxxxxxxx-xxxx-Vxxx-xxxx-xxxxxxxxxxxx\n const versionChar = uuidStr[14];\n return parseInt(versionChar, 16);\n}\n/**\n * Warn if a UUID is not version 7.\n *\n * @param uuidStr - The UUID string to check\n * @param idType - The type of ID (e.g., \"run_id\", \"trace_id\") for the warning message\n */\nexport function warnIfNotUuidV7(uuidStr, _idType) {\n const version = getUuidVersion(uuidStr);\n if (version !== null && version !== 7 && !UUID7_WARNING_EMITTED) {\n UUID7_WARNING_EMITTED = true;\n warnOnce(`LangSmith now uses UUID v7 for run and trace identifiers. ` +\n `This warning appears when passing custom IDs. ` +\n `Please use: import { uuidv7 } from 'langsmith'; const id = uuidv7(); ` +\n `Future versions will require UUID v7.`);\n }\n}\n"],"names":["uuidv7"],"mappings":";AACA,MAAM,aAAa;AAIZ,SAAS,WAAW,KAAK,OAAO;AAGnC,MAAI,CAAC,WAAW,KAAK,GAAG,GAAG;AACvB,UAAM,MAAM,UAAU,SAChB,oBAAoB,KAAK,KAAK,GAAG,KACjC,iBAAiB,GAAG;AAC1B,UAAM,IAAI,MAAM,GAAG;AAAA,EACvB;AACA,SAAO;AACX;AAOO,SAAS,cAAc,WAAW;AACrC,QAAM,QAAQ,OAAO,cAAc,WAAW,KAAK,MAAM,SAAS,IAAI;AAKtE,SAAOA,GAAO,EAAE,OAAO,KAAK,EAAC,CAAE;AACnC;","x_google_ignoreList":[0]}
|
package/dist/index.es185.js
CHANGED
|
@@ -1,27 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
};
|
|
1
|
+
const warnedMessages = {};
|
|
2
|
+
function warnOnce(message) {
|
|
3
|
+
if (!warnedMessages[message]) {
|
|
4
|
+
console.warn(message);
|
|
5
|
+
warnedMessages[message] = true;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
23
8
|
export {
|
|
24
|
-
|
|
25
|
-
_globalFetchImplementationIsNodeFetch
|
|
9
|
+
warnOnce
|
|
26
10
|
};
|
|
27
11
|
//# sourceMappingURL=index.es185.js.map
|
package/dist/index.es185.js.map
CHANGED
|
@@ -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/
|
|
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/warn.js"],"sourcesContent":["const warnedMessages = {};\nexport function warnOnce(message) {\n if (!warnedMessages[message]) {\n console.warn(message);\n warnedMessages[message] = true;\n }\n}\n"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,CAAA;AAChB,SAAS,SAAS,SAAS;AAC9B,MAAI,CAAC,eAAe,OAAO,GAAG;AAC1B,YAAQ,KAAK,OAAO;AACpB,mBAAe,OAAO,IAAI;AAAA,EAC9B;AACJ;","x_google_ignoreList":[0]}
|
package/dist/index.es186.js
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
1
|
+
import "./index.es113.js";
|
|
2
|
+
function parsePromptIdentifier(identifier) {
|
|
3
|
+
if (!identifier || identifier.split("/").length > 2 || identifier.startsWith("/") || identifier.endsWith("/") || identifier.split(":").length > 2) {
|
|
4
|
+
throw new Error(`Invalid identifier format: ${identifier}`);
|
|
5
|
+
}
|
|
6
|
+
const [ownerNamePart, commitPart] = identifier.split(":");
|
|
7
|
+
const commit = commitPart || "latest";
|
|
8
|
+
if (ownerNamePart.includes("/")) {
|
|
9
|
+
const [owner, name] = ownerNamePart.split("/", 2);
|
|
10
|
+
if (!owner || !name) {
|
|
11
|
+
throw new Error(`Invalid identifier format: ${identifier}`);
|
|
12
|
+
}
|
|
13
|
+
return [owner, name, commit];
|
|
14
|
+
} else {
|
|
15
|
+
if (!ownerNamePart) {
|
|
16
|
+
throw new Error(`Invalid identifier format: ${identifier}`);
|
|
17
|
+
}
|
|
18
|
+
return ["-", ownerNamePart, commit];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
6
21
|
export {
|
|
7
|
-
|
|
22
|
+
parsePromptIdentifier
|
|
8
23
|
};
|
|
9
24
|
//# sourceMappingURL=index.es186.js.map
|
package/dist/index.es186.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es186.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/
|
|
1
|
+
{"version":3,"file":"index.es186.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/utils/prompts.js"],"sourcesContent":["import { parse as parseVersion } from \"semver\";\nexport function isVersionGreaterOrEqual(current_version, target_version) {\n const current = parseVersion(current_version);\n const target = parseVersion(target_version);\n if (!current || !target) {\n throw new Error(\"Invalid version format.\");\n }\n return current.compare(target) >= 0;\n}\nexport function parsePromptIdentifier(identifier) {\n if (!identifier ||\n identifier.split(\"/\").length > 2 ||\n identifier.startsWith(\"/\") ||\n identifier.endsWith(\"/\") ||\n identifier.split(\":\").length > 2) {\n throw new Error(`Invalid identifier format: ${identifier}`);\n }\n const [ownerNamePart, commitPart] = identifier.split(\":\");\n const commit = commitPart || \"latest\";\n if (ownerNamePart.includes(\"/\")) {\n const [owner, name] = ownerNamePart.split(\"/\", 2);\n if (!owner || !name) {\n throw new Error(`Invalid identifier format: ${identifier}`);\n }\n return [owner, name, commit];\n }\n else {\n if (!ownerNamePart) {\n throw new Error(`Invalid identifier format: ${identifier}`);\n }\n return [\"-\", ownerNamePart, commit];\n }\n}\n"],"names":[],"mappings":";AASO,SAAS,sBAAsB,YAAY;AAC9C,MAAI,CAAC,cACD,WAAW,MAAM,GAAG,EAAE,SAAS,KAC/B,WAAW,WAAW,GAAG,KACzB,WAAW,SAAS,GAAG,KACvB,WAAW,MAAM,GAAG,EAAE,SAAS,GAAG;AAClC,UAAM,IAAI,MAAM,8BAA8B,UAAU,EAAE;AAAA,EAC9D;AACA,QAAM,CAAC,eAAe,UAAU,IAAI,WAAW,MAAM,GAAG;AACxD,QAAM,SAAS,cAAc;AAC7B,MAAI,cAAc,SAAS,GAAG,GAAG;AAC7B,UAAM,CAAC,OAAO,IAAI,IAAI,cAAc,MAAM,KAAK,CAAC;AAChD,QAAI,CAAC,SAAS,CAAC,MAAM;AACjB,YAAM,IAAI,MAAM,8BAA8B,UAAU,EAAE;AAAA,IAC9D;AACA,WAAO,CAAC,OAAO,MAAM,MAAM;AAAA,EAC/B,OACK;AACD,QAAI,CAAC,eAAe;AAChB,YAAM,IAAI,MAAM,8BAA8B,UAAU,EAAE;AAAA,IAC9D;AACA,WAAO,CAAC,KAAK,eAAe,MAAM;AAAA,EACtC;AACJ;","x_google_ignoreList":[0]}
|
package/dist/index.es187.js
CHANGED
|
@@ -1,7 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
class LangSmithConflictError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
Object.defineProperty(this, "status", {
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true,
|
|
8
|
+
value: void 0
|
|
9
|
+
});
|
|
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", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true,
|
|
21
|
+
value: void 0
|
|
22
|
+
});
|
|
23
|
+
this.name = "LangSmithNotFoundError";
|
|
24
|
+
this.status = 404;
|
|
25
|
+
}
|
|
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();
|
|
35
|
+
}
|
|
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.";
|
|
44
|
+
}
|
|
45
|
+
} catch (e) {
|
|
46
|
+
const errorWithStatus = new Error(`${response.status} ${response.statusText}`);
|
|
47
|
+
errorWithStatus.status = response?.status;
|
|
48
|
+
throw errorWithStatus;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (errorBody === void 0) {
|
|
52
|
+
try {
|
|
53
|
+
errorBody = await response.text();
|
|
54
|
+
} catch (e) {
|
|
55
|
+
errorBody = "";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const fullMessage = `Failed to ${context}. Received status [${response.status}]: ${response.statusText}. Message: ${errorBody}`;
|
|
59
|
+
if (response.status === 404) {
|
|
60
|
+
throw new LangSmithNotFoundError(fullMessage);
|
|
61
|
+
}
|
|
62
|
+
if (response.status === 409) {
|
|
63
|
+
throw new LangSmithConflictError(fullMessage);
|
|
64
|
+
}
|
|
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";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function isConflictingEndpointsError(err) {
|
|
83
|
+
return typeof err === "object" && err !== null && err.code === ERR_CONFLICTING_ENDPOINTS;
|
|
84
|
+
}
|
|
3
85
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
86
|
+
ConflictingEndpointsError,
|
|
87
|
+
LangSmithConflictError,
|
|
88
|
+
LangSmithNotFoundError,
|
|
89
|
+
isConflictingEndpointsError,
|
|
90
|
+
isLangSmithNotFoundError,
|
|
91
|
+
raiseForStatus
|
|
6
92
|
};
|
|
7
93
|
//# sourceMappingURL=index.es187.js.map
|
package/dist/index.es187.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es187.js","sources":["../node_modules/.pnpm/langsmith@0.4.6_openai@6.16.0_zod@4.3.5_/node_modules/langsmith/dist/
|
|
1
|
+
{"version":3,"file":"index.es187.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]}
|