diff --git a/api/server/controllers/agents/callbacks.js b/api/server/controllers/agents/callbacks.js index 08166c1b3c..7baf13e4a5 100644 --- a/api/server/controllers/agents/callbacks.js +++ b/api/server/controllers/agents/callbacks.js @@ -283,16 +283,7 @@ function getDefaultHandlers({ }; } - handlers[GraphEvents.ON_AGENT_LOG] = { - handle: (_event, data) => { - const logFn = typeof logger[data.level] === 'function' ? logger[data.level] : logger.info; - logFn(`[agents:${data.scope}] ${data.message}`, { - ...data.data, - runId: data.runId, - agentId: data.agentId, - }); - }, - }; + handlers[GraphEvents.ON_AGENT_LOG] = { handle: agentLogHandler }; return handlers; } @@ -717,6 +708,15 @@ function createResponsesToolEndCallback({ req, res, tracker, artifactPromises }) }; } +function agentLogHandler(_event, data) { + const logFn = typeof logger[data.level] === 'function' ? logger[data.level] : logger.info; + logFn(`[agents:${data.scope}] ${data.message}`, { + ...data.data, + runId: data.runId, + agentId: data.agentId, + }); +} + function markSummarizationUsage(usage, metadata) { const node = metadata?.langgraph_node; if (typeof node === 'string' && node.startsWith(GraphNodeKeys.SUMMARIZE)) { @@ -725,8 +725,9 @@ function markSummarizationUsage(usage, metadata) { } module.exports = { + agentLogHandler, getDefaultHandlers, createToolEndCallback, - createResponsesToolEndCallback, markSummarizationUsage, + createResponsesToolEndCallback, }; diff --git a/api/server/controllers/agents/openai.js b/api/server/controllers/agents/openai.js index 781e70e849..f1f0bc9f3b 100644 --- a/api/server/controllers/agents/openai.js +++ b/api/server/controllers/agents/openai.js @@ -25,6 +25,7 @@ const { loadAgentTools, loadToolsForExecution } = require('~/server/services/Too const { createToolEndCallback, markSummarizationUsage, + agentLogHandler, } = require('~/server/controllers/agents/callbacks'); const { findAccessibleResources } = require('~/server/services/PermissionService'); const db = require('~/models'); @@ -440,6 +441,7 @@ const OpenAIChatCompletionController = async (req, res) => { on_chain_stream: createHandler(), on_chain_end: createHandler(), on_agent_update: createHandler(), + on_agent_log: { handle: agentLogHandler }, on_custom_event: createHandler(), // Event-driven tool execution handler on_tool_execute: createToolExecuteHandler(toolExecuteOptions), diff --git a/api/server/controllers/agents/responses.js b/api/server/controllers/agents/responses.js index a57bfdd35d..4b0142c441 100644 --- a/api/server/controllers/agents/responses.js +++ b/api/server/controllers/agents/responses.js @@ -32,8 +32,9 @@ const { } = require('@librechat/api'); const { createResponsesToolEndCallback, - createToolEndCallback, markSummarizationUsage, + createToolEndCallback, + agentLogHandler, } = require('~/server/controllers/agents/callbacks'); const { loadAgentTools, loadToolsForExecution } = require('~/server/services/ToolService'); const { findAccessibleResources } = require('~/server/services/PermissionService'); @@ -50,16 +51,7 @@ function setAppConfig(config) { appConfig = config; } -const agentLogHandler = { - handle: (_event, data) => { - const logFn = typeof logger[data.level] === 'function' ? logger[data.level] : logger.info; - logFn(`[agents:${data.scope}] ${data.message}`, { - ...data.data, - runId: data.runId, - agentId: data.agentId, - }); - }, -}; +const agentLogHandlerObj = { handle: agentLogHandler }; /** * Creates a tool loader function for the agent. @@ -471,7 +463,7 @@ const createResponse = async (req, res) => { on_agent_update: { handle: () => {} }, on_custom_event: { handle: () => {} }, on_tool_execute: createToolExecuteHandler(toolExecuteOptions), - on_agent_log: agentLogHandler, + on_agent_log: agentLogHandlerObj, ...(summarizationConfig?.enabled !== false ? { on_summarize_start: { @@ -657,7 +649,7 @@ const createResponse = async (req, res) => { on_agent_update: { handle: () => {} }, on_custom_event: { handle: () => {} }, on_tool_execute: createToolExecuteHandler(toolExecuteOptions), - on_agent_log: agentLogHandler, + on_agent_log: agentLogHandlerObj, ...(summarizationConfig?.enabled !== false ? { on_summarize_start: { handle: () => {} },