@ainetwork/adk 0.2.13 → 0.3.0
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-OPSDLMDC.cjs → chunk-2OXSV2VU.cjs} +5 -5
- package/dist/cjs/{chunk-OPSDLMDC.cjs.map → chunk-2OXSV2VU.cjs.map} +1 -1
- package/dist/cjs/{chunk-ECWI7MIG.cjs → chunk-2TNBBXQ3.cjs} +5 -5
- package/dist/cjs/{chunk-ECWI7MIG.cjs.map → chunk-2TNBBXQ3.cjs.map} +1 -1
- package/dist/cjs/chunk-2TOW46DI.cjs +246 -0
- package/dist/cjs/chunk-2TOW46DI.cjs.map +1 -0
- package/dist/cjs/chunk-35MIRD7Z.cjs +134 -0
- package/dist/cjs/chunk-35MIRD7Z.cjs.map +1 -0
- package/dist/cjs/chunk-37J4FFJ3.cjs +133 -0
- package/dist/cjs/chunk-37J4FFJ3.cjs.map +1 -0
- package/dist/cjs/chunk-3PTTQHU7.cjs +8 -0
- package/dist/cjs/chunk-3PTTQHU7.cjs.map +1 -0
- package/dist/cjs/chunk-3XJS5S3O.cjs +191 -0
- package/dist/cjs/chunk-3XJS5S3O.cjs.map +1 -0
- package/dist/cjs/{chunk-EZE74FHY.cjs → chunk-43XI3NHI.cjs} +7 -7
- package/dist/cjs/{chunk-EZE74FHY.cjs.map → chunk-43XI3NHI.cjs.map} +1 -1
- package/dist/cjs/chunk-46I7JH5C.cjs +63 -0
- package/dist/cjs/chunk-46I7JH5C.cjs.map +1 -0
- package/dist/cjs/{chunk-GYBLJ74D.cjs → chunk-4KL2BCDZ.cjs} +7 -7
- package/dist/cjs/{chunk-4QWJELSL.cjs.map → chunk-4KL2BCDZ.cjs.map} +1 -1
- package/dist/cjs/chunk-4RPP5UAH.cjs +202 -0
- package/dist/cjs/chunk-4RPP5UAH.cjs.map +1 -0
- package/dist/cjs/chunk-4TO7EZ5J.cjs +133 -0
- package/dist/cjs/chunk-4TO7EZ5J.cjs.map +1 -0
- package/dist/cjs/{chunk-T3IMGU4R.cjs → chunk-5IEVTAT2.cjs} +3 -3
- package/dist/cjs/{chunk-T3IMGU4R.cjs.map → chunk-5IEVTAT2.cjs.map} +1 -1
- package/dist/cjs/chunk-67CP7NP7.cjs +132 -0
- package/dist/cjs/chunk-67CP7NP7.cjs.map +1 -0
- package/dist/cjs/{chunk-QKMB4ET3.cjs → chunk-7CCDDRLV.cjs} +4 -4
- package/dist/cjs/{chunk-QKMB4ET3.cjs.map → chunk-7CCDDRLV.cjs.map} +1 -1
- package/dist/cjs/chunk-7ELF6ICG.cjs +129 -0
- package/dist/{esm/chunk-OKC7ARHK.js.map → cjs/chunk-7ELF6ICG.cjs.map} +1 -1
- package/dist/cjs/chunk-7HBOMBZG.cjs +51 -0
- package/dist/cjs/chunk-7HBOMBZG.cjs.map +1 -0
- package/dist/cjs/chunk-7P4O537H.cjs +132 -0
- package/dist/cjs/chunk-7P4O537H.cjs.map +1 -0
- package/dist/cjs/chunk-7QIF3FVV.cjs +41 -0
- package/dist/cjs/chunk-7QIF3FVV.cjs.map +1 -0
- package/dist/cjs/chunk-AHNKY3JY.cjs +30 -0
- package/dist/cjs/chunk-AHNKY3JY.cjs.map +1 -0
- package/dist/cjs/chunk-AIUJ6CZR.cjs +37 -0
- package/dist/cjs/chunk-AIUJ6CZR.cjs.map +1 -0
- package/dist/cjs/{chunk-VLMHDHXT.cjs → chunk-AQXHOGJD.cjs} +16 -3
- package/dist/cjs/chunk-AQXHOGJD.cjs.map +1 -0
- package/dist/cjs/chunk-ASEYNIPL.cjs +36 -0
- package/dist/cjs/chunk-ASEYNIPL.cjs.map +1 -0
- package/dist/cjs/{chunk-IGJXFUHP.cjs → chunk-AWHKDGXN.cjs} +4 -4
- package/dist/cjs/{chunk-IGJXFUHP.cjs.map → chunk-AWHKDGXN.cjs.map} +1 -1
- package/dist/cjs/{chunk-4QWJELSL.cjs → chunk-BYTLWEXM.cjs} +5 -5
- package/dist/cjs/{chunk-GYBLJ74D.cjs.map → chunk-BYTLWEXM.cjs.map} +1 -1
- package/dist/cjs/chunk-CGD7CECK.cjs +129 -0
- package/dist/cjs/chunk-CGD7CECK.cjs.map +1 -0
- package/dist/cjs/chunk-CPZBDQ5D.cjs +28 -0
- package/dist/cjs/chunk-CPZBDQ5D.cjs.map +1 -0
- package/dist/cjs/chunk-DEWNBL5H.cjs +37 -0
- package/dist/cjs/chunk-DEWNBL5H.cjs.map +1 -0
- package/dist/cjs/chunk-DK57ZF33.cjs +28 -0
- package/dist/cjs/chunk-DK57ZF33.cjs.map +1 -0
- package/dist/cjs/chunk-DQIGZKKW.cjs +37 -0
- package/dist/cjs/chunk-DQIGZKKW.cjs.map +1 -0
- package/dist/cjs/chunk-EETXLYKA.cjs +28 -0
- package/dist/cjs/chunk-EETXLYKA.cjs.map +1 -0
- package/dist/cjs/chunk-F3A5E26D.cjs +115 -0
- package/dist/cjs/chunk-F3A5E26D.cjs.map +1 -0
- package/dist/cjs/chunk-FH44ANEI.cjs +134 -0
- package/dist/cjs/chunk-FH44ANEI.cjs.map +1 -0
- package/dist/cjs/chunk-FJ2JWXSL.cjs +40 -0
- package/dist/cjs/chunk-FJ2JWXSL.cjs.map +1 -0
- package/dist/cjs/chunk-G3BK3F7V.cjs +129 -0
- package/dist/cjs/chunk-G3BK3F7V.cjs.map +1 -0
- package/dist/cjs/chunk-GKXXTC6C.cjs +191 -0
- package/dist/cjs/chunk-GKXXTC6C.cjs.map +1 -0
- package/dist/cjs/chunk-GM3S5465.cjs +28 -0
- package/dist/cjs/chunk-GM3S5465.cjs.map +1 -0
- package/dist/cjs/chunk-GMCHHP5Z.cjs +37 -0
- package/dist/cjs/chunk-GMCHHP5Z.cjs.map +1 -0
- package/dist/cjs/chunk-HDZ5POWB.cjs +134 -0
- package/dist/cjs/chunk-HDZ5POWB.cjs.map +1 -0
- package/dist/cjs/chunk-HF2QUMQV.cjs +30 -0
- package/dist/cjs/chunk-HF2QUMQV.cjs.map +1 -0
- package/dist/cjs/{chunk-VDEWCEGP.cjs → chunk-HIL5SDJR.cjs} +7 -7
- package/dist/cjs/{chunk-VDEWCEGP.cjs.map → chunk-HIL5SDJR.cjs.map} +1 -1
- package/dist/cjs/chunk-HNKMBS3C.cjs +43 -0
- package/dist/cjs/chunk-HNKMBS3C.cjs.map +1 -0
- package/dist/cjs/chunk-I4ET55WI.cjs +36 -0
- package/dist/cjs/chunk-I4ET55WI.cjs.map +1 -0
- package/dist/cjs/chunk-ICNXY2NK.cjs +132 -0
- package/dist/cjs/chunk-ICNXY2NK.cjs.map +1 -0
- package/dist/cjs/chunk-ISQSPK4F.cjs +134 -0
- package/dist/cjs/chunk-ISQSPK4F.cjs.map +1 -0
- package/dist/cjs/chunk-J2FGGTF5.cjs +37 -0
- package/dist/cjs/chunk-J2FGGTF5.cjs.map +1 -0
- package/dist/cjs/chunk-J5GBTBSY.cjs +134 -0
- package/dist/cjs/chunk-J5GBTBSY.cjs.map +1 -0
- package/dist/cjs/chunk-K2W5TTBJ.cjs +28 -0
- package/dist/cjs/chunk-K2W5TTBJ.cjs.map +1 -0
- package/dist/cjs/chunk-K5LS7KNV.cjs +105 -0
- package/dist/cjs/chunk-K5LS7KNV.cjs.map +1 -0
- package/dist/cjs/chunk-KLSZEQ7H.cjs +281 -0
- package/dist/cjs/chunk-KLSZEQ7H.cjs.map +1 -0
- package/dist/cjs/chunk-L3PZU7OF.cjs +285 -0
- package/dist/cjs/chunk-L3PZU7OF.cjs.map +1 -0
- package/dist/cjs/chunk-L7QJRM2U.cjs +131 -0
- package/dist/cjs/chunk-L7QJRM2U.cjs.map +1 -0
- package/dist/cjs/chunk-LKVNLT2M.cjs +132 -0
- package/dist/cjs/chunk-LKVNLT2M.cjs.map +1 -0
- package/dist/cjs/chunk-M7K34W2H.cjs +134 -0
- package/dist/cjs/chunk-M7K34W2H.cjs.map +1 -0
- package/dist/cjs/{chunk-NXD6W2PH.cjs → chunk-MJAKDII2.cjs} +5 -1
- package/dist/cjs/chunk-MJAKDII2.cjs.map +1 -0
- package/dist/cjs/chunk-MN47LTUO.cjs +37 -0
- package/dist/cjs/chunk-MN47LTUO.cjs.map +1 -0
- package/dist/cjs/chunk-MO3H4KHE.cjs +38 -0
- package/dist/cjs/chunk-MO3H4KHE.cjs.map +1 -0
- package/dist/cjs/chunk-NB6OID2Z.cjs +285 -0
- package/dist/cjs/chunk-NB6OID2Z.cjs.map +1 -0
- package/dist/cjs/chunk-NQUYHJ3J.cjs +115 -0
- package/dist/cjs/chunk-NQUYHJ3J.cjs.map +1 -0
- package/dist/cjs/chunk-OFUS74ON.cjs +36 -0
- package/dist/cjs/chunk-OFUS74ON.cjs.map +1 -0
- package/dist/cjs/chunk-OU5UB2HF.cjs +113 -0
- package/dist/cjs/chunk-OU5UB2HF.cjs.map +1 -0
- package/dist/cjs/chunk-PACFW2PR.cjs +37 -0
- package/dist/cjs/chunk-PACFW2PR.cjs.map +1 -0
- package/dist/cjs/chunk-PSHQ4OBL.cjs +41 -0
- package/dist/cjs/chunk-PSHQ4OBL.cjs.map +1 -0
- package/dist/cjs/chunk-QCYLIOXZ.cjs +43 -0
- package/dist/cjs/chunk-QCYLIOXZ.cjs.map +1 -0
- package/dist/cjs/chunk-QDX7LVBM.cjs +284 -0
- package/dist/cjs/chunk-QDX7LVBM.cjs.map +1 -0
- package/dist/cjs/chunk-QE7UAZY6.cjs +37 -0
- package/dist/cjs/chunk-QE7UAZY6.cjs.map +1 -0
- package/dist/cjs/chunk-QSBUV5WJ.cjs +108 -0
- package/dist/cjs/chunk-QSBUV5WJ.cjs.map +1 -0
- package/dist/cjs/chunk-R42QDO6G.cjs +28 -0
- package/dist/cjs/chunk-R42QDO6G.cjs.map +1 -0
- package/dist/cjs/chunk-S2NO7QKM.cjs +132 -0
- package/dist/cjs/chunk-S2NO7QKM.cjs.map +1 -0
- package/dist/cjs/chunk-SSOKZ4O2.cjs +41 -0
- package/dist/cjs/chunk-SSOKZ4O2.cjs.map +1 -0
- package/dist/cjs/chunk-T3N54JRA.cjs +41 -0
- package/dist/cjs/chunk-T3N54JRA.cjs.map +1 -0
- package/dist/cjs/chunk-TF7S7SPO.cjs +114 -0
- package/dist/cjs/chunk-TF7S7SPO.cjs.map +1 -0
- package/dist/cjs/chunk-TJAP46DQ.cjs +43 -0
- package/dist/cjs/chunk-TJAP46DQ.cjs.map +1 -0
- package/dist/cjs/chunk-TOVCM7I7.cjs +281 -0
- package/dist/cjs/chunk-TOVCM7I7.cjs.map +1 -0
- package/dist/cjs/chunk-TUAC64ZF.cjs +41 -0
- package/dist/cjs/chunk-TUAC64ZF.cjs.map +1 -0
- package/dist/cjs/chunk-TZ6JOGWV.cjs +29 -0
- package/dist/cjs/chunk-TZ6JOGWV.cjs.map +1 -0
- package/dist/cjs/chunk-UEOOHJIR.cjs +43 -0
- package/dist/cjs/chunk-UEOOHJIR.cjs.map +1 -0
- package/dist/cjs/chunk-UGDFRSMS.cjs +200 -0
- package/dist/cjs/chunk-UGDFRSMS.cjs.map +1 -0
- package/dist/cjs/chunk-VNAH5COA.cjs +202 -0
- package/dist/cjs/chunk-VNAH5COA.cjs.map +1 -0
- package/dist/cjs/chunk-W4IBNFLJ.cjs +43 -0
- package/dist/cjs/chunk-W4IBNFLJ.cjs.map +1 -0
- package/dist/cjs/chunk-W5NZWOXV.cjs +283 -0
- package/dist/cjs/chunk-W5NZWOXV.cjs.map +1 -0
- package/dist/cjs/chunk-WGAEW3R3.cjs +134 -0
- package/dist/cjs/chunk-WGAEW3R3.cjs.map +1 -0
- package/dist/cjs/chunk-WKGN6P3D.cjs +131 -0
- package/dist/cjs/chunk-WKGN6P3D.cjs.map +1 -0
- package/dist/cjs/chunk-X5INT5HE.cjs +163 -0
- package/dist/cjs/chunk-X5INT5HE.cjs.map +1 -0
- package/dist/cjs/chunk-X6R53KCL.cjs +134 -0
- package/dist/cjs/chunk-X6R53KCL.cjs.map +1 -0
- package/dist/cjs/chunk-XEAJBA3S.cjs +30 -0
- package/dist/cjs/chunk-XEAJBA3S.cjs.map +1 -0
- package/dist/cjs/chunk-YCD3FBPB.cjs +41 -0
- package/dist/cjs/chunk-YCD3FBPB.cjs.map +1 -0
- package/dist/cjs/chunk-YCTPMLZO.cjs +40 -0
- package/dist/cjs/chunk-YCTPMLZO.cjs.map +1 -0
- package/dist/cjs/chunk-YE6INMSS.cjs +41 -0
- package/dist/cjs/chunk-YE6INMSS.cjs.map +1 -0
- package/dist/cjs/chunk-YGK2LYEU.cjs +36 -0
- package/dist/cjs/chunk-YGK2LYEU.cjs.map +1 -0
- package/dist/cjs/chunk-YJSEM4WE.cjs +116 -0
- package/dist/cjs/chunk-YJSEM4WE.cjs.map +1 -0
- package/dist/cjs/chunk-Z6TQ7TFO.cjs +13 -0
- package/dist/cjs/chunk-Z6TQ7TFO.cjs.map +1 -0
- package/dist/cjs/chunk-ZP35BH7F.cjs +43 -0
- package/dist/cjs/chunk-ZP35BH7F.cjs.map +1 -0
- package/dist/cjs/controllers/index.cjs +8 -8
- package/dist/cjs/controllers/index.cjs.map +1 -1
- package/dist/cjs/controllers/query.controller.cjs +3 -3
- package/dist/cjs/index.cjs +36 -34
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/middlewares/auth.middleware.cjs +3 -3
- package/dist/cjs/modules/a2a/a2a.module.cjs +1 -1
- package/dist/cjs/modules/index.cjs +7 -7
- package/dist/cjs/modules/index.cjs.map +1 -1
- package/dist/cjs/modules/memory/memory.module.cjs +2 -2
- package/dist/cjs/modules/models/base.model.cjs +2 -2
- package/dist/cjs/modules/models/model.module.cjs +2 -2
- package/dist/cjs/routes/a2a.routes.cjs +9 -7
- package/dist/cjs/routes/a2a.routes.cjs.map +1 -1
- package/dist/cjs/routes/api/intent.routes.cjs +3 -3
- package/dist/cjs/routes/api/threads.routes.cjs +3 -3
- package/dist/cjs/routes/api.routes.cjs +5 -5
- package/dist/cjs/routes/index.cjs +22 -20
- package/dist/cjs/routes/index.cjs.map +1 -1
- package/dist/cjs/routes/intent.routes.cjs +12 -10
- package/dist/cjs/routes/intent.routes.cjs.map +1 -1
- package/dist/cjs/routes/query.routes.cjs +12 -10
- package/dist/cjs/routes/query.routes.cjs.map +1 -1
- package/dist/cjs/services/index.cjs +11 -9
- package/dist/cjs/services/index.cjs.map +1 -1
- package/dist/cjs/services/intents/fulfill-stream.service.cjs +4 -3
- package/dist/cjs/services/intents/fulfill-stream.service.cjs.map +1 -1
- package/dist/cjs/services/intents/fulfill.service.cjs +4 -3
- package/dist/cjs/services/intents/fulfill.service.cjs.map +1 -1
- package/dist/cjs/services/intents/trigger.service.cjs +2 -2
- package/dist/cjs/services/query-stream.service.cjs +8 -6
- package/dist/cjs/services/query-stream.service.cjs.map +1 -1
- package/dist/cjs/services/query.service.cjs +8 -6
- package/dist/cjs/services/query.service.cjs.map +1 -1
- package/dist/cjs/services/utils/fulfill.common.cjs +7 -0
- package/dist/cjs/services/utils/fulfill.common.cjs.map +1 -0
- package/dist/cjs/services/utils/query.common.cjs +8 -0
- package/dist/cjs/services/utils/query.common.cjs.map +1 -0
- package/dist/cjs/types/agent.cjs +2 -2
- package/dist/esm/{chunk-VN4FAX52.js → chunk-3QCXIHM7.js} +11 -37
- package/dist/esm/chunk-3QCXIHM7.js.map +1 -0
- package/dist/esm/{chunk-LCLBEJNC.js → chunk-4NESTSZ3.js} +18 -23
- package/dist/esm/chunk-4NESTSZ3.js.map +1 -0
- package/dist/esm/chunk-7BH6AYP7.js +51 -0
- package/dist/esm/chunk-7BH6AYP7.js.map +1 -0
- package/dist/esm/{chunk-OKC7ARHK.js → chunk-7XCSPITE.js} +12 -36
- package/dist/esm/chunk-7XCSPITE.js.map +1 -0
- package/dist/esm/{chunk-7C32OCGS.js → chunk-DIW5VDAQ.js} +7 -7
- package/dist/esm/chunk-DIW5VDAQ.js.map +1 -0
- package/dist/esm/{chunk-XSFA3J2Y.js → chunk-F3SGL62A.js} +2 -2
- package/dist/esm/chunk-J2UFYVKK.js +38 -0
- package/dist/esm/chunk-J2UFYVKK.js.map +1 -0
- package/dist/esm/{chunk-VNQCUGC3.js → chunk-M6RVV57F.js} +13 -2
- package/dist/esm/chunk-M6RVV57F.js.map +1 -0
- package/dist/esm/{chunk-3J6YYQRU.js → chunk-MCMWSGRJ.js} +3 -3
- package/dist/esm/{chunk-5JIXQ6PU.js → chunk-OTBWAUJF.js} +2 -2
- package/dist/esm/chunk-OUIXXZFI.js +29 -0
- package/dist/esm/chunk-OUIXXZFI.js.map +1 -0
- package/dist/esm/{chunk-IEJ2P52S.js → chunk-OW7PCDK5.js} +6 -2
- package/dist/esm/chunk-OW7PCDK5.js.map +1 -0
- package/dist/esm/{chunk-UFWC7DRS.js → chunk-SPRW6KUR.js} +2 -2
- package/dist/esm/{chunk-RKE2MTBG.js → chunk-THBAYYPZ.js} +2 -2
- package/dist/esm/{chunk-DHDFPHYD.js → chunk-U2UNRT4C.js} +1 -1
- package/dist/esm/chunk-U2UNRT4C.js.map +1 -0
- package/dist/esm/{chunk-LOFJBMHT.js → chunk-WL7H2QX4.js} +24 -17
- package/dist/esm/chunk-WL7H2QX4.js.map +1 -0
- package/dist/esm/{chunk-ZBUAT73P.js → chunk-WUNZG3WP.js} +1 -1
- package/dist/esm/chunk-WUNZG3WP.js.map +1 -0
- package/dist/esm/{chunk-E66MSTWY.js → chunk-YVN6VFRT.js} +3 -4
- package/dist/esm/{chunk-E66MSTWY.js.map → chunk-YVN6VFRT.js.map} +1 -1
- package/dist/esm/{chunk-5X4SUECM.js → chunk-ZK2KSFGQ.js} +6 -8
- package/dist/esm/chunk-ZK2KSFGQ.js.map +1 -0
- package/dist/esm/controllers/a2a.controller.d.ts +1 -3
- package/dist/esm/controllers/index.d.ts +3 -3
- package/dist/esm/controllers/index.js +2 -2
- package/dist/esm/controllers/query.controller.d.ts +1 -3
- package/dist/esm/controllers/query.controller.js +2 -2
- package/dist/esm/index.js +20 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/middlewares/auth.middleware.js +2 -2
- package/dist/esm/modules/a2a/a2a.module.js +1 -1
- package/dist/esm/modules/index.d.ts +1 -1
- package/dist/esm/modules/index.js +7 -7
- package/dist/esm/modules/memory/base.memory.d.ts +11 -6
- package/dist/esm/modules/memory/memory.module.d.ts +7 -14
- package/dist/esm/modules/memory/memory.module.js +1 -1
- package/dist/esm/modules/models/base.model.d.ts +8 -4
- package/dist/esm/modules/models/base.model.js +1 -1
- package/dist/esm/modules/models/model.module.d.ts +4 -2
- package/dist/esm/modules/models/model.module.js +1 -1
- package/dist/esm/routes/a2a.routes.js +8 -6
- package/dist/esm/routes/api/intent.routes.js +2 -2
- package/dist/esm/routes/api/threads.routes.js +2 -2
- package/dist/esm/routes/api.routes.js +4 -4
- package/dist/esm/routes/index.js +16 -14
- package/dist/esm/routes/intent.routes.js +11 -9
- package/dist/esm/routes/query.routes.js +11 -9
- package/dist/esm/services/a2a.service.d.ts +1 -3
- package/dist/esm/services/index.d.ts +0 -2
- package/dist/esm/services/index.js +12 -10
- package/dist/esm/services/intents/fulfill-stream.service.d.ts +1 -4
- package/dist/esm/services/intents/fulfill-stream.service.js +3 -2
- package/dist/esm/services/intents/fulfill.service.d.ts +1 -4
- package/dist/esm/services/intents/fulfill.service.js +3 -2
- package/dist/esm/services/intents/trigger.service.js +1 -1
- package/dist/esm/services/query-stream.service.d.ts +4 -12
- package/dist/esm/services/query-stream.service.js +7 -5
- package/dist/esm/services/query.service.d.ts +3 -11
- package/dist/esm/services/query.service.js +7 -5
- package/dist/esm/services/utils/fulfill.common.d.ts +6 -0
- package/dist/esm/services/utils/fulfill.common.js +7 -0
- package/dist/esm/services/utils/fulfill.common.js.map +1 -0
- package/dist/esm/services/utils/query.common.d.ts +9 -0
- package/dist/esm/services/utils/query.common.js +8 -0
- package/dist/esm/services/utils/query.common.js.map +1 -0
- package/dist/esm/types/agent.d.ts +1 -14
- package/dist/esm/types/agent.js +1 -1
- package/package.json +3 -3
- package/dist/cjs/chunk-NXD6W2PH.cjs.map +0 -1
- package/dist/cjs/chunk-VLMHDHXT.cjs.map +0 -1
- package/dist/cjs/chunk-WVQY5D3N.cjs +0 -43
- package/dist/cjs/chunk-WVQY5D3N.cjs.map +0 -1
- package/dist/esm/chunk-5X4SUECM.js.map +0 -1
- package/dist/esm/chunk-7C32OCGS.js.map +0 -1
- package/dist/esm/chunk-DHDFPHYD.js.map +0 -1
- package/dist/esm/chunk-IEJ2P52S.js.map +0 -1
- package/dist/esm/chunk-LCLBEJNC.js.map +0 -1
- package/dist/esm/chunk-LOFJBMHT.js.map +0 -1
- package/dist/esm/chunk-VN4FAX52.js.map +0 -1
- package/dist/esm/chunk-VNQCUGC3.js.map +0 -1
- package/dist/esm/chunk-XBMWWTSX.js +0 -51
- package/dist/esm/chunk-XBMWWTSX.js.map +0 -1
- package/dist/esm/chunk-ZBUAT73P.js.map +0 -1
- /package/dist/esm/{chunk-XSFA3J2Y.js.map → chunk-F3SGL62A.js.map} +0 -0
- /package/dist/esm/{chunk-3J6YYQRU.js.map → chunk-MCMWSGRJ.js.map} +0 -0
- /package/dist/esm/{chunk-5JIXQ6PU.js.map → chunk-OTBWAUJF.js.map} +0 -0
- /package/dist/esm/{chunk-UFWC7DRS.js.map → chunk-SPRW6KUR.js.map} +0 -0
- /package/dist/esm/{chunk-RKE2MTBG.js.map → chunk-THBAYYPZ.js.map} +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
QueryService
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-7XCSPITE.js";
|
|
4
|
+
import "../chunk-WL7H2QX4.js";
|
|
5
|
+
import "../chunk-DIW5VDAQ.js";
|
|
6
|
+
import "../chunk-7BH6AYP7.js";
|
|
7
|
+
import "../chunk-J2UFYVKK.js";
|
|
8
|
+
import "../chunk-WUNZG3WP.js";
|
|
8
9
|
import "../chunk-GRN6CHNO.js";
|
|
10
|
+
import "../chunk-7CULQDJF.js";
|
|
9
11
|
import "../chunk-N7VYM2R5.js";
|
|
10
12
|
export {
|
|
11
13
|
QueryService
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModelFetchOptions } from '../../modules/models/base.model.js';
|
|
2
|
+
import { ModelModule } from '../../modules/models/model.module.js';
|
|
3
|
+
import '../../types/connector.js';
|
|
4
|
+
import '../../types/memory.js';
|
|
5
|
+
import '../../types/stream.js';
|
|
6
|
+
|
|
7
|
+
declare function generateTitle(modelModule: ModelModule, query: string, options?: ModelFetchOptions): Promise<string>;
|
|
8
|
+
|
|
9
|
+
export { generateTitle };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import { StatusCodes } from 'http-status-codes';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* Custom prompts configuration for the agent.
|
|
5
|
-
*
|
|
6
|
-
* Allows customization of agent behavior through system and agent-level prompts.
|
|
7
|
-
*/
|
|
8
|
-
type AinAgentPrompts = {
|
|
9
|
-
/** Agent-level prompt that defines the agent's personality and behavior */
|
|
10
|
-
agent?: string;
|
|
11
|
-
/** System-level prompt that provides context and instructions */
|
|
12
|
-
system?: string;
|
|
13
|
-
};
|
|
14
3
|
/**
|
|
15
4
|
* Agent manifest containing essential metadata and configuration.
|
|
16
5
|
*
|
|
@@ -38,12 +27,10 @@ type AinAgentManifest = {
|
|
|
38
27
|
description: string;
|
|
39
28
|
/** Optional public URL for A2A protocol discovery and communication */
|
|
40
29
|
url?: string;
|
|
41
|
-
/** Optional custom prompts to configure agent behavior */
|
|
42
|
-
prompts?: AinAgentPrompts;
|
|
43
30
|
};
|
|
44
31
|
declare class AinHttpError extends Error {
|
|
45
32
|
status?: StatusCodes;
|
|
46
33
|
constructor(status: StatusCodes, message: string);
|
|
47
34
|
}
|
|
48
35
|
|
|
49
|
-
export { type AinAgentManifest,
|
|
36
|
+
export { type AinAgentManifest, AinHttpError };
|
package/dist/esm/types/agent.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ainetwork/adk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "AI Network Agent Development Kit",
|
|
5
5
|
"repository": "git@github.com:ainetwork-ai/ain-adk.git",
|
|
6
6
|
"author": "AI Network (https://ainetwork.ai)",
|
|
@@ -71,8 +71,8 @@
|
|
|
71
71
|
"typescript-eslint": "^8.34.1"
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@a2a-js/sdk": "^0.3.
|
|
75
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
74
|
+
"@a2a-js/sdk": "^0.3.5",
|
|
75
|
+
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
76
76
|
"cors": "^2.8.5",
|
|
77
77
|
"dotenv": "^16.5.0",
|
|
78
78
|
"express": "^5.1.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-NXD6W2PH.cjs","../../src/controllers/query.controller.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACHA,oDAA4B;AAIrB,IAAM,gBAAA,YAAN,MAAsB;AAAA,EACpB;AAAA,EACA;AAAA,EAER,WAAA,CACC,YAAA,EACA,kBAAA,EACC;AACD,IAAA,IAAA,CAAK,aAAA,EAAe,YAAA;AACpB,IAAA,IAAA,CAAK,mBAAA,EAAqB,kBAAA;AAAA,EAC3B;AAAA,iBAEO,mBAAA,EAAqB,MAAA,CAC3B,GAAA,EACA,GAAA,EACA,IAAA,EAAA,GACI;AACJ,IAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,EAAA,EAAI,GAAA,CAAI,IAAA;AACxC,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,MAAA;AAE1B,IAAA,IAAI;AACH,MAAA,MAAM,OAAA,EAAS,MAAM,IAAA,CAAK,YAAA,CAAa,WAAA;AAAA,QACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QACzB;AAAA,MACD,CAAA;AAEA,MAAA,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAAA,IAC5B,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,IAAA,EAAA,GACI;AACJ,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,QAAQ,EAAA,EAAI,GAAA,CAAI,IAAA;AACxC,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,MAAA;AAE1B,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,kBAAA,EAAoB;AAC7B,MAAA,MAAM,MAAA,EAAQ,IAAI,mCAAA;AAAA,QACjB,4BAAA,CAAY,eAAA;AAAA,QACZ;AAAA,MACD,CAAA;AACA,MAAA,OAAO,IAAA,CAAK,KAAK,CAAA;AAAA,IAClB;AAEA,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,OAAA,EAAS,IAAA,CAAK,kBAAA,CAAmB,iBAAA;AAAA,MACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,MACzB;AAAA,IACD,CAAA;AAEA,IAAA,IAAI;AACH,MAAA,IAAA,MAAA,CAAA,MAAiB,MAAA,GAAS,MAAA,EAAQ;AACjC,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,GAAA,CAAI,GAAA,CAAI,CAAA;AAAA,IACT;AAAA,EACD,EAAA;AACD,UAAA;ADZA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-NXD6W2PH.cjs","sourcesContent":[null,"import type { NextFunction, Request, Response } from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type { QueryService, QueryStreamService } from \"@/services\";\nimport { AinHttpError } from \"@/types/agent\";\n\nexport class QueryController {\n\tprivate queryService;\n\tprivate queryStreamService;\n\n\tconstructor(\n\t\tqueryService: QueryService,\n\t\tqueryStreamService?: QueryStreamService,\n\t) {\n\t\tthis.queryService = queryService;\n\t\tthis.queryStreamService = queryStreamService;\n\t}\n\n\tpublic handleQueryRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst { type, message, threadId } = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\ttry {\n\t\t\tconst result = await this.queryService.handleQuery(\n\t\t\t\t{ type, userId, threadId },\n\t\t\t\tmessage,\n\t\t\t);\n\n\t\t\tres.status(200).json(result);\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\tnext: NextFunction,\n\t) => {\n\t\tconst { type, threadId, message } = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\tif (!this.queryStreamService) {\n\t\t\tconst error = new AinHttpError(\n\t\t\t\tStatusCodes.NOT_IMPLEMENTED,\n\t\t\t\t\"Stream query not supported\",\n\t\t\t);\n\t\t\treturn next(error);\n\t\t}\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 stream = this.queryStreamService.handleQueryStream(\n\t\t\t{ type, userId, threadId },\n\t\t\tmessage,\n\t\t);\n\n\t\ttry {\n\t\t\tfor await (const event of stream) {\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\tres.end();\n\t\t}\n\t};\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-VLMHDHXT.cjs","../../src/controllers/query.controller.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACHA,oDAA4B;AAIrB,IAAM,gBAAA,YAAN,MAAsB;AAAA,EACpB;AAAA,EACA;AAAA,EAER,WAAA,CACC,YAAA,EACA,kBAAA,EACC;AACD,IAAA,IAAA,CAAK,aAAA,EAAe,YAAA;AACpB,IAAA,IAAA,CAAK,mBAAA,EAAqB,kBAAA;AAAA,EAC3B;AAAA,iBAEO,mBAAA,EAAqB,MAAA,CAC3B,GAAA,EACA,GAAA,EACA,IAAA,EAAA,GACI;AACJ,IAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,EAAA,EAAI,GAAA,CAAI,IAAA;AACxC,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,MAAA;AAE1B,IAAA,IAAI;AACH,MAAA,MAAM,OAAA,EAAS,MAAM,IAAA,CAAK,YAAA,CAAa,WAAA;AAAA,QACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QACzB;AAAA,MACD,CAAA;AAEA,MAAA,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAAA,IAC5B,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,IAAA,EAAA,GACI;AACJ,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,QAAQ,EAAA,EAAI,GAAA,CAAI,IAAA;AACxC,IAAA,MAAM,OAAA,EAAS,GAAA,CAAI,MAAA,CAAO,MAAA;AAE1B,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,kBAAA,EAAoB;AAC7B,MAAA,MAAM,MAAA,EAAQ,IAAI,mCAAA;AAAA,QACjB,4BAAA,CAAY,eAAA;AAAA,QACZ;AAAA,MACD,CAAA;AACA,MAAA,OAAO,IAAA,CAAK,KAAK,CAAA;AAAA,IAClB;AAEA,IAAA,MAAM,OAAA,EAAS,IAAA,CAAK,kBAAA,CAAmB,iBAAA;AAAA,MACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,MACzB;AAAA,IACD,CAAA;AAEA,IAAA,IAAI;AACH,MAAA,IAAA,MAAA,CAAA,MAAiB,MAAA,GAAS,MAAA,EAAQ;AACjC,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,GAAA,CAAI,GAAA,CAAI,CAAA;AAAA,IACT;AAAA,EACD,EAAA;AACD,UAAA;ADZA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-VLMHDHXT.cjs","sourcesContent":[null,"import type { NextFunction, Request, Response } from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type { QueryService, QueryStreamService } from \"@/services\";\nimport { AinHttpError } from \"@/types/agent\";\n\nexport class QueryController {\n\tprivate queryService;\n\tprivate queryStreamService;\n\n\tconstructor(\n\t\tqueryService: QueryService,\n\t\tqueryStreamService?: QueryStreamService,\n\t) {\n\t\tthis.queryService = queryService;\n\t\tthis.queryStreamService = queryStreamService;\n\t}\n\n\tpublic handleQueryRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst { type, message, threadId } = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\ttry {\n\t\t\tconst result = await this.queryService.handleQuery(\n\t\t\t\t{ type, userId, threadId },\n\t\t\t\tmessage,\n\t\t\t);\n\n\t\t\tres.status(200).json(result);\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\tnext: NextFunction,\n\t) => {\n\t\tconst { type, threadId, message } = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\tif (!this.queryStreamService) {\n\t\t\tconst error = new AinHttpError(\n\t\t\t\tStatusCodes.NOT_IMPLEMENTED,\n\t\t\t\t\"Stream query not supported\",\n\t\t\t);\n\t\t\treturn next(error);\n\t\t}\n\n\t\tconst stream = this.queryStreamService.handleQueryStream(\n\t\t\t{ type, userId, threadId },\n\t\t\tmessage,\n\t\t);\n\n\t\ttry {\n\t\t\tfor await (const event of stream) {\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\tres.end();\n\t\t}\n\t};\n}\n"]}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
var _chunkNCYNT6TAcjs = require('./chunk-NCYNT6TA.cjs');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkVLMHDHXTcjs = require('./chunk-VLMHDHXT.cjs');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _chunkC35ER63Scjs = require('./chunk-C35ER63S.cjs');
|
|
10
|
-
|
|
11
|
-
// src/routes/query.routes.ts
|
|
12
|
-
var _express = require('express');
|
|
13
|
-
var createQueryRouter = (agent, allowStream = false) => {
|
|
14
|
-
const router = _express.Router.call(void 0, );
|
|
15
|
-
const queryService = new (0, _chunkNCYNT6TAcjs.QueryService)(
|
|
16
|
-
agent.modelModule,
|
|
17
|
-
agent.a2aModule,
|
|
18
|
-
agent.mcpModule,
|
|
19
|
-
agent.memoryModule,
|
|
20
|
-
agent.manifest.prompts
|
|
21
|
-
);
|
|
22
|
-
let queryStreamService;
|
|
23
|
-
if (allowStream) {
|
|
24
|
-
queryStreamService = new (0, _chunkC35ER63Scjs.QueryStreamService)(
|
|
25
|
-
agent.modelModule,
|
|
26
|
-
agent.a2aModule,
|
|
27
|
-
agent.mcpModule,
|
|
28
|
-
agent.memoryModule,
|
|
29
|
-
agent.manifest.prompts
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
const queryController = new (0, _chunkVLMHDHXTcjs.QueryController)(queryService, queryStreamService);
|
|
33
|
-
router.post("/", queryController.handleQueryRequest);
|
|
34
|
-
if (allowStream) {
|
|
35
|
-
router.post("/stream", queryController.handleQueryStreamRequest);
|
|
36
|
-
}
|
|
37
|
-
return router;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
exports.createQueryRouter = createQueryRouter;
|
|
43
|
-
//# sourceMappingURL=chunk-WVQY5D3N.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-WVQY5D3N.cjs","../../src/routes/query.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,kCAAuB;AAMhB,IAAM,kBAAA,EAAoB,CAChC,KAAA,EACA,YAAA,EAAc,KAAA,EAAA,GACF;AACZ,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAEtB,EAAA,MAAM,aAAA,EAAe,IAAI,mCAAA;AAAA,IACxB,KAAA,CAAM,WAAA;AAAA,IACN,KAAA,CAAM,SAAA;AAAA,IACN,KAAA,CAAM,SAAA;AAAA,IACN,KAAA,CAAM,YAAA;AAAA,IACN,KAAA,CAAM,QAAA,CAAS;AAAA,EAChB,CAAA;AAEA,EAAA,IAAI,kBAAA;AAEJ,EAAA,GAAA,CAAI,WAAA,EAAa;AAChB,IAAA,mBAAA,EAAqB,IAAI,yCAAA;AAAA,MACxB,KAAA,CAAM,WAAA;AAAA,MACN,KAAA,CAAM,SAAA;AAAA,MACN,KAAA,CAAM,SAAA;AAAA,MACN,KAAA,CAAM,YAAA;AAAA,MACN,KAAA,CAAM,QAAA,CAAS;AAAA,IAChB,CAAA;AAAA,EACD;AAEA,EAAA,MAAM,gBAAA,EAAkB,IAAI,sCAAA,CAAgB,YAAA,EAAc,kBAAkB,CAAA;AAC5E,EAAA,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,eAAA,CAAgB,kBAAkB,CAAA;AAEnD,EAAA,GAAA,CAAI,WAAA,EAAa;AAChB,IAAA,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,eAAA,CAAgB,wBAAwB,CAAA;AAAA,EAChE;AAEA,EAAA,OAAO,MAAA;AACR,CAAA;ADFA;AACA;AACE;AACF,8CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-WVQY5D3N.cjs","sourcesContent":[null,"import { Router } from \"express\";\nimport { QueryController } from \"@/controllers/query.controller.js\";\nimport type { AINAgent } from \"@/index.js\";\nimport { QueryService } from \"@/services/query.service.js\";\nimport { QueryStreamService } from \"@/services/query-stream.service.js\";\n\nexport const createQueryRouter = (\n\tagent: AINAgent,\n\tallowStream = false,\n): Router => {\n\tconst router = Router();\n\n\tconst queryService = new QueryService(\n\t\tagent.modelModule,\n\t\tagent.a2aModule,\n\t\tagent.mcpModule,\n\t\tagent.memoryModule,\n\t\tagent.manifest.prompts,\n\t);\n\n\tlet queryStreamService: QueryStreamService | undefined;\n\n\tif (allowStream) {\n\t\tqueryStreamService = new QueryStreamService(\n\t\t\tagent.modelModule,\n\t\t\tagent.a2aModule,\n\t\t\tagent.mcpModule,\n\t\t\tagent.memoryModule,\n\t\t\tagent.manifest.prompts,\n\t\t);\n\t}\n\n\tconst queryController = new QueryController(queryService, queryStreamService);\n\trouter.post(\"/\", queryController.handleQueryRequest);\n\n\tif (allowStream) {\n\t\trouter.post(\"/stream\", queryController.handleQueryStreamRequest);\n\t}\n\n\treturn router;\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/query.routes.ts"],"sourcesContent":["import { Router } from \"express\";\nimport { QueryController } from \"@/controllers/query.controller.js\";\nimport type { AINAgent } from \"@/index.js\";\nimport { QueryService } from \"@/services/query.service.js\";\nimport { QueryStreamService } from \"@/services/query-stream.service.js\";\n\nexport const createQueryRouter = (\n\tagent: AINAgent,\n\tallowStream = false,\n): Router => {\n\tconst router = Router();\n\n\tconst queryService = new QueryService(\n\t\tagent.modelModule,\n\t\tagent.a2aModule,\n\t\tagent.mcpModule,\n\t\tagent.memoryModule,\n\t\tagent.manifest.prompts,\n\t);\n\n\tlet queryStreamService: QueryStreamService | undefined;\n\n\tif (allowStream) {\n\t\tqueryStreamService = new QueryStreamService(\n\t\t\tagent.modelModule,\n\t\t\tagent.a2aModule,\n\t\t\tagent.mcpModule,\n\t\t\tagent.memoryModule,\n\t\t\tagent.manifest.prompts,\n\t\t);\n\t}\n\n\tconst queryController = new QueryController(queryService, queryStreamService);\n\trouter.post(\"/\", queryController.handleQueryRequest);\n\n\tif (allowStream) {\n\t\trouter.post(\"/stream\", queryController.handleQueryStreamRequest);\n\t}\n\n\treturn router;\n};\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,cAAc;AAMhB,IAAM,oBAAoB,CAChC,OACA,cAAc,UACF;AACZ,QAAM,SAAS,OAAO;AAEtB,QAAM,eAAe,IAAI;AAAA,IACxB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM,SAAS;AAAA,EAChB;AAEA,MAAI;AAEJ,MAAI,aAAa;AAChB,yBAAqB,IAAI;AAAA,MACxB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM,SAAS;AAAA,IAChB;AAAA,EACD;AAEA,QAAM,kBAAkB,IAAI,gBAAgB,cAAc,kBAAkB;AAC5E,SAAO,KAAK,KAAK,gBAAgB,kBAAkB;AAEnD,MAAI,aAAa;AAChB,WAAO,KAAK,WAAW,gBAAgB,wBAAwB;AAAA,EAChE;AAEA,SAAO;AACR;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/intents/trigger.service.ts"],"sourcesContent":["import type { MemoryModule, ModelModule } from \"@/modules\";\nimport type {\n\tMessageObject,\n\tThreadObject,\n\tTriggeredIntent,\n} from \"@/types/memory\";\nimport { loggers } from \"@/utils/logger\";\n\nexport class IntentTriggerService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule?: MemoryModule;\n\n\tconstructor(modelModule: ModelModule, memoryModule?: MemoryModule) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t}\n\n\t/**\n\t * Detects the intent from context.\n\t *\n\t * @param query - The user's input query\n\t * @param thread - The thread history\n\t * @returns The detected intent\n\t */\n\tpublic async intentTriggering(\n\t\tquery: string,\n\t\tthread: ThreadObject | undefined,\n\t): Promise<Array<TriggeredIntent>> {\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst intentMemory = this.memoryModule?.getIntentMemory();\n\t\tif (!intentMemory) {\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\t// 인텐트 목록 가져오기\n\t\tconst intents = await intentMemory.listIntents();\n\n\t\tif (intents.length === 0) {\n\t\t\tloggers.intentStream.warn(\"No intent found\");\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tconst intentList = intents\n\t\t\t.map((intent) => `- ${intent.name}: ${intent.description}`)\n\t\t\t.join(\"\\n\");\n\n\t\t// Convert thread messages to a string\n\t\tconst threadMessages = !thread\n\t\t\t? \"\"\n\t\t\t: thread.messages\n\t\t\t\t\t.sort((a, b) => a.timestamp - b.timestamp)\n\t\t\t\t\t.map((message: MessageObject) => {\n\t\t\t\t\t\tconst role =\n\t\t\t\t\t\t\tmessage.role === \"USER\"\n\t\t\t\t\t\t\t\t? \"User\"\n\t\t\t\t\t\t\t\t: message.role === \"MODEL\"\n\t\t\t\t\t\t\t\t\t? \"Assistant\"\n\t\t\t\t\t\t\t\t\t: \"System\";\n\t\t\t\t\t\tconst content = Array.isArray(message.content.parts)\n\t\t\t\t\t\t\t? message.content.parts.join(\" \")\n\t\t\t\t\t\t\t: String(message.content.parts);\n\t\t\t\t\t\treturn `${role}: \"\"\"${content}\"\"\"`;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\\n\");\n\n\t\tconst systemPrompt = `\nToday is ${new Date().toLocaleDateString()}.\nYou are an expert in accurately identifying user intentions.\n\nAvailable intent list:\n${intentList}\n\nPlease select and answer only from the above intent list. \nPlease return only the exact intent name without any additional explanations or text.`;\n\n\t\tconst userMessage = `The following is the conversation history with the user:\n\n${threadMessages}\n\nLast user question: \"${query}\"\n\nBased on the above conversation history, analyze the last user question and identify all relevant intents.\n\nInstructions:\n1. First, decompose the last user question into action-based subqueries (each representing a distinct action or task)\n2. Then, map each subquery to its corresponding intent from the available intent list\n3. For each subquery, provide a 2-3 sentence summary of what actions will be performed\n4. Multiple intents can be identified if the question covers various topics or actions\n5. Maintain the logical sequence of the original question when splitting into subqueries\n6. **Important**: If the query cannot be split into multiple subqueries (i.e., it represents a single action or request), treat the entire query as one subquery and still follow the output format\n\nOutput Format:\nYou MUST return the output in the following JSON format. Do not include any other text before or after the JSON:\n[\n {\n \"subquery\": \"<subquery_1>\",\n \"intentName\": \"<intent_name_1>\",\n\t\t\"actionPlan\": \"<2-3 sentence description of what will be done for this subquery>\"\n\t},\n {\n \"subquery\": \"<subquery_2>\",\n \"intentName\": \"<intent_name_2>\",\n\t\t\"actionPlan\": \"<2-3 sentence description of what will be done for this subquery>\"\n },\n ...\n]\n\nRequirements:\n- Each subquery should represent a single, actionable task or request\n- Preserve the original meaning and context when splitting queries\n- Select only from the provided intent list\n- DO NOT set intentName for any subquery that doesn't match available intents.\n- Even if the query is simple and cannot be decomposed, return it as a single-element array with one subquery object`;\n\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery: userMessage,\n\t\t\tsystemPrompt,\n\t\t});\n\n\t\tconst response = await modelInstance.fetch(messages);\n\t\tif (!response.content) {\n\t\t\tloggers.intent.warn(\"Cannot extract intent from query\");\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tlet subqueries: any;\n\t\ttry {\n\t\t\tsubqueries = JSON.parse(response.content);\n\t\t} catch (error: unknown) {\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tconst triggeredIntent: Array<TriggeredIntent> = [];\n\t\tfor (const { subquery, intentName, actionPlan } of subqueries) {\n\t\t\tconst item = { subquery, actionPlan } as TriggeredIntent;\n\t\t\tif (intentName) {\n\t\t\t\titem.intent = await intentMemory.getIntentByName(intentName);\n\t\t\t}\n\t\t\ttriggeredIntent.push(item);\n\t\t}\n\n\t\treturn triggeredIntent;\n\t}\n}\n"],"mappings":";;;;;AAQO,IAAM,uBAAN,MAA2B;AAAA,EACzB;AAAA,EACA;AAAA,EAER,YAAY,aAA0B,cAA6B;AAClE,SAAK,cAAc;AACnB,SAAK,eAAe;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,iBACZ,OACA,QACkC;AAClC,UAAM,gBAAgB,KAAK,YAAY,SAAS;AAChD,UAAM,eAAe,KAAK,cAAc,gBAAgB;AACxD,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAGA,UAAM,UAAU,MAAM,aAAa,YAAY;AAE/C,QAAI,QAAQ,WAAW,GAAG;AACzB,cAAQ,aAAa,KAAK,iBAAiB;AAC3C,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,UAAM,aAAa,QACjB,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,KAAK,OAAO,WAAW,EAAE,EACzD,KAAK,IAAI;AAGX,UAAM,iBAAiB,CAAC,SACrB,KACA,OAAO,SACN,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,EACxC,IAAI,CAAC,YAA2B;AAChC,YAAM,OACL,QAAQ,SAAS,SACd,SACA,QAAQ,SAAS,UAChB,cACA;AACL,YAAM,UAAU,MAAM,QAAQ,QAAQ,QAAQ,KAAK,IAChD,QAAQ,QAAQ,MAAM,KAAK,GAAG,IAC9B,OAAO,QAAQ,QAAQ,KAAK;AAC/B,aAAO,GAAG,IAAI,QAAQ,OAAO;AAAA,IAC9B,CAAC,EACA,KAAK,IAAI;AAEb,UAAM,eAAe;AAAA,YACZ,oBAAI,KAAK,GAAE,mBAAmB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIxC,UAAU;AAAA;AAAA;AAAA;AAKV,UAAM,cAAc;AAAA;AAAA,EAEpB,cAAc;AAAA;AAAA,uBAEO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmC1B,UAAM,WAAW,cAAc,iBAAiB;AAAA,MAC/C,OAAO;AAAA,MACP;AAAA,IACD,CAAC;AAED,UAAM,WAAW,MAAM,cAAc,MAAM,QAAQ;AACnD,QAAI,CAAC,SAAS,SAAS;AACtB,cAAQ,OAAO,KAAK,kCAAkC;AACtD,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,QAAI;AACJ,QAAI;AACH,mBAAa,KAAK,MAAM,SAAS,OAAO;AAAA,IACzC,SAAS,OAAgB;AACxB,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,UAAM,kBAA0C,CAAC;AACjD,eAAW,EAAE,UAAU,YAAY,WAAW,KAAK,YAAY;AAC9D,YAAM,OAAO,EAAE,UAAU,WAAW;AACpC,UAAI,YAAY;AACf,aAAK,SAAS,MAAM,aAAa,gBAAgB,UAAU;AAAA,MAC5D;AACA,sBAAgB,KAAK,IAAI;AAAA,IAC1B;AAEA,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/query.controller.ts"],"sourcesContent":["import type { NextFunction, Request, Response } from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type { QueryService, QueryStreamService } from \"@/services\";\nimport { AinHttpError } from \"@/types/agent\";\n\nexport class QueryController {\n\tprivate queryService;\n\tprivate queryStreamService;\n\n\tconstructor(\n\t\tqueryService: QueryService,\n\t\tqueryStreamService?: QueryStreamService,\n\t) {\n\t\tthis.queryService = queryService;\n\t\tthis.queryStreamService = queryStreamService;\n\t}\n\n\tpublic handleQueryRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst { type, message, threadId } = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\ttry {\n\t\t\tconst result = await this.queryService.handleQuery(\n\t\t\t\t{ type, userId, threadId },\n\t\t\t\tmessage,\n\t\t\t);\n\n\t\t\tres.status(200).json(result);\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\tnext: NextFunction,\n\t) => {\n\t\tconst { type, threadId, message } = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\tif (!this.queryStreamService) {\n\t\t\tconst error = new AinHttpError(\n\t\t\t\tStatusCodes.NOT_IMPLEMENTED,\n\t\t\t\t\"Stream query not supported\",\n\t\t\t);\n\t\t\treturn next(error);\n\t\t}\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 stream = this.queryStreamService.handleQueryStream(\n\t\t\t{ type, userId, threadId },\n\t\t\tmessage,\n\t\t);\n\n\t\ttry {\n\t\t\tfor await (const event of stream) {\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\tres.end();\n\t\t}\n\t};\n}\n"],"mappings":";;;;;AACA,SAAS,mBAAmB;AAIrB,IAAM,kBAAN,MAAsB;AAAA,EACpB;AAAA,EACA;AAAA,EAER,YACC,cACA,oBACC;AACD,SAAK,eAAe;AACpB,SAAK,qBAAqB;AAAA,EAC3B;AAAA,EAEO,qBAAqB,OAC3B,KACA,KACA,SACI;AACJ,UAAM,EAAE,MAAM,SAAS,SAAS,IAAI,IAAI;AACxC,UAAM,SAAS,IAAI,OAAO;AAE1B,QAAI;AACH,YAAM,SAAS,MAAM,KAAK,aAAa;AAAA,QACtC,EAAE,MAAM,QAAQ,SAAS;AAAA,QACzB;AAAA,MACD;AAEA,UAAI,OAAO,GAAG,EAAE,KAAK,MAAM;AAAA,IAC5B,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,2BAA2B,OACjC,KACA,KACA,SACI;AACJ,UAAM,EAAE,MAAM,UAAU,QAAQ,IAAI,IAAI;AACxC,UAAM,SAAS,IAAI,OAAO;AAE1B,QAAI,CAAC,KAAK,oBAAoB;AAC7B,YAAM,QAAQ,IAAI;AAAA,QACjB,YAAY;AAAA,QACZ;AAAA,MACD;AACA,aAAO,KAAK,KAAK;AAAA,IAClB;AAEA,QAAI,UAAU,KAAK;AAAA,MAClB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,qBAAqB;AAAA;AAAA,IACtB,CAAC;AACD,QAAI,aAAa;AACjB,QAAI,MAAM,SAAS;AAEnB,UAAM,SAAS,KAAK,mBAAmB;AAAA,MACtC,EAAE,MAAM,QAAQ,SAAS;AAAA,MACzB;AAAA,IACD;AAEA,QAAI;AACH,uBAAiB,SAAS,QAAQ;AACjC,YAAI;AAAA,UACH,UAAU,MAAM,KAAK;AAAA,QAAW,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA,QAC3D;AAAA,MACD;AAAA,IACD,SAAS,OAAgB;AACxB,YAAM,SACJ,OAAiB,WAAW;AAC9B,UAAI,MAAM;AAAA,QAAuB,MAAM;AAAA;AAAA,CAAM;AAAA,IAC9C,UAAE;AACD,UAAI,IAAI;AAAA,IACT;AAAA,EACD;AACD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/intents/fulfill-stream.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type {\n\tA2AModule,\n\tMCPModule,\n\tMemoryModule,\n\tModelModule,\n} from \"@/modules\";\nimport type { AinAgentPrompts } from \"@/types/agent\";\nimport { CONNECTOR_PROTOCOL_TYPE, type ConnectorTool } from \"@/types/connector\";\nimport {\n\ttype Intent,\n\ttype MessageObject,\n\tMessageRole,\n\ttype ThreadObject,\n\ttype TriggeredIntent,\n} from \"@/types/memory\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger\";\n\nexport class IntentFulfillStreamService {\n\tprivate modelModule: ModelModule;\n\tprivate a2aModule?: A2AModule;\n\tprivate mcpModule?: MCPModule;\n\tprivate memoryModule?: MemoryModule;\n\tprivate prompts?: AinAgentPrompts;\n\n\tconstructor(\n\t\tmodelModule: ModelModule,\n\t\ta2aModule?: A2AModule,\n\t\tmcpModule?: MCPModule,\n\t\tmemoryModule?: MemoryModule,\n\t\tprompts?: AinAgentPrompts,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.a2aModule = a2aModule;\n\t\tthis.mcpModule = mcpModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.prompts = prompts;\n\t}\n\n\tprivate async addToThreadMessages(\n\t\tthread: ThreadObject,\n\t\tparams: {\n\t\t\trole: MessageRole;\n\t\t\tcontent: string;\n\t\t\tmetadata?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\ttry {\n\t\t\tconst threadMemory = this.memoryModule?.getThreadMemory();\n\t\t\tconst { userId, threadId } = thread;\n\t\t\tconst newMessage: MessageObject = {\n\t\t\t\tmessageId: randomUUID(),\n\t\t\t\trole: params.role,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tcontent: { type: \"text\", parts: [params.content] },\n\t\t\t\tmetadata: params.metadata,\n\t\t\t};\n\t\t\tthread.messages.push(newMessage);\n\t\t\tawait threadMemory?.addMessagesToThread(userId, threadId, [newMessage]);\n\t\t} catch (error) {\n\t\t\tloggers.intentStream.error(\"Error adding message to thread\", error);\n\t\t}\n\t}\n\n\t/**\n\t * Fulfills the detected intent by generating a streaming response.\n\t *\n\t * Manages the complete inference loop including:\n\t * - Loading prompts and conversation history\n\t * - Collecting available tools from modules\n\t * - Executing model inference with tool support\n\t * - Processing tool calls iteratively until completion\n\t * - Streaming results as Server-Sent Events\n\t *\n\t * @param query - The user's input query\n\t * @param threadId - Thread identifier for context\n\t * @param thread - Previous conversation history\n\t * @param intent - Optional detected intent with custom prompt\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tprivate async *intentFulfilling(\n\t\tquery: string,\n\t\tthread: ThreadObject,\n\t\tintent?: Intent,\n\t): AsyncGenerator<StreamEvent> {\n\t\tloggers.intentStream.info(\"Intent fulfillment started\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tquery: query.substring(0, 100) + (query.length > 100 ? \"...\" : \"\"),\n\t\t\tintentName: intent?.name,\n\t\t});\n\n\t\tconst systemPrompt = `\nToday is ${new Date().toLocaleDateString()}.\n\n${this.prompts?.agent || \"\"}\n\n${this.prompts?.system || \"\"}\n\n${intent?.prompt || \"\"}\n\t`.trim();\n\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery,\n\t\t\tthread,\n\t\t\tsystemPrompt: systemPrompt.trim(),\n\t\t});\n\n\t\tconst tools: ConnectorTool[] = [];\n\t\tthis.mcpModule && tools.push(...this.mcpModule.getTools());\n\t\tthis.a2aModule && tools.push(...(await this.a2aModule.getTools()));\n\n\t\tconst processList: string[] = [];\n\n\t\twhile (true) {\n\t\t\tconst functions = modelInstance.convertToolsToFunctions(tools);\n\t\t\tconst responseStream = await modelInstance.fetchStreamWithContextMessage(\n\t\t\t\tmessages,\n\t\t\t\tfunctions,\n\t\t\t);\n\n\t\t\tconst assembledToolCalls: {\n\t\t\t\tid: string;\n\t\t\t\ttype: \"function\";\n\t\t\t\tfunction: { name: string; arguments: string };\n\t\t\t}[] = [];\n\n\t\t\tloggers.intentStream.info(\"messages\", { messages });\n\n\t\t\tfor await (const chunk of responseStream) {\n\t\t\t\tconst delta = chunk.delta;\n\t\t\t\tif (delta?.tool_calls) {\n\t\t\t\t\tfor (const { index, id, function: func } of delta.tool_calls) {\n\t\t\t\t\t\tassembledToolCalls[index] ??= {\n\t\t\t\t\t\t\tid: \"\",\n\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\tfunction: { name: \"\", arguments: \"\" },\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (id) assembledToolCalls[index].id = id;\n\t\t\t\t\t\tif (func?.name) assembledToolCalls[index].function.name = func.name;\n\t\t\t\t\t\tif (func?.arguments)\n\t\t\t\t\t\t\tassembledToolCalls[index].function.arguments += func.arguments;\n\t\t\t\t\t}\n\t\t\t\t} else if (chunk.delta?.content) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\t\tdata: { delta: chunk.delta.content },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tloggers.intentStream.debug(\"assembledToolCalls\", {\n\t\t\t\tassembledToolCalls,\n\t\t\t});\n\n\t\t\tif (assembledToolCalls.length > 0) {\n\t\t\t\tfor (const toolCall of assembledToolCalls) {\n\t\t\t\t\tconst toolCallId = randomUUID();\n\t\t\t\t\tconst toolName = toolCall.function.name;\n\t\t\t\t\tlet selectedTool: ConnectorTool | undefined;\n\t\t\t\t\tfor (const [index, toolTmp] of tools.entries()) {\n\t\t\t\t\t\tif (toolTmp.toolName === toolName) {\n\t\t\t\t\t\t\t// remove used tool to prevent infinite loop\n\t\t\t\t\t\t\tselectedTool = tools.splice(index, 1)[0];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!selectedTool) {\n\t\t\t\t\t\t// it cannot be happened...\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet toolResult = \"\";\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.mcpModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.MCP\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst toolArgs = JSON.parse(toolCall.function.arguments) as\n\t\t\t\t\t\t\t| { [x: string]: unknown }\n\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\tyield {\n\t\t\t\t\t\t\tevent: \"tool_start\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\t\tprotocol: CONNECTOR_PROTOCOL_TYPE.MCP,\n\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\ttoolArgs,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tloggers.intent.info(\"MCP tool call\", { toolName, toolArgs });\n\t\t\t\t\t\ttoolResult = await this.mcpModule.useTool(selectedTool, toolArgs);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tthis.a2aModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.A2A\n\t\t\t\t\t) {\n\t\t\t\t\t\tyield {\n\t\t\t\t\t\t\tevent: \"tool_start\",\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\t\tprotocol: CONNECTOR_PROTOCOL_TYPE.A2A,\n\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\ttoolArgs: null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tloggers.intent.info(\"A2A tool call\", { toolName });\n\t\t\t\t\t\ttoolResult = await this.a2aModule.useTool(\n\t\t\t\t\t\t\tselectedTool,\n\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\tthread.threadId,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Unrecognized tool type. It cannot be happened...\n\t\t\t\t\t\tloggers.intent.warn(\n\t\t\t\t\t\t\t`Unrecognized tool type: ${selectedTool.protocol}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tyield {\n\t\t\t\t\t\tevent: \"tool_output\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\tprotocol: selectedTool.protocol,\n\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\tresult: toolResult,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tloggers.intent.debug(\"toolResult\", { toolResult });\n\n\t\t\t\t\tprocessList.push(toolResult);\n\t\t\t\t\tmodelInstance.appendMessages(messages, toolResult);\n\n\t\t\t\t\t// remove used tool to prevent infinite loop\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tloggers.intentStream.info(\"Intent fulfillment completed\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\ttoolCallsExecuted: processList.length,\n\t\t\tintentName: intent?.name,\n\t\t});\n\t}\n\n\t/**\n\t * Detects the intent from context.\n\t *\n\t * @param intents - The user's input query\n\t * @param thread - The thread history\n\t * @returns The detected intent\n\t */\n\tpublic async *intentFulfillStream(\n\t\tintents: Array<TriggeredIntent>,\n\t\tthread: ThreadObject,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst streamStartTime = Date.now();\n\t\tloggers.intentStream.info(\"Stream session started\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tintentCount: intents.length,\n\t\t\tstartTime: new Date(streamStartTime).toISOString(),\n\t\t});\n\n\t\tlet finalResponseText = \"\";\n\n\t\tfor (let i = 0; i < intents.length; i++) {\n\t\t\tconst { subquery, intent, actionPlan } = intents[i];\n\t\t\tloggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);\n\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t// only use for inference, not stored in memory\n\t\t\tfinalResponseText !== \"\" &&\n\t\t\t\tthread.messages.push({\n\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\tcontent: { type: \"text\", parts: [finalResponseText] },\n\t\t\t\t\tmetadata: { isThinking: true },\n\t\t\t\t});\n\t\t\tawait this.addToThreadMessages(thread, {\n\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\tcontent: subquery,\n\t\t\t\tmetadata: {\n\t\t\t\t\tsubquery,\n\t\t\t\t\tisThinking: true,\n\t\t\t\t\tactionPlan: actionPlan,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tyield {\n\t\t\t\tevent: \"intent_process\",\n\t\t\t\tdata: { subquery, actionPlan: actionPlan || \"\" },\n\t\t\t};\n\n\t\t\tconst stream = this.intentFulfilling(subquery, thread, intent);\n\n\t\t\tfinalResponseText = \"\";\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t}\n\n\t\t\t\tif (event.event === \"text_chunk\" && i !== intents.length - 1) {\n\t\t\t\t\tcontinue; // skip intermediate text_chunk events\n\t\t\t\t}\n\t\t\t\tyield event;\n\t\t\t}\n\t\t}\n\n\t\tawait this.addToThreadMessages(thread, {\n\t\t\trole: MessageRole.MODEL,\n\t\t\tcontent: finalResponseText,\n\t\t});\n\n\t\tconst streamEndTime = Date.now();\n\t\tconst streamDuration = streamEndTime - streamStartTime;\n\n\t\tloggers.intentStream.info(\"Stream session completed\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tduration: `${streamDuration}ms`,\n\t\t\tendTime: new Date(streamEndTime).toISOString(),\n\t\t});\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/intents/fulfill.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type {\n\tA2AModule,\n\tMCPModule,\n\tMemoryModule,\n\tModelModule,\n} from \"@/modules\";\nimport type { AinAgentPrompts } from \"@/types/agent\";\nimport { CONNECTOR_PROTOCOL_TYPE, type ConnectorTool } from \"@/types/connector\";\nimport {\n\ttype Intent,\n\ttype MessageObject,\n\tMessageRole,\n\ttype ThreadObject,\n\ttype TriggeredIntent,\n} from \"@/types/memory\";\nimport { loggers } from \"@/utils/logger\";\n\nexport class IntentFulfillService {\n\tprivate modelModule: ModelModule;\n\tprivate a2aModule?: A2AModule;\n\tprivate mcpModule?: MCPModule;\n\tprivate memoryModule?: MemoryModule;\n\tprivate prompts?: AinAgentPrompts;\n\n\tconstructor(\n\t\tmodelModule: ModelModule,\n\t\ta2aModule?: A2AModule,\n\t\tmcpModule?: MCPModule,\n\t\tmemoryModule?: MemoryModule,\n\t\tprompts?: AinAgentPrompts,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.a2aModule = a2aModule;\n\t\tthis.mcpModule = mcpModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.prompts = prompts;\n\t}\n\n\tprivate async addToThreadMessages(\n\t\tthread: ThreadObject,\n\t\tparams: { role: MessageRole; content: string; metadata?: any },\n\t) {\n\t\ttry {\n\t\t\tconst threadMemory = this.memoryModule?.getThreadMemory();\n\t\t\tconst { userId, threadId } = thread;\n\t\t\tconst newMessage: MessageObject = {\n\t\t\t\tmessageId: randomUUID(),\n\t\t\t\trole: params.role,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tcontent: { type: \"text\", parts: [params.content] },\n\t\t\t\tmetadata: params.metadata,\n\t\t\t};\n\t\t\tthread.messages.push(newMessage);\n\t\t\tawait threadMemory?.addMessagesToThread(userId, threadId, [newMessage]);\n\t\t} catch (error) {\n\t\t\tloggers.intentStream.error(\"Error adding message to thread\", error);\n\t\t}\n\t}\n\n\t/**\n\t * Fulfills the detected intent by generating a streaming response.\n\t *\n\t * Manages the complete inference loop including:\n\t * - Loading prompts and conversation history\n\t * - Collecting available tools from modules\n\t * - Executing model inference with tool support\n\t * - Processing tool calls iteratively until completion\n\t * - Streaming results as Server-Sent Events\n\t *\n\t * @param query - The user's input query\n\t * @param threadId - Thread identifier for context\n\t * @param thread - Previous conversation history\n\t * @param intent - Optional detected intent with custom prompt\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tprivate async intentFulfilling(\n\t\tquery: string,\n\t\tthread: ThreadObject,\n\t\tintent?: Intent,\n\t): Promise<string> {\n\t\tconst systemPrompt = `\nToday is ${new Date().toLocaleDateString()}.\n\n${this.prompts?.agent || \"\"}\n\n${this.prompts?.system || \"\"}\n\n${intent?.prompt || \"\"}\n\t`.trim();\n\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery,\n\t\t\tthread,\n\t\t\tsystemPrompt: systemPrompt.trim(),\n\t\t});\n\n\t\tconst tools: ConnectorTool[] = [];\n\t\tthis.mcpModule && tools.push(...this.mcpModule.getTools());\n\t\tthis.a2aModule && tools.push(...(await this.a2aModule.getTools()));\n\n\t\tconst functions = modelInstance.convertToolsToFunctions(tools);\n\t\tlet finalMessage = \"\";\n\n\t\twhile (true) {\n\t\t\tconst response = await modelInstance.fetchWithContextMessage(\n\t\t\t\tmessages,\n\t\t\t\tfunctions,\n\t\t\t);\n\n\t\t\tloggers.intentStream.info(\"messages\", { messages });\n\n\t\t\tconst { content, toolCalls } = response;\n\n\t\t\tif (toolCalls) {\n\t\t\t\tfor (const toolCall of toolCalls) {\n\t\t\t\t\tconst toolName = toolCall.name;\n\t\t\t\t\tconst selectedTool = tools.filter(\n\t\t\t\t\t\t(tool) => tool.toolName === toolName,\n\t\t\t\t\t)[0];\n\n\t\t\t\t\tlet toolResult = \"\";\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.mcpModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.MCP\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst toolArgs = toolCall.arguments as\n\t\t\t\t\t\t\t| { [x: string]: unknown }\n\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\tloggers.intent.debug(\"MCP tool call\", { toolName, toolArgs });\n\t\t\t\t\t\ttoolResult = await this.mcpModule.useTool(selectedTool, toolArgs);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tthis.a2aModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.A2A\n\t\t\t\t\t) {\n\t\t\t\t\t\ttoolResult = await this.a2aModule.useTool(\n\t\t\t\t\t\t\tselectedTool,\n\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\tthread.threadId,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Unrecognized tool type. It cannot be happened...\n\t\t\t\t\t\tloggers.intent.warn(\n\t\t\t\t\t\t\t`Unrecognized tool type: ${selectedTool.protocol}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tloggers.intent.debug(\"toolResult\", { toolResult });\n\n\t\t\t\t\tmodelInstance.appendMessages(messages, toolResult);\n\t\t\t\t}\n\t\t\t} else if (content) {\n\t\t\t\tfinalMessage = content;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn finalMessage;\n\t}\n\n\t/**\n\t * Detects the intent from context.\n\t *\n\t * @param intents - The user's input query\n\t * @param thread - The thread history\n\t * @returns The detected intent\n\t */\n\tpublic async intentFulfill(\n\t\tintents: Array<TriggeredIntent>,\n\t\tthread: ThreadObject,\n\t): Promise<string> {\n\t\tlet finalResponseText = \"\";\n\t\tfor (let i = 0; i < intents.length; i++) {\n\t\t\tconst { subquery, intent, actionPlan } = intents[i];\n\t\t\tloggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);\n\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t// only use for inference, not stored in memory\n\t\t\tfinalResponseText !== \"\" &&\n\t\t\t\tthread.messages.push({\n\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\tcontent: { type: \"text\", parts: [finalResponseText] },\n\t\t\t\t\tmetadata: { isThinking: true },\n\t\t\t\t});\n\t\t\tawait this.addToThreadMessages(thread, {\n\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\tcontent: subquery,\n\t\t\t\tmetadata: {\n\t\t\t\t\tsubquery,\n\t\t\t\t\tisThinking: true,\n\t\t\t\t\tactionPlan: actionPlan,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tfinalResponseText = await this.intentFulfilling(subquery, thread, intent);\n\t\t}\n\n\t\tawait this.addToThreadMessages(thread, {\n\t\t\trole: MessageRole.MODEL,\n\t\t\tcontent: finalResponseText,\n\t\t});\n\n\t\treturn finalResponseText;\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/query-stream.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type {\n\tA2AModule,\n\tMCPModule,\n\tMemoryModule,\n\tModelModule,\n} from \"@/modules/index.js\";\nimport { type AinAgentPrompts, AinHttpError } from \"@/types/agent.js\";\nimport {\n\tMessageRole,\n\ttype ThreadMetadata,\n\ttype ThreadObject,\n\ttype ThreadType,\n\ttype TriggeredIntent,\n} from \"@/types/memory.js\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger.js\";\nimport { IntentFulfillStreamService } from \"./intents/fulfill-stream.service\";\nimport { IntentTriggerService } from \"./intents/trigger.service\";\n\n/**\n * Service for processing user queries through the agent's AI pipeline.\n *\n * Orchestrates the query processing workflow including intent detection,\n * model inference, tool execution, and response generation. Manages\n * conversation context and coordinates between different modules.\n */\nexport class QueryStreamService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule?: MemoryModule;\n\tprivate intentTriggerService: IntentTriggerService;\n\tprivate intentFulfillStreamService: IntentFulfillStreamService;\n\n\tconstructor(\n\t\tmodelModule: ModelModule,\n\t\ta2aModule?: A2AModule,\n\t\tmcpModule?: MCPModule,\n\t\tmemoryModule?: MemoryModule,\n\t\tprompts?: AinAgentPrompts,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.intentTriggerService = new IntentTriggerService(\n\t\t\tmodelModule,\n\t\t\tmemoryModule,\n\t\t);\n\t\tthis.intentFulfillStreamService = new IntentFulfillStreamService(\n\t\t\tmodelModule,\n\t\t\ta2aModule,\n\t\t\tmcpModule,\n\t\t\tmemoryModule,\n\t\t\tprompts,\n\t\t);\n\t}\n\n\t/**\n\t * Generates a title for the conversation based on the query.\n\t *\n\t * @param query - The user's input query\n\t * @returns Promise resolving to a generated title\n\t */\n\n\tprivate async generateTitle(query: string): Promise<string> {\n\t\tconst DEFAULT_TITLE = \"New Chat\";\n\t\ttry {\n\t\t\tconst modelInstance = this.modelModule.getModel();\n\t\t\tconst messages = modelInstance.generateMessages({\n\t\t\t\tquery,\n\t\t\t\tsystemPrompt: `Today's date: ${new Date().toISOString().split(\"T\")[0]} (YYYY-MM-DD format).\n\tYou are a helpful assistant that generates titles for conversations.\n Please analyze the user's query and create a concise title that accurately reflects the conversation's core topic.\n The title must be no more than 5 words long.\n Respond with only the title. Do not include any punctuation or extra explanations.`,\n\t\t\t});\n\t\t\tconst response = await modelInstance.fetch(messages);\n\t\t\treturn response.content || DEFAULT_TITLE;\n\t\t} catch (error) {\n\t\t\tloggers.intentStream.error(\"Error generating title\", {\n\t\t\t\terror,\n\t\t\t\tquery,\n\t\t\t});\n\t\t\treturn DEFAULT_TITLE;\n\t\t}\n\t}\n\n\t/**\n\t * Main entry point for processing streaming user queries.\n\t *\n\t * Handles the complete query lifecycle:\n\t * 1. Loads or creates thread from memory\n\t * 2. Detects intent from the query\n\t * 3. Fulfills the intent with streaming AI response\n\t * 4. Updates conversation history in real-time\n\t *\n\t * @param threadMetadata - Metadata containing type, userId, and optional threadId\n\t * @param threadMetadata.type - The type of thread (e.g., chat, workflow)\n\t * @param threadMetadata.userId - The user's unique identifier\n\t * @param threadMetadata.threadId - Optional thread identifier\n\t * @param query - The user's input query\n\t * @returns AsyncGenerator yielding StreamEvent objects for SSE\n\t */\n\tpublic async *handleQueryStream(\n\t\tthreadMetadata: {\n\t\t\ttype: ThreadType;\n\t\t\tuserId: string;\n\t\t\tthreadId?: string;\n\t\t},\n\t\tquery: string,\n\t\tisA2A?: boolean,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst { type, userId } = threadMetadata;\n\t\tconst threadMemory = this.memoryModule?.getThreadMemory();\n\n\t\t// 1. Load or create thread\n\t\tlet threadId = threadMetadata.threadId;\n\t\tlet thread: ThreadObject | undefined;\n\t\tif (threadId) {\n\t\t\tthread = await threadMemory?.getThread(userId, threadId);\n\t\t\tif (!thread && !isA2A) {\n\t\t\t\tthrow new AinHttpError(StatusCodes.NOT_FOUND, \"Thread not found\");\n\t\t\t}\n\t\t}\n\n\t\tthreadId ??= randomUUID();\n\t\tif (!thread) {\n\t\t\tconst title = await this.generateTitle(query);\n\t\t\tconst metadata: ThreadMetadata = (await threadMemory?.createThread(\n\t\t\t\ttype,\n\t\t\t\tuserId,\n\t\t\t\tthreadId,\n\t\t\t\ttitle,\n\t\t\t)) || { type, userId, threadId, title };\n\t\t\tthread = { ...metadata, messages: [] };\n\t\t\tloggers.intent.info(`Create new thread: ${threadId}`);\n\t\t\tyield { event: \"thread_id\", data: { type, userId, threadId, title } };\n\t\t}\n\n\t\t// 2. intent triggering\n\t\tconst triggeredIntent: Array<TriggeredIntent> =\n\t\t\tawait this.intentTriggerService.intentTriggering(query, thread);\n\t\tloggers.intent.debug(\"Triggered intents\", { triggeredIntent });\n\n\t\t// only add for storage, not for inference\n\t\tawait threadMemory?.addMessagesToThread(userId, threadId, [\n\t\t\t{\n\t\t\t\tmessageId: randomUUID(),\n\t\t\t\trole: MessageRole.USER,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tcontent: { type: \"text\", parts: [query] },\n\t\t\t\tmetadata: {\n\t\t\t\t\tintents: triggeredIntent\n\t\t\t\t\t\t.filter((intent) => !!intent.intent)\n\t\t\t\t\t\t.map((intent) => ({\n\t\t\t\t\t\t\tid: intent.intent?.id,\n\t\t\t\t\t\t\tsubquery: intent.subquery,\n\t\t\t\t\t\t})),\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\t// 3. intent fulfillment\n\t\tconst stream = this.intentFulfillStreamService.intentFulfillStream(\n\t\t\ttriggeredIntent,\n\t\t\tthread,\n\t\t);\n\n\t\tfor await (const event of stream) {\n\t\t\tyield event;\n\t\t}\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modules/models/model.module.ts"],"sourcesContent":["import type { BaseModel } from \"./base.model.js\";\n\n/**\n * Module for managing multiple AI model implementations.\n *\n * Allows registration of multiple models and provides a unified interface\n * for accessing them. Supports setting a default model for convenience.\n * All models must extend the BaseModel class for consistent API.\n *\n * @example\n * ```typescript\n * const modelModule = new ModelModule();\n * modelModule.addModel(\"gpt-4\", new OpenAIModel(\"gpt-4\"), true);\n * modelModule.addModel(\"gemini\", new GeminiModel(\"gemini-pro\"));\n *\n * const defaultModel = modelModule.getModel();\n * const specificModel = modelModule.getModel(\"gemini\");\n * ```\n */\nexport class ModelModule {\n\t/** Registry of available models indexed by name */\n\tprivate models: { [name: string]: BaseModel<unknown, unknown> } = {};\n\t/** Name of the default model to use when none specified */\n\tprivate defaultModelName?: string;\n\n\t/**\n\t * Registers a new model with the module.\n\t *\n\t * @param name - Unique identifier for the model\n\t * @param model - Model instance implementing BaseModel\n\t * @param isDefault - Whether to set this as the default model\n\t */\n\tpublic addModel(\n\t\tname: string,\n\t\tmodel: BaseModel<unknown, unknown>,\n\t\tisDefault?: boolean,\n\t) {\n\t\tthis.models[name] = model;\n\t\tif (isDefault || !this.defaultModelName) {\n\t\t\tthis.defaultModelName = name;\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves a model by name or returns the default model.\n\t *\n\t * @param name - Optional model name to retrieve\n\t * @returns The requested model or default model if name not provided\n\t * @throws Error if no default model is set and name is not provided\n\t */\n\tpublic getModel(name?: string): BaseModel<unknown, unknown> {\n\t\tif (!this.defaultModelName) {\n\t\t\tthrow Error(\"No default model\");\n\t\t}\n\n\t\tif (!name || !this.models[name]) {\n\t\t\treturn this.models[this.defaultModelName];\n\t\t}\n\t\treturn this.models[name];\n\t}\n\n\t/**\n\t * Returns information about all registered models.\n\t *\n\t * @returns Object containing all models and the default model name\n\t */\n\tpublic getModelList() {\n\t\treturn {\n\t\t\tmodels: Object.keys(this.models),\n\t\t\tdefaultModelName: this.defaultModelName,\n\t\t};\n\t}\n}\n"],"mappings":";AAmBO,IAAM,cAAN,MAAkB;AAAA;AAAA,EAEhB,SAA0D,CAAC;AAAA;AAAA,EAE3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,SACN,MACA,OACA,WACC;AACD,SAAK,OAAO,IAAI,IAAI;AACpB,QAAI,aAAa,CAAC,KAAK,kBAAkB;AACxC,WAAK,mBAAmB;AAAA,IACzB;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,SAAS,MAA4C;AAC3D,QAAI,CAAC,KAAK,kBAAkB;AAC3B,YAAM,MAAM,kBAAkB;AAAA,IAC/B;AAEA,QAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,GAAG;AAChC,aAAO,KAAK,OAAO,KAAK,gBAAgB;AAAA,IACzC;AACA,WAAO,KAAK,OAAO,IAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,eAAe;AACrB,WAAO;AAAA,MACN,QAAQ,OAAO,KAAK,KAAK,MAAM;AAAA,MAC/B,kBAAkB,KAAK;AAAA,IACxB;AAAA,EACD;AACD;","names":[]}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// src/modules/memory/memory.module.ts
|
|
2
|
-
var MemoryModule = class {
|
|
3
|
-
agentMemory;
|
|
4
|
-
threadMemory;
|
|
5
|
-
intentMemory;
|
|
6
|
-
constructor(config) {
|
|
7
|
-
this.agentMemory = config.agent;
|
|
8
|
-
this.threadMemory = config.thread;
|
|
9
|
-
this.intentMemory = config.intent;
|
|
10
|
-
}
|
|
11
|
-
async initialize() {
|
|
12
|
-
const connectPromises = [];
|
|
13
|
-
if (this.agentMemory) {
|
|
14
|
-
connectPromises.push(this.agentMemory.connect());
|
|
15
|
-
}
|
|
16
|
-
if (this.threadMemory) {
|
|
17
|
-
connectPromises.push(this.threadMemory.connect());
|
|
18
|
-
}
|
|
19
|
-
if (this.intentMemory) {
|
|
20
|
-
connectPromises.push(this.intentMemory.connect());
|
|
21
|
-
}
|
|
22
|
-
await Promise.all(connectPromises);
|
|
23
|
-
}
|
|
24
|
-
async shutdown() {
|
|
25
|
-
const disconnectPromises = [];
|
|
26
|
-
if (this.agentMemory?.isConnected()) {
|
|
27
|
-
disconnectPromises.push(this.agentMemory.disconnect());
|
|
28
|
-
}
|
|
29
|
-
if (this.threadMemory?.isConnected()) {
|
|
30
|
-
disconnectPromises.push(this.threadMemory.disconnect());
|
|
31
|
-
}
|
|
32
|
-
if (this.intentMemory?.isConnected()) {
|
|
33
|
-
disconnectPromises.push(this.intentMemory.disconnect());
|
|
34
|
-
}
|
|
35
|
-
await Promise.all(disconnectPromises);
|
|
36
|
-
}
|
|
37
|
-
getAgentMemory() {
|
|
38
|
-
return this.agentMemory;
|
|
39
|
-
}
|
|
40
|
-
getThreadMemory() {
|
|
41
|
-
return this.threadMemory;
|
|
42
|
-
}
|
|
43
|
-
getIntentMemory() {
|
|
44
|
-
return this.intentMemory;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export {
|
|
49
|
-
MemoryModule
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=chunk-XBMWWTSX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modules/memory/memory.module.ts"],"sourcesContent":["import type {\n\tIAgentMemory,\n\tIIntentMemory,\n\tIThreadMemory,\n} from \"./base.memory.js\";\n\nexport interface MemoryConfig {\n\tagent?: IAgentMemory;\n\tthread?: IThreadMemory;\n\tintent?: IIntentMemory;\n}\n\nexport class MemoryModule {\n\tprivate agentMemory?: IAgentMemory;\n\tprivate threadMemory?: IThreadMemory;\n\tprivate intentMemory?: IIntentMemory;\n\n\tconstructor(config: MemoryConfig) {\n\t\tthis.agentMemory = config.agent;\n\t\tthis.threadMemory = config.thread;\n\t\tthis.intentMemory = config.intent;\n\t}\n\n\tasync initialize(): Promise<void> {\n\t\tconst connectPromises: Promise<void>[] = [];\n\n\t\tif (this.agentMemory) {\n\t\t\tconnectPromises.push(this.agentMemory.connect());\n\t\t}\n\t\tif (this.threadMemory) {\n\t\t\tconnectPromises.push(this.threadMemory.connect());\n\t\t}\n\t\tif (this.intentMemory) {\n\t\t\tconnectPromises.push(this.intentMemory.connect());\n\t\t}\n\n\t\tawait Promise.all(connectPromises);\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\tconst disconnectPromises: Promise<void>[] = [];\n\n\t\tif (this.agentMemory?.isConnected()) {\n\t\t\tdisconnectPromises.push(this.agentMemory.disconnect());\n\t\t}\n\t\tif (this.threadMemory?.isConnected()) {\n\t\t\tdisconnectPromises.push(this.threadMemory.disconnect());\n\t\t}\n\t\tif (this.intentMemory?.isConnected()) {\n\t\t\tdisconnectPromises.push(this.intentMemory.disconnect());\n\t\t}\n\n\t\tawait Promise.all(disconnectPromises);\n\t}\n\n\tpublic getAgentMemory(): IAgentMemory | undefined {\n\t\treturn this.agentMemory;\n\t}\n\n\tpublic getThreadMemory(): IThreadMemory | undefined {\n\t\treturn this.threadMemory;\n\t}\n\n\tpublic getIntentMemory(): IIntentMemory | undefined {\n\t\treturn this.intentMemory;\n\t}\n}\n"],"mappings":";AAYO,IAAM,eAAN,MAAmB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,QAAsB;AACjC,SAAK,cAAc,OAAO;AAC1B,SAAK,eAAe,OAAO;AAC3B,SAAK,eAAe,OAAO;AAAA,EAC5B;AAAA,EAEA,MAAM,aAA4B;AACjC,UAAM,kBAAmC,CAAC;AAE1C,QAAI,KAAK,aAAa;AACrB,sBAAgB,KAAK,KAAK,YAAY,QAAQ,CAAC;AAAA,IAChD;AACA,QAAI,KAAK,cAAc;AACtB,sBAAgB,KAAK,KAAK,aAAa,QAAQ,CAAC;AAAA,IACjD;AACA,QAAI,KAAK,cAAc;AACtB,sBAAgB,KAAK,KAAK,aAAa,QAAQ,CAAC;AAAA,IACjD;AAEA,UAAM,QAAQ,IAAI,eAAe;AAAA,EAClC;AAAA,EAEA,MAAM,WAA0B;AAC/B,UAAM,qBAAsC,CAAC;AAE7C,QAAI,KAAK,aAAa,YAAY,GAAG;AACpC,yBAAmB,KAAK,KAAK,YAAY,WAAW,CAAC;AAAA,IACtD;AACA,QAAI,KAAK,cAAc,YAAY,GAAG;AACrC,yBAAmB,KAAK,KAAK,aAAa,WAAW,CAAC;AAAA,IACvD;AACA,QAAI,KAAK,cAAc,YAAY,GAAG;AACrC,yBAAmB,KAAK,KAAK,aAAa,WAAW,CAAC;AAAA,IACvD;AAEA,UAAM,QAAQ,IAAI,kBAAkB;AAAA,EACrC;AAAA,EAEO,iBAA2C;AACjD,WAAO,KAAK;AAAA,EACb;AAAA,EAEO,kBAA6C;AACnD,WAAO,KAAK;AAAA,EACb;AAAA,EAEO,kBAA6C;AACnD,WAAO,KAAK;AAAA,EACb;AACD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/agent.ts"],"sourcesContent":["import type { StatusCodes } from \"http-status-codes\";\n\n/**\n * Custom prompts configuration for the agent.\n *\n * Allows customization of agent behavior through system and agent-level prompts.\n */\nexport type AinAgentPrompts = {\n\t/** Agent-level prompt that defines the agent's personality and behavior */\n\tagent?: string;\n\t/** System-level prompt that provides context and instructions */\n\tsystem?: string;\n};\n\n/**\n * Agent manifest containing essential metadata and configuration.\n *\n * The manifest defines the agent's identity, version, and optional configuration\n * such as the public URL for A2A protocol support and custom prompts.\n *\n * @example\n * ```typescript\n * const manifest: AinAgentManifest = {\n * name: \"CustomerSupportAgent\",\n * description: \"AI agent for handling customer support queries\",\n * version: \"1.0.0\",\n * url: \"https://api.example.com/agent\",\n * prompts: {\n * system: \"You are a helpful customer support assistant.\",\n * agent: \"Always be polite and provide detailed solutions.\"\n * }\n * };\n * ```\n */\nexport type AinAgentManifest = {\n\t/** Unique name identifier for the agent */\n\tname: string;\n\t/** Human-readable description of the agent's purpose and capabilities */\n\tdescription: string;\n\t/** Optional public URL for A2A protocol discovery and communication */\n\turl?: string;\n\t/** Optional custom prompts to configure agent behavior */\n\tprompts?: AinAgentPrompts;\n};\n\nexport class AinHttpError extends Error {\n\tpublic status?: StatusCodes;\n\n\tconstructor(status: StatusCodes, message: string) {\n\t\tsuper(message);\n\t\tthis.status = status;\n\t}\n}\n"],"mappings":";AA6CO,IAAM,eAAN,cAA2B,MAAM;AAAA,EAChC;AAAA,EAEP,YAAY,QAAqB,SAAiB;AACjD,UAAM,OAAO;AACb,SAAK,SAAS;AAAA,EACf;AACD;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|