Fix live activity timer

This commit is contained in:
wuyang6
2026-05-14 18:12:11 +08:00
parent 87dd67c76a
commit 119e329dfb
2 changed files with 14 additions and 6 deletions
+5 -1
View File
@@ -485,6 +485,7 @@ class RunManager:
'current_stage': record.current_stage, 'current_stage': record.current_stage,
'started_at': record.started_at, 'started_at': record.started_at,
'updated_at': record.updated_at, 'updated_at': record.updated_at,
'elapsed_ms': max(0, int((time.time() - record.started_at) * 1000)),
'pending_prompt': record.pending_prompt, 'pending_prompt': record.pending_prompt,
'error': record.error, 'error': record.error,
'events': [dict(event) for event in record.events], 'events': [dict(event) for event in record.events],
@@ -1612,7 +1613,10 @@ def create_app(state: AgentState) -> FastAPI:
merged['events'] = stored_snapshot.get('events') merged['events'] = stored_snapshot.get('events')
if memory_snapshot.get('current_stage'): if memory_snapshot.get('current_stage'):
merged['current_stage'] = memory_snapshot.get('current_stage') merged['current_stage'] = memory_snapshot.get('current_stage')
if stored_snapshot.get('elapsed_ms') is not None: if (
memory_snapshot.get('status') not in ACTIVE_RUN_STATUSES
and stored_snapshot.get('elapsed_ms') is not None
):
merged['elapsed_ms'] = stored_snapshot.get('elapsed_ms') merged['elapsed_ms'] = stored_snapshot.get('elapsed_ms')
if stored_snapshot.get('finished_at') is not None: if stored_snapshot.get('finished_at') is not None:
merged['finished_at'] = stored_snapshot.get('finished_at') merged['finished_at'] = stored_snapshot.get('finished_at')
@@ -2014,6 +2014,7 @@ const ActivityChainSummary: FC<{
}); });
const initialStartedAtMs = const initialStartedAtMs =
metadataRunStartedAtMs ?? contentRunStartedAtMs ?? messageCreatedAtMs; metadataRunStartedAtMs ?? contentRunStartedAtMs ?? messageCreatedAtMs;
const liveStartedAtRef = useRef<number | null>(initialStartedAtMs);
const [elapsedMs, setElapsedMs] = useState<number | null>(() => { const [elapsedMs, setElapsedMs] = useState<number | null>(() => {
if (storedElapsedMs !== null) return storedElapsedMs; if (storedElapsedMs !== null) return storedElapsedMs;
if (initialStartedAtMs !== null) { if (initialStartedAtMs !== null) {
@@ -2041,11 +2042,14 @@ const ActivityChainSummary: FC<{
setElapsedMs(storedElapsedMs); setElapsedMs(storedElapsedMs);
return; return;
} }
const startedAt = const explicitStartedAt =
metadataRunStartedAtMs ?? metadataRunStartedAtMs ?? contentRunStartedAtMs ?? messageCreatedAtMs;
contentRunStartedAtMs ?? if (explicitStartedAt !== null) {
messageCreatedAtMs ?? liveStartedAtRef.current = explicitStartedAt;
(storedElapsedMs === null ? null : Date.now() - storedElapsedMs); } else if (liveStartedAtRef.current === null && storedElapsedMs !== null) {
liveStartedAtRef.current = Date.now() - storedElapsedMs;
}
const startedAt = liveStartedAtRef.current;
if (startedAt === null) { if (startedAt === null) {
setElapsedMs(storedElapsedMs); setElapsedMs(storedElapsedMs);
return; return;