export type SidebarSelection = { kind: "chat" | "search"; id: string }; type WorkspaceSelectionItem = { type: SidebarSelection["kind"]; id: string }; type ResolveSidebarSelectionOptions = { initialSelection?: SidebarSelection; selectFallback?: boolean; }; export function resolveSidebarSelectionAfterRefresh( current: SidebarSelection | null, workspaceItems: WorkspaceSelectionItem[], { initialSelection, selectFallback = false }: ResolveSidebarSelectionOptions = {} ): SidebarSelection | null { const hasItem = (candidate: SidebarSelection | null | undefined) => { if (!candidate) return false; return workspaceItems.some((item) => item.type === candidate.kind && item.id === candidate.id); }; if (hasItem(current)) { return current; } if (hasItem(initialSelection)) { return initialSelection ?? null; } if (!selectFallback) { return null; } const first = workspaceItems[0]; return first ? { kind: first.type, id: first.id } : null; }