From f5cf2501eac70bb364892005665d3f4f94d72d0e Mon Sep 17 00:00:00 2001 From: Lyon <88232613+pikasTech@users.noreply.github.com> Date: Tue, 23 Jun 2026 21:41:56 +0800 Subject: [PATCH] fix(workbench): define running timing helper in store (#1988) Co-authored-by: root --- web/hwlab-cloud-web/src/stores/workbench.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/web/hwlab-cloud-web/src/stores/workbench.ts b/web/hwlab-cloud-web/src/stores/workbench.ts index 3ba54e31..63323bae 100644 --- a/web/hwlab-cloud-web/src/stores/workbench.ts +++ b/web/hwlab-cloud-web/src/stores/workbench.ts @@ -1443,7 +1443,7 @@ function nonBlockingProjection(projection: ProjectionDiagnostic | null): Project function stableAdmissionTimingPatchForRunningMessage(message: ChatMessage, patch: Partial): Partial { const incoming = patch.timing; const existing = message.timing; - if (!incoming || !existing?.startedAt || !isRunningMessage(message)) return patch; + if (!incoming || !existing?.startedAt || !isRunningAgentMessageForTiming(message)) return patch; const timing = { ...incoming, startedAt: existing.startedAt, @@ -1455,6 +1455,13 @@ function nonBlockingProjection(projection: ProjectionDiagnostic | null): Project return { ...patch, timing, startedAt: timing.startedAt ?? null, lastEventAt: timing.lastEventAt ?? null, finishedAt: null, durationMs: null }; } + function isRunningAgentMessageForTiming(message: ChatMessage): boolean { + if (message.role !== "agent") return false; + const status = normalizedStatusText(firstNonEmptyString(message.status, message.runnerTrace?.status)); + if (status && isTerminalMessageStatus(status)) return false; + return status === null || isTraceActiveStatus(status) || message.traceAutoLifecycle === "running"; + } + function optimisticAdmissionTimingPatch(lifecycle: AgentChatResponse): Partial { const patch = messageTimingPatch(lifecycle); if (patch.timing?.startedAt && patch.timing?.lastEventAt) return patch;