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
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
function Me(e,r){for(var n=0;n<r.length;n++){const o=r[n];if(typeof o!="string"&&!Array.isArray(o)){for(const i in o)if(i!=="default"&&!(i in e)){const c=Object.getOwnPropertyDescriptor(o,i);c&&Object.defineProperty(e,i,c.get?c:{enumerable:!0,get:()=>o[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ut=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Te(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ie={exports:{}},l={};/**
|
|
2
|
-
* @license React
|
|
3
|
-
* react.production.js
|
|
4
|
-
*
|
|
5
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
-
*
|
|
7
|
-
* This source code is licensed under the MIT license found in the
|
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var le;function Pe(){if(le)return l;le=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),c=Symbol.for("react.consumer"),m=Symbol.for("react.context"),w=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),M=Symbol.for("react.memo"),A=Symbol.for("react.lazy"),T=Symbol.iterator;function K(t){return t===null||typeof t!="object"?null:(t=T&&t[T]||t["@@iterator"],typeof t=="function"?t:null)}var z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,V={};function C(t,u,a){this.props=t,this.context=u,this.refs=V,this.updater=a||z}C.prototype.isReactComponent={},C.prototype.setState=function(t,u){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,u,"setState")},C.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function W(){}W.prototype=C.prototype;function S(t,u,a){this.props=t,this.context=u,this.refs=V,this.updater=a||z}var I=S.prototype=new W;I.constructor=S,k(I,C.prototype),I.isPureReactComponent=!0;var L=Array.isArray,f={H:null,A:null,T:null,S:null,V:null},_=Object.prototype.hasOwnProperty;function y(t,u,a,s,p,b){return a=b.ref,{$$typeof:e,type:t,key:u,ref:a!==void 0?a:null,props:b}}function x(t,u){return y(t.type,u,void 0,void 0,void 0,t.props)}function j(t){return typeof t=="object"&&t!==null&&t.$$typeof===e}function h(t){var u={"=":"=0",":":"=2"};return"$"+t.replace(/[=:]/g,function(a){return u[a]})}var $=/\/+/g;function H(t,u){return typeof t=="object"&&t!==null&&t.key!=null?h(""+t.key):u.toString(36)}function U(){}function q(t){switch(t.status){case"fulfilled":return t.value;case"rejected":throw t.reason;default:switch(typeof t.status=="string"?t.then(U,U):(t.status="pending",t.then(function(u){t.status==="pending"&&(t.status="fulfilled",t.value=u)},function(u){t.status==="pending"&&(t.status="rejected",t.reason=u)})),t.status){case"fulfilled":return t.value;case"rejected":throw t.reason}}throw t}function v(t,u,a,s,p){var b=typeof t;(b==="undefined"||b==="boolean")&&(t=null);var g=!1;if(t===null)g=!0;else switch(b){case"bigint":case"string":case"number":g=!0;break;case"object":switch(t.$$typeof){case e:case r:g=!0;break;case A:return g=t._init,v(g(t._payload),u,a,s,p)}}if(g)return p=p(t),g=s===""?"."+H(t,0):s,L(p)?(a="",g!=null&&(a=g.replace($,"$&/")+"/"),v(p,u,a,"",function(Se){return Se})):p!=null&&(j(p)&&(p=x(p,a+(p.key==null||t&&t.key===p.key?"":(""+p.key).replace($,"$&/")+"/")+g)),u.push(p)),1;g=0;var D=s===""?".":s+":";if(L(t))for(var R=0;R<t.length;R++)s=t[R],b=D+H(s,R),g+=v(s,u,a,b,p);else if(R=K(t),typeof R=="function")for(t=R.call(t),R=0;!(s=t.next()).done;)s=s.value,b=D+H(s,R++),g+=v(s,u,a,b,p);else if(b==="object"){if(typeof t.then=="function")return v(q(t),u,a,s,p);throw u=String(t),Error("Objects are not valid as a React child (found: "+(u==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":u)+"). If you meant to render a collection of children, use an array instead.")}return g}function E(t,u,a){if(t==null)return t;var s=[],p=0;return v(t,s,"","",function(b){return u.call(a,b,p++)}),s}function ee(t){if(t._status===-1){var u=t._result;u=u(),u.then(function(a){(t._status===0||t._status===-1)&&(t._status=1,t._result=a)},function(a){(t._status===0||t._status===-1)&&(t._status=2,t._result=a)}),t._status===-1&&(t._status=0,t._result=u)}if(t._status===1)return t._result.default;throw t._result}var G=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var u=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(u))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)};function te(){}return l.Children={map:E,forEach:function(t,u,a){E(t,function(){u.apply(this,arguments)},a)},count:function(t){var u=0;return E(t,function(){u++}),u},toArray:function(t){return E(t,function(u){return u})||[]},only:function(t){if(!j(t))throw Error("React.Children.only expected to receive a single React element child.");return t}},l.Component=C,l.Fragment=n,l.Profiler=i,l.PureComponent=S,l.StrictMode=o,l.Suspense=O,l.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=f,l.__COMPILER_RUNTIME={__proto__:null,c:function(t){return f.H.useMemoCache(t)}},l.cache=function(t){return function(){return t.apply(null,arguments)}},l.cloneElement=function(t,u,a){if(t==null)throw Error("The argument must be a React element, but you passed "+t+".");var s=k({},t.props),p=t.key,b=void 0;if(u!=null)for(g in u.ref!==void 0&&(b=void 0),u.key!==void 0&&(p=""+u.key),u)!_.call(u,g)||g==="key"||g==="__self"||g==="__source"||g==="ref"&&u.ref===void 0||(s[g]=u[g]);var g=arguments.length-2;if(g===1)s.children=a;else if(1<g){for(var D=Array(g),R=0;R<g;R++)D[R]=arguments[R+2];s.children=D}return y(t.type,p,void 0,void 0,b,s)},l.createContext=function(t){return t={$$typeof:m,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider=t,t.Consumer={$$typeof:c,_context:t},t},l.createElement=function(t,u,a){var s,p={},b=null;if(u!=null)for(s in u.key!==void 0&&(b=""+u.key),u)_.call(u,s)&&s!=="key"&&s!=="__self"&&s!=="__source"&&(p[s]=u[s]);var g=arguments.length-2;if(g===1)p.children=a;else if(1<g){for(var D=Array(g),R=0;R<g;R++)D[R]=arguments[R+2];p.children=D}if(t&&t.defaultProps)for(s in g=t.defaultProps,g)p[s]===void 0&&(p[s]=g[s]);return y(t,b,void 0,void 0,null,p)},l.createRef=function(){return{current:null}},l.forwardRef=function(t){return{$$typeof:w,render:t}},l.isValidElement=j,l.lazy=function(t){return{$$typeof:A,_payload:{_status:-1,_result:t},_init:ee}},l.memo=function(t,u){return{$$typeof:M,type:t,compare:u===void 0?null:u}},l.startTransition=function(t){var u=f.T,a={};f.T=a;try{var s=t(),p=f.S;p!==null&&p(a,s),typeof s=="object"&&s!==null&&typeof s.then=="function"&&s.then(te,G)}catch(b){G(b)}finally{f.T=u}},l.unstable_useCacheRefresh=function(){return f.H.useCacheRefresh()},l.use=function(t){return f.H.use(t)},l.useActionState=function(t,u,a){return f.H.useActionState(t,u,a)},l.useCallback=function(t,u){return f.H.useCallback(t,u)},l.useContext=function(t){return f.H.useContext(t)},l.useDebugValue=function(){},l.useDeferredValue=function(t,u){return f.H.useDeferredValue(t,u)},l.useEffect=function(t,u,a){var s=f.H;if(typeof a=="function")throw Error("useEffect CRUD overload is not enabled in this build of React.");return s.useEffect(t,u)},l.useId=function(){return f.H.useId()},l.useImperativeHandle=function(t,u,a){return f.H.useImperativeHandle(t,u,a)},l.useInsertionEffect=function(t,u){return f.H.useInsertionEffect(t,u)},l.useLayoutEffect=function(t,u){return f.H.useLayoutEffect(t,u)},l.useMemo=function(t,u){return f.H.useMemo(t,u)},l.useOptimistic=function(t,u){return f.H.useOptimistic(t,u)},l.useReducer=function(t,u,a){return f.H.useReducer(t,u,a)},l.useRef=function(t){return f.H.useRef(t)},l.useState=function(t){return f.H.useState(t)},l.useSyncExternalStore=function(t,u,a){return f.H.useSyncExternalStore(t,u,a)},l.useTransition=function(){return f.H.useTransition()},l.version="19.1.1",l}var de;function Ce(){return de||(de=1,ie.exports=Pe()),ie.exports}var d=Ce();const Y=Te(d),qt=Me({__proto__:null,default:Y},[d]);function Ae(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function pe(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,o)}return n}function ge(e){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?pe(Object(n),!0).forEach(function(o){Ae(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pe(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function Ie(e,r){if(e==null)return{};var n={},o=Object.keys(e),i,c;for(c=0;c<o.length;c++)i=o[c],!(r.indexOf(i)>=0)&&(n[i]=e[i]);return n}function $e(e,r){if(e==null)return{};var n=Ie(e,r),o,i;if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(i=0;i<c.length;i++)o=c[i],!(r.indexOf(o)>=0)&&Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function Le(e,r){return He(e)||De(e,r)||Ne(e,r)||xe()}function He(e){if(Array.isArray(e))return e}function De(e,r){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(e)))){var n=[],o=!0,i=!1,c=void 0;try{for(var m=e[Symbol.iterator](),w;!(o=(w=m.next()).done)&&(n.push(w.value),!(r&&n.length===r));o=!0);}catch(O){i=!0,c=O}finally{try{!o&&m.return!=null&&m.return()}finally{if(i)throw c}}return n}}function Ne(e,r){if(e){if(typeof e=="string")return ve(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ve(e,r)}}function ve(e,r){(r==null||r>e.length)&&(r=e.length);for(var n=0,o=new Array(r);n<r;n++)o[n]=e[n];return o}function xe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
10
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ue(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function he(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,o)}return n}function me(e){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?he(Object(n),!0).forEach(function(o){Ue(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function qe(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return function(o){return r.reduceRight(function(i,c){return c(i)},o)}}function F(e){return function r(){for(var n=this,o=arguments.length,i=new Array(o),c=0;c<o;c++)i[c]=arguments[c];return i.length>=e.length?e.apply(this,i):function(){for(var m=arguments.length,w=new Array(m),O=0;O<m;O++)w[O]=arguments[O];return r.apply(n,[].concat(i,w))}}}function oe(e){return{}.toString.call(e).includes("Object")}function Ye(e){return!Object.keys(e).length}function X(e){return typeof e=="function"}function ze(e,r){return Object.prototype.hasOwnProperty.call(e,r)}function ke(e,r){return oe(r)||N("changeType"),Object.keys(r).some(function(n){return!ze(e,n)})&&N("changeField"),r}function Ve(e){X(e)||N("selectorType")}function We(e){X(e)||oe(e)||N("handlerType"),oe(e)&&Object.values(e).some(function(r){return!X(r)})&&N("handlersType")}function Ge(e){e||N("initialIsRequired"),oe(e)||N("initialType"),Ye(e)&&N("initialContent")}function Be(e,r){throw new Error(e[r]||e.default)}var Ke={initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"},N=F(Be)(Ke),re={changes:ke,selector:Ve,handler:We,initial:Ge};function Fe(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};re.initial(e),re.handler(r);var n={current:e},o=F(Ze)(n,r),i=F(Xe)(n),c=F(re.changes)(e),m=F(Qe)(n);function w(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(A){return A};return re.selector(M),M(n.current)}function O(M){qe(o,i,c,m)(M)}return[w,O]}function Qe(e,r){return X(r)?r(e.current):r}function Xe(e,r){return e.current=me(me({},e.current),r),r}function Ze(e,r,n){return X(r)?r(e.current):Object.keys(n).forEach(function(o){var i;return(i=r[o])===null||i===void 0?void 0:i.call(r,e.current[o])}),n}var Je={create:Fe},et={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.52.2/min/vs"}};function tt(e){return function r(){for(var n=this,o=arguments.length,i=new Array(o),c=0;c<o;c++)i[c]=arguments[c];return i.length>=e.length?e.apply(this,i):function(){for(var m=arguments.length,w=new Array(m),O=0;O<m;O++)w[O]=arguments[O];return r.apply(n,[].concat(i,w))}}}function rt(e){return{}.toString.call(e).includes("Object")}function nt(e){return e||ye("configIsRequired"),rt(e)||ye("configType"),e.urls?(ot(),{paths:{vs:e.urls.monacoBase}}):e}function ot(){console.warn(we.deprecation)}function ut(e,r){throw new Error(e[r]||e.default)}var we={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:`Deprecation warning!
|
|
11
|
-
You are using deprecated way of configuration.
|
|
12
|
-
|
|
13
|
-
Instead of using
|
|
14
|
-
monaco.config({ urls: { monacoBase: '...' } })
|
|
15
|
-
use
|
|
16
|
-
monaco.config({ paths: { vs: '...' } })
|
|
17
|
-
|
|
18
|
-
For more please check the link https://github.com/suren-atoyan/monaco-loader#config
|
|
19
|
-
`},ye=tt(ut)(we),it={config:nt},ct=function(){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return function(i){return n.reduceRight(function(c,m){return m(c)},i)}};function Ee(e,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&e[n]&&Object.assign(r[n],Ee(e[n],r[n]))}),ge(ge({},e),r)}var at={type:"cancelation",msg:"operation is manually canceled"};function ce(e){var r=!1,n=new Promise(function(o,i){e.then(function(c){return r?i(at):o(c)}),e.catch(i)});return n.cancel=function(){return r=!0},n}var st=Je.create({config:et,isInitialized:!1,resolve:null,reject:null,monaco:null}),be=Le(st,2),J=be[0],ue=be[1];function ft(e){var r=it.config(e),n=r.monaco,o=$e(r,["monaco"]);ue(function(i){return{config:Ee(i.config,o),monaco:n}})}function lt(){var e=J(function(r){var n=r.monaco,o=r.isInitialized,i=r.resolve;return{monaco:n,isInitialized:o,resolve:i}});if(!e.isInitialized){if(ue({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),ce(ae);if(window.monaco&&window.monaco.editor)return Oe(window.monaco),e.resolve(window.monaco),ce(ae);ct(dt,gt)(vt)}return ce(ae)}function dt(e){return document.body.appendChild(e)}function pt(e){var r=document.createElement("script");return e&&(r.src=e),r}function gt(e){var r=J(function(o){var i=o.config,c=o.reject;return{config:i,reject:c}}),n=pt("".concat(r.config.paths.vs,"/loader.js"));return n.onload=function(){return e()},n.onerror=r.reject,n}function vt(){var e=J(function(n){var o=n.config,i=n.resolve,c=n.reject;return{config:o,resolve:i,reject:c}}),r=window.require;r.config(e.config),r(["vs/editor/editor.main"],function(n){Oe(n),e.resolve(n)},function(n){e.reject(n)})}function Oe(e){J().monaco||ue({monaco:e})}function ht(){return J(function(e){var r=e.monaco;return r})}var ae=new Promise(function(e,r){return ue({resolve:e,reject:r})}),Z={config:ft,init:lt,__getMonacoInstance:ht},mt={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},se=mt,yt={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},wt=yt;function Et({children:e}){return Y.createElement("div",{style:wt.container},e)}var bt=Et,Ot=bt;function _t({width:e,height:r,isEditorReady:n,loading:o,_ref:i,className:c,wrapperProps:m}){return Y.createElement("section",{style:{...se.wrapper,width:e,height:r},...m},!n&&Y.createElement(Ot,null,o),Y.createElement("div",{ref:i,style:{...se.fullWidth,...!n&&se.hide},className:c}))}var jt=_t,_e=d.memo(jt);function Rt(e){d.useEffect(e,[])}var fe=Rt;function St(e,r,n=!0){let o=d.useRef(!0);d.useEffect(o.current||!n?()=>{o.current=!1}:e,r)}var P=St;function Q(){}function B(e,r,n,o){return Mt(e,o)||Tt(e,r,n,o)}function Mt(e,r){return e.editor.getModel(je(e,r))}function Tt(e,r,n,o){return e.editor.createModel(r,n,o?je(e,o):void 0)}function je(e,r){return e.Uri.parse(r)}function Pt({original:e,modified:r,language:n,originalLanguage:o,modifiedLanguage:i,originalModelPath:c,modifiedModelPath:m,keepCurrentOriginalModel:w=!1,keepCurrentModifiedModel:O=!1,theme:M="light",loading:A="Loading...",options:T={},height:K="100%",width:z="100%",className:k,wrapperProps:V={},beforeMount:C=Q,onMount:W=Q}){let[S,I]=d.useState(!1),[L,f]=d.useState(!0),_=d.useRef(null),y=d.useRef(null),x=d.useRef(null),j=d.useRef(W),h=d.useRef(C),$=d.useRef(!1);fe(()=>{let v=Z.init();return v.then(E=>(y.current=E)&&f(!1)).catch(E=>E?.type!=="cancelation"&&console.error("Monaco initialization: error:",E)),()=>_.current?q():v.cancel()}),P(()=>{if(_.current&&y.current){let v=_.current.getOriginalEditor(),E=B(y.current,e||"",o||n||"text",c||"");E!==v.getModel()&&v.setModel(E)}},[c],S),P(()=>{if(_.current&&y.current){let v=_.current.getModifiedEditor(),E=B(y.current,r||"",i||n||"text",m||"");E!==v.getModel()&&v.setModel(E)}},[m],S),P(()=>{let v=_.current.getModifiedEditor();v.getOption(y.current.editor.EditorOption.readOnly)?v.setValue(r||""):r!==v.getValue()&&(v.executeEdits("",[{range:v.getModel().getFullModelRange(),text:r||"",forceMoveMarkers:!0}]),v.pushUndoStop())},[r],S),P(()=>{_.current?.getModel()?.original.setValue(e||"")},[e],S),P(()=>{let{original:v,modified:E}=_.current.getModel();y.current.editor.setModelLanguage(v,o||n||"text"),y.current.editor.setModelLanguage(E,i||n||"text")},[n,o,i],S),P(()=>{y.current?.editor.setTheme(M)},[M],S),P(()=>{_.current?.updateOptions(T)},[T],S);let H=d.useCallback(()=>{if(!y.current)return;h.current(y.current);let v=B(y.current,e||"",o||n||"text",c||""),E=B(y.current,r||"",i||n||"text",m||"");_.current?.setModel({original:v,modified:E})},[n,r,i,e,o,c,m]),U=d.useCallback(()=>{!$.current&&x.current&&(_.current=y.current.editor.createDiffEditor(x.current,{automaticLayout:!0,...T}),H(),y.current?.editor.setTheme(M),I(!0),$.current=!0)},[T,M,H]);d.useEffect(()=>{S&&j.current(_.current,y.current)},[S]),d.useEffect(()=>{!L&&!S&&U()},[L,S,U]);function q(){let v=_.current?.getModel();w||v?.original?.dispose(),O||v?.modified?.dispose(),_.current?.dispose()}return Y.createElement(_e,{width:z,height:K,isEditorReady:S,loading:A,_ref:x,className:k,wrapperProps:V})}var Ct=Pt,At=d.memo(Ct);function It(){let[e,r]=d.useState(Z.__getMonacoInstance());return fe(()=>{let n;return e||(n=Z.init(),n.then(o=>{r(o)})),()=>n?.cancel()}),e}var $t=It;function Lt(e){let r=d.useRef();return d.useEffect(()=>{r.current=e},[e]),r.current}var Ht=Lt,ne=new Map;function Dt({defaultValue:e,defaultLanguage:r,defaultPath:n,value:o,language:i,path:c,theme:m="light",line:w,loading:O="Loading...",options:M={},overrideServices:A={},saveViewState:T=!0,keepCurrentModel:K=!1,width:z="100%",height:k="100%",className:V,wrapperProps:C={},beforeMount:W=Q,onMount:S=Q,onChange:I,onValidate:L=Q}){let[f,_]=d.useState(!1),[y,x]=d.useState(!0),j=d.useRef(null),h=d.useRef(null),$=d.useRef(null),H=d.useRef(S),U=d.useRef(W),q=d.useRef(),v=d.useRef(o),E=Ht(c),ee=d.useRef(!1),G=d.useRef(!1);fe(()=>{let u=Z.init();return u.then(a=>(j.current=a)&&x(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>h.current?t():u.cancel()}),P(()=>{let u=B(j.current,e||o||"",r||i||"",c||n||"");u!==h.current?.getModel()&&(T&&ne.set(E,h.current?.saveViewState()),h.current?.setModel(u),T&&h.current?.restoreViewState(ne.get(c)))},[c],f),P(()=>{h.current?.updateOptions(M)},[M],f),P(()=>{!h.current||o===void 0||(h.current.getOption(j.current.editor.EditorOption.readOnly)?h.current.setValue(o):o!==h.current.getValue()&&(G.current=!0,h.current.executeEdits("",[{range:h.current.getModel().getFullModelRange(),text:o,forceMoveMarkers:!0}]),h.current.pushUndoStop(),G.current=!1))},[o],f),P(()=>{let u=h.current?.getModel();u&&i&&j.current?.editor.setModelLanguage(u,i)},[i],f),P(()=>{w!==void 0&&h.current?.revealLine(w)},[w],f),P(()=>{j.current?.editor.setTheme(m)},[m],f);let te=d.useCallback(()=>{if(!(!$.current||!j.current)&&!ee.current){U.current(j.current);let u=c||n,a=B(j.current,o||e||"",r||i||"",u||"");h.current=j.current?.editor.create($.current,{model:a,automaticLayout:!0,...M},A),T&&h.current.restoreViewState(ne.get(u)),j.current.editor.setTheme(m),w!==void 0&&h.current.revealLine(w),_(!0),ee.current=!0}},[e,r,n,o,i,c,M,A,T,m,w]);d.useEffect(()=>{f&&H.current(h.current,j.current)},[f]),d.useEffect(()=>{!y&&!f&&te()},[y,f,te]),v.current=o,d.useEffect(()=>{f&&I&&(q.current?.dispose(),q.current=h.current?.onDidChangeModelContent(u=>{G.current||I(h.current.getValue(),u)}))},[f,I]),d.useEffect(()=>{if(f){let u=j.current.editor.onDidChangeMarkers(a=>{let s=h.current.getModel()?.uri;if(s&&a.find(p=>p.path===s.path)){let p=j.current.editor.getModelMarkers({resource:s});L?.(p)}});return()=>{u?.dispose()}}return()=>{}},[f,L]);function t(){q.current?.dispose(),K?T&&ne.set(c,h.current.saveViewState()):h.current.getModel()?.dispose(),h.current.dispose()}return Y.createElement(_e,{width:z,height:k,isEditorReady:f,loading:O,_ref:$,className:V,wrapperProps:C})}var Nt=Dt,Re=d.memo(Nt),xt=Re;const Yt=Object.freeze(Object.defineProperty({__proto__:null,DiffEditor:At,Editor:Re,default:xt,loader:Z,useMonaco:$t},Symbol.toStringTag,{value:"Module"}));export{qt as R,Y as W,Ce as a,Ut as c,Te as g,Yt as i,d as r};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import{f,A as p,i as b}from"./agents-ClAzIJTw.js";import{a as m}from"./authFetch-BATQyPG5.js";const w=async()=>{try{const r=await m(`${p}/agents/sessions`);if(!r.ok)throw new Error("Failed to fetch sessions");return r.json()}catch(r){if(b(r))return{activeSessionCount:0,sessions:[],message:"API service unavailable"};throw r}},v=()=>f({queryKey:["sessions"],queryFn:w,refetchInterval:5e3,retry:(r,e)=>b(e)?!1:r<3,retryDelay:r=>Math.min(1e3*2**r,3e4)}),I=async(r,e)=>{const s=await m(`${p}/sessions/${r}/${e}/cleanup`,{method:"DELETE"});if(!s.ok){const t=await s.json();throw new Error(t.error||"Failed to cleanup session")}};class a{static instance;static STORAGE_KEY="active_chat_tabs";static WAKEUP_SIGNAL_KEY="tab_wakeup_signal";static WAKEUP_RESPONSE_KEY="tab_wakeup_response";static TAB_TIMEOUT=300*1e3;currentTabId;cleanupInterval;lastKnownSession=null;sessionResumeHistory=[];constructor(){this.currentTabId=this.generateTabId(),this.startCleanupTimer(),this.setupBeforeUnloadHandler(),console.log(`📱 TabManager initialized with ID: ${this.currentTabId}`)}static getInstance(){return a.instance||(a.instance=new a),a.instance}registerCurrentTab(e,s){const t=this.getActiveTabs(),n=this.getTabKey(e,s),i={agentId:e,sessionId:s,url:window.location.href,lastSeen:Date.now(),tabId:this.currentTabId,title:document.title};t[n]=i,this.saveActiveTabs(t),console.log(`📱 Tab registered: ${this.currentTabId} for session ${s}`),this.lastKnownSession={agentId:e,sessionId:s}}updateCurrentTabActivity(e,s){const t=this.getActiveTabs(),n=this.getTabKey(e,s);t[n]&&t[n].tabId===this.currentTabId&&(t[n].lastSeen=Date.now(),t[n].url=window.location.href,t[n].title=document.title,this.saveActiveTabs(t),this.lastKnownSession={agentId:e,sessionId:s})}hasActiveTab(e,s){return this.findActiveTabForSession(e,s)!==null}findActiveTabForSession(e,s){const t=this.getActiveTabs(),n=this.getTabKey(e,s);if(t[n]&&Date.now()-t[n].lastSeen<a.TAB_TIMEOUT)return t[n];for(const[i,o]of Object.entries(t))if(o.agentId===e&&o.sessionId===s){if(Date.now()-o.lastSeen<a.TAB_TIMEOUT)return o;delete t[i],this.saveActiveTabs(t),console.log(`🗑️ Cleaned up expired tab: ${s}`)}return null}async wakeupExistingTab(e,s,t){if(!this.findActiveTabForSession(e,s))return!1;const i={type:"WAKEUP",agentId:e,sessionId:s,requestId:this.generateRequestId(),timestamp:Date.now(),sourceUrl:t||window.location.href};return console.log(`🔔 Sending wakeup signal for session: ${s}`),localStorage.setItem(a.WAKEUP_SIGNAL_KEY,JSON.stringify(i)),new Promise(o=>{const l=setTimeout(()=>{console.log(`⏰ Wakeup timeout for session ${s}`),o(!1)},2e3),g=setInterval(()=>{const h=localStorage.getItem(a.WAKEUP_RESPONSE_KEY);if(h)try{const d=JSON.parse(h);if(d.requestId===i.requestId){clearTimeout(l),localStorage.removeItem(a.WAKEUP_RESPONSE_KEY),console.log(`✅ Tab awakened successfully: ${s}`),o(d.success);return}}catch(d){console.error("Error parsing wakeup response:",d)}},100);setTimeout(()=>clearInterval(g),2e3)})}setupWakeupListener(e,s){const t=i=>{if(i.key===a.WAKEUP_SIGNAL_KEY&&i.newValue)try{const o=JSON.parse(i.newValue);o.type==="WAKEUP"&&o.agentId===e&&o.sessionId===s&&this.handleWakeupSignal(o)}catch(o){console.error("Error handling wakeup signal:",o)}};window.addEventListener("storage",t);const n=setInterval(()=>{const i=localStorage.getItem(a.WAKEUP_SIGNAL_KEY);if(i)try{const o=JSON.parse(i);o.type==="WAKEUP"&&o.agentId===e&&o.sessionId===s&&Date.now()-o.timestamp<5e3&&this.handleWakeupSignal(o)}catch(o){console.error("Error polling wakeup signal:",o)}},500);return console.log(`🎯 Wakeup listener setup for session: ${s}`),()=>{window.removeEventListener("storage",t),clearInterval(n),console.log(`🎯 Wakeup listener cleaned up for session: ${s}`)}}updateCurrentTabSession(e,s,t,n){const i=this.getActiveTabs(),o=this.getTabKey(e,s);i[o]&&i[o].tabId===this.currentTabId&&delete i[o];const l=this.getTabKey(t,n);i[l]={agentId:t,sessionId:n,url:window.location.href,lastSeen:Date.now(),tabId:this.currentTabId,title:document.title},this.saveActiveTabs(i),console.log(`🔄 Tab session updated: ${s} → ${n}`),this.lastKnownSession={agentId:t,sessionId:n}}unregisterCurrentTabSession(e,s){const t=this.getActiveTabs(),n=this.getTabKey(e,s);t[n]&&t[n].tabId===this.currentTabId&&(delete t[n],this.saveActiveTabs(t),console.log(`📤 Unregistered current tab from session: ${s}`)),this.lastKnownSession&&this.lastKnownSession.agentId===e&&this.lastKnownSession.sessionId===s&&(this.lastKnownSession=null)}handleSessionResume(e,s,t){const n=this.getActiveTabs(),i=this.getTabKey(e,s),o=this.getTabKey(e,t);n[i]&&n[i].tabId===this.currentTabId?(delete n[i],n[o]={agentId:e,sessionId:t,url:window.location.href,lastSeen:Date.now(),tabId:this.currentTabId,title:document.title},this.saveActiveTabs(n),console.log(`🔄 Session resumed: ${s} → ${t}`),this.lastKnownSession={agentId:e,sessionId:t}):(this.registerCurrentTab(e,t),console.log(`🆕 Resumed session registered: ${t}`))}recordSessionResume(e,s,t){this.sessionResumeHistory.push({originalSessionId:s,newSessionId:t,timestamp:Date.now(),agentId:e}),this.sessionResumeHistory.length>100&&(this.sessionResumeHistory=this.sessionResumeHistory.slice(-100)),console.log(`📝 Recorded session resume: ${s} → ${t}`)}smartUpdateCurrentTab(){const e=window.location.href,s=this.parseSessionFromUrl(e);if(!s){this.lastKnownSession&&(this.unregisterCurrentTabSession(this.lastKnownSession.agentId,this.lastKnownSession.sessionId),this.lastKnownSession=null);return}const{agentId:t,sessionId:n}=s;if(this.lastKnownSession){const{agentId:i,sessionId:o}=this.lastKnownSession;o!==n||i!==t?this.sessionResumeHistory.find(c=>c.originalSessionId===o&&c.newSessionId===n&&c.agentId===t&&Date.now()-c.timestamp<3e4)?(this.handleSessionResume(t,o,n),console.log(`🔄 Detected session resume via URL: ${o} → ${n}`)):(this.updateCurrentTabSession(i,o,t,n),console.log(`🎯 Regular session switch: ${o} → ${n}`)):this.updateCurrentTabActivity(t,n)}else this.registerCurrentTab(t,n),console.log(`🎯 Initial session register: ${n}`);this.lastKnownSession={agentId:t,sessionId:n}}startSmartMonitoring(){this.smartUpdateCurrentTab();const e=()=>{setTimeout(()=>this.smartUpdateCurrentTab(),100)};window.addEventListener("popstate",e);const s=history.pushState,t=history.replaceState;return history.pushState=function(...n){s.apply(this,n),e()},history.replaceState=function(...n){t.apply(this,n),e()},console.log(`🎯 Smart monitoring started for tab: ${this.currentTabId}`),()=>{window.removeEventListener("popstate",e),history.pushState=s,history.replaceState=t,console.log(`🛑 Smart monitoring stopped for tab: ${this.currentTabId}`)}}handleWakeupSignal(e){console.log(`🔔 Received wakeup signal for session: ${e.sessionId}`);try{if(window.focus(),window.parent&&window.parent!==window&&window.parent.focus(),document.hidden){const t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});document.dispatchEvent(t)}}catch(t){console.log("Focus attempt failed:",t)}this.flashPageTitle(),this.playNotificationSound(),e.sourceUrl&&e.sourceUrl!==window.location.href?this.isSameSession(e.sourceUrl,window.location.href)?(console.log("🎯 URLs point to same session, forcing visibility"),this.makePageVisible()):(console.log(`🔄 Navigating to: ${e.sourceUrl}`),window.history.replaceState(null,"",e.sourceUrl),window.location.reload()):this.makePageVisible();const s={requestId:e.requestId,agentId:e.agentId,sessionId:e.sessionId,success:!0,timestamp:Date.now()};localStorage.setItem(a.WAKEUP_RESPONSE_KEY,JSON.stringify(s)),localStorage.removeItem(a.WAKEUP_SIGNAL_KEY),this.updateCurrentTabActivity(e.agentId,e.sessionId),console.log(`✅ Wakeup signal processed successfully for session: ${e.sessionId}`)}flashPageTitle(){const e=document.title;let s=0;const t=setInterval(()=>{document.title=s%2===0?"🔔 会话已唤起":e,s++,s>6&&(clearInterval(t),document.title=e)},500),n=()=>{clearInterval(t),document.title=e,window.removeEventListener("focus",n)};window.addEventListener("focus",n)}playNotificationSound(){try{const e=new(window.AudioContext||window.webkitAudioContext),s=e.createOscillator(),t=e.createGain();s.connect(t),t.connect(e.destination),s.frequency.setValueAtTime(800,e.currentTime),s.frequency.setValueAtTime(600,e.currentTime+.1),t.gain.setValueAtTime(.1,e.currentTime),t.gain.exponentialRampToValueAtTime(.01,e.currentTime+.2),s.start(e.currentTime),s.stop(e.currentTime+.2)}catch(e){console.log("Audio notification not supported:",e)}}makePageVisible(){try{window.scrollTo(0,0),document.fullscreenEnabled&&document.documentElement.requestFullscreen?.()?.then(()=>{setTimeout(()=>{document.exitFullscreen?.()},100)}).catch(t=>console.log("Fullscreen toggle failed:",t));const e=document.createElement("div");e.style.cssText=`
|
|
2
|
-
position: fixed;
|
|
3
|
-
top: 50%;
|
|
4
|
-
left: 50%;
|
|
5
|
-
transform: translate(-50%, -50%);
|
|
6
|
-
background: rgba(59, 130, 246, 0.9);
|
|
7
|
-
color: white;
|
|
8
|
-
padding: 20px 40px;
|
|
9
|
-
border-radius: 12px;
|
|
10
|
-
font-size: 18px;
|
|
11
|
-
font-weight: bold;
|
|
12
|
-
z-index: 999999;
|
|
13
|
-
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
|
|
14
|
-
animation: bounce 0.6s ease-in-out;
|
|
15
|
-
`;const s=document.createElement("style");s.textContent=`
|
|
16
|
-
@keyframes bounce {
|
|
17
|
-
0%, 20%, 53%, 80%, 100% {
|
|
18
|
-
transform: translate(-50%, -50%) translateY(0);
|
|
19
|
-
}
|
|
20
|
-
40%, 43% {
|
|
21
|
-
transform: translate(-50%, -50%) translateY(-20px);
|
|
22
|
-
}
|
|
23
|
-
70% {
|
|
24
|
-
transform: translate(-50%, -50%) translateY(-10px);
|
|
25
|
-
}
|
|
26
|
-
90% {
|
|
27
|
-
transform: translate(-50%, -50%) translateY(-5px);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
`,document.head.appendChild(s),e.textContent="🎯 会话已激活",document.body.appendChild(e),setTimeout(()=>{document.body.contains(e)&&document.body.removeChild(e),document.head.contains(s)&&document.head.removeChild(s)},2e3),console.log("🎯 Made page more visible")}catch(e){console.log("Make page visible failed:",e)}}parseSessionFromUrl(e){try{const s=new URL(e),t=s.pathname.split("/"),n=t.indexOf("chat");if(n!==-1&&t[n+1]){const i=t[n+1],o=s.searchParams.get("session");if(i&&o)return{agentId:i,sessionId:o}}return null}catch(s){return console.error("Error parsing session from URL:",s),null}}isSameSession(e,s){try{const t=this.parseSessionFromUrl(e),n=this.parseSessionFromUrl(s);return!t||!n?!1:t.agentId===n.agentId&&t.sessionId===n.sessionId}catch(t){return console.error("Error comparing session URLs:",t),!1}}getActiveTabs(){try{const e=localStorage.getItem(a.STORAGE_KEY);return e?JSON.parse(e):{}}catch(e){return console.error("Error reading active tabs:",e),{}}}saveActiveTabs(e){try{localStorage.setItem(a.STORAGE_KEY,JSON.stringify(e))}catch(s){console.error("Error saving active tabs:",s)}}getTabKey(e,s){return`${e}_${s}`}generateTabId(){return`tab_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}generateRequestId(){return`req_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}startCleanupTimer(){this.cleanupInterval=window.setInterval(()=>{this.cleanupExpiredTabs()},6e4)}cleanupExpiredTabs(){const e=this.getActiveTabs(),s=Date.now();let t=0;Object.keys(e).forEach(n=>{s-e[n].lastSeen>a.TAB_TIMEOUT&&(delete e[n],t++)}),t>0&&(this.saveActiveTabs(e),console.log(`🗑️ Cleaned up ${t} expired tabs`))}setupBeforeUnloadHandler(){window.addEventListener("beforeunload",()=>{const e=this.getActiveTabs();Object.keys(e).forEach(s=>{e[s].tabId===this.currentTabId&&delete e[s]}),this.saveActiveTabs(e)})}getDebugInfo(){return{tabs:this.getActiveTabs(),currentTabId:this.currentTabId,lastKnownSession:this.lastKnownSession,resumeHistory:this.sessionResumeHistory}}clearAllTabs(){localStorage.removeItem(a.STORAGE_KEY),localStorage.removeItem(a.WAKEUP_SIGNAL_KEY),localStorage.removeItem(a.WAKEUP_RESPONSE_KEY),this.sessionResumeHistory=[],this.lastKnownSession=null,console.log("🗑️ All tab records cleared")}stopCleanupTimer(){this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=void 0,console.log("🛑 Cleanup timer stopped"))}}const u=a.getInstance();window.tabManagerDebug={showTabs:()=>console.table(u.getDebugInfo().tabs),clearAll:()=>u.clearAllTabs(),testWakeup:(r,e)=>u.wakeupExistingTab(r,e),getCurrentTabId:()=>u.getDebugInfo().currentTabId,getDebugInfo:()=>u.getDebugInfo()};export{I as c,u as t,v as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as g}from"./monaco-editor-C7Z4sOhS.js";import{j as t}from"./data-structures-DLJedtzx.js";import{P as M,G as W,S as D,B as K,a as q,F as H,b as J,c as X,d as Z,C as v,e as Y,f as Q,g as V,h as F,A as ee,T as w,W as te,L as se,i as re,j as ae,k as T,l as P,m as ne,Z as le}from"./ui-components-Cw21Epuw.js";const oe=(e,s,r,l)=>{const a=[r,{code:s,...l||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(a,"warn","react-i18next::",!0);f(a[0])&&(a[0]=`react-i18next:: ${a[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...a):console?.warn&&console.warn(...a)},$={},C=(e,s,r,l)=>{f(r)&&$[r]||(f(r)&&($[r]=new Date),oe(e,s,r,l))},U=(e,s)=>()=>{if(e.isInitialized)s();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),s()};e.on("initialized",r)}},E=(e,s,r)=>{e.loadNamespaces(s,U(e,r))},L=(e,s,r,l)=>{if(f(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(s)>-1)return E(e,r,l);r.forEach(a=>{e.options.ns.indexOf(a)<0&&e.options.ns.push(a)}),e.loadLanguages(s,U(e,l))},de=(e,s,r={})=>!s.languages||!s.languages.length?(C(s,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:s.languages}),!0):s.hasLoadedNamespace(e,{lng:r.lng,precheck:(l,a)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&l.services.backendConnector.backend&&l.isLanguageChangingTo&&!a(l.isLanguageChangingTo,e))return!1}}),f=e=>typeof e=="string",ie=e=>typeof e=="object"&&e!==null,ce=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,ue={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},ge=e=>ue[e],xe=e=>e.replace(ce,ge);let O={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:xe};const me=(e={})=>{O={...O,...e}},pe=()=>O;let A;const be=e=>{A=e},he=()=>A,Ee={type:"3rdParty",init(e){me(e.options.react),be(e)}},fe=g.createContext();class ye{constructor(){this.usedNamespaces={}}addUsedNamespaces(s){s.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Ne=(e,s)=>{const r=g.useRef();return g.useEffect(()=>{r.current=e},[e,s]),r.current},G=(e,s,r,l)=>e.getFixedT(s,r,l),ke=(e,s,r,l)=>g.useCallback(G(e,s,r,l),[e,s,r,l]),S=(e,s={})=>{const{i18n:r}=s,{i18n:l,defaultNS:a}=g.useContext(fe)||{},n=r||l||he();if(n&&!n.reportNamespaces&&(n.reportNamespaces=new ye),!n){C(n,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const u=(m,p)=>f(p)?p:ie(p)&&f(p.defaultValue)?p.defaultValue:Array.isArray(m)?m[m.length-1]:m,x=[u,{},!1];return x.t=u,x.i18n={},x.ready=!1,x}n.options.react?.wait&&C(n,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const d={...pe(),...n.options.react,...s},{useSuspense:i,keyPrefix:o}=d;let c=e||a||n.options?.defaultNS;c=f(c)?[c]:c||["translation"],n.reportNamespaces.addUsedNamespaces?.(c);const b=(n.isInitialized||n.initializedStoreOnce)&&c.every(u=>de(u,n,d)),z=ke(n,s.lng||null,d.nsMode==="fallback"?c:c[0],o),I=()=>z,j=()=>G(n,s.lng||null,d.nsMode==="fallback"?c:c[0],o),[B,y]=g.useState(I);let N=c.join();s.lng&&(N=`${s.lng}${N}`);const _=Ne(N),h=g.useRef(!0);g.useEffect(()=>{const{bindI18n:u,bindI18nStore:x}=d;h.current=!0,!b&&!i&&(s.lng?L(n,s.lng,c,()=>{h.current&&y(j)}):E(n,c,()=>{h.current&&y(j)})),b&&_&&_!==N&&h.current&&y(j);const m=()=>{h.current&&y(j)};return u&&n?.on(u,m),x&&n?.store.on(x,m),()=>{h.current=!1,n&&u&&u?.split(" ").forEach(p=>n.off(p,m)),x&&n&&x.split(" ").forEach(p=>n.store.off(p,m))}},[n,N]),g.useEffect(()=>{h.current&&b&&y(I)},[n,o,b]);const k=[B,n,b];if(k.t=B,k.i18n=n,k.ready=b,b||!b&&!i)return k;throw new Promise(u=>{s.lng?L(n,s.lng,c,()=>u()):E(n,c,()=>u())})},je={Task:te,Bash:w,BashOutput:ee,KillBash:F,Glob:V,Grep:Q,LS:Y,exit_plan_mode:v,Read:Z,Edit:X,MultiEdit:J,Write:H,NotebookRead:q,NotebookEdit:K,WebFetch:W,TodoWrite:D,WebSearch:W},we={Task:"text-purple-600 dark:text-purple-400 bg-purple-100 dark:bg-purple-900/30",Bash:"text-gray-800 dark:text-gray-300 bg-gray-100 dark:bg-gray-700",BashOutput:"text-blue-700 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/30",KillBash:"text-red-700 dark:text-red-400 bg-red-50 dark:bg-red-900/30",Glob:"text-blue-600 dark:text-blue-400 bg-blue-100 dark:bg-blue-900/30",Grep:"text-green-600 dark:text-green-400 bg-green-100 dark:bg-green-900/30",LS:"text-yellow-600 dark:text-yellow-400 bg-yellow-100 dark:bg-yellow-900/30",exit_plan_mode:"text-emerald-600 dark:text-emerald-400 bg-emerald-100 dark:bg-emerald-900/30",Read:"text-indigo-600 dark:text-indigo-400 bg-indigo-100 dark:bg-indigo-900/30",Edit:"text-orange-600 dark:text-orange-400 bg-orange-100 dark:bg-orange-900/30",MultiEdit:"text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30",Write:"text-cyan-600 dark:text-cyan-400 bg-cyan-100 dark:bg-cyan-900/30",NotebookRead:"text-pink-600 dark:text-pink-400 bg-pink-100 dark:bg-pink-900/30",NotebookEdit:"text-rose-600 dark:text-rose-400 bg-rose-100 dark:bg-rose-900/30",WebFetch:"text-teal-600 dark:text-teal-400 bg-teal-100 dark:bg-teal-900/30",TodoWrite:"text-violet-600 dark:text-violet-400 bg-violet-100 dark:bg-violet-900/30",WebSearch:"text-sky-600 dark:text-sky-400 bg-sky-100 dark:bg-sky-900/30"},R=({execution:e,children:s,subtitle:r,showResult:l=!0,isMcpTool:a=!1,hideToolName:n=!0})=>{const[d,i]=g.useState(!1),o=a?M:je[e.toolName]||w,c=a?"text-blue-600 dark:text-blue-400 bg-blue-100 dark:bg-blue-900/30":we[e.toolName]||"text-gray-600 dark:text-gray-400 bg-gray-100 dark:bg-gray-700";return t.jsx(t.Fragment,{children:t.jsxs("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg bg-gray-50 dark:bg-gray-800 max-w-full",children:[t.jsxs("div",{className:`flex items-start justify-between cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors ${n?"p-2":"p-4"}`,onClick:()=>i(!d),children:[t.jsxs("div",{className:`flex space-x-2 flex-1 min-w-0 ${n?"items-center":"items-start"}`,children:[t.jsx("div",{className:`${n?"p-1.5":"p-2"} rounded-full ${c} ${n?"":"mt-0.5"}`,children:e.isExecuting?t.jsx(se,{className:"w-4 h-4 animate-spin"}):t.jsx(o,{className:"w-4 h-4"})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[!n&&t.jsx("h4",{className:"text-sm font-semibold text-gray-800 dark:text-gray-200",children:e.toolName}),r&&t.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:r})]})]}),t.jsx("div",{className:"flex items-center",children:d?t.jsx(re,{className:"w-4 h-4 text-gray-400 dark:text-gray-500"}):t.jsx(ae,{className:"w-4 h-4 text-gray-400 dark:text-gray-500"})})]}),d&&t.jsx("div",{className:"px-4 pb-4 border-t border-gray-200 dark:border-gray-700",children:t.jsxs("div",{className:"pt-3",children:[s,l&&e.toolResult&&!e.isError&&t.jsx(Te,{result:e.toolResult})]})})]})})},Oe=({label:e,value:s,className:r="",isCode:l=!1})=>{if(s==null||s==="")return null;const a=typeof s=="object"?JSON.stringify(s,null,2):String(s);return t.jsxs("div",{className:`mb-2 ${r}`,children:[t.jsxs("span",{className:"text-xs font-medium text-gray-600 dark:text-gray-400",children:[e,":"]}),t.jsx("div",{className:`mt-1 ${l?"font-mono bg-gray-100 dark:bg-gray-700 p-2 rounded text-sm text-gray-800 dark:text-gray-200":"text-sm text-gray-800 dark:text-gray-200"}`,children:l?t.jsx("pre",{className:"whitespace-pre-wrap break-words",children:a}):t.jsx("span",{className:"break-words",children:a})})]})},Te=({result:e,isError:s=!1,className:r=""})=>{const{t:l}=S("components");return e?t.jsxs("div",{className:`mt-3 ${r}`,children:[t.jsx("p",{className:"text-xs font-medium text-gray-600 dark:text-gray-400 mb-2",children:l("baseToolComponent.executionResult")}),t.jsx("div",{className:`p-3 rounded-md border text-sm font-mono whitespace-pre-wrap break-words ${s?"bg-red-50 dark:bg-red-900/30 border-red-200 dark:border-red-800 text-red-700 dark:text-red-300":"bg-green-50 dark:bg-green-900/30 border-green-200 dark:border-green-800 text-green-700 dark:text-green-300"}`,children:e})]}):null},Re=({execution:e})=>{const{t:s}=S("components"),r=e.toolInput,a=(()=>{if(!e.toolUseResult)return null;if(typeof e.toolUseResult=="object")return e.toolUseResult;if(typeof e.toolUseResult=="string")try{return JSON.parse(e.toolUseResult)}catch{const i=e.toolUseResult.trim(),o=i.includes("running")?"running":i.includes("completed")?"completed":i.includes("killed")?"killed":i.includes("failed")?"failed":"running";return{shellId:r.bash_id,command:"",status:o,exitCode:null,stdout:"",stderr:"",stdoutLines:0,stderrLines:0,timestamp:new Date().toISOString()}}return null})(),n=()=>{const i=a?.shellId||r.bash_id;if(!i)return;let o=`${s("bashOutputTool.shellPrefix")} ${i}`;return a?.status&&(o+=` • ${a.status}`),o},d=i=>{switch(i){case"running":return{icon:t.jsx(w,{className:"w-4 h-4"}),className:"bg-blue-100 text-blue-800 border-blue-200",text:s("bashOutputTool.status.running")};case"completed":return{icon:t.jsx(v,{className:"w-4 h-4"}),className:"bg-green-100 text-green-800 border-green-200",text:s("bashOutputTool.status.completed")};case"killed":return{icon:t.jsx(ne,{className:"w-4 h-4"}),className:"bg-red-100 text-red-800 border-red-200",text:s("bashOutputTool.status.killed")};case"failed":return{icon:t.jsx(T,{className:"w-4 h-4"}),className:"bg-orange-100 text-orange-800 border-orange-200",text:s("bashOutputTool.status.failed")};default:return{icon:t.jsx(P,{className:"w-4 h-4"}),className:"bg-gray-100 text-gray-800 border-gray-200",text:i}}};return t.jsx(R,{execution:e,subtitle:n(),showResult:!1,children:t.jsxs("div",{className:"space-y-4",children:[a&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"bg-gray-50 rounded-lg p-3 space-y-3",children:[t.jsxs("div",{className:`inline-flex items-center gap-2 px-3 py-1 rounded-full border text-sm font-medium ${d(a.status||"unknown").className}`,children:[d(a.status||"unknown").icon,d(a.status||"unknown").text]}),a.command&&t.jsxs("div",{className:"bg-white border rounded px-3 py-2 text-sm font-mono text-gray-800",children:[t.jsx("span",{className:"text-gray-500 mr-2",children:">"}),t.jsx("span",{className:"break-all",children:a.command})]}),(a.filterPattern||r.filter)&&t.jsxs("div",{className:"bg-white border rounded px-3 py-2 text-sm font-mono text-gray-800",children:[t.jsx("span",{className:"text-gray-500 mr-2",children:"filter:"}),t.jsx("span",{className:"break-all",children:a.filterPattern||r.filter})]}),t.jsxs("div",{className:"flex gap-4 text-xs text-gray-500 pt-2 border-t border-gray-200",children:[a.exitCode!==void 0&&a.exitCode!==null&&t.jsxs("span",{children:[s("bashOutputTool.exitCode"),": ",a.exitCode]}),a.timestamp&&t.jsx("span",{children:new Date(a.timestamp).toLocaleTimeString()})]})]}),a.stdout&&t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-gray-700 mb-2",children:[t.jsx(w,{className:"w-4 h-4"}),s("bashOutputTool.stdout")]}),t.jsx("pre",{className:"bg-gray-900 text-green-400 rounded-lg px-3 py-2 text-sm font-mono overflow-x-auto whitespace-pre-wrap border",children:a.stdout.trim()})]}),a.stderr&&t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-red-700 mb-2",children:[t.jsx(T,{className:"w-4 h-4"}),s("bashOutputTool.stderr")]}),t.jsx("pre",{className:"bg-red-50 text-red-800 border border-red-200 rounded-lg px-3 py-2 text-sm font-mono overflow-x-auto whitespace-pre-wrap",children:a.stderr.trim()})]})]}),!a&&t.jsxs("div",{className:"text-sm text-gray-600",children:[s("bashOutputTool.fetchingOutput",{shellId:r.bash_id}),r.filter&&t.jsxs("div",{className:"mt-1 text-xs text-gray-500",children:[s("bashOutputTool.filterCondition"),": ",t.jsx("code",{className:"bg-gray-100 px-1 rounded",children:r.filter})]})]})]})})},Ie=({execution:e})=>{const{t:s}=S("components"),r=e.toolInput,a=(()=>{if(!e.toolResult)return null;try{return JSON.parse(e.toolResult)}catch{return{message:e.toolResult}}})(),n=()=>{if(!r.shell_id)return;const i=a?.message?.match(/\(([^)]+)\)/)?.[1]||"";return i?s("killBashTool.subtitleWithProcess",{shellId:r.shell_id,processName:i}):s("killBashTool.subtitle",{shellId:r.shell_id})},d=()=>e.isError?!1:!!(a?.success===!0||a?.message?.includes("killed")||a?.message?.includes("Successfully"));return t.jsx(R,{execution:e,subtitle:n(),showResult:!1,children:t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:`p-2 rounded-full ${e.isExecuting?"bg-yellow-100":d()?"bg-green-100":e.isError?"bg-red-100":"bg-gray-100"}`,children:e.isExecuting?t.jsx(le,{className:"w-5 h-5 text-yellow-600 animate-pulse"}):d()?t.jsx(v,{className:"w-5 h-5 text-green-600"}):e.isError?t.jsx(T,{className:"w-5 h-5 text-red-600"}):t.jsx(F,{className:"w-5 h-5 text-gray-600"})}),t.jsxs("div",{children:[t.jsx("div",{className:`font-medium ${e.isExecuting?"text-yellow-800":d()?"text-green-800":e.isError?"text-red-800":"text-gray-800"}`,children:e.isExecuting?s("killBashTool.status.terminating"):d()?s("killBashTool.status.success"):e.isError?s("killBashTool.status.failed"):s("killBashTool.status.ready")}),t.jsxs("div",{className:"text-sm text-gray-600 mt-1",children:[s("killBashTool.shellId"),": ",t.jsx("code",{className:"bg-gray-100 px-2 py-0.5 rounded text-xs",children:r.shell_id})]})]})]}),a&&a.message&&t.jsx("div",{className:`p-3 rounded-md text-sm font-mono ${d()?"bg-green-100 text-green-800 border border-green-200":e.isError?"bg-red-100 text-red-800 border border-red-200":"bg-gray-100 text-gray-800 border border-gray-200"}`,children:a.message})]})})},Be=({execution:e})=>{const{t:s}=S("components"),r=e.toolInput,l=o=>{switch(o){case"completed":return t.jsx(v,{className:"w-3 h-3 text-green-600"});case"in_progress":return t.jsx(P,{className:"w-3 h-3 text-blue-600"});default:return t.jsx(T,{className:"w-3 h-3 text-gray-400"})}},a=r.todos.filter(o=>o.status==="completed").length,n=r.todos.length,d=r.todos.find(o=>o.status==="in_progress")?.content,i=()=>a===n&&n>0?s("todoWriteTool.allTasksCompleted"):d?s("todoWriteTool.currentTaskProgress",{completed:a+1,total:n,task:d}):s("todoWriteTool.pendingTasks",{completed:a,total:n});return t.jsx(R,{execution:e,subtitle:i(),showResult:!1,children:t.jsxs("div",{className:"space-y-1",children:[r.todos.map((o,c)=>t.jsxs("div",{className:"flex items-center gap-2 text-sm py-1",children:[l(o.status),t.jsx("span",{className:`flex-1 ${o.status==="completed"?"text-gray-500 line-through":o.status==="in_progress"?"text-blue-700 font-medium":"text-gray-700"}`,children:o.content})]},c)),t.jsxs("div",{className:"flex gap-3 text-xs text-gray-500 pt-2 border-t border-gray-200 mt-2",children:[t.jsx("span",{children:s("todoWriteTool.completedCount",{count:r.todos.filter(o=>o.status==="completed").length})}),t.jsx("span",{children:s("todoWriteTool.inProgressCount",{count:r.todos.filter(o=>o.status==="in_progress").length})}),t.jsx("span",{children:s("todoWriteTool.pendingCount",{count:r.todos.filter(o=>o.status==="pending").length})})]})]})})};export{R as B,Ie as K,Oe as T,Be as a,Re as b,Ee as i,S as u};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{f as h,h as w,A as o}from"./agents-ClAzIJTw.js";import{a as i}from"./authFetch-BATQyPG5.js";const O=(s,e)=>h({queryKey:["agents",s,e],queryFn:async()=>{const t=new URL(`${o}/agents`),n=await i(t.toString());if(!n.ok)throw new Error("Failed to fetch agents");return n.json()}}),C=s=>h({queryKey:["agent",s],queryFn:async()=>{const e=await i(`${o}/agents/${s}`);if(!e.ok)throw new Error("Failed to fetch agent");return e.json()},enabled:!!s}),P=()=>w({mutationFn:async s=>{const e=await i(`${o}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!e.ok)throw new Error("Failed to create agent");return e.json()}}),R=()=>w({mutationFn:async({agentId:s,data:e})=>{const t=await i(`${o}/agents/${s}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error("Failed to update agent");return t.json()}}),x=()=>w({mutationFn:async s=>{const e=await i(`${o}/agents/${s}`,{method:"DELETE"});if(!e.ok)throw new Error("Failed to delete agent");return e.json()}}),N=(s,e,t)=>h({queryKey:["agent-sessions",s,e,t],queryFn:async()=>{const n=new URL(`${o}/sessions/${s}`);e&&e.trim()&&n.searchParams.append("search",e.trim()),t&&n.searchParams.set("projectPath",t);const r=await i(n.toString());if(!r.ok)throw new Error("Failed to fetch agent sessions");return r.json()},enabled:!!s}),D=(s,e,t)=>(console.log("🎣 useAgentSessionMessages hook called:",{agentId:s,sessionId:e,projectPath:t,enabled:!!s&&!!e}),h({queryKey:["agent-session-messages",s,e,t],queryFn:async()=>{if(console.log("🎣 Fetching session messages for:",{agentId:s,sessionId:e,projectPath:t}),!e)return{messages:[]};const n=new URL(`${o}/sessions/${s}/${e}/messages`);t&&n.searchParams.set("projectPath",t),console.log("🎣 Fetching from URL:",n.toString());const r=await i(n.toString());if(!r.ok)throw console.error("🎣 Fetch failed:",r.status,r.statusText),new Error("Failed to fetch agent session messages");const u=await r.json();console.log("🎣 Raw API response:",{messageCount:u.messages?.length});const p=u.messages.map(y=>({...y,timestamp:new Date(y.timestamp)}));return console.log("🎣 Converted messages:",{messageCount:p.length}),{...u,messages:p}},enabled:!!s&&!!e})),M=()=>({mutateAsync:async({agentId:s,message:e,images:t,context:n,sessionId:r,projectPath:u,mcpTools:p,permissionMode:y,model:m,claudeVersion:S,abortController:f,onMessage:E,onError:F})=>{try{console.log("🚀 Starting SSE request to:",`${o}/agents/chat`);const a=await i(`${o}/agents/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:s,message:e,images:t,context:n,sessionId:r,projectPath:u,mcpTools:p,permissionMode:y,model:m,claudeVersion:S}),signal:f?.signal});if(console.log("🚀 SSE response received:",{status:a.status,statusText:a.statusText,headers:Object.fromEntries(a.headers.entries())}),!a.ok)throw new Error(`Agent chat request failed: ${a.status} ${a.statusText}`);const d=a.body?.getReader(),j=new TextDecoder;if(!d)throw new Error("No response body");for(console.log("🚀 Starting SSE stream reading...");;){if(f?.signal.aborted)throw d.cancel(),new DOMException("Request aborted","AbortError");const{done:$,value:b}=await d.read();if($)break;const A=j.decode(b).split(`
|
|
2
|
-
`);for(const g of A)if(g.startsWith("data: "))try{const c=g.slice(6);console.log("🔄 Raw SSE data:",c.length>200?c.substring(0,200)+"...":c);const l=JSON.parse(c);console.log("🔄 Parsed SSE event:",{type:l.type,subtype:l.subtype,hasMessage:!!l.message,messageContentBlocks:l.message?.content?.length||0}),E?.(l)}catch(c){console.error("❌ Failed to parse SSE data:",g,"Error:",c)}else g.trim()&&console.log("🔄 Non-data SSE line:",g)}}catch(a){throw console.error("Agent SSE error:",a),F?.(a),a}}}),U=()=>w({mutationFn:async({agentId:s,projectName:e,parentDirectory:t})=>{const n=await i(`${o}/agents/projects/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:s,projectName:e,parentDirectory:t})});if(!n.ok){const r=await n.json();throw new Error(r.error||"Failed to create project")}return n.json()}}),v=s=>h({queryKey:["agent-projects",s],queryFn:async()=>{const e=await i(`${o}/projects/agents/${s}`);if(!e.ok)throw new Error("Failed to fetch agent projects");return e.json()},enabled:!!s}),J=()=>w({mutationFn:async s=>{const e=await i(`${o}/agents/sessions/${s}/interrupt`,{method:"POST"});if(!e.ok){const t=await e.json();throw new Error(t.error||"Failed to interrupt session")}return e.json()}});export{R as a,x as b,P as c,J as d,N as e,D as f,M as g,C as h,U as i,v as j,O as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as l,e as i,h as u,A as o}from"./agents-ClAzIJTw.js";import{a}from"./authFetch-BATQyPG5.js";import{u as y}from"./index-B_CTNvca.js";import{r as d}from"./monaco-editor-C7Z4sOhS.js";const w=t=>{const{currentServiceId:r}=y();d.useRef(!1);const e=!1,s=!0,n=l({queryKey:["claude-versions",r],queryFn:async()=>{const c=await a(`${o}/settings/claude-versions`);if(!c.ok)throw new Error("Failed to fetch Claude versions");return c.json()},enabled:s,retry:!1,refetchOnWindowFocus:!1,refetchOnReconnect:!1,staleTime:3e4});return d.useEffect(()=>{},[n.isError,n.isLoading,r,s,e]),n},h=()=>{const t=i();return u({mutationFn:async r=>{const e=await a(`${o}/settings/claude-versions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!e.ok){const s=await e.json();throw new Error(s.message||"Failed to create Claude version")}return e.json()},onSuccess:()=>{t.invalidateQueries({queryKey:["claude-versions"]})}})},C=()=>{const t=i();return u({mutationFn:async({id:r,data:e})=>{const s=await a(`${o}/settings/claude-versions/${r}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!s.ok){const n=await s.json();throw new Error(n.message||"Failed to update Claude version")}return s.json()},onSuccess:()=>{t.invalidateQueries({queryKey:["claude-versions"]})}})},g=()=>{const t=i();return u({mutationFn:async r=>{const e=await a(`${o}/settings/claude-versions/${r}`,{method:"DELETE"});if(!e.ok){const s=await e.json();throw new Error(s.message||"Failed to delete Claude version")}},onSuccess:()=>{t.invalidateQueries({queryKey:["claude-versions"]})}})},E=()=>{const t=i();return u({mutationFn:async r=>{const e=await a(`${o}/settings/claude-versions/${r}/set-default`,{method:"PUT"});if(!e.ok){const s=await e.json();throw new Error(s.message||"Failed to set default Claude version")}},onSuccess:()=>{t.invalidateQueries({queryKey:["claude-versions"]})}})};export{h as a,C as b,g as c,E as d,w as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as h,e as p,h as d,A as r,i as w}from"./agents-ClAzIJTw.js";import{a as s}from"./authFetch-BATQyPG5.js";const y=async(e={})=>{try{const o=new URLSearchParams;e.scope&&e.scope!=="all"&&o.append("scope",e.scope),e.namespace&&o.append("namespace",e.namespace),e.search&&o.append("search",e.search);const t=await s(`${r}/commands?${o}`);if(!t.ok)throw new Error("Failed to fetch commands");return t.json()}catch(o){if(w(o))return[];throw o}},f=async e=>{const o=await s(`${r}/commands`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!o.ok){const t=await o.json();throw new Error(t.error||"Failed to create command")}return o.json()},l=async(e,o)=>{const t=await s(`${r}/commands/${encodeURIComponent(e)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!t.ok){const a=await t.json();throw new Error(a.error||"Failed to update command")}return t.json()},C=async e=>{const o=await s(`${r}/commands/${encodeURIComponent(e)}`,{method:"DELETE"});if(!o.ok){const t=await o.json();throw new Error(t.error||"Failed to delete command")}},D=e=>h({queryKey:["commands",e],queryFn:()=>y(e),staleTime:1e3*60*5,retry:!1}),U=()=>{const e=p();return d({mutationFn:f,onSuccess:()=>{e.invalidateQueries({queryKey:["commands"]})}})},R=()=>{const e=p();return d({mutationFn:({id:o,updates:t})=>l(o,t),onSuccess:o=>{e.invalidateQueries({queryKey:["commands"]}),e.setQueryData(["commands",o.id],o)}})},k=()=>{const e=p();return d({mutationFn:C,onSuccess:(o,t)=>{e.invalidateQueries({queryKey:["commands"]}),e.removeQueries({queryKey:["commands",t]})}})},P=async(e,o={})=>{if(!e)return[];let t;if(e.startsWith("/"))t=e;else{const m=await s(`${r}/projects`);if(!m.ok)throw new Error("Failed to fetch project info");const n=(await m.json()).projects.find(u=>u.id===e);if(!n)throw new Error("Project not found");t=n.path}const a=new URLSearchParams;a.append("scope","project"),a.append("projectPath",t),o.namespace&&a.append("namespace",o.namespace),o.search&&a.append("search",o.search);const c=await s(`${r}/commands?${a}`);if(!c.ok)throw new Error("Failed to fetch project commands");return c.json()},Q=e=>h({queryKey:["commands","project",e.projectId,e.search],queryFn:()=>P(e.projectId,{search:e.search}),staleTime:1e3*60*5}),E=async(e,o)=>{const t=await s(`${r}/agents/projects`);if(!t.ok)throw new Error("Failed to fetch project info");const c=(await t.json()).projects.find(n=>n.id===e);if(!c)throw new Error("Project not found");const m=new URLSearchParams;m.append("projectPath",c.path);const i=await s(`${r}/commands?${m}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!i.ok){const n=await i.json();throw new Error(n.error||"Failed to create command")}return i.json()},F=async(e,o)=>{const t=await s(`${r}/agents/projects`);if(!t.ok)throw new Error("Failed to fetch project info");const c=(await t.json()).projects.find(j=>j.id===e);if(!c)throw new Error("Project not found");const{id:m,updates:i}=o,n=new URLSearchParams;n.append("projectPath",c.path);const u=await s(`${r}/commands/${encodeURIComponent(m)}?${n}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!u.ok){const j=await u.json();throw new Error(j.error||"Failed to update command")}return u.json()},$=async(e,o)=>{const t=await s(`${r}/agents/projects`);if(!t.ok)throw new Error("Failed to fetch project info");const c=(await t.json()).projects.find(n=>n.id===e);if(!c)throw new Error("Project not found");const m=new URLSearchParams;m.append("projectPath",c.path);const i=await s(`${r}/commands/${encodeURIComponent(o)}?${m}`,{method:"DELETE"});if(!i.ok){const n=await i.json();throw new Error(n.error||"Failed to delete command")}},T=e=>{const o=p();return d({mutationFn:t=>E(e,t),onSuccess:()=>{o.invalidateQueries({queryKey:["commands","project",e]})}})},K=e=>{const o=p();return d({mutationFn:t=>F(e,t),onSuccess:t=>{o.invalidateQueries({queryKey:["commands","project",e]}),o.setQueryData(["commands",t.id],t)}})},v=e=>{const o=p();return d({mutationFn:t=>$(e,t),onSuccess:(t,a)=>{o.invalidateQueries({queryKey:["commands","project",e]}),o.removeQueries({queryKey:["commands",a]})}})};export{Q as a,v as b,k as c,T as d,U as e,K as f,R as g,D as u};
|
package/backend/dist/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,QAAA,MAAM,GAAG,6CAAY,CAAC;AA4ItB,eAAe,GAAG,CAAC"}
|
package/backend/dist/index.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import cors from 'cors';
|
|
3
|
-
import helmet from 'helmet';
|
|
4
|
-
import dotenv from 'dotenv';
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
import { dirname, join } from 'path';
|
|
7
|
-
import filesRouter from './routes/files.js';
|
|
8
|
-
import agentsRouter from './routes/agents.js';
|
|
9
|
-
import mcpRouter from './routes/mcp.js';
|
|
10
|
-
import sessionsRouter from './routes/sessions.js';
|
|
11
|
-
import mediaRouter from './routes/media.js';
|
|
12
|
-
import settingsRouter from './routes/settings.js';
|
|
13
|
-
import commandsRouter from './routes/commands.js';
|
|
14
|
-
import subagentsRouter from './routes/subagents.js';
|
|
15
|
-
import projectsRouter from './routes/projects.js';
|
|
16
|
-
import authRouter from './routes/auth.js';
|
|
17
|
-
import { authMiddleware } from './middleware/auth.js';
|
|
18
|
-
dotenv.config();
|
|
19
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
-
const __dirname = dirname(__filename);
|
|
21
|
-
const app = express();
|
|
22
|
-
const PORT = process.env.PORT || 4936;
|
|
23
|
-
// Middleware
|
|
24
|
-
app.use(helmet({
|
|
25
|
-
contentSecurityPolicy: {
|
|
26
|
-
directives: {
|
|
27
|
-
defaultSrc: ["'self'"],
|
|
28
|
-
scriptSrc: ["'self'", "'unsafe-inline'"],
|
|
29
|
-
styleSrc: ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com", "https://cdn.jsdelivr.net"],
|
|
30
|
-
fontSrc: ["'self'", "https://fonts.gstatic.com", "https://cdn.jsdelivr.net"],
|
|
31
|
-
imgSrc: ["'self'", "data:", "https:"],
|
|
32
|
-
connectSrc: ["'self'", "ws:", "wss:"],
|
|
33
|
-
frameAncestors: ["'self'", "http://localhost:3000", "https://localhost:3000", "http://localhost:3001"] // Allow iframe embedding
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
// Disable problematic headers for non-HTTPS access
|
|
37
|
-
crossOriginOpenerPolicy: false,
|
|
38
|
-
originAgentCluster: false
|
|
39
|
-
}));
|
|
40
|
-
// Configure CORS origins
|
|
41
|
-
const getAllowedOrigins = () => {
|
|
42
|
-
const defaultOrigins = [
|
|
43
|
-
'http://localhost:3000',
|
|
44
|
-
'http://127.0.0.1:3000',
|
|
45
|
-
'http://localhost:3001',
|
|
46
|
-
'https://localhost:3000',
|
|
47
|
-
'https://localhost:3001'
|
|
48
|
-
];
|
|
49
|
-
// Add custom origins from environment variable
|
|
50
|
-
const customOrigins = process.env.CORS_ORIGINS ?
|
|
51
|
-
process.env.CORS_ORIGINS.split(',').map(origin => origin.trim()) : [];
|
|
52
|
-
return [...defaultOrigins, ...customOrigins];
|
|
53
|
-
};
|
|
54
|
-
app.use(cors({
|
|
55
|
-
origin: (origin, callback) => {
|
|
56
|
-
const allowedOrigins = getAllowedOrigins();
|
|
57
|
-
// Allow requests with no origin (like mobile apps or curl requests)
|
|
58
|
-
if (!origin)
|
|
59
|
-
return callback(null, true);
|
|
60
|
-
// Check if the origin is allowed
|
|
61
|
-
if (allowedOrigins.includes(origin)) {
|
|
62
|
-
return callback(null, true);
|
|
63
|
-
}
|
|
64
|
-
// Allow Vercel preview URLs (*.vercel.app)
|
|
65
|
-
if (origin.endsWith('.vercel.app')) {
|
|
66
|
-
return callback(null, true);
|
|
67
|
-
}
|
|
68
|
-
// Allow agentstudio.cc and its subdomains (*.agentstudio.cc) - hardcoded
|
|
69
|
-
if (origin === 'https://agentstudio.cc' || origin.endsWith('.agentstudio.cc')) {
|
|
70
|
-
return callback(null, true);
|
|
71
|
-
}
|
|
72
|
-
// Allow custom domains from environment variable (CORS_ALLOWED_DOMAINS)
|
|
73
|
-
const customDomains = process.env.CORS_ALLOWED_DOMAINS ?
|
|
74
|
-
process.env.CORS_ALLOWED_DOMAINS.split(',').map(domain => domain.trim()) : [];
|
|
75
|
-
for (const domain of customDomains) {
|
|
76
|
-
// Match exact domain (https://example.com)
|
|
77
|
-
if (origin === `https://${domain}` || origin === `http://${domain}`) {
|
|
78
|
-
return callback(null, true);
|
|
79
|
-
}
|
|
80
|
-
// Match subdomains (https://*.example.com)
|
|
81
|
-
if (origin.endsWith(`.${domain}`)) {
|
|
82
|
-
return callback(null, true);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// Allow any localhost with any port for development
|
|
86
|
-
if (origin.match(/^https?:\/\/localhost(:\d+)?$/)) {
|
|
87
|
-
return callback(null, true);
|
|
88
|
-
}
|
|
89
|
-
// Allow 127.0.0.1 with any port for development
|
|
90
|
-
if (origin.match(/^https?:\/\/127\.0\.0\.1(:\d+)?$/)) {
|
|
91
|
-
return callback(null, true);
|
|
92
|
-
}
|
|
93
|
-
const msg = `The CORS policy for this site does not allow access from the specified Origin: ${origin}`;
|
|
94
|
-
return callback(new Error(msg), false);
|
|
95
|
-
},
|
|
96
|
-
credentials: true,
|
|
97
|
-
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],
|
|
98
|
-
allowedHeaders: ['Content-Type', 'Authorization', 'Cache-Control', 'X-Requested-With'],
|
|
99
|
-
exposedHeaders: ['Content-Range', 'X-Content-Range']
|
|
100
|
-
}));
|
|
101
|
-
app.use(express.json({ limit: '10mb' }));
|
|
102
|
-
app.use(express.urlencoded({ extended: true, limit: '10mb' }));
|
|
103
|
-
// Static files - serve slides directory
|
|
104
|
-
const slidesDir = join(__dirname, '../..', process.env.SLIDES_DIR || 'slides');
|
|
105
|
-
app.use('/slides', express.static(slidesDir));
|
|
106
|
-
|
|
107
|
-
// Serve frontend static files
|
|
108
|
-
const frontendDir = join(__dirname, 'frontend');
|
|
109
|
-
app.use(express.static(frontendDir, {
|
|
110
|
-
index: 'index.html'
|
|
111
|
-
}));
|
|
112
|
-
|
|
113
|
-
// SPA fallback - serve index.html for all non-API routes
|
|
114
|
-
app.get('*', (req, res, next) => {
|
|
115
|
-
// Skip API routes and static assets
|
|
116
|
-
if (req.path.startsWith('/api') || req.path.startsWith('/slides') || req.path.includes('.')) {
|
|
117
|
-
return next();
|
|
118
|
-
}
|
|
119
|
-
res.sendFile(path.join(frontendDir, 'index.html'));
|
|
120
|
-
});
|
|
121
|
-
// Routes - Public routes
|
|
122
|
-
app.use('/api/auth', authRouter);
|
|
123
|
-
// Protected routes - Require authentication
|
|
124
|
-
app.use('/api/files', authMiddleware, filesRouter);
|
|
125
|
-
app.use('/api/agents', authMiddleware, agentsRouter);
|
|
126
|
-
app.use('/api/mcp', authMiddleware, mcpRouter);
|
|
127
|
-
app.use('/api/sessions', authMiddleware, sessionsRouter);
|
|
128
|
-
app.use('/api/settings', authMiddleware, settingsRouter);
|
|
129
|
-
app.use('/api/commands', authMiddleware, commandsRouter);
|
|
130
|
-
app.use('/api/subagents', authMiddleware, subagentsRouter);
|
|
131
|
-
app.use('/api/projects', authMiddleware, projectsRouter);
|
|
132
|
-
app.use('/media', authMiddleware, mediaRouter);
|
|
133
|
-
// Health check
|
|
134
|
-
app.get('/api/health', (req, res) => {
|
|
135
|
-
res.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
136
|
-
});
|
|
137
|
-
// Error handling
|
|
138
|
-
app.use((err, req, res, next) => {
|
|
139
|
-
console.error('Error:', err);
|
|
140
|
-
res.status(500).json({
|
|
141
|
-
error: 'Internal server error',
|
|
142
|
-
message: process.env.NODE_ENV === 'development' ? err.message : 'Something went wrong'
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
// 404 handler
|
|
146
|
-
app.use('*', (req, res) => {
|
|
147
|
-
res.status(404).json({ error: 'Route not found' });
|
|
148
|
-
});
|
|
149
|
-
// Check if this file is being run directly
|
|
150
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
151
|
-
app.listen(PORT, () => {
|
|
152
|
-
console.log(`AI PPT Editor backend running on http://localhost:${PORT}`);
|
|
153
|
-
console.log(`Serving slides from: ${slidesDir}`);
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
export default app;
|
|
157
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAkBpF"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { verifyToken } from '../utils/jwt.js';
|
|
2
|
-
/**
|
|
3
|
-
* Middleware to authenticate requests using JWT token
|
|
4
|
-
* Expects token in Authorization header as "Bearer <token>"
|
|
5
|
-
*/
|
|
6
|
-
export function authMiddleware(req, res, next) {
|
|
7
|
-
const authHeader = req.headers.authorization;
|
|
8
|
-
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
9
|
-
res.status(401).json({ error: 'Unauthorized: No token provided' });
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
const token = authHeader.substring(7); // Remove "Bearer " prefix
|
|
13
|
-
const payload = verifyToken(token);
|
|
14
|
-
if (!payload) {
|
|
15
|
-
res.status(401).json({ error: 'Unauthorized: Invalid or expired token' });
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
// Token is valid, proceed to next middleware
|
|
19
|
-
next();
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IAE7C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;IACjE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,6CAA6C;IAC7C,IAAI,EAAE,CAAC;AACT,CAAC"}
|