diff --git a/src/auto-reply/thinking.levels.test.ts b/src/auto-reply/thinking.levels.test.ts index 62243377c1ea..21f3d6d83c4f 100644 --- a/src/auto-reply/thinking.levels.test.ts +++ b/src/auto-reply/thinking.levels.test.ts @@ -708,6 +708,35 @@ describe("listThinkingLevels", () => { ).toBe(true); }); + it("does not treat provider-native effort labels as user thinking aliases", () => { + const catalog = [ + { + provider: "custom", + id: "native-efforts", + api: "openai-completions", + reasoning: true, + compat: { supportedReasoningEfforts: ["high", "XHIGH", "MAX", "extra-high", "auto"] }, + }, + ]; + + expect(listThinkingLevels("custom", "native-efforts", catalog, "openclaw")).toEqual([ + "off", + "minimal", + "low", + "medium", + "high", + ]); + expect( + isThinkingLevelSupported({ + provider: "custom", + model: "native-efforts", + level: "max", + catalog, + agentRuntime: "openclaw", + }), + ).toBe(false); + }); + it("uses advanced catalog efforts and derives OpenClaw Ultra from Max", () => { const catalog = [ { diff --git a/src/auto-reply/thinking.ts b/src/auto-reply/thinking.ts index f0d26542838b..84566b69fe5d 100644 --- a/src/auto-reply/thinking.ts +++ b/src/auto-reply/thinking.ts @@ -240,8 +240,7 @@ function appendCatalogAdvancedThinkingLevels( } } let supportsMax = profile.levels.some(({ id }) => id === "max"); - for (const effort of compat?.supportedReasoningEfforts ?? []) { - const level = normalizeThinkLevel(effort); + for (const level of compat?.supportedReasoningEfforts ?? []) { if ( level === "ultra" || ((level === "adaptive" || level === "xhigh" || level === "max") &&