@n8n/ai-workflow-builder 0.32.1 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/agents/responder.agent.d.ts +20 -0
  2. package/dist/agents/responder.agent.js +95 -0
  3. package/dist/agents/responder.agent.js.map +1 -0
  4. package/dist/agents/supervisor.agent.d.ts +30 -0
  5. package/dist/agents/supervisor.agent.js +99 -0
  6. package/dist/agents/supervisor.agent.js.map +1 -0
  7. package/dist/ai-workflow-builder-agent.service.js +4 -0
  8. package/dist/ai-workflow-builder-agent.service.js.map +1 -1
  9. package/dist/build.tsbuildinfo +1 -1
  10. package/dist/constants.d.ts +4 -0
  11. package/dist/constants.js +5 -1
  12. package/dist/constants.js.map +1 -1
  13. package/dist/llm-config.d.ts +1 -0
  14. package/dist/llm-config.js +20 -1
  15. package/dist/llm-config.js.map +1 -1
  16. package/dist/multi-agent-workflow-subgraphs.d.ts +85 -0
  17. package/dist/multi-agent-workflow-subgraphs.js +121 -0
  18. package/dist/multi-agent-workflow-subgraphs.js.map +1 -0
  19. package/dist/parent-graph-state.d.ts +23 -0
  20. package/dist/parent-graph-state.js +34 -0
  21. package/dist/parent-graph-state.js.map +1 -0
  22. package/dist/subgraphs/builder.subgraph.d.ts +120 -0
  23. package/dist/subgraphs/builder.subgraph.js +322 -0
  24. package/dist/subgraphs/builder.subgraph.js.map +1 -0
  25. package/dist/subgraphs/configurator.subgraph.d.ts +130 -0
  26. package/dist/subgraphs/configurator.subgraph.js +242 -0
  27. package/dist/subgraphs/configurator.subgraph.js.map +1 -0
  28. package/dist/subgraphs/discovery.subgraph.d.ts +140 -0
  29. package/dist/subgraphs/discovery.subgraph.js +415 -0
  30. package/dist/subgraphs/discovery.subgraph.js.map +1 -0
  31. package/dist/subgraphs/subgraph-interface.d.ts +23 -0
  32. package/dist/subgraphs/subgraph-interface.js +7 -0
  33. package/dist/subgraphs/subgraph-interface.js.map +1 -0
  34. package/dist/tools/builder-tools.d.ts +5 -2
  35. package/dist/tools/builder-tools.js +15 -25
  36. package/dist/tools/builder-tools.js.map +1 -1
  37. package/dist/tools/get-best-practices.tool.d.ts +1 -1
  38. package/dist/tools/get-workflow-examples.tool.d.ts +34 -0
  39. package/dist/tools/get-workflow-examples.tool.js +172 -0
  40. package/dist/tools/get-workflow-examples.tool.js.map +1 -0
  41. package/dist/tools/node-details.tool.d.ts +4 -4
  42. package/dist/tools/node-details.tool.js +30 -2
  43. package/dist/tools/node-details.tool.js.map +1 -1
  44. package/dist/tools/node-search.tool.d.ts +1 -1
  45. package/dist/tools/prompts/main-agent.prompt.d.ts +4 -0
  46. package/dist/tools/prompts/main-agent.prompt.js +113 -57
  47. package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
  48. package/dist/tools/utils/markdown-workflow.utils.d.ts +14 -0
  49. package/dist/tools/utils/markdown-workflow.utils.js +174 -0
  50. package/dist/tools/utils/markdown-workflow.utils.js.map +1 -0
  51. package/dist/tools/utils/test/workflows/ai-assistant.workflow.d.ts +2 -0
  52. package/dist/tools/utils/test/workflows/ai-assistant.workflow.js +541 -0
  53. package/dist/tools/utils/test/workflows/ai-assistant.workflow.js.map +1 -0
  54. package/dist/tools/validate-configuration.tool.d.ts +4 -0
  55. package/dist/tools/validate-configuration.tool.js +70 -0
  56. package/dist/tools/validate-configuration.tool.js.map +1 -0
  57. package/dist/tools/validate-structure.tool.d.ts +4 -0
  58. package/dist/tools/validate-structure.tool.js +66 -0
  59. package/dist/tools/validate-structure.tool.js.map +1 -0
  60. package/dist/tools/web/templates.d.ts +7 -0
  61. package/dist/tools/web/templates.js +71 -0
  62. package/dist/tools/web/templates.js.map +1 -0
  63. package/dist/types/coordination.d.ts +36 -0
  64. package/dist/types/coordination.js +19 -0
  65. package/dist/types/coordination.js.map +1 -0
  66. package/dist/types/discovery-types.d.ts +12 -0
  67. package/dist/types/discovery-types.js +3 -0
  68. package/dist/types/discovery-types.js.map +1 -0
  69. package/dist/types/index.d.ts +1 -0
  70. package/dist/types/index.js +15 -0
  71. package/dist/types/index.js.map +1 -1
  72. package/dist/types/langchain.d.ts +1 -0
  73. package/dist/types/langchain.js +8 -0
  74. package/dist/types/langchain.js.map +1 -1
  75. package/dist/types/tools.d.ts +20 -0
  76. package/dist/types/web/templates.d.ts +44 -0
  77. package/dist/types/web/templates.js +37 -0
  78. package/dist/types/web/templates.js.map +1 -0
  79. package/dist/utils/cache-control/helpers.d.ts +1 -0
  80. package/dist/utils/cache-control/helpers.js +36 -0
  81. package/dist/utils/cache-control/helpers.js.map +1 -1
  82. package/dist/utils/cache-control/index.d.ts +1 -1
  83. package/dist/utils/cache-control/index.js +2 -1
  84. package/dist/utils/cache-control/index.js.map +1 -1
  85. package/dist/utils/context-builders.d.ts +10 -0
  86. package/dist/utils/context-builders.js +71 -0
  87. package/dist/utils/context-builders.js.map +1 -0
  88. package/dist/utils/coordination-log.d.ts +14 -0
  89. package/dist/utils/coordination-log.js +75 -0
  90. package/dist/utils/coordination-log.js.map +1 -0
  91. package/dist/utils/operations-processor.d.ts +4 -2
  92. package/dist/utils/operations-processor.js.map +1 -1
  93. package/dist/utils/stream-processor.d.ts +6 -2
  94. package/dist/utils/stream-processor.js +164 -81
  95. package/dist/utils/stream-processor.js.map +1 -1
  96. package/dist/utils/subgraph-helpers.d.ts +13 -0
  97. package/dist/utils/subgraph-helpers.js +95 -0
  98. package/dist/utils/subgraph-helpers.js.map +1 -0
  99. package/dist/utils/token-usage.js +4 -1
  100. package/dist/utils/token-usage.js.map +1 -1
  101. package/dist/utils/tool-executor.js +55 -38
  102. package/dist/utils/tool-executor.js.map +1 -1
  103. package/dist/utils/workflow-validation.js +1 -0
  104. package/dist/utils/workflow-validation.js.map +1 -1
  105. package/dist/validation/checks/index.d.ts +2 -1
  106. package/dist/validation/checks/index.js +3 -1
  107. package/dist/validation/checks/index.js.map +1 -1
  108. package/dist/validation/checks/nodes.d.ts +4 -0
  109. package/dist/validation/checks/nodes.js +36 -0
  110. package/dist/validation/checks/nodes.js.map +1 -0
  111. package/dist/validation/checks/trigger.js +0 -6
  112. package/dist/validation/checks/trigger.js.map +1 -1
  113. package/dist/validation/programmatic.js +2 -0
  114. package/dist/validation/programmatic.js.map +1 -1
  115. package/dist/validation/types.d.ts +5 -1
  116. package/dist/validation/types.js +8 -0
  117. package/dist/validation/types.js.map +1 -1
  118. package/dist/workflow-builder-agent.d.ts +8 -0
  119. package/dist/workflow-builder-agent.js +38 -9
  120. package/dist/workflow-builder-agent.js.map +1 -1
  121. package/dist/workflow-state.d.ts +4 -2
  122. package/dist/workflow-state.js +20 -0
  123. package/dist/workflow-state.js.map +1 -1
  124. package/package.json +9 -8
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuilderSubgraph = exports.BuilderSubgraphState = void 0;
4
+ const prompts_1 = require("@langchain/core/prompts");
5
+ const langgraph_1 = require("@langchain/langgraph");
6
+ const errors_1 = require("../errors");
7
+ const subgraph_interface_1 = require("./subgraph-interface");
8
+ const add_node_tool_1 = require("../tools/add-node.tool");
9
+ const connect_nodes_tool_1 = require("../tools/connect-nodes.tool");
10
+ const remove_connection_tool_1 = require("../tools/remove-connection.tool");
11
+ const remove_node_tool_1 = require("../tools/remove-node.tool");
12
+ const validate_structure_tool_1 = require("../tools/validate-structure.tool");
13
+ const coordination_1 = require("../types/coordination");
14
+ const cache_control_1 = require("../utils/cache-control");
15
+ const context_builders_1 = require("../utils/context-builders");
16
+ const operations_processor_1 = require("../utils/operations-processor");
17
+ const subgraph_helpers_1 = require("../utils/subgraph-helpers");
18
+ const BUILDER_PROMPT = `You are a Builder Agent specialized in constructing n8n workflows.
19
+
20
+ MANDATORY EXECUTION SEQUENCE:
21
+ You MUST follow these steps IN ORDER. Do not skip any step.
22
+
23
+ STEP 1: CREATE NODES
24
+ - Call add_nodes for EVERY node needed based on discovery results
25
+ - Create multiple nodes in PARALLEL for efficiency
26
+ - Do NOT respond with text - START BUILDING immediately
27
+
28
+ STEP 2: CONNECT NODES
29
+ - Call connect_nodes for ALL required connections
30
+ - Connect multiple node pairs in PARALLEL
31
+
32
+ STEP 3: VALIDATE (REQUIRED)
33
+ - After ALL nodes and connections are created, call validate_structure
34
+ - This step is MANDATORY - you cannot finish without it
35
+ - If validation finds issues (missing trigger, invalid connections), fix them and validate again
36
+
37
+ STEP 4: RESPOND TO USER
38
+ - Only after validation passes, provide your brief summary
39
+
40
+ ⚠️ NEVER respond to the user without calling validate_structure first ⚠️
41
+
42
+ NODE CREATION:
43
+ Each add_nodes call creates ONE node. You must provide:
44
+ - nodeType: The exact type from discovery (e.g., "n8n-nodes-base.httpRequest")
45
+ - name: Descriptive name (e.g., "Fetch Weather Data")
46
+ - connectionParametersReasoning: Explain your thinking about connection parameters
47
+ - connectionParameters: Parameters that affect connections (or {{}} if none needed)
48
+
49
+ <workflow_configuration_node>
50
+ Always include a Workflow Configuration node at the start of every workflow.
51
+
52
+ The Workflow Configuration node (n8n-nodes-base.set) should be placed immediately after the trigger node and before all other processing nodes.
53
+
54
+ Placement rules:
55
+ - Add between trigger and first processing node
56
+ - Connect: Trigger → Workflow Configuration → First processing node
57
+ - Name it "Workflow Configuration"
58
+ </workflow_configuration_node>
59
+
60
+ <data_parsing_strategy>
61
+ For AI-generated structured data, prefer Structured Output Parser nodes over Code nodes.
62
+ For binary file data, use Extract From File node to extract content from files before processing.
63
+ Use Code nodes only for custom business logic beyond parsing.
64
+ </data_parsing_strategy>
65
+
66
+ <proactive_design>
67
+ Anticipate workflow needs:
68
+ - IF nodes for conditional logic when multiple outcomes exist
69
+ - Set nodes for data transformation between incompatible formats
70
+ - Schedule Triggers for recurring tasks
71
+ - Error handling for external service calls
72
+
73
+ NEVER use Split In Batches nodes.
74
+ </proactive_design>
75
+
76
+ <node_defaults_warning>
77
+ CRITICAL: NEVER RELY ON DEFAULT PARAMETER VALUES FOR CONNECTIONS
78
+
79
+ Default values often hide connection inputs/outputs. You MUST explicitly configure parameters that affect connections:
80
+ - Vector Store: Mode parameter affects available connections - always set explicitly (e.g., mode: "insert", "retrieve", "retrieve-as-tool")
81
+ - AI Agent: hasOutputParser default may not match your workflow needs
82
+ - Document Loader: textSplittingMode affects whether it accepts a text splitter input
83
+
84
+ ALWAYS check node details and set connectionParameters explicitly.
85
+ </node_defaults_warning>
86
+
87
+ CONNECTION PARAMETERS EXAMPLES:
88
+ - Static nodes (HTTP Request, Set, Code): reasoning="Static inputs/outputs", parameters={{}}
89
+ - AI Agent with parser: reasoning="hasOutputParser creates additional input", parameters={{ hasOutputParser: true }}
90
+ - Vector Store insert: reasoning="Insert mode requires document input", parameters={{ mode: "insert" }}
91
+ - Document Loader custom: reasoning="Custom mode enables text splitter input", parameters={{ textSplittingMode: "custom" }}
92
+
93
+ <node_connections_understanding>
94
+ n8n connections flow from SOURCE (output) to TARGET (input).
95
+
96
+ Regular data flow: Source node output → Target node input
97
+ Example: HTTP Request → Set (HTTP Request is source, Set is target)
98
+
99
+ AI sub-nodes PROVIDE capabilities, making them the SOURCE:
100
+ - OpenAI Chat Model → AI Agent [ai_languageModel]
101
+ - Calculator Tool → AI Agent [ai_tool]
102
+ - Window Buffer Memory → AI Agent [ai_memory]
103
+ - Token Splitter → Default Data Loader [ai_textSplitter]
104
+ - Default Data Loader → Vector Store [ai_document]
105
+ - Embeddings OpenAI → Vector Store [ai_embedding]
106
+ </node_connections_understanding>
107
+
108
+ <agent_node_distinction>
109
+ Distinguish between two different agent node types:
110
+
111
+ 1. **AI Agent** (@n8n/n8n-nodes-langchain.agent)
112
+ - Main workflow node that orchestrates AI tasks
113
+ - Use for: Primary AI logic, chatbots, autonomous workflows
114
+
115
+ 2. **AI Agent Tool** (@n8n/n8n-nodes-langchain.agentTool)
116
+ - Sub-node that acts as a tool for another AI Agent
117
+ - Use for: Multi-agent systems where one agent calls another
118
+
119
+ Default assumption: When discovery results include "agent", use AI Agent
120
+ unless explicitly specified as "agent tool" or "sub-agent".
121
+ </agent_node_distinction>
122
+
123
+ <rag_workflow_pattern>
124
+ For RAG (Retrieval-Augmented Generation) workflows:
125
+
126
+ Main data flow:
127
+ - Data source (e.g., HTTP Request) → Vector Store [main connection]
128
+
129
+ AI capability connections:
130
+ - Document Loader → Vector Store [ai_document]
131
+ - Embeddings → Vector Store [ai_embedding]
132
+ - Text Splitter → Document Loader [ai_textSplitter]
133
+
134
+ Common mistake to avoid:
135
+ - NEVER connect Document Loader to main data outputs
136
+ - Document Loader is an AI sub-node that gives Vector Store document processing capability
137
+ </rag_workflow_pattern>
138
+
139
+ <connection_type_examples>
140
+ **Main Connections** (regular data flow):
141
+ - Trigger → HTTP Request → Set → Email
142
+
143
+ **AI Language Model Connections** (ai_languageModel):
144
+ - OpenAI Chat Model → AI Agent
145
+
146
+ **AI Tool Connections** (ai_tool):
147
+ - Calculator Tool → AI Agent
148
+ - AI Agent Tool → AI Agent (for multi-agent systems)
149
+
150
+ **AI Document Connections** (ai_document):
151
+ - Document Loader → Vector Store
152
+
153
+ **AI Embedding Connections** (ai_embedding):
154
+ - OpenAI Embeddings → Vector Store
155
+
156
+ **AI Text Splitter Connections** (ai_textSplitter):
157
+ - Token Text Splitter → Document Loader
158
+
159
+ **AI Memory Connections** (ai_memory):
160
+ - Window Buffer Memory → AI Agent
161
+
162
+ **AI Vector Store in retrieve-as-tool mode** (ai_tool):
163
+ - Vector Store → AI Agent
164
+ </connection_type_examples>
165
+
166
+ DO NOT:
167
+ - Respond before calling validate_structure
168
+ - Skip validation even if you think structure is correct
169
+ - Add commentary between tool calls - execute tools silently
170
+ - Configure node parameters (that's the Configurator Agent's job)
171
+ - Search for nodes (that's the Discovery Agent's job)
172
+ - Make assumptions about node types - use exactly what Discovery found
173
+
174
+ RESPONSE FORMAT (only after validation):
175
+ Provide ONE brief text message summarizing:
176
+ - What nodes were added
177
+ - How they're connected
178
+
179
+ Example: "Created 4 nodes: Trigger → Weather → Image Generation → Email"`;
180
+ exports.BuilderSubgraphState = langgraph_1.Annotation.Root({
181
+ workflowJSON: (0, langgraph_1.Annotation)({
182
+ reducer: (x, y) => y ?? x,
183
+ default: () => ({ nodes: [], connections: {}, name: '' }),
184
+ }),
185
+ userRequest: (0, langgraph_1.Annotation)({
186
+ reducer: (x, y) => y ?? x,
187
+ default: () => '',
188
+ }),
189
+ workflowContext: (0, langgraph_1.Annotation)({
190
+ reducer: (x, y) => y ?? x,
191
+ }),
192
+ discoveryContext: (0, langgraph_1.Annotation)({
193
+ reducer: (x, y) => y ?? x,
194
+ default: () => null,
195
+ }),
196
+ messages: (0, langgraph_1.Annotation)({
197
+ reducer: (x, y) => x.concat(y),
198
+ default: () => [],
199
+ }),
200
+ workflowOperations: (0, langgraph_1.Annotation)({
201
+ reducer: (x, y) => {
202
+ if (y === null)
203
+ return [];
204
+ if (!y || y.length === 0)
205
+ return x ?? [];
206
+ return [...(x ?? []), ...y];
207
+ },
208
+ default: () => [],
209
+ }),
210
+ });
211
+ class BuilderSubgraph extends subgraph_interface_1.BaseSubgraph {
212
+ name = 'builder_subgraph';
213
+ description = 'Constructs workflow structure: creating nodes and connections';
214
+ create(config) {
215
+ const tools = [
216
+ (0, add_node_tool_1.createAddNodeTool)(config.parsedNodeTypes),
217
+ (0, connect_nodes_tool_1.createConnectNodesTool)(config.parsedNodeTypes, config.logger),
218
+ (0, remove_node_tool_1.createRemoveNodeTool)(config.logger),
219
+ (0, remove_connection_tool_1.createRemoveConnectionTool)(config.logger),
220
+ (0, validate_structure_tool_1.createValidateStructureTool)(config.parsedNodeTypes),
221
+ ];
222
+ const toolMap = new Map(tools.map((bt) => [bt.tool.name, bt.tool]));
223
+ const systemPrompt = prompts_1.ChatPromptTemplate.fromMessages([
224
+ [
225
+ 'system',
226
+ [
227
+ {
228
+ type: 'text',
229
+ text: BUILDER_PROMPT,
230
+ cache_control: { type: 'ephemeral' },
231
+ },
232
+ ],
233
+ ],
234
+ ['placeholder', '{messages}'],
235
+ ]);
236
+ if (typeof config.llm.bindTools !== 'function') {
237
+ throw new errors_1.LLMServiceError('LLM does not support tools', {
238
+ llmModel: config.llm._llmType(),
239
+ });
240
+ }
241
+ const agent = systemPrompt.pipe(config.llm.bindTools(tools.map((bt) => bt.tool)));
242
+ const callAgent = async (state) => {
243
+ (0, cache_control_1.applySubgraphCacheMarkers)(state.messages);
244
+ const response = await agent.invoke({
245
+ messages: state.messages,
246
+ });
247
+ return { messages: [response] };
248
+ };
249
+ const shouldContinue = (0, subgraph_helpers_1.createStandardShouldContinue)();
250
+ const subgraph = new langgraph_1.StateGraph(exports.BuilderSubgraphState)
251
+ .addNode('agent', callAgent)
252
+ .addNode('tools', async (state) => await (0, subgraph_helpers_1.executeSubgraphTools)(state, toolMap))
253
+ .addNode('process_operations', operations_processor_1.processOperations)
254
+ .addEdge('__start__', 'agent')
255
+ .addConditionalEdges('agent', shouldContinue)
256
+ .addEdge('tools', 'process_operations')
257
+ .addEdge('process_operations', 'agent');
258
+ return subgraph.compile();
259
+ }
260
+ transformInput(parentState) {
261
+ const userRequest = (0, subgraph_helpers_1.extractUserRequest)(parentState.messages);
262
+ const contextParts = [];
263
+ contextParts.push('=== USER REQUEST ===');
264
+ contextParts.push(userRequest);
265
+ if (parentState.discoveryContext) {
266
+ contextParts.push('=== DISCOVERY CONTEXT ===');
267
+ contextParts.push((0, context_builders_1.buildDiscoveryContextBlock)(parentState.discoveryContext, true));
268
+ }
269
+ contextParts.push('=== CURRENT WORKFLOW ===');
270
+ if (parentState.workflowJSON.nodes.length > 0) {
271
+ contextParts.push((0, context_builders_1.buildWorkflowJsonBlock)(parentState.workflowJSON));
272
+ }
273
+ else {
274
+ contextParts.push('Empty workflow - ready to build');
275
+ }
276
+ const schemaBlock = (0, context_builders_1.buildExecutionSchemaBlock)(parentState.workflowContext);
277
+ if (schemaBlock) {
278
+ contextParts.push('=== AVAILABLE DATA SCHEMA ===');
279
+ contextParts.push(schemaBlock);
280
+ }
281
+ const contextMessage = (0, context_builders_1.createContextMessage)(contextParts);
282
+ return {
283
+ userRequest,
284
+ workflowJSON: parentState.workflowJSON,
285
+ workflowContext: parentState.workflowContext,
286
+ discoveryContext: parentState.discoveryContext,
287
+ messages: [contextMessage],
288
+ };
289
+ }
290
+ transformOutput(subgraphOutput, _parentState) {
291
+ const nodes = subgraphOutput.workflowJSON.nodes;
292
+ const connections = subgraphOutput.workflowJSON.connections;
293
+ const connectionCount = Object.values(connections).flat().length;
294
+ const builderSummary = subgraphOutput.messages
295
+ .slice()
296
+ .reverse()
297
+ .find((m) => m.content &&
298
+ (!('tool_calls' in m) ||
299
+ !m.tool_calls ||
300
+ (m.tool_calls && Array.isArray(m.tool_calls) && m.tool_calls.length === 0)));
301
+ const summaryText = typeof builderSummary?.content === 'string' ? builderSummary.content : undefined;
302
+ const logEntry = {
303
+ phase: 'builder',
304
+ status: 'completed',
305
+ timestamp: Date.now(),
306
+ summary: `Created ${nodes.length} nodes with ${connectionCount} connections`,
307
+ output: summaryText,
308
+ metadata: (0, coordination_1.createBuilderMetadata)({
309
+ nodesCreated: nodes.length,
310
+ connectionsCreated: connectionCount,
311
+ nodeNames: nodes.map((n) => n.name),
312
+ }),
313
+ };
314
+ return {
315
+ workflowJSON: subgraphOutput.workflowJSON,
316
+ workflowOperations: subgraphOutput.workflowOperations ?? [],
317
+ coordinationLog: [logEntry],
318
+ };
319
+ }
320
+ }
321
+ exports.BuilderSubgraph = BuilderSubgraph;
322
+ //# sourceMappingURL=builder.subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.subgraph.js","sourceRoot":"","sources":["../../src/subgraphs/builder.subgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { BaseMessage } from '@langchain/core/messages';
3
+ import type { Logger } from '@n8n/backend-common';
4
+ import type { INodeTypeDescription } from 'n8n-workflow';
5
+ import { BaseSubgraph } from './subgraph-interface';
6
+ import type { ParentGraphState } from '../parent-graph-state';
7
+ import type { CoordinationLogEntry } from '../types/coordination';
8
+ import type { DiscoveryContext } from '../types/discovery-types';
9
+ import type { SimpleWorkflow, WorkflowOperation } from '../types/workflow';
10
+ export declare const ConfiguratorSubgraphState: import("@langchain/langgraph").AnnotationRoot<{
11
+ workflowJSON: import("@langchain/langgraph").BinaryOperatorAggregate<SimpleWorkflow, SimpleWorkflow>;
12
+ workflowContext: import("@langchain/langgraph").BinaryOperatorAggregate<{
13
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
14
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
15
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
16
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
17
+ } | undefined, {
18
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
19
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
20
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
21
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
22
+ } | undefined>;
23
+ instanceUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
24
+ userRequest: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
25
+ discoveryContext: import("@langchain/langgraph").BinaryOperatorAggregate<DiscoveryContext | null, DiscoveryContext | null>;
26
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[], BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[]>;
27
+ workflowOperations: import("@langchain/langgraph").BinaryOperatorAggregate<WorkflowOperation[] | null, WorkflowOperation[] | null>;
28
+ }>;
29
+ export interface ConfiguratorSubgraphConfig {
30
+ parsedNodeTypes: INodeTypeDescription[];
31
+ llm: BaseChatModel;
32
+ logger?: Logger;
33
+ instanceUrl?: string;
34
+ }
35
+ export declare class ConfiguratorSubgraph extends BaseSubgraph<ConfiguratorSubgraphConfig, typeof ConfiguratorSubgraphState.State, typeof ParentGraphState.State> {
36
+ name: string;
37
+ description: string;
38
+ private agent;
39
+ private toolMap;
40
+ private instanceUrl;
41
+ create(config: ConfiguratorSubgraphConfig): import("@langchain/langgraph").CompiledStateGraph<{
42
+ workflowJSON: SimpleWorkflow;
43
+ workflowContext: {
44
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
45
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
46
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
47
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
48
+ } | undefined;
49
+ instanceUrl: string;
50
+ userRequest: string;
51
+ discoveryContext: DiscoveryContext | null;
52
+ messages: BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[];
53
+ workflowOperations: WorkflowOperation[] | null;
54
+ }, {
55
+ workflowJSON?: SimpleWorkflow | undefined;
56
+ workflowContext?: {
57
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
58
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
59
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
60
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
61
+ } | undefined;
62
+ instanceUrl?: string | undefined;
63
+ userRequest?: string | undefined;
64
+ discoveryContext?: DiscoveryContext | null | undefined;
65
+ messages?: BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[] | undefined;
66
+ workflowOperations?: WorkflowOperation[] | null | undefined;
67
+ }, "agent" | "tools" | "process_operations" | "__start__", {
68
+ workflowJSON: import("@langchain/langgraph").BinaryOperatorAggregate<SimpleWorkflow, SimpleWorkflow>;
69
+ workflowContext: import("@langchain/langgraph").BinaryOperatorAggregate<{
70
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
71
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
72
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
73
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
74
+ } | undefined, {
75
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
76
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
77
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
78
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
79
+ } | undefined>;
80
+ instanceUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
81
+ userRequest: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
82
+ discoveryContext: import("@langchain/langgraph").BinaryOperatorAggregate<DiscoveryContext | null, DiscoveryContext | null>;
83
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[], BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[]>;
84
+ workflowOperations: import("@langchain/langgraph").BinaryOperatorAggregate<WorkflowOperation[] | null, WorkflowOperation[] | null>;
85
+ }, {
86
+ workflowJSON: import("@langchain/langgraph").BinaryOperatorAggregate<SimpleWorkflow, SimpleWorkflow>;
87
+ workflowContext: import("@langchain/langgraph").BinaryOperatorAggregate<{
88
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
89
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
90
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
91
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
92
+ } | undefined, {
93
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
94
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
95
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
96
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
97
+ } | undefined>;
98
+ instanceUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
99
+ userRequest: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
100
+ discoveryContext: import("@langchain/langgraph").BinaryOperatorAggregate<DiscoveryContext | null, DiscoveryContext | null>;
101
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[], BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[]>;
102
+ workflowOperations: import("@langchain/langgraph").BinaryOperatorAggregate<WorkflowOperation[] | null, WorkflowOperation[] | null>;
103
+ }, import("@langchain/langgraph").StateDefinition, {
104
+ agent: {
105
+ messages: BaseMessage<import("@langchain/core/messages").MessageStructure, import("@langchain/core/messages").MessageType>[];
106
+ };
107
+ tools: {
108
+ messages?: BaseMessage[];
109
+ workflowOperations?: WorkflowOperation[] | null;
110
+ };
111
+ }, unknown, unknown>;
112
+ transformInput(parentState: typeof ParentGraphState.State): {
113
+ workflowJSON: SimpleWorkflow;
114
+ workflowContext: {
115
+ executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
116
+ currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
117
+ executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
118
+ expressionValues?: Record<string, import("../workflow-builder-agent").ExpressionValue[]>;
119
+ } | undefined;
120
+ instanceUrl: string;
121
+ userRequest: string;
122
+ discoveryContext: DiscoveryContext | null;
123
+ messages: import("@langchain/core/messages").HumanMessage<import("@langchain/core/messages").MessageStructure>[];
124
+ };
125
+ transformOutput(subgraphOutput: typeof ConfiguratorSubgraphState.State, _parentState: typeof ParentGraphState.State): {
126
+ workflowJSON: SimpleWorkflow;
127
+ workflowOperations: WorkflowOperation[];
128
+ coordinationLog: CoordinationLogEntry[];
129
+ };
130
+ }