const { FileSources, EModelEndpoint, Constants, defaultSocialLogins, } = require('librechat-data-provider'); const { initializeFirebase } = require('./Files/Firebase/initialize'); const loadCustomConfig = require('./Config/loadCustomConfig'); const handleRateLimits = require('./Config/handleRateLimits'); const { loadAndFormatTools } = require('./ToolService'); const paths = require('~/config/paths'); const { logger } = require('~/config'); /** * * Loads custom config and initializes app-wide variables. * @function AppService * @param {Express.Application} app - The Express application object. */ const AppService = async (app) => { /** @type {TCustomConfig}*/ const config = (await loadCustomConfig()) ?? {}; const fileStrategy = config.fileStrategy ?? FileSources.local; process.env.CDN_PROVIDER = fileStrategy; if (fileStrategy === FileSources.firebase) { initializeFirebase(); } /** @type {Record} */ endpointLocals[EModelEndpoint.assistants] = { disableBuilder, pollIntervalMs, timeoutMs, supportedIds, excludedIds, }; } app.locals = { socialLogins, availableTools, fileStrategy, fileConfig: config?.fileConfig, paths, ...endpointLocals, }; }; module.exports = AppService;