@ainetwork/adk 0.2.6 → 0.2.7
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-QTUDQSRL.cjs → chunk-2GJKQSDQ.cjs} +3 -3
- package/dist/cjs/{chunk-KFIYXWPY.cjs.map → chunk-2GJKQSDQ.cjs.map} +1 -1
- package/dist/cjs/{chunk-77SJGFVU.cjs → chunk-2NKMH5DO.cjs} +6 -6
- package/dist/cjs/{chunk-3VY3LHQO.cjs.map → chunk-2NKMH5DO.cjs.map} +1 -1
- package/dist/cjs/{chunk-6CDGUUXE.cjs → chunk-2UK6RDHB.cjs} +5 -6
- package/dist/cjs/chunk-2UK6RDHB.cjs.map +1 -0
- package/dist/cjs/chunk-3BPHCG6M.cjs +30 -0
- package/dist/cjs/chunk-3BPHCG6M.cjs.map +1 -0
- package/dist/cjs/{chunk-3VY3LHQO.cjs → chunk-3GPSKXKA.cjs} +5 -5
- package/dist/cjs/{chunk-77SJGFVU.cjs.map → chunk-3GPSKXKA.cjs.map} +1 -1
- package/dist/cjs/{chunk-HCN6JEJA.cjs → chunk-3IB2WAKN.cjs} +5 -5
- package/dist/cjs/{chunk-2L5KFFHV.cjs.map → chunk-3IB2WAKN.cjs.map} +1 -1
- package/dist/cjs/{chunk-5JGNWLHJ.cjs → chunk-45H4WOKN.cjs} +5 -5
- package/dist/cjs/{chunk-5JGNWLHJ.cjs.map → chunk-45H4WOKN.cjs.map} +1 -1
- package/dist/cjs/{chunk-CHC3HECE.cjs → chunk-4PFJ7PDN.cjs} +5 -5
- package/dist/cjs/{chunk-CHC3HECE.cjs.map → chunk-4PFJ7PDN.cjs.map} +1 -1
- package/dist/cjs/chunk-4TK4MTAR.cjs +17 -0
- package/dist/cjs/chunk-4TK4MTAR.cjs.map +1 -0
- package/dist/cjs/chunk-4Z4HSVCQ.cjs +21 -0
- package/dist/cjs/chunk-4Z4HSVCQ.cjs.map +1 -0
- package/dist/cjs/{chunk-6KB562A7.cjs → chunk-5ARBSKWU.cjs} +5 -5
- package/dist/cjs/{chunk-6KB562A7.cjs.map → chunk-5ARBSKWU.cjs.map} +1 -1
- package/dist/cjs/chunk-5FZ7QLJD.cjs +17 -0
- package/dist/cjs/chunk-5FZ7QLJD.cjs.map +1 -0
- package/dist/cjs/chunk-5WNANWIO.cjs +43 -0
- package/dist/cjs/chunk-5WNANWIO.cjs.map +1 -0
- package/dist/cjs/{chunk-HQ4X5TPN.cjs → chunk-6S376RMW.cjs} +13 -12
- package/dist/cjs/chunk-6S376RMW.cjs.map +1 -0
- package/dist/cjs/chunk-6UHPYXKS.cjs +381 -0
- package/dist/cjs/chunk-6UHPYXKS.cjs.map +1 -0
- package/dist/cjs/{chunk-3ZFV2K7O.cjs → chunk-6WAVK3BS.cjs} +43 -29
- package/dist/cjs/chunk-6WAVK3BS.cjs.map +1 -0
- package/dist/cjs/chunk-6YHPJAGA.cjs +1 -0
- package/dist/cjs/chunk-6YHPJAGA.cjs.map +1 -0
- package/dist/cjs/chunk-7HH3N36Q.cjs +43 -0
- package/dist/cjs/chunk-7HH3N36Q.cjs.map +1 -0
- package/dist/cjs/chunk-7J5DYKDJ.cjs +376 -0
- package/dist/cjs/chunk-7J5DYKDJ.cjs.map +1 -0
- package/dist/cjs/{chunk-KFIYXWPY.cjs → chunk-7Y3W3SIL.cjs} +5 -5
- package/dist/cjs/{chunk-HCN6JEJA.cjs.map → chunk-7Y3W3SIL.cjs.map} +1 -1
- package/dist/cjs/{chunk-UDK47YLB.cjs → chunk-AEYHJEGM.cjs} +5 -1
- package/dist/cjs/chunk-AEYHJEGM.cjs.map +1 -0
- package/dist/cjs/chunk-AIAIY7IU.cjs +43 -0
- package/dist/cjs/chunk-AIAIY7IU.cjs.map +1 -0
- package/dist/cjs/chunk-APGW3LWW.cjs +43 -0
- package/dist/cjs/chunk-APGW3LWW.cjs.map +1 -0
- package/dist/cjs/{chunk-7UGA4QRJ.cjs → chunk-AWLDQTED.cjs} +21 -13
- package/dist/cjs/chunk-AWLDQTED.cjs.map +1 -0
- package/dist/cjs/{chunk-DEKRDA6Q.cjs → chunk-AXLG6NY4.cjs} +12 -12
- package/dist/cjs/chunk-AXLG6NY4.cjs.map +1 -0
- package/dist/cjs/chunk-BAPJ7AYM.cjs +43 -0
- package/dist/cjs/chunk-BAPJ7AYM.cjs.map +1 -0
- package/dist/cjs/chunk-BFWJLMUR.cjs +43 -0
- package/dist/cjs/chunk-BFWJLMUR.cjs.map +1 -0
- package/dist/cjs/chunk-BGEBE36B.cjs +43 -0
- package/dist/cjs/chunk-BGEBE36B.cjs.map +1 -0
- package/dist/cjs/chunk-BIDIP5MX.cjs +37 -0
- package/dist/cjs/chunk-BIDIP5MX.cjs.map +1 -0
- package/dist/cjs/chunk-BKU7EWEM.cjs +37 -0
- package/dist/cjs/chunk-BKU7EWEM.cjs.map +1 -0
- package/dist/cjs/chunk-C5V4X3ZH.cjs +364 -0
- package/dist/cjs/chunk-C5V4X3ZH.cjs.map +1 -0
- package/dist/cjs/chunk-C77OTZYZ.cjs +43 -0
- package/dist/cjs/chunk-C77OTZYZ.cjs.map +1 -0
- package/dist/cjs/chunk-C7SJ2X3X.cjs +43 -0
- package/dist/cjs/chunk-C7SJ2X3X.cjs.map +1 -0
- package/dist/cjs/chunk-CEUCTNAJ.cjs +43 -0
- package/dist/cjs/chunk-CEUCTNAJ.cjs.map +1 -0
- package/dist/cjs/chunk-CFILMIB6.cjs +25 -0
- package/dist/cjs/chunk-CFILMIB6.cjs.map +1 -0
- package/dist/cjs/chunk-CIV2QV4C.cjs +43 -0
- package/dist/cjs/chunk-CIV2QV4C.cjs.map +1 -0
- package/dist/cjs/chunk-CKE4RRTI.cjs +378 -0
- package/dist/cjs/chunk-CKE4RRTI.cjs.map +1 -0
- package/dist/cjs/chunk-EEND2E3Y.cjs +37 -0
- package/dist/cjs/chunk-EEND2E3Y.cjs.map +1 -0
- package/dist/cjs/chunk-ET7NGSCR.cjs +382 -0
- package/dist/cjs/chunk-ET7NGSCR.cjs.map +1 -0
- package/dist/cjs/{chunk-M4MYRCSF.cjs → chunk-EXKLB7FF.cjs} +1 -1
- package/dist/cjs/{chunk-M4MYRCSF.cjs.map → chunk-EXKLB7FF.cjs.map} +1 -1
- package/dist/cjs/chunk-F6LFBKIF.cjs +43 -0
- package/dist/cjs/chunk-F6LFBKIF.cjs.map +1 -0
- package/dist/cjs/chunk-FCIBDAL5.cjs +364 -0
- package/dist/cjs/chunk-FCIBDAL5.cjs.map +1 -0
- package/dist/cjs/chunk-FGBHPONX.cjs +43 -0
- package/dist/cjs/chunk-FGBHPONX.cjs.map +1 -0
- package/dist/cjs/chunk-FJ2S5TGS.cjs +37 -0
- package/dist/cjs/chunk-FJ2S5TGS.cjs.map +1 -0
- package/dist/cjs/{chunk-7PZP7YSA.cjs → chunk-FTRCEUDB.cjs} +10 -10
- package/dist/cjs/chunk-FTRCEUDB.cjs.map +1 -0
- package/dist/cjs/chunk-FZEACIU2.cjs +37 -0
- package/dist/cjs/chunk-FZEACIU2.cjs.map +1 -0
- package/dist/cjs/chunk-GAXPKI2P.cjs +364 -0
- package/dist/cjs/chunk-GAXPKI2P.cjs.map +1 -0
- package/dist/cjs/chunk-GBQXIGWQ.cjs +37 -0
- package/dist/cjs/chunk-GBQXIGWQ.cjs.map +1 -0
- package/dist/cjs/chunk-GGP6URMG.cjs +43 -0
- package/dist/cjs/chunk-GGP6URMG.cjs.map +1 -0
- package/dist/cjs/chunk-GO2OLIWF.cjs +359 -0
- package/dist/cjs/chunk-GO2OLIWF.cjs.map +1 -0
- package/dist/cjs/{chunk-7K2R2UKB.cjs → chunk-GP3SSTAQ.cjs} +1 -1
- package/dist/cjs/chunk-GP3SSTAQ.cjs.map +1 -0
- package/dist/cjs/chunk-GYIACLMZ.cjs +376 -0
- package/dist/cjs/chunk-GYIACLMZ.cjs.map +1 -0
- package/dist/cjs/chunk-GZE5BVB2.cjs +361 -0
- package/dist/cjs/chunk-GZE5BVB2.cjs.map +1 -0
- package/dist/cjs/chunk-HPCNM6XP.cjs +25 -0
- package/dist/cjs/chunk-HPCNM6XP.cjs.map +1 -0
- package/dist/cjs/chunk-HXRGFZL7.cjs +360 -0
- package/dist/cjs/chunk-HXRGFZL7.cjs.map +1 -0
- package/dist/cjs/chunk-IC5TWI4A.cjs +37 -0
- package/dist/cjs/chunk-IC5TWI4A.cjs.map +1 -0
- package/dist/cjs/chunk-ICTSMRXC.cjs +360 -0
- package/dist/cjs/chunk-ICTSMRXC.cjs.map +1 -0
- package/dist/cjs/chunk-IH4I2JTE.cjs +348 -0
- package/dist/cjs/chunk-IH4I2JTE.cjs.map +1 -0
- package/dist/cjs/chunk-JFLQREPM.cjs +37 -0
- package/dist/cjs/chunk-JFLQREPM.cjs.map +1 -0
- package/dist/cjs/chunk-JO6AZASU.cjs +37 -0
- package/dist/cjs/chunk-JO6AZASU.cjs.map +1 -0
- package/dist/cjs/chunk-JWIVQT6C.cjs +37 -0
- package/dist/cjs/chunk-JWIVQT6C.cjs.map +1 -0
- package/dist/cjs/chunk-JYHYAQQ2.cjs +43 -0
- package/dist/cjs/chunk-JYHYAQQ2.cjs.map +1 -0
- package/dist/cjs/chunk-K6HWDDNX.cjs +367 -0
- package/dist/cjs/chunk-K6HWDDNX.cjs.map +1 -0
- package/dist/cjs/chunk-K6J5XJRM.cjs +382 -0
- package/dist/cjs/chunk-K6J5XJRM.cjs.map +1 -0
- package/dist/cjs/{chunk-FRWC3FQ4.cjs → chunk-KBWHLMA4.cjs} +7 -3
- package/dist/cjs/chunk-KBWHLMA4.cjs.map +1 -0
- package/dist/cjs/{chunk-6KXMM7GP.cjs → chunk-KH25JPQS.cjs} +5 -6
- package/dist/cjs/chunk-KH25JPQS.cjs.map +1 -0
- package/dist/cjs/chunk-KHAIZONV.cjs +43 -0
- package/dist/cjs/chunk-KHAIZONV.cjs.map +1 -0
- package/dist/cjs/chunk-KQ4MBNUW.cjs +43 -0
- package/dist/cjs/chunk-KQ4MBNUW.cjs.map +1 -0
- package/dist/cjs/chunk-L5ZICBT4.cjs +37 -0
- package/dist/cjs/chunk-L5ZICBT4.cjs.map +1 -0
- package/dist/cjs/chunk-L6RI7RO4.cjs +11 -0
- package/dist/cjs/chunk-L6RI7RO4.cjs.map +1 -0
- package/dist/cjs/chunk-MADCWTBO.cjs +18 -0
- package/dist/cjs/chunk-MADCWTBO.cjs.map +1 -0
- package/dist/cjs/{chunk-BBFYVWE2.cjs → chunk-MV6L3NPY.cjs} +39 -26
- package/dist/cjs/chunk-MV6L3NPY.cjs.map +1 -0
- package/dist/cjs/chunk-N6VAOFEP.cjs +37 -0
- package/dist/cjs/chunk-N6VAOFEP.cjs.map +1 -0
- package/dist/cjs/chunk-NWMGBXPZ.cjs +37 -0
- package/dist/cjs/chunk-NWMGBXPZ.cjs.map +1 -0
- package/dist/cjs/chunk-OCGEXAVI.cjs +373 -0
- package/dist/cjs/chunk-OCGEXAVI.cjs.map +1 -0
- package/dist/cjs/chunk-OOSRLRNL.cjs +37 -0
- package/dist/cjs/chunk-OOSRLRNL.cjs.map +1 -0
- package/dist/cjs/chunk-ORLXR6OZ.cjs +257 -0
- package/dist/cjs/chunk-ORLXR6OZ.cjs.map +1 -0
- package/dist/cjs/chunk-OVTUSYSU.cjs +24 -0
- package/dist/cjs/chunk-OVTUSYSU.cjs.map +1 -0
- package/dist/cjs/chunk-OZKAPLCE.cjs +43 -0
- package/dist/cjs/chunk-OZKAPLCE.cjs.map +1 -0
- package/dist/cjs/chunk-P42QPS2N.cjs +43 -0
- package/dist/cjs/chunk-P42QPS2N.cjs.map +1 -0
- package/dist/cjs/chunk-PHTT7NVZ.cjs +37 -0
- package/dist/cjs/chunk-PHTT7NVZ.cjs.map +1 -0
- package/dist/cjs/chunk-Q673YXOW.cjs +37 -0
- package/dist/cjs/chunk-Q673YXOW.cjs.map +1 -0
- package/dist/cjs/{chunk-YTAWBEPQ.cjs → chunk-QV2CSL6T.cjs} +26 -11
- package/dist/cjs/chunk-QV2CSL6T.cjs.map +1 -0
- package/dist/cjs/chunk-QW4T5RFB.cjs +374 -0
- package/dist/cjs/chunk-QW4T5RFB.cjs.map +1 -0
- package/dist/cjs/chunk-RA62RT7K.cjs +43 -0
- package/dist/cjs/chunk-RA62RT7K.cjs.map +1 -0
- package/dist/cjs/chunk-RXMGXWLH.cjs +352 -0
- package/dist/cjs/chunk-RXMGXWLH.cjs.map +1 -0
- package/dist/cjs/chunk-SEJO6F5X.cjs +43 -0
- package/dist/cjs/chunk-SEJO6F5X.cjs.map +1 -0
- package/dist/cjs/chunk-SMKJY53T.cjs +367 -0
- package/dist/cjs/chunk-SMKJY53T.cjs.map +1 -0
- package/dist/cjs/chunk-SUWC3YAJ.cjs +359 -0
- package/dist/cjs/chunk-SUWC3YAJ.cjs.map +1 -0
- package/dist/cjs/{chunk-3M5DZAJA.cjs → chunk-SZU5VCQL.cjs} +7 -8
- package/dist/cjs/chunk-SZU5VCQL.cjs.map +1 -0
- package/dist/cjs/chunk-T2CE7W67.cjs +43 -0
- package/dist/cjs/chunk-T2CE7W67.cjs.map +1 -0
- package/dist/cjs/chunk-TBQF2VIX.cjs +43 -0
- package/dist/cjs/chunk-TBQF2VIX.cjs.map +1 -0
- package/dist/cjs/chunk-TK2MNTOI.cjs +43 -0
- package/dist/cjs/chunk-TK2MNTOI.cjs.map +1 -0
- package/dist/cjs/chunk-TOVEWQW2.cjs +43 -0
- package/dist/cjs/chunk-TOVEWQW2.cjs.map +1 -0
- package/dist/cjs/{chunk-EHULB7WG.cjs → chunk-TS46OIE7.cjs} +18 -15
- package/dist/cjs/chunk-TS46OIE7.cjs.map +1 -0
- package/dist/cjs/chunk-UDLSTQ4I.cjs +21 -0
- package/dist/cjs/chunk-UDLSTQ4I.cjs.map +1 -0
- package/dist/cjs/chunk-UFVWBUJM.cjs +365 -0
- package/dist/cjs/chunk-UFVWBUJM.cjs.map +1 -0
- package/dist/cjs/chunk-USDDAUYF.cjs +364 -0
- package/dist/cjs/chunk-USDDAUYF.cjs.map +1 -0
- package/dist/cjs/chunk-UUWWBHFR.cjs +37 -0
- package/dist/cjs/chunk-UUWWBHFR.cjs.map +1 -0
- package/dist/cjs/chunk-UVN2DE6N.cjs +368 -0
- package/dist/cjs/chunk-UVN2DE6N.cjs.map +1 -0
- package/dist/cjs/chunk-VKZGZZY4.cjs +42 -0
- package/dist/cjs/chunk-VKZGZZY4.cjs.map +1 -0
- package/dist/cjs/chunk-VVLC6T66.cjs +37 -0
- package/dist/cjs/chunk-VVLC6T66.cjs.map +1 -0
- package/dist/cjs/chunk-VZS6VPLE.cjs +26 -0
- package/dist/cjs/chunk-VZS6VPLE.cjs.map +1 -0
- package/dist/cjs/chunk-X276C2SQ.cjs +37 -0
- package/dist/cjs/chunk-X276C2SQ.cjs.map +1 -0
- package/dist/cjs/chunk-X3XEJQRF.cjs +37 -0
- package/dist/cjs/chunk-X3XEJQRF.cjs.map +1 -0
- package/dist/cjs/chunk-X5ARZJ77.cjs +353 -0
- package/dist/cjs/chunk-X5ARZJ77.cjs.map +1 -0
- package/dist/cjs/chunk-XIR7UR77.cjs +37 -0
- package/dist/cjs/chunk-XIR7UR77.cjs.map +1 -0
- package/dist/cjs/chunk-XIXM5VST.cjs +37 -0
- package/dist/cjs/chunk-XIXM5VST.cjs.map +1 -0
- package/dist/cjs/chunk-XIYB6QQC.cjs +37 -0
- package/dist/cjs/chunk-XIYB6QQC.cjs.map +1 -0
- package/dist/cjs/chunk-XM22DX5O.cjs +43 -0
- package/dist/cjs/chunk-XM22DX5O.cjs.map +1 -0
- package/dist/cjs/chunk-XVYFBQRE.cjs +37 -0
- package/dist/cjs/chunk-XVYFBQRE.cjs.map +1 -0
- package/dist/cjs/chunk-YORAOGFM.cjs +37 -0
- package/dist/cjs/chunk-YORAOGFM.cjs.map +1 -0
- package/dist/cjs/chunk-YUCTXIN5.cjs +37 -0
- package/dist/cjs/chunk-YUCTXIN5.cjs.map +1 -0
- package/dist/cjs/chunk-YUEKJCO7.cjs +18 -0
- package/dist/cjs/chunk-YUEKJCO7.cjs.map +1 -0
- package/dist/cjs/chunk-YVE4DLAT.cjs +43 -0
- package/dist/cjs/chunk-YVE4DLAT.cjs.map +1 -0
- package/dist/cjs/chunk-ZBD7JCDL.cjs +381 -0
- package/dist/cjs/chunk-ZBD7JCDL.cjs.map +1 -0
- package/dist/cjs/chunk-ZFSXQFEK.cjs +164 -0
- package/dist/cjs/chunk-ZFSXQFEK.cjs.map +1 -0
- package/dist/cjs/chunk-ZNMRAQT2.cjs +164 -0
- package/dist/cjs/chunk-ZNMRAQT2.cjs.map +1 -0
- package/dist/cjs/chunk-ZZ3SXOOC.cjs +37 -0
- package/dist/cjs/chunk-ZZ3SXOOC.cjs.map +1 -0
- package/dist/cjs/controllers/api/agent.api.controller.cjs +7 -0
- package/dist/cjs/controllers/api/agent.api.controller.cjs.map +1 -0
- package/dist/cjs/controllers/api/intent.api.controller.cjs +7 -0
- package/dist/cjs/controllers/api/intent.api.controller.cjs.map +1 -0
- package/dist/cjs/controllers/index.cjs +10 -6
- package/dist/cjs/controllers/index.cjs.map +1 -1
- package/dist/cjs/index.cjs +23 -19
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/modules/a2a/a2a.connector.cjs +8 -0
- package/dist/cjs/modules/a2a/a2a.connector.cjs.map +1 -0
- package/dist/cjs/modules/a2a/a2a.module.cjs +5 -5
- package/dist/cjs/modules/index.cjs +10 -10
- package/dist/cjs/modules/index.cjs.map +1 -1
- package/dist/cjs/modules/mcp/mcp.connector.cjs +8 -0
- package/dist/cjs/modules/mcp/mcp.connector.cjs.map +1 -0
- package/dist/cjs/modules/mcp/mcp.module.cjs +4 -4
- package/dist/cjs/modules/models/base.model.cjs +2 -2
- package/dist/cjs/routes/a2a.routes.cjs +6 -6
- package/dist/cjs/routes/api/agent.routes.cjs +8 -0
- package/dist/cjs/routes/api/agent.routes.cjs.map +1 -0
- package/dist/cjs/routes/api/intent.routes.cjs +9 -0
- package/dist/cjs/routes/api/intent.routes.cjs.map +1 -0
- package/dist/cjs/routes/api.routes.cjs +6 -2
- package/dist/cjs/routes/api.routes.cjs.map +1 -1
- package/dist/cjs/routes/index.cjs +24 -17
- package/dist/cjs/routes/index.cjs.map +1 -1
- package/dist/cjs/routes/query.routes.cjs +7 -7
- package/dist/cjs/services/index.cjs +6 -6
- package/dist/cjs/services/query-stream.service.cjs +5 -5
- package/dist/cjs/services/query.service.cjs +5 -5
- package/dist/cjs/types/connector.cjs +7 -0
- package/dist/cjs/types/connector.cjs.map +1 -0
- package/dist/cjs/types/memory.cjs +2 -2
- package/dist/esm/chunk-275JHD5P.js +17 -0
- package/dist/esm/chunk-275JHD5P.js.map +1 -0
- package/dist/esm/{chunk-WP276EXC.js → chunk-5C53F6HQ.js} +2 -2
- package/dist/esm/chunk-7CULQDJF.js +11 -0
- package/dist/esm/chunk-7CULQDJF.js.map +1 -0
- package/dist/esm/chunk-DFXHJUGV.js +42 -0
- package/dist/esm/chunk-DFXHJUGV.js.map +1 -0
- package/dist/esm/{chunk-CDFLKADH.js → chunk-DHDFPHYD.js} +1 -1
- package/dist/esm/chunk-DHDFPHYD.js.map +1 -0
- package/dist/esm/{chunk-M3HZ2GQP.js → chunk-F3I4URTX.js} +9 -1
- package/dist/esm/chunk-F3I4URTX.js.map +1 -0
- package/dist/esm/chunk-IKYOHZYW.js +25 -0
- package/dist/esm/chunk-IKYOHZYW.js.map +1 -0
- package/dist/esm/{chunk-R44LLFOD.js → chunk-NTTSP6VU.js} +3 -3
- package/dist/esm/{chunk-MJEPJ62P.js → chunk-NWL3BMUH.js} +40 -27
- package/dist/esm/chunk-NWL3BMUH.js.map +1 -0
- package/dist/esm/{chunk-JUJSFXBX.js → chunk-P4ADSRP5.js} +118 -74
- package/dist/esm/chunk-P4ADSRP5.js.map +1 -0
- package/dist/esm/chunk-PG3C4LQO.js +1 -0
- package/dist/esm/chunk-TUEEIIR3.js +21 -0
- package/dist/esm/chunk-TUEEIIR3.js.map +1 -0
- package/dist/esm/{chunk-POQFOL6Y.js → chunk-UQK33CJX.js} +1 -1
- package/dist/esm/{chunk-POQFOL6Y.js.map → chunk-UQK33CJX.js.map} +1 -1
- package/dist/esm/chunk-WMZ6PYTE.js +24 -0
- package/dist/esm/chunk-WMZ6PYTE.js.map +1 -0
- package/dist/esm/chunk-XSFA3J2Y.js +40 -0
- package/dist/esm/chunk-XSFA3J2Y.js.map +1 -0
- package/dist/esm/{chunk-RNA32QWV.js → chunk-YDMTU6UH.js} +43 -29
- package/dist/esm/chunk-YDMTU6UH.js.map +1 -0
- package/dist/esm/{chunk-2EVONQZ4.js → chunk-ZBA55AN4.js} +10 -10
- package/dist/esm/chunk-ZBA55AN4.js.map +1 -0
- package/dist/esm/controllers/a2a.controller.d.ts +1 -5
- package/dist/esm/controllers/api/agent.api.controller.d.ts +28 -0
- package/dist/esm/controllers/api/agent.api.controller.js +7 -0
- package/dist/esm/controllers/api/intent.api.controller.d.ts +14 -0
- package/dist/esm/controllers/api/intent.api.controller.js +7 -0
- package/dist/esm/controllers/api/model.api.controller.d.ts +1 -4
- package/dist/esm/controllers/index.d.ts +5 -5
- package/dist/esm/controllers/index.js +4 -0
- package/dist/esm/controllers/query.controller.d.ts +1 -5
- package/dist/esm/index.d.ts +1 -5
- package/dist/esm/index.js +13 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/a2a/a2a.connector.d.ts +15 -0
- package/dist/esm/modules/a2a/a2a.connector.js +8 -0
- package/dist/esm/modules/a2a/a2a.module.d.ts +14 -10
- package/dist/esm/modules/a2a/a2a.module.js +4 -4
- package/dist/esm/modules/index.d.ts +1 -5
- package/dist/esm/modules/index.js +14 -14
- package/dist/esm/modules/mcp/mcp.connector.d.ts +20 -0
- package/dist/esm/modules/mcp/mcp.connector.js +8 -0
- package/dist/esm/modules/mcp/mcp.connector.js.map +1 -0
- package/dist/esm/modules/mcp/mcp.module.d.ts +6 -27
- package/dist/esm/modules/mcp/mcp.module.js +3 -3
- package/dist/esm/modules/memory/base.memory.d.ts +2 -2
- package/dist/esm/modules/models/base.model.d.ts +2 -5
- package/dist/esm/modules/models/base.model.js +1 -1
- package/dist/esm/modules/models/model.module.d.ts +1 -4
- package/dist/esm/routes/a2a.routes.d.ts +1 -5
- package/dist/esm/routes/a2a.routes.js +4 -4
- package/dist/esm/routes/api/agent.routes.d.ts +24 -0
- package/dist/esm/routes/api/agent.routes.js +8 -0
- package/dist/esm/routes/api/agent.routes.js.map +1 -0
- package/dist/esm/routes/api/intent.routes.d.ts +8 -0
- package/dist/esm/routes/api/intent.routes.js +9 -0
- package/dist/esm/routes/api/intent.routes.js.map +1 -0
- package/dist/esm/routes/api/model.routes.d.ts +1 -4
- package/dist/esm/routes/api.routes.d.ts +1 -5
- package/dist/esm/routes/api.routes.js +5 -1
- package/dist/esm/routes/index.d.ts +2 -5
- package/dist/esm/routes/index.js +15 -8
- package/dist/esm/routes/query.routes.d.ts +1 -5
- package/dist/esm/routes/query.routes.js +5 -5
- package/dist/esm/services/a2a.service.d.ts +1 -5
- package/dist/esm/services/index.d.ts +1 -5
- package/dist/esm/services/index.js +4 -4
- package/dist/esm/services/query-stream.service.d.ts +3 -6
- package/dist/esm/services/query-stream.service.js +3 -3
- package/dist/esm/services/query.service.d.ts +1 -5
- package/dist/esm/services/query.service.js +3 -3
- package/dist/esm/types/{tool.d.ts → connector.d.ts} +14 -35
- package/dist/esm/types/connector.js +7 -0
- package/dist/esm/types/connector.js.map +1 -0
- package/dist/esm/types/memory.d.ts +6 -2
- package/dist/esm/types/memory.js +1 -1
- package/dist/esm/types/stream.d.ts +9 -6
- package/package.json +1 -1
- package/dist/cjs/chunk-2L5KFFHV.cjs +0 -37
- package/dist/cjs/chunk-3M5DZAJA.cjs.map +0 -1
- package/dist/cjs/chunk-3ZFV2K7O.cjs.map +0 -1
- package/dist/cjs/chunk-6CDGUUXE.cjs.map +0 -1
- package/dist/cjs/chunk-6KXMM7GP.cjs.map +0 -1
- package/dist/cjs/chunk-7K2R2UKB.cjs.map +0 -1
- package/dist/cjs/chunk-7PZP7YSA.cjs.map +0 -1
- package/dist/cjs/chunk-7UGA4QRJ.cjs.map +0 -1
- package/dist/cjs/chunk-A2ANDQNY.cjs +0 -337
- package/dist/cjs/chunk-A2ANDQNY.cjs.map +0 -1
- package/dist/cjs/chunk-BBFYVWE2.cjs.map +0 -1
- package/dist/cjs/chunk-DEKRDA6Q.cjs.map +0 -1
- package/dist/cjs/chunk-E433ONEN.cjs +0 -26
- package/dist/cjs/chunk-E433ONEN.cjs.map +0 -1
- package/dist/cjs/chunk-EHULB7WG.cjs.map +0 -1
- package/dist/cjs/chunk-F7I4G6JG.cjs +0 -26
- package/dist/cjs/chunk-F7I4G6JG.cjs.map +0 -1
- package/dist/cjs/chunk-FRWC3FQ4.cjs.map +0 -1
- package/dist/cjs/chunk-HQ4X5TPN.cjs.map +0 -1
- package/dist/cjs/chunk-KHD7UAFW.cjs +0 -326
- package/dist/cjs/chunk-KHD7UAFW.cjs.map +0 -1
- package/dist/cjs/chunk-LMR6B76V.cjs +0 -37
- package/dist/cjs/chunk-LMR6B76V.cjs.map +0 -1
- package/dist/cjs/chunk-LPXYZH22.cjs +0 -11
- package/dist/cjs/chunk-LPXYZH22.cjs.map +0 -1
- package/dist/cjs/chunk-MCDRCKR6.cjs +0 -333
- package/dist/cjs/chunk-MCDRCKR6.cjs.map +0 -1
- package/dist/cjs/chunk-O4QQH7VT.cjs +0 -43
- package/dist/cjs/chunk-O4QQH7VT.cjs.map +0 -1
- package/dist/cjs/chunk-OKRBMMK2.cjs +0 -136
- package/dist/cjs/chunk-OKRBMMK2.cjs.map +0 -1
- package/dist/cjs/chunk-OOSQKNH2.cjs +0 -43
- package/dist/cjs/chunk-OOSQKNH2.cjs.map +0 -1
- package/dist/cjs/chunk-PAWGHHSY.cjs +0 -249
- package/dist/cjs/chunk-PAWGHHSY.cjs.map +0 -1
- package/dist/cjs/chunk-QTUDQSRL.cjs.map +0 -1
- package/dist/cjs/chunk-SSSDO7PA.cjs +0 -1
- package/dist/cjs/chunk-SSSDO7PA.cjs.map +0 -1
- package/dist/cjs/chunk-T7XSNWFJ.cjs +0 -43
- package/dist/cjs/chunk-T7XSNWFJ.cjs.map +0 -1
- package/dist/cjs/chunk-UDK47YLB.cjs.map +0 -1
- package/dist/cjs/chunk-UPQVXJK6.cjs +0 -37
- package/dist/cjs/chunk-UPQVXJK6.cjs.map +0 -1
- package/dist/cjs/chunk-UVBNFD2K.cjs +0 -37
- package/dist/cjs/chunk-UVBNFD2K.cjs.map +0 -1
- package/dist/cjs/chunk-VFM2JQLG.cjs +0 -43
- package/dist/cjs/chunk-VFM2JQLG.cjs.map +0 -1
- package/dist/cjs/chunk-W5VM75PL.cjs +0 -43
- package/dist/cjs/chunk-W5VM75PL.cjs.map +0 -1
- package/dist/cjs/chunk-WUOME625.cjs +0 -37
- package/dist/cjs/chunk-WUOME625.cjs.map +0 -1
- package/dist/cjs/chunk-WYH3T7WL.cjs +0 -337
- package/dist/cjs/chunk-WYH3T7WL.cjs.map +0 -1
- package/dist/cjs/chunk-XEE7ORJX.cjs +0 -43
- package/dist/cjs/chunk-XEE7ORJX.cjs.map +0 -1
- package/dist/cjs/chunk-YTAWBEPQ.cjs.map +0 -1
- package/dist/cjs/chunk-ZPYMLCQZ.cjs +0 -247
- package/dist/cjs/chunk-ZPYMLCQZ.cjs.map +0 -1
- package/dist/cjs/modules/a2a/a2a.tool.cjs +0 -8
- package/dist/cjs/modules/a2a/a2a.tool.cjs.map +0 -1
- package/dist/cjs/modules/mcp/mcp.tool.cjs +0 -8
- package/dist/cjs/modules/mcp/mcp.tool.cjs.map +0 -1
- package/dist/cjs/types/tool.cjs +0 -7
- package/dist/cjs/types/tool.cjs.map +0 -1
- package/dist/esm/chunk-2EVONQZ4.js.map +0 -1
- package/dist/esm/chunk-3LLHEUY2.js +0 -26
- package/dist/esm/chunk-3LLHEUY2.js.map +0 -1
- package/dist/esm/chunk-CDFLKADH.js.map +0 -1
- package/dist/esm/chunk-DGH3GB5I.js +0 -26
- package/dist/esm/chunk-DGH3GB5I.js.map +0 -1
- package/dist/esm/chunk-FI2UQLVC.js +0 -11
- package/dist/esm/chunk-FI2UQLVC.js.map +0 -1
- package/dist/esm/chunk-JUJSFXBX.js.map +0 -1
- package/dist/esm/chunk-M3HZ2GQP.js.map +0 -1
- package/dist/esm/chunk-MJEPJ62P.js.map +0 -1
- package/dist/esm/chunk-RNA32QWV.js.map +0 -1
- package/dist/esm/chunk-XYCWK2ZM.js +0 -1
- package/dist/esm/modules/a2a/a2a.tool.d.ts +0 -17
- package/dist/esm/modules/a2a/a2a.tool.js +0 -8
- package/dist/esm/modules/mcp/mcp.tool.d.ts +0 -17
- package/dist/esm/modules/mcp/mcp.tool.js +0 -8
- package/dist/esm/types/tool.js +0 -7
- /package/dist/esm/{chunk-WP276EXC.js.map → chunk-5C53F6HQ.js.map} +0 -0
- /package/dist/esm/{chunk-R44LLFOD.js.map → chunk-NTTSP6VU.js.map} +0 -0
- /package/dist/esm/{chunk-XYCWK2ZM.js.map → chunk-PG3C4LQO.js.map} +0 -0
- /package/dist/esm/{modules/a2a/a2a.tool.js.map → controllers/api/agent.api.controller.js.map} +0 -0
- /package/dist/esm/{modules/mcp/mcp.tool.js.map → controllers/api/intent.api.controller.js.map} +0 -0
- /package/dist/esm/{types/tool.js.map → modules/a2a/a2a.connector.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/routes/api/agent.routes.ts"],"sourcesContent":["import { Router } from \"express\";\nimport { AgentApiController } from \"@/controllers/api/agent.api.controller\";\nimport type { AINAgent } from \"@/index.js\";\n\nexport const createAgentApiRouter = (agent: AINAgent): Router => {\n\tconst router = Router();\n\tconst agentApiController = new AgentApiController(agent);\n\n\t// APIs (prefix: /api/agent)\n\trouter.get(\"/a2a\", agentApiController.handleGetA2AConnectors);\n\n\treturn router;\n};\n"],"mappings":";;;;;AAAA,SAAS,cAAc;AAIhB,IAAM,uBAAuB,CAAC,UAA4B;AAChE,QAAM,SAAS,OAAO;AACtB,QAAM,qBAAqB,IAAI,mBAAmB,KAAK;AAGvD,SAAO,IAAI,QAAQ,mBAAmB,sBAAsB;AAE5D,SAAO;AACR;","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DM6UZSRU.js";
|
|
4
4
|
import {
|
|
5
5
|
QueryStreamService
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-P4ADSRP5.js";
|
|
7
7
|
import {
|
|
8
8
|
A2AController
|
|
9
9
|
} from "./chunk-HAE333YO.js";
|
|
@@ -34,4 +34,4 @@ var createA2ARouter = (agent) => {
|
|
|
34
34
|
export {
|
|
35
35
|
createA2ARouter
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-5C53F6HQ.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/types/connector.ts
|
|
2
|
+
var CONNECTOR_PROTOCOL_TYPE = /* @__PURE__ */ ((CONNECTOR_PROTOCOL_TYPE2) => {
|
|
3
|
+
CONNECTOR_PROTOCOL_TYPE2["A2A"] = "A2A";
|
|
4
|
+
CONNECTOR_PROTOCOL_TYPE2["MCP"] = "MCP";
|
|
5
|
+
return CONNECTOR_PROTOCOL_TYPE2;
|
|
6
|
+
})(CONNECTOR_PROTOCOL_TYPE || {});
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
CONNECTOR_PROTOCOL_TYPE
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=chunk-7CULQDJF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/types/connector.ts"],"sourcesContent":["/**\n * Supported tool protocol types in the AIN-ADK framework.\n */\nexport enum CONNECTOR_PROTOCOL_TYPE {\n\t/** Agent-to-Agent protocol */\n\tA2A = \"A2A\",\n\t/** Model Context Protocol */\n\tMCP = \"MCP\",\n}\n\nexport type ConnectorTool = {\n\ttoolName: string;\n\tconnectorName: string;\n\tprotocol: CONNECTOR_PROTOCOL_TYPE;\n\tdescription?: string;\n\tinputSchema?: any;\n};\n\n/**\n * Represents a tool invocation request.\n */\nexport type ToolCall = {\n\t/** Name of the tool to invoke */\n\tname: string;\n\t/** Arguments to pass to the tool */\n\targuments?: Record<string, unknown>;\n};\n\n/**\n * Response from a model fetch operation.\n *\n * Contains either content (text response) or tool calls (function invocations),\n * or both in the case of mixed responses.\n */\nexport type FetchResponse = {\n\t/** Text content response from the model */\n\tcontent?: string;\n\t/** Array of tool calls requested by the model */\n\ttoolCalls?: ToolCall[];\n};\n\n/**\n * Base interface for all tools in the AIN-ADK framework.\n *\n * Provides a protocol-agnostic interface for tool management,\n * allowing tools from different sources (MCP, A2A) to be used\n * interchangeably throughout the system.\n *\n * @example\n * ```typescript\n * const tool: IAgentTool = {\n * name: \"search-tool\",\n * protocol: TOOL_PROTOCOL_TYPE.MCP,\n * enabled: true,\n * enable: () => { this.enabled = true; },\n * disable: () => { this.enabled = false; }\n * };\n * ```\n */\nexport interface IAgentConnector {\n\t/** Unique identifier for the connector */\n\tname: string;\n\t/** Protocol type (MCP or A2A) */\n\tprotocol: CONNECTOR_PROTOCOL_TYPE;\n\t/** Whether the tool is currently enabled for use */\n\tenabled: boolean;\n\t/** Enables the tool for use */\n\tenable: () => void;\n\t/** Disables the tool from being used */\n\tdisable: () => void;\n}\n"],"mappings":";AAGO,IAAK,0BAAL,kBAAKA,6BAAL;AAEN,EAAAA,yBAAA,SAAM;AAEN,EAAAA,yBAAA,SAAM;AAJK,SAAAA;AAAA,GAAA;","names":["CONNECTOR_PROTOCOL_TYPE"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/controllers/api/intent.api.controller.ts
|
|
2
|
+
import { StatusCodes } from "http-status-codes";
|
|
3
|
+
var IntentApiController = class {
|
|
4
|
+
memoryModule;
|
|
5
|
+
constructor(memoryModule) {
|
|
6
|
+
this.memoryModule = memoryModule;
|
|
7
|
+
}
|
|
8
|
+
handleGetAllIntents = async (_req, res, next) => {
|
|
9
|
+
try {
|
|
10
|
+
const intentMemory = this.memoryModule.getIntentMemory();
|
|
11
|
+
const intents = await intentMemory?.listIntents();
|
|
12
|
+
res.json(intents);
|
|
13
|
+
} catch (error) {
|
|
14
|
+
next(error);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
handleSaveIntent = async (req, res, next) => {
|
|
18
|
+
try {
|
|
19
|
+
const intent = req.body;
|
|
20
|
+
const intentMemory = this.memoryModule.getIntentMemory();
|
|
21
|
+
await intentMemory?.saveIntent(intent);
|
|
22
|
+
res.status(StatusCodes.OK).send();
|
|
23
|
+
} catch (error) {
|
|
24
|
+
next(error);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
handleDeleteIntent = async (req, res, next) => {
|
|
28
|
+
try {
|
|
29
|
+
const { id } = req.params;
|
|
30
|
+
const intentMemory = this.memoryModule.getIntentMemory();
|
|
31
|
+
await intentMemory?.deleteIntent(id);
|
|
32
|
+
res.status(StatusCodes.OK).send();
|
|
33
|
+
} catch (error) {
|
|
34
|
+
next(error);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
IntentApiController
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=chunk-DFXHJUGV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/api/intent.api.controller.ts"],"sourcesContent":["import type { NextFunction, Request, Response } from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type { MemoryModule } from \"@/modules/index.js\";\nimport type { Intent } from \"@/types/memory\";\n\nexport class IntentApiController {\n\tprivate memoryModule: MemoryModule;\n\n\tconstructor(memoryModule: MemoryModule) {\n\t\tthis.memoryModule = memoryModule;\n\t}\n\n\tpublic handleGetAllIntents = async (\n\t\t_req: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst intentMemory = this.memoryModule.getIntentMemory();\n\t\t\tconst intents = await intentMemory?.listIntents();\n\t\t\tres.json(intents);\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleSaveIntent = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst intent = req.body as Intent;\n\t\t\tconst intentMemory = this.memoryModule.getIntentMemory();\n\t\t\tawait intentMemory?.saveIntent(intent);\n\t\t\tres.status(StatusCodes.OK).send();\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleDeleteIntent = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst { id } = req.params as { id: string };\n\t\t\tconst intentMemory = this.memoryModule.getIntentMemory();\n\t\t\tawait intentMemory?.deleteIntent(id);\n\t\t\tres.status(StatusCodes.OK).send();\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n}\n"],"mappings":";AACA,SAAS,mBAAmB;AAIrB,IAAM,sBAAN,MAA0B;AAAA,EACxB;AAAA,EAER,YAAY,cAA4B;AACvC,SAAK,eAAe;AAAA,EACrB;AAAA,EAEO,sBAAsB,OAC5B,MACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,YAAM,UAAU,MAAM,cAAc,YAAY;AAChD,UAAI,KAAK,OAAO;AAAA,IACjB,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,mBAAmB,OACzB,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,SAAS,IAAI;AACnB,YAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,YAAM,cAAc,WAAW,MAAM;AACrC,UAAI,OAAO,YAAY,EAAE,EAAE,KAAK;AAAA,IACjC,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,qBAAqB,OAC3B,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,EAAE,GAAG,IAAI,IAAI;AACnB,YAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,YAAM,cAAc,aAAa,EAAE;AACnC,UAAI,OAAO,YAAY,EAAE,EAAE,KAAK;AAAA,IACjC,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AACD;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/modules/models/base.model.ts"],"sourcesContent":["import type { ConnectorTool, FetchResponse } from \"@/types/connector.js\";\nimport type { ThreadObject } from \"@/types/memory.js\";\nimport type { LLMStream } from \"@/types/stream.js\";\n\n/**\n * Abstract base class for AI model implementations.\n *\n * Provides a common interface for different AI model providers (OpenAI, Gemini, etc.)\n * to integrate with the AIN-ADK framework. Each model implementation must handle\n * message formatting, tool conversion, and API communication.\n *\n * @typeParam MessageType - The message format used by the specific model API\n * @typeParam FunctionType - The function/tool format used by the specific model API\n */\nexport abstract class BaseModel<MessageType, FunctionType> {\n\t/**\n\t * Generates an array of messages from thread and current query.\n\t *\n\t * @param query - Current user query\n\t * @param thread - Previous conversation history\n\t * @param systemPrompt - Optional system prompt to set context\n\t * @returns Array of messages formatted for the specific model API\n\t */\n\tabstract generateMessages(params: {\n\t\tquery: string;\n\t\tthread?: ThreadObject;\n\t\tsystemPrompt?: string;\n\t}): MessageType[];\n\n\t/**\n\t * Appends a new message to the existing message array.\n\t *\n\t * @param messages - Existing message array to expand\n\t * @param message - New message content to append\n\t */\n\tabstract appendMessages(messages: MessageType[], message: string): void;\n\n\t/**\n\t * Converts protocol-agnostic tools to model-specific function format.\n\t *\n\t * @param tools - Array of agent tools from MCP or A2A sources\n\t * @returns Array of functions in the format required by the model API\n\t */\n\tabstract convertToolsToFunctions(tools: ConnectorTool[]): FunctionType[];\n\n\t/**\n\t * Fetches a response from the model API without tool support.\n\t *\n\t * @param messages - Array of messages to send to the model\n\t * @returns Promise resolving to the model's response\n\t */\n\tabstract fetch(messages: MessageType[]): Promise<FetchResponse>;\n\n\t/**\n\t * Fetches a response from the model API with tool/function support.\n\t *\n\t * @param messages - Array of messages to send to the model\n\t * @param functions - Array of available functions/tools the model can call\n\t * @returns Promise resolving to the model's response, possibly including tool calls\n\t */\n\tabstract fetchWithContextMessage(\n\t\tmessages: MessageType[],\n\t\tfunctions: FunctionType[],\n\t): Promise<FetchResponse>;\n\n\t/**\n\t * Fetches a streaming response from the model API with tool/function support.\n\t *\n\t * Returns a standardized LLMStream that can be used consistently across\n\t * different AI model providers. Each implementation should convert their\n\t * provider-specific stream format to the common StreamChunk interface.\n\t *\n\t * @param messages - Array of messages to send to the model\n\t * @param functions - Array of available functions/tools the model can call\n\t * @returns Promise resolving to an LLMStream for consistent iteration\n\t */\n\tabstract fetchStreamWithContextMessage(\n\t\tmessages: MessageType[],\n\t\tfunctions: FunctionType[],\n\t): Promise<LLMStream>;\n}\n"],"mappings":";AAcO,IAAe,YAAf,MAAoD;AAkE3D;","names":[]}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAgentApiRouter
|
|
3
|
+
} from "./chunk-275JHD5P.js";
|
|
4
|
+
import {
|
|
5
|
+
createIntentApiRouter
|
|
6
|
+
} from "./chunk-XSFA3J2Y.js";
|
|
1
7
|
import {
|
|
2
8
|
createModelApiRouter
|
|
3
9
|
} from "./chunk-AMRKK46V.js";
|
|
@@ -10,8 +16,10 @@ import { Router } from "express";
|
|
|
10
16
|
var createApiRouter = (agent) => {
|
|
11
17
|
const router = Router();
|
|
12
18
|
router.use("/model", createModelApiRouter(agent.modelModule));
|
|
19
|
+
router.use("/agent", createAgentApiRouter(agent));
|
|
13
20
|
if (agent.memoryModule) {
|
|
14
21
|
router.use("/threads", createThreadApiRouter(agent.memoryModule));
|
|
22
|
+
router.use("/intent", createIntentApiRouter(agent.memoryModule));
|
|
15
23
|
}
|
|
16
24
|
return router;
|
|
17
25
|
};
|
|
@@ -19,4 +27,4 @@ var createApiRouter = (agent) => {
|
|
|
19
27
|
export {
|
|
20
28
|
createApiRouter
|
|
21
29
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-F3I4URTX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/routes/api.routes.ts"],"sourcesContent":["import { Router } from \"express\";\nimport type { AINAgent } from \"@/index.js\";\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\";\n\nexport const createApiRouter = (agent: AINAgent): Router => {\n\tconst router = Router();\n\n\trouter.use(\"/model\", createModelApiRouter(agent.modelModule));\n\trouter.use(\"/agent\", createAgentApiRouter(agent));\n\tif (agent.memoryModule) {\n\t\trouter.use(\"/threads\", createThreadApiRouter(agent.memoryModule));\n\t\trouter.use(\"/intent\", createIntentApiRouter(agent.memoryModule));\n\t}\n\n\treturn router;\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,cAAc;AAOhB,IAAM,kBAAkB,CAAC,UAA4B;AAC3D,QAAM,SAAS,OAAO;AAEtB,SAAO,IAAI,UAAU,qBAAqB,MAAM,WAAW,CAAC;AAC5D,SAAO,IAAI,UAAU,qBAAqB,KAAK,CAAC;AAChD,MAAI,MAAM,cAAc;AACvB,WAAO,IAAI,YAAY,sBAAsB,MAAM,YAAY,CAAC;AAChE,WAAO,IAAI,WAAW,sBAAsB,MAAM,YAAY,CAAC;AAAA,EAChE;AAEA,SAAO;AACR;","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// src/modules/mcp/mcp.connector.ts
|
|
2
|
+
var MCPConnector = class {
|
|
3
|
+
name;
|
|
4
|
+
protocol = "MCP" /* MCP */;
|
|
5
|
+
enabled;
|
|
6
|
+
config;
|
|
7
|
+
client = null;
|
|
8
|
+
tools = [];
|
|
9
|
+
constructor(name, config) {
|
|
10
|
+
this.name = name;
|
|
11
|
+
this.enabled = true;
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
enable() {
|
|
15
|
+
this.enabled = true;
|
|
16
|
+
}
|
|
17
|
+
disable() {
|
|
18
|
+
this.enabled = false;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
MCPConnector
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-IKYOHZYW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/modules/mcp/mcp.connector.ts"],"sourcesContent":["import type { Client as MCPClient } from \"@modelcontextprotocol/sdk/client\";\nimport {\n\tCONNECTOR_PROTOCOL_TYPE,\n\ttype ConnectorTool,\n\ttype IAgentConnector,\n} from \"@/types/connector.js\";\nimport type { MCPConfig } from \"@/types/mcp\";\n\nexport class MCPConnector implements IAgentConnector {\n\tpublic name: string;\n\tpublic protocol: CONNECTOR_PROTOCOL_TYPE = CONNECTOR_PROTOCOL_TYPE.MCP;\n\tpublic enabled: boolean;\n\tpublic config: MCPConfig;\n\tpublic client: MCPClient | null = null;\n\tpublic tools: Array<ConnectorTool> = [];\n\n\tconstructor(name: string, config: MCPConfig) {\n\t\tthis.name = name;\n\t\tthis.enabled = true;\n\t\tthis.config = config;\n\t}\n\n\tpublic enable(): void {\n\t\tthis.enabled = true;\n\t}\n\n\tpublic disable(): void {\n\t\tthis.enabled = false;\n\t}\n}\n"],"mappings":";AAQO,IAAM,eAAN,MAA8C;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAA2B;AAAA,EAC3B,QAA8B,CAAC;AAAA,EAEtC,YAAY,MAAc,QAAmB;AAC5C,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EACf;AAAA,EAEO,SAAe;AACrB,SAAK,UAAU;AAAA,EAChB;AAAA,EAEO,UAAgB;AACtB,SAAK,UAAU;AAAA,EAChB;AACD;","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
QueryService
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZBA55AN4.js";
|
|
4
4
|
import {
|
|
5
5
|
QueryController
|
|
6
6
|
} from "./chunk-4C2TLCWI.js";
|
|
7
7
|
import {
|
|
8
8
|
QueryStreamService
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-P4ADSRP5.js";
|
|
10
10
|
|
|
11
11
|
// src/routes/query.routes.ts
|
|
12
12
|
import { Router } from "express";
|
|
@@ -40,4 +40,4 @@ var createQueryRouter = (agent, allowStream = false) => {
|
|
|
40
40
|
export {
|
|
41
41
|
createQueryRouter
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-NTTSP6VU.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
A2AConnector
|
|
3
|
+
} from "./chunk-WMZ6PYTE.js";
|
|
4
4
|
import {
|
|
5
5
|
loggers
|
|
6
6
|
} from "./chunk-N7VYM2R5.js";
|
|
@@ -10,7 +10,7 @@ import { randomUUID } from "crypto";
|
|
|
10
10
|
import { A2AClient } from "@a2a-js/sdk/client";
|
|
11
11
|
var A2AModule = class {
|
|
12
12
|
/** Map of A2A server URLs to their corresponding tool instances */
|
|
13
|
-
|
|
13
|
+
a2aConnectors = /* @__PURE__ */ new Map();
|
|
14
14
|
/** Map of session IDs to their A2A session state */
|
|
15
15
|
a2aTasks = /* @__PURE__ */ new Map();
|
|
16
16
|
agentId = randomUUID();
|
|
@@ -18,10 +18,24 @@ var A2AModule = class {
|
|
|
18
18
|
/**
|
|
19
19
|
* Registers a new A2A peer server URL for connection.
|
|
20
20
|
*
|
|
21
|
-
* @param
|
|
21
|
+
* @param conns - Set of name, url pair
|
|
22
22
|
*/
|
|
23
|
-
async
|
|
24
|
-
|
|
23
|
+
async addA2AConnector(conns) {
|
|
24
|
+
for (const [name, url] of Object.entries(conns)) {
|
|
25
|
+
const conn = new 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
|
+
getOrCreateClient(connector) {
|
|
37
|
+
connector.client ??= new A2AClient(connector.url);
|
|
38
|
+
return connector.client;
|
|
25
39
|
}
|
|
26
40
|
/**
|
|
27
41
|
* Retrieves tools from all registered A2A peer servers.
|
|
@@ -33,22 +47,21 @@ var A2AModule = class {
|
|
|
33
47
|
*/
|
|
34
48
|
async getTools() {
|
|
35
49
|
const tools = [];
|
|
36
|
-
for (const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
} else {
|
|
50
|
+
for (const [name, conn] of this.a2aConnectors.entries()) {
|
|
51
|
+
if (!conn.enabled) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const client = this.getOrCreateClient(conn);
|
|
56
|
+
const card = await client.getAgentCard();
|
|
57
|
+
const tool = {
|
|
58
|
+
toolName: card.name.replaceAll(" ", "-"),
|
|
59
|
+
connectorName: name,
|
|
60
|
+
protocol: "A2A" /* A2A */,
|
|
61
|
+
description: card.description
|
|
62
|
+
};
|
|
51
63
|
tools.push(tool);
|
|
64
|
+
} catch (_error) {
|
|
52
65
|
}
|
|
53
66
|
}
|
|
54
67
|
return tools;
|
|
@@ -93,18 +106,19 @@ var A2AModule = class {
|
|
|
93
106
|
* text content from various event types in the response stream.
|
|
94
107
|
*
|
|
95
108
|
* @param tool - The A2ATool instance to use
|
|
96
|
-
* @param
|
|
109
|
+
* @param query - The message to send to the agent
|
|
97
110
|
* @param threadId - The session identifier for context tracking
|
|
98
111
|
* @returns Promise resolving to array of text responses from the agent
|
|
99
112
|
*/
|
|
100
113
|
async useTool(tool, query, threadId) {
|
|
101
114
|
const finalText = [];
|
|
102
|
-
const
|
|
115
|
+
const connector = this.a2aConnectors.get(tool.connectorName);
|
|
103
116
|
const messagePayload = this.getMessagePayload(query, threadId);
|
|
104
117
|
const params = {
|
|
105
118
|
message: messagePayload
|
|
106
119
|
};
|
|
107
120
|
try {
|
|
121
|
+
const client = this.getOrCreateClient(connector);
|
|
108
122
|
const stream = client.sendMessageStream(params);
|
|
109
123
|
for await (const event of stream) {
|
|
110
124
|
if (event.kind === "status-update") {
|
|
@@ -135,12 +149,11 @@ var A2AModule = class {
|
|
|
135
149
|
}
|
|
136
150
|
} catch (error) {
|
|
137
151
|
loggers.a2a.error("Error communicating with agent:", { error });
|
|
138
|
-
tool.
|
|
139
|
-
const toolResult = `[Bot Called A2A Tool ${tool.card.name}]
|
|
152
|
+
const toolResult = `[Bot Called A2A Tool ${tool.toolName}]
|
|
140
153
|
${typeof error === "string" ? error : JSON.stringify(error, null, 2)}`;
|
|
141
154
|
return toolResult;
|
|
142
155
|
}
|
|
143
|
-
return `[Bot Called A2A Tool ${tool.
|
|
156
|
+
return `[Bot Called A2A Tool ${tool.toolName}]
|
|
144
157
|
${finalText.join("\n")}`;
|
|
145
158
|
}
|
|
146
159
|
};
|
|
@@ -148,4 +161,4 @@ ${finalText.join("\n")}`;
|
|
|
148
161
|
export {
|
|
149
162
|
A2AModule
|
|
150
163
|
};
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
164
|
+
//# sourceMappingURL=chunk-NWL3BMUH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/modules/a2a/a2a.module.ts"],"sourcesContent":["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 { A2AClient } 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 { 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 getOrCreateClient(connector: A2AConnector): A2AClient {\n\t\tconnector.client ??= new A2AClient(connector.url);\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 = 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};\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 * @returns Promise resolving to array of text responses from the agent\n\t */\n\tpublic async useTool(\n\t\ttool: ConnectorTool,\n\t\tquery: string,\n\t\tthreadId: string,\n\t): Promise<string> {\n\t\tconst finalText: string[] = [];\n\t\tconst connector = this.a2aConnectors.get(tool.connectorName);\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 = 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\t\t\t\t\t// TODO: handle 'file', 'data' parts\n\t\t\t\t\tconst texts = typedEvent.status.message?.parts\n\t\t\t\t\t\t.filter((part) => part.kind === \"text\")\n\t\t\t\t\t\t.map((part: TextPart) => part.text)\n\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\t\tif (texts) {\n\t\t\t\t\t\tfinalText.push(texts);\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"],"mappings":"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","names":[]}
|
|
@@ -21,6 +21,23 @@ var QueryStreamService = class {
|
|
|
21
21
|
this.memoryModule = memoryModule;
|
|
22
22
|
this.prompts = prompts;
|
|
23
23
|
}
|
|
24
|
+
async addToThreadMessages(thread, params) {
|
|
25
|
+
try {
|
|
26
|
+
const threadMemory = this.memoryModule?.getThreadMemory();
|
|
27
|
+
const { userId, threadId } = thread;
|
|
28
|
+
const newMessage = {
|
|
29
|
+
messageId: randomUUID(),
|
|
30
|
+
role: params.role,
|
|
31
|
+
timestamp: Date.now(),
|
|
32
|
+
content: { type: "text", parts: [params.content] },
|
|
33
|
+
metadata: params.metadata
|
|
34
|
+
};
|
|
35
|
+
thread.messages.push(newMessage);
|
|
36
|
+
await threadMemory?.addMessagesToThread(userId, threadId, [newMessage]);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
loggers.intentStream.error("Error adding message to thread", error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
24
41
|
/**
|
|
25
42
|
* Detects the intent from context.
|
|
26
43
|
*
|
|
@@ -32,14 +49,14 @@ var QueryStreamService = class {
|
|
|
32
49
|
const modelInstance = this.modelModule.getModel();
|
|
33
50
|
const intentMemory = this.memoryModule?.getIntentMemory();
|
|
34
51
|
if (!intentMemory) {
|
|
35
|
-
return
|
|
52
|
+
return [{ subquery: query }];
|
|
36
53
|
}
|
|
37
54
|
const intents = await intentMemory.listIntents();
|
|
38
55
|
if (intents.length === 0) {
|
|
39
56
|
loggers.intentStream.warn("No intent found");
|
|
40
|
-
return
|
|
57
|
+
return [{ subquery: query }];
|
|
41
58
|
}
|
|
42
|
-
const intentList = intents.map((
|
|
59
|
+
const intentList = intents.map((intent) => `- ${intent.name}: ${intent.description}`).join("\n");
|
|
43
60
|
const threadMessages = !thread ? "" : thread.messages.sort((a, b) => a.timestamp - b.timestamp).map((message) => {
|
|
44
61
|
const role = message.role === "USER" ? "User" : message.role === "MODEL" ? "Assistant" : "System";
|
|
45
62
|
const content = Array.isArray(message.content.parts) ? message.content.parts.join(" ") : String(message.content.parts);
|
|
@@ -58,22 +75,53 @@ ${threadMessages}
|
|
|
58
75
|
|
|
59
76
|
Last user question: "${query}"
|
|
60
77
|
|
|
61
|
-
Based on the above conversation history,
|
|
62
|
-
|
|
78
|
+
Based on the above conversation history, analyze the last user question and identify all relevant intents.
|
|
79
|
+
|
|
80
|
+
Instructions:
|
|
81
|
+
1. First, decompose the last user question into action-based subqueries (each representing a distinct action or task)
|
|
82
|
+
2. Then, map each subquery to its corresponding intent from the available intent list
|
|
83
|
+
3. For each subquery, provide a 2-3 sentence summary of what actions will be performed
|
|
84
|
+
4. Multiple intents can be identified if the question covers various topics or actions
|
|
85
|
+
5. Maintain the logical sequence of the original question when splitting into subqueries
|
|
86
|
+
6. If any subquery doesn't match any intent in the available list, map it to "default" intent
|
|
87
|
+
|
|
88
|
+
Output Format:
|
|
89
|
+
Return the results as a JSON array with the following structure:
|
|
90
|
+
[
|
|
91
|
+
{
|
|
92
|
+
"subquery": "<subquery_1>",
|
|
93
|
+
"intentName": "<intent_name_1>",
|
|
94
|
+
"actionPlan": "<2-3 sentence description of what will be done for this subquery>"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"subquery": "<subquery_2>",
|
|
98
|
+
"intentName": "<intent_name_2>",
|
|
99
|
+
"actionPlan": "<2-3 sentence description of what will be done for this subquery>"
|
|
100
|
+
},
|
|
101
|
+
...
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
Requirements:
|
|
105
|
+
- Each subquery should represent a single, actionable task or request
|
|
106
|
+
- Preserve the original meaning and context when splitting queries
|
|
107
|
+
- Select only from the provided intent list
|
|
108
|
+
- Use "default" as the intent value for any subquery that doesn't match available intents.`;
|
|
63
109
|
const messages = modelInstance.generateMessages({
|
|
64
110
|
query: userMessage,
|
|
65
111
|
systemPrompt
|
|
66
112
|
});
|
|
67
113
|
const response = await modelInstance.fetch(messages);
|
|
68
114
|
if (!response.content) {
|
|
69
|
-
|
|
115
|
+
loggers.intent.warn("Cannot extract intent from query");
|
|
116
|
+
return [{ subquery: query }];
|
|
70
117
|
}
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
118
|
+
const subqueries = JSON.parse(response.content);
|
|
119
|
+
const triggeredIntent = [];
|
|
120
|
+
for (const { subquery, intentName, actionPlan } of subqueries) {
|
|
121
|
+
const intent = await intentMemory.getIntentByName(intentName);
|
|
122
|
+
triggeredIntent.push({ subquery, intent, actionPlan });
|
|
75
123
|
}
|
|
76
|
-
return
|
|
124
|
+
return triggeredIntent;
|
|
77
125
|
}
|
|
78
126
|
/**
|
|
79
127
|
* Fulfills the detected intent by generating a streaming response.
|
|
@@ -91,7 +139,7 @@ Please select and answer the most appropriate intent name from the available int
|
|
|
91
139
|
* @param intent - Optional detected intent with custom prompt
|
|
92
140
|
* @returns AsyncGenerator yielding StreamEvent objects
|
|
93
141
|
*/
|
|
94
|
-
async *intentFulfilling(query,
|
|
142
|
+
async *intentFulfilling(query, thread, intent) {
|
|
95
143
|
const systemPrompt = `
|
|
96
144
|
Today is ${(/* @__PURE__ */ new Date()).toLocaleDateString()}.
|
|
97
145
|
|
|
@@ -118,7 +166,7 @@ ${intent?.prompt || ""}
|
|
|
118
166
|
functions
|
|
119
167
|
);
|
|
120
168
|
const assembledToolCalls = [];
|
|
121
|
-
loggers.intentStream.
|
|
169
|
+
loggers.intentStream.info("messages", { messages });
|
|
122
170
|
for await (const chunk of responseStream) {
|
|
123
171
|
const delta = chunk.delta;
|
|
124
172
|
if (delta?.tool_calls) {
|
|
@@ -147,7 +195,9 @@ ${intent?.prompt || ""}
|
|
|
147
195
|
for (const toolCall of assembledToolCalls) {
|
|
148
196
|
const toolCallId = randomUUID();
|
|
149
197
|
const toolName = toolCall.function.name;
|
|
150
|
-
const selectedTool = tools.filter(
|
|
198
|
+
const selectedTool = tools.filter(
|
|
199
|
+
(tool) => tool.toolName === toolName
|
|
200
|
+
)[0];
|
|
151
201
|
let toolResult = "";
|
|
152
202
|
if (this.mcpModule && selectedTool.protocol === "MCP" /* MCP */) {
|
|
153
203
|
const toolArgs = JSON.parse(toolCall.function.arguments);
|
|
@@ -160,11 +210,8 @@ ${intent?.prompt || ""}
|
|
|
160
210
|
toolArgs
|
|
161
211
|
}
|
|
162
212
|
};
|
|
163
|
-
loggers.intent.
|
|
164
|
-
toolResult = await this.mcpModule.useTool(
|
|
165
|
-
selectedTool,
|
|
166
|
-
toolArgs
|
|
167
|
-
);
|
|
213
|
+
loggers.intent.info("MCP tool call", { toolName, toolArgs });
|
|
214
|
+
toolResult = await this.mcpModule.useTool(selectedTool, toolArgs);
|
|
168
215
|
} else if (this.a2aModule && selectedTool.protocol === "A2A" /* A2A */) {
|
|
169
216
|
yield {
|
|
170
217
|
event: "tool_start",
|
|
@@ -175,11 +222,11 @@ ${intent?.prompt || ""}
|
|
|
175
222
|
toolArgs: null
|
|
176
223
|
}
|
|
177
224
|
};
|
|
178
|
-
loggers.intent.
|
|
225
|
+
loggers.intent.info("A2A tool call", { toolName });
|
|
179
226
|
toolResult = await this.a2aModule.useTool(
|
|
180
227
|
selectedTool,
|
|
181
228
|
query,
|
|
182
|
-
threadId
|
|
229
|
+
thread.threadId
|
|
183
230
|
);
|
|
184
231
|
} else {
|
|
185
232
|
loggers.intent.warn(
|
|
@@ -250,7 +297,6 @@ ${intent?.prompt || ""}
|
|
|
250
297
|
*/
|
|
251
298
|
async *handleQueryStream(threadMetadata, query, isA2A) {
|
|
252
299
|
const { type, userId } = threadMetadata;
|
|
253
|
-
const queryStartAt = Date.now();
|
|
254
300
|
const threadMemory = this.memoryModule?.getThreadMemory();
|
|
255
301
|
let threadId = threadMetadata.threadId;
|
|
256
302
|
let thread;
|
|
@@ -263,76 +309,74 @@ ${intent?.prompt || ""}
|
|
|
263
309
|
threadId ??= randomUUID();
|
|
264
310
|
if (!thread) {
|
|
265
311
|
const title = await this.generateTitle(query);
|
|
266
|
-
const metadata = await threadMemory?.createThread(
|
|
312
|
+
const metadata = await threadMemory?.createThread(
|
|
267
313
|
type,
|
|
314
|
+
userId,
|
|
268
315
|
threadId,
|
|
269
|
-
title
|
|
270
|
-
|
|
271
|
-
};
|
|
272
|
-
loggers.
|
|
273
|
-
yield { event: "thread_id", data:
|
|
316
|
+
title
|
|
317
|
+
) || { type, userId, threadId, title };
|
|
318
|
+
thread = { ...metadata, messages: [] };
|
|
319
|
+
loggers.intent.info(`Create new thread: ${threadId}`);
|
|
320
|
+
yield { event: "thread_id", data: { type, userId, threadId, title } };
|
|
274
321
|
}
|
|
275
322
|
await threadMemory?.addMessagesToThread(userId, threadId, [
|
|
276
323
|
{
|
|
277
324
|
messageId: randomUUID(),
|
|
278
325
|
role: "USER" /* USER */,
|
|
279
|
-
timestamp:
|
|
326
|
+
timestamp: Date.now(),
|
|
280
327
|
content: { type: "text", parts: [query] }
|
|
281
328
|
}
|
|
282
329
|
]);
|
|
283
|
-
const
|
|
284
|
-
|
|
330
|
+
const triggeredIntent = await this.intentTriggering(
|
|
331
|
+
query,
|
|
332
|
+
thread
|
|
333
|
+
);
|
|
285
334
|
let finalResponseText = "";
|
|
286
|
-
for
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
await threadMemory?.addMessagesToThread(userId, threadId, [
|
|
292
|
-
{
|
|
293
|
-
messageId: randomUUID(),
|
|
294
|
-
role: "MODEL" /* MODEL */,
|
|
295
|
-
timestamp: Date.now(),
|
|
296
|
-
content: {
|
|
297
|
-
type: "text",
|
|
298
|
-
parts: [JSON.stringify(event.data.toolArgs)]
|
|
299
|
-
},
|
|
300
|
-
metadata: {
|
|
301
|
-
toolCallId: event.data.toolCallId,
|
|
302
|
-
toolName: event.data.toolName,
|
|
303
|
-
protocol: event.data.protocol
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
]);
|
|
307
|
-
} else if (event.event === "tool_output") {
|
|
308
|
-
await threadMemory?.addMessagesToThread(userId, threadId, [
|
|
309
|
-
{
|
|
310
|
-
messageId: randomUUID(),
|
|
311
|
-
role: "MODEL" /* MODEL */,
|
|
312
|
-
timestamp: Date.now(),
|
|
313
|
-
content: { type: "text", parts: [event.data.result] },
|
|
314
|
-
metadata: {
|
|
315
|
-
toolCallId: event.data.toolCallId,
|
|
316
|
-
toolName: event.data.toolName,
|
|
317
|
-
protocol: event.data.protocol
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
]);
|
|
321
|
-
}
|
|
322
|
-
yield event;
|
|
323
|
-
}
|
|
324
|
-
await threadMemory?.addMessagesToThread(userId, threadId, [
|
|
325
|
-
{
|
|
335
|
+
for (let i = 0; i < triggeredIntent.length; i++) {
|
|
336
|
+
const { subquery, intent, actionPlan } = triggeredIntent[i];
|
|
337
|
+
loggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);
|
|
338
|
+
loggers.intent.info(`Action plan: ${actionPlan}`);
|
|
339
|
+
finalResponseText !== "" && thread.messages.push({
|
|
326
340
|
messageId: randomUUID(),
|
|
327
341
|
role: "MODEL" /* MODEL */,
|
|
328
342
|
timestamp: Date.now(),
|
|
329
|
-
content: { type: "text", parts: [finalResponseText] }
|
|
343
|
+
content: { type: "text", parts: [finalResponseText] },
|
|
344
|
+
metadata: { isThinking: true }
|
|
345
|
+
});
|
|
346
|
+
await this.addToThreadMessages(thread, {
|
|
347
|
+
role: "MODEL" /* MODEL */,
|
|
348
|
+
content: subquery,
|
|
349
|
+
metadata: {
|
|
350
|
+
subquery,
|
|
351
|
+
isThinking: true,
|
|
352
|
+
actionPlan
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
yield {
|
|
356
|
+
event: "intent_process",
|
|
357
|
+
data: { subquery, actionPlan: actionPlan || "" }
|
|
358
|
+
};
|
|
359
|
+
const stream = this.intentFulfilling(subquery, thread, intent);
|
|
360
|
+
finalResponseText = "";
|
|
361
|
+
for await (const event of stream) {
|
|
362
|
+
if (event.event === "text_chunk" && event.data.delta) {
|
|
363
|
+
loggers.intentStream.debug("text_chunk", { event });
|
|
364
|
+
finalResponseText += event.data.delta;
|
|
365
|
+
}
|
|
366
|
+
if (event.event === "text_chunk" && i !== triggeredIntent.length - 1) {
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
yield event;
|
|
330
370
|
}
|
|
331
|
-
|
|
371
|
+
}
|
|
372
|
+
await this.addToThreadMessages(thread, {
|
|
373
|
+
role: "MODEL" /* MODEL */,
|
|
374
|
+
content: finalResponseText
|
|
375
|
+
});
|
|
332
376
|
}
|
|
333
377
|
};
|
|
334
378
|
|
|
335
379
|
export {
|
|
336
380
|
QueryStreamService
|
|
337
381
|
};
|
|
338
|
-
//# sourceMappingURL=chunk-
|
|
382
|
+
//# sourceMappingURL=chunk-P4ADSRP5.js.map
|