Files
LibreChat/client/src/store/endpoints.ts
Danny Avila df1dfa7d46 refactor: Use librechat-data-provider app-wide 🔄 (#1326)
* chore: bump vite, vitejs/plugin-react, mark client package as esm, move react-query as a peer dep in data-provider

* chore: import changes due to new data-provider export strategy, also fix type imports where applicable

* chore: export react-query services as separate to avoid react dependencies in /api/

* chore: suppress sourcemap warnings and polyfill node:path which is used by filenamify
TODO: replace filenamify with an alternative and REMOVE polyfill

* chore: /api/ changes to support `librechat-data-provider`

* refactor: rewrite Dockerfile.multi in light of /api/ changes to support `librechat-data-provider`

* chore: remove volume mapping to node_modules directories in default compose file

* chore: remove schemas from /api/ as is no longer needed with use of `librechat-data-provider`

* fix(ci): jest `librechat-data-provider/react-query` module resolution
2023-12-11 14:48:40 -05:00

73 lines
1.6 KiB
TypeScript

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.assistant]: null,
[EModelEndpoint.openAI]: null,
[EModelEndpoint.bingAI]: null,
[EModelEndpoint.chatGPTBrowser]: null,
[EModelEndpoint.gptPlugins]: null,
[EModelEndpoint.google]: null,
[EModelEndpoint.anthropic]: 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;
},
});
const availableEndpoints = selector({
key: 'availableEndpoints',
get: ({ get }) => {
const endpoints = [
'azureOpenAI',
'openAI',
'chatGPTBrowser',
'gptPlugins',
'bingAI',
'google',
'anthropic',
];
const f = get(endpointsFilter);
return endpoints.filter((endpoint) => f[endpoint]);
},
});
// const modelAvailable
export default {
plugins,
endpointsConfig,
endpointsFilter,
availableEndpoints,
defaultConfig,
endpointsQueryEnabled,
};