generalSettings.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { StorageEnum } from '../base/enums';
  2. import { createStorage } from '../base/base';
  3. import type { BaseStorage } from '../base/types';
  4. // Interface for general settings configuration
  5. export interface GeneralSettingsConfig {
  6. maxSteps: number;
  7. maxActionsPerStep: number;
  8. maxFailures: number;
  9. useVision: boolean;
  10. useVisionForPlanner: boolean;
  11. planningInterval: number;
  12. }
  13. export type GeneralSettingsStorage = BaseStorage<GeneralSettingsConfig> & {
  14. updateSettings: (settings: Partial<GeneralSettingsConfig>) => Promise<void>;
  15. getSettings: () => Promise<GeneralSettingsConfig>;
  16. resetToDefaults: () => Promise<void>;
  17. };
  18. // Default settings
  19. export const DEFAULT_GENERAL_SETTINGS: GeneralSettingsConfig = {
  20. maxSteps: 100,
  21. maxActionsPerStep: 5,
  22. maxFailures: 3,
  23. useVision: false,
  24. useVisionForPlanner: false,
  25. planningInterval: 3,
  26. };
  27. const storage = createStorage<GeneralSettingsConfig>('general-settings', DEFAULT_GENERAL_SETTINGS, {
  28. storageEnum: StorageEnum.Local,
  29. liveUpdate: true,
  30. });
  31. export const generalSettingsStore: GeneralSettingsStorage = {
  32. ...storage,
  33. async updateSettings(settings: Partial<GeneralSettingsConfig>) {
  34. const currentSettings = (await storage.get()) || DEFAULT_GENERAL_SETTINGS;
  35. await storage.set({
  36. ...currentSettings,
  37. ...settings,
  38. });
  39. },
  40. async getSettings() {
  41. const settings = await storage.get();
  42. return settings || DEFAULT_GENERAL_SETTINGS;
  43. },
  44. async resetToDefaults() {
  45. await storage.set(DEFAULT_GENERAL_SETTINGS);
  46. },
  47. };