diff --git a/packages/mosaic/src/cli.ts b/packages/mosaic/src/cli.ts index f18191c..03444d9 100644 --- a/packages/mosaic/src/cli.ts +++ b/packages/mosaic/src/cli.ts @@ -33,7 +33,23 @@ try { const program = new Command(); -program.name('mosaic').description('Mosaic Stack CLI').version(CLI_VERSION); +program + .name('mosaic') + .description('Mosaic Stack CLI') + .version(CLI_VERSION) + .configureHelp({ sortSubcommands: true }) + .addHelpText( + 'after', + ` +Command Groups: + + Runtime: tui, login, sessions + Gateway: gateway + Framework: agent, bootstrap, coord, doctor, init, launch, mission, prdy, seq, sync, upgrade, wizard, yolo + Platform: update + Runtimes: claude, codex, opencode, pi +`, + ); // ─── runtime launchers + framework commands ──────────────────────────── @@ -214,7 +230,10 @@ program // ─── sessions ─────────────────────────────────────────────────────────── -const sessionsCmd = program.command('sessions').description('Manage active agent sessions'); +const sessionsCmd = program + .command('sessions') + .description('Manage active agent sessions') + .configureHelp({ sortSubcommands: true }); sessionsCmd .command('list') diff --git a/packages/mosaic/src/commands/gateway.ts b/packages/mosaic/src/commands/gateway.ts index eeda6ba..ea2a074 100644 --- a/packages/mosaic/src/commands/gateway.ts +++ b/packages/mosaic/src/commands/gateway.ts @@ -30,6 +30,7 @@ export function registerGatewayCommand(program: Command): void { .option('-h, --host ', 'Gateway host', 'localhost') .option('-p, --port ', 'Gateway port', '14242') .option('-t, --token ', 'Admin API token') + .configureHelp({ sortSubcommands: true }) .action(() => { gw.outputHelp(); }); diff --git a/packages/mosaic/src/commands/mission.ts b/packages/mosaic/src/commands/mission.ts index e746103..9ee1539 100644 --- a/packages/mosaic/src/commands/mission.ts +++ b/packages/mosaic/src/commands/mission.ts @@ -47,6 +47,7 @@ export function registerMissionCommand(program: Command) { .option('--update ', 'Update a mission') .option('--project ', 'Scope to project') .argument('[id]', 'Show mission detail by ID') + .configureHelp({ sortSubcommands: true }) .action( async ( id: string | undefined,