diff --git a/api/server/routes/convos.js b/api/server/routes/convos.js index 104b0616f81..d07f63a9a4c 100644 --- a/api/server/routes/convos.js +++ b/api/server/routes/convos.js @@ -1,7 +1,6 @@ const multer = require('multer'); const express = require('express'); -const { CacheKeys } = require('librechat-data-provider'); -const { initializeClient } = require('~/server/services/Endpoints/assistants'); +const { CacheKeys, EModelEndpoint } = require('librechat-data-provider'); const { getConvosByPage, deleteConvos, getConvo, saveConvo } = require('~/models/Conversation'); const { storage, importFileFilter } = require('~/server/routes/files/multer'); const requireJwtAuth = require('~/server/middleware/requireJwtAuth'); @@ -11,6 +10,10 @@ const { createImportLimiters } = require('~/server/middleware'); const getLogStores = require('~/cache/getLogStores'); const { sleep } = require('~/server/utils'); const { logger } = require('~/config'); +const assistantClients = { + [EModelEndpoint.azureAssistants]: require('~/server/services/Endpoints/azureAssistants'), + [EModelEndpoint.assistants]: require('~/server/services/Endpoints/assistants'), +}; const router = express.Router(); router.use(requireJwtAuth); @@ -74,7 +77,7 @@ router.post('/gen_title', async (req, res) => { router.post('/clear', async (req, res) => { let filter = {}; - const { conversationId, source, thread_id } = req.body.arg; + const { conversationId, source, thread_id, endpoint } = req.body.arg; if (conversationId) { filter = { conversationId }; } @@ -83,9 +86,12 @@ router.post('/clear', async (req, res) => { return res.status(200).send('No conversationId provided'); } - if (thread_id) { + if ( + typeof endpoint != 'undefined' && + Object.prototype.propertyIsEnumerable.call(assistantClients, endpoint) + ) { /** @type {{ openai: OpenAI}} */ - const { openai } = await initializeClient({ req, res }); + const { openai } = await assistantClients[endpoint].initializeClient({ req, res }); try { const response = await openai.beta.threads.del(thread_id); logger.debug('Deleted OpenAI thread:', response); diff --git a/client/src/components/Conversations/ConvoOptions/DeleteButton.tsx b/client/src/components/Conversations/ConvoOptions/DeleteButton.tsx index 55e8cd659e2..e96a18ff2e4 100644 --- a/client/src/components/Conversations/ConvoOptions/DeleteButton.tsx +++ b/client/src/components/Conversations/ConvoOptions/DeleteButton.tsx @@ -53,8 +53,9 @@ export default function DeleteButton({ const confirmDelete = useCallback(() => { const messages = queryClient.getQueryData([QueryKeys.messages, conversationId]); const thread_id = messages?.[messages.length - 1]?.thread_id; + const endpoint = messages?.[messages.length - 1]?.endpoint; - deleteConvoMutation.mutate({ conversationId, thread_id, source: 'button' }); + deleteConvoMutation.mutate({ conversationId, thread_id, endpoint, source: 'button' }); }, [conversationId, deleteConvoMutation, queryClient]); const dialogContent = ( diff --git a/packages/data-provider/src/types.ts b/packages/data-provider/src/types.ts index 89d40b17e6b..7f6cfbd11c4 100644 --- a/packages/data-provider/src/types.ts +++ b/packages/data-provider/src/types.ts @@ -144,6 +144,7 @@ export type TUpdateConversationResponse = TConversation; export type TDeleteConversationRequest = { conversationId?: string; thread_id?: string; + endpoint?: string; source?: string; };