* 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
73 lines
1.6 KiB
TypeScript
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,
|
|
};
|