Skip to content

Commit af75083

Browse files
committed
fix(condense): tag only summarized messages (window-based); preserve existing tags
1 parent 82d68c7 commit af75083

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/core/condense/index.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,20 @@ export async function summarizeConversation(
196196
condenseId: condenseId,
197197
}
198198

199-
// Tag all middle messages (between first and tail) with condenseParent
200-
// Middle messages are those that were summarized but not kept
201-
const middleMessages = messages.slice(1, -N_MESSAGES_TO_KEEP).map((msg) => ({
202-
...msg,
203-
condenseParent: msg.condenseParent ?? condenseId,
204-
}))
199+
// Tag middle messages from the full middle span, but only set condenseParent
200+
// for those that were actually part of the current summarization window and lack a tag.
201+
const windowTs = new Set(
202+
messagesToSummarize
203+
.slice(1) // skip the preserved first
204+
.map((m) => m.ts)
205+
.filter((ts): ts is number => typeof ts === "number"),
206+
)
207+
const middleMessages = messages.slice(1, -N_MESSAGES_TO_KEEP).map((msg) => {
208+
if (!msg.isSummary && typeof msg.ts === "number" && windowTs.has(msg.ts)) {
209+
return { ...msg, condenseParent: msg.condenseParent ?? condenseId }
210+
}
211+
return msg
212+
})
205213

206214
// Reconstruct messages: [first message, tagged middle messages, summary, last N messages]
207215
// This preserves ALL messages, with middle ones tagged for filtering

0 commit comments

Comments
 (0)