From ca57d9ca7726462257785777a5a827e3f8da58eb Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Sat, 10 Oct 2026 18:09:31 -0500 Subject: [PATCH] fix(core): follow models.dev packages for Copilot fallback routing --- .../core/src/plugin/provider/github-copilot.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/core/src/plugin/provider/github-copilot.ts b/packages/core/src/plugin/provider/github-copilot.ts index 86fbe6fd3e85..19de498c5e81 100644 --- a/packages/core/src/plugin/provider/github-copilot.ts +++ b/packages/core/src/plugin/provider/github-copilot.ts @@ -226,10 +226,22 @@ export const GithubCopilotPlugin = define({ }) return } + // Without the live model list, the models.dev package says which Copilot API serves + // each model: Anthropic Messages stays native, OpenAI means Responses, and anything + // else goes through the bundled Copilot SDK's model ID fallback. for (const id of item.models.keys()) { evt.models.update(item.provider.id, id, (model) => { + if (model.package === "@opencode/ai/providers/anthropic") { + if (loaded.baseURL) + model.settings = Provider.mergeOverlay(model.settings, { baseURL: `${loaded.baseURL}/v1` }) + return + } + const responses = model.package === "@opencode/ai/providers/openai" model.package = Provider.aisdk("@ai-sdk/github-copilot") - if (loaded.baseURL) model.settings = Provider.mergeOverlay(model.settings, { baseURL: loaded.baseURL }) + model.settings = Provider.mergeOverlay(model.settings, { + ...(loaded.baseURL ? { baseURL: loaded.baseURL } : {}), + ...(responses ? { endpoint: "responses" } : {}), + }) }) } })