revert: remove Phase 3 complexity - server handles persistence

This commit is contained in:
Mohamed Boudra
2025-12-02 11:06:57 +00:00
parent 3208624c5e
commit 7896bdd42c
5 changed files with 42 additions and 439 deletions
+2 -17
View File
@@ -1,9 +1,8 @@
import { useCallback, useMemo, useRef } from "react";
import { useCallback, useRef } from "react";
import { Alert } from "react-native";
import type { SessionContextValue } from "@/contexts/session-context";
import { useDaemonConnections } from "@/contexts/daemon-connections-context";
import { useSessionStore } from "@/stores/session-store";
import { useSessionHeavyState } from "@/stores/session-heavy-state";
export class DaemonSessionUnavailableError extends Error {
serverId: string;
@@ -38,21 +37,7 @@ export function useDaemonSession(serverId?: string | null, options?: UseDaemonSe
},
[serverId]
);
const baseSession = useSessionStore(selectSession);
const heavyState = useSessionHeavyState(serverId ?? null);
const session = useMemo(() => {
if (!baseSession) {
return null;
}
if (!serverId || !heavyState) {
return baseSession;
}
return {
...baseSession,
messages: heavyState.messages,
agentStreamState: heavyState.agentStreamState,
} as SessionContextValue;
}, [baseSession, heavyState, serverId]);
const session = useSessionStore(selectSession);
const { connectionStates } = useDaemonConnections();
const alertedDaemonsRef = useRef<Set<string>>(new Set());
const loggedDaemonsRef = useRef<Set<string>>(new Set());
@@ -1,28 +1,13 @@
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(() => {
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]);
return new Map<string, SessionData>(Object.entries(sessions));
}, [sessions]);
}
type SessionSelector<T> = (session: SessionData | null) => T;