langgraph-ui-components 0.0.1 → 0.0.2
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.es.js +9 -27085
- package/dist/index.es.js.map +1 -1
- package/dist/index.es10.js +21 -0
- package/dist/index.es10.js.map +1 -0
- package/dist/index.es100.js +43 -0
- package/dist/index.es100.js.map +1 -0
- package/dist/index.es101.js +94 -0
- package/dist/index.es101.js.map +1 -0
- package/dist/index.es102.js +5 -0
- package/dist/index.es102.js.map +1 -0
- package/dist/index.es103.js +5 -0
- package/dist/index.es103.js.map +1 -0
- package/dist/index.es104.js +25 -0
- package/dist/index.es104.js.map +1 -0
- package/dist/index.es105.js +5 -0
- package/dist/index.es105.js.map +1 -0
- package/dist/index.es106.js +28 -0
- package/dist/index.es106.js.map +1 -0
- package/dist/index.es107.js +8 -0
- package/dist/index.es107.js.map +1 -0
- package/dist/index.es108.js +3 -0
- package/dist/index.es108.js.map +1 -0
- package/dist/index.es109.js +14 -0
- package/dist/index.es109.js.map +1 -0
- package/dist/index.es11.js +125 -0
- package/dist/index.es11.js.map +1 -0
- package/dist/index.es110.js +504 -0
- package/dist/index.es110.js.map +1 -0
- package/dist/index.es111.js +3 -0
- package/dist/index.es111.js.map +1 -0
- package/dist/index.es112.js +149 -0
- package/dist/index.es112.js.map +1 -0
- package/dist/index.es113.js +889 -0
- package/dist/index.es113.js.map +1 -0
- package/dist/index.es114.js +283 -0
- package/dist/index.es114.js.map +1 -0
- package/dist/index.es115.js +5 -0
- package/dist/index.es115.js.map +1 -0
- package/dist/index.es116.js +447 -0
- package/dist/index.es116.js.map +1 -0
- package/dist/index.es117.js +49 -0
- package/dist/index.es117.js.map +1 -0
- package/dist/index.es118.js +25 -0
- package/dist/index.es118.js.map +1 -0
- package/dist/index.es119.js +82 -0
- package/dist/index.es119.js.map +1 -0
- package/dist/index.es12.js +104 -0
- package/dist/index.es12.js.map +1 -0
- package/dist/index.es120.js +132 -0
- package/dist/index.es120.js.map +1 -0
- package/dist/index.es121.js +52 -0
- package/dist/index.es121.js.map +1 -0
- package/dist/index.es122.js +13 -0
- package/dist/index.es122.js.map +1 -0
- package/dist/index.es123.js +48 -0
- package/dist/index.es123.js.map +1 -0
- package/dist/index.es124.js +102 -0
- package/dist/index.es124.js.map +1 -0
- package/dist/index.es125.js +56 -0
- package/dist/index.es125.js.map +1 -0
- package/dist/index.es126.js +5 -0
- package/dist/index.es126.js.map +1 -0
- package/dist/index.es127.js +140 -0
- package/dist/index.es127.js.map +1 -0
- package/dist/index.es128.js +5 -0
- package/dist/index.es128.js.map +1 -0
- package/dist/index.es129.js +18 -0
- package/dist/index.es129.js.map +1 -0
- package/dist/index.es13.js +37 -0
- package/dist/index.es13.js.map +1 -0
- package/dist/index.es130.js +92 -0
- package/dist/index.es130.js.map +1 -0
- package/dist/index.es131.js +5 -0
- package/dist/index.es131.js.map +1 -0
- package/dist/index.es132.js +59 -0
- package/dist/index.es132.js.map +1 -0
- package/dist/index.es133.js +103 -0
- package/dist/index.es133.js.map +1 -0
- package/dist/index.es134.js +194 -0
- package/dist/index.es134.js.map +1 -0
- package/dist/index.es135.js +113 -0
- package/dist/index.es135.js.map +1 -0
- package/dist/index.es136.js +38 -0
- package/dist/index.es136.js.map +1 -0
- package/dist/index.es137.js +13 -0
- package/dist/index.es137.js.map +1 -0
- package/dist/index.es138.js +14 -0
- package/dist/index.es138.js.map +1 -0
- package/dist/index.es139.js +15 -0
- package/dist/index.es139.js.map +1 -0
- package/dist/index.es14.js +148 -0
- package/dist/index.es14.js.map +1 -0
- package/dist/index.es140.js +94 -0
- package/dist/index.es140.js.map +1 -0
- package/dist/index.es141.js +38 -0
- package/dist/index.es141.js.map +1 -0
- package/dist/index.es142.js +43 -0
- package/dist/index.es142.js.map +1 -0
- package/dist/index.es143.js +27 -0
- package/dist/index.es143.js.map +1 -0
- package/dist/index.es144.js +594 -0
- package/dist/index.es144.js.map +1 -0
- package/dist/index.es145.js +128 -0
- package/dist/index.es145.js.map +1 -0
- package/dist/index.es146.js +7 -0
- package/dist/index.es146.js.map +1 -0
- package/dist/index.es147.js +8 -0
- package/dist/index.es147.js.map +1 -0
- package/dist/index.es148.js +16 -0
- package/dist/index.es148.js.map +1 -0
- package/dist/index.es149.js +9 -0
- package/dist/index.es149.js.map +1 -0
- package/dist/index.es15.js +15 -0
- package/dist/index.es15.js.map +1 -0
- package/dist/index.es150.js +11 -0
- package/dist/index.es150.js.map +1 -0
- package/dist/index.es151.js +28 -0
- package/dist/index.es151.js.map +1 -0
- package/dist/index.es152.js +15 -0
- package/dist/index.es152.js.map +1 -0
- package/dist/index.es153.js +57 -0
- package/dist/index.es153.js.map +1 -0
- package/dist/index.es154.js +67 -0
- package/dist/index.es154.js.map +1 -0
- package/dist/index.es155.js +25 -0
- package/dist/index.es155.js.map +1 -0
- package/dist/index.es156.js +9 -0
- package/dist/index.es156.js.map +1 -0
- package/dist/index.es157.js +352 -0
- package/dist/index.es157.js.map +1 -0
- package/dist/index.es158.js +10 -0
- package/dist/index.es158.js.map +1 -0
- package/dist/index.es159.js +106 -0
- package/dist/index.es159.js.map +1 -0
- package/dist/index.es16.js +8 -0
- package/dist/index.es16.js.map +1 -0
- package/dist/index.es160.js +122 -0
- package/dist/index.es160.js.map +1 -0
- package/dist/index.es161.js +139 -0
- package/dist/index.es161.js.map +1 -0
- package/dist/index.es162.js +118 -0
- package/dist/index.es162.js.map +1 -0
- package/dist/index.es163.js +9 -0
- package/dist/index.es163.js.map +1 -0
- package/dist/index.es164.js +145 -0
- package/dist/index.es164.js.map +1 -0
- package/dist/index.es165.js +5 -0
- package/dist/index.es165.js.map +1 -0
- package/dist/index.es166.js +3685 -0
- package/dist/index.es166.js.map +1 -0
- package/dist/index.es167.js +345 -0
- package/dist/index.es167.js.map +1 -0
- package/dist/index.es168.js +112 -0
- package/dist/index.es168.js.map +1 -0
- package/dist/index.es169.js +136 -0
- package/dist/index.es169.js.map +1 -0
- package/dist/index.es17.js +36 -0
- package/dist/index.es17.js.map +1 -0
- package/dist/index.es170.js +18 -0
- package/dist/index.es170.js.map +1 -0
- package/dist/index.es171.js +155 -0
- package/dist/index.es171.js.map +1 -0
- package/dist/index.es172.js +18 -0
- package/dist/index.es172.js.map +1 -0
- package/dist/index.es173.js +11 -0
- package/dist/index.es173.js.map +1 -0
- package/dist/index.es174.js +24 -0
- package/dist/index.es174.js.map +1 -0
- package/dist/index.es175.js +93 -0
- package/dist/index.es175.js.map +1 -0
- package/dist/index.es176.js +27 -0
- package/dist/index.es176.js.map +1 -0
- package/dist/index.es177.js +9 -0
- package/dist/index.es177.js.map +1 -0
- package/dist/index.es178.js +7 -0
- package/dist/index.es178.js.map +1 -0
- package/dist/index.es179.js +21 -0
- package/dist/index.es179.js.map +1 -0
- package/dist/index.es18.js +126 -0
- package/dist/index.es18.js.map +1 -0
- package/dist/index.es180.js +35 -0
- package/dist/index.es180.js.map +1 -0
- package/dist/index.es181.js +9 -0
- package/dist/index.es181.js.map +1 -0
- package/dist/index.es182.js +109 -0
- package/dist/index.es182.js.map +1 -0
- package/dist/index.es183.js +16 -0
- package/dist/index.es183.js.map +1 -0
- package/dist/index.es184.js +21 -0
- package/dist/index.es184.js.map +1 -0
- package/dist/index.es185.js +34 -0
- package/dist/index.es185.js.map +1 -0
- package/dist/index.es186.js +7 -0
- package/dist/index.es186.js.map +1 -0
- package/dist/index.es187.js +8 -0
- package/dist/index.es187.js.map +1 -0
- package/dist/index.es188.js +8 -0
- package/dist/index.es188.js.map +1 -0
- package/dist/index.es189.js +40 -0
- package/dist/index.es189.js.map +1 -0
- package/dist/index.es19.js +41 -0
- package/dist/index.es19.js.map +1 -0
- package/dist/index.es190.js +11 -0
- package/dist/index.es190.js.map +1 -0
- package/dist/index.es191.js +9 -0
- package/dist/index.es191.js.map +1 -0
- package/dist/index.es192.js +10 -0
- package/dist/index.es192.js.map +1 -0
- package/dist/index.es193.js +45 -0
- package/dist/index.es193.js.map +1 -0
- package/dist/index.es194.js +16 -0
- package/dist/index.es194.js.map +1 -0
- package/dist/index.es195.js +245 -0
- package/dist/index.es195.js.map +1 -0
- package/dist/index.es196.js +54 -0
- package/dist/index.es196.js.map +1 -0
- package/dist/index.es197.js +38 -0
- package/dist/index.es197.js.map +1 -0
- package/dist/index.es198.js +16 -0
- package/dist/index.es198.js.map +1 -0
- package/dist/index.es199.js +11 -0
- package/dist/index.es199.js.map +1 -0
- package/dist/index.es2.js +142 -0
- package/dist/index.es2.js.map +1 -0
- package/dist/index.es20.js +46 -0
- package/dist/index.es20.js.map +1 -0
- package/dist/index.es200.js +10 -0
- package/dist/index.es200.js.map +1 -0
- package/dist/index.es201.js +68 -0
- package/dist/index.es201.js.map +1 -0
- package/dist/index.es202.js +44 -0
- package/dist/index.es202.js.map +1 -0
- package/dist/index.es203.js +35 -0
- package/dist/index.es203.js.map +1 -0
- package/dist/index.es204.js +65 -0
- package/dist/index.es204.js.map +1 -0
- package/dist/index.es205.js +18 -0
- package/dist/index.es205.js.map +1 -0
- package/dist/index.es206.js +26 -0
- package/dist/index.es206.js.map +1 -0
- package/dist/index.es207.js +8 -0
- package/dist/index.es207.js.map +1 -0
- package/dist/index.es208.js +20 -0
- package/dist/index.es208.js.map +1 -0
- package/dist/index.es209.js +36 -0
- package/dist/index.es209.js.map +1 -0
- package/dist/index.es21.js +21 -0
- package/dist/index.es21.js.map +1 -0
- package/dist/index.es210.js +8 -0
- package/dist/index.es210.js.map +1 -0
- package/dist/index.es211.js +8 -0
- package/dist/index.es211.js.map +1 -0
- package/dist/index.es212.js +8 -0
- package/dist/index.es212.js.map +1 -0
- package/dist/index.es213.js +11 -0
- package/dist/index.es213.js.map +1 -0
- package/dist/index.es214.js +95 -0
- package/dist/index.es214.js.map +1 -0
- package/dist/index.es215.js +21 -0
- package/dist/index.es215.js.map +1 -0
- package/dist/index.es216.js +765 -0
- package/dist/index.es216.js.map +1 -0
- package/dist/index.es217.js +69 -0
- package/dist/index.es217.js.map +1 -0
- package/dist/index.es218.js +177 -0
- package/dist/index.es218.js.map +1 -0
- package/dist/index.es219.js +41 -0
- package/dist/index.es219.js.map +1 -0
- package/dist/index.es22.js +76 -0
- package/dist/index.es22.js.map +1 -0
- package/dist/index.es220.js +140 -0
- package/dist/index.es220.js.map +1 -0
- package/dist/index.es221.js +96 -0
- package/dist/index.es221.js.map +1 -0
- package/dist/index.es222.js +36 -0
- package/dist/index.es222.js.map +1 -0
- package/dist/index.es223.js +288 -0
- package/dist/index.es223.js.map +1 -0
- package/dist/index.es224.js +29 -0
- package/dist/index.es224.js.map +1 -0
- package/dist/index.es225.js +27 -0
- package/dist/index.es225.js.map +1 -0
- package/dist/index.es226.js +18 -0
- package/dist/index.es226.js.map +1 -0
- package/dist/index.es227.js +18 -0
- package/dist/index.es227.js.map +1 -0
- package/dist/index.es228.js +29 -0
- package/dist/index.es228.js.map +1 -0
- package/dist/index.es229.js +49 -0
- package/dist/index.es229.js.map +1 -0
- package/dist/index.es23.js +34 -0
- package/dist/index.es23.js.map +1 -0
- package/dist/index.es230.js +15 -0
- package/dist/index.es230.js.map +1 -0
- package/dist/index.es231.js +15 -0
- package/dist/index.es231.js.map +1 -0
- package/dist/index.es232.js +15 -0
- package/dist/index.es232.js.map +1 -0
- package/dist/index.es233.js +18 -0
- package/dist/index.es233.js.map +1 -0
- package/dist/index.es234.js +15 -0
- package/dist/index.es234.js.map +1 -0
- package/dist/index.es235.js +15 -0
- package/dist/index.es235.js.map +1 -0
- package/dist/index.es236.js +15 -0
- package/dist/index.es236.js.map +1 -0
- package/dist/index.es237.js +19 -0
- package/dist/index.es237.js.map +1 -0
- package/dist/index.es238.js +15 -0
- package/dist/index.es238.js.map +1 -0
- package/dist/index.es239.js +15 -0
- package/dist/index.es239.js.map +1 -0
- package/dist/index.es24.js +97 -0
- package/dist/index.es24.js.map +1 -0
- package/dist/index.es240.js +15 -0
- package/dist/index.es240.js.map +1 -0
- package/dist/index.es241.js +15 -0
- package/dist/index.es241.js.map +1 -0
- package/dist/index.es242.js +15 -0
- package/dist/index.es242.js.map +1 -0
- package/dist/index.es243.js +15 -0
- package/dist/index.es243.js.map +1 -0
- package/dist/index.es244.js +15 -0
- package/dist/index.es244.js.map +1 -0
- package/dist/index.es245.js +15 -0
- package/dist/index.es245.js.map +1 -0
- package/dist/index.es246.js +60 -0
- package/dist/index.es246.js.map +1 -0
- package/dist/index.es247.js +53 -0
- package/dist/index.es247.js.map +1 -0
- package/dist/index.es248.js +123 -0
- package/dist/index.es248.js.map +1 -0
- package/dist/index.es249.js +388 -0
- package/dist/index.es249.js.map +1 -0
- package/dist/index.es25.js +74 -0
- package/dist/index.es25.js.map +1 -0
- package/dist/index.es250.js +22 -0
- package/dist/index.es250.js.map +1 -0
- package/dist/index.es251.js +15 -0
- package/dist/index.es251.js.map +1 -0
- package/dist/index.es252.js +35 -0
- package/dist/index.es252.js.map +1 -0
- package/dist/index.es253.js +35 -0
- package/dist/index.es253.js.map +1 -0
- package/dist/index.es254.js +66 -0
- package/dist/index.es254.js.map +1 -0
- package/dist/index.es255.js +21 -0
- package/dist/index.es255.js.map +1 -0
- package/dist/index.es256.js +81 -0
- package/dist/index.es256.js.map +1 -0
- package/dist/index.es257.js +15 -0
- package/dist/index.es257.js.map +1 -0
- package/dist/index.es258.js +15 -0
- package/dist/index.es258.js.map +1 -0
- package/dist/index.es259.js +19 -0
- package/dist/index.es259.js.map +1 -0
- package/dist/index.es26.js +180 -0
- package/dist/index.es26.js.map +1 -0
- package/dist/index.es260.js +56 -0
- package/dist/index.es260.js.map +1 -0
- package/dist/index.es261.js +170 -0
- package/dist/index.es261.js.map +1 -0
- package/dist/index.es262.js +5 -0
- package/dist/index.es262.js.map +1 -0
- package/dist/index.es263.js +14 -0
- package/dist/index.es263.js.map +1 -0
- package/dist/index.es264.js +23 -0
- package/dist/index.es264.js.map +1 -0
- package/dist/index.es265.js +42 -0
- package/dist/index.es265.js.map +1 -0
- package/dist/index.es27.js +16 -0
- package/dist/index.es27.js.map +1 -0
- package/dist/index.es28.js +441 -0
- package/dist/index.es28.js.map +1 -0
- package/dist/index.es29.js +122 -0
- package/dist/index.es29.js.map +1 -0
- package/dist/index.es3.js +30 -0
- package/dist/index.es3.js.map +1 -0
- package/dist/index.es30.js +77 -0
- package/dist/index.es30.js.map +1 -0
- package/dist/index.es31.js +15 -0
- package/dist/index.es31.js.map +1 -0
- package/dist/index.es32.js +262 -0
- package/dist/index.es32.js.map +1 -0
- package/dist/index.es33.js +47 -0
- package/dist/index.es33.js.map +1 -0
- package/dist/index.es34.js +215 -0
- package/dist/index.es34.js.map +1 -0
- package/dist/index.es35.js +71 -0
- package/dist/index.es35.js.map +1 -0
- package/dist/index.es36.js +146 -0
- package/dist/index.es36.js.map +1 -0
- package/dist/index.es37.js +28 -0
- package/dist/index.es37.js.map +1 -0
- package/dist/index.es38.js +228 -0
- package/dist/index.es38.js.map +1 -0
- package/dist/index.es39.js +13 -0
- package/dist/index.es39.js.map +1 -0
- package/dist/index.es4.js +30 -0
- package/dist/index.es4.js.map +1 -0
- package/dist/index.es40.js +1203 -0
- package/dist/index.es40.js.map +1 -0
- package/dist/index.es41.js +12 -0
- package/dist/index.es41.js.map +1 -0
- package/dist/index.es42.js +151 -0
- package/dist/index.es42.js.map +1 -0
- package/dist/index.es43.js +18 -0
- package/dist/index.es43.js.map +1 -0
- package/dist/index.es44.js +11 -0
- package/dist/index.es44.js.map +1 -0
- package/dist/index.es45.js +97 -0
- package/dist/index.es45.js.map +1 -0
- package/dist/index.es46.js +7 -0
- package/dist/index.es46.js.map +1 -0
- package/dist/index.es47.js +39 -0
- package/dist/index.es47.js.map +1 -0
- package/dist/index.es48.js +75 -0
- package/dist/index.es48.js.map +1 -0
- package/dist/index.es49.js +41 -0
- package/dist/index.es49.js.map +1 -0
- package/dist/index.es5.js +26 -0
- package/dist/index.es5.js.map +1 -0
- package/dist/index.es50.js +309 -0
- package/dist/index.es50.js.map +1 -0
- package/dist/index.es51.js +12 -0
- package/dist/index.es51.js.map +1 -0
- package/dist/index.es52.js +88 -0
- package/dist/index.es52.js.map +1 -0
- package/dist/index.es53.js +11 -0
- package/dist/index.es53.js.map +1 -0
- package/dist/index.es54.js +18 -0
- package/dist/index.es54.js.map +1 -0
- package/dist/index.es55.js +144 -0
- package/dist/index.es55.js.map +1 -0
- package/dist/index.es56.js +303 -0
- package/dist/index.es56.js.map +1 -0
- package/dist/index.es57.js +69 -0
- package/dist/index.es57.js.map +1 -0
- package/dist/index.es58.js +216 -0
- package/dist/index.es58.js.map +1 -0
- package/dist/index.es59.js +37 -0
- package/dist/index.es59.js.map +1 -0
- package/dist/index.es6.js +122 -0
- package/dist/index.es6.js.map +1 -0
- package/dist/index.es60.js +12 -0
- package/dist/index.es60.js.map +1 -0
- package/dist/index.es61.js +15 -0
- package/dist/index.es61.js.map +1 -0
- package/dist/index.es62.js +190 -0
- package/dist/index.es62.js.map +1 -0
- package/dist/index.es63.js +19 -0
- package/dist/index.es63.js.map +1 -0
- package/dist/index.es64.js +1403 -0
- package/dist/index.es64.js.map +1 -0
- package/dist/index.es65.js +12 -0
- package/dist/index.es65.js.map +1 -0
- package/dist/index.es66.js +11 -0
- package/dist/index.es66.js.map +1 -0
- package/dist/index.es67.js +9 -0
- package/dist/index.es67.js.map +1 -0
- package/dist/index.es68.js +8 -0
- package/dist/index.es68.js.map +1 -0
- package/dist/index.es69.js +8 -0
- package/dist/index.es69.js.map +1 -0
- package/dist/index.es7.js +19 -0
- package/dist/index.es7.js.map +1 -0
- package/dist/index.es70.js +15 -0
- package/dist/index.es70.js.map +1 -0
- package/dist/index.es71.js +26 -0
- package/dist/index.es71.js.map +1 -0
- package/dist/index.es72.js +37 -0
- package/dist/index.es72.js.map +1 -0
- package/dist/index.es73.js +235 -0
- package/dist/index.es73.js.map +1 -0
- package/dist/index.es74.js +71 -0
- package/dist/index.es74.js.map +1 -0
- package/dist/index.es75.js +72 -0
- package/dist/index.es75.js.map +1 -0
- package/dist/index.es76.js +60 -0
- package/dist/index.es76.js.map +1 -0
- package/dist/index.es77.js +16 -0
- package/dist/index.es77.js.map +1 -0
- package/dist/index.es78.js +140 -0
- package/dist/index.es78.js.map +1 -0
- package/dist/index.es79.js +24 -0
- package/dist/index.es79.js.map +1 -0
- package/dist/index.es8.js +61 -0
- package/dist/index.es8.js.map +1 -0
- package/dist/index.es80.js +185 -0
- package/dist/index.es80.js.map +1 -0
- package/dist/index.es81.js +244 -0
- package/dist/index.es81.js.map +1 -0
- package/dist/index.es82.js +358 -0
- package/dist/index.es82.js.map +1 -0
- package/dist/index.es83.js +140 -0
- package/dist/index.es83.js.map +1 -0
- package/dist/index.es84.js +73 -0
- package/dist/index.es84.js.map +1 -0
- package/dist/index.es85.js +40 -0
- package/dist/index.es85.js.map +1 -0
- package/dist/index.es86.js +40 -0
- package/dist/index.es86.js.map +1 -0
- package/dist/index.es87.js +169 -0
- package/dist/index.es87.js.map +1 -0
- package/dist/index.es88.js +206 -0
- package/dist/index.es88.js.map +1 -0
- package/dist/index.es89.js +17 -0
- package/dist/index.es89.js.map +1 -0
- package/dist/index.es9.js +109 -0
- package/dist/index.es9.js.map +1 -0
- package/dist/index.es90.js +33 -0
- package/dist/index.es90.js.map +1 -0
- package/dist/index.es91.js +37 -0
- package/dist/index.es91.js.map +1 -0
- package/dist/index.es92.js +3160 -0
- package/dist/index.es92.js.map +1 -0
- package/dist/index.es93.js +84 -0
- package/dist/index.es93.js.map +1 -0
- package/dist/index.es94.js +5 -0
- package/dist/index.es94.js.map +1 -0
- package/dist/index.es95.js +13 -0
- package/dist/index.es95.js.map +1 -0
- package/dist/index.es96.js +278 -0
- package/dist/index.es96.js.map +1 -0
- package/dist/index.es97.js +5 -0
- package/dist/index.es97.js.map +1 -0
- package/dist/index.es98.js +167 -0
- package/dist/index.es98.js.map +1 -0
- package/dist/index.es99.js +54 -0
- package/dist/index.es99.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +12 -10
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { LANGSMITH_RUN_TYPE, GEN_AI_OPERATION_NAME, LANGSMITH_NAME, LANGSMITH_SESSION_ID, LANGSMITH_SESSION_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, GEN_AI_USAGE_TOTAL_TOKENS, LANGSMITH_METADATA, LANGSMITH_TAGS, GEN_AI_SERIALIZED_NAME, GEN_AI_SERIALIZED_SIGNATURE, GEN_AI_SERIALIZED_DOC, GEN_AI_SYSTEM, GEN_AI_REQUEST_MAX_TOKENS, GEN_AI_REQUEST_TEMPERATURE, GEN_AI_REQUEST_TOP_P, GEN_AI_REQUEST_FREQUENCY_PENALTY, GEN_AI_REQUEST_PRESENCE_PENALTY, LANGSMITH_REQUEST_STREAMING, LANGSMITH_REQUEST_HEADERS, GEN_AI_REQUEST_EXTRA_QUERY, GEN_AI_REQUEST_EXTRA_BODY, GENAI_PROMPT, GEN_AI_RESPONSE_MODEL, GEN_AI_RESPONSE_ID, GEN_AI_RESPONSE_FINISH_REASONS, GEN_AI_RESPONSE_SERVICE_TIER, GEN_AI_RESPONSE_SYSTEM_FINGERPRINT, GEN_AI_USAGE_INPUT_TOKEN_DETAILS, GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS, GENAI_COMPLETION } from "./index.es217.js";
|
|
2
|
+
import { getOTELTrace } from "./index.es168.js";
|
|
3
|
+
const WELL_KNOWN_OPERATION_NAMES = {
|
|
4
|
+
llm: "chat",
|
|
5
|
+
tool: "execute_tool",
|
|
6
|
+
retriever: "embeddings",
|
|
7
|
+
embedding: "embeddings",
|
|
8
|
+
prompt: "chat"
|
|
9
|
+
};
|
|
10
|
+
function getOperationName(runType) {
|
|
11
|
+
return WELL_KNOWN_OPERATION_NAMES[runType] || runType;
|
|
12
|
+
}
|
|
13
|
+
class LangSmithToOTELTranslator {
|
|
14
|
+
constructor() {
|
|
15
|
+
Object.defineProperty(this, "spans", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true,
|
|
19
|
+
value: /* @__PURE__ */ new Map()
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
exportBatch(operations, otelContextMap) {
|
|
23
|
+
for (const op of operations) {
|
|
24
|
+
try {
|
|
25
|
+
if (!op.run) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (op.operation === "post") {
|
|
29
|
+
const span = this.createSpanForRun(op, op.run, otelContextMap.get(op.id));
|
|
30
|
+
if (span && !op.run.end_time) {
|
|
31
|
+
this.spans.set(op.id, span);
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
this.updateSpanForRun(op, op.run);
|
|
35
|
+
}
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.error(`Error processing operation ${op.id}:`, e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
createSpanForRun(op, runInfo, otelContext) {
|
|
42
|
+
const activeSpan = otelContext && getOTELTrace().getSpan(otelContext);
|
|
43
|
+
if (!activeSpan) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
return this.finishSpanSetup(activeSpan, runInfo, op);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
console.error(`Failed to create span for run ${op.id}:`, e);
|
|
50
|
+
return void 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
finishSpanSetup(span, runInfo, op) {
|
|
54
|
+
this.setSpanAttributes(span, runInfo, op);
|
|
55
|
+
if (runInfo.error) {
|
|
56
|
+
span.setStatus({ code: 2 });
|
|
57
|
+
span.recordException(new Error(runInfo.error));
|
|
58
|
+
} else {
|
|
59
|
+
span.setStatus({ code: 1 });
|
|
60
|
+
}
|
|
61
|
+
if (runInfo.end_time) {
|
|
62
|
+
span.end(new Date(runInfo.end_time));
|
|
63
|
+
}
|
|
64
|
+
return span;
|
|
65
|
+
}
|
|
66
|
+
updateSpanForRun(op, runInfo) {
|
|
67
|
+
try {
|
|
68
|
+
const span = this.spans.get(op.id);
|
|
69
|
+
if (!span) {
|
|
70
|
+
console.debug(`No span found for run ${op.id} during update`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.setSpanAttributes(span, runInfo, op);
|
|
74
|
+
if (runInfo.error) {
|
|
75
|
+
span.setStatus({ code: 2 });
|
|
76
|
+
span.recordException(new Error(runInfo.error));
|
|
77
|
+
} else {
|
|
78
|
+
span.setStatus({ code: 1 });
|
|
79
|
+
}
|
|
80
|
+
const endTime = runInfo.end_time;
|
|
81
|
+
if (endTime) {
|
|
82
|
+
span.end(new Date(endTime));
|
|
83
|
+
this.spans.delete(op.id);
|
|
84
|
+
}
|
|
85
|
+
} catch (e) {
|
|
86
|
+
console.error(`Failed to update span for run ${op.id}:`, e);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
extractModelName(runInfo) {
|
|
90
|
+
if (runInfo.extra?.metadata) {
|
|
91
|
+
const metadata = runInfo.extra.metadata;
|
|
92
|
+
if (metadata.ls_model_name) {
|
|
93
|
+
return metadata.ls_model_name;
|
|
94
|
+
}
|
|
95
|
+
if (metadata.invocation_params) {
|
|
96
|
+
const invocationParams = metadata.invocation_params;
|
|
97
|
+
if (invocationParams.model) {
|
|
98
|
+
return invocationParams.model;
|
|
99
|
+
} else if (invocationParams.model_name) {
|
|
100
|
+
return invocationParams.model_name;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
setSpanAttributes(span, runInfo, op) {
|
|
107
|
+
if ("run_type" in runInfo && runInfo.run_type) {
|
|
108
|
+
span.setAttribute(LANGSMITH_RUN_TYPE, runInfo.run_type);
|
|
109
|
+
const operationName = getOperationName(runInfo.run_type || "chain");
|
|
110
|
+
span.setAttribute(GEN_AI_OPERATION_NAME, operationName);
|
|
111
|
+
}
|
|
112
|
+
if ("name" in runInfo && runInfo.name) {
|
|
113
|
+
span.setAttribute(LANGSMITH_NAME, runInfo.name);
|
|
114
|
+
}
|
|
115
|
+
if ("session_id" in runInfo && runInfo.session_id) {
|
|
116
|
+
span.setAttribute(LANGSMITH_SESSION_ID, runInfo.session_id);
|
|
117
|
+
}
|
|
118
|
+
if ("session_name" in runInfo && runInfo.session_name) {
|
|
119
|
+
span.setAttribute(LANGSMITH_SESSION_NAME, runInfo.session_name);
|
|
120
|
+
}
|
|
121
|
+
this.setGenAiSystem(span, runInfo);
|
|
122
|
+
const modelName = this.extractModelName(runInfo);
|
|
123
|
+
if (modelName) {
|
|
124
|
+
span.setAttribute(GEN_AI_REQUEST_MODEL, modelName);
|
|
125
|
+
}
|
|
126
|
+
if ("prompt_tokens" in runInfo && typeof runInfo.prompt_tokens === "number") {
|
|
127
|
+
span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, runInfo.prompt_tokens);
|
|
128
|
+
}
|
|
129
|
+
if ("completion_tokens" in runInfo && typeof runInfo.completion_tokens === "number") {
|
|
130
|
+
span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, runInfo.completion_tokens);
|
|
131
|
+
}
|
|
132
|
+
if ("total_tokens" in runInfo && typeof runInfo.total_tokens === "number") {
|
|
133
|
+
span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS, runInfo.total_tokens);
|
|
134
|
+
}
|
|
135
|
+
this.setInvocationParameters(span, runInfo);
|
|
136
|
+
const metadata = runInfo.extra?.metadata || {};
|
|
137
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
138
|
+
if (value !== null && value !== void 0) {
|
|
139
|
+
span.setAttribute(`${LANGSMITH_METADATA}.${key}`, String(value));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const tags = runInfo.tags;
|
|
143
|
+
if (tags && Array.isArray(tags)) {
|
|
144
|
+
span.setAttribute(LANGSMITH_TAGS, tags.join(", "));
|
|
145
|
+
} else if (tags) {
|
|
146
|
+
span.setAttribute(LANGSMITH_TAGS, String(tags));
|
|
147
|
+
}
|
|
148
|
+
if ("serialized" in runInfo && typeof runInfo.serialized === "object") {
|
|
149
|
+
const serialized = runInfo.serialized;
|
|
150
|
+
if (serialized.name) {
|
|
151
|
+
span.setAttribute(GEN_AI_SERIALIZED_NAME, String(serialized.name));
|
|
152
|
+
}
|
|
153
|
+
if (serialized.signature) {
|
|
154
|
+
span.setAttribute(GEN_AI_SERIALIZED_SIGNATURE, String(serialized.signature));
|
|
155
|
+
}
|
|
156
|
+
if (serialized.doc) {
|
|
157
|
+
span.setAttribute(GEN_AI_SERIALIZED_DOC, String(serialized.doc));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
this.setIOAttributes(span, op);
|
|
161
|
+
}
|
|
162
|
+
setGenAiSystem(span, runInfo) {
|
|
163
|
+
let system = "langchain";
|
|
164
|
+
const modelName = this.extractModelName(runInfo);
|
|
165
|
+
if (modelName) {
|
|
166
|
+
const modelLower = modelName.toLowerCase();
|
|
167
|
+
if (modelLower.includes("anthropic") || modelLower.startsWith("claude")) {
|
|
168
|
+
system = "anthropic";
|
|
169
|
+
} else if (modelLower.includes("bedrock")) {
|
|
170
|
+
system = "aws.bedrock";
|
|
171
|
+
} else if (modelLower.includes("azure") && modelLower.includes("openai")) {
|
|
172
|
+
system = "az.ai.openai";
|
|
173
|
+
} else if (modelLower.includes("azure") && modelLower.includes("inference")) {
|
|
174
|
+
system = "az.ai.inference";
|
|
175
|
+
} else if (modelLower.includes("cohere")) {
|
|
176
|
+
system = "cohere";
|
|
177
|
+
} else if (modelLower.includes("deepseek")) {
|
|
178
|
+
system = "deepseek";
|
|
179
|
+
} else if (modelLower.includes("gemini")) {
|
|
180
|
+
system = "gemini";
|
|
181
|
+
} else if (modelLower.includes("groq")) {
|
|
182
|
+
system = "groq";
|
|
183
|
+
} else if (modelLower.includes("watson") || modelLower.includes("ibm")) {
|
|
184
|
+
system = "ibm.watsonx.ai";
|
|
185
|
+
} else if (modelLower.includes("mistral")) {
|
|
186
|
+
system = "mistral_ai";
|
|
187
|
+
} else if (modelLower.includes("gpt") || modelLower.includes("openai")) {
|
|
188
|
+
system = "openai";
|
|
189
|
+
} else if (modelLower.includes("perplexity") || modelLower.includes("sonar")) {
|
|
190
|
+
system = "perplexity";
|
|
191
|
+
} else if (modelLower.includes("vertex")) {
|
|
192
|
+
system = "vertex_ai";
|
|
193
|
+
} else if (modelLower.includes("xai") || modelLower.includes("grok")) {
|
|
194
|
+
system = "xai";
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
span.setAttribute(GEN_AI_SYSTEM, system);
|
|
198
|
+
}
|
|
199
|
+
setInvocationParameters(span, runInfo) {
|
|
200
|
+
if (!runInfo.extra?.metadata?.invocation_params) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const invocationParams = runInfo.extra.metadata.invocation_params;
|
|
204
|
+
if (invocationParams.max_tokens !== void 0) {
|
|
205
|
+
span.setAttribute(GEN_AI_REQUEST_MAX_TOKENS, invocationParams.max_tokens);
|
|
206
|
+
}
|
|
207
|
+
if (invocationParams.temperature !== void 0) {
|
|
208
|
+
span.setAttribute(GEN_AI_REQUEST_TEMPERATURE, invocationParams.temperature);
|
|
209
|
+
}
|
|
210
|
+
if (invocationParams.top_p !== void 0) {
|
|
211
|
+
span.setAttribute(GEN_AI_REQUEST_TOP_P, invocationParams.top_p);
|
|
212
|
+
}
|
|
213
|
+
if (invocationParams.frequency_penalty !== void 0) {
|
|
214
|
+
span.setAttribute(GEN_AI_REQUEST_FREQUENCY_PENALTY, invocationParams.frequency_penalty);
|
|
215
|
+
}
|
|
216
|
+
if (invocationParams.presence_penalty !== void 0) {
|
|
217
|
+
span.setAttribute(GEN_AI_REQUEST_PRESENCE_PENALTY, invocationParams.presence_penalty);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
setIOAttributes(span, op) {
|
|
221
|
+
if (op.run.inputs) {
|
|
222
|
+
try {
|
|
223
|
+
const inputs = op.run.inputs;
|
|
224
|
+
if (typeof inputs === "object" && inputs !== null) {
|
|
225
|
+
if (inputs.model && Array.isArray(inputs.messages)) {
|
|
226
|
+
span.setAttribute(GEN_AI_REQUEST_MODEL, inputs.model);
|
|
227
|
+
}
|
|
228
|
+
if (inputs.stream !== void 0) {
|
|
229
|
+
span.setAttribute(LANGSMITH_REQUEST_STREAMING, inputs.stream);
|
|
230
|
+
}
|
|
231
|
+
if (inputs.extra_headers) {
|
|
232
|
+
span.setAttribute(LANGSMITH_REQUEST_HEADERS, JSON.stringify(inputs.extra_headers));
|
|
233
|
+
}
|
|
234
|
+
if (inputs.extra_query) {
|
|
235
|
+
span.setAttribute(GEN_AI_REQUEST_EXTRA_QUERY, JSON.stringify(inputs.extra_query));
|
|
236
|
+
}
|
|
237
|
+
if (inputs.extra_body) {
|
|
238
|
+
span.setAttribute(GEN_AI_REQUEST_EXTRA_BODY, JSON.stringify(inputs.extra_body));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
span.setAttribute(GENAI_PROMPT, JSON.stringify(inputs));
|
|
242
|
+
} catch (e) {
|
|
243
|
+
console.debug(`Failed to process inputs for run ${op.id}`, e);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (op.run.outputs) {
|
|
247
|
+
try {
|
|
248
|
+
const outputs = op.run.outputs;
|
|
249
|
+
const tokenUsage = this.getUnifiedRunTokens(outputs);
|
|
250
|
+
if (tokenUsage) {
|
|
251
|
+
span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, tokenUsage[0]);
|
|
252
|
+
span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, tokenUsage[1]);
|
|
253
|
+
span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS, tokenUsage[0] + tokenUsage[1]);
|
|
254
|
+
}
|
|
255
|
+
if (outputs && typeof outputs === "object") {
|
|
256
|
+
if (outputs.model) {
|
|
257
|
+
span.setAttribute(GEN_AI_RESPONSE_MODEL, String(outputs.model));
|
|
258
|
+
}
|
|
259
|
+
if (outputs.id) {
|
|
260
|
+
span.setAttribute(GEN_AI_RESPONSE_ID, outputs.id);
|
|
261
|
+
}
|
|
262
|
+
if (outputs.choices && Array.isArray(outputs.choices)) {
|
|
263
|
+
const finishReasons = outputs.choices.map((choice) => choice.finish_reason).filter((reason) => reason).map(String);
|
|
264
|
+
if (finishReasons.length > 0) {
|
|
265
|
+
span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS, finishReasons.join(", "));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (outputs.service_tier) {
|
|
269
|
+
span.setAttribute(GEN_AI_RESPONSE_SERVICE_TIER, outputs.service_tier);
|
|
270
|
+
}
|
|
271
|
+
if (outputs.system_fingerprint) {
|
|
272
|
+
span.setAttribute(GEN_AI_RESPONSE_SYSTEM_FINGERPRINT, outputs.system_fingerprint);
|
|
273
|
+
}
|
|
274
|
+
if (outputs.usage_metadata && typeof outputs.usage_metadata === "object") {
|
|
275
|
+
const usageMetadata = outputs.usage_metadata;
|
|
276
|
+
if (usageMetadata.input_token_details) {
|
|
277
|
+
span.setAttribute(GEN_AI_USAGE_INPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.input_token_details));
|
|
278
|
+
}
|
|
279
|
+
if (usageMetadata.output_token_details) {
|
|
280
|
+
span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.output_token_details));
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
span.setAttribute(GENAI_COMPLETION, JSON.stringify(outputs));
|
|
285
|
+
} catch (e) {
|
|
286
|
+
console.debug(`Failed to process outputs for run ${op.id}`, e);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
291
|
+
getUnifiedRunTokens(outputs) {
|
|
292
|
+
if (!outputs) {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
let tokenUsage = this.extractUnifiedRunTokens(outputs.usage_metadata);
|
|
296
|
+
if (tokenUsage) {
|
|
297
|
+
return tokenUsage;
|
|
298
|
+
}
|
|
299
|
+
const keys = Object.keys(outputs);
|
|
300
|
+
for (const key of keys) {
|
|
301
|
+
const haystack = outputs[key];
|
|
302
|
+
if (!haystack || typeof haystack !== "object") {
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
tokenUsage = this.extractUnifiedRunTokens(haystack.usage_metadata);
|
|
306
|
+
if (tokenUsage) {
|
|
307
|
+
return tokenUsage;
|
|
308
|
+
}
|
|
309
|
+
if (haystack.lc === 1 && haystack.kwargs && typeof haystack.kwargs === "object") {
|
|
310
|
+
tokenUsage = this.extractUnifiedRunTokens(haystack.kwargs.usage_metadata);
|
|
311
|
+
if (tokenUsage) {
|
|
312
|
+
return tokenUsage;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const generations = outputs.generations || [];
|
|
317
|
+
if (!Array.isArray(generations)) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
const flatGenerations = Array.isArray(generations[0]) ? generations.flat() : generations;
|
|
321
|
+
for (const generation of flatGenerations) {
|
|
322
|
+
if (typeof generation === "object" && generation.message && typeof generation.message === "object" && generation.message.kwargs && typeof generation.message.kwargs === "object") {
|
|
323
|
+
tokenUsage = this.extractUnifiedRunTokens(generation.message.kwargs.usage_metadata);
|
|
324
|
+
if (tokenUsage) {
|
|
325
|
+
return tokenUsage;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
332
|
+
extractUnifiedRunTokens(outputs) {
|
|
333
|
+
if (!outputs || typeof outputs !== "object") {
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
if (typeof outputs.input_tokens !== "number" || typeof outputs.output_tokens !== "number") {
|
|
337
|
+
return null;
|
|
338
|
+
}
|
|
339
|
+
return [outputs.input_tokens, outputs.output_tokens];
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
export {
|
|
343
|
+
LangSmithToOTELTranslator
|
|
344
|
+
};
|
|
345
|
+
//# sourceMappingURL=index.es167.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es167.js","sources":["../node_modules/.pnpm/langsmith@0.4.4_openai@6.15.0_zod@4.3.5_/node_modules/langsmith/dist/experimental/otel/translator.js"],"sourcesContent":["import * as constants from \"./constants.js\";\nimport { getOTELTrace } from \"../../singletons/otel.js\";\nconst WELL_KNOWN_OPERATION_NAMES = {\n llm: \"chat\",\n tool: \"execute_tool\",\n retriever: \"embeddings\",\n embedding: \"embeddings\",\n prompt: \"chat\",\n};\nfunction getOperationName(runType) {\n return WELL_KNOWN_OPERATION_NAMES[runType] || runType;\n}\nexport class LangSmithToOTELTranslator {\n constructor() {\n Object.defineProperty(this, \"spans\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n }\n exportBatch(operations, otelContextMap) {\n for (const op of operations) {\n try {\n if (!op.run) {\n continue;\n }\n if (op.operation === \"post\") {\n const span = this.createSpanForRun(op, op.run, otelContextMap.get(op.id));\n if (span && !op.run.end_time) {\n this.spans.set(op.id, span);\n }\n }\n else {\n this.updateSpanForRun(op, op.run);\n }\n }\n catch (e) {\n console.error(`Error processing operation ${op.id}:`, e);\n }\n }\n }\n createSpanForRun(op, runInfo, otelContext) {\n const activeSpan = otelContext && getOTELTrace().getSpan(otelContext);\n if (!activeSpan) {\n return;\n }\n try {\n return this.finishSpanSetup(activeSpan, runInfo, op);\n }\n catch (e) {\n console.error(`Failed to create span for run ${op.id}:`, e);\n return undefined;\n }\n }\n finishSpanSetup(span, runInfo, op) {\n // Set all attributes\n this.setSpanAttributes(span, runInfo, op);\n // Set status based on error\n if (runInfo.error) {\n span.setStatus({ code: 2 }); // ERROR status\n span.recordException(new Error(runInfo.error));\n }\n else {\n span.setStatus({ code: 1 }); // OK status\n }\n // End the span if end_time is present\n if (runInfo.end_time) {\n span.end(new Date(runInfo.end_time));\n }\n return span;\n }\n updateSpanForRun(op, runInfo) {\n try {\n const span = this.spans.get(op.id);\n if (!span) {\n console.debug(`No span found for run ${op.id} during update`);\n return;\n }\n // Update attributes\n this.setSpanAttributes(span, runInfo, op);\n // Update status based on error\n if (runInfo.error) {\n span.setStatus({ code: 2 }); // ERROR status\n span.recordException(new Error(runInfo.error));\n }\n else {\n span.setStatus({ code: 1 }); // OK status\n }\n // End the span if end_time is present\n const endTime = runInfo.end_time;\n if (endTime) {\n span.end(new Date(endTime));\n this.spans.delete(op.id);\n }\n }\n catch (e) {\n console.error(`Failed to update span for run ${op.id}:`, e);\n }\n }\n extractModelName(runInfo) {\n // Try to get model name from metadata\n if (runInfo.extra?.metadata) {\n const metadata = runInfo.extra.metadata;\n // First check for ls_model_name in metadata\n if (metadata.ls_model_name) {\n return metadata.ls_model_name;\n }\n // Then check invocation_params for model info\n if (metadata.invocation_params) {\n const invocationParams = metadata.invocation_params;\n if (invocationParams.model) {\n return invocationParams.model;\n }\n else if (invocationParams.model_name) {\n return invocationParams.model_name;\n }\n }\n }\n return;\n }\n setSpanAttributes(span, runInfo, op) {\n if (\"run_type\" in runInfo && runInfo.run_type) {\n span.setAttribute(constants.LANGSMITH_RUN_TYPE, runInfo.run_type);\n // Set GenAI attributes according to OTEL semantic conventions\n const operationName = getOperationName(runInfo.run_type || \"chain\");\n span.setAttribute(constants.GEN_AI_OPERATION_NAME, operationName);\n }\n if (\"name\" in runInfo && runInfo.name) {\n span.setAttribute(constants.LANGSMITH_NAME, runInfo.name);\n }\n if (\"session_id\" in runInfo && runInfo.session_id) {\n span.setAttribute(constants.LANGSMITH_SESSION_ID, runInfo.session_id);\n }\n if (\"session_name\" in runInfo && runInfo.session_name) {\n span.setAttribute(constants.LANGSMITH_SESSION_NAME, runInfo.session_name);\n }\n // Set gen_ai.system\n this.setGenAiSystem(span, runInfo);\n // Set model name if available\n const modelName = this.extractModelName(runInfo);\n if (modelName) {\n span.setAttribute(constants.GEN_AI_REQUEST_MODEL, modelName);\n }\n // Set token usage information\n if (\"prompt_tokens\" in runInfo &&\n typeof runInfo.prompt_tokens === \"number\") {\n span.setAttribute(constants.GEN_AI_USAGE_INPUT_TOKENS, runInfo.prompt_tokens);\n }\n if (\"completion_tokens\" in runInfo &&\n typeof runInfo.completion_tokens === \"number\") {\n span.setAttribute(constants.GEN_AI_USAGE_OUTPUT_TOKENS, runInfo.completion_tokens);\n }\n if (\"total_tokens\" in runInfo && typeof runInfo.total_tokens === \"number\") {\n span.setAttribute(constants.GEN_AI_USAGE_TOTAL_TOKENS, runInfo.total_tokens);\n }\n // Set other parameters from invocation_params\n this.setInvocationParameters(span, runInfo);\n // Set metadata and tags if available\n const metadata = runInfo.extra?.metadata || {};\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== null && value !== undefined) {\n span.setAttribute(`${constants.LANGSMITH_METADATA}.${key}`, String(value));\n }\n }\n const tags = runInfo.tags;\n if (tags && Array.isArray(tags)) {\n span.setAttribute(constants.LANGSMITH_TAGS, tags.join(\", \"));\n }\n else if (tags) {\n span.setAttribute(constants.LANGSMITH_TAGS, String(tags));\n }\n // Support additional serialized attributes, if present\n if (\"serialized\" in runInfo && typeof runInfo.serialized === \"object\") {\n const serialized = runInfo.serialized;\n if (serialized.name) {\n span.setAttribute(constants.GEN_AI_SERIALIZED_NAME, String(serialized.name));\n }\n if (serialized.signature) {\n span.setAttribute(constants.GEN_AI_SERIALIZED_SIGNATURE, String(serialized.signature));\n }\n if (serialized.doc) {\n span.setAttribute(constants.GEN_AI_SERIALIZED_DOC, String(serialized.doc));\n }\n }\n // Set inputs/outputs if available\n this.setIOAttributes(span, op);\n }\n setGenAiSystem(span, runInfo) {\n // Default to \"langchain\" if we can't determine the system\n let system = \"langchain\";\n // Extract model name to determine the system\n const modelName = this.extractModelName(runInfo);\n if (modelName) {\n const modelLower = modelName.toLowerCase();\n if (modelLower.includes(\"anthropic\") || modelLower.startsWith(\"claude\")) {\n system = \"anthropic\";\n }\n else if (modelLower.includes(\"bedrock\")) {\n system = \"aws.bedrock\";\n }\n else if (modelLower.includes(\"azure\") &&\n modelLower.includes(\"openai\")) {\n system = \"az.ai.openai\";\n }\n else if (modelLower.includes(\"azure\") &&\n modelLower.includes(\"inference\")) {\n system = \"az.ai.inference\";\n }\n else if (modelLower.includes(\"cohere\")) {\n system = \"cohere\";\n }\n else if (modelLower.includes(\"deepseek\")) {\n system = \"deepseek\";\n }\n else if (modelLower.includes(\"gemini\")) {\n system = \"gemini\";\n }\n else if (modelLower.includes(\"groq\")) {\n system = \"groq\";\n }\n else if (modelLower.includes(\"watson\") || modelLower.includes(\"ibm\")) {\n system = \"ibm.watsonx.ai\";\n }\n else if (modelLower.includes(\"mistral\")) {\n system = \"mistral_ai\";\n }\n else if (modelLower.includes(\"gpt\") || modelLower.includes(\"openai\")) {\n system = \"openai\";\n }\n else if (modelLower.includes(\"perplexity\") ||\n modelLower.includes(\"sonar\")) {\n system = \"perplexity\";\n }\n else if (modelLower.includes(\"vertex\")) {\n system = \"vertex_ai\";\n }\n else if (modelLower.includes(\"xai\") || modelLower.includes(\"grok\")) {\n system = \"xai\";\n }\n }\n span.setAttribute(constants.GEN_AI_SYSTEM, system);\n }\n setInvocationParameters(span, runInfo) {\n if (!runInfo.extra?.metadata?.invocation_params) {\n return;\n }\n const invocationParams = runInfo.extra.metadata.invocation_params;\n // Set relevant invocation parameters\n if (invocationParams.max_tokens !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_MAX_TOKENS, invocationParams.max_tokens);\n }\n if (invocationParams.temperature !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_TEMPERATURE, invocationParams.temperature);\n }\n if (invocationParams.top_p !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_TOP_P, invocationParams.top_p);\n }\n if (invocationParams.frequency_penalty !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_FREQUENCY_PENALTY, invocationParams.frequency_penalty);\n }\n if (invocationParams.presence_penalty !== undefined) {\n span.setAttribute(constants.GEN_AI_REQUEST_PRESENCE_PENALTY, invocationParams.presence_penalty);\n }\n }\n setIOAttributes(span, op) {\n if (op.run.inputs) {\n try {\n const inputs = op.run.inputs;\n if (typeof inputs === \"object\" && inputs !== null) {\n if (inputs.model && Array.isArray(inputs.messages)) {\n span.setAttribute(constants.GEN_AI_REQUEST_MODEL, inputs.model);\n }\n // Set additional request attributes if available\n if (inputs.stream !== undefined) {\n span.setAttribute(constants.LANGSMITH_REQUEST_STREAMING, inputs.stream);\n }\n if (inputs.extra_headers) {\n span.setAttribute(constants.LANGSMITH_REQUEST_HEADERS, JSON.stringify(inputs.extra_headers));\n }\n if (inputs.extra_query) {\n span.setAttribute(constants.GEN_AI_REQUEST_EXTRA_QUERY, JSON.stringify(inputs.extra_query));\n }\n if (inputs.extra_body) {\n span.setAttribute(constants.GEN_AI_REQUEST_EXTRA_BODY, JSON.stringify(inputs.extra_body));\n }\n }\n span.setAttribute(constants.GENAI_PROMPT, JSON.stringify(inputs));\n }\n catch (e) {\n console.debug(`Failed to process inputs for run ${op.id}`, e);\n }\n }\n if (op.run.outputs) {\n try {\n const outputs = op.run.outputs;\n // Extract token usage from outputs (for LLM runs)\n const tokenUsage = this.getUnifiedRunTokens(outputs);\n if (tokenUsage) {\n span.setAttribute(constants.GEN_AI_USAGE_INPUT_TOKENS, tokenUsage[0]);\n span.setAttribute(constants.GEN_AI_USAGE_OUTPUT_TOKENS, tokenUsage[1]);\n span.setAttribute(constants.GEN_AI_USAGE_TOTAL_TOKENS, tokenUsage[0] + tokenUsage[1]);\n }\n if (outputs && typeof outputs === \"object\") {\n if (outputs.model) {\n span.setAttribute(constants.GEN_AI_RESPONSE_MODEL, String(outputs.model));\n }\n // Extract additional response attributes\n if (outputs.id) {\n span.setAttribute(constants.GEN_AI_RESPONSE_ID, outputs.id);\n }\n if (outputs.choices && Array.isArray(outputs.choices)) {\n const finishReasons = outputs.choices\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((choice) => choice.finish_reason)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .filter((reason) => reason)\n .map(String);\n if (finishReasons.length > 0) {\n span.setAttribute(constants.GEN_AI_RESPONSE_FINISH_REASONS, finishReasons.join(\", \"));\n }\n }\n if (outputs.service_tier) {\n span.setAttribute(constants.GEN_AI_RESPONSE_SERVICE_TIER, outputs.service_tier);\n }\n if (outputs.system_fingerprint) {\n span.setAttribute(constants.GEN_AI_RESPONSE_SYSTEM_FINGERPRINT, outputs.system_fingerprint);\n }\n if (outputs.usage_metadata &&\n typeof outputs.usage_metadata === \"object\") {\n const usageMetadata = outputs.usage_metadata;\n if (usageMetadata.input_token_details) {\n span.setAttribute(constants.GEN_AI_USAGE_INPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.input_token_details));\n }\n if (usageMetadata.output_token_details) {\n span.setAttribute(constants.GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS, JSON.stringify(usageMetadata.output_token_details));\n }\n }\n }\n span.setAttribute(constants.GENAI_COMPLETION, JSON.stringify(outputs));\n }\n catch (e) {\n console.debug(`Failed to process outputs for run ${op.id}`, e);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getUnifiedRunTokens(outputs) {\n if (!outputs) {\n return null;\n }\n // Search in non-generations lists\n let tokenUsage = this.extractUnifiedRunTokens(outputs.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n // Find if direct kwarg in outputs\n const keys = Object.keys(outputs);\n for (const key of keys) {\n const haystack = outputs[key];\n if (!haystack || typeof haystack !== \"object\") {\n continue;\n }\n tokenUsage = this.extractUnifiedRunTokens(haystack.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n if (haystack.lc === 1 &&\n haystack.kwargs &&\n typeof haystack.kwargs === \"object\") {\n tokenUsage = this.extractUnifiedRunTokens(haystack.kwargs.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n }\n }\n // Find in generations\n const generations = outputs.generations || [];\n if (!Array.isArray(generations)) {\n return null;\n }\n const flatGenerations = Array.isArray(generations[0])\n ? generations.flat()\n : generations;\n for (const generation of flatGenerations) {\n if (typeof generation === \"object\" &&\n generation.message &&\n typeof generation.message === \"object\" &&\n generation.message.kwargs &&\n typeof generation.message.kwargs === \"object\") {\n tokenUsage = this.extractUnifiedRunTokens(generation.message.kwargs.usage_metadata);\n if (tokenUsage) {\n return tokenUsage;\n }\n }\n }\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extractUnifiedRunTokens(outputs) {\n if (!outputs || typeof outputs !== \"object\") {\n return null;\n }\n if (typeof outputs.input_tokens !== \"number\" ||\n typeof outputs.output_tokens !== \"number\") {\n return null;\n }\n return [outputs.input_tokens, outputs.output_tokens];\n }\n}\n"],"names":["constants.LANGSMITH_RUN_TYPE","constants.GEN_AI_OPERATION_NAME","constants.LANGSMITH_NAME","constants.LANGSMITH_SESSION_ID","constants.LANGSMITH_SESSION_NAME","constants.GEN_AI_REQUEST_MODEL","constants.GEN_AI_USAGE_INPUT_TOKENS","constants.GEN_AI_USAGE_OUTPUT_TOKENS","constants.GEN_AI_USAGE_TOTAL_TOKENS","constants.LANGSMITH_METADATA","constants.LANGSMITH_TAGS","constants.GEN_AI_SERIALIZED_NAME","constants.GEN_AI_SERIALIZED_SIGNATURE","constants.GEN_AI_SERIALIZED_DOC","constants.GEN_AI_SYSTEM","constants.GEN_AI_REQUEST_MAX_TOKENS","constants.GEN_AI_REQUEST_TEMPERATURE","constants.GEN_AI_REQUEST_TOP_P","constants.GEN_AI_REQUEST_FREQUENCY_PENALTY","constants.GEN_AI_REQUEST_PRESENCE_PENALTY","constants.LANGSMITH_REQUEST_STREAMING","constants.LANGSMITH_REQUEST_HEADERS","constants.GEN_AI_REQUEST_EXTRA_QUERY","constants.GEN_AI_REQUEST_EXTRA_BODY","constants.GENAI_PROMPT","constants.GEN_AI_RESPONSE_MODEL","constants.GEN_AI_RESPONSE_ID","constants.GEN_AI_RESPONSE_FINISH_REASONS","constants.GEN_AI_RESPONSE_SERVICE_TIER","constants.GEN_AI_RESPONSE_SYSTEM_FINGERPRINT","constants.GEN_AI_USAGE_INPUT_TOKEN_DETAILS","constants.GEN_AI_USAGE_OUTPUT_TOKEN_DETAILS","constants.GENAI_COMPLETION"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { getOtelEnabled } from "./index.es171.js";
|
|
2
|
+
class MockTracer {
|
|
3
|
+
constructor() {
|
|
4
|
+
Object.defineProperty(this, "hasWarned", {
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true,
|
|
8
|
+
value: false
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
startActiveSpan(_name, ...args) {
|
|
12
|
+
if (!this.hasWarned && getOtelEnabled()) {
|
|
13
|
+
console.warn('You have enabled OTEL export via the `OTEL_ENABLED` or `LANGSMITH_OTEL_ENABLED` environment variable, but have not initialized the required OTEL instances. Please add:\n```\nimport { initializeOTEL } from "langsmith/experimental/otel/setup";\ninitializeOTEL();\n```\nat the beginning of your code.');
|
|
14
|
+
this.hasWarned = true;
|
|
15
|
+
}
|
|
16
|
+
let fn;
|
|
17
|
+
if (args.length === 1 && typeof args[0] === "function") {
|
|
18
|
+
fn = args[0];
|
|
19
|
+
} else if (args.length === 2 && typeof args[1] === "function") {
|
|
20
|
+
fn = args[1];
|
|
21
|
+
} else if (args.length === 3 && typeof args[2] === "function") {
|
|
22
|
+
fn = args[2];
|
|
23
|
+
}
|
|
24
|
+
if (typeof fn === "function") {
|
|
25
|
+
return fn();
|
|
26
|
+
}
|
|
27
|
+
return void 0;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class MockOTELTrace {
|
|
31
|
+
constructor() {
|
|
32
|
+
Object.defineProperty(this, "mockTracer", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: new MockTracer()
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
getTracer(_name, _version) {
|
|
40
|
+
return this.mockTracer;
|
|
41
|
+
}
|
|
42
|
+
getActiveSpan() {
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
setSpan(context, _span) {
|
|
46
|
+
return context;
|
|
47
|
+
}
|
|
48
|
+
getSpan(_context) {
|
|
49
|
+
return void 0;
|
|
50
|
+
}
|
|
51
|
+
setSpanContext(context, _spanContext) {
|
|
52
|
+
return context;
|
|
53
|
+
}
|
|
54
|
+
getTracerProvider() {
|
|
55
|
+
return void 0;
|
|
56
|
+
}
|
|
57
|
+
setGlobalTracerProvider(_tracerProvider) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
class MockOTELContext {
|
|
62
|
+
active() {
|
|
63
|
+
return {};
|
|
64
|
+
}
|
|
65
|
+
with(_context, fn) {
|
|
66
|
+
return fn();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const OTEL_TRACE_KEY = /* @__PURE__ */ Symbol.for("ls:otel_trace");
|
|
70
|
+
const OTEL_CONTEXT_KEY = /* @__PURE__ */ Symbol.for("ls:otel_context");
|
|
71
|
+
const OTEL_GET_DEFAULT_OTLP_TRACER_PROVIDER_KEY = /* @__PURE__ */ Symbol.for("ls:otel_get_default_otlp_tracer_provider");
|
|
72
|
+
const mockOTELTrace = new MockOTELTrace();
|
|
73
|
+
const mockOTELContext = new MockOTELContext();
|
|
74
|
+
class OTELProvider {
|
|
75
|
+
getTraceInstance() {
|
|
76
|
+
return globalThis[OTEL_TRACE_KEY] ?? mockOTELTrace;
|
|
77
|
+
}
|
|
78
|
+
getContextInstance() {
|
|
79
|
+
return globalThis[OTEL_CONTEXT_KEY] ?? mockOTELContext;
|
|
80
|
+
}
|
|
81
|
+
initializeGlobalInstances(otel) {
|
|
82
|
+
if (globalThis[OTEL_TRACE_KEY] === void 0) {
|
|
83
|
+
globalThis[OTEL_TRACE_KEY] = otel.trace;
|
|
84
|
+
}
|
|
85
|
+
if (globalThis[OTEL_CONTEXT_KEY] === void 0) {
|
|
86
|
+
globalThis[OTEL_CONTEXT_KEY] = otel.context;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
setDefaultOTLPTracerComponents(components) {
|
|
90
|
+
globalThis[OTEL_GET_DEFAULT_OTLP_TRACER_PROVIDER_KEY] = components;
|
|
91
|
+
}
|
|
92
|
+
getDefaultOTLPTracerComponents() {
|
|
93
|
+
return globalThis[OTEL_GET_DEFAULT_OTLP_TRACER_PROVIDER_KEY] ?? void 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const OTELProviderSingleton = new OTELProvider();
|
|
97
|
+
function getOTELTrace() {
|
|
98
|
+
return OTELProviderSingleton.getTraceInstance();
|
|
99
|
+
}
|
|
100
|
+
function getOTELContext() {
|
|
101
|
+
return OTELProviderSingleton.getContextInstance();
|
|
102
|
+
}
|
|
103
|
+
function getDefaultOTLPTracerComponents() {
|
|
104
|
+
return OTELProviderSingleton.getDefaultOTLPTracerComponents();
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
OTELProviderSingleton,
|
|
108
|
+
getDefaultOTLPTracerComponents,
|
|
109
|
+
getOTELContext,
|
|
110
|
+
getOTELTrace
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=index.es168.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es168.js","sources":["../node_modules/.pnpm/langsmith@0.4.4_openai@6.15.0_zod@4.3.5_/node_modules/langsmith/dist/singletons/otel.js"],"sourcesContent":["// Should not import any OTEL packages to avoid pulling in optional deps.\nimport { getOtelEnabled } from \"../utils/env.js\";\nclass MockTracer {\n constructor() {\n Object.defineProperty(this, \"hasWarned\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n startActiveSpan(_name, ...args) {\n if (!this.hasWarned && getOtelEnabled()) {\n console.warn(\"You have enabled OTEL export via the `OTEL_ENABLED` or `LANGSMITH_OTEL_ENABLED` environment variable, but have not initialized the required OTEL instances. \" +\n 'Please add:\\n```\\nimport { initializeOTEL } from \"langsmith/experimental/otel/setup\";\\ninitializeOTEL();\\n```\\nat the beginning of your code.');\n this.hasWarned = true;\n }\n // Handle different overloads:\n // startActiveSpan(name, fn)\n // startActiveSpan(name, options, fn)\n // startActiveSpan(name, options, context, fn)\n let fn;\n if (args.length === 1 && typeof args[0] === \"function\") {\n fn = args[0];\n }\n else if (args.length === 2 && typeof args[1] === \"function\") {\n fn = args[1];\n }\n else if (args.length === 3 && typeof args[2] === \"function\") {\n fn = args[2];\n }\n if (typeof fn === \"function\") {\n return fn();\n }\n return undefined;\n }\n}\nclass MockOTELTrace {\n constructor() {\n Object.defineProperty(this, \"mockTracer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new MockTracer()\n });\n }\n getTracer(_name, _version) {\n return this.mockTracer;\n }\n getActiveSpan() {\n return undefined;\n }\n setSpan(context, _span) {\n return context;\n }\n getSpan(_context) {\n return undefined;\n }\n setSpanContext(context, _spanContext) {\n return context;\n }\n getTracerProvider() {\n return undefined;\n }\n setGlobalTracerProvider(_tracerProvider) {\n return false;\n }\n}\nclass MockOTELContext {\n active() {\n return {};\n }\n with(_context, fn) {\n return fn();\n }\n}\nconst OTEL_TRACE_KEY = Symbol.for(\"ls:otel_trace\");\nconst OTEL_CONTEXT_KEY = Symbol.for(\"ls:otel_context\");\nconst OTEL_GET_DEFAULT_OTLP_TRACER_PROVIDER_KEY = Symbol.for(\"ls:otel_get_default_otlp_tracer_provider\");\nconst mockOTELTrace = new MockOTELTrace();\nconst mockOTELContext = new MockOTELContext();\nclass OTELProvider {\n getTraceInstance() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return globalThis[OTEL_TRACE_KEY] ?? mockOTELTrace;\n }\n getContextInstance() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return globalThis[OTEL_CONTEXT_KEY] ?? mockOTELContext;\n }\n initializeGlobalInstances(otel) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (globalThis[OTEL_TRACE_KEY] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n globalThis[OTEL_TRACE_KEY] = otel.trace;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (globalThis[OTEL_CONTEXT_KEY] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n globalThis[OTEL_CONTEXT_KEY] = otel.context;\n }\n }\n setDefaultOTLPTracerComponents(components) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n globalThis[OTEL_GET_DEFAULT_OTLP_TRACER_PROVIDER_KEY] = components;\n }\n getDefaultOTLPTracerComponents() {\n return (globalThis[OTEL_GET_DEFAULT_OTLP_TRACER_PROVIDER_KEY] ??\n undefined);\n }\n}\nexport const OTELProviderSingleton = new OTELProvider();\n/**\n * Get the current OTEL trace instance.\n * Returns a mock implementation if OTEL is not available.\n */\nexport function getOTELTrace() {\n return OTELProviderSingleton.getTraceInstance();\n}\n/**\n * Get the current OTEL context instance.\n * Returns a mock implementation if OTEL is not available.\n */\nexport function getOTELContext() {\n return OTELProviderSingleton.getContextInstance();\n}\n/**\n * Initialize the global OTEL instances.\n * Should be called once when OTEL packages are available.\n */\nexport function setOTELInstances(otel) {\n OTELProviderSingleton.initializeGlobalInstances(otel);\n}\n/**\n * Set a getter function for the default OTLP tracer provider.\n * This allows lazy initialization of the tracer provider.\n */\nexport function setDefaultOTLPTracerComponents(components) {\n OTELProviderSingleton.setDefaultOTLPTracerComponents(components);\n}\n/**\n * Get the default OTLP tracer provider instance.\n * Returns undefined if not set.\n */\nexport function getDefaultOTLPTracerComponents() {\n return OTELProviderSingleton.getDefaultOTLPTracerComponents();\n}\n"],"names":[],"mappings":";AAEA,MAAM,WAAW;AAAA,EACb,cAAc;AACV,WAAO,eAAe,MAAM,aAAa;AAAA,MACrC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AAAA,EACL;AAAA,EACA,gBAAgB,UAAU,MAAM;AAC5B,QAAI,CAAC,KAAK,aAAa,kBAAkB;AACrC,cAAQ,KAAK,2SACsI;AACnJ,WAAK,YAAY;AAAA,IACrB;AAKA,QAAI;AACJ,QAAI,KAAK,WAAW,KAAK,OAAO,KAAK,CAAC,MAAM,YAAY;AACpD,WAAK,KAAK,CAAC;AAAA,IACf,WACS,KAAK,WAAW,KAAK,OAAO,KAAK,CAAC,MAAM,YAAY;AACzD,WAAK,KAAK,CAAC;AAAA,IACf,WACS,KAAK,WAAW,KAAK,OAAO,KAAK,CAAC,MAAM,YAAY;AACzD,WAAK,KAAK,CAAC;AAAA,IACf;AACA,QAAI,OAAO,OAAO,YAAY;AAC1B,aAAO,GAAE;AAAA,IACb;AACA,WAAO;AAAA,EACX;AACJ;AACA,MAAM,cAAc;AAAA,EAChB,cAAc;AACV,WAAO,eAAe,MAAM,cAAc;AAAA,MACtC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO,IAAI,WAAU;AAAA,IACjC,CAAS;AAAA,EACL;AAAA,EACA,UAAU,OAAO,UAAU;AACvB,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,gBAAgB;AACZ,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,SAAS,OAAO;AACpB,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,UAAU;AACd,WAAO;AAAA,EACX;AAAA,EACA,eAAe,SAAS,cAAc;AAClC,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB;AAChB,WAAO;AAAA,EACX;AAAA,EACA,wBAAwB,iBAAiB;AACrC,WAAO;AAAA,EACX;AACJ;AACA,MAAM,gBAAgB;AAAA,EAClB,SAAS;AACL,WAAO,CAAA;AAAA,EACX;AAAA,EACA,KAAK,UAAU,IAAI;AACf,WAAO,GAAE;AAAA,EACb;AACJ;AACA,MAAM,iBAAiB,uBAAO,IAAI,eAAe;AACjD,MAAM,mBAAmB,uBAAO,IAAI,iBAAiB;AACrD,MAAM,4CAA4C,uBAAO,IAAI,0CAA0C;AACvG,MAAM,gBAAgB,IAAI,cAAa;AACvC,MAAM,kBAAkB,IAAI,gBAAe;AAC3C,MAAM,aAAa;AAAA,EACf,mBAAmB;AAEf,WAAO,WAAW,cAAc,KAAK;AAAA,EACzC;AAAA,EACA,qBAAqB;AAEjB,WAAO,WAAW,gBAAgB,KAAK;AAAA,EAC3C;AAAA,EACA,0BAA0B,MAAM;AAE5B,QAAI,WAAW,cAAc,MAAM,QAAW;AAE1C,iBAAW,cAAc,IAAI,KAAK;AAAA,IACtC;AAEA,QAAI,WAAW,gBAAgB,MAAM,QAAW;AAE5C,iBAAW,gBAAgB,IAAI,KAAK;AAAA,IACxC;AAAA,EACJ;AAAA,EACA,+BAA+B,YAAY;AAEvC,eAAW,yCAAyC,IAAI;AAAA,EAC5D;AAAA,EACA,iCAAiC;AAC7B,WAAQ,WAAW,yCAAyC,KACxD;AAAA,EACR;AACJ;AACY,MAAC,wBAAwB,IAAI,aAAY;AAK9C,SAAS,eAAe;AAC3B,SAAO,sBAAsB,iBAAgB;AACjD;AAKO,SAAS,iBAAiB;AAC7B,SAAO,sBAAsB,mBAAkB;AACnD;AAmBO,SAAS,iCAAiC;AAC7C,SAAO,sBAAsB,+BAA8B;AAC/D;","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import pRetry from "./index.es218.js";
|
|
2
|
+
import PQueueMod from "./index.es69.js";
|
|
3
|
+
const STATUS_RETRYABLE = [
|
|
4
|
+
408,
|
|
5
|
+
// Request Timeout
|
|
6
|
+
425,
|
|
7
|
+
// Too Early
|
|
8
|
+
429,
|
|
9
|
+
// Too Many Requests
|
|
10
|
+
500,
|
|
11
|
+
// Internal Server Error
|
|
12
|
+
502,
|
|
13
|
+
// Bad Gateway
|
|
14
|
+
503,
|
|
15
|
+
// Service Unavailable
|
|
16
|
+
504
|
|
17
|
+
// Gateway Timeout
|
|
18
|
+
];
|
|
19
|
+
class AsyncCaller {
|
|
20
|
+
constructor(params) {
|
|
21
|
+
Object.defineProperty(this, "maxConcurrency", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
configurable: true,
|
|
24
|
+
writable: true,
|
|
25
|
+
value: void 0
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(this, "maxRetries", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true,
|
|
30
|
+
writable: true,
|
|
31
|
+
value: void 0
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(this, "maxQueueSizeBytes", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true,
|
|
37
|
+
value: void 0
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(this, "queue", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: void 0
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(this, "onFailedResponseHook", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true,
|
|
49
|
+
value: void 0
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(this, "queueSizeBytes", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
configurable: true,
|
|
54
|
+
writable: true,
|
|
55
|
+
value: 0
|
|
56
|
+
});
|
|
57
|
+
this.maxConcurrency = params.maxConcurrency ?? Infinity;
|
|
58
|
+
this.maxRetries = params.maxRetries ?? 6;
|
|
59
|
+
this.maxQueueSizeBytes = params.maxQueueSizeBytes;
|
|
60
|
+
if ("default" in PQueueMod) {
|
|
61
|
+
this.queue = new PQueueMod.default({
|
|
62
|
+
concurrency: this.maxConcurrency
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
this.queue = new PQueueMod({ concurrency: this.maxConcurrency });
|
|
66
|
+
}
|
|
67
|
+
this.onFailedResponseHook = params?.onFailedResponseHook;
|
|
68
|
+
}
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
+
call(callable, ...args) {
|
|
71
|
+
return this.callWithOptions({}, callable, ...args);
|
|
72
|
+
}
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
|
+
callWithOptions(options, callable, ...args) {
|
|
75
|
+
const sizeBytes = options.sizeBytes ?? 0;
|
|
76
|
+
if (this.maxQueueSizeBytes !== void 0 && sizeBytes > 0 && this.queueSizeBytes + sizeBytes > this.maxQueueSizeBytes) {
|
|
77
|
+
return Promise.reject(new Error(`Queue size limit (${this.maxQueueSizeBytes} bytes) exceeded. Current queue size: ${this.queueSizeBytes} bytes, attempted addition: ${sizeBytes} bytes.`));
|
|
78
|
+
}
|
|
79
|
+
if (sizeBytes > 0) {
|
|
80
|
+
this.queueSizeBytes += sizeBytes;
|
|
81
|
+
}
|
|
82
|
+
const onFailedResponseHook = this.onFailedResponseHook;
|
|
83
|
+
let promise = this.queue.add(() => pRetry(() => callable(...args).catch((error) => {
|
|
84
|
+
if (error instanceof Error) {
|
|
85
|
+
throw error;
|
|
86
|
+
} else {
|
|
87
|
+
throw new Error(error);
|
|
88
|
+
}
|
|
89
|
+
}), {
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
91
|
+
async onFailedAttempt({ error }) {
|
|
92
|
+
if (error.message.startsWith("Cancel") || error.message.startsWith("TimeoutError") || error.name === "TimeoutError" || error.message.startsWith("AbortError")) {
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
if (error?.code === "ECONNABORTED") {
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
const response = error?.response;
|
|
99
|
+
if (onFailedResponseHook) {
|
|
100
|
+
const handled = await onFailedResponseHook(response);
|
|
101
|
+
if (handled) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const status = response?.status ?? error?.status;
|
|
106
|
+
if (status) {
|
|
107
|
+
if (!STATUS_RETRYABLE.includes(+status)) {
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
retries: this.maxRetries,
|
|
113
|
+
randomize: true
|
|
114
|
+
}), { throwOnTimeout: true });
|
|
115
|
+
if (sizeBytes > 0) {
|
|
116
|
+
promise = promise.finally(() => {
|
|
117
|
+
this.queueSizeBytes -= sizeBytes;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (options.signal) {
|
|
121
|
+
return Promise.race([
|
|
122
|
+
promise,
|
|
123
|
+
new Promise((_, reject) => {
|
|
124
|
+
options.signal?.addEventListener("abort", () => {
|
|
125
|
+
reject(new Error("AbortError"));
|
|
126
|
+
});
|
|
127
|
+
})
|
|
128
|
+
]);
|
|
129
|
+
}
|
|
130
|
+
return promise;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export {
|
|
134
|
+
AsyncCaller
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=index.es169.js.map
|