Ver Fonte

fix(opencode): allow empty provider config default (#34167)

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
opencode-agent[bot] há 2 meses atrás
pai
commit
9903abc704

+ 2 - 1
packages/opencode/src/provider/provider.ts

@@ -1934,7 +1934,8 @@ export const layer = Layer.effect(
         return { providerID: entry.providerID, modelID: entry.modelID }
       }
 
-      const provider = Object.values(s.providers).find((p) => !cfg.provider || Object.keys(cfg.provider).includes(p.id))
+      const configured = Object.keys(cfg.provider ?? {})
+      const provider = Object.values(s.providers).find((p) => configured.length === 0 || configured.includes(p.id))
       if (!provider) return yield* new NoProvidersError()
       const [model] = sort(Object.values(provider.models))
       if (!model) return yield* new NoModelsError({ providerID: provider.id })

+ 11 - 0
packages/opencode/test/provider/provider.test.ts

@@ -356,6 +356,17 @@ it.instance(
   { config: { model: "anthropic/claude-sonnet-4-20250514" } },
 )
 
+it.instance(
+  "defaultModel treats empty provider config as no allowlist",
+  Effect.gen(function* () {
+    yield* setProcessEnv("ANTHROPIC_API_KEY", "test-api-key")
+    const model = yield* Provider.use.defaultModel()
+    expect(model.providerID).toBeDefined()
+    expect(model.modelID).toBeDefined()
+  }),
+  { config: { provider: {} } },
+)
+
 it.instance(
   "defaultModel returns a typed error when config excludes every provider",
   Effect.gen(function* () {