Fix activity replay after refresh
This commit is contained in:
@@ -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 ||
|
||||||
|
|||||||
Reference in New Issue
Block a user