import { type WorkbenchGroupDimension, type WorkbenchLayoutState } from './agent-workbench-model.js'; export interface WorkbenchStorage { getItem(key: string): string | null; setItem(key: string, value: string): void; removeItem?(key: string): void; } export declare function workbenchLayoutStorageKey(sessionId: string): string; export declare function loadWorkbenchLayout(sessionId: string, storage: WorkbenchStorage | null | undefined): WorkbenchLayoutState; /** Persists layout primitives only. URLs, grants, cookies and frame state are never serialised. */ export declare function saveWorkbenchLayout(sessionId: string, layout: WorkbenchLayoutState, storage: WorkbenchStorage | null | undefined): boolean; /** * Rail geometry belongs to the window, not to a session. Keeping it per session * made the sidebar jump to a different width on every selection change, so the * width and the collapsed flag live in one global record instead. */ export interface WorkbenchRailPrefs { railWidth: number; railCollapsed: boolean; } export declare function loadWorkbenchRailPrefs(storage: WorkbenchStorage | null | undefined): WorkbenchRailPrefs | null; export declare function saveWorkbenchRailPrefs(storage: WorkbenchStorage | null | undefined, prefs: WorkbenchRailPrefs): boolean; /** * 未读账本,纯前端的一份小记录: * - `seen[sessionId]` —— 你最后一次「点开」这个会话的时刻,未读的清零线。 * - `unread[sessionId]` —— 本地侦测到 bot 干完活(working→idle)的时刻。 * 两者都是 epoch 毫秒。`unread > seen` 即未读;页面关闭期间的动静另有活动时间兜底。 * 只存 id 和时间戳,不存标题、聊天内容或任何链接。 */ export interface WorkbenchSeenLedger { seen: Record; unread: Record; } export declare function emptyWorkbenchSeenLedger(): WorkbenchSeenLedger; export declare function pruneWorkbenchSeenLedger(ledger: WorkbenchSeenLedger, max?: number): WorkbenchSeenLedger; /** 坏数据(不是 JSON、不是对象、两张表都不成形)一律回 null,让调用方走首次基线。 */ export declare function loadWorkbenchSeenLedger(storage: WorkbenchStorage | null | undefined): WorkbenchSeenLedger | null; export declare function saveWorkbenchSeenLedger(storage: WorkbenchStorage | null | undefined, ledger: WorkbenchSeenLedger): boolean; /** 分组维度是全局偏好(不分会话)。白名单外的值一律当没存过。 */ export declare function loadWorkbenchGroupDimension(storage: WorkbenchStorage | null | undefined): WorkbenchGroupDimension | null; export declare function saveWorkbenchGroupDimension(storage: WorkbenchStorage | null | undefined, dimension: WorkbenchGroupDimension): boolean; /** * 折叠起来的分组 key(`bot:Builder` 这种带维度前缀的稳定 key,全维度唯一, * 所以一份平铺的数组就够,不需要按维度分表)。 * 坏 JSON 或压根不是数组 → null,让调用方走「全部展开」的默认;数组里混进 * 非字符串只剔掉那一项,不为一颗老鼠屎丢掉整份记忆。 */ export declare function loadWorkbenchCollapsedGroups(storage: WorkbenchStorage | null | undefined): string[] | null; export declare function saveWorkbenchCollapsedGroups(storage: WorkbenchStorage | null | undefined, keys: Iterable): boolean; //# sourceMappingURL=agent-workbench-storage.d.ts.map