/** * The workflow panel's entry store: the active DESTINATION, keyed by the sidebar * tab record's id. * * Why a slot store and not `useState`: a docked sidebar body is UNMOUNTED * whenever another tab in the pane becomes active (and the sidebar layout is * memory-only), so component state would silently reset the destination on every * glance at the file tree. The store instance is framework-cached per (entry, * session) and survives the unmount by construction; keying the state by * `tab.id` keeps two panes showing the panel independent. The registration * passes the handle as the seat's `store` option, so the body receives * `useStore` + the baked `select` action through its props share. */ /** * The panel's destinations: the five product destinations plus this host's * session landing. The ids are the shared nav's ids (IA §8.2 order), so the * store never invents a vocabulary of its own. */ export type PanelDestination = 'focus' | 'overview' | 'issues' | 'workflows' | 'iterations' | 'projects'; /** * Is this string a legal destination? The store's `select` refuses anything * else, so a stale or hand-written id can never be written into the state and * never reaches a render. */ export declare function isPanelDestination(value: unknown): value is PanelDestination; /** The entry-store state: the active destination per sidebar tab record. */ export interface PanelStoreState { byTab: Record; } /** * The panel entry store handle. `undefined` reads as the `'focus'` default — the * body applies `?? 'focus'` at the read site, so nothing writes the default into * the state. */ export declare function createPanelStore(): import("@deepseek-ai/dsh-client-store").EngineStoreHandle; export type PanelStore = ReturnType;