diff options
| author | Dax <[email protected]> | 2026-04-07 10:12:53 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-07 10:12:53 -0400 |
| commit | 1f94c48bdd7ea69f05574ae90f20436a801c9ca2 (patch) | |
| tree | 3d710ffba3877c7fa5b7f59376a5a50543d7e0e0 /packages/app/src | |
| parent | 01c5eb679cd0b00cba654b316ef8615d0262c500 (diff) | |
| download | opencode-1f94c48bdd7ea69f05574ae90f20436a801c9ca2.tar.gz opencode-1f94c48bdd7ea69f05574ae90f20436a801c9ca2.zip | |
fix(opencode): keep user message variants scoped to model (#21332)
Diffstat (limited to 'packages/app/src')
| -rw-r--r-- | packages/app/src/components/prompt-input/submit.test.ts | 5 | ||||
| -rw-r--r-- | packages/app/src/components/prompt-input/submit.ts | 3 | ||||
| -rw-r--r-- | packages/app/src/context/local.tsx | 6 | ||||
| -rw-r--r-- | packages/app/src/context/sync.tsx | 3 | ||||
| -rw-r--r-- | packages/app/src/pages/session/session-model-helpers.test.ts | 9 |
5 files changed, 12 insertions, 14 deletions
diff --git a/packages/app/src/components/prompt-input/submit.test.ts b/packages/app/src/components/prompt-input/submit.test.ts index b0166c43a..03bece2e3 100644 --- a/packages/app/src/components/prompt-input/submit.test.ts +++ b/packages/app/src/components/prompt-input/submit.test.ts @@ -146,7 +146,7 @@ beforeAll(async () => { add: (value: { directory?: string sessionID?: string - message: { agent: string; model: { providerID: string; modelID: string }; variant?: string } + message: { agent: string; model: { providerID: string; modelID: string; variant?: string } } }) => { optimistic.push(value) optimisticSeeded.push( @@ -310,8 +310,7 @@ describe("prompt submit worktree selection", () => { expect(optimistic[0]).toMatchObject({ message: { agent: "agent", - model: { providerID: "provider", modelID: "model" }, - variant: "high", + model: { providerID: "provider", modelID: "model", variant: "high" }, }, }) }) diff --git a/packages/app/src/components/prompt-input/submit.ts b/packages/app/src/components/prompt-input/submit.ts index 06b6c1e35..2a3a3d0e9 100644 --- a/packages/app/src/components/prompt-input/submit.ts +++ b/packages/app/src/components/prompt-input/submit.ts @@ -121,8 +121,7 @@ export async function sendFollowupDraft(input: FollowupSendInput) { role: "user", time: { created: Date.now() }, agent: input.draft.agent, - model: input.draft.model, - variant: input.draft.variant, + model: { ...input.draft.model, variant: input.draft.variant }, } const add = () => diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index 84a613c0d..1633607de 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -11,7 +11,7 @@ import { cycleModelVariant, getConfiguredAgentVariant, resolveModelVariant } fro import { useSDK } from "./sdk" import { useSync } from "./sync" -export type ModelKey = { providerID: string; modelID: string } +export type ModelKey = { providerID: string; modelID: string; variant?: string } type State = { agent?: string @@ -373,7 +373,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ handoff.set(handoffKey(dir, session), next) setStore("draft", undefined) }, - restore(msg: { sessionID: string; agent: string; model: ModelKey; variant?: string }) { + restore(msg: { sessionID: string; agent: string; model: ModelKey }) { const session = id() if (!session) return if (msg.sessionID !== session) return @@ -383,7 +383,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ setSaved("session", session, { agent: msg.agent, model: msg.model, - variant: msg.variant ?? null, + variant: msg.model.variant ?? null, }) }, }, diff --git a/packages/app/src/context/sync.tsx b/packages/app/src/context/sync.tsx index bbf4fc5ec..b023e8ddc 100644 --- a/packages/app/src/context/sync.tsx +++ b/packages/app/src/context/sync.tsx @@ -416,8 +416,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ role: "user", time: { created: Date.now() }, agent: input.agent, - model: input.model, - variant: input.variant, + model: { ...input.model, variant: input.variant }, } const [, setStore] = target() setOptimistic(sdk.directory, input.sessionID, { message, parts: input.parts }) diff --git a/packages/app/src/pages/session/session-model-helpers.test.ts b/packages/app/src/pages/session/session-model-helpers.test.ts index 319db805d..2ab293b8f 100644 --- a/packages/app/src/pages/session/session-model-helpers.test.ts +++ b/packages/app/src/pages/session/session-model-helpers.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test" import type { UserMessage } from "@opencode-ai/sdk/v2" import { resetSessionModel, syncSessionModel } from "./session-model-helpers" -const message = (input?: Partial<Pick<UserMessage, "agent" | "model" | "variant">>) => +const message = (input?: { agent?: string; model?: UserMessage["model"] }) => ({ id: "msg", sessionID: "session", @@ -10,7 +10,6 @@ const message = (input?: Partial<Pick<UserMessage, "agent" | "model" | "variant" time: { created: 1 }, agent: input?.agent ?? "build", model: input?.model ?? { providerID: "anthropic", modelID: "claude-sonnet-4" }, - variant: input?.variant, }) as UserMessage describe("syncSessionModel", () => { @@ -26,10 +25,12 @@ describe("syncSessionModel", () => { reset() {}, }, }, - message({ variant: "high" }), + message({ model: { providerID: "anthropic", modelID: "claude-sonnet-4", variant: "high" } }), ) - expect(calls).toEqual([message({ variant: "high" })]) + expect(calls).toEqual([ + message({ model: { providerID: "anthropic", modelID: "claude-sonnet-4", variant: "high" } }), + ]) }) }) |
