Fix activity replay after refresh

This commit is contained in:
wuyang6
2026-05-11 21:16:41 +08:00
parent 47f08dba04
commit e89e35c6fd
2 changed files with 14 additions and 5 deletions
@@ -45,6 +45,7 @@ type ActivityContextValue = {
selectedId: string | null; selectedId: string | null;
sessionId: string | null; sessionId: string | null;
filesRefreshToken: number; filesRefreshToken: number;
openActivity: () => void;
openItem: (id: string) => void; openItem: (id: string) => void;
openFiles: (sessionId?: string | null) => void; openFiles: (sessionId?: string | null) => void;
close: () => void; close: () => void;
@@ -58,6 +59,11 @@ export function ActivityProvider({ children }: { children: ReactNode }) {
const [selectedId, setSelectedId] = useState<string | null>(null); const [selectedId, setSelectedId] = useState<string | null>(null);
const [sessionId, setSessionId] = useState<string | null>(null); const [sessionId, setSessionId] = useState<string | null>(null);
const [filesRefreshToken, setFilesRefreshToken] = useState(0); const [filesRefreshToken, setFilesRefreshToken] = useState(0);
const openActivity = useCallback(() => {
setMode("activity");
setSelectedId(null);
setOpen(true);
}, []);
const openItem = useCallback((id: string) => { const openItem = useCallback((id: string) => {
setMode("activity"); setMode("activity");
setSelectedId(id); setSelectedId(id);
@@ -82,6 +88,7 @@ export function ActivityProvider({ children }: { children: ReactNode }) {
selectedId, selectedId,
sessionId, sessionId,
filesRefreshToken, filesRefreshToken,
openActivity,
openItem, openItem,
openFiles, openFiles,
close, close,
@@ -92,6 +99,7 @@ export function ActivityProvider({ children }: { children: ReactNode }) {
selectedId, selectedId,
sessionId, sessionId,
filesRefreshToken, filesRefreshToken,
openActivity,
openItem, openItem,
openFiles, openFiles,
close, close,
@@ -133,6 +141,7 @@ export function ActivityPanel() {
selectedId, selectedId,
sessionId, sessionId,
filesRefreshToken, filesRefreshToken,
openActivity,
openItem, openItem,
close, close,
} = useActivityPanel(); } = useActivityPanel();
@@ -151,10 +160,10 @@ export function ActivityPanel() {
latestId && latestId &&
latestId !== prevLatestIdRef.current latestId !== prevLatestIdRef.current
) { ) {
openItem(latestId); openActivity();
} }
prevLatestIdRef.current = latestId; prevLatestIdRef.current = latestId;
}, [items, mode, openItem]); }, [items, mode, openActivity]);
if (!open) return null; if (!open) return null;
@@ -406,13 +406,13 @@ export function toReplayRepository(
if (message.role === "tool") continue; if (message.role === "tool") continue;
if (message.role !== "user" && message.role !== "assistant") continue; if (message.role !== "user" && message.role !== "assistant") continue;
const content = cleanStoredContent(message.content ?? ""); const content = cleanStoredContent(message.content ?? "");
if (!content) continue;
if (content.trimStart().startsWith("<system-reminder>")) continue;
const id = `${fallbackSessionId}-${index}`;
const toolParts = const toolParts =
message.role === "assistant" message.role === "assistant"
? toToolParts(message.tool_calls ?? [], toolResults, content) ? toToolParts(message.tool_calls ?? [], toolResults, content)
: []; : [];
if (!content && !toolParts.length) continue;
if (content.trimStart().startsWith("<system-reminder>")) continue;
const id = `${fallbackSessionId}-${index}`;
const shouldShowAssistantText = const shouldShowAssistantText =
message.role !== "assistant" || message.role !== "assistant" ||
!toolParts.length || !toolParts.length ||