diff --git a/extensions/microsoft-foundry/index.test.ts b/extensions/microsoft-foundry/index.test.ts index 979d251dce9e..937d7665b112 100644 --- a/extensions/microsoft-foundry/index.test.ts +++ b/extensions/microsoft-foundry/index.test.ts @@ -1443,6 +1443,26 @@ describe("microsoft-foundry plugin", () => { { id: "max" }, ], }); + for (const modelName of ["claude-opus-4-6", "claude-sonnet-4-6"]) { + expect( + provider.resolveThinkingProfile?.({ + provider: "microsoft-foundry", + modelId: `prod-${modelName}`, + params: { canonicalModelId: modelName }, + }), + ).toMatchObject({ + defaultLevel: "adaptive", + levels: [ + { id: "off" }, + { id: "minimal" }, + { id: "low" }, + { id: "medium" }, + { id: "high" }, + { id: "adaptive" }, + { id: "max" }, + ], + }); + } expect( provider.resolveThinkingProfile?.({ provider: "microsoft-foundry", diff --git a/extensions/microsoft-foundry/provider.ts b/extensions/microsoft-foundry/provider.ts index d182ed13b9f0..2bf1e071b9c7 100644 --- a/extensions/microsoft-foundry/provider.ts +++ b/extensions/microsoft-foundry/provider.ts @@ -2,6 +2,7 @@ import type { ProviderNormalizeResolvedModelContext } from "openclaw/plugin-sdk/core"; import { resolveClaudeThinkingProfile, + supportsClaudeNativeMaxEffort, type ModelProviderConfig, type ProviderPlugin, } from "openclaw/plugin-sdk/provider-model-shared"; @@ -190,7 +191,9 @@ export function buildMicrosoftFoundryProvider(): ProviderPlugin { if (!capabilities.reasoning || capabilities.api !== "anthropic-messages") { return undefined; } - const profile = resolveClaudeThinkingProfile(capabilities.modelName); + const profile = resolveClaudeThinkingProfile(capabilities.modelName, undefined, { + includeNativeMax: supportsClaudeNativeMaxEffort({ id: capabilities.modelName }), + }); if (!isFoundryClaudeMythosPreview(capabilities.modelName)) { return profile; }