From 32bcd291d58925255d5d6f71a8fe018c20da3313 Mon Sep 17 00:00:00 2001 From: uos-status <_uosstatus@blechst.at> Date: Sun, 25 Jan 2026 11:02:12 +0100 Subject: [PATCH] Fix models command (#1753) * Auto-reply: ignore /models in model directive * Auto-reply: add /models directive regression test * Auto-reply: cover bare /models regression --------- Co-authored-by: Clawdbot Bot --- src/auto-reply/model.test.ts | 14 ++++++++++---- src/auto-reply/model.ts | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/auto-reply/model.test.ts b/src/auto-reply/model.test.ts index 4a5aa7714..de1fb6a8a 100644 --- a/src/auto-reply/model.test.ts +++ b/src/auto-reply/model.test.ts @@ -10,11 +10,17 @@ describe("extractModelDirective", () => { expect(result.cleaned).toBe(""); }); - it("extracts /models with argument", () => { + it("does not treat /models as a /model directive", () => { const result = extractModelDirective("/models gpt-5"); - expect(result.hasDirective).toBe(true); - expect(result.rawModel).toBe("gpt-5"); - expect(result.cleaned).toBe(""); + expect(result.hasDirective).toBe(false); + expect(result.rawModel).toBeUndefined(); + expect(result.cleaned).toBe("/models gpt-5"); + }); + + it("does not parse /models as a /model directive (no args)", () => { + const result = extractModelDirective("/models"); + expect(result.hasDirective).toBe(false); + expect(result.cleaned).toBe("/models"); }); it("extracts /model with provider/model format", () => { diff --git a/src/auto-reply/model.ts b/src/auto-reply/model.ts index 24dd8ea0c..450a016b6 100644 --- a/src/auto-reply/model.ts +++ b/src/auto-reply/model.ts @@ -14,7 +14,7 @@ export function extractModelDirective( if (!body) return { cleaned: "", hasDirective: false }; const modelMatch = body.match( - /(?:^|\s)\/models?(?=$|\s|:)\s*:?\s*([A-Za-z0-9_.:@-]+(?:\/[A-Za-z0-9_.:@-]+)*)?/i, + /(?:^|\s)\/model(?=$|\s|:)\s*:?\s*([A-Za-z0-9_.:@-]+(?:\/[A-Za-z0-9_.:@-]+)*)?/i, ); const aliases = (options?.aliases ?? []).map((alias) => alias.trim()).filter(Boolean);