fix(workbench): ignore unsealed terminal durations (#1994)
This commit is contained in:
@@ -307,13 +307,27 @@ function messageTimingForDisplay(message: ChatMessage): ChatMessage["timing"] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function terminalMessageDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {
|
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);
|
const elapsed = elapsedTerminalDurationMs(message, timing);
|
||||||
if (elapsed !== null && elapsed > 0) return elapsed;
|
if (elapsed !== null && elapsed > 0) return elapsed;
|
||||||
|
const recorded = sealedTerminalRecordedDurationMs(message, timing);
|
||||||
|
if (recorded !== null) return recorded;
|
||||||
return null;
|
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 {
|
function elapsedTerminalDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {
|
||||||
const messageRecord = message as Record<string, unknown>;
|
const messageRecord = message as Record<string, unknown>;
|
||||||
const trace = message.runnerTrace as Record<string, unknown> | null | undefined;
|
const trace = message.runnerTrace as Record<string, unknown> | null | undefined;
|
||||||
|
|||||||
Reference in New Issue
Block a user