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,743 @@
1
+ "use strict";
2
+ /**
3
+ * Scheduler Service
4
+ *
5
+ * Manages scheduled task execution using cron-like scheduling.
6
+ * Supports both interval-based and cron expression-based scheduling.
7
+ *
8
+ * Features:
9
+ * - Concurrent task execution with configurable limit
10
+ * - Automatic task recovery on startup
11
+ * - Execution history tracking
12
+ * - Integration with Agent execution
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.initializeScheduler = initializeScheduler;
52
+ exports.shutdownScheduler = shutdownScheduler;
53
+ exports.enableScheduler = enableScheduler;
54
+ exports.disableScheduler = disableScheduler;
55
+ exports.scheduleTask = scheduleTask;
56
+ exports.unscheduleTask = unscheduleTask;
57
+ exports.rescheduleTask = rescheduleTask;
58
+ exports.executeTask = executeTask;
59
+ exports.stopExecution = stopExecution;
60
+ exports.getRunningExecutions = getRunningExecutions;
61
+ exports.getSchedulerStatus = getSchedulerStatus;
62
+ exports.getActiveTaskIds = getActiveTaskIds;
63
+ const node_cron_1 = __importDefault(require("node-cron"));
64
+ const uuid_1 = require("uuid");
65
+ const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
66
+ const scheduledTasks_js_1 = require("../types/scheduledTasks.js");
67
+ const scheduledTaskStorage_js_1 = require("./scheduledTaskStorage.js");
68
+ const agentStorage_js_1 = require("./agentStorage.js");
69
+ const claudeUtils_js_1 = require("../utils/claudeUtils.js");
70
+ // Scheduler enabled state (independent from initialization)
71
+ let schedulerEnabled = false;
72
+ // ============================================================================
73
+ // Service State
74
+ // ============================================================================
75
+ let isInitialized = false;
76
+ let config = { ...scheduledTasks_js_1.DEFAULT_SCHEDULER_CONFIG };
77
+ const activeJobs = new Map();
78
+ let runningTaskCount = 0;
79
+ const agentStorage = new agentStorage_js_1.AgentStorage();
80
+ const runningExecutions = new Map();
81
+ // ============================================================================
82
+ // Orphaned Task Cleanup
83
+ // ============================================================================
84
+ /**
85
+ * Clean up orphaned "running" tasks from previous server runs
86
+ * When the server restarts, any tasks that were "running" are now orphaned
87
+ * since the actual execution is lost. Mark them as "error" with a clear message.
88
+ */
89
+ function cleanupOrphanedRunningTasks() {
90
+ const tasks = (0, scheduledTaskStorage_js_1.loadScheduledTasks)();
91
+ let cleanedCount = 0;
92
+ for (const task of tasks) {
93
+ if (task.lastRunStatus === 'running') {
94
+ console.info(`[Scheduler] Cleaning up orphaned running task: ${task.id} (${task.name})`);
95
+ (0, scheduledTaskStorage_js_1.updateTaskRunStatus)(task.id, 'error', 'Server restarted while task was running');
96
+ cleanedCount++;
97
+ }
98
+ }
99
+ if (cleanedCount > 0) {
100
+ console.info(`[Scheduler] Cleaned up ${cleanedCount} orphaned running tasks`);
101
+ }
102
+ }
103
+ // ============================================================================
104
+ // Initialization
105
+ // ============================================================================
106
+ /**
107
+ * Initialize the scheduler service
108
+ * Loads all enabled tasks and schedules them
109
+ */
110
+ function initializeScheduler(customConfig) {
111
+ if (isInitialized) {
112
+ console.warn('[Scheduler] Already initialized');
113
+ return;
114
+ }
115
+ if (customConfig) {
116
+ config = { ...config, ...customConfig };
117
+ }
118
+ console.info(`[Scheduler] Initializing with config: maxConcurrent=${config.maxConcurrent}`);
119
+ // Clean up orphaned "running" tasks from previous server runs
120
+ cleanupOrphanedRunningTasks();
121
+ // Load and schedule all enabled tasks
122
+ const tasks = (0, scheduledTaskStorage_js_1.loadScheduledTasks)();
123
+ const enabledTasks = tasks.filter(t => t.enabled);
124
+ console.info(`[Scheduler] Found ${enabledTasks.length} enabled tasks out of ${tasks.length} total`);
125
+ // Set initial enabled state based on config
126
+ const shouldEnable = customConfig?.enabled !== undefined ? customConfig.enabled : true;
127
+ if (shouldEnable) {
128
+ for (const task of enabledTasks) {
129
+ scheduleTask(task);
130
+ }
131
+ schedulerEnabled = true;
132
+ console.info('[Scheduler] Initialization complete - scheduler ENABLED');
133
+ }
134
+ else {
135
+ schedulerEnabled = false;
136
+ console.info('[Scheduler] Initialization complete - scheduler DISABLED (can be enabled via API)');
137
+ }
138
+ isInitialized = true;
139
+ }
140
+ /**
141
+ * Shutdown the scheduler service
142
+ * Stops all scheduled jobs
143
+ */
144
+ function shutdownScheduler() {
145
+ console.info('[Scheduler] Shutting down...');
146
+ for (const [taskId, activeJob] of activeJobs) {
147
+ if (activeJob.cronJob) {
148
+ activeJob.cronJob.stop();
149
+ }
150
+ if (activeJob.timeout) {
151
+ clearTimeout(activeJob.timeout);
152
+ }
153
+ console.debug(`[Scheduler] Stopped job for task: ${taskId}`);
154
+ }
155
+ activeJobs.clear();
156
+ isInitialized = false;
157
+ schedulerEnabled = false;
158
+ console.info('[Scheduler] Shutdown complete');
159
+ }
160
+ /**
161
+ * Enable the scheduler (start executing scheduled tasks)
162
+ */
163
+ function enableScheduler() {
164
+ if (!isInitialized) {
165
+ console.warn('[Scheduler] Cannot enable: scheduler not initialized');
166
+ return;
167
+ }
168
+ if (schedulerEnabled) {
169
+ console.warn('[Scheduler] Already enabled');
170
+ return;
171
+ }
172
+ console.info('[Scheduler] Enabling scheduler...');
173
+ // Re-schedule all enabled tasks
174
+ const tasks = (0, scheduledTaskStorage_js_1.loadScheduledTasks)();
175
+ const enabledTasks = tasks.filter(t => t.enabled);
176
+ for (const task of enabledTasks) {
177
+ if (!activeJobs.has(task.id)) {
178
+ scheduleTask(task);
179
+ }
180
+ }
181
+ schedulerEnabled = true;
182
+ console.info('[Scheduler] Enabled');
183
+ }
184
+ /**
185
+ * Disable the scheduler (stop executing scheduled tasks)
186
+ */
187
+ function disableScheduler() {
188
+ if (!schedulerEnabled) {
189
+ console.warn('[Scheduler] Already disabled');
190
+ return;
191
+ }
192
+ console.info('[Scheduler] Disabling scheduler...');
193
+ // Stop all scheduled jobs but keep them in memory
194
+ for (const [taskId, activeJob] of activeJobs) {
195
+ if (activeJob.cronJob) {
196
+ activeJob.cronJob.stop();
197
+ }
198
+ if (activeJob.timeout) {
199
+ clearTimeout(activeJob.timeout);
200
+ }
201
+ console.debug(`[Scheduler] Stopped job for task: ${taskId}`);
202
+ }
203
+ activeJobs.clear();
204
+ schedulerEnabled = false;
205
+ console.info('[Scheduler] Disabled');
206
+ }
207
+ // ============================================================================
208
+ // Task Scheduling
209
+ // ============================================================================
210
+ /**
211
+ * Schedule a task for execution
212
+ */
213
+ function scheduleTask(task) {
214
+ // Stop existing job if any
215
+ if (activeJobs.has(task.id)) {
216
+ unscheduleTask(task.id);
217
+ }
218
+ if (!task.enabled) {
219
+ console.debug(`[Scheduler] Task ${task.id} is disabled, not scheduling`);
220
+ return false;
221
+ }
222
+ try {
223
+ // Handle one-time execution
224
+ if (task.schedule.type === 'once' && task.schedule.executeAt) {
225
+ return scheduleOnceTask(task);
226
+ }
227
+ const cronExpression = getCronExpression(task);
228
+ if (!cronExpression || !node_cron_1.default.validate(cronExpression)) {
229
+ console.error(`[Scheduler] Invalid cron expression for task ${task.id}: ${cronExpression}`);
230
+ return false;
231
+ }
232
+ const cronJob = node_cron_1.default.schedule(cronExpression, () => {
233
+ executeTask(task.id).catch(error => {
234
+ console.error(`[Scheduler] Error executing task ${task.id}:`, error);
235
+ });
236
+ });
237
+ activeJobs.set(task.id, { task, cronJob });
238
+ // Calculate and update next run time
239
+ const nextRunAt = getNextRunTime(cronExpression);
240
+ (0, scheduledTaskStorage_js_1.updateTaskNextRunAt)(task.id, nextRunAt);
241
+ console.info(`[Scheduler] Scheduled task ${task.id} (${task.name}) with cron: ${cronExpression}`);
242
+ return true;
243
+ }
244
+ catch (error) {
245
+ console.error(`[Scheduler] Failed to schedule task ${task.id}:`, error);
246
+ return false;
247
+ }
248
+ }
249
+ /**
250
+ * Schedule a one-time task execution
251
+ */
252
+ function scheduleOnceTask(task) {
253
+ const executeAt = task.schedule.executeAt;
254
+ if (!executeAt) {
255
+ console.error(`[Scheduler] No executeAt time for once task ${task.id}`);
256
+ return false;
257
+ }
258
+ const executeTime = new Date(executeAt).getTime();
259
+ const now = Date.now();
260
+ const delay = executeTime - now;
261
+ if (delay <= 0) {
262
+ console.warn(`[Scheduler] Task ${task.id} executeAt time is in the past, skipping`);
263
+ // Disable the task since it's already past
264
+ Promise.resolve().then(() => __importStar(require('./scheduledTaskStorage.js'))).then(storage => {
265
+ storage.updateScheduledTask(task.id, { enabled: false });
266
+ });
267
+ return false;
268
+ }
269
+ // Maximum delay for setTimeout is ~24.8 days (2^31 - 1 ms)
270
+ const MAX_DELAY = 2147483647;
271
+ if (delay > MAX_DELAY) {
272
+ // Schedule a check for later
273
+ const checkDelay = MAX_DELAY;
274
+ console.info(`[Scheduler] Task ${task.id} executeAt is too far in future, will re-check later`);
275
+ const timeout = setTimeout(() => {
276
+ // Re-schedule when timer fires
277
+ const currentTask = (0, scheduledTaskStorage_js_1.getScheduledTask)(task.id);
278
+ if (currentTask && currentTask.enabled) {
279
+ scheduleOnceTask(currentTask);
280
+ }
281
+ }, checkDelay);
282
+ activeJobs.set(task.id, { task, timeout });
283
+ (0, scheduledTaskStorage_js_1.updateTaskNextRunAt)(task.id, executeAt);
284
+ return true;
285
+ }
286
+ // Schedule the execution
287
+ const timeout = setTimeout(async () => {
288
+ try {
289
+ await executeTask(task.id);
290
+ }
291
+ catch (error) {
292
+ console.error(`[Scheduler] Error executing one-time task ${task.id}:`, error);
293
+ }
294
+ // Disable the task after execution
295
+ Promise.resolve().then(() => __importStar(require('./scheduledTaskStorage.js'))).then(storage => {
296
+ storage.updateScheduledTask(task.id, { enabled: false });
297
+ console.info(`[Scheduler] One-time task ${task.id} executed and disabled`);
298
+ });
299
+ // Remove from active jobs
300
+ activeJobs.delete(task.id);
301
+ }, delay);
302
+ activeJobs.set(task.id, { task, timeout });
303
+ (0, scheduledTaskStorage_js_1.updateTaskNextRunAt)(task.id, executeAt);
304
+ const delayMinutes = Math.round(delay / 60000);
305
+ console.info(`[Scheduler] Scheduled one-time task ${task.id} (${task.name}) to execute at ${executeAt} (in ${delayMinutes} minutes)`);
306
+ return true;
307
+ }
308
+ /**
309
+ * Unschedule a task
310
+ */
311
+ function unscheduleTask(taskId) {
312
+ const activeJob = activeJobs.get(taskId);
313
+ if (activeJob) {
314
+ if (activeJob.cronJob) {
315
+ activeJob.cronJob.stop();
316
+ }
317
+ if (activeJob.timeout) {
318
+ clearTimeout(activeJob.timeout);
319
+ }
320
+ activeJobs.delete(taskId);
321
+ (0, scheduledTaskStorage_js_1.updateTaskNextRunAt)(taskId, undefined);
322
+ console.info(`[Scheduler] Unscheduled task: ${taskId}`);
323
+ }
324
+ }
325
+ /**
326
+ * Reschedule a task (after update)
327
+ */
328
+ function rescheduleTask(taskId) {
329
+ const task = (0, scheduledTaskStorage_js_1.getScheduledTask)(taskId);
330
+ if (!task) {
331
+ console.warn(`[Scheduler] Task not found for reschedule: ${taskId}`);
332
+ return false;
333
+ }
334
+ return scheduleTask(task);
335
+ }
336
+ // ============================================================================
337
+ // Task Execution
338
+ // ============================================================================
339
+ /**
340
+ * Execute a scheduled task
341
+ */
342
+ async function executeTask(taskId) {
343
+ const task = (0, scheduledTaskStorage_js_1.getScheduledTask)(taskId);
344
+ if (!task) {
345
+ console.error(`[Scheduler] Task not found: ${taskId}`);
346
+ return;
347
+ }
348
+ // Check concurrent limit
349
+ if (runningTaskCount >= config.maxConcurrent) {
350
+ console.warn(`[Scheduler] Concurrent limit reached (${config.maxConcurrent}), skipping task ${taskId}`);
351
+ return;
352
+ }
353
+ // Check if task is already running (prevent double execution)
354
+ if (task.lastRunStatus === 'running') {
355
+ console.warn(`[Scheduler] Task ${taskId} is already running, skipping`);
356
+ return;
357
+ }
358
+ const executionId = `exec_${(0, uuid_1.v4)().slice(0, 8)}`;
359
+ const startedAt = new Date().toISOString();
360
+ // Create AbortController for this execution
361
+ const abortController = new AbortController();
362
+ // Create execution record (include agentId and projectPath for "continue chat" functionality)
363
+ const execution = {
364
+ id: executionId,
365
+ taskId,
366
+ startedAt,
367
+ status: 'running',
368
+ agentId: task.agentId,
369
+ projectPath: task.projectPath,
370
+ };
371
+ (0, scheduledTaskStorage_js_1.addTaskExecution)(execution);
372
+ (0, scheduledTaskStorage_js_1.updateTaskRunStatus)(taskId, 'running');
373
+ runningTaskCount++;
374
+ // Track running execution
375
+ runningExecutions.set(executionId, {
376
+ taskId,
377
+ executionId,
378
+ abortController,
379
+ startedAt,
380
+ });
381
+ console.info(`[Scheduler] Executing task ${taskId} (${task.name}), execution: ${executionId}`);
382
+ try {
383
+ // Execute the agent with abort signal
384
+ const result = await executeAgentTask(task, abortController.signal);
385
+ // Update execution record with logs
386
+ (0, scheduledTaskStorage_js_1.updateTaskExecution)(taskId, executionId, {
387
+ status: 'success',
388
+ completedAt: new Date().toISOString(),
389
+ responseSummary: result.summary,
390
+ sessionId: result.sessionId,
391
+ logs: result.logs,
392
+ });
393
+ (0, scheduledTaskStorage_js_1.updateTaskRunStatus)(taskId, 'success');
394
+ console.info(`[Scheduler] Task ${taskId} completed successfully`);
395
+ }
396
+ catch (error) {
397
+ const errorMessage = error instanceof Error ? error.message : String(error);
398
+ const errorStack = error instanceof Error ? error.stack : undefined;
399
+ // Try to get logs from the error context if available
400
+ const errorLogs = [
401
+ {
402
+ timestamp: new Date().toISOString(),
403
+ level: 'error',
404
+ type: 'system',
405
+ message: `Execution failed: ${errorMessage}`,
406
+ data: { stack: errorStack },
407
+ }
408
+ ];
409
+ (0, scheduledTaskStorage_js_1.updateTaskExecution)(taskId, executionId, {
410
+ status: 'error',
411
+ completedAt: new Date().toISOString(),
412
+ error: errorMessage,
413
+ errorStack: errorStack,
414
+ logs: errorLogs,
415
+ });
416
+ (0, scheduledTaskStorage_js_1.updateTaskRunStatus)(taskId, 'error', errorMessage);
417
+ console.error(`[Scheduler] Task ${taskId} failed:`, error);
418
+ }
419
+ finally {
420
+ runningTaskCount--;
421
+ // Remove from running executions
422
+ runningExecutions.delete(executionId);
423
+ // Update next run time (only for recurring tasks)
424
+ if (task.schedule.type !== 'once') {
425
+ const cronExpression = getCronExpression(task);
426
+ if (cronExpression) {
427
+ const nextRunAt = getNextRunTime(cronExpression);
428
+ (0, scheduledTaskStorage_js_1.updateTaskNextRunAt)(taskId, nextRunAt);
429
+ }
430
+ }
431
+ }
432
+ }
433
+ /**
434
+ * Stop a running task execution
435
+ * @param executionId - The execution ID to stop
436
+ * @returns true if stopped successfully, false if not found or already completed
437
+ */
438
+ function stopExecution(executionId) {
439
+ const execution = runningExecutions.get(executionId);
440
+ if (!execution) {
441
+ return { success: false, message: 'Execution not found or already completed' };
442
+ }
443
+ console.info(`[Scheduler] Stopping execution: ${executionId} (task: ${execution.taskId})`);
444
+ // Abort the execution
445
+ execution.abortController.abort();
446
+ // Update execution status
447
+ (0, scheduledTaskStorage_js_1.updateTaskExecution)(execution.taskId, executionId, {
448
+ status: 'stopped',
449
+ completedAt: new Date().toISOString(),
450
+ error: 'Execution stopped by user',
451
+ logs: [{
452
+ timestamp: new Date().toISOString(),
453
+ level: 'warn',
454
+ type: 'system',
455
+ message: 'Execution stopped by user',
456
+ }],
457
+ });
458
+ // Update task status
459
+ (0, scheduledTaskStorage_js_1.updateTaskRunStatus)(execution.taskId, 'stopped', 'Stopped by user');
460
+ // Remove from running executions
461
+ runningExecutions.delete(executionId);
462
+ runningTaskCount--;
463
+ console.info(`[Scheduler] Execution ${executionId} stopped successfully`);
464
+ return { success: true, message: 'Execution stopped successfully' };
465
+ }
466
+ /**
467
+ * Get list of currently running executions
468
+ */
469
+ function getRunningExecutions() {
470
+ return Array.from(runningExecutions.values()).map(exec => ({
471
+ executionId: exec.executionId,
472
+ taskId: exec.taskId,
473
+ startedAt: exec.startedAt,
474
+ }));
475
+ }
476
+ /**
477
+ * Extract MCP tools from agent's allowedTools configuration
478
+ * Follows the same logic as frontend's useToolSelector.ts
479
+ */
480
+ function extractMcpToolsFromAgent(agent) {
481
+ const mcpTools = [];
482
+ if (!agent.allowedTools || !Array.isArray(agent.allowedTools)) {
483
+ return mcpTools;
484
+ }
485
+ for (const tool of agent.allowedTools) {
486
+ if (!tool.enabled)
487
+ continue;
488
+ const toolName = tool.name;
489
+ if (toolName.includes('.') && !toolName.startsWith('mcp__')) {
490
+ // MCP tool format: serverName.toolName -> mcp__serverName__toolName
491
+ const [serverName, ...toolNameParts] = toolName.split('.');
492
+ const mcpToolId = `mcp__${serverName}__${toolNameParts.join('.')}`;
493
+ mcpTools.push(mcpToolId);
494
+ }
495
+ else if (toolName.startsWith('mcp__')) {
496
+ // Already formatted MCP tool
497
+ mcpTools.push(toolName);
498
+ }
499
+ }
500
+ return mcpTools;
501
+ }
502
+ /**
503
+ * Execute agent task using Claude SDK
504
+ */
505
+ async function executeAgentTask(task, abortSignal) {
506
+ const logs = [];
507
+ const addLog = (level, type, message, data) => {
508
+ logs.push({
509
+ timestamp: new Date().toISOString(),
510
+ level,
511
+ type,
512
+ message,
513
+ data,
514
+ });
515
+ };
516
+ // Get agent configuration
517
+ const agent = agentStorage.getAgent(task.agentId);
518
+ if (!agent) {
519
+ addLog('error', 'system', `Agent not found: ${task.agentId}`);
520
+ throw new Error(`Agent not found: ${task.agentId}`);
521
+ }
522
+ addLog('info', 'system', `Using agent: ${agent.name} (${agent.id})`);
523
+ addLog('info', 'system', `Working directory: ${task.projectPath}`);
524
+ addLog('info', 'system', `Trigger message: ${task.triggerMessage}`);
525
+ // Determine the model to use (override or agent default)
526
+ let modelToUse = agent.model || 'sonnet'; // Default to sonnet if not specified
527
+ addLog('info', 'system', `Agent default model: ${agent.model || '(not specified)'}`);
528
+ if (task.modelOverride?.modelId) {
529
+ modelToUse = task.modelOverride.modelId;
530
+ addLog('info', 'system', `Model override applied: ${modelToUse} (from task config)`);
531
+ }
532
+ addLog('info', 'system', `Final model to use: ${modelToUse}`);
533
+ // Determine Claude version to use (from task override)
534
+ // Note: AgentConfig doesn't have claudeVersionId, it's only in AgentSession
535
+ const claudeVersionToUse = task.modelOverride?.versionId;
536
+ if (claudeVersionToUse) {
537
+ addLog('info', 'system', `Using supplier/version: ${claudeVersionToUse}`);
538
+ }
539
+ else {
540
+ addLog('info', 'system', `No supplier/version specified, using default`);
541
+ }
542
+ // Extract MCP tools from agent configuration
543
+ const mcpTools = extractMcpToolsFromAgent(agent);
544
+ if (mcpTools.length > 0) {
545
+ addLog('info', 'system', `MCP tools extracted from agent config: ${mcpTools.join(', ')}`);
546
+ }
547
+ else {
548
+ addLog('info', 'system', 'No MCP tools configured for this agent');
549
+ }
550
+ // Build query options using the shared utility function
551
+ // This handles: MCP tools, environment variables, Claude version, A2A integration
552
+ // NOTE: Scheduled tasks run unattended, so we MUST use bypassPermissions mode
553
+ addLog('info', 'system', 'Building query options with MCP and environment support...');
554
+ // Determine permission mode based on model
555
+ // IMPORTANT: Some models do NOT work in scheduled tasks (unattended mode)
556
+ // These models require 'default' permission mode with user interaction, but scheduled tasks
557
+ // run unattended and require 'bypassPermissions' mode
558
+ const modelLower = modelToUse.toLowerCase();
559
+ const isGlmModel = modelLower.includes('glm') ||
560
+ modelLower.includes('zhipu') ||
561
+ modelLower.includes('chatglm') ||
562
+ modelLower.startsWith('glm');
563
+ addLog('info', 'system', `Model compatibility check: model="${modelToUse}", isGlmModel=${isGlmModel}`);
564
+ if (isGlmModel) {
565
+ // NOTE: GLM models may have limitations with bypassPermissions mode
566
+ // Previously this was blocked, but now we allow testing with a warning
567
+ addLog('warn', 'system', `GLM model detected: ${modelToUse}. GLM models may have compatibility issues with scheduled tasks.`);
568
+ addLog('warn', 'system', `If this task fails, consider using Claude models (Sonnet, Haiku, Opus) instead.`);
569
+ }
570
+ // Additional check: some models might not support bypassPermissions mode
571
+ // Log a warning for unrecognized model names
572
+ const knownClaudeModels = ['sonnet', 'haiku', 'opus', 'claude'];
573
+ const isKnownClaudeModel = knownClaudeModels.some(m => modelLower.includes(m));
574
+ if (!isKnownClaudeModel) {
575
+ addLog('warn', 'system', `Warning: Model "${modelToUse}" may not support bypassPermissions mode required for scheduled tasks`);
576
+ }
577
+ // For Claude models, use bypassPermissions mode (unattended execution)
578
+ const permissionMode = 'bypassPermissions';
579
+ addLog('info', 'system', `Using 'bypassPermissions' mode for Claude model: ${modelToUse}`);
580
+ const { queryOptions } = await (0, claudeUtils_js_1.buildQueryOptions)(agent, task.projectPath, mcpTools.length > 0 ? mcpTools : undefined, permissionMode, modelToUse, claudeVersionToUse, undefined, // defaultEnv - will be loaded from Claude version config
581
+ undefined, // userEnv - scheduled tasks don't have user-provided env vars
582
+ undefined, // sessionIdForAskUser - scheduled tasks don't support user interaction
583
+ undefined // agentIdForAskUser
584
+ );
585
+ // Override maxTurns for scheduled tasks to prevent infinite loops
586
+ queryOptions.maxTurns = agent.maxTurns || 10;
587
+ addLog('info', 'system', `Query options built: permissionMode=bypassPermissions, model=${modelToUse}, maxTurns=${queryOptions.maxTurns}`);
588
+ // Log MCP servers if configured
589
+ if (queryOptions.mcpServers) {
590
+ const mcpServerNames = Object.keys(queryOptions.mcpServers);
591
+ addLog('info', 'system', `MCP servers configured: ${mcpServerNames.join(', ')}`);
592
+ // Log detailed MCP server config for debugging
593
+ for (const [serverName, serverConfig] of Object.entries(queryOptions.mcpServers)) {
594
+ addLog('info', 'system', ` - ${serverName}: ${JSON.stringify(serverConfig)}`);
595
+ }
596
+ }
597
+ else {
598
+ addLog('warn', 'system', `No MCP servers configured in queryOptions (mcpTools passed: ${mcpTools.join(', ') || 'none'})`);
599
+ }
600
+ // Collect response
601
+ let fullResponse = '';
602
+ let sessionId;
603
+ addLog('info', 'system', 'Starting Claude Code query...');
604
+ try {
605
+ for await (const message of (0, claude_agent_sdk_1.query)({
606
+ prompt: task.triggerMessage,
607
+ options: queryOptions,
608
+ })) {
609
+ // Check if execution was aborted
610
+ if (abortSignal?.aborted) {
611
+ addLog('warn', 'system', 'Execution aborted by user');
612
+ throw new Error('Execution aborted by user');
613
+ }
614
+ // Capture session ID
615
+ if (message.session_id && !sessionId) {
616
+ sessionId = message.session_id;
617
+ addLog('info', 'system', `Session ID: ${sessionId}`);
618
+ }
619
+ // Log different message types
620
+ if (message.type === 'assistant' && message.message?.content) {
621
+ for (const block of message.message.content) {
622
+ if (block.type === 'text') {
623
+ fullResponse += block.text;
624
+ addLog('info', 'assistant', block.text);
625
+ }
626
+ else if (block.type === 'tool_use') {
627
+ addLog('info', 'tool_use', `Tool: ${block.name}`, {
628
+ tool: block.name,
629
+ input: block.input
630
+ });
631
+ }
632
+ }
633
+ }
634
+ else if (message.type === 'result') {
635
+ addLog('info', 'result', `Execution completed`, {
636
+ costUsd: message.total_cost_usd,
637
+ durationMs: message.duration_ms,
638
+ numTurns: message.num_turns,
639
+ });
640
+ }
641
+ else if (message.type === 'system') {
642
+ // System messages might contain error info
643
+ addLog('info', 'system', `System: ${JSON.stringify(message)}`);
644
+ }
645
+ }
646
+ }
647
+ catch (queryError) {
648
+ const errorMessage = queryError instanceof Error ? queryError.message : String(queryError);
649
+ const errorStack = queryError instanceof Error ? queryError.stack : undefined;
650
+ addLog('error', 'system', `Query failed: ${errorMessage}`, { stack: errorStack });
651
+ throw queryError;
652
+ }
653
+ addLog('info', 'system', 'Query completed successfully');
654
+ // Create summary (first 500 chars)
655
+ const summary = fullResponse.length > 500
656
+ ? fullResponse.slice(0, 497) + '...'
657
+ : fullResponse;
658
+ return { summary, sessionId, logs };
659
+ }
660
+ // ============================================================================
661
+ // Utility Functions
662
+ // ============================================================================
663
+ /**
664
+ * Convert task schedule to cron expression
665
+ */
666
+ function getCronExpression(task) {
667
+ const { schedule } = task;
668
+ if (schedule.type === 'cron' && schedule.cronExpression) {
669
+ return schedule.cronExpression;
670
+ }
671
+ if (schedule.type === 'interval' && schedule.intervalMinutes) {
672
+ // Convert interval to cron expression
673
+ // e.g., 30 minutes -> "*/30 * * * *"
674
+ if (schedule.intervalMinutes < 60) {
675
+ return `*/${schedule.intervalMinutes} * * * *`;
676
+ }
677
+ else {
678
+ // For hourly or longer intervals
679
+ const hours = Math.floor(schedule.intervalMinutes / 60);
680
+ return `0 */${hours} * * *`;
681
+ }
682
+ }
683
+ return null;
684
+ }
685
+ /**
686
+ * Calculate next run time from cron expression
687
+ */
688
+ function getNextRunTime(cronExpression) {
689
+ try {
690
+ // node-cron doesn't have a built-in method to get next run time
691
+ // We'll use a simple calculation based on the cron expression
692
+ const now = new Date();
693
+ const parts = cronExpression.split(' ');
694
+ // For simple cases, calculate approximate next run
695
+ if (parts[0].startsWith('*/')) {
696
+ // Interval in minutes
697
+ const interval = parseInt(parts[0].slice(2));
698
+ const currentMinutes = now.getMinutes();
699
+ const nextMinutes = Math.ceil(currentMinutes / interval) * interval;
700
+ const next = new Date(now);
701
+ if (nextMinutes >= 60) {
702
+ next.setHours(next.getHours() + 1);
703
+ next.setMinutes(nextMinutes - 60);
704
+ }
705
+ else if (nextMinutes === currentMinutes) {
706
+ next.setMinutes(currentMinutes + interval);
707
+ }
708
+ else {
709
+ next.setMinutes(nextMinutes);
710
+ }
711
+ next.setSeconds(0);
712
+ next.setMilliseconds(0);
713
+ return next.toISOString();
714
+ }
715
+ // For other patterns, return undefined (will be calculated on next check)
716
+ return undefined;
717
+ }
718
+ catch {
719
+ return undefined;
720
+ }
721
+ }
722
+ // ============================================================================
723
+ // Status Functions
724
+ // ============================================================================
725
+ /**
726
+ * Get scheduler status
727
+ */
728
+ function getSchedulerStatus() {
729
+ return {
730
+ isInitialized,
731
+ enabled: schedulerEnabled,
732
+ config,
733
+ activeTaskCount: activeJobs.size,
734
+ runningTaskCount,
735
+ };
736
+ }
737
+ /**
738
+ * Get list of active task IDs
739
+ */
740
+ function getActiveTaskIds() {
741
+ return Array.from(activeJobs.keys());
742
+ }
743
+ //# sourceMappingURL=schedulerService.js.map