fix(ui): context stale in prompt input (#12695)

This commit is contained in:
Adam
2026-02-08 06:36:53 -06:00
committed by GitHub
parent 4187a5fe7f
commit 7c6b8d7a8a
2 changed files with 6 additions and 17 deletions

View File

@@ -79,15 +79,16 @@ describe("getSessionContextMetrics", () => {
expect(metrics.context?.usage).toBeNull()
})
test("memoizes by message and provider array identity", () => {
test("recomputes when message array is mutated in place", () => {
const messages = [assistant("a1", { input: 10, output: 10, reasoning: 10, read: 10, write: 10 }, 0.25)]
const providers = [{ id: "openai", models: {} }]
const one = getSessionContextMetrics(messages, providers)
messages.push(assistant("a2", { input: 100, output: 20, reasoning: 0, read: 0, write: 0 }, 0.75))
const two = getSessionContextMetrics(messages, providers)
const three = getSessionContextMetrics([...messages], providers)
expect(two).toBe(one)
expect(three).not.toBe(one)
expect(one.context?.message.id).toBe("a1")
expect(two.context?.message.id).toBe("a2")
expect(two.totalCost).toBe(1)
})
})

View File

@@ -34,8 +34,6 @@ type Metrics = {
context: Context | undefined
}
const cache = new WeakMap<Message[], WeakMap<Provider[], Metrics>>()
const tokenTotal = (msg: AssistantMessage) => {
return msg.tokens.input + msg.tokens.output + msg.tokens.reasoning + msg.tokens.cache.read + msg.tokens.cache.write
}
@@ -80,15 +78,5 @@ const build = (messages: Message[], providers: Provider[]): Metrics => {
}
export function getSessionContextMetrics(messages: Message[], providers: Provider[]) {
const byProvider = cache.get(messages)
if (byProvider) {
const hit = byProvider.get(providers)
if (hit) return hit
}
const value = build(messages, providers)
const next = byProvider ?? new WeakMap<Provider[], Metrics>()
next.set(providers, value)
if (!byProvider) cache.set(messages, next)
return value
return build(messages, providers)
}