From 058fa32ca3a5067458be3d2a234cf51d7f140353 Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:16:15 +0300 Subject: [PATCH] feat: Collect sub-workflow IDs in node graph string (no-changelog) (#9939) --- packages/workflow/src/Constants.ts | 1 + packages/workflow/src/Interfaces.ts | 1 + packages/workflow/src/TelemetryHelpers.ts | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/packages/workflow/src/Constants.ts b/packages/workflow/src/Constants.ts index 1f235df5a8..2ecd550b31 100644 --- a/packages/workflow/src/Constants.ts +++ b/packages/workflow/src/Constants.ts @@ -31,6 +31,7 @@ export const WEBHOOK_NODE_TYPE = 'n8n-nodes-base.webhook'; export const MANUAL_TRIGGER_NODE_TYPE = 'n8n-nodes-base.manualTrigger'; export const ERROR_TRIGGER_NODE_TYPE = 'n8n-nodes-base.errorTrigger'; export const START_NODE_TYPE = 'n8n-nodes-base.start'; +export const EXECUTE_WORKFLOW_NODE_TYPE = 'n8n-nodes-base.executeWorkflow'; export const EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE = 'n8n-nodes-base.executeWorkflowTrigger'; export const CODE_NODE_TYPE = 'n8n-nodes-base.code'; export const FUNCTION_NODE_TYPE = 'n8n-nodes-base.function'; diff --git a/packages/workflow/src/Interfaces.ts b/packages/workflow/src/Interfaces.ts index f752905edb..184b00144f 100644 --- a/packages/workflow/src/Interfaces.ts +++ b/packages/workflow/src/Interfaces.ts @@ -2348,6 +2348,7 @@ export interface INodeGraphItem { prompts?: IDataObject[] | IDataObject; //ai node's prompts, cloud only toolSettings?: IDataObject; //various langchain tool's settings sql?: string; //merge node combineBySql, cloud only + workflow_id?: string; //@n8n/n8n-nodes-langchain.toolWorkflow and n8n-nodes-base.executeWorkflow } export interface INodeNameIndex { diff --git a/packages/workflow/src/TelemetryHelpers.ts b/packages/workflow/src/TelemetryHelpers.ts index 49d4a010bb..4cb107ea2c 100644 --- a/packages/workflow/src/TelemetryHelpers.ts +++ b/packages/workflow/src/TelemetryHelpers.ts @@ -15,6 +15,7 @@ import { AGENT_LANGCHAIN_NODE_TYPE, CHAIN_LLM_LANGCHAIN_NODE_TYPE, CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, + EXECUTE_WORKFLOW_NODE_TYPE, HTTP_REQUEST_NODE_TYPE, HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE, LANGCHAIN_CUSTOM_TOOLS, @@ -22,6 +23,7 @@ import { OPENAI_LANGCHAIN_NODE_TYPE, STICKY_NODE_TYPE, WEBHOOK_NODE_TYPE, + WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, } from './Constants'; export function getNodeTypeForName(workflow: IWorkflowBase, nodeName: string): INode | undefined { @@ -314,6 +316,13 @@ export function generateNodesGraph( } } else if (node.type === WEBHOOK_NODE_TYPE) { webhookNodeNames.push(node.name); + } else if ( + node.type === EXECUTE_WORKFLOW_NODE_TYPE || + node.type === WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE + ) { + if (node.parameters?.workflowId) { + nodeItem.workflow_id = node.parameters?.workflowId as string; + } } else { try { const nodeType = nodeTypes.getByNameAndVersion(node.type, node.typeVersion);