diff --git a/frontend/app/components/assistant-ui/activity-panel.tsx b/frontend/app/components/assistant-ui/activity-panel.tsx index 5df63de..4a03773 100644 --- a/frontend/app/components/assistant-ui/activity-panel.tsx +++ b/frontend/app/components/assistant-ui/activity-panel.tsx @@ -168,21 +168,32 @@ export function ActivityPanel() { () => collectLiveRunItems(liveRunStatus), [liveRunStatus], ); + const selectedMessageId = selectedId ? activityMessageId(selectedId) : null; + const selectedMessageItems = selectedMessageId + ? messageItems.filter( + (item) => activityMessageId(item.id) === selectedMessageId, + ) + : []; const shouldUseLiveItems = + !selectedMessageId && liveItems.length > 0 && activeSessionId !== null && (activeSessionId !== replayedSessionId || hasActiveRun(liveRunStatus)); const items = shouldUseLiveItems ? liveItems : messageItems; - const selectedMessageId = selectedId ? activityMessageId(selectedId) : null; const selectedItems = selectedMessageId ? items.filter((item) => activityMessageId(item.id) === selectedMessageId) : []; const visibleItems = - selectedMessageId && selectedItems.length > 0 ? selectedItems : items; + selectedMessageId && selectedMessageItems.length > 0 + ? selectedMessageItems + : selectedMessageId && selectedItems.length > 0 + ? selectedItems + : items; const selectedActivityMissing = Boolean( selectedMessageId && !shouldUseLiveItems && - items.length > 0 && + messageItems.length > 0 && + selectedMessageItems.length === 0 && selectedItems.length === 0, ); const prevLatestIdRef = useRef(null); @@ -207,13 +218,14 @@ export function ActivityPanel() { const latestId = items.at(-1)?.id ?? null; if ( mode === "activity" && + !selectedId && latestId && latestId !== prevLatestIdRef.current ) { openActivity(); } prevLatestIdRef.current = latestId; - }, [items, mode, openActivity]); + }, [items, mode, openActivity, selectedId]); if (!open) return null;