Forge
csharpdeeb25a2
1using System.Text.Json;
2using CascadeIDE.Features.IdeMcp.Application;
3using CascadeIDE.Models;
4using static CascadeIDE.Services.IdeCommands;
5
6namespace CascadeIDE.Features.IdeMcp.Execution;
7
8/// <summary>MCP-хендлеры вывода и фокуса: ping, перезапуск MCP-клиентов, фокус редактора, снимок окна.</summary>
9internal sealed partial class IdeMcpCommandExecutor
10{
11 private void RegisterOutputAndFocus(Action<string, Handler> add)
12 {
13 add(IdePing, async (_, _) => await Task.FromResult(IdeMcpHostOrchestrator.PingJson()));
14 add(IdeRestartMcpClients, async (_, ct) => await _vm.RestartMcpClientsForAgentAsync(ct));
15
16 add(FocusEditor, async (_, _) =>
17 {
18 _actions.FocusEditor();
19 return await Task.FromResult("OK");
20 });
21
22 Handler captureWindow = async (args, _) =>
23 {
24 if (_vm.CaptureWindowForMcpAsync is null)
25 return "Error: главное окно не привязано к VM (внутренний снимок недоступен).";
26 var ws = McpCommandJsonArgs.String(args, "workspace_path");
27 var rel = McpCommandJsonArgs.String(args, "output_path");
28 var scope = McpCommandJsonArgs.String(args, "scope");
29 return await _vm.CaptureWindowForMcpAsync(ws, rel, scope).ConfigureAwait(false);
30 };
31 add(CaptureWindow, captureWindow);
32 }
33}
34
View only · write via MCP/CIDE