diff --git a/api/server/services/Endpoints/custom/initialize.js b/api/server/services/Endpoints/custom/initialize.js index d2b7549699..de1417a78b 100644 --- a/api/server/services/Endpoints/custom/initialize.js +++ b/api/server/services/Endpoints/custom/initialize.js @@ -28,7 +28,10 @@ const initializeClient = async ({ req, res, endpointOption, optionsOnly, overrid const CUSTOM_API_KEY = extractEnvVariable(endpointConfig.apiKey); const CUSTOM_BASE_URL = extractEnvVariable(endpointConfig.baseURL); - let resolvedHeaders = resolveHeaders(endpointConfig.headers, req.user); + const customUserVars = {}; + customUserVars.LIBRECHAT_CONVERSATION_ID = req.body.conversationId; + + let resolvedHeaders = resolveHeaders(endpointConfig.headers, req.user, customUserVars); if (CUSTOM_API_KEY.match(envVarRegex)) { throw new Error(`Missing API Key for ${endpoint}.`); diff --git a/api/server/services/Endpoints/custom/initialize.spec.js b/api/server/services/Endpoints/custom/initialize.spec.js index 7e28995127..42125e6373 100644 --- a/api/server/services/Endpoints/custom/initialize.spec.js +++ b/api/server/services/Endpoints/custom/initialize.spec.js @@ -64,6 +64,20 @@ describe('custom/initializeClient', () => { jest.clearAllMocks(); }); + it('calls resolveHeaders with conversation ID when provided', async () => { + const { resolveHeaders } = require('@librechat/api'); + const requestWithConversationId = { + ...mockRequest, + body: { ...mockRequest.body, conversationId: 'existing-conversation-123' }, + }; + await initializeClient({ req: requestWithConversationId, res: mockResponse, optionsOnly: true }); + expect(resolveHeaders).toHaveBeenCalledWith( + { 'x-user': '{{LIBRECHAT_USER_ID}}', 'x-email': '{{LIBRECHAT_USER_EMAIL}}' }, + { id: 'user-123', email: 'test@example.com' }, + { LIBRECHAT_CONVERSATION_ID: 'existing-conversation-123' }, + ); + }); + it('calls resolveHeaders with headers and user', async () => { const { resolveHeaders } = require('@librechat/api'); await initializeClient({ req: mockRequest, res: mockResponse, optionsOnly: true });