@n8n/instance-ai 1.12.4 → 1.13.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 (253) hide show
  1. package/dist/agent/apply-agent-thinking.d.ts +2 -0
  2. package/dist/agent/apply-agent-thinking.js +41 -0
  3. package/dist/agent/apply-agent-thinking.js.map +1 -0
  4. package/dist/agent/instance-agent.js +10 -2
  5. package/dist/agent/instance-agent.js.map +1 -1
  6. package/dist/agent/sanitize-mcp-schemas.js +133 -125
  7. package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
  8. package/dist/agent/shared-prompts.d.ts +0 -1
  9. package/dist/agent/shared-prompts.js +4 -11
  10. package/dist/agent/shared-prompts.js.map +1 -1
  11. package/dist/agent/sub-agent-debriefing.d.ts +4 -4
  12. package/dist/agent/system-prompt.js +3 -10
  13. package/dist/agent/system-prompt.js.map +1 -1
  14. package/dist/build.tsbuildinfo +1 -1
  15. package/dist/debug/run-debug-buffer.d.ts +63 -0
  16. package/dist/debug/run-debug-buffer.js +177 -0
  17. package/dist/debug/run-debug-buffer.js.map +1 -0
  18. package/dist/debug/sanitize-debug-snapshot.d.ts +2 -0
  19. package/dist/debug/sanitize-debug-snapshot.js +88 -0
  20. package/dist/debug/sanitize-debug-snapshot.js.map +1 -0
  21. package/dist/error-formatting.js +3 -5
  22. package/dist/error-formatting.js.map +1 -1
  23. package/dist/index.d.ts +5 -2
  24. package/dist/index.js +8 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/knowledge-base/build-templates-index.d.ts +1 -0
  27. package/dist/knowledge-base/build-templates-index.js +18 -2
  28. package/dist/knowledge-base/build-templates-index.js.map +1 -1
  29. package/dist/knowledge-base/materialize-knowledge-base.d.ts +2 -3
  30. package/dist/knowledge-base/materialize-knowledge-base.js +10 -7
  31. package/dist/knowledge-base/materialize-knowledge-base.js.map +1 -1
  32. package/dist/mcp/mcp-client-manager.d.ts +1 -1
  33. package/dist/mcp/mcp-client-manager.js +13 -9
  34. package/dist/mcp/mcp-client-manager.js.map +1 -1
  35. package/dist/runtime/memory-task-registry.d.ts +8 -0
  36. package/dist/runtime/memory-task-registry.js +42 -0
  37. package/dist/runtime/memory-task-registry.js.map +1 -0
  38. package/dist/runtime/resumable-stream-executor.d.ts +3 -0
  39. package/dist/runtime/resumable-stream-executor.js +171 -90
  40. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  41. package/dist/runtime/run-state-registry.d.ts +2 -0
  42. package/dist/runtime/run-state-registry.js +3 -0
  43. package/dist/runtime/run-state-registry.js.map +1 -1
  44. package/dist/runtime/stream-runner.d.ts +3 -0
  45. package/dist/runtime/stream-runner.js +3 -0
  46. package/dist/runtime/stream-runner.js.map +1 -1
  47. package/dist/skills/materialize-runtime-skills.d.ts +3 -3
  48. package/dist/skills/materialize-runtime-skills.js +1 -1
  49. package/dist/skills/materialize-runtime-skills.js.map +1 -1
  50. package/dist/source-map-filter.js +0 -1
  51. package/dist/source-map-filter.js.map +1 -1
  52. package/dist/storage/terminal-outcome-storage.d.ts +2 -2
  53. package/dist/storage/workflow-loop-storage.d.ts +75 -4
  54. package/dist/stream/map-chunk.js +198 -237
  55. package/dist/stream/map-chunk.js.map +1 -1
  56. package/dist/stream/output-redaction.js +2 -2
  57. package/dist/stream/output-redaction.js.map +1 -1
  58. package/dist/stream/usage-accumulator.d.ts +90 -0
  59. package/dist/stream/usage-accumulator.js +89 -0
  60. package/dist/stream/usage-accumulator.js.map +1 -0
  61. package/dist/stream/work-summary-accumulator.d.ts +6 -6
  62. package/dist/tools/attachments/parse-file.tool.js +1 -1
  63. package/dist/tools/attachments/parse-file.tool.js.map +1 -1
  64. package/dist/tools/credentials.tool.js +4 -1
  65. package/dist/tools/credentials.tool.js.map +1 -1
  66. package/dist/tools/data-tables.tool.js +5 -2
  67. package/dist/tools/data-tables.tool.js.map +1 -1
  68. package/dist/tools/evals/column-ref-utils.d.ts +1 -2
  69. package/dist/tools/evals/column-ref-utils.js +19 -18
  70. package/dist/tools/evals/column-ref-utils.js.map +1 -1
  71. package/dist/tools/evals/describe-metric-for-workflow.service.js +7 -25
  72. package/dist/tools/evals/describe-metric-for-workflow.service.js.map +1 -1
  73. package/dist/tools/evals/detect-tool-refs.service.js +2 -1
  74. package/dist/tools/evals/detect-tool-refs.service.js.map +1 -1
  75. package/dist/tools/evals/eval-data-requirements.service.js +10 -9
  76. package/dist/tools/evals/eval-data-requirements.service.js.map +1 -1
  77. package/dist/tools/evals/evals.tool.js +2 -2
  78. package/dist/tools/evals/evals.tool.js.map +1 -1
  79. package/dist/tools/evals/extract-rows-from-history.service.js +8 -8
  80. package/dist/tools/evals/extract-rows-from-history.service.js.map +1 -1
  81. package/dist/tools/evals/generate-sample-rows.service.d.ts +2 -2
  82. package/dist/tools/evals/generate-sample-rows.service.js +30 -49
  83. package/dist/tools/evals/generate-sample-rows.service.js.map +1 -1
  84. package/dist/tools/evals/generate-tool-ref-pin-data.service.js +10 -23
  85. package/dist/tools/evals/generate-tool-ref-pin-data.service.js.map +1 -1
  86. package/dist/tools/evals/metric-catalog.js +3 -3
  87. package/dist/tools/evals/metric-catalog.js.map +1 -1
  88. package/dist/tools/executions.tool.js +10 -2
  89. package/dist/tools/executions.tool.js.map +1 -1
  90. package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +1 -1
  91. package/dist/tools/filesystem/create-tools-from-mcp-server.js +8 -10
  92. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  93. package/dist/tools/index.js +1 -1
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/nodes/node-search-engine.js +21 -42
  96. package/dist/tools/nodes/node-search-engine.js.map +1 -1
  97. package/dist/tools/nodes/node-search-engine.types.d.ts +2 -0
  98. package/dist/tools/nodes/preferred-chat-model.d.ts +1 -0
  99. package/dist/tools/nodes/preferred-chat-model.js +19 -0
  100. package/dist/tools/nodes/preferred-chat-model.js.map +1 -0
  101. package/dist/tools/nodes/suggested-nodes-data.js +13 -3
  102. package/dist/tools/nodes/suggested-nodes-data.js.map +1 -1
  103. package/dist/tools/nodes.tool.js +32 -7
  104. package/dist/tools/nodes.tool.js.map +1 -1
  105. package/dist/tools/orchestration/complete-checkpoint.tool.js +3 -5
  106. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
  107. package/dist/tools/orchestration/eval-data-agent.tool.js +2 -1
  108. package/dist/tools/orchestration/eval-data-agent.tool.js.map +1 -1
  109. package/dist/tools/orchestration/eval-setup-agent.prompt.d.ts +1 -1
  110. package/dist/tools/orchestration/eval-setup-agent.prompt.js +3 -3
  111. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +2 -2
  112. package/dist/tools/orchestration/report-verification-verdict.tool.js +1 -1
  113. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  114. package/dist/tools/orchestration/verify-built-workflow.tool.js +328 -315
  115. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  116. package/dist/tools/research.tool.js +1 -1
  117. package/dist/tools/research.tool.js.map +1 -1
  118. package/dist/tools/shared/ask-user.tool.d.ts +4 -4
  119. package/dist/tools/shared/ask-user.tool.js +6 -1
  120. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  121. package/dist/tools/tool-ids.d.ts +0 -1
  122. package/dist/tools/tool-ids.js +0 -1
  123. package/dist/tools/tool-ids.js.map +1 -1
  124. package/dist/tools/workflows/build-workflow.tool.d.ts +4 -22
  125. package/dist/tools/workflows/build-workflow.tool.js +374 -328
  126. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  127. package/dist/tools/workflows/classify-node-destructiveness.service.d.ts +7 -0
  128. package/dist/tools/workflows/classify-node-destructiveness.service.js +307 -0
  129. package/dist/tools/workflows/classify-node-destructiveness.service.js.map +1 -0
  130. package/dist/tools/workflows/generate-simulation-fixtures.service.d.ts +8 -0
  131. package/dist/tools/workflows/generate-simulation-fixtures.service.js +95 -0
  132. package/dist/tools/workflows/generate-simulation-fixtures.service.js.map +1 -0
  133. package/dist/tools/workflows/plan-verification-simulation.d.ts +16 -0
  134. package/dist/tools/workflows/plan-verification-simulation.js +76 -0
  135. package/dist/tools/workflows/plan-verification-simulation.js.map +1 -0
  136. package/dist/tools/workflows/resolve-credentials.d.ts +0 -2
  137. package/dist/tools/workflows/resolve-credentials.js +0 -13
  138. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  139. package/dist/tools/workflows/setup-workflow.service.js +259 -215
  140. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  141. package/dist/tools/workflows/validate-workflow.service.js +81 -66
  142. package/dist/tools/workflows/validate-workflow.service.js.map +1 -1
  143. package/dist/tools/workflows/workflow-build-context.d.ts +33 -0
  144. package/dist/tools/workflows/workflow-build-context.js +80 -0
  145. package/dist/tools/workflows/workflow-build-context.js.map +1 -0
  146. package/dist/tools/workflows/workflow-build-remediation.d.ts +11 -0
  147. package/dist/tools/workflows/workflow-build-remediation.js +89 -0
  148. package/dist/tools/workflows/workflow-build-remediation.js.map +1 -0
  149. package/dist/tools/workflows/workflow-build-reporting.d.ts +19 -0
  150. package/dist/tools/workflows/workflow-build-reporting.js +78 -0
  151. package/dist/tools/workflows/workflow-build-reporting.js.map +1 -0
  152. package/dist/tools/workflows/workflow-build-routing.d.ts +2 -0
  153. package/dist/tools/workflows/workflow-build-routing.js +60 -0
  154. package/dist/tools/workflows/workflow-build-routing.js.map +1 -0
  155. package/dist/tools/workflows/workflow-build-telemetry.d.ts +18 -0
  156. package/dist/tools/workflows/workflow-build-telemetry.js +33 -0
  157. package/dist/tools/workflows/workflow-build-telemetry.js.map +1 -0
  158. package/dist/tools/workflows/workflow-file-bindings.d.ts +28 -0
  159. package/dist/tools/workflows/workflow-file-bindings.js +104 -0
  160. package/dist/tools/workflows/workflow-file-bindings.js.map +1 -0
  161. package/dist/tools/workflows/workflow-json-utils.d.ts +3 -0
  162. package/dist/tools/workflows/workflow-json-utils.js +54 -5
  163. package/dist/tools/workflows/workflow-json-utils.js.map +1 -1
  164. package/dist/tools/workflows/workflow-source-compiler.d.ts +20 -0
  165. package/dist/tools/workflows/workflow-source-compiler.js +236 -0
  166. package/dist/tools/workflows/workflow-source-compiler.js.map +1 -0
  167. package/dist/tools/workflows/workflow-validation-warnings.d.ts +14 -0
  168. package/dist/tools/workflows/workflow-validation-warnings.js +28 -0
  169. package/dist/tools/workflows/workflow-validation-warnings.js.map +1 -0
  170. package/dist/tools/workflows.tool.js +107 -99
  171. package/dist/tools/workflows.tool.js.map +1 -1
  172. package/dist/tracing/langsmith-tracing.js +7 -7
  173. package/dist/tracing/langsmith-tracing.js.map +1 -1
  174. package/dist/tracing/trace-payloads.d.ts +2 -1
  175. package/dist/tracing/trace-payloads.js +152 -114
  176. package/dist/tracing/trace-payloads.js.map +1 -1
  177. package/dist/types.d.ts +24 -4
  178. package/dist/types.js.map +1 -1
  179. package/dist/utils/eval-agents.d.ts +0 -3
  180. package/dist/utils/eval-agents.js +3 -11
  181. package/dist/utils/eval-agents.js.map +1 -1
  182. package/dist/utils/generate-validated-json.d.ts +16 -0
  183. package/dist/utils/generate-validated-json.js +38 -0
  184. package/dist/utils/generate-validated-json.js.map +1 -0
  185. package/dist/utils/stream-helpers.d.ts +0 -1
  186. package/dist/utils/stream-helpers.js +5 -8
  187. package/dist/utils/stream-helpers.js.map +1 -1
  188. package/dist/workflow-builder/build-failure-tracker.js +25 -1
  189. package/dist/workflow-builder/build-failure-tracker.js.map +1 -1
  190. package/dist/workflow-builder/index.d.ts +0 -4
  191. package/dist/workflow-builder/index.js +1 -11
  192. package/dist/workflow-builder/index.js.map +1 -1
  193. package/dist/workflow-loop/guidance.js +14 -15
  194. package/dist/workflow-loop/guidance.js.map +1 -1
  195. package/dist/workflow-loop/runtime.js +1 -0
  196. package/dist/workflow-loop/runtime.js.map +1 -1
  197. package/dist/workflow-loop/setup-verification-policy.d.ts +8 -0
  198. package/dist/workflow-loop/setup-verification-policy.js +25 -0
  199. package/dist/workflow-loop/setup-verification-policy.js.map +1 -0
  200. package/dist/workflow-loop/verification-obligation.js +13 -8
  201. package/dist/workflow-loop/verification-obligation.js.map +1 -1
  202. package/dist/workflow-loop/workflow-loop-controller.js +26 -7
  203. package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
  204. package/dist/workflow-loop/workflow-loop-state.d.ts +90 -6
  205. package/dist/workflow-loop/workflow-loop-state.js +13 -1
  206. package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
  207. package/dist/workspace/builder-templates-service.d.ts +5 -5
  208. package/dist/workspace/builder-templates-service.js +17 -14
  209. package/dist/workspace/builder-templates-service.js.map +1 -1
  210. package/dist/workspace/create-workspace.js +8 -1
  211. package/dist/workspace/create-workspace.js.map +1 -1
  212. package/dist/workspace/prebaked-workspace-bundle.d.ts +2 -2
  213. package/dist/workspace/prebaked-workspace-bundle.js +5 -5
  214. package/dist/workspace/prebaked-workspace-bundle.js.map +1 -1
  215. package/dist/workspace/sandbox-setup.d.ts +2 -2
  216. package/dist/workspace/sandbox-setup.js +15 -38
  217. package/dist/workspace/sandbox-setup.js.map +1 -1
  218. package/dist/workspace/snapshot-manager.d.ts +1 -1
  219. package/dist/workspace/template-telemetry.js +2 -5
  220. package/dist/workspace/template-telemetry.js.map +1 -1
  221. package/dist/workspace/workspace-files.d.ts +1 -1
  222. package/dist/workspace/workspace-files.js +3 -3
  223. package/dist/workspace/workspace-files.js.map +1 -1
  224. package/dist/workspace/workspace-manifest.js +2 -2
  225. package/dist/workspace/workspace-manifest.js.map +1 -1
  226. package/dist/workspace/workspace-paths.d.ts +4 -0
  227. package/dist/workspace/workspace-paths.js +25 -0
  228. package/dist/workspace/workspace-paths.js.map +1 -0
  229. package/knowledge-base/reference/open-ai-output-shape.md +79 -0
  230. package/knowledge-base/reference/workflow-builder-guardrails.md +15 -0
  231. package/package.json +13 -12
  232. package/skills/planned-task-runtime/SKILL.md +3 -2
  233. package/skills/planning/SKILL.md +5 -0
  234. package/skills/post-build-flow/SKILL.md +25 -9
  235. package/skills/workflow-builder/SKILL.md +96 -134
  236. package/dist/tools/workflows/submit-workflow-identity.d.ts +0 -39
  237. package/dist/tools/workflows/submit-workflow-identity.js +0 -181
  238. package/dist/tools/workflows/submit-workflow-identity.js.map +0 -1
  239. package/dist/tools/workflows/submit-workflow.tool.d.ts +0 -223
  240. package/dist/tools/workflows/submit-workflow.tool.js +0 -491
  241. package/dist/tools/workflows/submit-workflow.tool.js.map +0 -1
  242. package/dist/workflow-builder/extract-code.d.ts +0 -5
  243. package/dist/workflow-builder/extract-code.js +0 -105
  244. package/dist/workflow-builder/extract-code.js.map +0 -1
  245. package/dist/workflow-builder/parse-validate.d.ts +0 -10
  246. package/dist/workflow-builder/parse-validate.js +0 -50
  247. package/dist/workflow-builder/parse-validate.js.map +0 -1
  248. package/dist/workflow-builder/patch-code.d.ts +0 -14
  249. package/dist/workflow-builder/patch-code.js +0 -117
  250. package/dist/workflow-builder/patch-code.js.map +0 -1
  251. package/dist/workflow-builder/types.d.ts +0 -11
  252. package/dist/workflow-builder/types.js +0 -3
  253. package/dist/workflow-builder/types.js.map +0 -1
@@ -1,491 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.submitWorkflowOutputSchema = exports.submitWorkflowErrorDetailSchema = exports.submitWorkflowInputSchema = exports.resolveCredentials = exports.buildCredentialMap = void 0;
4
- exports.normalizeWorkflowNodeParameters = normalizeWorkflowNodeParameters;
5
- exports.extractStructureIssues = extractStructureIssues;
6
- exports.buildNodeIndex = buildNodeIndex;
7
- exports.buildErrorDetails = buildErrorDetails;
8
- exports.ensureWebhookIds = ensureWebhookIds;
9
- exports.resolveSandboxWorkflowFilePath = resolveSandboxWorkflowFilePath;
10
- exports.classifySubmitFailure = classifySubmitFailure;
11
- exports.createSubmitWorkflowTool = createSubmitWorkflowTool;
12
- const agents_1 = require("@n8n/agents");
13
- const sandbox_1 = require("@n8n/agents/sandbox");
14
- const utils_1 = require("@n8n/utils");
15
- const workflow_sdk_1 = require("@n8n/workflow-sdk");
16
- const node_crypto_1 = require("node:crypto");
17
- const zod_1 = require("zod");
18
- const resolve_credentials_1 = require("./resolve-credentials");
19
- const setup_workflow_service_1 = require("./setup-workflow.service");
20
- const workflow_json_utils_1 = require("./workflow-json-utils");
21
- const workflow_builder_1 = require("../../workflow-builder");
22
- const remediation_1 = require("../../workflow-loop/remediation");
23
- const sandbox_fs_1 = require("../../workspace/sandbox-fs");
24
- function hashContent(content) {
25
- return (0, node_crypto_1.createHash)('sha256')
26
- .update(content ?? '', 'utf8')
27
- .digest('hex');
28
- }
29
- const WEBHOOK_NODE_TYPES = new Set([
30
- 'n8n-nodes-base.webhook',
31
- 'n8n-nodes-base.formTrigger',
32
- '@n8n/n8n-nodes-langchain.mcpTrigger',
33
- '@n8n/n8n-nodes-langchain.chatTrigger',
34
- ]);
35
- function isRecord(value) {
36
- return typeof value === 'object' && value !== null && !Array.isArray(value);
37
- }
38
- function normalizeWorkflowNodeParameters(json) {
39
- for (const node of json.nodes ?? []) {
40
- if (!isRecord(node.parameters)) {
41
- node.parameters = {};
42
- }
43
- }
44
- }
45
- function extractStructureIssues(error) {
46
- if (!error || typeof error !== 'object')
47
- return undefined;
48
- const candidate = error.issues;
49
- if (!Array.isArray(candidate) || candidate.length === 0)
50
- return undefined;
51
- for (const issue of candidate) {
52
- if (!issue || typeof issue !== 'object')
53
- return undefined;
54
- const { path, message } = issue;
55
- if (!Array.isArray(path) || typeof message !== 'string')
56
- return undefined;
57
- }
58
- return candidate;
59
- }
60
- function buildNodeIndex(json) {
61
- return (json.nodes ?? []).map((node, index) => ({
62
- index,
63
- name: typeof node.name === 'string' ? node.name : '',
64
- }));
65
- }
66
- function valueAtPath(root, path) {
67
- let cursor = root;
68
- for (const segment of path) {
69
- if (cursor === null || cursor === undefined)
70
- return undefined;
71
- if (typeof segment === 'number') {
72
- if (!Array.isArray(cursor))
73
- return undefined;
74
- cursor = cursor[segment];
75
- }
76
- else {
77
- if (typeof cursor !== 'object')
78
- return undefined;
79
- cursor = cursor[segment];
80
- }
81
- }
82
- return cursor;
83
- }
84
- function formatIssuePath(path) {
85
- if (path.length === 0)
86
- return 'workflow';
87
- return path.reduce((acc, segment) => {
88
- if (typeof segment === 'number')
89
- return `${acc}[${segment}]`;
90
- return acc ? `${acc}.${segment}` : segment;
91
- }, '');
92
- }
93
- function buildErrorDetails(issues, json) {
94
- return issues.map((issue) => {
95
- const path = issue.path;
96
- const detail = {
97
- path: formatIssuePath(path),
98
- code: issue.code,
99
- message: issue.message,
100
- offendingValue: valueAtPath(json, path),
101
- };
102
- const [head, second] = path;
103
- if (head === 'nodes' && typeof second === 'number') {
104
- detail.nodeJson = json.nodes?.[second];
105
- }
106
- else if (head === 'connections' && typeof second === 'string') {
107
- detail.connectionSlice = json.connections?.[second];
108
- }
109
- return detail;
110
- });
111
- }
112
- async function ensureWebhookIds(json, workflowId, ctx) {
113
- const existingWebhookIds = new Map();
114
- if (workflowId) {
115
- try {
116
- const existing = await ctx.workflowService.getAsWorkflowJSON(workflowId);
117
- for (const node of existing.nodes ?? []) {
118
- if (node.webhookId && node.name) {
119
- existingWebhookIds.set(node.name, node.webhookId);
120
- }
121
- }
122
- }
123
- catch {
124
- }
125
- }
126
- for (const node of json.nodes ?? []) {
127
- if (WEBHOOK_NODE_TYPES.has(node.type) && !node.webhookId) {
128
- node.webhookId = (node.name && existingWebhookIds.get(node.name)) ?? (0, node_crypto_1.randomUUID)();
129
- }
130
- }
131
- }
132
- function enhanceValidationErrors(errors) {
133
- const needsHtmlGuidance = errors.some((error) => error.includes('[MISSING_EXPRESSION_PREFIX]') && error.includes('parameter "html"'));
134
- if (!needsHtmlGuidance)
135
- return errors;
136
- return [
137
- ...errors,
138
- 'HTML node guidance: do not embed bare {{ $json... }} inside a large HTML string. Build the final HTML in a Code node and inject serialized/base64 data there, or make the entire parameter an expression string starting with =.',
139
- ];
140
- }
141
- function enhanceBuildErrors(errors) {
142
- const needsTemplateGuidance = errors.some((error) => {
143
- const normalized = error.toLowerCase();
144
- return (normalized.includes('unterminated template') ||
145
- normalized.includes('unexpected end of input') ||
146
- normalized.includes('unexpected identifier') ||
147
- normalized.includes('unexpected token') ||
148
- normalized.includes('expected unicode escape') ||
149
- normalized.includes('missing ) after argument list'));
150
- });
151
- if (!needsTemplateGuidance)
152
- return errors;
153
- return [
154
- ...errors,
155
- 'Code node guidance: for large HTML, write it to a separate file (e.g., chunks/page.html), then in your SDK TypeScript use readFileSync + JSON.stringify to safely embed it. NEVER embed large HTML directly in jsCode. See the web_app_pattern in your instructions.',
156
- ];
157
- }
158
- var resolve_credentials_2 = require("./resolve-credentials");
159
- Object.defineProperty(exports, "buildCredentialMap", { enumerable: true, get: function () { return resolve_credentials_2.buildCredentialMap; } });
160
- Object.defineProperty(exports, "resolveCredentials", { enumerable: true, get: function () { return resolve_credentials_2.resolveCredentials; } });
161
- exports.submitWorkflowInputSchema = zod_1.z.object({
162
- filePath: zod_1.z
163
- .string()
164
- .optional()
165
- .describe('Path to the TypeScript workflow file (defaults to the builder task main file)'),
166
- workflowId: zod_1.z
167
- .string()
168
- .optional()
169
- .describe('Existing n8n workflow id to update (a 16-character nanoid returned by a previous submit-workflow call or workflows tool). OMIT this argument when creating a new workflow. Do NOT pass the local id from workflow(id, name) in your SDK code — that string is a local handle, not an n8n workflow id.'),
170
- projectId: zod_1.z
171
- .string()
172
- .optional()
173
- .describe('Project ID to create the workflow in. Defaults to personal project.'),
174
- name: zod_1.z.string().optional().describe('Workflow name (required for new workflows)'),
175
- });
176
- exports.submitWorkflowErrorDetailSchema = zod_1.z.object({
177
- path: zod_1.z.string(),
178
- code: zod_1.z.string(),
179
- message: zod_1.z.string(),
180
- offendingValue: zod_1.z.unknown().optional(),
181
- nodeJson: zod_1.z.unknown().optional(),
182
- connectionSlice: zod_1.z.unknown().optional(),
183
- });
184
- exports.submitWorkflowOutputSchema = zod_1.z.object({
185
- success: zod_1.z.boolean(),
186
- workflowId: zod_1.z.string().optional(),
187
- workflowName: zod_1.z.string().optional(),
188
- verificationGuidance: zod_1.z
189
- .string()
190
- .optional()
191
- .describe('Builder-facing next step after a successful submit. Follow this before setup.'),
192
- mockedNodeNames: zod_1.z.array(zod_1.z.string()).optional(),
193
- mockedCredentialTypes: zod_1.z.array(zod_1.z.string()).optional(),
194
- mockedCredentialsByNode: zod_1.z.record(zod_1.z.array(zod_1.z.string())).optional(),
195
- verificationPinData: zod_1.z.record(zod_1.z.array(zod_1.z.record(zod_1.z.unknown()))).optional(),
196
- usesWorkflowPinDataForVerification: zod_1.z.boolean().optional(),
197
- referencedWorkflowIds: zod_1.z.array(zod_1.z.string()).optional(),
198
- remediation: zod_1.z
199
- .object({
200
- category: zod_1.z.enum(['code_fixable', 'needs_setup', 'blocked']),
201
- shouldEdit: zod_1.z.boolean(),
202
- guidance: zod_1.z.string(),
203
- reason: zod_1.z.string().optional(),
204
- remainingSubmitFixes: zod_1.z.number().int().min(0).optional(),
205
- attemptCount: zod_1.z.number().int().min(0).optional(),
206
- })
207
- .optional(),
208
- errors: zod_1.z.array(zod_1.z.string()).optional(),
209
- errorDetails: zod_1.z.array(exports.submitWorkflowErrorDetailSchema).optional(),
210
- nodeIndex: zod_1.z.array(zod_1.z.object({ index: zod_1.z.number().int().min(0), name: zod_1.z.string() })).optional(),
211
- warnings: zod_1.z.array(zod_1.z.string()).optional(),
212
- });
213
- const POST_SUBMIT_VERIFICATION_GUIDANCE = 'Call verify-built-workflow next with the work item ID from your briefing and this workflowId. ' +
214
- 'It uses sidecar or saved pin data to fake unavailable services, so run it before any setup handoff.';
215
- function resolveSandboxWorkflowFilePath(rawFilePath, root) {
216
- if (!rawFilePath) {
217
- return `${root}/src/workflow.ts`;
218
- }
219
- if (rawFilePath.startsWith('~/')) {
220
- return `${root.replace(/\/workspace$/, '')}/${rawFilePath.slice(2)}`;
221
- }
222
- if (!rawFilePath.startsWith('/')) {
223
- return `${root}/${rawFilePath}`;
224
- }
225
- return rawFilePath;
226
- }
227
- function classifySubmitFailure(errors, reason = 'submit_failed') {
228
- const text = errors.join('\n').toLowerCase();
229
- if (isCredentialSaveFailure(text)) {
230
- return (0, remediation_1.createRemediation)({
231
- category: 'needs_setup',
232
- shouldEdit: false,
233
- reason,
234
- guidance: 'Workflow submission failed because a credential is missing or inaccessible. Stop editing and route the user to credential setup.',
235
- });
236
- }
237
- if (reason === 'workflow_save_failed') {
238
- if (text.includes('workflow structure is invalid') || text.includes('invalid_type')) {
239
- return (0, remediation_1.createRemediation)({
240
- category: 'code_fixable',
241
- shouldEdit: true,
242
- reason,
243
- guidance: 'Fix the workflow code in one batched edit, then call submit-workflow again.',
244
- });
245
- }
246
- if (text.includes('workflow not found')) {
247
- return (0, remediation_1.createRemediation)({
248
- category: 'code_fixable',
249
- shouldEdit: true,
250
- reason,
251
- guidance: 'The workflowId passed to submit-workflow does not exist. Omit the workflowId argument to create a new workflow, or pass an existing workflow id. Do not reuse the local id from workflow(id, name) in your SDK code — that is a local handle, not an n8n workflow id.',
252
- });
253
- }
254
- return (0, remediation_1.createRemediation)({
255
- category: 'blocked',
256
- shouldEdit: false,
257
- reason,
258
- guidance: 'Workflow submission failed due to an internal or service error. Stop editing and ask the user to retry or check instance health.',
259
- });
260
- }
261
- if (text.includes('blocked by admin') ||
262
- text.includes('read-only') ||
263
- text.includes('not accessible') ||
264
- text.includes('permission')) {
265
- return (0, remediation_1.createRemediation)({
266
- category: 'blocked',
267
- shouldEdit: false,
268
- reason,
269
- guidance: 'Workflow submission is blocked by permissions or instance configuration. Stop editing and explain the blocker to the user.',
270
- });
271
- }
272
- return (0, remediation_1.createRemediation)({
273
- category: 'code_fixable',
274
- shouldEdit: true,
275
- reason,
276
- guidance: 'Fix the workflow code in one batched edit, then call submit-workflow again.',
277
- });
278
- }
279
- function isCredentialSaveFailure(text) {
280
- if (!text.includes('credential'))
281
- return false;
282
- return (text.includes('not found') ||
283
- text.includes('missing') ||
284
- text.includes('not accessible') ||
285
- text.includes('no access') ||
286
- text.includes('do not have access') ||
287
- text.includes("don't have access") ||
288
- text.includes('not shared') ||
289
- text.includes('unauthorized'));
290
- }
291
- function createSubmitWorkflowTool(context, workspace, credentialMap = new Map(), onAttempt, options = {}) {
292
- return new agents_1.Tool('submit-workflow')
293
- .description('Submit a workflow from a TypeScript file in the sandbox. Reads the file, validates it, ' +
294
- 'and saves it to n8n as a draft. Publishing policy lives in the builder prompt ' +
295
- '(main workflows wait for the user; sub-workflow chunks may be auto-published).')
296
- .input(exports.submitWorkflowInputSchema)
297
- .output(exports.submitWorkflowOutputSchema)
298
- .handler(async ({ filePath: rawFilePath, workflowId, projectId, name }) => {
299
- const root = options.root ?? (await (0, sandbox_1.getWorkspaceRoot)(workspace));
300
- const filePath = rawFilePath || !options.defaultFilePath
301
- ? resolveSandboxWorkflowFilePath(rawFilePath, root)
302
- : options.defaultFilePath;
303
- const sourceHash = hashContent(await (0, sandbox_fs_1.readFileViaSandbox)(workspace, filePath));
304
- const reportAttempt = async (attempt) => {
305
- await onAttempt?.({
306
- filePath,
307
- sourceHash,
308
- ...attempt,
309
- });
310
- };
311
- const permKey = workflowId ? 'updateWorkflow' : 'createWorkflow';
312
- if (context.permissions?.[permKey] === 'blocked') {
313
- const errors = ['Action blocked by admin'];
314
- const remediation = classifySubmitFailure(errors, 'permission_blocked');
315
- await reportAttempt({ success: false, errors, remediation });
316
- return { success: false, errors, remediation };
317
- }
318
- const buildResult = await (0, sandbox_fs_1.runInSandbox)(workspace, `node --import tsx build.mjs '${(0, sandbox_fs_1.escapeSingleQuotes)(filePath)}'`, root);
319
- let buildOutput;
320
- try {
321
- const stdout = buildResult.stdout.trim();
322
- const lastLine = stdout.split('\n').pop() ?? '';
323
- buildOutput = JSON.parse(lastLine);
324
- }
325
- catch {
326
- const errors = [
327
- `Failed to execute workflow file in sandbox (exit code ${buildResult.exitCode}).`,
328
- buildResult.stderr?.trim() || buildResult.stdout?.trim() || 'No output',
329
- ];
330
- const remediation = classifySubmitFailure(errors, 'sandbox_execution_failed');
331
- await reportAttempt({ success: false, errors, remediation });
332
- return {
333
- success: false,
334
- errors,
335
- remediation,
336
- };
337
- }
338
- if (!buildOutput.success || !buildOutput.workflow) {
339
- const errors = enhanceBuildErrors(buildOutput.errors ?? ['Unknown build error']);
340
- const remediation = classifySubmitFailure(errors, 'build_failed');
341
- await reportAttempt({ success: false, errors, remediation });
342
- return {
343
- success: false,
344
- errors,
345
- remediation,
346
- };
347
- }
348
- const allWarnings = (buildOutput.warnings ?? []).map((w) => ({
349
- code: w.code,
350
- message: w.message,
351
- nodeName: w.nodeName,
352
- }));
353
- const json = buildOutput.workflow;
354
- normalizeWorkflowNodeParameters(json);
355
- const schemaValidation = (0, workflow_sdk_1.validateWorkflow)(json, {
356
- nodeTypesProvider: context.nodeTypesProvider,
357
- strictMode: true,
358
- });
359
- for (const issue of [...schemaValidation.errors, ...schemaValidation.warnings]) {
360
- allWarnings.push({
361
- code: issue.code,
362
- message: issue.message,
363
- nodeName: issue.nodeName,
364
- });
365
- }
366
- const { errors, informational } = (0, workflow_builder_1.partitionWarnings)(allWarnings);
367
- if (errors.length > 0) {
368
- const formattedErrors = enhanceValidationErrors(errors.map((e) => `[${e.code}]${e.nodeName ? ` (${e.nodeName})` : ''}: ${e.message}`));
369
- const remediation = classifySubmitFailure(formattedErrors, 'validation_failed');
370
- await reportAttempt({ success: false, errors: formattedErrors, remediation });
371
- return {
372
- success: false,
373
- errors: formattedErrors,
374
- remediation,
375
- warnings: informational.length > 0
376
- ? informational.map((w) => `[${w.code}]: ${w.message}`)
377
- : undefined,
378
- };
379
- }
380
- if (name) {
381
- json.name = name;
382
- }
383
- else if (!json.name && !workflowId) {
384
- const errors = [
385
- 'Workflow name is required for new workflows. Provide a name parameter or set it in the SDK code.',
386
- ];
387
- const remediation = classifySubmitFailure(errors, 'missing_workflow_name');
388
- await reportAttempt({ success: false, errors, remediation });
389
- return {
390
- success: false,
391
- errors,
392
- remediation,
393
- };
394
- }
395
- const mockResult = await (0, resolve_credentials_1.resolveCredentials)(json, workflowId, context, credentialMap);
396
- await (0, setup_workflow_service_1.stripStaleCredentialsFromWorkflow)(context, json);
397
- await ensureWebhookIds(json, workflowId, context);
398
- let savedId;
399
- try {
400
- if (workflowId) {
401
- const updated = await context.workflowService.updateFromWorkflowJSON(workflowId, json, projectId ? { projectId } : undefined);
402
- savedId = updated.id;
403
- }
404
- else {
405
- const created = await context.workflowService.createFromWorkflowJSON(json, {
406
- ...(projectId ? { projectId } : {}),
407
- markAsAiTemporary: true,
408
- });
409
- savedId = created.id;
410
- (context.aiCreatedWorkflowIds ??= new Set()).add(created.id);
411
- }
412
- }
413
- catch (error) {
414
- const errors = [
415
- `Workflow save failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
416
- ];
417
- const remediation = classifySubmitFailure(errors, 'workflow_save_failed');
418
- const issues = extractStructureIssues(error);
419
- const errorDetails = issues ? buildErrorDetails(issues, json) : undefined;
420
- const nodeIndex = buildNodeIndex(json);
421
- await reportAttempt({
422
- success: false,
423
- errors,
424
- remediation,
425
- errorDetails,
426
- nodeIndex,
427
- });
428
- return {
429
- success: false,
430
- errors,
431
- remediation,
432
- errorDetails,
433
- nodeIndex,
434
- };
435
- }
436
- const hasMockedCredentials = mockResult.mockedNodeNames.length > 0;
437
- const referencedWorkflowIds = (0, workflow_json_utils_1.getReferencedWorkflowIds)(json);
438
- if (hasMockedCredentials) {
439
- informational.push({
440
- code: 'CREDENTIALS_MOCKED',
441
- message: `Mocked ${mockResult.mockedCredentialTypes.join(', ')} via pinned data on nodes: ${mockResult.mockedNodeNames.join(', ')}. Add real credentials before publishing.`,
442
- });
443
- }
444
- const triggerNodes = (json.nodes ?? [])
445
- .filter((n) => (0, workflow_json_utils_1.isTriggerNodeType)(n.type))
446
- .map((n) => ({ nodeName: n.name, nodeType: n.type }))
447
- .filter((t) => Boolean(t.nodeName) && Boolean(t.nodeType));
448
- const hasPlaceholders = (json.nodes ?? []).some((n) => (0, utils_1.hasPlaceholderDeep)(n.parameters));
449
- await reportAttempt({
450
- success: true,
451
- workflowId: savedId,
452
- triggerNodes,
453
- mockedNodeNames: hasMockedCredentials ? mockResult.mockedNodeNames : undefined,
454
- mockedCredentialTypes: hasMockedCredentials
455
- ? mockResult.mockedCredentialTypes
456
- : undefined,
457
- mockedCredentialsByNode: hasMockedCredentials
458
- ? mockResult.mockedCredentialsByNode
459
- : undefined,
460
- verificationPinData: hasMockedCredentials && Object.keys(mockResult.verificationPinData).length > 0
461
- ? mockResult.verificationPinData
462
- : undefined,
463
- usesWorkflowPinDataForVerification: mockResult.usesWorkflowPinDataForVerification || undefined,
464
- referencedWorkflowIds: referencedWorkflowIds.length > 0 ? referencedWorkflowIds : undefined,
465
- hasUnresolvedPlaceholders: hasPlaceholders || undefined,
466
- });
467
- return {
468
- success: true,
469
- workflowId: savedId,
470
- workflowName: json.name || undefined,
471
- verificationGuidance: POST_SUBMIT_VERIFICATION_GUIDANCE,
472
- mockedNodeNames: hasMockedCredentials ? mockResult.mockedNodeNames : undefined,
473
- mockedCredentialTypes: hasMockedCredentials
474
- ? mockResult.mockedCredentialTypes
475
- : undefined,
476
- mockedCredentialsByNode: hasMockedCredentials
477
- ? mockResult.mockedCredentialsByNode
478
- : undefined,
479
- verificationPinData: hasMockedCredentials && Object.keys(mockResult.verificationPinData).length > 0
480
- ? mockResult.verificationPinData
481
- : undefined,
482
- usesWorkflowPinDataForVerification: mockResult.usesWorkflowPinDataForVerification || undefined,
483
- referencedWorkflowIds: referencedWorkflowIds.length > 0 ? referencedWorkflowIds : undefined,
484
- warnings: informational.length > 0
485
- ? informational.map((w) => `[${w.code}]: ${w.message}`)
486
- : undefined,
487
- };
488
- })
489
- .build();
490
- }
491
- //# sourceMappingURL=submit-workflow.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submit-workflow.tool.js","sourceRoot":"","sources":["../../../src/tools/workflows/submit-workflow.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare const SDK_IMPORT_STATEMENT = "import { workflow, node, trigger, sticky, placeholder, newCredential, ifElse, switchCase, merge, splitInBatches, nextBatch, languageModel, memory, tool, outputParser, embedding, embeddings, vectorStore, retriever, documentLoader, textSplitter, fromAi, expr } from '@n8n/workflow-sdk';";
2
- export declare function stripImportStatements(code: string): string;
3
- export declare function stripSdkImports(code: string): string;
4
- export declare function resolveLocalImports(code: string, basePath: string, readFile: (filePath: string) => Promise<string | null>): Promise<string>;
5
- export declare function extractWorkflowCode(response: string): string;
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.SDK_IMPORT_STATEMENT = void 0;
37
- exports.stripImportStatements = stripImportStatements;
38
- exports.stripSdkImports = stripSdkImports;
39
- exports.resolveLocalImports = resolveLocalImports;
40
- exports.extractWorkflowCode = extractWorkflowCode;
41
- const path = __importStar(require("node:path"));
42
- exports.SDK_IMPORT_STATEMENT = "import { workflow, node, trigger, sticky, placeholder, newCredential, ifElse, switchCase, merge, splitInBatches, nextBatch, languageModel, memory, tool, outputParser, embedding, embeddings, vectorStore, retriever, documentLoader, textSplitter, fromAi, expr } from '@n8n/workflow-sdk';";
43
- const IMPORT_REGEX = /^\s*import\s+(?:[\s\S]*?from\s+)?['"]([^'"]+)['"];?\s*$/gm;
44
- function stripImportStatements(code) {
45
- return code
46
- .replace(IMPORT_REGEX, '')
47
- .replace(/^\s*\n/, '')
48
- .trim();
49
- }
50
- function stripSdkImports(code) {
51
- const sdkImportRegex = /^\s*import\s+(?:[\s\S]*?from\s+)?['"]@n8n\/workflow-sdk['"];?\s*$/gm;
52
- return code.replace(sdkImportRegex, '').trim();
53
- }
54
- const LOCAL_IMPORT_REGEX = /^\s*import\s+(?:[\s\S]*?from\s+)?['"](\.\.?\/[^'"]+)['"];?\s*$/gm;
55
- async function resolveLocalImports(code, basePath, readFile) {
56
- const resolved = new Set();
57
- const inlinedChunks = [];
58
- async function resolveFile(fileCode, fileDir, depth) {
59
- if (depth > 5)
60
- return;
61
- const imports = [];
62
- let match;
63
- const regex = new RegExp(LOCAL_IMPORT_REGEX.source, 'gm');
64
- while ((match = regex.exec(fileCode)) !== null) {
65
- imports.push({ fullMatch: match[0], specifier: match[1] });
66
- }
67
- for (const imp of imports) {
68
- let resolvedPath = path.resolve(fileDir, imp.specifier);
69
- if (!resolvedPath.endsWith('.ts')) {
70
- resolvedPath += '.ts';
71
- }
72
- if (resolved.has(resolvedPath))
73
- continue;
74
- resolved.add(resolvedPath);
75
- const content = await readFile(resolvedPath);
76
- if (content === null)
77
- continue;
78
- await resolveFile(content, path.dirname(resolvedPath), depth + 1);
79
- let cleaned = stripSdkImports(content);
80
- cleaned = cleaned.replace(new RegExp(LOCAL_IMPORT_REGEX.source, 'gm'), '');
81
- cleaned = cleaned.replace(/^export\s+default\s+/gm, '');
82
- cleaned = cleaned.replace(/^export\s+/gm, '');
83
- cleaned = cleaned.trim();
84
- if (cleaned) {
85
- inlinedChunks.push(cleaned);
86
- }
87
- }
88
- }
89
- await resolveFile(code, basePath, 0);
90
- const mainCode = code.replace(new RegExp(LOCAL_IMPORT_REGEX.source, 'gm'), '');
91
- if (inlinedChunks.length === 0) {
92
- return mainCode;
93
- }
94
- return [...inlinedChunks, mainCode].join('\n\n');
95
- }
96
- function extractWorkflowCode(response) {
97
- const codeBlockRegex = /```(?:typescript|ts|javascript|js)?\n([\s\S]*?)```/;
98
- const match = response.match(codeBlockRegex);
99
- if (match) {
100
- const code = match[1].trim();
101
- return stripImportStatements(code);
102
- }
103
- return stripImportStatements(response.trim());
104
- }
105
- //# sourceMappingURL=extract-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract-code.js","sourceRoot":"","sources":["../../src/workflow-builder/extract-code.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { INodeTypes } from 'n8n-workflow';
2
- import type { ParseAndValidateResult, ValidationWarning } from './types';
3
- export interface ParseAndValidateOptions {
4
- nodeTypesProvider?: INodeTypes;
5
- }
6
- export declare function parseAndValidate(code: string, options?: ParseAndValidateOptions): ParseAndValidateResult;
7
- export declare function partitionWarnings(warnings: ValidationWarning[]): {
8
- errors: ValidationWarning[];
9
- informational: ValidationWarning[];
10
- };