From 90e199d6a7cc667b5c94d08e4be61504a18a1968 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Wed, 18 Feb 2026 23:05:56 -0800 Subject: [PATCH] Drop merged unified diffs from turn summaries - Stop propagating `diff` when merging turn file changes in session logic - Update tests to assert required retry callbacks are functions before invoking - Replace fragile unifiedDiff key check with `not.toHaveProperty` --- apps/web/src/lib/providerReactQuery.test.ts | 24 +++++++++++++-------- apps/web/src/session-logic.test.ts | 2 +- apps/web/src/session-logic.ts | 3 --- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/apps/web/src/lib/providerReactQuery.test.ts b/apps/web/src/lib/providerReactQuery.test.ts index 57d1a198ca07224d3719819b0bf836410e506b3a..8c424a7df191f6a32c00b2e14a76ee98de6cf13e 100644 --- a/apps/web/src/lib/providerReactQuery.test.ts +++ b/apps/web/src/lib/providerReactQuery.test.ts @@ -62,24 +62,26 @@ describe("checkpointDiffQueryOptions", () => { cacheScope: "turn:abc", }); const retry = options.retry; + expect(typeof retry).toBe("function"); + if (typeof retry !== "function") { + throw new Error("Expected retry to be a function."); + } - expect(retry?.(1, new Error("Checkpoint turn count 2 exceeds current turn count 1."))).toBe( - true, - ); + expect(retry(1, new Error("Checkpoint turn count 2 exceeds current turn count 1."))).toBe(true); expect( - retry?.( + retry( 11, new Error("Filesystem checkpoint is unavailable for turn 2 in thread thread-1."), ), ).toBe(true); expect( - retry?.( + retry( 12, new Error("Filesystem checkpoint is unavailable for turn 2 in thread thread-1."), ), ).toBe(false); - expect(retry?.(2, new Error("Something else failed."))).toBe(true); - expect(retry?.(3, new Error("Something else failed."))).toBe(false); + expect(retry(2, new Error("Something else failed."))).toBe(true); + expect(retry(3, new Error("Something else failed."))).toBe(false); }); it("backs off longer for checkpoint-not-ready errors", () => { @@ -91,12 +93,16 @@ describe("checkpointDiffQueryOptions", () => { cacheScope: "turn:abc", }); const retryDelay = options.retryDelay; + expect(typeof retryDelay).toBe("function"); + if (typeof retryDelay !== "function") { + throw new Error("Expected retryDelay to be a function."); + } - const checkpointDelay = retryDelay?.( + const checkpointDelay = retryDelay( 4, new Error("Checkpoint turn count 2 exceeds current turn count 1."), ); - const genericDelay = retryDelay?.(4, new Error("Network failure")); + const genericDelay = retryDelay(4, new Error("Network failure")); expect(typeof checkpointDelay).toBe("number"); expect(typeof genericDelay).toBe("number"); diff --git a/apps/web/src/session-logic.test.ts b/apps/web/src/session-logic.test.ts index f4f2db9d66eaa3e5f50ad8a7009bb4d69849b1d0..7dee1239cabedea48088665b3a81ca912a32e560 100644 --- a/apps/web/src/session-logic.test.ts +++ b/apps/web/src/session-logic.test.ts @@ -497,7 +497,7 @@ describe("deriveTurnDiffSummaries", () => { expect(summaries[0]?.files[0]?.kind).toBe("modified"); expect(summaries[0]?.files[0]?.additions).toBe(1); expect(summaries[0]?.files[0]?.deletions).toBe(1); - expect("unifiedDiff" in (summaries[0] as Record)).toBe(false); + expect(summaries[0]).not.toHaveProperty("unifiedDiff"); }); it("includes completed turns even when no fileChange tool events were emitted", () => { diff --git a/apps/web/src/session-logic.ts b/apps/web/src/session-logic.ts index 01fae7bd42200fcb10545e440e191bf19308cb4c..b36a9648d9a31ddee2162c65a905fea4df3200e6 100644 --- a/apps/web/src/session-logic.ts +++ b/apps/web/src/session-logic.ts @@ -506,9 +506,6 @@ function mergeTurnDiffFileChange( if (existing.kind === undefined && incoming.kind !== undefined) { existing.kind = incoming.kind; } - if (existing.diff === undefined && incoming.diff !== undefined) { - existing.diff = incoming.diff; - } if (existing.additions === undefined && incoming.additions !== undefined) { existing.additions = incoming.additions; } -- 2.54.0