Skip to content

Commit 7aad791

Browse files
authored
fix(server): let stopped threads settle immediately (#5553)
1 parent 6da9224 commit 7aad791

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

apps/server/src/orchestration/Layers/ProjectionPipeline.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,6 +1430,13 @@ it.layer(BaseTestLayer)("OrchestrationProjectionPipeline", (it) => {
14301430
assert.deepEqual(settledRows, [
14311431
{ state: "completed", completedAt: "2026-01-01T00:01:00.000Z" },
14321432
]);
1433+
1434+
const threadRows = yield* sql<{ readonly latestTurnId: string | null }>`
1435+
SELECT latest_turn_id AS "latestTurnId"
1436+
FROM projection_threads
1437+
WHERE thread_id = ${threadId}
1438+
`;
1439+
assert.deepEqual(threadRows, [{ latestTurnId: turnId }]);
14331440
}),
14341441
);
14351442

apps/server/src/orchestration/Layers/ProjectionPipeline.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,8 @@ const makeOrchestrationProjectionPipeline = Effect.fn("makeOrchestrationProjecti
850850
}
851851
yield* projectionThreadRepository.upsert({
852852
...existingRow.value,
853-
latestTurnId: event.payload.session.activeTurnId,
853+
// activeTurnId describes current work; a terminal session must not erase history.
854+
latestTurnId: event.payload.session.activeTurnId ?? existingRow.value.latestTurnId,
854855
updatedAt: event.occurredAt,
855856
});
856857
yield* refreshThreadShellSummary(event.payload.threadId);

0 commit comments

Comments
 (0)