diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index fdd4ccdfb619..c75d151ad697 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -1033,6 +1033,12 @@ export namespace Provider { name: model.providerID, ...options, }) + if (model.api.npm.includes("@ai-sdk/openai-compatible") && model.options["responsesApiSupported"] === true) { + log.debug(`using responses api for ${model.id}`) + // the copilot openai compatible override is the only who exposes the responses api + // not even upstream @ai-sk/openai-compatible does + loaded.languageModel = createGitHubCopilotOpenAICompatible({name: model.providerID, ...options}).responses + } s.sdk.set(key, loaded) return loaded as SDK } diff --git a/packages/opencode/src/provider/sdk/openai-compatible/src/responses/openai-responses-language-model.ts b/packages/opencode/src/provider/sdk/openai-compatible/src/responses/openai-responses-language-model.ts index 0990b7e0077c..7510c0ca37e6 100644 --- a/packages/opencode/src/provider/sdk/openai-compatible/src/responses/openai-responses-language-model.ts +++ b/packages/opencode/src/provider/sdk/openai-compatible/src/responses/openai-responses-language-model.ts @@ -194,7 +194,7 @@ export class OpenAIResponsesLanguageModel implements LanguageModelV2 { } const openaiOptions = await parseProviderOptions({ - provider: "openai", + provider: this.config.provider.replace(".responses", ""), providerOptions, schema: openaiResponsesProviderOptionsSchema, })