diff options
| author | Adam <[email protected]> | 2025-09-19 06:05:05 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-09-19 07:18:39 -0500 |
| commit | b1e6b9c7c9ebed944f8267bd0fb90404eba546fb (patch) | |
| tree | b2f814e012c1285c94d8262f6041186f7c93af64 /packages/app/src/context | |
| parent | 20cb5a7c5657db6efe0cfed3e0de09dbb3d7bd2b (diff) | |
| download | opencode-b1e6b9c7c9ebed944f8267bd0fb90404eba546fb.tar.gz opencode-b1e6b9c7c9ebed944f8267bd0fb90404eba546fb.zip | |
wip: desktop work
Diffstat (limited to 'packages/app/src/context')
| -rw-r--r-- | packages/app/src/context/local.tsx | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index 161166ba6..eff152642 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -24,22 +24,26 @@ function init() { const sdk = useSDK() const sync = useSync() - const agents = createMemo(() => sync.data.agent.filter((x) => x.mode !== "subagent")) + const list = createMemo(() => sync.data.agent.filter((x) => x.mode !== "subagent")) const agent = (() => { const [store, setStore] = createStore<{ current: string }>({ - current: agents()[0].name, + current: list()[0].name, }) return { + list, current() { - return agents().find((x) => x.name === store.current)! + return list().find((x) => x.name === store.current)! + }, + set(name: string | undefined) { + setStore("current", name ?? list()[0].name) }, move(direction: 1 | -1) { - let next = agents().findIndex((x) => x.name === store.current) + direction - if (next < 0) next = agents().length - 1 - if (next >= agents().length) next = 0 - const value = agents()[next] + let next = list().findIndex((x) => x.name === store.current) + direction + if (next < 0) next = list().length - 1 + if (next >= list().length) next = 0 + const value = list()[next] setStore("current", value.name) if (value.model) model.set({ @@ -89,7 +93,12 @@ function init() { return store.model[agent.current().name] ?? (a.model ? a.model : fallback()) }) + const list = createMemo(() => + sync.data.provider.flatMap((x) => Object.values(x.models).map((m) => ({ providerID: x.id, modelID: m.id }))), + ) + return { + list, current, recent() { return store.recent @@ -103,10 +112,10 @@ function init() { model: model.name ?? value.modelID, } }), - set(model: { providerID: string; modelID: string }, options?: { recent?: boolean }) { + set(model: { providerID: string; modelID: string } | undefined, options?: { recent?: boolean }) { batch(() => { - setStore("model", agent.current().name, model) - if (options?.recent) { + setStore("model", agent.current().name, model ?? fallback()) + if (options?.recent && model) { const uniq = uniqueBy([model, ...store.recent], (x) => x.providerID + x.modelID) if (uniq.length > 5) uniq.pop() setStore("recent", uniq) |
