agentstudio 0.1.18 → 0.1.21

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 (664) hide show
  1. package/README.md +26 -505
  2. package/bin/agentstudio.js +305 -0
  3. package/bin/agentstudio.js.map +1 -0
  4. package/bin/serviceManager.d.ts +16 -0
  5. package/bin/serviceManager.d.ts.map +1 -0
  6. package/bin/serviceManager.js +434 -0
  7. package/bin/serviceManager.js.map +1 -0
  8. package/config/index.d.ts +74 -0
  9. package/config/index.d.ts.map +1 -0
  10. package/config/index.js +166 -0
  11. package/config/index.js.map +1 -0
  12. package/config/paths.d.ts +81 -0
  13. package/config/paths.d.ts.map +1 -0
  14. package/config/paths.js +98 -0
  15. package/config/paths.js.map +1 -0
  16. package/index.d.ts +4 -0
  17. package/index.d.ts.map +1 -0
  18. package/index.js +369 -0
  19. package/index.js.map +1 -0
  20. package/jobs/taskTimeoutMonitor.d.ts +25 -0
  21. package/jobs/taskTimeoutMonitor.d.ts.map +1 -0
  22. package/jobs/taskTimeoutMonitor.js +94 -0
  23. package/jobs/taskTimeoutMonitor.js.map +1 -0
  24. package/middleware/a2aAuth.d.ts +38 -0
  25. package/middleware/a2aAuth.d.ts.map +1 -0
  26. package/middleware/a2aAuth.js +134 -0
  27. package/middleware/a2aAuth.js.map +1 -0
  28. package/{backend/dist/middleware → middleware}/auth.d.ts +3 -1
  29. package/middleware/auth.d.ts.map +1 -0
  30. package/middleware/auth.js +35 -0
  31. package/middleware/auth.js.map +1 -0
  32. package/middleware/httpsOnly.d.ts +38 -0
  33. package/middleware/httpsOnly.d.ts.map +1 -0
  34. package/middleware/httpsOnly.js +105 -0
  35. package/middleware/httpsOnly.js.map +1 -0
  36. package/middleware/rateLimiting.d.ts +37 -0
  37. package/middleware/rateLimiting.d.ts.map +1 -0
  38. package/middleware/rateLimiting.js +118 -0
  39. package/middleware/rateLimiting.js.map +1 -0
  40. package/package.json +43 -38
  41. package/public/assets/AgentsPage-Nvg2xu6K.js +10 -0
  42. package/public/assets/Button-Co56C389.js +1 -0
  43. package/public/assets/ChatPage-D6sol0ad.js +442 -0
  44. package/public/assets/CommandForm-Bk7F_HU8.js +7 -0
  45. package/public/assets/CommandsPage-DZHyOdKd.js +1 -0
  46. package/public/assets/DashboardPage-29qC7Ev1.js +15 -0
  47. package/public/assets/FileBrowser-BYweUPH4.js +6 -0
  48. package/public/assets/FileExplorer-DNYj6Tsx.js +1 -0
  49. package/public/assets/GeneralSettingsPage-D9Xa7Nd8.js +1 -0
  50. package/public/assets/LandingPage-CjnT-cvO.js +1 -0
  51. package/public/assets/LoginPage-DcaGNCXH.js +16 -0
  52. package/public/assets/McpAdminSettingsPage-DgR3E2Bd.js +7 -0
  53. package/public/assets/McpPage-CtWf1CoL.js +40 -0
  54. package/public/assets/MemorySettingsPage-JTry4Ccp.js +1 -0
  55. package/public/assets/PluginsPage-D-BHjQ3P.js +1 -0
  56. package/public/assets/ProjectSelector-DSXOjMQC.js +1 -0
  57. package/public/assets/ProjectsPage-lLUk4-Xa.js +21 -0
  58. package/public/assets/ScheduledTasksPage-5hPbd9Vs.js +1 -0
  59. package/public/assets/SettingsLayout-DGJspXLp.js +1 -0
  60. package/public/assets/SkillsPage-DBw0m7D2.js +18 -0
  61. package/{backend/dist/frontend/assets/SubagentForm-DXtTTIKg.js → public/assets/SubagentForm-BdUK1U4y.js} +2 -2
  62. package/public/assets/SubagentsPage-Dnq70IFd.js +1 -0
  63. package/{backend/dist/frontend/assets/ToastTestPage-DT4wuN5C.js → public/assets/ToastTestPage-BfJQRFIm.js} +1 -1
  64. package/public/assets/ToolsList-Dl5F2fWk.js +1 -0
  65. package/public/assets/UnifiedToolSelector-CNbPsiuq.js +1 -0
  66. package/public/assets/VersionSettingsPage-BfoCcham.js +5 -0
  67. package/public/assets/_basePickBy-7C_e0Xv1.js +1 -0
  68. package/public/assets/_baseUniq-eGJNLBzx.js +1 -0
  69. package/public/assets/agents-ChrA1R0y.js +1 -0
  70. package/public/assets/arc-CuA752eE.js +1 -0
  71. package/public/assets/architectureDiagram-VXUJARFQ-BnPYh1OW.js +36 -0
  72. package/public/assets/blockDiagram-VD42YOAC-72nsMt_i.js +122 -0
  73. package/public/assets/c4Diagram-YG6GDRKO-BNJSAXcg.js +10 -0
  74. package/public/assets/channel-CIunGC5m.js +1 -0
  75. package/public/assets/chunk-4BX2VUAB-RPxkCWhH.js +1 -0
  76. package/public/assets/chunk-55IACEB6-3ePDt0kp.js +1 -0
  77. package/public/assets/chunk-B4BG7PRW-CBg_BBfl.js +165 -0
  78. package/public/assets/chunk-DI55MBZ5-DIh69TUJ.js +220 -0
  79. package/public/assets/chunk-FMBD7UC4-BbjwhyTe.js +15 -0
  80. package/public/assets/chunk-QN33PNHL-BpH-o_YR.js +1 -0
  81. package/public/assets/chunk-QZHKN3VN-DYB7rh5Q.js +1 -0
  82. package/public/assets/chunk-TZMSLE5B-DPCYEVb3.js +1 -0
  83. package/public/assets/classDiagram-2ON5EDUG-aUQHFsTA.js +1 -0
  84. package/public/assets/classDiagram-v2-WZHVMYZB-aUQHFsTA.js +1 -0
  85. package/public/assets/clone-Ckf7tA1V.js +1 -0
  86. package/public/assets/cose-bilkent-S5V4N54A-CnpfmL-Y.js +1 -0
  87. package/public/assets/cytoscape.esm-DtBltrT8.js +331 -0
  88. package/public/assets/dagre-6UL2VRFP-DR9x77Xf.js +4 -0
  89. package/{backend/dist/frontend/assets/data-structures-DLJedtzx.js → public/assets/data-structures-C0h9Oap1.js} +1 -1
  90. package/public/assets/defaultLocale-C4B-KCzX.js +1 -0
  91. package/public/assets/diagram-PSM6KHXK-SONPsQNx.js +24 -0
  92. package/public/assets/diagram-QEK2KX5R-BKYFSfC1.js +43 -0
  93. package/public/assets/diagram-S2PKOQOG-CkM0APZj.js +24 -0
  94. package/public/assets/erDiagram-Q2GNP2WA-BX1DpOGx.js +60 -0
  95. package/public/assets/flowDiagram-NV44I4VS-HAAlzNbq.js +162 -0
  96. package/public/assets/ganttDiagram-LVOFAZNH-BqzWexqa.js +267 -0
  97. package/public/assets/gitGraphDiagram-NY62KEGX-CIPmSp43.js +65 -0
  98. package/public/assets/graph-m515btDj.js +1 -0
  99. package/public/assets/index-Bn3v3S9-.js +293 -0
  100. package/public/assets/index-DWieeYj4.css +1 -0
  101. package/public/assets/infoDiagram-F6ZHWCRC-Pn4yNWrF.js +2 -0
  102. package/public/assets/init-Gi6I4Gst.js +1 -0
  103. package/public/assets/journeyDiagram-XKPGCS4Q-BfzTomS0.js +139 -0
  104. package/public/assets/kanban-definition-3W4ZIXB7-Cgju7b-L.js +89 -0
  105. package/public/assets/katex-qrhCpa0F.js +261 -0
  106. package/public/assets/layout-BKQfQSxJ.js +1 -0
  107. package/public/assets/linear-DigtLz3B.js +1 -0
  108. package/public/assets/mindmap-definition-VGOIOE7T-qopraVFy.js +68 -0
  109. package/public/assets/monaco-editor-DHKm5-VF.js +19 -0
  110. package/public/assets/ordinal-Cboi1Yqb.js +1 -0
  111. package/public/assets/pieDiagram-ADFJNKIX-BcoaAI-L.js +30 -0
  112. package/public/assets/quadrantDiagram-AYHSOK5B-D-DwcoSd.js +7 -0
  113. package/public/assets/requirementDiagram-UZGBJVZJ-DbQCpx77.js +64 -0
  114. package/public/assets/sankeyDiagram-TZEHDZUN-BVk8387S.js +10 -0
  115. package/public/assets/sequenceDiagram-WL72ISMW-BdzICjxO.js +145 -0
  116. package/public/assets/stateDiagram-FKZM4ZOC-CYY-uUvJ.js +1 -0
  117. package/public/assets/stateDiagram-v2-4FDKWEC3-Dh2Kvomq.js +1 -0
  118. package/{backend/dist/frontend/assets/syntax-highlighting-YWvMU4Hm.js → public/assets/syntax-highlighting-CnREyncB.js} +5 -5
  119. package/public/assets/tabManager-B2LQO_Ll.js +30 -0
  120. package/{backend/dist/frontend/assets/table-D6q1rytw.js → public/assets/table-D0L2RL5i.js} +1 -1
  121. package/public/assets/timeline-definition-IT6M3QCI-BAvjPYvX.js +61 -0
  122. package/public/assets/tools-IcPNZlPj.js +1 -0
  123. package/public/assets/treemap-KMMF4GRG-DtkpVA56.js +128 -0
  124. package/{backend/dist/frontend/assets/ui-components-Cw21Epuw.js → public/assets/ui-components-D1St49qC.js} +231 -96
  125. package/public/assets/useAgents-BnDTkOG8.js +2 -0
  126. package/public/assets/useClaudeVersions-CD59tFWM.js +1 -0
  127. package/public/assets/useCommands-mvMu3mMD.js +1 -0
  128. package/public/assets/useProjects-YXOjaOwL.js +1 -0
  129. package/public/assets/xychartDiagram-PRI3JC2R-ByBTDWE2.js +7 -0
  130. package/{backend/dist/frontend → public}/index.html +8 -8
  131. package/routes/__tests__/a2a.integration.test.d.ts +11 -0
  132. package/routes/__tests__/a2a.integration.test.d.ts.map +1 -0
  133. package/routes/__tests__/a2a.integration.test.js +314 -0
  134. package/routes/__tests__/a2a.integration.test.js.map +1 -0
  135. package/routes/__tests__/a2a.test.d.ts +6 -0
  136. package/routes/__tests__/a2a.test.d.ts.map +1 -0
  137. package/routes/__tests__/a2a.test.js +622 -0
  138. package/routes/__tests__/a2a.test.js.map +1 -0
  139. package/routes/__tests__/agents.test.d.ts +6 -0
  140. package/routes/__tests__/agents.test.d.ts.map +1 -0
  141. package/routes/__tests__/agents.test.js +315 -0
  142. package/routes/__tests__/agents.test.js.map +1 -0
  143. package/routes/__tests__/sessions.test.d.ts +7 -0
  144. package/routes/__tests__/sessions.test.d.ts.map +1 -0
  145. package/routes/__tests__/sessions.test.js +330 -0
  146. package/routes/__tests__/sessions.test.js.map +1 -0
  147. package/routes/a2a.d.ts +18 -0
  148. package/routes/a2a.d.ts.map +1 -0
  149. package/routes/a2a.js +649 -0
  150. package/routes/a2a.js.map +1 -0
  151. package/routes/a2a.streaming.test.d.ts +2 -0
  152. package/routes/a2a.streaming.test.d.ts.map +1 -0
  153. package/routes/a2a.streaming.test.js +167 -0
  154. package/routes/a2a.streaming.test.js.map +1 -0
  155. package/routes/a2aManagement.d.ts +21 -0
  156. package/routes/a2aManagement.d.ts.map +1 -0
  157. package/routes/a2aManagement.js +466 -0
  158. package/routes/a2aManagement.js.map +1 -0
  159. package/{backend/dist/routes → routes}/agents.d.ts.map +1 -1
  160. package/routes/agents.js +997 -0
  161. package/routes/agents.js.map +1 -0
  162. package/{backend/dist/routes → routes}/auth.d.ts.map +1 -1
  163. package/routes/auth.js +135 -0
  164. package/routes/auth.js.map +1 -0
  165. package/{backend/dist/routes → routes}/commands.d.ts.map +1 -1
  166. package/{backend/dist/routes → routes}/commands.js +115 -31
  167. package/routes/commands.js.map +1 -0
  168. package/routes/config.d.ts +4 -0
  169. package/routes/config.d.ts.map +1 -0
  170. package/routes/config.js +211 -0
  171. package/routes/config.js.map +1 -0
  172. package/{backend/dist/routes → routes}/files.d.ts.map +1 -1
  173. package/{backend/dist/routes → routes}/files.js +103 -43
  174. package/routes/files.js.map +1 -0
  175. package/routes/mcp.d.ts +27 -0
  176. package/routes/mcp.d.ts.map +1 -0
  177. package/{backend/dist/routes → routes}/mcp.js +195 -105
  178. package/routes/mcp.js.map +1 -0
  179. package/routes/mcpAdmin.d.ts +16 -0
  180. package/routes/mcpAdmin.d.ts.map +1 -0
  181. package/routes/mcpAdmin.js +308 -0
  182. package/routes/mcpAdmin.js.map +1 -0
  183. package/routes/mcpAdminManagement.d.ts +17 -0
  184. package/routes/mcpAdminManagement.d.ts.map +1 -0
  185. package/routes/mcpAdminManagement.js +345 -0
  186. package/routes/mcpAdminManagement.js.map +1 -0
  187. package/routes/media.d.ts.map +1 -0
  188. package/{backend/dist/routes → routes}/media.js +52 -42
  189. package/routes/media.js.map +1 -0
  190. package/routes/mediaAuth.d.ts +8 -0
  191. package/routes/mediaAuth.d.ts.map +1 -0
  192. package/routes/mediaAuth.js +136 -0
  193. package/routes/mediaAuth.js.map +1 -0
  194. package/routes/plugins.d.ts +4 -0
  195. package/routes/plugins.d.ts.map +1 -0
  196. package/routes/plugins.js +339 -0
  197. package/routes/plugins.js.map +1 -0
  198. package/{backend/dist/routes → routes}/projects.d.ts.map +1 -1
  199. package/routes/projects.js +884 -0
  200. package/routes/projects.js.map +1 -0
  201. package/routes/scheduledTasks.d.ts +9 -0
  202. package/routes/scheduledTasks.d.ts.map +1 -0
  203. package/routes/scheduledTasks.js +320 -0
  204. package/routes/scheduledTasks.js.map +1 -0
  205. package/{backend/dist/routes → routes}/sessions.d.ts.map +1 -1
  206. package/{backend/dist/routes → routes}/sessions.js +258 -39
  207. package/routes/sessions.js.map +1 -0
  208. package/{backend/dist/routes → routes}/settings.d.ts.map +1 -1
  209. package/{backend/dist/routes → routes}/settings.js +82 -241
  210. package/routes/settings.js.map +1 -0
  211. package/{backend/dist/routes/mcp.d.ts → routes/skills.d.ts} +1 -1
  212. package/routes/skills.d.ts.map +1 -0
  213. package/routes/skills.js +272 -0
  214. package/routes/skills.js.map +1 -0
  215. package/routes/slack.d.ts +10 -0
  216. package/routes/slack.d.ts.map +1 -0
  217. package/routes/slack.js +189 -0
  218. package/routes/slack.js.map +1 -0
  219. package/{backend/dist/routes → routes}/slides.d.ts.map +1 -1
  220. package/{backend/dist/routes → routes}/slides.js +29 -27
  221. package/routes/slides.js.map +1 -0
  222. package/{backend/dist/routes → routes}/subagents.js +27 -22
  223. package/routes/subagents.js.map +1 -0
  224. package/schemas/a2a.d.ts +858 -0
  225. package/schemas/a2a.d.ts.map +1 -0
  226. package/schemas/a2a.js +300 -0
  227. package/schemas/a2a.js.map +1 -0
  228. package/scripts/postinstall.js +10 -0
  229. package/services/__tests__/pluginInstaller.test.d.ts +5 -0
  230. package/services/__tests__/pluginInstaller.test.d.ts.map +1 -0
  231. package/services/__tests__/pluginInstaller.test.js +290 -0
  232. package/services/__tests__/pluginInstaller.test.js.map +1 -0
  233. package/services/__tests__/pluginParser.test.d.ts +5 -0
  234. package/services/__tests__/pluginParser.test.d.ts.map +1 -0
  235. package/services/__tests__/pluginParser.test.js +272 -0
  236. package/services/__tests__/pluginParser.test.js.map +1 -0
  237. package/services/__tests__/pluginPaths.test.d.ts +5 -0
  238. package/services/__tests__/pluginPaths.test.d.ts.map +1 -0
  239. package/services/__tests__/pluginPaths.test.js +221 -0
  240. package/services/__tests__/pluginPaths.test.js.map +1 -0
  241. package/services/__tests__/pluginScanner.test.d.ts +5 -0
  242. package/services/__tests__/pluginScanner.test.d.ts.map +1 -0
  243. package/services/__tests__/pluginScanner.test.js +272 -0
  244. package/services/__tests__/pluginScanner.test.js.map +1 -0
  245. package/services/__tests__/pluginSymlink.test.d.ts +5 -0
  246. package/services/__tests__/pluginSymlink.test.d.ts.map +1 -0
  247. package/services/__tests__/pluginSymlink.test.js +318 -0
  248. package/services/__tests__/pluginSymlink.test.js.map +1 -0
  249. package/services/__tests__/slackAIService.test.d.ts +5 -0
  250. package/services/__tests__/slackAIService.test.d.ts.map +1 -0
  251. package/services/__tests__/slackAIService.test.js +477 -0
  252. package/services/__tests__/slackAIService.test.js.map +1 -0
  253. package/services/__tests__/slackThreadMapper.test.d.ts +5 -0
  254. package/services/__tests__/slackThreadMapper.test.d.ts.map +1 -0
  255. package/services/__tests__/slackThreadMapper.test.js +194 -0
  256. package/services/__tests__/slackThreadMapper.test.js.map +1 -0
  257. package/services/a2a/__tests__/a2aClientTool.integration.test.d.ts +6 -0
  258. package/services/a2a/__tests__/a2aClientTool.integration.test.d.ts.map +1 -0
  259. package/services/a2a/__tests__/a2aClientTool.integration.test.js +264 -0
  260. package/services/a2a/__tests__/a2aClientTool.integration.test.js.map +1 -0
  261. package/services/a2a/__tests__/a2aClientTool.test.d.ts +6 -0
  262. package/services/a2a/__tests__/a2aClientTool.test.d.ts.map +1 -0
  263. package/services/a2a/__tests__/a2aClientTool.test.js +418 -0
  264. package/services/a2a/__tests__/a2aClientTool.test.js.map +1 -0
  265. package/services/a2a/__tests__/a2aConfigService.test.d.ts +6 -0
  266. package/services/a2a/__tests__/a2aConfigService.test.d.ts.map +1 -0
  267. package/services/a2a/__tests__/a2aConfigService.test.js +431 -0
  268. package/services/a2a/__tests__/a2aConfigService.test.js.map +1 -0
  269. package/services/a2a/__tests__/a2aConfigServicePath.test.d.ts +2 -0
  270. package/services/a2a/__tests__/a2aConfigServicePath.test.d.ts.map +1 -0
  271. package/services/a2a/__tests__/a2aConfigServicePath.test.js +49 -0
  272. package/services/a2a/__tests__/a2aConfigServicePath.test.js.map +1 -0
  273. package/services/a2a/__tests__/a2aSdkMcp.test.d.ts +10 -0
  274. package/services/a2a/__tests__/a2aSdkMcp.test.d.ts.map +1 -0
  275. package/services/a2a/__tests__/a2aSdkMcp.test.js +239 -0
  276. package/services/a2a/__tests__/a2aSdkMcp.test.js.map +1 -0
  277. package/services/a2a/__tests__/agentCardService.test.d.ts +6 -0
  278. package/services/a2a/__tests__/agentCardService.test.d.ts.map +1 -0
  279. package/services/a2a/__tests__/agentCardService.test.js +292 -0
  280. package/services/a2a/__tests__/agentCardService.test.js.map +1 -0
  281. package/services/a2a/__tests__/apiKeyService.test.d.ts +6 -0
  282. package/services/a2a/__tests__/apiKeyService.test.d.ts.map +1 -0
  283. package/services/a2a/__tests__/apiKeyService.test.js +284 -0
  284. package/services/a2a/__tests__/apiKeyService.test.js.map +1 -0
  285. package/services/a2a/__tests__/buildQueryOptionsIntegration.test.d.ts +2 -0
  286. package/services/a2a/__tests__/buildQueryOptionsIntegration.test.d.ts.map +1 -0
  287. package/services/a2a/__tests__/buildQueryOptionsIntegration.test.js +70 -0
  288. package/services/a2a/__tests__/buildQueryOptionsIntegration.test.js.map +1 -0
  289. package/services/a2a/__tests__/dynamic_config_verification.test.d.ts +2 -0
  290. package/services/a2a/__tests__/dynamic_config_verification.test.d.ts.map +1 -0
  291. package/services/a2a/__tests__/dynamic_config_verification.test.js +67 -0
  292. package/services/a2a/__tests__/dynamic_config_verification.test.js.map +1 -0
  293. package/services/a2a/__tests__/integrateA2AMcpServer.test.d.ts +2 -0
  294. package/services/a2a/__tests__/integrateA2AMcpServer.test.d.ts.map +1 -0
  295. package/services/a2a/__tests__/integrateA2AMcpServer.test.js +112 -0
  296. package/services/a2a/__tests__/integrateA2AMcpServer.test.js.map +1 -0
  297. package/services/a2a/__tests__/taskManager.integration.test.d.ts +7 -0
  298. package/services/a2a/__tests__/taskManager.integration.test.d.ts.map +1 -0
  299. package/services/a2a/__tests__/taskManager.integration.test.js +346 -0
  300. package/services/a2a/__tests__/taskManager.integration.test.js.map +1 -0
  301. package/services/a2a/__tests__/taskManager.test.d.ts +7 -0
  302. package/services/a2a/__tests__/taskManager.test.d.ts.map +1 -0
  303. package/services/a2a/__tests__/taskManager.test.js +423 -0
  304. package/services/a2a/__tests__/taskManager.test.js.map +1 -0
  305. package/services/a2a/a2aClientTool.d.ts +73 -0
  306. package/services/a2a/a2aClientTool.d.ts.map +1 -0
  307. package/services/a2a/a2aClientTool.js +572 -0
  308. package/services/a2a/a2aClientTool.js.map +1 -0
  309. package/services/a2a/a2aConfigService.d.ts +50 -0
  310. package/services/a2a/a2aConfigService.d.ts.map +1 -0
  311. package/services/a2a/a2aConfigService.js +186 -0
  312. package/services/a2a/a2aConfigService.js.map +1 -0
  313. package/services/a2a/a2aHistoryService.d.ts +32 -0
  314. package/services/a2a/a2aHistoryService.d.ts.map +1 -0
  315. package/services/a2a/a2aHistoryService.js +108 -0
  316. package/services/a2a/a2aHistoryService.js.map +1 -0
  317. package/services/a2a/a2aIntegration.d.ts +9 -0
  318. package/services/a2a/a2aIntegration.d.ts.map +1 -0
  319. package/services/a2a/a2aIntegration.js +41 -0
  320. package/services/a2a/a2aIntegration.js.map +1 -0
  321. package/services/a2a/a2aQueryService.d.ts +71 -0
  322. package/services/a2a/a2aQueryService.d.ts.map +1 -0
  323. package/services/a2a/a2aQueryService.js +166 -0
  324. package/services/a2a/a2aQueryService.js.map +1 -0
  325. package/services/a2a/a2aSdkMcp.d.ts +51 -0
  326. package/services/a2a/a2aSdkMcp.d.ts.map +1 -0
  327. package/services/a2a/a2aSdkMcp.js +185 -0
  328. package/services/a2a/a2aSdkMcp.js.map +1 -0
  329. package/services/a2a/a2aStreamEvents.d.ts +94 -0
  330. package/services/a2a/a2aStreamEvents.d.ts.map +1 -0
  331. package/services/a2a/a2aStreamEvents.js +92 -0
  332. package/services/a2a/a2aStreamEvents.js.map +1 -0
  333. package/services/a2a/agentCardService.d.ts +34 -0
  334. package/services/a2a/agentCardService.d.ts.map +1 -0
  335. package/services/a2a/agentCardService.js +228 -0
  336. package/services/a2a/agentCardService.js.map +1 -0
  337. package/services/a2a/agentMappingService.d.ts +53 -0
  338. package/services/a2a/agentMappingService.d.ts.map +1 -0
  339. package/services/a2a/agentMappingService.js +185 -0
  340. package/services/a2a/agentMappingService.js.map +1 -0
  341. package/services/a2a/apiKeyService.d.ts +101 -0
  342. package/services/a2a/apiKeyService.d.ts.map +1 -0
  343. package/services/a2a/apiKeyService.js +314 -0
  344. package/services/a2a/apiKeyService.js.map +1 -0
  345. package/services/a2a/taskCleanup.d.ts +30 -0
  346. package/services/a2a/taskCleanup.d.ts.map +1 -0
  347. package/services/a2a/taskCleanup.js +184 -0
  348. package/services/a2a/taskCleanup.js.map +1 -0
  349. package/services/a2a/taskManager.d.ts +86 -0
  350. package/services/a2a/taskManager.d.ts.map +1 -0
  351. package/services/a2a/taskManager.js +263 -0
  352. package/services/a2a/taskManager.js.map +1 -0
  353. package/services/agentStorage.d.ts +27 -0
  354. package/services/agentStorage.d.ts.map +1 -0
  355. package/services/agentStorage.js +487 -0
  356. package/services/agentStorage.js.map +1 -0
  357. package/services/askUserQuestion/askUserQuestionIntegration.d.ts +24 -0
  358. package/services/askUserQuestion/askUserQuestionIntegration.d.ts.map +1 -0
  359. package/services/askUserQuestion/askUserQuestionIntegration.js +52 -0
  360. package/services/askUserQuestion/askUserQuestionIntegration.js.map +1 -0
  361. package/services/askUserQuestion/askUserQuestionMcp.d.ts +103 -0
  362. package/services/askUserQuestion/askUserQuestionMcp.d.ts.map +1 -0
  363. package/services/askUserQuestion/askUserQuestionMcp.js +129 -0
  364. package/services/askUserQuestion/askUserQuestionMcp.js.map +1 -0
  365. package/services/askUserQuestion/index.d.ts +13 -0
  366. package/services/askUserQuestion/index.d.ts.map +1 -0
  367. package/services/askUserQuestion/index.js +35 -0
  368. package/services/askUserQuestion/index.js.map +1 -0
  369. package/services/askUserQuestion/init.d.ts +17 -0
  370. package/services/askUserQuestion/init.d.ts.map +1 -0
  371. package/services/askUserQuestion/init.js +47 -0
  372. package/services/askUserQuestion/init.js.map +1 -0
  373. package/services/askUserQuestion/notificationChannel.d.ts +97 -0
  374. package/services/askUserQuestion/notificationChannel.d.ts.map +1 -0
  375. package/services/askUserQuestion/notificationChannel.js +147 -0
  376. package/services/askUserQuestion/notificationChannel.js.map +1 -0
  377. package/services/askUserQuestion/slackNotificationChannel.d.ts +35 -0
  378. package/services/askUserQuestion/slackNotificationChannel.d.ts.map +1 -0
  379. package/services/askUserQuestion/slackNotificationChannel.js +129 -0
  380. package/services/askUserQuestion/slackNotificationChannel.js.map +1 -0
  381. package/services/askUserQuestion/sseNotificationChannel.d.ts +36 -0
  382. package/services/askUserQuestion/sseNotificationChannel.d.ts.map +1 -0
  383. package/services/askUserQuestion/sseNotificationChannel.js +88 -0
  384. package/services/askUserQuestion/sseNotificationChannel.js.map +1 -0
  385. package/services/askUserQuestion/userInputRegistry.d.ts +107 -0
  386. package/services/askUserQuestion/userInputRegistry.d.ts.map +1 -0
  387. package/services/askUserQuestion/userInputRegistry.js +253 -0
  388. package/services/askUserQuestion/userInputRegistry.js.map +1 -0
  389. package/{backend/dist/services → services}/claudeSession.d.ts +20 -5
  390. package/services/claudeSession.d.ts.map +1 -0
  391. package/{backend/dist/services → services}/claudeSession.js +123 -41
  392. package/services/claudeSession.js.map +1 -0
  393. package/services/claudeVersionStorage.d.ts +20 -0
  394. package/services/claudeVersionStorage.d.ts.map +1 -0
  395. package/services/claudeVersionStorage.js +331 -0
  396. package/services/claudeVersionStorage.js.map +1 -0
  397. package/services/mcpAdmin/__tests__/adminApiKeyService.test.d.ts +5 -0
  398. package/services/mcpAdmin/__tests__/adminApiKeyService.test.d.ts.map +1 -0
  399. package/services/mcpAdmin/__tests__/adminApiKeyService.test.js +289 -0
  400. package/services/mcpAdmin/__tests__/adminApiKeyService.test.js.map +1 -0
  401. package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.d.ts +5 -0
  402. package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.d.ts.map +1 -0
  403. package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.js +345 -0
  404. package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.js.map +1 -0
  405. package/services/mcpAdmin/__tests__/mcpAdminServer.test.d.ts +5 -0
  406. package/services/mcpAdmin/__tests__/mcpAdminServer.test.d.ts.map +1 -0
  407. package/services/mcpAdmin/__tests__/mcpAdminServer.test.js +453 -0
  408. package/services/mcpAdmin/__tests__/mcpAdminServer.test.js.map +1 -0
  409. package/services/mcpAdmin/__tests__/tools.test.d.ts +5 -0
  410. package/services/mcpAdmin/__tests__/tools.test.d.ts.map +1 -0
  411. package/services/mcpAdmin/__tests__/tools.test.js +371 -0
  412. package/services/mcpAdmin/__tests__/tools.test.js.map +1 -0
  413. package/services/mcpAdmin/adminApiKeyService.d.ts +61 -0
  414. package/services/mcpAdmin/adminApiKeyService.d.ts.map +1 -0
  415. package/services/mcpAdmin/adminApiKeyService.js +270 -0
  416. package/services/mcpAdmin/adminApiKeyService.js.map +1 -0
  417. package/services/mcpAdmin/index.d.ts +10 -0
  418. package/services/mcpAdmin/index.d.ts.map +1 -0
  419. package/services/mcpAdmin/index.js +43 -0
  420. package/services/mcpAdmin/index.js.map +1 -0
  421. package/services/mcpAdmin/mcpAdminServer.d.ts +76 -0
  422. package/services/mcpAdmin/mcpAdminServer.d.ts.map +1 -0
  423. package/services/mcpAdmin/mcpAdminServer.js +243 -0
  424. package/services/mcpAdmin/mcpAdminServer.js.map +1 -0
  425. package/services/mcpAdmin/tools/agentTools.d.ts +27 -0
  426. package/services/mcpAdmin/tools/agentTools.d.ts.map +1 -0
  427. package/services/mcpAdmin/tools/agentTools.js +359 -0
  428. package/services/mcpAdmin/tools/agentTools.js.map +1 -0
  429. package/services/mcpAdmin/tools/index.d.ts +15 -0
  430. package/services/mcpAdmin/tools/index.d.ts.map +1 -0
  431. package/services/mcpAdmin/tools/index.js +30 -0
  432. package/services/mcpAdmin/tools/index.js.map +1 -0
  433. package/services/mcpAdmin/tools/mcpServerTools.d.ts +27 -0
  434. package/services/mcpAdmin/tools/mcpServerTools.d.ts.map +1 -0
  435. package/services/mcpAdmin/tools/mcpServerTools.js +334 -0
  436. package/services/mcpAdmin/tools/mcpServerTools.js.map +1 -0
  437. package/services/mcpAdmin/tools/projectTools.d.ts +27 -0
  438. package/services/mcpAdmin/tools/projectTools.d.ts.map +1 -0
  439. package/services/mcpAdmin/tools/projectTools.js +353 -0
  440. package/services/mcpAdmin/tools/projectTools.js.map +1 -0
  441. package/services/mcpAdmin/tools/systemTools.d.ts +23 -0
  442. package/services/mcpAdmin/tools/systemTools.d.ts.map +1 -0
  443. package/services/mcpAdmin/tools/systemTools.js +241 -0
  444. package/services/mcpAdmin/tools/systemTools.js.map +1 -0
  445. package/services/mcpAdmin/types.d.ts +124 -0
  446. package/services/mcpAdmin/types.d.ts.map +1 -0
  447. package/services/mcpAdmin/types.js +18 -0
  448. package/services/mcpAdmin/types.js.map +1 -0
  449. package/{backend/dist/services → services}/messageQueue.d.ts.map +1 -1
  450. package/{backend/dist/services → services}/messageQueue.js +16 -3
  451. package/services/messageQueue.js.map +1 -0
  452. package/services/pluginInstaller.d.ts +58 -0
  453. package/services/pluginInstaller.d.ts.map +1 -0
  454. package/services/pluginInstaller.js +321 -0
  455. package/services/pluginInstaller.js.map +1 -0
  456. package/services/pluginParser.d.ts +45 -0
  457. package/services/pluginParser.d.ts.map +1 -0
  458. package/services/pluginParser.js +437 -0
  459. package/services/pluginParser.js.map +1 -0
  460. package/services/pluginPaths.d.ts +80 -0
  461. package/services/pluginPaths.d.ts.map +1 -0
  462. package/services/pluginPaths.js +274 -0
  463. package/services/pluginPaths.js.map +1 -0
  464. package/services/pluginScanner.d.ts +36 -0
  465. package/services/pluginScanner.d.ts.map +1 -0
  466. package/services/pluginScanner.js +251 -0
  467. package/services/pluginScanner.js.map +1 -0
  468. package/services/pluginSymlink.d.ts +54 -0
  469. package/services/pluginSymlink.d.ts.map +1 -0
  470. package/services/pluginSymlink.js +223 -0
  471. package/services/pluginSymlink.js.map +1 -0
  472. package/services/projectMetadataStorage.d.ts +114 -0
  473. package/services/projectMetadataStorage.d.ts.map +1 -0
  474. package/services/projectMetadataStorage.js +711 -0
  475. package/services/projectMetadataStorage.js.map +1 -0
  476. package/services/scheduledTaskStorage.d.ts +52 -0
  477. package/services/scheduledTaskStorage.d.ts.map +1 -0
  478. package/services/scheduledTaskStorage.js +285 -0
  479. package/services/scheduledTaskStorage.js.map +1 -0
  480. package/services/schedulerService.d.ts +81 -0
  481. package/services/schedulerService.d.ts.map +1 -0
  482. package/services/schedulerService.js +743 -0
  483. package/services/schedulerService.js.map +1 -0
  484. package/{backend/dist/services → services}/sessionManager.d.ts +6 -4
  485. package/services/sessionManager.d.ts.map +1 -0
  486. package/{backend/dist/services → services}/sessionManager.js +77 -16
  487. package/services/sessionManager.js.map +1 -0
  488. package/services/skillStorage.d.ts +60 -0
  489. package/services/skillStorage.d.ts.map +1 -0
  490. package/services/skillStorage.js +398 -0
  491. package/services/skillStorage.js.map +1 -0
  492. package/services/slackAIService.d.ts +81 -0
  493. package/services/slackAIService.d.ts.map +1 -0
  494. package/services/slackAIService.js +1091 -0
  495. package/services/slackAIService.js.map +1 -0
  496. package/services/slackClient.d.ts +46 -0
  497. package/services/slackClient.d.ts.map +1 -0
  498. package/services/slackClient.js +85 -0
  499. package/services/slackClient.js.map +1 -0
  500. package/services/slackSessionLock.d.ts +79 -0
  501. package/services/slackSessionLock.d.ts.map +1 -0
  502. package/services/slackSessionLock.js +353 -0
  503. package/services/slackSessionLock.js.map +1 -0
  504. package/services/slackThreadMapper.d.ts +57 -0
  505. package/services/slackThreadMapper.d.ts.map +1 -0
  506. package/services/slackThreadMapper.js +140 -0
  507. package/services/slackThreadMapper.js.map +1 -0
  508. package/types/a2a.d.ts +275 -0
  509. package/types/a2a.d.ts.map +1 -0
  510. package/types/a2a.js +23 -0
  511. package/types/a2a.js.map +1 -0
  512. package/types/agents.d.ts +95 -0
  513. package/types/agents.d.ts.map +1 -0
  514. package/types/agents.js +46 -0
  515. package/types/agents.js.map +1 -0
  516. package/types/claude-history.d.ts +62 -0
  517. package/types/claude-history.d.ts.map +1 -0
  518. package/types/claude-history.js +4 -0
  519. package/types/claude-history.js.map +1 -0
  520. package/types/claude-versions.d.ts +36 -0
  521. package/types/claude-versions.d.ts.map +1 -0
  522. package/types/claude-versions.js +3 -0
  523. package/types/claude-versions.js.map +1 -0
  524. package/types/commands.d.ts +50 -0
  525. package/types/commands.d.ts.map +1 -0
  526. package/types/commands.js +23 -0
  527. package/types/commands.js.map +1 -0
  528. package/types/plugins.d.ts +144 -0
  529. package/types/plugins.d.ts.map +1 -0
  530. package/types/plugins.js +8 -0
  531. package/types/plugins.js.map +1 -0
  532. package/types/projects.d.ts +42 -0
  533. package/types/projects.d.ts.map +1 -0
  534. package/types/projects.js +4 -0
  535. package/types/projects.js.map +1 -0
  536. package/types/scheduledTasks.d.ts +164 -0
  537. package/types/scheduledTasks.d.ts.map +1 -0
  538. package/types/scheduledTasks.js +17 -0
  539. package/types/scheduledTasks.js.map +1 -0
  540. package/types/skills.d.ts +91 -0
  541. package/types/skills.d.ts.map +1 -0
  542. package/types/skills.js +6 -0
  543. package/types/skills.js.map +1 -0
  544. package/types/slack.d.ts +97 -0
  545. package/types/slack.d.ts.map +1 -0
  546. package/types/slack.js +8 -0
  547. package/types/slack.js.map +1 -0
  548. package/types/streaming.d.ts +12 -0
  549. package/types/streaming.d.ts.map +1 -0
  550. package/types/streaming.js +8 -0
  551. package/types/streaming.js.map +1 -0
  552. package/types/subagents.d.ts +26 -0
  553. package/types/subagents.d.ts.map +1 -0
  554. package/types/subagents.js +3 -0
  555. package/types/subagents.js.map +1 -0
  556. package/utils/__tests__/claudeUtils.test.d.ts +5 -0
  557. package/utils/__tests__/claudeUtils.test.d.ts.map +1 -0
  558. package/utils/__tests__/claudeUtils.test.js +282 -0
  559. package/utils/__tests__/claudeUtils.test.js.map +1 -0
  560. package/utils/__tests__/sessionUtils.test.d.ts +5 -0
  561. package/utils/__tests__/sessionUtils.test.d.ts.map +1 -0
  562. package/utils/__tests__/sessionUtils.test.js +295 -0
  563. package/utils/__tests__/sessionUtils.test.js.map +1 -0
  564. package/utils/agentCardCache.d.ts +93 -0
  565. package/utils/agentCardCache.d.ts.map +1 -0
  566. package/utils/agentCardCache.js +212 -0
  567. package/utils/agentCardCache.js.map +1 -0
  568. package/utils/claudeUtils.d.ts +54 -0
  569. package/utils/claudeUtils.d.ts.map +1 -0
  570. package/utils/claudeUtils.js +387 -0
  571. package/utils/claudeUtils.js.map +1 -0
  572. package/utils/fileUtils.d.ts +2 -0
  573. package/utils/fileUtils.d.ts.map +1 -0
  574. package/utils/fileUtils.js +11 -0
  575. package/utils/fileUtils.js.map +1 -0
  576. package/utils/jwt.d.ts +30 -0
  577. package/utils/jwt.d.ts.map +1 -0
  578. package/utils/jwt.js +95 -0
  579. package/utils/jwt.js.map +1 -0
  580. package/utils/sessionUtils.d.ts +64 -0
  581. package/utils/sessionUtils.d.ts.map +1 -0
  582. package/utils/sessionUtils.js +266 -0
  583. package/utils/sessionUtils.js.map +1 -0
  584. package/README.zh-CN.md +0 -525
  585. package/backend/dist/bin/agentstudio.js +0 -120
  586. package/backend/dist/bin/agentstudio.js.map +0 -1
  587. package/backend/dist/frontend/assets/AgentsPage-Dqb_aqAA.js +0 -1
  588. package/backend/dist/frontend/assets/ChatPage-L8Paywyc.js +0 -91
  589. package/backend/dist/frontend/assets/CommandForm-DLl7EIMS.js +0 -7
  590. package/backend/dist/frontend/assets/CommandsPage-Bzavq0Ec.js +0 -1
  591. package/backend/dist/frontend/assets/DashboardPage-B3o4AYFT.js +0 -15
  592. package/backend/dist/frontend/assets/FileBrowser-DL3ayaqb.js +0 -1
  593. package/backend/dist/frontend/assets/GeneralSettingsPage-CBN_de-V.js +0 -1
  594. package/backend/dist/frontend/assets/LandingPage-Dl4ioKos.js +0 -1
  595. package/backend/dist/frontend/assets/LoginPage-4QqRdiSi.js +0 -12
  596. package/backend/dist/frontend/assets/McpPage-CY3tYiqj.js +0 -39
  597. package/backend/dist/frontend/assets/MemorySettingsPage-DGxrok5K.js +0 -1
  598. package/backend/dist/frontend/assets/ProjectSelector-hgmGYVFh.js +0 -1
  599. package/backend/dist/frontend/assets/ProjectsPage-D399IM0c.js +0 -14
  600. package/backend/dist/frontend/assets/SettingsLayout-CL_K-lzJ.js +0 -1
  601. package/backend/dist/frontend/assets/SubagentsPage-Chbhj8p2.js +0 -1
  602. package/backend/dist/frontend/assets/UnifiedToolSelector-CsM9qBvs.js +0 -1
  603. package/backend/dist/frontend/assets/VersionSettingsPage-74Q-LVgA.js +0 -5
  604. package/backend/dist/frontend/assets/agents-ClAzIJTw.js +0 -1
  605. package/backend/dist/frontend/assets/authFetch-BATQyPG5.js +0 -1
  606. package/backend/dist/frontend/assets/index-B9YHa7XT.css +0 -1
  607. package/backend/dist/frontend/assets/index-B_CTNvca.js +0 -268
  608. package/backend/dist/frontend/assets/monaco-editor-C7Z4sOhS.js +0 -19
  609. package/backend/dist/frontend/assets/tabManager-DV8urRBM.js +0 -30
  610. package/backend/dist/frontend/assets/tools-C4EPanYi.js +0 -1
  611. package/backend/dist/frontend/assets/useAgents-DwnOE1_k.js +0 -2
  612. package/backend/dist/frontend/assets/useClaudeVersions-CQdGnCqv.js +0 -1
  613. package/backend/dist/frontend/assets/useCommands-CCVaurbt.js +0 -1
  614. package/backend/dist/index.d.ts +0 -3
  615. package/backend/dist/index.d.ts.map +0 -1
  616. package/backend/dist/index.js +0 -157
  617. package/backend/dist/index.js.map +0 -1
  618. package/backend/dist/middleware/auth.d.ts.map +0 -1
  619. package/backend/dist/middleware/auth.js +0 -21
  620. package/backend/dist/middleware/auth.js.map +0 -1
  621. package/backend/dist/routes/agents.js +0 -803
  622. package/backend/dist/routes/agents.js.map +0 -1
  623. package/backend/dist/routes/auth.js +0 -60
  624. package/backend/dist/routes/auth.js.map +0 -1
  625. package/backend/dist/routes/commands.js.map +0 -1
  626. package/backend/dist/routes/files.js.map +0 -1
  627. package/backend/dist/routes/mcp.d.ts.map +0 -1
  628. package/backend/dist/routes/mcp.js.map +0 -1
  629. package/backend/dist/routes/media.d.ts.map +0 -1
  630. package/backend/dist/routes/media.js.map +0 -1
  631. package/backend/dist/routes/projects.js +0 -528
  632. package/backend/dist/routes/projects.js.map +0 -1
  633. package/backend/dist/routes/sessions.js.map +0 -1
  634. package/backend/dist/routes/settings.js.map +0 -1
  635. package/backend/dist/routes/slides.js.map +0 -1
  636. package/backend/dist/routes/subagents.js.map +0 -1
  637. package/backend/dist/services/claudeSession.d.ts.map +0 -1
  638. package/backend/dist/services/claudeSession.js.map +0 -1
  639. package/backend/dist/services/messageQueue.js.map +0 -1
  640. package/backend/dist/services/sessionManager.d.ts.map +0 -1
  641. package/backend/dist/services/sessionManager.js.map +0 -1
  642. package/backend/dist/utils/jwt.d.ts +0 -15
  643. package/backend/dist/utils/jwt.d.ts.map +0 -1
  644. package/backend/dist/utils/jwt.js +0 -28
  645. package/backend/dist/utils/jwt.js.map +0 -1
  646. /package/{backend/dist/bin → bin}/agentstudio.d.ts +0 -0
  647. /package/{backend/dist/bin → bin}/agentstudio.d.ts.map +0 -0
  648. /package/{backend/dist/frontend → public}/assets/ChatPage-BvQmXfcP.css +0 -0
  649. /package/{backend/dist/frontend → public}/assets/agents-DwCY2K8p.css +0 -0
  650. /package/{backend/dist/frontend → public}/assets/dateFormat-CXa8VnEC.js +0 -0
  651. /package/{backend/dist/frontend → public}/cc-studio.png +0 -0
  652. /package/{backend/dist/frontend → public}/vite.svg +0 -0
  653. /package/{backend/dist/routes → routes}/agents.d.ts +0 -0
  654. /package/{backend/dist/routes → routes}/auth.d.ts +0 -0
  655. /package/{backend/dist/routes → routes}/commands.d.ts +0 -0
  656. /package/{backend/dist/routes → routes}/files.d.ts +0 -0
  657. /package/{backend/dist/routes → routes}/media.d.ts +0 -0
  658. /package/{backend/dist/routes → routes}/projects.d.ts +0 -0
  659. /package/{backend/dist/routes → routes}/sessions.d.ts +0 -0
  660. /package/{backend/dist/routes → routes}/settings.d.ts +0 -0
  661. /package/{backend/dist/routes → routes}/slides.d.ts +0 -0
  662. /package/{backend/dist/routes → routes}/subagents.d.ts +0 -0
  663. /package/{backend/dist/routes → routes}/subagents.d.ts.map +0 -0
  664. /package/{backend/dist/services → services}/messageQueue.d.ts +0 -0
package/routes/a2a.js ADDED
@@ -0,0 +1,649 @@
1
+ "use strict";
2
+ /**
3
+ * A2A Protocol Routes
4
+ *
5
+ * Implements A2A (Agent-to-Agent) protocol HTTP endpoints for external agent communication.
6
+ *
7
+ * Endpoints:
8
+ * - GET /.well-known/agent-card.json - Retrieve Agent Card (discovery)
9
+ * - POST /messages - Send synchronous message
10
+ * - POST /tasks - Create asynchronous task
11
+ * - GET /tasks/:taskId - Query task status
12
+ * - DELETE /tasks/:taskId - Cancel task
13
+ *
14
+ * All endpoints require API key authentication via Authorization header.
15
+ */
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ const express_1 = __importDefault(require("express"));
21
+ const a2aAuth_js_1 = require("../middleware/a2aAuth.js");
22
+ const rateLimiting_js_1 = require("../middleware/rateLimiting.js");
23
+ const a2a_js_1 = require("../schemas/a2a.js");
24
+ const agentCardService_js_1 = require("../services/a2a/agentCardService.js");
25
+ const agentCardCache_js_1 = require("../utils/agentCardCache.js");
26
+ const agentStorage_js_1 = require("../services/agentStorage.js");
27
+ const projectMetadataStorage_js_1 = require("../services/projectMetadataStorage.js");
28
+ const taskManager_js_1 = require("../services/a2a/taskManager.js");
29
+ const a2aHistoryService_js_1 = require("../services/a2a/a2aHistoryService.js");
30
+ const sessionManager_js_1 = require("../services/sessionManager.js");
31
+ const sessionUtils_js_1 = require("../utils/sessionUtils.js");
32
+ const claudeUtils_js_1 = require("../utils/claudeUtils.js");
33
+ const a2aQueryService_js_1 = require("../services/a2a/a2aQueryService.js");
34
+ const router = express_1.default.Router({ mergeParams: true });
35
+ // Initialize storage services
36
+ const agentStorage = new agentStorage_js_1.AgentStorage();
37
+ const projectMetadataStorage = new projectMetadataStorage_js_1.ProjectMetadataStorage();
38
+ // ============================================================================
39
+ // Middleware: Apply authentication and rate limiting to all routes
40
+ // ============================================================================
41
+ // All routes require authentication
42
+ router.use(a2aAuth_js_1.a2aAuth);
43
+ // Default rate limiting for all routes
44
+ router.use(rateLimiting_js_1.a2aRateLimiter);
45
+ // ============================================================================
46
+ // GET /.well-known/agent-card.json - Agent Card Discovery
47
+ // ============================================================================
48
+ /**
49
+ * Retrieve Agent Card for an agent
50
+ * This is the standard A2A discovery endpoint
51
+ *
52
+ * @route GET /a2a/:a2aAgentId/.well-known/agent-card.json
53
+ * @access Authenticated (API key required)
54
+ * @rateLimit 100 requests/hour per API key
55
+ *
56
+ * @response 200 - Agent Card JSON
57
+ * @response 401 - Unauthorized (invalid/missing API key)
58
+ * @response 404 - Agent not found
59
+ * @response 429 - Rate limit exceeded
60
+ */
61
+ router.get('/.well-known/agent-card.json', async (req, res) => {
62
+ try {
63
+ const { a2aContext } = req;
64
+ if (!a2aContext) {
65
+ return res.status(500).json({
66
+ error: 'Authentication context missing',
67
+ code: 'AUTH_CONTEXT_MISSING',
68
+ });
69
+ }
70
+ // Load agent configuration
71
+ const agentConfig = agentStorage.getAgent(a2aContext.agentType);
72
+ if (!agentConfig) {
73
+ return res.status(404).json({
74
+ error: `Agent '${a2aContext.agentType}' not found`,
75
+ code: 'AGENT_NOT_FOUND',
76
+ });
77
+ }
78
+ // Get project metadata for project name
79
+ const projectMetadata = projectMetadataStorage.getProjectMetadata(a2aContext.workingDirectory);
80
+ const projectName = projectMetadata?.name || a2aContext.projectId;
81
+ // Build project context for Agent Card generation
82
+ const baseUrl = `${req.protocol}://${req.get('host')}`;
83
+ const projectContext = {
84
+ projectId: a2aContext.projectId,
85
+ projectName,
86
+ workingDirectory: a2aContext.workingDirectory,
87
+ a2aAgentId: a2aContext.a2aAgentId,
88
+ baseUrl,
89
+ };
90
+ // Try to get from cache first
91
+ let agentCard = agentCardCache_js_1.agentCardCache.get(agentConfig, projectContext);
92
+ if (!agentCard) {
93
+ // Generate Agent Card from agent configuration
94
+ agentCard = (0, agentCardService_js_1.generateAgentCard)(agentConfig, projectContext);
95
+ // Cache the generated Agent Card
96
+ agentCardCache_js_1.agentCardCache.set(agentConfig, projectContext, agentCard);
97
+ console.info('[A2A] Agent Card generated and cached:', {
98
+ a2aAgentId: a2aContext.a2aAgentId,
99
+ agentType: a2aContext.agentType,
100
+ skillCount: agentCard.skills.length,
101
+ });
102
+ }
103
+ else {
104
+ console.info('[A2A] Agent Card served from cache:', {
105
+ a2aAgentId: a2aContext.a2aAgentId,
106
+ agentType: a2aContext.agentType,
107
+ });
108
+ }
109
+ res.json(agentCard);
110
+ }
111
+ catch (error) {
112
+ console.error('[A2A] Error retrieving agent card:', error);
113
+ res.status(500).json({
114
+ error: 'Failed to retrieve agent card',
115
+ code: 'AGENT_CARD_ERROR',
116
+ });
117
+ }
118
+ });
119
+ // ============================================================================
120
+ // POST /messages - Synchronous Message
121
+ // ============================================================================
122
+ /**
123
+ * Send a synchronous message to an agent
124
+ * The agent processes the message and returns a response immediately
125
+ *
126
+ * @route POST /a2a/:a2aAgentId/messages
127
+ * @access Authenticated (API key required)
128
+ * @rateLimit 100 requests/hour per API key
129
+ *
130
+ * @body {message: string, context?: Record<string, unknown>}
131
+ * @response 200 - Message response
132
+ * @response 400 - Invalid request
133
+ * @response 401 - Unauthorized
134
+ * @response 429 - Rate limit exceeded
135
+ * @response 500 - Processing error
136
+ */
137
+ router.post('/messages', async (req, res) => {
138
+ try {
139
+ const { a2aContext } = req;
140
+ if (!a2aContext) {
141
+ return res.status(500).json({
142
+ error: 'Authentication context missing',
143
+ code: 'AUTH_CONTEXT_MISSING',
144
+ });
145
+ }
146
+ // Validate request body
147
+ const validation = (0, a2a_js_1.validateSafe)(a2a_js_1.A2AMessageRequestSchema, req.body);
148
+ if (!validation.success) {
149
+ return res.status(400).json({
150
+ error: 'Invalid request',
151
+ code: 'VALIDATION_ERROR',
152
+ details: validation.errors,
153
+ });
154
+ }
155
+ const { message, sessionId, sessionMode = 'new' } = validation.data;
156
+ const stream = req.query.stream === 'true' || req.headers.accept === 'text/event-stream';
157
+ console.info('[A2A] Message received:', {
158
+ a2aAgentId: a2aContext.a2aAgentId,
159
+ projectId: a2aContext.projectId,
160
+ agentType: a2aContext.agentType,
161
+ messageLength: message.length,
162
+ sessionId,
163
+ sessionMode,
164
+ stream,
165
+ });
166
+ // Load agent configuration
167
+ const agentConfig = agentStorage.getAgent(a2aContext.agentType);
168
+ if (!agentConfig) {
169
+ return res.status(404).json({
170
+ error: `Agent '${a2aContext.agentType}' not found`,
171
+ code: 'AGENT_NOT_FOUND',
172
+ });
173
+ }
174
+ if (!agentConfig.enabled) {
175
+ return res.status(403).json({
176
+ error: `Agent '${a2aContext.agentType}' is disabled`,
177
+ code: 'AGENT_DISABLED',
178
+ });
179
+ }
180
+ // Build query options for Claude using the shared utility
181
+ // This automatically handles A2A SDK MCP server integration
182
+ const { queryOptions } = await (0, claudeUtils_js_1.buildQueryOptions)({
183
+ systemPrompt: agentConfig.systemPrompt || undefined,
184
+ allowedTools: agentConfig.allowedTools || [],
185
+ maxTurns: 30,
186
+ workingDirectory: a2aContext.workingDirectory,
187
+ permissionMode: 'default',
188
+ model: 'sonnet', // Default model
189
+ }, a2aContext.workingDirectory, undefined, // mcpTools
190
+ undefined, // permissionMode
191
+ undefined, // model
192
+ undefined, // claudeVersion
193
+ undefined // defaultEnv
194
+ );
195
+ // Override specific options for A2A
196
+ // User requested includePartialMessages = false for A2A streaming to get complete messages
197
+ queryOptions.includePartialMessages = false;
198
+ const startTime = Date.now();
199
+ // ============================================================================
200
+ // sessionMode='new': Use one-shot Query (no SessionManager/ClaudeSession reuse)
201
+ // ============================================================================
202
+ if (sessionMode === 'new') {
203
+ console.log(`🆕 [A2A] Using one-shot Query mode (sessionMode=new)`);
204
+ // Add resume option if sessionId is provided
205
+ if (sessionId) {
206
+ queryOptions.resume = sessionId;
207
+ }
208
+ if (stream) {
209
+ // Streaming Mode (SSE) with one-shot Query
210
+ res.setHeader('Content-Type', 'text/event-stream');
211
+ res.setHeader('Cache-Control', 'no-cache');
212
+ res.setHeader('Connection', 'keep-alive');
213
+ res.flushHeaders();
214
+ let capturedSessionId = null;
215
+ try {
216
+ const result = await (0, a2aQueryService_js_1.executeA2AQueryStreaming)(message, undefined, // images
217
+ queryOptions, (sdkMessage) => {
218
+ // Capture session ID
219
+ if (sdkMessage.session_id && !capturedSessionId) {
220
+ capturedSessionId = sdkMessage.session_id;
221
+ }
222
+ const eventData = {
223
+ ...sdkMessage,
224
+ sessionId: capturedSessionId || sessionId,
225
+ timestamp: Date.now(),
226
+ };
227
+ // Write to SSE stream
228
+ res.write(`data: ${JSON.stringify(eventData)}\n\n`);
229
+ // Persist to history (fire and forget for streaming)
230
+ if (capturedSessionId || sessionId) {
231
+ a2aHistoryService_js_1.a2aHistoryService.appendEvent(a2aContext.workingDirectory, capturedSessionId || sessionId, eventData).catch(err => console.error('[A2A] Failed to write history event:', err));
232
+ }
233
+ // Check for completion
234
+ if (sdkMessage.type === 'result') {
235
+ res.write(`data: ${JSON.stringify({ type: 'done' })}\n\n`);
236
+ }
237
+ });
238
+ capturedSessionId = result.sessionId || capturedSessionId;
239
+ res.end();
240
+ }
241
+ catch (error) {
242
+ console.error('[A2A] Error in one-shot streaming query:', error);
243
+ const errorEvent = {
244
+ type: 'error',
245
+ error: error instanceof Error ? error.message : String(error)
246
+ };
247
+ res.write(`data: ${JSON.stringify(errorEvent)}\n\n`);
248
+ res.end();
249
+ }
250
+ }
251
+ else {
252
+ // Synchronous Mode with one-shot Query
253
+ try {
254
+ const result = await (0, a2aQueryService_js_1.executeA2AQuery)(message, undefined, // images
255
+ queryOptions, async (sdkMessage) => {
256
+ // Persist to history
257
+ const eventData = {
258
+ ...sdkMessage,
259
+ sessionId: sessionId,
260
+ timestamp: Date.now(),
261
+ };
262
+ if (sessionId) {
263
+ try {
264
+ await a2aHistoryService_js_1.a2aHistoryService.appendEvent(a2aContext.workingDirectory, sessionId, eventData);
265
+ }
266
+ catch (err) {
267
+ console.error('[A2A] Failed to write history event:', err);
268
+ }
269
+ }
270
+ });
271
+ const processingTimeMs = Date.now() - startTime;
272
+ console.info('[A2A] Message processed successfully (one-shot mode):', {
273
+ a2aAgentId: a2aContext.a2aAgentId,
274
+ processingTimeMs,
275
+ responseLength: result.fullResponse.length,
276
+ tokensUsed: result.tokensUsed,
277
+ sessionId: result.sessionId,
278
+ });
279
+ res.json({
280
+ response: result.fullResponse || 'No response generated',
281
+ sessionId: result.sessionId,
282
+ metadata: {
283
+ processingTimeMs,
284
+ tokensUsed: result.tokensUsed,
285
+ },
286
+ });
287
+ }
288
+ catch (error) {
289
+ console.error('[A2A] Error in one-shot query:', error);
290
+ throw error;
291
+ }
292
+ }
293
+ }
294
+ else {
295
+ // ============================================================================
296
+ // sessionMode='reuse': Use ClaudeSession/SessionManager (original behavior)
297
+ // ============================================================================
298
+ console.log(`♻️ [A2A] Using ClaudeSession reuse mode (sessionMode=reuse)`);
299
+ const { claudeSession, actualSessionId } = await (0, sessionUtils_js_1.handleSessionManagement)(a2aContext.agentType, sessionId || null, a2aContext.workingDirectory, queryOptions, undefined, // claudeVersionId
300
+ undefined, // modelId
301
+ 'reuse');
302
+ if (stream) {
303
+ // Streaming Mode (SSE) with ClaudeSession
304
+ res.setHeader('Content-Type', 'text/event-stream');
305
+ res.setHeader('Cache-Control', 'no-cache');
306
+ res.setHeader('Connection', 'keep-alive');
307
+ res.flushHeaders();
308
+ const userMessage = {
309
+ type: 'user',
310
+ message: {
311
+ role: 'user',
312
+ content: [{ type: 'text', text: message }]
313
+ }
314
+ };
315
+ try {
316
+ await claudeSession.sendMessage(userMessage, async (sdkMessage) => {
317
+ const eventData = {
318
+ ...sdkMessage,
319
+ sessionId: actualSessionId,
320
+ timestamp: Date.now(),
321
+ };
322
+ res.write(`data: ${JSON.stringify(eventData)}\n\n`);
323
+ try {
324
+ if (actualSessionId) {
325
+ await a2aHistoryService_js_1.a2aHistoryService.appendEvent(a2aContext.workingDirectory, actualSessionId, eventData);
326
+ }
327
+ }
328
+ catch (err) {
329
+ console.error('[A2A] Failed to write history event:', err);
330
+ }
331
+ if (sdkMessage.type === 'result') {
332
+ res.write(`data: ${JSON.stringify({ type: 'done' })}\n\n`);
333
+ res.end();
334
+ }
335
+ });
336
+ }
337
+ catch (error) {
338
+ console.error('[A2A] Error in streaming session:', error);
339
+ const errorEvent = {
340
+ type: 'error',
341
+ error: error instanceof Error ? error.message : String(error)
342
+ };
343
+ res.write(`data: ${JSON.stringify(errorEvent)}\n\n`);
344
+ res.end();
345
+ }
346
+ }
347
+ else {
348
+ // Synchronous Mode with ClaudeSession
349
+ let fullResponse = '';
350
+ let tokensUsed = 0;
351
+ try {
352
+ await new Promise((resolve, reject) => {
353
+ const userMessage = {
354
+ type: 'user',
355
+ message: {
356
+ role: 'user',
357
+ content: [{ type: 'text', text: message }]
358
+ }
359
+ };
360
+ claudeSession.sendMessage(userMessage, async (sdkMessage) => {
361
+ const eventData = {
362
+ ...sdkMessage,
363
+ sessionId: actualSessionId,
364
+ timestamp: Date.now(),
365
+ };
366
+ try {
367
+ if (actualSessionId) {
368
+ await a2aHistoryService_js_1.a2aHistoryService.appendEvent(a2aContext.workingDirectory, actualSessionId, eventData);
369
+ }
370
+ }
371
+ catch (err) {
372
+ console.error('[A2A] Failed to write history event:', err);
373
+ }
374
+ if (sdkMessage.type === 'assistant' && sdkMessage.message?.content) {
375
+ for (const block of sdkMessage.message.content) {
376
+ if (block.type === 'text') {
377
+ fullResponse += block.text;
378
+ }
379
+ }
380
+ }
381
+ if (sdkMessage.type === 'assistant' && sdkMessage.usage) {
382
+ const usage = sdkMessage.usage;
383
+ tokensUsed = (usage.input_tokens || 0) + (usage.output_tokens || 0);
384
+ }
385
+ const sdkSessionId = sdkMessage.session_id;
386
+ if (sdkSessionId && claudeSession.getClaudeSessionId() !== sdkSessionId) {
387
+ claudeSession.setClaudeSessionId(sdkSessionId);
388
+ sessionManager_js_1.sessionManager.confirmSessionId(claudeSession, sdkSessionId);
389
+ console.log(`✅ Confirmed session ${sdkSessionId} for agent: ${a2aContext.agentType}`);
390
+ }
391
+ if (sdkMessage.type === 'result') {
392
+ resolve();
393
+ }
394
+ }).catch((err) => {
395
+ reject(err);
396
+ });
397
+ });
398
+ const finalSessionId = claudeSession.getClaudeSessionId();
399
+ const processingTimeMs = Date.now() - startTime;
400
+ console.info('[A2A] Message processed successfully:', {
401
+ a2aAgentId: a2aContext.a2aAgentId,
402
+ processingTimeMs,
403
+ responseLength: fullResponse.length,
404
+ tokensUsed,
405
+ sessionId: finalSessionId,
406
+ });
407
+ res.json({
408
+ response: fullResponse || 'No response generated',
409
+ sessionId: finalSessionId,
410
+ metadata: {
411
+ processingTimeMs,
412
+ tokensUsed,
413
+ },
414
+ });
415
+ }
416
+ catch (error) {
417
+ console.error('[A2A] Error calling Claude:', error);
418
+ throw error;
419
+ }
420
+ }
421
+ }
422
+ }
423
+ catch (error) {
424
+ console.error('[A2A] Error processing message:', error);
425
+ if (!res.headersSent) {
426
+ res.status(500).json({
427
+ error: 'Failed to process message',
428
+ code: 'MESSAGE_PROCESSING_ERROR',
429
+ });
430
+ }
431
+ }
432
+ });
433
+ // ============================================================================
434
+ // POST /tasks - Create Asynchronous Task
435
+ // ============================================================================
436
+ /**
437
+ * Create an asynchronous task for long-running operations
438
+ * Returns immediately with task ID for status polling
439
+ *
440
+ * @route POST /a2a/:a2aAgentId/tasks
441
+ * @access Authenticated (API key required)
442
+ * @rateLimit 50 requests/hour per API key (stricter for task creation)
443
+ *
444
+ * @body {message: string, timeout?: number, context?: Record<string, unknown>}
445
+ * @response 202 - Task created (returns task ID and status URL)
446
+ * @response 400 - Invalid request
447
+ * @response 401 - Unauthorized
448
+ * @response 429 - Rate limit exceeded
449
+ * @response 500 - Task creation error
450
+ */
451
+ router.post('/tasks', rateLimiting_js_1.a2aStrictRateLimiter, async (req, res) => {
452
+ try {
453
+ const { a2aContext } = req;
454
+ if (!a2aContext) {
455
+ return res.status(500).json({
456
+ error: 'Authentication context missing',
457
+ code: 'AUTH_CONTEXT_MISSING',
458
+ });
459
+ }
460
+ // Validate request body
461
+ const validation = (0, a2a_js_1.validateSafe)(a2a_js_1.A2ATaskRequestSchema, req.body);
462
+ if (!validation.success) {
463
+ return res.status(400).json({
464
+ error: 'Invalid request',
465
+ code: 'VALIDATION_ERROR',
466
+ details: validation.errors,
467
+ });
468
+ }
469
+ const { message, timeout, context } = validation.data;
470
+ console.info('[A2A] Task creation requested:', {
471
+ a2aAgentId: a2aContext.a2aAgentId,
472
+ projectId: a2aContext.projectId,
473
+ agentType: a2aContext.agentType,
474
+ timeout,
475
+ });
476
+ // Create task using TaskManager
477
+ const task = await taskManager_js_1.taskManager.createTask({
478
+ workingDirectory: a2aContext.workingDirectory,
479
+ projectId: a2aContext.projectId,
480
+ agentId: a2aContext.agentType,
481
+ a2aAgentId: a2aContext.a2aAgentId,
482
+ input: {
483
+ message,
484
+ additionalContext: context,
485
+ },
486
+ timeoutMs: timeout,
487
+ });
488
+ res.status(202).json({
489
+ taskId: task.id,
490
+ status: task.status,
491
+ checkUrl: `/a2a/${a2aContext.a2aAgentId}/tasks/${task.id}`,
492
+ });
493
+ }
494
+ catch (error) {
495
+ console.error('[A2A] Error creating task:', error);
496
+ res.status(500).json({
497
+ error: 'Failed to create task',
498
+ code: 'TASK_CREATION_ERROR',
499
+ });
500
+ }
501
+ });
502
+ // ============================================================================
503
+ // GET /tasks/:taskId - Query Task Status
504
+ // ============================================================================
505
+ /**
506
+ * Query the status of an asynchronous task
507
+ *
508
+ * @route GET /a2a/:a2aAgentId/tasks/:taskId
509
+ * @access Authenticated (API key required)
510
+ * @rateLimit 100 requests/hour per API key
511
+ *
512
+ * @response 200 - Task status
513
+ * @response 401 - Unauthorized
514
+ * @response 404 - Task not found
515
+ * @response 429 - Rate limit exceeded
516
+ */
517
+ router.get('/tasks/:taskId', async (req, res) => {
518
+ try {
519
+ const { a2aContext } = req;
520
+ const { taskId } = req.params;
521
+ if (!a2aContext) {
522
+ return res.status(500).json({
523
+ error: 'Authentication context missing',
524
+ code: 'AUTH_CONTEXT_MISSING',
525
+ });
526
+ }
527
+ console.info('[A2A] Task status query:', {
528
+ a2aAgentId: a2aContext.a2aAgentId,
529
+ projectId: a2aContext.projectId,
530
+ taskId,
531
+ });
532
+ // Get task from TaskManager
533
+ const task = await taskManager_js_1.taskManager.getTask(a2aContext.workingDirectory, taskId);
534
+ if (!task) {
535
+ return res.status(404).json({
536
+ error: `Task not found: ${taskId}`,
537
+ code: 'TASK_NOT_FOUND',
538
+ });
539
+ }
540
+ // Build response
541
+ const response = {
542
+ taskId: task.id,
543
+ status: task.status,
544
+ createdAt: task.createdAt,
545
+ updatedAt: task.updatedAt,
546
+ };
547
+ // Add optional fields if present
548
+ if (task.startedAt) {
549
+ response.startedAt = task.startedAt;
550
+ }
551
+ if (task.completedAt) {
552
+ response.completedAt = task.completedAt;
553
+ }
554
+ if (task.output) {
555
+ response.output = task.output;
556
+ }
557
+ if (task.errorDetails) {
558
+ response.errorDetails = task.errorDetails;
559
+ }
560
+ if (task.progress) {
561
+ response.progress = task.progress;
562
+ }
563
+ // Add progress information for running tasks
564
+ if (task.status === 'running') {
565
+ response.progress = {
566
+ currentStep: 'Processing',
567
+ percentComplete: 50, // TODO: Implement real progress tracking
568
+ };
569
+ }
570
+ res.json(response);
571
+ }
572
+ catch (error) {
573
+ console.error('[A2A] Error querying task status:', error);
574
+ res.status(500).json({
575
+ error: 'Failed to query task status',
576
+ code: 'TASK_STATUS_ERROR',
577
+ });
578
+ }
579
+ });
580
+ // ============================================================================
581
+ // DELETE /tasks/:taskId - Cancel Task
582
+ // ============================================================================
583
+ /**
584
+ * Cancel a running or pending task
585
+ *
586
+ * @route DELETE /a2a/:a2aAgentId/tasks/:taskId
587
+ * @access Authenticated (API key required)
588
+ * @rateLimit 100 requests/hour per API key
589
+ *
590
+ * @response 200 - Task canceled
591
+ * @response 400 - Task cannot be canceled (already completed/failed)
592
+ * @response 401 - Unauthorized
593
+ * @response 404 - Task not found
594
+ * @response 429 - Rate limit exceeded
595
+ */
596
+ router.delete('/tasks/:taskId', async (req, res) => {
597
+ try {
598
+ const { a2aContext } = req;
599
+ const { taskId } = req.params;
600
+ if (!a2aContext) {
601
+ return res.status(500).json({
602
+ error: 'Authentication context missing',
603
+ code: 'AUTH_CONTEXT_MISSING',
604
+ });
605
+ }
606
+ console.info('[A2A] Task cancellation requested:', {
607
+ a2aAgentId: a2aContext.a2aAgentId,
608
+ projectId: a2aContext.projectId,
609
+ taskId,
610
+ });
611
+ // Cancel task using TaskManager
612
+ try {
613
+ const task = await taskManager_js_1.taskManager.cancelTask(a2aContext.workingDirectory, taskId);
614
+ res.json({
615
+ taskId: task.id,
616
+ status: task.status,
617
+ message: 'Task canceled successfully',
618
+ });
619
+ }
620
+ catch (error) {
621
+ // Handle specific error cases
622
+ if (error.message.includes('not found')) {
623
+ return res.status(404).json({
624
+ error: `Task not found: ${taskId}`,
625
+ code: 'TASK_NOT_FOUND',
626
+ });
627
+ }
628
+ if (error.message.includes('Cannot cancel')) {
629
+ return res.status(400).json({
630
+ error: error.message,
631
+ code: 'TASK_CANNOT_BE_CANCELED',
632
+ });
633
+ }
634
+ throw error; // Re-throw for general error handler
635
+ }
636
+ }
637
+ catch (error) {
638
+ console.error('[A2A] Error canceling task:', error);
639
+ res.status(500).json({
640
+ error: 'Failed to cancel task',
641
+ code: 'TASK_CANCELLATION_ERROR',
642
+ });
643
+ }
644
+ });
645
+ // ============================================================================
646
+ // Export Router
647
+ // ============================================================================
648
+ exports.default = router;
649
+ //# sourceMappingURL=a2a.js.map