@ainetwork/adk 0.3.5 → 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/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-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-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-4IROMVRW.cjs +29 -0
- package/dist/cjs/chunk-4IROMVRW.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-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-6EBDGU4W.cjs +74 -0
- package/dist/cjs/chunk-6EBDGU4W.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-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-AD6V5E5Q.cjs +89 -0
- package/dist/cjs/chunk-AD6V5E5Q.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-BMXLCOSM.cjs +110 -0
- package/dist/cjs/chunk-BMXLCOSM.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-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-CZ46DNRL.cjs +44 -0
- package/dist/cjs/chunk-CZ46DNRL.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-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-E4MOFVBQ.cjs +29 -0
- package/dist/cjs/chunk-E4MOFVBQ.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-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-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-GF3T2PUU.cjs +89 -0
- package/dist/cjs/chunk-GF3T2PUU.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-HNFRGOJS.cjs +38 -0
- package/dist/cjs/chunk-HNFRGOJS.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-HRZFYMBV.cjs +89 -0
- package/dist/cjs/chunk-HRZFYMBV.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-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-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-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-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-LAX3Y732.cjs +18 -0
- package/dist/cjs/chunk-LAX3Y732.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-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-M6OZBNV3.cjs +17 -0
- package/dist/cjs/chunk-M6OZBNV3.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-MYFVFI5F.cjs +74 -0
- package/dist/cjs/chunk-MYFVFI5F.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-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-P64FBXOS.cjs +104 -0
- package/dist/cjs/chunk-P64FBXOS.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-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-RAL7YD6T.cjs +44 -0
- package/dist/cjs/chunk-RAL7YD6T.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-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-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-TR6LECJD.cjs +17 -0
- package/dist/cjs/chunk-TR6LECJD.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-UNJZ3SCR.cjs +38 -0
- package/dist/cjs/chunk-UNJZ3SCR.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-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-WCTCFUE2.cjs +367 -0
- package/dist/cjs/chunk-WCTCFUE2.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-WZEICEMD.cjs +62 -0
- package/dist/cjs/chunk-WZEICEMD.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-YNPHQW5S.cjs +17 -0
- package/dist/cjs/chunk-YNPHQW5S.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-ZO4B7BJ3.cjs +38 -0
- package/dist/cjs/chunk-ZO4B7BJ3.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 +20 -20
- package/dist/cjs/container/services.cjs +16 -16
- 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 +41 -41
- 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 +8 -8
- 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 +23 -23
- package/dist/cjs/routes/api/agent.routes.cjs +21 -21
- package/dist/cjs/routes/api/intent.routes.cjs +21 -21
- package/dist/cjs/routes/api/model.routes.cjs +21 -21
- package/dist/cjs/routes/api/threads.routes.cjs +21 -21
- package/dist/cjs/routes/api/workflow.routes.cjs +21 -21
- package/dist/cjs/routes/api.routes.cjs +26 -26
- package/dist/cjs/routes/index.cjs +30 -30
- package/dist/cjs/routes/intent.routes.cjs +21 -21
- package/dist/cjs/routes/query.routes.cjs +21 -21
- package/dist/cjs/services/a2a.service.cjs +3 -3
- package/dist/cjs/services/index.cjs +14 -14
- 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 +6 -6
- 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-ZTYRQOCO.js → chunk-3IG6HCSA.js} +2 -2
- package/dist/esm/{chunk-FISBL7OM.js → chunk-5FJU67BO.js} +54 -13
- package/dist/esm/chunk-5FJU67BO.js.map +1 -0
- package/dist/esm/{chunk-T3FCCMU6.js → chunk-A3CKGK3U.js} +3 -3
- package/dist/esm/{chunk-RAHOYMKY.js → chunk-BYGS3GS6.js} +2 -2
- package/dist/esm/{chunk-MB7ZI64O.js → chunk-CYP6OTDK.js} +10 -10
- package/dist/esm/{chunk-MDQEA2US.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-HNKYLU4R.js → chunk-GKG27ZGB.js} +10 -10
- package/dist/esm/{chunk-5IIF5O4A.js → chunk-HEYSMA5B.js} +2 -2
- package/dist/esm/{chunk-MC5KX7MQ.js → chunk-L447Q33F.js} +31 -2
- package/dist/esm/chunk-L447Q33F.js.map +1 -0
- package/dist/esm/{chunk-SUBXSJXS.js → chunk-LLYDI3LD.js} +5 -5
- package/dist/esm/{chunk-YMSNW2SU.js → chunk-MVVAEPGR.js} +2 -2
- package/dist/esm/{chunk-LC5XQGWK.js → chunk-MXPZHEDH.js} +10 -10
- package/dist/esm/{chunk-A5CFFQUV.js → chunk-MZRZVF5Q.js} +2 -2
- package/dist/esm/{chunk-HZC52S2R.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-S46LW2P7.js → chunk-SDABEZSA.js} +2 -2
- package/dist/esm/{chunk-PVWOU6LA.js → chunk-SV5CKUNN.js} +2 -2
- package/dist/esm/{chunk-YUFYGSSY.js → chunk-TR2QAQEW.js} +2 -2
- 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-VRFQFDSM.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-RKLWSV24.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 +6 -5
- package/dist/esm/container/index.js +20 -20
- 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 +6 -6
- package/dist/esm/controllers/query.controller.js +3 -2
- package/dist/esm/index.js +37 -37
- 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/routes/a2a.routes.js +23 -23
- package/dist/esm/routes/api/agent.routes.js +21 -21
- package/dist/esm/routes/api/intent.routes.js +21 -21
- package/dist/esm/routes/api/model.routes.js +21 -21
- package/dist/esm/routes/api/threads.routes.js +21 -21
- package/dist/esm/routes/api/workflow.routes.js +21 -21
- package/dist/esm/routes/api.routes.js +26 -26
- package/dist/esm/routes/index.js +32 -32
- package/dist/esm/routes/intent.routes.js +21 -21
- package/dist/esm/routes/query.routes.js +21 -21
- package/dist/esm/services/a2a.service.js +2 -2
- package/dist/esm/services/index.js +12 -12
- 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-CC6DWPHZ.js.map +0 -1
- package/dist/esm/chunk-D6STNZ2L.js.map +0 -1
- package/dist/esm/chunk-FISBL7OM.js.map +0 -1
- package/dist/esm/chunk-JXGQVFCO.js.map +0 -1
- package/dist/esm/chunk-MC5KX7MQ.js.map +0 -1
- package/dist/esm/chunk-QQZ5ANSD.js.map +0 -1
- package/dist/esm/chunk-VUMI4XOY.js.map +0 -1
- package/dist/esm/chunk-YUFYGSSY.js.map +0 -1
- package/dist/esm/chunk-ZNZZZ4NN.js.map +0 -1
- /package/dist/esm/{chunk-ZTYRQOCO.js.map → chunk-3IG6HCSA.js.map} +0 -0
- /package/dist/esm/{chunk-T3FCCMU6.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-MB7ZI64O.js.map → chunk-CYP6OTDK.js.map} +0 -0
- /package/dist/esm/{chunk-MDQEA2US.js.map → chunk-D66QTWUY.js.map} +0 -0
- /package/dist/esm/{chunk-HNKYLU4R.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-SUBXSJXS.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-LC5XQGWK.js.map → chunk-MXPZHEDH.js.map} +0 -0
- /package/dist/esm/{chunk-A5CFFQUV.js.map → chunk-MZRZVF5Q.js.map} +0 -0
- /package/dist/esm/{chunk-HZC52S2R.js.map → chunk-R2R3AMCG.js.map} +0 -0
- /package/dist/esm/{chunk-S46LW2P7.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-VRFQFDSM.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-RKLWSV24.js.map → chunk-XXDILT4B.js.map} +0 -0
- /package/dist/esm/{chunk-FRQSMPPK.js.map → chunk-ZUVYTTPD.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-S6T455CQ.cjs","../../src/routes/api/model.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,kCAAuB;AAGhB,IAAM,qBAAA,EAAuB,CAAA,EAAA,GAAc;AACjD,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AACtB,EAAA,MAAM,mBAAA,EAAqB,2BAAA,CAAU,qBAAA,CAAsB,CAAA;AAG3D,EAAA,MAAA,CAAO,GAAA,CAAI,GAAA,EAAK,kBAAA,CAAmB,eAAe,CAAA;AAElD,EAAA,OAAO,MAAA;AACR,CAAA;ADCA;AACA;AACE;AACF,oDAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-S6T455CQ.cjs","sourcesContent":[null,"import { Router } from \"express\";\nimport { container } from \"@/container\";\n\nexport const createModelApiRouter = (): Router => {\n\tconst router = Router();\n\tconst modelApiController = container.getModelApiController();\n\n\t// APIs (prefix: /api/model)\n\trouter.get(\"/\", modelApiController.handleModelList);\n\n\treturn router;\n};\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkXZUUYWF4cjs = require('./chunk-XZUUYWF4.cjs');
|
|
4
|
+
|
|
5
|
+
// src/routes/api/model.routes.ts
|
|
6
|
+
var _express = require('express');
|
|
7
|
+
var createModelApiRouter = () => {
|
|
8
|
+
const router = _express.Router.call(void 0, );
|
|
9
|
+
const modelApiController = _chunkXZUUYWF4cjs.container.getModelApiController();
|
|
10
|
+
router.get("/", modelApiController.handleModelList);
|
|
11
|
+
return router;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
exports.createModelApiRouter = createModelApiRouter;
|
|
17
|
+
//# sourceMappingURL=chunk-SC7EAJGH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SC7EAJGH.cjs","../../src/routes/api/model.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,kCAAuB;AAGhB,IAAM,qBAAA,EAAuB,CAAA,EAAA,GAAc;AACjD,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AACtB,EAAA,MAAM,mBAAA,EAAqB,2BAAA,CAAU,qBAAA,CAAsB,CAAA;AAG3D,EAAA,MAAA,CAAO,GAAA,CAAI,GAAA,EAAK,kBAAA,CAAmB,eAAe,CAAA;AAElD,EAAA,OAAO,MAAA;AACR,CAAA;ADCA;AACA;AACE;AACF,oDAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SC7EAJGH.cjs","sourcesContent":[null,"import { Router } from \"express\";\nimport { container } from \"@/container\";\n\nexport const createModelApiRouter = (): Router => {\n\tconst router = Router();\n\tconst modelApiController = container.getModelApiController();\n\n\t// APIs (prefix: /api/model)\n\trouter.get(\"/\", modelApiController.handleModelList);\n\n\treturn router;\n};\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkTR6LECJDcjs = require('./chunk-TR6LECJD.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkAURUUSKYcjs = require('./chunk-AURUUSKY.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkWZEICEMDcjs = require('./chunk-WZEICEMD.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkCIOM5KV3cjs = require('./chunk-CIOM5KV3.cjs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkHQ2XGXLMcjs = require('./chunk-HQ2XGXLM.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunk4VIZ52C2cjs = require('./chunk-4VIZ52C2.cjs');
|
|
19
|
+
|
|
20
|
+
// src/routes/api.routes.ts
|
|
21
|
+
var _express = require('express');
|
|
22
|
+
var createApiRouter = () => {
|
|
23
|
+
const router = _express.Router.call(void 0, );
|
|
24
|
+
router.use("/model", _chunkTR6LECJDcjs.createModelApiRouter.call(void 0, ));
|
|
25
|
+
router.use("/agent", _chunkCIOM5KV3cjs.createAgentApiRouter.call(void 0, ));
|
|
26
|
+
const memoryModule = _chunk4VIZ52C2cjs.getMemoryModule.call(void 0, );
|
|
27
|
+
if (memoryModule) {
|
|
28
|
+
router.use("/threads", _chunkAURUUSKYcjs.createThreadApiRouter.call(void 0, ));
|
|
29
|
+
router.use("/intent", _chunkHQ2XGXLMcjs.createIntentApiRouter.call(void 0, ));
|
|
30
|
+
router.use("/workflow", _chunkWZEICEMDcjs.createWorkflowApiRouter.call(void 0, ));
|
|
31
|
+
}
|
|
32
|
+
return router;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
exports.createApiRouter = createApiRouter;
|
|
38
|
+
//# sourceMappingURL=chunk-SD3MWNJS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SD3MWNJS.cjs","../../src/routes/api.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACnBA,kCAAuB;AAQhB,IAAM,gBAAA,EAAkB,CAAA,EAAA,GAAc;AAC5C,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAEtB,EAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,oDAAA,CAAsB,CAAA;AAC3C,EAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,oDAAA,CAAsB,CAAA;AAE3C,EAAA,MAAM,aAAA,EAAe,+CAAA,CAAgB;AACrC,EAAA,GAAA,CAAI,YAAA,EAAc;AACjB,IAAA,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,qDAAA,CAAuB,CAAA;AAC9C,IAAA,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,qDAAA,CAAuB,CAAA;AAC7C,IAAA,MAAA,CAAO,GAAA,CAAI,WAAA,EAAa,uDAAA,CAAyB,CAAA;AAAA,EAClD;AAEA,EAAA,OAAO,MAAA;AACR,CAAA;ADWA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SD3MWNJS.cjs","sourcesContent":[null,"import { Router } from \"express\";\nimport { getMemoryModule } from \"@/config/modules\";\nimport { createAgentApiRouter } from \"./api/agent.routes.js\";\nimport { createIntentApiRouter } from \"./api/intent.routes.js\";\nimport { createModelApiRouter } from \"./api/model.routes.js\";\nimport { createThreadApiRouter } from \"./api/threads.routes.js\";\nimport { createWorkflowApiRouter } from \"./api/workflow.routes.js\";\n\nexport const createApiRouter = (): Router => {\n\tconst router = Router();\n\n\trouter.use(\"/model\", createModelApiRouter());\n\trouter.use(\"/agent\", createAgentApiRouter());\n\n\tconst memoryModule = getMemoryModule();\n\tif (memoryModule) {\n\t\trouter.use(\"/threads\", createThreadApiRouter());\n\t\trouter.use(\"/intent\", createIntentApiRouter());\n\t\trouter.use(\"/workflow\", createWorkflowApiRouter());\n\t}\n\n\treturn router;\n};\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkTUCSLVSFcjs = require('./chunk-TUCSLVSF.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkOERUQFT7cjs = require('./chunk-OERUQFT7.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunk4VIZ52C2cjs = require('./chunk-4VIZ52C2.cjs');
|
|
10
|
+
|
|
11
|
+
// src/routes/api/intent.routes.ts
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var _express = require('express');
|
|
15
|
+
var _httpstatuscodes = require('http-status-codes');
|
|
16
|
+
var createIntentApiRouter = () => {
|
|
17
|
+
const router = _express.Router.call(void 0, );
|
|
18
|
+
const intentApiController = _chunkTUCSLVSFcjs.container.getIntentApiController();
|
|
19
|
+
const checkThreadMemory = (_req, _res, next) => {
|
|
20
|
+
const memoryModule = _chunk4VIZ52C2cjs.getMemoryModule.call(void 0, );
|
|
21
|
+
const threadMemory = memoryModule.getThreadMemory();
|
|
22
|
+
if (!threadMemory) {
|
|
23
|
+
const error = new (0, _chunkOERUQFT7cjs.AinHttpError)(
|
|
24
|
+
_httpstatuscodes.StatusCodes.SERVICE_UNAVAILABLE,
|
|
25
|
+
"Memory module is not initialized"
|
|
26
|
+
);
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
next();
|
|
30
|
+
};
|
|
31
|
+
router.get("/", checkThreadMemory, intentApiController.handleGetAllIntents);
|
|
32
|
+
router.post("/save", checkThreadMemory, intentApiController.handleSaveIntent);
|
|
33
|
+
router.post(
|
|
34
|
+
"/delete/:id",
|
|
35
|
+
checkThreadMemory,
|
|
36
|
+
intentApiController.handleDeleteIntent
|
|
37
|
+
);
|
|
38
|
+
return router;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
exports.createIntentApiRouter = createIntentApiRouter;
|
|
44
|
+
//# sourceMappingURL=chunk-SFLERIBX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SFLERIBX.cjs","../../src/routes/api/intent.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA;AAIC;AAAA,kCACM;AACP,oDAA4B;AAKrB,IAAM,sBAAA,EAAwB,CAAA,EAAA,GAAc;AAClD,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AACtB,EAAA,MAAM,oBAAA,EAAsB,2BAAA,CAAU,sBAAA,CAAuB,CAAA;AAE7D,EAAA,MAAM,kBAAA,EAAoB,CACzB,IAAA,EACA,IAAA,EACA,IAAA,EAAA,GACI;AACJ,IAAA,MAAM,aAAA,EAAe,+CAAA,CAAgB;AACrC,IAAA,MAAM,aAAA,EAAe,YAAA,CAAa,eAAA,CAAgB,CAAA;AAClD,IAAA,GAAA,CAAI,CAAC,YAAA,EAAc;AAClB,MAAA,MAAM,MAAA,EAAQ,IAAI,mCAAA;AAAA,QACjB,4BAAA,CAAY,mBAAA;AAAA,QACZ;AAAA,MACD,CAAA;AACA,MAAA,MAAM,KAAA;AAAA,IACP;AACA,IAAA,IAAA,CAAK,CAAA;AAAA,EACN,CAAA;AAGA,EAAA,MAAA,CAAO,GAAA,CAAI,GAAA,EAAK,iBAAA,EAAmB,mBAAA,CAAoB,mBAAmB,CAAA;AAC1E,EAAA,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,iBAAA,EAAmB,mBAAA,CAAoB,gBAAgB,CAAA;AAC5E,EAAA,MAAA,CAAO,IAAA;AAAA,IACN,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA,CAAoB;AAAA,EACrB,CAAA;AAEA,EAAA,OAAO,MAAA;AACR,CAAA;ADHA;AACA;AACE;AACF,sDAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SFLERIBX.cjs","sourcesContent":[null,"import {\n\ttype NextFunction,\n\ttype Request,\n\ttype Response,\n\tRouter,\n} from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport { getMemoryModule } from \"@/config/modules\";\nimport { container } from \"@/container\";\nimport { AinHttpError } from \"@/types/agent\";\n\nexport const createIntentApiRouter = (): Router => {\n\tconst router = Router();\n\tconst intentApiController = container.getIntentApiController();\n\n\tconst checkThreadMemory = (\n\t\t_req: Request,\n\t\t_res: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst memoryModule = getMemoryModule();\n\t\tconst threadMemory = memoryModule.getThreadMemory();\n\t\tif (!threadMemory) {\n\t\t\tconst error = new AinHttpError(\n\t\t\t\tStatusCodes.SERVICE_UNAVAILABLE,\n\t\t\t\t\"Memory module is not initialized\",\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t\tnext();\n\t};\n\n\t// APIs (prefix: /api/intent)\n\trouter.get(\"/\", checkThreadMemory, intentApiController.handleGetAllIntents);\n\trouter.post(\"/save\", checkThreadMemory, intentApiController.handleSaveIntent);\n\trouter.post(\n\t\t\"/delete/:id\",\n\t\tcheckThreadMemory,\n\t\tintentApiController.handleDeleteIntent,\n\t);\n\n\treturn router;\n};\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
|
|
2
|
+
|
|
3
|
+
var _chunk2CQQ34EDcjs = require('./chunk-2CQQ34ED.cjs');
|
|
4
|
+
|
|
5
|
+
// src/controllers/query.controller.ts
|
|
6
|
+
var _crypto = require('crypto');
|
|
7
|
+
var QueryController = (_class = class {
|
|
8
|
+
|
|
9
|
+
constructor(queryService) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
|
|
10
|
+
this.queryService = queryService;
|
|
11
|
+
}
|
|
12
|
+
__init() {this.handleQueryRequest = async (req, res, next) => {
|
|
13
|
+
const {
|
|
14
|
+
type,
|
|
15
|
+
threadId,
|
|
16
|
+
message: query,
|
|
17
|
+
displayMessage: displayQuery
|
|
18
|
+
} = req.body;
|
|
19
|
+
const userId = res.locals.userId;
|
|
20
|
+
try {
|
|
21
|
+
const stream = this.queryService.handleQuery(
|
|
22
|
+
{ type, userId, threadId },
|
|
23
|
+
{ query, displayQuery }
|
|
24
|
+
);
|
|
25
|
+
let content = "";
|
|
26
|
+
let responseThreadId = threadId;
|
|
27
|
+
for await (const event of stream) {
|
|
28
|
+
if (event.event === "thread_id") {
|
|
29
|
+
responseThreadId = event.data.threadId;
|
|
30
|
+
} else if (event.event === "text_chunk" && event.data.delta) {
|
|
31
|
+
content += event.data.delta;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
res.status(200).json({ content, threadId: responseThreadId });
|
|
35
|
+
} catch (error) {
|
|
36
|
+
next(error);
|
|
37
|
+
}
|
|
38
|
+
}}
|
|
39
|
+
__init2() {this.handleQueryStreamRequest = async (req, res, _next) => {
|
|
40
|
+
const {
|
|
41
|
+
type,
|
|
42
|
+
threadId,
|
|
43
|
+
message: query,
|
|
44
|
+
displayMessage: displayQuery
|
|
45
|
+
} = req.body;
|
|
46
|
+
const userId = res.locals.userId;
|
|
47
|
+
res.writeHead(200, {
|
|
48
|
+
"Content-Type": "text/event-stream",
|
|
49
|
+
"Cache-Control": "no-cache",
|
|
50
|
+
Connection: "keep-alive",
|
|
51
|
+
"X-Accel-Buffering": "no"
|
|
52
|
+
// nginx 버퍼링 비활성화
|
|
53
|
+
});
|
|
54
|
+
res.flushHeaders();
|
|
55
|
+
res.write(":ok\n\n");
|
|
56
|
+
const keepaliveInterval = setInterval(() => {
|
|
57
|
+
res.write(":keepalive\n\n");
|
|
58
|
+
}, 1e4);
|
|
59
|
+
let aborted = false;
|
|
60
|
+
req.on("close", () => {
|
|
61
|
+
aborted = true;
|
|
62
|
+
_chunk2CQQ34EDcjs.loggers.intentStream.info("Client connection closed", {
|
|
63
|
+
threadId: currentThreadId,
|
|
64
|
+
userId
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
let currentThreadId = threadId;
|
|
68
|
+
const stream = this.queryService.handleQuery(
|
|
69
|
+
{ type, userId, threadId },
|
|
70
|
+
{ query, displayQuery }
|
|
71
|
+
);
|
|
72
|
+
try {
|
|
73
|
+
for await (const event of stream) {
|
|
74
|
+
if (aborted) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
if (event.event === "thread_id") {
|
|
78
|
+
currentThreadId = event.data.threadId;
|
|
79
|
+
} else if (event.event === "thinking_process") {
|
|
80
|
+
this.queryService.addToThreadMessages(userId, currentThreadId, [
|
|
81
|
+
{
|
|
82
|
+
messageId: _crypto.randomUUID.call(void 0, ),
|
|
83
|
+
role: "MODEL" /* MODEL */,
|
|
84
|
+
timestamp: Date.now(),
|
|
85
|
+
content: { type: "text", parts: [event.data.title] },
|
|
86
|
+
metadata: {
|
|
87
|
+
isThinking: true,
|
|
88
|
+
thinkData: event.data
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
]);
|
|
92
|
+
}
|
|
93
|
+
res.write(
|
|
94
|
+
`event: ${event.event}
|
|
95
|
+
data: ${JSON.stringify(event.data)}
|
|
96
|
+
|
|
97
|
+
`
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
} catch (error) {
|
|
101
|
+
const errMsg = _optionalChain([error, 'optionalAccess', _2 => _2.message]) || "Failed to handle query stream";
|
|
102
|
+
res.write(`event: error
|
|
103
|
+
data: ${errMsg}
|
|
104
|
+
|
|
105
|
+
`);
|
|
106
|
+
} finally {
|
|
107
|
+
clearInterval(keepaliveInterval);
|
|
108
|
+
res.end();
|
|
109
|
+
}
|
|
110
|
+
}}
|
|
111
|
+
}, _class);
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
exports.QueryController = QueryController;
|
|
116
|
+
//# sourceMappingURL=chunk-SFZRVWAS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SFZRVWAS.cjs","../../src/controllers/query.controller.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,gCAA2B;AAMpB,IAAM,gBAAA,YAAN,MAAsB;AAAA,EACpB;AAAA,EAER,WAAA,CAAY,YAAA,EAA4B;AACvC,IAAA,IAAA,CAAK,aAAA,EAAe,YAAA;AAAA,EACrB;AAAA,iBAEO,mBAAA,EAAqB,MAAA,CAC3B,GAAA,EACA,GAAA,EACA,IAAA,EAAA,GACI;AACJ,IAAA,MAAM;AAAA,MACL,IAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA,EAAS,KAAA;AAAA,MACT,cAAA,EAAgB;AAAA,IACjB,EAAA,EAAI,GAAA,CAAI,IAAA;AACR,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,MAAA;AAE1B,IAAA,IAAI;AACH,MAAA,MAAM,OAAA,EAAS,IAAA,CAAK,YAAA,CAAa,WAAA;AAAA,QAChC,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QACzB,EAAE,KAAA,EAAO,aAAa;AAAA,MACvB,CAAA;AAEA,MAAA,IAAI,QAAA,EAAU,EAAA;AACd,MAAA,IAAI,iBAAA,EAAmB,QAAA;AAEvB,MAAA,IAAA,MAAA,CAAA,MAAiB,MAAA,GAAS,MAAA,EAAQ;AACjC,QAAA,GAAA,CAAI,KAAA,CAAM,MAAA,IAAU,WAAA,EAAa;AAChC,UAAA,iBAAA,EAAmB,KAAA,CAAM,IAAA,CAAK,QAAA;AAAA,QAC/B,EAAA,KAAA,GAAA,CAAW,KAAA,CAAM,MAAA,IAAU,aAAA,GAAgB,KAAA,CAAM,IAAA,CAAK,KAAA,EAAO;AAC5D,UAAA,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,KAAA;AAAA,QACvB;AAAA,MACD;AAEA,MAAA,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC7D,EAAA,MAAA,CAAS,KAAA,EAAO;AACf,MAAA,IAAA,CAAK,KAAK,CAAA;AAAA,IACX;AAAA,EACD,EAAA;AAAA,kBAEO,yBAAA,EAA2B,MAAA,CACjC,GAAA,EACA,GAAA,EACA,KAAA,EAAA,GACI;AACJ,IAAA,MAAM;AAAA,MACL,IAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA,EAAS,KAAA;AAAA,MACT,cAAA,EAAgB;AAAA,IACjB,EAAA,EAAI,GAAA,CAAI,IAAA;AACR,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,MAAA;AAE1B,IAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK;AAAA,MAClB,cAAA,EAAgB,mBAAA;AAAA,MAChB,eAAA,EAAiB,UAAA;AAAA,MACjB,UAAA,EAAY,YAAA;AAAA,MACZ,mBAAA,EAAqB;AAAA;AAAA,IACtB,CAAC,CAAA;AACD,IAAA,GAAA,CAAI,YAAA,CAAa,CAAA;AACjB,IAAA,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AAEnB,IAAA,MAAM,kBAAA,EAAoB,WAAA,CAAY,CAAA,EAAA,GAAM;AAC3C,MAAA,GAAA,CAAI,KAAA,CAAM,gBAAgB,CAAA;AAAA,IAC3B,CAAA,EAAG,GAAK,CAAA;AAGR,IAAA,IAAI,QAAA,EAAU,KAAA;AACd,IAAA,GAAA,CAAI,EAAA,CAAG,OAAA,EAAS,CAAA,EAAA,GAAM;AACrB,MAAA,QAAA,EAAU,IAAA;AACV,MAAA,yBAAA,CAAQ,YAAA,CAAa,IAAA,CAAK,0BAAA,EAA4B;AAAA,QACrD,QAAA,EAAU,eAAA;AAAA,QACV;AAAA,MACD,CAAC,CAAA;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAI,gBAAA,EAAkB,QAAA;AACtB,IAAA,MAAM,OAAA,EAAS,IAAA,CAAK,YAAA,CAAa,WAAA;AAAA,MAChC,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,MACzB,EAAE,KAAA,EAAO,aAAa;AAAA,IACvB,CAAA;AAEA,IAAA,IAAI;AACH,MAAA,IAAA,MAAA,CAAA,MAAiB,MAAA,GAAS,MAAA,EAAQ;AACjC,QAAA,GAAA,CAAI,OAAA,EAAS;AACZ,UAAA,KAAA;AAAA,QACD;AAEA,QAAA,GAAA,CAAI,KAAA,CAAM,MAAA,IAAU,WAAA,EAAa;AAChC,UAAA,gBAAA,EAAkB,KAAA,CAAM,IAAA,CAAK,QAAA;AAAA,QAC9B,EAAA,KAAA,GAAA,CAAW,KAAA,CAAM,MAAA,IAAU,kBAAA,EAAoB;AAE9C,UAAA,IAAA,CAAK,YAAA,CAAa,mBAAA,CAAoB,MAAA,EAAQ,eAAA,EAAiB;AAAA,YAC9D;AAAA,cACC,SAAA,EAAW,gCAAA,CAAW;AAAA,cACtB,IAAA,EAAA,mBAAA;AAAA,cACA,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,CAAA;AAAA,cACpB,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAC,KAAA,CAAM,IAAA,CAAK,KAAK,EAAE,CAAA;AAAA,cACnD,QAAA,EAAU;AAAA,gBACT,UAAA,EAAY,IAAA;AAAA,gBACZ,SAAA,EAAW,KAAA,CAAM;AAAA,cAClB;AAAA,YACD;AAAA,UACD,CAAC,CAAA;AAAA,QACF;AAEA,QAAA,GAAA,CAAI,KAAA;AAAA,UACH,CAAA,OAAA,EAAU,KAAA,CAAM,KAAK,CAAA;AAAA,MAAA,EAAW,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA;AAAA;AAAA,QAC3D,CAAA;AAAA,MACD;AAAA,IACD,EAAA,MAAA,CAAS,KAAA,EAAgB;AACxB,MAAA,MAAM,OAAA,kBACJ,KAAA,6BAAiB,UAAA,GAAW,+BAAA;AAC9B,MAAA,GAAA,CAAI,KAAA,CAAM,CAAA;AAAA,MAAA,EAAuB,MAAM,CAAA;AAAA;AAAA,CAAM,CAAA;AAAA,IAC9C,EAAA,QAAE;AACD,MAAA,aAAA,CAAc,iBAAiB,CAAA;AAC/B,MAAA,GAAA,CAAI,GAAA,CAAI,CAAA;AAAA,IACT;AAAA,EACD,EAAA;AACD,UAAA;ADjBA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SFZRVWAS.cjs","sourcesContent":[null,"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"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkDYQVBJUWcjs = require('./chunk-DYQVBJUW.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkOERUQFT7cjs = require('./chunk-OERUQFT7.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunk4VIZ52C2cjs = require('./chunk-4VIZ52C2.cjs');
|
|
10
|
+
|
|
11
|
+
// src/routes/api/intent.routes.ts
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var _express = require('express');
|
|
15
|
+
var _httpstatuscodes = require('http-status-codes');
|
|
16
|
+
var createIntentApiRouter = () => {
|
|
17
|
+
const router = _express.Router.call(void 0, );
|
|
18
|
+
const intentApiController = _chunkDYQVBJUWcjs.container.getIntentApiController();
|
|
19
|
+
const checkThreadMemory = (_req, _res, next) => {
|
|
20
|
+
const memoryModule = _chunk4VIZ52C2cjs.getMemoryModule.call(void 0, );
|
|
21
|
+
const threadMemory = memoryModule.getThreadMemory();
|
|
22
|
+
if (!threadMemory) {
|
|
23
|
+
const error = new (0, _chunkOERUQFT7cjs.AinHttpError)(
|
|
24
|
+
_httpstatuscodes.StatusCodes.SERVICE_UNAVAILABLE,
|
|
25
|
+
"Memory module is not initialized"
|
|
26
|
+
);
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
next();
|
|
30
|
+
};
|
|
31
|
+
router.get("/", checkThreadMemory, intentApiController.handleGetAllIntents);
|
|
32
|
+
router.post("/save", checkThreadMemory, intentApiController.handleSaveIntent);
|
|
33
|
+
router.post(
|
|
34
|
+
"/delete/:id",
|
|
35
|
+
checkThreadMemory,
|
|
36
|
+
intentApiController.handleDeleteIntent
|
|
37
|
+
);
|
|
38
|
+
return router;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
exports.createIntentApiRouter = createIntentApiRouter;
|
|
44
|
+
//# sourceMappingURL=chunk-SSKGQ6Q6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SSKGQ6Q6.cjs","../../src/routes/api/intent.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA;AAIC;AAAA,kCACM;AACP,oDAA4B;AAKrB,IAAM,sBAAA,EAAwB,CAAA,EAAA,GAAc;AAClD,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AACtB,EAAA,MAAM,oBAAA,EAAsB,2BAAA,CAAU,sBAAA,CAAuB,CAAA;AAE7D,EAAA,MAAM,kBAAA,EAAoB,CACzB,IAAA,EACA,IAAA,EACA,IAAA,EAAA,GACI;AACJ,IAAA,MAAM,aAAA,EAAe,+CAAA,CAAgB;AACrC,IAAA,MAAM,aAAA,EAAe,YAAA,CAAa,eAAA,CAAgB,CAAA;AAClD,IAAA,GAAA,CAAI,CAAC,YAAA,EAAc;AAClB,MAAA,MAAM,MAAA,EAAQ,IAAI,mCAAA;AAAA,QACjB,4BAAA,CAAY,mBAAA;AAAA,QACZ;AAAA,MACD,CAAA;AACA,MAAA,MAAM,KAAA;AAAA,IACP;AACA,IAAA,IAAA,CAAK,CAAA;AAAA,EACN,CAAA;AAGA,EAAA,MAAA,CAAO,GAAA,CAAI,GAAA,EAAK,iBAAA,EAAmB,mBAAA,CAAoB,mBAAmB,CAAA;AAC1E,EAAA,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,iBAAA,EAAmB,mBAAA,CAAoB,gBAAgB,CAAA;AAC5E,EAAA,MAAA,CAAO,IAAA;AAAA,IACN,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA,CAAoB;AAAA,EACrB,CAAA;AAEA,EAAA,OAAO,MAAA;AACR,CAAA;ADHA;AACA;AACE;AACF,sDAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SSKGQ6Q6.cjs","sourcesContent":[null,"import {\n\ttype NextFunction,\n\ttype Request,\n\ttype Response,\n\tRouter,\n} from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport { getMemoryModule } from \"@/config/modules\";\nimport { container } from \"@/container\";\nimport { AinHttpError } from \"@/types/agent\";\n\nexport const createIntentApiRouter = (): Router => {\n\tconst router = Router();\n\tconst intentApiController = container.getIntentApiController();\n\n\tconst checkThreadMemory = (\n\t\t_req: Request,\n\t\t_res: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst memoryModule = getMemoryModule();\n\t\tconst threadMemory = memoryModule.getThreadMemory();\n\t\tif (!threadMemory) {\n\t\t\tconst error = new AinHttpError(\n\t\t\t\tStatusCodes.SERVICE_UNAVAILABLE,\n\t\t\t\t\"Memory module is not initialized\",\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t\tnext();\n\t};\n\n\t// APIs (prefix: /api/intent)\n\trouter.get(\"/\", checkThreadMemory, intentApiController.handleGetAllIntents);\n\trouter.post(\"/save\", checkThreadMemory, intentApiController.handleSaveIntent);\n\trouter.post(\n\t\t\"/delete/:id\",\n\t\tcheckThreadMemory,\n\t\tintentApiController.handleDeleteIntent,\n\t);\n\n\treturn router;\n};\n"]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkFLPLVYXQcjs = require('./chunk-FLPLVYXQ.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk5Q2KJ4H4cjs = require('./chunk-5Q2KJ4H4.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunk24RRJOOIcjs = require('./chunk-24RRJOOI.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkBMXLCOSMcjs = require('./chunk-BMXLCOSM.cjs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkFJCNUHOKcjs = require('./chunk-FJCNUHOK.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var _chunk4VIZ52C2cjs = require('./chunk-4VIZ52C2.cjs');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var _chunkMSPDYSCCcjs = require('./chunk-MSPDYSCC.cjs');
|
|
25
|
+
|
|
26
|
+
// src/container/services.ts
|
|
27
|
+
var ServiceContainer = class {
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
getThreadService() {
|
|
34
|
+
if (!this._threadService) {
|
|
35
|
+
this._threadService = new (0, _chunkFLPLVYXQcjs.ThreadService)(_chunk4VIZ52C2cjs.getMemoryModule.call(void 0, ));
|
|
36
|
+
}
|
|
37
|
+
return this._threadService;
|
|
38
|
+
}
|
|
39
|
+
getIntentTriggerService() {
|
|
40
|
+
if (!this._intentTriggerService) {
|
|
41
|
+
this._intentTriggerService = new (0, _chunk5Q2KJ4H4cjs.IntentTriggerService)(
|
|
42
|
+
_chunk4VIZ52C2cjs.getModelModule.call(void 0, ),
|
|
43
|
+
_chunk4VIZ52C2cjs.getMemoryModule.call(void 0, )
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
return this._intentTriggerService;
|
|
47
|
+
}
|
|
48
|
+
getIntentFulfillService() {
|
|
49
|
+
if (!this._intentFulfillService) {
|
|
50
|
+
this._intentFulfillService = new (0, _chunk24RRJOOIcjs.IntentFulfillService)(
|
|
51
|
+
_chunk4VIZ52C2cjs.getModelModule.call(void 0, ),
|
|
52
|
+
_chunk4VIZ52C2cjs.getMemoryModule.call(void 0, ),
|
|
53
|
+
_chunk4VIZ52C2cjs.getA2AModule.call(void 0, ),
|
|
54
|
+
_chunk4VIZ52C2cjs.getMCPModule.call(void 0, ),
|
|
55
|
+
_chunkMSPDYSCCcjs.getOnIntentFallback.call(void 0, )
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
return this._intentFulfillService;
|
|
59
|
+
}
|
|
60
|
+
getQueryService() {
|
|
61
|
+
if (!this._queryService) {
|
|
62
|
+
this._queryService = new (0, _chunkBMXLCOSMcjs.QueryService)(
|
|
63
|
+
_chunk4VIZ52C2cjs.getModelModule.call(void 0, ),
|
|
64
|
+
_chunk4VIZ52C2cjs.getMemoryModule.call(void 0, ),
|
|
65
|
+
this.getIntentTriggerService(),
|
|
66
|
+
this.getIntentFulfillService()
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
return this._queryService;
|
|
70
|
+
}
|
|
71
|
+
getA2AService() {
|
|
72
|
+
if (!this._a2aService) {
|
|
73
|
+
this._a2aService = new (0, _chunkFJCNUHOKcjs.A2AService)(this.getQueryService());
|
|
74
|
+
}
|
|
75
|
+
return this._a2aService;
|
|
76
|
+
}
|
|
77
|
+
reset() {
|
|
78
|
+
this._threadService = void 0;
|
|
79
|
+
this._intentTriggerService = void 0;
|
|
80
|
+
this._intentFulfillService = void 0;
|
|
81
|
+
this._queryService = void 0;
|
|
82
|
+
this._a2aService = void 0;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
exports.ServiceContainer = ServiceContainer;
|
|
89
|
+
//# sourceMappingURL=chunk-SV2K3QIF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SV2K3QIF.cjs","../../src/container/services.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACRO,IAAM,iBAAA,EAAN,MAAuB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,gBAAA,CAAA,EAAkC;AACjC,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,cAAA,EAAgB;AACzB,MAAA,IAAA,CAAK,eAAA,EAAiB,IAAI,oCAAA,CAAc,+CAAA,CAAiB,CAAA;AAAA,IAC1D;AACA,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACb;AAAA,EAEA,uBAAA,CAAA,EAAgD;AAC/C,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,qBAAA,EAAuB;AAChC,MAAA,IAAA,CAAK,sBAAA,EAAwB,IAAI,2CAAA;AAAA,QAChC,8CAAA,CAAe;AAAA,QACf,+CAAA;AAAgB,MACjB,CAAA;AAAA,IACD;AACA,IAAA,OAAO,IAAA,CAAK,qBAAA;AAAA,EACb;AAAA,EAEA,uBAAA,CAAA,EAAgD;AAC/C,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,qBAAA,EAAuB;AAChC,MAAA,IAAA,CAAK,sBAAA,EAAwB,IAAI,2CAAA;AAAA,QAChC,8CAAA,CAAe;AAAA,QACf,+CAAA,CAAgB;AAAA,QAChB,4CAAA,CAAa;AAAA,QACb,4CAAA,CAAa;AAAA,QACb,mDAAA;AAAoB,MACrB,CAAA;AAAA,IACD;AACA,IAAA,OAAO,IAAA,CAAK,qBAAA;AAAA,EACb;AAAA,EAEA,eAAA,CAAA,EAAgC;AAC/B,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,aAAA,EAAe;AACxB,MAAA,IAAA,CAAK,cAAA,EAAgB,IAAI,mCAAA;AAAA,QACxB,8CAAA,CAAe;AAAA,QACf,+CAAA,CAAgB;AAAA,QAChB,IAAA,CAAK,uBAAA,CAAwB,CAAA;AAAA,QAC7B,IAAA,CAAK,uBAAA,CAAwB;AAAA,MAC9B,CAAA;AAAA,IACD;AACA,IAAA,OAAO,IAAA,CAAK,aAAA;AAAA,EACb;AAAA,EAEA,aAAA,CAAA,EAA4B;AAC3B,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,WAAA,EAAa;AACtB,MAAA,IAAA,CAAK,YAAA,EAAc,IAAI,iCAAA,CAAW,IAAA,CAAK,eAAA,CAAgB,CAAC,CAAA;AAAA,IACzD;AACA,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACb;AAAA,EAEA,KAAA,CAAA,EAAc;AACb,IAAA,IAAA,CAAK,eAAA,EAAiB,KAAA,CAAA;AACtB,IAAA,IAAA,CAAK,sBAAA,EAAwB,KAAA,CAAA;AAC7B,IAAA,IAAA,CAAK,sBAAA,EAAwB,KAAA,CAAA;AAC7B,IAAA,IAAA,CAAK,cAAA,EAAgB,KAAA,CAAA;AACrB,IAAA,IAAA,CAAK,YAAA,EAAc,KAAA,CAAA;AAAA,EACpB;AACD,CAAA;ADIA;AACA;AACE;AACF,4CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SV2K3QIF.cjs","sourcesContent":[null,"import {\n\tgetA2AModule,\n\tgetMCPModule,\n\tgetMemoryModule,\n\tgetModelModule,\n} from \"@/config/modules\";\nimport { getOnIntentFallback } from \"@/config/options\";\nimport { A2AService } from \"@/services/a2a.service\";\nimport { IntentFulfillService } from \"@/services/intents/fulfill.service\";\nimport { IntentTriggerService } from \"@/services/intents/trigger.service\";\nimport { QueryService } from \"@/services/query.service\";\nimport { ThreadService } from \"@/services/thread.service\";\n\n/**\n * Service factory for dependency injection.\n * Manages singleton instances of all services.\n */\nexport class ServiceContainer {\n\tprivate _threadService?: ThreadService;\n\tprivate _intentTriggerService?: IntentTriggerService;\n\tprivate _intentFulfillService?: IntentFulfillService;\n\tprivate _queryService?: QueryService;\n\tprivate _a2aService?: A2AService;\n\n\tgetThreadService(): ThreadService {\n\t\tif (!this._threadService) {\n\t\t\tthis._threadService = new ThreadService(getMemoryModule());\n\t\t}\n\t\treturn this._threadService;\n\t}\n\n\tgetIntentTriggerService(): IntentTriggerService {\n\t\tif (!this._intentTriggerService) {\n\t\t\tthis._intentTriggerService = new IntentTriggerService(\n\t\t\t\tgetModelModule(),\n\t\t\t\tgetMemoryModule(),\n\t\t\t);\n\t\t}\n\t\treturn this._intentTriggerService;\n\t}\n\n\tgetIntentFulfillService(): IntentFulfillService {\n\t\tif (!this._intentFulfillService) {\n\t\t\tthis._intentFulfillService = new IntentFulfillService(\n\t\t\t\tgetModelModule(),\n\t\t\t\tgetMemoryModule(),\n\t\t\t\tgetA2AModule(),\n\t\t\t\tgetMCPModule(),\n\t\t\t\tgetOnIntentFallback(),\n\t\t\t);\n\t\t}\n\t\treturn this._intentFulfillService;\n\t}\n\n\tgetQueryService(): QueryService {\n\t\tif (!this._queryService) {\n\t\t\tthis._queryService = new QueryService(\n\t\t\t\tgetModelModule(),\n\t\t\t\tgetMemoryModule(),\n\t\t\t\tthis.getIntentTriggerService(),\n\t\t\t\tthis.getIntentFulfillService(),\n\t\t\t);\n\t\t}\n\t\treturn this._queryService;\n\t}\n\n\tgetA2AService(): A2AService {\n\t\tif (!this._a2aService) {\n\t\t\tthis._a2aService = new A2AService(this.getQueryService());\n\t\t}\n\t\treturn this._a2aService;\n\t}\n\n\treset(): void {\n\t\tthis._threadService = undefined;\n\t\tthis._intentTriggerService = undefined;\n\t\tthis._intentFulfillService = undefined;\n\t\tthis._queryService = undefined;\n\t\tthis._a2aService = undefined;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
|
|
2
|
+
|
|
3
|
+
var _chunk5WWZOWMAcjs = require('./chunk-5WWZOWMA.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk2CQQ34EDcjs = require('./chunk-2CQQ34ED.cjs');
|
|
7
|
+
|
|
8
|
+
// src/modules/a2a/a2a.module.ts
|
|
9
|
+
var _crypto = require('crypto');
|
|
10
|
+
var _client = require('@a2a-js/sdk/client');
|
|
11
|
+
var A2AModule = (_class = class {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this); }
|
|
12
|
+
/** Map of A2A server URLs to their corresponding tool instances */
|
|
13
|
+
__init() {this.a2aConnectors = /* @__PURE__ */ new Map()}
|
|
14
|
+
/** Map of session IDs to their A2A session state */
|
|
15
|
+
__init2() {this.a2aTasks = /* @__PURE__ */ new Map()}
|
|
16
|
+
__init3() {this.agentId = _crypto.randomUUID.call(void 0, )}
|
|
17
|
+
/* FIXME */
|
|
18
|
+
/**
|
|
19
|
+
* Registers a new A2A peer server URL for connection.
|
|
20
|
+
*
|
|
21
|
+
* @param conns - Set of name, url pair
|
|
22
|
+
*/
|
|
23
|
+
async addA2AConnector(conns) {
|
|
24
|
+
for (const [name, url] of Object.entries(conns)) {
|
|
25
|
+
const conn = new (0, _chunk5WWZOWMAcjs.A2AConnector)(name, url);
|
|
26
|
+
this.a2aConnectors.set(name, conn);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
getA2AConnectors() {
|
|
30
|
+
const connectors = [];
|
|
31
|
+
for (const [name, connector] of this.a2aConnectors.entries()) {
|
|
32
|
+
connectors.push({ name, url: connector.url });
|
|
33
|
+
}
|
|
34
|
+
return connectors;
|
|
35
|
+
}
|
|
36
|
+
async getOrCreateClient(connector) {
|
|
37
|
+
if (!connector.client) {
|
|
38
|
+
connector.client = await new (0, _client.ClientFactory)().createFromUrl(connector.url);
|
|
39
|
+
}
|
|
40
|
+
return connector.client;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Retrieves tools from all registered A2A peer servers.
|
|
44
|
+
*
|
|
45
|
+
* Attempts to connect to each registered server, fetch their agent cards,
|
|
46
|
+
* and create tool instances. Disables tools for unreachable servers.
|
|
47
|
+
*
|
|
48
|
+
* @returns Promise resolving to array of available A2A tools
|
|
49
|
+
*/
|
|
50
|
+
async getTools() {
|
|
51
|
+
const tools = [];
|
|
52
|
+
for (const [name, conn] of this.a2aConnectors.entries()) {
|
|
53
|
+
if (!conn.enabled) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const client = await this.getOrCreateClient(conn);
|
|
58
|
+
const card = await client.getAgentCard();
|
|
59
|
+
const tool = {
|
|
60
|
+
toolName: card.name.replaceAll(" ", "-"),
|
|
61
|
+
connectorName: name,
|
|
62
|
+
protocol: "A2A" /* A2A */,
|
|
63
|
+
description: card.description,
|
|
64
|
+
// add thinking_text inputSchema
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
thinking_text: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "\uC0AC\uC6A9\uC790\uC758 \uC694\uCCAD\uC744 \uD574\uACB0\uD558\uAE30 \uC704\uD574 \uC774 \uB3C4\uAD6C\uB97C \uC120\uD0DD\uD55C \uAD6C\uCCB4\uC801\uC778 \uC774\uC720\uC640 \uBAA9\uC801 (Why & What). \uD55C\uB450\uC904 \uC815\uB3C4\uC758 \uBD84\uB7C9\uC73C\uB85C \uC785\uB825 \uC5B8\uC5B4\uC640 \uAC19\uC740 \uC5B8\uC5B4\uB85C \uC0DD\uC131\uD55C\uB2E4."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
required: ["thinking_text"]
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
tools.push(tool);
|
|
77
|
+
} catch (_error) {
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return tools;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Constructs a message payload for A2A communication.
|
|
84
|
+
*
|
|
85
|
+
* Includes session context (task ID and context ID) if available
|
|
86
|
+
* for maintaining conversation continuity.
|
|
87
|
+
*
|
|
88
|
+
* @param query - The message content to send
|
|
89
|
+
* @param threadId - The session identifier
|
|
90
|
+
* @returns Formatted Message object for A2A protocol
|
|
91
|
+
*/
|
|
92
|
+
getMessagePayload(query, threadId) {
|
|
93
|
+
const messagePayload = {
|
|
94
|
+
messageId: _crypto.randomUUID.call(void 0, ),
|
|
95
|
+
kind: "message",
|
|
96
|
+
role: "user",
|
|
97
|
+
// FIXME: it could be 'agent'
|
|
98
|
+
metadata: {
|
|
99
|
+
agentId: this.agentId,
|
|
100
|
+
type: "CHAT" /* CHAT */
|
|
101
|
+
},
|
|
102
|
+
parts: [
|
|
103
|
+
{
|
|
104
|
+
kind: "text",
|
|
105
|
+
text: query
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
contextId: threadId
|
|
109
|
+
};
|
|
110
|
+
if (this.a2aTasks.has(threadId)) {
|
|
111
|
+
messagePayload.taskId = this.a2aTasks.get(threadId);
|
|
112
|
+
}
|
|
113
|
+
return messagePayload;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Executes an A2A tool by sending a message to the remote agent.
|
|
117
|
+
*
|
|
118
|
+
* Handles streaming responses, maintains session state, and extracts
|
|
119
|
+
* text content from various event types in the response stream.
|
|
120
|
+
*
|
|
121
|
+
* @param tool - The A2ATool instance to use
|
|
122
|
+
* @param query - The message to send to the agent
|
|
123
|
+
* @param threadId - The session identifier for context tracking
|
|
124
|
+
* @yields StreamEvent objects for intermediate events
|
|
125
|
+
* @returns Final text response from the agent
|
|
126
|
+
*/
|
|
127
|
+
async *useTool(tool, query, threadId) {
|
|
128
|
+
const finalText = [];
|
|
129
|
+
const connector = this.a2aConnectors.get(tool.connectorName);
|
|
130
|
+
if (!connector) {
|
|
131
|
+
_chunk2CQQ34EDcjs.loggers.a2a.error("Unknown agent:", { tool });
|
|
132
|
+
const toolResult = `[Bot Called A2A Tool ${tool.connectorName}]
|
|
133
|
+
"Unknown agent connector"`;
|
|
134
|
+
return toolResult;
|
|
135
|
+
}
|
|
136
|
+
const messagePayload = this.getMessagePayload(query, threadId);
|
|
137
|
+
const params = {
|
|
138
|
+
message: messagePayload
|
|
139
|
+
};
|
|
140
|
+
try {
|
|
141
|
+
const client = await this.getOrCreateClient(connector);
|
|
142
|
+
const stream = client.sendMessageStream(params);
|
|
143
|
+
for await (const event of stream) {
|
|
144
|
+
if (event.kind === "status-update") {
|
|
145
|
+
const typedEvent = event;
|
|
146
|
+
if (typedEvent.final && typedEvent.status.state !== "input-required") {
|
|
147
|
+
this.a2aTasks.delete(threadId);
|
|
148
|
+
}
|
|
149
|
+
if (typedEvent.status.state === "working") {
|
|
150
|
+
const eventData = JSON.parse(
|
|
151
|
+
(_optionalChain([typedEvent, 'access', _ => _.status, 'access', _2 => _2.message, 'optionalAccess', _3 => _3.parts, 'access', _4 => _4[0]])).text
|
|
152
|
+
);
|
|
153
|
+
yield {
|
|
154
|
+
event: "thinking_process",
|
|
155
|
+
data: eventData
|
|
156
|
+
};
|
|
157
|
+
} else if (typedEvent.status.state === "completed") {
|
|
158
|
+
const texts = _optionalChain([typedEvent, 'access', _5 => _5.status, 'access', _6 => _6.message, 'optionalAccess', _7 => _7.parts, 'access', _8 => _8.filter, 'call', _9 => _9((part) => part.kind === "text"), 'access', _10 => _10.map, 'call', _11 => _11((part) => part.text), 'access', _12 => _12.join, 'call', _13 => _13("\n")]);
|
|
159
|
+
if (texts) {
|
|
160
|
+
finalText.push(texts);
|
|
161
|
+
yield {
|
|
162
|
+
event: "text_chunk",
|
|
163
|
+
data: { delta: texts }
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
}
|
|
168
|
+
} else if (event.kind === "message") {
|
|
169
|
+
const msg = event;
|
|
170
|
+
const taskId = this.a2aTasks.get(threadId);
|
|
171
|
+
if (msg.taskId && msg.taskId !== taskId) {
|
|
172
|
+
this.a2aTasks.set(threadId, msg.taskId);
|
|
173
|
+
}
|
|
174
|
+
} else if (event.kind === "task") {
|
|
175
|
+
const task = event;
|
|
176
|
+
if (task.id !== this.a2aTasks.get(threadId)) {
|
|
177
|
+
this.a2aTasks.set(threadId, task.id);
|
|
178
|
+
}
|
|
179
|
+
} else {
|
|
180
|
+
_chunk2CQQ34EDcjs.loggers.a2a.warn("Received unknown event structure from stream:", {
|
|
181
|
+
event
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
} catch (error) {
|
|
186
|
+
_chunk2CQQ34EDcjs.loggers.a2a.error("Error communicating with agent:", { error });
|
|
187
|
+
const toolResult = `[Bot Called A2A Tool ${tool.toolName}]
|
|
188
|
+
${typeof error === "string" ? error : JSON.stringify(error, null, 2)}`;
|
|
189
|
+
return toolResult;
|
|
190
|
+
}
|
|
191
|
+
return `[Bot Called A2A Tool ${tool.toolName}]
|
|
192
|
+
${finalText.join("\n")}`;
|
|
193
|
+
}
|
|
194
|
+
}, _class);
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
exports.A2AModule = A2AModule;
|
|
199
|
+
//# sourceMappingURL=chunk-SVO42FE4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SVO42FE4.cjs","../../src/modules/a2a/a2a.module.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-SVO42FE4.cjs","sourcesContent":[null,"import { randomUUID } from \"node:crypto\";\nimport type {\n\tAgentCard,\n\tMessage,\n\tMessageSendParams,\n\tTask,\n\tTaskStatusUpdateEvent,\n\tTextPart,\n} from \"@a2a-js/sdk\";\nimport { type Client as A2AClient, ClientFactory } from \"@a2a-js/sdk/client\";\nimport {\n\tCONNECTOR_PROTOCOL_TYPE,\n\ttype ConnectorTool,\n} from \"@/types/connector.js\";\nimport { ThreadType } from \"@/types/memory.js\";\nimport type { StreamEvent } from \"@/types/stream.js\";\nimport { loggers } from \"@/utils/logger.js\";\nimport { A2AConnector } from \"./a2a.connector.js\";\n\n/**\n * Module for managing Agent-to-Agent (A2A) protocol connections.\n *\n * This module handles connections to other A2A-compatible agents, manages\n * conversation sessions, and provides an interface for inter-agent communication.\n * Supports multi-turn conversations with task and context tracking.\n */\nexport class A2AModule {\n\t/** Map of A2A server URLs to their corresponding tool instances */\n\tprivate a2aConnectors: Map<string, A2AConnector> = new Map();\n\t/** Map of session IDs to their A2A session state */\n\tprivate a2aTasks: Map<string, string> = new Map();\n\tprivate agentId: string = randomUUID(); /* FIXME */\n\n\t/**\n\t * Registers a new A2A peer server URL for connection.\n\t *\n\t * @param conns - Set of name, url pair\n\t */\n\tpublic async addA2AConnector(conns: {\n\t\t[name: string]: string;\n\t}): Promise<void> {\n\t\tfor (const [name, url] of Object.entries(conns)) {\n\t\t\tconst conn = new A2AConnector(name, url);\n\t\t\tthis.a2aConnectors.set(name, conn);\n\t\t}\n\t}\n\n\tpublic getA2AConnectors(): Array<{ name: string; url: string }> {\n\t\tconst connectors: Array<{ name: string; url: string }> = [];\n\t\tfor (const [name, connector] of this.a2aConnectors.entries()) {\n\t\t\tconnectors.push({ name, url: connector.url });\n\t\t}\n\t\treturn connectors;\n\t}\n\n\tprivate async getOrCreateClient(connector: A2AConnector): Promise<A2AClient> {\n\t\tif (!connector.client) {\n\t\t\tconnector.client = await new ClientFactory().createFromUrl(connector.url);\n\t\t}\n\t\treturn connector.client;\n\t}\n\n\t/**\n\t * Retrieves tools from all registered A2A peer servers.\n\t *\n\t * Attempts to connect to each registered server, fetch their agent cards,\n\t * and create tool instances. Disables tools for unreachable servers.\n\t *\n\t * @returns Promise resolving to array of available A2A tools\n\t */\n\tpublic async getTools(): Promise<ConnectorTool[]> {\n\t\tconst tools: ConnectorTool[] = [];\n\t\tfor (const [name, conn] of this.a2aConnectors.entries()) {\n\t\t\tif (!conn.enabled) {\n\t\t\t\tcontinue; // skip disabled agent\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst client = await this.getOrCreateClient(conn);\n\t\t\t\tconst card: AgentCard = await client.getAgentCard();\n\t\t\t\t/* TODO: add each skill as tool? */\n\t\t\t\tconst tool: ConnectorTool = {\n\t\t\t\t\ttoolName: card.name.replaceAll(\" \", \"-\"),\n\t\t\t\t\tconnectorName: name,\n\t\t\t\t\tprotocol: CONNECTOR_PROTOCOL_TYPE.A2A,\n\t\t\t\t\tdescription: card.description,\n\t\t\t\t\t// add thinking_text inputSchema\n\t\t\t\t\tinputSchema: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tthinking_text: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"사용자의 요청을 해결하기 위해 이 도구를 선택한 구체적인 이유와 목적 (Why & What). 한두줄 정도의 분량으로 입력 언어와 같은 언어로 생성한다.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: [\"thinking_text\"],\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\ttools.push(tool);\n\t\t\t} catch (_error: any) {\n\t\t\t\t// Agent not responded, just skip\n\t\t\t}\n\t\t}\n\t\treturn tools;\n\t}\n\n\t/**\n\t * Constructs a message payload for A2A communication.\n\t *\n\t * Includes session context (task ID and context ID) if available\n\t * for maintaining conversation continuity.\n\t *\n\t * @param query - The message content to send\n\t * @param threadId - The session identifier\n\t * @returns Formatted Message object for A2A protocol\n\t */\n\tpublic getMessagePayload(query: string, threadId: string): Message {\n\t\tconst messagePayload: Message = {\n\t\t\tmessageId: randomUUID(),\n\t\t\tkind: \"message\",\n\t\t\trole: \"user\", // FIXME: it could be 'agent'\n\t\t\tmetadata: {\n\t\t\t\tagentId: this.agentId,\n\t\t\t\ttype: ThreadType.CHAT,\n\t\t\t},\n\t\t\tparts: [\n\t\t\t\t{\n\t\t\t\t\tkind: \"text\",\n\t\t\t\t\ttext: query,\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontextId: threadId,\n\t\t};\n\n\t\tif (this.a2aTasks.has(threadId)) {\n\t\t\tmessagePayload.taskId = this.a2aTasks.get(threadId);\n\t\t}\n\n\t\treturn messagePayload;\n\t}\n\n\t/**\n\t * Executes an A2A tool by sending a message to the remote agent.\n\t *\n\t * Handles streaming responses, maintains session state, and extracts\n\t * text content from various event types in the response stream.\n\t *\n\t * @param tool - The A2ATool instance to use\n\t * @param query - The message to send to the agent\n\t * @param threadId - The session identifier for context tracking\n\t * @yields StreamEvent objects for intermediate events\n\t * @returns Final text response from the agent\n\t */\n\tpublic async *useTool(\n\t\ttool: ConnectorTool,\n\t\tquery: string,\n\t\tthreadId: string,\n\t): AsyncGenerator<StreamEvent, string, unknown> {\n\t\tconst finalText: string[] = [];\n\t\tconst connector = this.a2aConnectors.get(tool.connectorName);\n\t\tif (!connector) {\n\t\t\tloggers.a2a.error(\"Unknown agent:\", { tool });\n\t\t\tconst toolResult = `[Bot Called A2A Tool ${tool.connectorName}]\\n\"Unknown agent connector\"`;\n\t\t\treturn toolResult;\n\t\t}\n\n\t\tconst messagePayload = this.getMessagePayload(query, threadId);\n\t\tconst params: MessageSendParams = {\n\t\t\tmessage: messagePayload,\n\t\t};\n\n\t\ttry {\n\t\t\tconst client = await this.getOrCreateClient(connector);\n\t\t\tconst stream = client.sendMessageStream(params);\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.kind === \"status-update\") {\n\t\t\t\t\tconst typedEvent = event as TaskStatusUpdateEvent;\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypedEvent.final &&\n\t\t\t\t\t\ttypedEvent.status.state !== \"input-required\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.a2aTasks.delete(threadId);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typedEvent.status.state === \"working\") {\n\t\t\t\t\t\t// thinking process event\n\t\t\t\t\t\tconst eventData = JSON.parse(\n\t\t\t\t\t\t\t(typedEvent.status.message?.parts[0] as TextPart).text,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tyield {\n\t\t\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\t\t\tdata: eventData,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if (typedEvent.status.state === \"completed\") {\n\t\t\t\t\t\t// TODO: handle 'file', 'data' parts\n\t\t\t\t\t\tconst texts = typedEvent.status.message?.parts\n\t\t\t\t\t\t\t.filter((part) => part.kind === \"text\")\n\t\t\t\t\t\t\t.map((part: TextPart) => part.text)\n\t\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\t\t\tif (texts) {\n\t\t\t\t\t\t\tfinalText.push(texts);\n\t\t\t\t\t\t\tyield {\n\t\t\t\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\t\t\t\tdata: { delta: texts },\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ignore other status updates\n\t\t\t\t\t}\n\t\t\t\t} else if (event.kind === \"message\") {\n\t\t\t\t\t// FIXME: handling text in 'message'?\n\t\t\t\t\tconst msg = event as Message;\n\t\t\t\t\tconst taskId = this.a2aTasks.get(threadId);\n\t\t\t\t\tif (msg.taskId && msg.taskId !== taskId) {\n\t\t\t\t\t\tthis.a2aTasks.set(threadId, msg.taskId);\n\t\t\t\t\t}\n\t\t\t\t} else if (event.kind === \"task\") {\n\t\t\t\t\t// establishing the Task ID\n\t\t\t\t\tconst task = event as Task;\n\t\t\t\t\tif (task.id !== this.a2aTasks.get(threadId)) {\n\t\t\t\t\t\tthis.a2aTasks.set(threadId, task.id);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tloggers.a2a.warn(\"Received unknown event structure from stream:\", {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tloggers.a2a.error(\"Error communicating with agent:\", { error });\n\t\t\tconst toolResult = `[Bot Called A2A Tool ${tool.toolName}]\\n${typeof error === \"string\" ? error : JSON.stringify(error, null, 2)}`;\n\t\t\treturn toolResult;\n\t\t}\n\n\t\treturn `[Bot Called A2A Tool ${tool.toolName}]\\n${finalText.join(\"\\n\")}`;\n\t}\n}\n"]}
|