Forge
csharp4405de34
1using System.Collections.Immutable;
2using System.Text.Json;
3using CascadeIDE.Features.UiChrome;
4
5namespace CascadeIDE.Services;
6
7/// <summary>
8/// Палитра команд: проекция <see cref="IdeCommandRegistry"/> на строки списка (ADR 0013).
9/// </summary>
10public static class IdeCommandPaletteCatalog
11{
12 /// <param name="AllowedFamilies">Если задано и не пусто — команда доступна только в перечисленных семействах UI-режима.</param>
13 public sealed record Entry(
14 string PaletteId,
15 string CommandId,
16 string Title,
17 string Category,
18 string? ArgsJson = null,
19 ImmutableArray<UiModeFamily>? AllowedFamilies = null);
20
21 public static ImmutableArray<Entry> All { get; } =
22 IdeCommandRegistry.AllEntries
23 .Where(e => e.IncludeInPalette)
24 .Select(e => new Entry(
25 e.PaletteId,
26 e.CommandId!,
27 e.Title,
28 e.Category,
29 e.ArgsJson,
30 e.AllowedFamilies))
31 .ToImmutableArray();
32
33 /// <summary>Парсит JSON объекта args для <see cref="IdeMcpCommandExecutor.ExecuteAsync"/>.</summary>
34 public static IReadOnlyDictionary<string, JsonElement>? ParseArgs(string? argsJson) =>
35 IdeCommandRegistry.ParseArgs(argsJson);
36}
37
View only · write via MCP/CIDE