@n8n/ai-workflow-builder 1.8.1 → 1.10.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 (224) 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.d.ts +8 -5
  8. package/dist/agents/supervisor.agent.js +37 -21
  9. package/dist/agents/supervisor.agent.js.map +1 -1
  10. package/dist/ai-workflow-builder-agent.service.d.ts +12 -4
  11. package/dist/ai-workflow-builder-agent.service.js +102 -51
  12. package/dist/ai-workflow-builder-agent.service.js.map +1 -1
  13. package/dist/assistant/assistant-handler.d.ts +23 -0
  14. package/dist/assistant/assistant-handler.js +265 -0
  15. package/dist/assistant/assistant-handler.js.map +1 -0
  16. package/dist/assistant/index.d.ts +2 -0
  17. package/dist/assistant/index.js +6 -0
  18. package/dist/assistant/index.js.map +1 -0
  19. package/dist/assistant/types.d.ts +83 -0
  20. package/dist/assistant/types.js +3 -0
  21. package/dist/assistant/types.js.map +1 -0
  22. package/dist/build.tsbuildinfo +1 -1
  23. package/dist/code-builder/code-builder-agent.d.ts +31 -0
  24. package/dist/code-builder/code-builder-agent.js +463 -0
  25. package/dist/code-builder/code-builder-agent.js.map +1 -0
  26. package/dist/code-builder/code-workflow-builder.d.ts +34 -0
  27. package/dist/code-builder/code-workflow-builder.js +80 -0
  28. package/dist/code-builder/code-workflow-builder.js.map +1 -0
  29. package/dist/code-builder/constants.d.ts +62 -0
  30. package/dist/code-builder/constants.js +83 -0
  31. package/dist/code-builder/constants.js.map +1 -0
  32. package/dist/code-builder/engines/code-builder-node-search-engine.d.ts +19 -0
  33. package/dist/code-builder/engines/code-builder-node-search-engine.js +236 -0
  34. package/dist/code-builder/engines/code-builder-node-search-engine.js.map +1 -0
  35. package/dist/code-builder/handlers/agent-iteration-handler.d.ts +36 -0
  36. package/dist/code-builder/handlers/agent-iteration-handler.js +78 -0
  37. package/dist/code-builder/handlers/agent-iteration-handler.js.map +1 -0
  38. package/dist/code-builder/handlers/auto-finalize-handler.d.ts +29 -0
  39. package/dist/code-builder/handlers/auto-finalize-handler.js +50 -0
  40. package/dist/code-builder/handlers/auto-finalize-handler.js.map +1 -0
  41. package/dist/code-builder/handlers/chat-setup-handler.d.ts +57 -0
  42. package/dist/code-builder/handlers/chat-setup-handler.js +147 -0
  43. package/dist/code-builder/handlers/chat-setup-handler.js.map +1 -0
  44. package/dist/code-builder/handlers/final-response-handler.d.ts +29 -0
  45. package/dist/code-builder/handlers/final-response-handler.js +75 -0
  46. package/dist/code-builder/handlers/final-response-handler.js.map +1 -0
  47. package/dist/code-builder/handlers/parse-validate-handler.d.ts +17 -0
  48. package/dist/code-builder/handlers/parse-validate-handler.js +116 -0
  49. package/dist/code-builder/handlers/parse-validate-handler.js.map +1 -0
  50. package/dist/code-builder/handlers/session-chat-handler.d.ts +30 -0
  51. package/dist/code-builder/handlers/session-chat-handler.js +96 -0
  52. package/dist/code-builder/handlers/session-chat-handler.js.map +1 -0
  53. package/dist/code-builder/handlers/text-editor-handler.d.ts +19 -0
  54. package/dist/code-builder/handlers/text-editor-handler.js +230 -0
  55. package/dist/code-builder/handlers/text-editor-handler.js.map +1 -0
  56. package/dist/code-builder/handlers/text-editor-tool-handler.d.ts +44 -0
  57. package/dist/code-builder/handlers/text-editor-tool-handler.js +145 -0
  58. package/dist/code-builder/handlers/text-editor-tool-handler.js.map +1 -0
  59. package/dist/code-builder/handlers/text-editor.types.d.ts +68 -0
  60. package/dist/code-builder/handlers/text-editor.types.js +68 -0
  61. package/dist/code-builder/handlers/text-editor.types.js.map +1 -0
  62. package/dist/code-builder/handlers/tool-dispatch-handler.d.ts +47 -0
  63. package/dist/code-builder/handlers/tool-dispatch-handler.js +287 -0
  64. package/dist/code-builder/handlers/tool-dispatch-handler.js.map +1 -0
  65. package/dist/code-builder/handlers/validate-tool-handler.d.ts +33 -0
  66. package/dist/code-builder/handlers/validate-tool-handler.js +101 -0
  67. package/dist/code-builder/handlers/validate-tool-handler.js.map +1 -0
  68. package/dist/code-builder/index.d.ts +5 -0
  69. package/dist/code-builder/index.js +10 -0
  70. package/dist/code-builder/index.js.map +1 -0
  71. package/dist/code-builder/prompts/index.d.ts +22 -0
  72. package/dist/code-builder/prompts/index.js +830 -0
  73. package/dist/code-builder/prompts/index.js.map +1 -0
  74. package/dist/code-builder/state/warning-tracker.d.ts +9 -0
  75. package/dist/code-builder/state/warning-tracker.js +28 -0
  76. package/dist/code-builder/state/warning-tracker.js.map +1 -0
  77. package/dist/code-builder/tools/ask-assistant.tool.d.ts +12 -0
  78. package/dist/code-builder/tools/ask-assistant.tool.js +16 -0
  79. package/dist/code-builder/tools/ask-assistant.tool.js.map +1 -0
  80. package/dist/code-builder/tools/build-workflow.tool.d.ts +12 -0
  81. package/dist/code-builder/tools/build-workflow.tool.js +16 -0
  82. package/dist/code-builder/tools/build-workflow.tool.js.map +1 -0
  83. package/dist/code-builder/tools/code-builder-get.tool.d.ts +61 -0
  84. package/dist/code-builder/tools/code-builder-get.tool.js +399 -0
  85. package/dist/code-builder/tools/code-builder-get.tool.js.map +1 -0
  86. package/dist/code-builder/tools/code-builder-search.tool.d.ts +15 -0
  87. package/dist/code-builder/tools/code-builder-search.tool.js +338 -0
  88. package/dist/code-builder/tools/code-builder-search.tool.js.map +1 -0
  89. package/dist/code-builder/tools/get-suggested-nodes.tool.d.ts +14 -0
  90. package/dist/code-builder/tools/get-suggested-nodes.tool.js +89 -0
  91. package/dist/code-builder/tools/get-suggested-nodes.tool.js.map +1 -0
  92. package/dist/code-builder/tools/suggested-nodes-data.d.ts +11 -0
  93. package/dist/code-builder/tools/suggested-nodes-data.js +236 -0
  94. package/dist/code-builder/tools/suggested-nodes-data.js.map +1 -0
  95. package/dist/code-builder/triage.agent.d.ts +48 -0
  96. package/dist/code-builder/triage.agent.js +253 -0
  97. package/dist/code-builder/triage.agent.js.map +1 -0
  98. package/dist/code-builder/types.d.ts +51 -0
  99. package/dist/code-builder/types.js +3 -0
  100. package/dist/code-builder/types.js.map +1 -0
  101. package/dist/code-builder/utils/code-builder-session.d.ts +25 -0
  102. package/dist/code-builder/utils/code-builder-session.js +186 -0
  103. package/dist/code-builder/utils/code-builder-session.js.map +1 -0
  104. package/dist/code-builder/utils/content-extractors.d.ts +5 -0
  105. package/dist/code-builder/utils/content-extractors.js +88 -0
  106. package/dist/code-builder/utils/content-extractors.js.map +1 -0
  107. package/dist/code-builder/utils/discriminator-utils.d.ts +22 -0
  108. package/dist/code-builder/utils/discriminator-utils.js +85 -0
  109. package/dist/code-builder/utils/discriminator-utils.js.map +1 -0
  110. package/dist/code-builder/utils/extract-code.d.ts +3 -0
  111. package/dist/code-builder/utils/extract-code.js +23 -0
  112. package/dist/code-builder/utils/extract-code.js.map +1 -0
  113. package/dist/code-builder/utils/format-warnings.d.ts +3 -0
  114. package/dist/code-builder/utils/format-warnings.js +12 -0
  115. package/dist/code-builder/utils/format-warnings.js.map +1 -0
  116. package/dist/code-builder/utils/llm-response-processor.d.ts +15 -0
  117. package/dist/code-builder/utils/llm-response-processor.js +38 -0
  118. package/dist/code-builder/utils/llm-response-processor.js.map +1 -0
  119. package/dist/code-builder/utils/node-diff.d.ts +13 -0
  120. package/dist/code-builder/utils/node-diff.js +22 -0
  121. package/dist/code-builder/utils/node-diff.js.map +1 -0
  122. package/dist/code-builder/utils/node-type-parser.d.ts +18 -0
  123. package/dist/code-builder/utils/node-type-parser.js +67 -0
  124. package/dist/code-builder/utils/node-type-parser.js.map +1 -0
  125. package/dist/constants.d.ts +3 -0
  126. package/dist/constants.js +4 -1
  127. package/dist/constants.js.map +1 -1
  128. package/dist/index.d.ts +5 -1
  129. package/dist/index.js +8 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/llm-config.js +1 -1
  132. package/dist/llm-config.js.map +1 -1
  133. package/dist/multi-agent-workflow-subgraphs.d.ts +103 -12
  134. package/dist/multi-agent-workflow-subgraphs.js +158 -51
  135. package/dist/multi-agent-workflow-subgraphs.js.map +1 -1
  136. package/dist/parent-graph-state.d.ts +9 -0
  137. package/dist/parent-graph-state.js +8 -0
  138. package/dist/parent-graph-state.js.map +1 -1
  139. package/dist/prompts/agents/builder.prompt.d.ts +1 -0
  140. package/dist/prompts/agents/builder.prompt.js +86 -4
  141. package/dist/prompts/agents/builder.prompt.js.map +1 -1
  142. package/dist/prompts/agents/planner.prompt.d.ts +1 -0
  143. package/dist/prompts/agents/planner.prompt.js +2 -1
  144. package/dist/prompts/agents/planner.prompt.js.map +1 -1
  145. package/dist/prompts/agents/responder.prompt.d.ts +4 -1
  146. package/dist/prompts/agents/responder.prompt.js +72 -1
  147. package/dist/prompts/agents/responder.prompt.js.map +1 -1
  148. package/dist/prompts/agents/supervisor.prompt.d.ts +3 -1
  149. package/dist/prompts/agents/supervisor.prompt.js +133 -13
  150. package/dist/prompts/agents/supervisor.prompt.js.map +1 -1
  151. package/dist/prompts/builder/prompt-builder.js +13 -5
  152. package/dist/prompts/builder/prompt-builder.js.map +1 -1
  153. package/dist/prompts/builder/types.d.ts +2 -1
  154. package/dist/prompts/shared/deictic-resolution.d.ts +14 -0
  155. package/dist/prompts/shared/deictic-resolution.js +142 -0
  156. package/dist/prompts/shared/deictic-resolution.js.map +1 -0
  157. package/dist/session-manager.service.d.ts +15 -5
  158. package/dist/session-manager.service.js +265 -74
  159. package/dist/session-manager.service.js.map +1 -1
  160. package/dist/subgraphs/builder.subgraph.d.ts +29 -0
  161. package/dist/subgraphs/builder.subgraph.js +32 -6
  162. package/dist/subgraphs/builder.subgraph.js.map +1 -1
  163. package/dist/subgraphs/discovery.subgraph.d.ts +8 -0
  164. package/dist/subgraphs/discovery.subgraph.js +23 -0
  165. package/dist/subgraphs/discovery.subgraph.js.map +1 -1
  166. package/dist/tools/add-node.tool.d.ts +4 -4
  167. package/dist/tools/builder-tools.js +6 -1
  168. package/dist/tools/builder-tools.js.map +1 -1
  169. package/dist/tools/introspect.tool.d.ts +34 -0
  170. package/dist/tools/introspect.tool.js +125 -0
  171. package/dist/tools/introspect.tool.js.map +1 -0
  172. package/dist/tools/submit-questions.tool.d.ts +8 -8
  173. package/dist/types/coordination.d.ts +8 -2
  174. package/dist/types/coordination.js +5 -0
  175. package/dist/types/coordination.js.map +1 -1
  176. package/dist/types/index.d.ts +2 -0
  177. package/dist/types/index.js +1 -0
  178. package/dist/types/index.js.map +1 -1
  179. package/dist/types/session-storage.d.ts +11 -0
  180. package/dist/types/session-storage.js +3 -0
  181. package/dist/types/session-storage.js.map +1 -0
  182. package/dist/types/streaming.d.ts +20 -1
  183. package/dist/utils/cache-control/helpers.d.ts +6 -0
  184. package/dist/utils/cache-control/helpers.js +42 -22
  185. package/dist/utils/cache-control/helpers.js.map +1 -1
  186. package/dist/utils/cache-control/index.d.ts +1 -1
  187. package/dist/utils/cache-control/index.js +3 -1
  188. package/dist/utils/cache-control/index.js.map +1 -1
  189. package/dist/utils/context-builders.d.ts +2 -0
  190. package/dist/utils/context-builders.js +57 -0
  191. package/dist/utils/context-builders.js.map +1 -1
  192. package/dist/utils/coordination-log.d.ts +5 -2
  193. package/dist/utils/coordination-log.js +14 -0
  194. package/dist/utils/coordination-log.js.map +1 -1
  195. package/dist/utils/error-sanitizer.d.ts +1 -0
  196. package/dist/utils/error-sanitizer.js +39 -0
  197. package/dist/utils/error-sanitizer.js.map +1 -0
  198. package/dist/utils/resource-operation-extractor.d.ts +12 -2
  199. package/dist/utils/resource-operation-extractor.js +12 -4
  200. package/dist/utils/resource-operation-extractor.js.map +1 -1
  201. package/dist/utils/state-modifier.d.ts +1 -1
  202. package/dist/utils/state-modifier.js +15 -19
  203. package/dist/utils/state-modifier.js.map +1 -1
  204. package/dist/utils/stream-processor.js +29 -8
  205. package/dist/utils/stream-processor.js.map +1 -1
  206. package/dist/utils/subgraph-helpers.d.ts +2 -0
  207. package/dist/utils/subgraph-helpers.js +34 -1
  208. package/dist/utils/subgraph-helpers.js.map +1 -1
  209. package/dist/utils/thread-id.d.ts +1 -0
  210. package/dist/utils/thread-id.js +10 -0
  211. package/dist/utils/thread-id.js.map +1 -0
  212. package/dist/utils/token-usage-tracking-handler.d.ts +14 -0
  213. package/dist/utils/token-usage-tracking-handler.js +55 -0
  214. package/dist/utils/token-usage-tracking-handler.js.map +1 -0
  215. package/dist/validation/types.d.ts +3 -1
  216. package/dist/validation/types.js +11 -0
  217. package/dist/validation/types.js.map +1 -1
  218. package/dist/validation/utils/expressions.js +1 -1
  219. package/dist/validation/utils/expressions.js.map +1 -1
  220. package/dist/workflow-builder-agent.d.ts +29 -4
  221. package/dist/workflow-builder-agent.js +162 -5
  222. package/dist/workflow-builder-agent.js.map +1 -1
  223. package/dist/workflow-state.d.ts +6 -0
  224. package/package.json +10 -6
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextEditorHandler = void 0;
4
+ exports.formatCodeWithLineNumbers = formatCodeWithLineNumbers;
5
+ exports.findDivergenceContext = findDivergenceContext;
6
+ const text_editor_types_1 = require("./text-editor.types");
7
+ const WORKFLOW_FILE_PATH = '/workflow.js';
8
+ const PREVIEW_MAX_LENGTH = 80;
9
+ function truncatePreview(str) {
10
+ if (str.length <= PREVIEW_MAX_LENGTH)
11
+ return str;
12
+ return str.slice(0, PREVIEW_MAX_LENGTH) + '...';
13
+ }
14
+ function formatCodeWithLineNumbers(code) {
15
+ const lines = code.split('\n');
16
+ return lines.map((line, i) => `${i + 1}: ${line}`).join('\n');
17
+ }
18
+ const MIN_PREFIX_LENGTH = 10;
19
+ const CONTEXT_LINES = 3;
20
+ const OLD_STR_CONTEXT_LENGTH = 40;
21
+ function escapeWhitespace(str) {
22
+ return str.replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r');
23
+ }
24
+ function findDivergenceContext(code, searchStr) {
25
+ let lo = 0;
26
+ let hi = searchStr.length;
27
+ while (lo < hi) {
28
+ const mid = Math.ceil((lo + hi) / 2);
29
+ if (code.includes(searchStr.substring(0, mid))) {
30
+ lo = mid;
31
+ }
32
+ else {
33
+ hi = mid - 1;
34
+ }
35
+ }
36
+ const matchLength = lo;
37
+ if (matchLength < MIN_PREFIX_LENGTH)
38
+ return undefined;
39
+ const matchPos = code.indexOf(searchStr.substring(0, matchLength));
40
+ const divergePos = matchPos + matchLength;
41
+ const percentage = Math.round((matchLength / searchStr.length) * 100);
42
+ const codeUpToDiverge = code.substring(0, divergePos);
43
+ const divergeLine = codeUpToDiverge.split('\n').length;
44
+ const oldStrRemainder = searchStr.substring(matchLength, matchLength + OLD_STR_CONTEXT_LENGTH);
45
+ const oldStrPrefix = searchStr.substring(Math.max(0, matchLength - 20), matchLength);
46
+ const codeLines = code.split('\n');
47
+ const startLine = Math.max(0, divergeLine - CONTEXT_LINES);
48
+ const endLine = Math.min(codeLines.length, divergeLine + 1);
49
+ const fileContext = codeLines
50
+ .slice(startLine, endLine)
51
+ .map((line, i) => ` ${startLine + i + 1}: ${line}`)
52
+ .join('\n');
53
+ return (`Closest match (${percentage}% of old_str matched, diverges at line ${divergeLine}):\n` +
54
+ ` old_str: ...${escapeWhitespace(oldStrPrefix)}>>> ${escapeWhitespace(oldStrRemainder)}\n` +
55
+ ` file:\n${fileContext}`);
56
+ }
57
+ class TextEditorHandler {
58
+ code = null;
59
+ constructor() { }
60
+ execute(command) {
61
+ if (command.command === 'create' && command.path !== WORKFLOW_FILE_PATH) {
62
+ throw new Error('Cannot create multiple workflows. You can only extend the existing workflow at /workflow.js.');
63
+ }
64
+ this.validatePath(command.path);
65
+ let result;
66
+ switch (command.command) {
67
+ case 'view':
68
+ result = this.handleView(command);
69
+ break;
70
+ case 'create':
71
+ result = this.handleCreate(command);
72
+ break;
73
+ case 'str_replace':
74
+ result = this.handleStrReplace(command);
75
+ break;
76
+ case 'insert':
77
+ result = this.handleInsert(command);
78
+ break;
79
+ default:
80
+ result = `Unknown command: ${command.command}`;
81
+ }
82
+ return result;
83
+ }
84
+ validatePath(path) {
85
+ if (path !== WORKFLOW_FILE_PATH) {
86
+ throw new text_editor_types_1.InvalidPathError(path);
87
+ }
88
+ }
89
+ handleView(command) {
90
+ if (!this.code) {
91
+ throw new text_editor_types_1.FileNotFoundError();
92
+ }
93
+ const lines = this.code.split('\n');
94
+ if (command.view_range) {
95
+ const [start, rawEnd] = command.view_range;
96
+ const end = rawEnd === -1 ? lines.length : rawEnd;
97
+ if (start < 1 || start > lines.length) {
98
+ throw new text_editor_types_1.InvalidLineNumberError(start, lines.length);
99
+ }
100
+ if (end < start) {
101
+ throw new text_editor_types_1.InvalidViewRangeError(start, end, lines.length);
102
+ }
103
+ const startIdx = start - 1;
104
+ const endIdx = Math.min(end, lines.length);
105
+ const selectedLines = lines.slice(startIdx, endIdx);
106
+ return selectedLines.map((line, i) => `${startIdx + i + 1}: ${line}`).join('\n');
107
+ }
108
+ return formatCodeWithLineNumbers(this.code);
109
+ }
110
+ handleCreate(command) {
111
+ this.code = command.file_text;
112
+ return 'File created successfully.';
113
+ }
114
+ handleStrReplace(command) {
115
+ if (this.code === null) {
116
+ throw new text_editor_types_1.FileNotFoundError();
117
+ }
118
+ const { old_str, new_str } = command;
119
+ const count = this.countOccurrences(this.code, old_str);
120
+ if (count === 0) {
121
+ const normalized = old_str.endsWith('\n') ? old_str.slice(0, -1) : old_str + '\n';
122
+ const normalizedCount = this.countOccurrences(this.code, normalized);
123
+ if (normalizedCount === 1) {
124
+ const escapedNew = new_str.replace(/\$/g, '$$$$');
125
+ this.code = this.code.replace(normalized, escapedNew);
126
+ return 'Edit applied successfully.';
127
+ }
128
+ const context = findDivergenceContext(this.code, old_str);
129
+ throw new text_editor_types_1.NoMatchFoundError(old_str, context);
130
+ }
131
+ if (count > 1) {
132
+ throw new text_editor_types_1.MultipleMatchesError(count);
133
+ }
134
+ const escapedNewStr = new_str.replace(/\$/g, '$$$$');
135
+ this.code = this.code.replace(old_str, escapedNewStr);
136
+ return 'Edit applied successfully.';
137
+ }
138
+ handleInsert(command) {
139
+ if (this.code === null) {
140
+ throw new text_editor_types_1.FileNotFoundError();
141
+ }
142
+ const { insert_line, insert_text } = command;
143
+ const lines = this.code.split('\n');
144
+ if (insert_line < 0 || insert_line > lines.length) {
145
+ throw new text_editor_types_1.InvalidLineNumberError(insert_line, lines.length);
146
+ }
147
+ lines.splice(insert_line, 0, insert_text);
148
+ this.code = lines.join('\n');
149
+ return 'Text inserted successfully.';
150
+ }
151
+ countOccurrences(text, search) {
152
+ if (search.length === 0) {
153
+ return 0;
154
+ }
155
+ let count = 0;
156
+ let pos = 0;
157
+ while ((pos = text.indexOf(search, pos)) !== -1) {
158
+ count++;
159
+ pos += search.length;
160
+ }
161
+ return count;
162
+ }
163
+ executeBatch(replacements) {
164
+ if (this.code === null) {
165
+ throw new text_editor_types_1.FileNotFoundError();
166
+ }
167
+ if (replacements.length === 0) {
168
+ return 'No replacements to apply.';
169
+ }
170
+ const snapshot = this.code;
171
+ const results = [];
172
+ for (let i = 0; i < replacements.length; i++) {
173
+ const { old_str, new_str } = replacements[i];
174
+ const preview = truncatePreview(old_str);
175
+ const count = this.countOccurrences(this.code, old_str);
176
+ if (count === 0) {
177
+ this.code = snapshot;
178
+ results.push({
179
+ index: i,
180
+ old_str: preview,
181
+ status: 'failed',
182
+ error: new text_editor_types_1.NoMatchFoundError(old_str).message,
183
+ });
184
+ for (let j = i + 1; j < replacements.length; j++) {
185
+ results.push({
186
+ index: j,
187
+ old_str: truncatePreview(replacements[j].old_str),
188
+ status: 'not_attempted',
189
+ });
190
+ }
191
+ return results;
192
+ }
193
+ if (count > 1) {
194
+ this.code = snapshot;
195
+ results.push({
196
+ index: i,
197
+ old_str: preview,
198
+ status: 'failed',
199
+ error: new text_editor_types_1.MultipleMatchesError(count).message,
200
+ });
201
+ for (let j = i + 1; j < replacements.length; j++) {
202
+ results.push({
203
+ index: j,
204
+ old_str: truncatePreview(replacements[j].old_str),
205
+ status: 'not_attempted',
206
+ });
207
+ }
208
+ return results;
209
+ }
210
+ const escapedNewStr = new_str.replace(/\$/g, '$$$$');
211
+ this.code = this.code.replace(old_str, escapedNewStr);
212
+ results.push({ index: i, old_str: preview, status: 'success' });
213
+ }
214
+ return `All ${replacements.length} replacements applied successfully.`;
215
+ }
216
+ getWorkflowCode() {
217
+ return this.code;
218
+ }
219
+ setWorkflowCode(code) {
220
+ this.code = code;
221
+ }
222
+ hasWorkflowCode() {
223
+ return this.code !== null;
224
+ }
225
+ clearWorkflowCode() {
226
+ this.code = null;
227
+ }
228
+ }
229
+ exports.TextEditorHandler = TextEditorHandler;
230
+ //# sourceMappingURL=text-editor-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-editor-handler.js","sourceRoot":"","sources":["../../../src/code-builder/handlers/text-editor-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { BaseMessage } from '@langchain/core/messages';
2
+ import type { WorkflowJSON } from '@n8n/workflow-sdk';
3
+ import type { StreamOutput } from '../../types/streaming';
4
+ import type { WarningTracker } from '../state/warning-tracker';
5
+ import type { ParseAndValidateResult } from '../types';
6
+ type TextEditorExecuteFn = (args: Record<string, unknown>) => string;
7
+ type TextEditorGetCodeFn = () => string | null;
8
+ type ParseAndValidateFn = (code: string, currentWorkflow?: WorkflowJSON) => Promise<ParseAndValidateResult>;
9
+ type GetErrorContextFn = (code: string, errorMessage: string) => string;
10
+ export interface TextEditorToolHandlerConfig {
11
+ textEditorExecute: TextEditorExecuteFn;
12
+ textEditorGetCode: TextEditorGetCodeFn;
13
+ parseAndValidate: ParseAndValidateFn;
14
+ getErrorContext: GetErrorContextFn;
15
+ }
16
+ export interface TextEditorToolParams {
17
+ toolCallId: string;
18
+ args: Record<string, unknown>;
19
+ currentWorkflow: WorkflowJSON | undefined;
20
+ iteration: number;
21
+ messages: BaseMessage[];
22
+ warningTracker?: WarningTracker;
23
+ }
24
+ export interface TextEditorToolResult {
25
+ workflowReady?: boolean;
26
+ workflow?: WorkflowJSON;
27
+ }
28
+ export interface PreviewParseResult {
29
+ chunk?: StreamOutput;
30
+ parseError?: string;
31
+ }
32
+ export declare class TextEditorToolHandler {
33
+ private textEditorExecute;
34
+ private textEditorGetCode;
35
+ private parseAndValidate;
36
+ private getErrorContext;
37
+ constructor(config: TextEditorToolHandlerConfig);
38
+ execute(params: TextEditorToolParams): AsyncGenerator<StreamOutput, TextEditorToolResult | undefined, unknown>;
39
+ private autoValidateAfterCreate;
40
+ tryParseForPreview(currentWorkflow?: WorkflowJSON): Promise<PreviewParseResult>;
41
+ private createToolProgressChunk;
42
+ private createWorkflowUpdateChunk;
43
+ }
44
+ export {};
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextEditorToolHandler = void 0;
4
+ const messages_1 = require("@langchain/core/messages");
5
+ const constants_1 = require("../constants");
6
+ const format_warnings_1 = require("../utils/format-warnings");
7
+ class TextEditorToolHandler {
8
+ textEditorExecute;
9
+ textEditorGetCode;
10
+ parseAndValidate;
11
+ getErrorContext;
12
+ constructor(config) {
13
+ this.textEditorExecute = config.textEditorExecute;
14
+ this.textEditorGetCode = config.textEditorGetCode;
15
+ this.parseAndValidate = config.parseAndValidate;
16
+ this.getErrorContext = config.getErrorContext;
17
+ }
18
+ async *execute(params) {
19
+ const { toolCallId, args, currentWorkflow, iteration, messages, warningTracker } = params;
20
+ const command = args.command;
21
+ yield this.createToolProgressChunk('running', command, toolCallId);
22
+ try {
23
+ const result = this.textEditorExecute(args);
24
+ if (command === 'create') {
25
+ const autoValidateResult = await this.autoValidateAfterCreate(toolCallId, result, currentWorkflow, iteration, messages, warningTracker);
26
+ if (autoValidateResult.workflow) {
27
+ yield this.createWorkflowUpdateChunk(autoValidateResult.workflow);
28
+ }
29
+ yield this.createToolProgressChunk('completed', command, toolCallId);
30
+ return autoValidateResult;
31
+ }
32
+ messages.push(new messages_1.ToolMessage({
33
+ tool_call_id: toolCallId,
34
+ content: result,
35
+ }));
36
+ if (command !== 'view') {
37
+ const preview = await this.tryParseForPreview(currentWorkflow);
38
+ if (preview.chunk) {
39
+ yield preview.chunk;
40
+ }
41
+ if (preview.parseError) {
42
+ const lastMsg = messages[messages.length - 1];
43
+ lastMsg.content = `${lastMsg.content}\n\nParse error: ${preview.parseError}`;
44
+ }
45
+ }
46
+ yield this.createToolProgressChunk('completed', command, toolCallId);
47
+ return undefined;
48
+ }
49
+ catch (error) {
50
+ const errorMessage = error instanceof Error ? error.message : String(error);
51
+ messages.push(new messages_1.ToolMessage({
52
+ tool_call_id: toolCallId,
53
+ content: `Error: ${errorMessage}`,
54
+ }));
55
+ yield this.createToolProgressChunk('completed', command, toolCallId);
56
+ return undefined;
57
+ }
58
+ }
59
+ async autoValidateAfterCreate(toolCallId, createResult, currentWorkflow, _iteration, messages, warningTracker) {
60
+ const code = this.textEditorGetCode();
61
+ if (!code) {
62
+ messages.push(new messages_1.ToolMessage({ tool_call_id: toolCallId, content: createResult }));
63
+ return { workflowReady: false };
64
+ }
65
+ try {
66
+ const result = await this.parseAndValidate(code, currentWorkflow);
67
+ if (result.warnings.length > 0) {
68
+ const newWarnings = warningTracker
69
+ ? warningTracker.filterNewWarnings(result.warnings)
70
+ : result.warnings;
71
+ if (newWarnings.length > 0) {
72
+ if (warningTracker) {
73
+ warningTracker.markAsSeen(newWarnings);
74
+ }
75
+ const warningText = (0, format_warnings_1.formatWarnings)(newWarnings, warningTracker);
76
+ const errorContext = this.getErrorContext(code, newWarnings[0].message);
77
+ messages.push(new messages_1.ToolMessage({
78
+ tool_call_id: toolCallId,
79
+ content: `${createResult}\n\nValidation warnings:\n${warningText}\n\n${errorContext}\n\n${constants_1.FIX_VALIDATION_ERRORS_INSTRUCTION}`,
80
+ }));
81
+ return {
82
+ workflowReady: false,
83
+ workflow: result.workflow,
84
+ };
85
+ }
86
+ }
87
+ messages.push(new messages_1.ToolMessage({ tool_call_id: toolCallId, content: createResult }));
88
+ return {
89
+ workflowReady: true,
90
+ workflow: result.workflow,
91
+ };
92
+ }
93
+ catch (error) {
94
+ const errorMessage = error instanceof Error ? error.message : String(error);
95
+ const errorContext = this.getErrorContext(code, errorMessage);
96
+ messages.push(new messages_1.ToolMessage({
97
+ tool_call_id: toolCallId,
98
+ content: `${createResult}\n\nParse error: ${errorMessage}\n\n${errorContext}\n\n${constants_1.FIX_VALIDATION_ERRORS_INSTRUCTION}`,
99
+ additional_kwargs: { validationMessage: true },
100
+ }));
101
+ return { workflowReady: false };
102
+ }
103
+ }
104
+ async tryParseForPreview(currentWorkflow) {
105
+ const code = this.textEditorGetCode();
106
+ if (!code) {
107
+ return {};
108
+ }
109
+ try {
110
+ const result = await this.parseAndValidate(code, currentWorkflow);
111
+ return { chunk: this.createWorkflowUpdateChunk(result.workflow) };
112
+ }
113
+ catch (error) {
114
+ const errorMessage = error instanceof Error ? error.message : String(error);
115
+ return { parseError: errorMessage };
116
+ }
117
+ }
118
+ createToolProgressChunk(status, command, toolCallId) {
119
+ const displayTitle = command === 'view' ? 'Viewing workflow' : 'Editing workflow';
120
+ return {
121
+ messages: [
122
+ {
123
+ type: 'tool',
124
+ toolName: 'str_replace_based_edit_tool',
125
+ toolCallId,
126
+ displayTitle,
127
+ status,
128
+ },
129
+ ],
130
+ };
131
+ }
132
+ createWorkflowUpdateChunk(workflow) {
133
+ return {
134
+ messages: [
135
+ {
136
+ role: 'assistant',
137
+ type: 'workflow-updated',
138
+ codeSnippet: JSON.stringify(workflow, null, 2),
139
+ },
140
+ ],
141
+ };
142
+ }
143
+ }
144
+ exports.TextEditorToolHandler = TextEditorToolHandler;
145
+ //# sourceMappingURL=text-editor-tool-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-editor-tool-handler.js","sourceRoot":"","sources":["../../../src/code-builder/handlers/text-editor-tool-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ export interface ViewCommand {
2
+ command: 'view';
3
+ path: string;
4
+ view_range?: [number, number];
5
+ }
6
+ export interface CreateCommand {
7
+ command: 'create';
8
+ path: string;
9
+ file_text: string;
10
+ }
11
+ export interface StrReplaceCommand {
12
+ command: 'str_replace';
13
+ path: string;
14
+ old_str: string;
15
+ new_str: string;
16
+ }
17
+ export interface InsertCommand {
18
+ command: 'insert';
19
+ path: string;
20
+ insert_line: number;
21
+ insert_text: string;
22
+ }
23
+ export type TextEditorCommand = ViewCommand | CreateCommand | StrReplaceCommand | InsertCommand;
24
+ export interface TextEditorToolCall {
25
+ name: 'str_replace_based_edit_tool';
26
+ args: TextEditorCommand;
27
+ id: string;
28
+ }
29
+ export interface TextEditorResult {
30
+ content: string;
31
+ }
32
+ export declare class NoMatchFoundError extends Error {
33
+ constructor(_searchStr: string, nearMatchContext?: string);
34
+ }
35
+ export declare class MultipleMatchesError extends Error {
36
+ constructor(count: number);
37
+ }
38
+ export declare class InvalidLineNumberError extends Error {
39
+ constructor(line: number, maxLine: number);
40
+ }
41
+ export declare class InvalidViewRangeError extends Error {
42
+ constructor(start: number, end: number, maxLine: number);
43
+ }
44
+ export declare class InvalidPathError extends Error {
45
+ constructor(path: string);
46
+ }
47
+ export declare class FileExistsError extends Error {
48
+ constructor();
49
+ }
50
+ export declare class FileNotFoundError extends Error {
51
+ constructor();
52
+ }
53
+ export interface StrReplacement {
54
+ old_str: string;
55
+ new_str: string;
56
+ }
57
+ export interface BatchReplaceResult {
58
+ index: number;
59
+ old_str: string;
60
+ status: 'success' | 'failed' | 'not_attempted';
61
+ error?: string;
62
+ }
63
+ export declare class BatchReplacementError extends Error {
64
+ readonly failedIndex: number;
65
+ readonly totalCount: number;
66
+ readonly cause: NoMatchFoundError | MultipleMatchesError;
67
+ constructor(failedIndex: number, totalCount: number, cause: NoMatchFoundError | MultipleMatchesError);
68
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchReplacementError = exports.FileNotFoundError = exports.FileExistsError = exports.InvalidPathError = exports.InvalidViewRangeError = exports.InvalidLineNumberError = exports.MultipleMatchesError = exports.NoMatchFoundError = void 0;
4
+ class NoMatchFoundError extends Error {
5
+ constructor(_searchStr, nearMatchContext) {
6
+ const base = 'No exact match found for str_replace. The old_str content was not found in the file.';
7
+ const message = nearMatchContext ? `${base}\n${nearMatchContext}` : base;
8
+ super(message);
9
+ this.name = 'NoMatchFoundError';
10
+ }
11
+ }
12
+ exports.NoMatchFoundError = NoMatchFoundError;
13
+ class MultipleMatchesError extends Error {
14
+ constructor(count) {
15
+ super(`Found ${count} matches. Please provide more context to make the replacement unique.`);
16
+ this.name = 'MultipleMatchesError';
17
+ }
18
+ }
19
+ exports.MultipleMatchesError = MultipleMatchesError;
20
+ class InvalidLineNumberError extends Error {
21
+ constructor(line, maxLine) {
22
+ super(`Invalid line number ${line}. File has ${maxLine} lines (valid range: 0-${maxLine}).`);
23
+ this.name = 'InvalidLineNumberError';
24
+ }
25
+ }
26
+ exports.InvalidLineNumberError = InvalidLineNumberError;
27
+ class InvalidViewRangeError extends Error {
28
+ constructor(start, end, maxLine) {
29
+ super(`Invalid view range: end (${end}) must be >= start (${start}). File has ${maxLine} lines (valid range: 1-${maxLine}).`);
30
+ this.name = 'InvalidViewRangeError';
31
+ }
32
+ }
33
+ exports.InvalidViewRangeError = InvalidViewRangeError;
34
+ class InvalidPathError extends Error {
35
+ constructor(path) {
36
+ super(`Invalid path "${path}". Only /workflow.js is supported.`);
37
+ this.name = 'InvalidPathError';
38
+ }
39
+ }
40
+ exports.InvalidPathError = InvalidPathError;
41
+ class FileExistsError extends Error {
42
+ constructor() {
43
+ super('File already exists. Use text editor tools to modify existing content.');
44
+ this.name = 'FileExistsError';
45
+ }
46
+ }
47
+ exports.FileExistsError = FileExistsError;
48
+ class FileNotFoundError extends Error {
49
+ constructor() {
50
+ super('No workflow code exists yet. Use create first.');
51
+ this.name = 'FileNotFoundError';
52
+ }
53
+ }
54
+ exports.FileNotFoundError = FileNotFoundError;
55
+ class BatchReplacementError extends Error {
56
+ failedIndex;
57
+ totalCount;
58
+ cause;
59
+ constructor(failedIndex, totalCount, cause) {
60
+ super(`Batch replacement failed at index ${failedIndex} of ${totalCount}: ${cause.message}. All changes have been rolled back.`);
61
+ this.name = 'BatchReplacementError';
62
+ this.failedIndex = failedIndex;
63
+ this.totalCount = totalCount;
64
+ this.cause = cause;
65
+ }
66
+ }
67
+ exports.BatchReplacementError = BatchReplacementError;
68
+ //# sourceMappingURL=text-editor.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-editor.types.js","sourceRoot":"","sources":["../../../src/code-builder/handlers/text-editor.types.ts"],"names":[],"mappings":";;;AAwEA,MAAa,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,UAAkB,EAAE,gBAAyB;QACxD,MAAM,IAAI,GACT,sFAAsF,CAAC;QACxF,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AARD,8CAQC;AAKD,MAAa,oBAAqB,SAAQ,KAAK;IAC9C,YAAY,KAAa;QACxB,KAAK,CAAC,SAAS,KAAK,uEAAuE,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACpC,CAAC;CACD;AALD,oDAKC;AAKD,MAAa,sBAAuB,SAAQ,KAAK;IAChD,YAAY,IAAY,EAAE,OAAe;QACxC,KAAK,CAAC,uBAAuB,IAAI,cAAc,OAAO,0BAA0B,OAAO,IAAI,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACtC,CAAC;CACD;AALD,wDAKC;AAKD,MAAa,qBAAsB,SAAQ,KAAK;IAC/C,YAAY,KAAa,EAAE,GAAW,EAAE,OAAe;QACtD,KAAK,CACJ,4BAA4B,GAAG,uBAAuB,KAAK,eAAe,OAAO,0BAA0B,OAAO,IAAI,CACtH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACrC,CAAC;CACD;AAPD,sDAOC;AAKD,MAAa,gBAAiB,SAAQ,KAAK;IAC1C,YAAY,IAAY;QACvB,KAAK,CAAC,iBAAiB,IAAI,oCAAoC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAChC,CAAC;CACD;AALD,4CAKC;AAKD,MAAa,eAAgB,SAAQ,KAAK;IACzC;QACC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAC/B,CAAC;CACD;AALD,0CAKC;AAKD,MAAa,iBAAkB,SAAQ,KAAK;IAC3C;QACC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AALD,8CAKC;AA0BD,MAAa,qBAAsB,SAAQ,KAAK;IACtC,WAAW,CAAS;IACpB,UAAU,CAAS;IACV,KAAK,CAA2C;IAElE,YACC,WAAmB,EACnB,UAAkB,EAClB,KAA+C;QAE/C,KAAK,CACJ,qCAAqC,WAAW,OAAO,UAAU,KAAK,KAAK,CAAC,OAAO,sCAAsC,CACzH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;CACD;AAlBD,sDAkBC"}
@@ -0,0 +1,47 @@
1
+ import type { BaseMessage } from '@langchain/core/messages';
2
+ import type { StructuredToolInterface } from '@langchain/core/tools';
3
+ import type { WorkflowJSON } from '@n8n/workflow-sdk';
4
+ import type { TextEditorHandler } from './text-editor-handler';
5
+ import type { TextEditorToolHandler } from './text-editor-tool-handler';
6
+ import type { StrReplacement } from './text-editor.types';
7
+ import type { ValidateToolHandler } from './validate-tool-handler';
8
+ import type { StreamOutput } from '../../types/streaming';
9
+ import type { WarningTracker } from '../state/warning-tracker';
10
+ export declare function parseReplacements(raw: unknown): StrReplacement[];
11
+ export interface ToolCall {
12
+ name: string;
13
+ args: Record<string, unknown>;
14
+ id?: string;
15
+ }
16
+ export interface ToolDispatchHandlerConfig {
17
+ toolsMap: Map<string, StructuredToolInterface>;
18
+ toolDisplayTitles?: Map<string, string>;
19
+ validateToolHandler: ValidateToolHandler;
20
+ }
21
+ export interface ToolDispatchParams {
22
+ toolCalls: ToolCall[];
23
+ messages: BaseMessage[];
24
+ currentWorkflow?: WorkflowJSON;
25
+ iteration: number;
26
+ textEditorHandler?: TextEditorHandler;
27
+ textEditorToolHandler?: TextEditorToolHandler;
28
+ warningTracker: WarningTracker;
29
+ }
30
+ export interface ToolDispatchResult {
31
+ workflow?: WorkflowJSON;
32
+ workflowReady: boolean;
33
+ sourceCode?: string;
34
+ parseDuration?: number;
35
+ validatePassedThisIteration: boolean;
36
+ hasUnvalidatedEdits?: boolean;
37
+ }
38
+ export declare class ToolDispatchHandler {
39
+ private toolsMap;
40
+ private toolDisplayTitles?;
41
+ private validateToolHandler;
42
+ constructor(config: ToolDispatchHandlerConfig);
43
+ dispatch(params: ToolDispatchParams): AsyncGenerator<StreamOutput, ToolDispatchResult, unknown>;
44
+ private executeToolCall;
45
+ private executeGeneralToolCall;
46
+ private executeBatchStrReplace;
47
+ }