fix(workbench): prefer durable terminal duration
This commit is contained in:
@@ -255,7 +255,7 @@ function traceForDisplay(message: ChatMessage): ChatMessage["runnerTrace"] {
|
||||
function messageDurationMeta(message: ChatMessage): { text: string; label: string } | null {
|
||||
if (message.role !== "agent") return null;
|
||||
const timing = messageTimingForDisplay(message);
|
||||
const rawDurationMs = isRunningMessage(message) ? durationSince(timing?.startedAt) : finiteDurationMs(timing?.durationMs);
|
||||
const rawDurationMs = isRunningMessage(message) ? durationSince(timing?.startedAt) : terminalMessageDurationMs(message, timing);
|
||||
if (rawDurationMs === null) return null;
|
||||
const durationMs = isRunningMessage(message) ? monotonicDisplayDurationMs(message, rawDurationMs) : sealedDisplayDurationMs(message, rawDurationMs);
|
||||
const value = formatDuration(durationMs);
|
||||
@@ -289,9 +289,14 @@ function messageActivityMeta(message: ChatMessage): { text: string; label: strin
|
||||
}
|
||||
|
||||
function messageTimingForDisplay(message: ChatMessage): ChatMessage["timing"] {
|
||||
if (!isRunningMessage(message)) return message.timing ?? message.runnerTrace?.timing ?? null;
|
||||
return message.runnerTrace?.timing ?? message.timing ?? null;
|
||||
}
|
||||
|
||||
function terminalMessageDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null {
|
||||
return finiteDurationMs(message.durationMs) ?? finiteDurationMs(timing?.durationMs) ?? finiteDurationMs(message.runnerTrace?.durationMs);
|
||||
}
|
||||
|
||||
function durationSince(timestamp: unknown): number | null {
|
||||
const startedAtMs = timestampMs(timestamp);
|
||||
return startedAtMs === null ? null : Math.max(0, nowMs.value - startedAtMs);
|
||||
|
||||
Reference in New Issue
Block a user