Co-authored-by: Aiden Cline <[email protected]>
@@ -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"]
@@ -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)),
@@ -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)
+ (await Provider.getSmallModel(assistantMsg.providerID)) ??
+ (await Provider.getModel(assistantMsg.providerID, assistantMsg.modelID))
mergeDeep(ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", assistantMsg.sessionID)),