@ainetwork/adk 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (895) hide show
  1. package/dist/cjs/chunk-22H5DEV4.cjs +29 -0
  2. package/dist/cjs/chunk-22H5DEV4.cjs.map +1 -0
  3. package/dist/cjs/chunk-257LB5MI.cjs +17 -0
  4. package/dist/cjs/chunk-257LB5MI.cjs.map +1 -0
  5. package/dist/cjs/chunk-2H7YXXKF.cjs +38 -0
  6. package/dist/cjs/chunk-2H7YXXKF.cjs.map +1 -0
  7. package/dist/cjs/chunk-2K4ELKQT.cjs +18 -0
  8. package/dist/cjs/chunk-2K4ELKQT.cjs.map +1 -0
  9. package/dist/cjs/chunk-2NMC37IG.cjs +17 -0
  10. package/dist/cjs/chunk-2NMC37IG.cjs.map +1 -0
  11. package/dist/cjs/chunk-2PCMBTXX.cjs +17 -0
  12. package/dist/cjs/chunk-2PCMBTXX.cjs.map +1 -0
  13. package/dist/cjs/chunk-2XPAPWB7.cjs +17 -0
  14. package/dist/cjs/chunk-2XPAPWB7.cjs.map +1 -0
  15. package/dist/cjs/chunk-2YT6WOL2.cjs +44 -0
  16. package/dist/cjs/chunk-2YT6WOL2.cjs.map +1 -0
  17. package/dist/cjs/chunk-33HKSNG7.cjs +18 -0
  18. package/dist/cjs/chunk-33HKSNG7.cjs.map +1 -0
  19. package/dist/cjs/chunk-34QKYJJA.cjs +62 -0
  20. package/dist/cjs/chunk-34QKYJJA.cjs.map +1 -0
  21. package/dist/cjs/chunk-36IQIRJO.cjs +44 -0
  22. package/dist/cjs/chunk-36IQIRJO.cjs.map +1 -0
  23. package/dist/cjs/chunk-3CCO4M2T.cjs +18 -0
  24. package/dist/cjs/chunk-3CCO4M2T.cjs.map +1 -0
  25. package/dist/cjs/chunk-3CWYO4DR.cjs +29 -0
  26. package/dist/cjs/chunk-3CWYO4DR.cjs.map +1 -0
  27. package/dist/cjs/chunk-3DXU3HIR.cjs +44 -0
  28. package/dist/cjs/chunk-3DXU3HIR.cjs.map +1 -0
  29. package/dist/cjs/chunk-3FSMQH6T.cjs +60 -0
  30. package/dist/cjs/chunk-3FSMQH6T.cjs.map +1 -0
  31. package/dist/cjs/chunk-3J7RAJKT.cjs +17 -0
  32. package/dist/cjs/chunk-3J7RAJKT.cjs.map +1 -0
  33. package/dist/cjs/chunk-3LRSL7VP.cjs +44 -0
  34. package/dist/cjs/chunk-3LRSL7VP.cjs.map +1 -0
  35. package/dist/cjs/chunk-3NR7RC2M.cjs +52 -0
  36. package/dist/cjs/chunk-3NR7RC2M.cjs.map +1 -0
  37. package/dist/cjs/chunk-3OLHAXDU.cjs +92 -0
  38. package/dist/cjs/chunk-3OLHAXDU.cjs.map +1 -0
  39. package/dist/cjs/chunk-3QBMBRXS.cjs +44 -0
  40. package/dist/cjs/chunk-3QBMBRXS.cjs.map +1 -0
  41. package/dist/cjs/chunk-3RPRJF2T.cjs +45 -0
  42. package/dist/cjs/chunk-3RPRJF2T.cjs.map +1 -0
  43. package/dist/cjs/chunk-3TSNA7ZR.cjs +102 -0
  44. package/dist/cjs/chunk-3TSNA7ZR.cjs.map +1 -0
  45. package/dist/cjs/chunk-46BFYD3I.cjs +74 -0
  46. package/dist/cjs/chunk-46BFYD3I.cjs.map +1 -0
  47. package/dist/cjs/chunk-4BZE2NCH.cjs +17 -0
  48. package/dist/cjs/chunk-4BZE2NCH.cjs.map +1 -0
  49. package/dist/cjs/chunk-4MV4JCVO.cjs +62 -0
  50. package/dist/cjs/chunk-4MV4JCVO.cjs.map +1 -0
  51. package/dist/cjs/chunk-4P7BIS7W.cjs +89 -0
  52. package/dist/{esm/chunk-CYP6OTDK.js.map → cjs/chunk-4P7BIS7W.cjs.map} +1 -1
  53. package/dist/cjs/chunk-4U5AKJ4H.cjs +376 -0
  54. package/dist/cjs/chunk-4U5AKJ4H.cjs.map +1 -0
  55. package/dist/cjs/chunk-525PPL6W.cjs +102 -0
  56. package/dist/cjs/chunk-525PPL6W.cjs.map +1 -0
  57. package/dist/cjs/chunk-573B43NO.cjs +17 -0
  58. package/dist/cjs/chunk-573B43NO.cjs.map +1 -0
  59. package/dist/cjs/chunk-574RKNV5.cjs +17 -0
  60. package/dist/cjs/chunk-574RKNV5.cjs.map +1 -0
  61. package/dist/cjs/chunk-5BQBOLKF.cjs +18 -0
  62. package/dist/cjs/chunk-5BQBOLKF.cjs.map +1 -0
  63. package/dist/cjs/chunk-5LWAUNBN.cjs +18 -0
  64. package/dist/cjs/chunk-5LWAUNBN.cjs.map +1 -0
  65. package/dist/cjs/chunk-5ON32BOF.cjs +44 -0
  66. package/dist/cjs/chunk-5ON32BOF.cjs.map +1 -0
  67. package/dist/cjs/chunk-5QAUKT4U.cjs +74 -0
  68. package/dist/cjs/chunk-5QAUKT4U.cjs.map +1 -0
  69. package/dist/cjs/chunk-5QK57J6T.cjs +29 -0
  70. package/dist/cjs/chunk-5QK57J6T.cjs.map +1 -0
  71. package/dist/cjs/chunk-5V5QKZWF.cjs +38 -0
  72. package/dist/cjs/chunk-5V5QKZWF.cjs.map +1 -0
  73. package/dist/cjs/chunk-67YTT5QY.cjs +74 -0
  74. package/dist/cjs/chunk-67YTT5QY.cjs.map +1 -0
  75. package/dist/cjs/chunk-6DP2S2BC.cjs +17 -0
  76. package/dist/cjs/chunk-6DP2S2BC.cjs.map +1 -0
  77. package/dist/cjs/chunk-6DSMXJUX.cjs +18 -0
  78. package/dist/cjs/chunk-6DSMXJUX.cjs.map +1 -0
  79. package/dist/cjs/chunk-6ENXUHR3.cjs +18 -0
  80. package/dist/cjs/chunk-6ENXUHR3.cjs.map +1 -0
  81. package/dist/cjs/chunk-6KXWGXJM.cjs +89 -0
  82. package/dist/cjs/chunk-6KXWGXJM.cjs.map +1 -0
  83. package/dist/cjs/chunk-6OFVJDVZ.cjs +74 -0
  84. package/dist/cjs/chunk-6OFVJDVZ.cjs.map +1 -0
  85. package/dist/cjs/chunk-6THSLZ76.cjs +29 -0
  86. package/dist/cjs/chunk-6THSLZ76.cjs.map +1 -0
  87. package/dist/cjs/chunk-6UHLFZ7G.cjs +38 -0
  88. package/dist/cjs/chunk-6UHLFZ7G.cjs.map +1 -0
  89. package/dist/cjs/chunk-6VEASJDK.cjs +62 -0
  90. package/dist/cjs/chunk-6VEASJDK.cjs.map +1 -0
  91. package/dist/cjs/chunk-6VHRJD7F.cjs +17 -0
  92. package/dist/cjs/chunk-6VHRJD7F.cjs.map +1 -0
  93. package/dist/cjs/chunk-6XUKA5VB.cjs +44 -0
  94. package/dist/cjs/chunk-6XUKA5VB.cjs.map +1 -0
  95. package/dist/cjs/chunk-6Z2RYVUO.cjs +74 -0
  96. package/dist/cjs/chunk-6Z2RYVUO.cjs.map +1 -0
  97. package/dist/cjs/chunk-6Z5XTC56.cjs +17 -0
  98. package/dist/cjs/chunk-6Z5XTC56.cjs.map +1 -0
  99. package/dist/cjs/chunk-75RI45E4.cjs +44 -0
  100. package/dist/cjs/chunk-75RI45E4.cjs.map +1 -0
  101. package/dist/cjs/chunk-76LBH57A.cjs +18 -0
  102. package/dist/cjs/chunk-76LBH57A.cjs.map +1 -0
  103. package/dist/cjs/chunk-76M7BSJ3.cjs +44 -0
  104. package/dist/cjs/chunk-76M7BSJ3.cjs.map +1 -0
  105. package/dist/cjs/chunk-7BO5E2NH.cjs +365 -0
  106. package/dist/cjs/chunk-7BO5E2NH.cjs.map +1 -0
  107. package/dist/cjs/chunk-7CYS5AT5.cjs +44 -0
  108. package/dist/cjs/chunk-7CYS5AT5.cjs.map +1 -0
  109. package/dist/cjs/chunk-7K5Z7DWN.cjs +361 -0
  110. package/dist/cjs/chunk-7K5Z7DWN.cjs.map +1 -0
  111. package/dist/cjs/chunk-7KNIC3LA.cjs +62 -0
  112. package/dist/cjs/chunk-7KNIC3LA.cjs.map +1 -0
  113. package/dist/cjs/chunk-7MKV6BXH.cjs +29 -0
  114. package/dist/cjs/chunk-7MKV6BXH.cjs.map +1 -0
  115. package/dist/cjs/chunk-7QRK2PZ7.cjs +18 -0
  116. package/dist/cjs/chunk-7QRK2PZ7.cjs.map +1 -0
  117. package/dist/cjs/chunk-7ZASM7UH.cjs +18 -0
  118. package/dist/cjs/chunk-7ZASM7UH.cjs.map +1 -0
  119. package/dist/cjs/chunk-A5SOUOEA.cjs +89 -0
  120. package/dist/cjs/chunk-A5SOUOEA.cjs.map +1 -0
  121. package/dist/cjs/chunk-A7CRBSUB.cjs +89 -0
  122. package/dist/cjs/chunk-A7CRBSUB.cjs.map +1 -0
  123. package/dist/cjs/chunk-AAR74MD3.cjs +17 -0
  124. package/dist/cjs/chunk-AAR74MD3.cjs.map +1 -0
  125. package/dist/cjs/chunk-AAUUAPCC.cjs +38 -0
  126. package/dist/cjs/chunk-AAUUAPCC.cjs.map +1 -0
  127. package/dist/cjs/chunk-ADZSFJ6B.cjs +38 -0
  128. package/dist/cjs/chunk-ADZSFJ6B.cjs.map +1 -0
  129. package/dist/cjs/chunk-AENAQ5ZC.cjs +74 -0
  130. package/dist/cjs/chunk-AENAQ5ZC.cjs.map +1 -0
  131. package/dist/cjs/chunk-AEPKSXT7.cjs +44 -0
  132. package/dist/cjs/chunk-AEPKSXT7.cjs.map +1 -0
  133. package/dist/cjs/chunk-AKDAUOUK.cjs +44 -0
  134. package/dist/cjs/chunk-AKDAUOUK.cjs.map +1 -0
  135. package/dist/cjs/chunk-AKQQCR26.cjs +17 -0
  136. package/dist/cjs/chunk-AKQQCR26.cjs.map +1 -0
  137. package/dist/cjs/chunk-ALPK75M7.cjs +100 -0
  138. package/dist/cjs/chunk-ALPK75M7.cjs.map +1 -0
  139. package/dist/cjs/chunk-AMKL65AS.cjs +20 -0
  140. package/dist/cjs/chunk-AMKL65AS.cjs.map +1 -0
  141. package/dist/cjs/chunk-APMD4F4X.cjs +62 -0
  142. package/dist/cjs/chunk-APMD4F4X.cjs.map +1 -0
  143. package/dist/cjs/chunk-AWKZRMOE.cjs +17 -0
  144. package/dist/cjs/chunk-AWKZRMOE.cjs.map +1 -0
  145. package/dist/cjs/chunk-B2QI7F2C.cjs +74 -0
  146. package/dist/cjs/chunk-B2QI7F2C.cjs.map +1 -0
  147. package/dist/cjs/chunk-B6D34MKF.cjs +29 -0
  148. package/dist/cjs/chunk-B6D34MKF.cjs.map +1 -0
  149. package/dist/cjs/chunk-BBUDDS2U.cjs +62 -0
  150. package/dist/cjs/chunk-BBUDDS2U.cjs.map +1 -0
  151. package/dist/cjs/chunk-BESFTGZE.cjs +89 -0
  152. package/dist/cjs/chunk-BESFTGZE.cjs.map +1 -0
  153. package/dist/cjs/chunk-BH4NGSK2.cjs +27 -0
  154. package/dist/cjs/chunk-BH4NGSK2.cjs.map +1 -0
  155. package/dist/cjs/chunk-BQ7N5GR2.cjs +74 -0
  156. package/dist/cjs/chunk-BQ7N5GR2.cjs.map +1 -0
  157. package/dist/cjs/chunk-BUVFXGID.cjs +17 -0
  158. package/dist/cjs/chunk-BUVFXGID.cjs.map +1 -0
  159. package/dist/cjs/chunk-C6EFDFRG.cjs +102 -0
  160. package/dist/cjs/chunk-C6EFDFRG.cjs.map +1 -0
  161. package/dist/cjs/chunk-CDKYYWPR.cjs +44 -0
  162. package/dist/cjs/chunk-CDKYYWPR.cjs.map +1 -0
  163. package/dist/cjs/chunk-CDW72DNH.cjs +44 -0
  164. package/dist/cjs/chunk-CDW72DNH.cjs.map +1 -0
  165. package/dist/cjs/chunk-CGBTMF5T.cjs +160 -0
  166. package/dist/cjs/chunk-CGBTMF5T.cjs.map +1 -0
  167. package/dist/cjs/chunk-CGSI4WNT.cjs +29 -0
  168. package/dist/cjs/chunk-CGSI4WNT.cjs.map +1 -0
  169. package/dist/cjs/chunk-CPOJVACJ.cjs +44 -0
  170. package/dist/cjs/chunk-CPOJVACJ.cjs.map +1 -0
  171. package/dist/cjs/chunk-CRIRVHFU.cjs +17 -0
  172. package/dist/cjs/chunk-CRIRVHFU.cjs.map +1 -0
  173. package/dist/cjs/chunk-CTGV4OQD.cjs +17 -0
  174. package/dist/cjs/chunk-CTGV4OQD.cjs.map +1 -0
  175. package/dist/cjs/chunk-CX3MFVU4.cjs +85 -0
  176. package/dist/cjs/chunk-CX3MFVU4.cjs.map +1 -0
  177. package/dist/cjs/chunk-DAVB4GVA.cjs +29 -0
  178. package/dist/cjs/chunk-DAVB4GVA.cjs.map +1 -0
  179. package/dist/cjs/chunk-DJI6HQEP.cjs +17 -0
  180. package/dist/cjs/chunk-DJI6HQEP.cjs.map +1 -0
  181. package/dist/cjs/chunk-DUTUWBRW.cjs +38 -0
  182. package/dist/cjs/chunk-DUTUWBRW.cjs.map +1 -0
  183. package/dist/cjs/chunk-DXUGFSHK.cjs +11 -0
  184. package/dist/cjs/chunk-DXUGFSHK.cjs.map +1 -0
  185. package/dist/cjs/chunk-E3CMG6RX.cjs +44 -0
  186. package/dist/cjs/chunk-E3CMG6RX.cjs.map +1 -0
  187. package/dist/cjs/chunk-EAEGZUHR.cjs +38 -0
  188. package/dist/cjs/chunk-EAEGZUHR.cjs.map +1 -0
  189. package/dist/cjs/chunk-EDAWBHD4.cjs +74 -0
  190. package/dist/cjs/chunk-EDAWBHD4.cjs.map +1 -0
  191. package/dist/cjs/chunk-EJFZ3FVM.cjs +17 -0
  192. package/dist/cjs/chunk-EJFZ3FVM.cjs.map +1 -0
  193. package/dist/cjs/chunk-EJMGDCI2.cjs +95 -0
  194. package/dist/cjs/chunk-EJMGDCI2.cjs.map +1 -0
  195. package/dist/cjs/chunk-EOLXWHTI.cjs +17 -0
  196. package/dist/cjs/chunk-EOLXWHTI.cjs.map +1 -0
  197. package/dist/cjs/chunk-EWNGSIN6.cjs +18 -0
  198. package/dist/cjs/chunk-EWNGSIN6.cjs.map +1 -0
  199. package/dist/cjs/chunk-EX3PS7YS.cjs +44 -0
  200. package/dist/cjs/chunk-EX3PS7YS.cjs.map +1 -0
  201. package/dist/cjs/chunk-EY6LRYGR.cjs +44 -0
  202. package/dist/cjs/chunk-EY6LRYGR.cjs.map +1 -0
  203. package/dist/cjs/chunk-F5RVQ6H3.cjs +17 -0
  204. package/dist/cjs/chunk-F5RVQ6H3.cjs.map +1 -0
  205. package/dist/cjs/chunk-FANWWNES.cjs +38 -0
  206. package/dist/cjs/chunk-FANWWNES.cjs.map +1 -0
  207. package/dist/cjs/chunk-FC4C3NXQ.cjs +17 -0
  208. package/dist/cjs/chunk-FC4C3NXQ.cjs.map +1 -0
  209. package/dist/cjs/chunk-FFOBJEZ4.cjs +18 -0
  210. package/dist/cjs/chunk-FFOBJEZ4.cjs.map +1 -0
  211. package/dist/cjs/chunk-FG6W4GCF.cjs +44 -0
  212. package/dist/cjs/chunk-FG6W4GCF.cjs.map +1 -0
  213. package/dist/cjs/chunk-FGJMJDNK.cjs +17 -0
  214. package/dist/cjs/chunk-FGJMJDNK.cjs.map +1 -0
  215. package/dist/cjs/chunk-FLGB7KZC.cjs +74 -0
  216. package/dist/cjs/chunk-FLGB7KZC.cjs.map +1 -0
  217. package/dist/cjs/chunk-FLKHIKHZ.cjs +17 -0
  218. package/dist/cjs/chunk-FLKHIKHZ.cjs.map +1 -0
  219. package/dist/cjs/chunk-FRURA3TL.cjs +18 -0
  220. package/dist/cjs/chunk-FRURA3TL.cjs.map +1 -0
  221. package/dist/cjs/chunk-FXJABXH2.cjs +44 -0
  222. package/dist/cjs/chunk-FXJABXH2.cjs.map +1 -0
  223. package/dist/cjs/chunk-FXQYIPMS.cjs +18 -0
  224. package/dist/cjs/chunk-FXQYIPMS.cjs.map +1 -0
  225. package/dist/cjs/chunk-FYIPH2Y6.cjs +38 -0
  226. package/dist/cjs/chunk-FYIPH2Y6.cjs.map +1 -0
  227. package/dist/cjs/chunk-G2YDAC3K.cjs +17 -0
  228. package/dist/cjs/chunk-G2YDAC3K.cjs.map +1 -0
  229. package/dist/cjs/chunk-G5E3ISQF.cjs +18 -0
  230. package/dist/cjs/chunk-G5E3ISQF.cjs.map +1 -0
  231. package/dist/cjs/chunk-GDFMOHPF.cjs +18 -0
  232. package/dist/cjs/chunk-GDFMOHPF.cjs.map +1 -0
  233. package/dist/cjs/chunk-GDMIPDMY.cjs +74 -0
  234. package/dist/cjs/chunk-GDMIPDMY.cjs.map +1 -0
  235. package/dist/cjs/chunk-GE3YIMKB.cjs +38 -0
  236. package/dist/cjs/chunk-GE3YIMKB.cjs.map +1 -0
  237. package/dist/cjs/chunk-GFPIWMX7.cjs +44 -0
  238. package/dist/cjs/chunk-GFPIWMX7.cjs.map +1 -0
  239. package/dist/cjs/chunk-GGZLS3DW.cjs +362 -0
  240. package/dist/cjs/chunk-GGZLS3DW.cjs.map +1 -0
  241. package/dist/cjs/chunk-GN7GTRK4.cjs +94 -0
  242. package/dist/cjs/chunk-GN7GTRK4.cjs.map +1 -0
  243. package/dist/cjs/chunk-GP7IXGFK.cjs +17 -0
  244. package/dist/cjs/chunk-GP7IXGFK.cjs.map +1 -0
  245. package/dist/cjs/chunk-GQ7GLAJK.cjs +29 -0
  246. package/dist/cjs/chunk-GQ7GLAJK.cjs.map +1 -0
  247. package/dist/cjs/chunk-GS4SRUTV.cjs +89 -0
  248. package/dist/cjs/chunk-GS4SRUTV.cjs.map +1 -0
  249. package/dist/cjs/chunk-GSGWKZGC.cjs +148 -0
  250. package/dist/cjs/chunk-GSGWKZGC.cjs.map +1 -0
  251. package/dist/cjs/chunk-GSYVKLBV.cjs +74 -0
  252. package/dist/cjs/chunk-GSYVKLBV.cjs.map +1 -0
  253. package/dist/cjs/chunk-GU6HDVQH.cjs +62 -0
  254. package/dist/cjs/chunk-GU6HDVQH.cjs.map +1 -0
  255. package/dist/cjs/chunk-H3GWD2ES.cjs +29 -0
  256. package/dist/cjs/chunk-H3GWD2ES.cjs.map +1 -0
  257. package/dist/cjs/chunk-H5IPB5RW.cjs +44 -0
  258. package/dist/cjs/chunk-H5IPB5RW.cjs.map +1 -0
  259. package/dist/cjs/chunk-H6KPHKKN.cjs +62 -0
  260. package/dist/cjs/chunk-H6KPHKKN.cjs.map +1 -0
  261. package/dist/cjs/chunk-HFYBAX4K.cjs +89 -0
  262. package/dist/cjs/chunk-HFYBAX4K.cjs.map +1 -0
  263. package/dist/cjs/chunk-HKZNPDM5.cjs +62 -0
  264. package/dist/cjs/chunk-HKZNPDM5.cjs.map +1 -0
  265. package/dist/cjs/chunk-HLTFUIIN.cjs +16 -0
  266. package/dist/cjs/chunk-HLTFUIIN.cjs.map +1 -0
  267. package/dist/cjs/chunk-HMLQQSC5.cjs +45 -0
  268. package/dist/cjs/chunk-HMLQQSC5.cjs.map +1 -0
  269. package/dist/cjs/chunk-HWUCIRWQ.cjs +62 -0
  270. package/dist/cjs/chunk-HWUCIRWQ.cjs.map +1 -0
  271. package/dist/cjs/chunk-I25WEIX7.cjs +44 -0
  272. package/dist/cjs/chunk-I25WEIX7.cjs.map +1 -0
  273. package/dist/cjs/chunk-IAOIID43.cjs +18 -0
  274. package/dist/cjs/chunk-IAOIID43.cjs.map +1 -0
  275. package/dist/cjs/chunk-ICXZ3HPH.cjs +17 -0
  276. package/dist/cjs/chunk-ICXZ3HPH.cjs.map +1 -0
  277. package/dist/cjs/chunk-IF5XYSSS.cjs +28 -0
  278. package/dist/cjs/chunk-IF5XYSSS.cjs.map +1 -0
  279. package/dist/cjs/chunk-IMLEZU2H.cjs +44 -0
  280. package/dist/cjs/chunk-IMLEZU2H.cjs.map +1 -0
  281. package/dist/cjs/chunk-IPO4ASBI.cjs +74 -0
  282. package/dist/cjs/chunk-IPO4ASBI.cjs.map +1 -0
  283. package/dist/cjs/chunk-ISLBO7I5.cjs +29 -0
  284. package/dist/cjs/chunk-ISLBO7I5.cjs.map +1 -0
  285. package/dist/cjs/chunk-J6BF43QV.cjs +17 -0
  286. package/dist/cjs/chunk-J6BF43QV.cjs.map +1 -0
  287. package/dist/cjs/chunk-J6GZHVKA.cjs +17 -0
  288. package/dist/cjs/chunk-J6GZHVKA.cjs.map +1 -0
  289. package/dist/cjs/chunk-J7WYMYKJ.cjs +140 -0
  290. package/dist/cjs/chunk-J7WYMYKJ.cjs.map +1 -0
  291. package/dist/cjs/chunk-J7XZEYNH.cjs +18 -0
  292. package/dist/cjs/chunk-J7XZEYNH.cjs.map +1 -0
  293. package/dist/cjs/chunk-JB3M2YKH.cjs +102 -0
  294. package/dist/cjs/chunk-JB3M2YKH.cjs.map +1 -0
  295. package/dist/cjs/chunk-JBW43DLI.cjs +44 -0
  296. package/dist/cjs/chunk-JBW43DLI.cjs.map +1 -0
  297. package/dist/cjs/chunk-JEPWMZID.cjs +38 -0
  298. package/dist/cjs/chunk-JEPWMZID.cjs.map +1 -0
  299. package/dist/cjs/chunk-JGWLYCO2.cjs +17 -0
  300. package/dist/cjs/chunk-JGWLYCO2.cjs.map +1 -0
  301. package/dist/cjs/chunk-JJOPCTCU.cjs +17 -0
  302. package/dist/cjs/chunk-JJOPCTCU.cjs.map +1 -0
  303. package/dist/cjs/chunk-JLA2XKKK.cjs +17 -0
  304. package/dist/cjs/chunk-JLA2XKKK.cjs.map +1 -0
  305. package/dist/cjs/chunk-JRAXCPQO.cjs +44 -0
  306. package/dist/cjs/chunk-JRAXCPQO.cjs.map +1 -0
  307. package/dist/cjs/chunk-JUXNQ42D.cjs +28 -0
  308. package/dist/cjs/chunk-JUXNQ42D.cjs.map +1 -0
  309. package/dist/cjs/chunk-JWAQMGLT.cjs +17 -0
  310. package/dist/cjs/chunk-JWAQMGLT.cjs.map +1 -0
  311. package/dist/cjs/chunk-K7KWNGPC.cjs +29 -0
  312. package/dist/cjs/chunk-K7KWNGPC.cjs.map +1 -0
  313. package/dist/cjs/chunk-KAEDNRF3.cjs +97 -0
  314. package/dist/cjs/chunk-KAEDNRF3.cjs.map +1 -0
  315. package/dist/cjs/chunk-KHG7EBRN.cjs +17 -0
  316. package/dist/cjs/chunk-KHG7EBRN.cjs.map +1 -0
  317. package/dist/cjs/chunk-KJ4E6VUE.cjs +62 -0
  318. package/dist/cjs/chunk-KJ4E6VUE.cjs.map +1 -0
  319. package/dist/cjs/chunk-KJJ6WEOJ.cjs +11 -0
  320. package/dist/cjs/chunk-KJJ6WEOJ.cjs.map +1 -0
  321. package/dist/cjs/chunk-KMREZ7PZ.cjs +74 -0
  322. package/dist/cjs/chunk-KMREZ7PZ.cjs.map +1 -0
  323. package/dist/cjs/chunk-KN5CERX5.cjs +89 -0
  324. package/dist/cjs/chunk-KN5CERX5.cjs.map +1 -0
  325. package/dist/cjs/chunk-KQDMWEET.cjs +18 -0
  326. package/dist/cjs/chunk-KQDMWEET.cjs.map +1 -0
  327. package/dist/cjs/chunk-KVABMON6.cjs +44 -0
  328. package/dist/cjs/chunk-KVABMON6.cjs.map +1 -0
  329. package/dist/cjs/chunk-KWA3NEGB.cjs +62 -0
  330. package/dist/cjs/chunk-KWA3NEGB.cjs.map +1 -0
  331. package/dist/cjs/chunk-KWYDGO4G.cjs +62 -0
  332. package/dist/cjs/chunk-KWYDGO4G.cjs.map +1 -0
  333. package/dist/cjs/chunk-L6EOB53F.cjs +79 -0
  334. package/dist/cjs/chunk-L6EOB53F.cjs.map +1 -0
  335. package/dist/cjs/chunk-LAP73JLI.cjs +44 -0
  336. package/dist/cjs/chunk-LAP73JLI.cjs.map +1 -0
  337. package/dist/cjs/chunk-LDLF7MAE.cjs +132 -0
  338. package/dist/cjs/chunk-LDLF7MAE.cjs.map +1 -0
  339. package/dist/cjs/chunk-LEKVRPCD.cjs +17 -0
  340. package/dist/cjs/chunk-LEKVRPCD.cjs.map +1 -0
  341. package/dist/cjs/chunk-LELMEP2N.cjs +62 -0
  342. package/dist/cjs/chunk-LELMEP2N.cjs.map +1 -0
  343. package/dist/cjs/chunk-LI2XLHPP.cjs +38 -0
  344. package/dist/cjs/chunk-LI2XLHPP.cjs.map +1 -0
  345. package/dist/cjs/chunk-LJRPZUWA.cjs +104 -0
  346. package/dist/cjs/chunk-LJRPZUWA.cjs.map +1 -0
  347. package/dist/cjs/chunk-LKUN737V.cjs +74 -0
  348. package/dist/cjs/chunk-LKUN737V.cjs.map +1 -0
  349. package/dist/cjs/chunk-LLHF36B4.cjs +74 -0
  350. package/dist/cjs/chunk-LLHF36B4.cjs.map +1 -0
  351. package/dist/cjs/chunk-LMRBAR7I.cjs +89 -0
  352. package/dist/cjs/chunk-LMRBAR7I.cjs.map +1 -0
  353. package/dist/cjs/chunk-LUNBSV2I.cjs +74 -0
  354. package/dist/cjs/chunk-LUNBSV2I.cjs.map +1 -0
  355. package/dist/cjs/chunk-LVIMWZQS.cjs +89 -0
  356. package/dist/cjs/chunk-LVIMWZQS.cjs.map +1 -0
  357. package/dist/cjs/chunk-LXF6DPMZ.cjs +18 -0
  358. package/dist/cjs/chunk-LXF6DPMZ.cjs.map +1 -0
  359. package/dist/cjs/chunk-M3CUZHXK.cjs +17 -0
  360. package/dist/cjs/chunk-M3CUZHXK.cjs.map +1 -0
  361. package/dist/cjs/chunk-M4D7C6DB.cjs +102 -0
  362. package/dist/cjs/chunk-M4D7C6DB.cjs.map +1 -0
  363. package/dist/cjs/chunk-MAXQRRIY.cjs +365 -0
  364. package/dist/cjs/chunk-MAXQRRIY.cjs.map +1 -0
  365. package/dist/cjs/chunk-MCUQGSE6.cjs +17 -0
  366. package/dist/cjs/chunk-MCUQGSE6.cjs.map +1 -0
  367. package/dist/cjs/chunk-MEC7VCG7.cjs +17 -0
  368. package/dist/cjs/chunk-MEC7VCG7.cjs.map +1 -0
  369. package/dist/cjs/chunk-MNZP3CZB.cjs +45 -0
  370. package/dist/cjs/chunk-MNZP3CZB.cjs.map +1 -0
  371. package/dist/cjs/chunk-MOFEEAGY.cjs +17 -0
  372. package/dist/cjs/chunk-MOFEEAGY.cjs.map +1 -0
  373. package/dist/cjs/chunk-MOWHV2S7.cjs +17 -0
  374. package/dist/cjs/chunk-MOWHV2S7.cjs.map +1 -0
  375. package/dist/cjs/chunk-MQHK4U3Y.cjs +17 -0
  376. package/dist/cjs/chunk-MQHK4U3Y.cjs.map +1 -0
  377. package/dist/cjs/chunk-MSCVK25Y.cjs +38 -0
  378. package/dist/cjs/chunk-MSCVK25Y.cjs.map +1 -0
  379. package/dist/cjs/chunk-MTMT3CVP.cjs +17 -0
  380. package/dist/cjs/chunk-MTMT3CVP.cjs.map +1 -0
  381. package/dist/cjs/chunk-MX7PQPGC.cjs +17 -0
  382. package/dist/cjs/chunk-MX7PQPGC.cjs.map +1 -0
  383. package/dist/cjs/chunk-MYS55MIK.cjs +38 -0
  384. package/dist/cjs/chunk-MYS55MIK.cjs.map +1 -0
  385. package/dist/cjs/chunk-N2B6FO57.cjs +102 -0
  386. package/dist/cjs/chunk-N2B6FO57.cjs.map +1 -0
  387. package/dist/cjs/chunk-N6U4EN2R.cjs +44 -0
  388. package/dist/cjs/chunk-N6U4EN2R.cjs.map +1 -0
  389. package/dist/cjs/chunk-N72OTA4I.cjs +370 -0
  390. package/dist/cjs/chunk-N72OTA4I.cjs.map +1 -0
  391. package/dist/cjs/chunk-N7KD2GNO.cjs +74 -0
  392. package/dist/cjs/chunk-N7KD2GNO.cjs.map +1 -0
  393. package/dist/cjs/chunk-NA4ZT3HV.cjs +62 -0
  394. package/dist/cjs/chunk-NA4ZT3HV.cjs.map +1 -0
  395. package/dist/cjs/chunk-NBQ3VSRH.cjs +38 -0
  396. package/dist/cjs/chunk-NBQ3VSRH.cjs.map +1 -0
  397. package/dist/cjs/chunk-NEEJAHSQ.cjs +62 -0
  398. package/dist/cjs/chunk-NEEJAHSQ.cjs.map +1 -0
  399. package/dist/cjs/chunk-NFW54MQ7.cjs +17 -0
  400. package/dist/cjs/chunk-NFW54MQ7.cjs.map +1 -0
  401. package/dist/cjs/chunk-NIQCUG4E.cjs +29 -0
  402. package/dist/cjs/chunk-NIQCUG4E.cjs.map +1 -0
  403. package/dist/cjs/chunk-NK3ADXTX.cjs +44 -0
  404. package/dist/cjs/chunk-NK3ADXTX.cjs.map +1 -0
  405. package/dist/cjs/chunk-NNVSYWA3.cjs +62 -0
  406. package/dist/cjs/chunk-NNVSYWA3.cjs.map +1 -0
  407. package/dist/cjs/chunk-NP4SFRFA.cjs +89 -0
  408. package/dist/cjs/chunk-NP4SFRFA.cjs.map +1 -0
  409. package/dist/cjs/chunk-NPXXPQSE.cjs +365 -0
  410. package/dist/cjs/chunk-NPXXPQSE.cjs.map +1 -0
  411. package/dist/cjs/chunk-NVSMOJGT.cjs +62 -0
  412. package/dist/cjs/chunk-NVSMOJGT.cjs.map +1 -0
  413. package/dist/cjs/chunk-O4ZZQHPE.cjs +38 -0
  414. package/dist/cjs/chunk-O4ZZQHPE.cjs.map +1 -0
  415. package/dist/cjs/chunk-OCBMFZHQ.cjs +29 -0
  416. package/dist/cjs/chunk-OCBMFZHQ.cjs.map +1 -0
  417. package/dist/cjs/chunk-OCXNCC5B.cjs +17 -0
  418. package/dist/cjs/chunk-OCXNCC5B.cjs.map +1 -0
  419. package/dist/cjs/chunk-OFBOKA5A.cjs +29 -0
  420. package/dist/cjs/chunk-OFBOKA5A.cjs.map +1 -0
  421. package/dist/cjs/chunk-OG2R3NBK.cjs +38 -0
  422. package/dist/cjs/chunk-OG2R3NBK.cjs.map +1 -0
  423. package/dist/cjs/chunk-OHVXQ2LX.cjs +53 -0
  424. package/dist/cjs/chunk-OHVXQ2LX.cjs.map +1 -0
  425. package/dist/cjs/chunk-OIAXS4VW.cjs +102 -0
  426. package/dist/cjs/chunk-OIAXS4VW.cjs.map +1 -0
  427. package/dist/cjs/chunk-ORAYV7WD.cjs +17 -0
  428. package/dist/cjs/chunk-ORAYV7WD.cjs.map +1 -0
  429. package/dist/cjs/chunk-OT3G2M4T.cjs +62 -0
  430. package/dist/cjs/chunk-OT3G2M4T.cjs.map +1 -0
  431. package/dist/cjs/chunk-OV2ETBUH.cjs +17 -0
  432. package/dist/cjs/chunk-OV2ETBUH.cjs.map +1 -0
  433. package/dist/cjs/chunk-OVCUZFLV.cjs +44 -0
  434. package/dist/cjs/chunk-OVCUZFLV.cjs.map +1 -0
  435. package/dist/cjs/chunk-OYDNFJAM.cjs +44 -0
  436. package/dist/cjs/chunk-OYDNFJAM.cjs.map +1 -0
  437. package/dist/cjs/chunk-P2GCTU6M.cjs +109 -0
  438. package/dist/cjs/chunk-P2GCTU6M.cjs.map +1 -0
  439. package/dist/cjs/chunk-P2KW3E6U.cjs +29 -0
  440. package/dist/cjs/chunk-P2KW3E6U.cjs.map +1 -0
  441. package/dist/cjs/chunk-P2P5M3T2.cjs +29 -0
  442. package/dist/cjs/chunk-P2P5M3T2.cjs.map +1 -0
  443. package/dist/cjs/chunk-P362DRT2.cjs +44 -0
  444. package/dist/cjs/chunk-P362DRT2.cjs.map +1 -0
  445. package/dist/cjs/chunk-P372UHX4.cjs +44 -0
  446. package/dist/cjs/chunk-P372UHX4.cjs.map +1 -0
  447. package/dist/cjs/chunk-P3AYWRS7.cjs +18 -0
  448. package/dist/cjs/chunk-P3AYWRS7.cjs.map +1 -0
  449. package/dist/cjs/chunk-PAWQF7J7.cjs +17 -0
  450. package/dist/cjs/chunk-PAWQF7J7.cjs.map +1 -0
  451. package/dist/cjs/chunk-PF3ER2QU.cjs +17 -0
  452. package/dist/cjs/chunk-PF3ER2QU.cjs.map +1 -0
  453. package/dist/cjs/chunk-PG4SO7ML.cjs +29 -0
  454. package/dist/cjs/chunk-PG4SO7ML.cjs.map +1 -0
  455. package/dist/cjs/chunk-PN3F26EA.cjs +38 -0
  456. package/dist/cjs/chunk-PN3F26EA.cjs.map +1 -0
  457. package/dist/cjs/chunk-PO443XHM.cjs +62 -0
  458. package/dist/cjs/chunk-PO443XHM.cjs.map +1 -0
  459. package/dist/cjs/chunk-PQQU77V7.cjs +160 -0
  460. package/dist/cjs/chunk-PQQU77V7.cjs.map +1 -0
  461. package/dist/cjs/chunk-PQW35YAY.cjs +89 -0
  462. package/dist/cjs/chunk-PQW35YAY.cjs.map +1 -0
  463. package/dist/cjs/chunk-PWM3QPWT.cjs +62 -0
  464. package/dist/cjs/chunk-PWM3QPWT.cjs.map +1 -0
  465. package/dist/cjs/chunk-PX2NZ7SE.cjs +29 -0
  466. package/dist/cjs/chunk-PX2NZ7SE.cjs.map +1 -0
  467. package/dist/cjs/chunk-Q2ZSWGAQ.cjs +38 -0
  468. package/dist/cjs/chunk-Q2ZSWGAQ.cjs.map +1 -0
  469. package/dist/cjs/chunk-QCF7NFHD.cjs +38 -0
  470. package/dist/cjs/chunk-QCF7NFHD.cjs.map +1 -0
  471. package/dist/cjs/chunk-QCSBR7VS.cjs +74 -0
  472. package/dist/cjs/chunk-QCSBR7VS.cjs.map +1 -0
  473. package/dist/cjs/chunk-QD5ARR2B.cjs +17 -0
  474. package/dist/cjs/chunk-QD5ARR2B.cjs.map +1 -0
  475. package/dist/cjs/chunk-QDIHXLIV.cjs +17 -0
  476. package/dist/cjs/chunk-QDIHXLIV.cjs.map +1 -0
  477. package/dist/cjs/chunk-QKFZZH34.cjs +44 -0
  478. package/dist/cjs/chunk-QKFZZH34.cjs.map +1 -0
  479. package/dist/cjs/chunk-QQ62IQMW.cjs +18 -0
  480. package/dist/cjs/chunk-QQ62IQMW.cjs.map +1 -0
  481. package/dist/cjs/chunk-QQI3367Y.cjs +29 -0
  482. package/dist/cjs/chunk-QQI3367Y.cjs.map +1 -0
  483. package/dist/cjs/chunk-QS4IGZTN.cjs +17 -0
  484. package/dist/cjs/chunk-QS4IGZTN.cjs.map +1 -0
  485. package/dist/cjs/chunk-QUWVIY46.cjs +17 -0
  486. package/dist/cjs/chunk-QUWVIY46.cjs.map +1 -0
  487. package/dist/cjs/chunk-QYA4XUJT.cjs +18 -0
  488. package/dist/cjs/chunk-QYA4XUJT.cjs.map +1 -0
  489. package/dist/cjs/chunk-QYUFEGMJ.cjs +62 -0
  490. package/dist/cjs/chunk-QYUFEGMJ.cjs.map +1 -0
  491. package/dist/cjs/chunk-R4UYONDW.cjs +17 -0
  492. package/dist/cjs/chunk-R4UYONDW.cjs.map +1 -0
  493. package/dist/cjs/chunk-RGVKM4WY.cjs +62 -0
  494. package/dist/cjs/chunk-RGVKM4WY.cjs.map +1 -0
  495. package/dist/cjs/chunk-RHZY3ODR.cjs +361 -0
  496. package/dist/cjs/chunk-RHZY3ODR.cjs.map +1 -0
  497. package/dist/cjs/chunk-RLQA7BOD.cjs +29 -0
  498. package/dist/cjs/chunk-RLQA7BOD.cjs.map +1 -0
  499. package/dist/cjs/chunk-RMDFLURK.cjs +17 -0
  500. package/dist/cjs/chunk-RMDFLURK.cjs.map +1 -0
  501. package/dist/cjs/chunk-RN65SUJF.cjs +97 -0
  502. package/dist/cjs/chunk-RN65SUJF.cjs.map +1 -0
  503. package/dist/cjs/chunk-RNORLGS6.cjs +45 -0
  504. package/dist/cjs/chunk-RNORLGS6.cjs.map +1 -0
  505. package/dist/cjs/chunk-ROQH4P3W.cjs +38 -0
  506. package/dist/cjs/chunk-ROQH4P3W.cjs.map +1 -0
  507. package/dist/cjs/chunk-RRUMJQUL.cjs +89 -0
  508. package/dist/cjs/chunk-RRUMJQUL.cjs.map +1 -0
  509. package/dist/cjs/chunk-RSW62NMI.cjs +199 -0
  510. package/dist/cjs/chunk-RSW62NMI.cjs.map +1 -0
  511. package/dist/cjs/chunk-RUWGV4WR.cjs +17 -0
  512. package/dist/cjs/chunk-RUWGV4WR.cjs.map +1 -0
  513. package/dist/cjs/chunk-RVY2B3IJ.cjs +74 -0
  514. package/dist/cjs/chunk-RVY2B3IJ.cjs.map +1 -0
  515. package/dist/cjs/chunk-RWNTLD54.cjs +44 -0
  516. package/dist/cjs/chunk-RWNTLD54.cjs.map +1 -0
  517. package/dist/cjs/chunk-RXKDAHG2.cjs +44 -0
  518. package/dist/cjs/chunk-RXKDAHG2.cjs.map +1 -0
  519. package/dist/cjs/chunk-RYLBWVA2.cjs +44 -0
  520. package/dist/cjs/chunk-RYLBWVA2.cjs.map +1 -0
  521. package/dist/cjs/chunk-S23YAZ2A.cjs +17 -0
  522. package/dist/cjs/chunk-S23YAZ2A.cjs.map +1 -0
  523. package/dist/cjs/chunk-S5IX4I76.cjs +18 -0
  524. package/dist/cjs/chunk-S5IX4I76.cjs.map +1 -0
  525. package/dist/cjs/chunk-S6QSKB6P.cjs +16 -0
  526. package/dist/cjs/chunk-S6QSKB6P.cjs.map +1 -0
  527. package/dist/cjs/chunk-S7HZAG7P.cjs +44 -0
  528. package/dist/cjs/chunk-S7HZAG7P.cjs.map +1 -0
  529. package/dist/cjs/chunk-SARGPS4K.cjs +38 -0
  530. package/dist/cjs/chunk-SARGPS4K.cjs.map +1 -0
  531. package/dist/cjs/chunk-SFS4SXF6.cjs +53 -0
  532. package/dist/cjs/chunk-SFS4SXF6.cjs.map +1 -0
  533. package/dist/cjs/chunk-SIIH3B74.cjs +44 -0
  534. package/dist/cjs/chunk-SIIH3B74.cjs.map +1 -0
  535. package/dist/cjs/chunk-SMW34VVM.cjs +44 -0
  536. package/dist/cjs/chunk-SMW34VVM.cjs.map +1 -0
  537. package/dist/cjs/chunk-SPRRITQ6.cjs +18 -0
  538. package/dist/cjs/chunk-SPRRITQ6.cjs.map +1 -0
  539. package/dist/cjs/chunk-ST3FQEPC.cjs +17 -0
  540. package/dist/cjs/chunk-ST3FQEPC.cjs.map +1 -0
  541. package/dist/cjs/chunk-STMDJQSN.cjs +38 -0
  542. package/dist/cjs/chunk-STMDJQSN.cjs.map +1 -0
  543. package/dist/cjs/chunk-SUWPGEHX.cjs +17 -0
  544. package/dist/cjs/chunk-SUWPGEHX.cjs.map +1 -0
  545. package/dist/cjs/chunk-TBD4USX4.cjs +18 -0
  546. package/dist/cjs/chunk-TBD4USX4.cjs.map +1 -0
  547. package/dist/cjs/chunk-TDL3BNSA.cjs +29 -0
  548. package/dist/cjs/chunk-TDL3BNSA.cjs.map +1 -0
  549. package/dist/cjs/chunk-TH2AA3PL.cjs +44 -0
  550. package/dist/cjs/chunk-TH2AA3PL.cjs.map +1 -0
  551. package/dist/cjs/chunk-TIBS5S3Y.cjs +62 -0
  552. package/dist/cjs/chunk-TIBS5S3Y.cjs.map +1 -0
  553. package/dist/cjs/chunk-TO3PRCSI.cjs +29 -0
  554. package/dist/cjs/chunk-TO3PRCSI.cjs.map +1 -0
  555. package/dist/cjs/chunk-TWEE7ZVM.cjs +17 -0
  556. package/dist/cjs/chunk-TWEE7ZVM.cjs.map +1 -0
  557. package/dist/cjs/chunk-TXCJLAJF.cjs +38 -0
  558. package/dist/cjs/chunk-TXCJLAJF.cjs.map +1 -0
  559. package/dist/cjs/chunk-U2JRVN7R.cjs +370 -0
  560. package/dist/cjs/chunk-U2JRVN7R.cjs.map +1 -0
  561. package/dist/cjs/chunk-U6NNAQNQ.cjs +38 -0
  562. package/dist/cjs/chunk-U6NNAQNQ.cjs.map +1 -0
  563. package/dist/cjs/chunk-UCFV46IM.cjs +17 -0
  564. package/dist/cjs/chunk-UCFV46IM.cjs.map +1 -0
  565. package/dist/cjs/chunk-UFRZN76M.cjs +62 -0
  566. package/dist/cjs/chunk-UFRZN76M.cjs.map +1 -0
  567. package/dist/cjs/chunk-UHBLYOYU.cjs +74 -0
  568. package/dist/cjs/chunk-UHBLYOYU.cjs.map +1 -0
  569. package/dist/cjs/chunk-UHDH333D.cjs +62 -0
  570. package/dist/cjs/chunk-UHDH333D.cjs.map +1 -0
  571. package/dist/cjs/chunk-UM5H2LX6.cjs +29 -0
  572. package/dist/cjs/chunk-UM5H2LX6.cjs.map +1 -0
  573. package/dist/cjs/chunk-UPGOCNCN.cjs +38 -0
  574. package/dist/cjs/chunk-UPGOCNCN.cjs.map +1 -0
  575. package/dist/cjs/chunk-UPX2SP2I.cjs +17 -0
  576. package/dist/cjs/chunk-UPX2SP2I.cjs.map +1 -0
  577. package/dist/{esm/chunk-ZXRDGIRP.js → cjs/chunk-UUCZKT5D.cjs} +20 -15
  578. package/dist/cjs/chunk-UUCZKT5D.cjs.map +1 -0
  579. package/dist/cjs/chunk-UYHDOAWE.cjs +45 -0
  580. package/dist/cjs/chunk-UYHDOAWE.cjs.map +1 -0
  581. package/dist/cjs/chunk-UZJTUZGY.cjs +17 -0
  582. package/dist/cjs/chunk-UZJTUZGY.cjs.map +1 -0
  583. package/dist/cjs/chunk-V3EXMOOM.cjs +17 -0
  584. package/dist/cjs/chunk-V3EXMOOM.cjs.map +1 -0
  585. package/dist/cjs/chunk-V3LAWFTJ.cjs +44 -0
  586. package/dist/cjs/chunk-V3LAWFTJ.cjs.map +1 -0
  587. package/dist/cjs/chunk-V4RBT5K7.cjs +17 -0
  588. package/dist/cjs/chunk-V4RBT5K7.cjs.map +1 -0
  589. package/dist/cjs/chunk-V55C3YXY.cjs +93 -0
  590. package/dist/cjs/chunk-V55C3YXY.cjs.map +1 -0
  591. package/dist/cjs/chunk-VHNSHNUE.cjs +17 -0
  592. package/dist/cjs/chunk-VHNSHNUE.cjs.map +1 -0
  593. package/dist/cjs/chunk-VKN5V4HW.cjs +29 -0
  594. package/dist/cjs/chunk-VKN5V4HW.cjs.map +1 -0
  595. package/dist/cjs/chunk-VKOMCYNG.cjs +44 -0
  596. package/dist/cjs/chunk-VKOMCYNG.cjs.map +1 -0
  597. package/dist/cjs/chunk-VKRY4N4K.cjs +102 -0
  598. package/dist/cjs/chunk-VKRY4N4K.cjs.map +1 -0
  599. package/dist/cjs/chunk-VMO3EK7D.cjs +17 -0
  600. package/dist/cjs/chunk-VMO3EK7D.cjs.map +1 -0
  601. package/dist/cjs/chunk-VT73FQL4.cjs +89 -0
  602. package/dist/cjs/chunk-VT73FQL4.cjs.map +1 -0
  603. package/dist/cjs/chunk-VWPFDN24.cjs +17 -0
  604. package/dist/cjs/chunk-VWPFDN24.cjs.map +1 -0
  605. package/dist/cjs/chunk-VXA4ORKK.cjs +74 -0
  606. package/dist/cjs/chunk-VXA4ORKK.cjs.map +1 -0
  607. package/dist/cjs/chunk-VYP75YVY.cjs +44 -0
  608. package/dist/cjs/chunk-VYP75YVY.cjs.map +1 -0
  609. package/dist/cjs/chunk-W7SORD7U.cjs +44 -0
  610. package/dist/cjs/chunk-W7SORD7U.cjs.map +1 -0
  611. package/dist/cjs/chunk-WATBESF4.cjs +44 -0
  612. package/dist/cjs/chunk-WATBESF4.cjs.map +1 -0
  613. package/dist/cjs/chunk-WDYGGL7T.cjs +74 -0
  614. package/dist/cjs/chunk-WDYGGL7T.cjs.map +1 -0
  615. package/dist/cjs/chunk-WGXAPEYL.cjs +43 -0
  616. package/dist/cjs/chunk-WGXAPEYL.cjs.map +1 -0
  617. package/dist/cjs/chunk-WJNXA7H5.cjs +17 -0
  618. package/dist/cjs/chunk-WJNXA7H5.cjs.map +1 -0
  619. package/dist/cjs/chunk-WK2SDNK6.cjs +29 -0
  620. package/dist/cjs/chunk-WK2SDNK6.cjs.map +1 -0
  621. package/dist/cjs/chunk-WQJUJFBG.cjs +89 -0
  622. package/dist/cjs/chunk-WQJUJFBG.cjs.map +1 -0
  623. package/dist/cjs/chunk-WQKJT2J5.cjs +17 -0
  624. package/dist/cjs/chunk-WQKJT2J5.cjs.map +1 -0
  625. package/dist/cjs/chunk-WSXNCOQE.cjs +45 -0
  626. package/dist/cjs/chunk-WSXNCOQE.cjs.map +1 -0
  627. package/dist/cjs/chunk-WUCAGTUK.cjs +17 -0
  628. package/dist/cjs/chunk-WUCAGTUK.cjs.map +1 -0
  629. package/dist/cjs/chunk-WY7CK7W5.cjs +74 -0
  630. package/dist/cjs/chunk-WY7CK7W5.cjs.map +1 -0
  631. package/dist/cjs/chunk-X2FU2SYL.cjs +102 -0
  632. package/dist/cjs/chunk-X2FU2SYL.cjs.map +1 -0
  633. package/dist/cjs/chunk-X2I552UN.cjs +45 -0
  634. package/dist/cjs/chunk-X2I552UN.cjs.map +1 -0
  635. package/dist/cjs/chunk-X3QHGDUT.cjs +74 -0
  636. package/dist/cjs/chunk-X3QHGDUT.cjs.map +1 -0
  637. package/dist/cjs/chunk-XDHFS7VI.cjs +44 -0
  638. package/dist/cjs/chunk-XDHFS7VI.cjs.map +1 -0
  639. package/dist/cjs/chunk-XFTYFPPQ.cjs +74 -0
  640. package/dist/cjs/chunk-XFTYFPPQ.cjs.map +1 -0
  641. package/dist/cjs/chunk-XHO5XBCL.cjs +38 -0
  642. package/dist/cjs/chunk-XHO5XBCL.cjs.map +1 -0
  643. package/dist/cjs/chunk-XTZB7I5O.cjs +365 -0
  644. package/dist/cjs/chunk-XTZB7I5O.cjs.map +1 -0
  645. package/dist/cjs/chunk-XTZXXP5H.cjs +17 -0
  646. package/dist/cjs/chunk-XTZXXP5H.cjs.map +1 -0
  647. package/dist/cjs/chunk-XWQATYRB.cjs +17 -0
  648. package/dist/cjs/chunk-XWQATYRB.cjs.map +1 -0
  649. package/dist/cjs/chunk-Y3E7ELDU.cjs +17 -0
  650. package/dist/cjs/chunk-Y3E7ELDU.cjs.map +1 -0
  651. package/dist/cjs/chunk-YEEYYIBK.cjs +17 -0
  652. package/dist/cjs/chunk-YEEYYIBK.cjs.map +1 -0
  653. package/dist/cjs/chunk-YGVY4J7P.cjs +44 -0
  654. package/dist/cjs/chunk-YGVY4J7P.cjs.map +1 -0
  655. package/dist/cjs/chunk-YKBMV6JE.cjs +17 -0
  656. package/dist/cjs/chunk-YKBMV6JE.cjs.map +1 -0
  657. package/dist/cjs/chunk-YM24CPSE.cjs +44 -0
  658. package/dist/cjs/chunk-YM24CPSE.cjs.map +1 -0
  659. package/dist/cjs/chunk-YMFMJL47.cjs +137 -0
  660. package/dist/cjs/chunk-YMFMJL47.cjs.map +1 -0
  661. package/dist/cjs/chunk-YTGWHXGT.cjs +89 -0
  662. package/dist/cjs/chunk-YTGWHXGT.cjs.map +1 -0
  663. package/dist/cjs/chunk-YUTGCYSF.cjs +199 -0
  664. package/dist/cjs/chunk-YUTGCYSF.cjs.map +1 -0
  665. package/dist/cjs/chunk-Z2IE2N4Z.cjs +38 -0
  666. package/dist/cjs/chunk-Z2IE2N4Z.cjs.map +1 -0
  667. package/dist/cjs/chunk-Z6J5E6F6.cjs +44 -0
  668. package/dist/cjs/chunk-Z6J5E6F6.cjs.map +1 -0
  669. package/dist/cjs/chunk-Z6WB6GE6.cjs +17 -0
  670. package/dist/cjs/chunk-Z6WB6GE6.cjs.map +1 -0
  671. package/dist/cjs/chunk-Z7PEFAW2.cjs +44 -0
  672. package/dist/cjs/chunk-Z7PEFAW2.cjs.map +1 -0
  673. package/dist/cjs/chunk-ZAGPIIAP.cjs +74 -0
  674. package/dist/cjs/chunk-ZAGPIIAP.cjs.map +1 -0
  675. package/dist/cjs/chunk-ZEUSN4Q4.cjs +89 -0
  676. package/dist/cjs/chunk-ZEUSN4Q4.cjs.map +1 -0
  677. package/dist/cjs/chunk-ZF2XEV4M.cjs +362 -0
  678. package/dist/cjs/chunk-ZF2XEV4M.cjs.map +1 -0
  679. package/dist/cjs/chunk-ZNPKRMPN.cjs +17 -0
  680. package/dist/cjs/chunk-ZNPKRMPN.cjs.map +1 -0
  681. package/dist/cjs/chunk-ZRQ2BXVC.cjs +38 -0
  682. package/dist/cjs/chunk-ZRQ2BXVC.cjs.map +1 -0
  683. package/dist/cjs/chunk-ZUTXQWDF.cjs +29 -0
  684. package/dist/cjs/chunk-ZUTXQWDF.cjs.map +1 -0
  685. package/dist/cjs/chunk-ZVKZ5PTK.cjs +74 -0
  686. package/dist/cjs/chunk-ZVKZ5PTK.cjs.map +1 -0
  687. package/dist/cjs/container/index.cjs +21 -15
  688. package/dist/cjs/container/index.cjs.map +1 -1
  689. package/dist/cjs/container/services.cjs +20 -14
  690. package/dist/cjs/container/services.cjs.map +1 -1
  691. package/dist/cjs/index.cjs +42 -36
  692. package/dist/cjs/index.cjs.map +1 -1
  693. package/dist/cjs/modules/a2a/a2a.module.cjs +2 -2
  694. package/dist/cjs/modules/index.cjs +9 -9
  695. package/dist/cjs/modules/index.cjs.map +1 -1
  696. package/dist/cjs/modules/mcp/mcp.module.cjs +2 -2
  697. package/dist/cjs/routes/a2a.routes.cjs +23 -17
  698. package/dist/cjs/routes/a2a.routes.cjs.map +1 -1
  699. package/dist/cjs/routes/api/agent.routes.cjs +22 -16
  700. package/dist/cjs/routes/api/agent.routes.cjs.map +1 -1
  701. package/dist/cjs/routes/api/intent.routes.cjs +22 -16
  702. package/dist/cjs/routes/api/intent.routes.cjs.map +1 -1
  703. package/dist/cjs/routes/api/model.routes.cjs +22 -16
  704. package/dist/cjs/routes/api/model.routes.cjs.map +1 -1
  705. package/dist/cjs/routes/api/threads.routes.cjs +22 -16
  706. package/dist/cjs/routes/api/threads.routes.cjs.map +1 -1
  707. package/dist/cjs/routes/api/workflow.routes.cjs +22 -16
  708. package/dist/cjs/routes/api/workflow.routes.cjs.map +1 -1
  709. package/dist/cjs/routes/api.routes.cjs +27 -21
  710. package/dist/cjs/routes/api.routes.cjs.map +1 -1
  711. package/dist/cjs/routes/index.cjs +31 -25
  712. package/dist/cjs/routes/index.cjs.map +1 -1
  713. package/dist/cjs/routes/intent.routes.cjs +22 -16
  714. package/dist/cjs/routes/intent.routes.cjs.map +1 -1
  715. package/dist/cjs/routes/query.routes.cjs +22 -16
  716. package/dist/cjs/routes/query.routes.cjs.map +1 -1
  717. package/dist/cjs/services/index.cjs +21 -15
  718. package/dist/cjs/services/index.cjs.map +1 -1
  719. package/dist/cjs/services/intents/aggregate.service.cjs +3 -4
  720. package/dist/cjs/services/intents/aggregate.service.cjs.map +1 -1
  721. package/dist/cjs/services/intents/fulfill.service.cjs +10 -6
  722. package/dist/cjs/services/intents/fulfill.service.cjs.map +1 -1
  723. package/dist/cjs/services/intents/multi-trigger.service.cjs +3 -2
  724. package/dist/cjs/services/intents/multi-trigger.service.cjs.map +1 -1
  725. package/dist/cjs/services/intents/single-trigger.service.cjs +3 -2
  726. package/dist/cjs/services/intents/single-trigger.service.cjs.map +1 -1
  727. package/dist/cjs/services/intents/trigger.service.cjs +6 -4
  728. package/dist/cjs/services/intents/trigger.service.cjs.map +1 -1
  729. package/dist/cjs/services/pii.service.cjs +12 -0
  730. package/dist/cjs/services/pii.service.cjs.map +1 -0
  731. package/dist/cjs/services/prompts/aggregate.cjs +7 -0
  732. package/dist/cjs/services/prompts/aggregate.cjs.map +1 -0
  733. package/dist/cjs/services/prompts/fulfill.cjs +7 -0
  734. package/dist/cjs/services/prompts/fulfill.cjs.map +1 -0
  735. package/dist/cjs/services/prompts/generate-title.cjs +7 -0
  736. package/dist/cjs/services/prompts/generate-title.cjs.map +1 -0
  737. package/dist/cjs/services/prompts/multi-trigger.cjs +7 -0
  738. package/dist/cjs/services/prompts/multi-trigger.cjs.map +1 -0
  739. package/dist/cjs/services/prompts/pii-detect.cjs +7 -0
  740. package/dist/cjs/services/prompts/pii-detect.cjs.map +1 -0
  741. package/dist/cjs/services/prompts/pii-filter.cjs +7 -0
  742. package/dist/cjs/services/prompts/pii-filter.cjs.map +1 -0
  743. package/dist/cjs/services/prompts/single-trigger.cjs +7 -0
  744. package/dist/cjs/services/prompts/single-trigger.cjs.map +1 -0
  745. package/dist/cjs/services/prompts/tool-select.cjs +7 -0
  746. package/dist/cjs/services/prompts/tool-select.cjs.map +1 -0
  747. package/dist/cjs/services/query.service.cjs +6 -3
  748. package/dist/cjs/services/query.service.cjs.map +1 -1
  749. package/dist/cjs/services/utils/aggregate.common.cjs +2 -4
  750. package/dist/cjs/services/utils/aggregate.common.cjs.map +1 -1
  751. package/dist/cjs/services/utils/query.common.cjs +1 -8
  752. package/dist/cjs/services/utils/query.common.cjs.map +1 -1
  753. package/dist/cjs/utils/tableBuffer.cjs +7 -0
  754. package/dist/cjs/utils/tableBuffer.cjs.map +1 -0
  755. package/dist/esm/{chunk-7BH6AYP7.js → chunk-22ELL7WG.js} +6 -4
  756. package/dist/esm/chunk-22ELL7WG.js.map +1 -0
  757. package/dist/esm/chunk-3CR3ZB6L.js +60 -0
  758. package/dist/esm/chunk-3CR3ZB6L.js.map +1 -0
  759. package/dist/esm/chunk-4D6KMRWQ.js +28 -0
  760. package/dist/esm/chunk-4D6KMRWQ.js.map +1 -0
  761. package/dist/esm/{chunk-CYP6OTDK.js → chunk-5TIH6GI4.js} +21 -8
  762. package/dist/esm/chunk-5TIH6GI4.js.map +1 -0
  763. package/dist/esm/chunk-5Z3SX3AE.js +11 -0
  764. package/dist/esm/chunk-5Z3SX3AE.js.map +1 -0
  765. package/dist/esm/{chunk-XXDILT4B.js → chunk-BPSW5UQU.js} +2 -2
  766. package/dist/esm/{chunk-5FJU67BO.js → chunk-CQFZ2N2X.js} +19 -11
  767. package/dist/esm/chunk-CQFZ2N2X.js.map +1 -0
  768. package/dist/esm/{chunk-VGL4ZVNA.js → chunk-CRQEBSRD.js} +15 -25
  769. package/dist/esm/chunk-CRQEBSRD.js.map +1 -0
  770. package/dist/esm/chunk-DDSAK722.js +92 -0
  771. package/dist/esm/chunk-DDSAK722.js.map +1 -0
  772. package/dist/esm/{chunk-SV5CKUNN.js → chunk-FWPJQG4N.js} +3 -3
  773. package/dist/esm/chunk-FWPJQG4N.js.map +1 -0
  774. package/dist/esm/{chunk-DBB7B4PV.js → chunk-G4TS67ZV.js} +3 -3
  775. package/dist/esm/chunk-HSAGEBXJ.js +16 -0
  776. package/dist/esm/chunk-HSAGEBXJ.js.map +1 -0
  777. package/dist/esm/{chunk-D66QTWUY.js → chunk-IOQF3ABO.js} +2 -2
  778. package/dist/esm/chunk-IYLPCNEK.js +74 -0
  779. package/dist/esm/chunk-IYLPCNEK.js.map +1 -0
  780. package/dist/esm/{chunk-VOMI5BAO.js → chunk-KGBFQHBY.js} +2 -2
  781. package/dist/esm/{chunk-A3CKGK3U.js → chunk-MMD2RFKO.js} +2 -2
  782. package/dist/esm/{chunk-SDABEZSA.js → chunk-NMLM2BMK.js} +2 -2
  783. package/dist/esm/chunk-OV4TR542.js +28 -0
  784. package/dist/esm/chunk-OV4TR542.js.map +1 -0
  785. package/dist/esm/chunk-QMAVALRZ.js +97 -0
  786. package/dist/esm/chunk-QMAVALRZ.js.map +1 -0
  787. package/dist/esm/{chunk-R2R3AMCG.js → chunk-RCM6JTVK.js} +2 -2
  788. package/dist/esm/{chunk-ZUVYTTPD.js → chunk-RYEA7EL2.js} +3 -3
  789. package/dist/esm/chunk-RYEA7EL2.js.map +1 -0
  790. package/dist/esm/{chunk-LLYDI3LD.js → chunk-S3MSSEHS.js} +2 -2
  791. package/dist/esm/chunk-WFYXNKCJ.js +20 -0
  792. package/dist/esm/chunk-WFYXNKCJ.js.map +1 -0
  793. package/dist/esm/{chunk-3IG6HCSA.js → chunk-X7USCSP5.js} +2 -2
  794. package/dist/esm/chunk-XQUENGL4.js +29 -0
  795. package/dist/esm/chunk-XQUENGL4.js.map +1 -0
  796. package/dist/esm/{chunk-ZSWCICNO.js → chunk-YIU65RCX.js} +44 -6
  797. package/dist/esm/chunk-YIU65RCX.js.map +1 -0
  798. package/dist/esm/{chunk-MXPZHEDH.js → chunk-Z6RM6BGJ.js} +8 -8
  799. package/dist/esm/{chunk-MZRZVF5Q.js → chunk-ZWCRXCQU.js} +2 -2
  800. package/dist/esm/container/controllers.d.ts +1 -0
  801. package/dist/esm/container/index.d.ts +1 -0
  802. package/dist/esm/container/index.js +18 -12
  803. package/dist/esm/container/services.d.ts +3 -0
  804. package/dist/esm/container/services.js +17 -11
  805. package/dist/esm/controllers/a2a.controller.d.ts +1 -0
  806. package/dist/esm/controllers/index.d.ts +1 -0
  807. package/dist/esm/controllers/query.controller.d.ts +1 -0
  808. package/dist/esm/index.js +28 -22
  809. package/dist/esm/index.js.map +1 -1
  810. package/dist/esm/modules/a2a/a2a.module.d.ts +1 -1
  811. package/dist/esm/modules/a2a/a2a.module.js +1 -1
  812. package/dist/esm/modules/index.js +5 -5
  813. package/dist/esm/modules/mcp/mcp.module.d.ts +1 -1
  814. package/dist/esm/modules/mcp/mcp.module.js +1 -1
  815. package/dist/esm/modules/memory/base.memory.d.ts +8 -1
  816. package/dist/esm/routes/a2a.routes.js +19 -13
  817. package/dist/esm/routes/api/agent.routes.js +19 -13
  818. package/dist/esm/routes/api/intent.routes.js +19 -13
  819. package/dist/esm/routes/api/model.routes.js +19 -13
  820. package/dist/esm/routes/api/threads.routes.js +19 -13
  821. package/dist/esm/routes/api/workflow.routes.js +19 -13
  822. package/dist/esm/routes/api.routes.js +24 -18
  823. package/dist/esm/routes/index.js +26 -20
  824. package/dist/esm/routes/intent.routes.js +19 -13
  825. package/dist/esm/routes/query.routes.js +19 -13
  826. package/dist/esm/services/a2a.service.d.ts +1 -0
  827. package/dist/esm/services/index.d.ts +1 -0
  828. package/dist/esm/services/index.js +15 -9
  829. package/dist/esm/services/intents/aggregate.service.d.ts +6 -21
  830. package/dist/esm/services/intents/aggregate.service.js +2 -3
  831. package/dist/esm/services/intents/fulfill.service.d.ts +3 -1
  832. package/dist/esm/services/intents/fulfill.service.js +8 -4
  833. package/dist/esm/services/intents/multi-trigger.service.js +2 -1
  834. package/dist/esm/services/intents/single-trigger.service.js +2 -1
  835. package/dist/esm/services/intents/trigger.service.js +5 -3
  836. package/dist/esm/services/pii.service.d.ts +24 -0
  837. package/dist/esm/services/pii.service.js +12 -0
  838. package/dist/esm/services/prompts/aggregate.d.ts +7 -0
  839. package/dist/esm/services/prompts/aggregate.js +7 -0
  840. package/dist/esm/services/prompts/fulfill.d.ts +7 -0
  841. package/dist/esm/services/prompts/fulfill.js +7 -0
  842. package/dist/esm/services/prompts/generate-title.d.ts +7 -0
  843. package/dist/esm/services/prompts/generate-title.js +7 -0
  844. package/dist/esm/services/prompts/generate-title.js.map +1 -0
  845. package/dist/esm/services/prompts/multi-trigger.d.ts +7 -0
  846. package/dist/esm/services/prompts/multi-trigger.js +7 -0
  847. package/dist/esm/services/prompts/multi-trigger.js.map +1 -0
  848. package/dist/esm/services/prompts/pii-detect.d.ts +7 -0
  849. package/dist/esm/services/prompts/pii-detect.js +7 -0
  850. package/dist/esm/services/prompts/pii-detect.js.map +1 -0
  851. package/dist/esm/services/prompts/pii-filter.d.ts +7 -0
  852. package/dist/esm/services/prompts/pii-filter.js +7 -0
  853. package/dist/esm/services/prompts/pii-filter.js.map +1 -0
  854. package/dist/esm/services/prompts/single-trigger.d.ts +7 -0
  855. package/dist/esm/services/prompts/single-trigger.js +7 -0
  856. package/dist/esm/services/prompts/single-trigger.js.map +1 -0
  857. package/dist/esm/services/prompts/tool-select.d.ts +7 -0
  858. package/dist/esm/services/prompts/tool-select.js +7 -0
  859. package/dist/esm/services/prompts/tool-select.js.map +1 -0
  860. package/dist/esm/services/query.service.d.ts +4 -1
  861. package/dist/esm/services/query.service.js +5 -2
  862. package/package.json +1 -1
  863. package/dist/esm/chunk-5FJU67BO.js.map +0 -1
  864. package/dist/esm/chunk-7BH6AYP7.js.map +0 -1
  865. package/dist/esm/chunk-HEYSMA5B.js +0 -38
  866. package/dist/esm/chunk-HEYSMA5B.js.map +0 -1
  867. package/dist/esm/chunk-L447Q33F.js +0 -199
  868. package/dist/esm/chunk-L447Q33F.js.map +0 -1
  869. package/dist/esm/chunk-O3MPFL5J.js +0 -47
  870. package/dist/esm/chunk-O3MPFL5J.js.map +0 -1
  871. package/dist/esm/chunk-SV5CKUNN.js.map +0 -1
  872. package/dist/esm/chunk-VGL4ZVNA.js.map +0 -1
  873. package/dist/esm/chunk-ZSWCICNO.js.map +0 -1
  874. package/dist/esm/chunk-ZUVYTTPD.js.map +0 -1
  875. package/dist/esm/chunk-ZXRDGIRP.js.map +0 -1
  876. package/dist/esm/services/utils/aggregate.common.d.ts +0 -10
  877. package/dist/esm/services/utils/aggregate.common.js +0 -9
  878. package/dist/esm/services/utils/fulfill.common.d.ts +0 -6
  879. package/dist/esm/services/utils/fulfill.common.js +0 -7
  880. package/dist/esm/services/utils/query.common.d.ts +0 -9
  881. package/dist/esm/services/utils/query.common.js +0 -8
  882. /package/dist/esm/{chunk-XXDILT4B.js.map → chunk-BPSW5UQU.js.map} +0 -0
  883. /package/dist/esm/{chunk-DBB7B4PV.js.map → chunk-G4TS67ZV.js.map} +0 -0
  884. /package/dist/esm/{chunk-D66QTWUY.js.map → chunk-IOQF3ABO.js.map} +0 -0
  885. /package/dist/esm/{chunk-VOMI5BAO.js.map → chunk-KGBFQHBY.js.map} +0 -0
  886. /package/dist/esm/{chunk-A3CKGK3U.js.map → chunk-MMD2RFKO.js.map} +0 -0
  887. /package/dist/esm/{chunk-SDABEZSA.js.map → chunk-NMLM2BMK.js.map} +0 -0
  888. /package/dist/esm/{chunk-R2R3AMCG.js.map → chunk-RCM6JTVK.js.map} +0 -0
  889. /package/dist/esm/{chunk-LLYDI3LD.js.map → chunk-S3MSSEHS.js.map} +0 -0
  890. /package/dist/esm/{chunk-3IG6HCSA.js.map → chunk-X7USCSP5.js.map} +0 -0
  891. /package/dist/esm/{chunk-MXPZHEDH.js.map → chunk-Z6RM6BGJ.js.map} +0 -0
  892. /package/dist/esm/{chunk-MZRZVF5Q.js.map → chunk-ZWCRXCQU.js.map} +0 -0
  893. /package/dist/esm/services/{utils/aggregate.common.js.map → pii.service.js.map} +0 -0
  894. /package/dist/esm/services/{utils/fulfill.common.js.map → prompts/aggregate.js.map} +0 -0
  895. /package/dist/esm/services/{utils/query.common.js.map → prompts/fulfill.js.map} +0 -0
@@ -1,7 +1,10 @@
1
1
  import {
2
2
  QueryService
3
- } from "../chunk-ZSWCICNO.js";
4
- import "../chunk-HEYSMA5B.js";
3
+ } from "../chunk-YIU65RCX.js";
4
+ import "../chunk-HSAGEBXJ.js";
5
+ import "../chunk-IYLPCNEK.js";
6
+ import "../chunk-OV4TR542.js";
7
+ import "../chunk-4D6KMRWQ.js";
5
8
  import "../chunk-C5JXXLCW.js";
6
9
  import "../chunk-VX3VWWYW.js";
7
10
  import "../chunk-GHUEA7V5.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainetwork/adk",
3
- "version": "0.3.6",
3
+ "version": "0.4.0",
4
4
  "description": "AI Network Agent Development Kit",
5
5
  "repository": "git@github.com:ainetwork-ai/ain-adk.git",
6
6
  "author": "AI Network (https://ainetwork.ai)",
@@ -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\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 AggregateService to unify results if needsAggregation is true\n\t * 4. Stream the final (possibly aggregated) 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 aggregate context)\n\t * @param needsAggregation - Whether the results need to be aggregated\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\tneedsAggregation: boolean,\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\tneedsAggregation,\n\t\t\tstartTime: new Date(streamStartTime).toISOString(),\n\t\t});\n\n\t\tlet finalResponseText = \"\";\n\n\t\tif (intents.length <= 1) {\n\t\t\t// Single intent: stream response directly\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(\n\t\t\t\t`Process single intent: ${subquery}, ${intent?.name}`,\n\t\t\t);\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 if (!needsAggregation) {\n\t\t\t// Multiple intents but no aggregation needed: collect intermediate results, stream only last\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\tconst isLastIntent = i === intents.length - 1;\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\tif (isLastIntent) {\n\t\t\t\t\t// Stream last intent response directly\n\t\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\t\t\tfinalResponseText += event.data.delta;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyield event;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Collect intermediate results without streaming text_chunk\n\t\t\t\t\tlet responseText = \"\";\n\t\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\t\tif (event.event === \"text_chunk\" && event.data.delta) {\n\t\t\t\t\t\t\tresponseText += event.data.delta;\n\t\t\t\t\t\t} else if (event.event === \"thinking_process\") {\n\t\t\t\t\t\t\t// Tool execution thinking_process events are yielded immediately\n\t\t\t\t\t\t\tyield event;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Add intermediate result to thread context for next intent\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: [responseText] },\n\t\t\t\t\t\tmetadata: { isThinking: true },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Multi-intent mode with aggregation: 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: generate unified response\n\t\t\tconst aggregateStream = this.aggregateService.aggregate(\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/services/utils/fulfill.common.ts"],"sourcesContent":["import type { IAgentMemory } from \"@/modules\";\nimport type { Intent } from \"@/types/memory\";\n\nexport async function createFulfillPrompt(\n\tagentMemory?: IAgentMemory,\n\tintent?: Intent,\n) {\n\tconst agentPrompt = agentMemory ? await agentMemory.getAgentPrompt() : \"\";\n\n\treturn `\nToday is ${new Date().toLocaleDateString()}.\nYou are a highly sophisticated automated agent that can answer user queries by utilizing various tools and resources.\n\nThere is a selection of tools that let you perform actions or retrieve helpful context to answer the user's question.\nYou can call tools repeatedly to take actions or gather as much context as needed until you have completed the task fully.\n\nDon't give up unless you are sure the request cannot be fulfilled with the tools you have.\nIt's YOUR RESPONSIBILITY to make sure that you have done all you can to collect necessary context.\n\nIf you are not sure about content or context pertaining to the user's request, use your tools to read data and gather the relevant information: do NOT guess or make up an answer.\nBe THOROUGH when gathering information. Make sure you have the FULL picture before replying. Use additional tool calls or clarifying questions as needed.\n\nDon't try to answer the user's question directly.\nFirst break down the user's request into smaller concepts and think about the kinds of tools and queries you need to grasp each concept.\n\nThere are two <tool_type> for tools: MCP_Tool and A2A_Tool.\nThe tool type can be identified by the presence of \"[Bot Called <tool_type> with args <tool_args>]\" at the beginning of the tool result message.\nAfter executing a tool, a final response message must be written.\n\nRefer to the usage instructions below for each <tool_type>.\n\n<MCP_Tool>\n Use MCP tools through tools.\n MCP tool names are structured as follows:\n {MCP_NAME}_{TOOL_NAME}\n For example, tool names for the \"notionApi\" mcp would be:\n notionApi_API-post-search\n\n Separate rules can be specified under <{MCP_NAME}> for each MCP_NAME.\n</MCP_Tool>\n\n<A2A_Tool>\n A2A_Tool is a tool that sends queries to Agents with different information than mine and receives answers. The Agent that provided the answer must be clearly indicated.\n Results from A2A_Tool are text generated after thorough consideration by the requested Agent, and are complete outputs that cannot be further developed.\n There is no need to supplement the content with the same question or use new tools.\n</A2A_Tool>\n\n${agentPrompt}\n\n${intent?.prompt || \"\"}\n\t`.trim();\n}\n"],"mappings":";AAGA,eAAsB,oBACrB,aACA,QACC;AACD,QAAM,cAAc,cAAc,MAAM,YAAY,eAAe,IAAI;AAEvE,SAAO;AAAA,YACG,oBAAI,KAAK,GAAE,mBAAmB,CAAC;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;AAAA;AAAA;AAAA;AAAA,EAqCxC,WAAW;AAAA;AAAA,EAEX,QAAQ,UAAU,EAAE;AAAA,GACnB,KAAK;AACR;","names":[]}
@@ -1,38 +0,0 @@
1
- import {
2
- loggers
3
- } from "./chunk-GHUEA7V5.js";
4
-
5
- // src/services/utils/query.common.ts
6
- async function generateTitle(modelModule, query, options) {
7
- const DEFAULT_TITLE = "New Chat";
8
- try {
9
- const modelInstance = modelModule.getModel();
10
- const modelOptions = modelModule.getModelOptions();
11
- const messages = modelInstance.generateMessages({
12
- query,
13
- systemPrompt: `
14
- Today is ${(/* @__PURE__ */ new Date()).toLocaleDateString()}.
15
- You are a helpful assistant that generates titles for conversations.
16
- Please analyze the user's query and create a concise title that accurately reflects the conversation's core topic.
17
- The title must be no more than 5 words long.
18
- Respond with only the title. Do not include any punctuation or extra explanations.
19
- Always respond in the same language as the user's input.`
20
- });
21
- const response = await modelInstance.fetch(
22
- messages,
23
- options ?? modelOptions
24
- );
25
- return response.content || DEFAULT_TITLE;
26
- } catch (error) {
27
- loggers.intent.error("Error generating title", {
28
- error,
29
- query
30
- });
31
- return DEFAULT_TITLE;
32
- }
33
- }
34
-
35
- export {
36
- generateTitle
37
- };
38
- //# sourceMappingURL=chunk-HEYSMA5B.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/utils/query.common.ts"],"sourcesContent":["import type { ModelFetchOptions, ModelModule } from \"@/modules\";\nimport { loggers } from \"@/utils/logger.js\";\n\nexport async function generateTitle(\n\tmodelModule: ModelModule,\n\tquery: string,\n\toptions?: ModelFetchOptions,\n): Promise<string> {\n\tconst DEFAULT_TITLE = \"New Chat\";\n\ttry {\n\t\tconst modelInstance = modelModule.getModel();\n\t\tconst modelOptions = modelModule.getModelOptions();\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery,\n\t\t\tsystemPrompt: `\nToday is ${new Date().toLocaleDateString()}.\nYou are a helpful assistant that generates titles for conversations.\nPlease analyze the user's query and create a concise title that accurately reflects the conversation's core topic.\nThe title must be no more than 5 words long.\nRespond with only the title. Do not include any punctuation or extra explanations.\nAlways respond in the same language as the user's input.`,\n\t\t});\n\t\tconst response = await modelInstance.fetch(\n\t\t\tmessages,\n\t\t\toptions ?? modelOptions,\n\t\t);\n\t\treturn response.content || DEFAULT_TITLE;\n\t} catch (error) {\n\t\tloggers.intent.error(\"Error generating title\", {\n\t\t\terror,\n\t\t\tquery,\n\t\t});\n\t\treturn DEFAULT_TITLE;\n\t}\n}\n"],"mappings":";;;;;AAGA,eAAsB,cACrB,aACA,OACA,SACkB;AAClB,QAAM,gBAAgB;AACtB,MAAI;AACH,UAAM,gBAAgB,YAAY,SAAS;AAC3C,UAAM,eAAe,YAAY,gBAAgB;AACjD,UAAM,WAAW,cAAc,iBAAiB;AAAA,MAC/C;AAAA,MACA,cAAc;AAAA,YACN,oBAAI,KAAK,GAAE,mBAAmB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMxC,CAAC;AACD,UAAM,WAAW,MAAM,cAAc;AAAA,MACpC;AAAA,MACA,WAAW;AAAA,IACZ;AACA,WAAO,SAAS,WAAW;AAAA,EAC5B,SAAS,OAAO;AACf,YAAQ,OAAO,MAAM,0BAA0B;AAAA,MAC9C;AAAA,MACA;AAAA,IACD,CAAC;AACD,WAAO;AAAA,EACR;AACD;","names":[]}
@@ -1,199 +0,0 @@
1
- import {
2
- AGGREGATE_DECISION_SYSTEM_PROMPT,
3
- AGGREGATE_GENERATION_SYSTEM_PROMPT
4
- } from "./chunk-O3MPFL5J.js";
5
- import {
6
- getManifest
7
- } from "./chunk-2J2TQRP4.js";
8
- import {
9
- loggers
10
- } from "./chunk-GHUEA7V5.js";
11
-
12
- // src/services/intents/aggregate.service.ts
13
- var AggregateService = class {
14
- modelModule;
15
- constructor(modelModule) {
16
- this.modelModule = modelModule;
17
- }
18
- /**
19
- * Generates a unified response combining all results (always aggregates).
20
- * Use this when needsAggregation is already determined to be true.
21
- *
22
- * @param originalQuery - The user's original query
23
- * @param results - Array of fulfillment results from each intent
24
- * @returns AsyncGenerator yielding StreamEvent objects
25
- */
26
- async *aggregate(originalQuery, results) {
27
- if (results.length <= 1) {
28
- const response = results[0]?.response ?? "";
29
- if (response) {
30
- yield {
31
- event: "text_chunk",
32
- data: { delta: response }
33
- };
34
- }
35
- return;
36
- }
37
- yield {
38
- event: "thinking_process",
39
- data: {
40
- title: `[${getManifest().name}] \uC751\uB2F5 \uD1B5\uD569 \uC911`,
41
- description: "\uC5EC\uB7EC \uC791\uC5C5 \uACB0\uACFC\uB97C \uD558\uB098\uC758 \uC751\uB2F5\uC73C\uB85C \uD1B5\uD569\uD569\uB2C8\uB2E4."
42
- }
43
- };
44
- yield* this.generateAggregatedResponse(originalQuery, results);
45
- }
46
- /**
47
- * Analyzes fulfillment results and either returns the last response as-is
48
- * or generates a unified response combining all results.
49
- *
50
- * @deprecated Use aggregate() instead when needsAggregation is determined at trigger time
51
- * @param originalQuery - The user's original query
52
- * @param results - Array of fulfillment results from each intent
53
- * @returns AsyncGenerator yielding StreamEvent objects
54
- */
55
- async *aggregateIfNeeded(originalQuery, results) {
56
- if (results.length <= 1) {
57
- const response = results[0]?.response ?? "";
58
- if (response) {
59
- yield {
60
- event: "text_chunk",
61
- data: { delta: response }
62
- };
63
- }
64
- return;
65
- }
66
- const decision = await this.shouldAggregate(originalQuery, results);
67
- loggers.intent.info("Aggregate decision", {
68
- needsAggregation: decision.needsAggregation,
69
- reason: decision.reason
70
- });
71
- if (!decision.needsAggregation) {
72
- yield {
73
- event: "text_chunk",
74
- data: { delta: results[results.length - 1].response }
75
- };
76
- return;
77
- }
78
- yield {
79
- event: "thinking_process",
80
- data: {
81
- title: `[${getManifest().name}] \uC751\uB2F5 \uD1B5\uD569 \uC911`,
82
- description: decision.reason || "\uC5EC\uB7EC \uC791\uC5C5 \uACB0\uACFC\uB97C \uD558\uB098\uC758 \uC751\uB2F5\uC73C\uB85C \uD1B5\uD569\uD569\uB2C8\uB2E4."
83
- }
84
- };
85
- yield* this.generateAggregatedResponse(originalQuery, results);
86
- }
87
- /**
88
- * Asks LLM to decide whether the results need to be aggregated.
89
- */
90
- async shouldAggregate(originalQuery, results) {
91
- const modelInstance = this.modelModule.getModel();
92
- const modelOptions = this.modelModule.getModelOptions();
93
- const prompt = this.buildDecisionPrompt(originalQuery, results);
94
- const emptyThread = {
95
- messages: [],
96
- userId: "",
97
- threadId: "",
98
- type: "CHAT",
99
- title: ""
100
- };
101
- const messages = modelInstance.generateMessages({
102
- query: prompt,
103
- thread: emptyThread,
104
- systemPrompt: AGGREGATE_DECISION_SYSTEM_PROMPT
105
- });
106
- try {
107
- const response = await modelInstance.fetchWithContextMessage(
108
- messages,
109
- [],
110
- modelOptions
111
- );
112
- const responseText = response.content ?? "";
113
- let jsonStr = responseText;
114
- const jsonMatch = responseText.match(/```(?:json)?\s*([\s\S]*?)```/);
115
- if (jsonMatch) {
116
- jsonStr = jsonMatch[1].trim();
117
- }
118
- const parsed = JSON.parse(jsonStr);
119
- return {
120
- needsAggregation: parsed.needsAggregation ?? true,
121
- reason: parsed.reason ?? ""
122
- };
123
- } catch (error) {
124
- loggers.intent.warn(
125
- "Failed to parse aggregate decision, defaulting to aggregate",
126
- {
127
- error
128
- }
129
- );
130
- return { needsAggregation: true, reason: "Failed to parse decision" };
131
- }
132
- }
133
- /**
134
- * Generates a unified response by streaming from the model.
135
- */
136
- async *generateAggregatedResponse(originalQuery, results) {
137
- const modelInstance = this.modelModule.getModel();
138
- const modelOptions = this.modelModule.getModelOptions();
139
- const prompt = this.buildAggregatePrompt(originalQuery, results);
140
- const emptyThread = {
141
- messages: [],
142
- userId: "",
143
- threadId: "",
144
- type: "CHAT",
145
- title: ""
146
- };
147
- const messages = modelInstance.generateMessages({
148
- query: prompt,
149
- thread: emptyThread,
150
- systemPrompt: AGGREGATE_GENERATION_SYSTEM_PROMPT
151
- });
152
- const stream = await modelInstance.fetchStreamWithContextMessage(
153
- messages,
154
- [],
155
- modelOptions
156
- );
157
- for await (const chunk of stream) {
158
- if (chunk.delta?.content) {
159
- yield {
160
- event: "text_chunk",
161
- data: { delta: chunk.delta.content }
162
- };
163
- }
164
- }
165
- }
166
- /**
167
- * Builds the prompt for the aggregation decision.
168
- */
169
- buildDecisionPrompt(originalQuery, results) {
170
- const resultsText = results.map(
171
- (r, i) => `[Task ${i + 1}] ${r.subquery}
172
- [Response ${i + 1}] ${r.response}`
173
- ).join("\n\n---\n\n");
174
- return `Original Query: ${originalQuery}
175
-
176
- Results:
177
- ${resultsText}`;
178
- }
179
- /**
180
- * Builds the prompt for generating an aggregated response.
181
- */
182
- buildAggregatePrompt(originalQuery, results) {
183
- const resultsText = results.map(
184
- (r, i) => `[Task ${i + 1}] ${r.subquery}
185
- [Response ${i + 1}] ${r.response}`
186
- ).join("\n\n---\n\n");
187
- return `Original Query: ${originalQuery}
188
-
189
- All task results:
190
- ${resultsText}
191
-
192
- Please provide a unified response that addresses the original query.`;
193
- }
194
- };
195
-
196
- export {
197
- AggregateService
198
- };
199
- //# sourceMappingURL=chunk-L447Q33F.js.map
@@ -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 * Generates a unified response combining all results (always aggregates).\n\t * Use this when needsAggregation is already determined to be true.\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 *aggregate(\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// 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},\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 * 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 * @deprecated Use aggregate() instead when needsAggregation is determined at trigger time\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,47 +0,0 @@
1
- // src/services/utils/aggregate.common.ts
2
- var AGGREGATE_DECISION_SYSTEM_PROMPT = `You are an assistant that determines whether multiple task responses need to be aggregated into a unified response.
3
-
4
- Analyze the original query and the responses from each task.
5
-
6
- **Return JSON only:**
7
- {
8
- "needsAggregation": boolean,
9
- "reason": string // Write the reason in the same language as the original query
10
- }
11
-
12
- **Set needsAggregation to FALSE when:**
13
- - The last response already synthesizes/summarizes all previous results
14
- - The last task explicitly asks for a "report", "summary", "\uACB0\uACFC\uBB3C", "\uB808\uD3EC\uD2B8", "\uC815\uB9AC" based on previous tasks
15
- - The last response comprehensively addresses the original query by incorporating previous results
16
-
17
- **Set needsAggregation to TRUE when:**
18
- - Each response is independent and doesn't reference other results
19
- - The original query asks for multiple distinct things that weren't combined
20
- - Important information from earlier responses is missing in the final response
21
-
22
- Examples:
23
-
24
- Query: "A\uD558\uACE0, B\uD558\uACE0, \uADF8\uAC78 \uAE30\uBC18\uC73C\uB85C \uB808\uD3EC\uD2B8 \uB9CC\uB4E4\uC5B4\uC918"
25
- \u2192 needsAggregation: false (last task already creates a combined report)
26
-
27
- Query: "A\uD558\uACE0, B\uB3C4 \uD574\uC918"
28
- \u2192 needsAggregation: true (independent tasks, need combination)
29
-
30
- Query: "\uB0A0\uC528 \uC54C\uB824\uC8FC\uACE0, \uC77C\uC815\uB3C4 \uD655\uC778\uD574\uC918"
31
- \u2192 needsAggregation: true (independent queries, results should be combined)`;
32
- var AGGREGATE_GENERATION_SYSTEM_PROMPT = `You are an assistant that combines multiple task responses into a single, coherent response.
33
-
34
- Guidelines:
35
- - Preserve all important information from each response
36
- - Create a natural, flowing response that addresses the original query
37
- - Don't use section headers like "[Task 1]" - integrate smoothly
38
- - If responses have related information, synthesize them logically
39
- - Keep the tone consistent with the original responses
40
- - Be concise - don't add unnecessary filler
41
- - Respond in the same language as the original query`;
42
-
43
- export {
44
- AGGREGATE_DECISION_SYSTEM_PROMPT,
45
- AGGREGATE_GENERATION_SYSTEM_PROMPT
46
- };
47
- //# sourceMappingURL=chunk-O3MPFL5J.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/utils/aggregate.common.ts"],"sourcesContent":["/**\n * System prompt for deciding whether to aggregate/combine multiple responses.\n */\nexport const AGGREGATE_DECISION_SYSTEM_PROMPT = `You are an assistant that determines whether multiple task responses need to be aggregated into a unified response.\n\nAnalyze the original query and the responses from each task.\n\n**Return JSON only:**\n{\n \"needsAggregation\": boolean,\n \"reason\": string // Write the reason in the same language as the original query\n}\n\n**Set needsAggregation to FALSE when:**\n- The last response already synthesizes/summarizes all previous results\n- The last task explicitly asks for a \"report\", \"summary\", \"결과물\", \"레포트\", \"정리\" based on previous tasks\n- The last response comprehensively addresses the original query by incorporating previous results\n\n**Set needsAggregation to TRUE when:**\n- Each response is independent and doesn't reference other results\n- The original query asks for multiple distinct things that weren't combined\n- Important information from earlier responses is missing in the final response\n\nExamples:\n\nQuery: \"A하고, B하고, 그걸 기반으로 레포트 만들어줘\"\n→ needsAggregation: false (last task already creates a combined report)\n\nQuery: \"A하고, B도 해줘\"\n→ needsAggregation: true (independent tasks, need combination)\n\nQuery: \"날씨 알려주고, 일정도 확인해줘\"\n→ needsAggregation: true (independent queries, results should be combined)`;\n\n/**\n * System prompt for generating a unified response from multiple results.\n */\nexport const AGGREGATE_GENERATION_SYSTEM_PROMPT = `You are an assistant that combines multiple task responses into a single, coherent response.\n\nGuidelines:\n- Preserve all important information from each response\n- Create a natural, flowing response that addresses the original query\n- Don't use section headers like \"[Task 1]\" - integrate smoothly\n- If responses have related information, synthesize them logically\n- Keep the tone consistent with the original responses\n- Be concise - don't add unnecessary filler\n- Respond in the same language as the original query`;\n"],"mappings":";AAGO,IAAM,mCAAmC;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;AAkCzC,IAAM,qCAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/modules/mcp/mcp.module.ts"],"sourcesContent":["import { Client as MCPClient } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport { WebSocketClientTransport } from \"@modelcontextprotocol/sdk/client/websocket.js\";\nimport {\n\tCONNECTOR_PROTOCOL_TYPE,\n\ttype ConnectorTool,\n} from \"@/types/connector.js\";\nimport type { MCPConfig } from \"@/types/mcp.js\";\nimport { loggers } from \"@/utils/logger.js\";\nimport { MCPConnector } from \"./mcp.connector.js\";\n\n/**\n * Module for managing Model Context Protocol (MCP) server connections.\n *\n * This module handles the lifecycle of MCP client connections, discovers\n * available tools from connected servers, and provides an interface for\n * executing those tools. Multiple MCP servers can be connected simultaneously.\n */\nexport class MCPModule {\n\tprivate mcpConnectors: Map<string, MCPConnector> = new Map();\n\n\taddMCPConnector(configs: { [name: string]: MCPConfig }): void {\n\t\tfor (const [name, config] of Object.entries(configs)) {\n\t\t\tconst conn = new MCPConnector(name, config);\n\t\t\tthis.mcpConnectors.set(name, conn);\n\t\t}\n\t}\n\n\tprivate getOrCreateClient(connector: MCPConnector): MCPClient {\n\t\tconnector.client ??= new MCPClient({\n\t\t\tname: connector.name,\n\t\t\tversion: \"1.0.0\",\n\t\t});\n\t\treturn connector.client;\n\t}\n\n\tasync connectToServers(): Promise<void> {\n\t\tfor (const [name, conn] of this.mcpConnectors.entries()) {\n\t\t\ttry {\n\t\t\t\tconst mcpClient = this.getOrCreateClient(conn);\n\t\t\t\tconst config = conn.config;\n\t\t\t\tswitch (config.type) {\n\t\t\t\t\tcase \"stdio\": {\n\t\t\t\t\t\tconst transport = new StdioClientTransport(config.params);\n\t\t\t\t\t\tawait mcpClient.connect(transport);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"websocket\": {\n\t\t\t\t\t\tconst transport = new WebSocketClientTransport(config.url);\n\t\t\t\t\t\tawait mcpClient.connect(transport);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"sse\": {\n\t\t\t\t\t\tconst transport = new SSEClientTransport(\n\t\t\t\t\t\t\tconfig.url,\n\t\t\t\t\t\t\tconfig.options,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait mcpClient.connect(transport);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"streamableHttp\": {\n\t\t\t\t\t\tconst transport = new StreamableHTTPClientTransport(\n\t\t\t\t\t\t\tconfig.url,\n\t\t\t\t\t\t\tconfig.options,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait mcpClient.connect(transport);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// This cannot happen.\n\t\t\t\t\t\tloggers.mcp.error(\"Unsupported MCP config type\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst toolList = await mcpClient.listTools();\n\t\t\t\tconn.tools = toolList.tools.map((tool) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttoolName: `${name}-${tool.name}`, // to avoid tool name duplication\n\t\t\t\t\t\tconnectorName: name,\n\t\t\t\t\t\tprotocol: CONNECTOR_PROTOCOL_TYPE.MCP,\n\t\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\t\tinputSchema: tool.inputSchema,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tloggers.mcp.info(\"Connected to MCP server with tools:\", {\n\t\t\t\t\ttools: conn.tools.map((tool) => tool.toolName),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tloggers.mcp.error(`Failed to connect to MCP server ${name}`, { error });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns all available tools from connected MCP servers.\n\t *\n\t * @returns Array of MCPTool instances representing available tools\n\t */\n\tgetTools(): Array<ConnectorTool> {\n\t\tconst allTools: Array<ConnectorTool> = [];\n\t\tfor (const conn of this.mcpConnectors.values()) {\n\t\t\tfor (const tool of conn.tools) {\n\t\t\t\t// add thinking_text inputSchema for each tool\n\t\t\t\tconst finalInputSchema: any = {\n\t\t\t\t\ttype: \"object\",\n\t\t\t\t\tproperties: { ...(tool.inputSchema?.properties || {}) },\n\t\t\t\t\trequired: [...(tool.inputSchema?.required || [])],\n\t\t\t\t};\n\n\t\t\t\tfinalInputSchema.properties[\"thinking_text\"] = {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"사용자의 요청을 해결하기 위해 이 도구를 선택한 구체적인 이유와 목적 (Why & What). 한두줄 정도의 분량으로 입력 언어와 같은 언어로 생성한다.\",\n\t\t\t\t};\n\t\t\t\tfinalInputSchema.required.push(\"thinking_text\");\n\n\t\t\t\tallTools.push({\n\t\t\t\t\ttoolName: tool.toolName,\n\t\t\t\t\tconnectorName: tool.connectorName,\n\t\t\t\t\tprotocol: tool.protocol,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tinputSchema: finalInputSchema,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn allTools;\n\t}\n\n\t/**\n\t * Executes a tool on its corresponding MCP server.\n\t *\n\t * @param tool - The MCPTool instance to execute\n\t * @param _args - Arguments to pass to the tool\n\t * @returns Promise resolving to the tool's execution result\n\t * @throws Error if the MCP server for the tool is not found\n\t */\n\tasync useTool(tool: ConnectorTool, _args?: any): Promise<string> {\n\t\tconst { connectorName, toolName } = tool;\n\t\tconst client = this.mcpConnectors.get(connectorName)?.client;\n\n\t\ttry {\n\t\t\tif (!client) {\n\t\t\t\tthrow new Error(`Invalid MCP Tool ${toolName}`);\n\t\t\t}\n\n\t\t\t// `${name}-${tool.name}` => tool.name\n\t\t\tconst mcpToolName = toolName.slice(connectorName.length + 1);\n\t\t\tconst result = await client.callTool({\n\t\t\t\tname: mcpToolName,\n\t\t\t\targuments: _args,\n\t\t\t});\n\t\t\tconst toolResult =\n\t\t\t\t`[Bot Called Tool ${toolName} with args ${JSON.stringify(_args)}]\\n` +\n\t\t\t\tJSON.stringify(result.content, null, 2);\n\t\t\treturn toolResult;\n\t\t} catch (error) {\n\t\t\tloggers.mcp.error(\"Failed to call tool\", { error });\n\t\t\tconst toolResult = `[Bot Called Tool ${toolName} with args ${JSON.stringify(_args)}]\\n${typeof error === \"string\" ? error : JSON.stringify(error, null, 2)}`;\n\t\t\treturn toolResult;\n\t\t}\n\t}\n\n\t/**\n\t * Closes all MCP client connections.\n\t *\n\t * Should be called when shutting down the application to ensure\n\t * all MCP connections are properly closed.\n\t */\n\tasync cleanup() {\n\t\tfor (const conn of this.mcpConnectors.values()) {\n\t\t\tawait conn.client?.close();\n\t\t}\n\t}\n}\n"],"mappings":"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","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\tIntentTriggerResult,\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 IntentTriggerResult with single intent and needsAggregation=false\n\t */\n\tpublic async intentTriggering(\n\t\tquery: string,\n\t\tthread: ThreadObject | undefined,\n\t): Promise<IntentTriggerResult> {\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 { intents: [{ subquery: query }], needsAggregation: false };\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 { intents: [{ subquery: query }], needsAggregation: false };\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 { intents: [{ subquery: query }], needsAggregation: false };\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 { intents: [{ subquery: query }], needsAggregation: false };\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 { intents: [result], needsAggregation: false };\n\t}\n}\n"],"mappings":";;;;;AAaO,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,QAC+B;AAC/B,UAAM,gBAAgB,KAAK,YAAY,SAAS;AAChD,UAAM,eAAe,KAAK,YAAY,gBAAgB;AACtD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,QAAI,CAAC,cAAc;AAClB,aAAO,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;AAEA,UAAM,UAAU,MAAM,aAAa,YAAY;AAC/C,QAAI,QAAQ,WAAW,GAAG;AACzB,cAAQ,aAAa,KAAK,iBAAiB;AAC3C,aAAO,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;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,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;AAEA,QAAI;AACJ,QAAI;AACH,eAAS,KAAK,MAAM,SAAS,OAAO;AAAA,IACrC,SAAS,OAAgB;AACxB,aAAO,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;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,EAAE,SAAS,CAAC,MAAM,GAAG,kBAAkB,MAAM;AAAA,EACrD;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} 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 triggerResult = await this.intentTriggerService.intentTriggering(\n\t\t\tquery,\n\t\t\tthread,\n\t\t);\n\t\tconst { intents: triggeredIntents, needsAggregation } = triggerResult;\n\t\tloggers.intent.debug(\"Triggered intents\", {\n\t\t\ttriggeredIntents,\n\t\t\tneedsAggregation,\n\t\t});\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: triggeredIntents\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\ttriggeredIntents,\n\t\t\tthread,\n\t\t\tquery,\n\t\t\tneedsAggregation,\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;AA2BrB,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,gBAAgB,MAAM,KAAK,qBAAqB;AAAA,MACrD;AAAA,MACA;AAAA,IACD;AACA,UAAM,EAAE,SAAS,kBAAkB,iBAAiB,IAAI;AACxD,YAAQ,OAAO,MAAM,qBAAqB;AAAA,MACzC;AAAA,MACA;AAAA,IACD,CAAC;AAGD,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,iBACP,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,MACA;AAAA,IACD;AAEA,qBAAiB,SAAS,QAAQ;AACjC,YAAM;AAAA,IACP;AAAA,EACD;AACD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/modules/a2a/a2a.module.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type {\n\tAgentCard,\n\tMessage,\n\tMessageSendParams,\n\tTask,\n\tTaskStatusUpdateEvent,\n\tTextPart,\n} from \"@a2a-js/sdk\";\nimport { type Client as A2AClient, ClientFactory } from \"@a2a-js/sdk/client\";\nimport {\n\tCONNECTOR_PROTOCOL_TYPE,\n\ttype ConnectorTool,\n} from \"@/types/connector.js\";\nimport { ThreadType } from \"@/types/memory.js\";\nimport type { StreamEvent } from \"@/types/stream.js\";\nimport { loggers } from \"@/utils/logger.js\";\nimport { A2AConnector } from \"./a2a.connector.js\";\n\n/**\n * Module for managing Agent-to-Agent (A2A) protocol connections.\n *\n * This module handles connections to other A2A-compatible agents, manages\n * conversation sessions, and provides an interface for inter-agent communication.\n * Supports multi-turn conversations with task and context tracking.\n */\nexport class A2AModule {\n\t/** Map of A2A server URLs to their corresponding tool instances */\n\tprivate a2aConnectors: Map<string, A2AConnector> = new Map();\n\t/** Map of session IDs to their A2A session state */\n\tprivate a2aTasks: Map<string, string> = new Map();\n\tprivate agentId: string = randomUUID(); /* FIXME */\n\n\t/**\n\t * Registers a new A2A peer server URL for connection.\n\t *\n\t * @param conns - Set of name, url pair\n\t */\n\tpublic async addA2AConnector(conns: {\n\t\t[name: string]: string;\n\t}): Promise<void> {\n\t\tfor (const [name, url] of Object.entries(conns)) {\n\t\t\tconst conn = new A2AConnector(name, url);\n\t\t\tthis.a2aConnectors.set(name, conn);\n\t\t}\n\t}\n\n\tpublic getA2AConnectors(): Array<{ name: string; url: string }> {\n\t\tconst connectors: Array<{ name: string; url: string }> = [];\n\t\tfor (const [name, connector] of this.a2aConnectors.entries()) {\n\t\t\tconnectors.push({ name, url: connector.url });\n\t\t}\n\t\treturn connectors;\n\t}\n\n\tprivate async getOrCreateClient(connector: A2AConnector): Promise<A2AClient> {\n\t\tif (!connector.client) {\n\t\t\tconnector.client = await new ClientFactory().createFromUrl(connector.url);\n\t\t}\n\t\treturn connector.client;\n\t}\n\n\t/**\n\t * Retrieves tools from all registered A2A peer servers.\n\t *\n\t * Attempts to connect to each registered server, fetch their agent cards,\n\t * and create tool instances. Disables tools for unreachable servers.\n\t *\n\t * @returns Promise resolving to array of available A2A tools\n\t */\n\tpublic async getTools(): Promise<ConnectorTool[]> {\n\t\tconst tools: ConnectorTool[] = [];\n\t\tfor (const [name, conn] of this.a2aConnectors.entries()) {\n\t\t\tif (!conn.enabled) {\n\t\t\t\tcontinue; // skip disabled agent\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst client = await this.getOrCreateClient(conn);\n\t\t\t\tconst card: AgentCard = await client.getAgentCard();\n\t\t\t\t/* TODO: add each skill as tool? */\n\t\t\t\tconst tool: ConnectorTool = {\n\t\t\t\t\ttoolName: card.name.replaceAll(\" \", \"-\"),\n\t\t\t\t\tconnectorName: name,\n\t\t\t\t\tprotocol: CONNECTOR_PROTOCOL_TYPE.A2A,\n\t\t\t\t\tdescription: card.description,\n\t\t\t\t\t// add thinking_text inputSchema\n\t\t\t\t\tinputSchema: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tthinking_text: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"사용자의 요청을 해결하기 위해 이 도구를 선택한 구체적인 이유와 목적 (Why & What). 한두줄 정도의 분량으로 입력 언어와 같은 언어로 생성한다.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\trequired: [\"thinking_text\"],\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\ttools.push(tool);\n\t\t\t} catch (_error: any) {\n\t\t\t\t// Agent not responded, just skip\n\t\t\t}\n\t\t}\n\t\treturn tools;\n\t}\n\n\t/**\n\t * Constructs a message payload for A2A communication.\n\t *\n\t * Includes session context (task ID and context ID) if available\n\t * for maintaining conversation continuity.\n\t *\n\t * @param query - The message content to send\n\t * @param threadId - The session identifier\n\t * @returns Formatted Message object for A2A protocol\n\t */\n\tpublic getMessagePayload(query: string, threadId: string): Message {\n\t\tconst messagePayload: Message = {\n\t\t\tmessageId: randomUUID(),\n\t\t\tkind: \"message\",\n\t\t\trole: \"user\", // FIXME: it could be 'agent'\n\t\t\tmetadata: {\n\t\t\t\tagentId: this.agentId,\n\t\t\t\ttype: ThreadType.CHAT,\n\t\t\t},\n\t\t\tparts: [\n\t\t\t\t{\n\t\t\t\t\tkind: \"text\",\n\t\t\t\t\ttext: query,\n\t\t\t\t},\n\t\t\t],\n\t\t\tcontextId: threadId,\n\t\t};\n\n\t\tif (this.a2aTasks.has(threadId)) {\n\t\t\tmessagePayload.taskId = this.a2aTasks.get(threadId);\n\t\t}\n\n\t\treturn messagePayload;\n\t}\n\n\t/**\n\t * Executes an A2A tool by sending a message to the remote agent.\n\t *\n\t * Handles streaming responses, maintains session state, and extracts\n\t * text content from various event types in the response stream.\n\t *\n\t * @param tool - The A2ATool instance to use\n\t * @param query - The message to send to the agent\n\t * @param threadId - The session identifier for context tracking\n\t * @yields StreamEvent objects for intermediate events\n\t * @returns Final text response from the agent\n\t */\n\tpublic async *useTool(\n\t\ttool: ConnectorTool,\n\t\tquery: string,\n\t\tthreadId: string,\n\t): AsyncGenerator<StreamEvent, string, unknown> {\n\t\tconst finalText: string[] = [];\n\t\tconst connector = this.a2aConnectors.get(tool.connectorName);\n\t\tif (!connector) {\n\t\t\tloggers.a2a.error(\"Unknown agent:\", { tool });\n\t\t\tconst toolResult = `[Bot Called A2A Tool ${tool.connectorName}]\\n\"Unknown agent connector\"`;\n\t\t\treturn toolResult;\n\t\t}\n\n\t\tconst messagePayload = this.getMessagePayload(query, threadId);\n\t\tconst params: MessageSendParams = {\n\t\t\tmessage: messagePayload,\n\t\t};\n\n\t\ttry {\n\t\t\tconst client = await this.getOrCreateClient(connector);\n\t\t\tconst stream = client.sendMessageStream(params);\n\t\t\tfor await (const event of stream) {\n\t\t\t\tif (event.kind === \"status-update\") {\n\t\t\t\t\tconst typedEvent = event as TaskStatusUpdateEvent;\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypedEvent.final &&\n\t\t\t\t\t\ttypedEvent.status.state !== \"input-required\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.a2aTasks.delete(threadId);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typedEvent.status.state === \"working\") {\n\t\t\t\t\t\t// thinking process event\n\t\t\t\t\t\tconst eventData = JSON.parse(\n\t\t\t\t\t\t\t(typedEvent.status.message?.parts[0] as TextPart).text,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tyield {\n\t\t\t\t\t\t\tevent: \"thinking_process\",\n\t\t\t\t\t\t\tdata: eventData,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if (typedEvent.status.state === \"completed\") {\n\t\t\t\t\t\t// TODO: handle 'file', 'data' parts\n\t\t\t\t\t\tconst texts = typedEvent.status.message?.parts\n\t\t\t\t\t\t\t.filter((part) => part.kind === \"text\")\n\t\t\t\t\t\t\t.map((part: TextPart) => part.text)\n\t\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\t\t\tif (texts) {\n\t\t\t\t\t\t\tfinalText.push(texts);\n\t\t\t\t\t\t\tyield {\n\t\t\t\t\t\t\t\tevent: \"text_chunk\",\n\t\t\t\t\t\t\t\tdata: { delta: texts },\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ignore other status updates\n\t\t\t\t\t}\n\t\t\t\t} else if (event.kind === \"message\") {\n\t\t\t\t\t// FIXME: handling text in 'message'?\n\t\t\t\t\tconst msg = event as Message;\n\t\t\t\t\tconst taskId = this.a2aTasks.get(threadId);\n\t\t\t\t\tif (msg.taskId && msg.taskId !== taskId) {\n\t\t\t\t\t\tthis.a2aTasks.set(threadId, msg.taskId);\n\t\t\t\t\t}\n\t\t\t\t} else if (event.kind === \"task\") {\n\t\t\t\t\t// establishing the Task ID\n\t\t\t\t\tconst task = event as Task;\n\t\t\t\t\tif (task.id !== this.a2aTasks.get(threadId)) {\n\t\t\t\t\t\tthis.a2aTasks.set(threadId, task.id);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tloggers.a2a.warn(\"Received unknown event structure from stream:\", {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tloggers.a2a.error(\"Error communicating with agent:\", { error });\n\t\t\tconst toolResult = `[Bot Called A2A Tool ${tool.toolName}]\\n${typeof error === \"string\" ? error : JSON.stringify(error, null, 2)}`;\n\t\t\treturn toolResult;\n\t\t}\n\n\t\treturn `[Bot Called A2A Tool ${tool.toolName}]\\n${finalText.join(\"\\n\")}`;\n\t}\n}\n"],"mappings":"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","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\tIntentTriggerResult,\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 IntentTriggerResult containing intents and aggregation flag\n\t */\n\tpublic async intentTriggering(\n\t\tquery: string,\n\t\tthread: ThreadObject | undefined,\n\t): Promise<IntentTriggerResult> {\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 { intents: [{ subquery: query }], needsAggregation: false };\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 { intents: [{ subquery: query }], needsAggregation: false };\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\n7. Determine if the final response needs aggregation:\n - Set needsAggregation to TRUE if: multiple subqueries exist AND their results should be combined into a unified response\n - Set needsAggregation to FALSE if: only one subquery exists, OR multiple subqueries are independent and can be answered separately without combining\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 \"needsAggregation\": <true or false>,\n \"subqueries\": [\n {\n \"subquery\": \"<subquery_1>\",\n \"intentName\": \"<intent_name_1>\",\n \"actionPlan\": \"<2-3 sentence description of what will be done for this subquery>\"\n },\n {\n \"subquery\": \"<subquery_2>\",\n \"intentName\": \"<intent_name_2>\",\n \"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- Set needsAggregation based on whether the user expects a unified combined answer or separate responses`;\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 { intents: [{ subquery: query }], needsAggregation: false };\n\t\t}\n\n\t\tlet parsed: {\n\t\t\tneedsAggregation?: boolean;\n\t\t\tsubqueries?: Array<{\n\t\t\t\tsubquery?: string;\n\t\t\t\tintentName?: string;\n\t\t\t\tactionPlan?: string;\n\t\t\t}>;\n\t\t};\n\t\ttry {\n\t\t\tparsed = JSON.parse(response.content);\n\t\t} catch (error: unknown) {\n\t\t\treturn { intents: [{ subquery: query }], needsAggregation: false };\n\t\t}\n\n\t\tconst subqueries = parsed.subqueries ?? [];\n\t\tconst needsAggregation = parsed.needsAggregation ?? false;\n\n\t\tconst triggeredIntents: 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\ttriggeredIntents.push(item);\n\t\t}\n\n\t\tloggers.intent.info(\"Intent triggering result\", {\n\t\t\tintentCount: triggeredIntents.length,\n\t\t\tneedsAggregation,\n\t\t});\n\n\t\treturn { intents: triggeredIntents, needsAggregation };\n\t}\n}\n"],"mappings":";;;;;AAaO,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,QAC+B;AAC/B,UAAM,gBAAgB,KAAK,YAAY,SAAS;AAChD,UAAM,eAAe,KAAK,YAAY,gBAAgB;AACtD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,QAAI,CAAC,cAAc;AAClB,aAAO,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;AAGA,UAAM,UAAU,MAAM,aAAa,YAAY;AAE/C,QAAI,QAAQ,WAAW,GAAG;AACzB,cAAQ,aAAa,KAAK,iBAAiB;AAC3C,aAAO,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyC1B,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,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;AAEA,QAAI;AAQJ,QAAI;AACH,eAAS,KAAK,MAAM,SAAS,OAAO;AAAA,IACrC,SAAS,OAAgB;AACxB,aAAO,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,kBAAkB,MAAM;AAAA,IAClE;AAEA,UAAM,aAAa,OAAO,cAAc,CAAC;AACzC,UAAM,mBAAmB,OAAO,oBAAoB;AAEpD,UAAM,mBAA2C,CAAC;AAClD,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,uBAAiB,KAAK,IAAI;AAAA,IAC3B;AAEA,YAAQ,OAAO,KAAK,4BAA4B;AAAA,MAC/C,aAAa,iBAAiB;AAAA,MAC9B;AAAA,IACD,CAAC;AAED,WAAO,EAAE,SAAS,kBAAkB,iBAAiB;AAAA,EACtD;AACD;","names":[]}
@@ -1,10 +0,0 @@
1
- /**
2
- * System prompt for deciding whether to aggregate/combine multiple responses.
3
- */
4
- declare const AGGREGATE_DECISION_SYSTEM_PROMPT = "You are an assistant that determines whether multiple task responses need to be aggregated into a unified response.\n\nAnalyze the original query and the responses from each task.\n\n**Return JSON only:**\n{\n \"needsAggregation\": boolean,\n \"reason\": string // Write the reason in the same language as the original query\n}\n\n**Set needsAggregation to FALSE when:**\n- The last response already synthesizes/summarizes all previous results\n- The last task explicitly asks for a \"report\", \"summary\", \"\uACB0\uACFC\uBB3C\", \"\uB808\uD3EC\uD2B8\", \"\uC815\uB9AC\" based on previous tasks\n- The last response comprehensively addresses the original query by incorporating previous results\n\n**Set needsAggregation to TRUE when:**\n- Each response is independent and doesn't reference other results\n- The original query asks for multiple distinct things that weren't combined\n- Important information from earlier responses is missing in the final response\n\nExamples:\n\nQuery: \"A\uD558\uACE0, B\uD558\uACE0, \uADF8\uAC78 \uAE30\uBC18\uC73C\uB85C \uB808\uD3EC\uD2B8 \uB9CC\uB4E4\uC5B4\uC918\"\n\u2192 needsAggregation: false (last task already creates a combined report)\n\nQuery: \"A\uD558\uACE0, B\uB3C4 \uD574\uC918\"\n\u2192 needsAggregation: true (independent tasks, need combination)\n\nQuery: \"\uB0A0\uC528 \uC54C\uB824\uC8FC\uACE0, \uC77C\uC815\uB3C4 \uD655\uC778\uD574\uC918\"\n\u2192 needsAggregation: true (independent queries, results should be combined)";
5
- /**
6
- * System prompt for generating a unified response from multiple results.
7
- */
8
- declare const AGGREGATE_GENERATION_SYSTEM_PROMPT = "You are an assistant that combines multiple task responses into a single, coherent response.\n\nGuidelines:\n- Preserve all important information from each response\n- Create a natural, flowing response that addresses the original query\n- Don't use section headers like \"[Task 1]\" - integrate smoothly\n- If responses have related information, synthesize them logically\n- Keep the tone consistent with the original responses\n- Be concise - don't add unnecessary filler\n- Respond in the same language as the original query";
9
-
10
- export { AGGREGATE_DECISION_SYSTEM_PROMPT, AGGREGATE_GENERATION_SYSTEM_PROMPT };
@@ -1,9 +0,0 @@
1
- import {
2
- AGGREGATE_DECISION_SYSTEM_PROMPT,
3
- AGGREGATE_GENERATION_SYSTEM_PROMPT
4
- } from "../../chunk-O3MPFL5J.js";
5
- export {
6
- AGGREGATE_DECISION_SYSTEM_PROMPT,
7
- AGGREGATE_GENERATION_SYSTEM_PROMPT
8
- };
9
- //# sourceMappingURL=aggregate.common.js.map
@@ -1,6 +0,0 @@
1
- import { Intent } from '../../types/memory.js';
2
- import { IAgentMemory } from '../../modules/memory/base.memory.js';
3
-
4
- declare function createFulfillPrompt(agentMemory?: IAgentMemory, intent?: Intent): Promise<string>;
5
-
6
- export { createFulfillPrompt };
@@ -1,7 +0,0 @@
1
- import {
2
- createFulfillPrompt
3
- } from "../../chunk-7BH6AYP7.js";
4
- export {
5
- createFulfillPrompt
6
- };
7
- //# sourceMappingURL=fulfill.common.js.map
@@ -1,9 +0,0 @@
1
- import { ModelFetchOptions } from '../../modules/models/base.model.js';
2
- import { ModelModule } from '../../modules/models/model.module.js';
3
- import '../../types/connector.js';
4
- import '../../types/memory.js';
5
- import '../../types/stream.js';
6
-
7
- declare function generateTitle(modelModule: ModelModule, query: string, options?: ModelFetchOptions): Promise<string>;
8
-
9
- export { generateTitle };
@@ -1,8 +0,0 @@
1
- import {
2
- generateTitle
3
- } from "../../chunk-HEYSMA5B.js";
4
- import "../../chunk-GHUEA7V5.js";
5
- export {
6
- generateTitle
7
- };
8
- //# sourceMappingURL=query.common.js.map