fix(FN-4389): preserve legacy token usage rows with null cache writes
Fusion-Task-Id: FN-4389 Fusion-Task-Lineage: 366f9d57-c476-448f-96c0-6e753fc8b090
This commit is contained in:
@@ -90,6 +90,36 @@ describe("TaskStore", () => {
|
||||
expect(reloaded.tokenUsage).toEqual(tokenUsage);
|
||||
});
|
||||
|
||||
it("defaults legacy null cacheWriteTokens rows to 0 without dropping tokenUsage", async () => {
|
||||
const created = await harness.store().createTask({
|
||||
description: "Legacy null cache write",
|
||||
tokenUsage: {
|
||||
inputTokens: 10,
|
||||
outputTokens: 20,
|
||||
cachedTokens: 30,
|
||||
cacheWriteTokens: 40,
|
||||
totalTokens: 100,
|
||||
firstUsedAt: "2026-04-23T15:00:00.000Z",
|
||||
lastUsedAt: "2026-04-23T15:01:00.000Z",
|
||||
},
|
||||
});
|
||||
|
||||
(harness.store() as any).db.prepare(`
|
||||
UPDATE tasks
|
||||
SET tokenUsageCacheWriteTokens = NULL
|
||||
WHERE id = ?
|
||||
`).run(created.id);
|
||||
|
||||
const legacy = await harness.store().getTask(created.id);
|
||||
expect(legacy.tokenUsage).toMatchObject({
|
||||
inputTokens: 10,
|
||||
outputTokens: 20,
|
||||
cachedTokens: 30,
|
||||
cacheWriteTokens: 0,
|
||||
totalTokens: 100,
|
||||
});
|
||||
});
|
||||
|
||||
it("round-trips cacheWriteTokens specifically", async () => {
|
||||
const tokenUsage = {
|
||||
inputTokens: 1,
|
||||
|
||||
@@ -1016,7 +1016,6 @@ export class TaskStore extends EventEmitter<TaskStoreEvents> {
|
||||
row.tokenUsageInputTokens === null
|
||||
|| row.tokenUsageOutputTokens === null
|
||||
|| row.tokenUsageCachedTokens === null
|
||||
|| row.tokenUsageCacheWriteTokens === null
|
||||
|| row.tokenUsageTotalTokens === null
|
||||
|| row.tokenUsageFirstUsedAt === null
|
||||
|| row.tokenUsageLastUsedAt === null
|
||||
@@ -1028,7 +1027,7 @@ export class TaskStore extends EventEmitter<TaskStoreEvents> {
|
||||
inputTokens: row.tokenUsageInputTokens,
|
||||
outputTokens: row.tokenUsageOutputTokens,
|
||||
cachedTokens: row.tokenUsageCachedTokens,
|
||||
cacheWriteTokens: row.tokenUsageCacheWriteTokens,
|
||||
cacheWriteTokens: row.tokenUsageCacheWriteTokens ?? 0,
|
||||
totalTokens: row.tokenUsageTotalTokens,
|
||||
firstUsedAt: row.tokenUsageFirstUsedAt,
|
||||
lastUsedAt: row.tokenUsageLastUsedAt,
|
||||
|
||||
Reference in New Issue
Block a user