Skip to content

Commit 0927687

Browse files
committed
Fix turn-diff-completed regressing latestTurn to older turn
Guard the latestTurn update in the turn-diff-completed handler so it only overwrites latestTurn when the event's turnId matches the current latestTurn or latestTurn is null. This prevents a delayed checkpoint event for an older turn from regressing latestTurn away from a newer running turn, which mirrors the guard already present in the turn-interrupt-requested handler.
1 parent bef63d4 commit 0927687

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

apps/web/src/store.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -876,24 +876,22 @@ export function applyOrchestrationEvent(state: AppState, event: OrchestrationEve
876876
(right.checkpointTurnCount ?? Number.MAX_SAFE_INTEGER),
877877
)
878878
.slice(-MAX_THREAD_CHECKPOINTS);
879+
const latestTurn =
880+
thread.latestTurn === null || thread.latestTurn.turnId === event.payload.turnId
881+
? buildLatestTurn({
882+
previous: thread.latestTurn,
883+
turnId: event.payload.turnId,
884+
state: checkpointStatusToLatestTurnState(event.payload.status),
885+
requestedAt: thread.latestTurn?.requestedAt ?? event.payload.completedAt,
886+
startedAt: thread.latestTurn?.startedAt ?? event.payload.completedAt,
887+
completedAt: event.payload.completedAt,
888+
assistantMessageId: event.payload.assistantMessageId,
889+
})
890+
: thread.latestTurn;
879891
return {
880892
...thread,
881893
turnDiffSummaries,
882-
latestTurn: buildLatestTurn({
883-
previous: thread.latestTurn,
884-
turnId: event.payload.turnId,
885-
state: checkpointStatusToLatestTurnState(event.payload.status),
886-
requestedAt:
887-
thread.latestTurn?.turnId === event.payload.turnId
888-
? thread.latestTurn.requestedAt
889-
: event.payload.completedAt,
890-
startedAt:
891-
thread.latestTurn?.turnId === event.payload.turnId
892-
? (thread.latestTurn.startedAt ?? event.payload.completedAt)
893-
: event.payload.completedAt,
894-
completedAt: event.payload.completedAt,
895-
assistantMessageId: event.payload.assistantMessageId,
896-
}),
894+
latestTurn,
897895
updatedAt: event.occurredAt,
898896
};
899897
});

0 commit comments

Comments
 (0)