From 73e10fb80c439cb2024709003f1717506fa3f89e Mon Sep 17 00:00:00 2001 From: creatixchu Date: Fri, 11 Sep 2026 10:58:36 +0800 Subject: [PATCH] fix(compaction): preserve summary diagnostics on cancellation --- packages/compaction/compaction-basic/src/region.ts | 2 +- .../compaction-image-offload/tests/image-offload.spec.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/compaction/compaction-basic/src/region.ts b/packages/compaction/compaction-basic/src/region.ts index 40caf48b2f..4d678a4f13 100644 --- a/packages/compaction/compaction-basic/src/region.ts +++ b/packages/compaction/compaction-basic/src/region.ts @@ -400,7 +400,7 @@ async function summarizeCompaction( summaryResult = await dependencies.summarize(prepared.input, agent, signal) break } catch (error: unknown) { - signal?.throwIfAborted() + if (signal?.aborted === true) throw error assertStable(dependencies, agent.session, prepared) if (!dependencies.recover(error, agent, prepared.shadowedSeqs, signal)) throw error prepared = prepareCompaction(dependencies, agent.session, diff --git a/packages/compaction/compaction-image-offload/tests/image-offload.spec.ts b/packages/compaction/compaction-image-offload/tests/image-offload.spec.ts index b3dff95e7d..cd0aa0ba4e 100644 --- a/packages/compaction/compaction-image-offload/tests/image-offload.spec.ts +++ b/packages/compaction/compaction-image-offload/tests/image-offload.spec.ts @@ -364,6 +364,12 @@ describe('compaction-image-offload', () => { await agent.whenIdle() expect(adapter.requests).toHaveLength(1) expect(decisions(agent.session)).toEqual([]) + expect(ctx.waterfall('compaction/summary-error', { + session: agent.session, + sourceEventSeqs: agent.session.surface.nodes, + error: new LlmError('summary budget exceeded', IMAGE_OFFLOAD_REQUIRED_CODE, { offloadImages: 1 }), + }, () => false)).toBe(false) + expect(decisions(agent.session)).toEqual([]) }) it('leaves every other failure to downstream recovery', async () => {