From 2203ba6f70ab13712d58015cd831febda09a03cd Mon Sep 17 00:00:00 2001 From: wuyang6 Date: Thu, 14 May 2026 12:32:12 +0800 Subject: [PATCH] Show elapsed time for live run summaries --- .../app/components/assistant-ui/thread.tsx | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/frontend/app/components/assistant-ui/thread.tsx b/frontend/app/components/assistant-ui/thread.tsx index 306d8e8..8ce26d4 100644 --- a/frontend/app/components/assistant-ui/thread.tsx +++ b/frontend/app/components/assistant-ui/thread.tsx @@ -1898,6 +1898,9 @@ const ActivityChainSummary: FC<{ const contentRunStartedAtMs = useAuiState((s) => findNumberInActivityParts(s.message.content, "runStartedAtMs"), ); + const messageCreatedAtMs = useAuiState((s) => + normalizeMessageCreatedAtMs(s.message.createdAt), + ); const storedElapsedMs = useAuiState((s) => { const value = readMetadataValue(s.message.metadata, "elapsedMs"); const contentValue = findElapsedMsInActivityParts(s.message.content); @@ -1908,7 +1911,8 @@ const ActivityChainSummary: FC<{ ? Math.max(0, Math.round(value)) : null; }); - const initialStartedAtMs = metadataRunStartedAtMs ?? contentRunStartedAtMs; + const initialStartedAtMs = + metadataRunStartedAtMs ?? contentRunStartedAtMs ?? messageCreatedAtMs; const [elapsedMs, setElapsedMs] = useState(() => { if (storedElapsedMs !== null) return storedElapsedMs; if (initialStartedAtMs !== null) { @@ -1939,6 +1943,7 @@ const ActivityChainSummary: FC<{ const startedAt = metadataRunStartedAtMs ?? contentRunStartedAtMs ?? + messageCreatedAtMs ?? (storedElapsedMs === null ? null : Date.now() - storedElapsedMs); if (startedAt === null) { setElapsedMs(storedElapsedMs); @@ -1949,7 +1954,13 @@ const ActivityChainSummary: FC<{ setElapsedMs(Math.max(0, Date.now() - startedAt)); }, 1000); return () => window.clearInterval(timer); - }, [active, metadataRunStartedAtMs, contentRunStartedAtMs, storedElapsedMs]); + }, [ + active, + metadataRunStartedAtMs, + contentRunStartedAtMs, + messageCreatedAtMs, + storedElapsedMs, + ]); return (