diff options
| author | Huang Qi <[email protected]> | 2025-11-24 12:51:15 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-23 22:51:15 -0600 |
| commit | b4fd4bb25757250b1bcd4da9e6398011ed07e2f3 (patch) | |
| tree | e375771ea914623f174eafd9d5d25961f15acb95 | |
| parent | eb009d595921e1cdc91f8c2e396e0a86e3b66117 (diff) | |
| download | opencode-b4fd4bb25757250b1bcd4da9e6398011ed07e2f3.tar.gz opencode-b4fd4bb25757250b1bcd4da9e6398011ed07e2f3.zip | |
fix: add explicit fallback model and prevent direct opencode provider calls (#4653)
Co-authored-by: Aiden Cline <[email protected]>
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 9 | ||||
| -rw-r--r-- | packages/opencode/src/session/prompt.ts | 3 | ||||
| -rw-r--r-- | packages/opencode/src/session/summary.ts | 5 |
3 files changed, 14 insertions, 3 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index d632085cf..e6f7f5f88 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -685,7 +685,14 @@ export namespace Provider { } } } - return getModel("opencode", "gpt-5-nano") + + // Check if opencode provider is available before using it + const opencodeProvider = await state().then((state) => state.providers["opencode"]) + if (opencodeProvider && opencodeProvider.info.models["gpt-5-nano"]) { + return getModel("opencode", "gpt-5-nano") + } + + return undefined } const priority = ["gpt-5", "claude-sonnet-4", "big-pickle", "gemini-3-pro"] diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index f550005b3..b3c3c4671 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1408,7 +1408,8 @@ export namespace SessionPrompt { input.history.filter((m) => m.info.role === "user" && !m.parts.every((p) => "synthetic" in p && p.synthetic)) .length === 1 if (!isFirst) return - const small = await Provider.getSmallModel(input.providerID) + const small = + (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID)) const options = pipe( {}, mergeDeep(ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", input.session.id)), diff --git a/packages/opencode/src/session/summary.ts b/packages/opencode/src/session/summary.ts index de2ef2e5c..d9247f182 100644 --- a/packages/opencode/src/session/summary.ts +++ b/packages/opencode/src/session/summary.ts @@ -73,7 +73,10 @@ export namespace SessionSummary { await Session.updateMessage(userMsg) const assistantMsg = messages.find((m) => m.info.role === "assistant")!.info as MessageV2.Assistant - const small = await Provider.getSmallModel(assistantMsg.providerID) + const small = + (await Provider.getSmallModel(assistantMsg.providerID)) ?? + (await Provider.getModel(assistantMsg.providerID, assistantMsg.modelID)) + const options = pipe( {}, mergeDeep(ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", assistantMsg.sessionID)), |
