@n8n/ai-workflow-builder 1.8.1 → 1.9.1

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,62 @@
1
+ import type { BuilderToolBase } from '../utils/stream-processor';
2
+ export declare const MAX_AGENT_ITERATIONS = 50;
3
+ export declare const MAX_VALIDATE_ATTEMPTS = 10;
4
+ export declare const FIX_VALIDATION_ERRORS_INSTRUCTION = "\nAnalyze the errors, then use the editor tool to apply fixes:\n1. Which errors are relevant to the last user request? If NONE, stop \u2014 do not fix unrelated warnings.\n2. Use search_nodes and get_node_types to look up the correct node schema (if not already fetched)\n3. Use batch_str_replace to fix ALL identified issues atomically in one call (preferred), or use individual str_replace/insert calls\n4. Call validate_workflow ONCE after all fixes are applied\nDo NOT output explanations \u2014 just fix the code. Do not add or edit comments.";
5
+ export declare const TEXT_EDITOR_TOOL: {
6
+ type: "text_editor_20250728";
7
+ name: "str_replace_based_edit_tool";
8
+ };
9
+ export declare const BATCH_STR_REPLACE_TOOL: {
10
+ type: "function";
11
+ function: {
12
+ name: string;
13
+ description: string;
14
+ parameters: {
15
+ type: "object";
16
+ properties: {
17
+ replacements: {
18
+ type: "array";
19
+ items: {
20
+ type: "object";
21
+ properties: {
22
+ old_str: {
23
+ type: "string";
24
+ description: string;
25
+ };
26
+ new_str: {
27
+ type: "string";
28
+ description: string;
29
+ };
30
+ };
31
+ required: string[];
32
+ };
33
+ description: string;
34
+ };
35
+ };
36
+ required: string[];
37
+ };
38
+ };
39
+ };
40
+ export declare const VALIDATE_TOOL: {
41
+ type: "function";
42
+ function: {
43
+ name: string;
44
+ description: string;
45
+ parameters: {
46
+ type: "object";
47
+ properties: {
48
+ path: {
49
+ type: "string";
50
+ description: string;
51
+ };
52
+ };
53
+ required: string[];
54
+ };
55
+ };
56
+ };
57
+ export declare const CODE_BUILDER_TEXT_EDITOR_TOOL: BuilderToolBase;
58
+ export declare const CODE_BUILDER_BATCH_STR_REPLACE_TOOL: BuilderToolBase;
59
+ export declare const CODE_BUILDER_VALIDATE_TOOL: BuilderToolBase;
60
+ export declare const CODE_BUILDER_SEARCH_NODES_TOOL: BuilderToolBase;
61
+ export declare const CODE_BUILDER_GET_NODE_TYPES_TOOL: BuilderToolBase;
62
+ export declare const CODE_BUILDER_GET_SUGGESTED_NODES_TOOL: BuilderToolBase;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL = exports.CODE_BUILDER_GET_NODE_TYPES_TOOL = exports.CODE_BUILDER_SEARCH_NODES_TOOL = exports.CODE_BUILDER_VALIDATE_TOOL = exports.CODE_BUILDER_BATCH_STR_REPLACE_TOOL = exports.CODE_BUILDER_TEXT_EDITOR_TOOL = exports.VALIDATE_TOOL = exports.BATCH_STR_REPLACE_TOOL = exports.TEXT_EDITOR_TOOL = exports.FIX_VALIDATION_ERRORS_INSTRUCTION = exports.MAX_VALIDATE_ATTEMPTS = exports.MAX_AGENT_ITERATIONS = void 0;
4
+ exports.MAX_AGENT_ITERATIONS = 50;
5
+ exports.MAX_VALIDATE_ATTEMPTS = 10;
6
+ exports.FIX_VALIDATION_ERRORS_INSTRUCTION = `
7
+ Analyze the errors, then use the editor tool to apply fixes:
8
+ 1. Which errors are relevant to the last user request? If NONE, stop — do not fix unrelated warnings.
9
+ 2. Use search_nodes and get_node_types to look up the correct node schema (if not already fetched)
10
+ 3. Use batch_str_replace to fix ALL identified issues atomically in one call (preferred), or use individual str_replace/insert calls
11
+ 4. Call validate_workflow ONCE after all fixes are applied
12
+ Do NOT output explanations — just fix the code. Do not add or edit comments.`;
13
+ exports.TEXT_EDITOR_TOOL = {
14
+ type: 'text_editor_20250728',
15
+ name: 'str_replace_based_edit_tool',
16
+ };
17
+ exports.BATCH_STR_REPLACE_TOOL = {
18
+ type: 'function',
19
+ function: {
20
+ name: 'batch_str_replace',
21
+ description: 'Apply multiple str_replace operations to /workflow.js atomically. All replacements are applied in order. If any replacement fails, all changes are rolled back. Example: {"replacements": [{"old_str": "foo", "new_str": "bar"}, {"old_str": "baz", "new_str": "qux"}]}',
22
+ parameters: {
23
+ type: 'object',
24
+ properties: {
25
+ replacements: {
26
+ type: 'array',
27
+ items: {
28
+ type: 'object',
29
+ properties: {
30
+ old_str: { type: 'string', description: 'The exact string to find' },
31
+ new_str: { type: 'string', description: 'The replacement string' },
32
+ },
33
+ required: ['old_str', 'new_str'],
34
+ },
35
+ description: 'Ordered list of replacements to apply',
36
+ },
37
+ },
38
+ required: ['replacements'],
39
+ },
40
+ },
41
+ };
42
+ exports.VALIDATE_TOOL = {
43
+ type: 'function',
44
+ function: {
45
+ name: 'validate_workflow',
46
+ description: 'Validate the current workflow code for errors. Returns validation results - either success or a list of errors to fix.',
47
+ parameters: {
48
+ type: 'object',
49
+ properties: {
50
+ path: {
51
+ type: 'string',
52
+ description: 'Path to the workflow file (must be /workflow.js)',
53
+ },
54
+ },
55
+ required: ['path'],
56
+ },
57
+ },
58
+ };
59
+ exports.CODE_BUILDER_TEXT_EDITOR_TOOL = {
60
+ toolName: 'str_replace_based_edit_tool',
61
+ displayTitle: 'Editing workflow',
62
+ };
63
+ exports.CODE_BUILDER_BATCH_STR_REPLACE_TOOL = {
64
+ toolName: 'batch_str_replace',
65
+ displayTitle: 'Editing workflow',
66
+ };
67
+ exports.CODE_BUILDER_VALIDATE_TOOL = {
68
+ toolName: 'validate_workflow',
69
+ displayTitle: 'Validating workflow',
70
+ };
71
+ exports.CODE_BUILDER_SEARCH_NODES_TOOL = {
72
+ toolName: 'search_nodes',
73
+ displayTitle: 'Searching nodes',
74
+ };
75
+ exports.CODE_BUILDER_GET_NODE_TYPES_TOOL = {
76
+ toolName: 'get_node_types',
77
+ displayTitle: 'Getting node definitions',
78
+ };
79
+ exports.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL = {
80
+ toolName: 'get_suggested_nodes',
81
+ displayTitle: 'Getting suggested nodes',
82
+ };
83
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/code-builder/constants.ts"],"names":[],"mappings":";;;AASa,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAG1B,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAG3B,QAAA,iCAAiC,GAAG;;;;;;6EAM4B,CAAC;AAGjE,QAAA,gBAAgB,GAAG;IAC/B,IAAI,EAAE,sBAA+B;IACrC,IAAI,EAAE,6BAAsC;CAC5C,CAAC;AAGW,QAAA,sBAAsB,GAAG;IACrC,IAAI,EAAE,UAAmB;IACzB,QAAQ,EAAE;QACT,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACV,yQAAyQ;QAC1Q,UAAU,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACX,YAAY,EAAE;oBACb,IAAI,EAAE,OAAgB;oBACtB,KAAK,EAAE;wBACN,IAAI,EAAE,QAAiB;wBACvB,UAAU,EAAE;4BACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE;4BAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE;yBAC3E;wBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;qBAChC;oBACD,WAAW,EAAE,uCAAuC;iBACpD;aACD;YACD,QAAQ,EAAE,CAAC,cAAc,CAAC;SAC1B;KACD;CACD,CAAC;AAGW,QAAA,aAAa,GAAG;IAC5B,IAAI,EAAE,UAAmB;IACzB,QAAQ,EAAE;QACT,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACV,wHAAwH;QACzH,UAAU,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACX,IAAI,EAAE;oBACL,IAAI,EAAE,QAAiB;oBACvB,WAAW,EAAE,kDAAkD;iBAC/D;aACD;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SAClB;KACD;CACD,CAAC;AAKW,QAAA,6BAA6B,GAAoB;IAC7D,QAAQ,EAAE,6BAA6B;IACvC,YAAY,EAAE,kBAAkB;CAChC,CAAC;AAEW,QAAA,mCAAmC,GAAoB;IACnE,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,kBAAkB;CAChC,CAAC;AAEW,QAAA,0BAA0B,GAAoB;IAC1D,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,qBAAqB;CACnC,CAAC;AAEW,QAAA,8BAA8B,GAAoB;IAC9D,QAAQ,EAAE,cAAc;IACxB,YAAY,EAAE,iBAAiB;CAC/B,CAAC;AAEW,QAAA,gCAAgC,GAAoB;IAChE,QAAQ,EAAE,gBAAgB;IAC1B,YAAY,EAAE,0BAA0B;CACxC,CAAC;AAEW,QAAA,qCAAqC,GAAoB;IACrE,QAAQ,EAAE,qBAAqB;IAC/B,YAAY,EAAE,yBAAyB;CACvC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { INodeTypeDescription, NodeConnectionType } from 'n8n-workflow';
2
+ import type { CodeBuilderNodeSearchResult } from '../types';
3
+ export declare const SCORE_WEIGHTS: {
4
+ readonly CONNECTION_EXACT: 100;
5
+ readonly CONNECTION_IN_EXPRESSION: 50;
6
+ };
7
+ export declare class CodeBuilderNodeSearchEngine {
8
+ private readonly nodeTypes;
9
+ constructor(nodeTypes: INodeTypeDescription[]);
10
+ searchByName(query: string, limit?: number): CodeBuilderNodeSearchResult[];
11
+ searchByConnectionType(connectionType: NodeConnectionType, limit?: number, nameFilter?: string): CodeBuilderNodeSearchResult[];
12
+ formatResult(result: CodeBuilderNodeSearchResult): string;
13
+ getSubnodesForConnectionType(connectionType: string): string[];
14
+ getRelatedSubnodeIds(nodeIds: string[], excludeNodeIds: Set<string>): Set<string>;
15
+ getNodeType(nodeId: string): INodeTypeDescription | undefined;
16
+ private getConnectionScore;
17
+ static isAiConnectionType(connectionType: string): boolean;
18
+ static getAiConnectionTypes(): NodeConnectionType[];
19
+ }
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeBuilderNodeSearchEngine = exports.SCORE_WEIGHTS = void 0;
4
+ const utils_1 = require("@n8n/utils");
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ function isNodeConnectionType(value) {
7
+ return Object.values(n8n_workflow_1.NodeConnectionTypes).includes(value);
8
+ }
9
+ const DEFAULT_SUBNODES = {
10
+ ai_languageModel: ['@n8n/n8n-nodes-langchain.lmChatOpenAi'],
11
+ ai_memory: ['@n8n/n8n-nodes-langchain.memoryBufferWindow'],
12
+ ai_embedding: ['@n8n/n8n-nodes-langchain.embeddingsOpenAi'],
13
+ ai_vectorStore: ['@n8n/n8n-nodes-langchain.vectorStoreInMemory'],
14
+ };
15
+ const NODE_SEARCH_KEYS = [
16
+ { key: 'displayName', weight: 1.5 },
17
+ { key: 'name', weight: 1.3 },
18
+ { key: 'codex.alias', weight: 1.0 },
19
+ { key: 'description', weight: 0.7 },
20
+ ];
21
+ function getTypeName(nodeName) {
22
+ if (!nodeName)
23
+ return '';
24
+ const lastDotIndex = nodeName.lastIndexOf('.');
25
+ return lastDotIndex >= 0 ? nodeName.substring(lastDotIndex + 1) : nodeName;
26
+ }
27
+ exports.SCORE_WEIGHTS = {
28
+ CONNECTION_EXACT: 100,
29
+ CONNECTION_IN_EXPRESSION: 50,
30
+ };
31
+ function getLatestVersion(version) {
32
+ return Array.isArray(version) ? Math.max(...version) : version;
33
+ }
34
+ function extractSubnodeRequirements(inputs) {
35
+ if (!inputs)
36
+ return [];
37
+ return Object.entries(inputs).map(([connectionType, config]) => ({
38
+ connectionType,
39
+ required: config.required,
40
+ ...(config.displayOptions && { displayOptions: config.displayOptions }),
41
+ }));
42
+ }
43
+ function dedupeNodes(nodes) {
44
+ const dedupeCache = {};
45
+ nodes.forEach((node) => {
46
+ const cachedNodeType = dedupeCache[node.name];
47
+ if (!cachedNodeType) {
48
+ dedupeCache[node.name] = node;
49
+ return;
50
+ }
51
+ const cachedVersion = getLatestVersion(cachedNodeType.version);
52
+ const nextVersion = getLatestVersion(node.version);
53
+ if (nextVersion > cachedVersion) {
54
+ dedupeCache[node.name] = node;
55
+ }
56
+ });
57
+ return Object.values(dedupeCache);
58
+ }
59
+ class CodeBuilderNodeSearchEngine {
60
+ nodeTypes;
61
+ constructor(nodeTypes) {
62
+ this.nodeTypes = dedupeNodes(nodeTypes);
63
+ }
64
+ searchByName(query, limit = 20) {
65
+ const searchResults = (0, utils_1.sublimeSearch)(query, this.nodeTypes, NODE_SEARCH_KEYS);
66
+ const queryLower = query.toLowerCase().trim();
67
+ const fuzzyResultNames = new Set(searchResults.map((r) => r.item.name));
68
+ const typeNameMatches = this.nodeTypes
69
+ .filter((node) => {
70
+ if (fuzzyResultNames.has(node.name))
71
+ return false;
72
+ return getTypeName(node.name).toLowerCase() === queryLower;
73
+ })
74
+ .map((item) => ({ item, score: 0 }));
75
+ const allResults = [...searchResults, ...typeNameMatches];
76
+ allResults.sort((a, b) => {
77
+ const exactA = getTypeName(a.item.name).toLowerCase() === queryLower;
78
+ const exactB = getTypeName(b.item.name).toLowerCase() === queryLower;
79
+ if (exactA && !exactB)
80
+ return -1;
81
+ if (!exactA && exactB)
82
+ return 1;
83
+ return b.score - a.score;
84
+ });
85
+ return allResults
86
+ .slice(0, limit)
87
+ .map(({ item, score, }) => {
88
+ const subnodeRequirements = extractSubnodeRequirements(item.builderHint?.inputs);
89
+ return {
90
+ name: item.name,
91
+ displayName: item.displayName,
92
+ description: item.description ?? 'No description available',
93
+ version: getLatestVersion(item.version),
94
+ inputs: item.inputs,
95
+ outputs: item.outputs,
96
+ score,
97
+ ...(item.builderHint?.message && { builderHintMessage: item.builderHint.message }),
98
+ ...(subnodeRequirements.length > 0 && { subnodeRequirements }),
99
+ };
100
+ });
101
+ }
102
+ searchByConnectionType(connectionType, limit = 20, nameFilter) {
103
+ const nodesWithConnectionType = this.nodeTypes
104
+ .map((nodeType) => {
105
+ const connectionScore = this.getConnectionScore(nodeType, connectionType);
106
+ return connectionScore > 0 ? { nodeType, connectionScore } : null;
107
+ })
108
+ .filter((result) => Boolean(result));
109
+ if (!nameFilter) {
110
+ return nodesWithConnectionType
111
+ .sort((a, b) => b.connectionScore - a.connectionScore)
112
+ .slice(0, limit)
113
+ .map(({ nodeType, connectionScore }) => {
114
+ const subnodeRequirements = extractSubnodeRequirements(nodeType.builderHint?.inputs);
115
+ return {
116
+ name: nodeType.name,
117
+ displayName: nodeType.displayName,
118
+ version: getLatestVersion(nodeType.version),
119
+ description: nodeType.description ?? 'No description available',
120
+ inputs: nodeType.inputs,
121
+ outputs: nodeType.outputs,
122
+ score: connectionScore,
123
+ ...(nodeType.builderHint?.message && {
124
+ builderHintMessage: nodeType.builderHint.message,
125
+ }),
126
+ ...(subnodeRequirements.length > 0 && { subnodeRequirements }),
127
+ };
128
+ });
129
+ }
130
+ const nodeTypesOnly = nodesWithConnectionType.map((result) => result.nodeType);
131
+ const nameFilteredResults = (0, utils_1.sublimeSearch)(nameFilter, nodeTypesOnly, NODE_SEARCH_KEYS);
132
+ return nameFilteredResults
133
+ .slice(0, limit)
134
+ .map(({ item, score: nameScore }) => {
135
+ const connectionResult = nodesWithConnectionType.find((result) => result.nodeType.name === item.name);
136
+ const connectionScore = connectionResult?.connectionScore ?? 0;
137
+ const subnodeRequirements = extractSubnodeRequirements(item.builderHint?.inputs);
138
+ return {
139
+ name: item.name,
140
+ version: getLatestVersion(item.version),
141
+ displayName: item.displayName,
142
+ description: item.description ?? 'No description available',
143
+ inputs: item.inputs,
144
+ outputs: item.outputs,
145
+ score: connectionScore + nameScore,
146
+ ...(item.builderHint?.message && { builderHintMessage: item.builderHint.message }),
147
+ ...(subnodeRequirements.length > 0 && { subnodeRequirements }),
148
+ };
149
+ });
150
+ }
151
+ formatResult(result) {
152
+ const parts = [
153
+ ' <node>',
154
+ ` <node_name>${result.name}</node_name>`,
155
+ ` <node_version>${result.version}</node_version>`,
156
+ ` <node_description>${result.description}</node_description>`,
157
+ ` <node_inputs>${typeof result.inputs === 'object' ? JSON.stringify(result.inputs) : result.inputs}</node_inputs>`,
158
+ ` <node_outputs>${typeof result.outputs === 'object' ? JSON.stringify(result.outputs) : result.outputs}</node_outputs>`,
159
+ ];
160
+ if (result.builderHintMessage) {
161
+ parts.push(` <builder_hint>${result.builderHintMessage}</builder_hint>`);
162
+ }
163
+ if (result.subnodeRequirements && result.subnodeRequirements.length > 0) {
164
+ parts.push(' <subnode_requirements>');
165
+ for (const req of result.subnodeRequirements) {
166
+ const requiredStr = req.required ? 'required' : 'optional';
167
+ if (req.displayOptions) {
168
+ parts.push(` <requirement type="${req.connectionType}" status="${requiredStr}"><display_options>${JSON.stringify(req.displayOptions)}</display_options></requirement>`);
169
+ }
170
+ else {
171
+ parts.push(' <requirement type="' +
172
+ req.connectionType +
173
+ '" status="' +
174
+ requiredStr +
175
+ '" />');
176
+ }
177
+ }
178
+ parts.push(' </subnode_requirements>');
179
+ }
180
+ parts.push(' </node>');
181
+ return '\n' + parts.join('\n');
182
+ }
183
+ getSubnodesForConnectionType(connectionType) {
184
+ return DEFAULT_SUBNODES[connectionType] ?? [];
185
+ }
186
+ getRelatedSubnodeIds(nodeIds, excludeNodeIds) {
187
+ const allRelated = new Set();
188
+ const visited = new Set(excludeNodeIds);
189
+ for (const nodeId of nodeIds) {
190
+ visited.add(nodeId);
191
+ }
192
+ const queue = [...nodeIds];
193
+ while (queue.length > 0) {
194
+ const currentNodeId = queue.shift();
195
+ const nodeType = this.nodeTypes.find((n) => n.name === currentNodeId);
196
+ if (!nodeType?.builderHint?.inputs)
197
+ continue;
198
+ for (const connectionType of Object.keys(nodeType.builderHint.inputs)) {
199
+ const subnodeIds = this.getSubnodesForConnectionType(connectionType);
200
+ for (const subnodeId of subnodeIds) {
201
+ if (visited.has(subnodeId))
202
+ continue;
203
+ visited.add(subnodeId);
204
+ allRelated.add(subnodeId);
205
+ queue.push(subnodeId);
206
+ }
207
+ }
208
+ }
209
+ return allRelated;
210
+ }
211
+ getNodeType(nodeId) {
212
+ return this.nodeTypes.find((n) => n.name === nodeId);
213
+ }
214
+ getConnectionScore(nodeType, connectionType) {
215
+ const outputs = nodeType.outputs;
216
+ if (Array.isArray(outputs)) {
217
+ if (outputs.includes(connectionType)) {
218
+ return exports.SCORE_WEIGHTS.CONNECTION_EXACT;
219
+ }
220
+ }
221
+ else if (typeof outputs === 'string') {
222
+ if (outputs.includes(connectionType)) {
223
+ return exports.SCORE_WEIGHTS.CONNECTION_IN_EXPRESSION;
224
+ }
225
+ }
226
+ return 0;
227
+ }
228
+ static isAiConnectionType(connectionType) {
229
+ return connectionType.startsWith('ai_');
230
+ }
231
+ static getAiConnectionTypes() {
232
+ return Object.values(n8n_workflow_1.NodeConnectionTypes).filter((type) => isNodeConnectionType(type) && CodeBuilderNodeSearchEngine.isAiConnectionType(type));
233
+ }
234
+ }
235
+ exports.CodeBuilderNodeSearchEngine = CodeBuilderNodeSearchEngine;
236
+ //# sourceMappingURL=code-builder-node-search-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-builder-node-search-engine.js","sourceRoot":"","sources":["../../../src/code-builder/engines/code-builder-node-search-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Callbacks } from '@langchain/core/callbacks/manager';
2
+ import type { BaseChatModelCallOptions } from '@langchain/core/language_models/chat_models';
3
+ import type { BaseMessage, AIMessage } from '@langchain/core/messages';
4
+ import type { Runnable } from '@langchain/core/runnables';
5
+ import type { StreamOutput } from '../../types/streaming';
6
+ import type { TokenUsage } from '../types';
7
+ export interface AgentIterationHandlerConfig {
8
+ onTokenUsage?: (usage: TokenUsage) => void;
9
+ callbacks?: Callbacks;
10
+ runMetadata?: Record<string, unknown>;
11
+ }
12
+ export interface IterationParams {
13
+ llmWithTools: Runnable<BaseMessage[], AIMessage, BaseChatModelCallOptions>;
14
+ messages: BaseMessage[];
15
+ abortSignal?: AbortSignal;
16
+ iteration: number;
17
+ callbacks?: Callbacks;
18
+ }
19
+ export interface LlmInvocationResult {
20
+ response: AIMessage;
21
+ inputTokens: number;
22
+ outputTokens: number;
23
+ llmDurationMs: number;
24
+ textContent: string | null;
25
+ thinkingContent: string | null;
26
+ hasToolCalls: boolean;
27
+ }
28
+ export declare class AgentIterationHandler {
29
+ private onTokenUsage?;
30
+ private callbacks?;
31
+ private runMetadata?;
32
+ constructor(config?: AgentIterationHandlerConfig);
33
+ getCallbacks(): Callbacks | undefined;
34
+ getRunMetadata(): Record<string, unknown> | undefined;
35
+ invokeLlm(params: IterationParams): AsyncGenerator<StreamOutput, LlmInvocationResult, unknown>;
36
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentIterationHandler = void 0;
4
+ const helpers_1 = require("../../utils/cache-control/helpers");
5
+ const content_extractors_1 = require("../utils/content-extractors");
6
+ function hasUsageMetadata(metadata) {
7
+ return (typeof metadata === 'object' &&
8
+ metadata !== null &&
9
+ 'usage' in metadata &&
10
+ typeof metadata.usage === 'object');
11
+ }
12
+ class AgentIterationHandler {
13
+ onTokenUsage;
14
+ callbacks;
15
+ runMetadata;
16
+ constructor(config = {}) {
17
+ this.onTokenUsage = config.onTokenUsage;
18
+ this.callbacks = config.callbacks;
19
+ this.runMetadata = config.runMetadata;
20
+ }
21
+ getCallbacks() {
22
+ return this.callbacks;
23
+ }
24
+ getRunMetadata() {
25
+ return this.runMetadata;
26
+ }
27
+ async *invokeLlm(params) {
28
+ const { llmWithTools, messages, abortSignal, callbacks: iterationCallbacks } = params;
29
+ if (abortSignal?.aborted) {
30
+ throw new Error('Aborted');
31
+ }
32
+ (0, helpers_1.applySubgraphCacheMarkers)(messages);
33
+ const llmStartTime = Date.now();
34
+ const response = await llmWithTools.invoke(messages, {
35
+ signal: abortSignal,
36
+ callbacks: iterationCallbacks ?? this.callbacks,
37
+ metadata: this.runMetadata,
38
+ });
39
+ const llmDurationMs = Date.now() - llmStartTime;
40
+ const responseMetadata = response.response_metadata;
41
+ const inputTokens = hasUsageMetadata(responseMetadata)
42
+ ? (responseMetadata.usage.input_tokens ?? 0)
43
+ : 0;
44
+ const outputTokens = hasUsageMetadata(responseMetadata)
45
+ ? (responseMetadata.usage.output_tokens ?? 0)
46
+ : 0;
47
+ const thinkingTokens = hasUsageMetadata(responseMetadata)
48
+ ? (responseMetadata.usage.thinking_tokens ?? 0)
49
+ : 0;
50
+ if (this.onTokenUsage && (inputTokens > 0 || outputTokens > 0)) {
51
+ this.onTokenUsage({ inputTokens, outputTokens, thinkingTokens });
52
+ }
53
+ const thinkingContent = (0, content_extractors_1.extractThinkingContent)(response);
54
+ const textContent = (0, content_extractors_1.extractTextContent)(response);
55
+ if (textContent) {
56
+ const messageChunk = {
57
+ role: 'assistant',
58
+ type: 'message',
59
+ text: textContent,
60
+ };
61
+ yield {
62
+ messages: [messageChunk],
63
+ };
64
+ }
65
+ messages.push(response);
66
+ return {
67
+ response,
68
+ inputTokens,
69
+ outputTokens,
70
+ llmDurationMs,
71
+ textContent,
72
+ thinkingContent,
73
+ hasToolCalls: !!(response.tool_calls && response.tool_calls.length > 0),
74
+ };
75
+ }
76
+ }
77
+ exports.AgentIterationHandler = AgentIterationHandler;
78
+ //# sourceMappingURL=agent-iteration-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-iteration-handler.js","sourceRoot":"","sources":["../../../src/code-builder/handlers/agent-iteration-handler.ts"],"names":[],"mappings":";;;AAaA,+DAA8E;AAE9E,oEAAyF;AAOzF,SAAS,gBAAgB,CAAC,QAAiB;IAC1C,OAAO,CACN,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,KAAK,IAAI;QACjB,OAAO,IAAI,QAAQ;QACnB,OAAQ,QAAsC,CAAC,KAAK,KAAK,QAAQ,CACjE,CAAC;AACH,CAAC;AA8DD,MAAa,qBAAqB;IACzB,YAAY,CAA+B;IAC3C,SAAS,CAAa;IACtB,WAAW,CAA2B;IAE9C,YAAY,SAAsC,EAAE;QACnD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,CAAC;IAGD,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAGD,cAAc;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAgBD,KAAK,CAAC,CAAC,SAAS,CACf,MAAuB;QAEvB,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;QAGtF,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAGD,IAAA,mCAAyB,EAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE;YACpD,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,kBAAkB,IAAI,IAAI,CAAC,SAAS;YAC/C,QAAQ,EAAE,IAAI,CAAC,WAAW;SAC1B,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;QAGhD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,MAAM,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;YACrD,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;YACtD,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;YACxD,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC,CAAC;QAGL,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,eAAe,GAAG,IAAA,2CAAsB,EAAC,QAAQ,CAAC,CAAC;QAGzD,MAAM,WAAW,GAAG,IAAA,uCAAkB,EAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,YAAY,GAAsB;gBACvC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;aACjB,CAAC;YACF,MAAM;gBACL,QAAQ,EAAE,CAAC,YAAY,CAAC;aACxB,CAAC;QACH,CAAC;QAGD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExB,OAAO;YACN,QAAQ;YACR,WAAW;YACX,YAAY;YACZ,aAAa;YACb,WAAW;YACX,eAAe;YACf,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;SACvE,CAAC;IACH,CAAC;CACD;AArGD,sDAqGC"}
@@ -0,0 +1,29 @@
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 ParseAndValidateFn = (code: string, currentWorkflow?: WorkflowJSON) => Promise<ParseAndValidateResult>;
7
+ type GetErrorContextFn = (code: string, errorMessage: string) => string;
8
+ export interface AutoFinalizeHandlerConfig {
9
+ parseAndValidate: ParseAndValidateFn;
10
+ getErrorContext: GetErrorContextFn;
11
+ }
12
+ export interface AutoFinalizeParams {
13
+ code: string;
14
+ currentWorkflow: WorkflowJSON | undefined;
15
+ messages: BaseMessage[];
16
+ warningTracker?: WarningTracker;
17
+ }
18
+ export interface AutoFinalizeResult {
19
+ success: boolean;
20
+ workflow?: WorkflowJSON;
21
+ parseDuration?: number;
22
+ }
23
+ export declare class AutoFinalizeHandler {
24
+ private parseAndValidate;
25
+ private getErrorContext;
26
+ constructor(config: AutoFinalizeHandlerConfig);
27
+ execute(params: AutoFinalizeParams): AsyncGenerator<StreamOutput, AutoFinalizeResult, unknown>;
28
+ }
29
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutoFinalizeHandler = void 0;
4
+ const constants_1 = require("../constants");
5
+ const content_extractors_1 = require("../utils/content-extractors");
6
+ const format_warnings_1 = require("../utils/format-warnings");
7
+ class AutoFinalizeHandler {
8
+ parseAndValidate;
9
+ getErrorContext;
10
+ constructor(config) {
11
+ this.parseAndValidate = config.parseAndValidate;
12
+ this.getErrorContext = config.getErrorContext;
13
+ }
14
+ async *execute(params) {
15
+ const { code, currentWorkflow, messages, warningTracker } = params;
16
+ const parseStartTime = Date.now();
17
+ try {
18
+ const result = await this.parseAndValidate(code, currentWorkflow);
19
+ const parseDuration = Date.now() - parseStartTime;
20
+ if (result.warnings.length > 0) {
21
+ const newWarnings = warningTracker
22
+ ? warningTracker.filterNewWarnings(result.warnings)
23
+ : result.warnings;
24
+ if (newWarnings.length > 0) {
25
+ if (warningTracker) {
26
+ warningTracker.markAsSeen(newWarnings);
27
+ }
28
+ const warningText = (0, format_warnings_1.formatWarnings)(newWarnings, warningTracker);
29
+ const errorContext = this.getErrorContext(code, newWarnings[0].message);
30
+ (0, content_extractors_1.pushValidationFeedback)(messages, `Validation warnings:\n${warningText}\n\n${errorContext}\n\n${constants_1.FIX_VALIDATION_ERRORS_INSTRUCTION}`);
31
+ return { success: false, parseDuration };
32
+ }
33
+ }
34
+ return {
35
+ success: true,
36
+ workflow: result.workflow,
37
+ parseDuration,
38
+ };
39
+ }
40
+ catch (error) {
41
+ const parseDuration = Date.now() - parseStartTime;
42
+ const errorMessage = error instanceof Error ? error.message : String(error);
43
+ const errorContext = this.getErrorContext(code, errorMessage);
44
+ (0, content_extractors_1.pushValidationFeedback)(messages, `Parse error: ${errorMessage}\n\n${errorContext}\n\n${constants_1.FIX_VALIDATION_ERRORS_INSTRUCTION}`);
45
+ return { success: false, parseDuration };
46
+ }
47
+ }
48
+ }
49
+ exports.AutoFinalizeHandler = AutoFinalizeHandler;
50
+ //# sourceMappingURL=auto-finalize-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-finalize-handler.js","sourceRoot":"","sources":["../../../src/code-builder/handlers/auto-finalize-handler.ts"],"names":[],"mappings":";;;AAWA,4CAAiE;AAGjE,oEAAqE;AACrE,8DAA0D;AAwD1D,MAAa,mBAAmB;IACvB,gBAAgB,CAAqB;IACrC,eAAe,CAAoB;IAE3C,YAAY,MAAiC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/C,CAAC;IAUD,KAAK,CAAC,CAAC,OAAO,CACb,MAA0B;QAE1B,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;QAGnE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;YAGlD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,cAAc;oBACjC,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACnD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAEnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,cAAc,EAAE,CAAC;wBACpB,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oBACxC,CAAC;oBAED,MAAM,WAAW,GAAG,IAAA,gCAAc,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;oBAChE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAGxE,IAAA,2CAAsB,EACrB,QAAQ,EACR,yBAAyB,WAAW,OAAO,YAAY,OAAO,6CAAiC,EAAE,CACjG,CAAC;oBAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;gBAC1C,CAAC;YACF,CAAC;YAGD,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,aAAa;aACb,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;YAClD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAG9D,IAAA,2CAAsB,EACrB,QAAQ,EACR,gBAAgB,YAAY,OAAO,YAAY,OAAO,6CAAiC,EAAE,CACzF,CAAC;YAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAC1C,CAAC;IACF,CAAC;CACD;AAxED,kDAwEC"}