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,711 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ProjectMetadataStorage = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const agentStorage_1 = require("./agentStorage");
41
+ const paths_js_1 = require("../config/paths.js");
42
+ class ProjectMetadataStorage {
43
+ metadataFilePath; // ~/.claude-agent/projects.json
44
+ projectsDir; // ~/.claude/projects/
45
+ claudeConfigPath; // ~/.claude.json
46
+ agentStorage;
47
+ metadataCache = null;
48
+ constructor() {
49
+ this.metadataFilePath = paths_js_1.PROJECTS_METADATA_FILE;
50
+ this.projectsDir = path.join(os.homedir(), '.claude', 'projects');
51
+ this.claudeConfigPath = path.join(os.homedir(), '.claude.json');
52
+ this.agentStorage = new agentStorage_1.AgentStorage();
53
+ // Ensure directories exist
54
+ this.ensureDirectoriesExist();
55
+ }
56
+ ensureDirectoriesExist() {
57
+ if (!fs.existsSync(paths_js_1.CLAUDE_AGENT_DIR)) {
58
+ fs.mkdirSync(paths_js_1.CLAUDE_AGENT_DIR, { recursive: true });
59
+ }
60
+ if (!fs.existsSync(this.projectsDir)) {
61
+ fs.mkdirSync(this.projectsDir, { recursive: true });
62
+ }
63
+ }
64
+ /**
65
+ * Load all metadata from the single JSON file
66
+ */
67
+ loadMetadata() {
68
+ if (this.metadataCache) {
69
+ return this.metadataCache;
70
+ }
71
+ try {
72
+ if (fs.existsSync(this.metadataFilePath)) {
73
+ const content = fs.readFileSync(this.metadataFilePath, 'utf-8');
74
+ this.metadataCache = JSON.parse(content);
75
+ return this.metadataCache;
76
+ }
77
+ }
78
+ catch (error) {
79
+ console.error('Failed to load project metadata:', error);
80
+ }
81
+ // If file doesn't exist, try to migrate from old format
82
+ console.log('📦 Migrating project metadata from old format...');
83
+ this.metadataCache = this.migrateFromOldFormat();
84
+ // Save the migrated data
85
+ if (Object.keys(this.metadataCache).length > 0) {
86
+ this.saveMetadata(this.metadataCache);
87
+ console.log(`✅ Migrated ${Object.keys(this.metadataCache).length} projects`);
88
+ }
89
+ else {
90
+ this.metadataCache = {};
91
+ }
92
+ return this.metadataCache;
93
+ }
94
+ /**
95
+ * Migrate from old format (~/.claude-agent/projects/*.json) to new format
96
+ */
97
+ migrateFromOldFormat() {
98
+ const oldProjectsDir = path.join(path.dirname(this.metadataFilePath), 'projects');
99
+ const store = {};
100
+ if (!fs.existsSync(oldProjectsDir)) {
101
+ return store;
102
+ }
103
+ try {
104
+ const files = fs.readdirSync(oldProjectsDir);
105
+ for (const file of files) {
106
+ if (!file.endsWith('.json'))
107
+ continue;
108
+ try {
109
+ const filePath = path.join(oldProjectsDir, file);
110
+ const content = fs.readFileSync(filePath, 'utf-8');
111
+ const metadata = JSON.parse(content);
112
+ // The old metadata.path points to ~/.claude/projects/{encoded-name}
113
+ // We need to extract the real project path from session files
114
+ const realPath = this.extractRealProjectPath(metadata.path);
115
+ if (realPath) {
116
+ // Update metadata with real path
117
+ metadata.path = realPath;
118
+ store[realPath] = metadata;
119
+ console.log(` ✓ Migrated: ${metadata.name} (${realPath})`);
120
+ }
121
+ else {
122
+ console.warn(` ⚠ Could not find real path for ${metadata.name}`);
123
+ }
124
+ }
125
+ catch (error) {
126
+ console.warn(` ⚠ Failed to migrate ${file}:`, error);
127
+ }
128
+ }
129
+ }
130
+ catch (error) {
131
+ console.error('Failed to read old projects directory:', error);
132
+ }
133
+ return store;
134
+ }
135
+ /**
136
+ * Extract real project path from session files in ~/.claude/projects/
137
+ */
138
+ extractRealProjectPath(claudeProjectDir) {
139
+ try {
140
+ if (!fs.existsSync(claudeProjectDir)) {
141
+ return null;
142
+ }
143
+ // Find all jsonl files in the project directory
144
+ const files = fs.readdirSync(claudeProjectDir).filter(file => file.endsWith('.jsonl'));
145
+ for (const file of files) {
146
+ try {
147
+ const filePath = path.join(claudeProjectDir, file);
148
+ const content = fs.readFileSync(filePath, 'utf-8');
149
+ const firstLine = content.split('\n')[0];
150
+ if (firstLine) {
151
+ const message = JSON.parse(firstLine);
152
+ if (message.cwd) {
153
+ return message.cwd;
154
+ }
155
+ }
156
+ }
157
+ catch {
158
+ // Skip this file and try the next one
159
+ continue;
160
+ }
161
+ }
162
+ }
163
+ catch {
164
+ // Directory doesn't exist or can't be read
165
+ }
166
+ return null;
167
+ }
168
+ /**
169
+ * Save all metadata to the single JSON file
170
+ */
171
+ saveMetadata(metadata) {
172
+ try {
173
+ fs.writeFileSync(this.metadataFilePath, JSON.stringify(metadata, null, 2), 'utf-8');
174
+ this.metadataCache = metadata;
175
+ }
176
+ catch (error) {
177
+ console.error('Failed to save project metadata:', error);
178
+ throw error;
179
+ }
180
+ }
181
+ /**
182
+ * Read all project paths from ~/.claude.json
183
+ */
184
+ getClaudeProjects() {
185
+ try {
186
+ if (fs.existsSync(this.claudeConfigPath)) {
187
+ const content = fs.readFileSync(this.claudeConfigPath, 'utf-8');
188
+ const config = JSON.parse(content);
189
+ if (config.projects && typeof config.projects === 'object') {
190
+ return Object.keys(config.projects);
191
+ }
192
+ }
193
+ }
194
+ catch (error) {
195
+ console.error('Failed to read Claude config:', error);
196
+ }
197
+ return [];
198
+ }
199
+ /**
200
+ * Get or create metadata for a project path
201
+ */
202
+ getOrCreateMetadataForPath(projectPath) {
203
+ const allMetadata = this.loadMetadata();
204
+ // Check if metadata exists for this path
205
+ if (allMetadata[projectPath]) {
206
+ const existing = allMetadata[projectPath];
207
+ let shouldUpdate = false;
208
+ // Always get fresh timestamps to compare with stored ones
209
+ const timestamps = this.getProjectTimestamps(projectPath);
210
+ // Check if we need to refresh timestamps
211
+ const refreshConditions = [
212
+ // Condition 1: Migration artifacts (same timestamps)
213
+ existing.createdAt === existing.lastAccessed,
214
+ // Condition 2: Session directory is newer than stored lastAccessed
215
+ (() => {
216
+ const sessionDirPath = this.findClaudeSessionDir(projectPath);
217
+ if (sessionDirPath && fs.existsSync(sessionDirPath)) {
218
+ const sessionStats = fs.statSync(sessionDirPath);
219
+ const sessionTime = new Date(sessionStats.mtime).getTime();
220
+ const storedTime = new Date(existing.lastAccessed).getTime();
221
+ return sessionTime > storedTime + 60000; // More than 1 minute newer
222
+ }
223
+ return false;
224
+ })(),
225
+ // Condition 3: Creation time looks wrong (much older than reasonable)
226
+ (() => {
227
+ const storedCreatedTime = new Date(existing.createdAt).getTime();
228
+ const filesystemCreatedTime = new Date(timestamps.createdAt).getTime();
229
+ const timeDiff = Math.abs(storedCreatedTime - filesystemCreatedTime);
230
+ return timeDiff > 24 * 60 * 60 * 1000; // More than 1 day difference
231
+ })()
232
+ ];
233
+ shouldUpdate = refreshConditions.some(condition => condition);
234
+ if (shouldUpdate) {
235
+ // Only update if we got better timestamps (not current time)
236
+ const now = new Date();
237
+ const timestampDate = new Date(timestamps.createdAt);
238
+ const timeDiff = Math.abs(now.getTime() - timestampDate.getTime());
239
+ // If timestamp is more than 1 minute old, it's likely from filesystem
240
+ if (timeDiff > 60000) {
241
+ existing.createdAt = timestamps.createdAt;
242
+ existing.lastAccessed = timestamps.lastAccessed;
243
+ allMetadata[projectPath] = existing;
244
+ this.saveMetadata(allMetadata);
245
+ console.log(`🔄 Refreshed timestamps for: ${projectPath}`);
246
+ console.log(` Created: ${existing.createdAt}`);
247
+ console.log(` Accessed: ${existing.lastAccessed}`);
248
+ }
249
+ }
250
+ return existing;
251
+ }
252
+ // Create new metadata if not found
253
+ // Try to get real timestamps from filesystem
254
+ const timestamps = this.getProjectTimestamps(projectPath);
255
+ const metadataId = `project_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
256
+ const metadata = {
257
+ id: metadataId,
258
+ name: path.basename(projectPath),
259
+ description: '',
260
+ path: projectPath,
261
+ createdAt: timestamps.createdAt,
262
+ lastAccessed: timestamps.lastAccessed,
263
+ agents: {},
264
+ defaultAgent: '',
265
+ skills: {},
266
+ tags: [],
267
+ metadata: {}
268
+ };
269
+ // Save to store
270
+ allMetadata[projectPath] = metadata;
271
+ this.saveMetadata(allMetadata);
272
+ return metadata;
273
+ }
274
+ /**
275
+ * Get project timestamps from filesystem
276
+ */
277
+ getProjectTimestamps(projectPath) {
278
+ const now = new Date().toISOString();
279
+ let createdAt = now;
280
+ let lastAccessed = now;
281
+ try {
282
+ // Strategy 1: Try to get last accessed time from Claude sessions directory FIRST
283
+ // This is the most accurate for when the project was actually used
284
+ const sessionDirPath = this.findClaudeSessionDir(projectPath);
285
+ if (sessionDirPath && fs.existsSync(sessionDirPath)) {
286
+ const sessionStats = fs.statSync(sessionDirPath);
287
+ lastAccessed = sessionStats.mtime.toISOString();
288
+ }
289
+ // Strategy 2: Try to get creation time from real project directory
290
+ if (fs.existsSync(projectPath)) {
291
+ const stats = fs.statSync(projectPath);
292
+ createdAt = stats.birthtime.toISOString();
293
+ // Only use project directory mtime if we don't have session time
294
+ if (lastAccessed === now) {
295
+ lastAccessed = stats.mtime.toISOString();
296
+ }
297
+ }
298
+ else {
299
+ // Strategy 3: If project directory doesn't exist, try parent directory
300
+ // This helps for projects that were deleted but still exist in ~/.claude.json
301
+ const parentDir = path.dirname(projectPath);
302
+ if (fs.existsSync(parentDir)) {
303
+ const parentStats = fs.statSync(parentDir);
304
+ createdAt = parentStats.birthtime.toISOString();
305
+ // Only use parent directory mtime if we don't have session time
306
+ if (lastAccessed === now) {
307
+ lastAccessed = parentStats.mtime.toISOString();
308
+ }
309
+ console.log(`📁 Using parent directory timestamps for missing project: ${projectPath}`);
310
+ }
311
+ }
312
+ }
313
+ catch (error) {
314
+ console.warn(`Failed to get timestamps for ${projectPath}:`, error);
315
+ }
316
+ return { createdAt, lastAccessed };
317
+ }
318
+ /**
319
+ * Find the Claude session directory for a project path
320
+ */
321
+ findClaudeSessionDir(projectPath) {
322
+ try {
323
+ // The session directory name is the encoded project path
324
+ // For example: /Users/kongjie/projects -> -Users-kongjie-projects
325
+ const encoded = projectPath.replace(/\//g, '-');
326
+ const sessionDir = path.join(this.projectsDir, encoded);
327
+ if (fs.existsSync(sessionDir)) {
328
+ return sessionDir;
329
+ }
330
+ }
331
+ catch (error) {
332
+ // Ignore errors
333
+ }
334
+ return null;
335
+ }
336
+ /**
337
+ * Get all projects by reading from both ~/.claude.json and AgentStudio metadata
338
+ */
339
+ getAllProjects() {
340
+ const claudeProjectPaths = this.getClaudeProjects();
341
+ const allMetadata = this.loadMetadata();
342
+ const projects = [];
343
+ const processedPaths = new Set();
344
+ // First, process projects from Claude config (active projects)
345
+ for (const projectPath of claudeProjectPaths) {
346
+ try {
347
+ // Get or create metadata for this project
348
+ const metadata = this.getOrCreateMetadataForPath(projectPath);
349
+ // Enrich with agent info
350
+ const enriched = this.enrichProjectWithAgentInfo(metadata);
351
+ projects.push(enriched);
352
+ processedPaths.add(projectPath);
353
+ }
354
+ catch (error) {
355
+ console.error(`Failed to process project ${projectPath}:`, error);
356
+ }
357
+ }
358
+ // Then, process projects that only exist in AgentStudio metadata (created but not yet used)
359
+ for (const projectPath of Object.keys(allMetadata)) {
360
+ if (!processedPaths.has(projectPath)) {
361
+ try {
362
+ const metadata = allMetadata[projectPath];
363
+ // Only include if the project has agents associated (active projects)
364
+ if (Object.keys(metadata.agents).length > 0) {
365
+ const enriched = this.enrichProjectWithAgentInfo(metadata);
366
+ projects.push(enriched);
367
+ console.log(`📋 Added AgentStudio-only project: ${metadata.name}`);
368
+ }
369
+ }
370
+ catch (error) {
371
+ console.error(`Failed to process AgentStudio project ${projectPath}:`, error);
372
+ }
373
+ }
374
+ }
375
+ return projects.sort((a, b) => new Date(b.lastAccessed).getTime() - new Date(a.lastAccessed).getTime());
376
+ }
377
+ /**
378
+ * Get project metadata by path
379
+ */
380
+ getProjectMetadata(projectPath) {
381
+ const allMetadata = this.loadMetadata();
382
+ return allMetadata[projectPath] || null;
383
+ }
384
+ /**
385
+ * Save project metadata for a specific path
386
+ */
387
+ saveProjectMetadata(projectPath, metadata) {
388
+ const allMetadata = this.loadMetadata();
389
+ allMetadata[projectPath] = metadata;
390
+ this.saveMetadata(allMetadata);
391
+ }
392
+ /**
393
+ * Get project directory last modified time from filesystem by path
394
+ */
395
+ getProjectLastModifiedByPath(projectPath, metadata) {
396
+ try {
397
+ // Priority 1: Use session directory time (most accurate for last activity)
398
+ const sessionDirPath = this.findClaudeSessionDir(projectPath);
399
+ if (sessionDirPath && fs.existsSync(sessionDirPath)) {
400
+ const sessionStats = fs.statSync(sessionDirPath);
401
+ return sessionStats.mtime.toISOString();
402
+ }
403
+ // Priority 2: Use project directory time
404
+ if (fs.existsSync(projectPath)) {
405
+ const stats = fs.statSync(projectPath);
406
+ return stats.mtime.toISOString();
407
+ }
408
+ }
409
+ catch (error) {
410
+ console.warn(`Failed to get filesystem time for project ${projectPath}:`, error);
411
+ }
412
+ // Fallback to metadata lastAccessed if filesystem time is unavailable
413
+ return metadata.lastAccessed;
414
+ }
415
+ /**
416
+ * Enrich project metadata with agent information
417
+ */
418
+ enrichProjectWithAgentInfo(metadata) {
419
+ const enabledAgents = Object.keys(metadata.agents).filter(agentId => metadata.agents[agentId].enabled);
420
+ // Get default agent info
421
+ let defaultAgent = metadata.defaultAgent;
422
+ let defaultAgentName = '';
423
+ let defaultAgentIcon = '';
424
+ if (defaultAgent && metadata.agents[defaultAgent]?.enabled) {
425
+ const agent = this.agentStorage.getAgent(defaultAgent);
426
+ if (agent) {
427
+ defaultAgentName = agent.name;
428
+ defaultAgentIcon = agent.ui.icon;
429
+ }
430
+ }
431
+ else if (enabledAgents.length > 0) {
432
+ // Use the most recently used agent as default
433
+ defaultAgent = enabledAgents.reduce((latest, agentId) => {
434
+ const latestTime = metadata.agents[latest]?.lastUsed || '';
435
+ const currentTime = metadata.agents[agentId]?.lastUsed || '';
436
+ return currentTime > latestTime ? agentId : latest;
437
+ }, enabledAgents[0]);
438
+ const agent = this.agentStorage.getAgent(defaultAgent);
439
+ if (agent) {
440
+ defaultAgentName = agent.name;
441
+ defaultAgentIcon = agent.ui.icon;
442
+ // Update metadata with new default
443
+ metadata.defaultAgent = defaultAgent;
444
+ const allMetadata = this.loadMetadata();
445
+ allMetadata[metadata.path] = metadata;
446
+ this.saveMetadata(allMetadata);
447
+ }
448
+ }
449
+ else {
450
+ // No agents assigned, use claude-code as default fallback
451
+ const fallbackAgent = this.agentStorage.getAgent('claude-code');
452
+ if (fallbackAgent && fallbackAgent.enabled) {
453
+ defaultAgent = 'claude-code';
454
+ defaultAgentName = fallbackAgent.name;
455
+ defaultAgentIcon = fallbackAgent.ui.icon;
456
+ console.log(`📋 Using fallback agent (claude-code) for project: ${metadata.name}`);
457
+ }
458
+ }
459
+ // Use the path from metadata (which is the real project path)
460
+ const projectPath = metadata.path;
461
+ // Get actual last modified time from filesystem
462
+ const lastAccessed = this.getProjectLastModifiedByPath(projectPath, metadata);
463
+ // Extract directory name from path for compatibility
464
+ const dirName = path.basename(projectPath);
465
+ return {
466
+ id: metadata.id,
467
+ name: metadata.name,
468
+ dirName,
469
+ path: projectPath,
470
+ realPath: projectPath,
471
+ description: metadata.description,
472
+ createdAt: metadata.createdAt,
473
+ lastAccessed: lastAccessed,
474
+ agents: enabledAgents,
475
+ defaultAgent,
476
+ defaultAgentName,
477
+ defaultAgentIcon,
478
+ tags: metadata.tags,
479
+ metadata: metadata.metadata
480
+ };
481
+ }
482
+ /**
483
+ * Add an agent to a project
484
+ */
485
+ addAgentToProject(projectPath, agentId) {
486
+ const metadata = this.getProjectMetadata(projectPath);
487
+ if (!metadata)
488
+ return;
489
+ const now = new Date().toISOString();
490
+ if (!metadata.agents[agentId]) {
491
+ metadata.agents[agentId] = {
492
+ enabled: true,
493
+ lastUsed: now,
494
+ sessionCount: 0,
495
+ customConfig: {}
496
+ };
497
+ }
498
+ else {
499
+ metadata.agents[agentId].enabled = true;
500
+ metadata.agents[agentId].lastUsed = now;
501
+ }
502
+ // Set as default if no default agent exists
503
+ if (!metadata.defaultAgent) {
504
+ metadata.defaultAgent = agentId;
505
+ }
506
+ metadata.lastAccessed = now;
507
+ this.saveProjectMetadata(projectPath, metadata);
508
+ }
509
+ /**
510
+ * Remove an agent from a project
511
+ */
512
+ removeAgentFromProject(projectPath, agentId) {
513
+ const metadata = this.getProjectMetadata(projectPath);
514
+ if (!metadata)
515
+ return;
516
+ if (metadata.agents[agentId]) {
517
+ metadata.agents[agentId].enabled = false;
518
+ // If this was the default agent, find a new default
519
+ if (metadata.defaultAgent === agentId) {
520
+ const enabledAgents = Object.keys(metadata.agents).filter(id => id !== agentId && metadata.agents[id].enabled);
521
+ metadata.defaultAgent = enabledAgents.length > 0 ? enabledAgents[0] : '';
522
+ }
523
+ metadata.lastAccessed = new Date().toISOString();
524
+ this.saveProjectMetadata(projectPath, metadata);
525
+ }
526
+ }
527
+ /**
528
+ * Set default agent for a project
529
+ */
530
+ setDefaultAgent(projectPath, agentId) {
531
+ const metadata = this.getProjectMetadata(projectPath);
532
+ if (!metadata)
533
+ return;
534
+ // Ensure the agent is enabled for this project
535
+ if (!metadata.agents[agentId]) {
536
+ this.addAgentToProject(projectPath, agentId);
537
+ return;
538
+ }
539
+ if (metadata.agents[agentId].enabled) {
540
+ metadata.defaultAgent = agentId;
541
+ metadata.lastAccessed = new Date().toISOString();
542
+ this.saveProjectMetadata(projectPath, metadata);
543
+ }
544
+ }
545
+ /**
546
+ * Update project tags
547
+ */
548
+ updateProjectTags(projectPath, tags) {
549
+ const metadata = this.getProjectMetadata(projectPath);
550
+ if (!metadata)
551
+ return;
552
+ metadata.tags = tags;
553
+ metadata.lastAccessed = new Date().toISOString();
554
+ this.saveProjectMetadata(projectPath, metadata);
555
+ }
556
+ /**
557
+ * Update project custom metadata
558
+ */
559
+ updateProjectMetadata(projectPath, customMetadata) {
560
+ const metadata = this.getProjectMetadata(projectPath);
561
+ if (!metadata)
562
+ return;
563
+ metadata.metadata = { ...metadata.metadata, ...customMetadata };
564
+ metadata.lastAccessed = new Date().toISOString();
565
+ this.saveProjectMetadata(projectPath, metadata);
566
+ }
567
+ /**
568
+ * Update project basic info
569
+ */
570
+ updateProjectInfo(projectPath, updates) {
571
+ const metadata = this.getProjectMetadata(projectPath);
572
+ if (!metadata)
573
+ return;
574
+ if (updates.name !== undefined) {
575
+ metadata.name = updates.name;
576
+ }
577
+ if (updates.description !== undefined) {
578
+ metadata.description = updates.description;
579
+ }
580
+ metadata.lastAccessed = new Date().toISOString();
581
+ this.saveProjectMetadata(projectPath, metadata);
582
+ }
583
+ /**
584
+ * Record agent usage for a project
585
+ */
586
+ recordAgentUsage(projectPath, agentId) {
587
+ const metadata = this.getProjectMetadata(projectPath);
588
+ if (!metadata)
589
+ return;
590
+ const now = new Date().toISOString();
591
+ if (!metadata.agents[agentId]) {
592
+ metadata.agents[agentId] = {
593
+ enabled: true,
594
+ lastUsed: now,
595
+ sessionCount: 1,
596
+ customConfig: {}
597
+ };
598
+ }
599
+ else {
600
+ metadata.agents[agentId].lastUsed = now;
601
+ metadata.agents[agentId].sessionCount += 1;
602
+ metadata.agents[agentId].enabled = true;
603
+ }
604
+ // Update default agent to the most recently used
605
+ metadata.defaultAgent = agentId;
606
+ metadata.lastAccessed = now;
607
+ this.saveProjectMetadata(projectPath, metadata);
608
+ }
609
+ /**
610
+ * Create a new project metadata entry
611
+ * @param projectPath The real project path (can be anywhere on the filesystem)
612
+ * @param initialData Initial project data including name, description, agentId, etc.
613
+ */
614
+ createProject(projectPath, initialData) {
615
+ const now = new Date().toISOString();
616
+ // Generate a unique metadata ID
617
+ const metadataId = `project_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
618
+ const metadata = {
619
+ id: metadataId,
620
+ name: initialData.name || path.basename(projectPath),
621
+ description: initialData.description || '',
622
+ path: projectPath, // Store the real project path
623
+ createdAt: now,
624
+ lastAccessed: now,
625
+ agents: {},
626
+ defaultAgent: '',
627
+ skills: {},
628
+ tags: initialData.tags || [],
629
+ metadata: initialData.metadata || {}
630
+ };
631
+ // Add initial agent if specified
632
+ if (initialData.agentId) {
633
+ metadata.agents[initialData.agentId] = {
634
+ enabled: true,
635
+ lastUsed: now,
636
+ sessionCount: 0,
637
+ customConfig: {}
638
+ };
639
+ metadata.defaultAgent = initialData.agentId;
640
+ }
641
+ // Save metadata
642
+ this.saveProjectMetadata(projectPath, metadata);
643
+ return metadata;
644
+ }
645
+ /**
646
+ * Delete a project (remove metadata, claude config entry, and session directory)
647
+ */
648
+ deleteProject(projectPath) {
649
+ try {
650
+ let deletedSomething = false;
651
+ // 1. Delete from AgentStudio metadata
652
+ const allMetadata = this.loadMetadata();
653
+ if (allMetadata[projectPath]) {
654
+ delete allMetadata[projectPath];
655
+ this.saveMetadata(allMetadata);
656
+ deletedSomething = true;
657
+ console.log(`🗑️ Removed project metadata: ${projectPath}`);
658
+ }
659
+ // 2. Remove from Claude's config file (~/.claude.json)
660
+ try {
661
+ if (fs.existsSync(this.claudeConfigPath)) {
662
+ const content = fs.readFileSync(this.claudeConfigPath, 'utf-8');
663
+ const config = JSON.parse(content);
664
+ if (config.projects && config.projects[projectPath]) {
665
+ delete config.projects[projectPath];
666
+ fs.writeFileSync(this.claudeConfigPath, JSON.stringify(config, null, 2));
667
+ deletedSomething = true;
668
+ console.log(`🗑️ Removed from Claude config: ${projectPath}`);
669
+ }
670
+ }
671
+ }
672
+ catch (error) {
673
+ console.warn(`Failed to remove from Claude config:`, error);
674
+ }
675
+ // 3. Remove Claude session directory
676
+ try {
677
+ const sessionDirPath = this.findClaudeSessionDir(projectPath);
678
+ if (sessionDirPath && fs.existsSync(sessionDirPath)) {
679
+ fs.rmSync(sessionDirPath, { recursive: true, force: true });
680
+ deletedSomething = true;
681
+ console.log(`🗑️ Removed session directory: ${sessionDirPath}`);
682
+ }
683
+ }
684
+ catch (error) {
685
+ console.warn(`Failed to remove session directory:`, error);
686
+ }
687
+ return deletedSomething;
688
+ }
689
+ catch (error) {
690
+ console.error(`Failed to delete project ${projectPath}:`, error);
691
+ return false;
692
+ }
693
+ }
694
+ /**
695
+ * Get project by path
696
+ */
697
+ getProject(projectPath) {
698
+ try {
699
+ const metadata = this.getProjectMetadata(projectPath);
700
+ if (!metadata)
701
+ return null;
702
+ return this.enrichProjectWithAgentInfo(metadata);
703
+ }
704
+ catch (error) {
705
+ console.error(`Failed to get project ${projectPath}:`, error);
706
+ return null;
707
+ }
708
+ }
709
+ }
710
+ exports.ProjectMetadataStorage = ProjectMetadataStorage;
711
+ //# sourceMappingURL=projectMetadataStorage.js.map