langgraph-ui-components 0.0.2 → 0.0.3
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.es100.js +5 -40
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +68 -86
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +37 -2
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +5 -2
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +2 -24
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +11 -2
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +500 -24
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +5 -5
- package/dist/index.es108.js +2 -2
- package/dist/index.es109.js +146 -11
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es11.js +13 -8
- package/dist/index.es11.js.map +1 -1
- package/dist/index.es110.js +857 -452
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +282 -2
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +4 -148
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +408 -850
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +40 -274
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +24 -4
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +72 -437
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +125 -42
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es118.js +48 -21
- package/dist/index.es118.js.map +1 -1
- package/dist/index.es119.js +8 -77
- package/dist/index.es119.js.map +1 -1
- package/dist/index.es12.js +46 -39
- package/dist/index.es12.js.map +1 -1
- package/dist/index.es120.js +43 -127
- package/dist/index.es120.js.map +1 -1
- package/dist/index.es121.js +91 -41
- package/dist/index.es121.js.map +1 -1
- package/dist/index.es122.js +52 -9
- package/dist/index.es122.js.map +1 -1
- package/dist/index.es123.js +15 -44
- package/dist/index.es123.js.map +1 -1
- package/dist/index.es124.js +13 -97
- package/dist/index.es124.js.map +1 -1
- package/dist/index.es125.js +88 -52
- package/dist/index.es125.js.map +1 -1
- package/dist/index.es126.js +2 -2
- package/dist/index.es127.js +54 -135
- package/dist/index.es127.js.map +1 -1
- package/dist/index.es128.js +100 -2
- package/dist/index.es128.js.map +1 -1
- package/dist/index.es129.js +190 -14
- package/dist/index.es129.js.map +1 -1
- package/dist/index.es13.js +1 -1
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es130.js +105 -84
- package/dist/index.es130.js.map +1 -1
- package/dist/index.es131.js +35 -2
- package/dist/index.es131.js.map +1 -1
- package/dist/index.es132.js +9 -55
- package/dist/index.es132.js.map +1 -1
- package/dist/index.es133.js +10 -99
- package/dist/index.es133.js.map +1 -1
- package/dist/index.es134.js +12 -191
- package/dist/index.es134.js.map +1 -1
- package/dist/index.es135.js +80 -99
- package/dist/index.es135.js.map +1 -1
- package/dist/index.es136.js +273 -33
- package/dist/index.es136.js.map +1 -1
- package/dist/index.es137.js +2 -10
- package/dist/index.es137.js.map +1 -1
- package/dist/index.es138.js +164 -11
- package/dist/index.es138.js.map +1 -1
- package/dist/index.es139.js +50 -11
- package/dist/index.es139.js.map +1 -1
- package/dist/index.es14.js +8 -145
- package/dist/index.es14.js.map +1 -1
- package/dist/index.es140.js +36 -87
- package/dist/index.es140.js.map +1 -1
- package/dist/index.es141.js +3 -3
- package/dist/index.es141.js.map +1 -1
- package/dist/index.es143.js +1 -1
- package/dist/index.es144.js +2 -2
- package/dist/index.es145.js +1 -1
- package/dist/index.es146.js +163 -3
- package/dist/index.es146.js.map +1 -1
- package/dist/index.es147.js +2 -5
- package/dist/index.es147.js.map +1 -1
- package/dist/index.es148.js +2 -13
- package/dist/index.es148.js.map +1 -1
- package/dist/index.es149.js +2 -6
- package/dist/index.es149.js.map +1 -1
- package/dist/index.es15.js +145 -12
- package/dist/index.es15.js.map +1 -1
- package/dist/index.es150.js +22 -8
- package/dist/index.es150.js.map +1 -1
- package/dist/index.es151.js +2 -25
- package/dist/index.es151.js.map +1 -1
- package/dist/index.es152.js +24 -11
- package/dist/index.es152.js.map +1 -1
- package/dist/index.es153.js +3 -53
- package/dist/index.es153.js.map +1 -1
- package/dist/index.es154.js +5 -64
- package/dist/index.es154.js.map +1 -1
- package/dist/index.es155.js +12 -21
- package/dist/index.es155.js.map +1 -1
- package/dist/index.es156.js +5 -5
- package/dist/index.es156.js.map +1 -1
- package/dist/index.es157.js +8 -349
- package/dist/index.es157.js.map +1 -1
- package/dist/index.es158.js +63 -6
- package/dist/index.es158.js.map +1 -1
- package/dist/index.es159.js +21 -102
- package/dist/index.es159.js.map +1 -1
- package/dist/index.es16.js +12 -5
- package/dist/index.es16.js.map +1 -1
- package/dist/index.es160.js +5 -118
- package/dist/index.es160.js.map +1 -1
- package/dist/index.es161.js +330 -117
- package/dist/index.es161.js.map +1 -1
- package/dist/index.es162.js +24 -114
- package/dist/index.es162.js.map +1 -1
- package/dist/index.es163.js +12 -6
- package/dist/index.es163.js.map +1 -1
- package/dist/index.es164.js +53 -141
- package/dist/index.es164.js.map +1 -1
- package/dist/index.es165.js +7 -2
- package/dist/index.es165.js.map +1 -1
- package/dist/index.es166.js +98 -3677
- package/dist/index.es166.js.map +1 -1
- package/dist/index.es167.js +109 -332
- package/dist/index.es167.js.map +1 -1
- package/dist/index.es168.js +130 -103
- package/dist/index.es168.js.map +1 -1
- package/dist/index.es169.js +105 -123
- package/dist/index.es169.js.map +1 -1
- package/dist/index.es17.js +5 -33
- package/dist/index.es17.js.map +1 -1
- package/dist/index.es170.js +6 -15
- package/dist/index.es170.js.map +1 -1
- package/dist/index.es171.js +2 -152
- package/dist/index.es171.js.map +1 -1
- package/dist/index.es172.js +141 -14
- package/dist/index.es172.js.map +1 -1
- package/dist/index.es173.js +2 -8
- package/dist/index.es173.js.map +1 -1
- package/dist/index.es174.js +3732 -16
- package/dist/index.es174.js.map +1 -1
- package/dist/index.es175.js +322 -70
- package/dist/index.es175.js.map +1 -1
- package/dist/index.es176.js +106 -21
- package/dist/index.es176.js.map +1 -1
- package/dist/index.es177.js +133 -6
- package/dist/index.es177.js.map +1 -1
- package/dist/index.es178.js +15 -4
- package/dist/index.es178.js.map +1 -1
- package/dist/index.es179.js +149 -15
- package/dist/index.es179.js.map +1 -1
- package/dist/index.es18.js +29 -119
- package/dist/index.es18.js.map +1 -1
- package/dist/index.es180.js +15 -32
- package/dist/index.es180.js.map +1 -1
- package/dist/index.es181.js +8 -6
- package/dist/index.es181.js.map +1 -1
- package/dist/index.es182.js +20 -105
- package/dist/index.es182.js.map +1 -1
- package/dist/index.es183.js +88 -11
- package/dist/index.es183.js.map +1 -1
- package/dist/index.es184.js +242 -17
- package/dist/index.es184.js.map +1 -1
- package/dist/index.es185.js +23 -30
- package/dist/index.es185.js.map +1 -1
- package/dist/index.es186.js +6 -4
- package/dist/index.es186.js.map +1 -1
- package/dist/index.es187.js +4 -5
- package/dist/index.es187.js.map +1 -1
- package/dist/index.es188.js +18 -5
- package/dist/index.es188.js.map +1 -1
- package/dist/index.es189.js +7 -36
- package/dist/index.es189.js.map +1 -1
- package/dist/index.es19.js +120 -36
- package/dist/index.es19.js.map +1 -1
- package/dist/index.es190.js +32 -8
- package/dist/index.es190.js.map +1 -1
- package/dist/index.es191.js +6 -6
- package/dist/index.es191.js.map +1 -1
- package/dist/index.es192.js +106 -7
- package/dist/index.es192.js.map +1 -1
- package/dist/index.es193.js +12 -41
- package/dist/index.es193.js.map +1 -1
- package/dist/index.es194.js +17 -12
- package/dist/index.es194.js.map +1 -1
- package/dist/index.es195.js +22 -233
- package/dist/index.es195.js.map +1 -1
- package/dist/index.es196.js +3 -50
- package/dist/index.es196.js.map +1 -1
- package/dist/index.es197.js +4 -34
- package/dist/index.es197.js.map +1 -1
- package/dist/index.es198.js +5 -13
- package/dist/index.es198.js.map +1 -1
- package/dist/index.es199.js +36 -7
- package/dist/index.es199.js.map +1 -1
- package/dist/index.es2.js +9 -15
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +17 -42
- package/dist/index.es20.js.map +1 -1
- package/dist/index.es200.js +7 -6
- package/dist/index.es200.js.map +1 -1
- package/dist/index.es201.js +5 -64
- package/dist/index.es201.js.map +1 -1
- package/dist/index.es202.js +6 -40
- package/dist/index.es202.js.map +1 -1
- package/dist/index.es203.js +41 -31
- package/dist/index.es203.js.map +1 -1
- package/dist/index.es204.js +11 -60
- package/dist/index.es204.js.map +1 -1
- package/dist/index.es205.js +241 -14
- package/dist/index.es205.js.map +1 -1
- package/dist/index.es206.js +51 -23
- package/dist/index.es206.js.map +1 -1
- package/dist/index.es207.js +34 -4
- package/dist/index.es207.js.map +1 -1
- package/dist/index.es208.js +10 -14
- package/dist/index.es208.js.map +1 -1
- package/dist/index.es209.js +7 -32
- package/dist/index.es209.js.map +1 -1
- package/dist/index.es21.js +68 -17
- package/dist/index.es21.js.map +1 -1
- package/dist/index.es210.js +6 -4
- package/dist/index.es210.js.map +1 -1
- package/dist/index.es211.js +64 -4
- package/dist/index.es211.js.map +1 -1
- package/dist/index.es212.js +41 -5
- package/dist/index.es212.js.map +1 -1
- package/dist/index.es213.js +31 -7
- package/dist/index.es213.js.map +1 -1
- package/dist/index.es214.js +56 -86
- package/dist/index.es214.js.map +1 -1
- package/dist/index.es215.js +15 -18
- package/dist/index.es215.js.map +1 -1
- package/dist/index.es216.js +23 -762
- package/dist/index.es216.js.map +1 -1
- package/dist/index.es217.js +5 -66
- package/dist/index.es217.js.map +1 -1
- package/dist/index.es218.js +14 -171
- package/dist/index.es218.js.map +1 -1
- package/dist/index.es219.js +32 -37
- package/dist/index.es219.js.map +1 -1
- package/dist/index.es22.js +36 -71
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es220.js +4 -136
- package/dist/index.es220.js.map +1 -1
- package/dist/index.es221.js +4 -92
- package/dist/index.es221.js.map +1 -1
- package/dist/index.es222.js +5 -33
- package/dist/index.es222.js.map +1 -1
- package/dist/index.es223.js +7 -284
- package/dist/index.es223.js.map +1 -1
- package/dist/index.es224.js +91 -25
- package/dist/index.es224.js.map +1 -1
- package/dist/index.es225.js +15 -21
- package/dist/index.es225.js.map +1 -1
- package/dist/index.es226.js +761 -14
- package/dist/index.es226.js.map +1 -1
- package/dist/index.es227.js +66 -15
- package/dist/index.es227.js.map +1 -1
- package/dist/index.es228.js +169 -21
- package/dist/index.es228.js.map +1 -1
- package/dist/index.es229.js +37 -45
- package/dist/index.es229.js.map +1 -1
- package/dist/index.es23.js +6 -4
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es230.js +136 -11
- package/dist/index.es230.js.map +1 -1
- package/dist/index.es231.js +92 -11
- package/dist/index.es231.js.map +1 -1
- package/dist/index.es232.js +32 -11
- package/dist/index.es232.js.map +1 -1
- package/dist/index.es233.js +284 -14
- package/dist/index.es233.js.map +1 -1
- package/dist/index.es234.js +25 -11
- package/dist/index.es234.js.map +1 -1
- package/dist/index.es235.js +23 -11
- package/dist/index.es235.js.map +1 -1
- package/dist/index.es236.js +14 -11
- package/dist/index.es236.js.map +1 -1
- package/dist/index.es237.js +13 -14
- package/dist/index.es237.js.map +1 -1
- package/dist/index.es238.js +25 -11
- package/dist/index.es238.js.map +1 -1
- package/dist/index.es239.js +45 -11
- package/dist/index.es239.js.map +1 -1
- package/dist/index.es24.js +142 -88
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es240.js +11 -11
- package/dist/index.es240.js.map +1 -1
- package/dist/index.es241.js +11 -11
- package/dist/index.es241.js.map +1 -1
- package/dist/index.es242.js +11 -11
- package/dist/index.es242.js.map +1 -1
- package/dist/index.es243.js +14 -11
- package/dist/index.es243.js.map +1 -1
- package/dist/index.es244.js +11 -11
- package/dist/index.es244.js.map +1 -1
- package/dist/index.es245.js +10 -10
- package/dist/index.es245.js.map +1 -1
- package/dist/index.es246.js +11 -56
- package/dist/index.es246.js.map +1 -1
- package/dist/index.es247.js +13 -47
- package/dist/index.es247.js.map +1 -1
- package/dist/index.es248.js +11 -119
- package/dist/index.es248.js.map +1 -1
- package/dist/index.es249.js +11 -384
- package/dist/index.es249.js.map +1 -1
- package/dist/index.es25.js +99 -68
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es250.js +11 -18
- package/dist/index.es250.js.map +1 -1
- package/dist/index.es251.js +11 -11
- package/dist/index.es251.js.map +1 -1
- package/dist/index.es252.js +11 -31
- package/dist/index.es252.js.map +1 -1
- package/dist/index.es253.js +11 -31
- package/dist/index.es253.js.map +1 -1
- package/dist/index.es254.js +11 -62
- package/dist/index.es254.js.map +1 -1
- package/dist/index.es255.js +11 -17
- package/dist/index.es255.js.map +1 -1
- package/dist/index.es256.js +48 -69
- package/dist/index.es256.js.map +1 -1
- package/dist/index.es257.js +49 -11
- package/dist/index.es257.js.map +1 -1
- package/dist/index.es258.js +119 -11
- package/dist/index.es258.js.map +1 -1
- package/dist/index.es259.js +384 -15
- package/dist/index.es259.js.map +1 -1
- package/dist/index.es26.js +64 -170
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es260.js +16 -50
- package/dist/index.es260.js.map +1 -1
- package/dist/index.es261.js +10 -165
- package/dist/index.es261.js.map +1 -1
- package/dist/index.es262.js +32 -2
- package/dist/index.es262.js.map +1 -1
- package/dist/index.es263.js +30 -9
- package/dist/index.es263.js.map +1 -1
- package/dist/index.es264.js +59 -16
- package/dist/index.es264.js.map +1 -1
- package/dist/index.es265.js +16 -37
- package/dist/index.es265.js.map +1 -1
- package/dist/index.es266.js +81 -0
- package/dist/index.es266.js.map +1 -0
- package/dist/index.es267.js +15 -0
- package/dist/index.es267.js.map +1 -0
- package/dist/index.es268.js +15 -0
- package/dist/index.es268.js.map +1 -0
- package/dist/index.es269.js +19 -0
- package/dist/index.es269.js.map +1 -0
- package/dist/index.es27.js +178 -12
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es270.js +56 -0
- package/dist/index.es270.js.map +1 -0
- package/dist/index.es271.js +170 -0
- package/dist/index.es271.js.map +1 -0
- package/dist/index.es272.js +5 -0
- package/dist/index.es272.js.map +1 -0
- package/dist/index.es273.js +14 -0
- package/dist/index.es273.js.map +1 -0
- package/dist/index.es274.js +23 -0
- package/dist/index.es274.js.map +1 -0
- package/dist/index.es275.js +42 -0
- package/dist/index.es275.js.map +1 -0
- package/dist/index.es28.js +23 -434
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es29.js +13 -119
- package/dist/index.es29.js.map +1 -1
- package/dist/index.es3.js +2 -3
- package/dist/index.es3.js.map +1 -1
- package/dist/index.es30.js +432 -65
- package/dist/index.es30.js.map +1 -1
- package/dist/index.es31.js +15 -12
- package/dist/index.es31.js.map +1 -1
- package/dist/index.es32.js +112 -252
- package/dist/index.es32.js.map +1 -1
- package/dist/index.es33.js +68 -40
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es34.js +17 -210
- package/dist/index.es34.js.map +1 -1
- package/dist/index.es35.js +247 -53
- package/dist/index.es35.js.map +1 -1
- package/dist/index.es36.js +24 -123
- package/dist/index.es36.js.map +1 -1
- package/dist/index.es37.js +205 -14
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +58 -215
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +140 -7
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es40.js +17 -1192
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +229 -7
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +8 -146
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +1191 -13
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +8 -8
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +138 -84
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +8 -4
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +91 -33
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +3 -71
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +34 -36
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es5.js +44 -2
- package/dist/index.es5.js.map +1 -1
- package/dist/index.es50.js +61 -295
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +38 -9
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +296 -75
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +9 -8
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +89 -13
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +6 -139
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es56.js +12 -297
- package/dist/index.es56.js.map +1 -1
- package/dist/index.es57.js +137 -60
- package/dist/index.es57.js.map +1 -1
- package/dist/index.es58.js +247 -160
- package/dist/index.es58.js.map +1 -1
- package/dist/index.es59.js +63 -31
- package/dist/index.es59.js.map +1 -1
- package/dist/index.es6.js +105 -41
- package/dist/index.es6.js.map +1 -1
- package/dist/index.es60.js +212 -8
- package/dist/index.es60.js.map +1 -1
- package/dist/index.es61.js +32 -10
- package/dist/index.es61.js.map +1 -1
- package/dist/index.es62.js +8 -186
- package/dist/index.es62.js.map +1 -1
- package/dist/index.es63.js +11 -15
- package/dist/index.es63.js.map +1 -1
- package/dist/index.es64.js +183 -1396
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +24 -9
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +1400 -8
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +9 -6
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +8 -5
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +6 -5
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es70.js +161 -10
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +671 -22
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +10 -32
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +31 -223
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +32 -66
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +203 -40
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +28 -55
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +75 -13
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +72 -133
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +51 -20
- package/dist/index.es79.js.map +1 -1
- package/dist/index.es80.js +26 -178
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +38 -236
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +50 -348
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +13 -137
- package/dist/index.es83.js.map +1 -1
- package/dist/index.es84.js +132 -65
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +21 -37
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +179 -34
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +230 -155
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +341 -189
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +136 -13
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es90.js +68 -28
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +33 -30
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +36 -3156
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +162 -77
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +203 -2
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +13 -9
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +28 -273
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +34 -2
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +3138 -145
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +35 -49
- package/dist/index.es99.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -7
- package/src/App.tsx +4 -1
package/dist/index.es59.js
CHANGED
|
@@ -1,37 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { isURLContentBlock, isBase64ContentBlock, isIDContentBlock, parseBase64DataUrl } from "./index.es47.js";
|
|
2
|
+
import { _isContentBlock, _isObject, _isString } from "./index.es74.js";
|
|
3
|
+
function convertToV1FromDataContentBlock(block) {
|
|
4
|
+
if (isURLContentBlock(block)) return {
|
|
5
|
+
type: block.type,
|
|
6
|
+
mimeType: block.mime_type,
|
|
7
|
+
url: block.url,
|
|
8
|
+
metadata: block.metadata
|
|
9
|
+
};
|
|
10
|
+
if (isBase64ContentBlock(block)) return {
|
|
11
|
+
type: block.type,
|
|
12
|
+
mimeType: block.mime_type ?? "application/octet-stream",
|
|
13
|
+
data: block.data,
|
|
14
|
+
metadata: block.metadata
|
|
15
|
+
};
|
|
16
|
+
if (isIDContentBlock(block)) return {
|
|
17
|
+
type: block.type,
|
|
18
|
+
mimeType: block.mime_type,
|
|
19
|
+
fileId: block.id,
|
|
20
|
+
metadata: block.metadata
|
|
21
|
+
};
|
|
22
|
+
return block;
|
|
4
23
|
}
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
function convertToV1FromDataContent(content) {
|
|
25
|
+
return content.map(convertToV1FromDataContentBlock);
|
|
26
|
+
}
|
|
27
|
+
function isOpenAIDataBlock(block) {
|
|
28
|
+
if (_isContentBlock(block, "image_url") && _isObject(block.image_url)) return true;
|
|
29
|
+
if (_isContentBlock(block, "input_audio") && _isObject(block.input_audio)) return true;
|
|
30
|
+
if (_isContentBlock(block, "file") && _isObject(block.file)) return true;
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
function convertToV1FromOpenAIDataBlock(block) {
|
|
34
|
+
if (_isContentBlock(block, "image_url") && _isObject(block.image_url) && _isString(block.image_url.url)) {
|
|
35
|
+
const parsed = parseBase64DataUrl({ dataUrl: block.image_url.url });
|
|
36
|
+
if (parsed) return {
|
|
37
|
+
type: "image",
|
|
38
|
+
mimeType: parsed.mime_type,
|
|
39
|
+
data: parsed.data
|
|
40
|
+
};
|
|
41
|
+
else return {
|
|
42
|
+
type: "image",
|
|
43
|
+
url: block.image_url.url
|
|
44
|
+
};
|
|
45
|
+
} else if (_isContentBlock(block, "input_audio") && _isObject(block.input_audio) && _isString(block.input_audio.data) && _isString(block.input_audio.format)) return {
|
|
46
|
+
type: "audio",
|
|
47
|
+
data: block.input_audio.data,
|
|
48
|
+
mimeType: `audio/${block.input_audio.format}`
|
|
49
|
+
};
|
|
50
|
+
else if (_isContentBlock(block, "file") && _isObject(block.file) && _isString(block.file.data)) {
|
|
51
|
+
const parsed = parseBase64DataUrl({ dataUrl: block.file.data });
|
|
52
|
+
if (parsed) return {
|
|
53
|
+
type: "file",
|
|
54
|
+
data: parsed.data,
|
|
55
|
+
mimeType: parsed.mime_type
|
|
56
|
+
};
|
|
57
|
+
else if (_isString(block.file.file_id)) return {
|
|
58
|
+
type: "file",
|
|
59
|
+
fileId: block.file.file_id
|
|
60
|
+
};
|
|
31
61
|
}
|
|
32
|
-
return
|
|
62
|
+
return block;
|
|
33
63
|
}
|
|
34
64
|
export {
|
|
35
|
-
|
|
65
|
+
convertToV1FromDataContent,
|
|
66
|
+
convertToV1FromOpenAIDataBlock,
|
|
67
|
+
isOpenAIDataBlock
|
|
36
68
|
};
|
|
37
69
|
//# sourceMappingURL=index.es59.js.map
|
package/dist/index.es59.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es59.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.
|
|
1
|
+
{"version":3,"file":"index.es59.js","sources":["../node_modules/.pnpm/@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5_/node_modules/@langchain/core/dist/messages/block_translators/data.js"],"sourcesContent":["import { isBase64ContentBlock, isIDContentBlock, isURLContentBlock, parseBase64DataUrl } from \"../content/data.js\";\nimport { _isContentBlock, _isObject, _isString } from \"./utils.js\";\n\n//#region src/messages/block_translators/data.ts\nfunction convertToV1FromDataContentBlock(block) {\n\tif (isURLContentBlock(block)) return {\n\t\ttype: block.type,\n\t\tmimeType: block.mime_type,\n\t\turl: block.url,\n\t\tmetadata: block.metadata\n\t};\n\tif (isBase64ContentBlock(block)) return {\n\t\ttype: block.type,\n\t\tmimeType: block.mime_type ?? \"application/octet-stream\",\n\t\tdata: block.data,\n\t\tmetadata: block.metadata\n\t};\n\tif (isIDContentBlock(block)) return {\n\t\ttype: block.type,\n\t\tmimeType: block.mime_type,\n\t\tfileId: block.id,\n\t\tmetadata: block.metadata\n\t};\n\treturn block;\n}\nfunction convertToV1FromDataContent(content) {\n\treturn content.map(convertToV1FromDataContentBlock);\n}\nfunction isOpenAIDataBlock(block) {\n\tif (_isContentBlock(block, \"image_url\") && _isObject(block.image_url)) return true;\n\tif (_isContentBlock(block, \"input_audio\") && _isObject(block.input_audio)) return true;\n\tif (_isContentBlock(block, \"file\") && _isObject(block.file)) return true;\n\treturn false;\n}\nfunction convertToV1FromOpenAIDataBlock(block) {\n\tif (_isContentBlock(block, \"image_url\") && _isObject(block.image_url) && _isString(block.image_url.url)) {\n\t\tconst parsed = parseBase64DataUrl({ dataUrl: block.image_url.url });\n\t\tif (parsed) return {\n\t\t\ttype: \"image\",\n\t\t\tmimeType: parsed.mime_type,\n\t\t\tdata: parsed.data\n\t\t};\n\t\telse return {\n\t\t\ttype: \"image\",\n\t\t\turl: block.image_url.url\n\t\t};\n\t} else if (_isContentBlock(block, \"input_audio\") && _isObject(block.input_audio) && _isString(block.input_audio.data) && _isString(block.input_audio.format)) return {\n\t\ttype: \"audio\",\n\t\tdata: block.input_audio.data,\n\t\tmimeType: `audio/${block.input_audio.format}`\n\t};\n\telse if (_isContentBlock(block, \"file\") && _isObject(block.file) && _isString(block.file.data)) {\n\t\tconst parsed = parseBase64DataUrl({ dataUrl: block.file.data });\n\t\tif (parsed) return {\n\t\t\ttype: \"file\",\n\t\t\tdata: parsed.data,\n\t\t\tmimeType: parsed.mime_type\n\t\t};\n\t\telse if (_isString(block.file.file_id)) return {\n\t\t\ttype: \"file\",\n\t\t\tfileId: block.file.file_id\n\t\t};\n\t}\n\treturn block;\n}\n\n//#endregion\nexport { convertToV1FromDataContent, convertToV1FromOpenAIDataBlock, isOpenAIDataBlock };\n//# sourceMappingURL=data.js.map"],"names":[],"mappings":";;AAIA,SAAS,gCAAgC,OAAO;AAC/C,MAAI,kBAAkB,KAAK,EAAG,QAAO;AAAA,IACpC,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,UAAU,MAAM;AAAA,EAClB;AACC,MAAI,qBAAqB,KAAK,EAAG,QAAO;AAAA,IACvC,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM,aAAa;AAAA,IAC7B,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,EAClB;AACC,MAAI,iBAAiB,KAAK,EAAG,QAAO;AAAA,IACnC,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,EAClB;AACC,SAAO;AACR;AACA,SAAS,2BAA2B,SAAS;AAC5C,SAAO,QAAQ,IAAI,+BAA+B;AACnD;AACA,SAAS,kBAAkB,OAAO;AACjC,MAAI,gBAAgB,OAAO,WAAW,KAAK,UAAU,MAAM,SAAS,EAAG,QAAO;AAC9E,MAAI,gBAAgB,OAAO,aAAa,KAAK,UAAU,MAAM,WAAW,EAAG,QAAO;AAClF,MAAI,gBAAgB,OAAO,MAAM,KAAK,UAAU,MAAM,IAAI,EAAG,QAAO;AACpE,SAAO;AACR;AACA,SAAS,+BAA+B,OAAO;AAC9C,MAAI,gBAAgB,OAAO,WAAW,KAAK,UAAU,MAAM,SAAS,KAAK,UAAU,MAAM,UAAU,GAAG,GAAG;AACxG,UAAM,SAAS,mBAAmB,EAAE,SAAS,MAAM,UAAU,KAAK;AAClE,QAAI,OAAQ,QAAO;AAAA,MAClB,MAAM;AAAA,MACN,UAAU,OAAO;AAAA,MACjB,MAAM,OAAO;AAAA,IAChB;AAAA,QACO,QAAO;AAAA,MACX,MAAM;AAAA,MACN,KAAK,MAAM,UAAU;AAAA,IACxB;AAAA,EACC,WAAW,gBAAgB,OAAO,aAAa,KAAK,UAAU,MAAM,WAAW,KAAK,UAAU,MAAM,YAAY,IAAI,KAAK,UAAU,MAAM,YAAY,MAAM,EAAG,QAAO;AAAA,IACpK,MAAM;AAAA,IACN,MAAM,MAAM,YAAY;AAAA,IACxB,UAAU,SAAS,MAAM,YAAY,MAAM;AAAA,EAC7C;AAAA,WACU,gBAAgB,OAAO,MAAM,KAAK,UAAU,MAAM,IAAI,KAAK,UAAU,MAAM,KAAK,IAAI,GAAG;AAC/F,UAAM,SAAS,mBAAmB,EAAE,SAAS,MAAM,KAAK,MAAM;AAC9D,QAAI,OAAQ,QAAO;AAAA,MAClB,MAAM;AAAA,MACN,MAAM,OAAO;AAAA,MACb,UAAU,OAAO;AAAA,IACpB;AAAA,aACW,UAAU,MAAM,KAAK,OAAO,EAAG,QAAO;AAAA,MAC9C,MAAM;AAAA,MACN,QAAQ,MAAM,KAAK;AAAA,IACtB;AAAA,EACC;AACA,SAAO;AACR;","x_google_ignoreList":[0]}
|
package/dist/index.es6.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useChatRuntime } from "./index.es4.js";
|
|
3
3
|
import "@langchain/langgraph-sdk";
|
|
4
|
-
import "./index.
|
|
5
|
-
import { createContext, useContext,
|
|
6
|
-
import { useStream } from "./index.
|
|
7
|
-
import
|
|
8
|
-
import "./index.es16.js";
|
|
4
|
+
import "./index.es15.js";
|
|
5
|
+
import { createContext, useContext, useState, useCallback, useMemo, useEffect } from "react";
|
|
6
|
+
import { useStream } from "./index.es16.js";
|
|
7
|
+
import "./index.es17.js";
|
|
9
8
|
import { toast } from "sonner";
|
|
9
|
+
import { v4 } from "uuid";
|
|
10
10
|
import { useThread } from "./index.es5.js";
|
|
11
|
-
import { isUIMessage, isRemoveUIMessage, uiMessageReducer } from "./index.
|
|
11
|
+
import { isUIMessage, isRemoveUIMessage, uiMessageReducer } from "./index.es18.js";
|
|
12
12
|
const useTypedStream = useStream;
|
|
13
13
|
const StreamContext = createContext(void 0);
|
|
14
14
|
async function checkGraphStatus(apiUrl, authToken) {
|
|
@@ -21,14 +21,15 @@ async function checkGraphStatus(apiUrl, authToken) {
|
|
|
21
21
|
console.error("Failed to intialize LangGraph Agent");
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
const StreamSession = ({
|
|
24
|
+
const StreamSession = ({ children }) => {
|
|
25
25
|
const { apiUrl, assistantId, identity } = useChatRuntime();
|
|
26
|
-
const { threadId, setThreadId, configuration } = useThread();
|
|
26
|
+
const { mode, threadId, setThreadId, configuration } = useThread();
|
|
27
|
+
const [localMessages, setLocalMessages] = useState([]);
|
|
28
|
+
const [localUI, setLocalUI] = useState([]);
|
|
27
29
|
const streamValue = useTypedStream({
|
|
28
30
|
apiUrl,
|
|
29
31
|
assistantId,
|
|
30
|
-
threadId,
|
|
31
|
-
// null initially → LangGraph creates it
|
|
32
|
+
threadId: mode === "multi" ? threadId : null,
|
|
32
33
|
defaultHeaders: identity?.authToken ? { Authorization: `Bearer ${identity?.authToken}` } : void 0,
|
|
33
34
|
fetchStateHistory: true,
|
|
34
35
|
onCustomEvent: (event, options) => {
|
|
@@ -40,50 +41,106 @@ const StreamSession = ({ fallbackMessage, children }) => {
|
|
|
40
41
|
}
|
|
41
42
|
},
|
|
42
43
|
onThreadId: (id) => {
|
|
43
|
-
if (id
|
|
44
|
+
if (!id) return;
|
|
45
|
+
if (mode === "single") {
|
|
46
|
+
if (!threadId) setThreadId(id);
|
|
47
|
+
} else {
|
|
44
48
|
setThreadId(id);
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
});
|
|
48
|
-
const
|
|
49
|
-
async (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
const sendMessage = useCallback(
|
|
53
|
+
async (message, options) => {
|
|
54
|
+
const messageId = options?.id || v4();
|
|
55
|
+
const messageObj = typeof message === "string" ? {
|
|
56
|
+
id: messageId,
|
|
57
|
+
// Use the determined ID
|
|
58
|
+
type: options?.type ?? "human",
|
|
59
|
+
content: message,
|
|
60
|
+
...options?.name && { name: options.name },
|
|
61
|
+
...options?.tool_calls && { tool_calls: options.tool_calls },
|
|
62
|
+
...options?.invalid_tool_calls && { invalid_tool_calls: options.invalid_tool_calls },
|
|
63
|
+
...options?.tool_call_id && { tool_call_id: options.tool_call_id },
|
|
64
|
+
...(options?.additional_kwargs || options?.hidden) && {
|
|
65
|
+
additional_kwargs: {
|
|
66
|
+
...options?.hidden && { hidden: true },
|
|
67
|
+
...options?.additional_kwargs ?? {}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
} : {
|
|
71
|
+
...message,
|
|
72
|
+
id: messageId,
|
|
73
|
+
// Override with determined ID
|
|
74
|
+
// Allow overriding message fields with options
|
|
75
|
+
...options?.tool_calls && { tool_calls: options.tool_calls },
|
|
76
|
+
...options?.additional_kwargs && {
|
|
77
|
+
additional_kwargs: {
|
|
78
|
+
...message.additional_kwargs,
|
|
79
|
+
...options.additional_kwargs
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
if (options?.type === "ai") {
|
|
84
|
+
setLocalMessages((prev) => [...prev, messageObj]);
|
|
85
|
+
if (options.ui && options.ui.length > 0) {
|
|
86
|
+
const uiWithMessageId = options.ui.map((ui) => ({
|
|
87
|
+
...ui,
|
|
88
|
+
id: messageId
|
|
89
|
+
// Use the same message ID so CustomComponentRender can find it
|
|
90
|
+
}));
|
|
91
|
+
setLocalUI((prev) => [...prev, ...uiWithMessageId]);
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const currentMessages = streamValue.messages || [];
|
|
96
|
+
await streamValue.submit(
|
|
97
|
+
{ messages: [...currentMessages, messageObj] },
|
|
98
|
+
// Append to existing messages
|
|
99
|
+
{
|
|
53
100
|
config: {
|
|
54
|
-
...options?.config
|
|
101
|
+
...options?.config,
|
|
55
102
|
configurable: {
|
|
56
103
|
...identity,
|
|
57
104
|
...configuration,
|
|
58
105
|
...options?.config?.configurable ?? {}
|
|
59
106
|
}
|
|
60
107
|
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
console.error("Agent API failed:", error);
|
|
64
|
-
const errorMessage = fallbackMessage || "Agent is down. Will get back to you soon! Try again later.";
|
|
65
|
-
sendMessage(errorMessage, { type: "system" });
|
|
66
|
-
}
|
|
108
|
+
}
|
|
109
|
+
);
|
|
67
110
|
},
|
|
68
|
-
[streamValue, identity, configuration,
|
|
111
|
+
[streamValue, identity, configuration, setLocalMessages, setLocalUI]
|
|
69
112
|
);
|
|
70
|
-
const
|
|
113
|
+
const combinedMessages = useMemo(() => {
|
|
114
|
+
return [...localMessages, ...streamValue.messages || []];
|
|
115
|
+
}, [localMessages, streamValue.messages]);
|
|
116
|
+
const combinedUI = useMemo(() => {
|
|
117
|
+
return [...localUI, ...streamValue.values?.ui || []];
|
|
118
|
+
}, [localUI, streamValue.values?.ui]);
|
|
119
|
+
const submitMessage = useCallback(
|
|
71
120
|
async (message, options) => {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
content: message
|
|
76
|
-
} : {
|
|
77
|
-
...message
|
|
78
|
-
};
|
|
79
|
-
await submit(
|
|
80
|
-
{ messages: [messageObj] },
|
|
121
|
+
const allCurrentMessages = combinedMessages || [];
|
|
122
|
+
await streamValue.submit(
|
|
123
|
+
{ messages: [...allCurrentMessages, message] },
|
|
81
124
|
{
|
|
82
|
-
|
|
125
|
+
streamMode: options?.streamMode || ["values"],
|
|
126
|
+
streamSubgraphs: options?.streamSubgraphs ?? true,
|
|
127
|
+
streamResumable: options?.streamResumable ?? true,
|
|
128
|
+
optimisticValues: (prev) => ({
|
|
129
|
+
...prev,
|
|
130
|
+
messages: [...allCurrentMessages, message]
|
|
131
|
+
}),
|
|
132
|
+
config: {
|
|
133
|
+
...options?.config,
|
|
134
|
+
configurable: {
|
|
135
|
+
...identity,
|
|
136
|
+
...configuration,
|
|
137
|
+
...options?.config?.configurable ?? {}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
83
140
|
}
|
|
84
141
|
);
|
|
85
142
|
},
|
|
86
|
-
[
|
|
143
|
+
[streamValue, identity, configuration, combinedMessages]
|
|
87
144
|
);
|
|
88
145
|
useEffect(() => {
|
|
89
146
|
checkGraphStatus(apiUrl, identity?.authToken).then((ok) => {
|
|
@@ -98,15 +155,22 @@ const StreamSession = ({ fallbackMessage, children }) => {
|
|
|
98
155
|
const value = useMemo(
|
|
99
156
|
() => ({
|
|
100
157
|
...streamValue,
|
|
101
|
-
|
|
102
|
-
|
|
158
|
+
messages: combinedMessages,
|
|
159
|
+
// Override with combined messages
|
|
160
|
+
values: {
|
|
161
|
+
...streamValue.values,
|
|
162
|
+
ui: combinedUI
|
|
163
|
+
// Override with combined UI
|
|
164
|
+
},
|
|
165
|
+
sendMessage,
|
|
166
|
+
submitMessage
|
|
103
167
|
}),
|
|
104
|
-
[streamValue,
|
|
168
|
+
[streamValue, combinedMessages, combinedUI, sendMessage, submitMessage]
|
|
105
169
|
);
|
|
106
170
|
return /* @__PURE__ */ jsx(StreamContext.Provider, { value, children });
|
|
107
171
|
};
|
|
108
|
-
function StreamProvider({
|
|
109
|
-
return /* @__PURE__ */ jsx(StreamSession, {
|
|
172
|
+
function StreamProvider({ children }) {
|
|
173
|
+
return /* @__PURE__ */ jsx(StreamSession, { children });
|
|
110
174
|
}
|
|
111
175
|
function useStreamContext() {
|
|
112
176
|
const ctx = useContext(StreamContext);
|
package/dist/index.es6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es6.js","sources":["../src/providers/Stream.tsx"],"sourcesContent":["/* @refresh reset */\nimport { useChatRuntime } from \"@/providers/ChatRuntime\";\nimport { type Message } from \"@langchain/langgraph-sdk\";\nimport { useStream } from \"@langchain/langgraph-sdk/react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport {\n isRemoveUIMessage,\n isUIMessage,\n type RemoveUIMessage,\n type UIMessage,\n uiMessageReducer,\n} from \"@langchain/langgraph-sdk/react-ui\";\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n} from \"react\";\nimport { toast } from \"sonner\";\nimport { useThread } from \"./Thread\";\n\nexport type StateType = {\n messages: Message[];\n ui?: UIMessage[];\n suggestions?: string[];\n};\n\nconst useTypedStream = useStream<\n StateType,\n {\n UpdateType: {\n messages?: Message[] | Message | string;\n ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;\n };\n CustomEventType: UIMessage | RemoveUIMessage;\n }\n>;\n\ntype StreamContextType = ReturnType<typeof useTypedStream> & {\n submit: ReturnType<typeof useTypedStream>[\"submit\"];\n sendMessage: (\n message: Message | string,\n options?: {\n /** If true, message is meant for agent only (not user-visible) */\n type?: Message[\"type\"];\n /** Additional config to pass to the agent */\n config?: any;\n }\n ) => Promise<void>;\n};\n\nconst StreamContext = createContext<StreamContextType | undefined>(undefined);\n\nasync function checkGraphStatus(apiUrl: string, authToken: string | null | undefined) {\n try {\n const res = await fetch(`${apiUrl}/info`, {\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n return res.ok;\n } catch {\n console.error(\"Failed to intialize LangGraph Agent\");\n }\n}\n\nconst StreamSession = ({ fallbackMessage, children }: { fallbackMessage?: string; children: ReactNode }) => {\n const { apiUrl, assistantId, identity } = useChatRuntime();\n const { threadId, setThreadId, configuration } = useThread();\n\n const streamValue = useTypedStream({\n apiUrl,\n assistantId,\n threadId, // null initially → LangGraph creates it\n defaultHeaders: identity?.authToken\n ? { Authorization: `Bearer ${identity?.authToken}` }\n : undefined,\n fetchStateHistory: true,\n onCustomEvent: (event, options) => {\n if (isUIMessage(event) || isRemoveUIMessage(event)) {\n options.mutate((prev) => {\n // console.log(\"UI Event received in StreamProvider:\", event);\n const ui = uiMessageReducer(prev.ui ?? [], event);\n return { ...prev, ui };\n });\n }\n },\n\n onThreadId: (id) => {\n if (id && id !== threadId) {\n setThreadId(id); // store once\n }\n },\n });\n\n /**\n * SINGLE THREAD submit\n * user_id + org_id ALWAYS passed\n */\n const submit = useCallback(\n async (\n input: Parameters<typeof streamValue.submit>[0],\n options?: Parameters<typeof streamValue.submit>[1]\n ) => {\n try {\n return await streamValue.submit(input, {\n ...options,\n config: {\n ...(options?.config ?? {}),\n configurable: {\n ...identity,\n ...configuration,\n ...(options?.config?.configurable ?? {}),\n },\n },\n });\n } catch (error) {\n console.error(\"Agent API failed:\", error);\n\n // Add fallback message as an AI response\n const errorMessage = fallbackMessage || \"Agent is down. Will get back to you soon! Try again later.\";\n\n sendMessage(errorMessage, { type: \"system\" });\n }\n },\n [streamValue, identity, configuration, fallbackMessage]\n );\n\n /**\n * Send a message to the agent programmatically\n * Useful for triggering agent actions without user-visible messages\n * e.g., \"login completed\", \"card clicked: {id}\"\n */\n const sendMessage = useCallback(\n async (\n message: Message | string,\n options?: {\n type?: Message[\"type\"];\n config?: any;\n }\n ) => {\n const messageObj: Message =\n typeof message === \"string\"\n ? ({\n id: uuidv4(),\n type: options?.type ?? \"human\",\n content: message,\n } as Message)\n : {\n ...message,\n };\n\n await submit(\n { messages: [messageObj] },\n {\n config: options?.config,\n }\n );\n },\n [submit]\n );\n\n useEffect(() => {\n checkGraphStatus(apiUrl, identity?.authToken).then((ok) => {\n if (!ok) {\n toast.error(\"Failed to connect to LangGraph server\", {\n description: `Unable to reach ${apiUrl}`,\n duration: 10000,\n });\n }\n });\n }, [apiUrl, identity?.authToken]);\n\n const value = useMemo(\n () => ({\n ...streamValue,\n submit,\n sendMessage,\n }),\n [streamValue, submit, sendMessage]\n );\n\n return (\n <StreamContext.Provider value={value}>{children}</StreamContext.Provider>\n );\n};\n\n/**\n * Provides streaming message functionality for real-time AI responses.\n * Manages message state, handles streaming updates, and provides submit/sendMessage functions.\n * \n * @param fallbackMessage - Optional custom message to display when agent API fails (default: \"Agent is down. Will get back to you soon! Try again later.\")\n * \n * @example\n * ```tsx\n * <StreamProvider fallbackMessage=\"Our AI is currently offline. Please try again soon.\">\n * <ChatInterface />\n * </StreamProvider>\n * ```\n */\nexport function StreamProvider({ fallbackMessage, children }: { fallbackMessage?: string; children: ReactNode }) {\n return <StreamSession fallbackMessage={fallbackMessage}>{children}</StreamSession>;\n}\n\n/**\n * Hook to access the streaming context.\n * Provides access to messages, loading state, and functions to submit messages.\n * \n * @throws {Error} If used outside of StreamProvider\n * \n * @example\n * ```tsx\n * const { messages, isLoading, submit, sendMessage } = useStreamContext();\n * ```\n */\nexport function useStreamContext(): StreamContextType {\n const ctx = useContext(StreamContext);\n if (!ctx) {\n throw new Error(\"useStreamContext must be used within StreamProvider\");\n }\n return ctx;\n}\n"],"names":["uuidv4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es6.js","sources":["../src/providers/Stream.tsx"],"sourcesContent":["/* @refresh reset */\nimport { useChatRuntime } from \"@/providers/ChatRuntime\";\nimport { type Message } from \"@langchain/langgraph-sdk\";\nimport { useStream, type UseStream } from \"@langchain/langgraph-sdk/react\";\nimport {\n isRemoveUIMessage,\n isUIMessage,\n type RemoveUIMessage,\n type UIMessage,\n uiMessageReducer,\n} from \"@langchain/langgraph-sdk/react-ui\";\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { toast } from \"sonner\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useThread } from \"./Thread\";\n\nexport type StateType = {\n messages: Message[];\n ui?: UIMessage[];\n suggestions?: string[];\n};\n\nconst useTypedStream = useStream<\n StateType,\n {\n UpdateType: {\n messages?: Message[] | Message | string;\n ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;\n };\n CustomEventType: UIMessage | RemoveUIMessage;\n }\n>;\n\ntype StreamContextType = UseStream<StateType, {\n UpdateType: {\n messages?: Message[] | Message | string;\n ui?: (UIMessage | RemoveUIMessage)[] | UIMessage | RemoveUIMessage;\n };\n CustomEventType: UIMessage | RemoveUIMessage;\n}> & {\n sendMessage: (\n message: Message | string,\n options?: {\n /** If true, message is meant for agent only (not user-visible) */\n type?: Message[\"type\"];\n /** Additional config to pass to the agent */\n config?: any;\n /** Name field required for function/tool messages */\n name?: string;\n /** If true, message is hidden from user UI */\n hidden?: boolean;\n /** Tool calls associated with this message */\n tool_calls?: any[];\n /** Invalid tool calls associated with this message */\n invalid_tool_calls?: any[];\n /** If provided, use this ID for the message instead of generating one */\n tool_call_id?: string;\n /** Additional kwargs to attach to the message */\n additional_kwargs?: Record<string, unknown>;\n /** UI components to display alongside the message */\n ui?: UIMessage[];\n /** Custom ID for the message (will also be used for UI components) */\n id?: string;\n }\n ) => Promise<void>;\n submitMessage: (\n message: Message,\n options?: {\n streamMode?: (\"values\" | \"updates\" | \"messages\" | \"custom\" | \"debug\")[];\n streamSubgraphs?: boolean;\n streamResumable?: boolean;\n config?: any;\n }\n ) => Promise<void>;\n};\n\nconst StreamContext = createContext<StreamContextType | undefined>(undefined);\n\nasync function checkGraphStatus(apiUrl: string, authToken: string | null | undefined) {\n try {\n const res = await fetch(`${apiUrl}/info`, {\n headers: authToken ? { Authorization: `Bearer ${authToken}` } : undefined,\n });\n return res.ok;\n } catch {\n console.error(\"Failed to intialize LangGraph Agent\");\n }\n}\n\nconst StreamSession = ({ children }: { children: ReactNode }) => {\n const { apiUrl, assistantId, identity } = useChatRuntime();\n const { mode, threadId, setThreadId, configuration } = useThread();\n\n // Store local-only AI messages that shouldn't trigger backend calls\n const [localMessages, setLocalMessages] = useState<Message[]>([]);\n // Store local-only UI components\n const [localUI, setLocalUI] = useState<UIMessage[]>([]);\n\n const streamValue = useTypedStream({\n apiUrl,\n assistantId,\n threadId: mode === \"multi\" ? threadId : null,\n defaultHeaders: identity?.authToken\n ? { Authorization: `Bearer ${identity?.authToken}` }\n : undefined,\n fetchStateHistory: true,\n onCustomEvent: (event, options) => {\n if (isUIMessage(event) || isRemoveUIMessage(event)) {\n options.mutate((prev) => {\n // console.log(\"UI Event received in StreamProvider:\", event);\n const ui = uiMessageReducer(prev.ui ?? [], event);\n return { ...prev, ui };\n });\n }\n },\n\n onThreadId: (id) => {\n if (!id) return;\n if (mode === \"single\") {\n // lock once\n if (!threadId) setThreadId(id);\n } else {\n // switch freely\n setThreadId(id);\n }\n },\n });\n\n /**\n * Send a message to the agent programmatically\n * Useful for triggering agent actions without user-visible messages\n * e.g., \"login completed\", \"card clicked: {id}\"\n */\n const sendMessage = useCallback(\n async (\n message: Message | string,\n options?: {\n type?: Message[\"type\"];\n config?: any;\n name?: string;\n hidden?: boolean;\n tool_calls?: any[];\n invalid_tool_calls?: any[];\n tool_call_id?: string;\n additional_kwargs?: Record<string, unknown>;\n ui?: UIMessage[];\n id?: string; // Allow passing custom ID\n }\n ) => {\n // Use provided ID or generate new one\n const messageId = options?.id || uuidv4();\n\n const messageObj: Message =\n typeof message === \"string\"\n ? ({\n id: messageId, // Use the determined ID\n type: options?.type ?? \"human\",\n content: message,\n ...(options?.name && { name: options.name }),\n ...(options?.tool_calls && { tool_calls: options.tool_calls }),\n ...(options?.invalid_tool_calls && { invalid_tool_calls: options.invalid_tool_calls }),\n ...(options?.tool_call_id && { tool_call_id: options.tool_call_id }),\n ...((options?.additional_kwargs || options?.hidden) && {\n additional_kwargs: {\n ...(options?.hidden && { hidden: true }),\n ...(options?.additional_kwargs ?? {}),\n }\n }),\n } as Message)\n : {\n ...message,\n id: messageId, // Override with determined ID\n // Allow overriding message fields with options\n ...(options?.tool_calls && { tool_calls: options.tool_calls }),\n ...(options?.additional_kwargs && {\n additional_kwargs: {\n ...message.additional_kwargs,\n ...options.additional_kwargs,\n }\n }),\n };\n\n // console.log(\"Sending message via sendMessage:\", messageObj);\n\n // If message type is \"ai\", just append to local state without submitting to agent\n // This is useful for injecting initial messages or system messages that don't need agent processing\n if (options?.type === \"ai\") {\n setLocalMessages((prev) => [...prev, messageObj]);\n // console.log(\"Appended AI message to localMessages:\", options?.ui)\n // Also store any UI components, linking them to the message id\n if (options.ui && options.ui.length > 0) {\n const uiWithMessageId = options.ui.map(ui => ({\n ...ui,\n id: messageId, // Use the same message ID so CustomComponentRender can find it\n })) as UIMessage[];\n setLocalUI((prev) => [...prev, ...uiWithMessageId]);\n }\n return;\n }\n\n // For non-AI messages, submit to the agent\n const currentMessages = streamValue.messages || [];\n await streamValue.submit(\n { messages: [...currentMessages, messageObj] }, // Append to existing messages\n {\n config: {\n ...options?.config,\n configurable: {\n ...identity,\n ...configuration,\n ...(options?.config?.configurable ?? {}),\n },\n },\n }\n );\n },\n [streamValue, identity, configuration, setLocalMessages, setLocalUI]\n );\n\n // Combine stream messages with local AI messages, maintaining chronological order\n const combinedMessages = useMemo(() => {\n return [...localMessages, ...(streamValue.messages || [])];\n }, [localMessages, streamValue.messages]);\n\n // Combine local UI with stream UI\n const combinedUI = useMemo(() => {\n // console.log(\"Combining local UI with stream UI:\", localUI, streamValue.values?.ui);\n return [...localUI, ...(streamValue.values?.ui || [])];\n }, [localUI, streamValue.values?.ui]);\n\n const submitMessage = useCallback(\n async (\n message: Message,\n options?: {\n streamMode?: (\"values\" | \"updates\" | \"messages\" | \"custom\" | \"debug\")[];\n streamSubgraphs?: boolean;\n streamResumable?: boolean;\n config?: any;\n }\n ) => {\n // Get ALL current messages (including local AI messages)\n const allCurrentMessages = combinedMessages || [];\n\n await streamValue.submit(\n { messages: [...allCurrentMessages, message] },\n {\n streamMode: options?.streamMode || [\"values\"],\n streamSubgraphs: options?.streamSubgraphs ?? true,\n streamResumable: options?.streamResumable ?? true,\n optimisticValues: (prev) => ({\n ...prev,\n messages: [...allCurrentMessages, message],\n }),\n config: {\n ...options?.config,\n configurable: {\n ...identity,\n ...configuration,\n ...(options?.config?.configurable ?? {}),\n },\n },\n }\n );\n },\n [streamValue, identity, configuration, combinedMessages]\n);\n\n useEffect(() => {\n checkGraphStatus(apiUrl, identity?.authToken).then((ok) => {\n if (!ok) {\n toast.error(\"Failed to connect to LangGraph server\", {\n description: `Unable to reach ${apiUrl}`,\n duration: 10000,\n });\n }\n });\n }, [apiUrl, identity?.authToken]);\n\n const value = useMemo(\n () => ({\n ...streamValue,\n messages: combinedMessages, // Override with combined messages\n values: {\n ...streamValue.values,\n ui: combinedUI, // Override with combined UI\n },\n sendMessage,\n submitMessage,\n }),\n [streamValue, combinedMessages, combinedUI, sendMessage, submitMessage]\n );\n\n return (\n <StreamContext.Provider value={value}>{children}</StreamContext.Provider>\n );\n};\n\n/**\n * Provides streaming message functionality for real-time AI responses.\n * Manages message state, handles streaming updates, and provides submit/sendMessage functions.\n * \n * @example\n * ```tsx\n * <StreamProvider>\n * <ChatInterface />\n * </StreamProvider>\n * ```\n */\nexport function StreamProvider({ children }: { children: ReactNode }) {\n return <StreamSession>{children}</StreamSession>;\n}\n\n/**\n * Hook to access the streaming context.\n * Provides access to messages, loading state, and functions to submit messages.\n * \n * @throws {Error} If used outside of StreamProvider\n * \n * @example\n * ```tsx\n * const { messages, isLoading, submit, sendMessage } = useStreamContext();\n * ```\n */\nexport function useStreamContext(): StreamContextType {\n const ctx = useContext(StreamContext);\n if (!ctx) {\n throw new Error(\"useStreamContext must be used within StreamProvider\");\n }\n return ctx;\n}\n"],"names":["uuidv4"],"mappings":"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"}
|
package/dist/index.es60.js
CHANGED
|
@@ -1,12 +1,216 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { _isObject, _isArray, _isString, _isContentBlock, iife } from "./index.es74.js";
|
|
2
|
+
import { isOpenAIDataBlock, convertToV1FromOpenAIDataBlock } from "./index.es59.js";
|
|
3
|
+
function convertToV1FromChatCompletions(message) {
|
|
4
|
+
const blocks = [];
|
|
5
|
+
if (typeof message.content === "string") blocks.push({
|
|
6
|
+
type: "text",
|
|
7
|
+
text: message.content
|
|
8
|
+
});
|
|
9
|
+
else blocks.push(...convertToV1FromChatCompletionsInput(message.content));
|
|
10
|
+
for (const toolCall of message.tool_calls ?? []) blocks.push({
|
|
11
|
+
type: "tool_call",
|
|
12
|
+
id: toolCall.id,
|
|
13
|
+
name: toolCall.name,
|
|
14
|
+
args: toolCall.args
|
|
15
|
+
});
|
|
16
|
+
return blocks;
|
|
8
17
|
}
|
|
18
|
+
function convertToV1FromChatCompletionsChunk(message) {
|
|
19
|
+
const blocks = [];
|
|
20
|
+
if (typeof message.content === "string") blocks.push({
|
|
21
|
+
type: "text",
|
|
22
|
+
text: message.content
|
|
23
|
+
});
|
|
24
|
+
else blocks.push(...convertToV1FromChatCompletionsInput(message.content));
|
|
25
|
+
for (const toolCall of message.tool_calls ?? []) blocks.push({
|
|
26
|
+
type: "tool_call",
|
|
27
|
+
id: toolCall.id,
|
|
28
|
+
name: toolCall.name,
|
|
29
|
+
args: toolCall.args
|
|
30
|
+
});
|
|
31
|
+
return blocks;
|
|
32
|
+
}
|
|
33
|
+
function convertToV1FromChatCompletionsInput(blocks) {
|
|
34
|
+
const convertedBlocks = [];
|
|
35
|
+
for (const block of blocks) if (isOpenAIDataBlock(block)) convertedBlocks.push(convertToV1FromOpenAIDataBlock(block));
|
|
36
|
+
else convertedBlocks.push(block);
|
|
37
|
+
return convertedBlocks;
|
|
38
|
+
}
|
|
39
|
+
function convertResponsesAnnotation(annotation) {
|
|
40
|
+
if (annotation.type === "url_citation") {
|
|
41
|
+
const { url, title, start_index, end_index } = annotation;
|
|
42
|
+
return {
|
|
43
|
+
type: "citation",
|
|
44
|
+
url,
|
|
45
|
+
title,
|
|
46
|
+
startIndex: start_index,
|
|
47
|
+
endIndex: end_index
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (annotation.type === "file_citation") {
|
|
51
|
+
const { file_id, filename, index } = annotation;
|
|
52
|
+
return {
|
|
53
|
+
type: "citation",
|
|
54
|
+
title: filename,
|
|
55
|
+
startIndex: index,
|
|
56
|
+
endIndex: index,
|
|
57
|
+
fileId: file_id
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return annotation;
|
|
61
|
+
}
|
|
62
|
+
function convertToV1FromResponses(message) {
|
|
63
|
+
function* iterateContent() {
|
|
64
|
+
if (_isObject(message.additional_kwargs?.reasoning) && _isArray(message.additional_kwargs.reasoning.summary)) {
|
|
65
|
+
const summary = message.additional_kwargs.reasoning.summary.reduce((acc, item) => {
|
|
66
|
+
if (_isObject(item) && _isString(item.text)) return `${acc}${item.text}`;
|
|
67
|
+
return acc;
|
|
68
|
+
}, "");
|
|
69
|
+
yield {
|
|
70
|
+
type: "reasoning",
|
|
71
|
+
reasoning: summary
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const content = typeof message.content === "string" ? [{
|
|
75
|
+
type: "text",
|
|
76
|
+
text: message.content
|
|
77
|
+
}] : message.content;
|
|
78
|
+
for (const block of content) if (_isContentBlock(block, "text")) {
|
|
79
|
+
const { text, annotations, ...rest } = block;
|
|
80
|
+
if (Array.isArray(annotations)) yield {
|
|
81
|
+
...rest,
|
|
82
|
+
type: "text",
|
|
83
|
+
text: String(text),
|
|
84
|
+
annotations: annotations.map(convertResponsesAnnotation)
|
|
85
|
+
};
|
|
86
|
+
else yield {
|
|
87
|
+
...rest,
|
|
88
|
+
type: "text",
|
|
89
|
+
text: String(text)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
for (const toolCall of message.tool_calls ?? []) yield {
|
|
93
|
+
type: "tool_call",
|
|
94
|
+
id: toolCall.id,
|
|
95
|
+
name: toolCall.name,
|
|
96
|
+
args: toolCall.args
|
|
97
|
+
};
|
|
98
|
+
if (_isObject(message.additional_kwargs) && _isArray(message.additional_kwargs.tool_outputs)) for (const toolOutput of message.additional_kwargs.tool_outputs) {
|
|
99
|
+
if (_isContentBlock(toolOutput, "web_search_call")) {
|
|
100
|
+
yield {
|
|
101
|
+
id: toolOutput.id,
|
|
102
|
+
type: "server_tool_call",
|
|
103
|
+
name: "web_search",
|
|
104
|
+
args: { query: toolOutput.query }
|
|
105
|
+
};
|
|
106
|
+
continue;
|
|
107
|
+
} else if (_isContentBlock(toolOutput, "file_search_call")) {
|
|
108
|
+
yield {
|
|
109
|
+
id: toolOutput.id,
|
|
110
|
+
type: "server_tool_call",
|
|
111
|
+
name: "file_search",
|
|
112
|
+
args: { query: toolOutput.query }
|
|
113
|
+
};
|
|
114
|
+
continue;
|
|
115
|
+
} else if (_isContentBlock(toolOutput, "computer_call")) {
|
|
116
|
+
yield {
|
|
117
|
+
type: "non_standard",
|
|
118
|
+
value: toolOutput
|
|
119
|
+
};
|
|
120
|
+
continue;
|
|
121
|
+
} else if (_isContentBlock(toolOutput, "code_interpreter_call")) {
|
|
122
|
+
if (_isString(toolOutput.code)) yield {
|
|
123
|
+
id: toolOutput.id,
|
|
124
|
+
type: "server_tool_call",
|
|
125
|
+
name: "code_interpreter",
|
|
126
|
+
args: { code: toolOutput.code }
|
|
127
|
+
};
|
|
128
|
+
if (_isArray(toolOutput.outputs)) {
|
|
129
|
+
const returnCode = iife(() => {
|
|
130
|
+
if (toolOutput.status === "in_progress") return void 0;
|
|
131
|
+
if (toolOutput.status === "completed") return 0;
|
|
132
|
+
if (toolOutput.status === "incomplete") return 127;
|
|
133
|
+
if (toolOutput.status === "interpreting") return void 0;
|
|
134
|
+
if (toolOutput.status === "failed") return 1;
|
|
135
|
+
return void 0;
|
|
136
|
+
});
|
|
137
|
+
for (const output of toolOutput.outputs) if (_isContentBlock(output, "logs")) {
|
|
138
|
+
yield {
|
|
139
|
+
type: "server_tool_call_result",
|
|
140
|
+
toolCallId: toolOutput.id ?? "",
|
|
141
|
+
status: "success",
|
|
142
|
+
output: {
|
|
143
|
+
type: "code_interpreter_output",
|
|
144
|
+
returnCode: returnCode ?? 0,
|
|
145
|
+
stderr: [0, void 0].includes(returnCode) ? void 0 : String(output.logs),
|
|
146
|
+
stdout: [0, void 0].includes(returnCode) ? String(output.logs) : void 0
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
continue;
|
|
153
|
+
} else if (_isContentBlock(toolOutput, "mcp_call")) {
|
|
154
|
+
yield {
|
|
155
|
+
id: toolOutput.id,
|
|
156
|
+
type: "server_tool_call",
|
|
157
|
+
name: "mcp_call",
|
|
158
|
+
args: toolOutput.input
|
|
159
|
+
};
|
|
160
|
+
continue;
|
|
161
|
+
} else if (_isContentBlock(toolOutput, "mcp_list_tools")) {
|
|
162
|
+
yield {
|
|
163
|
+
id: toolOutput.id,
|
|
164
|
+
type: "server_tool_call",
|
|
165
|
+
name: "mcp_list_tools",
|
|
166
|
+
args: toolOutput.input
|
|
167
|
+
};
|
|
168
|
+
continue;
|
|
169
|
+
} else if (_isContentBlock(toolOutput, "mcp_approval_request")) {
|
|
170
|
+
yield {
|
|
171
|
+
type: "non_standard",
|
|
172
|
+
value: toolOutput
|
|
173
|
+
};
|
|
174
|
+
continue;
|
|
175
|
+
} else if (_isContentBlock(toolOutput, "image_generation_call")) {
|
|
176
|
+
yield {
|
|
177
|
+
type: "non_standard",
|
|
178
|
+
value: toolOutput
|
|
179
|
+
};
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (_isObject(toolOutput)) yield {
|
|
183
|
+
type: "non_standard",
|
|
184
|
+
value: toolOutput
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return Array.from(iterateContent());
|
|
189
|
+
}
|
|
190
|
+
function convertToV1FromResponsesChunk(message) {
|
|
191
|
+
function* iterateContent() {
|
|
192
|
+
yield* convertToV1FromResponses(message);
|
|
193
|
+
for (const toolCallChunk of message.tool_call_chunks ?? []) yield {
|
|
194
|
+
type: "tool_call_chunk",
|
|
195
|
+
id: toolCallChunk.id,
|
|
196
|
+
name: toolCallChunk.name,
|
|
197
|
+
args: toolCallChunk.args
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return Array.from(iterateContent());
|
|
201
|
+
}
|
|
202
|
+
const ChatOpenAITranslator = {
|
|
203
|
+
translateContent: (message) => {
|
|
204
|
+
if (typeof message.content === "string") return convertToV1FromChatCompletions(message);
|
|
205
|
+
return convertToV1FromResponses(message);
|
|
206
|
+
},
|
|
207
|
+
translateContentChunk: (message) => {
|
|
208
|
+
if (typeof message.content === "string") return convertToV1FromChatCompletionsChunk(message);
|
|
209
|
+
return convertToV1FromResponsesChunk(message);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
9
212
|
export {
|
|
10
|
-
|
|
213
|
+
ChatOpenAITranslator,
|
|
214
|
+
convertToV1FromChatCompletionsInput
|
|
11
215
|
};
|
|
12
216
|
//# sourceMappingURL=index.es60.js.map
|