summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSmit Chaudhary <[email protected]>2026-02-12 23:13:48 +0100
committerGitHub <[email protected]>2026-02-12 16:13:48 -0600
commit93eee0daf40668a487bdbda439147ad13c8d13cc (patch)
tree5d40fcb346cf1d6189ae3ecca46ef4b24ae0be46
parent445e0d76765d745ee59a16eb13eb3206f6037cce (diff)
downloadopencode-93eee0daf40668a487bdbda439147ad13c8d13cc.tar.gz
opencode-93eee0daf40668a487bdbda439147ad13c8d13cc.zip
fix: look for recent model in fallback in cli (#12582)
-rw-r--r--packages/opencode/src/provider/provider.ts20
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")