import { StorageEnum } from '../base/enums'; import { createStorage } from '../base/base'; import type { BaseStorage } from '../base/types'; // Interface for general settings configuration export interface GeneralSettingsConfig { maxSteps: number; maxActionsPerStep: number; maxFailures: number; useVision: boolean; useVisionForPlanner: boolean; planningInterval: number; displayHighlights: boolean; minWaitPageLoad: number; replayHistoricalTasks: boolean; } export type GeneralSettingsStorage = BaseStorage & { updateSettings: (settings: Partial) => Promise; getSettings: () => Promise; resetToDefaults: () => Promise; }; // Default settings export const DEFAULT_GENERAL_SETTINGS: GeneralSettingsConfig = { maxSteps: 100, maxActionsPerStep: 5, maxFailures: 3, useVision: false, useVisionForPlanner: false, planningInterval: 3, displayHighlights: true, minWaitPageLoad: 250, replayHistoricalTasks: false, }; const storage = createStorage('general-settings', DEFAULT_GENERAL_SETTINGS, { storageEnum: StorageEnum.Local, liveUpdate: true, }); export const generalSettingsStore: GeneralSettingsStorage = { ...storage, async updateSettings(settings: Partial) { const currentSettings = (await storage.get()) || DEFAULT_GENERAL_SETTINGS; const updatedSettings = { ...currentSettings, ...settings, }; // If useVision is true, displayHighlights must also be true if (updatedSettings.useVision && !updatedSettings.displayHighlights) { updatedSettings.displayHighlights = true; } await storage.set(updatedSettings); }, async getSettings() { const settings = await storage.get(); return { ...DEFAULT_GENERAL_SETTINGS, ...settings, }; }, async resetToDefaults() { await storage.set(DEFAULT_GENERAL_SETTINGS); }, };