@ainetwork/adk 0.2.8 → 0.2.10

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.
Files changed (373) hide show
  1. package/dist/cjs/{chunk-2GJKQSDQ.cjs → chunk-2EPZZPWG.cjs} +3 -3
  2. package/dist/cjs/{chunk-3SYBDGMH.cjs.map → chunk-2EPZZPWG.cjs.map} +1 -1
  3. package/dist/cjs/chunk-2P3ZBNVN.cjs +45 -0
  4. package/dist/cjs/chunk-2P3ZBNVN.cjs.map +1 -0
  5. package/dist/cjs/{chunk-OAPMGKE2.cjs → chunk-33ZJ74NB.cjs} +15 -9
  6. package/dist/cjs/chunk-33ZJ74NB.cjs.map +1 -0
  7. package/dist/cjs/{chunk-MXDXXOXE.cjs → chunk-3X2EKOWC.cjs} +15 -7
  8. package/dist/cjs/chunk-3X2EKOWC.cjs.map +1 -0
  9. package/dist/cjs/chunk-BQ6BY5HN.cjs +28 -0
  10. package/dist/cjs/chunk-BQ6BY5HN.cjs.map +1 -0
  11. package/dist/cjs/{chunk-WGFYVOP5.cjs → chunk-CKIA6H2D.cjs} +5 -5
  12. package/dist/cjs/{chunk-WGFYVOP5.cjs.map → chunk-CKIA6H2D.cjs.map} +1 -1
  13. package/dist/cjs/{chunk-W4PRBE6H.cjs → chunk-G3KWCMMQ.cjs} +32 -10
  14. package/dist/cjs/chunk-G3KWCMMQ.cjs.map +1 -0
  15. package/dist/cjs/chunk-IJBFU7GX.cjs +28 -0
  16. package/dist/cjs/chunk-IJBFU7GX.cjs.map +1 -0
  17. package/dist/cjs/{chunk-AY3PG2UZ.cjs → chunk-JRFTCDMQ.cjs} +15 -9
  18. package/dist/cjs/chunk-JRFTCDMQ.cjs.map +1 -0
  19. package/dist/cjs/{chunk-4PFJ7PDN.cjs → chunk-LNLZLOW2.cjs} +6 -6
  20. package/dist/cjs/{chunk-3GPSKXKA.cjs.map → chunk-LNLZLOW2.cjs.map} +1 -1
  21. package/dist/cjs/{chunk-KAF2EDPZ.cjs → chunk-M6YACFW4.cjs} +13 -7
  22. package/dist/cjs/chunk-M6YACFW4.cjs.map +1 -0
  23. package/dist/cjs/chunk-MT722JJC.cjs +1 -0
  24. package/dist/cjs/chunk-MT722JJC.cjs.map +1 -0
  25. package/dist/cjs/chunk-NWIZHGCS.cjs +28 -0
  26. package/dist/cjs/chunk-NWIZHGCS.cjs.map +1 -0
  27. package/dist/cjs/chunk-QIHLINHW.cjs +106 -0
  28. package/dist/cjs/chunk-QIHLINHW.cjs.map +1 -0
  29. package/dist/cjs/{chunk-3GPSKXKA.cjs → chunk-QXLAC5OS.cjs} +6 -6
  30. package/dist/cjs/{chunk-4PFJ7PDN.cjs.map → chunk-QXLAC5OS.cjs.map} +1 -1
  31. package/dist/cjs/{chunk-IKPQ52KY.cjs → chunk-QZHI7LLI.cjs} +1 -1
  32. package/dist/cjs/chunk-QZHI7LLI.cjs.map +1 -0
  33. package/dist/cjs/chunk-R3K7LK6W.cjs +134 -0
  34. package/dist/cjs/chunk-R3K7LK6W.cjs.map +1 -0
  35. package/dist/cjs/chunk-S454SFT6.cjs +129 -0
  36. package/dist/cjs/chunk-S454SFT6.cjs.map +1 -0
  37. package/dist/cjs/chunk-S6BHSEXF.cjs +26 -0
  38. package/dist/cjs/chunk-S6BHSEXF.cjs.map +1 -0
  39. package/dist/cjs/{chunk-2NKMH5DO.cjs → chunk-SB5GVESM.cjs} +6 -6
  40. package/dist/cjs/{chunk-5ARBSKWU.cjs.map → chunk-SB5GVESM.cjs.map} +1 -1
  41. package/dist/cjs/chunk-SC6WN4ED.cjs +28 -0
  42. package/dist/cjs/chunk-SC6WN4ED.cjs.map +1 -0
  43. package/dist/cjs/{chunk-3SYBDGMH.cjs → chunk-SH6JCUEJ.cjs} +3 -3
  44. package/dist/cjs/{chunk-2GJKQSDQ.cjs.map → chunk-SH6JCUEJ.cjs.map} +1 -1
  45. package/dist/cjs/chunk-T7444BWH.cjs +134 -0
  46. package/dist/cjs/chunk-T7444BWH.cjs.map +1 -0
  47. package/dist/cjs/chunk-TILUFTIG.cjs +111 -0
  48. package/dist/cjs/chunk-TILUFTIG.cjs.map +1 -0
  49. package/dist/cjs/{chunk-45H4WOKN.cjs → chunk-VRCXZ4LV.cjs} +3 -3
  50. package/dist/cjs/{chunk-3IB2WAKN.cjs.map → chunk-VRCXZ4LV.cjs.map} +1 -1
  51. package/dist/cjs/{chunk-MADCWTBO.cjs → chunk-W224GBH7.cjs} +1 -1
  52. package/dist/cjs/{chunk-CD3RWOCR.cjs.map → chunk-W224GBH7.cjs.map} +1 -1
  53. package/dist/cjs/{chunk-3IB2WAKN.cjs → chunk-WGSFHDDZ.cjs} +3 -3
  54. package/dist/cjs/{chunk-45H4WOKN.cjs.map → chunk-WGSFHDDZ.cjs.map} +1 -1
  55. package/dist/cjs/chunk-X7FADTCP.cjs +110 -0
  56. package/dist/cjs/chunk-X7FADTCP.cjs.map +1 -0
  57. package/dist/cjs/chunk-Y337ZZKZ.cjs +129 -0
  58. package/dist/cjs/chunk-Y337ZZKZ.cjs.map +1 -0
  59. package/dist/cjs/{chunk-5ARBSKWU.cjs → chunk-YU3TYLMR.cjs} +5 -5
  60. package/dist/cjs/{chunk-2NKMH5DO.cjs.map → chunk-YU3TYLMR.cjs.map} +1 -1
  61. package/dist/cjs/{chunk-TYLHXACM.cjs → chunk-ZVPJLZIQ.cjs} +6 -2
  62. package/dist/cjs/chunk-ZVPJLZIQ.cjs.map +1 -0
  63. package/dist/cjs/controllers/index.cjs +4 -4
  64. package/dist/cjs/controllers/intent.controller.cjs +7 -0
  65. package/dist/cjs/controllers/intent.controller.cjs.map +1 -0
  66. package/dist/cjs/index.cjs +28 -21
  67. package/dist/cjs/index.cjs.map +1 -1
  68. package/dist/cjs/modules/a2a/a2a.module.cjs +3 -3
  69. package/dist/cjs/modules/index.cjs +7 -7
  70. package/dist/cjs/modules/index.cjs.map +1 -1
  71. package/dist/cjs/routes/a2a.routes.cjs +6 -6
  72. package/dist/cjs/routes/api.routes.cjs +5 -5
  73. package/dist/cjs/routes/index.cjs +17 -17
  74. package/dist/cjs/routes/index.cjs.map +1 -1
  75. package/dist/cjs/routes/intent.routes.cjs +20 -0
  76. package/dist/cjs/routes/intent.routes.cjs.map +1 -0
  77. package/dist/cjs/routes/query.routes.cjs +8 -8
  78. package/dist/cjs/services/index.cjs +19 -9
  79. package/dist/cjs/services/index.cjs.map +1 -1
  80. package/dist/cjs/services/intents/fulfill-stream.service.cjs +3 -3
  81. package/dist/cjs/services/intents/fulfill.service.cjs +3 -3
  82. package/dist/cjs/services/intents/trigger.service.cjs +2 -2
  83. package/dist/cjs/services/query-stream.service.cjs +5 -5
  84. package/dist/cjs/services/query.service.cjs +5 -5
  85. package/dist/cjs/services/thread.service.cjs +7 -0
  86. package/dist/cjs/services/thread.service.cjs.map +1 -0
  87. package/dist/cjs/types/memory.cjs +2 -2
  88. package/dist/esm/{chunk-XTPDMHUI.js → chunk-5YU3CTYW.js} +11 -5
  89. package/dist/esm/{chunk-XTPDMHUI.js.map → chunk-5YU3CTYW.js.map} +1 -1
  90. package/dist/esm/{chunk-6OHUQ6DV.js → chunk-6PT5BUHR.js} +5 -5
  91. package/dist/esm/{chunk-IRGR2OHS.js → chunk-7276G7GV.js} +11 -5
  92. package/dist/esm/{chunk-IRGR2OHS.js.map → chunk-7276G7GV.js.map} +1 -1
  93. package/dist/esm/{chunk-5T7E533R.js → chunk-A3UQKLUC.js} +2 -2
  94. package/dist/esm/{chunk-X6JNM3XR.js → chunk-GRN6CHNO.js} +1 -1
  95. package/dist/esm/{chunk-X6JNM3XR.js.map → chunk-GRN6CHNO.js.map} +1 -1
  96. package/dist/esm/{chunk-OCONOO5Z.js → chunk-JNZCPCEC.js} +14 -7
  97. package/dist/esm/chunk-JNZCPCEC.js.map +1 -0
  98. package/dist/esm/{chunk-EYZ5Z7FG.js → chunk-LOFJBMHT.js} +1 -1
  99. package/dist/esm/chunk-LOFJBMHT.js.map +1 -0
  100. package/dist/esm/{chunk-SHQWRBWS.js → chunk-NWL3BMUH.js} +3 -7
  101. package/dist/esm/chunk-NWL3BMUH.js.map +1 -0
  102. package/dist/esm/chunk-PBGBCH2S.js +28 -0
  103. package/dist/esm/chunk-PBGBCH2S.js.map +1 -0
  104. package/dist/esm/{chunk-E2RV322Z.js → chunk-QCK645XC.js} +24 -2
  105. package/dist/esm/chunk-QCK645XC.js.map +1 -0
  106. package/dist/esm/chunk-U7REZSMO.js +1 -0
  107. package/dist/esm/chunk-U7REZSMO.js.map +1 -0
  108. package/dist/esm/chunk-WZQVH4XY.js +45 -0
  109. package/dist/esm/chunk-WZQVH4XY.js.map +1 -0
  110. package/dist/esm/chunk-YUKPKFX5.js +26 -0
  111. package/dist/esm/chunk-YUKPKFX5.js.map +1 -0
  112. package/dist/esm/controllers/index.js +5 -5
  113. package/dist/esm/controllers/intent.controller.d.ts +19 -0
  114. package/dist/esm/controllers/intent.controller.js +7 -0
  115. package/dist/esm/controllers/intent.controller.js.map +1 -0
  116. package/dist/esm/index.js +24 -17
  117. package/dist/esm/index.js.map +1 -1
  118. package/dist/esm/modules/a2a/a2a.module.js +2 -2
  119. package/dist/esm/modules/index.d.ts +1 -1
  120. package/dist/esm/modules/index.js +6 -6
  121. package/dist/esm/routes/a2a.routes.js +5 -5
  122. package/dist/esm/routes/api.routes.js +1 -1
  123. package/dist/esm/routes/index.js +15 -15
  124. package/dist/esm/routes/intent.routes.d.ts +24 -0
  125. package/dist/esm/routes/intent.routes.js +20 -0
  126. package/dist/esm/routes/intent.routes.js.map +1 -0
  127. package/dist/esm/routes/query.routes.js +7 -7
  128. package/dist/esm/services/index.d.ts +3 -0
  129. package/dist/esm/services/index.js +16 -6
  130. package/dist/esm/services/intents/fulfill-stream.service.d.ts +2 -2
  131. package/dist/esm/services/intents/fulfill-stream.service.js +2 -2
  132. package/dist/esm/services/intents/fulfill.service.d.ts +2 -2
  133. package/dist/esm/services/intents/fulfill.service.js +2 -2
  134. package/dist/esm/services/intents/trigger.service.js +1 -1
  135. package/dist/esm/services/query-stream.service.js +4 -4
  136. package/dist/esm/services/query.service.js +4 -4
  137. package/dist/esm/services/thread.service.d.ts +13 -0
  138. package/dist/esm/services/thread.service.js +7 -0
  139. package/dist/esm/services/thread.service.js.map +1 -0
  140. package/dist/esm/types/memory.d.ts +1 -0
  141. package/dist/esm/types/memory.js +1 -1
  142. package/package.json +1 -1
  143. package/dist/cjs/chunk-2UK6RDHB.cjs +0 -337
  144. package/dist/cjs/chunk-2UK6RDHB.cjs.map +0 -1
  145. package/dist/cjs/chunk-4TK4MTAR.cjs +0 -17
  146. package/dist/cjs/chunk-4TK4MTAR.cjs.map +0 -1
  147. package/dist/cjs/chunk-5WNANWIO.cjs +0 -43
  148. package/dist/cjs/chunk-5WNANWIO.cjs.map +0 -1
  149. package/dist/cjs/chunk-67EDI57F.cjs +0 -37
  150. package/dist/cjs/chunk-67EDI57F.cjs.map +0 -1
  151. package/dist/cjs/chunk-6S376RMW.cjs +0 -338
  152. package/dist/cjs/chunk-6S376RMW.cjs.map +0 -1
  153. package/dist/cjs/chunk-6UHPYXKS.cjs +0 -381
  154. package/dist/cjs/chunk-6UHPYXKS.cjs.map +0 -1
  155. package/dist/cjs/chunk-7HH3N36Q.cjs +0 -43
  156. package/dist/cjs/chunk-7HH3N36Q.cjs.map +0 -1
  157. package/dist/cjs/chunk-7J5DYKDJ.cjs +0 -376
  158. package/dist/cjs/chunk-7J5DYKDJ.cjs.map +0 -1
  159. package/dist/cjs/chunk-7Y3W3SIL.cjs +0 -37
  160. package/dist/cjs/chunk-7Y3W3SIL.cjs.map +0 -1
  161. package/dist/cjs/chunk-AEYHJEGM.cjs +0 -26
  162. package/dist/cjs/chunk-AEYHJEGM.cjs.map +0 -1
  163. package/dist/cjs/chunk-AIAIY7IU.cjs +0 -43
  164. package/dist/cjs/chunk-AIAIY7IU.cjs.map +0 -1
  165. package/dist/cjs/chunk-APGW3LWW.cjs +0 -43
  166. package/dist/cjs/chunk-APGW3LWW.cjs.map +0 -1
  167. package/dist/cjs/chunk-AWLDQTED.cjs +0 -257
  168. package/dist/cjs/chunk-AWLDQTED.cjs.map +0 -1
  169. package/dist/cjs/chunk-AXLG6NY4.cjs +0 -337
  170. package/dist/cjs/chunk-AXLG6NY4.cjs.map +0 -1
  171. package/dist/cjs/chunk-AY3PG2UZ.cjs.map +0 -1
  172. package/dist/cjs/chunk-B2XCYG4C.cjs +0 -43
  173. package/dist/cjs/chunk-B2XCYG4C.cjs.map +0 -1
  174. package/dist/cjs/chunk-BAPJ7AYM.cjs +0 -43
  175. package/dist/cjs/chunk-BAPJ7AYM.cjs.map +0 -1
  176. package/dist/cjs/chunk-BFWJLMUR.cjs +0 -43
  177. package/dist/cjs/chunk-BFWJLMUR.cjs.map +0 -1
  178. package/dist/cjs/chunk-BGEBE36B.cjs +0 -43
  179. package/dist/cjs/chunk-BGEBE36B.cjs.map +0 -1
  180. package/dist/cjs/chunk-BIDIP5MX.cjs +0 -37
  181. package/dist/cjs/chunk-BIDIP5MX.cjs.map +0 -1
  182. package/dist/cjs/chunk-BKU7EWEM.cjs +0 -37
  183. package/dist/cjs/chunk-BKU7EWEM.cjs.map +0 -1
  184. package/dist/cjs/chunk-C5V4X3ZH.cjs +0 -364
  185. package/dist/cjs/chunk-C5V4X3ZH.cjs.map +0 -1
  186. package/dist/cjs/chunk-C77OTZYZ.cjs +0 -43
  187. package/dist/cjs/chunk-C77OTZYZ.cjs.map +0 -1
  188. package/dist/cjs/chunk-C7SJ2X3X.cjs +0 -43
  189. package/dist/cjs/chunk-C7SJ2X3X.cjs.map +0 -1
  190. package/dist/cjs/chunk-CD3RWOCR.cjs +0 -18
  191. package/dist/cjs/chunk-CEUCTNAJ.cjs +0 -43
  192. package/dist/cjs/chunk-CEUCTNAJ.cjs.map +0 -1
  193. package/dist/cjs/chunk-CIV2QV4C.cjs +0 -43
  194. package/dist/cjs/chunk-CIV2QV4C.cjs.map +0 -1
  195. package/dist/cjs/chunk-CKE4RRTI.cjs +0 -378
  196. package/dist/cjs/chunk-CKE4RRTI.cjs.map +0 -1
  197. package/dist/cjs/chunk-EEND2E3Y.cjs +0 -37
  198. package/dist/cjs/chunk-EEND2E3Y.cjs.map +0 -1
  199. package/dist/cjs/chunk-ET7NGSCR.cjs +0 -382
  200. package/dist/cjs/chunk-ET7NGSCR.cjs.map +0 -1
  201. package/dist/cjs/chunk-EXKLB7FF.cjs +0 -18
  202. package/dist/cjs/chunk-EXKLB7FF.cjs.map +0 -1
  203. package/dist/cjs/chunk-F6LFBKIF.cjs +0 -43
  204. package/dist/cjs/chunk-F6LFBKIF.cjs.map +0 -1
  205. package/dist/cjs/chunk-FCIBDAL5.cjs +0 -364
  206. package/dist/cjs/chunk-FCIBDAL5.cjs.map +0 -1
  207. package/dist/cjs/chunk-FGBHPONX.cjs +0 -43
  208. package/dist/cjs/chunk-FGBHPONX.cjs.map +0 -1
  209. package/dist/cjs/chunk-FJ2S5TGS.cjs +0 -37
  210. package/dist/cjs/chunk-FJ2S5TGS.cjs.map +0 -1
  211. package/dist/cjs/chunk-FZEACIU2.cjs +0 -37
  212. package/dist/cjs/chunk-FZEACIU2.cjs.map +0 -1
  213. package/dist/cjs/chunk-GAXPKI2P.cjs +0 -364
  214. package/dist/cjs/chunk-GAXPKI2P.cjs.map +0 -1
  215. package/dist/cjs/chunk-GBQXIGWQ.cjs +0 -37
  216. package/dist/cjs/chunk-GBQXIGWQ.cjs.map +0 -1
  217. package/dist/cjs/chunk-GGP6URMG.cjs +0 -43
  218. package/dist/cjs/chunk-GGP6URMG.cjs.map +0 -1
  219. package/dist/cjs/chunk-GO2OLIWF.cjs +0 -359
  220. package/dist/cjs/chunk-GO2OLIWF.cjs.map +0 -1
  221. package/dist/cjs/chunk-GYIACLMZ.cjs +0 -376
  222. package/dist/cjs/chunk-GYIACLMZ.cjs.map +0 -1
  223. package/dist/cjs/chunk-GZE5BVB2.cjs +0 -361
  224. package/dist/cjs/chunk-GZE5BVB2.cjs.map +0 -1
  225. package/dist/cjs/chunk-HPCNM6XP.cjs +0 -25
  226. package/dist/cjs/chunk-HPCNM6XP.cjs.map +0 -1
  227. package/dist/cjs/chunk-HXRGFZL7.cjs +0 -360
  228. package/dist/cjs/chunk-HXRGFZL7.cjs.map +0 -1
  229. package/dist/cjs/chunk-IC5TWI4A.cjs +0 -37
  230. package/dist/cjs/chunk-IC5TWI4A.cjs.map +0 -1
  231. package/dist/cjs/chunk-ICTSMRXC.cjs +0 -360
  232. package/dist/cjs/chunk-ICTSMRXC.cjs.map +0 -1
  233. package/dist/cjs/chunk-IH4I2JTE.cjs +0 -348
  234. package/dist/cjs/chunk-IH4I2JTE.cjs.map +0 -1
  235. package/dist/cjs/chunk-IKPQ52KY.cjs.map +0 -1
  236. package/dist/cjs/chunk-J5WX6GPC.cjs +0 -43
  237. package/dist/cjs/chunk-J5WX6GPC.cjs.map +0 -1
  238. package/dist/cjs/chunk-J7GCQY3S.cjs +0 -18
  239. package/dist/cjs/chunk-J7GCQY3S.cjs.map +0 -1
  240. package/dist/cjs/chunk-JFLQREPM.cjs +0 -37
  241. package/dist/cjs/chunk-JFLQREPM.cjs.map +0 -1
  242. package/dist/cjs/chunk-JO6AZASU.cjs +0 -37
  243. package/dist/cjs/chunk-JO6AZASU.cjs.map +0 -1
  244. package/dist/cjs/chunk-JUPAGIP4.cjs +0 -43
  245. package/dist/cjs/chunk-JUPAGIP4.cjs.map +0 -1
  246. package/dist/cjs/chunk-JWIVQT6C.cjs +0 -37
  247. package/dist/cjs/chunk-JWIVQT6C.cjs.map +0 -1
  248. package/dist/cjs/chunk-JYHYAQQ2.cjs +0 -43
  249. package/dist/cjs/chunk-JYHYAQQ2.cjs.map +0 -1
  250. package/dist/cjs/chunk-K6HWDDNX.cjs +0 -367
  251. package/dist/cjs/chunk-K6HWDDNX.cjs.map +0 -1
  252. package/dist/cjs/chunk-K6J5XJRM.cjs +0 -382
  253. package/dist/cjs/chunk-K6J5XJRM.cjs.map +0 -1
  254. package/dist/cjs/chunk-KAF2EDPZ.cjs.map +0 -1
  255. package/dist/cjs/chunk-KBWHLMA4.cjs +0 -26
  256. package/dist/cjs/chunk-KBWHLMA4.cjs.map +0 -1
  257. package/dist/cjs/chunk-KH25JPQS.cjs +0 -256
  258. package/dist/cjs/chunk-KH25JPQS.cjs.map +0 -1
  259. package/dist/cjs/chunk-KHAIZONV.cjs +0 -43
  260. package/dist/cjs/chunk-KHAIZONV.cjs.map +0 -1
  261. package/dist/cjs/chunk-KQ4MBNUW.cjs +0 -43
  262. package/dist/cjs/chunk-KQ4MBNUW.cjs.map +0 -1
  263. package/dist/cjs/chunk-L5ZICBT4.cjs +0 -37
  264. package/dist/cjs/chunk-L5ZICBT4.cjs.map +0 -1
  265. package/dist/cjs/chunk-MADCWTBO.cjs.map +0 -1
  266. package/dist/cjs/chunk-MV6L3NPY.cjs +0 -164
  267. package/dist/cjs/chunk-MV6L3NPY.cjs.map +0 -1
  268. package/dist/cjs/chunk-MXDXXOXE.cjs.map +0 -1
  269. package/dist/cjs/chunk-N6VAOFEP.cjs +0 -37
  270. package/dist/cjs/chunk-N6VAOFEP.cjs.map +0 -1
  271. package/dist/cjs/chunk-NWMGBXPZ.cjs +0 -37
  272. package/dist/cjs/chunk-NWMGBXPZ.cjs.map +0 -1
  273. package/dist/cjs/chunk-OAPMGKE2.cjs.map +0 -1
  274. package/dist/cjs/chunk-OCGEXAVI.cjs +0 -373
  275. package/dist/cjs/chunk-OCGEXAVI.cjs.map +0 -1
  276. package/dist/cjs/chunk-OOSRLRNL.cjs +0 -37
  277. package/dist/cjs/chunk-OOSRLRNL.cjs.map +0 -1
  278. package/dist/cjs/chunk-ORLXR6OZ.cjs +0 -257
  279. package/dist/cjs/chunk-ORLXR6OZ.cjs.map +0 -1
  280. package/dist/cjs/chunk-OZKAPLCE.cjs +0 -43
  281. package/dist/cjs/chunk-OZKAPLCE.cjs.map +0 -1
  282. package/dist/cjs/chunk-P42QPS2N.cjs +0 -43
  283. package/dist/cjs/chunk-P42QPS2N.cjs.map +0 -1
  284. package/dist/cjs/chunk-PHTT7NVZ.cjs +0 -37
  285. package/dist/cjs/chunk-PHTT7NVZ.cjs.map +0 -1
  286. package/dist/cjs/chunk-PNN5WGWA.cjs +0 -43
  287. package/dist/cjs/chunk-PNN5WGWA.cjs.map +0 -1
  288. package/dist/cjs/chunk-Q673YXOW.cjs +0 -37
  289. package/dist/cjs/chunk-Q673YXOW.cjs.map +0 -1
  290. package/dist/cjs/chunk-QCEMS4A3.cjs +0 -168
  291. package/dist/cjs/chunk-QCEMS4A3.cjs.map +0 -1
  292. package/dist/cjs/chunk-QV2CSL6T.cjs +0 -352
  293. package/dist/cjs/chunk-QV2CSL6T.cjs.map +0 -1
  294. package/dist/cjs/chunk-QW4T5RFB.cjs +0 -374
  295. package/dist/cjs/chunk-QW4T5RFB.cjs.map +0 -1
  296. package/dist/cjs/chunk-RA62RT7K.cjs +0 -43
  297. package/dist/cjs/chunk-RA62RT7K.cjs.map +0 -1
  298. package/dist/cjs/chunk-RXMGXWLH.cjs +0 -352
  299. package/dist/cjs/chunk-RXMGXWLH.cjs.map +0 -1
  300. package/dist/cjs/chunk-SEJO6F5X.cjs +0 -43
  301. package/dist/cjs/chunk-SEJO6F5X.cjs.map +0 -1
  302. package/dist/cjs/chunk-SMKJY53T.cjs +0 -367
  303. package/dist/cjs/chunk-SMKJY53T.cjs.map +0 -1
  304. package/dist/cjs/chunk-SUWC3YAJ.cjs +0 -359
  305. package/dist/cjs/chunk-SUWC3YAJ.cjs.map +0 -1
  306. package/dist/cjs/chunk-SZU5VCQL.cjs +0 -256
  307. package/dist/cjs/chunk-SZU5VCQL.cjs.map +0 -1
  308. package/dist/cjs/chunk-T2CE7W67.cjs +0 -43
  309. package/dist/cjs/chunk-T2CE7W67.cjs.map +0 -1
  310. package/dist/cjs/chunk-TBQF2VIX.cjs +0 -43
  311. package/dist/cjs/chunk-TBQF2VIX.cjs.map +0 -1
  312. package/dist/cjs/chunk-TK2MNTOI.cjs +0 -43
  313. package/dist/cjs/chunk-TK2MNTOI.cjs.map +0 -1
  314. package/dist/cjs/chunk-TOVEWQW2.cjs +0 -43
  315. package/dist/cjs/chunk-TOVEWQW2.cjs.map +0 -1
  316. package/dist/cjs/chunk-TS46OIE7.cjs +0 -252
  317. package/dist/cjs/chunk-TS46OIE7.cjs.map +0 -1
  318. package/dist/cjs/chunk-TYLHXACM.cjs.map +0 -1
  319. package/dist/cjs/chunk-UDLSTQ4I.cjs +0 -21
  320. package/dist/cjs/chunk-UDLSTQ4I.cjs.map +0 -1
  321. package/dist/cjs/chunk-UFVWBUJM.cjs +0 -365
  322. package/dist/cjs/chunk-UFVWBUJM.cjs.map +0 -1
  323. package/dist/cjs/chunk-USDDAUYF.cjs +0 -364
  324. package/dist/cjs/chunk-USDDAUYF.cjs.map +0 -1
  325. package/dist/cjs/chunk-UUWWBHFR.cjs +0 -37
  326. package/dist/cjs/chunk-UUWWBHFR.cjs.map +0 -1
  327. package/dist/cjs/chunk-UVN2DE6N.cjs +0 -368
  328. package/dist/cjs/chunk-UVN2DE6N.cjs.map +0 -1
  329. package/dist/cjs/chunk-VVLC6T66.cjs +0 -37
  330. package/dist/cjs/chunk-VVLC6T66.cjs.map +0 -1
  331. package/dist/cjs/chunk-VZS6VPLE.cjs +0 -26
  332. package/dist/cjs/chunk-VZS6VPLE.cjs.map +0 -1
  333. package/dist/cjs/chunk-W4PRBE6H.cjs.map +0 -1
  334. package/dist/cjs/chunk-WDPCMSZM.cjs +0 -37
  335. package/dist/cjs/chunk-WDPCMSZM.cjs.map +0 -1
  336. package/dist/cjs/chunk-X276C2SQ.cjs +0 -37
  337. package/dist/cjs/chunk-X276C2SQ.cjs.map +0 -1
  338. package/dist/cjs/chunk-X3XEJQRF.cjs +0 -37
  339. package/dist/cjs/chunk-X3XEJQRF.cjs.map +0 -1
  340. package/dist/cjs/chunk-X5ARZJ77.cjs +0 -353
  341. package/dist/cjs/chunk-X5ARZJ77.cjs.map +0 -1
  342. package/dist/cjs/chunk-XIR7UR77.cjs +0 -37
  343. package/dist/cjs/chunk-XIR7UR77.cjs.map +0 -1
  344. package/dist/cjs/chunk-XIXM5VST.cjs +0 -37
  345. package/dist/cjs/chunk-XIXM5VST.cjs.map +0 -1
  346. package/dist/cjs/chunk-XIYB6QQC.cjs +0 -37
  347. package/dist/cjs/chunk-XIYB6QQC.cjs.map +0 -1
  348. package/dist/cjs/chunk-XM22DX5O.cjs +0 -43
  349. package/dist/cjs/chunk-XM22DX5O.cjs.map +0 -1
  350. package/dist/cjs/chunk-XVYFBQRE.cjs +0 -37
  351. package/dist/cjs/chunk-XVYFBQRE.cjs.map +0 -1
  352. package/dist/cjs/chunk-YORAOGFM.cjs +0 -37
  353. package/dist/cjs/chunk-YORAOGFM.cjs.map +0 -1
  354. package/dist/cjs/chunk-YUCTXIN5.cjs +0 -37
  355. package/dist/cjs/chunk-YUCTXIN5.cjs.map +0 -1
  356. package/dist/cjs/chunk-YUEKJCO7.cjs +0 -18
  357. package/dist/cjs/chunk-YUEKJCO7.cjs.map +0 -1
  358. package/dist/cjs/chunk-YVE4DLAT.cjs +0 -43
  359. package/dist/cjs/chunk-YVE4DLAT.cjs.map +0 -1
  360. package/dist/cjs/chunk-ZBD7JCDL.cjs +0 -381
  361. package/dist/cjs/chunk-ZBD7JCDL.cjs.map +0 -1
  362. package/dist/cjs/chunk-ZNMRAQT2.cjs +0 -164
  363. package/dist/cjs/chunk-ZNMRAQT2.cjs.map +0 -1
  364. package/dist/cjs/chunk-ZS3QMRHK.cjs +0 -165
  365. package/dist/cjs/chunk-ZS3QMRHK.cjs.map +0 -1
  366. package/dist/cjs/chunk-ZZ3SXOOC.cjs +0 -37
  367. package/dist/cjs/chunk-ZZ3SXOOC.cjs.map +0 -1
  368. package/dist/esm/chunk-E2RV322Z.js.map +0 -1
  369. package/dist/esm/chunk-EYZ5Z7FG.js.map +0 -1
  370. package/dist/esm/chunk-OCONOO5Z.js.map +0 -1
  371. package/dist/esm/chunk-SHQWRBWS.js.map +0 -1
  372. /package/dist/esm/{chunk-6OHUQ6DV.js.map → chunk-6PT5BUHR.js.map} +0 -0
  373. /package/dist/esm/{chunk-5T7E533R.js.map → chunk-A3UQKLUC.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  var _chunkBDQDZXZIcjs = require('./chunk-BDQDZXZI.cjs');
4
4
 
5
5
 
6
- var _chunkQV2CSL6Tcjs = require('./chunk-QV2CSL6T.cjs');
6
+ var _chunkJRFTCDMQcjs = require('./chunk-JRFTCDMQ.cjs');
7
7
 
8
8
 
9
9
  var _chunkICFTUZP5cjs = require('./chunk-ICFTUZP5.cjs');
@@ -14,7 +14,7 @@ var _express = require('express');
14
14
  var createA2ARouter = (agent) => {
15
15
  const router = _express.Router.call(void 0, );
16
16
  const taskStore = new (0, _server.InMemoryTaskStore)();
17
- const queryStreamService = new (0, _chunkQV2CSL6Tcjs.QueryStreamService)(
17
+ const queryStreamService = new (0, _chunkJRFTCDMQcjs.QueryStreamService)(
18
18
  agent.modelModule,
19
19
  agent.a2aModule,
20
20
  agent.mcpModule,
@@ -34,4 +34,4 @@ var createA2ARouter = (agent) => {
34
34
 
35
35
 
36
36
  exports.createA2ARouter = createA2ARouter;
37
- //# sourceMappingURL=chunk-2GJKQSDQ.cjs.map
37
+ //# sourceMappingURL=chunk-2EPZZPWG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-3SYBDGMH.cjs","../../src/routes/a2a.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,4CAAkC;AAClC,kCAAuB;AAchB,IAAM,gBAAA,EAAkB,CAAC,KAAA,EAAA,GAA4B;AAC3D,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAGtB,EAAA,MAAM,UAAA,EAAY,IAAI,8BAAA,CAAkB,CAAA;AACxC,EAAA,MAAM,mBAAA,EAAqB,IAAI,yCAAA;AAAA,IAC9B,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;AACA,EAAA,MAAM,WAAA,EAAa,IAAI,iCAAA,CAAW,kBAAkB,CAAA;AACpD,EAAA,MAAM,cAAA,EAAgB,IAAI,oCAAA;AAAA,IACzB,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA,CAAM;AAAA,EACP,CAAA;AAGA,EAAA,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,aAAA,CAAc,gBAAgB,CAAA;AAE/C,EAAA,OAAO,MAAA;AACR,CAAA;ADNA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-3SYBDGMH.cjs","sourcesContent":[null,"import { InMemoryTaskStore } from \"@a2a-js/sdk/server\";\nimport { Router } from \"express\";\nimport type { AINAgent } from \"@/index.js\";\nimport { QueryStreamService } from \"@/services/query-stream.service.js\";\nimport { A2AController } from \"../controllers/a2a.controller.js\";\nimport { A2AService } from \"../services/a2a.service.js\";\n\n/**\n * Creates and configures the A2A router.\n * This function is a \"composition root\" for the A2A feature,\n * creating and injecting all necessary dependencies.\n * @param intentAnalyzer The core intent analyzer.\n * @param agentCard The agent's card.\n * @returns An Express Router instance.\n */\nexport const createA2ARouter = (agent: AINAgent): Router => {\n\tconst router = Router();\n\n\t// 1. Create dependencies for the A2A feature\n\tconst taskStore = new InMemoryTaskStore();\n\tconst queryStreamService = new QueryStreamService(\n\t\tagent.modelModule,\n\t\tagent.a2aModule,\n\t\tagent.mcpModule,\n\t\tagent.memoryModule,\n\t\tagent.manifest.prompts,\n\t);\n\tconst a2aService = new A2AService(queryStreamService);\n\tconst a2aController = new A2AController(\n\t\ta2aService,\n\t\ttaskStore,\n\t\tagent.generateAgentCard,\n\t);\n\n\t// 2. Define the route\n\trouter.post(\"/\", a2aController.handleA2ARequest);\n\n\treturn router;\n};\n"]}
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-2EPZZPWG.cjs","../../src/routes/a2a.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,4CAAkC;AAClC,kCAAuB;AAchB,IAAM,gBAAA,EAAkB,CAAC,KAAA,EAAA,GAA4B;AAC3D,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAGtB,EAAA,MAAM,UAAA,EAAY,IAAI,8BAAA,CAAkB,CAAA;AACxC,EAAA,MAAM,mBAAA,EAAqB,IAAI,yCAAA;AAAA,IAC9B,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;AACA,EAAA,MAAM,WAAA,EAAa,IAAI,iCAAA,CAAW,kBAAkB,CAAA;AACpD,EAAA,MAAM,cAAA,EAAgB,IAAI,oCAAA;AAAA,IACzB,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA,CAAM;AAAA,EACP,CAAA;AAGA,EAAA,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,aAAA,CAAc,gBAAgB,CAAA;AAE/C,EAAA,OAAO,MAAA;AACR,CAAA;ADNA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-2EPZZPWG.cjs","sourcesContent":[null,"import { InMemoryTaskStore } from \"@a2a-js/sdk/server\";\nimport { Router } from \"express\";\nimport type { AINAgent } from \"@/index.js\";\nimport { QueryStreamService } from \"@/services/query-stream.service.js\";\nimport { A2AController } from \"../controllers/a2a.controller.js\";\nimport { A2AService } from \"../services/a2a.service.js\";\n\n/**\n * Creates and configures the A2A router.\n * This function is a \"composition root\" for the A2A feature,\n * creating and injecting all necessary dependencies.\n * @param intentAnalyzer The core intent analyzer.\n * @param agentCard The agent's card.\n * @returns An Express Router instance.\n */\nexport const createA2ARouter = (agent: AINAgent): Router => {\n\tconst router = Router();\n\n\t// 1. Create dependencies for the A2A feature\n\tconst taskStore = new InMemoryTaskStore();\n\tconst queryStreamService = new QueryStreamService(\n\t\tagent.modelModule,\n\t\tagent.a2aModule,\n\t\tagent.mcpModule,\n\t\tagent.memoryModule,\n\t\tagent.manifest.prompts,\n\t);\n\tconst a2aService = new A2AService(queryStreamService);\n\tconst a2aController = new A2AController(\n\t\ta2aService,\n\t\ttaskStore,\n\t\tagent.generateAgentCard,\n\t);\n\n\t// 2. Define the route\n\trouter.post(\"/\", a2aController.handleA2ARequest);\n\n\treturn router;\n};\n"]}
@@ -0,0 +1,45 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/services/thread.service.ts
2
+ var ThreadService = class {
3
+
4
+ constructor(memoryModule) {
5
+ this.memoryModule = memoryModule;
6
+ }
7
+ async getThread(userId, threadId) {
8
+ const threadMemory = _optionalChain([this, 'access', _ => _.memoryModule, 'optionalAccess', _2 => _2.getThreadMemory, 'call', _3 => _3()]);
9
+ if (!this.memoryModule || !threadMemory) {
10
+ return;
11
+ }
12
+ return await threadMemory.getThread(userId, threadId);
13
+ }
14
+ async createThread(type, userId, threadId, title) {
15
+ const threadMemory = _optionalChain([this, 'access', _4 => _4.memoryModule, 'optionalAccess', _5 => _5.getThreadMemory, 'call', _6 => _6()]);
16
+ if (!this.memoryModule || !threadMemory) {
17
+ return {
18
+ type,
19
+ userId,
20
+ threadId,
21
+ title,
22
+ messages: []
23
+ };
24
+ }
25
+ const metadata = await threadMemory.createThread(
26
+ type,
27
+ userId,
28
+ threadId,
29
+ title
30
+ );
31
+ return { ...metadata, messages: [] };
32
+ }
33
+ async addMessagesToThread(userId, threadId, messages) {
34
+ const threadMemory = _optionalChain([this, 'access', _7 => _7.memoryModule, 'optionalAccess', _8 => _8.getThreadMemory, 'call', _9 => _9()]);
35
+ if (!this.memoryModule || !threadMemory) {
36
+ return;
37
+ }
38
+ await threadMemory.addMessagesToThread(userId, threadId, messages);
39
+ }
40
+ };
41
+
42
+
43
+
44
+ exports.ThreadService = ThreadService;
45
+ //# sourceMappingURL=chunk-2P3ZBNVN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-2P3ZBNVN.cjs","../../src/services/thread.service.ts"],"names":[],"mappings":"AAAA;ACQO,IAAM,cAAA,EAAN,MAAoB;AAAA,EAClB;AAAA,EAER,WAAA,CAAY,YAAA,EAA6B;AACxC,IAAA,IAAA,CAAK,aAAA,EAAe,YAAA;AAAA,EACrB;AAAA,EAEA,MAAa,SAAA,CACZ,MAAA,EACA,QAAA,EACoC;AACpC,IAAA,MAAM,aAAA,kBAAe,IAAA,mBAAK,YAAA,6BAAc,eAAA,mBAAgB,GAAA;AACxD,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,aAAA,GAAgB,CAAC,YAAA,EAAc;AACxC,MAAA,MAAA;AAAA,IACD;AAEA,IAAA,OAAO,MAAM,YAAA,CAAa,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AAAA,EACrD;AAAA,EAEA,MAAa,YAAA,CACZ,IAAA,EACA,MAAA,EACA,QAAA,EACA,KAAA,EACwB;AACxB,IAAA,MAAM,aAAA,kBAAe,IAAA,qBAAK,YAAA,6BAAc,eAAA,mBAAgB,GAAA;AACxD,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,aAAA,GAAgB,CAAC,YAAA,EAAc;AACxC,MAAA,OAAO;AAAA,QACN,IAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA,EAAU,CAAC;AAAA,MACZ,CAAA;AAAA,IACD;AAEA,IAAA,MAAM,SAAA,EAA2B,MAAM,YAAA,CAAa,YAAA;AAAA,MACnD,IAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,IACD,CAAA;AACA,IAAA,OAAO,EAAE,GAAG,QAAA,EAAU,QAAA,EAAU,CAAC,EAAE,CAAA;AAAA,EACpC;AAAA,EAEA,MAAa,mBAAA,CACZ,MAAA,EACA,QAAA,EACA,QAAA,EACgB;AAChB,IAAA,MAAM,aAAA,kBAAe,IAAA,qBAAK,YAAA,6BAAc,eAAA,mBAAgB,GAAA;AACxD,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,aAAA,GAAgB,CAAC,YAAA,EAAc;AACxC,MAAA,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,YAAA,CAAa,mBAAA,CAAoB,MAAA,EAAQ,QAAA,EAAU,QAAQ,CAAA;AAAA,EAClE;AACD,CAAA;ADzBA;AACA;AACE;AACF,sCAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-2P3ZBNVN.cjs","sourcesContent":[null,"import type { MemoryModule } from \"@/modules\";\nimport type {\n\tMessageObject,\n\tThreadMetadata,\n\tThreadObject,\n\tThreadType,\n} from \"@/types/memory\";\n\nexport class ThreadService {\n\tprivate memoryModule?: MemoryModule;\n\n\tconstructor(memoryModule?: MemoryModule) {\n\t\tthis.memoryModule = memoryModule;\n\t}\n\n\tpublic async getThread(\n\t\tuserId: string,\n\t\tthreadId: string,\n\t): Promise<ThreadObject | undefined> {\n\t\tconst threadMemory = this.memoryModule?.getThreadMemory();\n\t\tif (!this.memoryModule || !threadMemory) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await threadMemory.getThread(userId, threadId);\n\t}\n\n\tpublic async createThread(\n\t\ttype: ThreadType,\n\t\tuserId: string,\n\t\tthreadId: string,\n\t\ttitle: string,\n\t): Promise<ThreadObject> {\n\t\tconst threadMemory = this.memoryModule?.getThreadMemory();\n\t\tif (!this.memoryModule || !threadMemory) {\n\t\t\treturn {\n\t\t\t\ttype,\n\t\t\t\tuserId,\n\t\t\t\tthreadId,\n\t\t\t\ttitle,\n\t\t\t\tmessages: [],\n\t\t\t};\n\t\t}\n\n\t\tconst metadata: ThreadMetadata = await threadMemory.createThread(\n\t\t\ttype,\n\t\t\tuserId,\n\t\t\tthreadId,\n\t\t\ttitle,\n\t\t);\n\t\treturn { ...metadata, messages: [] };\n\t}\n\n\tpublic async addMessagesToThread(\n\t\tuserId: string,\n\t\tthreadId: string,\n\t\tmessages: Array<MessageObject>,\n\t): Promise<void> {\n\t\tconst threadMemory = this.memoryModule?.getThreadMemory();\n\t\tif (!this.memoryModule || !threadMemory) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait threadMemory.addMessagesToThread(userId, threadId, messages);\n\t}\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkIKPQ52KYcjs = require('./chunk-IKPQ52KY.cjs');
3
+ var _chunkQZHI7LLIcjs = require('./chunk-QZHI7LLI.cjs');
4
4
 
5
5
 
6
- var _chunkTYLHXACMcjs = require('./chunk-TYLHXACM.cjs');
6
+ var _chunkZVPJLZIQcjs = require('./chunk-ZVPJLZIQ.cjs');
7
7
 
8
8
 
9
- var _chunk466ED5WNcjs = require('./chunk-466ED5WN.cjs');
9
+ var _chunkQHQLU7BIcjs = require('./chunk-QHQLU7BI.cjs');
10
10
 
11
11
 
12
- var _chunkQHQLU7BIcjs = require('./chunk-QHQLU7BI.cjs');
12
+ var _chunk466ED5WNcjs = require('./chunk-466ED5WN.cjs');
13
13
 
14
14
  // src/services/query.service.ts
15
15
  var _crypto = require('crypto');
@@ -22,11 +22,11 @@ var QueryService = class {
22
22
  constructor(modelModule, a2aModule, mcpModule, memoryModule, prompts) {
23
23
  this.modelModule = modelModule;
24
24
  this.memoryModule = memoryModule;
25
- this.intentTriggerService = new (0, _chunkTYLHXACMcjs.IntentTriggerService)(
25
+ this.intentTriggerService = new (0, _chunkZVPJLZIQcjs.IntentTriggerService)(
26
26
  modelModule,
27
27
  memoryModule
28
28
  );
29
- this.intentFulfillService = new (0, _chunkIKPQ52KYcjs.IntentFulfillService)(
29
+ this.intentFulfillService = new (0, _chunkQZHI7LLIcjs.IntentFulfillService)(
30
30
  modelModule,
31
31
  a2aModule,
32
32
  mcpModule,
@@ -100,15 +100,21 @@ var QueryService = class {
100
100
  thread = { ...metadata, messages: [] };
101
101
  _chunk466ED5WNcjs.loggers.intent.info(`Create new thread: ${threadId}`);
102
102
  }
103
+ const triggeredIntent = await this.intentTriggerService.intentTriggering(query, thread);
103
104
  await _optionalChain([threadMemory, 'optionalAccess', _8 => _8.addMessagesToThread, 'call', _9 => _9(userId, threadId, [
104
105
  {
105
106
  messageId: _crypto.randomUUID.call(void 0, ),
106
107
  role: "USER" /* USER */,
107
108
  timestamp: Date.now(),
108
- content: { type: "text", parts: [query] }
109
+ content: { type: "text", parts: [query] },
110
+ metadata: {
111
+ intents: triggeredIntent.filter((intent) => !!intent.intent).map((intent) => ({
112
+ id: _optionalChain([intent, 'access', _10 => _10.intent, 'optionalAccess', _11 => _11.id]),
113
+ subquery: intent.subquery
114
+ }))
115
+ }
109
116
  }
110
117
  ])]);
111
- const triggeredIntent = await this.intentTriggerService.intentTriggering(query, thread);
112
118
  const result = await this.intentFulfillService.intentFulfill(
113
119
  triggeredIntent,
114
120
  thread
@@ -120,4 +126,4 @@ var QueryService = class {
120
126
 
121
127
 
122
128
  exports.QueryService = QueryService;
123
- //# sourceMappingURL=chunk-OAPMGKE2.cjs.map
129
+ //# sourceMappingURL=chunk-33ZJ74NB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-33ZJ74NB.cjs","../../src/services/query.service.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-33ZJ74NB.cjs","sourcesContent":[null,"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 { loggers } from \"@/utils/logger.js\";\nimport { IntentFulfillService } from \"./intents/fulfill.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 QueryService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule?: MemoryModule;\n\tprivate intentTriggerService: IntentTriggerService;\n\tprivate intentFulfillService: IntentFulfillService;\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.intentFulfillService = new IntentFulfillService(\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: `You 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.intent.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 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 AI response\n\t * 4. Updates conversation history\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 Promise resolving to object with content property containing the response\n\t */\n\tpublic async handleQuery(\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) {\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}\n\n\t\t// 2. intent triggering\n\t\tconst triggeredIntent: Array<TriggeredIntent> =\n\t\t\tawait this.intentTriggerService.intentTriggering(query, thread);\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 result = await this.intentFulfillService.intentFulfill(\n\t\t\ttriggeredIntent,\n\t\t\tthread,\n\t\t);\n\n\t\treturn { content: result };\n\t}\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkW4PRBE6Hcjs = require('./chunk-W4PRBE6H.cjs');
3
+ var _chunkG3KWCMMQcjs = require('./chunk-G3KWCMMQ.cjs');
4
4
 
5
5
 
6
- var _chunkTYLHXACMcjs = require('./chunk-TYLHXACM.cjs');
6
+ var _chunkZVPJLZIQcjs = require('./chunk-ZVPJLZIQ.cjs');
7
7
 
8
8
 
9
9
  var _chunkQHQLU7BIcjs = require('./chunk-QHQLU7BI.cjs');
@@ -22,11 +22,11 @@ var QueryStreamService = class {
22
22
  constructor(modelModule, a2aModule, mcpModule, memoryModule, prompts) {
23
23
  this.modelModule = modelModule;
24
24
  this.memoryModule = memoryModule;
25
- this.intentTriggerService = new (0, _chunkTYLHXACMcjs.IntentTriggerService)(
25
+ this.intentTriggerService = new (0, _chunkZVPJLZIQcjs.IntentTriggerService)(
26
26
  modelModule,
27
27
  memoryModule
28
28
  );
29
- this.intentFulfillStreamService = new (0, _chunkW4PRBE6Hcjs.IntentFulfillStreamService)(
29
+ this.intentFulfillStreamService = new (0, _chunkG3KWCMMQcjs.IntentFulfillStreamService)(
30
30
  modelModule,
31
31
  a2aModule,
32
32
  mcpModule,
@@ -101,15 +101,23 @@ var QueryStreamService = class {
101
101
  _chunk466ED5WNcjs.loggers.intent.info(`Create new thread: ${threadId}`);
102
102
  yield { event: "thread_id", data: { type, userId, threadId, title } };
103
103
  }
104
+ _chunk466ED5WNcjs.loggers.intent.debug("Check intent triggering");
105
+ const triggeredIntent = await this.intentTriggerService.intentTriggering(query, thread);
106
+ _chunk466ED5WNcjs.loggers.intent.debug(`Triggered intents: ${JSON.stringify(triggeredIntent)}`);
104
107
  await _optionalChain([threadMemory, 'optionalAccess', _8 => _8.addMessagesToThread, 'call', _9 => _9(userId, threadId, [
105
108
  {
106
109
  messageId: _crypto.randomUUID.call(void 0, ),
107
110
  role: "USER" /* USER */,
108
111
  timestamp: Date.now(),
109
- content: { type: "text", parts: [query] }
112
+ content: { type: "text", parts: [query] },
113
+ metadata: {
114
+ intents: triggeredIntent.filter((intent) => !!intent.intent).map((intent) => ({
115
+ id: _optionalChain([intent, 'access', _10 => _10.intent, 'optionalAccess', _11 => _11.id]),
116
+ subquery: intent.subquery
117
+ }))
118
+ }
110
119
  }
111
120
  ])]);
112
- const triggeredIntent = await this.intentTriggerService.intentTriggering(query, thread);
113
121
  const stream = this.intentFulfillStreamService.intentFulfillStream(
114
122
  triggeredIntent,
115
123
  thread
@@ -123,4 +131,4 @@ var QueryStreamService = class {
123
131
 
124
132
 
125
133
  exports.QueryStreamService = QueryStreamService;
126
- //# sourceMappingURL=chunk-MXDXXOXE.cjs.map
134
+ //# sourceMappingURL=chunk-3X2EKOWC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-3X2EKOWC.cjs","../../src/services/query-stream.service.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-3X2EKOWC.cjs","sourcesContent":[null,"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: `You 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\tloggers.intent.debug(\"Check intent triggering\");\n\n\t\t// 2. intent triggering\n\t\tconst triggeredIntent: Array<TriggeredIntent> =\n\t\t\tawait this.intentTriggerService.intentTriggering(query, thread);\n\n\t\tloggers.intent.debug(`Triggered intents: ${JSON.stringify(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"]}
@@ -0,0 +1,28 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk2P3ZBNVNcjs = require('./chunk-2P3ZBNVN.cjs');
4
+
5
+
6
+ var _chunkQIHLINHWcjs = require('./chunk-QIHLINHW.cjs');
7
+
8
+
9
+ var _chunkS6BHSEXFcjs = require('./chunk-S6BHSEXF.cjs');
10
+
11
+ // src/routes/intent.routes.ts
12
+ var _express = require('express');
13
+ var createIntentRouter = (agent) => {
14
+ const router = _express.Router.call(void 0, );
15
+ const threadService = new (0, _chunk2P3ZBNVNcjs.ThreadService)(agent.memoryModule);
16
+ const triggerService = new (0, _chunkQIHLINHWcjs.IntentTriggerService)(
17
+ agent.modelModule,
18
+ agent.memoryModule
19
+ );
20
+ const intentController = new (0, _chunkS6BHSEXFcjs.IntentController)(threadService, triggerService);
21
+ router.post("/trigger", intentController.handleIntentTrigger);
22
+ return router;
23
+ };
24
+
25
+
26
+
27
+ exports.createIntentRouter = createIntentRouter;
28
+ //# sourceMappingURL=chunk-BQ6BY5HN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-BQ6BY5HN.cjs","../../src/routes/intent.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,kCAAuB;AAMhB,IAAM,mBAAA,EAAqB,CAAC,KAAA,EAAA,GAA4B;AAC9D,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAEtB,EAAA,MAAM,cAAA,EAAgB,IAAI,oCAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAC1D,EAAA,MAAM,eAAA,EAAiB,IAAI,2CAAA;AAAA,IAC1B,KAAA,CAAM,WAAA;AAAA,IACN,KAAA,CAAM;AAAA,EACP,CAAA;AAEA,EAAA,MAAM,iBAAA,EAAmB,IAAI,uCAAA,CAAiB,aAAA,EAAe,cAAc,CAAA;AAE3E,EAAA,MAAA,CAAO,IAAA,CAAK,UAAA,EAAY,gBAAA,CAAiB,mBAAmB,CAAA;AAE5D,EAAA,OAAO,MAAA;AACR,CAAA;ADGA;AACA;AACE;AACF,gDAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-BQ6BY5HN.cjs","sourcesContent":[null,"import { Router } from \"express\";\nimport { IntentController } from \"@/controllers/intent.controller\";\nimport type { AINAgent } from \"@/index.js\";\nimport { IntentTriggerService } from \"@/services\";\nimport { ThreadService } from \"@/services/thread.service\";\n\nexport const createIntentRouter = (agent: AINAgent): Router => {\n\tconst router = Router();\n\n\tconst threadService = new ThreadService(agent.memoryModule);\n\tconst triggerService = new IntentTriggerService(\n\t\tagent.modelModule,\n\t\tagent.memoryModule,\n\t);\n\n\tconst intentController = new IntentController(threadService, triggerService);\n\n\trouter.post(\"/trigger\", intentController.handleIntentTrigger);\n\n\treturn router;\n};\n"]}
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkFTRCEUDBcjs = require('./chunk-FTRCEUDB.cjs');
3
+ var _chunkDT2RCV6Gcjs = require('./chunk-DT2RCV6G.cjs');
4
4
 
5
5
 
6
- var _chunkX46GJS7Xcjs = require('./chunk-X46GJS7X.cjs');
6
+ var _chunk5FZ7QLJDcjs = require('./chunk-5FZ7QLJD.cjs');
7
7
 
8
8
 
9
- var _chunkDT2RCV6Gcjs = require('./chunk-DT2RCV6G.cjs');
9
+ var _chunkFTRCEUDBcjs = require('./chunk-FTRCEUDB.cjs');
10
10
 
11
11
 
12
- var _chunk5FZ7QLJDcjs = require('./chunk-5FZ7QLJD.cjs');
12
+ var _chunkX46GJS7Xcjs = require('./chunk-X46GJS7X.cjs');
13
13
 
14
14
  // src/routes/api.routes.ts
15
15
  var _express = require('express');
@@ -27,4 +27,4 @@ var createApiRouter = (agent) => {
27
27
 
28
28
 
29
29
  exports.createApiRouter = createApiRouter;
30
- //# sourceMappingURL=chunk-WGFYVOP5.cjs.map
30
+ //# sourceMappingURL=chunk-CKIA6H2D.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-WGFYVOP5.cjs","../../src/routes/api.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACbA,kCAAuB;AAOhB,IAAM,gBAAA,EAAkB,CAAC,KAAA,EAAA,GAA4B;AAC3D,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAEtB,EAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,oDAAA,KAAqB,CAAM,WAAW,CAAC,CAAA;AAC5D,EAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,oDAAA,KAA0B,CAAC,CAAA;AAChD,EAAA,GAAA,CAAI,KAAA,CAAM,YAAA,EAAc;AACvB,IAAA,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,qDAAA,KAAsB,CAAM,YAAY,CAAC,CAAA;AAChE,IAAA,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,qDAAA,KAAsB,CAAM,YAAY,CAAC,CAAA;AAAA,EAChE;AAEA,EAAA,OAAO,MAAA;AACR,CAAA;ADOA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-WGFYVOP5.cjs","sourcesContent":[null,"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"]}
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-CKIA6H2D.cjs","../../src/routes/api.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACbA,kCAAuB;AAOhB,IAAM,gBAAA,EAAkB,CAAC,KAAA,EAAA,GAA4B;AAC3D,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAEtB,EAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,oDAAA,KAAqB,CAAM,WAAW,CAAC,CAAA;AAC5D,EAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,oDAAA,KAA0B,CAAC,CAAA;AAChD,EAAA,GAAA,CAAI,KAAA,CAAM,YAAA,EAAc;AACvB,IAAA,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,qDAAA,KAAsB,CAAM,YAAY,CAAC,CAAA;AAChE,IAAA,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,qDAAA,KAAsB,CAAM,YAAY,CAAC,CAAA;AAAA,EAChE;AAEA,EAAA,OAAO,MAAA;AACR,CAAA;ADOA;AACA;AACE;AACF,0CAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-CKIA6H2D.cjs","sourcesContent":[null,"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"]}
@@ -51,14 +51,19 @@ var IntentFulfillStreamService = class {
51
51
  * @returns AsyncGenerator yielding StreamEvent objects
52
52
  */
53
53
  async *intentFulfilling(query, thread, intent) {
54
+ _chunk466ED5WNcjs.loggers.intentStream.info("Intent fulfillment started", {
55
+ threadId: thread.threadId,
56
+ query: query.substring(0, 100) + (query.length > 100 ? "..." : ""),
57
+ intentName: _optionalChain([intent, 'optionalAccess', _6 => _6.name])
58
+ });
54
59
  const systemPrompt = `
55
60
  Today is ${(/* @__PURE__ */ new Date()).toLocaleDateString()}.
56
61
 
57
- ${_optionalChain([this, 'access', _6 => _6.prompts, 'optionalAccess', _7 => _7.agent]) || ""}
62
+ ${_optionalChain([this, 'access', _7 => _7.prompts, 'optionalAccess', _8 => _8.agent]) || ""}
58
63
 
59
- ${_optionalChain([this, 'access', _8 => _8.prompts, 'optionalAccess', _9 => _9.system]) || ""}
64
+ ${_optionalChain([this, 'access', _9 => _9.prompts, 'optionalAccess', _10 => _10.system]) || ""}
60
65
 
61
- ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
66
+ ${_optionalChain([intent, 'optionalAccess', _11 => _11.prompt]) || ""}
62
67
  `.trim();
63
68
  const modelInstance = this.modelModule.getModel();
64
69
  const messages = modelInstance.generateMessages({
@@ -80,7 +85,7 @@ ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
80
85
  _chunk466ED5WNcjs.loggers.intentStream.info("messages", { messages });
81
86
  for await (const chunk of responseStream) {
82
87
  const delta = chunk.delta;
83
- if (_optionalChain([delta, 'optionalAccess', _11 => _11.tool_calls])) {
88
+ if (_optionalChain([delta, 'optionalAccess', _12 => _12.tool_calls])) {
84
89
  for (const { index, id, function: func } of delta.tool_calls) {
85
90
  assembledToolCalls[index] ??= {
86
91
  id: "",
@@ -88,11 +93,11 @@ ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
88
93
  function: { name: "", arguments: "" }
89
94
  };
90
95
  if (id) assembledToolCalls[index].id = id;
91
- if (_optionalChain([func, 'optionalAccess', _12 => _12.name])) assembledToolCalls[index].function.name = func.name;
92
- if (_optionalChain([func, 'optionalAccess', _13 => _13.arguments]))
96
+ if (_optionalChain([func, 'optionalAccess', _13 => _13.name])) assembledToolCalls[index].function.name = func.name;
97
+ if (_optionalChain([func, 'optionalAccess', _14 => _14.arguments]))
93
98
  assembledToolCalls[index].function.arguments += func.arguments;
94
99
  }
95
- } else if (_optionalChain([chunk, 'access', _14 => _14.delta, 'optionalAccess', _15 => _15.content])) {
100
+ } else if (_optionalChain([chunk, 'access', _15 => _15.delta, 'optionalAccess', _16 => _16.content])) {
96
101
  yield {
97
102
  event: "text_chunk",
98
103
  data: { delta: chunk.delta.content }
@@ -162,6 +167,11 @@ ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
162
167
  break;
163
168
  }
164
169
  }
170
+ _chunk466ED5WNcjs.loggers.intentStream.info("Intent fulfillment completed", {
171
+ threadId: thread.threadId,
172
+ toolCallsExecuted: processList.length,
173
+ intentName: _optionalChain([intent, 'optionalAccess', _17 => _17.name])
174
+ });
165
175
  }
166
176
  /**
167
177
  * Detects the intent from context.
@@ -171,10 +181,16 @@ ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
171
181
  * @returns The detected intent
172
182
  */
173
183
  async *intentFulfillStream(intents, thread) {
184
+ const streamStartTime = Date.now();
185
+ _chunk466ED5WNcjs.loggers.intentStream.info("Stream session started", {
186
+ threadId: thread.threadId,
187
+ intentCount: intents.length,
188
+ startTime: new Date(streamStartTime).toISOString()
189
+ });
174
190
  let finalResponseText = "";
175
191
  for (let i = 0; i < intents.length; i++) {
176
192
  const { subquery, intent, actionPlan } = intents[i];
177
- _chunk466ED5WNcjs.loggers.intent.info(`Process query: ${subquery}, ${_optionalChain([intent, 'optionalAccess', _16 => _16.name])}`);
193
+ _chunk466ED5WNcjs.loggers.intent.info(`Process query: ${subquery}, ${_optionalChain([intent, 'optionalAccess', _18 => _18.name])}`);
178
194
  _chunk466ED5WNcjs.loggers.intent.info(`Action plan: ${actionPlan}`);
179
195
  finalResponseText !== "" && thread.messages.push({
180
196
  messageId: _crypto.randomUUID.call(void 0, ),
@@ -200,7 +216,6 @@ ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
200
216
  finalResponseText = "";
201
217
  for await (const event of stream) {
202
218
  if (event.event === "text_chunk" && event.data.delta) {
203
- _chunk466ED5WNcjs.loggers.intentStream.debug("text_chunk", { event });
204
219
  finalResponseText += event.data.delta;
205
220
  }
206
221
  if (event.event === "text_chunk" && i !== intents.length - 1) {
@@ -213,10 +228,17 @@ ${_optionalChain([intent, 'optionalAccess', _10 => _10.prompt]) || ""}
213
228
  role: "MODEL" /* MODEL */,
214
229
  content: finalResponseText
215
230
  });
231
+ const streamEndTime = Date.now();
232
+ const streamDuration = streamEndTime - streamStartTime;
233
+ _chunk466ED5WNcjs.loggers.intentStream.info("Stream session completed", {
234
+ threadId: thread.threadId,
235
+ duration: `${streamDuration}ms`,
236
+ endTime: new Date(streamEndTime).toISOString()
237
+ });
216
238
  }
217
239
  };
218
240
 
219
241
 
220
242
 
221
243
  exports.IntentFulfillStreamService = IntentFulfillStreamService;
222
- //# sourceMappingURL=chunk-W4PRBE6H.cjs.map
244
+ //# sourceMappingURL=chunk-G3KWCMMQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-G3KWCMMQ.cjs","../../src/services/intents/fulfill-stream.service.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-G3KWCMMQ.cjs","sourcesContent":[null,"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 functions = modelInstance.convertToolsToFunctions(tools);\n\n\t\tconst processList: string[] = [];\n\n\t\twhile (true) {\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\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 = 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\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"]}
@@ -0,0 +1,28 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk2P3ZBNVNcjs = require('./chunk-2P3ZBNVN.cjs');
4
+
5
+
6
+ var _chunkS6BHSEXFcjs = require('./chunk-S6BHSEXF.cjs');
7
+
8
+
9
+ var _chunkTILUFTIGcjs = require('./chunk-TILUFTIG.cjs');
10
+
11
+ // src/routes/intent.routes.ts
12
+ var _express = require('express');
13
+ var createIntentRouter = (agent) => {
14
+ const router = _express.Router.call(void 0, );
15
+ const threadService = new (0, _chunk2P3ZBNVNcjs.ThreadService)(agent.memoryModule);
16
+ const triggerService = new (0, _chunkTILUFTIGcjs.IntentTriggerService)(
17
+ agent.modelModule,
18
+ agent.memoryModule
19
+ );
20
+ const intentController = new (0, _chunkS6BHSEXFcjs.IntentController)(threadService, triggerService);
21
+ router.post("/trigger", intentController.handleIntentTrigger);
22
+ return router;
23
+ };
24
+
25
+
26
+
27
+ exports.createIntentRouter = createIntentRouter;
28
+ //# sourceMappingURL=chunk-IJBFU7GX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-IJBFU7GX.cjs","../../src/routes/intent.routes.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,kCAAuB;AAMhB,IAAM,mBAAA,EAAqB,CAAC,KAAA,EAAA,GAA4B;AAC9D,EAAA,MAAM,OAAA,EAAS,6BAAA,CAAO;AAEtB,EAAA,MAAM,cAAA,EAAgB,IAAI,oCAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAC1D,EAAA,MAAM,eAAA,EAAiB,IAAI,2CAAA;AAAA,IAC1B,KAAA,CAAM,WAAA;AAAA,IACN,KAAA,CAAM;AAAA,EACP,CAAA;AAEA,EAAA,MAAM,iBAAA,EAAmB,IAAI,uCAAA,CAAiB,aAAA,EAAe,cAAc,CAAA;AAE3E,EAAA,MAAA,CAAO,IAAA,CAAK,UAAA,EAAY,gBAAA,CAAiB,mBAAmB,CAAA;AAE5D,EAAA,OAAO,MAAA;AACR,CAAA;ADGA;AACA;AACE;AACF,gDAAC","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-IJBFU7GX.cjs","sourcesContent":[null,"import { Router } from \"express\";\nimport { IntentController } from \"@/controllers/intent.controller\";\nimport type { AINAgent } from \"@/index.js\";\nimport { IntentTriggerService } from \"@/services\";\nimport { ThreadService } from \"@/services/thread.service\";\n\nexport const createIntentRouter = (agent: AINAgent): Router => {\n\tconst router = Router();\n\n\tconst threadService = new ThreadService(agent.memoryModule);\n\tconst triggerService = new IntentTriggerService(\n\t\tagent.modelModule,\n\t\tagent.memoryModule,\n\t);\n\n\tconst intentController = new IntentController(threadService, triggerService);\n\n\trouter.post(\"/trigger\", intentController.handleIntentTrigger);\n\n\treturn router;\n};\n"]}
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkW4PRBE6Hcjs = require('./chunk-W4PRBE6H.cjs');
3
+ var _chunkG3KWCMMQcjs = require('./chunk-G3KWCMMQ.cjs');
4
4
 
5
5
 
6
- var _chunkTYLHXACMcjs = require('./chunk-TYLHXACM.cjs');
6
+ var _chunkX7FADTCPcjs = require('./chunk-X7FADTCP.cjs');
7
7
 
8
8
 
9
- var _chunk466ED5WNcjs = require('./chunk-466ED5WN.cjs');
9
+ var _chunkQHQLU7BIcjs = require('./chunk-QHQLU7BI.cjs');
10
10
 
11
11
 
12
- var _chunkQHQLU7BIcjs = require('./chunk-QHQLU7BI.cjs');
12
+ var _chunk466ED5WNcjs = require('./chunk-466ED5WN.cjs');
13
13
 
14
14
  // src/services/query-stream.service.ts
15
15
  var _crypto = require('crypto');
@@ -22,11 +22,11 @@ var QueryStreamService = class {
22
22
  constructor(modelModule, a2aModule, mcpModule, memoryModule, prompts) {
23
23
  this.modelModule = modelModule;
24
24
  this.memoryModule = memoryModule;
25
- this.intentTriggerService = new (0, _chunkTYLHXACMcjs.IntentTriggerService)(
25
+ this.intentTriggerService = new (0, _chunkX7FADTCPcjs.IntentTriggerService)(
26
26
  modelModule,
27
27
  memoryModule
28
28
  );
29
- this.intentFulfillStreamService = new (0, _chunkW4PRBE6Hcjs.IntentFulfillStreamService)(
29
+ this.intentFulfillStreamService = new (0, _chunkG3KWCMMQcjs.IntentFulfillStreamService)(
30
30
  modelModule,
31
31
  a2aModule,
32
32
  mcpModule,
@@ -101,15 +101,21 @@ var QueryStreamService = class {
101
101
  _chunk466ED5WNcjs.loggers.intent.info(`Create new thread: ${threadId}`);
102
102
  yield { event: "thread_id", data: { type, userId, threadId, title } };
103
103
  }
104
+ const triggeredIntent = await this.intentTriggerService.intentTriggering(query, thread);
104
105
  await _optionalChain([threadMemory, 'optionalAccess', _8 => _8.addMessagesToThread, 'call', _9 => _9(userId, threadId, [
105
106
  {
106
107
  messageId: _crypto.randomUUID.call(void 0, ),
107
108
  role: "USER" /* USER */,
108
109
  timestamp: Date.now(),
109
- content: { type: "text", parts: [query] }
110
+ content: { type: "text", parts: [query] },
111
+ metadata: {
112
+ intents: triggeredIntent.filter((intent) => !!intent.intent).map((intent) => ({
113
+ id: _optionalChain([intent, 'access', _10 => _10.intent, 'optionalAccess', _11 => _11.id]),
114
+ subquery: intent.subquery
115
+ }))
116
+ }
110
117
  }
111
118
  ])]);
112
- const triggeredIntent = await this.intentTriggerService.intentTriggering(query, thread);
113
119
  const stream = this.intentFulfillStreamService.intentFulfillStream(
114
120
  triggeredIntent,
115
121
  thread
@@ -123,4 +129,4 @@ var QueryStreamService = class {
123
129
 
124
130
 
125
131
  exports.QueryStreamService = QueryStreamService;
126
- //# sourceMappingURL=chunk-AY3PG2UZ.cjs.map
132
+ //# sourceMappingURL=chunk-JRFTCDMQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-JRFTCDMQ.cjs","../../src/services/query-stream.service.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-agent/ain-adk/dist/cjs/chunk-JRFTCDMQ.cjs","sourcesContent":[null,"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: `You 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\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"]}