/** * Persistent Storage * Electron-store wrapper for application settings */ // Lazy-load electron-store (ESM module) let settingsStoreInstance: any = null; /** * Application settings schema */ export interface AppSettings { // General theme: 'light' | 'dark' | 'system'; language: string; startMinimized: boolean; launchAtStartup: boolean; // Gateway gatewayAutoStart: boolean; gatewayPort: number; // Update updateChannel: 'stable' | 'beta' | 'dev'; autoCheckUpdate: boolean; autoDownloadUpdate: boolean; skippedVersions: string[]; // UI State sidebarCollapsed: boolean; devModeUnlocked: boolean; // Presets selectedBundles: string[]; enabledSkills: string[]; disabledSkills: string[]; } /** * Default settings */ const defaults: AppSettings = { // General theme: 'system', language: 'en', startMinimized: false, launchAtStartup: false, // Gateway gatewayAutoStart: true, gatewayPort: 18789, // Update updateChannel: 'stable', autoCheckUpdate: true, autoDownloadUpdate: false, skippedVersions: [], // UI State sidebarCollapsed: false, devModeUnlocked: false, // Presets selectedBundles: ['productivity', 'developer'], enabledSkills: [], disabledSkills: [], }; /** * Get the settings store instance (lazy initialization) */ async function getSettingsStore() { if (!settingsStoreInstance) { const Store = (await import('electron-store')).default; settingsStoreInstance = new Store({ name: 'settings', defaults, }); } return settingsStoreInstance; } /** * Get a setting value */ export async function getSetting(key: K): Promise { const store = await getSettingsStore(); return store.get(key); } /** * Set a setting value */ export async function setSetting( key: K, value: AppSettings[K] ): Promise { const store = await getSettingsStore(); store.set(key, value); } /** * Get all settings */ export async function getAllSettings(): Promise { const store = await getSettingsStore(); return store.store; } /** * Reset settings to defaults */ export async function resetSettings(): Promise { const store = await getSettingsStore(); store.clear(); } /** * Export settings to JSON */ export async function exportSettings(): Promise { const store = await getSettingsStore(); return JSON.stringify(store.store, null, 2); } /** * Import settings from JSON */ export async function importSettings(json: string): Promise { try { const settings = JSON.parse(json); const store = await getSettingsStore(); store.set(settings); } catch (error) { throw new Error('Invalid settings JSON'); } }