Forge
csharpdeeb25a2
1using System.Collections.ObjectModel;
2using CascadeIDE.Cockpit;
3using CascadeIDE.Cockpit.Channels.EnvironmentReadiness;
4using CascadeIDE.Cockpit.Composition.EnvironmentReadiness;
5using CascadeIDE.Models;
6using CommunityToolkit.Mvvm.Input;
7
8namespace CascadeIDE.ViewModels;
9
10/// <summary>Снимок «готовность окружения» (ADR 0023), отдельно от Workspace Health.</summary>
11public partial class MainWindowViewModel
12{
13 public ObservableCollection<AnnunciatorLampItem> EnvironmentReadinessItems { get; } = [];
14
15 /// <summary>ADR 0063: семантический deck «компакт» (сетка ламп в метаданных); в UI узкая проекция — карточки с глифом (ADR 0068).</summary>
16 public InstrumentDeckDescriptor EnvironmentReadinessCompactDeck => EnvironmentReadinessInstrumentDeck.CompactLampStrip;
17
18 /// <summary>ADR 0063: тот же порядок ячеек; широкая проекция — таблица с лампой Korry в первой колонке (ADR 0068).</summary>
19 public InstrumentDeckDescriptor EnvironmentReadinessTextualDeck => EnvironmentReadinessInstrumentDeck.TextualDetail;
20
21 /// <summary>Уйти со страницы готовности окружения на первую другую разрешённую страницу оболочки Mfd.</summary>
22 [RelayCommand]
23 private void CloseEnvironmentReadinessPage()
24 {
25 if (CurrentMfdShellPage != MfdShellPage.EnvironmentReadiness)
26 return;
27 foreach (var p in MfdShellPageOrder)
28 {
29 if (p == MfdShellPage.EnvironmentReadiness)
30 continue;
31 if (IsMfdShellPageAllowed(p))
32 {
33 CurrentMfdShellPage = p;
34 return;
35 }
36 }
37
38 CurrentMfdShellPage = MfdShellPage.Chat;
39 }
40
41 [RelayCommand]
42 private async Task RefreshEnvironmentReadinessAsync()
43 {
44 await EnvironmentReadinessRefreshOrchestrator.RunAsync(
45 _environmentReadinessChannel,
46 _environmentReadinessSurfaceCompositor,
47 EnvironmentReadinessItems,
48 new EnvironmentReadinessChannelContext(
49 _settings,
50 Workspace.SolutionPath,
51 Lsp: CaptureIdeHostLspState(),
52 IsMcpStdioHost: IsMcpServerMode,
53 ActiveAiProvider: ActiveAiProvider));
54 }
55}
56
View only · write via MCP/CIDE