Skip to content

Commit 2cfb660

Browse files
authored
feat(ui): overhaul settings and slash command UX (#67819) thanks @BunsDev
Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
1 parent 42805d2 commit 2cfb660

21 files changed

Lines changed: 2564 additions & 63 deletions

src/auto-reply/commands-registry.shared.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type {
44
ChatCommandDefinition,
55
CommandCategory,
66
CommandScope,
7+
CommandTier,
78
} from "./commands-registry.types.js";
89
import { listThinkingLevels } from "./thinking.js";
910

@@ -20,6 +21,8 @@ type DefineChatCommandInput = {
2021
textAliases?: string[];
2122
scope?: CommandScope;
2223
category?: CommandCategory;
24+
/** Progressive disclosure tier. Defaults to "standard". */
25+
tier?: CommandTier;
2326
};
2427

2528
export function defineChatCommand(command: DefineChatCommandInput): ChatCommandDefinition {
@@ -42,6 +45,7 @@ export function defineChatCommand(command: DefineChatCommandInput): ChatCommandD
4245
textAliases: aliases,
4346
scope,
4447
category: command.category,
48+
tier: command.tier,
4549
};
4650
}
4751

@@ -129,13 +133,15 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
129133
description: "Show available commands.",
130134
textAlias: "/help",
131135
category: "status",
136+
tier: "essential",
132137
}),
133138
defineChatCommand({
134139
key: "commands",
135140
nativeName: "commands",
136141
description: "List all slash commands.",
137142
textAlias: "/commands",
138143
category: "status",
144+
tier: "power",
139145
}),
140146
defineChatCommand({
141147
key: "tools",
@@ -152,13 +158,15 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
152158
},
153159
],
154160
argsMenu: "auto",
161+
tier: "standard",
155162
}),
156163
defineChatCommand({
157164
key: "skill",
158165
nativeName: "skill",
159166
description: "Run a skill by name.",
160167
textAlias: "/skill",
161168
category: "tools",
169+
tier: "standard",
162170
args: [
163171
{
164172
name: "name",
@@ -180,13 +188,15 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
180188
description: "Show current status.",
181189
textAlias: "/status",
182190
category: "status",
191+
tier: "essential",
183192
}),
184193
defineChatCommand({
185194
key: "tasks",
186195
nativeName: "tasks",
187196
description: "List background tasks for this session.",
188197
textAlias: "/tasks",
189198
category: "status",
199+
tier: "standard",
190200
}),
191201
defineChatCommand({
192202
key: "allowlist",
@@ -195,6 +205,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
195205
acceptsArgs: true,
196206
scope: "text",
197207
category: "management",
208+
tier: "power",
198209
}),
199210
defineChatCommand({
200211
key: "approve",
@@ -203,6 +214,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
203214
textAlias: "/approve",
204215
acceptsArgs: true,
205216
category: "management",
217+
tier: "power",
206218
}),
207219
defineChatCommand({
208220
key: "context",
@@ -211,6 +223,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
211223
textAlias: "/context",
212224
acceptsArgs: true,
213225
category: "status",
226+
tier: "standard",
214227
}),
215228
defineChatCommand({
216229
key: "btw",
@@ -219,6 +232,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
219232
textAlias: "/btw",
220233
acceptsArgs: true,
221234
category: "tools",
235+
tier: "standard",
222236
}),
223237
defineChatCommand({
224238
key: "export-session",
@@ -227,6 +241,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
227241
textAliases: ["/export-session", "/export"],
228242
acceptsArgs: true,
229243
category: "status",
244+
tier: "essential",
230245
args: [
231246
{
232247
name: "path",
@@ -242,6 +257,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
242257
description: "Control text-to-speech (TTS).",
243258
textAlias: "/tts",
244259
category: "media",
260+
tier: "standard",
245261
args: [
246262
{
247263
name: "action",
@@ -285,13 +301,15 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
285301
description: "Show your sender id.",
286302
textAlias: "/whoami",
287303
category: "status",
304+
tier: "power",
288305
}),
289306
defineChatCommand({
290307
key: "session",
291308
nativeName: "session",
292309
description: "Manage session-level settings (for example /session idle).",
293310
textAlias: "/session",
294311
category: "session",
312+
tier: "power",
295313
args: [
296314
{
297315
name: "action",
@@ -314,6 +332,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
314332
description: "List, kill, log, spawn, or steer subagent runs for this session.",
315333
textAlias: "/subagents",
316334
category: "management",
335+
tier: "standard",
317336
args: [
318337
{
319338
name: "action",
@@ -341,6 +360,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
341360
description: "Manage ACP sessions and runtime options.",
342361
textAlias: "/acp",
343362
category: "management",
363+
tier: "power",
344364
args: [
345365
{
346366
name: "action",
@@ -382,6 +402,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
382402
"Bind this thread (Discord) or topic/conversation (Telegram) to a session target.",
383403
textAlias: "/focus",
384404
category: "management",
405+
tier: "power",
385406
args: [
386407
{
387408
name: "target",
@@ -397,20 +418,23 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
397418
description: "Remove the current thread (Discord) or topic/conversation (Telegram) binding.",
398419
textAlias: "/unfocus",
399420
category: "management",
421+
tier: "power",
400422
}),
401423
defineChatCommand({
402424
key: "agents",
403425
nativeName: "agents",
404426
description: "List thread-bound agents for this session.",
405427
textAlias: "/agents",
406428
category: "management",
429+
tier: "standard",
407430
}),
408431
defineChatCommand({
409432
key: "kill",
410433
nativeName: "kill",
411434
description: "Kill a running subagent (or all).",
412435
textAlias: "/kill",
413436
category: "management",
437+
tier: "standard",
414438
args: [
415439
{
416440
name: "target",
@@ -426,6 +450,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
426450
description: "Send guidance to a running subagent.",
427451
textAlias: "/steer",
428452
category: "management",
453+
tier: "standard",
429454
args: [
430455
{
431456
name: "target",
@@ -446,6 +471,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
446471
description: "Show or set config values.",
447472
textAlias: "/config",
448473
category: "management",
474+
tier: "power",
449475
args: [
450476
{
451477
name: "action",
@@ -474,6 +500,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
474500
description: "Show or set OpenClaw MCP servers.",
475501
textAlias: "/mcp",
476502
category: "management",
503+
tier: "power",
477504
args: [
478505
{
479506
name: "action",
@@ -502,6 +529,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
502529
description: "List, show, enable, or disable plugins.",
503530
textAliases: ["/plugins", "/plugin"],
504531
category: "management",
532+
tier: "power",
505533
args: [
506534
{
507535
name: "action",
@@ -524,6 +552,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
524552
description: "Set runtime debug overrides.",
525553
textAlias: "/debug",
526554
category: "management",
555+
tier: "power",
527556
args: [
528557
{
529558
name: "action",
@@ -552,6 +581,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
552581
description: "Usage footer or cost summary.",
553582
textAlias: "/usage",
554583
category: "options",
584+
tier: "standard",
555585
args: [
556586
{
557587
name: "mode",
@@ -568,20 +598,23 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
568598
description: "Stop the current run.",
569599
textAlias: "/stop",
570600
category: "session",
601+
tier: "essential",
571602
}),
572603
defineChatCommand({
573604
key: "restart",
574605
nativeName: "restart",
575606
description: "Restart OpenClaw.",
576607
textAlias: "/restart",
577608
category: "tools",
609+
tier: "power",
578610
}),
579611
defineChatCommand({
580612
key: "activation",
581613
nativeName: "activation",
582614
description: "Set group activation mode.",
583615
textAlias: "/activation",
584616
category: "management",
617+
tier: "power",
585618
args: [
586619
{
587620
name: "mode",
@@ -598,6 +631,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
598631
description: "Set send policy.",
599632
textAlias: "/send",
600633
category: "management",
634+
tier: "power",
601635
args: [
602636
{
603637
name: "mode",
@@ -615,6 +649,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
615649
textAlias: "/reset",
616650
acceptsArgs: true,
617651
category: "session",
652+
tier: "essential",
618653
}),
619654
defineChatCommand({
620655
key: "new",
@@ -623,13 +658,15 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
623658
textAlias: "/new",
624659
acceptsArgs: true,
625660
category: "session",
661+
tier: "essential",
626662
}),
627663
defineChatCommand({
628664
key: "compact",
629665
nativeName: "compact",
630666
description: "Compact the session context.",
631667
textAlias: "/compact",
632668
category: "session",
669+
tier: "essential",
633670
args: [
634671
{
635672
name: "instructions",
@@ -645,6 +682,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
645682
description: "Set thinking level.",
646683
textAlias: "/think",
647684
category: "options",
685+
tier: "essential",
648686
args: [
649687
{
650688
name: "level",
@@ -661,6 +699,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
661699
description: "Toggle verbose mode.",
662700
textAlias: "/verbose",
663701
category: "options",
702+
tier: "standard",
664703
args: [
665704
{
666705
name: "mode",
@@ -677,6 +716,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
677716
description: "Toggle plugin trace lines.",
678717
textAlias: "/trace",
679718
category: "options",
719+
tier: "power",
680720
args: [
681721
{
682722
name: "mode",
@@ -693,6 +733,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
693733
description: "Toggle fast mode.",
694734
textAlias: "/fast",
695735
category: "options",
736+
tier: "standard",
696737
args: [
697738
{
698739
name: "mode",
@@ -709,6 +750,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
709750
description: "Toggle reasoning visibility.",
710751
textAlias: "/reasoning",
711752
category: "options",
753+
tier: "standard",
712754
args: [
713755
{
714756
name: "mode",
@@ -725,6 +767,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
725767
description: "Toggle elevated mode.",
726768
textAlias: "/elevated",
727769
category: "options",
770+
tier: "power",
728771
args: [
729772
{
730773
name: "mode",
@@ -741,6 +784,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
741784
description: "Set exec defaults for this session.",
742785
textAlias: "/exec",
743786
category: "options",
787+
tier: "power",
744788
args: [
745789
{
746790
name: "host",
@@ -775,6 +819,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
775819
description: "Show or set the model.",
776820
textAlias: "/model",
777821
category: "options",
822+
tier: "essential",
778823
args: [
779824
{
780825
name: "model",
@@ -788,6 +833,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
788833
nativeName: "models",
789834
description: "List model providers or provider models.",
790835
textAlias: "/models",
836+
tier: "standard",
791837
argsParsing: "none",
792838
acceptsArgs: true,
793839
category: "options",
@@ -798,6 +844,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
798844
description: "Adjust queue settings.",
799845
textAlias: "/queue",
800846
category: "options",
847+
tier: "power",
801848
args: [
802849
{
803850
name: "mode",
@@ -831,6 +878,7 @@ export function buildBuiltinChatCommands(): ChatCommandDefinition[] {
831878
textAlias: "/bash",
832879
scope: "text",
833880
category: "tools",
881+
tier: "power",
834882
args: [
835883
{
836884
name: "command",

src/auto-reply/commands-registry.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export type {
5050
CommandDetection,
5151
CommandNormalizeOptions,
5252
CommandScope,
53+
CommandTier,
5354
NativeCommandSpec,
5455
ShouldHandleTextCommandsParams,
5556
} from "./commands-registry.types.js";

0 commit comments

Comments
 (0)