@ainetwork/adk 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -6
- package/dist/cjs/chunk-24RRJOOI.cjs +362 -0
- package/dist/cjs/chunk-24RRJOOI.cjs.map +1 -0
- package/dist/cjs/chunk-25RWHBEF.cjs +62 -0
- package/dist/cjs/chunk-25RWHBEF.cjs.map +1 -0
- package/dist/cjs/chunk-2B6ZXQB6.cjs +38 -0
- package/dist/cjs/chunk-2B6ZXQB6.cjs.map +1 -0
- package/dist/cjs/chunk-2BUYQCWK.cjs +44 -0
- package/dist/cjs/chunk-2BUYQCWK.cjs.map +1 -0
- package/dist/cjs/chunk-2CQQ34ED.cjs +83 -0
- package/dist/cjs/chunk-2CQQ34ED.cjs.map +1 -0
- package/dist/cjs/chunk-2HDSF5GS.cjs +367 -0
- package/dist/cjs/chunk-2HDSF5GS.cjs.map +1 -0
- package/dist/cjs/chunk-2HV2HAU2.cjs +62 -0
- package/dist/cjs/chunk-2HV2HAU2.cjs.map +1 -0
- package/dist/cjs/chunk-2IKGA5IV.cjs +17 -0
- package/dist/cjs/chunk-2IKGA5IV.cjs.map +1 -0
- package/dist/cjs/chunk-2KGEFVQ2.cjs +111 -0
- package/dist/cjs/chunk-2KGEFVQ2.cjs.map +1 -0
- package/dist/cjs/chunk-2LUY44JT.cjs +74 -0
- package/dist/cjs/chunk-2LUY44JT.cjs.map +1 -0
- package/dist/cjs/chunk-2OOV44LV.cjs +22 -0
- package/dist/cjs/chunk-2OOV44LV.cjs.map +1 -0
- package/dist/cjs/chunk-2ZD4XC2I.cjs +44 -0
- package/dist/cjs/chunk-2ZD4XC2I.cjs.map +1 -0
- package/dist/cjs/chunk-34FFNAOJ.cjs +18 -0
- package/dist/cjs/chunk-34FFNAOJ.cjs.map +1 -0
- package/dist/cjs/chunk-3KX24OQQ.cjs +29 -0
- package/dist/cjs/chunk-3KX24OQQ.cjs.map +1 -0
- package/dist/cjs/chunk-4CHPQFJO.cjs +74 -0
- package/dist/cjs/chunk-4CHPQFJO.cjs.map +1 -0
- package/dist/cjs/chunk-4H4APXBR.cjs +17 -0
- package/dist/cjs/chunk-4H4APXBR.cjs.map +1 -0
- package/dist/cjs/chunk-4IROMVRW.cjs +29 -0
- package/dist/cjs/chunk-4IROMVRW.cjs.map +1 -0
- package/dist/cjs/chunk-4LMTR322.cjs +44 -0
- package/dist/cjs/chunk-4LMTR322.cjs.map +1 -0
- package/dist/cjs/chunk-4NZJLMT7.cjs +38 -0
- package/dist/cjs/chunk-4NZJLMT7.cjs.map +1 -0
- package/dist/cjs/chunk-4QGJ7JWW.cjs +17 -0
- package/dist/cjs/chunk-4QGJ7JWW.cjs.map +1 -0
- package/dist/cjs/chunk-4SRDLHXS.cjs +17 -0
- package/dist/cjs/chunk-4SRDLHXS.cjs.map +1 -0
- package/dist/cjs/chunk-4UDENVOJ.cjs +38 -0
- package/dist/cjs/chunk-4UDENVOJ.cjs.map +1 -0
- package/dist/cjs/chunk-4UMM25ZT.cjs +29 -0
- package/dist/cjs/chunk-4UMM25ZT.cjs.map +1 -0
- package/dist/cjs/chunk-5P25YU2Z.cjs +17 -0
- package/dist/cjs/chunk-5P25YU2Z.cjs.map +1 -0
- package/dist/cjs/chunk-5Q2KJ4H4.cjs +45 -0
- package/dist/cjs/chunk-5Q2KJ4H4.cjs.map +1 -0
- package/dist/cjs/chunk-5RLT7IZP.cjs +38 -0
- package/dist/cjs/chunk-5RLT7IZP.cjs.map +1 -0
- package/dist/cjs/chunk-5VHF27F5.cjs +44 -0
- package/dist/cjs/chunk-5VHF27F5.cjs.map +1 -0
- package/dist/cjs/chunk-65JM632P.cjs +17 -0
- package/dist/cjs/chunk-65JM632P.cjs.map +1 -0
- package/dist/cjs/chunk-6BYF7CRT.cjs +17 -0
- package/dist/cjs/chunk-6BYF7CRT.cjs.map +1 -0
- package/dist/cjs/chunk-6EBDGU4W.cjs +74 -0
- package/dist/cjs/chunk-6EBDGU4W.cjs.map +1 -0
- package/dist/cjs/chunk-6R7PSGDX.cjs +17 -0
- package/dist/cjs/chunk-6R7PSGDX.cjs.map +1 -0
- package/dist/cjs/chunk-6SVNJWA6.cjs +44 -0
- package/dist/cjs/chunk-6SVNJWA6.cjs.map +1 -0
- package/dist/cjs/chunk-77XJWOSB.cjs +17 -0
- package/dist/cjs/chunk-77XJWOSB.cjs.map +1 -0
- package/dist/cjs/chunk-7CDJAB5L.cjs +29 -0
- package/dist/cjs/chunk-7CDJAB5L.cjs.map +1 -0
- package/dist/cjs/chunk-7DEPTYG3.cjs +17 -0
- package/dist/cjs/chunk-7DEPTYG3.cjs.map +1 -0
- package/dist/cjs/chunk-7DVPCJUI.cjs +17 -0
- package/dist/cjs/chunk-7DVPCJUI.cjs.map +1 -0
- package/dist/cjs/chunk-7FOASY25.cjs +29 -0
- package/dist/cjs/chunk-7FOASY25.cjs.map +1 -0
- package/dist/cjs/chunk-7TVJGM6H.cjs +74 -0
- package/dist/cjs/chunk-7TVJGM6H.cjs.map +1 -0
- package/dist/cjs/chunk-7VYUJABV.cjs +127 -0
- package/dist/cjs/chunk-7VYUJABV.cjs.map +1 -0
- package/dist/cjs/chunk-7ZZOQCNU.cjs +17 -0
- package/dist/cjs/chunk-7ZZOQCNU.cjs.map +1 -0
- package/dist/cjs/chunk-A3FKCCSJ.cjs +44 -0
- package/dist/cjs/chunk-A3FKCCSJ.cjs.map +1 -0
- package/dist/cjs/chunk-A4ZX4Y47.cjs +45 -0
- package/dist/cjs/chunk-A4ZX4Y47.cjs.map +1 -0
- package/dist/cjs/chunk-AC32B3T4.cjs +18 -0
- package/dist/cjs/chunk-AC32B3T4.cjs.map +1 -0
- package/dist/cjs/chunk-AD6V5E5Q.cjs +89 -0
- package/dist/cjs/chunk-AD6V5E5Q.cjs.map +1 -0
- package/dist/cjs/chunk-AERYR4EH.cjs +44 -0
- package/dist/cjs/chunk-AERYR4EH.cjs.map +1 -0
- package/dist/cjs/chunk-AH6OKSE3.cjs +104 -0
- package/dist/cjs/chunk-AH6OKSE3.cjs.map +1 -0
- package/dist/cjs/chunk-ATGPYGP5.cjs +89 -0
- package/dist/cjs/chunk-ATGPYGP5.cjs.map +1 -0
- package/dist/cjs/chunk-AUAXYROS.cjs +29 -0
- package/dist/cjs/chunk-AUAXYROS.cjs.map +1 -0
- package/dist/cjs/chunk-AURUUSKY.cjs +44 -0
- package/dist/cjs/chunk-AURUUSKY.cjs.map +1 -0
- package/dist/cjs/chunk-AY4FE732.cjs +44 -0
- package/dist/cjs/chunk-AY4FE732.cjs.map +1 -0
- package/dist/cjs/chunk-BDXIWV2Q.cjs +29 -0
- package/dist/cjs/chunk-BDXIWV2Q.cjs.map +1 -0
- package/dist/cjs/chunk-BJ4IW7PS.cjs +62 -0
- package/dist/cjs/chunk-BJ4IW7PS.cjs.map +1 -0
- package/dist/cjs/chunk-BJVY3JAF.cjs +17 -0
- package/dist/cjs/chunk-BJVY3JAF.cjs.map +1 -0
- package/dist/cjs/chunk-BJXDG533.cjs +89 -0
- package/dist/cjs/chunk-BJXDG533.cjs.map +1 -0
- package/dist/cjs/chunk-BMEFG36I.cjs +356 -0
- package/dist/cjs/chunk-BMEFG36I.cjs.map +1 -0
- package/dist/cjs/chunk-BMXLCOSM.cjs +110 -0
- package/dist/cjs/chunk-BMXLCOSM.cjs.map +1 -0
- package/dist/cjs/chunk-BNV24SCZ.cjs +74 -0
- package/dist/cjs/chunk-BNV24SCZ.cjs.map +1 -0
- package/dist/cjs/chunk-BSA42PNB.cjs +17 -0
- package/dist/cjs/chunk-BSA42PNB.cjs.map +1 -0
- package/dist/cjs/chunk-BWIHGXV6.cjs +17 -0
- package/dist/cjs/chunk-BWIHGXV6.cjs.map +1 -0
- package/dist/cjs/chunk-BYU2KBHQ.cjs +89 -0
- package/dist/cjs/chunk-BYU2KBHQ.cjs.map +1 -0
- package/dist/cjs/chunk-CD755W4W.cjs +29 -0
- package/dist/cjs/chunk-CD755W4W.cjs.map +1 -0
- package/dist/cjs/chunk-CII4HFTO.cjs +44 -0
- package/dist/cjs/chunk-CII4HFTO.cjs.map +1 -0
- package/dist/cjs/chunk-CIOM5KV3.cjs +17 -0
- package/dist/cjs/chunk-CIOM5KV3.cjs.map +1 -0
- package/dist/cjs/chunk-CPXITYT4.cjs +104 -0
- package/dist/cjs/chunk-CPXITYT4.cjs.map +1 -0
- package/dist/cjs/chunk-CQZD2NDK.cjs +17 -0
- package/dist/cjs/chunk-CQZD2NDK.cjs.map +1 -0
- package/dist/cjs/chunk-CZ46DNRL.cjs +44 -0
- package/dist/cjs/chunk-CZ46DNRL.cjs.map +1 -0
- package/dist/cjs/chunk-DC6PC4DQ.cjs +17 -0
- package/dist/cjs/chunk-DC6PC4DQ.cjs.map +1 -0
- package/dist/cjs/chunk-DCCCZGV6.cjs +44 -0
- package/dist/cjs/chunk-DCCCZGV6.cjs.map +1 -0
- package/dist/cjs/chunk-DCMWIKKS.cjs +74 -0
- package/dist/cjs/chunk-DCMWIKKS.cjs.map +1 -0
- package/dist/cjs/chunk-DFUGFIB7.cjs +17 -0
- package/dist/cjs/chunk-DFUGFIB7.cjs.map +1 -0
- package/dist/cjs/chunk-DNAFVCEP.cjs +18 -0
- package/dist/cjs/chunk-DNAFVCEP.cjs.map +1 -0
- package/dist/cjs/chunk-DSP62SMI.cjs +44 -0
- package/dist/cjs/chunk-DSP62SMI.cjs.map +1 -0
- package/dist/cjs/chunk-DYQVBJUW.cjs +74 -0
- package/dist/cjs/chunk-DYQVBJUW.cjs.map +1 -0
- package/dist/cjs/chunk-DZZFES73.cjs +29 -0
- package/dist/cjs/chunk-DZZFES73.cjs.map +1 -0
- package/dist/cjs/chunk-E3FUWHFJ.cjs +44 -0
- package/dist/cjs/chunk-E3FUWHFJ.cjs.map +1 -0
- package/dist/cjs/chunk-E4MOFVBQ.cjs +29 -0
- package/dist/cjs/chunk-E4MOFVBQ.cjs.map +1 -0
- package/dist/cjs/chunk-E4U662WC.cjs +44 -0
- package/dist/cjs/chunk-E4U662WC.cjs.map +1 -0
- package/dist/cjs/chunk-E4UJYO5W.cjs +29 -0
- package/dist/cjs/chunk-E4UJYO5W.cjs.map +1 -0
- package/dist/cjs/chunk-E6LLESWJ.cjs +18 -0
- package/dist/cjs/chunk-E6LLESWJ.cjs.map +1 -0
- package/dist/cjs/chunk-EH43QFTV.cjs +62 -0
- package/dist/cjs/chunk-EH43QFTV.cjs.map +1 -0
- package/dist/cjs/chunk-EJNZ3ZOV.cjs +18 -0
- package/dist/cjs/chunk-EJNZ3ZOV.cjs.map +1 -0
- package/dist/cjs/chunk-EO6SZ6Y2.cjs +18 -0
- package/dist/cjs/chunk-EO6SZ6Y2.cjs.map +1 -0
- package/dist/cjs/chunk-ERBIJSR7.cjs +44 -0
- package/dist/cjs/chunk-ERBIJSR7.cjs.map +1 -0
- package/dist/cjs/chunk-ESLEPGTR.cjs +17 -0
- package/dist/cjs/chunk-ESLEPGTR.cjs.map +1 -0
- package/dist/cjs/chunk-EYWBSYOP.cjs +44 -0
- package/dist/cjs/chunk-EYWBSYOP.cjs.map +1 -0
- package/dist/cjs/chunk-F34KCFDI.cjs +38 -0
- package/dist/cjs/chunk-F34KCFDI.cjs.map +1 -0
- package/dist/cjs/chunk-F3LQ74NZ.cjs +62 -0
- package/dist/cjs/chunk-F3LQ74NZ.cjs.map +1 -0
- package/dist/cjs/chunk-F457QJ4S.cjs +89 -0
- package/dist/cjs/chunk-F457QJ4S.cjs.map +1 -0
- package/dist/cjs/chunk-FJCNUHOK.cjs +123 -0
- package/dist/cjs/chunk-FJCNUHOK.cjs.map +1 -0
- package/dist/cjs/chunk-FK2PASX2.cjs +89 -0
- package/dist/cjs/chunk-FK2PASX2.cjs.map +1 -0
- package/dist/cjs/chunk-FKI4W7Q5.cjs +62 -0
- package/dist/cjs/chunk-FKI4W7Q5.cjs.map +1 -0
- package/dist/cjs/chunk-FNXDTX3S.cjs +29 -0
- package/dist/cjs/chunk-FNXDTX3S.cjs.map +1 -0
- package/dist/cjs/chunk-FSJBK7YA.cjs +102 -0
- package/dist/cjs/chunk-FSJBK7YA.cjs.map +1 -0
- package/dist/cjs/chunk-G27OBOGL.cjs +89 -0
- package/dist/cjs/chunk-G27OBOGL.cjs.map +1 -0
- package/dist/cjs/chunk-G3KN7CTK.cjs +62 -0
- package/dist/cjs/chunk-G3KN7CTK.cjs.map +1 -0
- package/dist/cjs/chunk-G3ZMBBMJ.cjs +45 -0
- package/dist/cjs/chunk-G3ZMBBMJ.cjs.map +1 -0
- package/dist/cjs/chunk-G4IRAGBJ.cjs +44 -0
- package/dist/cjs/chunk-G4IRAGBJ.cjs.map +1 -0
- package/dist/cjs/chunk-GF3T2PUU.cjs +89 -0
- package/dist/cjs/chunk-GF3T2PUU.cjs.map +1 -0
- package/dist/cjs/chunk-GL6OAX2R.cjs +38 -0
- package/dist/cjs/chunk-GL6OAX2R.cjs.map +1 -0
- package/dist/cjs/chunk-GNOOMK7W.cjs +17 -0
- package/dist/cjs/chunk-GNOOMK7W.cjs.map +1 -0
- package/dist/cjs/chunk-GSYWRHCH.cjs +44 -0
- package/dist/cjs/chunk-GSYWRHCH.cjs.map +1 -0
- package/dist/cjs/chunk-GYRONVL5.cjs +89 -0
- package/dist/cjs/chunk-GYRONVL5.cjs.map +1 -0
- package/dist/cjs/chunk-HHTOL2IY.cjs +62 -0
- package/dist/cjs/chunk-HHTOL2IY.cjs.map +1 -0
- package/dist/cjs/chunk-HNFRGOJS.cjs +38 -0
- package/dist/cjs/chunk-HNFRGOJS.cjs.map +1 -0
- package/dist/cjs/chunk-HPWWWD35.cjs +38 -0
- package/dist/cjs/chunk-HPWWWD35.cjs.map +1 -0
- package/dist/cjs/chunk-HQ2XGXLM.cjs +44 -0
- package/dist/cjs/chunk-HQ2XGXLM.cjs.map +1 -0
- package/dist/cjs/chunk-HR3PYWGD.cjs +108 -0
- package/dist/cjs/chunk-HR3PYWGD.cjs.map +1 -0
- package/dist/cjs/chunk-HRKFNUT5.cjs +17 -0
- package/dist/cjs/chunk-HRKFNUT5.cjs.map +1 -0
- package/dist/cjs/chunk-HRZFYMBV.cjs +89 -0
- package/dist/cjs/chunk-HRZFYMBV.cjs.map +1 -0
- package/dist/cjs/chunk-HZK3RE3S.cjs +17 -0
- package/dist/cjs/chunk-HZK3RE3S.cjs.map +1 -0
- package/dist/cjs/chunk-I3BOGWFE.cjs +29 -0
- package/dist/cjs/chunk-I3BOGWFE.cjs.map +1 -0
- package/dist/cjs/chunk-I5XAKTTY.cjs +319 -0
- package/dist/cjs/chunk-I5XAKTTY.cjs.map +1 -0
- package/dist/cjs/chunk-I6C7GP3A.cjs +17 -0
- package/dist/cjs/chunk-I6C7GP3A.cjs.map +1 -0
- package/dist/cjs/chunk-I7RTPAIU.cjs +89 -0
- package/dist/cjs/chunk-I7RTPAIU.cjs.map +1 -0
- package/dist/cjs/chunk-ICGENXDJ.cjs +38 -0
- package/dist/cjs/chunk-ICGENXDJ.cjs.map +1 -0
- package/dist/cjs/chunk-IDDQKX45.cjs +18 -0
- package/dist/cjs/chunk-IDDQKX45.cjs.map +1 -0
- package/dist/cjs/chunk-IHWB5JO3.cjs +340 -0
- package/dist/cjs/chunk-IHWB5JO3.cjs.map +1 -0
- package/dist/cjs/chunk-IQ2G4LUS.cjs +89 -0
- package/dist/cjs/chunk-IQ2G4LUS.cjs.map +1 -0
- package/dist/cjs/chunk-IRTWZKRL.cjs +29 -0
- package/dist/cjs/chunk-IRTWZKRL.cjs.map +1 -0
- package/dist/cjs/chunk-IS6Q542T.cjs +18 -0
- package/dist/cjs/chunk-IS6Q542T.cjs.map +1 -0
- package/dist/cjs/chunk-IVNKHMZI.cjs +199 -0
- package/dist/cjs/chunk-IVNKHMZI.cjs.map +1 -0
- package/dist/cjs/chunk-IY5Q3TOG.cjs +17 -0
- package/dist/cjs/chunk-IY5Q3TOG.cjs.map +1 -0
- package/dist/cjs/chunk-J25SHMXB.cjs +38 -0
- package/dist/cjs/chunk-J25SHMXB.cjs.map +1 -0
- package/dist/cjs/chunk-J6RQW3CG.cjs +44 -0
- package/dist/cjs/chunk-J6RQW3CG.cjs.map +1 -0
- package/dist/cjs/chunk-JCC4WECX.cjs +17 -0
- package/dist/cjs/chunk-JCC4WECX.cjs.map +1 -0
- package/dist/cjs/chunk-JCHBG2CK.cjs +29 -0
- package/dist/cjs/chunk-JCHBG2CK.cjs.map +1 -0
- package/dist/cjs/chunk-JDIXUPU3.cjs +199 -0
- package/dist/cjs/chunk-JDIXUPU3.cjs.map +1 -0
- package/dist/cjs/chunk-JO4DRJQZ.cjs +104 -0
- package/dist/cjs/chunk-JO4DRJQZ.cjs.map +1 -0
- package/dist/cjs/chunk-K2YKI5RV.cjs +62 -0
- package/dist/cjs/chunk-K2YKI5RV.cjs.map +1 -0
- package/dist/cjs/chunk-K3UELZ4W.cjs +127 -0
- package/dist/cjs/chunk-K3UELZ4W.cjs.map +1 -0
- package/dist/cjs/chunk-K4BDE4VQ.cjs +17 -0
- package/dist/cjs/chunk-K4BDE4VQ.cjs.map +1 -0
- package/dist/cjs/chunk-K54PUMX5.cjs +44 -0
- package/dist/cjs/chunk-K54PUMX5.cjs.map +1 -0
- package/dist/cjs/chunk-KCLZUNG3.cjs +38 -0
- package/dist/cjs/chunk-KCLZUNG3.cjs.map +1 -0
- package/dist/cjs/chunk-KG7XEHCF.cjs +38 -0
- package/dist/cjs/chunk-KG7XEHCF.cjs.map +1 -0
- package/dist/cjs/chunk-KK4VTG2X.cjs +89 -0
- package/dist/cjs/chunk-KK4VTG2X.cjs.map +1 -0
- package/dist/cjs/chunk-KNYVRACQ.cjs +62 -0
- package/dist/cjs/chunk-KNYVRACQ.cjs.map +1 -0
- package/dist/cjs/chunk-KP4L7527.cjs +17 -0
- package/dist/cjs/chunk-KP4L7527.cjs.map +1 -0
- package/dist/cjs/chunk-L5B2EAJM.cjs +18 -0
- package/dist/cjs/chunk-L5B2EAJM.cjs.map +1 -0
- package/dist/cjs/chunk-LAX3Y732.cjs +18 -0
- package/dist/cjs/chunk-LAX3Y732.cjs.map +1 -0
- package/dist/cjs/chunk-LDR76PHY.cjs +104 -0
- package/dist/cjs/chunk-LDR76PHY.cjs.map +1 -0
- package/dist/cjs/chunk-LETDXZVR.cjs +17 -0
- package/dist/cjs/chunk-LETDXZVR.cjs.map +1 -0
- package/dist/cjs/chunk-LMIIDGXP.cjs +321 -0
- package/dist/cjs/chunk-LMIIDGXP.cjs.map +1 -0
- package/dist/cjs/chunk-LNJJUOEN.cjs +160 -0
- package/dist/cjs/chunk-LNJJUOEN.cjs.map +1 -0
- package/dist/cjs/chunk-LS3KARP2.cjs +29 -0
- package/dist/cjs/chunk-LS3KARP2.cjs.map +1 -0
- package/dist/cjs/chunk-LX2A6XTF.cjs +17 -0
- package/dist/cjs/chunk-LX2A6XTF.cjs.map +1 -0
- package/dist/cjs/chunk-M2PY55RJ.cjs +17 -0
- package/dist/cjs/chunk-M2PY55RJ.cjs.map +1 -0
- package/dist/cjs/chunk-M5TPCHBZ.cjs +17 -0
- package/dist/cjs/chunk-M5TPCHBZ.cjs.map +1 -0
- package/dist/cjs/chunk-M6OZBNV3.cjs +17 -0
- package/dist/cjs/chunk-M6OZBNV3.cjs.map +1 -0
- package/dist/cjs/chunk-MBYBLKWW.cjs +17 -0
- package/dist/cjs/chunk-MBYBLKWW.cjs.map +1 -0
- package/dist/cjs/chunk-MIPD6XXN.cjs +17 -0
- package/dist/cjs/chunk-MIPD6XXN.cjs.map +1 -0
- package/dist/cjs/chunk-MJ673V54.cjs +18 -0
- package/dist/cjs/chunk-MJ673V54.cjs.map +1 -0
- package/dist/cjs/chunk-MYFVFI5F.cjs +74 -0
- package/dist/cjs/chunk-MYFVFI5F.cjs.map +1 -0
- package/dist/cjs/chunk-N27L7CJA.cjs +17 -0
- package/dist/cjs/chunk-N27L7CJA.cjs.map +1 -0
- package/dist/cjs/chunk-N4O2YERL.cjs +95 -0
- package/dist/cjs/chunk-N4O2YERL.cjs.map +1 -0
- package/dist/cjs/chunk-NBIMJPFQ.cjs +62 -0
- package/dist/cjs/chunk-NBIMJPFQ.cjs.map +1 -0
- package/dist/cjs/chunk-NE4IG7YO.cjs +17 -0
- package/dist/cjs/chunk-NE4IG7YO.cjs.map +1 -0
- package/dist/cjs/chunk-NF3E675K.cjs +74 -0
- package/dist/cjs/chunk-NF3E675K.cjs.map +1 -0
- package/dist/cjs/chunk-NFAEF6W7.cjs +62 -0
- package/dist/cjs/chunk-NFAEF6W7.cjs.map +1 -0
- package/dist/cjs/chunk-NFFV5YMX.cjs +44 -0
- package/dist/cjs/chunk-NFFV5YMX.cjs.map +1 -0
- package/dist/cjs/chunk-NN7IOMRL.cjs +62 -0
- package/dist/cjs/chunk-NN7IOMRL.cjs.map +1 -0
- package/dist/cjs/chunk-NTO6MT57.cjs +18 -0
- package/dist/cjs/chunk-NTO6MT57.cjs.map +1 -0
- package/dist/cjs/chunk-NWMEKI2D.cjs +29 -0
- package/dist/cjs/chunk-NWMEKI2D.cjs.map +1 -0
- package/dist/cjs/chunk-NZXQID5S.cjs +104 -0
- package/dist/cjs/chunk-NZXQID5S.cjs.map +1 -0
- package/dist/cjs/chunk-O4WIK7YI.cjs +95 -0
- package/dist/cjs/chunk-O4WIK7YI.cjs.map +1 -0
- package/dist/cjs/chunk-O7WYT77Q.cjs +62 -0
- package/dist/cjs/chunk-O7WYT77Q.cjs.map +1 -0
- package/dist/cjs/chunk-OJM4BUY2.cjs +89 -0
- package/dist/cjs/chunk-OJM4BUY2.cjs.map +1 -0
- package/dist/cjs/chunk-OTZ4JQDD.cjs +17 -0
- package/dist/cjs/chunk-OTZ4JQDD.cjs.map +1 -0
- package/dist/cjs/chunk-OVI3MJ2U.cjs +74 -0
- package/dist/cjs/chunk-OVI3MJ2U.cjs.map +1 -0
- package/dist/cjs/chunk-P64FBXOS.cjs +104 -0
- package/dist/cjs/chunk-P64FBXOS.cjs.map +1 -0
- package/dist/cjs/chunk-PFGRED5M.cjs +17 -0
- package/dist/cjs/chunk-PFGRED5M.cjs.map +1 -0
- package/dist/cjs/chunk-PKRYQGR7.cjs +17 -0
- package/dist/cjs/chunk-PKRYQGR7.cjs.map +1 -0
- package/dist/cjs/chunk-PO73CXQO.cjs +62 -0
- package/dist/cjs/chunk-PO73CXQO.cjs.map +1 -0
- package/dist/cjs/chunk-PTJST6LH.cjs +38 -0
- package/dist/cjs/chunk-PTJST6LH.cjs.map +1 -0
- package/dist/cjs/chunk-PVBRREHI.cjs +18 -0
- package/dist/cjs/chunk-PVBRREHI.cjs.map +1 -0
- package/dist/cjs/chunk-PZS5HEWV.cjs +74 -0
- package/dist/cjs/chunk-PZS5HEWV.cjs.map +1 -0
- package/dist/cjs/chunk-Q36KS63B.cjs +17 -0
- package/dist/cjs/chunk-Q36KS63B.cjs.map +1 -0
- package/dist/cjs/chunk-QEIMXVUF.cjs +44 -0
- package/dist/cjs/chunk-QEIMXVUF.cjs.map +1 -0
- package/dist/cjs/chunk-QIAOPBBD.cjs +17 -0
- package/dist/cjs/chunk-QIAOPBBD.cjs.map +1 -0
- package/dist/cjs/chunk-QJQWN7DT.cjs +44 -0
- package/dist/cjs/chunk-QJQWN7DT.cjs.map +1 -0
- package/dist/cjs/chunk-QK26HLOI.cjs +38 -0
- package/dist/cjs/chunk-QK26HLOI.cjs.map +1 -0
- package/dist/cjs/chunk-QOFTRHCH.cjs +62 -0
- package/dist/cjs/chunk-QOFTRHCH.cjs.map +1 -0
- package/dist/cjs/chunk-QWETDD3J.cjs +17 -0
- package/dist/cjs/chunk-QWETDD3J.cjs.map +1 -0
- package/dist/cjs/chunk-QWNRKRZO.cjs +44 -0
- package/dist/cjs/chunk-QWNRKRZO.cjs.map +1 -0
- package/dist/cjs/chunk-RAL7YD6T.cjs +44 -0
- package/dist/cjs/chunk-RAL7YD6T.cjs.map +1 -0
- package/dist/cjs/chunk-RF5RZWJP.cjs +17 -0
- package/dist/cjs/chunk-RF5RZWJP.cjs.map +1 -0
- package/dist/cjs/chunk-RRVTDGEC.cjs +44 -0
- package/dist/cjs/chunk-RRVTDGEC.cjs.map +1 -0
- package/dist/cjs/chunk-RVU4TKUZ.cjs +89 -0
- package/dist/cjs/chunk-RVU4TKUZ.cjs.map +1 -0
- package/dist/cjs/chunk-S6M6Q6Y4.cjs +18 -0
- package/dist/cjs/chunk-S6M6Q6Y4.cjs.map +1 -0
- package/dist/cjs/chunk-S6T455CQ.cjs +17 -0
- package/dist/cjs/chunk-S6T455CQ.cjs.map +1 -0
- package/dist/cjs/chunk-SC7EAJGH.cjs +17 -0
- package/dist/cjs/chunk-SC7EAJGH.cjs.map +1 -0
- package/dist/cjs/chunk-SD3MWNJS.cjs +38 -0
- package/dist/cjs/chunk-SD3MWNJS.cjs.map +1 -0
- package/dist/cjs/chunk-SDUFCQJX.cjs +77 -0
- package/dist/cjs/chunk-SDUFCQJX.cjs.map +1 -0
- package/dist/cjs/chunk-SFLERIBX.cjs +44 -0
- package/dist/cjs/chunk-SFLERIBX.cjs.map +1 -0
- package/dist/cjs/chunk-SFZRVWAS.cjs +116 -0
- package/dist/cjs/chunk-SFZRVWAS.cjs.map +1 -0
- package/dist/cjs/chunk-SMD6TIFZ.cjs +17 -0
- package/dist/cjs/chunk-SMD6TIFZ.cjs.map +1 -0
- package/dist/cjs/chunk-SSKGQ6Q6.cjs +44 -0
- package/dist/cjs/chunk-SSKGQ6Q6.cjs.map +1 -0
- package/dist/cjs/chunk-SV2K3QIF.cjs +89 -0
- package/dist/cjs/chunk-SV2K3QIF.cjs.map +1 -0
- package/dist/cjs/chunk-SVO42FE4.cjs +199 -0
- package/dist/cjs/chunk-SVO42FE4.cjs.map +1 -0
- package/dist/cjs/chunk-SVWQ7SSG.cjs +17 -0
- package/dist/cjs/chunk-SVWQ7SSG.cjs.map +1 -0
- package/dist/cjs/chunk-SWXYI6B3.cjs +17 -0
- package/dist/cjs/chunk-SWXYI6B3.cjs.map +1 -0
- package/dist/cjs/chunk-SYRDNATI.cjs +18 -0
- package/dist/cjs/chunk-SYRDNATI.cjs.map +1 -0
- package/dist/cjs/chunk-T6JV6NPL.cjs +29 -0
- package/dist/cjs/chunk-T6JV6NPL.cjs.map +1 -0
- package/dist/cjs/chunk-TA7HWVVM.cjs +44 -0
- package/dist/cjs/chunk-TA7HWVVM.cjs.map +1 -0
- package/dist/cjs/chunk-TFIT3UQZ.cjs +38 -0
- package/dist/cjs/chunk-TFIT3UQZ.cjs.map +1 -0
- package/dist/cjs/chunk-TGBWU6YD.cjs +74 -0
- package/dist/cjs/chunk-TGBWU6YD.cjs.map +1 -0
- package/dist/cjs/chunk-TR6LECJD.cjs +17 -0
- package/dist/cjs/chunk-TR6LECJD.cjs.map +1 -0
- package/dist/cjs/chunk-TRKYSXVL.cjs +74 -0
- package/dist/cjs/chunk-TRKYSXVL.cjs.map +1 -0
- package/dist/cjs/chunk-TUCSLVSF.cjs +74 -0
- package/dist/cjs/chunk-TUCSLVSF.cjs.map +1 -0
- package/dist/cjs/chunk-TY7RIDKN.cjs +89 -0
- package/dist/cjs/chunk-TY7RIDKN.cjs.map +1 -0
- package/dist/cjs/chunk-TYE2ZJYK.cjs +44 -0
- package/dist/cjs/chunk-TYE2ZJYK.cjs.map +1 -0
- package/dist/cjs/chunk-U2VDAWF2.cjs +17 -0
- package/dist/cjs/chunk-U2VDAWF2.cjs.map +1 -0
- package/dist/cjs/chunk-U6NBOZG4.cjs +17 -0
- package/dist/cjs/chunk-U6NBOZG4.cjs.map +1 -0
- package/dist/cjs/chunk-UAUKUVGY.cjs +110 -0
- package/dist/cjs/chunk-UAUKUVGY.cjs.map +1 -0
- package/dist/cjs/chunk-UMP63WKM.cjs +89 -0
- package/dist/cjs/chunk-UMP63WKM.cjs.map +1 -0
- package/dist/cjs/chunk-UNJZ3SCR.cjs +38 -0
- package/dist/cjs/chunk-UNJZ3SCR.cjs.map +1 -0
- package/dist/cjs/chunk-UNRTZ7XD.cjs +18 -0
- package/dist/cjs/chunk-UNRTZ7XD.cjs.map +1 -0
- package/dist/cjs/chunk-UOTEA2IY.cjs +104 -0
- package/dist/cjs/chunk-UOTEA2IY.cjs.map +1 -0
- package/dist/cjs/chunk-UQFLEWWA.cjs +362 -0
- package/dist/cjs/chunk-UQFLEWWA.cjs.map +1 -0
- package/dist/cjs/chunk-UT235OR6.cjs +29 -0
- package/dist/cjs/chunk-UT235OR6.cjs.map +1 -0
- package/dist/cjs/chunk-UTG6F3AH.cjs +44 -0
- package/dist/cjs/chunk-UTG6F3AH.cjs.map +1 -0
- package/dist/cjs/chunk-UVPSBGW7.cjs +74 -0
- package/dist/cjs/chunk-UVPSBGW7.cjs.map +1 -0
- package/dist/cjs/chunk-VDXJGAFA.cjs +17 -0
- package/dist/cjs/chunk-VDXJGAFA.cjs.map +1 -0
- package/dist/cjs/chunk-VFY3KVCK.cjs +38 -0
- package/dist/cjs/chunk-VFY3KVCK.cjs.map +1 -0
- package/dist/cjs/chunk-VGA4O5CY.cjs +62 -0
- package/dist/cjs/chunk-VGA4O5CY.cjs.map +1 -0
- package/dist/cjs/chunk-VXJ52V2L.cjs +321 -0
- package/dist/cjs/chunk-VXJ52V2L.cjs.map +1 -0
- package/dist/cjs/chunk-WCTCFUE2.cjs +367 -0
- package/dist/cjs/chunk-WCTCFUE2.cjs.map +1 -0
- package/dist/cjs/chunk-WGJ2T4XM.cjs +74 -0
- package/dist/cjs/chunk-WGJ2T4XM.cjs.map +1 -0
- package/dist/cjs/chunk-WIS6QBYF.cjs +77 -0
- package/dist/cjs/chunk-WIS6QBYF.cjs.map +1 -0
- package/dist/cjs/chunk-WL657FMV.cjs +17 -0
- package/dist/cjs/chunk-WL657FMV.cjs.map +1 -0
- package/dist/cjs/chunk-WZDAN7J3.cjs +74 -0
- package/dist/cjs/chunk-WZDAN7J3.cjs.map +1 -0
- package/dist/cjs/chunk-WZEICEMD.cjs +62 -0
- package/dist/cjs/chunk-WZEICEMD.cjs.map +1 -0
- package/dist/cjs/chunk-X4P5E72G.cjs +38 -0
- package/dist/cjs/chunk-X4P5E72G.cjs.map +1 -0
- package/dist/cjs/chunk-XIVWRYNJ.cjs +38 -0
- package/dist/cjs/chunk-XIVWRYNJ.cjs.map +1 -0
- package/dist/cjs/chunk-XZUUYWF4.cjs +74 -0
- package/dist/cjs/chunk-XZUUYWF4.cjs.map +1 -0
- package/dist/cjs/chunk-Y524IIF6.cjs +199 -0
- package/dist/cjs/chunk-Y524IIF6.cjs.map +1 -0
- package/dist/cjs/chunk-YCUKZPKY.cjs +18 -0
- package/dist/cjs/chunk-YCUKZPKY.cjs.map +1 -0
- package/dist/cjs/chunk-YDBR3EYV.cjs +17 -0
- package/dist/cjs/chunk-YDBR3EYV.cjs.map +1 -0
- package/dist/cjs/chunk-YFX5DLRD.cjs +44 -0
- package/dist/cjs/chunk-YFX5DLRD.cjs.map +1 -0
- package/dist/cjs/chunk-YG4CXCLW.cjs +44 -0
- package/dist/cjs/chunk-YG4CXCLW.cjs.map +1 -0
- package/dist/cjs/chunk-YHG5J4EH.cjs +44 -0
- package/dist/cjs/chunk-YHG5J4EH.cjs.map +1 -0
- package/dist/cjs/chunk-YI2OQGES.cjs +44 -0
- package/dist/cjs/chunk-YI2OQGES.cjs.map +1 -0
- package/dist/cjs/chunk-YNPHQW5S.cjs +17 -0
- package/dist/cjs/chunk-YNPHQW5S.cjs.map +1 -0
- package/dist/cjs/chunk-YX4LVEKP.cjs +62 -0
- package/dist/cjs/chunk-YX4LVEKP.cjs.map +1 -0
- package/dist/cjs/chunk-Z57RTBQ6.cjs +18 -0
- package/dist/cjs/chunk-Z57RTBQ6.cjs.map +1 -0
- package/dist/cjs/chunk-Z7RQOH67.cjs +18 -0
- package/dist/cjs/chunk-Z7RQOH67.cjs.map +1 -0
- package/dist/cjs/chunk-Z7ZCJEME.cjs +44 -0
- package/dist/cjs/chunk-Z7ZCJEME.cjs.map +1 -0
- package/dist/cjs/chunk-ZEOLDU53.cjs +17 -0
- package/dist/cjs/chunk-ZEOLDU53.cjs.map +1 -0
- package/dist/cjs/chunk-ZKYRM76Q.cjs +74 -0
- package/dist/cjs/chunk-ZKYRM76Q.cjs.map +1 -0
- package/dist/cjs/chunk-ZNOPX24J.cjs +89 -0
- package/dist/cjs/chunk-ZNOPX24J.cjs.map +1 -0
- package/dist/cjs/chunk-ZO4B7BJ3.cjs +38 -0
- package/dist/cjs/chunk-ZO4B7BJ3.cjs.map +1 -0
- package/dist/cjs/chunk-ZP7AGIQW.cjs +367 -0
- package/dist/cjs/chunk-ZP7AGIQW.cjs.map +1 -0
- package/dist/cjs/chunk-ZUIRE3CM.cjs +18 -0
- package/dist/cjs/chunk-ZUIRE3CM.cjs.map +1 -0
- package/dist/cjs/container/controllers.cjs +6 -5
- package/dist/cjs/container/controllers.cjs.map +1 -1
- package/dist/cjs/container/index.cjs +18 -18
- package/dist/cjs/container/services.cjs +14 -14
- package/dist/cjs/controllers/a2a.controller.cjs +3 -3
- package/dist/cjs/controllers/api/workflow.api.controller.cjs +2 -2
- package/dist/cjs/controllers/index.cjs +5 -5
- package/dist/cjs/controllers/query.controller.cjs +4 -3
- package/dist/cjs/controllers/query.controller.cjs.map +1 -1
- package/dist/cjs/index.cjs +42 -42
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/middlewares/error.middleware.cjs +3 -3
- package/dist/cjs/modules/a2a/a2a.module.cjs +4 -4
- package/dist/cjs/modules/index.cjs +10 -10
- package/dist/cjs/modules/index.cjs.map +1 -1
- package/dist/cjs/modules/mcp/mcp.module.cjs +3 -3
- package/dist/cjs/routes/a2a.routes.cjs +21 -21
- package/dist/cjs/routes/api/agent.routes.cjs +19 -19
- package/dist/cjs/routes/api/intent.routes.cjs +19 -19
- package/dist/cjs/routes/api/model.routes.cjs +19 -19
- package/dist/cjs/routes/api/threads.routes.cjs +19 -19
- package/dist/cjs/routes/api/workflow.routes.cjs +19 -19
- package/dist/cjs/routes/api.routes.cjs +24 -24
- package/dist/cjs/routes/index.cjs +28 -28
- package/dist/cjs/routes/intent.routes.cjs +19 -19
- package/dist/cjs/routes/query.routes.cjs +19 -19
- package/dist/cjs/services/a2a.service.cjs +3 -3
- package/dist/cjs/services/index.cjs +15 -15
- package/dist/cjs/services/index.cjs.map +1 -1
- package/dist/cjs/services/intents/aggregate.service.cjs +3 -3
- package/dist/cjs/services/intents/fulfill.service.cjs +5 -5
- package/dist/cjs/services/intents/multi-trigger.service.cjs +3 -3
- package/dist/cjs/services/intents/single-trigger.service.cjs +3 -3
- package/dist/cjs/services/intents/trigger.service.cjs +5 -5
- package/dist/cjs/services/query.service.cjs +5 -5
- package/dist/cjs/services/utils/query.common.cjs +3 -3
- package/dist/cjs/types/memory.cjs +2 -2
- package/dist/cjs/utils/logger.cjs +4 -2
- package/dist/cjs/utils/logger.cjs.map +1 -1
- package/dist/esm/{chunk-7XQPJVYO.js → chunk-3IG6HCSA.js} +2 -2
- package/dist/esm/{chunk-44CTGJX4.js → chunk-5FJU67BO.js} +59 -16
- package/dist/esm/chunk-5FJU67BO.js.map +1 -0
- package/dist/esm/{chunk-IG3B5AXN.js → chunk-A3CKGK3U.js} +3 -3
- package/dist/esm/{chunk-RAHOYMKY.js → chunk-BYGS3GS6.js} +2 -2
- package/dist/esm/{chunk-7DH4SI44.js → chunk-CYP6OTDK.js} +5 -5
- package/dist/esm/{chunk-2VGXYWJD.js → chunk-D66QTWUY.js} +2 -2
- package/dist/esm/{chunk-ZNZZZ4NN.js → chunk-DBB7B4PV.js} +4 -4
- package/dist/esm/chunk-DBB7B4PV.js.map +1 -0
- package/dist/esm/{chunk-VUMI4XOY.js → chunk-GHUEA7V5.js} +23 -2
- package/dist/esm/chunk-GHUEA7V5.js.map +1 -0
- package/dist/esm/{chunk-I4P7JMJC.js → chunk-GKG27ZGB.js} +3 -3
- package/dist/esm/{chunk-5IIF5O4A.js → chunk-HEYSMA5B.js} +2 -2
- package/dist/esm/{chunk-TQJCYP7X.js → chunk-L447Q33F.js} +33 -4
- package/dist/esm/chunk-L447Q33F.js.map +1 -0
- package/dist/esm/{chunk-AEBBZSQ4.js → chunk-LLYDI3LD.js} +3 -3
- package/dist/esm/{chunk-YMSNW2SU.js → chunk-MVVAEPGR.js} +2 -2
- package/dist/esm/{chunk-LMOWEXWF.js → chunk-MXPZHEDH.js} +6 -6
- package/dist/esm/{chunk-VP5Q63JU.js → chunk-MZRZVF5Q.js} +2 -2
- package/dist/esm/{chunk-FCH7BUK4.js → chunk-R2R3AMCG.js} +2 -2
- package/dist/esm/{chunk-D6STNZ2L.js → chunk-RE676AIN.js} +16 -1
- package/dist/esm/chunk-RE676AIN.js.map +1 -0
- package/dist/esm/{chunk-PZQRSWST.js → chunk-SDABEZSA.js} +2 -2
- package/dist/esm/{chunk-PVWOU6LA.js → chunk-SV5CKUNN.js} +2 -2
- package/dist/esm/{chunk-BZUWX7HX.js → chunk-TR2QAQEW.js} +14 -5
- package/dist/esm/chunk-TR2QAQEW.js.map +1 -0
- package/dist/esm/{chunk-CC6DWPHZ.js → chunk-VGL4ZVNA.js} +8 -8
- package/dist/esm/chunk-VGL4ZVNA.js.map +1 -0
- package/dist/esm/{chunk-6YBQCUNB.js → chunk-VOMI5BAO.js} +2 -2
- package/dist/esm/{chunk-4BHU7SPZ.js → chunk-VX3VWWYW.js} +1 -1
- package/dist/esm/{chunk-4BHU7SPZ.js.map → chunk-VX3VWWYW.js.map} +1 -1
- package/dist/esm/{chunk-ZJVWC666.js → chunk-WMHUZEL2.js} +2 -2
- package/dist/esm/{chunk-ZK3HZBER.js → chunk-XXDILT4B.js} +2 -2
- package/dist/esm/{chunk-JXGQVFCO.js → chunk-ZSWCICNO.js} +16 -8
- package/dist/esm/chunk-ZSWCICNO.js.map +1 -0
- package/dist/esm/{chunk-FRQSMPPK.js → chunk-ZUVYTTPD.js} +2 -2
- package/dist/esm/{chunk-QQZ5ANSD.js → chunk-ZXRDGIRP.js} +38 -26
- package/dist/esm/chunk-ZXRDGIRP.js.map +1 -0
- package/dist/esm/container/controllers.js +5 -4
- package/dist/esm/container/index.js +16 -16
- package/dist/esm/container/services.js +12 -12
- package/dist/esm/controllers/a2a.controller.js +2 -2
- package/dist/esm/controllers/api/workflow.api.controller.js +1 -1
- package/dist/esm/controllers/index.js +4 -4
- package/dist/esm/controllers/query.controller.js +3 -2
- package/dist/esm/index.js +28 -28
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/middlewares/error.middleware.js +2 -2
- package/dist/esm/modules/a2a/a2a.module.js +3 -3
- package/dist/esm/modules/index.js +10 -10
- package/dist/esm/modules/mcp/mcp.module.js +2 -2
- package/dist/esm/modules/memory/base.memory.d.ts +1 -1
- package/dist/esm/routes/a2a.routes.js +18 -18
- package/dist/esm/routes/api/agent.routes.js +17 -17
- package/dist/esm/routes/api/intent.routes.js +17 -17
- package/dist/esm/routes/api/model.routes.js +17 -17
- package/dist/esm/routes/api/threads.routes.js +17 -17
- package/dist/esm/routes/api/workflow.routes.js +17 -17
- package/dist/esm/routes/api.routes.js +22 -22
- package/dist/esm/routes/index.js +25 -25
- package/dist/esm/routes/intent.routes.js +17 -17
- package/dist/esm/routes/query.routes.js +17 -17
- package/dist/esm/services/a2a.service.js +2 -2
- package/dist/esm/services/index.js +11 -11
- package/dist/esm/services/intents/aggregate.service.d.ts +10 -0
- package/dist/esm/services/intents/aggregate.service.js +2 -2
- package/dist/esm/services/intents/fulfill.service.d.ts +5 -4
- package/dist/esm/services/intents/fulfill.service.js +4 -4
- package/dist/esm/services/intents/multi-trigger.service.d.ts +3 -3
- package/dist/esm/services/intents/multi-trigger.service.js +2 -2
- package/dist/esm/services/intents/single-trigger.service.d.ts +3 -3
- package/dist/esm/services/intents/single-trigger.service.js +2 -2
- package/dist/esm/services/intents/trigger.service.d.ts +3 -3
- package/dist/esm/services/intents/trigger.service.js +4 -4
- package/dist/esm/services/query.service.js +4 -4
- package/dist/esm/services/utils/query.common.js +2 -2
- package/dist/esm/types/memory.d.ts +11 -1
- package/dist/esm/types/memory.js +1 -1
- package/dist/esm/utils/logger.d.ts +2 -1
- package/dist/esm/utils/logger.js +3 -1
- package/package.json +1 -1
- package/dist/esm/chunk-44CTGJX4.js.map +0 -1
- package/dist/esm/chunk-BZUWX7HX.js.map +0 -1
- package/dist/esm/chunk-CC6DWPHZ.js.map +0 -1
- package/dist/esm/chunk-D6STNZ2L.js.map +0 -1
- package/dist/esm/chunk-JXGQVFCO.js.map +0 -1
- package/dist/esm/chunk-QQZ5ANSD.js.map +0 -1
- package/dist/esm/chunk-TQJCYP7X.js.map +0 -1
- package/dist/esm/chunk-VUMI4XOY.js.map +0 -1
- package/dist/esm/chunk-ZNZZZ4NN.js.map +0 -1
- /package/dist/esm/{chunk-7XQPJVYO.js.map → chunk-3IG6HCSA.js.map} +0 -0
- /package/dist/esm/{chunk-IG3B5AXN.js.map → chunk-A3CKGK3U.js.map} +0 -0
- /package/dist/esm/{chunk-RAHOYMKY.js.map → chunk-BYGS3GS6.js.map} +0 -0
- /package/dist/esm/{chunk-7DH4SI44.js.map → chunk-CYP6OTDK.js.map} +0 -0
- /package/dist/esm/{chunk-2VGXYWJD.js.map → chunk-D66QTWUY.js.map} +0 -0
- /package/dist/esm/{chunk-I4P7JMJC.js.map → chunk-GKG27ZGB.js.map} +0 -0
- /package/dist/esm/{chunk-5IIF5O4A.js.map → chunk-HEYSMA5B.js.map} +0 -0
- /package/dist/esm/{chunk-AEBBZSQ4.js.map → chunk-LLYDI3LD.js.map} +0 -0
- /package/dist/esm/{chunk-YMSNW2SU.js.map → chunk-MVVAEPGR.js.map} +0 -0
- /package/dist/esm/{chunk-LMOWEXWF.js.map → chunk-MXPZHEDH.js.map} +0 -0
- /package/dist/esm/{chunk-VP5Q63JU.js.map → chunk-MZRZVF5Q.js.map} +0 -0
- /package/dist/esm/{chunk-FCH7BUK4.js.map → chunk-R2R3AMCG.js.map} +0 -0
- /package/dist/esm/{chunk-PZQRSWST.js.map → chunk-SDABEZSA.js.map} +0 -0
- /package/dist/esm/{chunk-PVWOU6LA.js.map → chunk-SV5CKUNN.js.map} +0 -0
- /package/dist/esm/{chunk-6YBQCUNB.js.map → chunk-VOMI5BAO.js.map} +0 -0
- /package/dist/esm/{chunk-ZJVWC666.js.map → chunk-WMHUZEL2.js.map} +0 -0
- /package/dist/esm/{chunk-ZK3HZBER.js.map → chunk-XXDILT4B.js.map} +0 -0
- /package/dist/esm/{chunk-FRQSMPPK.js.map → chunk-ZUVYTTPD.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/utils/logger.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACF,
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/utils/logger.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACF,uMAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/utils/logger.cjs"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
container
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A3CKGK3U.js";
|
|
4
4
|
import {
|
|
5
5
|
AinHttpError
|
|
6
6
|
} from "./chunk-C5JXXLCW.js";
|
|
@@ -59,4 +59,4 @@ var createWorkflowApiRouter = () => {
|
|
|
59
59
|
export {
|
|
60
60
|
createWorkflowApiRouter
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=chunk-
|
|
62
|
+
//# sourceMappingURL=chunk-3IG6HCSA.js.map
|
|
@@ -3,20 +3,16 @@ import {
|
|
|
3
3
|
} from "./chunk-7BH6AYP7.js";
|
|
4
4
|
import {
|
|
5
5
|
AggregateService
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
loggers
|
|
9
|
-
} from "./chunk-VUMI4XOY.js";
|
|
6
|
+
} from "./chunk-L447Q33F.js";
|
|
10
7
|
import {
|
|
11
8
|
getManifest
|
|
12
9
|
} from "./chunk-2J2TQRP4.js";
|
|
10
|
+
import {
|
|
11
|
+
loggers
|
|
12
|
+
} from "./chunk-GHUEA7V5.js";
|
|
13
13
|
|
|
14
14
|
// src/services/intents/fulfill.service.ts
|
|
15
15
|
import { randomUUID } from "crypto";
|
|
16
|
-
function isMultiIntentDisabled() {
|
|
17
|
-
const value = process.env.DISABLE_MULTI_INTENTS;
|
|
18
|
-
return value === "true" || value === "1";
|
|
19
|
-
}
|
|
20
16
|
var IntentFulfillService = class {
|
|
21
17
|
modelModule;
|
|
22
18
|
memoryModule;
|
|
@@ -204,29 +200,33 @@ var IntentFulfillService = class {
|
|
|
204
200
|
* Workflow:
|
|
205
201
|
* 1. Process each intent sequentially, collecting results
|
|
206
202
|
* 2. Yield thinking_process events for progress visibility
|
|
207
|
-
* 3. Use
|
|
208
|
-
* 4. Stream the final (possibly
|
|
203
|
+
* 3. Use AggregateService to unify results if needsAggregation is true
|
|
204
|
+
* 4. Stream the final (possibly aggregated) response
|
|
209
205
|
*
|
|
210
206
|
* @param intents - Array of triggered intents to process
|
|
211
207
|
* @param thread - The thread history
|
|
212
|
-
* @param originalQuery - The user's original query (for
|
|
208
|
+
* @param originalQuery - The user's original query (for aggregate context)
|
|
209
|
+
* @param needsAggregation - Whether the results need to be aggregated
|
|
213
210
|
* @returns AsyncGenerator yielding StreamEvent objects
|
|
214
211
|
*/
|
|
215
|
-
async *intentFulfill(intents, thread, originalQuery) {
|
|
212
|
+
async *intentFulfill(intents, thread, originalQuery, needsAggregation) {
|
|
216
213
|
const streamStartTime = Date.now();
|
|
217
214
|
loggers.intentStream.info("Stream session started", {
|
|
218
215
|
threadId: thread.threadId,
|
|
219
216
|
intentCount: intents.length,
|
|
217
|
+
needsAggregation,
|
|
220
218
|
startTime: new Date(streamStartTime).toISOString()
|
|
221
219
|
});
|
|
222
220
|
let finalResponseText = "";
|
|
223
|
-
if (
|
|
221
|
+
if (intents.length <= 1) {
|
|
224
222
|
const triggeredIntent = intents[0];
|
|
225
223
|
if (!triggeredIntent) {
|
|
226
224
|
return;
|
|
227
225
|
}
|
|
228
226
|
const { subquery = "", intent, actionPlan } = triggeredIntent;
|
|
229
|
-
loggers.intent.info(
|
|
227
|
+
loggers.intent.info(
|
|
228
|
+
`Process single intent: ${subquery}, ${intent?.name}`
|
|
229
|
+
);
|
|
230
230
|
loggers.intent.info(`Action plan: ${actionPlan}`);
|
|
231
231
|
yield {
|
|
232
232
|
event: "thinking_process",
|
|
@@ -245,6 +245,49 @@ var IntentFulfillService = class {
|
|
|
245
245
|
}
|
|
246
246
|
yield event;
|
|
247
247
|
}
|
|
248
|
+
} else if (!needsAggregation) {
|
|
249
|
+
for (let i = 0; i < intents.length; i++) {
|
|
250
|
+
const triggeredIntent = intents[i];
|
|
251
|
+
const { subquery = "", intent, actionPlan } = triggeredIntent;
|
|
252
|
+
loggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);
|
|
253
|
+
loggers.intent.info(`Action plan: ${actionPlan}`);
|
|
254
|
+
const isLastIntent = i === intents.length - 1;
|
|
255
|
+
yield {
|
|
256
|
+
event: "thinking_process",
|
|
257
|
+
data: {
|
|
258
|
+
title: `[${getManifest().name}] ${subquery}`,
|
|
259
|
+
description: actionPlan || ""
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
const stream = this.getIntentStream(triggeredIntent, thread);
|
|
263
|
+
if (!stream) {
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (isLastIntent) {
|
|
267
|
+
for await (const event of stream) {
|
|
268
|
+
if (event.event === "text_chunk" && event.data.delta) {
|
|
269
|
+
finalResponseText += event.data.delta;
|
|
270
|
+
}
|
|
271
|
+
yield event;
|
|
272
|
+
}
|
|
273
|
+
} else {
|
|
274
|
+
let responseText = "";
|
|
275
|
+
for await (const event of stream) {
|
|
276
|
+
if (event.event === "text_chunk" && event.data.delta) {
|
|
277
|
+
responseText += event.data.delta;
|
|
278
|
+
} else if (event.event === "thinking_process") {
|
|
279
|
+
yield event;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
thread.messages.push({
|
|
283
|
+
messageId: randomUUID(),
|
|
284
|
+
role: "MODEL" /* MODEL */,
|
|
285
|
+
timestamp: Date.now(),
|
|
286
|
+
content: { type: "text", parts: [responseText] },
|
|
287
|
+
metadata: { isThinking: true }
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
}
|
|
248
291
|
} else {
|
|
249
292
|
const fulfillmentResults = [];
|
|
250
293
|
for (let i = 0; i < intents.length; i++) {
|
|
@@ -288,7 +331,7 @@ var IntentFulfillService = class {
|
|
|
288
331
|
response: responseText
|
|
289
332
|
});
|
|
290
333
|
}
|
|
291
|
-
const aggregateStream = this.aggregateService.
|
|
334
|
+
const aggregateStream = this.aggregateService.aggregate(
|
|
292
335
|
originalQuery,
|
|
293
336
|
fulfillmentResults
|
|
294
337
|
);
|
|
@@ -316,4 +359,4 @@ var IntentFulfillService = class {
|
|
|
316
359
|
export {
|
|
317
360
|
IntentFulfillService
|
|
318
361
|
};
|
|
319
|
-
//# sourceMappingURL=chunk-
|
|
362
|
+
//# sourceMappingURL=chunk-5FJU67BO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/intents/fulfill.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { getManifest } from \"@/config/manifest\";\nimport type {\n\tA2AModule,\n\tMCPModule,\n\tMemoryModule,\n\tModelModule,\n} from \"@/modules\";\nimport type { OnIntentFallback } from \"@/types/agent\";\nimport { CONNECTOR_PROTOCOL_TYPE, type ConnectorTool } from \"@/types/connector\";\nimport {\n\ttype FulfillmentResult,\n\ttype Intent,\n\ttype MessageObject,\n\tMessageRole,\n\ttype ThreadObject,\n\ttype TriggeredIntent,\n} from \"@/types/memory\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger\";\nimport { createFulfillPrompt } from \"../utils/fulfill.common\";\nimport { AggregateService } from \"./aggregate.service\";\n\nexport class IntentFulfillService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule: MemoryModule;\n\tprivate a2aModule?: A2AModule;\n\tprivate mcpModule?: MCPModule;\n\tprivate onIntentFallback?: OnIntentFallback;\n\tprivate aggregateService: AggregateService;\n\n\tconstructor(\n\t\tmodelModule: ModelModule,\n\t\tmemoryModule: MemoryModule,\n\t\ta2aModule?: A2AModule,\n\t\tmcpModule?: MCPModule,\n\t\tonIntentFallback?: OnIntentFallback,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.a2aModule = a2aModule;\n\t\tthis.mcpModule = mcpModule;\n\t\tthis.onIntentFallback = onIntentFallback;\n\t\tthis.aggregateService = new AggregateService(modelModule);\n\t}\n\n\tprivate async addToThreadMessages(\n\t\tthread: ThreadObject,\n\t\tparams: {\n\t\t\trole: MessageRole;\n\t\t\tcontent: string;\n\t\t\tmetadata?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\ttry {\n\t\t\tconst threadMemory = this.memoryModule.getThreadMemory();\n\t\t\tconst { userId, threadId } = thread;\n\t\t\tconst newMessage: MessageObject = {\n\t\t\t\tmessageId: randomUUID(),\n\t\t\t\trole: params.role,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tcontent: { type: \"text\", parts: [params.content] },\n\t\t\t\tmetadata: params.metadata,\n\t\t\t};\n\t\t\tthread.messages.push(newMessage);\n\t\t\tawait threadMemory?.addMessagesToThread(userId, threadId, [newMessage]);\n\t\t} catch (error) {\n\t\t\tloggers.intentStream.error(\"Error adding message to thread\", error);\n\t\t}\n\t}\n\n\t/**\n\t * Fulfills the detected intent by generating a streaming response.\n\t *\n\t * Manages the complete inference loop including:\n\t * - Loading prompts and conversation history\n\t * - Collecting available tools from modules\n\t * - Executing model inference with tool support\n\t * - Processing tool calls iteratively until completion\n\t * - Streaming results as Server-Sent Events\n\t *\n\t * @param query - The user's input query\n\t * @param threadId - Thread identifier for context\n\t * @param thread - Previous conversation history\n\t * @param intent - Optional detected intent with custom prompt\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tprivate async *intentFulfilling(\n\t\tquery: string,\n\t\tthread: ThreadObject,\n\t\tintent?: Intent,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst agentMemory = this.memoryModule.getAgentMemory();\n\t\tconst fulfillPrompt = await createFulfillPrompt(agentMemory, intent);\n\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery,\n\t\t\tthread,\n\t\t\tsystemPrompt: fulfillPrompt.trim(),\n\t\t});\n\n\t\tloggers.intent.debug(\"Intent fulfillment start\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tmessages,\n\t\t});\n\n\t\tconst tools: ConnectorTool[] = [];\n\t\tthis.mcpModule && tools.push(...this.mcpModule.getTools());\n\t\tthis.a2aModule && tools.push(...(await this.a2aModule.getTools()));\n\n\t\tconst processList: string[] = [];\n\n\t\twhile (true) {\n\t\t\tconst functions = modelInstance.convertToolsToFunctions(tools);\n\t\t\tconst responseStream = await modelInstance.fetchStreamWithContextMessage(\n\t\t\t\tmessages,\n\t\t\t\tfunctions,\n\t\t\t\tmodelOptions,\n\t\t\t);\n\n\t\t\tconst assembledToolCalls: {\n\t\t\t\tid: string;\n\t\t\t\ttype: \"function\";\n\t\t\t\tfunction: { name: string; arguments: string };\n\t\t\t}[] = [];\n\n\t\t\tfor await (const chunk of responseStream) {\n\t\t\t\tconst delta = chunk.delta;\n\t\t\t\tif (delta?.tool_calls) {\n\t\t\t\t\tfor (const { index, id, function: func } of delta.tool_calls) {\n\t\t\t\t\t\tassembledToolCalls[index] ??= {\n\t\t\t\t\t\t\tid: \"\",\n\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\tfunction: { name: \"\", arguments: \"\" },\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (id) assembledToolCalls[index].id = id;\n\t\t\t\t\t\tif (func?.name) assembledToolCalls[index].function.name = func.name;\n\t\t\t\t\t\tif (func?.arguments)\n\t\t\t\t\t\t\tassembledToolCalls[index].function.arguments += func.arguments;\n\t\t\t\t\t}\n\t\t\t\t} else if (chunk.delta?.content) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\t\tdata: { delta: chunk.delta.content },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tloggers.intentStream.debug(\"assembledToolCalls\", {\n\t\t\t\tthreadId: thread.threadId,\n\t\t\t\tassembledToolCalls,\n\t\t\t});\n\n\t\t\tif (assembledToolCalls.length > 0) {\n\t\t\t\tfor (const toolCall of assembledToolCalls) {\n\t\t\t\t\tconst toolName = toolCall.function.name;\n\t\t\t\t\tlet selectedTool: ConnectorTool | undefined;\n\t\t\t\t\tfor (const [index, toolTmp] of tools.entries()) {\n\t\t\t\t\t\tif (toolTmp.toolName === toolName) {\n\t\t\t\t\t\t\tif (toolTmp.protocol === CONNECTOR_PROTOCOL_TYPE.A2A) {\n\t\t\t\t\t\t\t\t// remove used tool to prevent infinite loop\n\t\t\t\t\t\t\t\tselectedTool = tools.splice(index, 1)[0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tselectedTool = toolTmp;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!selectedTool) {\n\t\t\t\t\t\t// it cannot be happened...\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst toolArgs = JSON.parse(toolCall.function.arguments);\n\t\t\t\t\tconst thinkData = {\n\t\t\t\t\t\ttitle: `[${getManifest().name}] ${selectedTool.protocol} 실행: ${toolName}`,\n\t\t\t\t\t\tdescription: `${toolArgs.thinking_text || \"\"}`,\n\t\t\t\t\t};\n\t\t\t\t\tyield {\n\t\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\t\tdata: thinkData,\n\t\t\t\t\t};\n\n\t\t\t\t\tlet toolResult = \"\";\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.mcpModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.MCP\n\t\t\t\t\t) {\n\t\t\t\t\t\tloggers.intent.info(\"MCP tool call\", { toolName, toolArgs });\n\t\t\t\t\t\ttoolResult = await this.mcpModule.useTool(selectedTool, toolArgs);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tthis.a2aModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.A2A\n\t\t\t\t\t) {\n\t\t\t\t\t\tloggers.intent.info(\"A2A tool call\", { toolName });\n\t\t\t\t\t\tconst a2aStream = this.a2aModule.useTool(\n\t\t\t\t\t\t\tselectedTool,\n\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\tthread.threadId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// yield intermediate events and get final result\n\t\t\t\t\t\tlet result = await a2aStream.next();\n\t\t\t\t\t\twhile (!result.done) {\n\t\t\t\t\t\t\tif (result.value.event === \"thinking_process\") {\n\t\t\t\t\t\t\t\tyield result.value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresult = await a2aStream.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoolResult = result.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Unrecognized tool type. It cannot be happened...\n\t\t\t\t\t\tloggers.intent.warn(\n\t\t\t\t\t\t\t`Unrecognized tool type: ${selectedTool.protocol}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tloggers.intent.debug(\"Tool Result\", { toolResult });\n\n\t\t\t\t\tprocessList.push(toolResult);\n\t\t\t\t\tmodelInstance.appendMessages(messages, toolResult);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tloggers.intent.debug(\"Intent fulfillment completed\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\ttoolCallsExecuted: processList.length,\n\t\t\tintentName: intent?.name,\n\t\t});\n\t}\n\n\t/**\n\t * Returns the appropriate stream for a triggered intent.\n\t * Uses fallback handler if no intent matched and fallback is configured.\n\t */\n\tprivate getIntentStream(\n\t\ttriggeredIntent: TriggeredIntent,\n\t\tthread: ThreadObject,\n\t): AsyncGenerator<StreamEvent> | undefined {\n\t\tconst { subquery = \"\", intent } = triggeredIntent;\n\n\t\tif (!intent && this.onIntentFallback) {\n\t\t\tloggers.intent.info(\"No intent matched, calling fallback handler\");\n\t\t\tconst fallbackStream = this.onIntentFallback({\n\t\t\t\ttriggeredIntent,\n\t\t\t\tthread,\n\t\t\t});\n\t\t\tif (fallbackStream !== undefined) {\n\t\t\t\treturn fallbackStream;\n\t\t\t}\n\t\t}\n\n\t\treturn this.intentFulfilling(subquery, thread, intent);\n\t}\n\n\t/**\n\t * Processes all triggered intents and generates a unified response.\n\t *\n\t * Workflow:\n\t * 1. Process each intent sequentially, collecting results\n\t * 2. Yield thinking_process events for progress visibility\n\t * 3. Use AggregateService to unify results if needsAggregation is true\n\t * 4. Stream the final (possibly aggregated) response\n\t *\n\t * @param intents - Array of triggered intents to process\n\t * @param thread - The thread history\n\t * @param originalQuery - The user's original query (for aggregate context)\n\t * @param needsAggregation - Whether the results need to be aggregated\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tpublic async *intentFulfill(\n\t\tintents: Array<TriggeredIntent>,\n\t\tthread: ThreadObject,\n\t\toriginalQuery: string,\n\t\tneedsAggregation: boolean,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst streamStartTime = Date.now();\n\t\tloggers.intentStream.info(\"Stream session started\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tintentCount: intents.length,\n\t\t\tneedsAggregation,\n\t\t\tstartTime: new Date(streamStartTime).toISOString(),\n\t\t});\n\n\t\tlet finalResponseText = \"\";\n\n\t\tif (intents.length <= 1) {\n\t\t\t// Single intent: stream response directly\n\t\t\tconst triggeredIntent = intents[0];\n\t\t\tif (!triggeredIntent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { subquery = \"\", intent, actionPlan } = triggeredIntent;\n\t\t\tloggers.intent.info(\n\t\t\t\t`Process single intent: ${subquery}, ${intent?.name}`,\n\t\t\t);\n\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t// Yield thinking_process for progress visibility\n\t\t\tyield {\n\t\t\t\tevent: \"thinking_process\",\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: `[${getManifest().name}] ${subquery}`,\n\t\t\t\t\tdescription: actionPlan || \"\",\n\t\t\t\t},\n\t\t\t};\n\n\t\t\t// Get the stream for this intent\n\t\t\tconst stream = this.getIntentStream(triggeredIntent, thread);\n\t\t\tif (!stream) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Stream response directly\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t}\n\t\t\t\tyield event;\n\t\t\t}\n\t\t} else if (!needsAggregation) {\n\t\t\t// Multiple intents but no aggregation needed: collect intermediate results, stream only last\n\t\t\tfor (let i = 0; i < intents.length; i++) {\n\t\t\t\tconst triggeredIntent = intents[i];\n\t\t\t\tconst { subquery = \"\", intent, actionPlan } = triggeredIntent;\n\t\t\t\tloggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);\n\t\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t\tconst isLastIntent = i === intents.length - 1;\n\n\t\t\t\t// Yield thinking_process for progress visibility\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: `[${getManifest().name}] ${subquery}`,\n\t\t\t\t\t\tdescription: actionPlan || \"\",\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\t// Get the stream for this intent\n\t\t\t\tconst stream = this.getIntentStream(triggeredIntent, thread);\n\t\t\t\tif (!stream) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (isLastIntent) {\n\t\t\t\t\t// Stream last intent response directly\n\t\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyield event;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Collect intermediate results without streaming text_chunk\n\t\t\t\t\tlet responseText = \"\";\n\t\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\t\t\tresponseText += event.data.delta;\n\t\t\t\t\t\t} else if (event.event === \"thinking_process\") {\n\t\t\t\t\t\t\t// Tool execution thinking_process events are yielded immediately\n\t\t\t\t\t\t\tyield event;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Add intermediate result to thread context for next intent\n\t\t\t\t\tthread.messages.push({\n\t\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\tcontent: { type: \"text\", parts: [responseText] },\n\t\t\t\t\t\tmetadata: { isThinking: true },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Multi-intent mode with aggregation: collect all results then aggregate\n\t\t\tconst fulfillmentResults: FulfillmentResult[] = [];\n\n\t\t\tfor (let i = 0; i < intents.length; i++) {\n\t\t\t\tconst triggeredIntent = intents[i];\n\t\t\t\tconst { subquery = \"\", intent, actionPlan } = triggeredIntent;\n\t\t\t\tloggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);\n\t\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t\t// Add previous result to thread context for inference (not stored in memory)\n\t\t\t\tif (fulfillmentResults.length > 0) {\n\t\t\t\t\tconst lastResult = fulfillmentResults[fulfillmentResults.length - 1];\n\t\t\t\t\tthread.messages.push({\n\t\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\tcontent: { type: \"text\", parts: [lastResult.response] },\n\t\t\t\t\t\tmetadata: { isThinking: true },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Yield thinking_process for progress visibility\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: `[${getManifest().name}] ${subquery}`,\n\t\t\t\t\t\tdescription: actionPlan || \"\",\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\t// Get the stream for this intent\n\t\t\t\tconst stream = this.getIntentStream(triggeredIntent, thread);\n\t\t\t\tif (!stream) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Collect response text (don't yield text_chunk yet)\n\t\t\t\tlet responseText = \"\";\n\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\t\tresponseText += event.data.delta;\n\t\t\t\t\t} else if (event.event === \"thinking_process\") {\n\t\t\t\t\t\t// Tool execution thinking_process events are yielded immediately\n\t\t\t\t\t\tyield event;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfulfillmentResults.push({\n\t\t\t\t\tsubquery,\n\t\t\t\t\tintent,\n\t\t\t\t\tactionPlan,\n\t\t\t\t\tresponse: responseText,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Aggregate step: generate unified response\n\t\t\tconst aggregateStream = this.aggregateService.aggregate(\n\t\t\t\toriginalQuery,\n\t\t\t\tfulfillmentResults,\n\t\t\t);\n\n\t\t\tfor await (const event of aggregateStream) {\n\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t}\n\t\t\t\tyield event;\n\t\t\t}\n\t\t}\n\n\t\t// Save final response to memory\n\t\tawait this.addToThreadMessages(thread, {\n\t\t\trole: MessageRole.MODEL,\n\t\t\tcontent: finalResponseText,\n\t\t});\n\n\t\tconst streamEndTime = Date.now();\n\t\tconst streamDuration = streamEndTime - streamStartTime;\n\n\t\tloggers.intentStream.info(\"Stream session completed\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tduration: `${streamDuration}ms`,\n\t\t\tendTime: new Date(streamEndTime).toISOString(),\n\t\t});\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,kBAAkB;AAuBpB,IAAM,uBAAN,MAA2B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YACC,aACA,cACA,WACA,WACA,kBACC;AACD,SAAK,cAAc;AACnB,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,mBAAmB;AACxB,SAAK,mBAAmB,IAAI,iBAAiB,WAAW;AAAA,EACzD;AAAA,EAEA,MAAc,oBACb,QACA,QAKC;AACD,QAAI;AACH,YAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,YAAM,EAAE,QAAQ,SAAS,IAAI;AAC7B,YAAM,aAA4B;AAAA,QACjC,WAAW,WAAW;AAAA,QACtB,MAAM,OAAO;AAAA,QACb,WAAW,KAAK,IAAI;AAAA,QACpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,OAAO,OAAO,EAAE;AAAA,QACjD,UAAU,OAAO;AAAA,MAClB;AACA,aAAO,SAAS,KAAK,UAAU;AAC/B,YAAM,cAAc,oBAAoB,QAAQ,UAAU,CAAC,UAAU,CAAC;AAAA,IACvE,SAAS,OAAO;AACf,cAAQ,aAAa,MAAM,kCAAkC,KAAK;AAAA,IACnE;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAe,iBACd,OACA,QACA,QAC8B;AAC9B,UAAM,cAAc,KAAK,aAAa,eAAe;AACrD,UAAM,gBAAgB,MAAM,oBAAoB,aAAa,MAAM;AAEnE,UAAM,gBAAgB,KAAK,YAAY,SAAS;AAChD,UAAM,eAAe,KAAK,YAAY,gBAAgB;AACtD,UAAM,WAAW,cAAc,iBAAiB;AAAA,MAC/C;AAAA,MACA;AAAA,MACA,cAAc,cAAc,KAAK;AAAA,IAClC,CAAC;AAED,YAAQ,OAAO,MAAM,4BAA4B;AAAA,MAChD,UAAU,OAAO;AAAA,MACjB;AAAA,IACD,CAAC;AAED,UAAM,QAAyB,CAAC;AAChC,SAAK,aAAa,MAAM,KAAK,GAAG,KAAK,UAAU,SAAS,CAAC;AACzD,SAAK,aAAa,MAAM,KAAK,GAAI,MAAM,KAAK,UAAU,SAAS,CAAE;AAEjE,UAAM,cAAwB,CAAC;AAE/B,WAAO,MAAM;AACZ,YAAM,YAAY,cAAc,wBAAwB,KAAK;AAC7D,YAAM,iBAAiB,MAAM,cAAc;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAEA,YAAM,qBAIA,CAAC;AAEP,uBAAiB,SAAS,gBAAgB;AACzC,cAAM,QAAQ,MAAM;AACpB,YAAI,OAAO,YAAY;AACtB,qBAAW,EAAE,OAAO,IAAI,UAAU,KAAK,KAAK,MAAM,YAAY;AAC7D,+BAAmB,KAAK,MAAM;AAAA,cAC7B,IAAI;AAAA,cACJ,MAAM;AAAA,cACN,UAAU,EAAE,MAAM,IAAI,WAAW,GAAG;AAAA,YACrC;AAEA,gBAAI,GAAI,oBAAmB,KAAK,EAAE,KAAK;AACvC,gBAAI,MAAM,KAAM,oBAAmB,KAAK,EAAE,SAAS,OAAO,KAAK;AAC/D,gBAAI,MAAM;AACT,iCAAmB,KAAK,EAAE,SAAS,aAAa,KAAK;AAAA,UACvD;AAAA,QACD,WAAW,MAAM,OAAO,SAAS;AAChC,gBAAM;AAAA,YACL,OAAO;AAAA,YACP,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ;AAAA,UACpC;AAAA,QACD;AAAA,MACD;AAEA,cAAQ,aAAa,MAAM,sBAAsB;AAAA,QAChD,UAAU,OAAO;AAAA,QACjB;AAAA,MACD,CAAC;AAED,UAAI,mBAAmB,SAAS,GAAG;AAClC,mBAAW,YAAY,oBAAoB;AAC1C,gBAAM,WAAW,SAAS,SAAS;AACnC,cAAI;AACJ,qBAAW,CAAC,OAAO,OAAO,KAAK,MAAM,QAAQ,GAAG;AAC/C,gBAAI,QAAQ,aAAa,UAAU;AAClC,kBAAI,QAAQ,8BAA0C;AAErD,+BAAe,MAAM,OAAO,OAAO,CAAC,EAAE,CAAC;AACvC;AAAA,cACD;AACA,6BAAe;AAAA,YAChB;AAAA,UACD;AAEA,cAAI,CAAC,cAAc;AAElB;AAAA,UACD;AAEA,gBAAM,WAAW,KAAK,MAAM,SAAS,SAAS,SAAS;AACvD,gBAAM,YAAY;AAAA,YACjB,OAAO,IAAI,YAAY,EAAE,IAAI,KAAK,aAAa,QAAQ,kBAAQ,QAAQ;AAAA,YACvE,aAAa,GAAG,SAAS,iBAAiB,EAAE;AAAA,UAC7C;AACA,gBAAM;AAAA,YACL,OAAO;AAAA,YACP,MAAM;AAAA,UACP;AAEA,cAAI,aAAa;AACjB,cACC,KAAK,aACL,aAAa,8BACZ;AACD,oBAAQ,OAAO,KAAK,iBAAiB,EAAE,UAAU,SAAS,CAAC;AAC3D,yBAAa,MAAM,KAAK,UAAU,QAAQ,cAAc,QAAQ;AAAA,UACjE,WACC,KAAK,aACL,aAAa,8BACZ;AACD,oBAAQ,OAAO,KAAK,iBAAiB,EAAE,SAAS,CAAC;AACjD,kBAAM,YAAY,KAAK,UAAU;AAAA,cAChC;AAAA,cACA;AAAA,cACA,OAAO;AAAA,YACR;AAEA,gBAAI,SAAS,MAAM,UAAU,KAAK;AAClC,mBAAO,CAAC,OAAO,MAAM;AACpB,kBAAI,OAAO,MAAM,UAAU,oBAAoB;AAC9C,sBAAM,OAAO;AAAA,cACd;AACA,uBAAS,MAAM,UAAU,KAAK;AAAA,YAC/B;AACA,yBAAa,OAAO;AAAA,UACrB,OAAO;AAEN,oBAAQ,OAAO;AAAA,cACd,2BAA2B,aAAa,QAAQ;AAAA,YACjD;AACA;AAAA,UACD;AAEA,kBAAQ,OAAO,MAAM,eAAe,EAAE,WAAW,CAAC;AAElD,sBAAY,KAAK,UAAU;AAC3B,wBAAc,eAAe,UAAU,UAAU;AAAA,QAClD;AAAA,MACD,OAAO;AACN;AAAA,MACD;AAAA,IACD;AAEA,YAAQ,OAAO,MAAM,gCAAgC;AAAA,MACpD,UAAU,OAAO;AAAA,MACjB,mBAAmB,YAAY;AAAA,MAC/B,YAAY,QAAQ;AAAA,IACrB,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,gBACP,iBACA,QAC0C;AAC1C,UAAM,EAAE,WAAW,IAAI,OAAO,IAAI;AAElC,QAAI,CAAC,UAAU,KAAK,kBAAkB;AACrC,cAAQ,OAAO,KAAK,6CAA6C;AACjE,YAAM,iBAAiB,KAAK,iBAAiB;AAAA,QAC5C;AAAA,QACA;AAAA,MACD,CAAC;AACD,UAAI,mBAAmB,QAAW;AACjC,eAAO;AAAA,MACR;AAAA,IACD;AAEA,WAAO,KAAK,iBAAiB,UAAU,QAAQ,MAAM;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,OAAc,cACb,SACA,QACA,eACA,kBAC8B;AAC9B,UAAM,kBAAkB,KAAK,IAAI;AACjC,YAAQ,aAAa,KAAK,0BAA0B;AAAA,MACnD,UAAU,OAAO;AAAA,MACjB,aAAa,QAAQ;AAAA,MACrB;AAAA,MACA,WAAW,IAAI,KAAK,eAAe,EAAE,YAAY;AAAA,IAClD,CAAC;AAED,QAAI,oBAAoB;AAExB,QAAI,QAAQ,UAAU,GAAG;AAExB,YAAM,kBAAkB,QAAQ,CAAC;AACjC,UAAI,CAAC,iBAAiB;AACrB;AAAA,MACD;AAEA,YAAM,EAAE,WAAW,IAAI,QAAQ,WAAW,IAAI;AAC9C,cAAQ,OAAO;AAAA,QACd,0BAA0B,QAAQ,KAAK,QAAQ,IAAI;AAAA,MACpD;AACA,cAAQ,OAAO,KAAK,gBAAgB,UAAU,EAAE;AAGhD,YAAM;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,UACL,OAAO,IAAI,YAAY,EAAE,IAAI,KAAK,QAAQ;AAAA,UAC1C,aAAa,cAAc;AAAA,QAC5B;AAAA,MACD;AAGA,YAAM,SAAS,KAAK,gBAAgB,iBAAiB,MAAM;AAC3D,UAAI,CAAC,QAAQ;AACZ;AAAA,MACD;AAGA,uBAAiB,SAAS,QAAQ;AACjC,YAAI,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AACrD,+BAAqB,MAAM,KAAK;AAAA,QACjC;AACA,cAAM;AAAA,MACP;AAAA,IACD,WAAW,CAAC,kBAAkB;AAE7B,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACxC,cAAM,kBAAkB,QAAQ,CAAC;AACjC,cAAM,EAAE,WAAW,IAAI,QAAQ,WAAW,IAAI;AAC9C,gBAAQ,OAAO,KAAK,kBAAkB,QAAQ,KAAK,QAAQ,IAAI,EAAE;AACjE,gBAAQ,OAAO,KAAK,gBAAgB,UAAU,EAAE;AAEhD,cAAM,eAAe,MAAM,QAAQ,SAAS;AAG5C,cAAM;AAAA,UACL,OAAO;AAAA,UACP,MAAM;AAAA,YACL,OAAO,IAAI,YAAY,EAAE,IAAI,KAAK,QAAQ;AAAA,YAC1C,aAAa,cAAc;AAAA,UAC5B;AAAA,QACD;AAGA,cAAM,SAAS,KAAK,gBAAgB,iBAAiB,MAAM;AAC3D,YAAI,CAAC,QAAQ;AACZ;AAAA,QACD;AAEA,YAAI,cAAc;AAEjB,2BAAiB,SAAS,QAAQ;AACjC,gBAAI,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AACrD,mCAAqB,MAAM,KAAK;AAAA,YACjC;AACA,kBAAM;AAAA,UACP;AAAA,QACD,OAAO;AAEN,cAAI,eAAe;AACnB,2BAAiB,SAAS,QAAQ;AACjC,gBAAI,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AACrD,8BAAgB,MAAM,KAAK;AAAA,YAC5B,WAAW,MAAM,UAAU,oBAAoB;AAE9C,oBAAM;AAAA,YACP;AAAA,UACD;AAEA,iBAAO,SAAS,KAAK;AAAA,YACpB,WAAW,WAAW;AAAA,YACtB;AAAA,YACA,WAAW,KAAK,IAAI;AAAA,YACpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,YAAY,EAAE;AAAA,YAC/C,UAAU,EAAE,YAAY,KAAK;AAAA,UAC9B,CAAC;AAAA,QACF;AAAA,MACD;AAAA,IACD,OAAO;AAEN,YAAM,qBAA0C,CAAC;AAEjD,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACxC,cAAM,kBAAkB,QAAQ,CAAC;AACjC,cAAM,EAAE,WAAW,IAAI,QAAQ,WAAW,IAAI;AAC9C,gBAAQ,OAAO,KAAK,kBAAkB,QAAQ,KAAK,QAAQ,IAAI,EAAE;AACjE,gBAAQ,OAAO,KAAK,gBAAgB,UAAU,EAAE;AAGhD,YAAI,mBAAmB,SAAS,GAAG;AAClC,gBAAM,aAAa,mBAAmB,mBAAmB,SAAS,CAAC;AACnE,iBAAO,SAAS,KAAK;AAAA,YACpB,WAAW,WAAW;AAAA,YACtB;AAAA,YACA,WAAW,KAAK,IAAI;AAAA,YACpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,WAAW,QAAQ,EAAE;AAAA,YACtD,UAAU,EAAE,YAAY,KAAK;AAAA,UAC9B,CAAC;AAAA,QACF;AAGA,cAAM;AAAA,UACL,OAAO;AAAA,UACP,MAAM;AAAA,YACL,OAAO,IAAI,YAAY,EAAE,IAAI,KAAK,QAAQ;AAAA,YAC1C,aAAa,cAAc;AAAA,UAC5B;AAAA,QACD;AAGA,cAAM,SAAS,KAAK,gBAAgB,iBAAiB,MAAM;AAC3D,YAAI,CAAC,QAAQ;AACZ;AAAA,QACD;AAGA,YAAI,eAAe;AACnB,yBAAiB,SAAS,QAAQ;AACjC,cAAI,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AACrD,4BAAgB,MAAM,KAAK;AAAA,UAC5B,WAAW,MAAM,UAAU,oBAAoB;AAE9C,kBAAM;AAAA,UACP;AAAA,QACD;AAEA,2BAAmB,KAAK;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,QACX,CAAC;AAAA,MACF;AAGA,YAAM,kBAAkB,KAAK,iBAAiB;AAAA,QAC7C;AAAA,QACA;AAAA,MACD;AAEA,uBAAiB,SAAS,iBAAiB;AAC1C,YAAI,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AACrD,+BAAqB,MAAM,KAAK;AAAA,QACjC;AACA,cAAM;AAAA,MACP;AAAA,IACD;AAGA,UAAM,KAAK,oBAAoB,QAAQ;AAAA,MACtC;AAAA,MACA,SAAS;AAAA,IACV,CAAC;AAED,UAAM,gBAAgB,KAAK,IAAI;AAC/B,UAAM,iBAAiB,gBAAgB;AAEvC,YAAQ,aAAa,KAAK,4BAA4B;AAAA,MACrD,UAAU,OAAO;AAAA,MACjB,UAAU,GAAG,cAAc;AAAA,MAC3B,SAAS,IAAI,KAAK,aAAa,EAAE,YAAY;AAAA,IAC9C,CAAC;AAAA,EACF;AACD;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ControllerContainer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GKG27ZGB.js";
|
|
4
4
|
import {
|
|
5
5
|
ServiceContainer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CYP6OTDK.js";
|
|
7
7
|
|
|
8
8
|
// src/container/index.ts
|
|
9
9
|
var Container = class {
|
|
@@ -71,4 +71,4 @@ var container = new Container();
|
|
|
71
71
|
export {
|
|
72
72
|
container
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-A3CKGK3U.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
logger
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GHUEA7V5.js";
|
|
4
4
|
|
|
5
5
|
// src/middlewares/error.middleware.ts
|
|
6
6
|
var errorMiddleware = (error, req, res, next) => {
|
|
@@ -19,4 +19,4 @@ var errorMiddleware = (error, req, res, next) => {
|
|
|
19
19
|
export {
|
|
20
20
|
errorMiddleware
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-BYGS3GS6.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
IntentTriggerService
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DBB7B4PV.js";
|
|
4
4
|
import {
|
|
5
5
|
IntentFulfillService
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5FJU67BO.js";
|
|
7
7
|
import {
|
|
8
8
|
A2AService
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WMHUZEL2.js";
|
|
10
10
|
import {
|
|
11
11
|
QueryService
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ZSWCICNO.js";
|
|
13
13
|
import {
|
|
14
14
|
ThreadService
|
|
15
15
|
} from "./chunk-V23GKNNJ.js";
|
|
@@ -86,4 +86,4 @@ var ServiceContainer = class {
|
|
|
86
86
|
export {
|
|
87
87
|
ServiceContainer
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-CYP6OTDK.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
container
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A3CKGK3U.js";
|
|
4
4
|
|
|
5
5
|
// src/routes/api/agent.routes.ts
|
|
6
6
|
import { Router } from "express";
|
|
@@ -14,4 +14,4 @@ var createAgentApiRouter = () => {
|
|
|
14
14
|
export {
|
|
15
15
|
createAgentApiRouter
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-D66QTWUY.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MultiIntentTriggerService
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZXRDGIRP.js";
|
|
4
4
|
import {
|
|
5
5
|
SingleIntentTriggerService
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VGL4ZVNA.js";
|
|
7
7
|
|
|
8
8
|
// src/services/intents/trigger.service.ts
|
|
9
9
|
function isMultiIntentDisabled() {
|
|
@@ -29,7 +29,7 @@ var IntentTriggerService = class {
|
|
|
29
29
|
*
|
|
30
30
|
* @param query - The user's input query
|
|
31
31
|
* @param thread - The thread history
|
|
32
|
-
* @returns
|
|
32
|
+
* @returns IntentTriggerResult containing intents and aggregation flag
|
|
33
33
|
*/
|
|
34
34
|
async intentTriggering(query, thread) {
|
|
35
35
|
if (isMultiIntentDisabled()) {
|
|
@@ -42,4 +42,4 @@ var IntentTriggerService = class {
|
|
|
42
42
|
export {
|
|
43
43
|
IntentTriggerService
|
|
44
44
|
};
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# sourceMappingURL=chunk-DBB7B4PV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/intents/trigger.service.ts"],"sourcesContent":["import type { MemoryModule, ModelModule } from \"@/modules\";\nimport type { IntentTriggerResult, ThreadObject } from \"@/types/memory\";\nimport { MultiIntentTriggerService } from \"./multi-trigger.service\";\nimport { SingleIntentTriggerService } from \"./single-trigger.service\";\n\n/**\n * Check if multi-intent is disabled via environment variable.\n */\nfunction isMultiIntentDisabled(): boolean {\n\tconst value = process.env.DISABLE_MULTI_INTENTS;\n\treturn value === \"true\" || value === \"1\";\n}\n\n/**\n * Service for intent triggering.\n * Routes to single or multi-intent triggering based on DISABLE_MULTI_INTENTS env var.\n */\nexport class IntentTriggerService {\n\tprivate singleTriggerService: SingleIntentTriggerService;\n\tprivate multiTriggerService: MultiIntentTriggerService;\n\n\tconstructor(modelModule: ModelModule, memoryModule: MemoryModule) {\n\t\tthis.singleTriggerService = new SingleIntentTriggerService(\n\t\t\tmodelModule,\n\t\t\tmemoryModule,\n\t\t);\n\t\tthis.multiTriggerService = new MultiIntentTriggerService(\n\t\t\tmodelModule,\n\t\t\tmemoryModule,\n\t\t);\n\t}\n\n\t/**\n\t * Detects the intent from context.\n\t * Routes to single or multi-intent triggering based on DISABLE_MULTI_INTENTS env var.\n\t *\n\t * @param query - The user's input query\n\t * @param thread - The thread history\n\t * @returns IntentTriggerResult containing intents and aggregation flag\n\t */\n\tpublic async intentTriggering(\n\t\tquery: string,\n\t\tthread: ThreadObject | undefined,\n\t): Promise<IntentTriggerResult> {\n\t\tif (isMultiIntentDisabled()) {\n\t\t\treturn this.singleTriggerService.intentTriggering(query, thread);\n\t\t}\n\t\treturn this.multiTriggerService.intentTriggering(query, thread);\n\t}\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,wBAAiC;AACzC,QAAM,QAAQ,QAAQ,IAAI;AAC1B,SAAO,UAAU,UAAU,UAAU;AACtC;AAMO,IAAM,uBAAN,MAA2B;AAAA,EACzB;AAAA,EACA;AAAA,EAER,YAAY,aAA0B,cAA4B;AACjE,SAAK,uBAAuB,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,IACD;AACA,SAAK,sBAAsB,IAAI;AAAA,MAC9B;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,OACA,QAC+B;AAC/B,QAAI,sBAAsB,GAAG;AAC5B,aAAO,KAAK,qBAAqB,iBAAiB,OAAO,MAAM;AAAA,IAChE;AACA,WAAO,KAAK,oBAAoB,iBAAiB,OAAO,MAAM;AAAA,EAC/D;AACD;","names":[]}
|
|
@@ -53,10 +53,31 @@ var loggers = {
|
|
|
53
53
|
server: getLogger("A2AServer"),
|
|
54
54
|
fol: getLogger("FOL")
|
|
55
55
|
};
|
|
56
|
+
var interceptConsole = () => {
|
|
57
|
+
const logFilePath = process.env.LOG_FILE_PATH;
|
|
58
|
+
if (!logFilePath) return;
|
|
59
|
+
const consoleLogger = createLogger("console");
|
|
60
|
+
const originalLog = console.log;
|
|
61
|
+
const originalWarn = console.warn;
|
|
62
|
+
const originalError = console.error;
|
|
63
|
+
console.log = (...args) => {
|
|
64
|
+
originalLog(...args);
|
|
65
|
+
consoleLogger.info(args.map(String).join(" "));
|
|
66
|
+
};
|
|
67
|
+
console.warn = (...args) => {
|
|
68
|
+
originalWarn(...args);
|
|
69
|
+
consoleLogger.warn(args.map(String).join(" "));
|
|
70
|
+
};
|
|
71
|
+
console.error = (...args) => {
|
|
72
|
+
originalError(...args);
|
|
73
|
+
consoleLogger.error(args.map(String).join(" "));
|
|
74
|
+
};
|
|
75
|
+
};
|
|
56
76
|
|
|
57
77
|
export {
|
|
58
78
|
logger,
|
|
59
79
|
getLogger,
|
|
60
|
-
loggers
|
|
80
|
+
loggers,
|
|
81
|
+
interceptConsole
|
|
61
82
|
};
|
|
62
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-GHUEA7V5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/logger.ts"],"sourcesContent":["import winston from \"winston\";\nimport DailyRotateFile from \"winston-daily-rotate-file\";\n\nconst { combine, timestamp, printf, colorize, errors } = winston.format;\n\nconst logFormat = printf(\n\t({ level, message, timestamp, service, stack, ...meta }) => {\n\t\tconst metaStr = Object.keys(meta).length\n\t\t\t? ` | ${JSON.stringify(meta)}`\n\t\t\t: \"\";\n\t\tconst errorStack = stack ? `\\n${stack}` : \"\";\n\t\treturn `${timestamp} [${service}] ${level}: ${message}${metaStr}${errorStack}`;\n\t},\n);\n\nconst createLogger = (service: string) => {\n\tconst logFilePath = process.env.LOG_FILE_PATH;\n\n\tconst transports: winston.transport[] = logFilePath\n\t\t? [\n\t\t\t\tnew DailyRotateFile({\n\t\t\t\t\tfilename: logFilePath,\n\t\t\t\t\tdatePattern: \"YYYY-MM-DD\",\n\t\t\t\t\tmaxSize: process.env.LOG_MAX_SIZE || \"20m\",\n\t\t\t\t\tmaxFiles: process.env.LOG_MAX_FILES || \"14d\",\n\t\t\t\t\tformat: combine(\n\t\t\t\t\t\terrors({ stack: true }),\n\t\t\t\t\t\ttimestamp({ format: \"YYYY-MM-DD HH:mm:ss\" }),\n\t\t\t\t\t\tlogFormat,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t]\n\t\t: [\n\t\t\t\tnew winston.transports.Console({\n\t\t\t\t\tformat: combine(\n\t\t\t\t\t\terrors({ stack: true }),\n\t\t\t\t\t\tcolorize(),\n\t\t\t\t\t\ttimestamp({ format: \"HH:mm:ss\" }),\n\t\t\t\t\t\tlogFormat,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t];\n\n\tconst logger = winston.createLogger({\n\t\tlevel: (process.env.LOG_LEVEL || \"info\").toLowerCase(),\n\t\tdefaultMeta: { service },\n\t\ttransports,\n\t});\n\n\treturn logger;\n};\n\n// Default logger instance\nexport const logger = createLogger(\"ain-adk\");\n\n// Factory function for creating service-specific loggers\nexport const getLogger = (service: string) => createLogger(service);\n\n// Convenience methods for different components\nexport const loggers = {\n\tagent: getLogger(\"AINAgent\"),\n\tintent: getLogger(\"Intent\"),\n\tintentStream: getLogger(\"IntentStream\"),\n\tmcp: getLogger(\"MCPModule\"),\n\ta2a: getLogger(\"A2AModule\"),\n\tmodel: getLogger(\"Model\"),\n\tserver: getLogger(\"A2AServer\"),\n\tfol: getLogger(\"FOL\"),\n} as const;\n\n// Intercept console.log/warn/error and write to LOG_FILE_PATH\nexport const interceptConsole = () => {\n\tconst logFilePath = process.env.LOG_FILE_PATH;\n\tif (!logFilePath) return;\n\n\tconst consoleLogger = createLogger(\"console\");\n\n\tconst originalLog = console.log;\n\tconst originalWarn = console.warn;\n\tconst originalError = console.error;\n\n\tconsole.log = (...args: unknown[]) => {\n\t\toriginalLog(...args);\n\t\tconsoleLogger.info(args.map(String).join(\" \"));\n\t};\n\n\tconsole.warn = (...args: unknown[]) => {\n\t\toriginalWarn(...args);\n\t\tconsoleLogger.warn(args.map(String).join(\" \"));\n\t};\n\n\tconsole.error = (...args: unknown[]) => {\n\t\toriginalError(...args);\n\t\tconsoleLogger.error(args.map(String).join(\" \"));\n\t};\n};\n"],"mappings":";AAAA,OAAO,aAAa;AACpB,OAAO,qBAAqB;AAE5B,IAAM,EAAE,SAAS,WAAW,QAAQ,UAAU,OAAO,IAAI,QAAQ;AAEjE,IAAM,YAAY;AAAA,EACjB,CAAC,EAAE,OAAO,SAAS,WAAAA,YAAW,SAAS,OAAO,GAAG,KAAK,MAAM;AAC3D,UAAM,UAAU,OAAO,KAAK,IAAI,EAAE,SAC/B,MAAM,KAAK,UAAU,IAAI,CAAC,KAC1B;AACH,UAAM,aAAa,QAAQ;AAAA,EAAK,KAAK,KAAK;AAC1C,WAAO,GAAGA,UAAS,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,UAAU;AAAA,EAC7E;AACD;AAEA,IAAM,eAAe,CAAC,YAAoB;AACzC,QAAM,cAAc,QAAQ,IAAI;AAEhC,QAAM,aAAkC,cACrC;AAAA,IACA,IAAI,gBAAgB;AAAA,MACnB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,SAAS,QAAQ,IAAI,gBAAgB;AAAA,MACrC,UAAU,QAAQ,IAAI,iBAAiB;AAAA,MACvC,QAAQ;AAAA,QACP,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,QACtB,UAAU,EAAE,QAAQ,sBAAsB,CAAC;AAAA,QAC3C;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF,IACC;AAAA,IACA,IAAI,QAAQ,WAAW,QAAQ;AAAA,MAC9B,QAAQ;AAAA,QACP,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,QACtB,SAAS;AAAA,QACT,UAAU,EAAE,QAAQ,WAAW,CAAC;AAAA,QAChC;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAEF,QAAMC,UAAS,QAAQ,aAAa;AAAA,IACnC,QAAQ,QAAQ,IAAI,aAAa,QAAQ,YAAY;AAAA,IACrD,aAAa,EAAE,QAAQ;AAAA,IACvB;AAAA,EACD,CAAC;AAED,SAAOA;AACR;AAGO,IAAM,SAAS,aAAa,SAAS;AAGrC,IAAM,YAAY,CAAC,YAAoB,aAAa,OAAO;AAG3D,IAAM,UAAU;AAAA,EACtB,OAAO,UAAU,UAAU;AAAA,EAC3B,QAAQ,UAAU,QAAQ;AAAA,EAC1B,cAAc,UAAU,cAAc;AAAA,EACtC,KAAK,UAAU,WAAW;AAAA,EAC1B,KAAK,UAAU,WAAW;AAAA,EAC1B,OAAO,UAAU,OAAO;AAAA,EACxB,QAAQ,UAAU,WAAW;AAAA,EAC7B,KAAK,UAAU,KAAK;AACrB;AAGO,IAAM,mBAAmB,MAAM;AACrC,QAAM,cAAc,QAAQ,IAAI;AAChC,MAAI,CAAC,YAAa;AAElB,QAAM,gBAAgB,aAAa,SAAS;AAE5C,QAAM,cAAc,QAAQ;AAC5B,QAAM,eAAe,QAAQ;AAC7B,QAAM,gBAAgB,QAAQ;AAE9B,UAAQ,MAAM,IAAI,SAAoB;AACrC,gBAAY,GAAG,IAAI;AACnB,kBAAc,KAAK,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA,EAC9C;AAEA,UAAQ,OAAO,IAAI,SAAoB;AACtC,iBAAa,GAAG,IAAI;AACpB,kBAAc,KAAK,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA,EAC9C;AAEA,UAAQ,QAAQ,IAAI,SAAoB;AACvC,kBAAc,GAAG,IAAI;AACrB,kBAAc,MAAM,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA,EAC/C;AACD;","names":["timestamp","logger"]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DFXHJUGV.js";
|
|
4
4
|
import {
|
|
5
5
|
WorkflowApiController
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TR2QAQEW.js";
|
|
7
7
|
import {
|
|
8
8
|
AgentApiController
|
|
9
9
|
} from "./chunk-WKFSYGMH.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-YUKPKFX5.js";
|
|
19
19
|
import {
|
|
20
20
|
QueryController
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-RE676AIN.js";
|
|
22
22
|
import {
|
|
23
23
|
getA2AModule,
|
|
24
24
|
getMemoryModule,
|
|
@@ -101,4 +101,4 @@ var ControllerContainer = class {
|
|
|
101
101
|
export {
|
|
102
102
|
ControllerContainer
|
|
103
103
|
};
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-GKG27ZGB.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loggers
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GHUEA7V5.js";
|
|
4
4
|
|
|
5
5
|
// src/services/utils/query.common.ts
|
|
6
6
|
async function generateTitle(modelModule, query, options) {
|
|
@@ -35,4 +35,4 @@ Always respond in the same language as the user's input.`
|
|
|
35
35
|
export {
|
|
36
36
|
generateTitle
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-HEYSMA5B.js.map
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
AGGREGATE_DECISION_SYSTEM_PROMPT,
|
|
3
3
|
AGGREGATE_GENERATION_SYSTEM_PROMPT
|
|
4
4
|
} from "./chunk-O3MPFL5J.js";
|
|
5
|
-
import {
|
|
6
|
-
loggers
|
|
7
|
-
} from "./chunk-VUMI4XOY.js";
|
|
8
5
|
import {
|
|
9
6
|
getManifest
|
|
10
7
|
} from "./chunk-2J2TQRP4.js";
|
|
8
|
+
import {
|
|
9
|
+
loggers
|
|
10
|
+
} from "./chunk-GHUEA7V5.js";
|
|
11
11
|
|
|
12
12
|
// src/services/intents/aggregate.service.ts
|
|
13
13
|
var AggregateService = class {
|
|
@@ -15,10 +15,39 @@ var AggregateService = class {
|
|
|
15
15
|
constructor(modelModule) {
|
|
16
16
|
this.modelModule = modelModule;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Generates a unified response combining all results (always aggregates).
|
|
20
|
+
* Use this when needsAggregation is already determined to be true.
|
|
21
|
+
*
|
|
22
|
+
* @param originalQuery - The user's original query
|
|
23
|
+
* @param results - Array of fulfillment results from each intent
|
|
24
|
+
* @returns AsyncGenerator yielding StreamEvent objects
|
|
25
|
+
*/
|
|
26
|
+
async *aggregate(originalQuery, results) {
|
|
27
|
+
if (results.length <= 1) {
|
|
28
|
+
const response = results[0]?.response ?? "";
|
|
29
|
+
if (response) {
|
|
30
|
+
yield {
|
|
31
|
+
event: "text_chunk",
|
|
32
|
+
data: { delta: response }
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
yield {
|
|
38
|
+
event: "thinking_process",
|
|
39
|
+
data: {
|
|
40
|
+
title: `[${getManifest().name}] \uC751\uB2F5 \uD1B5\uD569 \uC911`,
|
|
41
|
+
description: "\uC5EC\uB7EC \uC791\uC5C5 \uACB0\uACFC\uB97C \uD558\uB098\uC758 \uC751\uB2F5\uC73C\uB85C \uD1B5\uD569\uD569\uB2C8\uB2E4."
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
yield* this.generateAggregatedResponse(originalQuery, results);
|
|
45
|
+
}
|
|
18
46
|
/**
|
|
19
47
|
* Analyzes fulfillment results and either returns the last response as-is
|
|
20
48
|
* or generates a unified response combining all results.
|
|
21
49
|
*
|
|
50
|
+
* @deprecated Use aggregate() instead when needsAggregation is determined at trigger time
|
|
22
51
|
* @param originalQuery - The user's original query
|
|
23
52
|
* @param results - Array of fulfillment results from each intent
|
|
24
53
|
* @returns AsyncGenerator yielding StreamEvent objects
|
|
@@ -167,4 +196,4 @@ Please provide a unified response that addresses the original query.`;
|
|
|
167
196
|
export {
|
|
168
197
|
AggregateService
|
|
169
198
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
199
|
+
//# sourceMappingURL=chunk-L447Q33F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/intents/aggregate.service.ts"],"sourcesContent":["import { getManifest } from \"@/config/manifest\";\nimport type { ModelModule } from \"@/modules\";\nimport type { FulfillmentResult, ThreadType } from \"@/types/memory\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger\";\nimport {\n\tAGGREGATE_DECISION_SYSTEM_PROMPT,\n\tAGGREGATE_GENERATION_SYSTEM_PROMPT,\n} from \"../utils/aggregate.common\";\n\ninterface AggregateDecision {\n\tneedsAggregation: boolean;\n\treason: string;\n}\n\n/**\n * Service for determining whether multiple fulfillment results need to be\n * aggregated into a unified response, and generating that response if needed.\n */\nexport class AggregateService {\n\tprivate modelModule: ModelModule;\n\n\tconstructor(modelModule: ModelModule) {\n\t\tthis.modelModule = modelModule;\n\t}\n\n\t/**\n\t * Generates a unified response combining all results (always aggregates).\n\t * Use this when needsAggregation is already determined to be true.\n\t *\n\t * @param originalQuery - The user's original query\n\t * @param results - Array of fulfillment results from each intent\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tpublic async *aggregate(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): AsyncGenerator<StreamEvent> {\n\t\t// Single result doesn't need aggregation\n\t\tif (results.length <= 1) {\n\t\t\tconst response = results[0]?.response ?? \"\";\n\t\t\tif (response) {\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\tdata: { delta: response },\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Emit thinking_process event for aggregate step\n\t\tyield {\n\t\t\tevent: \"thinking_process\",\n\t\t\tdata: {\n\t\t\t\ttitle: `[${getManifest().name}] 응답 통합 중`,\n\t\t\t\tdescription: \"여러 작업 결과를 하나의 응답으로 통합합니다.\",\n\t\t\t},\n\t\t};\n\n\t\t// Generate unified response (streaming)\n\t\tyield* this.generateAggregatedResponse(originalQuery, results);\n\t}\n\n\t/**\n\t * Analyzes fulfillment results and either returns the last response as-is\n\t * or generates a unified response combining all results.\n\t *\n\t * @deprecated Use aggregate() instead when needsAggregation is determined at trigger time\n\t * @param originalQuery - The user's original query\n\t * @param results - Array of fulfillment results from each intent\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tpublic async *aggregateIfNeeded(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): AsyncGenerator<StreamEvent> {\n\t\t// Single result doesn't need aggregation\n\t\tif (results.length <= 1) {\n\t\t\tconst response = results[0]?.response ?? \"\";\n\t\t\tif (response) {\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\tdata: { delta: response },\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Ask LLM whether aggregation is needed\n\t\tconst decision = await this.shouldAggregate(originalQuery, results);\n\n\t\tloggers.intent.info(\"Aggregate decision\", {\n\t\t\tneedsAggregation: decision.needsAggregation,\n\t\t\treason: decision.reason,\n\t\t});\n\n\t\tif (!decision.needsAggregation) {\n\t\t\t// Last response already contains aggregated content\n\t\t\tyield {\n\t\t\t\tevent: \"text_chunk\",\n\t\t\t\tdata: { delta: results[results.length - 1].response },\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\t// Emit thinking_process event for aggregate step\n\t\tyield {\n\t\t\tevent: \"thinking_process\",\n\t\t\tdata: {\n\t\t\t\ttitle: `[${getManifest().name}] 응답 통합 중`,\n\t\t\t\tdescription:\n\t\t\t\t\tdecision.reason || \"여러 작업 결과를 하나의 응답으로 통합합니다.\",\n\t\t\t},\n\t\t};\n\n\t\t// Generate unified response (streaming)\n\t\tyield* this.generateAggregatedResponse(originalQuery, results);\n\t}\n\n\t/**\n\t * Asks LLM to decide whether the results need to be aggregated.\n\t */\n\tprivate async shouldAggregate(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): Promise<AggregateDecision> {\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\n\t\tconst prompt = this.buildDecisionPrompt(originalQuery, results);\n\n\t\tconst emptyThread = {\n\t\t\tmessages: [],\n\t\t\tuserId: \"\",\n\t\t\tthreadId: \"\",\n\t\t\ttype: \"CHAT\" as ThreadType,\n\t\t\ttitle: \"\",\n\t\t};\n\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery: prompt,\n\t\t\tthread: emptyThread,\n\t\t\tsystemPrompt: AGGREGATE_DECISION_SYSTEM_PROMPT,\n\t\t});\n\n\t\ttry {\n\t\t\tconst response = await modelInstance.fetchWithContextMessage(\n\t\t\t\tmessages,\n\t\t\t\t[],\n\t\t\t\tmodelOptions,\n\t\t\t);\n\n\t\t\t// Extract JSON from response (handle markdown code blocks)\n\t\t\tconst responseText = response.content ?? \"\";\n\t\t\tlet jsonStr = responseText;\n\t\t\tconst jsonMatch = responseText.match(/```(?:json)?\\s*([\\s\\S]*?)```/);\n\t\t\tif (jsonMatch) {\n\t\t\t\tjsonStr = jsonMatch[1].trim();\n\t\t\t}\n\n\t\t\tconst parsed = JSON.parse(jsonStr);\n\t\t\treturn {\n\t\t\t\tneedsAggregation: parsed.needsAggregation ?? true,\n\t\t\t\treason: parsed.reason ?? \"\",\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tloggers.intent.warn(\n\t\t\t\t\"Failed to parse aggregate decision, defaulting to aggregate\",\n\t\t\t\t{\n\t\t\t\t\terror,\n\t\t\t\t},\n\t\t\t);\n\t\t\t// Default to aggregating if parsing fails\n\t\t\treturn { needsAggregation: true, reason: \"Failed to parse decision\" };\n\t\t}\n\t}\n\n\t/**\n\t * Generates a unified response by streaming from the model.\n\t */\n\tprivate async *generateAggregatedResponse(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\n\t\tconst prompt = this.buildAggregatePrompt(originalQuery, results);\n\n\t\tconst emptyThread = {\n\t\t\tmessages: [],\n\t\t\tuserId: \"\",\n\t\t\tthreadId: \"\",\n\t\t\ttype: \"CHAT\" as ThreadType,\n\t\t\ttitle: \"\",\n\t\t};\n\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery: prompt,\n\t\t\tthread: emptyThread,\n\t\t\tsystemPrompt: AGGREGATE_GENERATION_SYSTEM_PROMPT,\n\t\t});\n\n\t\tconst stream = await modelInstance.fetchStreamWithContextMessage(\n\t\t\tmessages,\n\t\t\t[],\n\t\t\tmodelOptions,\n\t\t);\n\n\t\tfor await (const chunk of stream) {\n\t\t\tif (chunk.delta?.content) {\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\tdata: { delta: chunk.delta.content },\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Builds the prompt for the aggregation decision.\n\t */\n\tprivate buildDecisionPrompt(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): string {\n\t\tconst resultsText = results\n\t\t\t.map(\n\t\t\t\t(r, i) =>\n\t\t\t\t\t`[Task ${i + 1}] ${r.subquery}\\n[Response ${i + 1}] ${r.response}`,\n\t\t\t)\n\t\t\t.join(\"\\n\\n---\\n\\n\");\n\n\t\treturn `Original Query: ${originalQuery}\n\nResults:\n${resultsText}`;\n\t}\n\n\t/**\n\t * Builds the prompt for generating an aggregated response.\n\t */\n\tprivate buildAggregatePrompt(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): string {\n\t\tconst resultsText = results\n\t\t\t.map(\n\t\t\t\t(r, i) =>\n\t\t\t\t\t`[Task ${i + 1}] ${r.subquery}\\n[Response ${i + 1}] ${r.response}`,\n\t\t\t)\n\t\t\t.join(\"\\n\\n---\\n\\n\");\n\n\t\treturn `Original Query: ${originalQuery}\n\nAll task results:\n${resultsText}\n\nPlease provide a unified response that addresses the original query.`;\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
A2AController
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MVVAEPGR.js";
|
|
4
4
|
import {
|
|
5
5
|
getAgent
|
|
6
6
|
} from "./chunk-VBK4WM2M.js";
|
|
7
7
|
import {
|
|
8
8
|
container
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-A3CKGK3U.js";
|
|
10
10
|
|
|
11
11
|
// src/routes/a2a.routes.ts
|
|
12
12
|
import { InMemoryTaskStore } from "@a2a-js/sdk/server";
|
|
@@ -26,4 +26,4 @@ var createA2ARouter = () => {
|
|
|
26
26
|
export {
|
|
27
27
|
createA2ARouter
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-LLYDI3LD.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loggers
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GHUEA7V5.js";
|
|
4
4
|
|
|
5
5
|
// src/controllers/a2a.controller.ts
|
|
6
6
|
import {
|
|
@@ -108,4 +108,4 @@ var A2AController = class {
|
|
|
108
108
|
export {
|
|
109
109
|
A2AController
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-MVVAEPGR.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createModelApiRouter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XXDILT4B.js";
|
|
4
4
|
import {
|
|
5
5
|
createThreadApiRouter
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VOMI5BAO.js";
|
|
7
7
|
import {
|
|
8
8
|
createWorkflowApiRouter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3IG6HCSA.js";
|
|
10
10
|
import {
|
|
11
11
|
createAgentApiRouter
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-D66QTWUY.js";
|
|
13
13
|
import {
|
|
14
14
|
createIntentApiRouter
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MZRZVF5Q.js";
|
|
16
16
|
import {
|
|
17
17
|
getMemoryModule
|
|
18
18
|
} from "./chunk-VSQVYW2H.js";
|
|
@@ -35,4 +35,4 @@ var createApiRouter = () => {
|
|
|
35
35
|
export {
|
|
36
36
|
createApiRouter
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-MXPZHEDH.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
container
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A3CKGK3U.js";
|
|
4
4
|
import {
|
|
5
5
|
AinHttpError
|
|
6
6
|
} from "./chunk-C5JXXLCW.js";
|
|
@@ -41,4 +41,4 @@ var createIntentApiRouter = () => {
|
|
|
41
41
|
export {
|
|
42
42
|
createIntentApiRouter
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-MZRZVF5Q.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
container
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A3CKGK3U.js";
|
|
4
4
|
|
|
5
5
|
// src/routes/intent.routes.ts
|
|
6
6
|
import { Router } from "express";
|
|
@@ -14,4 +14,4 @@ var createIntentRouter = () => {
|
|
|
14
14
|
export {
|
|
15
15
|
createIntentRouter
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-R2R3AMCG.js.map
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loggers
|
|
3
|
+
} from "./chunk-GHUEA7V5.js";
|
|
4
|
+
|
|
1
5
|
// src/controllers/query.controller.ts
|
|
2
6
|
import { randomUUID } from "crypto";
|
|
3
7
|
var QueryController = class {
|
|
@@ -52,6 +56,14 @@ var QueryController = class {
|
|
|
52
56
|
const keepaliveInterval = setInterval(() => {
|
|
53
57
|
res.write(":keepalive\n\n");
|
|
54
58
|
}, 1e4);
|
|
59
|
+
let aborted = false;
|
|
60
|
+
req.on("close", () => {
|
|
61
|
+
aborted = true;
|
|
62
|
+
loggers.intentStream.info("Client connection closed", {
|
|
63
|
+
threadId: currentThreadId,
|
|
64
|
+
userId
|
|
65
|
+
});
|
|
66
|
+
});
|
|
55
67
|
let currentThreadId = threadId;
|
|
56
68
|
const stream = this.queryService.handleQuery(
|
|
57
69
|
{ type, userId, threadId },
|
|
@@ -59,6 +71,9 @@ var QueryController = class {
|
|
|
59
71
|
);
|
|
60
72
|
try {
|
|
61
73
|
for await (const event of stream) {
|
|
74
|
+
if (aborted) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
62
77
|
if (event.event === "thread_id") {
|
|
63
78
|
currentThreadId = event.data.threadId;
|
|
64
79
|
} else if (event.event === "thinking_process") {
|
|
@@ -98,4 +113,4 @@ data: ${errMsg}
|
|
|
98
113
|
export {
|
|
99
114
|
QueryController
|
|
100
115
|
};
|
|
101
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-RE676AIN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/query.controller.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { NextFunction, Request, Response } from \"express\";\nimport type { QueryService } from \"@/services\";\nimport { MessageRole } from \"@/types/memory\";\nimport { loggers } from \"@/utils/logger\";\n\nexport class QueryController {\n\tprivate queryService: QueryService;\n\n\tconstructor(queryService: QueryService) {\n\t\tthis.queryService = queryService;\n\t}\n\n\tpublic handleQueryRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst {\n\t\t\ttype,\n\t\t\tthreadId,\n\t\t\tmessage: query,\n\t\t\tdisplayMessage: displayQuery,\n\t\t} = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\ttry {\n\t\t\tconst stream = this.queryService.handleQuery(\n\t\t\t\t{ type, userId, threadId },\n\t\t\t\t{ query, displayQuery },\n\t\t\t);\n\n\t\t\tlet content = \"\";\n\t\t\tlet responseThreadId = threadId;\n\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"thread_id\") {\n\t\t\t\t\tresponseThreadId = event.data.threadId;\n\t\t\t\t} else if (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tcontent += event.data.delta;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tres.status(200).json({ content, threadId: responseThreadId });\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleQueryStreamRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\t_next: NextFunction,\n\t) => {\n\t\tconst {\n\t\t\ttype,\n\t\t\tthreadId,\n\t\t\tmessage: query,\n\t\t\tdisplayMessage: displayQuery,\n\t\t} = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\tres.writeHead(200, {\n\t\t\t\"Content-Type\": \"text/event-stream\",\n\t\t\t\"Cache-Control\": \"no-cache\",\n\t\t\tConnection: \"keep-alive\",\n\t\t\t\"X-Accel-Buffering\": \"no\", // nginx 버퍼링 비활성화\n\t\t});\n\t\tres.flushHeaders();\n\t\tres.write(\":ok\\n\\n\");\n\n\t\tconst keepaliveInterval = setInterval(() => {\n\t\t\tres.write(\":keepalive\\n\\n\");\n\t\t}, 10000); // 10초마다 keepalive 전송\n\n\t\t// 클라이언트 연결 끊김 감지\n\t\tlet aborted = false;\n\t\treq.on(\"close\", () => {\n\t\t\taborted = true;\n\t\t\tloggers.intentStream.info(\"Client connection closed\", {\n\t\t\t\tthreadId: currentThreadId,\n\t\t\t\tuserId,\n\t\t\t});\n\t\t});\n\n\t\tlet currentThreadId = threadId;\n\t\tconst stream = this.queryService.handleQuery(\n\t\t\t{ type, userId, threadId },\n\t\t\t{ query, displayQuery },\n\t\t);\n\n\t\ttry {\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (aborted) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (event.event === \"thread_id\") {\n\t\t\t\t\tcurrentThreadId = event.data.threadId;\n\t\t\t\t} else if (event.event === \"thinking_process\") {\n\t\t\t\t\t// a2a 호출에 대해서는 데이터베이스에 추가하지 않기 위해 여기서 thread message에 기록\n\t\t\t\t\tthis.queryService.addToThreadMessages(userId, currentThreadId, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\tcontent: { type: \"text\", parts: [event.data.title] },\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\tisThinking: true,\n\t\t\t\t\t\t\t\tthinkData: event.data,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\tres.write(\n\t\t\t\t\t`event: ${event.event}\\ndata: ${JSON.stringify(event.data)}\\n\\n`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (error: unknown) {\n\t\t\tconst errMsg =\n\t\t\t\t(error as Error)?.message || \"Failed to handle query stream\";\n\t\t\tres.write(`event: error\\ndata: ${errMsg}\\n\\n`);\n\t\t} finally {\n\t\t\tclearInterval(keepaliveInterval);\n\t\t\tres.end();\n\t\t}\n\t};\n}\n"],"mappings":";;;;;AAAA,SAAS,kBAAkB;AAMpB,IAAM,kBAAN,MAAsB;AAAA,EACpB;AAAA,EAER,YAAY,cAA4B;AACvC,SAAK,eAAe;AAAA,EACrB;AAAA,EAEO,qBAAqB,OAC3B,KACA,KACA,SACI;AACJ,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,gBAAgB;AAAA,IACjB,IAAI,IAAI;AACR,UAAM,SAAS,IAAI,OAAO;AAE1B,QAAI;AACH,YAAM,SAAS,KAAK,aAAa;AAAA,QAChC,EAAE,MAAM,QAAQ,SAAS;AAAA,QACzB,EAAE,OAAO,aAAa;AAAA,MACvB;AAEA,UAAI,UAAU;AACd,UAAI,mBAAmB;AAEvB,uBAAiB,SAAS,QAAQ;AACjC,YAAI,MAAM,UAAU,aAAa;AAChC,6BAAmB,MAAM,KAAK;AAAA,QAC/B,WAAW,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AAC5D,qBAAW,MAAM,KAAK;AAAA,QACvB;AAAA,MACD;AAEA,UAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,UAAU,iBAAiB,CAAC;AAAA,IAC7D,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,2BAA2B,OACjC,KACA,KACA,UACI;AACJ,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,gBAAgB;AAAA,IACjB,IAAI,IAAI;AACR,UAAM,SAAS,IAAI,OAAO;AAE1B,QAAI,UAAU,KAAK;AAAA,MAClB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,qBAAqB;AAAA;AAAA,IACtB,CAAC;AACD,QAAI,aAAa;AACjB,QAAI,MAAM,SAAS;AAEnB,UAAM,oBAAoB,YAAY,MAAM;AAC3C,UAAI,MAAM,gBAAgB;AAAA,IAC3B,GAAG,GAAK;AAGR,QAAI,UAAU;AACd,QAAI,GAAG,SAAS,MAAM;AACrB,gBAAU;AACV,cAAQ,aAAa,KAAK,4BAA4B;AAAA,QACrD,UAAU;AAAA,QACV;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AAED,QAAI,kBAAkB;AACtB,UAAM,SAAS,KAAK,aAAa;AAAA,MAChC,EAAE,MAAM,QAAQ,SAAS;AAAA,MACzB,EAAE,OAAO,aAAa;AAAA,IACvB;AAEA,QAAI;AACH,uBAAiB,SAAS,QAAQ;AACjC,YAAI,SAAS;AACZ;AAAA,QACD;AAEA,YAAI,MAAM,UAAU,aAAa;AAChC,4BAAkB,MAAM,KAAK;AAAA,QAC9B,WAAW,MAAM,UAAU,oBAAoB;AAE9C,eAAK,aAAa,oBAAoB,QAAQ,iBAAiB;AAAA,YAC9D;AAAA,cACC,WAAW,WAAW;AAAA,cACtB;AAAA,cACA,WAAW,KAAK,IAAI;AAAA,cACpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AAAA,cACnD,UAAU;AAAA,gBACT,YAAY;AAAA,gBACZ,WAAW,MAAM;AAAA,cAClB;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,YAAI;AAAA,UACH,UAAU,MAAM,KAAK;AAAA,QAAW,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA,QAC3D;AAAA,MACD;AAAA,IACD,SAAS,OAAgB;AACxB,YAAM,SACJ,OAAiB,WAAW;AAC9B,UAAI,MAAM;AAAA,QAAuB,MAAM;AAAA;AAAA,CAAM;AAAA,IAC9C,UAAE;AACD,oBAAc,iBAAiB;AAC/B,UAAI,IAAI;AAAA,IACT;AAAA,EACD;AACD;","names":[]}
|