From 389bd2134ec18a23ca63560f3764a3a957a68e49 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Mon, 27 Apr 2026 22:33:32 +0100 Subject: [PATCH] feat: /plugins as alias for /plugin Both /plugin and /plugins now work identically. Tab completion includes both forms. --- src/agent/commands.ts | 14 +++++++++++--- src/agent/slash-commands.ts | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/agent/commands.ts b/src/agent/commands.ts index 00e81be..fba4abd 100644 --- a/src/agent/commands.ts +++ b/src/agent/commands.ts @@ -483,9 +483,17 @@ const COMMANDS: readonly CommandEntry[] = Object.freeze([ ]); /** Pre-computed completion strings for the readline completer. */ -export const COMPLETION_STRINGS: readonly string[] = COMMANDS.map( - (c) => c.completion, -); +export const COMPLETION_STRINGS: readonly string[] = [ + ...COMMANDS.map((c) => c.completion), + // Aliases — /plugins is shorthand for /plugin + "/plugins list", + "/plugins info ", + "/plugins enable ", + "/plugins disable ", + "/plugins approve ", + "/plugins unapprove ", + "/plugins audit ", +]; /** * Render the full help text from the COMMANDS registry. diff --git a/src/agent/slash-commands.ts b/src/agent/slash-commands.ts index fa71f4e..8db22d7 100644 --- a/src/agent/slash-commands.ts +++ b/src/agent/slash-commands.ts @@ -806,7 +806,9 @@ export async function handleSlashCommand( // ── Plugin Commands ────────────────────────────────────── // // All plugin operations live under /plugin . + // /plugins is an alias for /plugin. + case "/plugins": case "/plugin": { const subCmd = parts[1]?.toLowerCase(); // Plugin name sits at parts[2], args at parts[3]+.