@n8n/ai-workflow-builder 1.8.1 → 1.9.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 (200) hide show
  1. package/dist/agents/planner.agent.d.ts +1 -0
  2. package/dist/agents/planner.agent.js +1 -0
  3. package/dist/agents/planner.agent.js.map +1 -1
  4. package/dist/agents/responder.agent.d.ts +16 -6
  5. package/dist/agents/responder.agent.js +19 -8
  6. package/dist/agents/responder.agent.js.map +1 -1
  7. package/dist/agents/supervisor.agent.js +6 -0
  8. package/dist/agents/supervisor.agent.js.map +1 -1
  9. package/dist/ai-workflow-builder-agent.service.d.ts +7 -3
  10. package/dist/ai-workflow-builder-agent.service.js +76 -48
  11. package/dist/ai-workflow-builder-agent.service.js.map +1 -1
  12. package/dist/assistant/assistant-handler.d.ts +23 -0
  13. package/dist/assistant/assistant-handler.js +249 -0
  14. package/dist/assistant/assistant-handler.js.map +1 -0
  15. package/dist/assistant/index.d.ts +2 -0
  16. package/dist/assistant/index.js +6 -0
  17. package/dist/assistant/index.js.map +1 -0
  18. package/dist/assistant/types.d.ts +83 -0
  19. package/dist/assistant/types.js +3 -0
  20. package/dist/assistant/types.js.map +1 -0
  21. package/dist/build.tsbuildinfo +1 -1
  22. package/dist/code-builder/code-builder-agent.d.ts +31 -0
  23. package/dist/code-builder/code-builder-agent.js +463 -0
  24. package/dist/code-builder/code-builder-agent.js.map +1 -0
  25. package/dist/code-builder/code-workflow-builder.d.ts +34 -0
  26. package/dist/code-builder/code-workflow-builder.js +80 -0
  27. package/dist/code-builder/code-workflow-builder.js.map +1 -0
  28. package/dist/code-builder/constants.d.ts +62 -0
  29. package/dist/code-builder/constants.js +83 -0
  30. package/dist/code-builder/constants.js.map +1 -0
  31. package/dist/code-builder/engines/code-builder-node-search-engine.d.ts +19 -0
  32. package/dist/code-builder/engines/code-builder-node-search-engine.js +236 -0
  33. package/dist/code-builder/engines/code-builder-node-search-engine.js.map +1 -0
  34. package/dist/code-builder/handlers/agent-iteration-handler.d.ts +36 -0
  35. package/dist/code-builder/handlers/agent-iteration-handler.js +78 -0
  36. package/dist/code-builder/handlers/agent-iteration-handler.js.map +1 -0
  37. package/dist/code-builder/handlers/auto-finalize-handler.d.ts +29 -0
  38. package/dist/code-builder/handlers/auto-finalize-handler.js +50 -0
  39. package/dist/code-builder/handlers/auto-finalize-handler.js.map +1 -0
  40. package/dist/code-builder/handlers/chat-setup-handler.d.ts +57 -0
  41. package/dist/code-builder/handlers/chat-setup-handler.js +147 -0
  42. package/dist/code-builder/handlers/chat-setup-handler.js.map +1 -0
  43. package/dist/code-builder/handlers/final-response-handler.d.ts +29 -0
  44. package/dist/code-builder/handlers/final-response-handler.js +75 -0
  45. package/dist/code-builder/handlers/final-response-handler.js.map +1 -0
  46. package/dist/code-builder/handlers/parse-validate-handler.d.ts +17 -0
  47. package/dist/code-builder/handlers/parse-validate-handler.js +116 -0
  48. package/dist/code-builder/handlers/parse-validate-handler.js.map +1 -0
  49. package/dist/code-builder/handlers/session-chat-handler.d.ts +30 -0
  50. package/dist/code-builder/handlers/session-chat-handler.js +96 -0
  51. package/dist/code-builder/handlers/session-chat-handler.js.map +1 -0
  52. package/dist/code-builder/handlers/text-editor-handler.d.ts +19 -0
  53. package/dist/code-builder/handlers/text-editor-handler.js +230 -0
  54. package/dist/code-builder/handlers/text-editor-handler.js.map +1 -0
  55. package/dist/code-builder/handlers/text-editor-tool-handler.d.ts +44 -0
  56. package/dist/code-builder/handlers/text-editor-tool-handler.js +145 -0
  57. package/dist/code-builder/handlers/text-editor-tool-handler.js.map +1 -0
  58. package/dist/code-builder/handlers/text-editor.types.d.ts +68 -0
  59. package/dist/code-builder/handlers/text-editor.types.js +68 -0
  60. package/dist/code-builder/handlers/text-editor.types.js.map +1 -0
  61. package/dist/code-builder/handlers/tool-dispatch-handler.d.ts +47 -0
  62. package/dist/code-builder/handlers/tool-dispatch-handler.js +287 -0
  63. package/dist/code-builder/handlers/tool-dispatch-handler.js.map +1 -0
  64. package/dist/code-builder/handlers/validate-tool-handler.d.ts +33 -0
  65. package/dist/code-builder/handlers/validate-tool-handler.js +101 -0
  66. package/dist/code-builder/handlers/validate-tool-handler.js.map +1 -0
  67. package/dist/code-builder/index.d.ts +5 -0
  68. package/dist/code-builder/index.js +10 -0
  69. package/dist/code-builder/index.js.map +1 -0
  70. package/dist/code-builder/prompts/index.d.ts +22 -0
  71. package/dist/code-builder/prompts/index.js +830 -0
  72. package/dist/code-builder/prompts/index.js.map +1 -0
  73. package/dist/code-builder/state/warning-tracker.d.ts +9 -0
  74. package/dist/code-builder/state/warning-tracker.js +28 -0
  75. package/dist/code-builder/state/warning-tracker.js.map +1 -0
  76. package/dist/code-builder/tools/ask-assistant.tool.d.ts +12 -0
  77. package/dist/code-builder/tools/ask-assistant.tool.js +12 -0
  78. package/dist/code-builder/tools/ask-assistant.tool.js.map +1 -0
  79. package/dist/code-builder/tools/build-workflow.tool.d.ts +12 -0
  80. package/dist/code-builder/tools/build-workflow.tool.js +12 -0
  81. package/dist/code-builder/tools/build-workflow.tool.js.map +1 -0
  82. package/dist/code-builder/tools/code-builder-get.tool.d.ts +61 -0
  83. package/dist/code-builder/tools/code-builder-get.tool.js +399 -0
  84. package/dist/code-builder/tools/code-builder-get.tool.js.map +1 -0
  85. package/dist/code-builder/tools/code-builder-search.tool.d.ts +15 -0
  86. package/dist/code-builder/tools/code-builder-search.tool.js +338 -0
  87. package/dist/code-builder/tools/code-builder-search.tool.js.map +1 -0
  88. package/dist/code-builder/tools/get-suggested-nodes.tool.d.ts +14 -0
  89. package/dist/code-builder/tools/get-suggested-nodes.tool.js +89 -0
  90. package/dist/code-builder/tools/get-suggested-nodes.tool.js.map +1 -0
  91. package/dist/code-builder/tools/suggested-nodes-data.d.ts +11 -0
  92. package/dist/code-builder/tools/suggested-nodes-data.js +236 -0
  93. package/dist/code-builder/tools/suggested-nodes-data.js.map +1 -0
  94. package/dist/code-builder/triage.agent.d.ts +48 -0
  95. package/dist/code-builder/triage.agent.js +223 -0
  96. package/dist/code-builder/triage.agent.js.map +1 -0
  97. package/dist/code-builder/types.d.ts +51 -0
  98. package/dist/code-builder/types.js +3 -0
  99. package/dist/code-builder/types.js.map +1 -0
  100. package/dist/code-builder/utils/code-builder-session.d.ts +25 -0
  101. package/dist/code-builder/utils/code-builder-session.js +186 -0
  102. package/dist/code-builder/utils/code-builder-session.js.map +1 -0
  103. package/dist/code-builder/utils/content-extractors.d.ts +5 -0
  104. package/dist/code-builder/utils/content-extractors.js +88 -0
  105. package/dist/code-builder/utils/content-extractors.js.map +1 -0
  106. package/dist/code-builder/utils/discriminator-utils.d.ts +22 -0
  107. package/dist/code-builder/utils/discriminator-utils.js +85 -0
  108. package/dist/code-builder/utils/discriminator-utils.js.map +1 -0
  109. package/dist/code-builder/utils/extract-code.d.ts +3 -0
  110. package/dist/code-builder/utils/extract-code.js +23 -0
  111. package/dist/code-builder/utils/extract-code.js.map +1 -0
  112. package/dist/code-builder/utils/format-warnings.d.ts +3 -0
  113. package/dist/code-builder/utils/format-warnings.js +12 -0
  114. package/dist/code-builder/utils/format-warnings.js.map +1 -0
  115. package/dist/code-builder/utils/llm-response-processor.d.ts +15 -0
  116. package/dist/code-builder/utils/llm-response-processor.js +38 -0
  117. package/dist/code-builder/utils/llm-response-processor.js.map +1 -0
  118. package/dist/code-builder/utils/node-diff.d.ts +13 -0
  119. package/dist/code-builder/utils/node-diff.js +22 -0
  120. package/dist/code-builder/utils/node-diff.js.map +1 -0
  121. package/dist/code-builder/utils/node-type-parser.d.ts +18 -0
  122. package/dist/code-builder/utils/node-type-parser.js +67 -0
  123. package/dist/code-builder/utils/node-type-parser.js.map +1 -0
  124. package/dist/constants.d.ts +2 -0
  125. package/dist/constants.js +3 -1
  126. package/dist/constants.js.map +1 -1
  127. package/dist/index.d.ts +4 -0
  128. package/dist/index.js +7 -1
  129. package/dist/index.js.map +1 -1
  130. package/dist/llm-config.js +1 -1
  131. package/dist/llm-config.js.map +1 -1
  132. package/dist/multi-agent-workflow-subgraphs.d.ts +37 -0
  133. package/dist/multi-agent-workflow-subgraphs.js +15 -8
  134. package/dist/multi-agent-workflow-subgraphs.js.map +1 -1
  135. package/dist/parent-graph-state.d.ts +8 -0
  136. package/dist/parent-graph-state.js +4 -0
  137. package/dist/parent-graph-state.js.map +1 -1
  138. package/dist/prompts/agents/builder.prompt.d.ts +1 -0
  139. package/dist/prompts/agents/builder.prompt.js +86 -4
  140. package/dist/prompts/agents/builder.prompt.js.map +1 -1
  141. package/dist/prompts/agents/planner.prompt.d.ts +1 -0
  142. package/dist/prompts/agents/planner.prompt.js +2 -1
  143. package/dist/prompts/agents/planner.prompt.js.map +1 -1
  144. package/dist/prompts/agents/responder.prompt.d.ts +4 -1
  145. package/dist/prompts/agents/responder.prompt.js +72 -1
  146. package/dist/prompts/agents/responder.prompt.js.map +1 -1
  147. package/dist/prompts/agents/supervisor.prompt.js +49 -1
  148. package/dist/prompts/agents/supervisor.prompt.js.map +1 -1
  149. package/dist/prompts/builder/prompt-builder.js +13 -5
  150. package/dist/prompts/builder/prompt-builder.js.map +1 -1
  151. package/dist/prompts/builder/types.d.ts +2 -1
  152. package/dist/prompts/shared/deictic-resolution.d.ts +14 -0
  153. package/dist/prompts/shared/deictic-resolution.js +142 -0
  154. package/dist/prompts/shared/deictic-resolution.js.map +1 -0
  155. package/dist/session-manager.service.d.ts +4 -3
  156. package/dist/session-manager.service.js +56 -8
  157. package/dist/session-manager.service.js.map +1 -1
  158. package/dist/subgraphs/builder.subgraph.d.ts +28 -0
  159. package/dist/subgraphs/builder.subgraph.js +30 -6
  160. package/dist/subgraphs/builder.subgraph.js.map +1 -1
  161. package/dist/subgraphs/discovery.subgraph.d.ts +7 -0
  162. package/dist/subgraphs/discovery.subgraph.js +21 -0
  163. package/dist/subgraphs/discovery.subgraph.js.map +1 -1
  164. package/dist/tools/add-node.tool.d.ts +4 -4
  165. package/dist/tools/builder-tools.js +6 -1
  166. package/dist/tools/builder-tools.js.map +1 -1
  167. package/dist/tools/introspect.tool.d.ts +34 -0
  168. package/dist/tools/introspect.tool.js +125 -0
  169. package/dist/tools/introspect.tool.js.map +1 -0
  170. package/dist/tools/submit-questions.tool.d.ts +8 -8
  171. package/dist/types/streaming.d.ts +7 -1
  172. package/dist/utils/cache-control/helpers.js +29 -22
  173. package/dist/utils/cache-control/helpers.js.map +1 -1
  174. package/dist/utils/context-builders.d.ts +2 -0
  175. package/dist/utils/context-builders.js +57 -0
  176. package/dist/utils/context-builders.js.map +1 -1
  177. package/dist/utils/error-sanitizer.d.ts +1 -0
  178. package/dist/utils/error-sanitizer.js +39 -0
  179. package/dist/utils/error-sanitizer.js.map +1 -0
  180. package/dist/utils/resource-operation-extractor.d.ts +12 -2
  181. package/dist/utils/resource-operation-extractor.js +12 -4
  182. package/dist/utils/resource-operation-extractor.js.map +1 -1
  183. package/dist/utils/stream-processor.js +9 -1
  184. package/dist/utils/stream-processor.js.map +1 -1
  185. package/dist/utils/thread-id.d.ts +1 -0
  186. package/dist/utils/thread-id.js +10 -0
  187. package/dist/utils/thread-id.js.map +1 -0
  188. package/dist/utils/token-usage-tracking-handler.d.ts +14 -0
  189. package/dist/utils/token-usage-tracking-handler.js +55 -0
  190. package/dist/utils/token-usage-tracking-handler.js.map +1 -0
  191. package/dist/validation/types.d.ts +3 -1
  192. package/dist/validation/types.js +11 -0
  193. package/dist/validation/types.js.map +1 -1
  194. package/dist/validation/utils/expressions.js +1 -1
  195. package/dist/validation/utils/expressions.js.map +1 -1
  196. package/dist/workflow-builder-agent.d.ts +26 -3
  197. package/dist/workflow-builder-agent.js +154 -1
  198. package/dist/workflow-builder-agent.js.map +1 -1
  199. package/dist/workflow-state.d.ts +6 -0
  200. package/package.json +10 -6
@@ -0,0 +1,31 @@
1
+ import type { StreamOutput } from '../types/streaming';
2
+ import type { ChatPayload } from '../workflow-builder-agent';
3
+ import type { HistoryContext } from './prompts';
4
+ import type { CodeBuilderAgentConfig } from './types';
5
+ export type { CodeBuilderAgentConfig } from './types';
6
+ export declare class CodeBuilderAgent {
7
+ private nodeTypeParser;
8
+ private logger?;
9
+ private tools;
10
+ private toolsMap;
11
+ private parseValidateHandler;
12
+ private autoFinalizeHandler;
13
+ private validateToolHandler;
14
+ private iterationHandler;
15
+ private finalResponseHandler;
16
+ private chatSetupHandler;
17
+ private toolDispatchHandler;
18
+ private onTelemetryEvent?;
19
+ private originalOnTokenUsage?;
20
+ private accumulatedTokens;
21
+ constructor(config: CodeBuilderAgentConfig);
22
+ private resetAccumulatedTokens;
23
+ private emitTelemetryEvent;
24
+ chat(payload: ChatPayload, userId: string, abortSignal?: AbortSignal, historyContext?: HistoryContext): AsyncGenerator<StreamOutput, void, unknown>;
25
+ private runAgenticLoop;
26
+ private checkConsecutiveParseErrors;
27
+ private processIteration;
28
+ private handleToolCalls;
29
+ private handleTextEditorAutoFinalize;
30
+ private handleFinalResponse;
31
+ }
@@ -0,0 +1,463 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeBuilderAgent = void 0;
4
+ const manager_1 = require("@langchain/core/callbacks/manager");
5
+ const workflow_sdk_1 = require("@n8n/workflow-sdk");
6
+ const constants_1 = require("./constants");
7
+ const agent_iteration_handler_1 = require("./handlers/agent-iteration-handler");
8
+ const auto_finalize_handler_1 = require("./handlers/auto-finalize-handler");
9
+ const chat_setup_handler_1 = require("./handlers/chat-setup-handler");
10
+ const final_response_handler_1 = require("./handlers/final-response-handler");
11
+ const parse_validate_handler_1 = require("./handlers/parse-validate-handler");
12
+ const tool_dispatch_handler_1 = require("./handlers/tool-dispatch-handler");
13
+ const validate_tool_handler_1 = require("./handlers/validate-tool-handler");
14
+ const warning_tracker_1 = require("./state/warning-tracker");
15
+ const code_builder_get_tool_1 = require("./tools/code-builder-get.tool");
16
+ const code_builder_search_tool_1 = require("./tools/code-builder-search.tool");
17
+ const get_suggested_nodes_tool_1 = require("./tools/get-suggested-nodes.tool");
18
+ const error_sanitizer_1 = require("../utils/error-sanitizer");
19
+ const code_builder_session_1 = require("./utils/code-builder-session");
20
+ const content_extractors_1 = require("./utils/content-extractors");
21
+ const node_diff_1 = require("./utils/node-diff");
22
+ const node_type_parser_1 = require("./utils/node-type-parser");
23
+ class CodeBuilderAgent {
24
+ nodeTypeParser;
25
+ logger;
26
+ tools;
27
+ toolsMap;
28
+ parseValidateHandler;
29
+ autoFinalizeHandler;
30
+ validateToolHandler;
31
+ iterationHandler;
32
+ finalResponseHandler;
33
+ chatSetupHandler;
34
+ toolDispatchHandler;
35
+ onTelemetryEvent;
36
+ originalOnTokenUsage;
37
+ accumulatedTokens = {
38
+ inputTokens: 0,
39
+ outputTokens: 0,
40
+ thinkingTokens: 0,
41
+ };
42
+ constructor(config) {
43
+ this.nodeTypeParser = new node_type_parser_1.NodeTypeParser(config.nodeTypes);
44
+ this.logger = config.logger;
45
+ this.onTelemetryEvent = config.onTelemetryEvent;
46
+ this.originalOnTokenUsage = config.onTokenUsage;
47
+ if (config.nodeDefinitionDirs) {
48
+ (0, workflow_sdk_1.setSchemaBaseDirs)(config.nodeDefinitionDirs);
49
+ }
50
+ this.parseValidateHandler = new parse_validate_handler_1.ParseValidateHandler({
51
+ logger: config.logger,
52
+ generatePinData: config.generatePinData,
53
+ });
54
+ this.autoFinalizeHandler = new auto_finalize_handler_1.AutoFinalizeHandler({
55
+ parseAndValidate: async (code, currentWorkflow) => await this.parseValidateHandler.parseAndValidate(code, currentWorkflow),
56
+ getErrorContext: (code, errorMessage) => this.parseValidateHandler.getErrorContext(code, errorMessage),
57
+ });
58
+ this.validateToolHandler = new validate_tool_handler_1.ValidateToolHandler({
59
+ parseAndValidate: async (code, currentWorkflow) => await this.parseValidateHandler.parseAndValidate(code, currentWorkflow),
60
+ getErrorContext: (code, errorMessage) => this.parseValidateHandler.getErrorContext(code, errorMessage),
61
+ });
62
+ this.iterationHandler = new agent_iteration_handler_1.AgentIterationHandler({
63
+ onTokenUsage: (usage) => {
64
+ this.accumulatedTokens.inputTokens += usage.inputTokens;
65
+ this.accumulatedTokens.outputTokens += usage.outputTokens;
66
+ this.accumulatedTokens.thinkingTokens += usage.thinkingTokens;
67
+ this.originalOnTokenUsage?.(usage);
68
+ },
69
+ callbacks: config.callbacks,
70
+ runMetadata: config.runMetadata,
71
+ });
72
+ this.finalResponseHandler = new final_response_handler_1.FinalResponseHandler({
73
+ parseAndValidate: async (code, currentWorkflow) => await this.parseValidateHandler.parseAndValidate(code, currentWorkflow),
74
+ });
75
+ const searchTool = (0, code_builder_search_tool_1.createCodeBuilderSearchTool)(this.nodeTypeParser);
76
+ const getTool = (0, code_builder_get_tool_1.createCodeBuilderGetTool)({ nodeDefinitionDirs: config.nodeDefinitionDirs });
77
+ const suggestedNodesTool = (0, get_suggested_nodes_tool_1.createGetSuggestedNodesTool)(this.nodeTypeParser);
78
+ this.tools = [searchTool, getTool, suggestedNodesTool];
79
+ this.toolsMap = new Map(this.tools.map((t) => [t.name, t]));
80
+ this.chatSetupHandler = new chat_setup_handler_1.ChatSetupHandler({
81
+ llm: config.llm,
82
+ tools: this.tools,
83
+ enableTextEditorConfig: config.enableTextEditor,
84
+ parseAndValidate: async (code, currentWorkflow) => await this.parseValidateHandler.parseAndValidate(code, currentWorkflow),
85
+ getErrorContext: (code, errorMessage) => this.parseValidateHandler.getErrorContext(code, errorMessage),
86
+ nodeTypeParser: this.nodeTypeParser,
87
+ logger: this.logger,
88
+ });
89
+ this.toolDispatchHandler = new tool_dispatch_handler_1.ToolDispatchHandler({
90
+ toolsMap: this.toolsMap,
91
+ toolDisplayTitles: new Map([
92
+ [constants_1.CODE_BUILDER_SEARCH_NODES_TOOL.toolName, constants_1.CODE_BUILDER_SEARCH_NODES_TOOL.displayTitle],
93
+ [constants_1.CODE_BUILDER_GET_NODE_TYPES_TOOL.toolName, constants_1.CODE_BUILDER_GET_NODE_TYPES_TOOL.displayTitle],
94
+ [
95
+ constants_1.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL.toolName,
96
+ constants_1.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL.displayTitle,
97
+ ],
98
+ ]),
99
+ validateToolHandler: this.validateToolHandler,
100
+ });
101
+ }
102
+ resetAccumulatedTokens() {
103
+ this.accumulatedTokens = { inputTokens: 0, outputTokens: 0, thinkingTokens: 0 };
104
+ }
105
+ emitTelemetryEvent(params) {
106
+ if (!this.onTelemetryEvent) {
107
+ return;
108
+ }
109
+ const { userId, workflowId, userMessageId, sessionId, status, errorMessage, iterationCount, durationMs, beforeWorkflow, afterWorkflow, } = params;
110
+ const nodeChanges = (0, node_diff_1.calculateNodeChanges)(beforeWorkflow, afterWorkflow);
111
+ const properties = {
112
+ user_id: userId,
113
+ workflow_id: workflowId,
114
+ user_message_id: userMessageId,
115
+ session_id: sessionId,
116
+ status,
117
+ duration_ms: durationMs,
118
+ iteration_count: iterationCount,
119
+ input_tokens: this.accumulatedTokens.inputTokens,
120
+ output_tokens: this.accumulatedTokens.outputTokens,
121
+ thinking_tokens: this.accumulatedTokens.thinkingTokens,
122
+ nodes_added: nodeChanges.nodes_added,
123
+ nodes_removed: nodeChanges.nodes_removed,
124
+ nodes_modified: nodeChanges.nodes_modified,
125
+ };
126
+ if (errorMessage) {
127
+ properties.error_message = errorMessage;
128
+ }
129
+ this.onTelemetryEvent('Code builder agent ran', properties);
130
+ }
131
+ async *chat(payload, userId, abortSignal, historyContext) {
132
+ const startTime = Date.now();
133
+ this.resetAccumulatedTokens();
134
+ const beforeWorkflow = payload.workflowContext?.currentWorkflow;
135
+ const workflowId = beforeWorkflow?.id;
136
+ let iteration = 0;
137
+ try {
138
+ this.logger?.debug('Code builder agent starting', {
139
+ userId,
140
+ messageLength: payload.message.length,
141
+ });
142
+ const setupResult = await this.chatSetupHandler.execute({
143
+ payload,
144
+ historyContext,
145
+ });
146
+ const { llmWithTools, messages, textEditorEnabled, currentWorkflow, textEditorHandler, textEditorToolHandler, } = setupResult;
147
+ const loopResult = yield* this.runAgenticLoop({
148
+ llmWithTools,
149
+ messages,
150
+ textEditorEnabled,
151
+ currentWorkflow,
152
+ textEditorHandler,
153
+ textEditorToolHandler,
154
+ abortSignal,
155
+ payload,
156
+ previousMessages: historyContext?.conversationEntries.map(code_builder_session_1.entryToString) ?? [],
157
+ });
158
+ const { workflow } = loopResult;
159
+ iteration = loopResult.iteration;
160
+ if (workflow) {
161
+ this.logger?.info('Code builder agent generated workflow', {
162
+ userId,
163
+ nodeCount: workflow.nodes.length,
164
+ iterations: iteration,
165
+ });
166
+ yield {
167
+ messages: [
168
+ {
169
+ role: 'assistant',
170
+ type: 'workflow-updated',
171
+ codeSnippet: JSON.stringify(workflow, null, 2),
172
+ iterationCount: iteration,
173
+ },
174
+ ],
175
+ };
176
+ }
177
+ else {
178
+ this.logger?.info('Code builder agent generated EMPTY workflow', {
179
+ userId,
180
+ nodeCount: 0,
181
+ iterations: iteration,
182
+ });
183
+ }
184
+ yield {
185
+ messages: [
186
+ {
187
+ type: 'session-messages',
188
+ messages,
189
+ },
190
+ ],
191
+ };
192
+ const totalDuration = Date.now() - startTime;
193
+ this.emitTelemetryEvent({
194
+ userId,
195
+ workflowId,
196
+ userMessageId: payload.id,
197
+ status: 'success',
198
+ iterationCount: iteration,
199
+ durationMs: totalDuration,
200
+ beforeWorkflow,
201
+ afterWorkflow: workflow,
202
+ });
203
+ }
204
+ catch (error) {
205
+ const totalDuration = Date.now() - startTime;
206
+ const rawErrorMessage = error instanceof Error ? error.message : String(error);
207
+ const errorStack = error instanceof Error ? error.stack : undefined;
208
+ const userFacingMessage = (0, error_sanitizer_1.sanitizeLlmErrorMessage)(error);
209
+ this.logger?.error('Code builder agent failed', {
210
+ userId,
211
+ error: rawErrorMessage,
212
+ stack: errorStack,
213
+ });
214
+ yield {
215
+ messages: [
216
+ {
217
+ role: 'assistant',
218
+ type: 'message',
219
+ text: `I encountered an error while generating the workflow. ${userFacingMessage}`,
220
+ },
221
+ ],
222
+ };
223
+ const isAborted = error instanceof Error && (error.name === 'AbortError' || error.message === 'Aborted');
224
+ const status = isAborted ? 'aborted' : 'error';
225
+ this.emitTelemetryEvent({
226
+ userId,
227
+ workflowId,
228
+ userMessageId: payload.id,
229
+ status,
230
+ errorMessage: isAborted ? undefined : rawErrorMessage,
231
+ iterationCount: iteration,
232
+ durationMs: totalDuration,
233
+ beforeWorkflow,
234
+ afterWorkflow: null,
235
+ });
236
+ }
237
+ }
238
+ async *runAgenticLoop(params) {
239
+ const { llmWithTools, messages, textEditorEnabled, currentWorkflow, textEditorHandler, textEditorToolHandler, abortSignal, payload, previousMessages, } = params;
240
+ const state = {
241
+ iteration: 0,
242
+ consecutiveParseErrors: 0,
243
+ workflow: null,
244
+ parseDuration: 0,
245
+ sourceCode: null,
246
+ textEditorValidateAttempts: 0,
247
+ warningTracker: new warning_tracker_1.WarningTracker(),
248
+ outputTrace: [],
249
+ hasUnvalidatedEdits: false,
250
+ };
251
+ if (currentWorkflow) {
252
+ try {
253
+ const preExisting = this.parseValidateHandler.validateExistingWorkflow(currentWorkflow);
254
+ if (preExisting.length > 0) {
255
+ state.warningTracker.markAsPreExisting(preExisting);
256
+ }
257
+ }
258
+ catch {
259
+ }
260
+ }
261
+ const callbackManager = manager_1.CallbackManager.configure(this.iterationHandler.getCallbacks(), undefined, undefined, undefined, this.iterationHandler.getRunMetadata());
262
+ let parentRunManager;
263
+ if (callbackManager) {
264
+ const isFirstGeneration = !payload.workflowContext?.currentWorkflow?.nodes?.length;
265
+ const isFirstMessage = previousMessages.length === 0;
266
+ parentRunManager = await callbackManager.handleChainStart({ lc: 1, type: 'not_implemented', id: ['CodeBuilderAgent'] }, {
267
+ payload,
268
+ previousMessages,
269
+ }, undefined, undefined, undefined, {
270
+ ...this.iterationHandler.getRunMetadata(),
271
+ first_generation: isFirstGeneration,
272
+ first_message: isFirstMessage,
273
+ }, 'CodeBuilderAgentLoop');
274
+ }
275
+ try {
276
+ while (state.iteration < constants_1.MAX_AGENT_ITERATIONS) {
277
+ this.checkConsecutiveParseErrors(state.consecutiveParseErrors);
278
+ state.iteration++;
279
+ const childCallbacks = parentRunManager?.getChild(`iteration_${state.iteration}`);
280
+ const llmResult = yield* this.iterationHandler.invokeLlm({
281
+ llmWithTools,
282
+ messages,
283
+ abortSignal,
284
+ iteration: state.iteration,
285
+ callbacks: childCallbacks,
286
+ });
287
+ if (llmResult.textContent) {
288
+ state.outputTrace.push({ type: 'text', text: llmResult.textContent });
289
+ }
290
+ if (llmResult.hasToolCalls && llmResult.response.tool_calls) {
291
+ for (const toolCall of llmResult.response.tool_calls) {
292
+ state.outputTrace.push({ type: 'tool-call', toolName: toolCall.name });
293
+ }
294
+ }
295
+ const iterationResult = yield* this.processIteration({
296
+ llmResult,
297
+ messages,
298
+ currentWorkflow,
299
+ textEditorEnabled,
300
+ textEditorHandler,
301
+ textEditorToolHandler,
302
+ state,
303
+ });
304
+ if (iterationResult.shouldBreak) {
305
+ break;
306
+ }
307
+ }
308
+ await parentRunManager?.handleChainEnd({
309
+ iterations: state.iteration,
310
+ hasWorkflow: !!state.workflow,
311
+ outputTrace: state.outputTrace,
312
+ output: state.workflow
313
+ ? { code: state.sourceCode, workflow: JSON.stringify(state.workflow) }
314
+ : null,
315
+ });
316
+ }
317
+ catch (error) {
318
+ await parentRunManager?.handleChainError(error);
319
+ throw error;
320
+ }
321
+ return {
322
+ workflow: state.workflow,
323
+ parseDuration: state.parseDuration,
324
+ sourceCode: state.sourceCode,
325
+ iteration: state.iteration,
326
+ };
327
+ }
328
+ checkConsecutiveParseErrors(count) {
329
+ if (count >= 3) {
330
+ throw new Error('Failed to parse workflow code after 3 consecutive attempts.');
331
+ }
332
+ }
333
+ async *processIteration(params) {
334
+ const { llmResult, messages, currentWorkflow, textEditorEnabled, textEditorHandler, textEditorToolHandler, state, } = params;
335
+ const response = llmResult.response;
336
+ if (llmResult.hasToolCalls && response.tool_calls) {
337
+ return yield* this.handleToolCalls({
338
+ toolCalls: response.tool_calls,
339
+ messages,
340
+ currentWorkflow,
341
+ textEditorEnabled,
342
+ textEditorHandler,
343
+ textEditorToolHandler,
344
+ state,
345
+ });
346
+ }
347
+ if (textEditorEnabled && textEditorHandler) {
348
+ return yield* this.handleTextEditorAutoFinalize({
349
+ textEditorHandler,
350
+ currentWorkflow,
351
+ messages,
352
+ state,
353
+ });
354
+ }
355
+ return await this.handleFinalResponse({
356
+ response: llmResult.response,
357
+ currentWorkflow,
358
+ messages,
359
+ state,
360
+ });
361
+ }
362
+ async *handleToolCalls(params) {
363
+ const { toolCalls, messages, currentWorkflow, textEditorEnabled, textEditorHandler, textEditorToolHandler, state, } = params;
364
+ state.consecutiveParseErrors = 0;
365
+ const dispatchResult = yield* this.toolDispatchHandler.dispatch({
366
+ toolCalls,
367
+ messages,
368
+ currentWorkflow,
369
+ iteration: state.iteration,
370
+ textEditorHandler,
371
+ textEditorToolHandler,
372
+ warningTracker: state.warningTracker,
373
+ });
374
+ if (dispatchResult.hasUnvalidatedEdits !== undefined) {
375
+ state.hasUnvalidatedEdits = dispatchResult.hasUnvalidatedEdits;
376
+ }
377
+ if (dispatchResult.workflow) {
378
+ state.workflow = dispatchResult.workflow;
379
+ }
380
+ if (dispatchResult.parseDuration !== undefined) {
381
+ state.parseDuration = dispatchResult.parseDuration;
382
+ }
383
+ if (dispatchResult.workflowReady) {
384
+ state.sourceCode = dispatchResult.sourceCode ?? null;
385
+ state.textEditorValidateAttempts = 0;
386
+ return { shouldBreak: true };
387
+ }
388
+ const hadValidateCall = toolCalls.some((tc) => tc.name === 'validate_workflow');
389
+ if (hadValidateCall && !dispatchResult.workflowReady) {
390
+ state.textEditorValidateAttempts++;
391
+ }
392
+ if (textEditorEnabled && state.textEditorValidateAttempts >= constants_1.MAX_VALIDATE_ATTEMPTS) {
393
+ throw new Error(`Failed to generate valid workflow after ${constants_1.MAX_VALIDATE_ATTEMPTS} validate attempts.`);
394
+ }
395
+ return { shouldBreak: false };
396
+ }
397
+ async *handleTextEditorAutoFinalize(params) {
398
+ const { textEditorHandler, currentWorkflow, messages, state } = params;
399
+ const code = textEditorHandler.getWorkflowCode();
400
+ if (!code) {
401
+ return { shouldBreak: true };
402
+ }
403
+ if (!state.hasUnvalidatedEdits && code) {
404
+ if (state.workflow) {
405
+ state.sourceCode = code;
406
+ return { shouldBreak: true };
407
+ }
408
+ state.textEditorValidateAttempts++;
409
+ if (state.textEditorValidateAttempts >= constants_1.MAX_VALIDATE_ATTEMPTS) {
410
+ throw new Error(`Failed to generate valid workflow after ${constants_1.MAX_VALIDATE_ATTEMPTS} validate attempts.`);
411
+ }
412
+ (0, content_extractors_1.pushValidationFeedback)(messages, 'Please use the text editor to fix the validation errors.');
413
+ return { shouldBreak: false };
414
+ }
415
+ state.textEditorValidateAttempts++;
416
+ state.hasUnvalidatedEdits = false;
417
+ if (state.textEditorValidateAttempts >= constants_1.MAX_VALIDATE_ATTEMPTS) {
418
+ throw new Error(`Failed to generate valid workflow after ${constants_1.MAX_VALIDATE_ATTEMPTS} validate attempts.`);
419
+ }
420
+ const autoFinalizeResult = yield* this.autoFinalizeHandler.execute({
421
+ code,
422
+ currentWorkflow,
423
+ messages,
424
+ warningTracker: state.warningTracker,
425
+ });
426
+ if (autoFinalizeResult.success && autoFinalizeResult.workflow) {
427
+ state.workflow = autoFinalizeResult.workflow;
428
+ state.parseDuration = autoFinalizeResult.parseDuration ?? 0;
429
+ state.sourceCode = textEditorHandler.getWorkflowCode() ?? null;
430
+ state.textEditorValidateAttempts = 0;
431
+ return { shouldBreak: true };
432
+ }
433
+ if (autoFinalizeResult.parseDuration) {
434
+ state.parseDuration = autoFinalizeResult.parseDuration;
435
+ }
436
+ return { shouldBreak: false };
437
+ }
438
+ async handleFinalResponse(params) {
439
+ const { response, currentWorkflow, messages, state } = params;
440
+ const finalResult = await this.finalResponseHandler.process({
441
+ response,
442
+ currentWorkflow,
443
+ messages,
444
+ warningTracker: state.warningTracker,
445
+ });
446
+ if (finalResult.parseDuration !== undefined) {
447
+ state.parseDuration = finalResult.parseDuration;
448
+ }
449
+ if (finalResult.isParseError) {
450
+ state.consecutiveParseErrors++;
451
+ }
452
+ if (finalResult.success && finalResult.workflow) {
453
+ state.workflow = finalResult.workflow;
454
+ if (finalResult.sourceCode) {
455
+ state.sourceCode = finalResult.sourceCode;
456
+ }
457
+ return { shouldBreak: true };
458
+ }
459
+ return { shouldBreak: false };
460
+ }
461
+ }
462
+ exports.CodeBuilderAgent = CodeBuilderAgent;
463
+ //# sourceMappingURL=code-builder-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-builder-agent.js","sourceRoot":"","sources":["../../src/code-builder/code-builder-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { Callbacks } from '@langchain/core/callbacks/manager';
2
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
3
+ import type { MemorySaver } from '@langchain/langgraph';
4
+ import type { Logger } from '@n8n/backend-common';
5
+ import type { INodeTypeDescription, ITelemetryTrackProperties } from 'n8n-workflow';
6
+ import type { StreamOutput } from '../types/streaming';
7
+ import type { ChatPayload } from '../workflow-builder-agent';
8
+ import type { TokenUsage } from './types';
9
+ export type { TokenUsage };
10
+ export interface CodeWorkflowBuilderConfig {
11
+ llm: BaseChatModel;
12
+ nodeTypes: INodeTypeDescription[];
13
+ logger?: Logger;
14
+ nodeDefinitionDirs?: string[];
15
+ checkpointer?: MemorySaver;
16
+ onGenerationSuccess?: () => Promise<void>;
17
+ onTokenUsage?: (usage: TokenUsage) => void;
18
+ callbacks?: Callbacks;
19
+ runMetadata?: Record<string, unknown>;
20
+ onTelemetryEvent?: (event: string, properties: ITelemetryTrackProperties) => void;
21
+ generatePinData?: boolean;
22
+ }
23
+ export declare class CodeWorkflowBuilder {
24
+ private codeBuilderAgent;
25
+ private logger?;
26
+ private sessionChatHandler?;
27
+ private onGenerationSuccess?;
28
+ constructor(config: CodeWorkflowBuilderConfig);
29
+ chat(payload: ChatPayload, userId: string, abortSignal?: AbortSignal): AsyncGenerator<StreamOutput, void, unknown>;
30
+ }
31
+ export declare function createCodeWorkflowBuilder(llm: BaseChatModel, nodeTypes: INodeTypeDescription[], options?: {
32
+ logger?: Logger;
33
+ nodeDefinitionDirs?: string[];
34
+ }): CodeWorkflowBuilder;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeWorkflowBuilder = void 0;
4
+ exports.createCodeWorkflowBuilder = createCodeWorkflowBuilder;
5
+ const code_builder_agent_1 = require("./code-builder-agent");
6
+ const session_chat_handler_1 = require("./handlers/session-chat-handler");
7
+ class CodeWorkflowBuilder {
8
+ codeBuilderAgent;
9
+ logger;
10
+ sessionChatHandler;
11
+ onGenerationSuccess;
12
+ constructor(config) {
13
+ this.codeBuilderAgent = new code_builder_agent_1.CodeBuilderAgent({
14
+ llm: config.llm,
15
+ nodeTypes: config.nodeTypes,
16
+ logger: config.logger,
17
+ nodeDefinitionDirs: config.nodeDefinitionDirs,
18
+ enableTextEditor: true,
19
+ onTokenUsage: config.onTokenUsage,
20
+ callbacks: config.callbacks,
21
+ runMetadata: config.runMetadata,
22
+ onTelemetryEvent: config.onTelemetryEvent,
23
+ generatePinData: config.generatePinData,
24
+ });
25
+ this.logger = config.logger;
26
+ this.onGenerationSuccess = config.onGenerationSuccess;
27
+ if (config.checkpointer) {
28
+ this.sessionChatHandler = new session_chat_handler_1.SessionChatHandler({
29
+ checkpointer: config.checkpointer,
30
+ llm: config.llm,
31
+ logger: config.logger,
32
+ onGenerationSuccess: config.onGenerationSuccess,
33
+ });
34
+ }
35
+ }
36
+ async *chat(payload, userId, abortSignal) {
37
+ const workflowId = payload.workflowContext?.currentWorkflow?.id;
38
+ this.logger?.debug('CodeWorkflowBuilder starting', {
39
+ userId,
40
+ workflowId,
41
+ messageLength: payload.message.length,
42
+ hasSessionHandler: !!this.sessionChatHandler,
43
+ });
44
+ if (this.sessionChatHandler) {
45
+ yield* this.sessionChatHandler.execute({
46
+ payload,
47
+ userId,
48
+ abortSignal,
49
+ agentChat: (p, u, s, h) => this.codeBuilderAgent.chat(p, u, s, h),
50
+ });
51
+ }
52
+ else {
53
+ let generationSucceeded = false;
54
+ for await (const chunk of this.codeBuilderAgent.chat(payload, userId, abortSignal)) {
55
+ if (chunk.messages?.some((msg) => msg.type === 'workflow-updated')) {
56
+ generationSucceeded = true;
57
+ }
58
+ yield chunk;
59
+ }
60
+ if (generationSucceeded && this.onGenerationSuccess) {
61
+ try {
62
+ await this.onGenerationSuccess();
63
+ }
64
+ catch (error) {
65
+ this.logger?.warn('Failed to execute onGenerationSuccess callback', { error });
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ exports.CodeWorkflowBuilder = CodeWorkflowBuilder;
72
+ function createCodeWorkflowBuilder(llm, nodeTypes, options) {
73
+ return new CodeWorkflowBuilder({
74
+ llm,
75
+ nodeTypes,
76
+ logger: options?.logger,
77
+ nodeDefinitionDirs: options?.nodeDefinitionDirs,
78
+ });
79
+ }
80
+ //# sourceMappingURL=code-workflow-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-workflow-builder.js","sourceRoot":"","sources":["../../src/code-builder/code-workflow-builder.ts"],"names":[],"mappings":";;;AA8KA,8DAcC;AArKD,6DAAwD;AACxD,0EAAqE;AA4DrE,MAAa,mBAAmB;IACvB,gBAAgB,CAAmB;IACnC,MAAM,CAAU;IAChB,kBAAkB,CAAsB;IACxC,mBAAmB,CAAuB;IAElD,YAAY,MAAiC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,qCAAgB,CAAC;YAC5C,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,eAAe,EAAE,MAAM,CAAC,eAAe;SACvC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAGtD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,yCAAkB,CAAC;gBAChD,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;aAC/C,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAUD,KAAK,CAAC,CAAC,IAAI,CACV,OAAoB,EACpB,MAAc,EACd,WAAyB;QAEzB,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,CAAC;QAEhE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,8BAA8B,EAAE;YAClD,MAAM;YACN,UAAU;YACV,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YACrC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAC;QAGH,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBACtC,OAAO;gBACP,MAAM;gBACN,WAAW;gBACX,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aACjE,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YAEP,IAAI,mBAAmB,GAAG,KAAK,CAAC;YAEhC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;gBAEpF,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,kBAAkB,CAAC,EAAE,CAAC;oBACpE,mBAAmB,GAAG,IAAI,CAAC;gBAC5B,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;YAED,IAAI,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACrD,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChF,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;CACD;AArFD,kDAqFC;AAKD,SAAgB,yBAAyB,CACxC,GAAkB,EAClB,SAAiC,EACjC,OAGC;IAED,OAAO,IAAI,mBAAmB,CAAC;QAC9B,GAAG;QACH,SAAS;QACT,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;KAC/C,CAAC,CAAC;AACJ,CAAC"}