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.
- package/README.md +26 -505
- package/bin/agentstudio.js +305 -0
- package/bin/agentstudio.js.map +1 -0
- package/bin/serviceManager.d.ts +16 -0
- package/bin/serviceManager.d.ts.map +1 -0
- package/bin/serviceManager.js +434 -0
- package/bin/serviceManager.js.map +1 -0
- package/config/index.d.ts +74 -0
- package/config/index.d.ts.map +1 -0
- package/config/index.js +166 -0
- package/config/index.js.map +1 -0
- package/config/paths.d.ts +81 -0
- package/config/paths.d.ts.map +1 -0
- package/config/paths.js +98 -0
- package/config/paths.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.d.ts.map +1 -0
- package/index.js +369 -0
- package/index.js.map +1 -0
- package/jobs/taskTimeoutMonitor.d.ts +25 -0
- package/jobs/taskTimeoutMonitor.d.ts.map +1 -0
- package/jobs/taskTimeoutMonitor.js +94 -0
- package/jobs/taskTimeoutMonitor.js.map +1 -0
- package/middleware/a2aAuth.d.ts +38 -0
- package/middleware/a2aAuth.d.ts.map +1 -0
- package/middleware/a2aAuth.js +134 -0
- package/middleware/a2aAuth.js.map +1 -0
- package/{backend/dist/middleware → middleware}/auth.d.ts +3 -1
- package/middleware/auth.d.ts.map +1 -0
- package/middleware/auth.js +35 -0
- package/middleware/auth.js.map +1 -0
- package/middleware/httpsOnly.d.ts +38 -0
- package/middleware/httpsOnly.d.ts.map +1 -0
- package/middleware/httpsOnly.js +105 -0
- package/middleware/httpsOnly.js.map +1 -0
- package/middleware/rateLimiting.d.ts +37 -0
- package/middleware/rateLimiting.d.ts.map +1 -0
- package/middleware/rateLimiting.js +118 -0
- package/middleware/rateLimiting.js.map +1 -0
- package/package.json +43 -38
- package/public/assets/AgentsPage-Nvg2xu6K.js +10 -0
- package/public/assets/Button-Co56C389.js +1 -0
- package/public/assets/ChatPage-D6sol0ad.js +442 -0
- package/public/assets/CommandForm-Bk7F_HU8.js +7 -0
- package/public/assets/CommandsPage-DZHyOdKd.js +1 -0
- package/public/assets/DashboardPage-29qC7Ev1.js +15 -0
- package/public/assets/FileBrowser-BYweUPH4.js +6 -0
- package/public/assets/FileExplorer-DNYj6Tsx.js +1 -0
- package/public/assets/GeneralSettingsPage-D9Xa7Nd8.js +1 -0
- package/public/assets/LandingPage-CjnT-cvO.js +1 -0
- package/public/assets/LoginPage-DcaGNCXH.js +16 -0
- package/public/assets/McpAdminSettingsPage-DgR3E2Bd.js +7 -0
- package/public/assets/McpPage-CtWf1CoL.js +40 -0
- package/public/assets/MemorySettingsPage-JTry4Ccp.js +1 -0
- package/public/assets/PluginsPage-D-BHjQ3P.js +1 -0
- package/public/assets/ProjectSelector-DSXOjMQC.js +1 -0
- package/public/assets/ProjectsPage-lLUk4-Xa.js +21 -0
- package/public/assets/ScheduledTasksPage-5hPbd9Vs.js +1 -0
- package/public/assets/SettingsLayout-DGJspXLp.js +1 -0
- package/public/assets/SkillsPage-DBw0m7D2.js +18 -0
- package/{backend/dist/frontend/assets/SubagentForm-DXtTTIKg.js → public/assets/SubagentForm-BdUK1U4y.js} +2 -2
- package/public/assets/SubagentsPage-Dnq70IFd.js +1 -0
- package/{backend/dist/frontend/assets/ToastTestPage-DT4wuN5C.js → public/assets/ToastTestPage-BfJQRFIm.js} +1 -1
- package/public/assets/ToolsList-Dl5F2fWk.js +1 -0
- package/public/assets/UnifiedToolSelector-CNbPsiuq.js +1 -0
- package/public/assets/VersionSettingsPage-BfoCcham.js +5 -0
- package/public/assets/_basePickBy-7C_e0Xv1.js +1 -0
- package/public/assets/_baseUniq-eGJNLBzx.js +1 -0
- package/public/assets/agents-ChrA1R0y.js +1 -0
- package/public/assets/arc-CuA752eE.js +1 -0
- package/public/assets/architectureDiagram-VXUJARFQ-BnPYh1OW.js +36 -0
- package/public/assets/blockDiagram-VD42YOAC-72nsMt_i.js +122 -0
- package/public/assets/c4Diagram-YG6GDRKO-BNJSAXcg.js +10 -0
- package/public/assets/channel-CIunGC5m.js +1 -0
- package/public/assets/chunk-4BX2VUAB-RPxkCWhH.js +1 -0
- package/public/assets/chunk-55IACEB6-3ePDt0kp.js +1 -0
- package/public/assets/chunk-B4BG7PRW-CBg_BBfl.js +165 -0
- package/public/assets/chunk-DI55MBZ5-DIh69TUJ.js +220 -0
- package/public/assets/chunk-FMBD7UC4-BbjwhyTe.js +15 -0
- package/public/assets/chunk-QN33PNHL-BpH-o_YR.js +1 -0
- package/public/assets/chunk-QZHKN3VN-DYB7rh5Q.js +1 -0
- package/public/assets/chunk-TZMSLE5B-DPCYEVb3.js +1 -0
- package/public/assets/classDiagram-2ON5EDUG-aUQHFsTA.js +1 -0
- package/public/assets/classDiagram-v2-WZHVMYZB-aUQHFsTA.js +1 -0
- package/public/assets/clone-Ckf7tA1V.js +1 -0
- package/public/assets/cose-bilkent-S5V4N54A-CnpfmL-Y.js +1 -0
- package/public/assets/cytoscape.esm-DtBltrT8.js +331 -0
- package/public/assets/dagre-6UL2VRFP-DR9x77Xf.js +4 -0
- package/{backend/dist/frontend/assets/data-structures-DLJedtzx.js → public/assets/data-structures-C0h9Oap1.js} +1 -1
- package/public/assets/defaultLocale-C4B-KCzX.js +1 -0
- package/public/assets/diagram-PSM6KHXK-SONPsQNx.js +24 -0
- package/public/assets/diagram-QEK2KX5R-BKYFSfC1.js +43 -0
- package/public/assets/diagram-S2PKOQOG-CkM0APZj.js +24 -0
- package/public/assets/erDiagram-Q2GNP2WA-BX1DpOGx.js +60 -0
- package/public/assets/flowDiagram-NV44I4VS-HAAlzNbq.js +162 -0
- package/public/assets/ganttDiagram-LVOFAZNH-BqzWexqa.js +267 -0
- package/public/assets/gitGraphDiagram-NY62KEGX-CIPmSp43.js +65 -0
- package/public/assets/graph-m515btDj.js +1 -0
- package/public/assets/index-Bn3v3S9-.js +293 -0
- package/public/assets/index-DWieeYj4.css +1 -0
- package/public/assets/infoDiagram-F6ZHWCRC-Pn4yNWrF.js +2 -0
- package/public/assets/init-Gi6I4Gst.js +1 -0
- package/public/assets/journeyDiagram-XKPGCS4Q-BfzTomS0.js +139 -0
- package/public/assets/kanban-definition-3W4ZIXB7-Cgju7b-L.js +89 -0
- package/public/assets/katex-qrhCpa0F.js +261 -0
- package/public/assets/layout-BKQfQSxJ.js +1 -0
- package/public/assets/linear-DigtLz3B.js +1 -0
- package/public/assets/mindmap-definition-VGOIOE7T-qopraVFy.js +68 -0
- package/public/assets/monaco-editor-DHKm5-VF.js +19 -0
- package/public/assets/ordinal-Cboi1Yqb.js +1 -0
- package/public/assets/pieDiagram-ADFJNKIX-BcoaAI-L.js +30 -0
- package/public/assets/quadrantDiagram-AYHSOK5B-D-DwcoSd.js +7 -0
- package/public/assets/requirementDiagram-UZGBJVZJ-DbQCpx77.js +64 -0
- package/public/assets/sankeyDiagram-TZEHDZUN-BVk8387S.js +10 -0
- package/public/assets/sequenceDiagram-WL72ISMW-BdzICjxO.js +145 -0
- package/public/assets/stateDiagram-FKZM4ZOC-CYY-uUvJ.js +1 -0
- package/public/assets/stateDiagram-v2-4FDKWEC3-Dh2Kvomq.js +1 -0
- package/{backend/dist/frontend/assets/syntax-highlighting-YWvMU4Hm.js → public/assets/syntax-highlighting-CnREyncB.js} +5 -5
- package/public/assets/tabManager-B2LQO_Ll.js +30 -0
- package/{backend/dist/frontend/assets/table-D6q1rytw.js → public/assets/table-D0L2RL5i.js} +1 -1
- package/public/assets/timeline-definition-IT6M3QCI-BAvjPYvX.js +61 -0
- package/public/assets/tools-IcPNZlPj.js +1 -0
- package/public/assets/treemap-KMMF4GRG-DtkpVA56.js +128 -0
- package/{backend/dist/frontend/assets/ui-components-Cw21Epuw.js → public/assets/ui-components-D1St49qC.js} +231 -96
- package/public/assets/useAgents-BnDTkOG8.js +2 -0
- package/public/assets/useClaudeVersions-CD59tFWM.js +1 -0
- package/public/assets/useCommands-mvMu3mMD.js +1 -0
- package/public/assets/useProjects-YXOjaOwL.js +1 -0
- package/public/assets/xychartDiagram-PRI3JC2R-ByBTDWE2.js +7 -0
- package/{backend/dist/frontend → public}/index.html +8 -8
- package/routes/__tests__/a2a.integration.test.d.ts +11 -0
- package/routes/__tests__/a2a.integration.test.d.ts.map +1 -0
- package/routes/__tests__/a2a.integration.test.js +314 -0
- package/routes/__tests__/a2a.integration.test.js.map +1 -0
- package/routes/__tests__/a2a.test.d.ts +6 -0
- package/routes/__tests__/a2a.test.d.ts.map +1 -0
- package/routes/__tests__/a2a.test.js +622 -0
- package/routes/__tests__/a2a.test.js.map +1 -0
- package/routes/__tests__/agents.test.d.ts +6 -0
- package/routes/__tests__/agents.test.d.ts.map +1 -0
- package/routes/__tests__/agents.test.js +315 -0
- package/routes/__tests__/agents.test.js.map +1 -0
- package/routes/__tests__/sessions.test.d.ts +7 -0
- package/routes/__tests__/sessions.test.d.ts.map +1 -0
- package/routes/__tests__/sessions.test.js +330 -0
- package/routes/__tests__/sessions.test.js.map +1 -0
- package/routes/a2a.d.ts +18 -0
- package/routes/a2a.d.ts.map +1 -0
- package/routes/a2a.js +649 -0
- package/routes/a2a.js.map +1 -0
- package/routes/a2a.streaming.test.d.ts +2 -0
- package/routes/a2a.streaming.test.d.ts.map +1 -0
- package/routes/a2a.streaming.test.js +167 -0
- package/routes/a2a.streaming.test.js.map +1 -0
- package/routes/a2aManagement.d.ts +21 -0
- package/routes/a2aManagement.d.ts.map +1 -0
- package/routes/a2aManagement.js +466 -0
- package/routes/a2aManagement.js.map +1 -0
- package/{backend/dist/routes → routes}/agents.d.ts.map +1 -1
- package/routes/agents.js +997 -0
- package/routes/agents.js.map +1 -0
- package/{backend/dist/routes → routes}/auth.d.ts.map +1 -1
- package/routes/auth.js +135 -0
- package/routes/auth.js.map +1 -0
- package/{backend/dist/routes → routes}/commands.d.ts.map +1 -1
- package/{backend/dist/routes → routes}/commands.js +115 -31
- package/routes/commands.js.map +1 -0
- package/routes/config.d.ts +4 -0
- package/routes/config.d.ts.map +1 -0
- package/routes/config.js +211 -0
- package/routes/config.js.map +1 -0
- package/{backend/dist/routes → routes}/files.d.ts.map +1 -1
- package/{backend/dist/routes → routes}/files.js +103 -43
- package/routes/files.js.map +1 -0
- package/routes/mcp.d.ts +27 -0
- package/routes/mcp.d.ts.map +1 -0
- package/{backend/dist/routes → routes}/mcp.js +195 -105
- package/routes/mcp.js.map +1 -0
- package/routes/mcpAdmin.d.ts +16 -0
- package/routes/mcpAdmin.d.ts.map +1 -0
- package/routes/mcpAdmin.js +308 -0
- package/routes/mcpAdmin.js.map +1 -0
- package/routes/mcpAdminManagement.d.ts +17 -0
- package/routes/mcpAdminManagement.d.ts.map +1 -0
- package/routes/mcpAdminManagement.js +345 -0
- package/routes/mcpAdminManagement.js.map +1 -0
- package/routes/media.d.ts.map +1 -0
- package/{backend/dist/routes → routes}/media.js +52 -42
- package/routes/media.js.map +1 -0
- package/routes/mediaAuth.d.ts +8 -0
- package/routes/mediaAuth.d.ts.map +1 -0
- package/routes/mediaAuth.js +136 -0
- package/routes/mediaAuth.js.map +1 -0
- package/routes/plugins.d.ts +4 -0
- package/routes/plugins.d.ts.map +1 -0
- package/routes/plugins.js +339 -0
- package/routes/plugins.js.map +1 -0
- package/{backend/dist/routes → routes}/projects.d.ts.map +1 -1
- package/routes/projects.js +884 -0
- package/routes/projects.js.map +1 -0
- package/routes/scheduledTasks.d.ts +9 -0
- package/routes/scheduledTasks.d.ts.map +1 -0
- package/routes/scheduledTasks.js +320 -0
- package/routes/scheduledTasks.js.map +1 -0
- package/{backend/dist/routes → routes}/sessions.d.ts.map +1 -1
- package/{backend/dist/routes → routes}/sessions.js +258 -39
- package/routes/sessions.js.map +1 -0
- package/{backend/dist/routes → routes}/settings.d.ts.map +1 -1
- package/{backend/dist/routes → routes}/settings.js +82 -241
- package/routes/settings.js.map +1 -0
- package/{backend/dist/routes/mcp.d.ts → routes/skills.d.ts} +1 -1
- package/routes/skills.d.ts.map +1 -0
- package/routes/skills.js +272 -0
- package/routes/skills.js.map +1 -0
- package/routes/slack.d.ts +10 -0
- package/routes/slack.d.ts.map +1 -0
- package/routes/slack.js +189 -0
- package/routes/slack.js.map +1 -0
- package/{backend/dist/routes → routes}/slides.d.ts.map +1 -1
- package/{backend/dist/routes → routes}/slides.js +29 -27
- package/routes/slides.js.map +1 -0
- package/{backend/dist/routes → routes}/subagents.js +27 -22
- package/routes/subagents.js.map +1 -0
- package/schemas/a2a.d.ts +858 -0
- package/schemas/a2a.d.ts.map +1 -0
- package/schemas/a2a.js +300 -0
- package/schemas/a2a.js.map +1 -0
- package/scripts/postinstall.js +10 -0
- package/services/__tests__/pluginInstaller.test.d.ts +5 -0
- package/services/__tests__/pluginInstaller.test.d.ts.map +1 -0
- package/services/__tests__/pluginInstaller.test.js +290 -0
- package/services/__tests__/pluginInstaller.test.js.map +1 -0
- package/services/__tests__/pluginParser.test.d.ts +5 -0
- package/services/__tests__/pluginParser.test.d.ts.map +1 -0
- package/services/__tests__/pluginParser.test.js +272 -0
- package/services/__tests__/pluginParser.test.js.map +1 -0
- package/services/__tests__/pluginPaths.test.d.ts +5 -0
- package/services/__tests__/pluginPaths.test.d.ts.map +1 -0
- package/services/__tests__/pluginPaths.test.js +221 -0
- package/services/__tests__/pluginPaths.test.js.map +1 -0
- package/services/__tests__/pluginScanner.test.d.ts +5 -0
- package/services/__tests__/pluginScanner.test.d.ts.map +1 -0
- package/services/__tests__/pluginScanner.test.js +272 -0
- package/services/__tests__/pluginScanner.test.js.map +1 -0
- package/services/__tests__/pluginSymlink.test.d.ts +5 -0
- package/services/__tests__/pluginSymlink.test.d.ts.map +1 -0
- package/services/__tests__/pluginSymlink.test.js +318 -0
- package/services/__tests__/pluginSymlink.test.js.map +1 -0
- package/services/__tests__/slackAIService.test.d.ts +5 -0
- package/services/__tests__/slackAIService.test.d.ts.map +1 -0
- package/services/__tests__/slackAIService.test.js +477 -0
- package/services/__tests__/slackAIService.test.js.map +1 -0
- package/services/__tests__/slackThreadMapper.test.d.ts +5 -0
- package/services/__tests__/slackThreadMapper.test.d.ts.map +1 -0
- package/services/__tests__/slackThreadMapper.test.js +194 -0
- package/services/__tests__/slackThreadMapper.test.js.map +1 -0
- package/services/a2a/__tests__/a2aClientTool.integration.test.d.ts +6 -0
- package/services/a2a/__tests__/a2aClientTool.integration.test.d.ts.map +1 -0
- package/services/a2a/__tests__/a2aClientTool.integration.test.js +264 -0
- package/services/a2a/__tests__/a2aClientTool.integration.test.js.map +1 -0
- package/services/a2a/__tests__/a2aClientTool.test.d.ts +6 -0
- package/services/a2a/__tests__/a2aClientTool.test.d.ts.map +1 -0
- package/services/a2a/__tests__/a2aClientTool.test.js +418 -0
- package/services/a2a/__tests__/a2aClientTool.test.js.map +1 -0
- package/services/a2a/__tests__/a2aConfigService.test.d.ts +6 -0
- package/services/a2a/__tests__/a2aConfigService.test.d.ts.map +1 -0
- package/services/a2a/__tests__/a2aConfigService.test.js +431 -0
- package/services/a2a/__tests__/a2aConfigService.test.js.map +1 -0
- package/services/a2a/__tests__/a2aConfigServicePath.test.d.ts +2 -0
- package/services/a2a/__tests__/a2aConfigServicePath.test.d.ts.map +1 -0
- package/services/a2a/__tests__/a2aConfigServicePath.test.js +49 -0
- package/services/a2a/__tests__/a2aConfigServicePath.test.js.map +1 -0
- package/services/a2a/__tests__/a2aSdkMcp.test.d.ts +10 -0
- package/services/a2a/__tests__/a2aSdkMcp.test.d.ts.map +1 -0
- package/services/a2a/__tests__/a2aSdkMcp.test.js +239 -0
- package/services/a2a/__tests__/a2aSdkMcp.test.js.map +1 -0
- package/services/a2a/__tests__/agentCardService.test.d.ts +6 -0
- package/services/a2a/__tests__/agentCardService.test.d.ts.map +1 -0
- package/services/a2a/__tests__/agentCardService.test.js +292 -0
- package/services/a2a/__tests__/agentCardService.test.js.map +1 -0
- package/services/a2a/__tests__/apiKeyService.test.d.ts +6 -0
- package/services/a2a/__tests__/apiKeyService.test.d.ts.map +1 -0
- package/services/a2a/__tests__/apiKeyService.test.js +284 -0
- package/services/a2a/__tests__/apiKeyService.test.js.map +1 -0
- package/services/a2a/__tests__/buildQueryOptionsIntegration.test.d.ts +2 -0
- package/services/a2a/__tests__/buildQueryOptionsIntegration.test.d.ts.map +1 -0
- package/services/a2a/__tests__/buildQueryOptionsIntegration.test.js +70 -0
- package/services/a2a/__tests__/buildQueryOptionsIntegration.test.js.map +1 -0
- package/services/a2a/__tests__/dynamic_config_verification.test.d.ts +2 -0
- package/services/a2a/__tests__/dynamic_config_verification.test.d.ts.map +1 -0
- package/services/a2a/__tests__/dynamic_config_verification.test.js +67 -0
- package/services/a2a/__tests__/dynamic_config_verification.test.js.map +1 -0
- package/services/a2a/__tests__/integrateA2AMcpServer.test.d.ts +2 -0
- package/services/a2a/__tests__/integrateA2AMcpServer.test.d.ts.map +1 -0
- package/services/a2a/__tests__/integrateA2AMcpServer.test.js +112 -0
- package/services/a2a/__tests__/integrateA2AMcpServer.test.js.map +1 -0
- package/services/a2a/__tests__/taskManager.integration.test.d.ts +7 -0
- package/services/a2a/__tests__/taskManager.integration.test.d.ts.map +1 -0
- package/services/a2a/__tests__/taskManager.integration.test.js +346 -0
- package/services/a2a/__tests__/taskManager.integration.test.js.map +1 -0
- package/services/a2a/__tests__/taskManager.test.d.ts +7 -0
- package/services/a2a/__tests__/taskManager.test.d.ts.map +1 -0
- package/services/a2a/__tests__/taskManager.test.js +423 -0
- package/services/a2a/__tests__/taskManager.test.js.map +1 -0
- package/services/a2a/a2aClientTool.d.ts +73 -0
- package/services/a2a/a2aClientTool.d.ts.map +1 -0
- package/services/a2a/a2aClientTool.js +572 -0
- package/services/a2a/a2aClientTool.js.map +1 -0
- package/services/a2a/a2aConfigService.d.ts +50 -0
- package/services/a2a/a2aConfigService.d.ts.map +1 -0
- package/services/a2a/a2aConfigService.js +186 -0
- package/services/a2a/a2aConfigService.js.map +1 -0
- package/services/a2a/a2aHistoryService.d.ts +32 -0
- package/services/a2a/a2aHistoryService.d.ts.map +1 -0
- package/services/a2a/a2aHistoryService.js +108 -0
- package/services/a2a/a2aHistoryService.js.map +1 -0
- package/services/a2a/a2aIntegration.d.ts +9 -0
- package/services/a2a/a2aIntegration.d.ts.map +1 -0
- package/services/a2a/a2aIntegration.js +41 -0
- package/services/a2a/a2aIntegration.js.map +1 -0
- package/services/a2a/a2aQueryService.d.ts +71 -0
- package/services/a2a/a2aQueryService.d.ts.map +1 -0
- package/services/a2a/a2aQueryService.js +166 -0
- package/services/a2a/a2aQueryService.js.map +1 -0
- package/services/a2a/a2aSdkMcp.d.ts +51 -0
- package/services/a2a/a2aSdkMcp.d.ts.map +1 -0
- package/services/a2a/a2aSdkMcp.js +185 -0
- package/services/a2a/a2aSdkMcp.js.map +1 -0
- package/services/a2a/a2aStreamEvents.d.ts +94 -0
- package/services/a2a/a2aStreamEvents.d.ts.map +1 -0
- package/services/a2a/a2aStreamEvents.js +92 -0
- package/services/a2a/a2aStreamEvents.js.map +1 -0
- package/services/a2a/agentCardService.d.ts +34 -0
- package/services/a2a/agentCardService.d.ts.map +1 -0
- package/services/a2a/agentCardService.js +228 -0
- package/services/a2a/agentCardService.js.map +1 -0
- package/services/a2a/agentMappingService.d.ts +53 -0
- package/services/a2a/agentMappingService.d.ts.map +1 -0
- package/services/a2a/agentMappingService.js +185 -0
- package/services/a2a/agentMappingService.js.map +1 -0
- package/services/a2a/apiKeyService.d.ts +101 -0
- package/services/a2a/apiKeyService.d.ts.map +1 -0
- package/services/a2a/apiKeyService.js +314 -0
- package/services/a2a/apiKeyService.js.map +1 -0
- package/services/a2a/taskCleanup.d.ts +30 -0
- package/services/a2a/taskCleanup.d.ts.map +1 -0
- package/services/a2a/taskCleanup.js +184 -0
- package/services/a2a/taskCleanup.js.map +1 -0
- package/services/a2a/taskManager.d.ts +86 -0
- package/services/a2a/taskManager.d.ts.map +1 -0
- package/services/a2a/taskManager.js +263 -0
- package/services/a2a/taskManager.js.map +1 -0
- package/services/agentStorage.d.ts +27 -0
- package/services/agentStorage.d.ts.map +1 -0
- package/services/agentStorage.js +487 -0
- package/services/agentStorage.js.map +1 -0
- package/services/askUserQuestion/askUserQuestionIntegration.d.ts +24 -0
- package/services/askUserQuestion/askUserQuestionIntegration.d.ts.map +1 -0
- package/services/askUserQuestion/askUserQuestionIntegration.js +52 -0
- package/services/askUserQuestion/askUserQuestionIntegration.js.map +1 -0
- package/services/askUserQuestion/askUserQuestionMcp.d.ts +103 -0
- package/services/askUserQuestion/askUserQuestionMcp.d.ts.map +1 -0
- package/services/askUserQuestion/askUserQuestionMcp.js +129 -0
- package/services/askUserQuestion/askUserQuestionMcp.js.map +1 -0
- package/services/askUserQuestion/index.d.ts +13 -0
- package/services/askUserQuestion/index.d.ts.map +1 -0
- package/services/askUserQuestion/index.js +35 -0
- package/services/askUserQuestion/index.js.map +1 -0
- package/services/askUserQuestion/init.d.ts +17 -0
- package/services/askUserQuestion/init.d.ts.map +1 -0
- package/services/askUserQuestion/init.js +47 -0
- package/services/askUserQuestion/init.js.map +1 -0
- package/services/askUserQuestion/notificationChannel.d.ts +97 -0
- package/services/askUserQuestion/notificationChannel.d.ts.map +1 -0
- package/services/askUserQuestion/notificationChannel.js +147 -0
- package/services/askUserQuestion/notificationChannel.js.map +1 -0
- package/services/askUserQuestion/slackNotificationChannel.d.ts +35 -0
- package/services/askUserQuestion/slackNotificationChannel.d.ts.map +1 -0
- package/services/askUserQuestion/slackNotificationChannel.js +129 -0
- package/services/askUserQuestion/slackNotificationChannel.js.map +1 -0
- package/services/askUserQuestion/sseNotificationChannel.d.ts +36 -0
- package/services/askUserQuestion/sseNotificationChannel.d.ts.map +1 -0
- package/services/askUserQuestion/sseNotificationChannel.js +88 -0
- package/services/askUserQuestion/sseNotificationChannel.js.map +1 -0
- package/services/askUserQuestion/userInputRegistry.d.ts +107 -0
- package/services/askUserQuestion/userInputRegistry.d.ts.map +1 -0
- package/services/askUserQuestion/userInputRegistry.js +253 -0
- package/services/askUserQuestion/userInputRegistry.js.map +1 -0
- package/{backend/dist/services → services}/claudeSession.d.ts +20 -5
- package/services/claudeSession.d.ts.map +1 -0
- package/{backend/dist/services → services}/claudeSession.js +123 -41
- package/services/claudeSession.js.map +1 -0
- package/services/claudeVersionStorage.d.ts +20 -0
- package/services/claudeVersionStorage.d.ts.map +1 -0
- package/services/claudeVersionStorage.js +331 -0
- package/services/claudeVersionStorage.js.map +1 -0
- package/services/mcpAdmin/__tests__/adminApiKeyService.test.d.ts +5 -0
- package/services/mcpAdmin/__tests__/adminApiKeyService.test.d.ts.map +1 -0
- package/services/mcpAdmin/__tests__/adminApiKeyService.test.js +289 -0
- package/services/mcpAdmin/__tests__/adminApiKeyService.test.js.map +1 -0
- package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.d.ts +5 -0
- package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.d.ts.map +1 -0
- package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.js +345 -0
- package/services/mcpAdmin/__tests__/mcpAdminRoutes.test.js.map +1 -0
- package/services/mcpAdmin/__tests__/mcpAdminServer.test.d.ts +5 -0
- package/services/mcpAdmin/__tests__/mcpAdminServer.test.d.ts.map +1 -0
- package/services/mcpAdmin/__tests__/mcpAdminServer.test.js +453 -0
- package/services/mcpAdmin/__tests__/mcpAdminServer.test.js.map +1 -0
- package/services/mcpAdmin/__tests__/tools.test.d.ts +5 -0
- package/services/mcpAdmin/__tests__/tools.test.d.ts.map +1 -0
- package/services/mcpAdmin/__tests__/tools.test.js +371 -0
- package/services/mcpAdmin/__tests__/tools.test.js.map +1 -0
- package/services/mcpAdmin/adminApiKeyService.d.ts +61 -0
- package/services/mcpAdmin/adminApiKeyService.d.ts.map +1 -0
- package/services/mcpAdmin/adminApiKeyService.js +270 -0
- package/services/mcpAdmin/adminApiKeyService.js.map +1 -0
- package/services/mcpAdmin/index.d.ts +10 -0
- package/services/mcpAdmin/index.d.ts.map +1 -0
- package/services/mcpAdmin/index.js +43 -0
- package/services/mcpAdmin/index.js.map +1 -0
- package/services/mcpAdmin/mcpAdminServer.d.ts +76 -0
- package/services/mcpAdmin/mcpAdminServer.d.ts.map +1 -0
- package/services/mcpAdmin/mcpAdminServer.js +243 -0
- package/services/mcpAdmin/mcpAdminServer.js.map +1 -0
- package/services/mcpAdmin/tools/agentTools.d.ts +27 -0
- package/services/mcpAdmin/tools/agentTools.d.ts.map +1 -0
- package/services/mcpAdmin/tools/agentTools.js +359 -0
- package/services/mcpAdmin/tools/agentTools.js.map +1 -0
- package/services/mcpAdmin/tools/index.d.ts +15 -0
- package/services/mcpAdmin/tools/index.d.ts.map +1 -0
- package/services/mcpAdmin/tools/index.js +30 -0
- package/services/mcpAdmin/tools/index.js.map +1 -0
- package/services/mcpAdmin/tools/mcpServerTools.d.ts +27 -0
- package/services/mcpAdmin/tools/mcpServerTools.d.ts.map +1 -0
- package/services/mcpAdmin/tools/mcpServerTools.js +334 -0
- package/services/mcpAdmin/tools/mcpServerTools.js.map +1 -0
- package/services/mcpAdmin/tools/projectTools.d.ts +27 -0
- package/services/mcpAdmin/tools/projectTools.d.ts.map +1 -0
- package/services/mcpAdmin/tools/projectTools.js +353 -0
- package/services/mcpAdmin/tools/projectTools.js.map +1 -0
- package/services/mcpAdmin/tools/systemTools.d.ts +23 -0
- package/services/mcpAdmin/tools/systemTools.d.ts.map +1 -0
- package/services/mcpAdmin/tools/systemTools.js +241 -0
- package/services/mcpAdmin/tools/systemTools.js.map +1 -0
- package/services/mcpAdmin/types.d.ts +124 -0
- package/services/mcpAdmin/types.d.ts.map +1 -0
- package/services/mcpAdmin/types.js +18 -0
- package/services/mcpAdmin/types.js.map +1 -0
- package/{backend/dist/services → services}/messageQueue.d.ts.map +1 -1
- package/{backend/dist/services → services}/messageQueue.js +16 -3
- package/services/messageQueue.js.map +1 -0
- package/services/pluginInstaller.d.ts +58 -0
- package/services/pluginInstaller.d.ts.map +1 -0
- package/services/pluginInstaller.js +321 -0
- package/services/pluginInstaller.js.map +1 -0
- package/services/pluginParser.d.ts +45 -0
- package/services/pluginParser.d.ts.map +1 -0
- package/services/pluginParser.js +437 -0
- package/services/pluginParser.js.map +1 -0
- package/services/pluginPaths.d.ts +80 -0
- package/services/pluginPaths.d.ts.map +1 -0
- package/services/pluginPaths.js +274 -0
- package/services/pluginPaths.js.map +1 -0
- package/services/pluginScanner.d.ts +36 -0
- package/services/pluginScanner.d.ts.map +1 -0
- package/services/pluginScanner.js +251 -0
- package/services/pluginScanner.js.map +1 -0
- package/services/pluginSymlink.d.ts +54 -0
- package/services/pluginSymlink.d.ts.map +1 -0
- package/services/pluginSymlink.js +223 -0
- package/services/pluginSymlink.js.map +1 -0
- package/services/projectMetadataStorage.d.ts +114 -0
- package/services/projectMetadataStorage.d.ts.map +1 -0
- package/services/projectMetadataStorage.js +711 -0
- package/services/projectMetadataStorage.js.map +1 -0
- package/services/scheduledTaskStorage.d.ts +52 -0
- package/services/scheduledTaskStorage.d.ts.map +1 -0
- package/services/scheduledTaskStorage.js +285 -0
- package/services/scheduledTaskStorage.js.map +1 -0
- package/services/schedulerService.d.ts +81 -0
- package/services/schedulerService.d.ts.map +1 -0
- package/services/schedulerService.js +743 -0
- package/services/schedulerService.js.map +1 -0
- package/{backend/dist/services → services}/sessionManager.d.ts +6 -4
- package/services/sessionManager.d.ts.map +1 -0
- package/{backend/dist/services → services}/sessionManager.js +77 -16
- package/services/sessionManager.js.map +1 -0
- package/services/skillStorage.d.ts +60 -0
- package/services/skillStorage.d.ts.map +1 -0
- package/services/skillStorage.js +398 -0
- package/services/skillStorage.js.map +1 -0
- package/services/slackAIService.d.ts +81 -0
- package/services/slackAIService.d.ts.map +1 -0
- package/services/slackAIService.js +1091 -0
- package/services/slackAIService.js.map +1 -0
- package/services/slackClient.d.ts +46 -0
- package/services/slackClient.d.ts.map +1 -0
- package/services/slackClient.js +85 -0
- package/services/slackClient.js.map +1 -0
- package/services/slackSessionLock.d.ts +79 -0
- package/services/slackSessionLock.d.ts.map +1 -0
- package/services/slackSessionLock.js +353 -0
- package/services/slackSessionLock.js.map +1 -0
- package/services/slackThreadMapper.d.ts +57 -0
- package/services/slackThreadMapper.d.ts.map +1 -0
- package/services/slackThreadMapper.js +140 -0
- package/services/slackThreadMapper.js.map +1 -0
- package/types/a2a.d.ts +275 -0
- package/types/a2a.d.ts.map +1 -0
- package/types/a2a.js +23 -0
- package/types/a2a.js.map +1 -0
- package/types/agents.d.ts +95 -0
- package/types/agents.d.ts.map +1 -0
- package/types/agents.js +46 -0
- package/types/agents.js.map +1 -0
- package/types/claude-history.d.ts +62 -0
- package/types/claude-history.d.ts.map +1 -0
- package/types/claude-history.js +4 -0
- package/types/claude-history.js.map +1 -0
- package/types/claude-versions.d.ts +36 -0
- package/types/claude-versions.d.ts.map +1 -0
- package/types/claude-versions.js +3 -0
- package/types/claude-versions.js.map +1 -0
- package/types/commands.d.ts +50 -0
- package/types/commands.d.ts.map +1 -0
- package/types/commands.js +23 -0
- package/types/commands.js.map +1 -0
- package/types/plugins.d.ts +144 -0
- package/types/plugins.d.ts.map +1 -0
- package/types/plugins.js +8 -0
- package/types/plugins.js.map +1 -0
- package/types/projects.d.ts +42 -0
- package/types/projects.d.ts.map +1 -0
- package/types/projects.js +4 -0
- package/types/projects.js.map +1 -0
- package/types/scheduledTasks.d.ts +164 -0
- package/types/scheduledTasks.d.ts.map +1 -0
- package/types/scheduledTasks.js +17 -0
- package/types/scheduledTasks.js.map +1 -0
- package/types/skills.d.ts +91 -0
- package/types/skills.d.ts.map +1 -0
- package/types/skills.js +6 -0
- package/types/skills.js.map +1 -0
- package/types/slack.d.ts +97 -0
- package/types/slack.d.ts.map +1 -0
- package/types/slack.js +8 -0
- package/types/slack.js.map +1 -0
- package/types/streaming.d.ts +12 -0
- package/types/streaming.d.ts.map +1 -0
- package/types/streaming.js +8 -0
- package/types/streaming.js.map +1 -0
- package/types/subagents.d.ts +26 -0
- package/types/subagents.d.ts.map +1 -0
- package/types/subagents.js +3 -0
- package/types/subagents.js.map +1 -0
- package/utils/__tests__/claudeUtils.test.d.ts +5 -0
- package/utils/__tests__/claudeUtils.test.d.ts.map +1 -0
- package/utils/__tests__/claudeUtils.test.js +282 -0
- package/utils/__tests__/claudeUtils.test.js.map +1 -0
- package/utils/__tests__/sessionUtils.test.d.ts +5 -0
- package/utils/__tests__/sessionUtils.test.d.ts.map +1 -0
- package/utils/__tests__/sessionUtils.test.js +295 -0
- package/utils/__tests__/sessionUtils.test.js.map +1 -0
- package/utils/agentCardCache.d.ts +93 -0
- package/utils/agentCardCache.d.ts.map +1 -0
- package/utils/agentCardCache.js +212 -0
- package/utils/agentCardCache.js.map +1 -0
- package/utils/claudeUtils.d.ts +54 -0
- package/utils/claudeUtils.d.ts.map +1 -0
- package/utils/claudeUtils.js +387 -0
- package/utils/claudeUtils.js.map +1 -0
- package/utils/fileUtils.d.ts +2 -0
- package/utils/fileUtils.d.ts.map +1 -0
- package/utils/fileUtils.js +11 -0
- package/utils/fileUtils.js.map +1 -0
- package/utils/jwt.d.ts +30 -0
- package/utils/jwt.d.ts.map +1 -0
- package/utils/jwt.js +95 -0
- package/utils/jwt.js.map +1 -0
- package/utils/sessionUtils.d.ts +64 -0
- package/utils/sessionUtils.d.ts.map +1 -0
- package/utils/sessionUtils.js +266 -0
- package/utils/sessionUtils.js.map +1 -0
- package/README.zh-CN.md +0 -525
- package/backend/dist/bin/agentstudio.js +0 -120
- package/backend/dist/bin/agentstudio.js.map +0 -1
- package/backend/dist/frontend/assets/AgentsPage-Dqb_aqAA.js +0 -1
- package/backend/dist/frontend/assets/ChatPage-L8Paywyc.js +0 -91
- package/backend/dist/frontend/assets/CommandForm-DLl7EIMS.js +0 -7
- package/backend/dist/frontend/assets/CommandsPage-Bzavq0Ec.js +0 -1
- package/backend/dist/frontend/assets/DashboardPage-B3o4AYFT.js +0 -15
- package/backend/dist/frontend/assets/FileBrowser-DL3ayaqb.js +0 -1
- package/backend/dist/frontend/assets/GeneralSettingsPage-CBN_de-V.js +0 -1
- package/backend/dist/frontend/assets/LandingPage-Dl4ioKos.js +0 -1
- package/backend/dist/frontend/assets/LoginPage-4QqRdiSi.js +0 -12
- package/backend/dist/frontend/assets/McpPage-CY3tYiqj.js +0 -39
- package/backend/dist/frontend/assets/MemorySettingsPage-DGxrok5K.js +0 -1
- package/backend/dist/frontend/assets/ProjectSelector-hgmGYVFh.js +0 -1
- package/backend/dist/frontend/assets/ProjectsPage-D399IM0c.js +0 -14
- package/backend/dist/frontend/assets/SettingsLayout-CL_K-lzJ.js +0 -1
- package/backend/dist/frontend/assets/SubagentsPage-Chbhj8p2.js +0 -1
- package/backend/dist/frontend/assets/UnifiedToolSelector-CsM9qBvs.js +0 -1
- package/backend/dist/frontend/assets/VersionSettingsPage-74Q-LVgA.js +0 -5
- package/backend/dist/frontend/assets/agents-ClAzIJTw.js +0 -1
- package/backend/dist/frontend/assets/authFetch-BATQyPG5.js +0 -1
- package/backend/dist/frontend/assets/index-B9YHa7XT.css +0 -1
- package/backend/dist/frontend/assets/index-B_CTNvca.js +0 -268
- package/backend/dist/frontend/assets/monaco-editor-C7Z4sOhS.js +0 -19
- package/backend/dist/frontend/assets/tabManager-DV8urRBM.js +0 -30
- package/backend/dist/frontend/assets/tools-C4EPanYi.js +0 -1
- package/backend/dist/frontend/assets/useAgents-DwnOE1_k.js +0 -2
- package/backend/dist/frontend/assets/useClaudeVersions-CQdGnCqv.js +0 -1
- package/backend/dist/frontend/assets/useCommands-CCVaurbt.js +0 -1
- package/backend/dist/index.d.ts +0 -3
- package/backend/dist/index.d.ts.map +0 -1
- package/backend/dist/index.js +0 -157
- package/backend/dist/index.js.map +0 -1
- package/backend/dist/middleware/auth.d.ts.map +0 -1
- package/backend/dist/middleware/auth.js +0 -21
- package/backend/dist/middleware/auth.js.map +0 -1
- package/backend/dist/routes/agents.js +0 -803
- package/backend/dist/routes/agents.js.map +0 -1
- package/backend/dist/routes/auth.js +0 -60
- package/backend/dist/routes/auth.js.map +0 -1
- package/backend/dist/routes/commands.js.map +0 -1
- package/backend/dist/routes/files.js.map +0 -1
- package/backend/dist/routes/mcp.d.ts.map +0 -1
- package/backend/dist/routes/mcp.js.map +0 -1
- package/backend/dist/routes/media.d.ts.map +0 -1
- package/backend/dist/routes/media.js.map +0 -1
- package/backend/dist/routes/projects.js +0 -528
- package/backend/dist/routes/projects.js.map +0 -1
- package/backend/dist/routes/sessions.js.map +0 -1
- package/backend/dist/routes/settings.js.map +0 -1
- package/backend/dist/routes/slides.js.map +0 -1
- package/backend/dist/routes/subagents.js.map +0 -1
- package/backend/dist/services/claudeSession.d.ts.map +0 -1
- package/backend/dist/services/claudeSession.js.map +0 -1
- package/backend/dist/services/messageQueue.js.map +0 -1
- package/backend/dist/services/sessionManager.d.ts.map +0 -1
- package/backend/dist/services/sessionManager.js.map +0 -1
- package/backend/dist/utils/jwt.d.ts +0 -15
- package/backend/dist/utils/jwt.d.ts.map +0 -1
- package/backend/dist/utils/jwt.js +0 -28
- package/backend/dist/utils/jwt.js.map +0 -1
- /package/{backend/dist/bin → bin}/agentstudio.d.ts +0 -0
- /package/{backend/dist/bin → bin}/agentstudio.d.ts.map +0 -0
- /package/{backend/dist/frontend → public}/assets/ChatPage-BvQmXfcP.css +0 -0
- /package/{backend/dist/frontend → public}/assets/agents-DwCY2K8p.css +0 -0
- /package/{backend/dist/frontend → public}/assets/dateFormat-CXa8VnEC.js +0 -0
- /package/{backend/dist/frontend → public}/cc-studio.png +0 -0
- /package/{backend/dist/frontend → public}/vite.svg +0 -0
- /package/{backend/dist/routes → routes}/agents.d.ts +0 -0
- /package/{backend/dist/routes → routes}/auth.d.ts +0 -0
- /package/{backend/dist/routes → routes}/commands.d.ts +0 -0
- /package/{backend/dist/routes → routes}/files.d.ts +0 -0
- /package/{backend/dist/routes → routes}/media.d.ts +0 -0
- /package/{backend/dist/routes → routes}/projects.d.ts +0 -0
- /package/{backend/dist/routes → routes}/sessions.d.ts +0 -0
- /package/{backend/dist/routes → routes}/settings.d.ts +0 -0
- /package/{backend/dist/routes → routes}/slides.d.ts +0 -0
- /package/{backend/dist/routes → routes}/subagents.d.ts +0 -0
- /package/{backend/dist/routes → routes}/subagents.d.ts.map +0 -0
- /package/{backend/dist/services → services}/messageQueue.d.ts +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A2A Configuration Service
|
|
4
|
+
*
|
|
5
|
+
* Manages project-level A2A configuration including allowed agents, timeouts, and limits.
|
|
6
|
+
* Configuration stored in projects/:projectId/.a2a/config.json
|
|
7
|
+
*
|
|
8
|
+
* Phase 5: US3 - Agent as A2A Client (config dependency)
|
|
9
|
+
* Phase 7: US5 - Project-Level A2A Configuration (full implementation)
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.loadA2AConfig = loadA2AConfig;
|
|
16
|
+
exports.saveA2AConfig = saveA2AConfig;
|
|
17
|
+
exports.validateA2AConfig = validateA2AConfig;
|
|
18
|
+
exports.initializeA2AConfig = initializeA2AConfig;
|
|
19
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
20
|
+
const path_1 = __importDefault(require("path"));
|
|
21
|
+
const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
|
|
22
|
+
const a2a_js_1 = require("../../types/a2a.js");
|
|
23
|
+
const httpsOnly_js_1 = require("../../middleware/httpsOnly.js");
|
|
24
|
+
const LOCK_OPTIONS = {
|
|
25
|
+
retries: { retries: 5, minTimeout: 100, maxTimeout: 500 },
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Get path to project's A2A config file
|
|
29
|
+
*
|
|
30
|
+
* @param projectId - Project identifier (used as directory name)
|
|
31
|
+
* @returns Absolute path to config file
|
|
32
|
+
*/
|
|
33
|
+
function getConfigPath(projectId) {
|
|
34
|
+
// Check if the projectId looks like an absolute path
|
|
35
|
+
if (path_1.default.isAbsolute(projectId)) {
|
|
36
|
+
return path_1.default.join(projectId, '.a2a', 'config.json');
|
|
37
|
+
}
|
|
38
|
+
// Projects are stored in ~/.claude/projects/
|
|
39
|
+
const projectsDir = path_1.default.join(process.env.HOME || process.cwd(), '.claude', 'projects');
|
|
40
|
+
return path_1.default.join(projectsDir, projectId, '.a2a', 'config.json');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Load A2A configuration for a project
|
|
44
|
+
*
|
|
45
|
+
* Returns default config if file doesn't exist.
|
|
46
|
+
*
|
|
47
|
+
* @param projectId - Project identifier
|
|
48
|
+
* @returns A2A configuration or null on error
|
|
49
|
+
*/
|
|
50
|
+
async function loadA2AConfig(projectId) {
|
|
51
|
+
const configPath = getConfigPath(projectId);
|
|
52
|
+
try {
|
|
53
|
+
const data = await promises_1.default.readFile(configPath, 'utf-8');
|
|
54
|
+
const config = JSON.parse(data);
|
|
55
|
+
return config;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
// If file doesn't exist, return default config
|
|
59
|
+
if (error.code === 'ENOENT') {
|
|
60
|
+
return a2a_js_1.DEFAULT_A2A_CONFIG;
|
|
61
|
+
}
|
|
62
|
+
console.error(`[A2A Config] Error loading config for project ${projectId}:`, error);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Save A2A configuration for a project
|
|
68
|
+
*
|
|
69
|
+
* Creates directory structure if needed.
|
|
70
|
+
* Uses file locking for concurrent safety.
|
|
71
|
+
*
|
|
72
|
+
* @param projectId - Project identifier
|
|
73
|
+
* @param config - A2A configuration to save
|
|
74
|
+
*/
|
|
75
|
+
async function saveA2AConfig(projectId, config) {
|
|
76
|
+
const configPath = getConfigPath(projectId);
|
|
77
|
+
const configDir = path_1.default.dirname(configPath);
|
|
78
|
+
// Ensure directory exists
|
|
79
|
+
await promises_1.default.mkdir(configDir, { recursive: true });
|
|
80
|
+
// Create empty file if it doesn't exist (helps with file locking)
|
|
81
|
+
try {
|
|
82
|
+
await promises_1.default.access(configPath);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// File doesn't exist, create empty file
|
|
86
|
+
await promises_1.default.writeFile(configPath, '{}', 'utf-8');
|
|
87
|
+
}
|
|
88
|
+
// Acquire lock for atomic write
|
|
89
|
+
const release = await proper_lockfile_1.default.lock(configPath, LOCK_OPTIONS);
|
|
90
|
+
try {
|
|
91
|
+
await promises_1.default.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
await release();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Validate A2A configuration
|
|
99
|
+
*
|
|
100
|
+
* Checks for required fields and value constraints.
|
|
101
|
+
*
|
|
102
|
+
* @param config - Configuration to validate
|
|
103
|
+
* @returns Validation result with error details if invalid
|
|
104
|
+
*/
|
|
105
|
+
function validateA2AConfig(config) {
|
|
106
|
+
const errors = [];
|
|
107
|
+
// Validate allowedAgents
|
|
108
|
+
if (!Array.isArray(config.allowedAgents)) {
|
|
109
|
+
errors.push('allowedAgents must be an array');
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
config.allowedAgents.forEach((agent, index) => {
|
|
113
|
+
if (!agent.name || typeof agent.name !== 'string') {
|
|
114
|
+
errors.push(`allowedAgents[${index}].name is required and must be a string`);
|
|
115
|
+
}
|
|
116
|
+
if (!agent.url || typeof agent.url !== 'string') {
|
|
117
|
+
errors.push(`allowedAgents[${index}].url is required and must be a string`);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// Validate URL format
|
|
121
|
+
try {
|
|
122
|
+
const parsedUrl = new URL(agent.url);
|
|
123
|
+
// In production, require HTTPS for domain names
|
|
124
|
+
// IP addresses are exempt (internal/proxy scenarios)
|
|
125
|
+
if (process.env.NODE_ENV === 'production' && !agent.url.startsWith('https://')) {
|
|
126
|
+
// Check if hostname is an IP address
|
|
127
|
+
const isIP = (0, httpsOnly_js_1.isIPAddress)(parsedUrl.hostname);
|
|
128
|
+
if (!isIP) {
|
|
129
|
+
errors.push(`allowedAgents[${index}].url must use HTTPS in production (IP addresses exempt)`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
errors.push(`allowedAgents[${index}].url is not a valid URL`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (agent.apiKey === undefined || typeof agent.apiKey !== 'string') {
|
|
138
|
+
errors.push(`allowedAgents[${index}].apiKey is required and must be a string`);
|
|
139
|
+
}
|
|
140
|
+
if (typeof agent.enabled !== 'boolean') {
|
|
141
|
+
errors.push(`allowedAgents[${index}].enabled must be a boolean`);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
// Validate taskTimeout
|
|
146
|
+
if (typeof config.taskTimeout !== 'number') {
|
|
147
|
+
errors.push('taskTimeout must be a number');
|
|
148
|
+
}
|
|
149
|
+
else if (config.taskTimeout < 1000 || config.taskTimeout > 1800000) {
|
|
150
|
+
errors.push('taskTimeout must be between 1000 and 1800000 milliseconds');
|
|
151
|
+
}
|
|
152
|
+
// Validate maxConcurrentTasks
|
|
153
|
+
if (typeof config.maxConcurrentTasks !== 'number') {
|
|
154
|
+
errors.push('maxConcurrentTasks must be a number');
|
|
155
|
+
}
|
|
156
|
+
else if (config.maxConcurrentTasks < 1 || config.maxConcurrentTasks > 50) {
|
|
157
|
+
errors.push('maxConcurrentTasks must be between 1 and 50');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
valid: errors.length === 0,
|
|
161
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Initialize default A2A config for a new project
|
|
166
|
+
*
|
|
167
|
+
* Creates .a2a directory and config.json with default values.
|
|
168
|
+
*
|
|
169
|
+
* @param projectId - Project identifier
|
|
170
|
+
*/
|
|
171
|
+
async function initializeA2AConfig(projectId) {
|
|
172
|
+
const existingConfig = await loadA2AConfig(projectId);
|
|
173
|
+
// Only initialize if config doesn't exist (loadA2AConfig returns DEFAULT_A2A_CONFIG for missing files)
|
|
174
|
+
const configPath = getConfigPath(projectId);
|
|
175
|
+
try {
|
|
176
|
+
await promises_1.default.access(configPath);
|
|
177
|
+
// File exists, don't overwrite
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// File doesn't exist, create it
|
|
182
|
+
await saveA2AConfig(projectId, a2a_js_1.DEFAULT_A2A_CONFIG);
|
|
183
|
+
console.info(`[A2A Config] Initialized default config for project ${projectId}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=a2aConfigService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aConfigService.js","sourceRoot":"","sources":["../../../src/services/a2a/a2aConfigService.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AAsCH,sCAgBC;AAWD,sCAuBC;AAUD,8CA+DC;AASD,kDAcC;AAtLD,2DAA6B;AAC7B,gDAAwB;AACxB,sEAAuC;AAEvC,+CAAwD;AACxD,gEAA4D;AAE5D,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;CAC1D,CAAC;AAEF;;;;;GAKG;AACH,SAAS,aAAa,CAAC,SAAiB;IACtC,qDAAqD;IACrD,IAAI,cAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,6CAA6C;IAC7C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACxF,OAAO,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CAAC,SAAiB;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAc,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+CAA+C;QAC/C,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,2BAAkB,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,iDAAiD,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,MAAiB;IACtE,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,MAAM,kBAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,kEAAkE;IAClE,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,MAAM,yBAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,MAAiB;IAIjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,yBAAyB;IACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,yCAAyC,CAAC,CAAC;YAC/E,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,wCAAwC,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,sBAAsB;gBACtB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACrC,gDAAgD;oBAChD,qDAAqD;oBACrD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC/E,qCAAqC;wBACrC,MAAM,IAAI,GAAG,IAAA,0BAAW,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;wBAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,0DAA0D,CAAC,CAAC;wBAChG,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,0BAA0B,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,2CAA2C,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,6BAA6B,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,IAAI,MAAM,CAAC,WAAW,GAAG,OAAO,EAAE,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC3E,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,MAAM,CAAC,kBAAkB,GAAG,EAAE,EAAE,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAC/C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAEtD,uGAAuG;IACvG,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,+BAA+B;QAC/B,OAAO;IACT,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;QAChC,MAAM,aAAa,CAAC,SAAS,EAAE,2BAAkB,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,uDAAuD,SAAS,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A History Service
|
|
3
|
+
*
|
|
4
|
+
* Manages the persistence of A2A message history using JSONL files.
|
|
5
|
+
* This allows retrieving the full event stream of an external agent call later.
|
|
6
|
+
*
|
|
7
|
+
* Storage path: {workingDirectory}/.a2a/history/{sessionId}.jsonl
|
|
8
|
+
*/
|
|
9
|
+
export declare class A2AHistoryService {
|
|
10
|
+
/**
|
|
11
|
+
* Get the directory path for A2A history
|
|
12
|
+
*/
|
|
13
|
+
private getHistoryDir;
|
|
14
|
+
/**
|
|
15
|
+
* Get the file path for a specific session
|
|
16
|
+
*/
|
|
17
|
+
private getHistoryFilePath;
|
|
18
|
+
/**
|
|
19
|
+
* Append an event to the history file
|
|
20
|
+
*/
|
|
21
|
+
appendEvent(workingDirectory: string, sessionId: string, event: any): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Read the full history for a session
|
|
24
|
+
*/
|
|
25
|
+
getHistory(workingDirectory: string, sessionId: string): Promise<any[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Watch the history file and yield new lines as they are written
|
|
28
|
+
*/
|
|
29
|
+
tailHistory(workingDirectory: string, sessionId: string, signal?: AbortSignal): AsyncGenerator<any>;
|
|
30
|
+
}
|
|
31
|
+
export declare const a2aHistoryService: A2AHistoryService;
|
|
32
|
+
//# sourceMappingURL=a2aHistoryService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aHistoryService.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/a2aHistoryService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACG,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzF;;OAEG;IACG,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiB7E;;OAEG;IACI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;CA2C3G;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A2A History Service
|
|
4
|
+
*
|
|
5
|
+
* Manages the persistence of A2A message history using JSONL files.
|
|
6
|
+
* This allows retrieving the full event stream of an external agent call later.
|
|
7
|
+
*
|
|
8
|
+
* Storage path: {workingDirectory}/.a2a/history/{sessionId}.jsonl
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.a2aHistoryService = exports.A2AHistoryService = void 0;
|
|
15
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const fileUtils_js_1 = require("../../utils/fileUtils.js");
|
|
18
|
+
const buffer_1 = require("buffer");
|
|
19
|
+
class A2AHistoryService {
|
|
20
|
+
/**
|
|
21
|
+
* Get the directory path for A2A history
|
|
22
|
+
*/
|
|
23
|
+
getHistoryDir(workingDirectory) {
|
|
24
|
+
return path_1.default.join(workingDirectory, '.a2a', 'history');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the file path for a specific session
|
|
28
|
+
*/
|
|
29
|
+
getHistoryFilePath(workingDirectory, sessionId) {
|
|
30
|
+
return path_1.default.join(this.getHistoryDir(workingDirectory), `${sessionId}.jsonl`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Append an event to the history file
|
|
34
|
+
*/
|
|
35
|
+
async appendEvent(workingDirectory, sessionId, event) {
|
|
36
|
+
const historyDir = this.getHistoryDir(workingDirectory);
|
|
37
|
+
await (0, fileUtils_js_1.ensureDir)(historyDir);
|
|
38
|
+
const filePath = this.getHistoryFilePath(workingDirectory, sessionId);
|
|
39
|
+
const line = JSON.stringify(event) + '\n';
|
|
40
|
+
await promises_1.default.appendFile(filePath, line, 'utf-8');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Read the full history for a session
|
|
44
|
+
*/
|
|
45
|
+
async getHistory(workingDirectory, sessionId) {
|
|
46
|
+
const filePath = this.getHistoryFilePath(workingDirectory, sessionId);
|
|
47
|
+
try {
|
|
48
|
+
const content = await promises_1.default.readFile(filePath, 'utf-8');
|
|
49
|
+
return content
|
|
50
|
+
.split('\n')
|
|
51
|
+
.filter((line) => line.trim())
|
|
52
|
+
.map((line) => JSON.parse(line));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error.code === 'ENOENT') {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Watch the history file and yield new lines as they are written
|
|
63
|
+
*/
|
|
64
|
+
async *tailHistory(workingDirectory, sessionId, signal) {
|
|
65
|
+
const filePath = this.getHistoryFilePath(workingDirectory, sessionId);
|
|
66
|
+
let currentSize = 0;
|
|
67
|
+
// Wait for file to exist
|
|
68
|
+
while (!signal?.aborted) {
|
|
69
|
+
try {
|
|
70
|
+
const stats = await promises_1.default.stat(filePath);
|
|
71
|
+
if (stats.isFile())
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
while (!signal?.aborted) {
|
|
79
|
+
try {
|
|
80
|
+
const stats = await promises_1.default.stat(filePath);
|
|
81
|
+
if (stats.size > currentSize) {
|
|
82
|
+
const handle = await promises_1.default.open(filePath, 'r');
|
|
83
|
+
const buffer = buffer_1.Buffer.alloc(stats.size - currentSize);
|
|
84
|
+
await handle.read(buffer, 0, stats.size - currentSize, currentSize);
|
|
85
|
+
await handle.close();
|
|
86
|
+
const content = buffer.toString('utf-8');
|
|
87
|
+
const lines = content.split('\n').filter((line) => line.trim());
|
|
88
|
+
for (const line of lines) {
|
|
89
|
+
try {
|
|
90
|
+
yield JSON.parse(line);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Ignore parse errors
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
currentSize = stats.size;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Ignore errors (e.g. file not found yet)
|
|
101
|
+
}
|
|
102
|
+
await new Promise(resolve => setTimeout(resolve, 200)); // Poll every 200ms
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.A2AHistoryService = A2AHistoryService;
|
|
107
|
+
exports.a2aHistoryService = new A2AHistoryService();
|
|
108
|
+
//# sourceMappingURL=a2aHistoryService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aHistoryService.js","sourceRoot":"","sources":["../../../src/services/a2a/a2aHistoryService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper to integrate A2A SDK MCP server into query options
|
|
3
|
+
*
|
|
4
|
+
* @param queryOptions - The query options object to modify
|
|
5
|
+
* @param projectId - Project identifier
|
|
6
|
+
* @returns The modified query options (same object reference)
|
|
7
|
+
*/
|
|
8
|
+
export declare function integrateA2AMcpServer(queryOptions: any, projectId: string): Promise<any>;
|
|
9
|
+
//# sourceMappingURL=a2aIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aIntegration.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/a2aIntegration.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,gBA6B/E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.integrateA2AMcpServer = integrateA2AMcpServer;
|
|
4
|
+
const a2aSdkMcp_js_1 = require("./a2aSdkMcp.js");
|
|
5
|
+
/**
|
|
6
|
+
* Helper to integrate A2A SDK MCP server into query options
|
|
7
|
+
*
|
|
8
|
+
* @param queryOptions - The query options object to modify
|
|
9
|
+
* @param projectId - Project identifier
|
|
10
|
+
* @returns The modified query options (same object reference)
|
|
11
|
+
*/
|
|
12
|
+
async function integrateA2AMcpServer(queryOptions, projectId) {
|
|
13
|
+
try {
|
|
14
|
+
// Create SDK MCP server for A2A (in-process)
|
|
15
|
+
const { server: a2aServer } = await (0, a2aSdkMcp_js_1.createA2ASdkMcpServer)(projectId);
|
|
16
|
+
// Add to mcpServers
|
|
17
|
+
if (a2aServer) {
|
|
18
|
+
queryOptions.mcpServers = {
|
|
19
|
+
...queryOptions.mcpServers,
|
|
20
|
+
"a2a-client": a2aServer
|
|
21
|
+
};
|
|
22
|
+
// Add tool to allowedTools
|
|
23
|
+
const a2aToolName = (0, a2aSdkMcp_js_1.getA2AToolName)();
|
|
24
|
+
if (!queryOptions.allowedTools) {
|
|
25
|
+
queryOptions.allowedTools = [a2aToolName];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Avoid duplicates
|
|
29
|
+
if (!queryOptions.allowedTools.includes(a2aToolName)) {
|
|
30
|
+
queryOptions.allowedTools.push(a2aToolName);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error('❌ [A2A] Failed to integrate SDK MCP server:', error);
|
|
37
|
+
// Continue without A2A support rather than failing
|
|
38
|
+
}
|
|
39
|
+
return queryOptions;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=a2aIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aIntegration.js","sourceRoot":"","sources":["../../../src/services/a2a/a2aIntegration.ts"],"names":[],"mappings":";;AASA,sDA6BC;AAtCD,iDAAuE;AAEvE;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CAAC,YAAiB,EAAE,SAAiB;IAC5E,IAAI,CAAC;QACD,6CAA6C;QAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;QAErE,oBAAoB;QACpB,IAAI,SAAS,EAAE,CAAC;YACZ,YAAY,CAAC,UAAU,GAAG;gBACtB,GAAG,YAAY,CAAC,UAAU;gBAC1B,YAAY,EAAE,SAAS;aAC1B,CAAC;YAEF,2BAA2B;YAC3B,MAAM,WAAW,GAAG,IAAA,6BAAc,GAAE,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC7B,YAAY,CAAC,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACJ,mBAAmB;gBACnB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACnD,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACpE,mDAAmD;IACvD,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Query Service - One-shot Query Mode
|
|
3
|
+
*
|
|
4
|
+
* This service provides a one-shot query mode for A2A requests.
|
|
5
|
+
* Instead of using ClaudeSession (Streaming Input Mode with MessageQueue),
|
|
6
|
+
* it uses an async generator that naturally completes after yielding the message.
|
|
7
|
+
*
|
|
8
|
+
* Benefits:
|
|
9
|
+
* - Each A2A request is independent, no session reuse issues
|
|
10
|
+
* - Query automatically completes when generator ends
|
|
11
|
+
* - Still supports resume for history context
|
|
12
|
+
* - Still supports images and multi-part messages via Streaming Input
|
|
13
|
+
*/
|
|
14
|
+
import { Options } from '@anthropic-ai/claude-agent-sdk';
|
|
15
|
+
import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
|
|
16
|
+
/**
|
|
17
|
+
* User message content type for multi-part messages (text + images)
|
|
18
|
+
*/
|
|
19
|
+
export interface UserMessageContent {
|
|
20
|
+
type: 'text' | 'image';
|
|
21
|
+
text?: string;
|
|
22
|
+
source?: {
|
|
23
|
+
type: 'base64';
|
|
24
|
+
media_type: string;
|
|
25
|
+
data: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A2A Query options extending Claude SDK Options
|
|
30
|
+
*/
|
|
31
|
+
export interface A2AQueryOptions extends Options {
|
|
32
|
+
resume?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Execute a one-shot A2A query
|
|
36
|
+
*
|
|
37
|
+
* This function creates a new query for each A2A request, using an async generator
|
|
38
|
+
* that completes after yielding the message. This avoids the session reuse issues
|
|
39
|
+
* that can occur with ClaudeSession's MessageQueue approach.
|
|
40
|
+
*
|
|
41
|
+
* @param message - The user message (text string)
|
|
42
|
+
* @param images - Optional array of images to include in the message
|
|
43
|
+
* @param options - Query options including resume sessionId
|
|
44
|
+
* @param onMessage - Callback for each SDK message
|
|
45
|
+
* @returns Promise that resolves when query completes
|
|
46
|
+
*/
|
|
47
|
+
export declare function executeA2AQuery(message: string, images: Array<{
|
|
48
|
+
data: string;
|
|
49
|
+
mediaType: string;
|
|
50
|
+
}> | undefined, options: A2AQueryOptions, onMessage: (message: SDKMessage) => Promise<void>): Promise<{
|
|
51
|
+
sessionId: string | null;
|
|
52
|
+
fullResponse: string;
|
|
53
|
+
tokensUsed: number;
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Execute a one-shot A2A query with SSE streaming
|
|
57
|
+
*
|
|
58
|
+
* Similar to executeA2AQuery but designed for SSE streaming mode.
|
|
59
|
+
*
|
|
60
|
+
* @param message - The user message (text string)
|
|
61
|
+
* @param images - Optional array of images
|
|
62
|
+
* @param options - Query options including resume sessionId
|
|
63
|
+
* @param onMessage - Callback for each SDK message (for SSE streaming)
|
|
64
|
+
*/
|
|
65
|
+
export declare function executeA2AQueryStreaming(message: string, images: Array<{
|
|
66
|
+
data: string;
|
|
67
|
+
mediaType: string;
|
|
68
|
+
}> | undefined, options: A2AQueryOptions, onMessage: (message: SDKMessage) => void): Promise<{
|
|
69
|
+
sessionId: string | null;
|
|
70
|
+
}>;
|
|
71
|
+
//# sourceMappingURL=a2aQueryService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aQueryService.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/a2aQueryService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA0EjF;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GACvC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAiDvC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A2A Query Service - One-shot Query Mode
|
|
4
|
+
*
|
|
5
|
+
* This service provides a one-shot query mode for A2A requests.
|
|
6
|
+
* Instead of using ClaudeSession (Streaming Input Mode with MessageQueue),
|
|
7
|
+
* it uses an async generator that naturally completes after yielding the message.
|
|
8
|
+
*
|
|
9
|
+
* Benefits:
|
|
10
|
+
* - Each A2A request is independent, no session reuse issues
|
|
11
|
+
* - Query automatically completes when generator ends
|
|
12
|
+
* - Still supports resume for history context
|
|
13
|
+
* - Still supports images and multi-part messages via Streaming Input
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.executeA2AQuery = executeA2AQuery;
|
|
17
|
+
exports.executeA2AQueryStreaming = executeA2AQueryStreaming;
|
|
18
|
+
const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
|
|
19
|
+
/**
|
|
20
|
+
* Create an async generator for A2A messages
|
|
21
|
+
* The generator yields the user message and then completes,
|
|
22
|
+
* allowing the query to naturally finish.
|
|
23
|
+
*
|
|
24
|
+
* Uses 'any' type to match MessageQueue's approach and avoid SDK type incompatibility.
|
|
25
|
+
*
|
|
26
|
+
* @param content - Message content (string or array of content blocks)
|
|
27
|
+
*/
|
|
28
|
+
async function* createA2AMessageGenerator(content) {
|
|
29
|
+
const messageContent = typeof content === 'string'
|
|
30
|
+
? [{ type: 'text', text: content }]
|
|
31
|
+
: content;
|
|
32
|
+
yield {
|
|
33
|
+
type: 'user',
|
|
34
|
+
message: {
|
|
35
|
+
role: 'user',
|
|
36
|
+
content: messageContent
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
// Generator ends here, query will naturally complete after processing
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Execute a one-shot A2A query
|
|
43
|
+
*
|
|
44
|
+
* This function creates a new query for each A2A request, using an async generator
|
|
45
|
+
* that completes after yielding the message. This avoids the session reuse issues
|
|
46
|
+
* that can occur with ClaudeSession's MessageQueue approach.
|
|
47
|
+
*
|
|
48
|
+
* @param message - The user message (text string)
|
|
49
|
+
* @param images - Optional array of images to include in the message
|
|
50
|
+
* @param options - Query options including resume sessionId
|
|
51
|
+
* @param onMessage - Callback for each SDK message
|
|
52
|
+
* @returns Promise that resolves when query completes
|
|
53
|
+
*/
|
|
54
|
+
async function executeA2AQuery(message, images, options, onMessage) {
|
|
55
|
+
// Build message content with optional images
|
|
56
|
+
const messageContent = [];
|
|
57
|
+
// Add images first if present
|
|
58
|
+
if (images && images.length > 0) {
|
|
59
|
+
for (const image of images) {
|
|
60
|
+
messageContent.push({
|
|
61
|
+
type: 'image',
|
|
62
|
+
source: {
|
|
63
|
+
type: 'base64',
|
|
64
|
+
media_type: image.mediaType,
|
|
65
|
+
data: image.data
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Add text message
|
|
71
|
+
messageContent.push({
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: message
|
|
74
|
+
});
|
|
75
|
+
// Create the message generator
|
|
76
|
+
const messageGen = createA2AMessageGenerator(messageContent);
|
|
77
|
+
let sessionId = null;
|
|
78
|
+
let fullResponse = '';
|
|
79
|
+
let tokensUsed = 0;
|
|
80
|
+
console.log(`🚀 [A2A Query] Starting one-shot query with resume=${options.resume || 'none'}`);
|
|
81
|
+
// Execute the query
|
|
82
|
+
const queryResult = (0, claude_agent_sdk_1.query)({
|
|
83
|
+
prompt: messageGen,
|
|
84
|
+
options: options
|
|
85
|
+
});
|
|
86
|
+
// Process responses
|
|
87
|
+
for await (const sdkMessage of queryResult) {
|
|
88
|
+
// Capture session ID from system init message
|
|
89
|
+
if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init' && sdkMessage.session_id) {
|
|
90
|
+
sessionId = sdkMessage.session_id;
|
|
91
|
+
console.log(`📝 [A2A Query] Captured sessionId: ${sessionId}`);
|
|
92
|
+
}
|
|
93
|
+
// Also check for session_id on any message
|
|
94
|
+
if (sdkMessage.session_id && !sessionId) {
|
|
95
|
+
sessionId = sdkMessage.session_id;
|
|
96
|
+
}
|
|
97
|
+
// Extract assistant response text
|
|
98
|
+
if (sdkMessage.type === 'assistant' && sdkMessage.message?.content) {
|
|
99
|
+
for (const block of sdkMessage.message.content) {
|
|
100
|
+
if (block.type === 'text') {
|
|
101
|
+
fullResponse += block.text;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Extract token usage
|
|
106
|
+
if (sdkMessage.type === 'assistant' && sdkMessage.usage) {
|
|
107
|
+
const usage = sdkMessage.usage;
|
|
108
|
+
tokensUsed = (usage.input_tokens || 0) + (usage.output_tokens || 0);
|
|
109
|
+
}
|
|
110
|
+
// Call the message callback
|
|
111
|
+
await onMessage(sdkMessage);
|
|
112
|
+
}
|
|
113
|
+
console.log(`✅ [A2A Query] Query completed, sessionId=${sessionId}, responseLength=${fullResponse.length}`);
|
|
114
|
+
return { sessionId, fullResponse, tokensUsed };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Execute a one-shot A2A query with SSE streaming
|
|
118
|
+
*
|
|
119
|
+
* Similar to executeA2AQuery but designed for SSE streaming mode.
|
|
120
|
+
*
|
|
121
|
+
* @param message - The user message (text string)
|
|
122
|
+
* @param images - Optional array of images
|
|
123
|
+
* @param options - Query options including resume sessionId
|
|
124
|
+
* @param onMessage - Callback for each SDK message (for SSE streaming)
|
|
125
|
+
*/
|
|
126
|
+
async function executeA2AQueryStreaming(message, images, options, onMessage) {
|
|
127
|
+
// Build message content with optional images
|
|
128
|
+
const messageContent = [];
|
|
129
|
+
if (images && images.length > 0) {
|
|
130
|
+
for (const image of images) {
|
|
131
|
+
messageContent.push({
|
|
132
|
+
type: 'image',
|
|
133
|
+
source: {
|
|
134
|
+
type: 'base64',
|
|
135
|
+
media_type: image.mediaType,
|
|
136
|
+
data: image.data
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
messageContent.push({
|
|
142
|
+
type: 'text',
|
|
143
|
+
text: message
|
|
144
|
+
});
|
|
145
|
+
const messageGen = createA2AMessageGenerator(messageContent);
|
|
146
|
+
let sessionId = null;
|
|
147
|
+
console.log(`🚀 [A2A Query Streaming] Starting one-shot query with resume=${options.resume || 'none'}`);
|
|
148
|
+
const queryResult = (0, claude_agent_sdk_1.query)({
|
|
149
|
+
prompt: messageGen,
|
|
150
|
+
options: options
|
|
151
|
+
});
|
|
152
|
+
for await (const sdkMessage of queryResult) {
|
|
153
|
+
// Capture session ID
|
|
154
|
+
if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init' && sdkMessage.session_id) {
|
|
155
|
+
sessionId = sdkMessage.session_id;
|
|
156
|
+
}
|
|
157
|
+
if (sdkMessage.session_id && !sessionId) {
|
|
158
|
+
sessionId = sdkMessage.session_id;
|
|
159
|
+
}
|
|
160
|
+
// Stream the message (synchronous callback for SSE)
|
|
161
|
+
onMessage(sdkMessage);
|
|
162
|
+
}
|
|
163
|
+
console.log(`✅ [A2A Query Streaming] Query completed, sessionId=${sessionId}`);
|
|
164
|
+
return { sessionId };
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=a2aQueryService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2aQueryService.js","sourceRoot":"","sources":["../../../src/services/a2a/a2aQueryService.ts"],"names":[],"mappings":"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"}
|