From 7067c35787ecfa0d110cb1d4a667acc6109986a1 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Thu, 12 Feb 2026 15:42:22 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=81=20fix:=20Resolve=20Content=20Aggre?= =?UTF-8?q?gation=20Race=20Condition=20in=20Agent=20Event=20Handlers=20(#1?= =?UTF-8?q?1757)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🔧 refactor: Consolidate aggregateContent calls in agent handlers - Moved aggregateContent function calls to the beginning of the event handling functions in the agent callbacks to ensure consistent data aggregation before processing events. This change improves code clarity and maintains the intended functionality without redundancy. * 🔧 chore: Update @librechat/agents to version 3.1.40 in package.json and package-lock.json across multiple packages * 🔧 fix: Increase default recursion limit in AgentClient from 25 to 50 for improved processing capability --- api/package.json | 2 +- api/server/controllers/agents/callbacks.js | 10 +++++----- api/server/controllers/agents/client.js | 2 +- package-lock.json | 10 +++++----- packages/api/package.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/api/package.json b/api/package.json index 0e0099ef06..4e3f882a91 100644 --- a/api/package.json +++ b/api/package.json @@ -44,7 +44,7 @@ "@google/genai": "^1.19.0", "@keyv/redis": "^4.3.3", "@langchain/core": "^0.3.80", - "@librechat/agents": "^3.1.39", + "@librechat/agents": "^3.1.40", "@librechat/api": "*", "@librechat/data-schemas": "*", "@microsoft/microsoft-graph-client": "^3.0.7", diff --git a/api/server/controllers/agents/callbacks.js b/api/server/controllers/agents/callbacks.js index 867e7f53af..163fc4ebba 100644 --- a/api/server/controllers/agents/callbacks.js +++ b/api/server/controllers/agents/callbacks.js @@ -209,6 +209,7 @@ function getDefaultHandlers({ * @param {GraphRunnableConfig['configurable']} [metadata] The runnable metadata. */ handle: async (event, data, metadata) => { + aggregateContent({ event, data }); if (data?.stepDetails.type === StepTypes.TOOL_CALLS) { await emitEvent(res, streamId, { event, data }); } else if (checkIfLastAgent(metadata?.last_agent_id, metadata?.langgraph_node)) { @@ -227,7 +228,6 @@ function getDefaultHandlers({ }, }); } - aggregateContent({ event, data }); }, }, [GraphEvents.ON_RUN_STEP_DELTA]: { @@ -238,6 +238,7 @@ function getDefaultHandlers({ * @param {GraphRunnableConfig['configurable']} [metadata] The runnable metadata. */ handle: async (event, data, metadata) => { + aggregateContent({ event, data }); if (data?.delta.type === StepTypes.TOOL_CALLS) { await emitEvent(res, streamId, { event, data }); } else if (checkIfLastAgent(metadata?.last_agent_id, metadata?.langgraph_node)) { @@ -245,7 +246,6 @@ function getDefaultHandlers({ } else if (!metadata?.hide_sequential_outputs) { await emitEvent(res, streamId, { event, data }); } - aggregateContent({ event, data }); }, }, [GraphEvents.ON_RUN_STEP_COMPLETED]: { @@ -256,6 +256,7 @@ function getDefaultHandlers({ * @param {GraphRunnableConfig['configurable']} [metadata] The runnable metadata. */ handle: async (event, data, metadata) => { + aggregateContent({ event, data }); if (data?.result != null) { await emitEvent(res, streamId, { event, data }); } else if (checkIfLastAgent(metadata?.last_agent_id, metadata?.langgraph_node)) { @@ -263,7 +264,6 @@ function getDefaultHandlers({ } else if (!metadata?.hide_sequential_outputs) { await emitEvent(res, streamId, { event, data }); } - aggregateContent({ event, data }); }, }, [GraphEvents.ON_MESSAGE_DELTA]: { @@ -274,12 +274,12 @@ function getDefaultHandlers({ * @param {GraphRunnableConfig['configurable']} [metadata] The runnable metadata. */ handle: async (event, data, metadata) => { + aggregateContent({ event, data }); if (checkIfLastAgent(metadata?.last_agent_id, metadata?.langgraph_node)) { await emitEvent(res, streamId, { event, data }); } else if (!metadata?.hide_sequential_outputs) { await emitEvent(res, streamId, { event, data }); } - aggregateContent({ event, data }); }, }, [GraphEvents.ON_REASONING_DELTA]: { @@ -290,12 +290,12 @@ function getDefaultHandlers({ * @param {GraphRunnableConfig['configurable']} [metadata] The runnable metadata. */ handle: async (event, data, metadata) => { + aggregateContent({ event, data }); if (checkIfLastAgent(metadata?.last_agent_id, metadata?.langgraph_node)) { await emitEvent(res, streamId, { event, data }); } else if (!metadata?.hide_sequential_outputs) { await emitEvent(res, streamId, { event, data }); } - aggregateContent({ event, data }); }, }, }; diff --git a/api/server/controllers/agents/client.js b/api/server/controllers/agents/client.js index c7aadc6d87..8edbd28122 100644 --- a/api/server/controllers/agents/client.js +++ b/api/server/controllers/agents/client.js @@ -969,7 +969,7 @@ class AgentClient extends BaseClient { }, user: createSafeUser(this.options.req.user), }, - recursionLimit: agentsEConfig?.recursionLimit ?? 25, + recursionLimit: agentsEConfig?.recursionLimit ?? 50, signal: abortController.signal, streamMode: 'values', version: 'v2', diff --git a/package-lock.json b/package-lock.json index 249ad9e0d6..b2a8eb9930 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "@google/genai": "^1.19.0", "@keyv/redis": "^4.3.3", "@langchain/core": "^0.3.80", - "@librechat/agents": "^3.1.39", + "@librechat/agents": "^3.1.40", "@librechat/api": "*", "@librechat/data-schemas": "*", "@microsoft/microsoft-graph-client": "^3.0.7", @@ -11207,9 +11207,9 @@ } }, "node_modules/@librechat/agents": { - "version": "3.1.39", - "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-3.1.39.tgz", - "integrity": "sha512-HsMOkAKap6O0w4rpr/YdZIrRXBo8tEIM9iO8Z/6txeQUHyRsrdBFo7Kdu+t0leUOq+3NysnD8BRQpcfXKfMF3Q==", + "version": "3.1.40", + "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-3.1.40.tgz", + "integrity": "sha512-L7caKWIQ7z/lMgASc7MscnH7oqVG0pYTuU4nn6GEr8QIG+oH2ow+q1+xXDJADHS84Zysj93i/tIeuEZrBYrabA==", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "^0.73.0", @@ -42102,7 +42102,7 @@ "@google/genai": "^1.19.0", "@keyv/redis": "^4.3.3", "@langchain/core": "^0.3.80", - "@librechat/agents": "^3.1.39", + "@librechat/agents": "^3.1.40", "@librechat/data-schemas": "*", "@modelcontextprotocol/sdk": "^1.26.0", "@smithy/node-http-handler": "^4.4.5", diff --git a/packages/api/package.json b/packages/api/package.json index b9d233e2ea..037e1949d8 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -87,7 +87,7 @@ "@google/genai": "^1.19.0", "@keyv/redis": "^4.3.3", "@langchain/core": "^0.3.80", - "@librechat/agents": "^3.1.39", + "@librechat/agents": "^3.1.40", "@librechat/data-schemas": "*", "@modelcontextprotocol/sdk": "^1.26.0", "@smithy/node-http-handler": "^4.4.5",