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
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ /**
3
+ * API Key Service
4
+ *
5
+ * Manages inbound API keys for authenticating external callers to AgentStudio agents.
6
+ * Keys are stored hashed with bcryptjs (pure JavaScript, salt rounds 10) for security.
7
+ * Original keys are also encrypted with AES-256-GCM for display purposes.
8
+ *
9
+ * Storage: {projectPath}/.a2a/api-keys.json
10
+ * Format: { version: "1.0.0", keys: [A2AApiKey[]] }
11
+ *
12
+ * Key Format: agt_proj_{projectId}_{32-hex-chars}
13
+ */
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.generateApiKey = generateApiKey;
19
+ exports.hashApiKey = hashApiKey;
20
+ exports.validateApiKey = validateApiKey;
21
+ exports.revokeApiKey = revokeApiKey;
22
+ exports.listApiKeys = listApiKeys;
23
+ exports.rotateApiKey = rotateApiKey;
24
+ exports.getApiKey = getApiKey;
25
+ exports.getDecryptedApiKey = getDecryptedApiKey;
26
+ exports.listApiKeysWithDecryption = listApiKeysWithDecryption;
27
+ const promises_1 = __importDefault(require("fs/promises"));
28
+ const path_1 = __importDefault(require("path"));
29
+ const crypto_1 = __importDefault(require("crypto"));
30
+ const bcryptjs_1 = __importDefault(require("bcryptjs"));
31
+ const uuid_1 = require("uuid");
32
+ const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
33
+ const paths_js_1 = require("../../config/paths.js");
34
+ const SALT_ROUNDS = 10;
35
+ // AES-256-GCM encryption key derived from a stable secret
36
+ // In production, this should come from environment variable
37
+ const ENCRYPTION_KEY = crypto_1.default.createHash('sha256')
38
+ .update(process.env.API_KEY_ENCRYPTION_SECRET || 'agentstudio-api-key-encryption-secret-v1')
39
+ .digest();
40
+ /**
41
+ * Encrypt a plaintext API key using AES-256-GCM
42
+ */
43
+ function encryptKey(plaintext) {
44
+ const iv = crypto_1.default.randomBytes(12); // 96-bit IV for GCM
45
+ const cipher = crypto_1.default.createCipheriv('aes-256-gcm', ENCRYPTION_KEY, iv);
46
+ let encrypted = cipher.update(plaintext, 'utf8', 'hex');
47
+ encrypted += cipher.final('hex');
48
+ const authTag = cipher.getAuthTag();
49
+ // Format: iv:authTag:encrypted
50
+ return `${iv.toString('hex')}:${authTag.toString('hex')}:${encrypted}`;
51
+ }
52
+ /**
53
+ * Decrypt an encrypted API key
54
+ */
55
+ function decryptKey(encryptedData) {
56
+ try {
57
+ const [ivHex, authTagHex, encrypted] = encryptedData.split(':');
58
+ if (!ivHex || !authTagHex || !encrypted) {
59
+ return null;
60
+ }
61
+ const iv = Buffer.from(ivHex, 'hex');
62
+ const authTag = Buffer.from(authTagHex, 'hex');
63
+ const decipher = crypto_1.default.createDecipheriv('aes-256-gcm', ENCRYPTION_KEY, iv);
64
+ decipher.setAuthTag(authTag);
65
+ let decrypted = decipher.update(encrypted, 'hex', 'utf8');
66
+ decrypted += decipher.final('utf8');
67
+ return decrypted;
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ }
73
+ const hashKey = async (key) => {
74
+ return bcryptjs_1.default.hash(key, SALT_ROUNDS);
75
+ };
76
+ const compareKey = async (key, hash) => {
77
+ return bcryptjs_1.default.compare(key, hash);
78
+ };
79
+ const LOCK_OPTIONS = {
80
+ retries: { retries: 5, minTimeout: 100, maxTimeout: 500 },
81
+ };
82
+ /**
83
+ * Get path to project's API keys file
84
+ * @param projectPath - Absolute path to the project working directory
85
+ */
86
+ function getApiKeysPath(projectPath) {
87
+ return (0, paths_js_1.getProjectApiKeysFile)(projectPath);
88
+ }
89
+ /**
90
+ * Load API key registry for a project
91
+ */
92
+ async function loadApiKeyRegistry(projectId) {
93
+ const filePath = getApiKeysPath(projectId);
94
+ try {
95
+ const data = await promises_1.default.readFile(filePath, 'utf-8');
96
+ return JSON.parse(data);
97
+ }
98
+ catch (error) {
99
+ // If file doesn't exist, return empty registry
100
+ if (error.code === 'ENOENT') {
101
+ return {
102
+ version: '1.0.0',
103
+ keys: [],
104
+ };
105
+ }
106
+ throw error;
107
+ }
108
+ }
109
+ /**
110
+ * Save API key registry for a project with file locking
111
+ */
112
+ async function saveApiKeyRegistry(projectId, registry) {
113
+ const filePath = getApiKeysPath(projectId);
114
+ const dir = path_1.default.dirname(filePath);
115
+ // Ensure directory exists
116
+ await promises_1.default.mkdir(dir, { recursive: true });
117
+ // Create empty file if it doesn't exist (helps with file locking)
118
+ try {
119
+ await promises_1.default.access(filePath);
120
+ }
121
+ catch {
122
+ // File doesn't exist, create empty file
123
+ await promises_1.default.writeFile(filePath, JSON.stringify({ version: '1.0.0', keys: [] }, null, 2), 'utf-8');
124
+ }
125
+ // Acquire lock for atomic write
126
+ const release = await proper_lockfile_1.default.lock(filePath, LOCK_OPTIONS);
127
+ try {
128
+ await promises_1.default.writeFile(filePath, JSON.stringify(registry, null, 2), 'utf-8');
129
+ }
130
+ finally {
131
+ await release();
132
+ }
133
+ }
134
+ /**
135
+ * Generate a short project identifier from project path
136
+ * Uses first 8 characters of SHA256 hash of the path
137
+ */
138
+ function generateProjectIdentifier(projectPath) {
139
+ return crypto_1.default.createHash('sha256').update(projectPath).digest('hex').substring(0, 8);
140
+ }
141
+ /**
142
+ * Generate a new API key for a project
143
+ *
144
+ * @param projectId - Internal project identifier (can be a path)
145
+ * @param description - Human-readable description of the key
146
+ * @returns Object containing the generated key (plaintext, shown once) and key metadata
147
+ */
148
+ async function generateApiKey(projectId, description) {
149
+ // Generate short project identifier from path (8-char hash instead of full path)
150
+ const projectIdHash = generateProjectIdentifier(projectId);
151
+ // Generate random API key
152
+ const random = crypto_1.default.randomBytes(16).toString('hex'); // 32 hex characters
153
+ const key = `agt_proj_${projectIdHash}_${random}`;
154
+ // Hash the key with bcrypt for validation
155
+ const keyHash = await hashKey(key);
156
+ // Encrypt the key for later retrieval
157
+ const encryptedKey = encryptKey(key);
158
+ // Create key metadata
159
+ const keyId = (0, uuid_1.v4)();
160
+ const now = new Date().toISOString();
161
+ const keyData = {
162
+ id: keyId,
163
+ projectId,
164
+ keyHash,
165
+ encryptedKey,
166
+ description,
167
+ createdAt: now,
168
+ };
169
+ // Load registry and add key
170
+ const registry = await loadApiKeyRegistry(projectId);
171
+ registry.keys.push(keyData);
172
+ await saveApiKeyRegistry(projectId, registry);
173
+ // Return plaintext key and metadata
174
+ return { key, keyData };
175
+ }
176
+ /**
177
+ * Hash an API key using bcrypt
178
+ * This is a pure function used internally and for testing
179
+ *
180
+ * @param key - Plaintext API key
181
+ * @returns Bcrypt hash
182
+ */
183
+ async function hashApiKey(key) {
184
+ return hashKey(key);
185
+ }
186
+ /**
187
+ * Validate an API key against project's stored hashes
188
+ *
189
+ * @param projectId - Internal project identifier
190
+ * @param key - Plaintext API key to validate
191
+ * @returns Object with validation result and key ID if valid
192
+ */
193
+ async function validateApiKey(projectId, key) {
194
+ const registry = await loadApiKeyRegistry(projectId);
195
+ // Try to match key against each stored hash
196
+ for (const keyData of registry.keys) {
197
+ // Skip revoked keys
198
+ if (keyData.revokedAt) {
199
+ continue;
200
+ }
201
+ // Compare key with hash
202
+ const isMatch = await compareKey(key, keyData.keyHash);
203
+ if (isMatch) {
204
+ // Update last used timestamp
205
+ keyData.lastUsedAt = new Date().toISOString();
206
+ await saveApiKeyRegistry(projectId, registry);
207
+ return {
208
+ valid: true,
209
+ keyId: keyData.id,
210
+ keyData,
211
+ };
212
+ }
213
+ }
214
+ return { valid: false };
215
+ }
216
+ /**
217
+ * Revoke an API key (soft delete - kept for audit trail)
218
+ *
219
+ * @param projectId - Internal project identifier
220
+ * @param keyId - Key ID to revoke
221
+ * @returns true if key was revoked, false if not found
222
+ */
223
+ async function revokeApiKey(projectId, keyId) {
224
+ const registry = await loadApiKeyRegistry(projectId);
225
+ const key = registry.keys.find((k) => k.id === keyId);
226
+ if (!key) {
227
+ return false;
228
+ }
229
+ // Mark as revoked
230
+ key.revokedAt = new Date().toISOString();
231
+ await saveApiKeyRegistry(projectId, registry);
232
+ return true;
233
+ }
234
+ /**
235
+ * List all API keys for a project (excluding revoked keys by default)
236
+ *
237
+ * @param projectId - Internal project identifier
238
+ * @param includeRevoked - Whether to include revoked keys
239
+ * @returns Array of API key metadata (hashes only, never plaintext)
240
+ */
241
+ async function listApiKeys(projectId, includeRevoked = false) {
242
+ const registry = await loadApiKeyRegistry(projectId);
243
+ if (includeRevoked) {
244
+ return registry.keys;
245
+ }
246
+ return registry.keys.filter((key) => !key.revokedAt);
247
+ }
248
+ /**
249
+ * Rotate an API key (generate new key and revoke old one)
250
+ *
251
+ * @param projectId - Internal project identifier
252
+ * @param oldKeyId - ID of key to rotate
253
+ * @param description - Description for new key
254
+ * @param gracePeriodMs - Grace period in milliseconds before revoking old key (default 5 minutes)
255
+ * @returns New key data
256
+ */
257
+ async function rotateApiKey(projectId, oldKeyId, description, gracePeriodMs = 5 * 60 * 1000 // 5 minutes
258
+ ) {
259
+ // Generate new key
260
+ const newKey = await generateApiKey(projectId, description);
261
+ // Schedule revocation of old key after grace period
262
+ setTimeout(async () => {
263
+ try {
264
+ await revokeApiKey(projectId, oldKeyId);
265
+ }
266
+ catch (error) {
267
+ console.error(`Failed to revoke old key ${oldKeyId} after rotation:`, error);
268
+ }
269
+ }, gracePeriodMs);
270
+ return {
271
+ ...newKey,
272
+ oldKeyId,
273
+ };
274
+ }
275
+ /**
276
+ * Get API key metadata by ID
277
+ *
278
+ * @param projectId - Internal project identifier
279
+ * @param keyId - Key ID
280
+ * @returns API key metadata or null if not found
281
+ */
282
+ async function getApiKey(projectId, keyId) {
283
+ const registry = await loadApiKeyRegistry(projectId);
284
+ return registry.keys.find((k) => k.id === keyId) || null;
285
+ }
286
+ /**
287
+ * Get decrypted API key by ID
288
+ *
289
+ * @param projectId - Internal project identifier
290
+ * @param keyId - Key ID
291
+ * @returns Decrypted plaintext key or null if not found
292
+ */
293
+ async function getDecryptedApiKey(projectId, keyId) {
294
+ const keyData = await getApiKey(projectId, keyId);
295
+ if (!keyData || !keyData.encryptedKey) {
296
+ return null;
297
+ }
298
+ return decryptKey(keyData.encryptedKey);
299
+ }
300
+ /**
301
+ * List all API keys with decrypted values
302
+ *
303
+ * @param projectId - Internal project identifier
304
+ * @param includeRevoked - Whether to include revoked keys
305
+ * @returns Array of API keys with decrypted key values
306
+ */
307
+ async function listApiKeysWithDecryption(projectId, includeRevoked = false) {
308
+ const keys = await listApiKeys(projectId, includeRevoked);
309
+ return keys.map((key) => ({
310
+ ...key,
311
+ decryptedKey: key.encryptedKey ? decryptKey(key.encryptedKey) || undefined : undefined,
312
+ }));
313
+ }
314
+ //# sourceMappingURL=apiKeyService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKeyService.js","sourceRoot":"","sources":["../../../src/services/a2a/apiKeyService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A2A Task Cleanup Service
3
+ *
4
+ * Handles cleanup of orphaned tasks on server startup.
5
+ * Orphaned tasks are tasks with status='running' that were left
6
+ * in that state due to server crash or restart.
7
+ *
8
+ * This service scans all registered projects' task directories and marks
9
+ * any running tasks as 'failed' with an appropriate error message.
10
+ */
11
+ /**
12
+ * Clean up orphaned tasks across all projects
13
+ *
14
+ * Scans all registered projects' .a2a/tasks/ directories and marks any tasks
15
+ * with status='running' as 'failed' (indicating they were orphaned
16
+ * due to server restart).
17
+ *
18
+ * @returns Count of tasks cleaned up
19
+ */
20
+ export declare function cleanupOrphanedTasks(): Promise<number>;
21
+ /**
22
+ * Clean up timed-out tasks across all projects
23
+ *
24
+ * Scans all registered projects and marks tasks that have exceeded their timeout
25
+ * as 'failed'. This is called periodically by the timeout monitor.
26
+ *
27
+ * @returns Count of tasks marked as timed out
28
+ */
29
+ export declare function cleanupTimedOutTasks(): Promise<number>;
30
+ //# sourceMappingURL=taskCleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskCleanup.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/taskCleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CA+D5D;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CA2D5D"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /**
3
+ * A2A Task Cleanup Service
4
+ *
5
+ * Handles cleanup of orphaned tasks on server startup.
6
+ * Orphaned tasks are tasks with status='running' that were left
7
+ * in that state due to server crash or restart.
8
+ *
9
+ * This service scans all registered projects' task directories and marks
10
+ * any running tasks as 'failed' with an appropriate error message.
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.cleanupOrphanedTasks = cleanupOrphanedTasks;
17
+ exports.cleanupTimedOutTasks = cleanupTimedOutTasks;
18
+ const promises_1 = __importDefault(require("fs/promises"));
19
+ const taskManager_js_1 = require("./taskManager.js");
20
+ const agentMappingService_js_1 = require("./agentMappingService.js");
21
+ const paths_js_1 = require("../../config/paths.js");
22
+ // ============================================================================
23
+ // Helper Functions
24
+ // ============================================================================
25
+ /**
26
+ * Get all unique working directories from agent mappings
27
+ */
28
+ async function getAllWorkingDirectories() {
29
+ try {
30
+ const mappings = await (0, agentMappingService_js_1.listAgentMappings)();
31
+ // Extract unique working directories
32
+ const workingDirs = new Set();
33
+ for (const mapping of mappings) {
34
+ if (mapping.workingDirectory) {
35
+ workingDirs.add(mapping.workingDirectory);
36
+ }
37
+ }
38
+ return Array.from(workingDirs);
39
+ }
40
+ catch (error) {
41
+ console.warn('[TaskCleanup] Failed to get agent mappings:', error.message);
42
+ return [];
43
+ }
44
+ }
45
+ /**
46
+ * Check if a task directory exists for a project
47
+ */
48
+ async function taskDirectoryExists(workingDirectory) {
49
+ try {
50
+ const tasksDir = (0, paths_js_1.getProjectTasksDir)(workingDirectory);
51
+ await promises_1.default.access(tasksDir);
52
+ return true;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ // ============================================================================
59
+ // Main Cleanup Function
60
+ // ============================================================================
61
+ /**
62
+ * Clean up orphaned tasks across all projects
63
+ *
64
+ * Scans all registered projects' .a2a/tasks/ directories and marks any tasks
65
+ * with status='running' as 'failed' (indicating they were orphaned
66
+ * due to server restart).
67
+ *
68
+ * @returns Count of tasks cleaned up
69
+ */
70
+ async function cleanupOrphanedTasks() {
71
+ console.info('[TaskCleanup] Starting orphaned task cleanup...');
72
+ let totalCleaned = 0;
73
+ const startTime = Date.now();
74
+ try {
75
+ // Get all unique working directories from agent mappings
76
+ const workingDirectories = await getAllWorkingDirectories();
77
+ console.info(`[TaskCleanup] Scanning ${workingDirectories.length} project directories...`);
78
+ // Process each project
79
+ for (const workingDirectory of workingDirectories) {
80
+ // Check if project has tasks directory
81
+ const hasTasksDir = await taskDirectoryExists(workingDirectory);
82
+ if (!hasTasksDir) {
83
+ continue; // No tasks for this project
84
+ }
85
+ try {
86
+ // Get all running tasks for this project
87
+ const runningTasks = await taskManager_js_1.taskManager.listTasks(workingDirectory, 'running');
88
+ if (runningTasks.length === 0) {
89
+ continue; // No orphaned tasks
90
+ }
91
+ console.info(`[TaskCleanup] Found ${runningTasks.length} orphaned tasks in ${workingDirectory}`);
92
+ // Mark each running task as failed
93
+ for (const task of runningTasks) {
94
+ try {
95
+ await taskManager_js_1.taskManager.updateTaskStatus(workingDirectory, task.id, 'failed', {
96
+ errorDetails: {
97
+ message: 'Task was orphaned due to server restart',
98
+ code: 'TASK_ORPHANED',
99
+ },
100
+ completedAt: new Date().toISOString(),
101
+ });
102
+ totalCleaned++;
103
+ console.info(`[TaskCleanup] Cleaned orphaned task: ${task.id}`);
104
+ }
105
+ catch (error) {
106
+ console.error(`[TaskCleanup] Failed to clean task ${task.id}:`, error);
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ console.error(`[TaskCleanup] Error processing ${workingDirectory}:`, error);
112
+ }
113
+ }
114
+ const duration = Date.now() - startTime;
115
+ console.info(`[TaskCleanup] Cleanup complete. Cleaned ${totalCleaned} tasks in ${duration}ms`);
116
+ return totalCleaned;
117
+ }
118
+ catch (error) {
119
+ console.error('[TaskCleanup] Fatal error during cleanup:', error);
120
+ throw error;
121
+ }
122
+ }
123
+ /**
124
+ * Clean up timed-out tasks across all projects
125
+ *
126
+ * Scans all registered projects and marks tasks that have exceeded their timeout
127
+ * as 'failed'. This is called periodically by the timeout monitor.
128
+ *
129
+ * @returns Count of tasks marked as timed out
130
+ */
131
+ async function cleanupTimedOutTasks() {
132
+ let totalTimedOut = 0;
133
+ const now = Date.now();
134
+ try {
135
+ // Get all unique working directories from agent mappings
136
+ const workingDirectories = await getAllWorkingDirectories();
137
+ // Process each project
138
+ for (const workingDirectory of workingDirectories) {
139
+ // Check if project has tasks directory
140
+ const hasTasksDir = await taskDirectoryExists(workingDirectory);
141
+ if (!hasTasksDir) {
142
+ continue;
143
+ }
144
+ try {
145
+ // Get all running tasks for this project
146
+ const runningTasks = await taskManager_js_1.taskManager.listTasks(workingDirectory, 'running');
147
+ // Check each task for timeout
148
+ for (const task of runningTasks) {
149
+ const createdTime = new Date(task.createdAt).getTime();
150
+ const elapsedMs = now - createdTime;
151
+ if (elapsedMs > task.timeoutMs) {
152
+ // Task has timed out
153
+ try {
154
+ await taskManager_js_1.taskManager.updateTaskStatus(workingDirectory, task.id, 'failed', {
155
+ errorDetails: {
156
+ message: `Task timed out after ${task.timeoutMs}ms (elapsed: ${elapsedMs}ms)`,
157
+ code: 'TASK_TIMEOUT',
158
+ },
159
+ completedAt: new Date().toISOString(),
160
+ });
161
+ totalTimedOut++;
162
+ console.warn(`[TaskCleanup] Task timed out: ${task.id} (elapsed: ${elapsedMs}ms)`);
163
+ }
164
+ catch (error) {
165
+ console.error(`[TaskCleanup] Failed to mark task ${task.id} as timed out:`, error);
166
+ }
167
+ }
168
+ }
169
+ }
170
+ catch (error) {
171
+ console.error(`[TaskCleanup] Error checking timeouts for ${workingDirectory}:`, error);
172
+ }
173
+ }
174
+ if (totalTimedOut > 0) {
175
+ console.info(`[TaskCleanup] Marked ${totalTimedOut} tasks as timed out`);
176
+ }
177
+ return totalTimedOut;
178
+ }
179
+ catch (error) {
180
+ console.error('[TaskCleanup] Fatal error during timeout cleanup:', error);
181
+ throw error;
182
+ }
183
+ }
184
+ //# sourceMappingURL=taskCleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskCleanup.js","sourceRoot":"","sources":["../../../src/services/a2a/taskCleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * A2A Task Manager Service
3
+ *
4
+ * Manages the lifecycle of A2A asynchronous tasks with file-based persistence.
5
+ * Tasks are stored as JSON files in {workingDirectory}/.a2a/tasks/{taskId}.json
6
+ *
7
+ * State Transitions:
8
+ * - pending → running
9
+ * - running → completed | failed | canceled
10
+ * - pending → canceled
11
+ *
12
+ * All state transitions are validated and atomic using file locking.
13
+ */
14
+ import { A2ATask, TaskStatus, TaskInput, TaskOutput, TaskError } from '../../types/a2a.js';
15
+ interface CreateTaskParams {
16
+ workingDirectory: string;
17
+ projectId: string;
18
+ agentId: string;
19
+ a2aAgentId: string;
20
+ input: TaskInput;
21
+ timeoutMs?: number;
22
+ }
23
+ interface UpdateTaskParams {
24
+ output?: TaskOutput;
25
+ errorDetails?: TaskError;
26
+ startedAt?: string;
27
+ completedAt?: string;
28
+ }
29
+ /**
30
+ * Task Manager Service
31
+ * Handles all task CRUD operations with file-based persistence
32
+ */
33
+ export declare class TaskManager {
34
+ /**
35
+ * Create a new task
36
+ * Task starts in 'pending' state
37
+ *
38
+ * @param params - Task creation parameters
39
+ * @returns Created task object
40
+ * @throws Error if task creation fails
41
+ */
42
+ createTask(params: CreateTaskParams): Promise<A2ATask>;
43
+ /**
44
+ * Get task by ID
45
+ *
46
+ * @param workingDirectory - Absolute path to project working directory
47
+ * @param taskId - Task ID
48
+ * @returns Task object or null if not found
49
+ */
50
+ getTask(workingDirectory: string, taskId: string): Promise<A2ATask | null>;
51
+ /**
52
+ * Update task status and related fields
53
+ * Validates state transitions and uses file locking for atomicity
54
+ *
55
+ * @param workingDirectory - Absolute path to project working directory
56
+ * @param taskId - Task ID
57
+ * @param newStatus - New task status
58
+ * @param updates - Additional fields to update
59
+ * @throws Error if task not found or invalid transition
60
+ */
61
+ updateTaskStatus(workingDirectory: string, taskId: string, newStatus: TaskStatus, updates?: UpdateTaskParams): Promise<A2ATask>;
62
+ /**
63
+ * Cancel a task
64
+ * Only pending or running tasks can be canceled
65
+ *
66
+ * @param workingDirectory - Absolute path to project working directory
67
+ * @param taskId - Task ID
68
+ * @returns Updated task object
69
+ * @throws Error if task cannot be canceled
70
+ */
71
+ cancelTask(workingDirectory: string, taskId: string): Promise<A2ATask>;
72
+ /**
73
+ * List all tasks for a project
74
+ *
75
+ * @param workingDirectory - Absolute path to project working directory
76
+ * @param statusFilter - Optional status filter
77
+ * @returns Array of tasks
78
+ */
79
+ listTasks(workingDirectory: string, statusFilter?: TaskStatus): Promise<A2ATask[]>;
80
+ }
81
+ /**
82
+ * Singleton instance of TaskManager
83
+ */
84
+ export declare const taskManager: TaskManager;
85
+ export {};
86
+ //# sourceMappingURL=taskManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskManager.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/taskManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAqB3F,UAAU,gBAAgB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2DD;;;GAGG;AACH,qBAAa,WAAW;IACtB;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC5D;;;;;;OAMG;IACG,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAchF;;;;;;;;;OASG;IACG,gBAAgB,CACpB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC;IAiDnB;;;;;;;;OAQG;IACG,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB5E;;;;;;OAMG;IACG,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA6BzF;AAMD;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC"}