Stabilize live run activity updates
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user