diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index 2a71bcea0141..415da747e0be 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -80,6 +80,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const [store, setStore] = createStore<{ current?: string draft?: State + promoting?: State last?: { type: "agent" | "model" | "variant" agent?: string @@ -123,7 +124,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const scope = createMemo(() => { const session = id() - if (!session) return store.draft + if (!session) return store.draft ?? store.promoting return saved.session[session] ?? handoff.get(handoffKey(serverSDK().scope, sdk().directory, session)) }) @@ -136,11 +137,13 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ if (!next) return if (saved.session[session] !== undefined) { handoff.delete(key) + setStore("promoting", undefined) return } setSaved("session", session, clone(next)) handoff.delete(key) + setStore("promoting", undefined) }) const configuredModel = () => { @@ -373,19 +376,19 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ agent, session: { reset() { - setStore("draft", undefined) + setStore({ draft: undefined, promoting: undefined }) }, promote(dir: string, session: string) { const next = clone(snapshot()) if (!next) return + const key = handoffKey(serverSDK().scope, dir, session) + handoff.set(key, next) if (dir === sdk().directory) { setSaved("session", session, next) - setStore("draft", undefined) - return } - handoff.set(handoffKey(serverSDK().scope, dir, session), next) + setStore("promoting", next) setStore("draft", undefined) }, restore(msg: { sessionID: string; agent: string; model: ModelKey }) {