diff --git a/api/server/routes/ask/addToCache.js b/api/server/routes/ask/addToCache.js new file mode 100644 index 0000000000..826e5d74fa --- /dev/null +++ b/api/server/routes/ask/addToCache.js @@ -0,0 +1,31 @@ +const Keyv = require('keyv'); +const { KeyvFile } = require('keyv-file'); +const crypto = require('crypto'); + +const addToCache = async ( { conversationId, parentMessageId }) => { + const conversationsCache = new Keyv({ + store: new KeyvFile({ filename: './data/cache.json' }) + }); + + let conversation = await conversationsCache.get(conversationId); + let isNewConversation = false; + if (!conversation) { + conversation = { + messages: [], + createdAt: Date.now() + }; + isNewConversation = true; + } + + // const shouldGenerateTitle = opts.shouldGenerateTitle && isNewConversation; + + const userMessage = { + id: crypto.randomUUID(), + parentMessageId, + role: 'User', + message + }; + conversation.messages.push(userMessage); +}; + +module.exports = { addToCache }; diff --git a/api/server/routes/ask/askOpenAI.js b/api/server/routes/ask/askOpenAI.js index 4d95cc4c8d..4ad601068b 100644 --- a/api/server/routes/ask/askOpenAI.js +++ b/api/server/routes/ask/askOpenAI.js @@ -8,18 +8,18 @@ const { handleError, sendMessage, createOnProgress, handleText } = require('./ha const abortControllers = new Map(); -router.get('/abort', (req, res) => { - const requestId = req.query.requestId; - - if (abortControllers.has(requestId)) { - const abortController = abortControllers.get(requestId); - abortController.abort(); - abortControllers.delete(requestId); - console.log('Aborted request', requestId); - res.status(200).send('Aborted'); - } else { - res.status(404).send('Request not found'); +router.post('/abort', (req, res) => { + const { abortKey, message } = req.body; + if (!abortControllers.has(abortKey)) { + return res.status(404).send('Request not found'); } + + const { abortController, userMessage } = abortControllers.get(abortKey); + abortController.abort(); + abortControllers.delete(abortKey); + console.log('Aborted request', abortKey, userMessage); + + res.status(200).send('Aborted'); }); router.post('/', async (req, res) => { @@ -116,11 +116,11 @@ const ask = async ({ try { const progressCallback = createOnProgress(); const abortController = new AbortController(); - const abortKey = userMessage.messageId; - abortControllers.set(abortKey, abortController); + const abortKey = conversationId; + console.log('conversationId -----> ', conversationId); + abortControllers.set(abortKey, { abortController, userMessage }); res.on('close', () => { - console.log('stopped message, aborting'); abortController.abort(); return res.end(); });