fix(workbench): ignore unsealed terminal durations (#1994)

This commit is contained in:
Lyon
2026-06-23 23:29:24 +08:00
committed by GitHub
parent 6d359bf7e6
commit aed4e9bc3e
@@ -307,13 +307,27 @@ function messageTimingForDisplay(message: ChatMessage): ChatMessage["timing"] {
}
function terminalMessageDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {
const recorded = maxPositiveDurationMs(message.durationMs, timing?.durationMs, message.runnerTrace?.durationMs, message.runnerTrace?.timing?.durationMs);
if (recorded !== null) return recorded;
const elapsed = elapsedTerminalDurationMs(message, timing);
if (elapsed !== null && elapsed > 0) return elapsed;
const recorded = sealedTerminalRecordedDurationMs(message, timing);
if (recorded !== null) return recorded;
return null;
}
function sealedTerminalRecordedDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {
const messageRecord = message as Record<string, unknown>;
const trace = message.runnerTrace as Record<string, unknown> | null | undefined;
const traceTiming = trace?.timing as Record<string, unknown> | null | undefined;
const messageHasTerminalTimestamp = timestampMs(timing?.finishedAt ?? message.finishedAt ?? messageRecord.completedAt) !== null;
const traceHasTerminalTimestamp = timestampMs(traceTiming?.finishedAt ?? trace?.finishedAt ?? traceTiming?.completedAt ?? trace?.completedAt) !== null;
return maxPositiveDurationMs(
messageHasTerminalTimestamp ? message.durationMs : null,
messageHasTerminalTimestamp ? timing?.durationMs : null,
traceHasTerminalTimestamp ? message.runnerTrace?.durationMs : null,
traceHasTerminalTimestamp ? message.runnerTrace?.timing?.durationMs : null
);
}
function elapsedTerminalDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {
const messageRecord = message as Record<string, unknown>;
const trace = message.runnerTrace as Record<string, unknown> | null | undefined;