fix(app): no default model crash

This commit is contained in:
adamelmore
2026-01-25 07:01:17 -06:00
parent e9152b174f
commit f7a4cdcd32

View File

@@ -126,7 +126,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
)
const [ephemeral, setEphemeral] = createStore<{
model: Record<string, ModelKey>
model: Record<string, ModelKey | undefined>
}>({
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<ModelKey | undefined>(() => {
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)