Show elapsed time for live run summaries
This commit is contained in:
@@ -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<number | null>(() => {
|
||||
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 (
|
||||
<button
|
||||
@@ -1991,6 +2002,23 @@ function findNumberInActivityParts(
|
||||
return null;
|
||||
}
|
||||
|
||||
function normalizeMessageCreatedAtMs(value: unknown) {
|
||||
if (value instanceof Date) {
|
||||
const time = value.getTime();
|
||||
return Number.isFinite(time) ? time : null;
|
||||
}
|
||||
if (typeof value === "number" && Number.isFinite(value)) {
|
||||
return value < 10_000_000_000
|
||||
? Math.round(value * 1000)
|
||||
: Math.round(value);
|
||||
}
|
||||
if (typeof value === "string") {
|
||||
const time = Date.parse(value);
|
||||
return Number.isFinite(time) ? time : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function findElapsedMsInActivityParts(content: readonly ActivitySummaryPart[]) {
|
||||
for (const part of content) {
|
||||
if (typeof part.elapsedMs === "number" && Number.isFinite(part.elapsedMs)) {
|
||||
|
||||
Reference in New Issue
Block a user