diff --git a/api/package.json b/api/package.json index 61bbc73bcd..885d87ded1 100644 --- a/api/package.json +++ b/api/package.json @@ -46,7 +46,7 @@ "@azure/storage-blob": "^12.30.0", "@google/genai": "^2.8.0", "@keyv/redis": "5.1.6", - "@librechat/agents": "^3.7.17", + "@librechat/agents": "^3.7.19", "@librechat/api": "*", "@librechat/data-schemas": "*", "@microsoft/microsoft-graph-client": "^3.0.7", diff --git a/package-lock.json b/package-lock.json index 48b706ca93..633d91590a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,7 +63,7 @@ "@azure/storage-blob": "^12.30.0", "@google/genai": "^2.8.0", "@keyv/redis": "5.1.6", - "@librechat/agents": "^3.7.17", + "@librechat/agents": "^3.7.19", "@librechat/api": "*", "@librechat/data-schemas": "*", "@microsoft/microsoft-graph-client": "^3.0.7", @@ -10633,9 +10633,9 @@ } }, "node_modules/@librechat/agents": { - "version": "3.7.17", - "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-3.7.17.tgz", - "integrity": "sha512-aJ3beJxbGNMYaXas0F9M5+e+1A8pjS1ND7TZ8EuEx7BwwN/2qqWn10aIG6Fyqcr/0GPOw8kVkz1BGwAraV3UUg==", + "version": "3.7.19", + "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-3.7.19.tgz", + "integrity": "sha512-/dHHKBvLoXjX1hFkDJBGP5CjkMp1vS+e3OyLqffa4c7JCenFhOHThBDUdZmCDvoEylRhima0h3fYl/JqCR8+hQ==", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "^0.115.0", @@ -42639,7 +42639,7 @@ "@azure/storage-blob": "^12.30.0", "@google/genai": "^2.8.0", "@keyv/redis": "5.1.6", - "@librechat/agents": "^3.7.17", + "@librechat/agents": "^3.7.19", "@librechat/data-schemas": "*", "@modelcontextprotocol/sdk": "^1.30.0", "@opentelemetry/api": "^1.9.0", diff --git a/packages/api/package.json b/packages/api/package.json index 8bfdf28f9c..a768105e4b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -113,7 +113,7 @@ "@azure/storage-blob": "^12.30.0", "@google/genai": "^2.8.0", "@keyv/redis": "5.1.6", - "@librechat/agents": "^3.7.17", + "@librechat/agents": "^3.7.19", "@librechat/data-schemas": "*", "@modelcontextprotocol/sdk": "^1.30.0", "@opentelemetry/api": "^1.9.0", diff --git a/packages/api/src/agents/__tests__/run-summarization.test.ts b/packages/api/src/agents/__tests__/run-summarization.test.ts index 800a1f387a..b29e85f476 100644 --- a/packages/api/src/agents/__tests__/run-summarization.test.ts +++ b/packages/api/src/agents/__tests__/run-summarization.test.ts @@ -323,6 +323,35 @@ afterAll(() => { delete process.env.TENANT_ISOLATION_STRICT; }); +// --------------------------------------------------------------------------- +// Suite: agent endpoint projection +// --------------------------------------------------------------------------- +describe('agent endpoint projection', () => { + it('preserves each logical endpoint independently from its resolved provider', async () => { + const agents = await callAndCapture({ + agents: [ + makeAgent({ id: 'sales-copilot', provider: 'bedrock', endpoint: 'bedrock' }), + makeAgent({ id: 'dwaine', provider: 'openAI', endpoint: 'DWAINE' }), + ], + }); + + expect(agents).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + agentId: 'sales-copilot', + endpoint: 'bedrock', + provider: 'bedrock', + }), + expect.objectContaining({ + agentId: 'dwaine', + endpoint: 'DWAINE', + provider: 'openAI', + }), + ]), + ); + }); +}); + // --------------------------------------------------------------------------- // Suite: custom endpoint stream usage defaults // --------------------------------------------------------------------------- diff --git a/packages/api/src/agents/run.ts b/packages/api/src/agents/run.ts index f015da0573..95a5278983 100644 --- a/packages/api/src/agents/run.ts +++ b/packages/api/src/agents/run.ts @@ -1770,6 +1770,7 @@ export async function createRun({ const reasoningKey = getReasoningKey(provider, llmConfig, agent.endpoint, agent.reasoningKey); const agentInput: AgentInputs = { provider, + endpoint: agent.endpoint ?? provider, reasoningKey, toolDefinitions, agentId: agent.id,