Przeglądaj źródła

fix(core): preserve Copilot fallback provider (#42099)

Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
opencode-agent[bot] 5 dni temu
rodzic
commit
c7bee09632

+ 3 - 2
packages/core/src/plugin/provider/github-copilot.ts

@@ -204,10 +204,11 @@ export const GithubCopilotPlugin = define({
         for (const [id, model] of loaded.models) {
           evt.model.update(item.provider.id, id, (draft) => Object.assign(draft, structuredClone(model)))
         }
-      } else if (loaded.baseURL) {
+      } else {
         for (const id of item.models.keys()) {
           evt.model.update(item.provider.id, id, (model) => {
-            model.settings = Provider.mergeOverlay(model.settings, { baseURL: loaded.baseURL })
+            model.package = "@ai-sdk/github-copilot"
+            if (loaded.baseURL) model.settings = Provider.mergeOverlay(model.settings, { baseURL: loaded.baseURL })
           })
         }
       }

+ 16 - 0
packages/core/test/plugin/provider-github-copilot.test.ts

@@ -195,6 +195,22 @@ describe("GithubCopilotPlugin", () => {
     }),
   )
 
+  it.effect("rewrites models.dev fallback models to the GitHub Copilot package", () =>
+    Effect.gen(function* () {
+      const catalog = yield* Catalog.Service
+      yield* catalog.transform((catalog) => {
+        catalog.provider.update(Provider.ID.githubCopilot, () => {})
+        catalog.model.update(Provider.ID.githubCopilot, Model.ID.make("gpt-5.6-sol"), (model) => {
+          model.package = "@ai-sdk/openai-compatible"
+        })
+      })
+      yield* addPlugin()
+      expect(required(yield* catalog.model.get(Provider.ID.githubCopilot, Model.ID.make("gpt-5.6-sol"))).package).toBe(
+        "@ai-sdk/github-copilot",
+      )
+    }),
+  )
+
   it.effect("selects languageModel when responses and chat are absent", () =>
     Effect.gen(function* () {
       const plugin = yield* Plugin.Service