diff --git a/src/agents/provider-capabilities.test.ts b/src/agents/provider-capabilities.test.ts index e6dba7c11c4..7c364dc710d 100644 --- a/src/agents/provider-capabilities.test.ts +++ b/src/agents/provider-capabilities.test.ts @@ -118,6 +118,26 @@ describe("resolveProviderCapabilities", () => { }); }); + it("preserves built-in fallback capability hints when plugin overrides are partial", () => { + resolveProviderCapabilitiesWithPluginMock.mockImplementationOnce(() => ({ + providerFamily: "anthropic", + })); + + expect(resolveProviderCapabilities("anthropic")).toEqual({ + anthropicToolSchemaMode: "native", + anthropicToolChoiceMode: "native", + openAiPayloadNormalizationMode: "default", + providerFamily: "anthropic", + preserveAnthropicThinkingSignatures: true, + openAiCompatTurnValidation: true, + geminiThoughtSignatureSanitization: false, + transcriptToolCallIdMode: "default", + transcriptToolCallIdModelHints: [], + geminiThoughtSignatureModelHints: [], + dropThinkingBlockModelHints: ["claude"], + }); + }); + it("normalizes kimi aliases to the same capability set", () => { expect(resolveProviderCapabilities("kimi")).toEqual(resolveProviderCapabilities("kimi-code")); expect(resolveProviderCapabilities("kimi-code")).toEqual({ diff --git a/src/agents/provider-capabilities.ts b/src/agents/provider-capabilities.ts index c3424956ecf..8e94dd200aa 100644 --- a/src/agents/provider-capabilities.ts +++ b/src/agents/provider-capabilities.ts @@ -119,7 +119,8 @@ export function resolveProviderCapabilities( return { ...DEFAULT_PROVIDER_CAPABILITIES, ...CORE_PROVIDER_CAPABILITIES[normalized], - ...(pluginCapabilities ?? PLUGIN_CAPABILITIES_FALLBACKS[normalized]), + ...PLUGIN_CAPABILITIES_FALLBACKS[normalized], + ...pluginCapabilities, }; }