diff options
| author | OpeOginni <[email protected]> | 2026-03-05 13:26:20 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-05 06:26:20 -0600 |
| commit | a60e715fc6b1e90e7bfcf8ee6db6d6d1c30643f6 (patch) | |
| tree | 37a382d80651ef83aef2ef17c4a12e4dd8149ebf /packages/app/src/context | |
| parent | 161734fb951541642fd7c6d4e20458542df18ee9 (diff) | |
| download | opencode-a60e715fc6b1e90e7bfcf8ee6db6d6d1c30643f6.tar.gz opencode-a60e715fc6b1e90e7bfcf8ee6db6d6d1c30643f6.zip | |
fix(app): improve agent selection logic passing in configured models and variants correctly (#16072)
Diffstat (limited to 'packages/app/src/context')
| -rw-r--r-- | packages/app/src/context/local.tsx | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index ac5da60e8..15afb302c 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -35,6 +35,8 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const agent = (() => { const list = createMemo(() => sync.data.agent.filter((x) => x.mode !== "subagent" && !x.hidden)) + const models = useModels() + const [store, setStore] = createStore<{ current?: string }>({ @@ -53,11 +55,17 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ setStore("current", undefined) return } - if (name && available.some((x) => x.name === name)) { - setStore("current", name) - return - } - setStore("current", available[0].name) + const match = name ? available.find((x) => x.name === name) : undefined + const value = match ?? available[0] + if (!value) return + setStore("current", value.name) + if (!value.model) return + setModel({ + providerID: value.model.providerID, + modelID: value.model.modelID, + }) + if (value.variant) + models.variant.set({ providerID: value.model.providerID, modelID: value.model.modelID }, value.variant) }, move(direction: 1 | -1) { const available = list() @@ -71,11 +79,13 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const value = available[next] if (!value) return setStore("current", value.name) - if (value.model) - setModel({ - providerID: value.model.providerID, - modelID: value.model.modelID, - }) + if (!value.model) return + setModel({ + providerID: value.model.providerID, + modelID: value.model.modelID, + }) + if (value.variant) + models.variant.set({ providerID: value.model.providerID, modelID: value.model.modelID }, value.variant) }, } })() |
