@n8n/ai-workflow-builder 0.18.0 → 0.20.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 (84) hide show
  1. package/dist/agents/workflow-planner-agent.d.ts +58 -0
  2. package/dist/agents/workflow-planner-agent.js +269 -0
  3. package/dist/agents/workflow-planner-agent.js.map +1 -0
  4. package/dist/ai-workflow-builder-agent.service.d.ts +2 -1
  5. package/dist/ai-workflow-builder-agent.service.js +6 -3
  6. package/dist/ai-workflow-builder-agent.service.js.map +1 -1
  7. package/dist/build.tsbuildinfo +1 -1
  8. package/dist/chains/parameter-updater.js +5 -1
  9. package/dist/chains/parameter-updater.js.map +1 -1
  10. package/dist/chains/prompts/instance-url.d.ts +1 -0
  11. package/dist/chains/prompts/instance-url.js +16 -0
  12. package/dist/chains/prompts/instance-url.js.map +1 -0
  13. package/dist/chains/prompts/prompt-builder.js +1 -1
  14. package/dist/chains/prompts/prompt-builder.js.map +1 -1
  15. package/dist/chains/workflow-name.js +1 -1
  16. package/dist/constants.d.ts +7 -0
  17. package/dist/constants.js +8 -1
  18. package/dist/constants.js.map +1 -1
  19. package/dist/errors/index.d.ts +7 -0
  20. package/dist/errors/index.js +16 -1
  21. package/dist/errors/index.js.map +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +0 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/llm-config.js +2 -1
  26. package/dist/llm-config.js.map +1 -1
  27. package/dist/tools/add-node.tool.d.ts +38 -34
  28. package/dist/tools/add-node.tool.js +17 -2
  29. package/dist/tools/add-node.tool.js.map +1 -1
  30. package/dist/tools/connect-nodes.tool.d.ts +29 -26
  31. package/dist/tools/connect-nodes.tool.js +7 -2
  32. package/dist/tools/connect-nodes.tool.js.map +1 -1
  33. package/dist/tools/get-node-parameter.tool.d.ts +18 -0
  34. package/dist/tools/get-node-parameter.tool.js +109 -0
  35. package/dist/tools/get-node-parameter.tool.js.map +1 -0
  36. package/dist/tools/helpers/progress.d.ts +1 -1
  37. package/dist/tools/helpers/progress.js +14 -2
  38. package/dist/tools/helpers/progress.js.map +1 -1
  39. package/dist/tools/helpers/validation.d.ts +1 -0
  40. package/dist/tools/helpers/validation.js +13 -0
  41. package/dist/tools/helpers/validation.js.map +1 -1
  42. package/dist/tools/node-details.tool.d.ts +20 -17
  43. package/dist/tools/node-details.tool.js +7 -2
  44. package/dist/tools/node-details.tool.js.map +1 -1
  45. package/dist/tools/node-search.tool.d.ts +54 -45
  46. package/dist/tools/node-search.tool.js +7 -2
  47. package/dist/tools/node-search.tool.js.map +1 -1
  48. package/dist/tools/prompts/main-agent.prompt.d.ts +2 -0
  49. package/dist/tools/prompts/main-agent.prompt.js +96 -41
  50. package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
  51. package/dist/tools/remove-node.tool.d.ts +14 -11
  52. package/dist/tools/remove-node.tool.js +7 -2
  53. package/dist/tools/remove-node.tool.js.map +1 -1
  54. package/dist/tools/update-node-parameters.tool.d.ts +19 -16
  55. package/dist/tools/update-node-parameters.tool.js +60 -38
  56. package/dist/tools/update-node-parameters.tool.js.map +1 -1
  57. package/dist/types/index.d.ts +8 -8
  58. package/dist/types/index.js +0 -22
  59. package/dist/types/index.js.map +1 -1
  60. package/dist/types/langchain.d.ts +2 -0
  61. package/dist/types/langchain.js +7 -0
  62. package/dist/types/langchain.js.map +1 -0
  63. package/dist/types/messages.d.ts +1 -7
  64. package/dist/types/streaming.d.ts +6 -1
  65. package/dist/types/tools.d.ts +8 -1
  66. package/dist/utils/stream-processor.d.ts +7 -1
  67. package/dist/utils/stream-processor.js +121 -63
  68. package/dist/utils/stream-processor.js.map +1 -1
  69. package/dist/utils/token-usage.d.ts +14 -0
  70. package/dist/utils/token-usage.js +27 -0
  71. package/dist/utils/token-usage.js.map +1 -1
  72. package/dist/utils/trim-workflow-context.d.ts +2 -0
  73. package/dist/utils/trim-workflow-context.js +53 -0
  74. package/dist/utils/trim-workflow-context.js.map +1 -0
  75. package/dist/workflow-builder-agent.d.ts +11 -1
  76. package/dist/workflow-builder-agent.js +205 -24
  77. package/dist/workflow-builder-agent.js.map +1 -1
  78. package/dist/workflow-state.d.ts +17 -0
  79. package/dist/workflow-state.js +12 -0
  80. package/dist/workflow-state.js.map +1 -1
  81. package/package.json +9 -7
  82. package/dist/chains/planner.d.ts +0 -4
  83. package/dist/chains/planner.js +0 -87
  84. package/dist/chains/planner.js.map +0 -1
@@ -3,9 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkflowBuilderAgent = void 0;
4
4
  const messages_1 = require("@langchain/core/messages");
5
5
  const langgraph_1 = require("@langchain/langgraph");
6
- const workflow_name_1 = require("./chains/workflow-name");
6
+ const n8n_workflow_1 = require("n8n-workflow");
7
7
  const constants_1 = require("./constants");
8
+ const get_node_parameter_tool_1 = require("./tools/get-node-parameter.tool");
9
+ const trim_workflow_context_1 = require("./utils/trim-workflow-context");
10
+ const workflow_planner_agent_1 = require("./agents/workflow-planner-agent");
8
11
  const conversation_compact_1 = require("./chains/conversation-compact");
12
+ const workflow_name_1 = require("./chains/workflow-name");
9
13
  const errors_1 = require("./errors");
10
14
  const add_node_tool_1 = require("./tools/add-node.tool");
11
15
  const connect_nodes_tool_1 = require("./tools/connect-nodes.tool");
@@ -27,6 +31,7 @@ class WorkflowBuilderAgent {
27
31
  logger;
28
32
  tracer;
29
33
  autoCompactThresholdTokens;
34
+ instanceUrl;
30
35
  constructor(config) {
31
36
  this.parsedNodeTypes = config.parsedNodeTypes;
32
37
  this.llmSimpleTask = config.llmSimpleTask;
@@ -36,16 +41,22 @@ class WorkflowBuilderAgent {
36
41
  this.tracer = config.tracer;
37
42
  this.autoCompactThresholdTokens =
38
43
  config.autoCompactThresholdTokens ?? constants_1.DEFAULT_AUTO_COMPACT_THRESHOLD_TOKENS;
44
+ this.instanceUrl = config.instanceUrl;
39
45
  }
40
- createWorkflow() {
41
- const tools = [
46
+ getBuilderTools() {
47
+ return [
42
48
  (0, node_search_tool_1.createNodeSearchTool)(this.parsedNodeTypes),
43
49
  (0, node_details_tool_1.createNodeDetailsTool)(this.parsedNodeTypes),
44
50
  (0, add_node_tool_1.createAddNodeTool)(this.parsedNodeTypes),
45
51
  (0, connect_nodes_tool_1.createConnectNodesTool)(this.parsedNodeTypes, this.logger),
46
52
  (0, remove_node_tool_1.createRemoveNodeTool)(this.logger),
47
- (0, update_node_parameters_tool_1.createUpdateNodeParametersTool)(this.parsedNodeTypes, this.llmComplexTask, this.logger),
53
+ (0, update_node_parameters_tool_1.createUpdateNodeParametersTool)(this.parsedNodeTypes, this.llmComplexTask, this.logger, this.instanceUrl),
54
+ (0, get_node_parameter_tool_1.createGetNodeParameterTool)(),
48
55
  ];
56
+ }
57
+ createWorkflow() {
58
+ const builderTools = this.getBuilderTools();
59
+ const tools = builderTools.map((bt) => bt.tool);
49
60
  const toolMap = new Map(tools.map((tool) => [tool.name, tool]));
50
61
  const callModel = async (state) => {
51
62
  if (!this.llmSimpleTask) {
@@ -58,9 +69,16 @@ class WorkflowBuilderAgent {
58
69
  }
59
70
  const prompt = await main_agent_prompt_1.mainAgentPrompt.invoke({
60
71
  ...state,
72
+ workflowJSON: (0, trim_workflow_context_1.trimWorkflowJSON)(state.workflowJSON),
61
73
  executionData: state.workflowContext?.executionData ?? {},
62
74
  executionSchema: state.workflowContext?.executionSchema ?? [],
75
+ workflowPlan: (0, main_agent_prompt_1.planFormatter)(state.workflowPlan),
76
+ instanceUrl: this.instanceUrl,
63
77
  });
78
+ const estimatedTokens = (0, token_usage_1.estimateTokenCountFromMessages)(prompt.messages);
79
+ if (estimatedTokens > constants_1.MAX_INPUT_TOKENS) {
80
+ throw new errors_1.WorkflowStateError('The current conversation and workflow state is too large to process. Try to simplify your workflow by breaking it into smaller parts.');
81
+ }
64
82
  const response = await this.llmSimpleTask.bindTools(tools).invoke(prompt);
65
83
  return { messages: [response] };
66
84
  };
@@ -78,8 +96,94 @@ class WorkflowBuilderAgent {
78
96
  });
79
97
  return tokensUsed > this.autoCompactThresholdTokens;
80
98
  };
99
+ const createPlan = async (state) => {
100
+ const { messages } = state;
101
+ const lastHumanMessage = messages.findLast((m) => m instanceof messages_1.HumanMessage);
102
+ if (typeof lastHumanMessage.content !== 'string') {
103
+ throw new errors_1.ValidationError('Invalid message content for planning');
104
+ }
105
+ const plannerAgent = (0, workflow_planner_agent_1.createWorkflowPlannerAgent)(this.llmSimpleTask, this.parsedNodeTypes);
106
+ const plannerResult = await plannerAgent.plan(lastHumanMessage.content);
107
+ if ('plan' in plannerResult) {
108
+ const { plan, toolMessages } = plannerResult;
109
+ this.logger?.debug('Generated workflow plan: ' + JSON.stringify(plan, null, 2));
110
+ return {
111
+ workflowPlan: plan,
112
+ planStatus: 'pending',
113
+ messages: toolMessages,
114
+ };
115
+ }
116
+ this.logger?.debug('Planner returned text response: ' + plannerResult.text);
117
+ return {
118
+ messages: [
119
+ new messages_1.AIMessage({
120
+ content: plannerResult.text,
121
+ }),
122
+ ],
123
+ };
124
+ };
125
+ const reviewPlan = async (state) => {
126
+ const { workflowPlan } = state;
127
+ if (!workflowPlan) {
128
+ throw new errors_1.ValidationError('No workflow plan to review');
129
+ }
130
+ const userResponse = (0, langgraph_1.interrupt)({
131
+ plan: workflowPlan.plan,
132
+ message: workflowPlan.intro,
133
+ });
134
+ if (userResponse.action === 'approve') {
135
+ return {
136
+ planStatus: 'approved',
137
+ };
138
+ }
139
+ else if (userResponse.action === 'adjust') {
140
+ return {
141
+ planStatus: 'rejected',
142
+ planFeedback: userResponse.feedback ?? 'Please adjust the plan',
143
+ };
144
+ }
145
+ return {};
146
+ };
147
+ const adjustPlan = async (state) => {
148
+ const { messages, planFeedback, workflowPlan } = state;
149
+ const lastHumanMessage = messages.findLast((m) => m instanceof messages_1.HumanMessage);
150
+ if (typeof lastHumanMessage.content !== 'string') {
151
+ throw new errors_1.ValidationError('Invalid message content for plan adjustment');
152
+ }
153
+ const plannerAgent = (0, workflow_planner_agent_1.createWorkflowPlannerAgent)(this.llmSimpleTask, this.parsedNodeTypes);
154
+ const adjustedPlan = await plannerAgent.plan(lastHumanMessage.content, workflowPlan ?? undefined, planFeedback ?? undefined);
155
+ if ('text' in adjustedPlan) {
156
+ return {
157
+ messages: [
158
+ new messages_1.AIMessage({
159
+ content: adjustedPlan.text,
160
+ }),
161
+ ],
162
+ };
163
+ }
164
+ const filteredMessages = messages.map((m) => {
165
+ if (m instanceof messages_1.ToolMessage && m.name === 'generate_workflow_plan') {
166
+ return new messages_1.RemoveMessage({ id: m.id });
167
+ }
168
+ if (m instanceof messages_1.AIMessage && m.tool_calls && m.tool_calls.length > 0) {
169
+ const hasPlanCall = m.tool_calls.find((tc) => tc.name === 'generate_workflow_plan');
170
+ if (hasPlanCall) {
171
+ return new messages_1.RemoveMessage({ id: m.id });
172
+ }
173
+ }
174
+ return m;
175
+ });
176
+ const planAdjustmentMessage = new messages_1.HumanMessage({ content: planFeedback ?? '' });
177
+ this.logger?.debug('Adjusted workflow plan: ' + JSON.stringify(adjustedPlan, null, 2));
178
+ return {
179
+ workflowPlan: adjustedPlan.plan,
180
+ messages: [...filteredMessages, planAdjustmentMessage, ...adjustedPlan.toolMessages],
181
+ planStatus: 'pending',
182
+ planFeedback: null,
183
+ };
184
+ };
81
185
  const shouldModifyState = (state) => {
82
- const { messages, workflowContext } = state;
186
+ const { messages, workflowContext, planStatus } = state;
83
187
  const lastHumanMessage = messages.findLast((m) => m instanceof messages_1.HumanMessage);
84
188
  if (lastHumanMessage.content === '/compact') {
85
189
  return 'compact_messages';
@@ -93,6 +197,9 @@ class WorkflowBuilderAgent {
93
197
  if (shouldAutoCompact(state)) {
94
198
  return 'auto_compact_messages';
95
199
  }
200
+ if (!planStatus && workflowContext?.currentWorkflow?.nodes?.length === 0) {
201
+ return 'create_plan';
202
+ }
96
203
  return 'agent';
97
204
  };
98
205
  const shouldContinue = ({ messages }) => {
@@ -116,6 +223,9 @@ class WorkflowBuilderAgent {
116
223
  connections: {},
117
224
  name: '',
118
225
  },
226
+ workflowPlan: null,
227
+ planStatus: null,
228
+ planFeedback: null,
119
229
  };
120
230
  return stateUpdate;
121
231
  }
@@ -170,11 +280,21 @@ class WorkflowBuilderAgent {
170
280
  .addNode('compact_messages', compactSession)
171
281
  .addNode('auto_compact_messages', compactSession)
172
282
  .addNode('create_workflow_name', createWorkflowName)
283
+ .addNode('create_plan', createPlan)
284
+ .addNode('review_plan', reviewPlan)
285
+ .addNode('adjust_plan', adjustPlan)
173
286
  .addConditionalEdges('__start__', shouldModifyState)
287
+ .addConditionalEdges('create_plan', (state) => {
288
+ return state.workflowPlan ? 'review_plan' : langgraph_1.END;
289
+ })
290
+ .addConditionalEdges('review_plan', (state) => {
291
+ return state.planStatus === 'approved' ? 'agent' : 'adjust_plan';
292
+ })
293
+ .addEdge('adjust_plan', 'review_plan')
174
294
  .addEdge('tools', 'process_operations')
175
295
  .addEdge('process_operations', 'agent')
176
296
  .addEdge('auto_compact_messages', 'agent')
177
- .addEdge('create_workflow_name', 'agent')
297
+ .addEdge('create_workflow_name', 'create_plan')
178
298
  .addEdge('delete_messages', langgraph_1.END)
179
299
  .addEdge('compact_messages', langgraph_1.END)
180
300
  .addConditionalEdges('agent', shouldContinue);
@@ -199,13 +319,26 @@ class WorkflowBuilderAgent {
199
319
  });
200
320
  }
201
321
  async *chat(payload, userId, abortSignal) {
202
- if (payload.message.length > constants_1.MAX_AI_BUILDER_PROMPT_LENGTH) {
322
+ this.validateMessageLength(payload.message);
323
+ const { agent, threadConfig, streamConfig } = this.setupAgentAndConfigs(payload, userId, abortSignal);
324
+ try {
325
+ const stream = await this.createAgentStream(payload, streamConfig, agent, threadConfig);
326
+ yield* this.processAgentStream(stream, agent, threadConfig);
327
+ }
328
+ catch (error) {
329
+ this.handleStreamError(error);
330
+ }
331
+ }
332
+ validateMessageLength(message) {
333
+ if (message.length > constants_1.MAX_AI_BUILDER_PROMPT_LENGTH) {
203
334
  this.logger?.warn('Message exceeds maximum length', {
204
- messageLength: payload.message.length,
335
+ messageLength: message.length,
205
336
  maxLength: constants_1.MAX_AI_BUILDER_PROMPT_LENGTH,
206
337
  });
207
338
  throw new errors_1.ValidationError(`Message exceeds maximum length of ${constants_1.MAX_AI_BUILDER_PROMPT_LENGTH} characters`);
208
339
  }
340
+ }
341
+ setupAgentAndConfigs(payload, userId, abortSignal) {
209
342
  const agent = this.createWorkflow().compile({ checkpointer: this.checkpointer });
210
343
  const workflowId = payload.workflowContext?.currentWorkflow?.id;
211
344
  const threadId = WorkflowBuilderAgent.generateThreadId(workflowId, userId);
@@ -217,16 +350,40 @@ class WorkflowBuilderAgent {
217
350
  const streamConfig = {
218
351
  ...threadConfig,
219
352
  streamMode: ['updates', 'custom'],
220
- recursionLimit: 30,
353
+ recursionLimit: 50,
221
354
  signal: abortSignal,
222
355
  callbacks: this.tracer ? [this.tracer] : undefined,
223
356
  };
224
- const stream = await agent.stream({
357
+ return { agent, threadConfig, streamConfig };
358
+ }
359
+ async createAgentStream(payload, streamConfig, agent, threadConfig) {
360
+ const currentState = await agent.getState(threadConfig);
361
+ const interruptedTask = currentState.tasks.find((task) => task.interrupts && task.interrupts.length > 0);
362
+ if (interruptedTask) {
363
+ const action = payload.message.trim() === constants_1.PLAN_APPROVAL_MESSAGE ? 'approve' : 'adjust';
364
+ const resumeCommand = new langgraph_1.Command({
365
+ resume: {
366
+ action,
367
+ feedback: action === 'adjust' ? payload.message : undefined,
368
+ },
369
+ });
370
+ return await agent.stream(resumeCommand, streamConfig);
371
+ }
372
+ return await agent.stream({
225
373
  messages: [new messages_1.HumanMessage({ content: payload.message })],
226
374
  workflowJSON: this.getDefaultWorkflowJSON(payload),
227
375
  workflowOperations: [],
228
376
  workflowContext: payload.workflowContext,
229
377
  }, streamConfig);
378
+ }
379
+ handleStreamError(error) {
380
+ const invalidRequestErrorMessage = this.getInvalidRequestError(error);
381
+ if (invalidRequestErrorMessage) {
382
+ throw new errors_1.ValidationError(invalidRequestErrorMessage);
383
+ }
384
+ throw error;
385
+ }
386
+ async *processAgentStream(stream, agent, threadConfig) {
230
387
  try {
231
388
  const streamProcessor = (0, stream_processor_1.createStreamProcessor)(stream);
232
389
  for await (const output of streamProcessor) {
@@ -234,21 +391,45 @@ class WorkflowBuilderAgent {
234
391
  }
235
392
  }
236
393
  catch (error) {
237
- if (error &&
238
- typeof error === 'object' &&
239
- 'message' in error &&
240
- typeof error.message === 'string' &&
241
- ['Abort', 'Aborted'].includes(error.message)) {
242
- const messages = (await agent.getState(threadConfig)).values.messages;
243
- const abortedAiMessage = new messages_1.AIMessage({
244
- content: '[Task aborted]',
245
- id: crypto.randomUUID(),
246
- });
247
- await agent.updateState(threadConfig, { messages: [...messages, abortedAiMessage] });
248
- return;
394
+ await this.handleAgentStreamError(error, agent, threadConfig);
395
+ }
396
+ }
397
+ async handleAgentStreamError(error, agent, threadConfig) {
398
+ if (error &&
399
+ typeof error === 'object' &&
400
+ 'message' in error &&
401
+ typeof error.message === 'string' &&
402
+ ['Abort', 'Aborted'].includes(error.message)) {
403
+ const messages = (await agent.getState(threadConfig)).values.messages;
404
+ const abortedAiMessage = new messages_1.AIMessage({
405
+ content: '[Task aborted]',
406
+ id: crypto.randomUUID(),
407
+ });
408
+ await agent.updateState(threadConfig, { messages: [...messages, abortedAiMessage] });
409
+ return;
410
+ }
411
+ if (error instanceof langgraph_1.GraphRecursionError) {
412
+ throw new n8n_workflow_1.ApplicationError('Workflow generation stopped: The AI reached the maximum number of steps while building your workflow. This usually means the workflow design became too complex or got stuck in a loop while trying to create the nodes and connections.');
413
+ }
414
+ throw error;
415
+ }
416
+ getInvalidRequestError(error) {
417
+ if (error instanceof Error &&
418
+ 'error' in error &&
419
+ typeof error.error === 'object' &&
420
+ error.error) {
421
+ const innerError = error.error;
422
+ if ('error' in innerError && typeof innerError.error === 'object' && innerError.error) {
423
+ const errorDetails = innerError.error;
424
+ if ('type' in errorDetails &&
425
+ errorDetails.type === 'invalid_request_error' &&
426
+ 'message' in errorDetails &&
427
+ typeof errorDetails.message === 'string') {
428
+ return errorDetails.message;
429
+ }
249
430
  }
250
- throw error;
251
431
  }
432
+ return undefined;
252
433
  }
253
434
  async getSessions(workflowId, userId) {
254
435
  const sessions = [];
@@ -265,7 +446,7 @@ class WorkflowBuilderAgent {
265
446
  const messages = checkpoint.checkpoint.channel_values?.messages ?? [];
266
447
  sessions.push({
267
448
  sessionId: threadId,
268
- messages: (0, stream_processor_1.formatMessages)(messages),
449
+ messages: (0, stream_processor_1.formatMessages)(messages, this.getBuilderTools()),
269
450
  lastUpdated: checkpoint.checkpoint.ts,
270
451
  });
271
452
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-builder-agent.js","sourceRoot":"","sources":["../src/workflow-builder-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-builder-agent.js","sourceRoot":"","sources":["../src/workflow-builder-agent.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,23 @@ export declare const WorkflowState: import("@langchain/langgraph").AnnotationRoo
5
5
  messages: import("@langchain/langgraph").BinaryOperatorAggregate<BaseMessage[], BaseMessage[]>;
6
6
  workflowJSON: import("@langchain/langgraph").BinaryOperatorAggregate<SimpleWorkflow, SimpleWorkflow>;
7
7
  workflowOperations: import("@langchain/langgraph").BinaryOperatorAggregate<WorkflowOperation[] | null, WorkflowOperation[] | null>;
8
+ workflowPlan: import("@langchain/langgraph").BinaryOperatorAggregate<{
9
+ intro: string;
10
+ plan: {
11
+ nodeType: string;
12
+ reasoning: string;
13
+ nodeName: string;
14
+ }[];
15
+ } | null, {
16
+ intro: string;
17
+ plan: {
18
+ nodeType: string;
19
+ reasoning: string;
20
+ nodeName: string;
21
+ }[];
22
+ } | null>;
23
+ planStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"pending" | "approved" | "rejected" | null, "pending" | "approved" | "rejected" | null>;
24
+ planFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
8
25
  workflowContext: import("@langchain/langgraph").BinaryOperatorAggregate<{
9
26
  executionSchema?: import("n8n-workflow").NodeExecutionSchema[];
10
27
  currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
@@ -47,6 +47,18 @@ exports.WorkflowState = langgraph_1.Annotation.Root({
47
47
  reducer: operationsReducer,
48
48
  default: () => [],
49
49
  }),
50
+ workflowPlan: (0, langgraph_1.Annotation)({
51
+ reducer: (x, y) => y ?? x,
52
+ default: () => null,
53
+ }),
54
+ planStatus: (0, langgraph_1.Annotation)({
55
+ reducer: (x, y) => y ?? x,
56
+ default: () => null,
57
+ }),
58
+ planFeedback: (0, langgraph_1.Annotation)({
59
+ reducer: (x, y) => y ?? x,
60
+ default: () => null,
61
+ }),
50
62
  workflowContext: (0, langgraph_1.Annotation)({
51
63
  reducer: (x, y) => y ?? x,
52
64
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":";;;AAoCA,8DAsBC;AAzDD,uDAAwD;AACxD,oDAAwE;AASxE,SAAS,iBAAiB,CACzB,OAAmC,EACnC,MAA8C;IAE9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,IAAI,EAAE,CAAC;IACtB,CAAC;IAGD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACxC,CAAC;AAGD,SAAgB,yBAAyB,CAAC,eAAuB;IAChE,OAAO,CAAC,OAAsB,EAAiB,EAAE;QAEhD,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,GAAG,YAAY,uBAAY,EAAE,CAAC;gBACjC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC;QAGH,IAAI,mBAAmB,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YACnD,OAAO,OAAO,CAAC;QAChB,CAAC;QAGD,MAAM,sBAAsB,GAC3B,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QAGnE,OAAO,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC;AAEY,QAAA,aAAa,GAAG,sBAAU,CAAC,IAAI,CAAC;IAC5C,QAAQ,EAAE,IAAA,sBAAU,EAAgB;QACnC,OAAO,EAAE,gCAAoB;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KACjB,CAAC;IAIF,YAAY,EAAE,IAAA,sBAAU,EAAiB;QACxC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACzD,CAAC;IAEF,kBAAkB,EAAE,IAAA,sBAAU,EAA6B;QAC1D,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KACjB,CAAC;IAGF,eAAe,EAAE,IAAA,sBAAU,EAA6C;QACvE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;KACzB,CAAC;IAGF,eAAe,EAAE,IAAA,sBAAU,EAAS;QACnC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;KACtB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@n8n/ai-workflow-builder",
3
- "version": "0.18.0",
3
+ "version": "0.20.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "src/index.ts",
6
6
  "types": "dist/index.d.ts",
@@ -23,20 +23,21 @@
23
23
  "@langchain/openai": "0.6.7",
24
24
  "@n8n_io/ai-assistant-sdk": "1.15.0",
25
25
  "langsmith": "^0.3.45",
26
+ "lodash": "4.17.21",
26
27
  "picocolors": "1.0.1",
27
28
  "zod": "3.25.67",
28
- "@n8n/config": "1.51.0",
29
+ "@n8n/backend-common": "^0.20.0",
29
30
  "@n8n/di": "0.9.0",
30
- "@n8n/backend-common": "^0.18.0",
31
- "n8n-workflow": "1.105.0"
31
+ "n8n-workflow": "1.107.0",
32
+ "@n8n/config": "1.53.0"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@types/cli-progress": "^3.11.5",
35
- "p-limit": "^3.1.0",
36
36
  "cli-progress": "^3.12.0",
37
37
  "cli-table3": "^0.6.3",
38
38
  "jest-mock-extended": "^3.0.4",
39
39
  "madge": "^8.0.0",
40
+ "p-limit": "^3.1.0",
40
41
  "@n8n/typescript-config": "1.3.0"
41
42
  },
42
43
  "license": "SEE LICENSE IN LICENSE.md",
@@ -68,7 +69,8 @@
68
69
  "deps:report": "madge src/index.ts --json > deps-report.json && echo 'Dependency report saved to deps-report.json'",
69
70
  "deps:orphans": "madge src/index.ts --orphans",
70
71
  "deps:all": "pnpm run deps:graph && pnpm run deps:graph:service && pnpm run deps:graph:tools && pnpm run deps:circular && pnpm run deps:report",
71
- "eval": "tsx evaluations/run-evaluation.ts",
72
- "eval:generate": "GENERATE_TEST_CASES=true tsx evaluations/run-evaluation.ts"
72
+ "eval": "tsx evaluations",
73
+ "eval:langsmith": "USE_LANGSMITH_EVAL=true tsx evaluations",
74
+ "eval:generate": "GENERATE_TEST_CASES=true tsx evaluations"
73
75
  }
74
76
  }
@@ -1,4 +0,0 @@
1
- import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
- import { SystemMessage } from '@langchain/core/messages';
3
- export declare const plannerPrompt: SystemMessage;
4
- export declare const plannerChain: (llm: BaseChatModel) => import("@langchain/core/runnables").Runnable<any, string[], import("@langchain/core/runnables").RunnableConfig<Record<string, any>>>;
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.plannerChain = exports.plannerPrompt = void 0;
4
- const messages_1 = require("@langchain/core/messages");
5
- const prompts_1 = require("@langchain/core/prompts");
6
- const tools_1 = require("@langchain/core/tools");
7
- const zod_1 = require("zod");
8
- const errors_1 = require("../errors");
9
- exports.plannerPrompt = new messages_1.SystemMessage(`You are a Workflow Planner for n8n, a platform that helps users automate processes across different services and APIs.
10
-
11
- ## Your Task
12
- Convert user requests into clear, sequential workflow steps that can be implemented with n8n nodes. ONLY include steps that are explicitly stated or directly implied in the user request.
13
-
14
- ## Guidelines
15
- 1. Analyze the user request to understand their end goal and required process
16
- 2. Break down the automation into logical steps based on complexity - simpler workflows need fewer steps, complex ones may need more
17
- 3. Focus ONLY on actions mentioned directly in the user prompt
18
- 4. Create steps that can be mapped to n8n nodes later
19
- 5. Order steps sequentially from trigger to final action
20
- 6. Be specific about data transformations needed ONLY if mentioned in the request
21
- 7. NEVER add extra steps like storing data or sending notifications unless explicitly requested
22
- 8. Only recommend raw HTTP requests if you think there isn't a suitable n8n node
23
-
24
- ## CRITICAL REQUIREMENTS
25
- - DO NOT add any steps not directly mentioned or implied in the user request
26
- - DO NOT assume the user wants to store data in a database unless explicitly stated
27
- - DO NOT assume the user wants to send notifications or emails unless explicitly stated
28
- - DO NOT add any "nice to have" steps that aren't clearly part of the user's request
29
- - Keep the workflow EXACTLY focused on what was requested, nothing more
30
-
31
- ## Output Format
32
- Return ONLY a JSON object with this structure:
33
- \`\`\`json
34
- {
35
- "steps": [
36
- "[Brief action-oriented description]",
37
- "[Brief action-oriented description]",
38
- ...
39
- ]
40
- }
41
- \`\`\`
42
-
43
- ## Examples of Good Step Descriptions
44
- - "Trigger when a new email arrives in Gmail inbox"
45
- - "Filter emails to only include those with attachments"
46
- - "Extract data from CSV attachments"
47
- - "Transform data to required format for the API"
48
- - "Send HTTP request to external API with extracted data"
49
- - "Post success message to Slack channel"
50
-
51
- IMPORTANT: Do not include HTML tags, markdown formatting, or explanations outside the JSON.`);
52
- const planSchema = zod_1.z.object({
53
- steps: zod_1.z
54
- .array(zod_1.z
55
- .string()
56
- .describe('A clear, action-oriented description of a single workflow step. Do not include "Step N" or similar, just the action'))
57
- .min(1)
58
- .describe('An ordered list of workflow steps that, when implemented, will fulfill the user request. Each step should be concise, action-oriented, and implementable with n8n nodes.'),
59
- });
60
- const generatePlanTool = new tools_1.DynamicStructuredTool({
61
- name: 'generate_plan',
62
- description: 'Convert a user workflow request into a logical sequence of clear, achievable steps that can be implemented with n8n nodes.',
63
- schema: planSchema,
64
- func: async (input) => {
65
- return { steps: input.steps };
66
- },
67
- });
68
- const humanTemplate = '{prompt}';
69
- const chatPrompt = prompts_1.ChatPromptTemplate.fromMessages([
70
- exports.plannerPrompt,
71
- prompts_1.HumanMessagePromptTemplate.fromTemplate(humanTemplate),
72
- ]);
73
- const plannerChain = (llm) => {
74
- if (!llm.bindTools) {
75
- throw new errors_1.LLMServiceError("LLM doesn't support binding tools", { llmModel: llm._llmType() });
76
- }
77
- return chatPrompt
78
- .pipe(llm.bindTools([generatePlanTool], {
79
- tool_choice: generatePlanTool.name,
80
- }))
81
- .pipe((x) => {
82
- const toolCall = x.tool_calls?.[0];
83
- return (toolCall?.args).steps;
84
- });
85
- };
86
- exports.plannerChain = plannerChain;
87
- //# sourceMappingURL=planner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/chains/planner.ts"],"names":[],"mappings":";;;AAEA,uDAAyD;AACzD,qDAAyF;AACzF,iDAA8D;AAC9D,6BAAwB;AAExB,sCAA4C;AAE/B,QAAA,aAAa,GAAG,IAAI,wBAAa,CAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4FA0C2F,CAC3F,CAAC;AAEF,MAAM,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,OAAC;SACN,KAAK,CACL,OAAC;SACC,MAAM,EAAE;SACR,QAAQ,CACR,qHAAqH,CACrH,CACF;SACA,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACR,0KAA0K,CAC1K;CACF,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,IAAI,6BAAqB,CAAC;IAClD,IAAI,EAAE,eAAe;IACrB,WAAW,EACV,4HAA4H;IAC7H,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,UAAU,CAAC;AACjC,MAAM,UAAU,GAAG,4BAAkB,CAAC,YAAY,CAAC;IAClD,qBAAa;IACb,oCAA0B,CAAC,YAAY,CAAC,aAAa,CAAC;CACtD,CAAC,CAAC;AAEI,MAAM,YAAY,GAAG,CAAC,GAAkB,EAAE,EAAE;IAClD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,wBAAe,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,UAAU;SACf,IAAI,CACJ,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,EAAE;QACjC,WAAW,EAAE,gBAAgB,CAAC,IAAI;KAClC,CAAC,CACF;SACA,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,EAAE,IAAmC,CAAA,CAAC,KAAK,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB"}