983
*/
984
export function mapTurnCompleted(
986
>
params: TurnCompletedNotification,
987
>
fallbackDuration?: number,
988
>
): (SessionAction | ChatAction)[] {
989
>
state.currentTurnId = undefined;
990
>
state.itemToPartId.clear();
991
>
state.itemToReasoningPartId.clear();
992
>
// Finalize any command whose completion was deferred to coalesce a possible
993
>
// sandbox pre-flight (see ICodexSessionMapState.pendingPreflight) — it was
994
>
// never reused, so it is a genuine output-less command and must complete.
995
>
const preflightFlush = flushPendingPreflight(state);
996
>
const orphanedToolCalls = [...state.itemToToolCall.values()];
997
>
state.itemToToolCall.clear();
998
>
const turnId = params.turn.id;
999
>
const status = params.turn.status;
1000
>
const duration = typeof params.turn.durationMs === 'number' && Number.isFinite(params.turn.durationMs) && params.turn.durationMs >= 0
1001
? params.turn.durationMs
1002
: typeof params.turn.startedAt === 'number' && typeof params.turn.completedAt === 'number'