Carry elapsed time through replay tool parts

This commit is contained in:
武阳
2026-05-08 21:15:39 +08:00
parent 39635617ae
commit 0dc900126c
3 changed files with 58 additions and 13 deletions
@@ -1316,10 +1316,7 @@ const ActivityChainSummary: FC<{
);
const storedElapsedMs = useAuiState((s) => {
const value = readMetadataValue(s.message.metadata, "elapsedMs");
const contentValue = findNumberInActivityParts(
s.message.content,
"elapsedMs",
);
const contentValue = findElapsedMsInActivityParts(s.message.content);
if (typeof value !== "number" || !Number.isFinite(value)) {
return contentValue;
}
@@ -1397,6 +1394,21 @@ function findNumberInActivityParts(
return null;
}
function findElapsedMsInActivityParts(content: readonly ActivitySummaryPart[]) {
for (const part of content) {
if (typeof part.elapsedMs === "number" && Number.isFinite(part.elapsedMs)) {
return Math.max(0, Math.round(part.elapsedMs));
}
const args = part.args;
if (!args || typeof args !== "object" || Array.isArray(args)) continue;
const value = (args as Record<string, unknown>).__claw_elapsed_ms;
if (typeof value === "number" && Number.isFinite(value)) {
return Math.max(0, Math.round(value));
}
}
return null;
}
function summarizeActivityChainLabel(
content: readonly ActivitySummaryPart[],
status: string | undefined,