fix: preserve fallback provider capabilities under partial overrides

This commit is contained in:
Tak Hoffman
2026-03-27 20:40:49 -05:00
parent 43ba3ab6b5
commit 724a9cfdba
2 changed files with 22 additions and 1 deletions

View File

@@ -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({

View File

@@ -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,
};
}