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()); | |