Skip to content

Commit bc01562

Browse files
committed
fix: decode JSON model selections in projection queries
1 parent b8a33c5 commit bc01562

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

apps/server/src/orchestration/Layers/ProjectionOverviewQuery.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,16 @@ import { ORCHESTRATION_PROJECTOR_NAMES } from "./ProjectionPipeline.ts";
3636

3737
const ProjectionProjectOverviewRow = Schema.Struct({
3838
...ProjectionProject.fields,
39+
defaultModelSelection: Schema.NullOr(
40+
Schema.fromJsonString(ProjectionProject.fields.defaultModelSelection),
41+
),
3942
scripts: Schema.fromJsonString(Schema.Array(ProjectScript)),
4043
activeThreadCount: NonNegativeInt,
4144
});
4245

4346
const ProjectionThreadOverviewRow = Schema.Struct({
4447
...ProjectionThread.fields,
48+
modelSelection: Schema.NullOr(Schema.fromJsonString(ProjectionThread.fields.modelSelection)),
4549
lastUserMessageAt: Schema.NullOr(IsoDateTime),
4650
pendingApprovalCount: NonNegativeInt,
4751
pendingUserInputCount: NonNegativeInt,

apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ projectionSnapshotLayer("ProjectionSnapshotQuery", (it) => {
4747
'Project 1',
4848
'/tmp/project-1',
4949
'gpt-5-codex',
50-
NULL,
50+
'{"provider":"codex","model":"gpt-5-codex"}',
5151
NULL,
5252
'[{"id":"script-1","name":"Build","command":"bun run build","icon":"build","runOnWorktreeCreate":false}]',
5353
'2026-02-24T00:00:00.000Z',
@@ -62,6 +62,7 @@ projectionSnapshotLayer("ProjectionSnapshotQuery", (it) => {
6262
project_id,
6363
title,
6464
model,
65+
model_selection,
6566
branch,
6667
worktree_path,
6768
latest_turn_id,
@@ -74,6 +75,7 @@ projectionSnapshotLayer("ProjectionSnapshotQuery", (it) => {
7475
'project-1',
7576
'Thread 1',
7677
'gpt-5-codex',
78+
'{"provider":"codex","model":"gpt-5-codex"}',
7779
NULL,
7880
NULL,
7981
'turn-1',
@@ -239,6 +241,8 @@ projectionSnapshotLayer("ProjectionSnapshotQuery", (it) => {
239241
title: "Project 1",
240242
workspaceRoot: "/tmp/project-1",
241243
defaultModel: "gpt-5-codex",
244+
defaultModelSelection: { provider: "codex", model: "gpt-5-codex" },
245+
iconPath: null,
242246
scripts: [
243247
{
244248
id: "script-1",
@@ -259,6 +263,7 @@ projectionSnapshotLayer("ProjectionSnapshotQuery", (it) => {
259263
projectId: asProjectId("project-1"),
260264
title: "Thread 1",
261265
model: "gpt-5-codex",
266+
modelSelection: { provider: "codex", model: "gpt-5-codex" },
262267
interactionMode: "chat",
263268
runtimeMode: "full-access",
264269
branch: null,

apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ import {
4646
const decodeReadModel = Schema.decodeUnknownEffect(OrchestrationReadModel);
4747
const ProjectionProjectDbRowSchema = ProjectionProject.mapFields(
4848
Struct.assign({
49+
defaultModelSelection: Schema.NullOr(
50+
Schema.fromJsonString(ProjectionProject.fields.defaultModelSelection),
51+
),
4952
scripts: Schema.fromJsonString(Schema.Array(ProjectScript)),
5053
}),
5154
);
@@ -56,7 +59,11 @@ const ProjectionThreadMessageDbRowSchema = ProjectionThreadMessage.mapFields(
5659
}),
5760
);
5861
const ProjectionThreadProposedPlanDbRowSchema = ProjectionThreadProposedPlan;
59-
const ProjectionThreadDbRowSchema = ProjectionThread;
62+
const ProjectionThreadDbRowSchema = ProjectionThread.mapFields(
63+
Struct.assign({
64+
modelSelection: Schema.NullOr(Schema.fromJsonString(ProjectionThread.fields.modelSelection)),
65+
}),
66+
);
6067
const ProjectionThreadActivityDbRowSchema = ProjectionThreadActivity.mapFields(
6168
Struct.assign({
6269
payload: Schema.fromJsonString(Schema.Unknown),

0 commit comments

Comments
 (0)