summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context
diff options
context:
space:
mode:
authorOpeOginni <[email protected]>2026-03-05 13:26:20 +0100
committerGitHub <[email protected]>2026-03-05 06:26:20 -0600
commita60e715fc6b1e90e7bfcf8ee6db6d6d1c30643f6 (patch)
tree37a382d80651ef83aef2ef17c4a12e4dd8149ebf /packages/app/src/context
parent161734fb951541642fd7c6d4e20458542df18ee9 (diff)
downloadopencode-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.tsx30
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)
},
}
})()