diff --git a/packages/tui/src/routes/session/rows.ts b/packages/tui/src/routes/session/rows.ts index 1df58d3539..c7afea1252 100644 --- a/packages/tui/src/routes/session/rows.ts +++ b/packages/tui/src/routes/session/rows.ts @@ -177,7 +177,9 @@ export function createSessionRows(sessionID: Accessor) { } const queuedStart = (rows: SessionRow[]) => { - const index = rows.findIndex((row) => row.type === "message" && isPending(row.messageID)) + const index = rows.findIndex( + (row) => row.type === "compaction-queued" || (row.type === "message" && isPending(row.messageID)), + ) return index === -1 ? rows.length : index } diff --git a/packages/tui/test/cli/tui/data.test.tsx b/packages/tui/test/cli/tui/data.test.tsx index 416085bdb4..0e4102d30c 100644 --- a/packages/tui/test/cli/tui/data.test.tsx +++ b/packages/tui/test/cli/tui/data.test.tsx @@ -1202,6 +1202,21 @@ test("restores queued compaction from durable pending input", async () => { { type: "compaction-queued", inputID: "message-compaction-later" }, ]) + emitEvent(events, { + id: "evt_text_ended", + created: 2, + type: "session.text.ended", + durable: durable(sessionID, 5), + data: { + sessionID, + assistantMessageID: "message-assistant", + ordinal: 0, + text: "Active output", + }, + }) + await wait(() => rows.some((row) => row.type === "part")) + expect(rows.map((row) => row.type)).toEqual(["part", "compaction-queued", "compaction-queued"]) + emitEvent(events, { id: "evt_compaction_started", created: 2,