const { EnvVar } = require('@librechat/agents'); const { Tools, AuthType } = require('librechat-data-provider'); const { loadAuthValues } = require('~/app/clients/tools/util'); const fieldsMap = { [Tools.execute_code]: [EnvVar.CODE_API_KEY], }; /** * @param {ServerRequest} req - The request object, containing information about the HTTP request. * @param {ServerResponse} res - The response object, used to send back the desired HTTP response. * @returns {Promise} A promise that resolves when the function has completed. */ const verifyToolAuth = async (req, res) => { try { const { toolId } = req.params; const authFields = fieldsMap[toolId]; if (!authFields) { res.status(404).json({ message: 'Tool not found' }); return; } let result; try { result = await loadAuthValues({ userId: req.user.id, authFields, }); } catch (error) { res.status(200).json({ authenticated: false, message: AuthType.USER_PROVIDED }); return; } let isUserProvided = false; for (const field of authFields) { if (!result[field]) { res.status(200).json({ authenticated: false, message: AuthType.USER_PROVIDED }); return; } if (!isUserProvided && process.env[field] !== result[field]) { isUserProvided = true; } } res.status(200).json({ authenticated: true, message: isUserProvided ? AuthType.USER_PROVIDED : AuthType.SYSTEM_DEFINED, }); } catch (error) { res.status(500).json({ message: error.message }); } }; module.exports = { verifyToolAuth, };