Skip to content

Commit d276d96

Browse files
authored
fix(app): remember selected model variant when switching sessions/projects (anomalyco#27029)
1 parent caf1151 commit d276d96

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

packages/app/src/context/local.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const migrate = (value: unknown) => {
4444
}
4545

4646
const clone = (value: State | undefined) => {
47-
if (!value) return undefined
47+
if (!value) return
4848
return {
4949
...value,
5050
model: value.model ? { ...value.model } : undefined,
@@ -104,7 +104,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
104104

105105
const pickAgent = (name: string | undefined) => {
106106
const items = list()
107-
if (items.length === 0) return undefined
107+
if (items.length === 0) return
108108
return items.find((item) => item.name === name) ?? items[0]
109109
}
110110

@@ -227,14 +227,14 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
227227
() => agent.current()?.model,
228228
fallback,
229229
)
230-
if (!item) return undefined
230+
if (!item) return
231231
return models.find(item)
232232
}
233233

234234
const configured = () => {
235235
const item = agent.current()
236236
const model = current()
237-
if (!item || !model) return undefined
237+
if (!item || !model) return
238238
return getConfiguredAgentVariant({
239239
agent: { model: item.model, variant: item.variant },
240240
model: { providerID: model.provider.id, modelID: model.id, variants: model.variants },
@@ -314,11 +314,16 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
314314
configured,
315315
selected,
316316
current() {
317-
return resolveModelVariant({
317+
const resolved = resolveModelVariant({
318318
variants: this.list(),
319319
selected: this.selected(),
320320
configured: this.configured(),
321321
})
322+
if (resolved) return resolved
323+
const model = current()
324+
if (!model) return
325+
const saved = models.variant.get({ providerID: model.provider.id, modelID: model.id })
326+
if (saved && this.list().includes(saved)) return saved
322327
},
323328
list() {
324329
const item = current()
@@ -335,6 +340,9 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
335340
variant: value ?? null,
336341
})
337342
write({ variant: value ?? null })
343+
if (model) {
344+
models.variant.set({ providerID: model.provider.id, modelID: model.id }, value ?? undefined)
345+
}
338346
})
339347
},
340348
cycle() {

0 commit comments

Comments
 (0)