From 3d96c604baa4da3cd2943b0b05ae31075b10aace Mon Sep 17 00:00:00 2001 From: Cole Leavitt Date: Wed, 4 Mar 2026 14:54:55 -0700 Subject: [PATCH] fix: sdk.responses fallback + codex baseURL correction - Add fallback checks for sdk.responses in openai, azure, azure-cognitive-services loaders - Fix gpt-5.3-codex to use correct OpenAI API baseURL instead of ChatGPT backend endpoint --- packages/opencode/src/plugin/codex.ts | 2 +- packages/opencode/src/provider/provider.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/plugin/codex.ts b/packages/opencode/src/plugin/codex.ts index 56931b2ed62c..aef114a91357 100644 --- a/packages/opencode/src/plugin/codex.ts +++ b/packages/opencode/src/plugin/codex.ts @@ -377,7 +377,7 @@ export async function CodexAuthPlugin(input: PluginInput): Promise { providerID: "openai", api: { id: "gpt-5.3-codex", - url: "https://chatgpt.com/backend-api/codex", + url: "https://api.openai.com/v1", npm: "@ai-sdk/openai", }, name: "GPT-5.3 Codex", diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 817038365246..3c0182a054ef 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -154,6 +154,8 @@ export namespace Provider { return { autoload: false, async getModel(sdk: any, modelID: string, _options?: Record) { + // Fallback to languageModel if responses is not available (e.g., @ai-sdk/openai-compatible) + if (sdk.responses === undefined) return sdk.languageModel(modelID) return sdk.responses(modelID) }, options: {}, @@ -183,11 +185,11 @@ export namespace Provider { return { autoload: false, async getModel(sdk: any, modelID: string, options?: Record) { + // Fallback to languageModel if responses/chat are not available if (options?.["useCompletionUrls"]) { - return sdk.chat(modelID) - } else { - return sdk.responses(modelID) + return sdk.chat ? sdk.chat(modelID) : sdk.languageModel(modelID) } + return sdk.responses ? sdk.responses(modelID) : sdk.languageModel(modelID) }, options: {}, } @@ -197,11 +199,11 @@ export namespace Provider { return { autoload: false, async getModel(sdk: any, modelID: string, options?: Record) { + // Fallback to languageModel if responses/chat are not available if (options?.["useCompletionUrls"]) { - return sdk.chat(modelID) - } else { - return sdk.responses(modelID) + return sdk.chat ? sdk.chat(modelID) : sdk.languageModel(modelID) } + return sdk.responses ? sdk.responses(modelID) : sdk.languageModel(modelID) }, options: { baseURL: resourceName ? `https://${resourceName}.cognitiveservices.azure.com/openai` : undefined,