From fb5726baa8ca220ba83b442c3c199d779ab826d4 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Thu, 9 Jul 2026 19:06:18 -0500 Subject: [PATCH] refactor(core): simplify compaction recovery --- packages/core/src/session/compaction.ts | 3 +-- packages/core/test/session-runner.test.ts | 25 +---------------------- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/packages/core/src/session/compaction.ts b/packages/core/src/session/compaction.ts index 6646e02651..d680ff8f16 100644 --- a/packages/core/src/session/compaction.ts +++ b/packages/core/src/session/compaction.ts @@ -232,8 +232,6 @@ const make = (dependencies: Dependencies) => { type: event.classification === "context-overflow" ? "provider.invalid-request" : "provider.error", message: event.message, } - if (LLMEvent.is.finish(event) && event.reason === "length") - failure = { type: "compaction.failed", message: "Compaction reached the model output limit" } if (LLMEvent.is.textDelta(event)) { chunks.push(event.text) return dependencies.events.publish(SessionEvent.Compaction.Delta, { @@ -311,6 +309,7 @@ const make = (dependencies: Dependencies) => { messages: input.messages, model: input.request.model, reason: "auto", + output: input.request.generation?.maxTokens ?? input.request.model.route.defaults.limits?.output ?? 0, }) }) const compactManual = Effect.fn("SessionCompaction.compactManual")(function* (input: CompactInput) { diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index cab496733e..36f3b8d5f8 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -1623,28 +1623,6 @@ describe("SessionRunnerLLM", () => { }), ) - it.effect("rejects a manual compaction truncated by the model output limit", () => - Effect.gen(function* () { - const session = yield* setup - response = reply.text("Earlier answer", "text-manual-length-history") - yield* admit(session, "Earlier question") - yield* session.resume(sessionID) - - response = [ - LLMEvent.textDelta({ id: "summary", text: "Partial summary" }), - LLMEvent.finish({ reason: "length" }), - ] - const compaction = yield* session.compact({ sessionID }) - yield* session.resume(sessionID) - - expect((yield* session.messages({ sessionID })).find((message) => message.id === compaction.id)).toMatchObject({ - type: "compaction", - status: "failed", - error: { type: "compaction.failed", message: "Compaction reached the model output limit" }, - }) - }), - ) - it.effect("settles an admitted manual compaction when pre-start resolution throws", () => Effect.gen(function* () { const session = yield* setup @@ -1770,7 +1748,7 @@ describe("SessionRunnerLLM", () => { }), ) - it.effect("recovers from provider context overflow despite an undersized configured limit", () => + it.effect("recovers from provider context overflow despite an undersized configured context limit", () => Effect.gen(function* () { const session = yield* setupOverflowRecovery currentModel = undersizedContextModel @@ -1783,7 +1761,6 @@ describe("SessionRunnerLLM", () => { yield* session.resume(sessionID) expect(requests).toHaveLength(3) - expect(requests[1].generation?.maxTokens).toBe(1_000) expect(yield* session.context(sessionID)).toMatchObject([ { type: "compaction", summary: "## Objective\n- Recover undersized limit" }, { type: "assistant", finish: "stop" },