From 72e29bce27fa55078aca332626d27bad9ced69b3 Mon Sep 17 00:00:00 2001 From: vsabavat <50385532+vsabavat@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:23:34 -0800 Subject: [PATCH] Fix compaction turn prefix summarization (#738) --- .../src/core/compaction/compaction.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/coding-agent/src/core/compaction/compaction.ts b/packages/coding-agent/src/core/compaction/compaction.ts index 4c0b77a0..c0a88a3b 100644 --- a/packages/coding-agent/src/core/compaction/compaction.ts +++ b/packages/coding-agent/src/core/compaction/compaction.ts @@ -7,7 +7,7 @@ import type { AgentMessage } from "@mariozechner/pi-agent-core"; import type { AssistantMessage, Model, Usage } from "@mariozechner/pi-ai"; -import { complete, completeSimple } from "@mariozechner/pi-ai"; +import { completeSimple } from "@mariozechner/pi-ai"; import { convertToLlm, createBranchSummaryMessage, createCustomMessage } from "../messages.js"; import type { CompactionEntry, SessionEntry } from "../session-manager.js"; import { @@ -719,18 +719,22 @@ async function generateTurnPrefixSummary( signal?: AbortSignal, ): Promise { const maxTokens = Math.floor(0.5 * reserveTokens); // Smaller budget for turn prefix - - const transformedMessages = convertToLlm(messages); + const llmMessages = convertToLlm(messages); + const conversationText = serializeConversation(llmMessages); + const promptText = `\n${conversationText}\n\n\n${TURN_PREFIX_SUMMARIZATION_PROMPT}`; const summarizationMessages = [ - ...transformedMessages, { role: "user" as const, - content: [{ type: "text" as const, text: TURN_PREFIX_SUMMARIZATION_PROMPT }], + content: [{ type: "text" as const, text: promptText }], timestamp: Date.now(), }, ]; - const response = await complete(model, { messages: summarizationMessages }, { maxTokens, signal, apiKey }); + const response = await completeSimple( + model, + { systemPrompt: SUMMARIZATION_SYSTEM_PROMPT, messages: summarizationMessages }, + { maxTokens, signal, apiKey }, + ); if (response.stopReason === "error") { throw new Error(`Turn prefix summarization failed: ${response.errorMessage || "Unknown error"}`);