@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
59 lines (46 loc) • 1.94 kB
text/typescript
import { DEFAULT_AGENT_META } from '@/const/meta';
import {
DEFAULT_AGENT,
DEFAULT_AGENT_CONFIG,
DEFAULT_HOTKEY_CONFIG,
DEFAULT_SYSTEM_AGENT_CONFIG,
DEFAULT_TTS_CONFIG,
} from '@/const/settings';
import { HotkeyId } from '@/types/hotkey';
import {
GlobalLLMProviderKey,
ProviderConfig,
UserModelProviderConfig,
UserSettings,
} from '@/types/user/settings';
import { merge } from '@/utils/merge';
import { UserStore } from '../../../store';
export const currentSettings = (s: UserStore): UserSettings => merge(s.defaultSettings, s.settings);
export const currentLLMSettings = (s: UserStore): UserModelProviderConfig =>
currentSettings(s).languageModel || {};
export const getProviderConfigById = (provider: string) => (s: UserStore) =>
currentLLMSettings(s)[provider as GlobalLLMProviderKey] as ProviderConfig | undefined;
const currentTTS = (s: UserStore) => merge(DEFAULT_TTS_CONFIG, currentSettings(s).tts);
const defaultAgent = (s: UserStore) => merge(DEFAULT_AGENT, currentSettings(s).defaultAgent);
const defaultAgentConfig = (s: UserStore) => merge(DEFAULT_AGENT_CONFIG, defaultAgent(s).config);
const defaultAgentMeta = (s: UserStore) => merge(DEFAULT_AGENT_META, defaultAgent(s).meta);
const exportSettings = currentSettings;
const dalleConfig = (s: UserStore) => currentSettings(s).tool?.dalle || {};
const isDalleAutoGenerating = (s: UserStore) => currentSettings(s).tool?.dalle?.autoGenerate;
const currentSystemAgent = (s: UserStore) =>
merge(DEFAULT_SYSTEM_AGENT_CONFIG, currentSettings(s).systemAgent);
const getHotkeyById = (id: HotkeyId) => (s: UserStore) =>
merge(DEFAULT_HOTKEY_CONFIG, currentSettings(s).hotkey)[id];
export const settingsSelectors = {
currentSettings,
currentSystemAgent,
currentTTS,
dalleConfig,
defaultAgent,
defaultAgentConfig,
defaultAgentMeta,
exportSettings,
getHotkeyById,
isDalleAutoGenerating,
providerConfig: getProviderConfigById,
};