| 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.agents]: null, |
| [EModelEndpoint.openAI]: null, |
| [EModelEndpoint.chatGPTBrowser]: null, |
| [EModelEndpoint.gptPlugins]: null, |
| [EModelEndpoint.google]: null, |
| [EModelEndpoint.anthropic]: null, |
| [EModelEndpoint.custom]: null, |
| }; |
|
|
| const endpointsConfig = atom<TEndpointsConfig>({ |
| key: 'endpointsConfig', |
| default: defaultConfig, |
| }); |
|
|
| const endpointsQueryEnabled = atom<boolean>({ |
| 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, |
| }; |
|
|