56 lines · 1.3 KB · TypeScript
RawDownload
/** * Chat state persistence layer using localStorage */ const STORAGE_KEY = "vllm_chat_state";const STATE_VERSION = 1;const EXPIRY_DAYS = 7; export interface PersistedChatState {  version: number;  currentSessionId: string | null;  input: string;  selectedModel: string;  mcpEnabled: boolean;  artifactsEnabled: boolean;  systemPrompt: string;  lastUpdated: number;  sidebarCollapsed: boolean;} const defaultState: PersistedChatState = {  version: STATE_VERSION,  currentSessionId: null,  input: "",  selectedModel: "",  mcpEnabled: false,  artifactsEnabled: false,  systemPrompt: "",  lastUpdated: Date.now(),  sidebarCollapsed: true,}; export function loadState(): PersistedChatState {  try {    const stored = localStorage.getItem(STORAGE_KEY);    if (!stored) return { ...defaultState };     const parsed = JSON.parse(stored) as PersistedChatState;     // Check version and expiry    if (parsed.version !== STATE_VERSION) {      localStorage.removeItem(STORAGE_KEY);      return { ...defaultState };    }     const expiryMs = EXPIRY_DAYS * 24 * 60 * 60 * 1000;    if (Date.now() - parsed.lastUpdated > expiryMs) {      localStorage.removeItem(STORAGE_KEY);      return { ...defaultState };    }     return parsed;  } catch {    return { ...defaultState };  }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t