import { atom, selector } from 'recoil'; import { EModelEndpoint } from 'librechat-data-provider'; import type { TEndpointsConfig } from 'librechat-data-provider'; const defaultConfig: TEndpointsConfig = { [EModelEndpoint.azureOpenAI]: null, [EModelEndpoint.azureAssistants]: null, [EModelEndpoint.assistants]: null, [EModelEndpoint.openAI]: null, [EModelEndpoint.bingAI]: null, [EModelEndpoint.chatGPTBrowser]: null, [EModelEndpoint.gptPlugins]: null, [EModelEndpoint.google]: null, [EModelEndpoint.anthropic]: null, [EModelEndpoint.custom]: null, }; const endpointsConfig = atom({ key: 'endpointsConfig', default: defaultConfig, }); const endpointsQueryEnabled = atom({ key: 'endpointsQueryEnabled', default: true, }); const plugins = selector({ key: 'plugins', get: ({ get }) => { const config = get(endpointsConfig) || {}; return config?.gptPlugins?.plugins || {}; }, }); const endpointsFilter = selector({ key: 'endpointsFilter', get: ({ get }) => { const config = get(endpointsConfig) || {}; const filter = {}; for (const key of Object.keys(config)) { filter[key] = !!config[key]; } return filter; }, }); export default { plugins, endpointsConfig, endpointsFilter, defaultConfig, endpointsQueryEnabled, };