perf: cap messages and optimize persistence (Phase 3)

This commit is contained in:
Mohamed Boudra
2025-12-02 10:50:11 +00:00
parent 0ba5e481f4
commit 3208624c5e
5 changed files with 439 additions and 42 deletions
@@ -1,13 +1,28 @@
import { useCallback, useMemo } from "react";
import { useStoreWithEqualityFn } from "zustand/traditional";
import { useSessionStore, type SessionData } from "@/stores/session-store";
import { useSessionHeavyDirectory } from "@/stores/session-heavy-state";
export function useSessionDirectory(): Map<string, SessionData> {
const sessions = useSessionStore((state) => state.sessions);
const heavyDirectory = useSessionHeavyDirectory();
return useMemo(() => {
return new Map<string, SessionData>(Object.entries(sessions));
}, [sessions]);
const merged = new Map<string, SessionData>();
for (const [serverId, session] of Object.entries(sessions)) {
const heavy = heavyDirectory.get(serverId);
if (heavy) {
merged.set(serverId, {
...session,
messages: heavy.messages,
agentStreamState: heavy.agentStreamState,
});
} else {
merged.set(serverId, session);
}
}
return merged;
}, [heavyDirectory, sessions]);
}
type SessionSelector<T> = (session: SessionData | null) => T;