Skip to content

Commit c6ade83

Browse files
galinilievGalin Iliev
andauthored
fix: avoid stale dashboard child context budgets (#97332)
* fix(gateway): avoid stale child session context tokens * fix(gateway): avoid stale child session context tokens --------- Co-authored-by: Galin Iliev <[email protected]>
1 parent 07b9349 commit c6ade83

2 files changed

Lines changed: 35 additions & 5 deletions

File tree

src/gateway/server-methods/sessions.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,6 @@ function inheritSessionRuntimeSelection(
184184
: {}),
185185
...(parentEntry.modelProvider ? { modelProvider: parentEntry.modelProvider } : {}),
186186
...(parentEntry.model ? { model: parentEntry.model } : {}),
187-
...(typeof parentEntry.contextTokens === "number"
188-
? { contextTokens: parentEntry.contextTokens }
189-
: {}),
190187
...(parentEntry.thinkingLevel ? { thinkingLevel: parentEntry.thinkingLevel } : {}),
191188
...(parentEntry.fastMode !== undefined ? { fastMode: parentEntry.fastMode } : {}),
192189
...(parentEntry.verboseLevel ? { verboseLevel: parentEntry.verboseLevel } : {}),

src/gateway/server.sessions.create.test.ts

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ test("sessions.create stores dashboard session model and parent linkage, and cre
9090
expect(header.id).toBe(created.payload?.sessionId);
9191
});
9292

93-
test("sessions.create inherits parent runtime model selection when model is omitted", async () => {
93+
test("sessions.create inherits parent runtime model selection without stale context metadata", async () => {
9494
const { storePath } = await createSessionStoreDir();
9595
await writeSessionStore({
9696
entries: {
@@ -102,6 +102,29 @@ test("sessions.create inherits parent runtime model selection when model is omit
102102
modelProvider: "codex",
103103
model: "gpt-5.5",
104104
contextTokens: 272000,
105+
inputTokens: 12000,
106+
outputTokens: 340,
107+
totalTokens: 12340,
108+
totalTokensFresh: false,
109+
contextBudgetStatus: {
110+
schemaVersion: 1,
111+
source: "pre-prompt-estimate",
112+
updatedAt: 1,
113+
provider: "codex",
114+
model: "gpt-5.5",
115+
route: "compact_then_truncate",
116+
shouldCompact: true,
117+
estimatedPromptTokens: 250000,
118+
contextTokenBudget: 128000,
119+
promptBudgetBeforeReserve: 112000,
120+
reserveTokens: 16000,
121+
effectiveReserveTokens: 16000,
122+
remainingPromptBudgetTokens: 0,
123+
overflowTokens: 138000,
124+
toolResultReducibleChars: 5000,
125+
messageCount: 12,
126+
unwindowedMessageCount: 12,
127+
},
105128
thinkingLevel: "off",
106129
fastMode: "auto",
107130
traceLevel: "debug",
@@ -121,6 +144,11 @@ test("sessions.create inherits parent runtime model selection when model is omit
121144
modelProvider?: string;
122145
model?: string;
123146
contextTokens?: number;
147+
inputTokens?: number;
148+
outputTokens?: number;
149+
totalTokens?: number;
150+
totalTokensFresh?: boolean;
151+
contextBudgetStatus?: unknown;
124152
thinkingLevel?: string;
125153
fastMode?: string;
126154
traceLevel?: string;
@@ -142,7 +170,12 @@ test("sessions.create inherits parent runtime model selection when model is omit
142170
expect(created.payload?.entry?.agentRuntimeOverride).toBe("codex");
143171
expect(created.payload?.entry?.modelProvider).toBe("codex");
144172
expect(created.payload?.entry?.model).toBe("gpt-5.5");
145-
expect(created.payload?.entry?.contextTokens).toBe(272000);
173+
expect(created.payload?.entry?.contextTokens).toBeUndefined();
174+
expect(created.payload?.entry?.inputTokens).toBeUndefined();
175+
expect(created.payload?.entry?.outputTokens).toBeUndefined();
176+
expect(created.payload?.entry?.totalTokens).toBeUndefined();
177+
expect(created.payload?.entry?.totalTokensFresh).toBeUndefined();
178+
expect(created.payload?.entry?.contextBudgetStatus).toBeUndefined();
146179
expect(created.payload?.entry?.thinkingLevel).toBe("off");
147180
expect(created.payload?.entry?.fastMode).toBe("auto");
148181
expect(created.payload?.entry?.traceLevel).toBe("debug");

0 commit comments

Comments
 (0)