Stabilize live run activity updates

This commit is contained in:
wuyang6
2026-05-14 20:55:30 +08:00
parent cf72540bc9
commit d427086aa7
2 changed files with 5 additions and 40 deletions
@@ -156,10 +156,6 @@ export function ActivityPanel() {
readActiveSessionId(),
);
const liveRunStatus = useLiveRunStatus(activeSessionId, mode);
const replayedSessionId = useMemo(
() => findLatestSessionIdInMessages(messages),
[messages],
);
const messageItems = useMemo(
() => collectActivityItems(messages),
[messages],
@@ -169,22 +165,20 @@ export function ActivityPanel() {
[liveRunStatus],
);
const selectedMessageId = selectedId ? activityMessageId(selectedId) : null;
const liveRunActive = hasActiveRun(liveRunStatus) && liveItems.length > 0;
const selectedMessageItems = selectedMessageId
? messageItems.filter(
(item) => activityMessageId(item.id) === selectedMessageId,
)
: [];
const shouldUseLiveItems =
!selectedMessageId &&
liveItems.length > 0 &&
activeSessionId !== null &&
(activeSessionId !== replayedSessionId || hasActiveRun(liveRunStatus));
const shouldUseLiveItems = Boolean(activeSessionId && liveRunActive);
const items = shouldUseLiveItems ? liveItems : messageItems;
const selectedItems = selectedMessageId
? items.filter((item) => activityMessageId(item.id) === selectedMessageId)
: [];
const visibleItems =
selectedMessageId && selectedMessageItems.length > 0
const visibleItems = shouldUseLiveItems
? liveItems
: selectedMessageId && selectedMessageItems.length > 0
? selectedMessageItems
: selectedMessageId && selectedItems.length > 0
? selectedItems
@@ -764,23 +758,6 @@ function hasActiveRun(
return status?.status === "queued" || status?.status === "running";
}
function findLatestSessionIdInMessages(messages: readonly MessageState[]) {
for (const message of [...messages].reverse()) {
const metadata = message.metadata;
const custom =
metadata && typeof metadata === "object" && "custom" in metadata
? (metadata as { custom?: unknown }).custom
: null;
if (custom && typeof custom === "object" && "sessionId" in custom) {
const sessionId = (custom as { sessionId?: unknown }).sessionId;
if (typeof sessionId === "string" && sessionId.trim()) {
return sessionId.trim();
}
}
}
return null;
}
function ActivityPanelItem({
item,
open,