diff options
| author | Smit Chaudhary <[email protected]> | 2026-02-12 23:13:48 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-12 16:13:48 -0600 |
| commit | 93eee0daf40668a487bdbda439147ad13c8d13cc (patch) | |
| tree | 5d40fcb346cf1d6189ae3ecca46ef4b24ae0be46 | |
| parent | 445e0d76765d745ee59a16eb13eb3206f6037cce (diff) | |
| download | opencode-93eee0daf40668a487bdbda439147ad13c8d13cc.tar.gz opencode-93eee0daf40668a487bdbda439147ad13c8d13cc.zip | |
fix: look for recent model in fallback in cli (#12582)
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index d76cc902a..f72d9d0ed 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -14,6 +14,8 @@ import { Env } from "../env" import { Instance } from "../project/instance" import { Flag } from "../flag/flag" import { iife } from "@/util/iife" +import { Global } from "../global" +import path from "path" // Direct imports for bundled providers import { createAmazonBedrock, type AmazonBedrockProviderSettings } from "@ai-sdk/amazon-bedrock" @@ -1229,9 +1231,21 @@ export namespace Provider { const cfg = await Config.get() if (cfg.model) return parseModel(cfg.model) - const provider = await list() - .then((val) => Object.values(val)) - .then((x) => x.find((p) => !cfg.provider || Object.keys(cfg.provider).includes(p.id))) + const providers = await list() + const recent = (await Bun.file(path.join(Global.Path.state, "model.json")) + .json() + .then((x) => (Array.isArray(x.recent) ? x.recent : [])) + .catch(() => [])) as { providerID: string; modelID: string }[] + for (const entry of recent) { + const provider = providers[entry.providerID] + if (!provider) continue + if (!provider.models[entry.modelID]) continue + return { providerID: entry.providerID, modelID: entry.modelID } + } + + const provider = Object.values(providers).find( + (p) => !cfg.provider || Object.keys(cfg.provider).includes(p.id), + ) if (!provider) throw new Error("no providers found") const [model] = sort(Object.values(provider.models)) if (!model) throw new Error("no models found") |
