Spaces:
Runtime error
Runtime error
| import type { StateCreator } from "zustand"; | |
| import { create } from "zustand"; | |
| import { createJSONStorage, persist } from "zustand/middleware"; | |
| import { createSelectors } from "./helpers"; | |
| import type { ModelSettings } from "../types"; | |
| import { getDefaultModelSettings } from "../utils/constants"; | |
| const resetters: (() => void)[] = []; | |
| interface ModelSettingsSlice { | |
| modelSettings: ModelSettings; | |
| updateSettings: <Key extends keyof ModelSettings>(key: Key, value: ModelSettings[Key]) => void; | |
| } | |
| const initialModelSettingsState = { | |
| modelSettings: getDefaultModelSettings(), | |
| }; | |
| const createModelSettingsSlice: StateCreator<ModelSettingsSlice> = (set) => { | |
| resetters.push(() => set(initialModelSettingsState)); | |
| return { | |
| ...initialModelSettingsState, | |
| updateSettings: <Key extends keyof ModelSettings>(key: Key, value: ModelSettings[Key]) => { | |
| set((state) => ({ | |
| modelSettings: { ...state.modelSettings, [key]: value }, | |
| })); | |
| }, | |
| }; | |
| }; | |
| export const useModelSettingsStore = createSelectors( | |
| create<ModelSettingsSlice>()( | |
| persist( | |
| (...a) => ({ | |
| ...createModelSettingsSlice(...a), | |
| }), | |
| { | |
| name: "agentgpt-settings-storage-v2", | |
| storage: createJSONStorage(() => localStorage), | |
| partialize: (state) => ({ | |
| modelSettings: { | |
| ...state.modelSettings, | |
| customModelName: "gpt-3.5-turbo", | |
| maxTokens: Math.min(state.modelSettings.maxTokens, 4000), | |
| }, | |
| }), | |
| } | |
| ) | |
| ) | |
| ); | |
| export const resetSettings = () => resetters.forEach((resetter) => resetter()); | |