| const crypto = require('crypto'); |
| const { sendEvent } = require('@librechat/api'); |
| const { getResponseSender, Constants } = require('librechat-data-provider'); |
| const { sendError } = require('~/server/middleware/error'); |
| const { saveMessage } = require('~/models'); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| const denyRequest = async (req, res, errorMessage) => { |
| let responseText = errorMessage; |
| if (typeof errorMessage === 'object') { |
| responseText = JSON.stringify(errorMessage); |
| } |
|
|
| const { messageId, conversationId: _convoId, parentMessageId, text } = req.body; |
| const conversationId = _convoId ?? crypto.randomUUID(); |
|
|
| const userMessage = { |
| sender: 'User', |
| messageId: messageId ?? crypto.randomUUID(), |
| parentMessageId, |
| conversationId, |
| isCreatedByUser: true, |
| text, |
| }; |
| sendEvent(res, { message: userMessage, created: true }); |
|
|
| const shouldSaveMessage = _convoId && parentMessageId && parentMessageId !== Constants.NO_PARENT; |
|
|
| if (shouldSaveMessage) { |
| await saveMessage( |
| req, |
| { ...userMessage, user: req.user.id }, |
| { context: `api/server/middleware/denyRequest.js - ${responseText}` }, |
| ); |
| } |
|
|
| return await sendError(req, res, { |
| sender: getResponseSender(req.body), |
| messageId: crypto.randomUUID(), |
| conversationId, |
| parentMessageId: userMessage.messageId, |
| text: responseText, |
| shouldSaveMessage, |
| user: req.user.id, |
| }); |
| }; |
|
|
| module.exports = denyRequest; |
|
|