n8n
Version:
n8n Workflow Automation Tool
67 lines • 3.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createN8nDelegateSubAgentTool = createN8nDelegateSubAgentTool;
exports.formatSubAgentToolOutput = formatSubAgentToolOutput;
const agents_1 = require("@n8n/agents");
function createN8nDelegateSubAgentTool(options) {
const { runner, sourcesById, availableSubAgents, policy, inlineSubAgentModelsByDifficulty, resolveInlineSubAgentProviderTools, ...runContext } = options;
return (0, agents_1.createDelegateSubAgentTool)({
...(availableSubAgents !== undefined ? { availableSubAgents } : {}),
...(policy !== undefined ? { policy } : {}),
...(inlineSubAgentModelsByDifficulty !== undefined ? { inlineSubAgentModelsByDifficulty } : {}),
...(resolveInlineSubAgentProviderTools !== undefined
? { resolveInlineSubAgentProviderTools }
: {}),
runSubAgent: async (request, helpers) => {
if (request.subAgentId === agents_1.INLINE_SUB_AGENT_ID) {
return await helpers.runInlineSubAgent(request);
}
const selectedSource = selectSubAgentSource({
sourcesById,
subAgentId: request.subAgentId,
});
if (!selectedSource) {
return {
status: 'failed',
taskPath: request.taskPath,
answer: '',
error: `No configured subagent matched "${request.subAgentId}". Use "inline" for an inline sub-agent, or pass one of the configured subagent IDs.`,
};
}
const result = await runner.runForeground({
goal: request.goal,
source: selectedSource,
executionMode: 'foreground',
...(request.context !== undefined ? { context: request.context } : {}),
...(request.expectedOutput !== undefined
? { expectedOutput: request.expectedOutput }
: {}),
...(policy !== undefined ? { policy } : {}),
...(request.parentThreadId !== undefined
? { parentThreadId: request.parentThreadId }
: {}),
...(request.parentResourceId !== undefined
? { parentResourceId: request.parentResourceId }
: {}),
taskPath: request.taskPath,
}, {
...runContext,
...(request.parentAbortSignal !== undefined
? { abortSignal: request.parentAbortSignal }
: {}),
...(request.parentTelemetry !== undefined ? { telemetry: request.parentTelemetry } : {}),
});
return formatSubAgentToolOutput(result);
},
});
}
function selectSubAgentSource(options) {
const { sourcesById, subAgentId } = options;
if (subAgentId === agents_1.INLINE_SUB_AGENT_ID)
return undefined;
return sourcesById?.[subAgentId];
}
function formatSubAgentToolOutput(result) {
return (0, agents_1.generateResultToDelegateSubAgentOutput)(result.taskPath, result.result, result.threadId);
}
//# sourceMappingURL=delegate-sub-agent-tool.js.map