agentstudio 0.3.3 → 0.4.0
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/bin/agentstudio.js +44 -4
- package/bin/agentstudio.js.map +1 -1
- package/bin/serviceManager.d.ts.map +1 -1
- package/bin/serviceManager.js +312 -28
- package/bin/serviceManager.js.map +1 -1
- package/config/engineConfig.d.ts +96 -0
- package/config/engineConfig.d.ts.map +1 -0
- package/config/engineConfig.js +429 -0
- package/config/engineConfig.js.map +1 -0
- package/engines/claude/__tests__/supportedModels.test.d.ts +10 -0
- package/engines/claude/__tests__/supportedModels.test.d.ts.map +1 -0
- package/engines/claude/__tests__/supportedModels.test.js +89 -0
- package/engines/claude/__tests__/supportedModels.test.js.map +1 -0
- package/engines/claude/aguiAdapter.d.ts +101 -0
- package/engines/claude/aguiAdapter.d.ts.map +1 -0
- package/engines/claude/aguiAdapter.js +382 -0
- package/engines/claude/aguiAdapter.js.map +1 -0
- package/engines/claude/claudeEngine.d.ts +42 -0
- package/engines/claude/claudeEngine.d.ts.map +1 -0
- package/engines/claude/claudeEngine.js +325 -0
- package/engines/claude/claudeEngine.js.map +1 -0
- package/engines/claude/index.d.ts +8 -0
- package/engines/claude/index.d.ts.map +1 -0
- package/engines/claude/index.js +14 -0
- package/engines/claude/index.js.map +1 -0
- package/engines/cursor/__tests__/a2aAdapter.test.d.ts +6 -0
- package/engines/cursor/__tests__/a2aAdapter.test.d.ts.map +1 -0
- package/engines/cursor/__tests__/a2aAdapter.test.js +376 -0
- package/engines/cursor/__tests__/a2aAdapter.test.js.map +1 -0
- package/engines/cursor/a2aAdapter.d.ts +180 -0
- package/engines/cursor/a2aAdapter.d.ts.map +1 -0
- package/engines/cursor/a2aAdapter.js +405 -0
- package/engines/cursor/a2aAdapter.js.map +1 -0
- package/engines/cursor/aguiAdapter.d.ts +97 -0
- package/engines/cursor/aguiAdapter.d.ts.map +1 -0
- package/engines/cursor/aguiAdapter.js +507 -0
- package/engines/cursor/aguiAdapter.js.map +1 -0
- package/engines/cursor/cursorEngine.d.ts +68 -0
- package/engines/cursor/cursorEngine.d.ts.map +1 -0
- package/engines/cursor/cursorEngine.js +465 -0
- package/engines/cursor/cursorEngine.js.map +1 -0
- package/engines/cursor/index.d.ts +11 -0
- package/engines/cursor/index.d.ts.map +1 -0
- package/engines/cursor/index.js +21 -0
- package/engines/cursor/index.js.map +1 -0
- package/engines/engineManager.d.ts +80 -0
- package/engines/engineManager.d.ts.map +1 -0
- package/engines/engineManager.js +137 -0
- package/engines/engineManager.js.map +1 -0
- package/engines/index.d.ts +26 -0
- package/engines/index.d.ts.map +1 -0
- package/engines/index.js +81 -0
- package/engines/index.js.map +1 -0
- package/engines/types.d.ts +319 -0
- package/engines/types.d.ts.map +1 -0
- package/engines/types.js +69 -0
- package/engines/types.js.map +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +178 -25
- package/index.js.map +1 -1
- package/middleware/auth.d.ts.map +1 -1
- package/middleware/auth.js +4 -0
- package/middleware/auth.js.map +1 -1
- package/package.json +7 -1
- package/public/assets/AgentsPage-D462iGRy.js +10 -0
- package/public/assets/{Button-BoiVlafj.js → Button-B_6lGF64.js} +1 -1
- package/public/assets/ChatPage-NjuRQPaL.js +478 -0
- package/public/assets/{CommandForm-Se4iemMp.js → CommandForm-DwGvE9A_.js} +1 -1
- package/public/assets/CommandsPage-DeUS8fhJ.js +1 -0
- package/public/assets/CursorConfigPage-Bl1Blrbr.js +1 -0
- package/public/assets/{DashboardPage-DbCVzPKz.js → DashboardPage-DH-2iuqf.js} +1 -1
- package/public/assets/EngineGate-DxTYx9wb.js +1 -0
- package/public/assets/{FileBrowser-DcoBWzKK.js → FileBrowser-CeGsJnUL.js} +5 -5
- package/public/assets/{FileExplorer-B41BB0LM.js → FileExplorer-x5R0Tcmk.js} +1 -1
- package/public/assets/GeneralSettingsPage-lhNEJQD_.js +1 -0
- package/public/assets/HooksPage-9fingjdz.js +1 -0
- package/public/assets/LandingPage-BAzi8PDo.js +1 -0
- package/public/assets/LoginPage-kQ_NWy8p.js +16 -0
- package/public/assets/McpAdminSettingsPage-DQHpWHRC.js +7 -0
- package/public/assets/McpPage-DLHfmhSJ.js +20 -0
- package/public/assets/{MemorySettingsPage-DYSuz-hU.js → MemorySettingsPage-CRIPja9X.js} +1 -1
- package/public/assets/ModelsPage-Bb5vSsuc.js +1 -0
- package/public/assets/PluginsPage-BhKM7gV7.js +12 -0
- package/public/assets/ProjectSelector-Cbct6pnn.js +1 -0
- package/public/assets/ProjectsPage-lQo7-7dt.js +21 -0
- package/public/assets/RulesPage-BRnB7__3.js +1 -0
- package/public/assets/ScheduledTasksPage-CZiABTSb.js +1 -0
- package/public/assets/SettingsLayout-BfG7ftoT.js +1 -0
- package/public/assets/SkillsPage-CL6MKxQ9.js +18 -0
- package/public/assets/{SubagentForm-C0R084ja.js → SubagentForm-BzzeWg0W.js} +2 -2
- package/public/assets/{SubagentsPage-BKFNmqxg.js → SubagentsPage-DhFP2kDE.js} +1 -1
- package/public/assets/SystemInfoPage-CFHUN3j8.js +1 -0
- package/public/assets/{TelemetrySettingsPage-Ck2btMol.js → TelemetrySettingsPage-BcZFVBXN.js} +1 -1
- package/public/assets/{ToastTestPage-B79DFhqI.js → ToastTestPage-BtGnZdyk.js} +1 -1
- package/public/assets/{ToolsList-Kfxwp80g.js → ToolsList-CTsQr53G.js} +1 -1
- package/public/assets/{UnifiedToolSelector-CkafUbz3.js → UnifiedToolSelector-BP6fuyzG.js} +1 -1
- package/public/assets/VersionSettingsPage-DjOjyL3X.js +5 -0
- package/public/assets/VoiceSettingsPage-d3l9AWBn.js +1 -0
- package/public/assets/WebSocketTunnelPage-CfHtJR9r.js +1 -0
- package/public/assets/_basePickBy-Bac3af5O.js +1 -0
- package/public/assets/{_baseUniq-COj5YnAO.js → _baseUniq-Dvh9sZ-T.js} +1 -1
- package/public/assets/{agents-3mB536QF.js → agents-KlPdWQ8K.js} +1 -1
- package/public/assets/arc-CRR5EPpK.js +1 -0
- package/public/assets/{architectureDiagram-VXUJARFQ-DD1BwT1T.js → architectureDiagram-VXUJARFQ-Ct1p8kmV.js} +1 -1
- package/public/assets/{blockDiagram-VD42YOAC-DFKUIZc6.js → blockDiagram-VD42YOAC-CX_8YiYn.js} +1 -1
- package/public/assets/{c4Diagram-YG6GDRKO-B0VVIIvh.js → c4Diagram-YG6GDRKO-BIBVWIY4.js} +1 -1
- package/public/assets/channel-CPs-2Y_m.js +1 -0
- package/public/assets/{chunk-4BX2VUAB-DM8J7YO9.js → chunk-4BX2VUAB-CQNNXsb5.js} +1 -1
- package/public/assets/{chunk-55IACEB6-BjhdmGlM.js → chunk-55IACEB6-N_ZrGhOu.js} +1 -1
- package/public/assets/{chunk-B4BG7PRW-1RJ6n2xv.js → chunk-B4BG7PRW-CI6DkhbM.js} +1 -1
- package/public/assets/{chunk-DI55MBZ5-1-EHSO67.js → chunk-DI55MBZ5-Dgj-Eo9U.js} +1 -1
- package/public/assets/{chunk-FMBD7UC4-DV3SMJK_.js → chunk-FMBD7UC4-o4B0HzSK.js} +1 -1
- package/public/assets/{chunk-QN33PNHL-IlsCTdDq.js → chunk-QN33PNHL-DXlfdPIk.js} +1 -1
- package/public/assets/{chunk-QZHKN3VN-DJXs-Fqo.js → chunk-QZHKN3VN-ZCBUGD7e.js} +1 -1
- package/public/assets/{chunk-TZMSLE5B-BxHO9wa1.js → chunk-TZMSLE5B-N3lZ106d.js} +1 -1
- package/public/assets/classDiagram-2ON5EDUG-DCwNRxvC.js +1 -0
- package/public/assets/classDiagram-v2-WZHVMYZB-DCwNRxvC.js +1 -0
- package/public/assets/clone-C3DcKvhB.js +1 -0
- package/public/assets/{cose-bilkent-S5V4N54A-BVJXoW_K.js → cose-bilkent-S5V4N54A-Crc39J9q.js} +1 -1
- package/public/assets/{dagre-6UL2VRFP-DHDnVshA.js → dagre-6UL2VRFP-nC3WLCf7.js} +1 -1
- package/public/assets/{diagram-PSM6KHXK-40qGxDeg.js → diagram-PSM6KHXK-B5DQIDQ3.js} +1 -1
- package/public/assets/diagram-QEK2KX5R-BccDOQuz.js +43 -0
- package/public/assets/{diagram-S2PKOQOG-D7AX72a5.js → diagram-S2PKOQOG-D-Cv16WE.js} +1 -1
- package/public/assets/{erDiagram-Q2GNP2WA-BHsgeBpL.js → erDiagram-Q2GNP2WA-Dr0ZgvnS.js} +1 -1
- package/public/assets/{flowDiagram-NV44I4VS-BYqChOSE.js → flowDiagram-NV44I4VS-DGbbfVi5.js} +1 -1
- package/public/assets/{ganttDiagram-LVOFAZNH-CZFFSLKX.js → ganttDiagram-LVOFAZNH-C-3Wnf96.js} +1 -1
- package/public/assets/{gitGraphDiagram-NY62KEGX-C5Bgrf0J.js → gitGraphDiagram-NY62KEGX--Q8whT5z.js} +1 -1
- package/public/assets/{graph-BP5lFRBg.js → graph-CO1DMS2E.js} +1 -1
- package/public/assets/{index-BEPv9Bqe.js → index-B5hSSnK3.js} +58 -58
- package/public/assets/index-gbHlIp96.css +1 -0
- package/public/assets/infoDiagram-F6ZHWCRC-DSR9cM2B.js +2 -0
- package/public/assets/{journeyDiagram-XKPGCS4Q--abC1RHz.js → journeyDiagram-XKPGCS4Q-Cc00zHNt.js} +1 -1
- package/public/assets/{kanban-definition-3W4ZIXB7-BJeChfWu.js → kanban-definition-3W4ZIXB7-BF_gHshF.js} +6 -6
- package/public/assets/{layout-DjAix4WK.js → layout-BxoLV88o.js} +1 -1
- package/public/assets/{linear-Cw0z8VNY.js → linear-Y8e2e012.js} +1 -1
- package/public/assets/{mindmap-definition-VGOIOE7T-U_T9xIUk.js → mindmap-definition-VGOIOE7T-CzpuQA4p.js} +1 -1
- package/public/assets/{pieDiagram-ADFJNKIX-B0mT9OgH.js → pieDiagram-ADFJNKIX-B22MhIcy.js} +2 -2
- package/public/assets/{quadrantDiagram-AYHSOK5B-BWdlgO0u.js → quadrantDiagram-AYHSOK5B-CTT9bIA8.js} +1 -1
- package/public/assets/{requirementDiagram-UZGBJVZJ-B-8LxsGB.js → requirementDiagram-UZGBJVZJ-B_vjXDH9.js} +1 -1
- package/public/assets/{sankeyDiagram-TZEHDZUN-OXuxkgGA.js → sankeyDiagram-TZEHDZUN-CKfZ4633.js} +1 -1
- package/public/assets/{sequenceDiagram-WL72ISMW-Bt5twlzi.js → sequenceDiagram-WL72ISMW-BmTPN6j6.js} +1 -1
- package/public/assets/{stateDiagram-FKZM4ZOC-Dmph7TeW.js → stateDiagram-FKZM4ZOC-y2fQE1C7.js} +1 -1
- package/public/assets/stateDiagram-v2-4FDKWEC3-C4CM6z52.js +1 -0
- package/public/assets/{table-DjMdAdjH.js → table-BJUz-ck5.js} +1 -1
- package/public/assets/{timeline-definition-IT6M3QCI-CcV8nyIH.js → timeline-definition-IT6M3QCI-DsXlR68n.js} +1 -1
- package/public/assets/{tools-BAI9XHGS.js → tools-BZTR2NP1.js} +1 -1
- package/public/assets/{treemap-KMMF4GRG-DBuwkj4f.js → treemap-KMMF4GRG-Cecs9uxX.js} +1 -1
- package/public/assets/{ui-components-DaGtjl0g.js → ui-components-DjgDPiqV.js} +153 -128
- package/public/assets/useAgents-8KXN6U61.js +2 -0
- package/public/assets/{useClaudeVersions-Cy71v4HE.js → useClaudeVersions-DicHLV6A.js} +1 -1
- package/public/assets/useCommands-DbSH48ba.js +1 -0
- package/public/assets/{useProjects-XgfgISgV.js → useProjects-Bbh6hJMM.js} +1 -1
- package/public/assets/{useSessions-CQgq4d84.js → useSessions-DOa4-xiB.js} +1 -1
- package/public/assets/{xychartDiagram-PRI3JC2R-Bo9K-U2S.js → xychartDiagram-PRI3JC2R-C2IWhyM7.js} +1 -1
- package/public/index.html +5 -5
- package/routes/a2a.d.ts +7 -0
- package/routes/a2a.d.ts.map +1 -1
- package/routes/a2a.js +193 -21
- package/routes/a2a.js.map +1 -1
- package/routes/agents.d.ts.map +1 -1
- package/routes/agents.js +45 -2
- package/routes/agents.js.map +1 -1
- package/routes/agui.d.ts +16 -0
- package/routes/agui.d.ts.map +1 -0
- package/routes/agui.js +520 -0
- package/routes/agui.js.map +1 -0
- package/routes/commands.d.ts.map +1 -1
- package/routes/commands.js +35 -3
- package/routes/commands.js.map +1 -1
- package/routes/cursorA2a.d.ts +18 -0
- package/routes/cursorA2a.d.ts.map +1 -0
- package/routes/cursorA2a.js +393 -0
- package/routes/cursorA2a.js.map +1 -0
- package/routes/engine.d.ts +12 -0
- package/routes/engine.d.ts.map +1 -0
- package/routes/engine.js +178 -0
- package/routes/engine.js.map +1 -0
- package/routes/gitVersions.d.ts +10 -0
- package/routes/gitVersions.d.ts.map +1 -0
- package/routes/gitVersions.js +147 -0
- package/routes/gitVersions.js.map +1 -0
- package/routes/hooks.d.ts +11 -0
- package/routes/hooks.d.ts.map +1 -0
- package/routes/hooks.js +303 -0
- package/routes/hooks.js.map +1 -0
- package/routes/mcp.d.ts.map +1 -1
- package/routes/mcp.js +28 -3
- package/routes/mcp.js.map +1 -1
- package/routes/plugins.d.ts.map +1 -1
- package/routes/plugins.js +317 -4
- package/routes/plugins.js.map +1 -1
- package/routes/rules.d.ts +9 -0
- package/routes/rules.d.ts.map +1 -0
- package/routes/rules.js +470 -0
- package/routes/rules.js.map +1 -0
- package/routes/sessions.d.ts.map +1 -1
- package/routes/sessions.js +68 -32
- package/routes/sessions.js.map +1 -1
- package/routes/speechToText.d.ts +8 -0
- package/routes/speechToText.d.ts.map +1 -0
- package/routes/speechToText.js +216 -0
- package/routes/speechToText.js.map +1 -0
- package/schemas/a2a.d.ts +2 -2
- package/services/__tests__/agentImporter.test.d.ts +5 -0
- package/services/__tests__/agentImporter.test.d.ts.map +1 -0
- package/services/__tests__/agentImporter.test.js +379 -0
- package/services/__tests__/agentImporter.test.js.map +1 -0
- package/services/__tests__/marketplaceUpdateService.test.d.ts +5 -0
- package/services/__tests__/marketplaceUpdateService.test.d.ts.map +1 -0
- package/services/__tests__/marketplaceUpdateService.test.js +227 -0
- package/services/__tests__/marketplaceUpdateService.test.js.map +1 -0
- package/services/__tests__/pluginInstaller.test.js +172 -0
- package/services/__tests__/pluginInstaller.test.js.map +1 -1
- package/services/__tests__/projectMetadataStorage.test.js +19 -4
- package/services/__tests__/projectMetadataStorage.test.js.map +1 -1
- package/services/a2a/__tests__/agentCardService.test.js +224 -0
- package/services/a2a/__tests__/agentCardService.test.js.map +1 -1
- package/services/a2a/__tests__/cursorA2aService.test.d.ts +6 -0
- package/services/a2a/__tests__/cursorA2aService.test.d.ts.map +1 -0
- package/services/a2a/__tests__/cursorA2aService.test.js +359 -0
- package/services/a2a/__tests__/cursorA2aService.test.js.map +1 -0
- package/services/a2a/agentCardService.d.ts +22 -0
- package/services/a2a/agentCardService.d.ts.map +1 -1
- package/services/a2a/agentCardService.js +246 -0
- package/services/a2a/agentCardService.js.map +1 -1
- package/services/a2a/cursorA2aService.d.ts +126 -0
- package/services/a2a/cursorA2aService.d.ts.map +1 -0
- package/services/a2a/cursorA2aService.js +336 -0
- package/services/a2a/cursorA2aService.js.map +1 -0
- package/services/agentImporter.d.ts +62 -0
- package/services/agentImporter.d.ts.map +1 -0
- package/services/agentImporter.js +335 -0
- package/services/agentImporter.js.map +1 -0
- package/services/cursorConfigService.d.ts +75 -0
- package/services/cursorConfigService.d.ts.map +1 -0
- package/services/cursorConfigService.js +538 -0
- package/services/cursorConfigService.js.map +1 -0
- package/services/gitVersionService.d.ts +52 -0
- package/services/gitVersionService.d.ts.map +1 -0
- package/services/gitVersionService.js +377 -0
- package/services/gitVersionService.js.map +1 -0
- package/services/marketplaceUpdateService.d.ts +66 -0
- package/services/marketplaceUpdateService.d.ts.map +1 -0
- package/services/marketplaceUpdateService.js +364 -0
- package/services/marketplaceUpdateService.js.map +1 -0
- package/services/mcpAdmin/__tests__/scheduledTaskTools.test.d.ts +5 -0
- package/services/mcpAdmin/__tests__/scheduledTaskTools.test.d.ts.map +1 -0
- package/services/mcpAdmin/__tests__/scheduledTaskTools.test.js +429 -0
- package/services/mcpAdmin/__tests__/scheduledTaskTools.test.js.map +1 -0
- package/services/mcpAdmin/tools/index.d.ts +1 -0
- package/services/mcpAdmin/tools/index.d.ts.map +1 -1
- package/services/mcpAdmin/tools/index.js +5 -1
- package/services/mcpAdmin/tools/index.js.map +1 -1
- package/services/mcpAdmin/tools/scheduledTaskTools.d.ts +64 -0
- package/services/mcpAdmin/tools/scheduledTaskTools.d.ts.map +1 -0
- package/services/mcpAdmin/tools/scheduledTaskTools.js +1002 -0
- package/services/mcpAdmin/tools/scheduledTaskTools.js.map +1 -0
- package/services/mcpAdmin/types.d.ts +1 -1
- package/services/mcpAdmin/types.d.ts.map +1 -1
- package/services/pluginInstaller.d.ts +55 -1
- package/services/pluginInstaller.d.ts.map +1 -1
- package/services/pluginInstaller.js +437 -13
- package/services/pluginInstaller.js.map +1 -1
- package/services/projectMetadataStorage.d.ts.map +1 -1
- package/services/projectMetadataStorage.js +4 -2
- package/services/projectMetadataStorage.js.map +1 -1
- package/services/sessionEventBus.d.ts +67 -0
- package/services/sessionEventBus.d.ts.map +1 -0
- package/services/sessionEventBus.js +106 -0
- package/services/sessionEventBus.js.map +1 -0
- package/services/sessionManager.d.ts.map +1 -1
- package/services/sessionManager.js +4 -2
- package/services/sessionManager.js.map +1 -1
- package/services/speechToText/__tests__/speechToText.test.d.ts +5 -0
- package/services/speechToText/__tests__/speechToText.test.d.ts.map +1 -0
- package/services/speechToText/__tests__/speechToText.test.js +208 -0
- package/services/speechToText/__tests__/speechToText.test.js.map +1 -0
- package/services/speechToText/index.d.ts +25 -0
- package/services/speechToText/index.d.ts.map +1 -0
- package/services/speechToText/index.js +228 -0
- package/services/speechToText/index.js.map +1 -0
- package/services/speechToText/providers/aliyun.d.ts +22 -0
- package/services/speechToText/providers/aliyun.d.ts.map +1 -0
- package/services/speechToText/providers/aliyun.js +185 -0
- package/services/speechToText/providers/aliyun.js.map +1 -0
- package/services/speechToText/providers/google.d.ts +24 -0
- package/services/speechToText/providers/google.d.ts.map +1 -0
- package/services/speechToText/providers/google.js +205 -0
- package/services/speechToText/providers/google.js.map +1 -0
- package/services/speechToText/providers/openaiCompatible.d.ts +22 -0
- package/services/speechToText/providers/openaiCompatible.d.ts.map +1 -0
- package/services/speechToText/providers/openaiCompatible.js +198 -0
- package/services/speechToText/providers/openaiCompatible.js.map +1 -0
- package/services/speechToText/providers/tencent.d.ts +23 -0
- package/services/speechToText/providers/tencent.d.ts.map +1 -0
- package/services/speechToText/providers/tencent.js +215 -0
- package/services/speechToText/providers/tencent.js.map +1 -0
- package/services/speechToText/types.d.ts +102 -0
- package/services/speechToText/types.d.ts.map +1 -0
- package/services/speechToText/types.js +43 -0
- package/services/speechToText/types.js.map +1 -0
- package/services/taskExecutor/__tests__/mcp-tools-integration.test.d.ts +8 -2
- package/services/taskExecutor/__tests__/mcp-tools-integration.test.d.ts.map +1 -1
- package/services/taskExecutor/__tests__/mcp-tools-integration.test.js +215 -72
- package/services/taskExecutor/__tests__/mcp-tools-integration.test.js.map +1 -1
- package/services/taskExecutor/taskWorker.js +9 -1
- package/services/taskExecutor/taskWorker.js.map +1 -1
- package/services/telemetry.js +1 -1
- package/types/a2a.d.ts +20 -0
- package/types/a2a.d.ts.map +1 -1
- package/types/engine.d.ts +314 -0
- package/types/engine.d.ts.map +1 -0
- package/types/engine.js +14 -0
- package/types/engine.js.map +1 -0
- package/types/hooks.d.ts +45 -0
- package/types/hooks.d.ts.map +1 -0
- package/types/hooks.js +9 -0
- package/types/hooks.js.map +1 -0
- package/types/plugins.d.ts +86 -2
- package/types/plugins.d.ts.map +1 -1
- package/types/plugins.js +1 -0
- package/types/plugins.js.map +1 -1
- package/types/rules.d.ts +51 -0
- package/types/rules.d.ts.map +1 -0
- package/types/rules.js +9 -0
- package/types/rules.js.map +1 -0
- package/utils/__tests__/cursorIdeAgentParser.test.d.ts +7 -0
- package/utils/__tests__/cursorIdeAgentParser.test.d.ts.map +1 -0
- package/utils/__tests__/cursorIdeAgentParser.test.js +289 -0
- package/utils/__tests__/cursorIdeAgentParser.test.js.map +1 -0
- package/utils/claudeUtils.d.ts +3 -1
- package/utils/claudeUtils.d.ts.map +1 -1
- package/utils/claudeUtils.js +26 -12
- package/utils/claudeUtils.js.map +1 -1
- package/utils/cursorCliHistoryParser.d.ts +58 -0
- package/utils/cursorCliHistoryParser.d.ts.map +1 -0
- package/utils/cursorCliHistoryParser.js +664 -0
- package/utils/cursorCliHistoryParser.js.map +1 -0
- package/utils/cursorIdeAgentParser.d.ts +49 -0
- package/utils/cursorIdeAgentParser.d.ts.map +1 -0
- package/utils/cursorIdeAgentParser.js +332 -0
- package/utils/cursorIdeAgentParser.js.map +1 -0
- package/public/assets/AgentsPage-gSnkPp2k.js +0 -10
- package/public/assets/ChatPage-BMrfVkpt.js +0 -471
- package/public/assets/CommandsPage-B6u4IO7L.js +0 -1
- package/public/assets/GeneralSettingsPage-BbEbWJUQ.js +0 -1
- package/public/assets/LandingPage-DFPm2d4Y.js +0 -1
- package/public/assets/LoginPage-D5kZJqhk.js +0 -16
- package/public/assets/McpAdminSettingsPage-D32iUEjH.js +0 -7
- package/public/assets/McpPage-QT4qs391.js +0 -20
- package/public/assets/PluginsPage-BotzuK9f.js +0 -1
- package/public/assets/ProjectSelector-DujNObqr.js +0 -1
- package/public/assets/ProjectsPage-CRWe6HPl.js +0 -21
- package/public/assets/ScheduledTasksPage-Beeurg-w.js +0 -1
- package/public/assets/SettingsLayout-BfkBUyI_.js +0 -1
- package/public/assets/SkillsPage-B59bAr6W.js +0 -18
- package/public/assets/SystemInfoPage-D89s7PjE.js +0 -1
- package/public/assets/VersionSettingsPage-CaB4PH6h.js +0 -5
- package/public/assets/WebSocketTunnelPage-Cbru_-hL.js +0 -1
- package/public/assets/_basePickBy-5fAM04Ra.js +0 -1
- package/public/assets/arc-C2gTU2ZR.js +0 -1
- package/public/assets/channel-DcVTcy-S.js +0 -1
- package/public/assets/classDiagram-2ON5EDUG-BXVT6Q7h.js +0 -1
- package/public/assets/classDiagram-v2-WZHVMYZB-BXVT6Q7h.js +0 -1
- package/public/assets/clone-Bp6orjIq.js +0 -1
- package/public/assets/diagram-QEK2KX5R-BfMGeeRo.js +0 -43
- package/public/assets/index-BgR-BTTw.css +0 -1
- package/public/assets/infoDiagram-F6ZHWCRC-C6OApgqf.js +0 -2
- package/public/assets/stateDiagram-v2-4FDKWEC3-DyE8O3Kx.js +0 -1
- package/public/assets/useAgents-D5EDAc_E.js +0 -2
- package/public/assets/useCommands-BgoCfyuu.js +0 -1
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor Engine Implementation
|
|
4
|
+
*
|
|
5
|
+
* Wraps Cursor CLI and outputs standardized AGUI events.
|
|
6
|
+
* Uses `cursor agent --print --output-format json` command.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.cursorEngine = exports.CursorEngine = void 0;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const uuid_1 = require("uuid");
|
|
13
|
+
const aguiAdapter_js_1 = require("./aguiAdapter.js");
|
|
14
|
+
const sessionUtils_js_1 = require("../../utils/sessionUtils.js");
|
|
15
|
+
// Cache for Cursor models
|
|
16
|
+
let cachedModels = null;
|
|
17
|
+
let modelsCacheTime = 0;
|
|
18
|
+
const MODEL_CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
19
|
+
/**
|
|
20
|
+
* Find cursor command path
|
|
21
|
+
*/
|
|
22
|
+
function findCursorCommand() {
|
|
23
|
+
const possiblePaths = [
|
|
24
|
+
process.env.CURSOR_CLI_PATH,
|
|
25
|
+
`${process.env.HOME}/.local/bin/cursor`, // Cursor Agent CLI default location
|
|
26
|
+
`${process.env.HOME}/.local/bin/agent`, // Direct agent binary
|
|
27
|
+
'/Applications/Cursor.app/Contents/Resources/app/bin/cursor',
|
|
28
|
+
'/usr/local/bin/cursor',
|
|
29
|
+
];
|
|
30
|
+
for (const path of possiblePaths) {
|
|
31
|
+
if (!path)
|
|
32
|
+
continue;
|
|
33
|
+
if ((0, fs_1.existsSync)(path)) {
|
|
34
|
+
console.log(`[CursorEngine] Found cursor at: ${path}`);
|
|
35
|
+
return path;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Try to find in PATH using which
|
|
39
|
+
try {
|
|
40
|
+
const result = (0, child_process_1.execSync)('which agent', { stdio: 'pipe' }).toString().trim();
|
|
41
|
+
if (result) {
|
|
42
|
+
console.log(`[CursorEngine] Found cursor in PATH: ${result}`);
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// cursor not in PATH
|
|
48
|
+
}
|
|
49
|
+
console.warn('[CursorEngine] Cursor command not found, using default "agent"');
|
|
50
|
+
return 'agent';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Cursor Engine - Implements IAgentEngine for Cursor CLI
|
|
54
|
+
*/
|
|
55
|
+
class CursorEngine {
|
|
56
|
+
type = 'cursor';
|
|
57
|
+
capabilities = {
|
|
58
|
+
mcp: {
|
|
59
|
+
supported: false, // Cursor uses its own tool system
|
|
60
|
+
},
|
|
61
|
+
skills: {
|
|
62
|
+
supported: true,
|
|
63
|
+
skillsPath: '.cursor/rules',
|
|
64
|
+
ruleFormat: 'markdown',
|
|
65
|
+
},
|
|
66
|
+
features: {
|
|
67
|
+
multiTurn: true,
|
|
68
|
+
thinking: true, // Depends on model
|
|
69
|
+
vision: true, // Via image URL in message
|
|
70
|
+
streaming: true,
|
|
71
|
+
subagents: false, // Cursor doesn't support Task tool
|
|
72
|
+
codeExecution: true,
|
|
73
|
+
},
|
|
74
|
+
permissionModes: ['bypassPermissions'], // --force only
|
|
75
|
+
ui: {
|
|
76
|
+
showMcpToolSelector: false, // Cursor uses its own tool system
|
|
77
|
+
showImageUpload: true, // Supported via image URL in message
|
|
78
|
+
showPermissionSelector: false, // Only bypassPermissions (--force)
|
|
79
|
+
showProviderSelector: false, // Cursor doesn't need provider selection
|
|
80
|
+
showModelSelector: true, // Models can be fetched via --list-models
|
|
81
|
+
showEnvVars: false, // Not supported
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
activeSessions = new Map();
|
|
85
|
+
/**
|
|
86
|
+
* Get supported models for Cursor engine
|
|
87
|
+
* Fetches from CLI cache or executes `cursor agent --list-models`
|
|
88
|
+
*/
|
|
89
|
+
async getSupportedModels() {
|
|
90
|
+
return this.getSupportedModelsSync();
|
|
91
|
+
}
|
|
92
|
+
getSupportedModelsSync() {
|
|
93
|
+
// Check cache first
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
if (cachedModels && (now - modelsCacheTime) < MODEL_CACHE_TTL) {
|
|
96
|
+
return cachedModels;
|
|
97
|
+
}
|
|
98
|
+
// Try to fetch from CLI
|
|
99
|
+
try {
|
|
100
|
+
const cursorCmd = findCursorCommand();
|
|
101
|
+
const output = (0, child_process_1.execSync)(`${cursorCmd} agent --list-models`, {
|
|
102
|
+
encoding: 'utf8',
|
|
103
|
+
timeout: 10000, // 10 second timeout
|
|
104
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
105
|
+
});
|
|
106
|
+
const models = this.parseModelList(output);
|
|
107
|
+
if (models.length > 0) {
|
|
108
|
+
cachedModels = models;
|
|
109
|
+
modelsCacheTime = now;
|
|
110
|
+
console.log(`[CursorEngine] Fetched ${models.length} models from CLI`);
|
|
111
|
+
return models;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.warn(`[CursorEngine] Failed to fetch models from CLI:`, error);
|
|
116
|
+
}
|
|
117
|
+
// Return cached or fallback models
|
|
118
|
+
if (cachedModels) {
|
|
119
|
+
return cachedModels;
|
|
120
|
+
}
|
|
121
|
+
// Fallback to hardcoded models
|
|
122
|
+
return this.getFallbackModels();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parse model list from CLI output
|
|
126
|
+
*/
|
|
127
|
+
parseModelList(output) {
|
|
128
|
+
const models = [];
|
|
129
|
+
const lines = output.split('\n');
|
|
130
|
+
// Skip header lines until we find model entries
|
|
131
|
+
// Format: "model-id - Model Name" or "model-id - Model Name (default)" or "(current)"
|
|
132
|
+
// Note: Model IDs can contain dots (e.g., gpt-5.2-codex), and (default)/(current) are separated by 2+ spaces
|
|
133
|
+
const modelLineRegex = /^([a-z0-9.-]+)\s+-\s+(.+?)(?:\s{2,}\((default|current)\))?$/i;
|
|
134
|
+
for (const line of lines) {
|
|
135
|
+
const trimmed = line.trim();
|
|
136
|
+
const match = trimmed.match(modelLineRegex);
|
|
137
|
+
if (match) {
|
|
138
|
+
const [, id, name] = match;
|
|
139
|
+
const cleanName = name.trim();
|
|
140
|
+
const isThinking = cleanName.toLowerCase().includes('thinking');
|
|
141
|
+
const isVision = !cleanName.toLowerCase().includes('codex'); // Codex models are typically code-only
|
|
142
|
+
models.push({
|
|
143
|
+
id,
|
|
144
|
+
name: cleanName,
|
|
145
|
+
isVision,
|
|
146
|
+
isThinking,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return models;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Fallback models when CLI is unavailable
|
|
154
|
+
*/
|
|
155
|
+
getFallbackModels() {
|
|
156
|
+
return [
|
|
157
|
+
{ id: 'auto', name: 'Auto', isVision: true },
|
|
158
|
+
{ id: 'sonnet-4.5', name: 'Claude 4.5 Sonnet', isVision: true },
|
|
159
|
+
{ id: 'sonnet-4.5-thinking', name: 'Claude 4.5 Sonnet (Thinking)', isVision: true, isThinking: true },
|
|
160
|
+
{ id: 'opus-4.5', name: 'Claude 4.5 Opus', isVision: true },
|
|
161
|
+
{ id: 'opus-4.5-thinking', name: 'Claude 4.5 Opus (Thinking)', isVision: true, isThinking: true },
|
|
162
|
+
{ id: 'gpt-5.2', name: 'GPT 5.2', isVision: true },
|
|
163
|
+
{ id: 'gemini-3-pro', name: 'Gemini 3 Pro', isVision: true },
|
|
164
|
+
{ id: 'gemini-3-flash', name: 'Gemini 3 Flash', isVision: true },
|
|
165
|
+
];
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Force refresh models from CLI (bypasses cache)
|
|
169
|
+
*/
|
|
170
|
+
async refreshModels() {
|
|
171
|
+
cachedModels = null;
|
|
172
|
+
modelsCacheTime = 0;
|
|
173
|
+
return this.getSupportedModels();
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get active session count
|
|
177
|
+
*/
|
|
178
|
+
getActiveSessionCount() {
|
|
179
|
+
return this.activeSessions.size;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Process images for Cursor CLI
|
|
183
|
+
* Since Cursor CLI doesn't support direct image input via stdin,
|
|
184
|
+
* we save images to a hidden directory and replace placeholders with @path references
|
|
185
|
+
*
|
|
186
|
+
* @param message - Original message with [imageN] placeholders
|
|
187
|
+
* @param images - Array of image data
|
|
188
|
+
* @param workspace - Working directory
|
|
189
|
+
* @returns Processed message with @path references
|
|
190
|
+
*/
|
|
191
|
+
processImagesForCursor(message, images, workspace) {
|
|
192
|
+
if (!images || images.length === 0) {
|
|
193
|
+
return message;
|
|
194
|
+
}
|
|
195
|
+
console.log(`[CursorEngine] Processing ${images.length} images for Cursor CLI`);
|
|
196
|
+
let processedMessage = message;
|
|
197
|
+
for (let i = 0; i < images.length; i++) {
|
|
198
|
+
const image = images[i];
|
|
199
|
+
const imageIndex = i + 1;
|
|
200
|
+
const placeholder = `[image${imageIndex}]`;
|
|
201
|
+
try {
|
|
202
|
+
// Save image to hidden directory and get relative path
|
|
203
|
+
const imagePath = (0, sessionUtils_js_1.saveImageToHiddenDir)(image.data, image.mediaType, imageIndex, workspace);
|
|
204
|
+
console.log(`[CursorEngine] Saved image ${imageIndex} to: ${imagePath}`);
|
|
205
|
+
// Replace placeholder with @path reference
|
|
206
|
+
// This allows Cursor's model to read the file
|
|
207
|
+
processedMessage = processedMessage.replace(placeholder, `@${imagePath}`);
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
console.error(`[CursorEngine] Failed to save image ${imageIndex}:`, error);
|
|
211
|
+
// If save fails, keep the placeholder
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return processedMessage;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Send a message using Cursor CLI
|
|
218
|
+
*/
|
|
219
|
+
async sendMessage(message, config, onAguiEvent) {
|
|
220
|
+
const { workspace, sessionId: existingSessionId, model, images, } = config;
|
|
221
|
+
// Timeout: only when explicitly set via config.timeout or env CURSOR_CHAT_TIMEOUT_MS. Default: no timeout.
|
|
222
|
+
const envTimeout = typeof process.env.CURSOR_CHAT_TIMEOUT_MS === 'string'
|
|
223
|
+
? parseInt(process.env.CURSOR_CHAT_TIMEOUT_MS, 10)
|
|
224
|
+
: NaN;
|
|
225
|
+
const timeoutMs = typeof config.timeout === 'number' && config.timeout > 0
|
|
226
|
+
? config.timeout
|
|
227
|
+
: Number.isNaN(envTimeout) || envTimeout <= 0
|
|
228
|
+
? undefined
|
|
229
|
+
: envTimeout;
|
|
230
|
+
// Process images: save to hidden directory and replace placeholders with @path
|
|
231
|
+
const processedMessage = this.processImagesForCursor(message, images, workspace);
|
|
232
|
+
// Try with --resume first if sessionId provided
|
|
233
|
+
if (existingSessionId) {
|
|
234
|
+
try {
|
|
235
|
+
const result = await this.executeCursorCommand(processedMessage, workspace, model, images, timeoutMs, existingSessionId, true, // useResume
|
|
236
|
+
onAguiEvent);
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
// Check if this is a resume failure (session not found)
|
|
241
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
242
|
+
if (errorMessage.includes('exited with code') || errorMessage.includes('resume')) {
|
|
243
|
+
console.log(`[CursorEngine] Resume failed for session ${existingSessionId}, retrying without --resume`);
|
|
244
|
+
// Retry without --resume - create a new session
|
|
245
|
+
const result = await this.executeCursorCommand(processedMessage, workspace, model, images, timeoutMs, undefined, // No sessionId = new session
|
|
246
|
+
false, // Don't use resume
|
|
247
|
+
onAguiEvent);
|
|
248
|
+
return result;
|
|
249
|
+
}
|
|
250
|
+
// Re-throw other errors
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// No existing session, create new one
|
|
255
|
+
return this.executeCursorCommand(processedMessage, workspace, model, images, timeoutMs, undefined, false, onAguiEvent);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Execute Cursor CLI command (internal implementation)
|
|
259
|
+
*/
|
|
260
|
+
executeCursorCommand(processedMessage, workspace, model, images, timeoutMs, existingSessionId, useResume, onAguiEvent) {
|
|
261
|
+
// Create session ID (temporary; will be replaced by CLI's real session_id from system.init)
|
|
262
|
+
const sessionId = existingSessionId || (0, uuid_1.v4)();
|
|
263
|
+
// Create AGUI adapter
|
|
264
|
+
const adapter = new aguiAdapter_js_1.CursorAguiAdapter(sessionId);
|
|
265
|
+
// Send RUN_STARTED event
|
|
266
|
+
onAguiEvent(adapter.createRunStarted({ message: processedMessage, workspace, model }));
|
|
267
|
+
return new Promise((resolve, reject) => {
|
|
268
|
+
// Find cursor command
|
|
269
|
+
const cursorCmd = findCursorCommand();
|
|
270
|
+
// Build command arguments
|
|
271
|
+
// Use stream-json with --stream-partial-output for real-time streaming
|
|
272
|
+
const args = [
|
|
273
|
+
'agent',
|
|
274
|
+
'--print',
|
|
275
|
+
'--output-format', 'stream-json',
|
|
276
|
+
'--stream-partial-output',
|
|
277
|
+
'--workspace', workspace,
|
|
278
|
+
'--force', // Equivalent to bypassPermissions
|
|
279
|
+
'--approve-mcps', // Auto-approve MCP tools
|
|
280
|
+
];
|
|
281
|
+
// Only add --model if explicitly specified and not 'auto'
|
|
282
|
+
// This allows CLI to use its internal model settings
|
|
283
|
+
console.log(`[CursorEngine] Model parameter received: "${model}" (type: ${typeof model})`);
|
|
284
|
+
if (model && model !== 'auto') {
|
|
285
|
+
args.push('--model', model);
|
|
286
|
+
console.log(`[CursorEngine] Adding --model ${model} to args`);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
console.log(`[CursorEngine] NOT adding --model, letting CLI use internal settings`);
|
|
290
|
+
}
|
|
291
|
+
// Add session resume if continuing conversation and useResume is true
|
|
292
|
+
if (existingSessionId && useResume) {
|
|
293
|
+
// Strip 'cursor-' prefix if present (backward compatibility with old session IDs)
|
|
294
|
+
const actualSessionId = existingSessionId.startsWith('cursor-') ? existingSessionId.slice(7) : existingSessionId;
|
|
295
|
+
args.push('--resume', actualSessionId);
|
|
296
|
+
console.log(`[CursorEngine] Attempting to resume session: ${actualSessionId}`);
|
|
297
|
+
}
|
|
298
|
+
console.log(`[CursorEngine] Executing: ${cursorCmd} ${args.join(' ')}`);
|
|
299
|
+
console.log(`[CursorEngine] Working directory: ${workspace}`);
|
|
300
|
+
if (images && images.length > 0) {
|
|
301
|
+
console.log(`[CursorEngine] Processed ${images.length} images, message placeholders replaced with @path references`);
|
|
302
|
+
}
|
|
303
|
+
// Spawn cursor process
|
|
304
|
+
const cursorProcess = (0, child_process_1.spawn)(cursorCmd, args, {
|
|
305
|
+
cwd: workspace,
|
|
306
|
+
env: {
|
|
307
|
+
...process.env,
|
|
308
|
+
CURSOR_API_KEY: process.env.CURSOR_API_KEY,
|
|
309
|
+
},
|
|
310
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
311
|
+
});
|
|
312
|
+
// Handle spawn errors
|
|
313
|
+
cursorProcess.on('error', (error) => {
|
|
314
|
+
console.error(`[CursorEngine] Spawn error:`, error);
|
|
315
|
+
onAguiEvent(adapter.createRunError(`Failed to start cursor: ${error.message}`, 'SPAWN_ERROR'));
|
|
316
|
+
const finalEvents = adapter.finalize();
|
|
317
|
+
for (const event of finalEvents) {
|
|
318
|
+
onAguiEvent(event);
|
|
319
|
+
}
|
|
320
|
+
reject(error);
|
|
321
|
+
});
|
|
322
|
+
// Track session
|
|
323
|
+
const session = {
|
|
324
|
+
id: sessionId,
|
|
325
|
+
process: cursorProcess,
|
|
326
|
+
workspace,
|
|
327
|
+
startedAt: new Date(),
|
|
328
|
+
};
|
|
329
|
+
this.activeSessions.set(sessionId, session);
|
|
330
|
+
// Set up timeout only when explicitly configured; default is no timeout
|
|
331
|
+
let timeoutId;
|
|
332
|
+
if (timeoutMs !== undefined) {
|
|
333
|
+
console.log(`[CursorEngine] Session ${sessionId} timeout set to ${timeoutMs}ms (${timeoutMs / 60000} min)`);
|
|
334
|
+
timeoutId = setTimeout(() => {
|
|
335
|
+
console.log(`[CursorEngine] Session ${sessionId} timed out after ${timeoutMs}ms`);
|
|
336
|
+
cursorProcess.kill('SIGTERM');
|
|
337
|
+
this.activeSessions.delete(sessionId);
|
|
338
|
+
onAguiEvent(adapter.createRunError('Cursor command timed out', 'TIMEOUT'));
|
|
339
|
+
const finalEvents = adapter.finalize();
|
|
340
|
+
for (const event of finalEvents) {
|
|
341
|
+
onAguiEvent(event);
|
|
342
|
+
}
|
|
343
|
+
reject(new Error('Cursor command timed out'));
|
|
344
|
+
}, timeoutMs);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
console.log(`[CursorEngine] Session ${sessionId} no timeout (run until process exits)`);
|
|
348
|
+
}
|
|
349
|
+
// Write processed message (with @path references) to stdin
|
|
350
|
+
cursorProcess.stdin?.write(processedMessage + '\n');
|
|
351
|
+
cursorProcess.stdin?.end();
|
|
352
|
+
console.log(`[CursorEngine] Message written to stdin for session ${sessionId}`);
|
|
353
|
+
let buffer = '';
|
|
354
|
+
let hasError = false;
|
|
355
|
+
let hasOutput = false;
|
|
356
|
+
// Process stdout line by line
|
|
357
|
+
cursorProcess.stdout?.on('data', (data) => {
|
|
358
|
+
hasOutput = true;
|
|
359
|
+
buffer += data.toString();
|
|
360
|
+
const lines = buffer.split('\n');
|
|
361
|
+
buffer = lines.pop() || ''; // Keep incomplete line in buffer
|
|
362
|
+
for (const line of lines) {
|
|
363
|
+
if (!line.trim())
|
|
364
|
+
continue;
|
|
365
|
+
// Parse and convert to AGUI events
|
|
366
|
+
const events = adapter.parseStreamLine(line);
|
|
367
|
+
for (const event of events) {
|
|
368
|
+
onAguiEvent(event);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
// Process stderr
|
|
373
|
+
cursorProcess.stderr?.on('data', (data) => {
|
|
374
|
+
const text = data.toString().trim();
|
|
375
|
+
console.log(`[CursorEngine] stderr: ${text}`);
|
|
376
|
+
// Only treat actual errors as errors
|
|
377
|
+
if (text.toLowerCase().includes('error')) {
|
|
378
|
+
hasError = true;
|
|
379
|
+
onAguiEvent(adapter.createRunError(text, 'CURSOR_ERROR'));
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
// Handle process exit
|
|
383
|
+
cursorProcess.on('close', (code, signal) => {
|
|
384
|
+
if (timeoutId)
|
|
385
|
+
clearTimeout(timeoutId);
|
|
386
|
+
this.activeSessions.delete(sessionId);
|
|
387
|
+
console.log(`[CursorEngine] Process exited with code ${code}, signal ${signal}, hasOutput: ${hasOutput}`);
|
|
388
|
+
// Process any remaining buffer
|
|
389
|
+
if (buffer.trim()) {
|
|
390
|
+
hasOutput = true;
|
|
391
|
+
const events = adapter.parseStreamLine(buffer);
|
|
392
|
+
for (const event of events) {
|
|
393
|
+
onAguiEvent(event);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
// Finalize
|
|
397
|
+
const finalEvents = adapter.finalize();
|
|
398
|
+
for (const event of finalEvents) {
|
|
399
|
+
onAguiEvent(event);
|
|
400
|
+
}
|
|
401
|
+
// If we used --resume and got no output with non-zero exit code,
|
|
402
|
+
// this is likely a session-not-found error - let the caller retry
|
|
403
|
+
if (code !== 0 && useResume && !hasOutput) {
|
|
404
|
+
console.log(`[CursorEngine] Resume failed with no output, session may not exist`);
|
|
405
|
+
reject(new Error(`Cursor agent exited with code ${code} (resume may have failed)`));
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
if (code === 0 || !hasError) {
|
|
409
|
+
// Use the real session_id from Cursor CLI if available
|
|
410
|
+
// adapter.getThreadId() will have the CLI's session_id if it was provided in system.init
|
|
411
|
+
const actualSessionId = adapter.getThreadId();
|
|
412
|
+
console.log(`[CursorEngine] Returning session_id: ${actualSessionId} (original: ${sessionId})`);
|
|
413
|
+
resolve({ sessionId: actualSessionId });
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
reject(new Error(`Cursor agent exited with code ${code}`));
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
// Handle process errors
|
|
420
|
+
cursorProcess.on('error', (error) => {
|
|
421
|
+
if (timeoutId)
|
|
422
|
+
clearTimeout(timeoutId);
|
|
423
|
+
this.activeSessions.delete(sessionId);
|
|
424
|
+
console.error('[CursorEngine] Process error:', error);
|
|
425
|
+
onAguiEvent(adapter.createRunError(error.message, 'PROCESS_ERROR'));
|
|
426
|
+
const finalEvents = adapter.finalize();
|
|
427
|
+
for (const event of finalEvents) {
|
|
428
|
+
onAguiEvent(event);
|
|
429
|
+
}
|
|
430
|
+
reject(error);
|
|
431
|
+
});
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Interrupt a session
|
|
436
|
+
*/
|
|
437
|
+
async interruptSession(sessionId) {
|
|
438
|
+
const session = this.activeSessions.get(sessionId);
|
|
439
|
+
if (!session) {
|
|
440
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
441
|
+
}
|
|
442
|
+
console.log(`[CursorEngine] Interrupting session: ${sessionId}`);
|
|
443
|
+
// Kill the process
|
|
444
|
+
session.process.kill('SIGTERM');
|
|
445
|
+
this.activeSessions.delete(sessionId);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Clean up stale sessions (called periodically)
|
|
449
|
+
*/
|
|
450
|
+
cleanupStaleSessions(maxAgeMs = 30 * 60 * 1000) {
|
|
451
|
+
const now = new Date();
|
|
452
|
+
for (const [sessionId, session] of this.activeSessions) {
|
|
453
|
+
const age = now.getTime() - session.startedAt.getTime();
|
|
454
|
+
if (age > maxAgeMs) {
|
|
455
|
+
console.log(`[CursorEngine] Cleaning up stale session: ${sessionId}`);
|
|
456
|
+
session.process.kill('SIGTERM');
|
|
457
|
+
this.activeSessions.delete(sessionId);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
exports.CursorEngine = CursorEngine;
|
|
463
|
+
// Export singleton instance
|
|
464
|
+
exports.cursorEngine = new CursorEngine();
|
|
465
|
+
//# sourceMappingURL=cursorEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursorEngine.js","sourceRoot":"","sources":["../../../src/engines/cursor/cursorEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Engine Module
|
|
3
|
+
*
|
|
4
|
+
* Exports the Cursor engine implementation and its adapters.
|
|
5
|
+
* - AGUI Adapter: Converts Cursor CLI output to AGUI events
|
|
6
|
+
* - A2A Adapter: Converts AGUI events to A2A protocol format
|
|
7
|
+
*/
|
|
8
|
+
export { CursorEngine, cursorEngine } from './cursorEngine.js';
|
|
9
|
+
export { CursorAguiAdapter } from './aguiAdapter.js';
|
|
10
|
+
export { CursorA2AAdapter, convertAGUIEventsToA2A, createA2AErrorResponse, A2A_ERROR_CODES, type A2AStreamingResponse, type A2ATask, type A2AMessage, type A2ATaskState, type A2ATaskStatus, type A2AArtifact, type A2APart, type A2ATextPart, type A2AFilePart, type A2ADataPart, type A2ATaskStatusUpdateEvent, type A2ATaskArtifactUpdateEvent, } from './a2aAdapter.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor Engine Module
|
|
4
|
+
*
|
|
5
|
+
* Exports the Cursor engine implementation and its adapters.
|
|
6
|
+
* - AGUI Adapter: Converts Cursor CLI output to AGUI events
|
|
7
|
+
* - A2A Adapter: Converts AGUI events to A2A protocol format
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.A2A_ERROR_CODES = exports.createA2AErrorResponse = exports.convertAGUIEventsToA2A = exports.CursorA2AAdapter = exports.CursorAguiAdapter = exports.cursorEngine = exports.CursorEngine = void 0;
|
|
11
|
+
var cursorEngine_js_1 = require("./cursorEngine.js");
|
|
12
|
+
Object.defineProperty(exports, "CursorEngine", { enumerable: true, get: function () { return cursorEngine_js_1.CursorEngine; } });
|
|
13
|
+
Object.defineProperty(exports, "cursorEngine", { enumerable: true, get: function () { return cursorEngine_js_1.cursorEngine; } });
|
|
14
|
+
var aguiAdapter_js_1 = require("./aguiAdapter.js");
|
|
15
|
+
Object.defineProperty(exports, "CursorAguiAdapter", { enumerable: true, get: function () { return aguiAdapter_js_1.CursorAguiAdapter; } });
|
|
16
|
+
var a2aAdapter_js_1 = require("./a2aAdapter.js");
|
|
17
|
+
Object.defineProperty(exports, "CursorA2AAdapter", { enumerable: true, get: function () { return a2aAdapter_js_1.CursorA2AAdapter; } });
|
|
18
|
+
Object.defineProperty(exports, "convertAGUIEventsToA2A", { enumerable: true, get: function () { return a2aAdapter_js_1.convertAGUIEventsToA2A; } });
|
|
19
|
+
Object.defineProperty(exports, "createA2AErrorResponse", { enumerable: true, get: function () { return a2aAdapter_js_1.createA2AErrorResponse; } });
|
|
20
|
+
Object.defineProperty(exports, "A2A_ERROR_CODES", { enumerable: true, get: function () { return a2aAdapter_js_1.A2A_ERROR_CODES; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/cursor/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,qDAA+D;AAAtD,+GAAA,YAAY,OAAA;AAAE,+GAAA,YAAY,OAAA;AACnC,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,iDAiByB;AAhBvB,iHAAA,gBAAgB,OAAA;AAChB,uHAAA,sBAAsB,OAAA;AACtB,uHAAA,sBAAsB,OAAA;AACtB,gHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine Manager
|
|
3
|
+
*
|
|
4
|
+
* Central manager for all agent engines. Handles engine registration,
|
|
5
|
+
* selection, and provides a unified interface for the routes layer.
|
|
6
|
+
*/
|
|
7
|
+
import type { EngineType, IAgentEngine, EngineConfig, AGUIEvent, ModelInfo, EngineCapabilities } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Engine Manager singleton
|
|
10
|
+
*/
|
|
11
|
+
declare class EngineManager {
|
|
12
|
+
private engines;
|
|
13
|
+
private defaultEngine;
|
|
14
|
+
/**
|
|
15
|
+
* Register an engine
|
|
16
|
+
*/
|
|
17
|
+
registerEngine(engine: IAgentEngine): void;
|
|
18
|
+
/**
|
|
19
|
+
* Get an engine by type
|
|
20
|
+
*/
|
|
21
|
+
getEngine(type: EngineType): IAgentEngine;
|
|
22
|
+
/**
|
|
23
|
+
* Check if an engine is registered
|
|
24
|
+
*/
|
|
25
|
+
hasEngine(type: EngineType): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Get all registered engine types
|
|
28
|
+
*/
|
|
29
|
+
getRegisteredEngines(): EngineType[];
|
|
30
|
+
/**
|
|
31
|
+
* Get the default engine type
|
|
32
|
+
*/
|
|
33
|
+
getDefaultEngineType(): EngineType;
|
|
34
|
+
/**
|
|
35
|
+
* Set the default engine type
|
|
36
|
+
*/
|
|
37
|
+
setDefaultEngineType(type: EngineType): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get engine capabilities
|
|
40
|
+
*/
|
|
41
|
+
getEngineCapabilities(type: EngineType): EngineCapabilities;
|
|
42
|
+
/**
|
|
43
|
+
* Get all engines' capabilities
|
|
44
|
+
*/
|
|
45
|
+
getAllEngineCapabilities(): Record<EngineType, EngineCapabilities>;
|
|
46
|
+
/**
|
|
47
|
+
* Get supported models for an engine
|
|
48
|
+
*/
|
|
49
|
+
getSupportedModels(type: EngineType): Promise<ModelInfo[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Send a message using the specified engine
|
|
52
|
+
*/
|
|
53
|
+
sendMessage(engineType: EngineType, message: string, config: EngineConfig, onAguiEvent: (event: AGUIEvent) => void): Promise<{
|
|
54
|
+
sessionId: string;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Interrupt a session on the specified engine
|
|
58
|
+
*/
|
|
59
|
+
interruptSession(engineType: EngineType, sessionId: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Get total active session count across all engines
|
|
62
|
+
*/
|
|
63
|
+
getTotalActiveSessionCount(): number;
|
|
64
|
+
/**
|
|
65
|
+
* Get active session count by engine
|
|
66
|
+
*/
|
|
67
|
+
getActiveSessionCountByEngine(): Record<EngineType, number>;
|
|
68
|
+
/**
|
|
69
|
+
* Get engine status summary
|
|
70
|
+
*/
|
|
71
|
+
getStatus(): {
|
|
72
|
+
registeredEngines: EngineType[];
|
|
73
|
+
defaultEngine: EngineType;
|
|
74
|
+
activeSessions: Record<EngineType, number>;
|
|
75
|
+
totalActiveSessions: number;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export declare const engineManager: EngineManager;
|
|
79
|
+
export { EngineManager };
|
|
80
|
+
//# sourceMappingURL=engineManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engineManager.d.ts","sourceRoot":"","sources":["../../src/engines/engineManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnH;;GAEG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,aAAa,CAAwB;IAE7C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAK1C;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY;IAQzC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAIpC;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAIpC;;OAEG;IACH,oBAAoB,IAAI,UAAU;IAIlC;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAO5C;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB;IAK3D;;OAEG;IACH,wBAAwB,IAAI,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAQlE;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKhE;;OAEG;IACG,WAAW,CACf,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GACtC,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAUjC;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhF;;OAEG;IACH,0BAA0B,IAAI,MAAM;IAQpC;;OAEG;IACH,6BAA6B,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;IAQ3D;;OAEG;IACH,SAAS,IAAI;QACX,iBAAiB,EAAE,UAAU,EAAE,CAAC;QAChC,aAAa,EAAE,UAAU,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3C,mBAAmB,EAAE,MAAM,CAAC;KAC7B;CAQF;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|