summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/session
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-07 07:00:38 -0600
committerAdam <[email protected]>2026-03-07 07:00:38 -0600
commit490b95efe7f50a7b0d25d9348dd599ce9c817b18 (patch)
tree3baee2ff2f6cc9920bb64ee2e7b5c00cbde15677 /packages/app/src/pages/session
parentba1edea0ab092a93772f5ad657809279f872f61e (diff)
downloadopencode-490b95efe7f50a7b0d25d9348dd599ce9c817b18.tar.gz
opencode-490b95efe7f50a7b0d25d9348dd599ce9c817b18.zip
fix(app): new session uses agent model/variant
Diffstat (limited to 'packages/app/src/pages/session')
-rw-r--r--packages/app/src/pages/session/session-model-helpers.test.ts77
-rw-r--r--packages/app/src/pages/session/session-model-helpers.ts15
2 files changed, 91 insertions, 1 deletions
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 ae8700ccd..5f554dcd3 100644
--- a/packages/app/src/pages/session/session-model-helpers.test.ts
+++ b/packages/app/src/pages/session/session-model-helpers.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test"
import type { UserMessage } from "@opencode-ai/sdk/v2"
-import { syncSessionModel } from "./session-model-helpers"
+import { resetSessionModel, syncSessionModel } from "./session-model-helpers"
const message = (input?: Partial<Pick<UserMessage, "agent" | "model" | "variant">>) =>
({
@@ -20,6 +20,9 @@ describe("syncSessionModel", () => {
syncSessionModel(
{
agent: {
+ current() {
+ return undefined
+ },
set(value) {
calls.push(["agent", value])
},
@@ -54,6 +57,9 @@ describe("syncSessionModel", () => {
syncSessionModel(
{
agent: {
+ current() {
+ return undefined
+ },
set(value) {
calls.push(["agent", value])
},
@@ -81,3 +87,72 @@ describe("syncSessionModel", () => {
])
})
})
+
+describe("resetSessionModel", () => {
+ test("restores the current agent defaults", () => {
+ const calls: unknown[] = []
+
+ resetSessionModel({
+ agent: {
+ current() {
+ return {
+ model: { providerID: "anthropic", modelID: "claude-sonnet-4" },
+ variant: "high",
+ }
+ },
+ set() {},
+ },
+ model: {
+ set(value) {
+ calls.push(["model", value])
+ },
+ current() {
+ return undefined
+ },
+ variant: {
+ set(value) {
+ calls.push(["variant", value])
+ },
+ },
+ },
+ })
+
+ expect(calls).toEqual([
+ ["model", { providerID: "anthropic", modelID: "claude-sonnet-4" }],
+ ["variant", "high"],
+ ])
+ })
+
+ test("clears the variant when the agent has none", () => {
+ const calls: unknown[] = []
+
+ resetSessionModel({
+ agent: {
+ current() {
+ return {
+ model: { providerID: "anthropic", modelID: "claude-sonnet-4" },
+ }
+ },
+ set() {},
+ },
+ model: {
+ set(value) {
+ calls.push(["model", value])
+ },
+ current() {
+ return undefined
+ },
+ variant: {
+ set(value) {
+ calls.push(["variant", value])
+ },
+ },
+ },
+ })
+
+ expect(calls).toEqual([
+ ["model", { providerID: "anthropic", modelID: "claude-sonnet-4" }],
+ ["variant", undefined],
+ ])
+ })
+})
diff --git a/packages/app/src/pages/session/session-model-helpers.ts b/packages/app/src/pages/session/session-model-helpers.ts
index ab181df59..7600f16d5 100644
--- a/packages/app/src/pages/session/session-model-helpers.ts
+++ b/packages/app/src/pages/session/session-model-helpers.ts
@@ -3,6 +3,12 @@ import { batch } from "solid-js"
type Local = {
agent: {
+ current():
+ | {
+ model?: UserMessage["model"]
+ variant?: string
+ }
+ | undefined
set(name: string | undefined): void
}
model: {
@@ -19,6 +25,15 @@ type Local = {
}
}
+export const resetSessionModel = (local: Local) => {
+ const agent = local.agent.current()
+ if (!agent) return
+ batch(() => {
+ local.model.set(agent.model)
+ local.model.variant.set(agent.variant)
+ })
+}
+
export const syncSessionModel = (local: Local, msg: UserMessage) => {
batch(() => {
local.agent.set(msg.agent)