const { EModelEndpoint, getEnabledEndpoints } = require('librechat-data-provider'); const loadAsyncEndpoints = require('./loadAsyncEndpoints'); const { config } = require('./EndpointService'); /** * Load async endpoints and return a configuration object * @param {AppConfig} appConfig - The app configuration object * @returns {Promise>} An object whose keys are endpoint names and values are objects that contain the endpoint configuration and an order. */ async function loadDefaultEndpointsConfig(appConfig) { const { google } = await loadAsyncEndpoints(appConfig); const { assistants, azureAssistants, azureOpenAI } = config; const enabledEndpoints = getEnabledEndpoints(); const endpointConfig = { [EModelEndpoint.openAI]: config[EModelEndpoint.openAI], [EModelEndpoint.agents]: config[EModelEndpoint.agents], [EModelEndpoint.assistants]: assistants, [EModelEndpoint.azureAssistants]: azureAssistants, [EModelEndpoint.azureOpenAI]: azureOpenAI, [EModelEndpoint.google]: google, [EModelEndpoint.anthropic]: config[EModelEndpoint.anthropic], [EModelEndpoint.bedrock]: config[EModelEndpoint.bedrock], }; const orderedAndFilteredEndpoints = enabledEndpoints.reduce((config, key, index) => { if (endpointConfig[key]) { config[key] = { ...(endpointConfig[key] ?? {}), order: index }; } return config; }, {}); return orderedAndFilteredEndpoints; } module.exports = loadDefaultEndpointsConfig;