70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
import { create } from 'zustand';
|
|
import { persist } from 'zustand/middleware';
|
|
|
|
type DebugPrefsState = {
|
|
wsUrl: string;
|
|
aecEnabled: boolean;
|
|
nsEnabled: boolean;
|
|
agcEnabled: boolean;
|
|
fastgptInteractiveVoiceEnabled: boolean;
|
|
clientToolEnabledMap: Record<string, boolean>;
|
|
setWsUrl: (value: string) => void;
|
|
setAecEnabled: (value: boolean) => void;
|
|
setNsEnabled: (value: boolean) => void;
|
|
setAgcEnabled: (value: boolean) => void;
|
|
setFastgptInteractiveVoiceEnabled: (value: boolean) => void;
|
|
setClientToolEnabled: (toolId: string, enabled: boolean) => void;
|
|
hydrateClientToolDefaults: (toolIds: string[]) => void;
|
|
};
|
|
|
|
const getDefaultWsUrl = (): string => {
|
|
if (typeof window === 'undefined') {
|
|
return 'ws://localhost:8000/ws';
|
|
}
|
|
const defaultHost = window.location.hostname || 'localhost';
|
|
return `ws://${defaultHost}:8000/ws`;
|
|
};
|
|
|
|
export const useDebugPrefsStore = create<DebugPrefsState>()(
|
|
persist(
|
|
(set, get) => ({
|
|
wsUrl: getDefaultWsUrl(),
|
|
aecEnabled: true,
|
|
nsEnabled: true,
|
|
agcEnabled: true,
|
|
fastgptInteractiveVoiceEnabled: true,
|
|
clientToolEnabledMap: {},
|
|
setWsUrl: (value) => set({ wsUrl: value }),
|
|
setAecEnabled: (value) => set({ aecEnabled: value }),
|
|
setNsEnabled: (value) => set({ nsEnabled: value }),
|
|
setAgcEnabled: (value) => set({ agcEnabled: value }),
|
|
setFastgptInteractiveVoiceEnabled: (value) => set({ fastgptInteractiveVoiceEnabled: value }),
|
|
setClientToolEnabled: (toolId, enabled) =>
|
|
set((state) => ({
|
|
clientToolEnabledMap: {
|
|
...state.clientToolEnabledMap,
|
|
[toolId]: enabled,
|
|
},
|
|
})),
|
|
hydrateClientToolDefaults: (toolIds) => {
|
|
const current = get().clientToolEnabledMap;
|
|
let changed = false;
|
|
const nextMap: Record<string, boolean> = { ...current };
|
|
for (const toolId of toolIds) {
|
|
if (!(toolId in nextMap)) {
|
|
nextMap[toolId] = true;
|
|
changed = true;
|
|
}
|
|
}
|
|
if (changed) {
|
|
set({ clientToolEnabledMap: nextMap });
|
|
}
|
|
},
|
|
}),
|
|
{
|
|
name: 'assistants-debug-prefs',
|
|
version: 1,
|
|
}
|
|
)
|
|
);
|