From d1bb34c3608f20ff7864af6ecc0f210b7ba53d20 Mon Sep 17 00:00:00 2001 From: Lyon <88232613+pikasTech@users.noreply.github.com> Date: Wed, 24 Jun 2026 15:53:54 +0800 Subject: [PATCH] fix(workbench): use single timing source for code agent duration (#2048) --- .../components/workbench/ConversationPanel.vue | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue b/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue index 40f11301..68b902bd 100644 --- a/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue +++ b/web/hwlab-cloud-web/src/components/workbench/ConversationPanel.vue @@ -393,25 +393,17 @@ function ceilDisplayDurationSecond(ms: number): number { } function sealedTerminalRecordedDurationMs(message: ChatMessage, timing: ChatMessage["timing"]): number | null { - const messageRecord = message as Record; - const trace = message.runnerTrace as Record | null | undefined; - const traceTiming = trace?.timing as Record | null | undefined; - const messageHasTerminalTimestamp = timestampMs(timing?.finishedAt ?? message.finishedAt ?? messageRecord.completedAt) !== null; - const traceHasTerminalTimestamp = timestampMs(traceTiming?.finishedAt ?? trace?.finishedAt ?? traceTiming?.completedAt ?? trace?.completedAt) !== null; + void message; + const messageHasTerminalTimestamp = timestampMs(timing?.finishedAt) !== 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; - const trace = message.runnerTrace as Record | null | undefined; - const traceTiming = trace?.timing as Record | null | undefined; - const startedAt = timestampMs(timing?.startedAt ?? message.startedAt ?? traceTiming?.startedAt ?? trace?.startedAt); - const endedAt = timestampMs(timing?.finishedAt ?? message.finishedAt ?? messageRecord.completedAt ?? traceTiming?.finishedAt ?? trace?.finishedAt ?? traceTiming?.completedAt ?? trace?.completedAt); + void message; + const startedAt = timestampMs(timing?.startedAt); + const endedAt = timestampMs(timing?.finishedAt); if (startedAt === null || endedAt === null || endedAt < startedAt) return null; return Math.trunc(endedAt - startedAt); }