| const { CacheKeys, EModelEndpoint, orderEndpointsConfig } = require('librechat-data-provider'); |
| const { loadDefaultEndpointsConfig, loadConfigEndpoints } = require('~/server/services/Config'); |
| const { getLogStores } = require('~/cache'); |
|
|
| async function endpointController(req, res) { |
| const cache = getLogStores(CacheKeys.CONFIG_STORE); |
| const cachedEndpointsConfig = await cache.get(CacheKeys.ENDPOINT_CONFIG); |
| if (cachedEndpointsConfig) { |
| res.send(cachedEndpointsConfig); |
| return; |
| } |
|
|
| const defaultEndpointsConfig = await loadDefaultEndpointsConfig(req); |
| const customConfigEndpoints = await loadConfigEndpoints(req); |
|
|
| |
| const mergedConfig = { ...defaultEndpointsConfig, ...customConfigEndpoints }; |
| if (mergedConfig[EModelEndpoint.assistants] && req.app.locals?.[EModelEndpoint.assistants]) { |
| const { disableBuilder, retrievalModels, capabilities, version, ..._rest } = |
| req.app.locals[EModelEndpoint.assistants]; |
|
|
| mergedConfig[EModelEndpoint.assistants] = { |
| ...mergedConfig[EModelEndpoint.assistants], |
| version, |
| retrievalModels, |
| disableBuilder, |
| capabilities, |
| }; |
| } |
|
|
| if ( |
| mergedConfig[EModelEndpoint.azureAssistants] && |
| req.app.locals?.[EModelEndpoint.azureAssistants] |
| ) { |
| const { disableBuilder, retrievalModels, capabilities, version, ..._rest } = |
| req.app.locals[EModelEndpoint.azureAssistants]; |
|
|
| mergedConfig[EModelEndpoint.azureAssistants] = { |
| ...mergedConfig[EModelEndpoint.azureAssistants], |
| version, |
| retrievalModels, |
| disableBuilder, |
| capabilities, |
| }; |
| } |
|
|
| const endpointsConfig = orderEndpointsConfig(mergedConfig); |
|
|
| await cache.set(CacheKeys.ENDPOINT_CONFIG, endpointsConfig); |
| res.send(JSON.stringify(endpointsConfig)); |
| } |
|
|
| module.exports = endpointController; |
|
|