diff --git a/packages/core/src/session/runner/llm.ts b/packages/core/src/session/runner/llm.ts index 932470d869c..d18351b53e8 100644 --- a/packages/core/src/session/runner/llm.ts +++ b/packages/core/src/session/runner/llm.ts @@ -543,7 +543,8 @@ const layer = Layer.effect( needsContinuation = result.needsContinuation step = result.step + 1 if (needsContinuation) { - promotion = (yield* SessionPending.compaction(db, input.sessionID)) ? undefined : "steer" + yield* runPendingCompaction(input.sessionID) + promotion = "steer" continue } yield* runPendingCompaction(input.sessionID) diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index 63171b9a44e..3bbd2560f05 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -1614,14 +1614,14 @@ describe("SessionRunnerLLM", () => { }), ) - it.effect("runs one durable compaction barrier before later steer and queued prompts", () => + it.effect("runs one durable compaction barrier after tool settlement and before later inputs", () => Effect.gen(function* () { const session = yield* setup currentModel = recoveryModel streamGate = yield* Deferred.make() streamStarted = yield* Deferred.make() responses = [ - reply.text("Active complete", "text-active"), + reply.tool("call-active", "echo", { text: "active" }), [LLMEvent.textDelta({ id: "summary", text: "durable summary" })], reply.text("Steer complete", "text-steer"), reply.text("Queue complete", "text-queue"),