Forge
csharpdeeb25a2
1#nullable enable
2
3namespace CascadeIDE.Services;
4
5/// <remarks>TOML v2: <c>[[command]]</c> — якорь <c>command_id</c>; melody — поля на команде; slash — <c>[[command.form.slash]]</c>.</remarks>
6internal sealed class CommandToml
7{
8 public string? CommandId { get; set; }
9 public bool? Enabled { get; set; }
10 public string? SlashGroup { get; set; }
11
12 // Flat melody на [[command]] (предпочтительная раскладка; legacy — [command.melody])
13 public string? MelodySlug { get; set; }
14 public string? MelodyShape { get; set; }
15 public bool? MelodyShowUsageHintIfBareSlug { get; set; }
16 public string? MelodyTailSignature { get; set; }
17 public string? MelodyWireClass { get; set; }
18 public string? MelodyChordCommit { get; set; }
19 public string? MelodyPaletteHintSlug { get; set; }
20 public string? MelodyPaletteUsageHint { get; set; }
21 public string? MelodyPaletteUsageCategory { get; set; }
22
23 /// <summary>Legacy: <c>[command.melody]</c> / <c>[command.form.melody]</c>.</summary>
24 public MelodyFormToml? Melody { get; set; }
25
26 public CommandFormToml? Form { get; set; }
27
28 /// <summary>Legacy: <c>[[command.slash]]</c>.</summary>
29 public List<SlashFormToml>? Slash { get; set; }
30}
31
32internal sealed class CommandFormToml
33{
34 public MelodyFormToml? Melody { get; set; }
35 public List<SlashFormToml>? Slash { get; set; }
36}
37
38/// <remarks>Форма <c>c:slug</c> (вложенная или плоские поля на <see cref="CommandToml"/>).</remarks>
39internal sealed class MelodyFormToml
40{
41 public string? Slug { get; set; }
42 public string? Shape { get; set; }
43 public bool? ShowUsageHintIfBareSlug { get; set; }
44 public string? TailSignature { get; set; }
45 public string? WireClass { get; set; }
46 public string? ChordCommit { get; set; }
47 public string? PaletteHintSlug { get; set; }
48 public string? PaletteUsageHint { get; set; }
49 public string? PaletteUsageCategory { get; set; }
50}
51
52/// <remarks>Форма <c>/intent action</c> — <c>[[command.form.slash]]</c>.</remarks>
53internal sealed class SlashFormToml
54{
55 public bool? Enabled { get; set; }
56 public string? Path { get; set; }
57 public string? Help { get; set; }
58 public string? Group { get; set; }
59 public string? Kind { get; set; }
60 public SlashStaticArgsToml? Args { get; set; }
61 public string? MfdPage { get; set; }
62 public string? PrimarySurface { get; set; }
63 /// <summary><c>workspace_files</c> — динамические подсказки файлов после пробела (ADR 0125).</summary>
64 public string? Completion { get; set; }
65 /// <summary>Обработчик локального отчёта при <c>kind=report</c> (см. <see cref="Chat.ChatSlashReportHandlers"/>).</summary>
66 public string? ReportHandler { get; set; }
67 /// <summary>Обработчик Intercom при <c>kind=intercom</c> (см. <see cref="Chat.ChatSlashIntercomHandlers"/>).</summary>
68 public string? IntercomHandler { get; set; }
69 /// <summary><c>self</c> (по умолчанию) или <c>channel</c> — видимость ответа слэша в ленте (ADR 0119).</summary>
70 public string? Audience { get; set; }
71 /// <summary>После Tab/autocomplete — сразу выполнить без второго Enter (ADR 0119).</summary>
72 public bool? AutoRunOnCommit { get; set; }
73 /// <summary>При <see cref="AutoRunOnCommit"/> — только если в строке уже есть args-хвост (по умолчанию true).</summary>
74 public bool? AutoRunRequiresArgs { get; set; }
75 /// <summary>Явно: autocomplete должен оставить хвост для аргументов (иначе — эвристика из каталога).</summary>
76 public bool? RequiresArgTail { get; set; }
77 /// <summary><c>none</c> | <c>optional</c> | <c>required</c> — режим хвоста после пути (ADR 0150).</summary>
78 public string? ArgTail { get; set; }
79 /// <summary>Slash domain (ADR 0154).</summary>
80 public string? Domain { get; set; }
81 /// <summary>Slash object (ADR 0154).</summary>
82 public string? Object { get; set; }
83 /// <summary>Slash intent (ADR 0154).</summary>
84 public string? Intent { get; set; }
85 /// <summary><c>canonical</c> | <c>alias</c> (ADR 0154).</summary>
86 public string? PathRole { get; set; }
87}
88
89/// <remarks><c>[command.form.slash.args]</c> → JSON args исполнителя.</remarks>
90internal sealed class SlashStaticArgsToml
91{
92 public string? Page { get; set; }
93 public string? Surface { get; set; }
94 public string? Level { get; set; }
95}
96
View only · write via MCP/CIDE