From f7a4cdcd32fd07d91ff24935ce2eacc69f2413a3 Mon Sep 17 00:00:00 2001 From: adamelmore <2363879+adamdottv@users.noreply.github.com> Date: Sun, 25 Jan 2026 07:01:17 -0600 Subject: [PATCH] fix(app): no default model crash --- packages/app/src/context/local.tsx | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index 4a585e06b..43d47e1b1 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -126,7 +126,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ ) const [ephemeral, setEphemeral] = createStore<{ - model: Record + model: Record }>({ model: {}, }) @@ -182,7 +182,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const find = (key: ModelKey) => list().find((m) => m.id === key?.modelID && m.provider.id === key.providerID) - const fallbackModel = createMemo(() => { + const fallbackModel = createMemo(() => { if (sync.data.config.model) { const [providerID, modelID] = sync.data.config.model.split("/") if (isModelValid({ providerID, modelID })) { @@ -199,16 +199,21 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ } } + const defaults = providers.default() for (const p of providers.connected()) { - if (p.id in providers.default()) { - return { - providerID: p.id, - modelID: providers.default()[p.id], - } + const configured = defaults[p.id] + if (configured) { + const key = { providerID: p.id, modelID: configured } + if (isModelValid(key)) return key } + + const first = Object.values(p.models)[0] + if (!first) continue + const key = { providerID: p.id, modelID: first.id } + if (isModelValid(key)) return key } - throw new Error("No default model found") + return undefined }) const current = createMemo(() => { @@ -266,7 +271,8 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ set(model: ModelKey | undefined, options?: { recent?: boolean }) { batch(() => { const currentAgent = agent.current() - if (currentAgent) setEphemeral("model", currentAgent.name, model ?? fallbackModel()) + const next = model ?? fallbackModel() + if (currentAgent) setEphemeral("model", currentAgent.name, next) if (model) updateVisibility(model, "show") if (options?.recent && model) { const uniq = uniqueBy([model, ...store.recent], (x) => x.providerID + x.modelID)