@ainetwork/adk 0.3.2 → 0.3.4

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 (382) hide show
  1. package/README.md +62 -29
  2. package/dist/cjs/{chunk-RCOESZIX.cjs → chunk-3COIZ4H5.cjs} +5 -5
  3. package/dist/cjs/chunk-3COIZ4H5.cjs.map +1 -0
  4. package/dist/cjs/chunk-4VIZ52C2.cjs +37 -0
  5. package/dist/cjs/chunk-4VIZ52C2.cjs.map +1 -0
  6. package/dist/cjs/{chunk-X46GJS7X.cjs → chunk-4ZTPNV3C.cjs} +4 -4
  7. package/dist/cjs/chunk-4ZTPNV3C.cjs.map +1 -0
  8. package/dist/cjs/{chunk-A2I7D6JW.cjs → chunk-6HUEBFXL.cjs} +1 -1
  9. package/dist/cjs/{chunk-A2I7D6JW.cjs.map → chunk-6HUEBFXL.cjs.map} +1 -1
  10. package/dist/cjs/{chunk-EA3YMPST.cjs → chunk-6JO4LWIY.cjs} +7 -14
  11. package/dist/cjs/chunk-6JO4LWIY.cjs.map +1 -0
  12. package/dist/cjs/{chunk-NEWJ7PXH.cjs → chunk-7E3A6PCO.cjs} +9 -8
  13. package/dist/cjs/chunk-7E3A6PCO.cjs.map +1 -0
  14. package/dist/cjs/chunk-7XYVRO76.cjs +68 -0
  15. package/dist/cjs/chunk-7XYVRO76.cjs.map +1 -0
  16. package/dist/cjs/chunk-AQGJBXBU.cjs +8 -0
  17. package/dist/cjs/chunk-AQGJBXBU.cjs.map +1 -0
  18. package/dist/cjs/chunk-CHREGFB3.cjs +38 -0
  19. package/dist/cjs/chunk-CHREGFB3.cjs.map +1 -0
  20. package/dist/cjs/chunk-CKZDAQBG.cjs +17 -0
  21. package/dist/cjs/chunk-CKZDAQBG.cjs.map +1 -0
  22. package/dist/cjs/chunk-EQWAVDJY.cjs +47 -0
  23. package/dist/cjs/chunk-EQWAVDJY.cjs.map +1 -0
  24. package/dist/cjs/{chunk-5FZ7QLJD.cjs → chunk-EUNCRF3F.cjs} +4 -4
  25. package/dist/cjs/chunk-EUNCRF3F.cjs.map +1 -0
  26. package/dist/cjs/chunk-FLPLVYXQ.cjs +45 -0
  27. package/dist/cjs/chunk-FLPLVYXQ.cjs.map +1 -0
  28. package/dist/cjs/chunk-GA6NTHXB.cjs +17 -0
  29. package/dist/cjs/chunk-GA6NTHXB.cjs.map +1 -0
  30. package/dist/cjs/{chunk-NNYPZA6W.cjs → chunk-HDF5WQFQ.cjs} +31 -26
  31. package/dist/cjs/chunk-HDF5WQFQ.cjs.map +1 -0
  32. package/dist/cjs/{chunk-YCTPMLZO.cjs → chunk-HVNTK4O7.cjs} +12 -8
  33. package/dist/cjs/chunk-HVNTK4O7.cjs.map +1 -0
  34. package/dist/cjs/chunk-I72VEOEC.cjs +62 -0
  35. package/dist/cjs/chunk-I72VEOEC.cjs.map +1 -0
  36. package/dist/cjs/{chunk-OZPPTVUA.cjs → chunk-IP6P2TQM.cjs} +121 -37
  37. package/dist/cjs/chunk-IP6P2TQM.cjs.map +1 -0
  38. package/dist/cjs/chunk-JQIAM5N4.cjs +18 -0
  39. package/dist/cjs/chunk-JQIAM5N4.cjs.map +1 -0
  40. package/dist/cjs/chunk-LTBTLUJD.cjs +74 -0
  41. package/dist/cjs/chunk-LTBTLUJD.cjs.map +1 -0
  42. package/dist/cjs/chunk-MSPDYSCC.cjs +21 -0
  43. package/dist/cjs/chunk-MSPDYSCC.cjs.map +1 -0
  44. package/dist/cjs/chunk-NFEFQTIX.cjs +104 -0
  45. package/dist/cjs/chunk-NFEFQTIX.cjs.map +1 -0
  46. package/dist/cjs/{chunk-QCYLIOXZ.cjs → chunk-NLONGI2K.cjs} +7 -4
  47. package/dist/cjs/chunk-NLONGI2K.cjs.map +1 -0
  48. package/dist/cjs/chunk-NNVC34HX.cjs +95 -0
  49. package/dist/cjs/chunk-NNVC34HX.cjs.map +1 -0
  50. package/dist/cjs/{chunk-Z6TQ7TFO.cjs → chunk-OERUQFT7.cjs} +1 -1
  51. package/dist/cjs/chunk-OERUQFT7.cjs.map +1 -0
  52. package/dist/cjs/{chunk-TZ6JOGWV.cjs → chunk-PH5CFKLN.cjs} +4 -1
  53. package/dist/cjs/chunk-PH5CFKLN.cjs.map +1 -0
  54. package/dist/cjs/{chunk-FJ2JWXSL.cjs → chunk-QHDIM62U.cjs} +12 -8
  55. package/dist/cjs/chunk-QHDIM62U.cjs.map +1 -0
  56. package/dist/cjs/{chunk-5QSLQX4H.cjs → chunk-TDHM5TWT.cjs} +24 -34
  57. package/dist/cjs/chunk-TDHM5TWT.cjs.map +1 -0
  58. package/dist/cjs/{chunk-W224GBH7.cjs → chunk-UNRN7WF6.cjs} +1 -1
  59. package/dist/cjs/{chunk-W224GBH7.cjs.map → chunk-UNRN7WF6.cjs.map} +1 -1
  60. package/dist/cjs/chunk-VM74R2KP.cjs +170 -0
  61. package/dist/cjs/chunk-VM74R2KP.cjs.map +1 -0
  62. package/dist/cjs/chunk-WQIUHNUX.cjs +45 -0
  63. package/dist/cjs/chunk-WQIUHNUX.cjs.map +1 -0
  64. package/dist/cjs/chunk-ZWJ6IAP2.cjs +89 -0
  65. package/dist/cjs/chunk-ZWJ6IAP2.cjs.map +1 -0
  66. package/dist/cjs/{chunk-4Z4HSVCQ.cjs → chunk-ZZP6LQ5R.cjs} +4 -5
  67. package/dist/cjs/chunk-ZZP6LQ5R.cjs.map +1 -0
  68. package/dist/cjs/config/agent.cjs +9 -0
  69. package/dist/cjs/config/agent.cjs.map +1 -0
  70. package/dist/cjs/config/modules.cjs +19 -0
  71. package/dist/cjs/config/modules.cjs.map +1 -0
  72. package/dist/cjs/config/options.cjs +11 -0
  73. package/dist/cjs/config/options.cjs.map +1 -0
  74. package/dist/cjs/container/controllers.cjs +16 -0
  75. package/dist/cjs/container/controllers.cjs.map +1 -0
  76. package/dist/cjs/container/index.cjs +40 -0
  77. package/dist/cjs/container/index.cjs.map +1 -0
  78. package/dist/cjs/container/services.cjs +25 -0
  79. package/dist/cjs/container/services.cjs.map +1 -0
  80. package/dist/cjs/controllers/api/agent.api.controller.cjs +2 -2
  81. package/dist/cjs/controllers/api/threads.api.controller.cjs +2 -2
  82. package/dist/cjs/controllers/api/workflow.api.controller.cjs +7 -0
  83. package/dist/cjs/controllers/api/workflow.api.controller.cjs.map +1 -0
  84. package/dist/cjs/controllers/index.cjs +7 -8
  85. package/dist/cjs/controllers/index.cjs.map +1 -1
  86. package/dist/cjs/controllers/query.controller.cjs +3 -4
  87. package/dist/cjs/controllers/query.controller.cjs.map +1 -1
  88. package/dist/cjs/index.cjs +74 -50
  89. package/dist/cjs/index.cjs.map +1 -1
  90. package/dist/cjs/middlewares/auth.middleware.cjs +3 -3
  91. package/dist/cjs/modules/a2a/a2a.module.cjs +1 -1
  92. package/dist/cjs/modules/auth/auth.module.cjs +7 -0
  93. package/dist/cjs/modules/auth/auth.module.cjs.map +1 -0
  94. package/dist/cjs/modules/index.cjs +9 -9
  95. package/dist/cjs/modules/index.cjs.map +1 -1
  96. package/dist/cjs/modules/memory/memory.module.cjs +2 -2
  97. package/dist/cjs/routes/a2a.routes.cjs +29 -11
  98. package/dist/cjs/routes/a2a.routes.cjs.map +1 -1
  99. package/dist/cjs/routes/api/agent.routes.cjs +30 -3
  100. package/dist/cjs/routes/api/agent.routes.cjs.map +1 -1
  101. package/dist/cjs/routes/api/intent.routes.cjs +29 -3
  102. package/dist/cjs/routes/api/intent.routes.cjs.map +1 -1
  103. package/dist/cjs/routes/api/model.routes.cjs +29 -2
  104. package/dist/cjs/routes/api/model.routes.cjs.map +1 -1
  105. package/dist/cjs/routes/api/threads.routes.cjs +30 -4
  106. package/dist/cjs/routes/api/threads.routes.cjs.map +1 -1
  107. package/dist/cjs/routes/api/workflow.routes.cjs +35 -0
  108. package/dist/cjs/routes/api/workflow.routes.cjs.map +1 -0
  109. package/dist/cjs/routes/api.routes.cjs +33 -9
  110. package/dist/cjs/routes/api.routes.cjs.map +1 -1
  111. package/dist/cjs/routes/index.cjs +36 -24
  112. package/dist/cjs/routes/index.cjs.map +1 -1
  113. package/dist/cjs/routes/intent.routes.cjs +27 -15
  114. package/dist/cjs/routes/intent.routes.cjs.map +1 -1
  115. package/dist/cjs/routes/query.routes.cjs +27 -12
  116. package/dist/cjs/routes/query.routes.cjs.map +1 -1
  117. package/dist/cjs/services/a2a.service.cjs +2 -2
  118. package/dist/cjs/services/index.cjs +14 -19
  119. package/dist/cjs/services/index.cjs.map +1 -1
  120. package/dist/cjs/services/intents/aggregate.service.cjs +10 -0
  121. package/dist/cjs/services/intents/aggregate.service.cjs.map +1 -0
  122. package/dist/cjs/services/intents/fulfill.service.cjs +6 -3
  123. package/dist/cjs/services/intents/fulfill.service.cjs.map +1 -1
  124. package/dist/cjs/services/intents/multi-trigger.service.cjs +8 -0
  125. package/dist/cjs/services/intents/multi-trigger.service.cjs.map +1 -0
  126. package/dist/cjs/services/intents/single-trigger.service.cjs +8 -0
  127. package/dist/cjs/services/intents/single-trigger.service.cjs.map +1 -0
  128. package/dist/cjs/services/intents/trigger.service.cjs +4 -2
  129. package/dist/cjs/services/intents/trigger.service.cjs.map +1 -1
  130. package/dist/cjs/services/query.service.cjs +4 -8
  131. package/dist/cjs/services/query.service.cjs.map +1 -1
  132. package/dist/cjs/services/thread.service.cjs +2 -2
  133. package/dist/cjs/services/utils/aggregate.common.cjs +9 -0
  134. package/dist/cjs/services/utils/aggregate.common.cjs.map +1 -0
  135. package/dist/cjs/types/agent.cjs +2 -2
  136. package/dist/cjs/types/memory.cjs +2 -2
  137. package/dist/esm/{chunk-275JHD5P.js → chunk-2VGXYWJD.js} +5 -5
  138. package/dist/esm/chunk-2VGXYWJD.js.map +1 -0
  139. package/dist/esm/{chunk-A5PRJ33H.js → chunk-44CTGJX4.js} +116 -32
  140. package/dist/esm/chunk-44CTGJX4.js.map +1 -0
  141. package/dist/esm/{chunk-GRN6CHNO.js → chunk-4BHU7SPZ.js} +1 -1
  142. package/dist/esm/{chunk-GRN6CHNO.js.map → chunk-4BHU7SPZ.js.map} +1 -1
  143. package/dist/esm/{chunk-SPRW6KUR.js → chunk-6YBQCUNB.js} +12 -8
  144. package/dist/esm/chunk-6YBQCUNB.js.map +1 -0
  145. package/dist/esm/chunk-7DH4SI44.js +89 -0
  146. package/dist/esm/chunk-7DH4SI44.js.map +1 -0
  147. package/dist/esm/{chunk-OUIXXZFI.js → chunk-7GV6DSPE.js} +4 -1
  148. package/dist/esm/chunk-7GV6DSPE.js.map +1 -0
  149. package/dist/esm/chunk-7XQPJVYO.js +62 -0
  150. package/dist/esm/chunk-7XQPJVYO.js.map +1 -0
  151. package/dist/esm/{chunk-6AN7Z5OC.js → chunk-AEBBZSQ4.js} +10 -17
  152. package/dist/esm/chunk-AEBBZSQ4.js.map +1 -0
  153. package/dist/esm/chunk-BS52JTBH.js +8 -0
  154. package/dist/esm/chunk-BS52JTBH.js.map +1 -0
  155. package/dist/esm/chunk-BZUWX7HX.js +68 -0
  156. package/dist/esm/chunk-BZUWX7HX.js.map +1 -0
  157. package/dist/esm/{chunk-WUNZG3WP.js → chunk-C5JXXLCW.js} +1 -1
  158. package/dist/esm/chunk-C5JXXLCW.js.map +1 -0
  159. package/dist/esm/chunk-CC6DWPHZ.js +95 -0
  160. package/dist/esm/chunk-CC6DWPHZ.js.map +1 -0
  161. package/dist/esm/chunk-CG35V3ZH.js +21 -0
  162. package/dist/esm/chunk-CG35V3ZH.js.map +1 -0
  163. package/dist/esm/{chunk-JHKBIDPX.js → chunk-D6STNZ2L.js} +30 -25
  164. package/dist/esm/chunk-D6STNZ2L.js.map +1 -0
  165. package/dist/esm/chunk-FCH7BUK4.js +17 -0
  166. package/dist/esm/chunk-FCH7BUK4.js.map +1 -0
  167. package/dist/esm/chunk-I4P7JMJC.js +104 -0
  168. package/dist/esm/chunk-I4P7JMJC.js.map +1 -0
  169. package/dist/esm/chunk-IG3B5AXN.js +74 -0
  170. package/dist/esm/chunk-IG3B5AXN.js.map +1 -0
  171. package/dist/esm/{chunk-JCXAHLRN.js → chunk-JXGQVFCO.js} +20 -30
  172. package/dist/esm/chunk-JXGQVFCO.js.map +1 -0
  173. package/dist/esm/chunk-LMOWEXWF.js +38 -0
  174. package/dist/esm/chunk-LMOWEXWF.js.map +1 -0
  175. package/dist/esm/chunk-O3MPFL5J.js +47 -0
  176. package/dist/esm/chunk-O3MPFL5J.js.map +1 -0
  177. package/dist/esm/chunk-PZQRSWST.js +18 -0
  178. package/dist/esm/chunk-PZQRSWST.js.map +1 -0
  179. package/dist/esm/{chunk-KOCOM7IC.js → chunk-QQZ5ANSD.js} +8 -7
  180. package/dist/esm/chunk-QQZ5ANSD.js.map +1 -0
  181. package/dist/esm/chunk-TQJCYP7X.js +170 -0
  182. package/dist/esm/chunk-TQJCYP7X.js.map +1 -0
  183. package/dist/esm/{chunk-WZQVH4XY.js → chunk-V23GKNNJ.js} +7 -7
  184. package/dist/esm/chunk-V23GKNNJ.js.map +1 -0
  185. package/dist/esm/chunk-VBK4WM2M.js +17 -0
  186. package/dist/esm/chunk-VBK4WM2M.js.map +1 -0
  187. package/dist/esm/{chunk-F3SGL62A.js → chunk-VP5Q63JU.js} +12 -8
  188. package/dist/esm/chunk-VP5Q63JU.js.map +1 -0
  189. package/dist/esm/chunk-VSQVYW2H.js +37 -0
  190. package/dist/esm/chunk-VSQVYW2H.js.map +1 -0
  191. package/dist/esm/{chunk-TUEEIIR3.js → chunk-WKFSYGMH.js} +5 -6
  192. package/dist/esm/chunk-WKFSYGMH.js.map +1 -0
  193. package/dist/esm/{chunk-OTBWAUJF.js → chunk-YDER5JOU.js} +5 -2
  194. package/dist/esm/chunk-YDER5JOU.js.map +1 -0
  195. package/dist/esm/{chunk-4LBR3TIJ.js → chunk-ZJVWC666.js} +6 -6
  196. package/dist/esm/chunk-ZJVWC666.js.map +1 -0
  197. package/dist/esm/{chunk-AMRKK46V.js → chunk-ZK3HZBER.js} +5 -5
  198. package/dist/esm/chunk-ZK3HZBER.js.map +1 -0
  199. package/dist/esm/chunk-ZNZZZ4NN.js +45 -0
  200. package/dist/esm/chunk-ZNZZZ4NN.js.map +1 -0
  201. package/dist/esm/{chunk-RL6SRSSK.js → chunk-ZVYC5Y6Z.js} +1 -1
  202. package/dist/esm/chunk-ZVYC5Y6Z.js.map +1 -0
  203. package/dist/esm/config/agent.d.ts +25 -0
  204. package/dist/esm/config/agent.js +9 -0
  205. package/dist/esm/config/manifest.d.ts +3 -0
  206. package/dist/esm/config/modules.d.ts +34 -0
  207. package/dist/esm/config/modules.js +19 -0
  208. package/dist/esm/config/options.d.ts +14 -0
  209. package/dist/esm/config/options.js +11 -0
  210. package/dist/esm/container/controllers.d.ts +57 -0
  211. package/dist/esm/container/controllers.js +16 -0
  212. package/dist/esm/container/index.d.ts +68 -0
  213. package/dist/esm/container/index.js +40 -0
  214. package/dist/esm/container/index.js.map +1 -0
  215. package/dist/esm/container/services.d.ts +42 -0
  216. package/dist/esm/container/services.js +25 -0
  217. package/dist/esm/container/services.js.map +1 -0
  218. package/dist/esm/controllers/a2a.controller.d.ts +11 -7
  219. package/dist/esm/controllers/api/agent.api.controller.d.ts +3 -17
  220. package/dist/esm/controllers/api/agent.api.controller.js +1 -1
  221. package/dist/esm/controllers/api/threads.api.controller.js +1 -1
  222. package/dist/esm/controllers/api/workflow.api.controller.d.ts +16 -0
  223. package/dist/esm/controllers/api/workflow.api.controller.js +7 -0
  224. package/dist/esm/controllers/api/workflow.api.controller.js.map +1 -0
  225. package/dist/esm/controllers/index.d.ts +9 -11
  226. package/dist/esm/controllers/index.js +7 -8
  227. package/dist/esm/controllers/query.controller.d.ts +13 -11
  228. package/dist/esm/controllers/query.controller.js +2 -3
  229. package/dist/esm/index.d.ts +16 -10
  230. package/dist/esm/index.js +77 -53
  231. package/dist/esm/index.js.map +1 -1
  232. package/dist/esm/middlewares/auth.middleware.d.ts +2 -2
  233. package/dist/esm/middlewares/auth.middleware.js +2 -2
  234. package/dist/esm/middlewares/error.middleware.d.ts +3 -0
  235. package/dist/esm/modules/a2a/a2a.module.js +1 -1
  236. package/dist/esm/modules/auth/{base.auth.d.ts → auth.module.d.ts} +2 -2
  237. package/dist/esm/modules/auth/auth.module.js +7 -0
  238. package/dist/esm/modules/auth/auth.module.js.map +1 -0
  239. package/dist/esm/modules/index.d.ts +2 -2
  240. package/dist/esm/modules/index.js +9 -9
  241. package/dist/esm/modules/memory/base.memory.d.ts +13 -2
  242. package/dist/esm/modules/memory/memory.module.d.ts +2 -1
  243. package/dist/esm/modules/memory/memory.module.js +1 -1
  244. package/dist/esm/routes/a2a.routes.d.ts +1 -22
  245. package/dist/esm/routes/a2a.routes.js +28 -10
  246. package/dist/esm/routes/api/agent.routes.d.ts +1 -20
  247. package/dist/esm/routes/api/agent.routes.js +29 -2
  248. package/dist/esm/routes/api/intent.routes.d.ts +1 -4
  249. package/dist/esm/routes/api/intent.routes.js +28 -2
  250. package/dist/esm/routes/api/model.routes.d.ts +1 -6
  251. package/dist/esm/routes/api/model.routes.js +28 -1
  252. package/dist/esm/routes/api/threads.routes.d.ts +1 -4
  253. package/dist/esm/routes/api/threads.routes.js +29 -3
  254. package/dist/esm/routes/api/workflow.routes.d.ts +5 -0
  255. package/dist/esm/routes/api/workflow.routes.js +35 -0
  256. package/dist/esm/routes/api/workflow.routes.js.map +1 -0
  257. package/dist/esm/routes/api.routes.d.ts +1 -20
  258. package/dist/esm/routes/api.routes.js +32 -8
  259. package/dist/esm/routes/index.d.ts +0 -19
  260. package/dist/esm/routes/index.js +39 -27
  261. package/dist/esm/routes/intent.routes.d.ts +1 -20
  262. package/dist/esm/routes/intent.routes.js +26 -14
  263. package/dist/esm/routes/query.routes.d.ts +1 -20
  264. package/dist/esm/routes/query.routes.js +26 -11
  265. package/dist/esm/services/a2a.service.d.ts +14 -10
  266. package/dist/esm/services/a2a.service.js +1 -1
  267. package/dist/esm/services/index.d.ts +9 -9
  268. package/dist/esm/services/index.js +16 -21
  269. package/dist/esm/services/intents/aggregate.service.d.ts +41 -0
  270. package/dist/esm/services/intents/aggregate.service.js +10 -0
  271. package/dist/esm/services/intents/aggregate.service.js.map +1 -0
  272. package/dist/esm/services/intents/fulfill.service.d.ts +23 -7
  273. package/dist/esm/services/intents/fulfill.service.js +5 -2
  274. package/dist/esm/services/intents/multi-trigger.service.d.ts +27 -0
  275. package/dist/esm/services/intents/multi-trigger.service.js +8 -0
  276. package/dist/esm/services/intents/multi-trigger.service.js.map +1 -0
  277. package/dist/esm/services/intents/single-trigger.service.d.ts +28 -0
  278. package/dist/esm/services/intents/single-trigger.service.js +8 -0
  279. package/dist/esm/services/intents/single-trigger.service.js.map +1 -0
  280. package/dist/esm/services/intents/trigger.service.d.ts +9 -4
  281. package/dist/esm/services/intents/trigger.service.js +3 -1
  282. package/dist/esm/services/query.service.d.ts +21 -15
  283. package/dist/esm/services/query.service.js +3 -7
  284. package/dist/esm/services/thread.service.d.ts +2 -2
  285. package/dist/esm/services/thread.service.js +1 -1
  286. package/dist/esm/services/utils/aggregate.common.d.ts +10 -0
  287. package/dist/esm/services/utils/aggregate.common.js +9 -0
  288. package/dist/esm/services/utils/aggregate.common.js.map +1 -0
  289. package/dist/esm/types/agent.d.ts +9 -1
  290. package/dist/esm/types/agent.js +1 -1
  291. package/dist/esm/types/memory.d.ts +23 -1
  292. package/dist/esm/types/memory.js +1 -1
  293. package/dist/esm/types/stream.d.ts +11 -0
  294. package/package.json +1 -1
  295. package/dist/cjs/chunk-2P3ZBNVN.cjs +0 -45
  296. package/dist/cjs/chunk-2P3ZBNVN.cjs.map +0 -1
  297. package/dist/cjs/chunk-3RS6NVSN.cjs +0 -41
  298. package/dist/cjs/chunk-3RS6NVSN.cjs.map +0 -1
  299. package/dist/cjs/chunk-4Z4HSVCQ.cjs.map +0 -1
  300. package/dist/cjs/chunk-5FZ7QLJD.cjs.map +0 -1
  301. package/dist/cjs/chunk-5QSLQX4H.cjs.map +0 -1
  302. package/dist/cjs/chunk-6T2YGFSD.cjs +0 -28
  303. package/dist/cjs/chunk-6T2YGFSD.cjs.map +0 -1
  304. package/dist/cjs/chunk-7KXB6FOT.cjs +0 -112
  305. package/dist/cjs/chunk-7KXB6FOT.cjs.map +0 -1
  306. package/dist/cjs/chunk-AHNKY3JY.cjs +0 -30
  307. package/dist/cjs/chunk-AHNKY3JY.cjs.map +0 -1
  308. package/dist/cjs/chunk-DGXLVGIM.cjs +0 -36
  309. package/dist/cjs/chunk-DGXLVGIM.cjs.map +0 -1
  310. package/dist/cjs/chunk-E3PD4Q76.cjs +0 -41
  311. package/dist/cjs/chunk-E3PD4Q76.cjs.map +0 -1
  312. package/dist/cjs/chunk-EA3YMPST.cjs.map +0 -1
  313. package/dist/cjs/chunk-FJ2JWXSL.cjs.map +0 -1
  314. package/dist/cjs/chunk-HF2QUMQV.cjs +0 -30
  315. package/dist/cjs/chunk-HF2QUMQV.cjs.map +0 -1
  316. package/dist/cjs/chunk-HF7GKQ6Y.cjs +0 -105
  317. package/dist/cjs/chunk-HF7GKQ6Y.cjs.map +0 -1
  318. package/dist/cjs/chunk-MT722JJC.cjs +0 -1
  319. package/dist/cjs/chunk-MT722JJC.cjs.map +0 -1
  320. package/dist/cjs/chunk-NEWJ7PXH.cjs.map +0 -1
  321. package/dist/cjs/chunk-NNYPZA6W.cjs.map +0 -1
  322. package/dist/cjs/chunk-OZPPTVUA.cjs.map +0 -1
  323. package/dist/cjs/chunk-QCYLIOXZ.cjs.map +0 -1
  324. package/dist/cjs/chunk-RCOESZIX.cjs.map +0 -1
  325. package/dist/cjs/chunk-RVT67VJL.cjs +0 -105
  326. package/dist/cjs/chunk-RVT67VJL.cjs.map +0 -1
  327. package/dist/cjs/chunk-TZ6JOGWV.cjs.map +0 -1
  328. package/dist/cjs/chunk-U47SG7XG.cjs +0 -168
  329. package/dist/cjs/chunk-U47SG7XG.cjs.map +0 -1
  330. package/dist/cjs/chunk-X46GJS7X.cjs.map +0 -1
  331. package/dist/cjs/chunk-XEAJBA3S.cjs +0 -30
  332. package/dist/cjs/chunk-XEAJBA3S.cjs.map +0 -1
  333. package/dist/cjs/chunk-XQTVE64W.cjs +0 -8
  334. package/dist/cjs/chunk-XQTVE64W.cjs.map +0 -1
  335. package/dist/cjs/chunk-YCTPMLZO.cjs.map +0 -1
  336. package/dist/cjs/chunk-YY7HSXBP.cjs +0 -36
  337. package/dist/cjs/chunk-YY7HSXBP.cjs.map +0 -1
  338. package/dist/cjs/chunk-Z6TQ7TFO.cjs.map +0 -1
  339. package/dist/cjs/modules/auth/base.auth.cjs +0 -7
  340. package/dist/cjs/modules/auth/base.auth.cjs.map +0 -1
  341. package/dist/cjs/services/intents/fulfill-stream.service.cjs +0 -12
  342. package/dist/cjs/services/intents/fulfill-stream.service.cjs.map +0 -1
  343. package/dist/cjs/services/query-stream.service.cjs +0 -16
  344. package/dist/cjs/services/query-stream.service.cjs.map +0 -1
  345. package/dist/esm/chunk-275JHD5P.js.map +0 -1
  346. package/dist/esm/chunk-4LBR3TIJ.js.map +0 -1
  347. package/dist/esm/chunk-6AN7Z5OC.js.map +0 -1
  348. package/dist/esm/chunk-A5PRJ33H.js.map +0 -1
  349. package/dist/esm/chunk-AMRKK46V.js.map +0 -1
  350. package/dist/esm/chunk-F3SGL62A.js.map +0 -1
  351. package/dist/esm/chunk-FF5RJ4L2.js +0 -8
  352. package/dist/esm/chunk-FF5RJ4L2.js.map +0 -1
  353. package/dist/esm/chunk-JCXAHLRN.js.map +0 -1
  354. package/dist/esm/chunk-JHKBIDPX.js.map +0 -1
  355. package/dist/esm/chunk-KOCOM7IC.js.map +0 -1
  356. package/dist/esm/chunk-OTBWAUJF.js.map +0 -1
  357. package/dist/esm/chunk-OUIXXZFI.js.map +0 -1
  358. package/dist/esm/chunk-Q7NLA5X4.js +0 -30
  359. package/dist/esm/chunk-Q7NLA5X4.js.map +0 -1
  360. package/dist/esm/chunk-RL6SRSSK.js.map +0 -1
  361. package/dist/esm/chunk-SPRW6KUR.js.map +0 -1
  362. package/dist/esm/chunk-TUEEIIR3.js.map +0 -1
  363. package/dist/esm/chunk-U7REZSMO.js +0 -1
  364. package/dist/esm/chunk-UEUZ7G5P.js +0 -168
  365. package/dist/esm/chunk-UEUZ7G5P.js.map +0 -1
  366. package/dist/esm/chunk-WO2QJ6UM.js +0 -28
  367. package/dist/esm/chunk-WO2QJ6UM.js.map +0 -1
  368. package/dist/esm/chunk-WUNZG3WP.js.map +0 -1
  369. package/dist/esm/chunk-WZQVH4XY.js.map +0 -1
  370. package/dist/esm/chunk-Y7BKUWRJ.js +0 -105
  371. package/dist/esm/chunk-Y7BKUWRJ.js.map +0 -1
  372. package/dist/esm/chunk-YJTWW6QK.js +0 -41
  373. package/dist/esm/chunk-YJTWW6QK.js.map +0 -1
  374. package/dist/esm/modules/auth/base.auth.js +0 -7
  375. package/dist/esm/services/intents/fulfill-stream.service.d.ts +0 -50
  376. package/dist/esm/services/intents/fulfill-stream.service.js +0 -12
  377. package/dist/esm/services/query-stream.service.d.ts +0 -54
  378. package/dist/esm/services/query-stream.service.js +0 -16
  379. /package/dist/esm/{chunk-U7REZSMO.js.map → config/agent.js.map} +0 -0
  380. /package/dist/esm/{modules/auth/base.auth.js.map → config/modules.js.map} +0 -0
  381. /package/dist/esm/{services/intents/fulfill-stream.service.js.map → config/options.js.map} +0 -0
  382. /package/dist/esm/{services/query-stream.service.js.map → container/controllers.js.map} +0 -0
@@ -0,0 +1,104 @@
1
+ import {
2
+ IntentApiController
3
+ } from "./chunk-DFXHJUGV.js";
4
+ import {
5
+ WorkflowApiController
6
+ } from "./chunk-BZUWX7HX.js";
7
+ import {
8
+ AgentApiController
9
+ } from "./chunk-WKFSYGMH.js";
10
+ import {
11
+ ModelApiController
12
+ } from "./chunk-UA44VKFE.js";
13
+ import {
14
+ ThreadApiController
15
+ } from "./chunk-ZVYC5Y6Z.js";
16
+ import {
17
+ IntentController
18
+ } from "./chunk-YUKPKFX5.js";
19
+ import {
20
+ QueryController
21
+ } from "./chunk-D6STNZ2L.js";
22
+ import {
23
+ getA2AModule,
24
+ getMemoryModule,
25
+ getModelModule
26
+ } from "./chunk-VSQVYW2H.js";
27
+
28
+ // src/container/controllers.ts
29
+ var ControllerContainer = class {
30
+ services;
31
+ _queryController;
32
+ _intentController;
33
+ _modelApiController;
34
+ _agentApiController;
35
+ _threadApiController;
36
+ _intentApiController;
37
+ _workflowApiController;
38
+ constructor(services) {
39
+ this.services = services;
40
+ }
41
+ getQueryController() {
42
+ if (!this._queryController) {
43
+ this._queryController = new QueryController(
44
+ this.services.getQueryService()
45
+ );
46
+ }
47
+ return this._queryController;
48
+ }
49
+ getIntentController() {
50
+ if (!this._intentController) {
51
+ this._intentController = new IntentController(
52
+ this.services.getThreadService(),
53
+ this.services.getIntentTriggerService()
54
+ );
55
+ }
56
+ return this._intentController;
57
+ }
58
+ getModelApiController() {
59
+ if (!this._modelApiController) {
60
+ this._modelApiController = new ModelApiController(getModelModule());
61
+ }
62
+ return this._modelApiController;
63
+ }
64
+ getAgentApiController() {
65
+ if (!this._agentApiController) {
66
+ this._agentApiController = new AgentApiController(getA2AModule());
67
+ }
68
+ return this._agentApiController;
69
+ }
70
+ getThreadApiController() {
71
+ if (!this._threadApiController) {
72
+ this._threadApiController = new ThreadApiController(getMemoryModule());
73
+ }
74
+ return this._threadApiController;
75
+ }
76
+ getIntentApiController() {
77
+ if (!this._intentApiController) {
78
+ this._intentApiController = new IntentApiController(getMemoryModule());
79
+ }
80
+ return this._intentApiController;
81
+ }
82
+ getWorkflowApiController() {
83
+ if (!this._workflowApiController) {
84
+ this._workflowApiController = new WorkflowApiController(
85
+ getMemoryModule()
86
+ );
87
+ }
88
+ return this._workflowApiController;
89
+ }
90
+ reset() {
91
+ this._queryController = void 0;
92
+ this._intentController = void 0;
93
+ this._modelApiController = void 0;
94
+ this._agentApiController = void 0;
95
+ this._threadApiController = void 0;
96
+ this._intentApiController = void 0;
97
+ this._workflowApiController = void 0;
98
+ }
99
+ };
100
+
101
+ export {
102
+ ControllerContainer
103
+ };
104
+ //# sourceMappingURL=chunk-I4P7JMJC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/controllers.ts"],"sourcesContent":["import {\n\tgetA2AModule,\n\tgetMemoryModule,\n\tgetModelModule,\n} from \"@/config/modules\";\nimport { AgentApiController } from \"@/controllers/api/agent.api.controller\";\nimport { IntentApiController } from \"@/controllers/api/intent.api.controller\";\nimport { ModelApiController } from \"@/controllers/api/model.api.controller\";\nimport { ThreadApiController } from \"@/controllers/api/threads.api.controller\";\nimport { WorkflowApiController } from \"@/controllers/api/workflow.api.controller\";\nimport { IntentController } from \"@/controllers/intent.controller\";\nimport { QueryController } from \"@/controllers/query.controller\";\nimport type { ServiceContainer } from \"./services\";\n\n/**\n * Controller factory for dependency injection.\n * Manages singleton instances of all controllers.\n */\nexport class ControllerContainer {\n\tprivate services: ServiceContainer;\n\n\tprivate _queryController?: QueryController;\n\tprivate _intentController?: IntentController;\n\tprivate _modelApiController?: ModelApiController;\n\tprivate _agentApiController?: AgentApiController;\n\tprivate _threadApiController?: ThreadApiController;\n\tprivate _intentApiController?: IntentApiController;\n\tprivate _workflowApiController?: WorkflowApiController;\n\n\tconstructor(services: ServiceContainer) {\n\t\tthis.services = services;\n\t}\n\n\tgetQueryController(): QueryController {\n\t\tif (!this._queryController) {\n\t\t\tthis._queryController = new QueryController(\n\t\t\t\tthis.services.getQueryService(),\n\t\t\t);\n\t\t}\n\t\treturn this._queryController;\n\t}\n\n\tgetIntentController(): IntentController {\n\t\tif (!this._intentController) {\n\t\t\tthis._intentController = new IntentController(\n\t\t\t\tthis.services.getThreadService(),\n\t\t\t\tthis.services.getIntentTriggerService(),\n\t\t\t);\n\t\t}\n\t\treturn this._intentController;\n\t}\n\n\tgetModelApiController(): ModelApiController {\n\t\tif (!this._modelApiController) {\n\t\t\tthis._modelApiController = new ModelApiController(getModelModule());\n\t\t}\n\t\treturn this._modelApiController;\n\t}\n\n\tgetAgentApiController(): AgentApiController {\n\t\tif (!this._agentApiController) {\n\t\t\tthis._agentApiController = new AgentApiController(getA2AModule());\n\t\t}\n\t\treturn this._agentApiController;\n\t}\n\n\tgetThreadApiController(): ThreadApiController {\n\t\tif (!this._threadApiController) {\n\t\t\tthis._threadApiController = new ThreadApiController(getMemoryModule());\n\t\t}\n\t\treturn this._threadApiController;\n\t}\n\n\tgetIntentApiController(): IntentApiController {\n\t\tif (!this._intentApiController) {\n\t\t\tthis._intentApiController = new IntentApiController(getMemoryModule());\n\t\t}\n\t\treturn this._intentApiController;\n\t}\n\n\tgetWorkflowApiController(): WorkflowApiController {\n\t\tif (!this._workflowApiController) {\n\t\t\tthis._workflowApiController = new WorkflowApiController(\n\t\t\t\tgetMemoryModule(),\n\t\t\t);\n\t\t}\n\t\treturn this._workflowApiController;\n\t}\n\n\treset(): void {\n\t\tthis._queryController = undefined;\n\t\tthis._intentController = undefined;\n\t\tthis._modelApiController = undefined;\n\t\tthis._agentApiController = undefined;\n\t\tthis._threadApiController = undefined;\n\t\tthis._intentApiController = undefined;\n\t\tthis._workflowApiController = undefined;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,IAAM,sBAAN,MAA0B;AAAA,EACxB;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,UAA4B;AACvC,SAAK,WAAW;AAAA,EACjB;AAAA,EAEA,qBAAsC;AACrC,QAAI,CAAC,KAAK,kBAAkB;AAC3B,WAAK,mBAAmB,IAAI;AAAA,QAC3B,KAAK,SAAS,gBAAgB;AAAA,MAC/B;AAAA,IACD;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,sBAAwC;AACvC,QAAI,CAAC,KAAK,mBAAmB;AAC5B,WAAK,oBAAoB,IAAI;AAAA,QAC5B,KAAK,SAAS,iBAAiB;AAAA,QAC/B,KAAK,SAAS,wBAAwB;AAAA,MACvC;AAAA,IACD;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,wBAA4C;AAC3C,QAAI,CAAC,KAAK,qBAAqB;AAC9B,WAAK,sBAAsB,IAAI,mBAAmB,eAAe,CAAC;AAAA,IACnE;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,wBAA4C;AAC3C,QAAI,CAAC,KAAK,qBAAqB;AAC9B,WAAK,sBAAsB,IAAI,mBAAmB,aAAa,CAAC;AAAA,IACjE;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,yBAA8C;AAC7C,QAAI,CAAC,KAAK,sBAAsB;AAC/B,WAAK,uBAAuB,IAAI,oBAAoB,gBAAgB,CAAC;AAAA,IACtE;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,yBAA8C;AAC7C,QAAI,CAAC,KAAK,sBAAsB;AAC/B,WAAK,uBAAuB,IAAI,oBAAoB,gBAAgB,CAAC;AAAA,IACtE;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,2BAAkD;AACjD,QAAI,CAAC,KAAK,wBAAwB;AACjC,WAAK,yBAAyB,IAAI;AAAA,QACjC,gBAAgB;AAAA,MACjB;AAAA,IACD;AACA,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,QAAc;AACb,SAAK,mBAAmB;AACxB,SAAK,oBAAoB;AACzB,SAAK,sBAAsB;AAC3B,SAAK,sBAAsB;AAC3B,SAAK,uBAAuB;AAC5B,SAAK,uBAAuB;AAC5B,SAAK,yBAAyB;AAAA,EAC/B;AACD;","names":[]}
@@ -0,0 +1,74 @@
1
+ import {
2
+ ControllerContainer
3
+ } from "./chunk-I4P7JMJC.js";
4
+ import {
5
+ ServiceContainer
6
+ } from "./chunk-7DH4SI44.js";
7
+
8
+ // src/container/index.ts
9
+ var Container = class {
10
+ _services;
11
+ _controllers;
12
+ constructor() {
13
+ this._services = new ServiceContainer();
14
+ this._controllers = new ControllerContainer(this._services);
15
+ }
16
+ // Services
17
+ get services() {
18
+ return this._services;
19
+ }
20
+ // Controllers
21
+ get controllers() {
22
+ return this._controllers;
23
+ }
24
+ // Convenience methods for direct access
25
+ getThreadService() {
26
+ return this._services.getThreadService();
27
+ }
28
+ getIntentTriggerService() {
29
+ return this._services.getIntentTriggerService();
30
+ }
31
+ getIntentFulfillService() {
32
+ return this._services.getIntentFulfillService();
33
+ }
34
+ getQueryService() {
35
+ return this._services.getQueryService();
36
+ }
37
+ getA2AService() {
38
+ return this._services.getA2AService();
39
+ }
40
+ getQueryController() {
41
+ return this._controllers.getQueryController();
42
+ }
43
+ getIntentController() {
44
+ return this._controllers.getIntentController();
45
+ }
46
+ getModelApiController() {
47
+ return this._controllers.getModelApiController();
48
+ }
49
+ getAgentApiController() {
50
+ return this._controllers.getAgentApiController();
51
+ }
52
+ getThreadApiController() {
53
+ return this._controllers.getThreadApiController();
54
+ }
55
+ getIntentApiController() {
56
+ return this._controllers.getIntentApiController();
57
+ }
58
+ getWorkflowApiController() {
59
+ return this._controllers.getWorkflowApiController();
60
+ }
61
+ /**
62
+ * Reset all instances (useful for testing)
63
+ */
64
+ reset() {
65
+ this._services.reset();
66
+ this._controllers.reset();
67
+ }
68
+ };
69
+ var container = new Container();
70
+
71
+ export {
72
+ container
73
+ };
74
+ //# sourceMappingURL=chunk-IG3B5AXN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/index.ts"],"sourcesContent":["import { ControllerContainer } from \"./controllers\";\nimport { ServiceContainer } from \"./services\";\n\n/**\n * Dependency Injection Container\n *\n * Provides singleton instances of services and controllers with proper dependency injection.\n * Benefits:\n * - Services maintain DI pattern (testable with mocks)\n * - Routes use clean, simple API\n * - Dependencies are explicit and traceable\n */\nclass Container {\n\tprivate _services: ServiceContainer;\n\tprivate _controllers: ControllerContainer;\n\n\tconstructor() {\n\t\tthis._services = new ServiceContainer();\n\t\tthis._controllers = new ControllerContainer(this._services);\n\t}\n\n\t// Services\n\tget services(): ServiceContainer {\n\t\treturn this._services;\n\t}\n\n\t// Controllers\n\tget controllers(): ControllerContainer {\n\t\treturn this._controllers;\n\t}\n\n\t// Convenience methods for direct access\n\tgetThreadService() {\n\t\treturn this._services.getThreadService();\n\t}\n\tgetIntentTriggerService() {\n\t\treturn this._services.getIntentTriggerService();\n\t}\n\tgetIntentFulfillService() {\n\t\treturn this._services.getIntentFulfillService();\n\t}\n\tgetQueryService() {\n\t\treturn this._services.getQueryService();\n\t}\n\tgetA2AService() {\n\t\treturn this._services.getA2AService();\n\t}\n\n\tgetQueryController() {\n\t\treturn this._controllers.getQueryController();\n\t}\n\tgetIntentController() {\n\t\treturn this._controllers.getIntentController();\n\t}\n\tgetModelApiController() {\n\t\treturn this._controllers.getModelApiController();\n\t}\n\tgetAgentApiController() {\n\t\treturn this._controllers.getAgentApiController();\n\t}\n\tgetThreadApiController() {\n\t\treturn this._controllers.getThreadApiController();\n\t}\n\tgetIntentApiController() {\n\t\treturn this._controllers.getIntentApiController();\n\t}\n\tgetWorkflowApiController() {\n\t\treturn this._controllers.getWorkflowApiController();\n\t}\n\n\t/**\n\t * Reset all instances (useful for testing)\n\t */\n\treset(): void {\n\t\tthis._services.reset();\n\t\tthis._controllers.reset();\n\t}\n}\n\n// Export singleton instance\nexport const container = new Container();\n\n// Export types for testing\nexport { ControllerContainer } from \"./controllers\";\nexport { ServiceContainer } from \"./services\";\n"],"mappings":";;;;;;;;AAYA,IAAM,YAAN,MAAgB;AAAA,EACP;AAAA,EACA;AAAA,EAER,cAAc;AACb,SAAK,YAAY,IAAI,iBAAiB;AACtC,SAAK,eAAe,IAAI,oBAAoB,KAAK,SAAS;AAAA,EAC3D;AAAA;AAAA,EAGA,IAAI,WAA6B;AAChC,WAAO,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,IAAI,cAAmC;AACtC,WAAO,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,mBAAmB;AAClB,WAAO,KAAK,UAAU,iBAAiB;AAAA,EACxC;AAAA,EACA,0BAA0B;AACzB,WAAO,KAAK,UAAU,wBAAwB;AAAA,EAC/C;AAAA,EACA,0BAA0B;AACzB,WAAO,KAAK,UAAU,wBAAwB;AAAA,EAC/C;AAAA,EACA,kBAAkB;AACjB,WAAO,KAAK,UAAU,gBAAgB;AAAA,EACvC;AAAA,EACA,gBAAgB;AACf,WAAO,KAAK,UAAU,cAAc;AAAA,EACrC;AAAA,EAEA,qBAAqB;AACpB,WAAO,KAAK,aAAa,mBAAmB;AAAA,EAC7C;AAAA,EACA,sBAAsB;AACrB,WAAO,KAAK,aAAa,oBAAoB;AAAA,EAC9C;AAAA,EACA,wBAAwB;AACvB,WAAO,KAAK,aAAa,sBAAsB;AAAA,EAChD;AAAA,EACA,wBAAwB;AACvB,WAAO,KAAK,aAAa,sBAAsB;AAAA,EAChD;AAAA,EACA,yBAAyB;AACxB,WAAO,KAAK,aAAa,uBAAuB;AAAA,EACjD;AAAA,EACA,yBAAyB;AACxB,WAAO,KAAK,aAAa,uBAAuB;AAAA,EACjD;AAAA,EACA,2BAA2B;AAC1B,WAAO,KAAK,aAAa,yBAAyB;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACb,SAAK,UAAU,MAAM;AACrB,SAAK,aAAa,MAAM;AAAA,EACzB;AACD;AAGO,IAAM,YAAY,IAAI,UAAU;","names":[]}
@@ -1,43 +1,29 @@
1
- import {
2
- IntentFulfillStreamService
3
- } from "./chunk-A5PRJ33H.js";
4
1
  import {
5
2
  generateTitle
6
3
  } from "./chunk-5IIF5O4A.js";
7
- import {
8
- IntentTriggerService
9
- } from "./chunk-KOCOM7IC.js";
10
4
  import {
11
5
  AinHttpError
12
- } from "./chunk-WUNZG3WP.js";
6
+ } from "./chunk-C5JXXLCW.js";
13
7
  import {
14
8
  loggers
15
9
  } from "./chunk-VUMI4XOY.js";
16
10
 
17
- // src/services/query-stream.service.ts
11
+ // src/services/query.service.ts
18
12
  import { randomUUID } from "crypto";
19
13
  import { StatusCodes } from "http-status-codes";
20
- var QueryStreamService = class {
14
+ var QueryService = class {
21
15
  modelModule;
22
16
  memoryModule;
23
17
  intentTriggerService;
24
- intentFulfillStreamService;
25
- constructor(modelModule, a2aModule, mcpModule, memoryModule) {
18
+ intentFulfillService;
19
+ constructor(modelModule, memoryModule, intentTriggerService, intentFulfillService) {
26
20
  this.modelModule = modelModule;
27
21
  this.memoryModule = memoryModule;
28
- this.intentTriggerService = new IntentTriggerService(
29
- modelModule,
30
- memoryModule
31
- );
32
- this.intentFulfillStreamService = new IntentFulfillStreamService(
33
- modelModule,
34
- a2aModule,
35
- mcpModule,
36
- memoryModule
37
- );
22
+ this.intentTriggerService = intentTriggerService;
23
+ this.intentFulfillService = intentFulfillService;
38
24
  }
39
25
  async addToThreadMessages(userId, threadId, messages) {
40
- const threadMemory = this.memoryModule?.getThreadMemory();
26
+ const threadMemory = this.memoryModule.getThreadMemory();
41
27
  await threadMemory?.addMessagesToThread(userId, threadId, messages);
42
28
  }
43
29
  /**
@@ -56,9 +42,10 @@ var QueryStreamService = class {
56
42
  * @param query - The user's input query
57
43
  * @returns AsyncGenerator yielding StreamEvent objects for SSE
58
44
  */
59
- async *handleQueryStream(threadMetadata, query, isA2A) {
45
+ async *handleQuery(threadMetadata, queryData, isA2A) {
60
46
  const { type, userId, options } = threadMetadata;
61
- const threadMemory = this.memoryModule?.getThreadMemory();
47
+ const { query, displayQuery } = queryData;
48
+ const threadMemory = this.memoryModule.getThreadMemory();
62
49
  let threadId = threadMetadata.threadId;
63
50
  let thread;
64
51
  if (threadId) {
@@ -87,18 +74,21 @@ var QueryStreamService = class {
87
74
  messageId: randomUUID(),
88
75
  role: "USER" /* USER */,
89
76
  timestamp: Date.now(),
90
- content: { type: "text", parts: [query] },
77
+ // use displayQuery for better UX in enterprise application
78
+ content: { type: "text", parts: [displayQuery || query] },
91
79
  metadata: {
92
80
  intents: triggeredIntent.filter((intent) => !!intent.intent).map((intent) => ({
93
81
  id: intent.intent?.id,
94
82
  subquery: intent.subquery
95
- }))
83
+ })),
84
+ query: !displayQuery ? void 0 : query
96
85
  }
97
86
  }
98
87
  ]);
99
- const stream = this.intentFulfillStreamService.intentFulfillStream(
88
+ const stream = this.intentFulfillService.intentFulfill(
100
89
  triggeredIntent,
101
- thread
90
+ thread,
91
+ query
102
92
  );
103
93
  for await (const event of stream) {
104
94
  yield event;
@@ -107,6 +97,6 @@ var QueryStreamService = class {
107
97
  };
108
98
 
109
99
  export {
110
- QueryStreamService
100
+ QueryService
111
101
  };
112
- //# sourceMappingURL=chunk-JCXAHLRN.js.map
102
+ //# sourceMappingURL=chunk-JXGQVFCO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/query.service.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { StatusCodes } from \"http-status-codes\";\nimport type {\n\tMemoryModule,\n\tModelFetchOptions,\n\tModelModule,\n} from \"@/modules/index.js\";\nimport { AinHttpError } from \"@/types/agent.js\";\nimport {\n\ttype MessageObject,\n\tMessageRole,\n\ttype ThreadMetadata,\n\ttype ThreadObject,\n\ttype ThreadType,\n\ttype TriggeredIntent,\n} from \"@/types/memory.js\";\nimport type { StreamEvent } from \"@/types/stream\";\nimport { loggers } from \"@/utils/logger.js\";\nimport type { IntentFulfillService } from \"./intents/fulfill.service\";\nimport type { IntentTriggerService } from \"./intents/trigger.service\";\nimport { generateTitle } from \"./utils/query.common\";\n\n/**\n * Service for processing user queries through the agent's AI pipeline.\n *\n * Orchestrates the query processing workflow including intent detection,\n * model inference, tool execution, and response generation. Manages\n * conversation context and coordinates between different modules.\n */\nexport class QueryService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule: MemoryModule;\n\tprivate intentTriggerService: IntentTriggerService;\n\tprivate intentFulfillService: IntentFulfillService;\n\n\tconstructor(\n\t\tmodelModule: ModelModule,\n\t\tmemoryModule: MemoryModule,\n\t\tintentTriggerService: IntentTriggerService,\n\t\tintentFulfillService: IntentFulfillService,\n\t) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t\tthis.intentTriggerService = intentTriggerService;\n\t\tthis.intentFulfillService = intentFulfillService;\n\t}\n\n\tpublic async addToThreadMessages(\n\t\tuserId: string,\n\t\tthreadId: string,\n\t\tmessages: Array<MessageObject>,\n\t) {\n\t\tconst threadMemory = this.memoryModule.getThreadMemory();\n\t\tawait threadMemory?.addMessagesToThread(userId, threadId, messages);\n\t}\n\n\t/**\n\t * Main entry point for processing streaming user queries.\n\t *\n\t * Handles the complete query lifecycle:\n\t * 1. Loads or creates thread from memory\n\t * 2. Detects intent from the query\n\t * 3. Fulfills the intent with streaming AI response\n\t * 4. Updates conversation history in real-time\n\t *\n\t * @param threadMetadata - Metadata containing type, userId, and optional threadId\n\t * @param threadMetadata.type - The type of thread (e.g., chat, workflow)\n\t * @param threadMetadata.userId - The user's unique identifier\n\t * @param threadMetadata.threadId - Optional thread identifier\n\t * @param query - The user's input query\n\t * @returns AsyncGenerator yielding StreamEvent objects for SSE\n\t */\n\tpublic async *handleQuery(\n\t\tthreadMetadata: {\n\t\t\ttype: ThreadType;\n\t\t\tuserId: string;\n\t\t\tthreadId?: string;\n\t\t\toptions?: ModelFetchOptions;\n\t\t},\n\t\tqueryData: {\n\t\t\tquery: string;\n\t\t\tdisplayQuery?: string;\n\t\t},\n\t\tisA2A?: boolean,\n\t): AsyncGenerator<StreamEvent> {\n\t\tconst { type, userId, options } = threadMetadata;\n\t\tconst { query, displayQuery } = queryData;\n\t\tconst threadMemory = this.memoryModule.getThreadMemory();\n\n\t\t// 1. Load or create thread\n\t\tlet threadId = threadMetadata.threadId;\n\t\tlet thread: ThreadObject | undefined;\n\t\tif (threadId) {\n\t\t\tthread = await threadMemory?.getThread(userId, threadId);\n\t\t\tif (!thread && !isA2A) {\n\t\t\t\tthrow new AinHttpError(StatusCodes.NOT_FOUND, \"Thread not found\");\n\t\t\t}\n\t\t}\n\n\t\tthreadId ??= randomUUID();\n\t\tif (!thread) {\n\t\t\tconst title = await generateTitle(this.modelModule, query, options);\n\t\t\tconst metadata: ThreadMetadata = (await threadMemory?.createThread(\n\t\t\t\ttype,\n\t\t\t\tuserId,\n\t\t\t\tthreadId,\n\t\t\t\ttitle,\n\t\t\t)) || { type, userId, threadId, title };\n\t\t\tthread = { ...metadata, messages: [] };\n\t\t\tloggers.intent.info(`Create new thread: ${threadId}`);\n\t\t\tyield { event: \"thread_id\", data: { type, userId, threadId, title } };\n\t\t}\n\n\t\t// 2. intent triggering\n\t\tconst triggeredIntent: Array<TriggeredIntent> =\n\t\t\tawait this.intentTriggerService.intentTriggering(query, thread);\n\t\tloggers.intent.debug(\"Triggered intents\", { triggeredIntent });\n\n\t\t// only add for storage, not for inference\n\t\tawait this.addToThreadMessages(userId, threadId, [\n\t\t\t{\n\t\t\t\tmessageId: randomUUID(),\n\t\t\t\trole: MessageRole.USER,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t// use displayQuery for better UX in enterprise application\n\t\t\t\tcontent: { type: \"text\", parts: [displayQuery || query] },\n\t\t\t\tmetadata: {\n\t\t\t\t\tintents: triggeredIntent\n\t\t\t\t\t\t.filter((intent) => !!intent.intent)\n\t\t\t\t\t\t.map((intent) => ({\n\t\t\t\t\t\t\tid: intent.intent?.id,\n\t\t\t\t\t\t\tsubquery: intent.subquery,\n\t\t\t\t\t\t})),\n\t\t\t\t\tquery: !displayQuery ? undefined : query,\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\t// 3. intent fulfillment (with rewrite step)\n\t\tconst stream = this.intentFulfillService.intentFulfill(\n\t\t\ttriggeredIntent,\n\t\t\tthread,\n\t\t\tquery,\n\t\t);\n\n\t\tfor await (const event of stream) {\n\t\t\tyield event;\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AA4BrB,IAAM,eAAN,MAAmB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YACC,aACA,cACA,sBACA,sBACC;AACD,SAAK,cAAc;AACnB,SAAK,eAAe;AACpB,SAAK,uBAAuB;AAC5B,SAAK,uBAAuB;AAAA,EAC7B;AAAA,EAEA,MAAa,oBACZ,QACA,UACA,UACC;AACD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,UAAM,cAAc,oBAAoB,QAAQ,UAAU,QAAQ;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAc,YACb,gBAMA,WAIA,OAC8B;AAC9B,UAAM,EAAE,MAAM,QAAQ,QAAQ,IAAI;AAClC,UAAM,EAAE,OAAO,aAAa,IAAI;AAChC,UAAM,eAAe,KAAK,aAAa,gBAAgB;AAGvD,QAAI,WAAW,eAAe;AAC9B,QAAI;AACJ,QAAI,UAAU;AACb,eAAS,MAAM,cAAc,UAAU,QAAQ,QAAQ;AACvD,UAAI,CAAC,UAAU,CAAC,OAAO;AACtB,cAAM,IAAI,aAAa,YAAY,WAAW,kBAAkB;AAAA,MACjE;AAAA,IACD;AAEA,iBAAa,WAAW;AACxB,QAAI,CAAC,QAAQ;AACZ,YAAM,QAAQ,MAAM,cAAc,KAAK,aAAa,OAAO,OAAO;AAClE,YAAM,WAA4B,MAAM,cAAc;AAAA,QACrD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,KAAM,EAAE,MAAM,QAAQ,UAAU,MAAM;AACtC,eAAS,EAAE,GAAG,UAAU,UAAU,CAAC,EAAE;AACrC,cAAQ,OAAO,KAAK,sBAAsB,QAAQ,EAAE;AACpD,YAAM,EAAE,OAAO,aAAa,MAAM,EAAE,MAAM,QAAQ,UAAU,MAAM,EAAE;AAAA,IACrE;AAGA,UAAM,kBACL,MAAM,KAAK,qBAAqB,iBAAiB,OAAO,MAAM;AAC/D,YAAQ,OAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAAC;AAG7D,UAAM,KAAK,oBAAoB,QAAQ,UAAU;AAAA,MAChD;AAAA,QACC,WAAW,WAAW;AAAA,QACtB;AAAA,QACA,WAAW,KAAK,IAAI;AAAA;AAAA,QAEpB,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,gBAAgB,KAAK,EAAE;AAAA,QACxD,UAAU;AAAA,UACT,SAAS,gBACP,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,MAAM,EAClC,IAAI,CAAC,YAAY;AAAA,YACjB,IAAI,OAAO,QAAQ;AAAA,YACnB,UAAU,OAAO;AAAA,UAClB,EAAE;AAAA,UACH,OAAO,CAAC,eAAe,SAAY;AAAA,QACpC;AAAA,MACD;AAAA,IACD,CAAC;AAGD,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,qBAAiB,SAAS,QAAQ;AACjC,YAAM;AAAA,IACP;AAAA,EACD;AACD;","names":[]}
@@ -0,0 +1,38 @@
1
+ import {
2
+ createModelApiRouter
3
+ } from "./chunk-ZK3HZBER.js";
4
+ import {
5
+ createThreadApiRouter
6
+ } from "./chunk-6YBQCUNB.js";
7
+ import {
8
+ createWorkflowApiRouter
9
+ } from "./chunk-7XQPJVYO.js";
10
+ import {
11
+ createAgentApiRouter
12
+ } from "./chunk-2VGXYWJD.js";
13
+ import {
14
+ createIntentApiRouter
15
+ } from "./chunk-VP5Q63JU.js";
16
+ import {
17
+ getMemoryModule
18
+ } from "./chunk-VSQVYW2H.js";
19
+
20
+ // src/routes/api.routes.ts
21
+ import { Router } from "express";
22
+ var createApiRouter = () => {
23
+ const router = Router();
24
+ router.use("/model", createModelApiRouter());
25
+ router.use("/agent", createAgentApiRouter());
26
+ const memoryModule = getMemoryModule();
27
+ if (memoryModule) {
28
+ router.use("/threads", createThreadApiRouter());
29
+ router.use("/intent", createIntentApiRouter());
30
+ router.use("/workflow", createWorkflowApiRouter());
31
+ }
32
+ return router;
33
+ };
34
+
35
+ export {
36
+ createApiRouter
37
+ };
38
+ //# sourceMappingURL=chunk-LMOWEXWF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/routes/api.routes.ts"],"sourcesContent":["import { Router } from \"express\";\nimport { getMemoryModule } from \"@/config/modules\";\nimport { createAgentApiRouter } from \"./api/agent.routes.js\";\nimport { createIntentApiRouter } from \"./api/intent.routes.js\";\nimport { createModelApiRouter } from \"./api/model.routes.js\";\nimport { createThreadApiRouter } from \"./api/threads.routes.js\";\nimport { createWorkflowApiRouter } from \"./api/workflow.routes.js\";\n\nexport const createApiRouter = (): Router => {\n\tconst router = Router();\n\n\trouter.use(\"/model\", createModelApiRouter());\n\trouter.use(\"/agent\", createAgentApiRouter());\n\n\tconst memoryModule = getMemoryModule();\n\tif (memoryModule) {\n\t\trouter.use(\"/threads\", createThreadApiRouter());\n\t\trouter.use(\"/intent\", createIntentApiRouter());\n\t\trouter.use(\"/workflow\", createWorkflowApiRouter());\n\t}\n\n\treturn router;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,cAAc;AAQhB,IAAM,kBAAkB,MAAc;AAC5C,QAAM,SAAS,OAAO;AAEtB,SAAO,IAAI,UAAU,qBAAqB,CAAC;AAC3C,SAAO,IAAI,UAAU,qBAAqB,CAAC;AAE3C,QAAM,eAAe,gBAAgB;AACrC,MAAI,cAAc;AACjB,WAAO,IAAI,YAAY,sBAAsB,CAAC;AAC9C,WAAO,IAAI,WAAW,sBAAsB,CAAC;AAC7C,WAAO,IAAI,aAAa,wBAAwB,CAAC;AAAA,EAClD;AAEA,SAAO;AACR;","names":[]}
@@ -0,0 +1,47 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,18 @@
1
+ import {
2
+ container
3
+ } from "./chunk-IG3B5AXN.js";
4
+
5
+ // src/routes/query.routes.ts
6
+ import { Router } from "express";
7
+ var createQueryRouter = () => {
8
+ const router = Router();
9
+ const queryController = container.getQueryController();
10
+ router.post("/", queryController.handleQueryRequest);
11
+ router.post("/stream", queryController.handleQueryStreamRequest);
12
+ return router;
13
+ };
14
+
15
+ export {
16
+ createQueryRouter
17
+ };
18
+ //# sourceMappingURL=chunk-PZQRSWST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/routes/query.routes.ts"],"sourcesContent":["import { Router } from \"express\";\nimport { container } from \"@/container\";\n\nexport const createQueryRouter = (): Router => {\n\tconst router = Router();\n\n\tconst queryController = container.getQueryController();\n\n\trouter.post(\"/\", queryController.handleQueryRequest);\n\trouter.post(\"/stream\", queryController.handleQueryStreamRequest);\n\n\treturn router;\n};\n"],"mappings":";;;;;AAAA,SAAS,cAAc;AAGhB,IAAM,oBAAoB,MAAc;AAC9C,QAAM,SAAS,OAAO;AAEtB,QAAM,kBAAkB,UAAU,mBAAmB;AAErD,SAAO,KAAK,KAAK,gBAAgB,kBAAkB;AACnD,SAAO,KAAK,WAAW,gBAAgB,wBAAwB;AAE/D,SAAO;AACR;","names":[]}
@@ -2,8 +2,8 @@ import {
2
2
  loggers
3
3
  } from "./chunk-VUMI4XOY.js";
4
4
 
5
- // src/services/intents/trigger.service.ts
6
- var IntentTriggerService = class {
5
+ // src/services/intents/multi-trigger.service.ts
6
+ var MultiIntentTriggerService = class {
7
7
  modelModule;
8
8
  memoryModule;
9
9
  constructor(modelModule, memoryModule) {
@@ -11,16 +11,16 @@ var IntentTriggerService = class {
11
11
  this.memoryModule = memoryModule;
12
12
  }
13
13
  /**
14
- * Detects the intent from context.
14
+ * Detects multiple intents from context by decomposing queries into subqueries.
15
15
  *
16
16
  * @param query - The user's input query
17
17
  * @param thread - The thread history
18
- * @returns The detected intent
18
+ * @returns Array of TriggeredIntent objects
19
19
  */
20
20
  async intentTriggering(query, thread) {
21
21
  const modelInstance = this.modelModule.getModel();
22
22
  const modelOptions = this.modelModule.getModelOptions();
23
- const intentMemory = this.memoryModule?.getIntentMemory();
23
+ const intentMemory = this.memoryModule.getIntentMemory();
24
24
  if (!intentMemory) {
25
25
  return [{ subquery: query }];
26
26
  }
@@ -98,6 +98,7 @@ Requirements:
98
98
  }
99
99
  const triggeredIntent = [];
100
100
  for (const { subquery, intentName, actionPlan } of subqueries) {
101
+ if (!subquery) continue;
101
102
  const item = { subquery, actionPlan };
102
103
  if (intentName) {
103
104
  item.intent = await intentMemory.getIntentByName(intentName);
@@ -109,6 +110,6 @@ Requirements:
109
110
  };
110
111
 
111
112
  export {
112
- IntentTriggerService
113
+ MultiIntentTriggerService
113
114
  };
114
- //# sourceMappingURL=chunk-KOCOM7IC.js.map
115
+ //# sourceMappingURL=chunk-QQZ5ANSD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/intents/multi-trigger.service.ts"],"sourcesContent":["import type { MemoryModule, ModelModule } from \"@/modules\";\nimport type {\n\tMessageObject,\n\tThreadObject,\n\tTriggeredIntent,\n} from \"@/types/memory\";\nimport { loggers } from \"@/utils/logger\";\n\n/**\n * Service for multi-intent triggering.\n * Decomposes queries into multiple subqueries and maps each to an intent.\n */\nexport class MultiIntentTriggerService {\n\tprivate modelModule: ModelModule;\n\tprivate memoryModule: MemoryModule;\n\n\tconstructor(modelModule: ModelModule, memoryModule: MemoryModule) {\n\t\tthis.modelModule = modelModule;\n\t\tthis.memoryModule = memoryModule;\n\t}\n\n\t/**\n\t * Detects multiple intents from context by decomposing queries into subqueries.\n\t *\n\t * @param query - The user's input query\n\t * @param thread - The thread history\n\t * @returns Array of TriggeredIntent objects\n\t */\n\tpublic async intentTriggering(\n\t\tquery: string,\n\t\tthread: ThreadObject | undefined,\n\t): Promise<Array<TriggeredIntent>> {\n\t\tconst modelInstance = this.modelModule.getModel();\n\t\tconst modelOptions = this.modelModule.getModelOptions();\n\t\tconst intentMemory = this.memoryModule.getIntentMemory();\n\t\tif (!intentMemory) {\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\t// 인텐트 목록 가져오기\n\t\tconst intents = await intentMemory.listIntents();\n\n\t\tif (intents.length === 0) {\n\t\t\tloggers.intentStream.warn(\"No intent found\");\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tconst intentList = intents\n\t\t\t.map((intent) => `- ${intent.name}: ${intent.description}`)\n\t\t\t.join(\"\\n\");\n\n\t\t// Convert thread messages to a string\n\t\tconst threadMessages = !thread\n\t\t\t? \"\"\n\t\t\t: thread.messages\n\t\t\t\t\t.sort((a, b) => a.timestamp - b.timestamp)\n\t\t\t\t\t.map((message: MessageObject) => {\n\t\t\t\t\t\tconst role =\n\t\t\t\t\t\t\tmessage.role === \"USER\"\n\t\t\t\t\t\t\t\t? \"User\"\n\t\t\t\t\t\t\t\t: message.role === \"MODEL\"\n\t\t\t\t\t\t\t\t\t? \"Assistant\"\n\t\t\t\t\t\t\t\t\t: \"System\";\n\t\t\t\t\t\tconst content = Array.isArray(message.content.parts)\n\t\t\t\t\t\t\t? message.content.parts.join(\" \")\n\t\t\t\t\t\t\t: String(message.content.parts);\n\t\t\t\t\t\treturn `${role}: \"\"\"${content}\"\"\"`;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\\n\");\n\n\t\tconst systemPrompt = `\nToday is ${new Date().toLocaleDateString()}.\nYou are an expert in accurately identifying user intentions.\n\nAvailable intent list:\n${intentList}\n\nPlease select and answer only from the above intent list.`;\n\n\t\tconst userMessage = `\n${\n\tthreadMessages !== \"\"\n\t\t? `The following is the conversation history with the user: ${threadMessages}\n\n\t`\n\t\t: \"\"\n}\nLast user question: \"${query}\"\n\nBased on the above conversation history, analyze the last user question and identify all relevant intents.\n\nInstructions:\n1. First, decompose the last user question into action-based subqueries (each representing a distinct action or task)\n2. Then, map each subquery to its corresponding intent from the available intent list\n3. For each subquery, provide a 2-3 sentence summary of what actions will be performed\n4. Multiple intents can be identified if the question covers various topics or actions\n5. Maintain the logical sequence of the original question when splitting into subqueries\n6. **Important**: If the query cannot be split into multiple subqueries (i.e., it represents a single action or request), treat the entire query as one subquery and still follow the output format\n\nOutput Format:\nYou MUST return the output in the following JSON format. Do not include any other text before or after the JSON:\n[\n {\n \"subquery\": \"<subquery_1>\",\n \"intentName\": \"<intent_name_1>\",\n\t\t\"actionPlan\": \"<2-3 sentence description of what will be done for this subquery>\"\n\t},\n {\n \"subquery\": \"<subquery_2>\",\n \"intentName\": \"<intent_name_2>\",\n\t\t\"actionPlan\": \"<2-3 sentence description of what will be done for this subquery>\"\n },\n ...\n]\n\nRequirements:\n- Each subquery should represent a single, actionable task or request\n- Preserve the original meaning and context when splitting queries\n- Select only from the provided intent list\n- DO NOT set intentName for any subquery that doesn't match available intents.\n- Even if the query is simple and cannot be decomposed, return it as a single-element array with one subquery object`;\n\n\t\tconst messages = modelInstance.generateMessages({\n\t\t\tquery: userMessage,\n\t\t\tsystemPrompt,\n\t\t});\n\n\t\tconst response = await modelInstance.fetch(messages, modelOptions);\n\t\tif (!response.content) {\n\t\t\tloggers.intent.warn(\"Cannot extract intent from query\");\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tlet subqueries: any;\n\t\ttry {\n\t\t\tsubqueries = JSON.parse(response.content);\n\t\t} catch (error: unknown) {\n\t\t\treturn [{ subquery: query }];\n\t\t}\n\n\t\tconst triggeredIntent: Array<TriggeredIntent> = [];\n\t\tfor (const { subquery, intentName, actionPlan } of subqueries) {\n\t\t\tif (!subquery) continue;\n\t\t\tconst item = { subquery, actionPlan } as TriggeredIntent;\n\t\t\tif (intentName) {\n\t\t\t\titem.intent = await intentMemory.getIntentByName(intentName);\n\t\t\t}\n\t\t\ttriggeredIntent.push(item);\n\t\t}\n\n\t\treturn triggeredIntent;\n\t}\n}\n"],"mappings":";;;;;AAYO,IAAM,4BAAN,MAAgC;AAAA,EAC9B;AAAA,EACA;AAAA,EAER,YAAY,aAA0B,cAA4B;AACjE,SAAK,cAAc;AACnB,SAAK,eAAe;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,iBACZ,OACA,QACkC;AAClC,UAAM,gBAAgB,KAAK,YAAY,SAAS;AAChD,UAAM,eAAe,KAAK,YAAY,gBAAgB;AACtD,UAAM,eAAe,KAAK,aAAa,gBAAgB;AACvD,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAGA,UAAM,UAAU,MAAM,aAAa,YAAY;AAE/C,QAAI,QAAQ,WAAW,GAAG;AACzB,cAAQ,aAAa,KAAK,iBAAiB;AAC3C,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,UAAM,aAAa,QACjB,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,KAAK,OAAO,WAAW,EAAE,EACzD,KAAK,IAAI;AAGX,UAAM,iBAAiB,CAAC,SACrB,KACA,OAAO,SACN,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,EACxC,IAAI,CAAC,YAA2B;AAChC,YAAM,OACL,QAAQ,SAAS,SACd,SACA,QAAQ,SAAS,UAChB,cACA;AACL,YAAM,UAAU,MAAM,QAAQ,QAAQ,QAAQ,KAAK,IAChD,QAAQ,QAAQ,MAAM,KAAK,GAAG,IAC9B,OAAO,QAAQ,QAAQ,KAAK;AAC/B,aAAO,GAAG,IAAI,QAAQ,OAAO;AAAA,IAC9B,CAAC,EACA,KAAK,IAAI;AAEb,UAAM,eAAe;AAAA,YACZ,oBAAI,KAAK,GAAE,mBAAmB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIxC,UAAU;AAAA;AAAA;AAIV,UAAM,cAAc;AAAA,EAErB,mBAAmB,KAChB,4DAA4D,cAAc;AAAA;AAAA,KAG1E,EACJ;AAAA,uBACuB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmC1B,UAAM,WAAW,cAAc,iBAAiB;AAAA,MAC/C,OAAO;AAAA,MACP;AAAA,IACD,CAAC;AAED,UAAM,WAAW,MAAM,cAAc,MAAM,UAAU,YAAY;AACjE,QAAI,CAAC,SAAS,SAAS;AACtB,cAAQ,OAAO,KAAK,kCAAkC;AACtD,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,QAAI;AACJ,QAAI;AACH,mBAAa,KAAK,MAAM,SAAS,OAAO;AAAA,IACzC,SAAS,OAAgB;AACxB,aAAO,CAAC,EAAE,UAAU,MAAM,CAAC;AAAA,IAC5B;AAEA,UAAM,kBAA0C,CAAC;AACjD,eAAW,EAAE,UAAU,YAAY,WAAW,KAAK,YAAY;AAC9D,UAAI,CAAC,SAAU;AACf,YAAM,OAAO,EAAE,UAAU,WAAW;AACpC,UAAI,YAAY;AACf,aAAK,SAAS,MAAM,aAAa,gBAAgB,UAAU;AAAA,MAC5D;AACA,sBAAgB,KAAK,IAAI;AAAA,IAC1B;AAEA,WAAO;AAAA,EACR;AACD;","names":[]}