diff options
| author | Sewer. <[email protected]> | 2026-05-01 00:05:56 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-30 18:05:56 -0500 |
| commit | a12333310f795b92d524634d7b9e2daab8909dfc (patch) | |
| tree | a5a158cd3d20b5773a29dd81e1c0afa0c5bc11cf | |
| parent | 247284b9af5b8dae84ef4746163badef863c9230 (diff) | |
| download | opencode-a12333310f795b92d524634d7b9e2daab8909dfc.tar.gz opencode-a12333310f795b92d524634d7b9e2daab8909dfc.zip | |
fix(provider): split providerOptions key on dot for openai-compatible, openai, and anthropic providers (#25145)
| -rw-r--r-- | packages/opencode/src/provider/transform.ts | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index d47d1fe76..d97e9cb87 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1058,7 +1058,20 @@ export function providerOptions(model: Provider.Model, options: { [x: string]: a return result } - const key = sdkKey(model.api.npm) ?? model.providerID + // AI SDK packages that resolve providerOptionsName by splitting the + // provider name on "." (e.g. "wafer.ai" -> "wafer") need the same + // logic here so the key we write matches the key they read. + // Other SDKs (xai, mistral, groq, cohere, etc.) use hardcoded keys + // like "xai" or "cohere" - applying .split(".")[0] would break those. + const usesDotSplitOptions = + model.api.npm === "@ai-sdk/openai-compatible" || + model.api.npm === "@ai-sdk/openai" || + model.api.npm === "@ai-sdk/anthropic" + const key = + sdkKey(model.api.npm) ?? + (usesDotSplitOptions + ? model.providerID.split(".")[0] + : model.providerID) // @ai-sdk/azure delegates to OpenAIChatLanguageModel which reads from // providerOptions["openai"], but OpenAIResponsesLanguageModel checks // "azure" first. Pass both so model options work on either code path. |
