@ainetwork/adk 0.3.4 β†’ 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/README.md +31 -6
  2. package/dist/cjs/chunk-24RRJOOI.cjs +362 -0
  3. package/dist/cjs/chunk-24RRJOOI.cjs.map +1 -0
  4. package/dist/cjs/chunk-25RWHBEF.cjs +62 -0
  5. package/dist/cjs/chunk-25RWHBEF.cjs.map +1 -0
  6. package/dist/cjs/chunk-2B6ZXQB6.cjs +38 -0
  7. package/dist/cjs/chunk-2B6ZXQB6.cjs.map +1 -0
  8. package/dist/cjs/chunk-2BUYQCWK.cjs +44 -0
  9. package/dist/cjs/chunk-2BUYQCWK.cjs.map +1 -0
  10. package/dist/cjs/chunk-2CQQ34ED.cjs +83 -0
  11. package/dist/cjs/chunk-2CQQ34ED.cjs.map +1 -0
  12. package/dist/cjs/chunk-2HDSF5GS.cjs +367 -0
  13. package/dist/cjs/chunk-2HDSF5GS.cjs.map +1 -0
  14. package/dist/cjs/chunk-2HV2HAU2.cjs +62 -0
  15. package/dist/cjs/chunk-2HV2HAU2.cjs.map +1 -0
  16. package/dist/cjs/chunk-2IKGA5IV.cjs +17 -0
  17. package/dist/cjs/chunk-2IKGA5IV.cjs.map +1 -0
  18. package/dist/cjs/chunk-2KGEFVQ2.cjs +111 -0
  19. package/dist/cjs/chunk-2KGEFVQ2.cjs.map +1 -0
  20. package/dist/cjs/chunk-2LUY44JT.cjs +74 -0
  21. package/dist/cjs/chunk-2LUY44JT.cjs.map +1 -0
  22. package/dist/cjs/chunk-2OOV44LV.cjs +22 -0
  23. package/dist/cjs/chunk-2OOV44LV.cjs.map +1 -0
  24. package/dist/cjs/chunk-2ZD4XC2I.cjs +44 -0
  25. package/dist/cjs/chunk-2ZD4XC2I.cjs.map +1 -0
  26. package/dist/cjs/chunk-34FFNAOJ.cjs +18 -0
  27. package/dist/cjs/chunk-34FFNAOJ.cjs.map +1 -0
  28. package/dist/cjs/chunk-3KX24OQQ.cjs +29 -0
  29. package/dist/cjs/chunk-3KX24OQQ.cjs.map +1 -0
  30. package/dist/cjs/chunk-4CHPQFJO.cjs +74 -0
  31. package/dist/cjs/chunk-4CHPQFJO.cjs.map +1 -0
  32. package/dist/cjs/chunk-4H4APXBR.cjs +17 -0
  33. package/dist/cjs/chunk-4H4APXBR.cjs.map +1 -0
  34. package/dist/cjs/chunk-4IROMVRW.cjs +29 -0
  35. package/dist/cjs/chunk-4IROMVRW.cjs.map +1 -0
  36. package/dist/cjs/chunk-4LMTR322.cjs +44 -0
  37. package/dist/cjs/chunk-4LMTR322.cjs.map +1 -0
  38. package/dist/cjs/chunk-4NZJLMT7.cjs +38 -0
  39. package/dist/cjs/chunk-4NZJLMT7.cjs.map +1 -0
  40. package/dist/cjs/chunk-4QGJ7JWW.cjs +17 -0
  41. package/dist/cjs/chunk-4QGJ7JWW.cjs.map +1 -0
  42. package/dist/cjs/chunk-4SRDLHXS.cjs +17 -0
  43. package/dist/cjs/chunk-4SRDLHXS.cjs.map +1 -0
  44. package/dist/cjs/chunk-4UDENVOJ.cjs +38 -0
  45. package/dist/cjs/chunk-4UDENVOJ.cjs.map +1 -0
  46. package/dist/cjs/chunk-4UMM25ZT.cjs +29 -0
  47. package/dist/cjs/chunk-4UMM25ZT.cjs.map +1 -0
  48. package/dist/cjs/chunk-5P25YU2Z.cjs +17 -0
  49. package/dist/cjs/chunk-5P25YU2Z.cjs.map +1 -0
  50. package/dist/cjs/chunk-5Q2KJ4H4.cjs +45 -0
  51. package/dist/cjs/chunk-5Q2KJ4H4.cjs.map +1 -0
  52. package/dist/cjs/chunk-5RLT7IZP.cjs +38 -0
  53. package/dist/cjs/chunk-5RLT7IZP.cjs.map +1 -0
  54. package/dist/cjs/chunk-5VHF27F5.cjs +44 -0
  55. package/dist/cjs/chunk-5VHF27F5.cjs.map +1 -0
  56. package/dist/cjs/chunk-65JM632P.cjs +17 -0
  57. package/dist/cjs/chunk-65JM632P.cjs.map +1 -0
  58. package/dist/cjs/chunk-6BYF7CRT.cjs +17 -0
  59. package/dist/cjs/chunk-6BYF7CRT.cjs.map +1 -0
  60. package/dist/cjs/chunk-6EBDGU4W.cjs +74 -0
  61. package/dist/cjs/chunk-6EBDGU4W.cjs.map +1 -0
  62. package/dist/cjs/chunk-6R7PSGDX.cjs +17 -0
  63. package/dist/cjs/chunk-6R7PSGDX.cjs.map +1 -0
  64. package/dist/cjs/chunk-6SVNJWA6.cjs +44 -0
  65. package/dist/cjs/chunk-6SVNJWA6.cjs.map +1 -0
  66. package/dist/cjs/chunk-77XJWOSB.cjs +17 -0
  67. package/dist/cjs/chunk-77XJWOSB.cjs.map +1 -0
  68. package/dist/cjs/chunk-7CDJAB5L.cjs +29 -0
  69. package/dist/cjs/chunk-7CDJAB5L.cjs.map +1 -0
  70. package/dist/cjs/chunk-7DEPTYG3.cjs +17 -0
  71. package/dist/cjs/chunk-7DEPTYG3.cjs.map +1 -0
  72. package/dist/cjs/chunk-7DVPCJUI.cjs +17 -0
  73. package/dist/cjs/chunk-7DVPCJUI.cjs.map +1 -0
  74. package/dist/cjs/chunk-7FOASY25.cjs +29 -0
  75. package/dist/cjs/chunk-7FOASY25.cjs.map +1 -0
  76. package/dist/cjs/chunk-7TVJGM6H.cjs +74 -0
  77. package/dist/cjs/chunk-7TVJGM6H.cjs.map +1 -0
  78. package/dist/cjs/chunk-7VYUJABV.cjs +127 -0
  79. package/dist/cjs/chunk-7VYUJABV.cjs.map +1 -0
  80. package/dist/cjs/chunk-7ZZOQCNU.cjs +17 -0
  81. package/dist/cjs/chunk-7ZZOQCNU.cjs.map +1 -0
  82. package/dist/cjs/chunk-A3FKCCSJ.cjs +44 -0
  83. package/dist/cjs/chunk-A3FKCCSJ.cjs.map +1 -0
  84. package/dist/cjs/chunk-A4ZX4Y47.cjs +45 -0
  85. package/dist/cjs/chunk-A4ZX4Y47.cjs.map +1 -0
  86. package/dist/cjs/chunk-AC32B3T4.cjs +18 -0
  87. package/dist/cjs/chunk-AC32B3T4.cjs.map +1 -0
  88. package/dist/cjs/chunk-AD6V5E5Q.cjs +89 -0
  89. package/dist/cjs/chunk-AD6V5E5Q.cjs.map +1 -0
  90. package/dist/cjs/chunk-AERYR4EH.cjs +44 -0
  91. package/dist/cjs/chunk-AERYR4EH.cjs.map +1 -0
  92. package/dist/cjs/chunk-AH6OKSE3.cjs +104 -0
  93. package/dist/cjs/chunk-AH6OKSE3.cjs.map +1 -0
  94. package/dist/cjs/chunk-ATGPYGP5.cjs +89 -0
  95. package/dist/cjs/chunk-ATGPYGP5.cjs.map +1 -0
  96. package/dist/cjs/chunk-AUAXYROS.cjs +29 -0
  97. package/dist/cjs/chunk-AUAXYROS.cjs.map +1 -0
  98. package/dist/cjs/chunk-AURUUSKY.cjs +44 -0
  99. package/dist/cjs/chunk-AURUUSKY.cjs.map +1 -0
  100. package/dist/cjs/chunk-AY4FE732.cjs +44 -0
  101. package/dist/cjs/chunk-AY4FE732.cjs.map +1 -0
  102. package/dist/cjs/chunk-BDXIWV2Q.cjs +29 -0
  103. package/dist/cjs/chunk-BDXIWV2Q.cjs.map +1 -0
  104. package/dist/cjs/chunk-BJ4IW7PS.cjs +62 -0
  105. package/dist/cjs/chunk-BJ4IW7PS.cjs.map +1 -0
  106. package/dist/cjs/chunk-BJVY3JAF.cjs +17 -0
  107. package/dist/cjs/chunk-BJVY3JAF.cjs.map +1 -0
  108. package/dist/cjs/chunk-BJXDG533.cjs +89 -0
  109. package/dist/cjs/chunk-BJXDG533.cjs.map +1 -0
  110. package/dist/cjs/chunk-BMEFG36I.cjs +356 -0
  111. package/dist/cjs/chunk-BMEFG36I.cjs.map +1 -0
  112. package/dist/cjs/chunk-BMXLCOSM.cjs +110 -0
  113. package/dist/cjs/chunk-BMXLCOSM.cjs.map +1 -0
  114. package/dist/cjs/chunk-BNV24SCZ.cjs +74 -0
  115. package/dist/cjs/chunk-BNV24SCZ.cjs.map +1 -0
  116. package/dist/cjs/chunk-BSA42PNB.cjs +17 -0
  117. package/dist/cjs/chunk-BSA42PNB.cjs.map +1 -0
  118. package/dist/cjs/chunk-BWIHGXV6.cjs +17 -0
  119. package/dist/cjs/chunk-BWIHGXV6.cjs.map +1 -0
  120. package/dist/cjs/chunk-BYU2KBHQ.cjs +89 -0
  121. package/dist/cjs/chunk-BYU2KBHQ.cjs.map +1 -0
  122. package/dist/cjs/chunk-CD755W4W.cjs +29 -0
  123. package/dist/cjs/chunk-CD755W4W.cjs.map +1 -0
  124. package/dist/cjs/chunk-CII4HFTO.cjs +44 -0
  125. package/dist/cjs/chunk-CII4HFTO.cjs.map +1 -0
  126. package/dist/cjs/chunk-CIOM5KV3.cjs +17 -0
  127. package/dist/cjs/chunk-CIOM5KV3.cjs.map +1 -0
  128. package/dist/cjs/chunk-CPXITYT4.cjs +104 -0
  129. package/dist/cjs/chunk-CPXITYT4.cjs.map +1 -0
  130. package/dist/cjs/chunk-CQZD2NDK.cjs +17 -0
  131. package/dist/cjs/chunk-CQZD2NDK.cjs.map +1 -0
  132. package/dist/cjs/chunk-CZ46DNRL.cjs +44 -0
  133. package/dist/cjs/chunk-CZ46DNRL.cjs.map +1 -0
  134. package/dist/cjs/chunk-DC6PC4DQ.cjs +17 -0
  135. package/dist/cjs/chunk-DC6PC4DQ.cjs.map +1 -0
  136. package/dist/cjs/chunk-DCCCZGV6.cjs +44 -0
  137. package/dist/cjs/chunk-DCCCZGV6.cjs.map +1 -0
  138. package/dist/cjs/chunk-DCMWIKKS.cjs +74 -0
  139. package/dist/cjs/chunk-DCMWIKKS.cjs.map +1 -0
  140. package/dist/cjs/chunk-DFUGFIB7.cjs +17 -0
  141. package/dist/cjs/chunk-DFUGFIB7.cjs.map +1 -0
  142. package/dist/cjs/chunk-DNAFVCEP.cjs +18 -0
  143. package/dist/cjs/chunk-DNAFVCEP.cjs.map +1 -0
  144. package/dist/cjs/chunk-DSP62SMI.cjs +44 -0
  145. package/dist/cjs/chunk-DSP62SMI.cjs.map +1 -0
  146. package/dist/cjs/chunk-DYQVBJUW.cjs +74 -0
  147. package/dist/cjs/chunk-DYQVBJUW.cjs.map +1 -0
  148. package/dist/cjs/chunk-DZZFES73.cjs +29 -0
  149. package/dist/cjs/chunk-DZZFES73.cjs.map +1 -0
  150. package/dist/cjs/chunk-E3FUWHFJ.cjs +44 -0
  151. package/dist/cjs/chunk-E3FUWHFJ.cjs.map +1 -0
  152. package/dist/cjs/chunk-E4MOFVBQ.cjs +29 -0
  153. package/dist/cjs/chunk-E4MOFVBQ.cjs.map +1 -0
  154. package/dist/cjs/chunk-E4U662WC.cjs +44 -0
  155. package/dist/cjs/chunk-E4U662WC.cjs.map +1 -0
  156. package/dist/cjs/chunk-E4UJYO5W.cjs +29 -0
  157. package/dist/cjs/chunk-E4UJYO5W.cjs.map +1 -0
  158. package/dist/cjs/chunk-E6LLESWJ.cjs +18 -0
  159. package/dist/cjs/chunk-E6LLESWJ.cjs.map +1 -0
  160. package/dist/cjs/chunk-EH43QFTV.cjs +62 -0
  161. package/dist/cjs/chunk-EH43QFTV.cjs.map +1 -0
  162. package/dist/cjs/chunk-EJNZ3ZOV.cjs +18 -0
  163. package/dist/cjs/chunk-EJNZ3ZOV.cjs.map +1 -0
  164. package/dist/cjs/chunk-EO6SZ6Y2.cjs +18 -0
  165. package/dist/cjs/chunk-EO6SZ6Y2.cjs.map +1 -0
  166. package/dist/cjs/chunk-ERBIJSR7.cjs +44 -0
  167. package/dist/cjs/chunk-ERBIJSR7.cjs.map +1 -0
  168. package/dist/cjs/chunk-ESLEPGTR.cjs +17 -0
  169. package/dist/cjs/chunk-ESLEPGTR.cjs.map +1 -0
  170. package/dist/cjs/chunk-EYWBSYOP.cjs +44 -0
  171. package/dist/cjs/chunk-EYWBSYOP.cjs.map +1 -0
  172. package/dist/cjs/chunk-F34KCFDI.cjs +38 -0
  173. package/dist/cjs/chunk-F34KCFDI.cjs.map +1 -0
  174. package/dist/cjs/chunk-F3LQ74NZ.cjs +62 -0
  175. package/dist/cjs/chunk-F3LQ74NZ.cjs.map +1 -0
  176. package/dist/cjs/chunk-F457QJ4S.cjs +89 -0
  177. package/dist/cjs/chunk-F457QJ4S.cjs.map +1 -0
  178. package/dist/cjs/chunk-FJCNUHOK.cjs +123 -0
  179. package/dist/cjs/chunk-FJCNUHOK.cjs.map +1 -0
  180. package/dist/cjs/chunk-FK2PASX2.cjs +89 -0
  181. package/dist/cjs/chunk-FK2PASX2.cjs.map +1 -0
  182. package/dist/cjs/chunk-FKI4W7Q5.cjs +62 -0
  183. package/dist/cjs/chunk-FKI4W7Q5.cjs.map +1 -0
  184. package/dist/cjs/chunk-FNXDTX3S.cjs +29 -0
  185. package/dist/cjs/chunk-FNXDTX3S.cjs.map +1 -0
  186. package/dist/cjs/chunk-FSJBK7YA.cjs +102 -0
  187. package/dist/cjs/chunk-FSJBK7YA.cjs.map +1 -0
  188. package/dist/cjs/chunk-G27OBOGL.cjs +89 -0
  189. package/dist/cjs/chunk-G27OBOGL.cjs.map +1 -0
  190. package/dist/cjs/chunk-G3KN7CTK.cjs +62 -0
  191. package/dist/cjs/chunk-G3KN7CTK.cjs.map +1 -0
  192. package/dist/cjs/chunk-G3ZMBBMJ.cjs +45 -0
  193. package/dist/cjs/chunk-G3ZMBBMJ.cjs.map +1 -0
  194. package/dist/cjs/chunk-G4IRAGBJ.cjs +44 -0
  195. package/dist/cjs/chunk-G4IRAGBJ.cjs.map +1 -0
  196. package/dist/cjs/chunk-GF3T2PUU.cjs +89 -0
  197. package/dist/cjs/chunk-GF3T2PUU.cjs.map +1 -0
  198. package/dist/cjs/chunk-GL6OAX2R.cjs +38 -0
  199. package/dist/cjs/chunk-GL6OAX2R.cjs.map +1 -0
  200. package/dist/cjs/chunk-GNOOMK7W.cjs +17 -0
  201. package/dist/cjs/chunk-GNOOMK7W.cjs.map +1 -0
  202. package/dist/cjs/chunk-GSYWRHCH.cjs +44 -0
  203. package/dist/cjs/chunk-GSYWRHCH.cjs.map +1 -0
  204. package/dist/cjs/chunk-GYRONVL5.cjs +89 -0
  205. package/dist/cjs/chunk-GYRONVL5.cjs.map +1 -0
  206. package/dist/cjs/chunk-HHTOL2IY.cjs +62 -0
  207. package/dist/cjs/chunk-HHTOL2IY.cjs.map +1 -0
  208. package/dist/cjs/chunk-HNFRGOJS.cjs +38 -0
  209. package/dist/cjs/chunk-HNFRGOJS.cjs.map +1 -0
  210. package/dist/cjs/chunk-HPWWWD35.cjs +38 -0
  211. package/dist/cjs/chunk-HPWWWD35.cjs.map +1 -0
  212. package/dist/cjs/chunk-HQ2XGXLM.cjs +44 -0
  213. package/dist/cjs/chunk-HQ2XGXLM.cjs.map +1 -0
  214. package/dist/cjs/chunk-HR3PYWGD.cjs +108 -0
  215. package/dist/cjs/chunk-HR3PYWGD.cjs.map +1 -0
  216. package/dist/cjs/chunk-HRKFNUT5.cjs +17 -0
  217. package/dist/cjs/chunk-HRKFNUT5.cjs.map +1 -0
  218. package/dist/cjs/chunk-HRZFYMBV.cjs +89 -0
  219. package/dist/cjs/chunk-HRZFYMBV.cjs.map +1 -0
  220. package/dist/cjs/chunk-HZK3RE3S.cjs +17 -0
  221. package/dist/cjs/chunk-HZK3RE3S.cjs.map +1 -0
  222. package/dist/cjs/chunk-I3BOGWFE.cjs +29 -0
  223. package/dist/cjs/chunk-I3BOGWFE.cjs.map +1 -0
  224. package/dist/cjs/chunk-I5XAKTTY.cjs +319 -0
  225. package/dist/cjs/chunk-I5XAKTTY.cjs.map +1 -0
  226. package/dist/cjs/chunk-I6C7GP3A.cjs +17 -0
  227. package/dist/cjs/chunk-I6C7GP3A.cjs.map +1 -0
  228. package/dist/cjs/chunk-I7RTPAIU.cjs +89 -0
  229. package/dist/cjs/chunk-I7RTPAIU.cjs.map +1 -0
  230. package/dist/cjs/chunk-ICGENXDJ.cjs +38 -0
  231. package/dist/cjs/chunk-ICGENXDJ.cjs.map +1 -0
  232. package/dist/cjs/chunk-IDDQKX45.cjs +18 -0
  233. package/dist/cjs/chunk-IDDQKX45.cjs.map +1 -0
  234. package/dist/cjs/chunk-IHWB5JO3.cjs +340 -0
  235. package/dist/cjs/chunk-IHWB5JO3.cjs.map +1 -0
  236. package/dist/cjs/chunk-IQ2G4LUS.cjs +89 -0
  237. package/dist/cjs/chunk-IQ2G4LUS.cjs.map +1 -0
  238. package/dist/cjs/chunk-IRTWZKRL.cjs +29 -0
  239. package/dist/cjs/chunk-IRTWZKRL.cjs.map +1 -0
  240. package/dist/cjs/chunk-IS6Q542T.cjs +18 -0
  241. package/dist/cjs/chunk-IS6Q542T.cjs.map +1 -0
  242. package/dist/cjs/chunk-IVNKHMZI.cjs +199 -0
  243. package/dist/cjs/chunk-IVNKHMZI.cjs.map +1 -0
  244. package/dist/cjs/chunk-IY5Q3TOG.cjs +17 -0
  245. package/dist/cjs/chunk-IY5Q3TOG.cjs.map +1 -0
  246. package/dist/cjs/chunk-J25SHMXB.cjs +38 -0
  247. package/dist/cjs/chunk-J25SHMXB.cjs.map +1 -0
  248. package/dist/cjs/chunk-J6RQW3CG.cjs +44 -0
  249. package/dist/cjs/chunk-J6RQW3CG.cjs.map +1 -0
  250. package/dist/cjs/chunk-JCC4WECX.cjs +17 -0
  251. package/dist/cjs/chunk-JCC4WECX.cjs.map +1 -0
  252. package/dist/cjs/chunk-JCHBG2CK.cjs +29 -0
  253. package/dist/cjs/chunk-JCHBG2CK.cjs.map +1 -0
  254. package/dist/cjs/chunk-JDIXUPU3.cjs +199 -0
  255. package/dist/cjs/chunk-JDIXUPU3.cjs.map +1 -0
  256. package/dist/cjs/chunk-JO4DRJQZ.cjs +104 -0
  257. package/dist/cjs/chunk-JO4DRJQZ.cjs.map +1 -0
  258. package/dist/cjs/chunk-K2YKI5RV.cjs +62 -0
  259. package/dist/cjs/chunk-K2YKI5RV.cjs.map +1 -0
  260. package/dist/cjs/chunk-K3UELZ4W.cjs +127 -0
  261. package/dist/cjs/chunk-K3UELZ4W.cjs.map +1 -0
  262. package/dist/cjs/chunk-K4BDE4VQ.cjs +17 -0
  263. package/dist/cjs/chunk-K4BDE4VQ.cjs.map +1 -0
  264. package/dist/cjs/chunk-K54PUMX5.cjs +44 -0
  265. package/dist/cjs/chunk-K54PUMX5.cjs.map +1 -0
  266. package/dist/cjs/chunk-KCLZUNG3.cjs +38 -0
  267. package/dist/cjs/chunk-KCLZUNG3.cjs.map +1 -0
  268. package/dist/cjs/chunk-KG7XEHCF.cjs +38 -0
  269. package/dist/cjs/chunk-KG7XEHCF.cjs.map +1 -0
  270. package/dist/cjs/chunk-KK4VTG2X.cjs +89 -0
  271. package/dist/cjs/chunk-KK4VTG2X.cjs.map +1 -0
  272. package/dist/cjs/chunk-KNYVRACQ.cjs +62 -0
  273. package/dist/cjs/chunk-KNYVRACQ.cjs.map +1 -0
  274. package/dist/cjs/chunk-KP4L7527.cjs +17 -0
  275. package/dist/cjs/chunk-KP4L7527.cjs.map +1 -0
  276. package/dist/cjs/chunk-L5B2EAJM.cjs +18 -0
  277. package/dist/cjs/chunk-L5B2EAJM.cjs.map +1 -0
  278. package/dist/cjs/chunk-LAX3Y732.cjs +18 -0
  279. package/dist/cjs/chunk-LAX3Y732.cjs.map +1 -0
  280. package/dist/cjs/chunk-LDR76PHY.cjs +104 -0
  281. package/dist/cjs/chunk-LDR76PHY.cjs.map +1 -0
  282. package/dist/cjs/chunk-LETDXZVR.cjs +17 -0
  283. package/dist/cjs/chunk-LETDXZVR.cjs.map +1 -0
  284. package/dist/cjs/chunk-LMIIDGXP.cjs +321 -0
  285. package/dist/cjs/chunk-LMIIDGXP.cjs.map +1 -0
  286. package/dist/cjs/chunk-LNJJUOEN.cjs +160 -0
  287. package/dist/cjs/chunk-LNJJUOEN.cjs.map +1 -0
  288. package/dist/cjs/chunk-LS3KARP2.cjs +29 -0
  289. package/dist/cjs/chunk-LS3KARP2.cjs.map +1 -0
  290. package/dist/cjs/chunk-LX2A6XTF.cjs +17 -0
  291. package/dist/cjs/chunk-LX2A6XTF.cjs.map +1 -0
  292. package/dist/cjs/chunk-M2PY55RJ.cjs +17 -0
  293. package/dist/cjs/chunk-M2PY55RJ.cjs.map +1 -0
  294. package/dist/cjs/chunk-M5TPCHBZ.cjs +17 -0
  295. package/dist/cjs/chunk-M5TPCHBZ.cjs.map +1 -0
  296. package/dist/cjs/chunk-M6OZBNV3.cjs +17 -0
  297. package/dist/cjs/chunk-M6OZBNV3.cjs.map +1 -0
  298. package/dist/cjs/chunk-MBYBLKWW.cjs +17 -0
  299. package/dist/cjs/chunk-MBYBLKWW.cjs.map +1 -0
  300. package/dist/cjs/chunk-MIPD6XXN.cjs +17 -0
  301. package/dist/cjs/chunk-MIPD6XXN.cjs.map +1 -0
  302. package/dist/cjs/chunk-MJ673V54.cjs +18 -0
  303. package/dist/cjs/chunk-MJ673V54.cjs.map +1 -0
  304. package/dist/cjs/chunk-MYFVFI5F.cjs +74 -0
  305. package/dist/cjs/chunk-MYFVFI5F.cjs.map +1 -0
  306. package/dist/cjs/chunk-N27L7CJA.cjs +17 -0
  307. package/dist/cjs/chunk-N27L7CJA.cjs.map +1 -0
  308. package/dist/cjs/chunk-N4O2YERL.cjs +95 -0
  309. package/dist/cjs/chunk-N4O2YERL.cjs.map +1 -0
  310. package/dist/cjs/chunk-NBIMJPFQ.cjs +62 -0
  311. package/dist/cjs/chunk-NBIMJPFQ.cjs.map +1 -0
  312. package/dist/cjs/chunk-NE4IG7YO.cjs +17 -0
  313. package/dist/cjs/chunk-NE4IG7YO.cjs.map +1 -0
  314. package/dist/cjs/chunk-NF3E675K.cjs +74 -0
  315. package/dist/cjs/chunk-NF3E675K.cjs.map +1 -0
  316. package/dist/cjs/chunk-NFAEF6W7.cjs +62 -0
  317. package/dist/cjs/chunk-NFAEF6W7.cjs.map +1 -0
  318. package/dist/cjs/chunk-NFFV5YMX.cjs +44 -0
  319. package/dist/cjs/chunk-NFFV5YMX.cjs.map +1 -0
  320. package/dist/cjs/chunk-NN7IOMRL.cjs +62 -0
  321. package/dist/cjs/chunk-NN7IOMRL.cjs.map +1 -0
  322. package/dist/cjs/chunk-NTO6MT57.cjs +18 -0
  323. package/dist/cjs/chunk-NTO6MT57.cjs.map +1 -0
  324. package/dist/cjs/chunk-NWMEKI2D.cjs +29 -0
  325. package/dist/cjs/chunk-NWMEKI2D.cjs.map +1 -0
  326. package/dist/cjs/chunk-NZXQID5S.cjs +104 -0
  327. package/dist/cjs/chunk-NZXQID5S.cjs.map +1 -0
  328. package/dist/cjs/chunk-O4WIK7YI.cjs +95 -0
  329. package/dist/cjs/chunk-O4WIK7YI.cjs.map +1 -0
  330. package/dist/cjs/chunk-O7WYT77Q.cjs +62 -0
  331. package/dist/cjs/chunk-O7WYT77Q.cjs.map +1 -0
  332. package/dist/cjs/chunk-OJM4BUY2.cjs +89 -0
  333. package/dist/cjs/chunk-OJM4BUY2.cjs.map +1 -0
  334. package/dist/cjs/chunk-OTZ4JQDD.cjs +17 -0
  335. package/dist/cjs/chunk-OTZ4JQDD.cjs.map +1 -0
  336. package/dist/cjs/chunk-OVI3MJ2U.cjs +74 -0
  337. package/dist/cjs/chunk-OVI3MJ2U.cjs.map +1 -0
  338. package/dist/cjs/chunk-P64FBXOS.cjs +104 -0
  339. package/dist/cjs/chunk-P64FBXOS.cjs.map +1 -0
  340. package/dist/cjs/chunk-PFGRED5M.cjs +17 -0
  341. package/dist/cjs/chunk-PFGRED5M.cjs.map +1 -0
  342. package/dist/cjs/chunk-PKRYQGR7.cjs +17 -0
  343. package/dist/cjs/chunk-PKRYQGR7.cjs.map +1 -0
  344. package/dist/cjs/chunk-PO73CXQO.cjs +62 -0
  345. package/dist/cjs/chunk-PO73CXQO.cjs.map +1 -0
  346. package/dist/cjs/chunk-PTJST6LH.cjs +38 -0
  347. package/dist/cjs/chunk-PTJST6LH.cjs.map +1 -0
  348. package/dist/cjs/chunk-PVBRREHI.cjs +18 -0
  349. package/dist/cjs/chunk-PVBRREHI.cjs.map +1 -0
  350. package/dist/cjs/chunk-PZS5HEWV.cjs +74 -0
  351. package/dist/cjs/chunk-PZS5HEWV.cjs.map +1 -0
  352. package/dist/cjs/chunk-Q36KS63B.cjs +17 -0
  353. package/dist/cjs/chunk-Q36KS63B.cjs.map +1 -0
  354. package/dist/cjs/chunk-QEIMXVUF.cjs +44 -0
  355. package/dist/cjs/chunk-QEIMXVUF.cjs.map +1 -0
  356. package/dist/cjs/chunk-QIAOPBBD.cjs +17 -0
  357. package/dist/cjs/chunk-QIAOPBBD.cjs.map +1 -0
  358. package/dist/cjs/chunk-QJQWN7DT.cjs +44 -0
  359. package/dist/cjs/chunk-QJQWN7DT.cjs.map +1 -0
  360. package/dist/cjs/chunk-QK26HLOI.cjs +38 -0
  361. package/dist/cjs/chunk-QK26HLOI.cjs.map +1 -0
  362. package/dist/cjs/chunk-QOFTRHCH.cjs +62 -0
  363. package/dist/cjs/chunk-QOFTRHCH.cjs.map +1 -0
  364. package/dist/cjs/chunk-QWETDD3J.cjs +17 -0
  365. package/dist/cjs/chunk-QWETDD3J.cjs.map +1 -0
  366. package/dist/cjs/chunk-QWNRKRZO.cjs +44 -0
  367. package/dist/cjs/chunk-QWNRKRZO.cjs.map +1 -0
  368. package/dist/cjs/chunk-RAL7YD6T.cjs +44 -0
  369. package/dist/cjs/chunk-RAL7YD6T.cjs.map +1 -0
  370. package/dist/cjs/chunk-RF5RZWJP.cjs +17 -0
  371. package/dist/cjs/chunk-RF5RZWJP.cjs.map +1 -0
  372. package/dist/cjs/chunk-RRVTDGEC.cjs +44 -0
  373. package/dist/cjs/chunk-RRVTDGEC.cjs.map +1 -0
  374. package/dist/cjs/chunk-RVU4TKUZ.cjs +89 -0
  375. package/dist/cjs/chunk-RVU4TKUZ.cjs.map +1 -0
  376. package/dist/cjs/chunk-S6M6Q6Y4.cjs +18 -0
  377. package/dist/cjs/chunk-S6M6Q6Y4.cjs.map +1 -0
  378. package/dist/cjs/chunk-S6T455CQ.cjs +17 -0
  379. package/dist/cjs/chunk-S6T455CQ.cjs.map +1 -0
  380. package/dist/cjs/chunk-SC7EAJGH.cjs +17 -0
  381. package/dist/cjs/chunk-SC7EAJGH.cjs.map +1 -0
  382. package/dist/cjs/chunk-SD3MWNJS.cjs +38 -0
  383. package/dist/cjs/chunk-SD3MWNJS.cjs.map +1 -0
  384. package/dist/cjs/chunk-SDUFCQJX.cjs +77 -0
  385. package/dist/cjs/chunk-SDUFCQJX.cjs.map +1 -0
  386. package/dist/cjs/chunk-SFLERIBX.cjs +44 -0
  387. package/dist/cjs/chunk-SFLERIBX.cjs.map +1 -0
  388. package/dist/cjs/chunk-SFZRVWAS.cjs +116 -0
  389. package/dist/cjs/chunk-SFZRVWAS.cjs.map +1 -0
  390. package/dist/cjs/chunk-SMD6TIFZ.cjs +17 -0
  391. package/dist/cjs/chunk-SMD6TIFZ.cjs.map +1 -0
  392. package/dist/cjs/chunk-SSKGQ6Q6.cjs +44 -0
  393. package/dist/cjs/chunk-SSKGQ6Q6.cjs.map +1 -0
  394. package/dist/cjs/chunk-SV2K3QIF.cjs +89 -0
  395. package/dist/cjs/chunk-SV2K3QIF.cjs.map +1 -0
  396. package/dist/cjs/chunk-SVO42FE4.cjs +199 -0
  397. package/dist/cjs/chunk-SVO42FE4.cjs.map +1 -0
  398. package/dist/cjs/chunk-SVWQ7SSG.cjs +17 -0
  399. package/dist/cjs/chunk-SVWQ7SSG.cjs.map +1 -0
  400. package/dist/cjs/chunk-SWXYI6B3.cjs +17 -0
  401. package/dist/cjs/chunk-SWXYI6B3.cjs.map +1 -0
  402. package/dist/cjs/chunk-SYRDNATI.cjs +18 -0
  403. package/dist/cjs/chunk-SYRDNATI.cjs.map +1 -0
  404. package/dist/cjs/chunk-T6JV6NPL.cjs +29 -0
  405. package/dist/cjs/chunk-T6JV6NPL.cjs.map +1 -0
  406. package/dist/cjs/chunk-TA7HWVVM.cjs +44 -0
  407. package/dist/cjs/chunk-TA7HWVVM.cjs.map +1 -0
  408. package/dist/cjs/chunk-TFIT3UQZ.cjs +38 -0
  409. package/dist/cjs/chunk-TFIT3UQZ.cjs.map +1 -0
  410. package/dist/cjs/chunk-TGBWU6YD.cjs +74 -0
  411. package/dist/cjs/chunk-TGBWU6YD.cjs.map +1 -0
  412. package/dist/cjs/chunk-TR6LECJD.cjs +17 -0
  413. package/dist/cjs/chunk-TR6LECJD.cjs.map +1 -0
  414. package/dist/cjs/chunk-TRKYSXVL.cjs +74 -0
  415. package/dist/cjs/chunk-TRKYSXVL.cjs.map +1 -0
  416. package/dist/cjs/chunk-TUCSLVSF.cjs +74 -0
  417. package/dist/cjs/chunk-TUCSLVSF.cjs.map +1 -0
  418. package/dist/cjs/chunk-TY7RIDKN.cjs +89 -0
  419. package/dist/cjs/chunk-TY7RIDKN.cjs.map +1 -0
  420. package/dist/cjs/chunk-TYE2ZJYK.cjs +44 -0
  421. package/dist/cjs/chunk-TYE2ZJYK.cjs.map +1 -0
  422. package/dist/cjs/chunk-U2VDAWF2.cjs +17 -0
  423. package/dist/cjs/chunk-U2VDAWF2.cjs.map +1 -0
  424. package/dist/cjs/chunk-U6NBOZG4.cjs +17 -0
  425. package/dist/cjs/chunk-U6NBOZG4.cjs.map +1 -0
  426. package/dist/cjs/chunk-UAUKUVGY.cjs +110 -0
  427. package/dist/cjs/chunk-UAUKUVGY.cjs.map +1 -0
  428. package/dist/cjs/chunk-UMP63WKM.cjs +89 -0
  429. package/dist/cjs/chunk-UMP63WKM.cjs.map +1 -0
  430. package/dist/cjs/chunk-UNJZ3SCR.cjs +38 -0
  431. package/dist/cjs/chunk-UNJZ3SCR.cjs.map +1 -0
  432. package/dist/cjs/chunk-UNRTZ7XD.cjs +18 -0
  433. package/dist/cjs/chunk-UNRTZ7XD.cjs.map +1 -0
  434. package/dist/cjs/chunk-UOTEA2IY.cjs +104 -0
  435. package/dist/cjs/chunk-UOTEA2IY.cjs.map +1 -0
  436. package/dist/cjs/chunk-UQFLEWWA.cjs +362 -0
  437. package/dist/cjs/chunk-UQFLEWWA.cjs.map +1 -0
  438. package/dist/cjs/chunk-UT235OR6.cjs +29 -0
  439. package/dist/cjs/chunk-UT235OR6.cjs.map +1 -0
  440. package/dist/cjs/chunk-UTG6F3AH.cjs +44 -0
  441. package/dist/cjs/chunk-UTG6F3AH.cjs.map +1 -0
  442. package/dist/cjs/chunk-UVPSBGW7.cjs +74 -0
  443. package/dist/cjs/chunk-UVPSBGW7.cjs.map +1 -0
  444. package/dist/cjs/chunk-VDXJGAFA.cjs +17 -0
  445. package/dist/cjs/chunk-VDXJGAFA.cjs.map +1 -0
  446. package/dist/cjs/chunk-VFY3KVCK.cjs +38 -0
  447. package/dist/cjs/chunk-VFY3KVCK.cjs.map +1 -0
  448. package/dist/cjs/chunk-VGA4O5CY.cjs +62 -0
  449. package/dist/cjs/chunk-VGA4O5CY.cjs.map +1 -0
  450. package/dist/cjs/chunk-VXJ52V2L.cjs +321 -0
  451. package/dist/cjs/chunk-VXJ52V2L.cjs.map +1 -0
  452. package/dist/cjs/chunk-WCTCFUE2.cjs +367 -0
  453. package/dist/cjs/chunk-WCTCFUE2.cjs.map +1 -0
  454. package/dist/cjs/chunk-WGJ2T4XM.cjs +74 -0
  455. package/dist/cjs/chunk-WGJ2T4XM.cjs.map +1 -0
  456. package/dist/cjs/chunk-WIS6QBYF.cjs +77 -0
  457. package/dist/cjs/chunk-WIS6QBYF.cjs.map +1 -0
  458. package/dist/cjs/chunk-WL657FMV.cjs +17 -0
  459. package/dist/cjs/chunk-WL657FMV.cjs.map +1 -0
  460. package/dist/cjs/chunk-WZDAN7J3.cjs +74 -0
  461. package/dist/cjs/chunk-WZDAN7J3.cjs.map +1 -0
  462. package/dist/cjs/chunk-WZEICEMD.cjs +62 -0
  463. package/dist/cjs/chunk-WZEICEMD.cjs.map +1 -0
  464. package/dist/cjs/chunk-X4P5E72G.cjs +38 -0
  465. package/dist/cjs/chunk-X4P5E72G.cjs.map +1 -0
  466. package/dist/cjs/chunk-XIVWRYNJ.cjs +38 -0
  467. package/dist/cjs/chunk-XIVWRYNJ.cjs.map +1 -0
  468. package/dist/cjs/chunk-XZUUYWF4.cjs +74 -0
  469. package/dist/cjs/chunk-XZUUYWF4.cjs.map +1 -0
  470. package/dist/cjs/chunk-Y524IIF6.cjs +199 -0
  471. package/dist/cjs/chunk-Y524IIF6.cjs.map +1 -0
  472. package/dist/cjs/chunk-YCUKZPKY.cjs +18 -0
  473. package/dist/cjs/chunk-YCUKZPKY.cjs.map +1 -0
  474. package/dist/cjs/chunk-YDBR3EYV.cjs +17 -0
  475. package/dist/cjs/chunk-YDBR3EYV.cjs.map +1 -0
  476. package/dist/cjs/chunk-YFX5DLRD.cjs +44 -0
  477. package/dist/cjs/chunk-YFX5DLRD.cjs.map +1 -0
  478. package/dist/cjs/chunk-YG4CXCLW.cjs +44 -0
  479. package/dist/cjs/chunk-YG4CXCLW.cjs.map +1 -0
  480. package/dist/cjs/chunk-YHG5J4EH.cjs +44 -0
  481. package/dist/cjs/chunk-YHG5J4EH.cjs.map +1 -0
  482. package/dist/cjs/chunk-YI2OQGES.cjs +44 -0
  483. package/dist/cjs/chunk-YI2OQGES.cjs.map +1 -0
  484. package/dist/cjs/chunk-YNPHQW5S.cjs +17 -0
  485. package/dist/cjs/chunk-YNPHQW5S.cjs.map +1 -0
  486. package/dist/cjs/chunk-YX4LVEKP.cjs +62 -0
  487. package/dist/cjs/chunk-YX4LVEKP.cjs.map +1 -0
  488. package/dist/cjs/chunk-Z57RTBQ6.cjs +18 -0
  489. package/dist/cjs/chunk-Z57RTBQ6.cjs.map +1 -0
  490. package/dist/cjs/chunk-Z7RQOH67.cjs +18 -0
  491. package/dist/cjs/chunk-Z7RQOH67.cjs.map +1 -0
  492. package/dist/cjs/chunk-Z7ZCJEME.cjs +44 -0
  493. package/dist/cjs/chunk-Z7ZCJEME.cjs.map +1 -0
  494. package/dist/cjs/chunk-ZEOLDU53.cjs +17 -0
  495. package/dist/cjs/chunk-ZEOLDU53.cjs.map +1 -0
  496. package/dist/cjs/chunk-ZKYRM76Q.cjs +74 -0
  497. package/dist/cjs/chunk-ZKYRM76Q.cjs.map +1 -0
  498. package/dist/cjs/chunk-ZNOPX24J.cjs +89 -0
  499. package/dist/cjs/chunk-ZNOPX24J.cjs.map +1 -0
  500. package/dist/cjs/chunk-ZO4B7BJ3.cjs +38 -0
  501. package/dist/cjs/chunk-ZO4B7BJ3.cjs.map +1 -0
  502. package/dist/cjs/chunk-ZP7AGIQW.cjs +367 -0
  503. package/dist/cjs/chunk-ZP7AGIQW.cjs.map +1 -0
  504. package/dist/cjs/chunk-ZUIRE3CM.cjs +18 -0
  505. package/dist/cjs/chunk-ZUIRE3CM.cjs.map +1 -0
  506. package/dist/cjs/container/controllers.cjs +6 -5
  507. package/dist/cjs/container/controllers.cjs.map +1 -1
  508. package/dist/cjs/container/index.cjs +18 -18
  509. package/dist/cjs/container/services.cjs +14 -14
  510. package/dist/cjs/controllers/a2a.controller.cjs +3 -3
  511. package/dist/cjs/controllers/api/workflow.api.controller.cjs +2 -2
  512. package/dist/cjs/controllers/index.cjs +5 -5
  513. package/dist/cjs/controllers/query.controller.cjs +4 -3
  514. package/dist/cjs/controllers/query.controller.cjs.map +1 -1
  515. package/dist/cjs/index.cjs +42 -42
  516. package/dist/cjs/index.cjs.map +1 -1
  517. package/dist/cjs/middlewares/error.middleware.cjs +3 -3
  518. package/dist/cjs/modules/a2a/a2a.module.cjs +4 -4
  519. package/dist/cjs/modules/index.cjs +10 -10
  520. package/dist/cjs/modules/index.cjs.map +1 -1
  521. package/dist/cjs/modules/mcp/mcp.module.cjs +3 -3
  522. package/dist/cjs/routes/a2a.routes.cjs +21 -21
  523. package/dist/cjs/routes/api/agent.routes.cjs +19 -19
  524. package/dist/cjs/routes/api/intent.routes.cjs +19 -19
  525. package/dist/cjs/routes/api/model.routes.cjs +19 -19
  526. package/dist/cjs/routes/api/threads.routes.cjs +19 -19
  527. package/dist/cjs/routes/api/workflow.routes.cjs +19 -19
  528. package/dist/cjs/routes/api.routes.cjs +24 -24
  529. package/dist/cjs/routes/index.cjs +28 -28
  530. package/dist/cjs/routes/intent.routes.cjs +19 -19
  531. package/dist/cjs/routes/query.routes.cjs +19 -19
  532. package/dist/cjs/services/a2a.service.cjs +3 -3
  533. package/dist/cjs/services/index.cjs +15 -15
  534. package/dist/cjs/services/index.cjs.map +1 -1
  535. package/dist/cjs/services/intents/aggregate.service.cjs +3 -3
  536. package/dist/cjs/services/intents/fulfill.service.cjs +5 -5
  537. package/dist/cjs/services/intents/multi-trigger.service.cjs +3 -3
  538. package/dist/cjs/services/intents/single-trigger.service.cjs +3 -3
  539. package/dist/cjs/services/intents/trigger.service.cjs +5 -5
  540. package/dist/cjs/services/query.service.cjs +5 -5
  541. package/dist/cjs/services/utils/query.common.cjs +3 -3
  542. package/dist/cjs/types/memory.cjs +2 -2
  543. package/dist/cjs/utils/logger.cjs +4 -2
  544. package/dist/cjs/utils/logger.cjs.map +1 -1
  545. package/dist/esm/{chunk-7XQPJVYO.js β†’ chunk-3IG6HCSA.js} +2 -2
  546. package/dist/esm/{chunk-44CTGJX4.js β†’ chunk-5FJU67BO.js} +59 -16
  547. package/dist/esm/chunk-5FJU67BO.js.map +1 -0
  548. package/dist/esm/{chunk-IG3B5AXN.js β†’ chunk-A3CKGK3U.js} +3 -3
  549. package/dist/esm/{chunk-RAHOYMKY.js β†’ chunk-BYGS3GS6.js} +2 -2
  550. package/dist/esm/{chunk-7DH4SI44.js β†’ chunk-CYP6OTDK.js} +5 -5
  551. package/dist/esm/{chunk-2VGXYWJD.js β†’ chunk-D66QTWUY.js} +2 -2
  552. package/dist/esm/{chunk-ZNZZZ4NN.js β†’ chunk-DBB7B4PV.js} +4 -4
  553. package/dist/esm/chunk-DBB7B4PV.js.map +1 -0
  554. package/dist/esm/{chunk-VUMI4XOY.js β†’ chunk-GHUEA7V5.js} +23 -2
  555. package/dist/esm/chunk-GHUEA7V5.js.map +1 -0
  556. package/dist/esm/{chunk-I4P7JMJC.js β†’ chunk-GKG27ZGB.js} +3 -3
  557. package/dist/esm/{chunk-5IIF5O4A.js β†’ chunk-HEYSMA5B.js} +2 -2
  558. package/dist/esm/{chunk-TQJCYP7X.js β†’ chunk-L447Q33F.js} +33 -4
  559. package/dist/esm/chunk-L447Q33F.js.map +1 -0
  560. package/dist/esm/{chunk-AEBBZSQ4.js β†’ chunk-LLYDI3LD.js} +3 -3
  561. package/dist/esm/{chunk-YMSNW2SU.js β†’ chunk-MVVAEPGR.js} +2 -2
  562. package/dist/esm/{chunk-LMOWEXWF.js β†’ chunk-MXPZHEDH.js} +6 -6
  563. package/dist/esm/{chunk-VP5Q63JU.js β†’ chunk-MZRZVF5Q.js} +2 -2
  564. package/dist/esm/{chunk-FCH7BUK4.js β†’ chunk-R2R3AMCG.js} +2 -2
  565. package/dist/esm/{chunk-D6STNZ2L.js β†’ chunk-RE676AIN.js} +16 -1
  566. package/dist/esm/chunk-RE676AIN.js.map +1 -0
  567. package/dist/esm/{chunk-PZQRSWST.js β†’ chunk-SDABEZSA.js} +2 -2
  568. package/dist/esm/{chunk-PVWOU6LA.js β†’ chunk-SV5CKUNN.js} +2 -2
  569. package/dist/esm/{chunk-BZUWX7HX.js β†’ chunk-TR2QAQEW.js} +14 -5
  570. package/dist/esm/chunk-TR2QAQEW.js.map +1 -0
  571. package/dist/esm/{chunk-CC6DWPHZ.js β†’ chunk-VGL4ZVNA.js} +8 -8
  572. package/dist/esm/chunk-VGL4ZVNA.js.map +1 -0
  573. package/dist/esm/{chunk-6YBQCUNB.js β†’ chunk-VOMI5BAO.js} +2 -2
  574. package/dist/esm/{chunk-4BHU7SPZ.js β†’ chunk-VX3VWWYW.js} +1 -1
  575. package/dist/esm/{chunk-4BHU7SPZ.js.map β†’ chunk-VX3VWWYW.js.map} +1 -1
  576. package/dist/esm/{chunk-ZJVWC666.js β†’ chunk-WMHUZEL2.js} +2 -2
  577. package/dist/esm/{chunk-ZK3HZBER.js β†’ chunk-XXDILT4B.js} +2 -2
  578. package/dist/esm/{chunk-JXGQVFCO.js β†’ chunk-ZSWCICNO.js} +16 -8
  579. package/dist/esm/chunk-ZSWCICNO.js.map +1 -0
  580. package/dist/esm/{chunk-FRQSMPPK.js β†’ chunk-ZUVYTTPD.js} +2 -2
  581. package/dist/esm/{chunk-QQZ5ANSD.js β†’ chunk-ZXRDGIRP.js} +38 -26
  582. package/dist/esm/chunk-ZXRDGIRP.js.map +1 -0
  583. package/dist/esm/container/controllers.js +5 -4
  584. package/dist/esm/container/index.js +16 -16
  585. package/dist/esm/container/services.js +12 -12
  586. package/dist/esm/controllers/a2a.controller.js +2 -2
  587. package/dist/esm/controllers/api/workflow.api.controller.js +1 -1
  588. package/dist/esm/controllers/index.js +4 -4
  589. package/dist/esm/controllers/query.controller.js +3 -2
  590. package/dist/esm/index.js +28 -28
  591. package/dist/esm/index.js.map +1 -1
  592. package/dist/esm/middlewares/error.middleware.js +2 -2
  593. package/dist/esm/modules/a2a/a2a.module.js +3 -3
  594. package/dist/esm/modules/index.js +10 -10
  595. package/dist/esm/modules/mcp/mcp.module.js +2 -2
  596. package/dist/esm/modules/memory/base.memory.d.ts +1 -1
  597. package/dist/esm/routes/a2a.routes.js +18 -18
  598. package/dist/esm/routes/api/agent.routes.js +17 -17
  599. package/dist/esm/routes/api/intent.routes.js +17 -17
  600. package/dist/esm/routes/api/model.routes.js +17 -17
  601. package/dist/esm/routes/api/threads.routes.js +17 -17
  602. package/dist/esm/routes/api/workflow.routes.js +17 -17
  603. package/dist/esm/routes/api.routes.js +22 -22
  604. package/dist/esm/routes/index.js +25 -25
  605. package/dist/esm/routes/intent.routes.js +17 -17
  606. package/dist/esm/routes/query.routes.js +17 -17
  607. package/dist/esm/services/a2a.service.js +2 -2
  608. package/dist/esm/services/index.js +11 -11
  609. package/dist/esm/services/intents/aggregate.service.d.ts +10 -0
  610. package/dist/esm/services/intents/aggregate.service.js +2 -2
  611. package/dist/esm/services/intents/fulfill.service.d.ts +5 -4
  612. package/dist/esm/services/intents/fulfill.service.js +4 -4
  613. package/dist/esm/services/intents/multi-trigger.service.d.ts +3 -3
  614. package/dist/esm/services/intents/multi-trigger.service.js +2 -2
  615. package/dist/esm/services/intents/single-trigger.service.d.ts +3 -3
  616. package/dist/esm/services/intents/single-trigger.service.js +2 -2
  617. package/dist/esm/services/intents/trigger.service.d.ts +3 -3
  618. package/dist/esm/services/intents/trigger.service.js +4 -4
  619. package/dist/esm/services/query.service.js +4 -4
  620. package/dist/esm/services/utils/query.common.js +2 -2
  621. package/dist/esm/types/memory.d.ts +11 -1
  622. package/dist/esm/types/memory.js +1 -1
  623. package/dist/esm/utils/logger.d.ts +2 -1
  624. package/dist/esm/utils/logger.js +3 -1
  625. package/package.json +1 -1
  626. package/dist/esm/chunk-44CTGJX4.js.map +0 -1
  627. package/dist/esm/chunk-BZUWX7HX.js.map +0 -1
  628. package/dist/esm/chunk-CC6DWPHZ.js.map +0 -1
  629. package/dist/esm/chunk-D6STNZ2L.js.map +0 -1
  630. package/dist/esm/chunk-JXGQVFCO.js.map +0 -1
  631. package/dist/esm/chunk-QQZ5ANSD.js.map +0 -1
  632. package/dist/esm/chunk-TQJCYP7X.js.map +0 -1
  633. package/dist/esm/chunk-VUMI4XOY.js.map +0 -1
  634. package/dist/esm/chunk-ZNZZZ4NN.js.map +0 -1
  635. /package/dist/esm/{chunk-7XQPJVYO.js.map β†’ chunk-3IG6HCSA.js.map} +0 -0
  636. /package/dist/esm/{chunk-IG3B5AXN.js.map β†’ chunk-A3CKGK3U.js.map} +0 -0
  637. /package/dist/esm/{chunk-RAHOYMKY.js.map β†’ chunk-BYGS3GS6.js.map} +0 -0
  638. /package/dist/esm/{chunk-7DH4SI44.js.map β†’ chunk-CYP6OTDK.js.map} +0 -0
  639. /package/dist/esm/{chunk-2VGXYWJD.js.map β†’ chunk-D66QTWUY.js.map} +0 -0
  640. /package/dist/esm/{chunk-I4P7JMJC.js.map β†’ chunk-GKG27ZGB.js.map} +0 -0
  641. /package/dist/esm/{chunk-5IIF5O4A.js.map β†’ chunk-HEYSMA5B.js.map} +0 -0
  642. /package/dist/esm/{chunk-AEBBZSQ4.js.map β†’ chunk-LLYDI3LD.js.map} +0 -0
  643. /package/dist/esm/{chunk-YMSNW2SU.js.map β†’ chunk-MVVAEPGR.js.map} +0 -0
  644. /package/dist/esm/{chunk-LMOWEXWF.js.map β†’ chunk-MXPZHEDH.js.map} +0 -0
  645. /package/dist/esm/{chunk-VP5Q63JU.js.map β†’ chunk-MZRZVF5Q.js.map} +0 -0
  646. /package/dist/esm/{chunk-FCH7BUK4.js.map β†’ chunk-R2R3AMCG.js.map} +0 -0
  647. /package/dist/esm/{chunk-PZQRSWST.js.map β†’ chunk-SDABEZSA.js.map} +0 -0
  648. /package/dist/esm/{chunk-PVWOU6LA.js.map β†’ chunk-SV5CKUNN.js.map} +0 -0
  649. /package/dist/esm/{chunk-6YBQCUNB.js.map β†’ chunk-VOMI5BAO.js.map} +0 -0
  650. /package/dist/esm/{chunk-ZJVWC666.js.map β†’ chunk-WMHUZEL2.js.map} +0 -0
  651. /package/dist/esm/{chunk-ZK3HZBER.js.map β†’ chunk-XXDILT4B.js.map} +0 -0
  652. /package/dist/esm/{chunk-FRQSMPPK.js.map β†’ chunk-ZUVYTTPD.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateTitle
3
- } from "../../chunk-5IIF5O4A.js";
4
- import "../../chunk-VUMI4XOY.js";
3
+ } from "../../chunk-HEYSMA5B.js";
4
+ import "../../chunk-GHUEA7V5.js";
5
5
  export {
6
6
  generateTitle
7
7
  };
@@ -97,6 +97,16 @@ type TriggeredIntent = {
97
97
  intent?: Intent;
98
98
  actionPlan?: string;
99
99
  };
100
+ /**
101
+ * Result of multi-intent triggering.
102
+ * Contains the list of triggered intents and metadata about aggregation.
103
+ */
104
+ type IntentTriggerResult = {
105
+ /** List of triggered intents */
106
+ intents: Array<TriggeredIntent>;
107
+ /** Whether the results need to be aggregated into a unified response */
108
+ needsAggregation: boolean;
109
+ };
100
110
  /**
101
111
  * Result of fulfilling a single intent.
102
112
  * Used to collect all results before the rewrite step.
@@ -120,4 +130,4 @@ interface Workflow {
120
130
  content: string;
121
131
  }
122
132
 
123
- export { type FulfillmentResult, type Intent, type MessageContentObject, type MessageObject, MessageRole, type ThreadMetadata, type ThreadObject, ThreadType, type TriggeredIntent, type Workflow };
133
+ export { type FulfillmentResult, type Intent, type IntentTriggerResult, type MessageContentObject, type MessageObject, MessageRole, type ThreadMetadata, type ThreadObject, ThreadType, type TriggeredIntent, type Workflow };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MessageRole,
3
3
  ThreadType
4
- } from "../chunk-4BHU7SPZ.js";
4
+ } from "../chunk-VX3VWWYW.js";
5
5
  export {
6
6
  MessageRole,
7
7
  ThreadType
@@ -12,5 +12,6 @@ declare const loggers: {
12
12
  readonly server: winston.Logger;
13
13
  readonly fol: winston.Logger;
14
14
  };
15
+ declare const interceptConsole: () => void;
15
16
 
16
- export { getLogger, logger, loggers };
17
+ export { getLogger, interceptConsole, logger, loggers };
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  getLogger,
3
+ interceptConsole,
3
4
  logger,
4
5
  loggers
5
- } from "../chunk-VUMI4XOY.js";
6
+ } from "../chunk-GHUEA7V5.js";
6
7
  export {
7
8
  getLogger,
9
+ interceptConsole,
8
10
  logger,
9
11
  loggers
10
12
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainetwork/adk",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
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)",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/intents/fulfill.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { getManifest } from \"@/config/manifest\";\nimport type {\n\tA2AModule,\n\tMCPModule,\n\tMemoryModule,\n\tModelModule,\n} from \"@/modules\";\nimport type { OnIntentFallback } from \"@/types/agent\";\nimport { CONNECTOR_PROTOCOL_TYPE, type ConnectorTool } from \"@/types/connector\";\nimport {\n\ttype FulfillmentResult,\n\ttype Intent,\n\ttype MessageObject,\n\tMessageRole,\n\ttype ThreadObject,\n\ttype TriggeredIntent,\n} from \"@/types/memory\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger\";\nimport { createFulfillPrompt } from \"../utils/fulfill.common\";\nimport { AggregateService } from \"./aggregate.service\";\n\n/**\n * Check if multi-intent is disabled via environment variable.\n */\nfunction isMultiIntentDisabled(): boolean {\n\tconst value = process.env.DISABLE_MULTI_INTENTS;\n\treturn value === \"true\" || value === \"1\";\n}\n\nexport class IntentFulfillService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule: MemoryModule;\n\tprivate a2aModule?: A2AModule;\n\tprivate mcpModule?: MCPModule;\n\tprivate onIntentFallback?: OnIntentFallback;\n\tprivate aggregateService: AggregateService;\n\n\tconstructor(\n\t\tmodelModule: ModelModule,\n\t\tmemoryModule: MemoryModule,\n\t\ta2aModule?: A2AModule,\n\t\tmcpModule?: MCPModule,\n\t\tonIntentFallback?: OnIntentFallback,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.a2aModule = a2aModule;\n\t\tthis.mcpModule = mcpModule;\n\t\tthis.onIntentFallback = onIntentFallback;\n\t\tthis.aggregateService = new AggregateService(modelModule);\n\t}\n\n\tprivate async addToThreadMessages(\n\t\tthread: ThreadObject,\n\t\tparams: {\n\t\t\trole: MessageRole;\n\t\t\tcontent: string;\n\t\t\tmetadata?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\ttry {\n\t\t\tconst threadMemory = this.memoryModule.getThreadMemory();\n\t\t\tconst { userId, threadId } = thread;\n\t\t\tconst newMessage: MessageObject = {\n\t\t\t\tmessageId: randomUUID(),\n\t\t\t\trole: params.role,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tcontent: { type: \"text\", parts: [params.content] },\n\t\t\t\tmetadata: params.metadata,\n\t\t\t};\n\t\t\tthread.messages.push(newMessage);\n\t\t\tawait threadMemory?.addMessagesToThread(userId, threadId, [newMessage]);\n\t\t} catch (error) {\n\t\t\tloggers.intentStream.error(\"Error adding message to thread\", error);\n\t\t}\n\t}\n\n\t/**\n\t * Fulfills the detected intent by generating a streaming response.\n\t *\n\t * Manages the complete inference loop including:\n\t * - Loading prompts and conversation history\n\t * - Collecting available tools from modules\n\t * - Executing model inference with tool support\n\t * - Processing tool calls iteratively until completion\n\t * - Streaming results as Server-Sent Events\n\t *\n\t * @param query - The user's input query\n\t * @param threadId - Thread identifier for context\n\t * @param thread - Previous conversation history\n\t * @param intent - Optional detected intent with custom prompt\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tprivate async *intentFulfilling(\n\t\tquery: string,\n\t\tthread: ThreadObject,\n\t\tintent?: Intent,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst agentMemory = this.memoryModule.getAgentMemory();\n\t\tconst fulfillPrompt = await createFulfillPrompt(agentMemory, intent);\n\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery,\n\t\t\tthread,\n\t\t\tsystemPrompt: fulfillPrompt.trim(),\n\t\t});\n\n\t\tloggers.intent.debug(\"Intent fulfillment start\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tmessages,\n\t\t});\n\n\t\tconst tools: ConnectorTool[] = [];\n\t\tthis.mcpModule && tools.push(...this.mcpModule.getTools());\n\t\tthis.a2aModule && tools.push(...(await this.a2aModule.getTools()));\n\n\t\tconst processList: string[] = [];\n\n\t\twhile (true) {\n\t\t\tconst functions = modelInstance.convertToolsToFunctions(tools);\n\t\t\tconst responseStream = await modelInstance.fetchStreamWithContextMessage(\n\t\t\t\tmessages,\n\t\t\t\tfunctions,\n\t\t\t\tmodelOptions,\n\t\t\t);\n\n\t\t\tconst assembledToolCalls: {\n\t\t\t\tid: string;\n\t\t\t\ttype: \"function\";\n\t\t\t\tfunction: { name: string; arguments: string };\n\t\t\t}[] = [];\n\n\t\t\tfor await (const chunk of responseStream) {\n\t\t\t\tconst delta = chunk.delta;\n\t\t\t\tif (delta?.tool_calls) {\n\t\t\t\t\tfor (const { index, id, function: func } of delta.tool_calls) {\n\t\t\t\t\t\tassembledToolCalls[index] ??= {\n\t\t\t\t\t\t\tid: \"\",\n\t\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\t\tfunction: { name: \"\", arguments: \"\" },\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (id) assembledToolCalls[index].id = id;\n\t\t\t\t\t\tif (func?.name) assembledToolCalls[index].function.name = func.name;\n\t\t\t\t\t\tif (func?.arguments)\n\t\t\t\t\t\t\tassembledToolCalls[index].function.arguments += func.arguments;\n\t\t\t\t\t}\n\t\t\t\t} else if (chunk.delta?.content) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\t\tdata: { delta: chunk.delta.content },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tloggers.intentStream.debug(\"assembledToolCalls\", {\n\t\t\t\tthreadId: thread.threadId,\n\t\t\t\tassembledToolCalls,\n\t\t\t});\n\n\t\t\tif (assembledToolCalls.length > 0) {\n\t\t\t\tfor (const toolCall of assembledToolCalls) {\n\t\t\t\t\tconst toolName = toolCall.function.name;\n\t\t\t\t\tlet selectedTool: ConnectorTool | undefined;\n\t\t\t\t\tfor (const [index, toolTmp] of tools.entries()) {\n\t\t\t\t\t\tif (toolTmp.toolName === toolName) {\n\t\t\t\t\t\t\tif (toolTmp.protocol === CONNECTOR_PROTOCOL_TYPE.A2A) {\n\t\t\t\t\t\t\t\t// remove used tool to prevent infinite loop\n\t\t\t\t\t\t\t\tselectedTool = tools.splice(index, 1)[0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tselectedTool = toolTmp;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!selectedTool) {\n\t\t\t\t\t\t// it cannot be happened...\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst toolArgs = JSON.parse(toolCall.function.arguments);\n\t\t\t\t\tconst thinkData = {\n\t\t\t\t\t\ttitle: `[${getManifest().name}] ${selectedTool.protocol} μ‹€ν–‰: ${toolName}`,\n\t\t\t\t\t\tdescription: `${toolArgs.thinking_text || \"\"}`,\n\t\t\t\t\t};\n\t\t\t\t\tyield {\n\t\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\t\tdata: thinkData,\n\t\t\t\t\t};\n\n\t\t\t\t\tlet toolResult = \"\";\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.mcpModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.MCP\n\t\t\t\t\t) {\n\t\t\t\t\t\tloggers.intent.info(\"MCP tool call\", { toolName, toolArgs });\n\t\t\t\t\t\ttoolResult = await this.mcpModule.useTool(selectedTool, toolArgs);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tthis.a2aModule &&\n\t\t\t\t\t\tselectedTool.protocol === CONNECTOR_PROTOCOL_TYPE.A2A\n\t\t\t\t\t) {\n\t\t\t\t\t\tloggers.intent.info(\"A2A tool call\", { toolName });\n\t\t\t\t\t\tconst a2aStream = this.a2aModule.useTool(\n\t\t\t\t\t\t\tselectedTool,\n\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\tthread.threadId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// yield intermediate events and get final result\n\t\t\t\t\t\tlet result = await a2aStream.next();\n\t\t\t\t\t\twhile (!result.done) {\n\t\t\t\t\t\t\tif (result.value.event === \"thinking_process\") {\n\t\t\t\t\t\t\t\tyield result.value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresult = await a2aStream.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoolResult = result.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Unrecognized tool type. It cannot be happened...\n\t\t\t\t\t\tloggers.intent.warn(\n\t\t\t\t\t\t\t`Unrecognized tool type: ${selectedTool.protocol}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tloggers.intent.debug(\"Tool Result\", { toolResult });\n\n\t\t\t\t\tprocessList.push(toolResult);\n\t\t\t\t\tmodelInstance.appendMessages(messages, toolResult);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tloggers.intent.debug(\"Intent fulfillment completed\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\ttoolCallsExecuted: processList.length,\n\t\t\tintentName: intent?.name,\n\t\t});\n\t}\n\n\t/**\n\t * Returns the appropriate stream for a triggered intent.\n\t * Uses fallback handler if no intent matched and fallback is configured.\n\t */\n\tprivate getIntentStream(\n\t\ttriggeredIntent: TriggeredIntent,\n\t\tthread: ThreadObject,\n\t): AsyncGenerator<StreamEvent> | undefined {\n\t\tconst { subquery = \"\", intent } = triggeredIntent;\n\n\t\tif (!intent && this.onIntentFallback) {\n\t\t\tloggers.intent.info(\"No intent matched, calling fallback handler\");\n\t\t\tconst fallbackStream = this.onIntentFallback({\n\t\t\t\ttriggeredIntent,\n\t\t\t\tthread,\n\t\t\t});\n\t\t\tif (fallbackStream !== undefined) {\n\t\t\t\treturn fallbackStream;\n\t\t\t}\n\t\t}\n\n\t\treturn this.intentFulfilling(subquery, thread, intent);\n\t}\n\n\t/**\n\t * Processes all triggered intents and generates a unified response.\n\t *\n\t * Workflow:\n\t * 1. Process each intent sequentially, collecting results\n\t * 2. Yield thinking_process events for progress visibility\n\t * 3. Use RewriteService to determine if results need unification\n\t * 4. Stream the final (possibly rewritten) response\n\t *\n\t * @param intents - Array of triggered intents to process\n\t * @param thread - The thread history\n\t * @param originalQuery - The user's original query (for rewrite context)\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tpublic async *intentFulfill(\n\t\tintents: Array<TriggeredIntent>,\n\t\tthread: ThreadObject,\n\t\toriginalQuery: string,\n\t): 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\tif (isMultiIntentDisabled()) {\n\t\t\t// Single-intent mode: stream response directly without aggregation\n\t\t\tconst triggeredIntent = intents[0];\n\t\t\tif (!triggeredIntent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { subquery = \"\", intent, actionPlan } = triggeredIntent;\n\t\t\tloggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);\n\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t// Yield thinking_process for progress visibility\n\t\t\tyield {\n\t\t\t\tevent: \"thinking_process\",\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: `[${getManifest().name}] ${subquery}`,\n\t\t\t\t\tdescription: actionPlan || \"\",\n\t\t\t\t},\n\t\t\t};\n\n\t\t\t// Get the stream for this intent\n\t\t\tconst stream = this.getIntentStream(triggeredIntent, thread);\n\t\t\tif (!stream) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Stream response directly\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t}\n\t\t\t\tyield event;\n\t\t\t}\n\t\t} else {\n\t\t\t// Multi-intent mode: collect all results then aggregate\n\t\t\tconst fulfillmentResults: FulfillmentResult[] = [];\n\n\t\t\tfor (let i = 0; i < intents.length; i++) {\n\t\t\t\tconst triggeredIntent = intents[i];\n\t\t\t\tconst { subquery = \"\", intent, actionPlan } = triggeredIntent;\n\t\t\t\tloggers.intent.info(`Process query: ${subquery}, ${intent?.name}`);\n\t\t\t\tloggers.intent.info(`Action plan: ${actionPlan}`);\n\n\t\t\t\t// Add previous result to thread context for inference (not stored in memory)\n\t\t\t\tif (fulfillmentResults.length > 0) {\n\t\t\t\t\tconst lastResult = fulfillmentResults[fulfillmentResults.length - 1];\n\t\t\t\t\tthread.messages.push({\n\t\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\tcontent: { type: \"text\", parts: [lastResult.response] },\n\t\t\t\t\t\tmetadata: { isThinking: true },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Yield thinking_process for progress visibility\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttitle: `[${getManifest().name}] ${subquery}`,\n\t\t\t\t\t\tdescription: actionPlan || \"\",\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\t// Get the stream for this intent\n\t\t\t\tconst stream = this.getIntentStream(triggeredIntent, thread);\n\t\t\t\tif (!stream) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Collect response text (don't yield text_chunk yet)\n\t\t\t\tlet responseText = \"\";\n\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\t\tresponseText += event.data.delta;\n\t\t\t\t\t} else if (event.event === \"thinking_process\") {\n\t\t\t\t\t\t// Tool execution thinking_process events are yielded immediately\n\t\t\t\t\t\tyield event;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfulfillmentResults.push({\n\t\t\t\t\tsubquery,\n\t\t\t\t\tintent,\n\t\t\t\t\tactionPlan,\n\t\t\t\t\tresponse: responseText,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Aggregate step: determine if unification is needed and generate final response\n\t\t\tconst aggregateStream = this.aggregateService.aggregateIfNeeded(\n\t\t\t\toriginalQuery,\n\t\t\t\tfulfillmentResults,\n\t\t\t);\n\n\t\t\tfor await (const event of aggregateStream) {\n\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t}\n\t\t\t\tyield event;\n\t\t\t}\n\t\t}\n\n\t\t// Save final response to memory\n\t\tawait this.addToThreadMessages(thread, {\n\t\t\trole: MessageRole.MODEL,\n\t\t\tcontent: finalResponseText,\n\t\t});\n\n\t\tconst streamEndTime = Date.now();\n\t\tconst streamDuration = streamEndTime - streamStartTime;\n\n\t\tloggers.intentStream.info(\"Stream session completed\", {\n\t\t\tthreadId: thread.threadId,\n\t\t\tduration: `${streamDuration}ms`,\n\t\t\tendTime: new Date(streamEndTime).toISOString(),\n\t\t});\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/controllers/api/workflow.api.controller.ts"],"sourcesContent":["import type { NextFunction, Request, Response } from \"express\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type { MemoryModule } from \"@/modules/index.js\";\nimport type { Workflow } from \"@/types/memory\";\n\nexport class WorkflowApiController {\n\tprivate memoryModule: MemoryModule;\n\n\tconstructor(memoryModule: MemoryModule) {\n\t\tthis.memoryModule = memoryModule;\n\t}\n\n\tpublic handleGetAllWorkflows = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst { userId } = req.query as { userId?: string };\n\t\t\tconst workflowMemory = this.memoryModule.getWorkflowMemory();\n\t\t\tconst workflows = await workflowMemory?.listWorkflows(userId);\n\t\t\tres.json(workflows);\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleGetWorkflow = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst { id } = req.params as { id: string };\n\t\t\tconst workflowMemory = this.memoryModule.getWorkflowMemory();\n\t\t\tconst workflow = await workflowMemory?.getWorkflow(id);\n\t\t\tif (!workflow) {\n\t\t\t\tres.status(StatusCodes.NOT_FOUND).send();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tres.json(workflow);\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleCreateWorkflow = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst workflow = req.body as Workflow;\n\t\t\tconst workflowMemory = this.memoryModule.getWorkflowMemory();\n\t\t\tconst created = await workflowMemory?.createWorkflow(workflow);\n\t\t\tres.status(StatusCodes.CREATED).json(created);\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleUpdateWorkflow = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst { id } = req.params as { id: string };\n\t\t\tconst workflow = req.body as Partial<Workflow>;\n\t\t\tconst workflowMemory = this.memoryModule.getWorkflowMemory();\n\t\t\tawait workflowMemory?.updateWorkflow(id, workflow);\n\t\t\tres.status(StatusCodes.OK).send();\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleDeleteWorkflow = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\ttry {\n\t\t\tconst { id } = req.params as { id: string };\n\t\t\tconst workflowMemory = this.memoryModule.getWorkflowMemory();\n\t\t\tawait workflowMemory?.deleteWorkflow(id);\n\t\t\tres.status(StatusCodes.OK).send();\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n}\n"],"mappings":";AACA,SAAS,mBAAmB;AAIrB,IAAM,wBAAN,MAA4B;AAAA,EAC1B;AAAA,EAER,YAAY,cAA4B;AACvC,SAAK,eAAe;AAAA,EACrB;AAAA,EAEO,wBAAwB,OAC9B,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,EAAE,OAAO,IAAI,IAAI;AACvB,YAAM,iBAAiB,KAAK,aAAa,kBAAkB;AAC3D,YAAM,YAAY,MAAM,gBAAgB,cAAc,MAAM;AAC5D,UAAI,KAAK,SAAS;AAAA,IACnB,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,oBAAoB,OAC1B,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,EAAE,GAAG,IAAI,IAAI;AACnB,YAAM,iBAAiB,KAAK,aAAa,kBAAkB;AAC3D,YAAM,WAAW,MAAM,gBAAgB,YAAY,EAAE;AACrD,UAAI,CAAC,UAAU;AACd,YAAI,OAAO,YAAY,SAAS,EAAE,KAAK;AACvC;AAAA,MACD;AACA,UAAI,KAAK,QAAQ;AAAA,IAClB,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,uBAAuB,OAC7B,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,WAAW,IAAI;AACrB,YAAM,iBAAiB,KAAK,aAAa,kBAAkB;AAC3D,YAAM,UAAU,MAAM,gBAAgB,eAAe,QAAQ;AAC7D,UAAI,OAAO,YAAY,OAAO,EAAE,KAAK,OAAO;AAAA,IAC7C,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,uBAAuB,OAC7B,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,EAAE,GAAG,IAAI,IAAI;AACnB,YAAM,WAAW,IAAI;AACrB,YAAM,iBAAiB,KAAK,aAAa,kBAAkB;AAC3D,YAAM,gBAAgB,eAAe,IAAI,QAAQ;AACjD,UAAI,OAAO,YAAY,EAAE,EAAE,KAAK;AAAA,IACjC,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,uBAAuB,OAC7B,KACA,KACA,SACI;AACJ,QAAI;AACH,YAAM,EAAE,GAAG,IAAI,IAAI;AACnB,YAAM,iBAAiB,KAAK,aAAa,kBAAkB;AAC3D,YAAM,gBAAgB,eAAe,EAAE;AACvC,UAAI,OAAO,YAAY,EAAE,EAAE,KAAK;AAAA,IACjC,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AACD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/intents/single-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\n/**\n * Service for single-intent triggering.\n * Identifies a single intent without decomposing queries into subqueries.\n */\nexport class SingleIntentTriggerService {\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 a single intent from context.\n\t * Simpler prompt that doesn't decompose queries into subqueries.\n\t *\n\t * @param query - The user's input query\n\t * @param thread - The thread history\n\t * @returns Array with single TriggeredIntent\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 modelOptions = this.modelModule.getModelOptions();\n\t\tconst intentMemory = this.memoryModule.getIntentMemory();\n\t\tif (!intentMemory) {\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tconst intents = await intentMemory.listIntents();\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.`;\n\n\t\tconst userMessage = `\n${\n\tthreadMessages !== \"\"\n\t\t? `The following is the conversation history with the user: ${threadMessages}\n\n\t`\n\t\t: \"\"\n}\nUser question: \"${query}\"\n\nBased on the above conversation history, analyze the user question and identify the most relevant intent.\n\nInstructions:\n1. Select the single most appropriate intent from the available intent list\n2. If no intent matches well, do not set intentName\n3. Provide a 2-3 sentence action plan describing what will be done\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 \"intentName\": \"<intent_name or null>\",\n \"actionPlan\": \"<2-3 sentence description of what will be done>\"\n}`;\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, modelOptions);\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 parsed: { intentName?: string; actionPlan?: string };\n\t\ttry {\n\t\t\tparsed = JSON.parse(response.content);\n\t\t} catch (error: unknown) {\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tconst result: TriggeredIntent = {\n\t\t\tsubquery: query,\n\t\t\tactionPlan: parsed.actionPlan,\n\t\t};\n\n\t\tif (parsed.intentName) {\n\t\t\tresult.intent = await intentMemory.getIntentByName(parsed.intentName);\n\t\t}\n\n\t\treturn [result];\n\t}\n}\n"],"mappings":";;;;;AAYO,IAAM,6BAAN,MAAiC;AAAA,EAC/B;AAAA,EACA;AAAA,EAER,YAAY,aAA0B,cAA4B;AACjE,SAAK,cAAc;AACnB,SAAK,eAAe;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,OACA,QACkC;AAClC,UAAM,gBAAgB,KAAK,YAAY,SAAS;AAChD,UAAM,eAAe,KAAK,YAAY,gBAAgB;AACtD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,UAAM,UAAU,MAAM,aAAa,YAAY;AAC/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;AAIV,UAAM,cAAc;AAAA,EAErB,mBAAmB,KAChB,4DAA4D,cAAc;AAAA;AAAA,KAG1E,EACJ;AAAA,kBACkB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,UAAM,WAAW,cAAc,iBAAiB;AAAA,MAC/C,OAAO;AAAA,MACP;AAAA,IACD,CAAC;AAED,UAAM,WAAW,MAAM,cAAc,MAAM,UAAU,YAAY;AACjE,QAAI,CAAC,SAAS,SAAS;AACtB,cAAQ,OAAO,KAAK,kCAAkC;AACtD,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,QAAI;AACJ,QAAI;AACH,eAAS,KAAK,MAAM,SAAS,OAAO;AAAA,IACrC,SAAS,OAAgB;AACxB,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,UAAM,SAA0B;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,OAAO;AAAA,IACpB;AAEA,QAAI,OAAO,YAAY;AACtB,aAAO,SAAS,MAAM,aAAa,gBAAgB,OAAO,UAAU;AAAA,IACrE;AAEA,WAAO,CAAC,MAAM;AAAA,EACf;AACD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/controllers/query.controller.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { NextFunction, Request, Response } from \"express\";\nimport type { QueryService } from \"@/services\";\nimport { MessageRole } from \"@/types/memory\";\n\nexport class QueryController {\n\tprivate queryService: QueryService;\n\n\tconstructor(queryService: QueryService) {\n\t\tthis.queryService = queryService;\n\t}\n\n\tpublic handleQueryRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\tnext: NextFunction,\n\t) => {\n\t\tconst {\n\t\t\ttype,\n\t\t\tthreadId,\n\t\t\tmessage: query,\n\t\t\tdisplayMessage: displayQuery,\n\t\t} = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\ttry {\n\t\t\tconst stream = this.queryService.handleQuery(\n\t\t\t\t{ type, userId, threadId },\n\t\t\t\t{ query, displayQuery },\n\t\t\t);\n\n\t\t\tlet content = \"\";\n\t\t\tlet responseThreadId = threadId;\n\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"thread_id\") {\n\t\t\t\t\tresponseThreadId = event.data.threadId;\n\t\t\t\t} else if (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\tcontent += event.data.delta;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tres.status(200).json({ content, threadId: responseThreadId });\n\t\t} catch (error) {\n\t\t\tnext(error);\n\t\t}\n\t};\n\n\tpublic handleQueryStreamRequest = async (\n\t\treq: Request,\n\t\tres: Response,\n\t\t_next: NextFunction,\n\t) => {\n\t\tconst {\n\t\t\ttype,\n\t\t\tthreadId,\n\t\t\tmessage: query,\n\t\t\tdisplayMessage: displayQuery,\n\t\t} = req.body;\n\t\tconst userId = res.locals.userId;\n\n\t\tres.writeHead(200, {\n\t\t\t\"Content-Type\": \"text/event-stream\",\n\t\t\t\"Cache-Control\": \"no-cache\",\n\t\t\tConnection: \"keep-alive\",\n\t\t\t\"X-Accel-Buffering\": \"no\", // nginx 버퍼링 λΉ„ν™œμ„±ν™”\n\t\t});\n\t\tres.flushHeaders();\n\t\tres.write(\":ok\\n\\n\");\n\n\t\tconst keepaliveInterval = setInterval(() => {\n\t\t\tres.write(\":keepalive\\n\\n\");\n\t\t}, 10000); // 10μ΄ˆλ§ˆλ‹€ keepalive 전솑\n\n\t\tlet currentThreadId = threadId;\n\t\tconst stream = this.queryService.handleQuery(\n\t\t\t{ type, userId, threadId },\n\t\t\t{ query, displayQuery },\n\t\t);\n\n\t\ttry {\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.event === \"thread_id\") {\n\t\t\t\t\tcurrentThreadId = event.data.threadId;\n\t\t\t\t} else if (event.event === \"thinking_process\") {\n\t\t\t\t\t// a2a ν˜ΈμΆœμ— λŒ€ν•΄μ„œλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— μΆ”κ°€ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ μ—¬κΈ°μ„œ thread message에 기둝\n\t\t\t\t\tthis.queryService.addToThreadMessages(userId, currentThreadId, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmessageId: randomUUID(),\n\t\t\t\t\t\t\trole: MessageRole.MODEL,\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t\tcontent: { type: \"text\", parts: [event.data.title] },\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\tisThinking: true,\n\t\t\t\t\t\t\t\tthinkData: event.data,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t}\n\n\t\t\t\tres.write(\n\t\t\t\t\t`event: ${event.event}\\ndata: ${JSON.stringify(event.data)}\\n\\n`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (error: unknown) {\n\t\t\tconst errMsg =\n\t\t\t\t(error as Error)?.message || \"Failed to handle query stream\";\n\t\t\tres.write(`event: error\\ndata: ${errMsg}\\n\\n`);\n\t\t} finally {\n\t\t\tclearInterval(keepaliveInterval);\n\t\t\tres.end();\n\t\t}\n\t};\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAKpB,IAAM,kBAAN,MAAsB;AAAA,EACpB;AAAA,EAER,YAAY,cAA4B;AACvC,SAAK,eAAe;AAAA,EACrB;AAAA,EAEO,qBAAqB,OAC3B,KACA,KACA,SACI;AACJ,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,gBAAgB;AAAA,IACjB,IAAI,IAAI;AACR,UAAM,SAAS,IAAI,OAAO;AAE1B,QAAI;AACH,YAAM,SAAS,KAAK,aAAa;AAAA,QAChC,EAAE,MAAM,QAAQ,SAAS;AAAA,QACzB,EAAE,OAAO,aAAa;AAAA,MACvB;AAEA,UAAI,UAAU;AACd,UAAI,mBAAmB;AAEvB,uBAAiB,SAAS,QAAQ;AACjC,YAAI,MAAM,UAAU,aAAa;AAChC,6BAAmB,MAAM,KAAK;AAAA,QAC/B,WAAW,MAAM,UAAU,gBAAgB,MAAM,KAAK,OAAO;AAC5D,qBAAW,MAAM,KAAK;AAAA,QACvB;AAAA,MACD;AAEA,UAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,UAAU,iBAAiB,CAAC;AAAA,IAC7D,SAAS,OAAO;AACf,WAAK,KAAK;AAAA,IACX;AAAA,EACD;AAAA,EAEO,2BAA2B,OACjC,KACA,KACA,UACI;AACJ,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,gBAAgB;AAAA,IACjB,IAAI,IAAI;AACR,UAAM,SAAS,IAAI,OAAO;AAE1B,QAAI,UAAU,KAAK;AAAA,MAClB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,qBAAqB;AAAA;AAAA,IACtB,CAAC;AACD,QAAI,aAAa;AACjB,QAAI,MAAM,SAAS;AAEnB,UAAM,oBAAoB,YAAY,MAAM;AAC3C,UAAI,MAAM,gBAAgB;AAAA,IAC3B,GAAG,GAAK;AAER,QAAI,kBAAkB;AACtB,UAAM,SAAS,KAAK,aAAa;AAAA,MAChC,EAAE,MAAM,QAAQ,SAAS;AAAA,MACzB,EAAE,OAAO,aAAa;AAAA,IACvB;AAEA,QAAI;AACH,uBAAiB,SAAS,QAAQ;AACjC,YAAI,MAAM,UAAU,aAAa;AAChC,4BAAkB,MAAM,KAAK;AAAA,QAC9B,WAAW,MAAM,UAAU,oBAAoB;AAE9C,eAAK,aAAa,oBAAoB,QAAQ,iBAAiB;AAAA,YAC9D;AAAA,cACC,WAAW,WAAW;AAAA,cACtB;AAAA,cACA,WAAW,KAAK,IAAI;AAAA,cACpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AAAA,cACnD,UAAU;AAAA,gBACT,YAAY;AAAA,gBACZ,WAAW,MAAM;AAAA,cAClB;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAEA,YAAI;AAAA,UACH,UAAU,MAAM,KAAK;AAAA,QAAW,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA,QAC3D;AAAA,MACD;AAAA,IACD,SAAS,OAAgB;AACxB,YAAM,SACJ,OAAiB,WAAW;AAC9B,UAAI,MAAM;AAAA,QAAuB,MAAM;AAAA;AAAA,CAAM;AAAA,IAC9C,UAAE;AACD,oBAAc,iBAAiB;AAC/B,UAAI,IAAI;AAAA,IACT;AAAA,EACD;AACD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/query.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type {\n\tMemoryModule,\n\tModelFetchOptions,\n\tModelModule,\n} from \"@/modules/index.js\";\nimport { AinHttpError } from \"@/types/agent.js\";\nimport {\n\ttype MessageObject,\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 type { IntentFulfillService } from \"./intents/fulfill.service\";\nimport type { IntentTriggerService } from \"./intents/trigger.service\";\nimport { generateTitle } from \"./utils/query.common\";\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\tmemoryModule: MemoryModule,\n\t\tintentTriggerService: IntentTriggerService,\n\t\tintentFulfillService: IntentFulfillService,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.intentTriggerService = intentTriggerService;\n\t\tthis.intentFulfillService = intentFulfillService;\n\t}\n\n\tpublic async addToThreadMessages(\n\t\tuserId: string,\n\t\tthreadId: string,\n\t\tmessages: Array<MessageObject>,\n\t) {\n\t\tconst threadMemory = this.memoryModule.getThreadMemory();\n\t\tawait threadMemory?.addMessagesToThread(userId, threadId, messages);\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 *handleQuery(\n\t\tthreadMetadata: {\n\t\t\ttype: ThreadType;\n\t\t\tuserId: string;\n\t\t\tthreadId?: string;\n\t\t\toptions?: ModelFetchOptions;\n\t\t},\n\t\tqueryData: {\n\t\t\tquery: string;\n\t\t\tdisplayQuery?: string;\n\t\t},\n\t\tisA2A?: boolean,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst { type, userId, options } = threadMetadata;\n\t\tconst { query, displayQuery } = queryData;\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 generateTitle(this.modelModule, query, options);\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 this.addToThreadMessages(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\t// use displayQuery for better UX in enterprise application\n\t\t\t\tcontent: { type: \"text\", parts: [displayQuery || 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\tquery: !displayQuery ? undefined : query,\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\t// 3. intent fulfillment (with rewrite step)\n\t\tconst stream = this.intentFulfillService.intentFulfill(\n\t\t\ttriggeredIntent,\n\t\t\tthread,\n\t\t\tquery,\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":";;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AA4BrB,IAAM,eAAN,MAAmB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YACC,aACA,cACA,sBACA,sBACC;AACD,SAAK,cAAc;AACnB,SAAK,eAAe;AACpB,SAAK,uBAAuB;AAC5B,SAAK,uBAAuB;AAAA,EAC7B;AAAA,EAEA,MAAa,oBACZ,QACA,UACA,UACC;AACD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,UAAM,cAAc,oBAAoB,QAAQ,UAAU,QAAQ;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAc,YACb,gBAMA,WAIA,OAC8B;AAC9B,UAAM,EAAE,MAAM,QAAQ,QAAQ,IAAI;AAClC,UAAM,EAAE,OAAO,aAAa,IAAI;AAChC,UAAM,eAAe,KAAK,aAAa,gBAAgB;AAGvD,QAAI,WAAW,eAAe;AAC9B,QAAI;AACJ,QAAI,UAAU;AACb,eAAS,MAAM,cAAc,UAAU,QAAQ,QAAQ;AACvD,UAAI,CAAC,UAAU,CAAC,OAAO;AACtB,cAAM,IAAI,aAAa,YAAY,WAAW,kBAAkB;AAAA,MACjE;AAAA,IACD;AAEA,iBAAa,WAAW;AACxB,QAAI,CAAC,QAAQ;AACZ,YAAM,QAAQ,MAAM,cAAc,KAAK,aAAa,OAAO,OAAO;AAClE,YAAM,WAA4B,MAAM,cAAc;AAAA,QACrD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,KAAM,EAAE,MAAM,QAAQ,UAAU,MAAM;AACtC,eAAS,EAAE,GAAG,UAAU,UAAU,CAAC,EAAE;AACrC,cAAQ,OAAO,KAAK,sBAAsB,QAAQ,EAAE;AACpD,YAAM,EAAE,OAAO,aAAa,MAAM,EAAE,MAAM,QAAQ,UAAU,MAAM,EAAE;AAAA,IACrE;AAGA,UAAM,kBACL,MAAM,KAAK,qBAAqB,iBAAiB,OAAO,MAAM;AAC/D,YAAQ,OAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAAC;AAG7D,UAAM,KAAK,oBAAoB,QAAQ,UAAU;AAAA,MAChD;AAAA,QACC,WAAW,WAAW;AAAA,QACtB;AAAA,QACA,WAAW,KAAK,IAAI;AAAA;AAAA,QAEpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,gBAAgB,KAAK,EAAE;AAAA,QACxD,UAAU;AAAA,UACT,SAAS,gBACP,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,MAAM,EAClC,IAAI,CAAC,YAAY;AAAA,YACjB,IAAI,OAAO,QAAQ;AAAA,YACnB,UAAU,OAAO;AAAA,UAClB,EAAE;AAAA,UACH,OAAO,CAAC,eAAe,SAAY;AAAA,QACpC;AAAA,MACD;AAAA,IACD,CAAC;AAGD,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,qBAAiB,SAAS,QAAQ;AACjC,YAAM;AAAA,IACP;AAAA,EACD;AACD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/intents/multi-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\n/**\n * Service for multi-intent triggering.\n * Decomposes queries into multiple subqueries and maps each to an intent.\n */\nexport class MultiIntentTriggerService {\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 multiple intents from context by decomposing queries into subqueries.\n\t *\n\t * @param query - The user's input query\n\t * @param thread - The thread history\n\t * @returns Array of TriggeredIntent objects\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 modelOptions = this.modelModule.getModelOptions();\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.`;\n\n\t\tconst userMessage = `\n${\n\tthreadMessages !== \"\"\n\t\t? `The following is the conversation history with the user: ${threadMessages}\n\n\t`\n\t\t: \"\"\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, modelOptions);\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\tif (!subquery) continue;\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":";;;;;AAYO,IAAM,4BAAN,MAAgC;AAAA,EAC9B;AAAA,EACA;AAAA,EAER,YAAY,aAA0B,cAA4B;AACjE,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,YAAY,gBAAgB;AACtD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,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;AAIV,UAAM,cAAc;AAAA,EAErB,mBAAmB,KAChB,4DAA4D,cAAc;AAAA;AAAA,KAG1E,EACJ;AAAA,uBACuB,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,UAAU,YAAY;AACjE,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,UAAI,CAAC,SAAU;AACf,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/services/intents/aggregate.service.ts"],"sourcesContent":["import { getManifest } from \"@/config/manifest\";\nimport type { ModelModule } from \"@/modules\";\nimport type { FulfillmentResult, ThreadType } from \"@/types/memory\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger\";\nimport {\n\tAGGREGATE_DECISION_SYSTEM_PROMPT,\n\tAGGREGATE_GENERATION_SYSTEM_PROMPT,\n} from \"../utils/aggregate.common\";\n\ninterface AggregateDecision {\n\tneedsAggregation: boolean;\n\treason: string;\n}\n\n/**\n * Service for determining whether multiple fulfillment results need to be\n * aggregated into a unified response, and generating that response if needed.\n */\nexport class AggregateService {\n\tprivate modelModule: ModelModule;\n\n\tconstructor(modelModule: ModelModule) {\n\t\tthis.modelModule = modelModule;\n\t}\n\n\t/**\n\t * Analyzes fulfillment results and either returns the last response as-is\n\t * or generates a unified response combining all results.\n\t *\n\t * @param originalQuery - The user's original query\n\t * @param results - Array of fulfillment results from each intent\n\t * @returns AsyncGenerator yielding StreamEvent objects\n\t */\n\tpublic async *aggregateIfNeeded(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): AsyncGenerator<StreamEvent> {\n\t\t// Single result doesn't need aggregation\n\t\tif (results.length <= 1) {\n\t\t\tconst response = results[0]?.response ?? \"\";\n\t\t\tif (response) {\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\tdata: { delta: response },\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Ask LLM whether aggregation is needed\n\t\tconst decision = await this.shouldAggregate(originalQuery, results);\n\n\t\tloggers.intent.info(\"Aggregate decision\", {\n\t\t\tneedsAggregation: decision.needsAggregation,\n\t\t\treason: decision.reason,\n\t\t});\n\n\t\tif (!decision.needsAggregation) {\n\t\t\t// Last response already contains aggregated content\n\t\t\tyield {\n\t\t\t\tevent: \"text_chunk\",\n\t\t\t\tdata: { delta: results[results.length - 1].response },\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\t// Emit thinking_process event for aggregate step\n\t\tyield {\n\t\t\tevent: \"thinking_process\",\n\t\t\tdata: {\n\t\t\t\ttitle: `[${getManifest().name}] 응닡 톡합 쀑`,\n\t\t\t\tdescription:\n\t\t\t\t\tdecision.reason || \"μ—¬λŸ¬ μž‘μ—… κ²°κ³Όλ₯Ό ν•˜λ‚˜μ˜ μ‘λ‹΅μœΌλ‘œ ν†΅ν•©ν•©λ‹ˆλ‹€.\",\n\t\t\t},\n\t\t};\n\n\t\t// Generate unified response (streaming)\n\t\tyield* this.generateAggregatedResponse(originalQuery, results);\n\t}\n\n\t/**\n\t * Asks LLM to decide whether the results need to be aggregated.\n\t */\n\tprivate async shouldAggregate(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): Promise<AggregateDecision> {\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\n\t\tconst prompt = this.buildDecisionPrompt(originalQuery, results);\n\n\t\tconst emptyThread = {\n\t\t\tmessages: [],\n\t\t\tuserId: \"\",\n\t\t\tthreadId: \"\",\n\t\t\ttype: \"CHAT\" as ThreadType,\n\t\t\ttitle: \"\",\n\t\t};\n\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery: prompt,\n\t\t\tthread: emptyThread,\n\t\t\tsystemPrompt: AGGREGATE_DECISION_SYSTEM_PROMPT,\n\t\t});\n\n\t\ttry {\n\t\t\tconst response = await modelInstance.fetchWithContextMessage(\n\t\t\t\tmessages,\n\t\t\t\t[],\n\t\t\t\tmodelOptions,\n\t\t\t);\n\n\t\t\t// Extract JSON from response (handle markdown code blocks)\n\t\t\tconst responseText = response.content ?? \"\";\n\t\t\tlet jsonStr = responseText;\n\t\t\tconst jsonMatch = responseText.match(/```(?:json)?\\s*([\\s\\S]*?)```/);\n\t\t\tif (jsonMatch) {\n\t\t\t\tjsonStr = jsonMatch[1].trim();\n\t\t\t}\n\n\t\t\tconst parsed = JSON.parse(jsonStr);\n\t\t\treturn {\n\t\t\t\tneedsAggregation: parsed.needsAggregation ?? true,\n\t\t\t\treason: parsed.reason ?? \"\",\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tloggers.intent.warn(\n\t\t\t\t\"Failed to parse aggregate decision, defaulting to aggregate\",\n\t\t\t\t{\n\t\t\t\t\terror,\n\t\t\t\t},\n\t\t\t);\n\t\t\t// Default to aggregating if parsing fails\n\t\t\treturn { needsAggregation: true, reason: \"Failed to parse decision\" };\n\t\t}\n\t}\n\n\t/**\n\t * Generates a unified response by streaming from the model.\n\t */\n\tprivate async *generateAggregatedResponse(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\n\t\tconst prompt = this.buildAggregatePrompt(originalQuery, results);\n\n\t\tconst emptyThread = {\n\t\t\tmessages: [],\n\t\t\tuserId: \"\",\n\t\t\tthreadId: \"\",\n\t\t\ttype: \"CHAT\" as ThreadType,\n\t\t\ttitle: \"\",\n\t\t};\n\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery: prompt,\n\t\t\tthread: emptyThread,\n\t\t\tsystemPrompt: AGGREGATE_GENERATION_SYSTEM_PROMPT,\n\t\t});\n\n\t\tconst stream = await modelInstance.fetchStreamWithContextMessage(\n\t\t\tmessages,\n\t\t\t[],\n\t\t\tmodelOptions,\n\t\t);\n\n\t\tfor await (const chunk of stream) {\n\t\t\tif (chunk.delta?.content) {\n\t\t\t\tyield {\n\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\tdata: { delta: chunk.delta.content },\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Builds the prompt for the aggregation decision.\n\t */\n\tprivate buildDecisionPrompt(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): string {\n\t\tconst resultsText = results\n\t\t\t.map(\n\t\t\t\t(r, i) =>\n\t\t\t\t\t`[Task ${i + 1}] ${r.subquery}\\n[Response ${i + 1}] ${r.response}`,\n\t\t\t)\n\t\t\t.join(\"\\n\\n---\\n\\n\");\n\n\t\treturn `Original Query: ${originalQuery}\n\nResults:\n${resultsText}`;\n\t}\n\n\t/**\n\t * Builds the prompt for generating an aggregated response.\n\t */\n\tprivate buildAggregatePrompt(\n\t\toriginalQuery: string,\n\t\tresults: FulfillmentResult[],\n\t): string {\n\t\tconst resultsText = results\n\t\t\t.map(\n\t\t\t\t(r, i) =>\n\t\t\t\t\t`[Task ${i + 1}] ${r.subquery}\\n[Response ${i + 1}] ${r.response}`,\n\t\t\t)\n\t\t\t.join(\"\\n\\n---\\n\\n\");\n\n\t\treturn `Original Query: ${originalQuery}\n\nAll task results:\n${resultsText}\n\nPlease provide a unified response that addresses the original query.`;\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/logger.ts"],"sourcesContent":["import winston from \"winston\";\nimport DailyRotateFile from \"winston-daily-rotate-file\";\n\nconst { combine, timestamp, printf, colorize, errors } = winston.format;\n\nconst logFormat = printf(\n\t({ level, message, timestamp, service, stack, ...meta }) => {\n\t\tconst metaStr = Object.keys(meta).length\n\t\t\t? ` | ${JSON.stringify(meta)}`\n\t\t\t: \"\";\n\t\tconst errorStack = stack ? `\\n${stack}` : \"\";\n\t\treturn `${timestamp} [${service}] ${level}: ${message}${metaStr}${errorStack}`;\n\t},\n);\n\nconst createLogger = (service: string) => {\n\tconst logFilePath = process.env.LOG_FILE_PATH;\n\n\tconst transports: winston.transport[] = logFilePath\n\t\t? [\n\t\t\t\tnew DailyRotateFile({\n\t\t\t\t\tfilename: logFilePath,\n\t\t\t\t\tdatePattern: \"YYYY-MM-DD\",\n\t\t\t\t\tmaxSize: process.env.LOG_MAX_SIZE || \"20m\",\n\t\t\t\t\tmaxFiles: process.env.LOG_MAX_FILES || \"14d\",\n\t\t\t\t\tformat: combine(\n\t\t\t\t\t\terrors({ stack: true }),\n\t\t\t\t\t\ttimestamp({ format: \"YYYY-MM-DD HH:mm:ss\" }),\n\t\t\t\t\t\tlogFormat,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t]\n\t\t: [\n\t\t\t\tnew winston.transports.Console({\n\t\t\t\t\tformat: combine(\n\t\t\t\t\t\terrors({ stack: true }),\n\t\t\t\t\t\tcolorize(),\n\t\t\t\t\t\ttimestamp({ format: \"HH:mm:ss\" }),\n\t\t\t\t\t\tlogFormat,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t];\n\n\tconst logger = winston.createLogger({\n\t\tlevel: (process.env.LOG_LEVEL || \"info\").toLowerCase(),\n\t\tdefaultMeta: { service },\n\t\ttransports,\n\t});\n\n\treturn logger;\n};\n\n// Default logger instance\nexport const logger = createLogger(\"ain-adk\");\n\n// Factory function for creating service-specific loggers\nexport const getLogger = (service: string) => createLogger(service);\n\n// Convenience methods for different components\nexport const loggers = {\n\tagent: getLogger(\"AINAgent\"),\n\tintent: getLogger(\"Intent\"),\n\tintentStream: getLogger(\"IntentStream\"),\n\tmcp: getLogger(\"MCPModule\"),\n\ta2a: getLogger(\"A2AModule\"),\n\tmodel: getLogger(\"Model\"),\n\tserver: getLogger(\"A2AServer\"),\n\tfol: getLogger(\"FOL\"),\n} as const;\n"],"mappings":";AAAA,OAAO,aAAa;AACpB,OAAO,qBAAqB;AAE5B,IAAM,EAAE,SAAS,WAAW,QAAQ,UAAU,OAAO,IAAI,QAAQ;AAEjE,IAAM,YAAY;AAAA,EACjB,CAAC,EAAE,OAAO,SAAS,WAAAA,YAAW,SAAS,OAAO,GAAG,KAAK,MAAM;AAC3D,UAAM,UAAU,OAAO,KAAK,IAAI,EAAE,SAC/B,MAAM,KAAK,UAAU,IAAI,CAAC,KAC1B;AACH,UAAM,aAAa,QAAQ;AAAA,EAAK,KAAK,KAAK;AAC1C,WAAO,GAAGA,UAAS,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,UAAU;AAAA,EAC7E;AACD;AAEA,IAAM,eAAe,CAAC,YAAoB;AACzC,QAAM,cAAc,QAAQ,IAAI;AAEhC,QAAM,aAAkC,cACrC;AAAA,IACA,IAAI,gBAAgB;AAAA,MACnB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,SAAS,QAAQ,IAAI,gBAAgB;AAAA,MACrC,UAAU,QAAQ,IAAI,iBAAiB;AAAA,MACvC,QAAQ;AAAA,QACP,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,QACtB,UAAU,EAAE,QAAQ,sBAAsB,CAAC;AAAA,QAC3C;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF,IACC;AAAA,IACA,IAAI,QAAQ,WAAW,QAAQ;AAAA,MAC9B,QAAQ;AAAA,QACP,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,QACtB,SAAS;AAAA,QACT,UAAU,EAAE,QAAQ,WAAW,CAAC;AAAA,QAChC;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAEF,QAAMC,UAAS,QAAQ,aAAa;AAAA,IACnC,QAAQ,QAAQ,IAAI,aAAa,QAAQ,YAAY;AAAA,IACrD,aAAa,EAAE,QAAQ;AAAA,IACvB;AAAA,EACD,CAAC;AAED,SAAOA;AACR;AAGO,IAAM,SAAS,aAAa,SAAS;AAGrC,IAAM,YAAY,CAAC,YAAoB,aAAa,OAAO;AAG3D,IAAM,UAAU;AAAA,EACtB,OAAO,UAAU,UAAU;AAAA,EAC3B,QAAQ,UAAU,QAAQ;AAAA,EAC1B,cAAc,UAAU,cAAc;AAAA,EACtC,KAAK,UAAU,WAAW;AAAA,EAC1B,KAAK,UAAU,WAAW;AAAA,EAC1B,OAAO,UAAU,OAAO;AAAA,EACxB,QAAQ,UAAU,WAAW;AAAA,EAC7B,KAAK,UAAU,KAAK;AACrB;","names":["timestamp","logger"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/intents/trigger.service.ts"],"sourcesContent":["import type { MemoryModule, ModelModule } from \"@/modules\";\nimport type { ThreadObject, TriggeredIntent } from \"@/types/memory\";\nimport { MultiIntentTriggerService } from \"./multi-trigger.service\";\nimport { SingleIntentTriggerService } from \"./single-trigger.service\";\n\n/**\n * Check if multi-intent is disabled via environment variable.\n */\nfunction isMultiIntentDisabled(): boolean {\n\tconst value = process.env.DISABLE_MULTI_INTENTS;\n\treturn value === \"true\" || value === \"1\";\n}\n\n/**\n * Service for intent triggering.\n * Routes to single or multi-intent triggering based on DISABLE_MULTI_INTENTS env var.\n */\nexport class IntentTriggerService {\n\tprivate singleTriggerService: SingleIntentTriggerService;\n\tprivate multiTriggerService: MultiIntentTriggerService;\n\n\tconstructor(modelModule: ModelModule, memoryModule: MemoryModule) {\n\t\tthis.singleTriggerService = new SingleIntentTriggerService(\n\t\t\tmodelModule,\n\t\t\tmemoryModule,\n\t\t);\n\t\tthis.multiTriggerService = new MultiIntentTriggerService(\n\t\t\tmodelModule,\n\t\t\tmemoryModule,\n\t\t);\n\t}\n\n\t/**\n\t * Detects the intent from context.\n\t * Routes to single or multi-intent triggering based on DISABLE_MULTI_INTENTS env var.\n\t *\n\t * @param query - The user's input query\n\t * @param thread - The thread history\n\t * @returns The detected intent(s)\n\t */\n\tpublic async intentTriggering(\n\t\tquery: string,\n\t\tthread: ThreadObject | undefined,\n\t): Promise<Array<TriggeredIntent>> {\n\t\tif (isMultiIntentDisabled()) {\n\t\t\treturn this.singleTriggerService.intentTriggering(query, thread);\n\t\t}\n\t\treturn this.multiTriggerService.intentTriggering(query, thread);\n\t}\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,wBAAiC;AACzC,QAAM,QAAQ,QAAQ,IAAI;AAC1B,SAAO,UAAU,UAAU,UAAU;AACtC;AAMO,IAAM,uBAAN,MAA2B;AAAA,EACzB;AAAA,EACA;AAAA,EAER,YAAY,aAA0B,cAA4B;AACjE,SAAK,uBAAuB,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,IACD;AACA,SAAK,sBAAsB,IAAI;AAAA,MAC9B;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,iBACZ,OACA,QACkC;AAClC,QAAI,sBAAsB,GAAG;AAC5B,aAAO,KAAK,qBAAqB,iBAAiB,OAAO,MAAM;AAAA,IAChE;AACA,WAAO,KAAK,oBAAoB,iBAAiB,OAAO,MAAM;AAAA,EAC/D;AACD;","names":[]}