@n8n/instance-ai 1.4.1 → 1.6.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 (266) hide show
  1. package/dist/agent/computer-use-prompt.d.ts +5 -0
  2. package/dist/agent/computer-use-prompt.js +97 -0
  3. package/dist/agent/computer-use-prompt.js.map +1 -0
  4. package/dist/agent/instance-agent.js +48 -73
  5. package/dist/agent/instance-agent.js.map +1 -1
  6. package/dist/agent/mcp-tool-name-validation.d.ts +15 -0
  7. package/dist/agent/mcp-tool-name-validation.js +67 -0
  8. package/dist/agent/mcp-tool-name-validation.js.map +1 -0
  9. package/dist/agent/sanitize-mcp-schemas.d.ts +56 -2
  10. package/dist/agent/sanitize-mcp-schemas.js +226 -19
  11. package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
  12. package/dist/agent/sub-agent-debriefing.d.ts +2 -2
  13. package/dist/agent/sub-agent-factory.d.ts +1 -0
  14. package/dist/agent/sub-agent-factory.js +1 -0
  15. package/dist/agent/sub-agent-factory.js.map +1 -1
  16. package/dist/agent/system-prompt.d.ts +1 -1
  17. package/dist/agent/system-prompt.js +46 -104
  18. package/dist/agent/system-prompt.js.map +1 -1
  19. package/dist/build.tsbuildinfo +1 -1
  20. package/dist/constants/model-settings.d.ts +3 -0
  21. package/dist/constants/model-settings.js +7 -0
  22. package/dist/constants/model-settings.js.map +1 -0
  23. package/dist/domain-access/domain-access-tracker.d.ts +3 -0
  24. package/dist/domain-access/domain-access-tracker.js +16 -0
  25. package/dist/domain-access/domain-access-tracker.js.map +1 -1
  26. package/dist/domain-access/domain-gating.d.ts +35 -6
  27. package/dist/domain-access/domain-gating.js +47 -1
  28. package/dist/domain-access/domain-gating.js.map +1 -1
  29. package/dist/domain-access/index.d.ts +1 -1
  30. package/dist/domain-access/index.js +3 -1
  31. package/dist/domain-access/index.js.map +1 -1
  32. package/dist/index.d.ts +14 -6
  33. package/dist/index.js +19 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/logger.d.ts +6 -0
  36. package/dist/mcp/mcp-client-manager.d.ts +18 -2
  37. package/dist/mcp/mcp-client-manager.js +124 -20
  38. package/dist/mcp/mcp-client-manager.js.map +1 -1
  39. package/dist/parsers/docx-parser.d.ts +6 -0
  40. package/dist/parsers/docx-parser.js +65 -0
  41. package/dist/parsers/docx-parser.js.map +1 -0
  42. package/dist/parsers/html-parser.d.ts +7 -0
  43. package/dist/parsers/html-parser.js +67 -0
  44. package/dist/parsers/html-parser.js.map +1 -0
  45. package/dist/parsers/index.d.ts +4 -0
  46. package/dist/parsers/index.js +16 -0
  47. package/dist/parsers/index.js.map +1 -0
  48. package/dist/parsers/pdf-parser.d.ts +7 -0
  49. package/dist/parsers/pdf-parser.js +72 -0
  50. package/dist/parsers/pdf-parser.js.map +1 -0
  51. package/dist/parsers/structured-file-parser.d.ts +8 -3
  52. package/dist/parsers/structured-file-parser.js +36 -4
  53. package/dist/parsers/structured-file-parser.js.map +1 -1
  54. package/dist/parsers/validate-attachments.d.ts +14 -0
  55. package/dist/parsers/validate-attachments.js +61 -0
  56. package/dist/parsers/validate-attachments.js.map +1 -0
  57. package/dist/parsers/xlsx-parser.d.ts +2 -0
  58. package/dist/parsers/xlsx-parser.js +75 -0
  59. package/dist/parsers/xlsx-parser.js.map +1 -0
  60. package/dist/planned-tasks/planned-task-permissions.d.ts +2 -0
  61. package/dist/planned-tasks/planned-task-permissions.js +8 -2
  62. package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
  63. package/dist/planned-tasks/planned-task-service.d.ts +14 -1
  64. package/dist/planned-tasks/planned-task-service.js +138 -2
  65. package/dist/planned-tasks/planned-task-service.js.map +1 -1
  66. package/dist/runtime/background-task-manager.d.ts +32 -1
  67. package/dist/runtime/background-task-manager.js +134 -4
  68. package/dist/runtime/background-task-manager.js.map +1 -1
  69. package/dist/runtime/builder-sandbox-session-registry.d.ts +45 -0
  70. package/dist/runtime/builder-sandbox-session-registry.js +159 -0
  71. package/dist/runtime/builder-sandbox-session-registry.js.map +1 -0
  72. package/dist/runtime/liveness-policy.d.ts +40 -0
  73. package/dist/runtime/liveness-policy.js +74 -0
  74. package/dist/runtime/liveness-policy.js.map +1 -0
  75. package/dist/runtime/resumable-stream-executor.d.ts +1 -0
  76. package/dist/runtime/resumable-stream-executor.js +1 -0
  77. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  78. package/dist/runtime/run-state-registry.d.ts +21 -5
  79. package/dist/runtime/run-state-registry.js +109 -7
  80. package/dist/runtime/run-state-registry.js.map +1 -1
  81. package/dist/runtime/stream-runner.d.ts +3 -0
  82. package/dist/runtime/stream-runner.js +3 -0
  83. package/dist/runtime/stream-runner.js.map +1 -1
  84. package/dist/runtime/terminal-response-guard.d.ts +30 -0
  85. package/dist/runtime/terminal-response-guard.js +149 -0
  86. package/dist/runtime/terminal-response-guard.js.map +1 -0
  87. package/dist/storage/agent-tree-snapshot.d.ts +2 -0
  88. package/dist/storage/index.d.ts +2 -0
  89. package/dist/storage/index.js +3 -1
  90. package/dist/storage/index.js.map +1 -1
  91. package/dist/storage/planned-task-storage.js +2 -1
  92. package/dist/storage/planned-task-storage.js.map +1 -1
  93. package/dist/storage/terminal-outcome-storage.d.ts +48 -0
  94. package/dist/storage/terminal-outcome-storage.js +84 -0
  95. package/dist/storage/terminal-outcome-storage.js.map +1 -0
  96. package/dist/storage/workflow-loop-storage.d.ts +442 -16
  97. package/dist/stream/consume-with-hitl.d.ts +2 -0
  98. package/dist/stream/consume-with-hitl.js +2 -0
  99. package/dist/stream/consume-with-hitl.js.map +1 -1
  100. package/dist/stream/map-chunk.js +6 -0
  101. package/dist/stream/map-chunk.js.map +1 -1
  102. package/dist/tools/attachments/parse-file.tool.d.ts +46 -34
  103. package/dist/tools/attachments/parse-file.tool.js +115 -56
  104. package/dist/tools/attachments/parse-file.tool.js.map +1 -1
  105. package/dist/tools/credentials.tool.d.ts +120 -1
  106. package/dist/tools/credentials.tool.js +65 -12
  107. package/dist/tools/credentials.tool.js.map +1 -1
  108. package/dist/tools/data-tables.tool.d.ts +1 -0
  109. package/dist/tools/data-tables.tool.js +64 -24
  110. package/dist/tools/data-tables.tool.js.map +1 -1
  111. package/dist/tools/executions.tool.js +4 -1
  112. package/dist/tools/executions.tool.js.map +1 -1
  113. package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +2 -1
  114. package/dist/tools/filesystem/create-tools-from-mcp-server.js +74 -5
  115. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  116. package/dist/tools/index.d.ts +4 -24
  117. package/dist/tools/index.js +23 -7
  118. package/dist/tools/index.js.map +1 -1
  119. package/dist/tools/nodes.tool.js +15 -15
  120. package/dist/tools/nodes.tool.js.map +1 -1
  121. package/dist/tools/orchestration/add-plan-item.tool.js +3 -1
  122. package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
  123. package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -1
  124. package/dist/tools/orchestration/blueprint-accumulator.js +28 -0
  125. package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
  126. package/dist/tools/orchestration/blueprint.schema.d.ts +61 -16
  127. package/dist/tools/orchestration/blueprint.schema.js +15 -1
  128. package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
  129. package/dist/tools/orchestration/browser-credential-setup.nudge.d.ts +5 -0
  130. package/dist/tools/orchestration/browser-credential-setup.nudge.js +11 -0
  131. package/dist/tools/orchestration/browser-credential-setup.nudge.js.map +1 -0
  132. package/dist/tools/orchestration/browser-credential-setup.prompt.js +2 -1
  133. package/dist/tools/orchestration/browser-credential-setup.prompt.js.map +1 -1
  134. package/dist/tools/orchestration/browser-credential-setup.tool.js +55 -7
  135. package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
  136. package/dist/tools/orchestration/build-workflow-agent.prompt.js +86 -60
  137. package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
  138. package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +56 -3
  139. package/dist/tools/orchestration/build-workflow-agent.tool.js +1020 -300
  140. package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
  141. package/dist/tools/orchestration/builder-memory-compaction.d.ts +38 -0
  142. package/dist/tools/orchestration/builder-memory-compaction.js +146 -0
  143. package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -0
  144. package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +2 -0
  145. package/dist/tools/orchestration/complete-checkpoint.tool.js +76 -0
  146. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -0
  147. package/dist/tools/orchestration/data-table-agent.tool.js +34 -17
  148. package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
  149. package/dist/tools/orchestration/delegate.tool.js +34 -16
  150. package/dist/tools/orchestration/delegate.tool.js.map +1 -1
  151. package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
  152. package/dist/tools/orchestration/plan-agent-prompt.js +7 -0
  153. package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -1
  154. package/dist/tools/orchestration/plan-with-agent.tool.d.ts +23 -0
  155. package/dist/tools/orchestration/plan-with-agent.tool.js +314 -13
  156. package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
  157. package/dist/tools/orchestration/plan.tool.js +17 -1
  158. package/dist/tools/orchestration/plan.tool.js.map +1 -1
  159. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +40 -2
  160. package/dist/tools/orchestration/report-verification-verdict.tool.js +85 -6
  161. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  162. package/dist/tools/orchestration/research-with-agent.tool.js +33 -16
  163. package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
  164. package/dist/tools/orchestration/tracing-utils.js +8 -0
  165. package/dist/tools/orchestration/tracing-utils.js.map +1 -1
  166. package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +8 -2
  167. package/dist/tools/orchestration/verify-built-workflow.tool.js +476 -6
  168. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  169. package/dist/tools/research.tool.js +56 -10
  170. package/dist/tools/research.tool.js.map +1 -1
  171. package/dist/tools/shared/ask-user.tool.d.ts +1 -0
  172. package/dist/tools/shared/ask-user.tool.js +3 -2
  173. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  174. package/dist/tools/templates.tool.js +5 -90
  175. package/dist/tools/templates.tool.js.map +1 -1
  176. package/dist/tools/web-research/sanitize-web-content.d.ts +0 -1
  177. package/dist/tools/web-research/sanitize-web-content.js +0 -9
  178. package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
  179. package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +2 -2
  180. package/dist/tools/workflows/build-workflow.tool.d.ts +2 -2
  181. package/dist/tools/workflows/build-workflow.tool.js +6 -4
  182. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  183. package/dist/tools/workflows/materialize-node-type.tool.d.ts +8 -8
  184. package/dist/tools/workflows/resolve-credentials.d.ts +9 -4
  185. package/dist/tools/workflows/resolve-credentials.js +59 -27
  186. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  187. package/dist/tools/workflows/setup-workflow.schema.d.ts +40 -0
  188. package/dist/tools/workflows/setup-workflow.service.d.ts +5 -1
  189. package/dist/tools/workflows/setup-workflow.service.js +71 -5
  190. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  191. package/dist/tools/workflows/submit-workflow-identity.d.ts +25 -3
  192. package/dist/tools/workflows/submit-workflow-identity.js +92 -5
  193. package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
  194. package/dist/tools/workflows/submit-workflow.tool.d.ts +60 -6
  195. package/dist/tools/workflows/submit-workflow.tool.js +102 -19
  196. package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
  197. package/dist/tools/workflows/workflow-json-utils.d.ts +4 -0
  198. package/dist/tools/workflows/workflow-json-utils.js +54 -0
  199. package/dist/tools/workflows/workflow-json-utils.js.map +1 -0
  200. package/dist/tools/workflows.tool.d.ts +7 -1
  201. package/dist/tools/workflows.tool.js +283 -54
  202. package/dist/tools/workflows.tool.js.map +1 -1
  203. package/dist/tracing/langsmith-tracing.d.ts +2 -0
  204. package/dist/tracing/langsmith-tracing.js +12 -3
  205. package/dist/tracing/langsmith-tracing.js.map +1 -1
  206. package/dist/tracing/trace-replay.d.ts +3 -0
  207. package/dist/tracing/trace-replay.js +65 -0
  208. package/dist/tracing/trace-replay.js.map +1 -1
  209. package/dist/types.d.ts +92 -16
  210. package/dist/workflow-builder/parse-validate.d.ts +5 -1
  211. package/dist/workflow-builder/parse-validate.js +5 -4
  212. package/dist/workflow-builder/parse-validate.js.map +1 -1
  213. package/dist/workflow-loop/guidance.js +8 -2
  214. package/dist/workflow-loop/guidance.js.map +1 -1
  215. package/dist/workflow-loop/index.d.ts +3 -2
  216. package/dist/workflow-loop/index.js +11 -1
  217. package/dist/workflow-loop/index.js.map +1 -1
  218. package/dist/workflow-loop/remediation.d.ts +13 -0
  219. package/dist/workflow-loop/remediation.js +36 -0
  220. package/dist/workflow-loop/remediation.js.map +1 -0
  221. package/dist/workflow-loop/runtime.js +7 -0
  222. package/dist/workflow-loop/runtime.js.map +1 -1
  223. package/dist/workflow-loop/workflow-loop-controller.d.ts +1 -1
  224. package/dist/workflow-loop/workflow-loop-controller.js +196 -29
  225. package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
  226. package/dist/workflow-loop/workflow-loop-state.d.ts +500 -10
  227. package/dist/workflow-loop/workflow-loop-state.js +74 -1
  228. package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
  229. package/dist/workflow-loop/workflow-task-service.d.ts +2 -1
  230. package/dist/workflow-loop/workflow-task-service.js +4 -0
  231. package/dist/workflow-loop/workflow-task-service.js.map +1 -1
  232. package/dist/workspace/builder-sandbox-factory.d.ts +3 -4
  233. package/dist/workspace/builder-sandbox-factory.js +74 -35
  234. package/dist/workspace/builder-sandbox-factory.js.map +1 -1
  235. package/dist/workspace/create-workspace.d.ts +2 -0
  236. package/dist/workspace/create-workspace.js.map +1 -1
  237. package/dist/workspace/n8n-sandbox-filesystem.js +2 -2
  238. package/dist/workspace/n8n-sandbox-filesystem.js.map +1 -1
  239. package/dist/workspace/n8n-sandbox-sandbox.d.ts +2 -3
  240. package/dist/workspace/n8n-sandbox-sandbox.js +3 -7
  241. package/dist/workspace/n8n-sandbox-sandbox.js.map +1 -1
  242. package/dist/workspace/sandbox-setup.d.ts +1 -1
  243. package/dist/workspace/sandbox-setup.js +41 -16
  244. package/dist/workspace/sandbox-setup.js.map +1 -1
  245. package/dist/workspace/snapshot-manager.d.ts +14 -2
  246. package/dist/workspace/snapshot-manager.js +57 -1
  247. package/dist/workspace/snapshot-manager.js.map +1 -1
  248. package/package.json +35 -10
  249. package/dist/tools/templates/template-api.d.ts +0 -21
  250. package/dist/tools/templates/template-api.js +0 -104
  251. package/dist/tools/templates/template-api.js.map +0 -1
  252. package/dist/tools/templates/types.d.ts +0 -52
  253. package/dist/tools/templates/types.js +0 -37
  254. package/dist/tools/templates/types.js.map +0 -1
  255. package/dist/tools/utils/mermaid.utils.d.ts +0 -15
  256. package/dist/tools/utils/mermaid.utils.js +0 -622
  257. package/dist/tools/utils/mermaid.utils.js.map +0 -1
  258. package/dist/tools/utils/node-configuration.utils.d.ts +0 -6
  259. package/dist/tools/utils/node-configuration.utils.js +0 -77
  260. package/dist/tools/utils/node-configuration.utils.js.map +0 -1
  261. package/dist/workspace/n8n-sandbox-client.d.ts +0 -105
  262. package/dist/workspace/n8n-sandbox-client.js +0 -335
  263. package/dist/workspace/n8n-sandbox-client.js.map +0 -1
  264. package/dist/workspace/n8n-sandbox-image-manager.d.ts +0 -5
  265. package/dist/workspace/n8n-sandbox-image-manager.js +0 -25
  266. package/dist/workspace/n8n-sandbox-image-manager.js.map +0 -1
@@ -4,10 +4,261 @@ exports.verifyBuiltWorkflowInputSchema = void 0;
4
4
  exports.createVerifyBuiltWorkflowTool = createVerifyBuiltWorkflowTool;
5
5
  const tools_1 = require("@mastra/core/tools");
6
6
  const zod_1 = require("zod");
7
+ const remediation_1 = require("../../workflow-loop/remediation");
8
+ const DEFAULT_NODE_PREVIEW_CHARS = 600;
9
+ function stringifyForToolOutput(value) {
10
+ if (typeof value === 'string')
11
+ return value;
12
+ try {
13
+ return JSON.stringify(value) ?? String(value);
14
+ }
15
+ catch {
16
+ return String(value);
17
+ }
18
+ }
19
+ function isRecord(value) {
20
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
21
+ }
22
+ function unwrapUntrustedData(value) {
23
+ const match = /^<untrusted_data\b[^>]*>\n([\s\S]*)\n<\/untrusted_data>$/i.exec(value);
24
+ if (!match)
25
+ return value;
26
+ const content = match[1];
27
+ if (content === undefined)
28
+ return value;
29
+ try {
30
+ const parsed = JSON.parse(content);
31
+ return parsed;
32
+ }
33
+ catch {
34
+ return value;
35
+ }
36
+ }
37
+ function outputForInspection(nodeOutput) {
38
+ return typeof nodeOutput === 'string' ? unwrapUntrustedData(nodeOutput) : nodeOutput;
39
+ }
40
+ async function extractDataTableWriteNodes(workflowService, workflowId) {
41
+ try {
42
+ const json = await workflowService.getAsWorkflowJSON(workflowId);
43
+ const out = [];
44
+ for (const node of json.nodes ?? []) {
45
+ if (node.type !== 'n8n-nodes-base.dataTable')
46
+ continue;
47
+ const params = node.parameters;
48
+ const operation = params?.operation;
49
+ if (operation !== 'insert' && operation !== 'upsert' && operation !== 'update')
50
+ continue;
51
+ const ref = params?.dataTableId;
52
+ let dataTableId;
53
+ if (typeof ref === 'string' && ref.length > 0) {
54
+ dataTableId = ref;
55
+ }
56
+ else if (ref &&
57
+ typeof ref === 'object' &&
58
+ 'value' in ref &&
59
+ typeof ref.value === 'string') {
60
+ const value = ref.value;
61
+ if (value.length > 0)
62
+ dataTableId = value;
63
+ }
64
+ if (!dataTableId || !node.name)
65
+ continue;
66
+ out.push({ nodeName: node.name, dataTableId, operation });
67
+ }
68
+ return out;
69
+ }
70
+ catch {
71
+ return [];
72
+ }
73
+ }
74
+ function extractRowIdsFromNodeOutput(nodeOutput) {
75
+ const ids = [];
76
+ const visit = (value) => {
77
+ const inspected = outputForInspection(value);
78
+ if (!inspected)
79
+ return;
80
+ if (Array.isArray(inspected)) {
81
+ for (const item of inspected)
82
+ visit(item);
83
+ return;
84
+ }
85
+ if (!isRecord(inspected))
86
+ return;
87
+ const row = inspected;
88
+ if (row.json !== undefined) {
89
+ visit(row.json);
90
+ return;
91
+ }
92
+ const id = row.id;
93
+ if (typeof id === 'number' && Number.isFinite(id))
94
+ ids.push(id);
95
+ };
96
+ visit(nodeOutput);
97
+ return ids;
98
+ }
99
+ function getCountFromMetadata(value) {
100
+ if (!isRecord(value))
101
+ return undefined;
102
+ for (const key of ['totalItems', '_itemCount']) {
103
+ const count = value[key];
104
+ if (typeof count === 'number' && Number.isFinite(count) && count >= 0) {
105
+ return count;
106
+ }
107
+ }
108
+ return undefined;
109
+ }
110
+ function countOutputItems(nodeOutput) {
111
+ const output = outputForInspection(nodeOutput);
112
+ if (Array.isArray(output))
113
+ return output.length;
114
+ const metadataCount = getCountFromMetadata(output);
115
+ if (metadataCount !== undefined)
116
+ return metadataCount;
117
+ if (output === undefined || output === null)
118
+ return 0;
119
+ return 1;
120
+ }
121
+ function previewValue(value, maxChars) {
122
+ const serialized = stringifyForToolOutput(value);
123
+ if (maxChars <= 0) {
124
+ return { preview: '', truncated: serialized.length > 0 };
125
+ }
126
+ if (serialized.length <= maxChars) {
127
+ return { preview: serialized, truncated: false };
128
+ }
129
+ return { preview: `${serialized.slice(0, maxChars)}...`, truncated: true };
130
+ }
131
+ function buildNodePreviews(resultData, maxChars) {
132
+ if (!resultData)
133
+ return [];
134
+ return Object.entries(resultData).map(([nodeName, nodeOutput]) => {
135
+ const serialized = stringifyForToolOutput(nodeOutput);
136
+ const preview = previewValue(nodeOutput, maxChars);
137
+ return {
138
+ nodeName,
139
+ itemCount: countOutputItems(nodeOutput),
140
+ preview: preview.preview,
141
+ truncated: preview.truncated,
142
+ chars: serialized.length,
143
+ };
144
+ });
145
+ }
146
+ function countProducedOutputRows(resultData) {
147
+ if (!resultData)
148
+ return undefined;
149
+ let count = 0;
150
+ for (const nodeOutput of Object.values(resultData)) {
151
+ const itemCount = countOutputItems(nodeOutput);
152
+ if (itemCount !== undefined)
153
+ count += itemCount;
154
+ }
155
+ return count;
156
+ }
157
+ const SNAPSHOT_PAGE_SIZE = 1000;
158
+ const SNAPSHOT_MAX_ROWS = 100_000;
159
+ async function cleanupInsertedRowsByNodeOutput(dataTableService, writeNodes, resultData, preIdsByTable, logger) {
160
+ if (!resultData)
161
+ return 0;
162
+ const createdIdsByTable = new Map();
163
+ for (const { nodeName, dataTableId, operation } of writeNodes) {
164
+ if (operation !== 'insert')
165
+ continue;
166
+ const output = resultData[nodeName];
167
+ if (!output)
168
+ continue;
169
+ const ids = extractRowIdsFromNodeOutput(output);
170
+ if (ids.length === 0)
171
+ continue;
172
+ let bucket = createdIdsByTable.get(dataTableId);
173
+ if (!bucket) {
174
+ bucket = new Set();
175
+ createdIdsByTable.set(dataTableId, bucket);
176
+ }
177
+ for (const id of ids)
178
+ bucket.add(id);
179
+ }
180
+ let total = 0;
181
+ for (const [dataTableId, ids] of createdIdsByTable) {
182
+ const preIds = preIdsByTable.get(dataTableId);
183
+ if (preIds === undefined || preIds === null) {
184
+ logger.warn('Skipping data-table cleanup: pre-verify snapshot unavailable. Rows left in place to avoid deleting existing data.', { dataTableId, candidateIds: ids.size });
185
+ continue;
186
+ }
187
+ const toDelete = [...ids].filter((id) => !preIds.has(id));
188
+ if (toDelete.length === 0)
189
+ continue;
190
+ try {
191
+ await dataTableService.deleteRows(dataTableId, {
192
+ type: 'or',
193
+ filters: toDelete.map((id) => ({
194
+ columnName: 'id',
195
+ condition: 'eq',
196
+ value: id,
197
+ })),
198
+ });
199
+ total += toDelete.length;
200
+ }
201
+ catch {
202
+ }
203
+ }
204
+ return total;
205
+ }
206
+ async function snapshotRowIdsPerTable(dataTableService, dataTableIds, logger) {
207
+ const out = new Map();
208
+ for (const id of dataTableIds) {
209
+ try {
210
+ const bucket = new Set();
211
+ let offset = 0;
212
+ let truncated = false;
213
+ for (;;) {
214
+ const { data } = await dataTableService.queryRows(id, {
215
+ limit: SNAPSHOT_PAGE_SIZE,
216
+ offset,
217
+ });
218
+ for (const row of data) {
219
+ const rid = row.id;
220
+ if (typeof rid === 'number')
221
+ bucket.add(rid);
222
+ }
223
+ if (data.length < SNAPSHOT_PAGE_SIZE)
224
+ break;
225
+ offset += SNAPSHOT_PAGE_SIZE;
226
+ if (offset >= SNAPSHOT_MAX_ROWS) {
227
+ truncated = true;
228
+ break;
229
+ }
230
+ }
231
+ if (truncated) {
232
+ logger.warn('Data-table pre-verify snapshot exceeded row cap — cleanup disabled for this table', { dataTableId: id, cap: SNAPSHOT_MAX_ROWS });
233
+ out.set(id, null);
234
+ }
235
+ else {
236
+ out.set(id, bucket);
237
+ }
238
+ }
239
+ catch (error) {
240
+ logger.warn('Data-table pre-verify snapshot failed — cleanup disabled for this table', {
241
+ dataTableId: id,
242
+ error: error instanceof Error ? error.message : String(error),
243
+ });
244
+ out.set(id, null);
245
+ }
246
+ }
247
+ return out;
248
+ }
7
249
  exports.verifyBuiltWorkflowInputSchema = zod_1.z.object({
8
250
  workItemId: zod_1.z.string().describe('The work item ID from the build (wi_XXXXXXXX)'),
9
251
  workflowId: zod_1.z.string().describe('The workflow ID to verify'),
10
- inputData: zod_1.z.record(zod_1.z.unknown()).optional().describe('Input data passed to the workflow trigger'),
252
+ inputData: zod_1.z
253
+ .record(zod_1.z.unknown())
254
+ .optional()
255
+ .describe("Input data for the workflow trigger. Shape MUST match the trigger's real-world output: " +
256
+ 'Form Trigger → flat field map like {name: "Alice", email: "a@b.c"} (do NOT wrap in formFields); ' +
257
+ 'Webhook → the body payload like {event: "signup", userId: "..."} (adapter wraps it under body); ' +
258
+ 'Chat Trigger → {chatInput: "user message"}; ' +
259
+ 'Schedule Trigger → omit inputData. ' +
260
+ "If you wrap a form payload in {formFields: {...}} the adapter will reject the call — the builder's " +
261
+ 'downstream expressions reference $json.<field>, matching the flat production shape.'),
11
262
  timeout: zod_1.z
12
263
  .number()
13
264
  .int()
@@ -15,41 +266,260 @@ exports.verifyBuiltWorkflowInputSchema = zod_1.z.object({
15
266
  .max(600_000)
16
267
  .optional()
17
268
  .describe('Max wait time in milliseconds (default 300000)'),
269
+ includeData: zod_1.z
270
+ .boolean()
271
+ .optional()
272
+ .describe('Set true only when you need the full execution data payload. Default false.'),
273
+ maxDataChars: zod_1.z
274
+ .number()
275
+ .int()
276
+ .min(0)
277
+ .max(20_000)
278
+ .optional()
279
+ .describe('Max characters per node preview in the compact response (default 600).'),
18
280
  });
281
+ const remediationOutputSchema = zod_1.z
282
+ .object({
283
+ category: zod_1.z.enum(['code_fixable', 'needs_setup', 'blocked']),
284
+ shouldEdit: zod_1.z.boolean(),
285
+ guidance: zod_1.z.string(),
286
+ reason: zod_1.z.string().optional(),
287
+ remainingSubmitFixes: zod_1.z.number().int().min(0).optional(),
288
+ attemptCount: zod_1.z.number().int().min(0).optional(),
289
+ })
290
+ .optional();
291
+ function classifyVerificationFailure(error, status, buildOutcome) {
292
+ if (buildOutcome.hasUnresolvedPlaceholders) {
293
+ return (0, remediation_1.createRemediation)({
294
+ category: 'needs_setup',
295
+ shouldEdit: false,
296
+ reason: 'mocked_credentials_or_placeholders',
297
+ guidance: 'Workflow submitted successfully, but verification is blocked by unresolved setup values. Stop code edits and route to workflows(action="setup").',
298
+ });
299
+ }
300
+ if (status === 'waiting') {
301
+ return (0, remediation_1.createRemediation)({
302
+ category: 'needs_setup',
303
+ shouldEdit: false,
304
+ reason: 'execution_waiting',
305
+ guidance: 'Workflow verification is waiting for user action or setup. Stop code edits and ask the user to complete setup.',
306
+ });
307
+ }
308
+ const normalized = (error ?? '').toLowerCase();
309
+ const mockedCredentialTypeCount = buildOutcome.mockedCredentialTypes?.length ?? 0;
310
+ const mockedNodeCount = buildOutcome.mockedNodeNames?.length ?? 0;
311
+ const hasMockedCredentialContext = Boolean(mockedCredentialTypeCount > 0 || mockedNodeCount > 0);
312
+ if (normalized.includes('credential') ||
313
+ normalized.includes('unauthorized') ||
314
+ normalized.includes('forbidden') ||
315
+ normalized.includes('401') ||
316
+ normalized.includes('403') ||
317
+ normalized.includes('free tier') ||
318
+ normalized.includes('quota')) {
319
+ return (0, remediation_1.createRemediation)({
320
+ category: 'needs_setup',
321
+ shouldEdit: false,
322
+ reason: hasMockedCredentialContext
323
+ ? 'mocked_credentials_or_placeholders'
324
+ : 'credential_or_setup_failure',
325
+ guidance: hasMockedCredentialContext
326
+ ? 'Workflow submitted successfully, but verification is blocked by mocked credentials. Stop code edits and route to workflows(action="setup").'
327
+ : 'Workflow submitted successfully, but verification requires credential or account setup. Stop code edits and route to workflows(action="setup").',
328
+ });
329
+ }
330
+ if (normalized.includes('429') ||
331
+ normalized.includes('rate limit') ||
332
+ normalized.includes('502') ||
333
+ normalized.includes('bad gateway') ||
334
+ normalized.includes('timed out')) {
335
+ return (0, remediation_1.createRemediation)({
336
+ category: 'blocked',
337
+ shouldEdit: false,
338
+ reason: 'external_service_or_timeout',
339
+ guidance: 'Workflow submitted successfully, but verification is blocked by an external service or timeout. Stop code edits and explain the blocker to the user.',
340
+ });
341
+ }
342
+ return (0, remediation_1.createRemediation)({
343
+ category: 'code_fixable',
344
+ shouldEdit: true,
345
+ reason: 'runtime_failure',
346
+ guidance: 'Verification found a workflow runtime failure. Diagnose it and apply one batched workflow-code repair if the guard allows it.',
347
+ });
348
+ }
19
349
  function createVerifyBuiltWorkflowTool(context) {
20
350
  return (0, tools_1.createTool)({
21
351
  id: 'verify-built-workflow',
22
352
  description: 'Run a built workflow that has mocked credentials, using sidecar verification pin data ' +
23
- 'from the build outcome. Use this instead of `executions(action="run")` when the build had mocked credentials.',
353
+ 'from the build outcome. Use this instead of `executions(action="run")` when the build had mocked credentials. ' +
354
+ 'CRITICAL: `inputData` shape depends on the trigger type — see the per-trigger guidance on the inputData field. ' +
355
+ 'Passing the wrong shape (e.g. wrapping form fields under `formFields`) produces null downstream values that ' +
356
+ 'look like an expression bug but are not — do not patch the workflow, re-run verify with the correct shape.',
24
357
  inputSchema: exports.verifyBuiltWorkflowInputSchema,
25
358
  outputSchema: zod_1.z.object({
26
359
  executionId: zod_1.z.string().optional(),
27
360
  success: zod_1.z.boolean(),
28
361
  status: zod_1.z.enum(['running', 'success', 'error', 'waiting', 'unknown']).optional(),
362
+ nodesExecuted: zod_1.z.array(zod_1.z.string()).optional(),
363
+ nodePreviews: zod_1.z
364
+ .array(zod_1.z.object({
365
+ nodeName: zod_1.z.string(),
366
+ itemCount: zod_1.z.number().optional(),
367
+ preview: zod_1.z.string(),
368
+ truncated: zod_1.z.boolean(),
369
+ chars: zod_1.z.number(),
370
+ }))
371
+ .optional(),
29
372
  data: zod_1.z.record(zod_1.z.unknown()).optional(),
30
373
  error: zod_1.z.string().optional(),
374
+ remediation: remediationOutputSchema,
375
+ guidance: zod_1.z.string().optional(),
31
376
  }),
32
377
  execute: async (input) => {
33
378
  if (!context.workflowTaskService || !context.domainContext) {
34
- return { success: false, error: 'Verification support not available.' };
379
+ const remediation = (0, remediation_1.createRemediation)({
380
+ category: 'blocked',
381
+ shouldEdit: false,
382
+ reason: 'verification_support_unavailable',
383
+ guidance: 'Verification support is not available. Stop code edits and explain the blocker.',
384
+ });
385
+ return { success: false, error: 'Verification support not available.', remediation };
386
+ }
387
+ const stateBefore = await context.workflowTaskService.getWorkflowLoopState(input.workItemId);
388
+ const terminalRemediation = stateBefore?.lastRemediation && !stateBefore.lastRemediation.shouldEdit
389
+ ? (0, remediation_1.terminalRemediationFromState)(stateBefore, context.runId)
390
+ : undefined;
391
+ if (terminalRemediation) {
392
+ return {
393
+ success: false,
394
+ error: terminalRemediation.guidance,
395
+ remediation: terminalRemediation,
396
+ guidance: terminalRemediation.guidance,
397
+ };
35
398
  }
36
399
  const buildOutcome = await context.workflowTaskService.getBuildOutcome(input.workItemId);
37
400
  if (!buildOutcome) {
401
+ const remediation = (0, remediation_1.createRemediation)({
402
+ category: 'blocked',
403
+ shouldEdit: false,
404
+ reason: 'missing_build_outcome',
405
+ guidance: `No build outcome found for work item ${input.workItemId}. Stop code edits and explain the blocker.`,
406
+ });
38
407
  return {
39
408
  success: false,
40
409
  error: `No build outcome found for work item ${input.workItemId}.`,
410
+ remediation,
411
+ guidance: remediation.guidance,
412
+ };
413
+ }
414
+ if (!buildOutcome.workflowId) {
415
+ return {
416
+ success: false,
417
+ error: `Build outcome ${input.workItemId} does not include a workflow ID.`,
41
418
  };
42
419
  }
43
- const result = await context.domainContext.executionService.run(input.workflowId, input.inputData, {
420
+ if (buildOutcome.workflowId !== input.workflowId) {
421
+ return {
422
+ success: false,
423
+ error: `Build outcome ${input.workItemId} belongs to workflow ${buildOutcome.workflowId}, ` +
424
+ `but verification was requested for workflow ${input.workflowId}.`,
425
+ };
426
+ }
427
+ const workflowId = buildOutcome.workflowId;
428
+ const writeNodes = await extractDataTableWriteNodes(context.domainContext.workflowService, workflowId);
429
+ const preSnapshots = await snapshotRowIdsPerTable(context.domainContext.dataTableService, new Set(writeNodes.map((n) => n.dataTableId)), context.logger);
430
+ const result = await context.domainContext.executionService.run(workflowId, input.inputData, {
44
431
  timeout: input.timeout,
45
432
  pinData: buildOutcome.verificationPinData,
46
433
  });
434
+ const hasOutput = result.data ? Object.keys(result.data).length > 0 : false;
435
+ const success = result.status === 'success' || (result.status === 'waiting' && !result.error && hasOutput);
436
+ const failureRemediation = success
437
+ ? undefined
438
+ : classifyVerificationFailure(result.error, result.status, buildOutcome);
439
+ const budgetRemediation = failureRemediation?.shouldEdit === true
440
+ ? (0, remediation_1.terminalRemediationFromState)(stateBefore, context.runId)
441
+ : undefined;
442
+ const remediation = budgetRemediation ?? failureRemediation;
443
+ const cleanedRows = await cleanupInsertedRowsByNodeOutput(context.domainContext.dataTableService, writeNodes, result.data, preSnapshots, context.logger);
444
+ try {
445
+ const nodesExecuted = result.data ? Object.keys(result.data) : undefined;
446
+ await context.workflowTaskService.updateBuildOutcome(input.workItemId, {
447
+ verification: {
448
+ attempted: true,
449
+ success,
450
+ executionId: result.executionId || undefined,
451
+ status: result.status,
452
+ failureSignature: success ? undefined : result.error,
453
+ evidence: {
454
+ nodesExecuted: nodesExecuted && nodesExecuted.length > 0 ? nodesExecuted : undefined,
455
+ producedOutputRows: countProducedOutputRows(result.data),
456
+ errorMessage: success ? undefined : result.error,
457
+ },
458
+ verifiedAt: new Date().toISOString(),
459
+ },
460
+ });
461
+ }
462
+ catch {
463
+ }
464
+ if (cleanedRows > 0) {
465
+ context.logger.debug?.('verify-built-workflow: cleaned up inserted rows', {
466
+ workItemId: input.workItemId,
467
+ workflowId,
468
+ cleanedRows,
469
+ });
470
+ }
471
+ if (remediation && !remediation.shouldEdit) {
472
+ try {
473
+ await context.workflowTaskService.reportVerificationVerdict({
474
+ workItemId: input.workItemId,
475
+ runId: context.runId,
476
+ workflowId,
477
+ executionId: result.executionId || undefined,
478
+ verdict: remediation.category === 'needs_setup' ? 'needs_user_input' : 'failed_terminal',
479
+ failureSignature: remediation.reason,
480
+ diagnosis: remediation.guidance,
481
+ remediation,
482
+ summary: remediation.guidance,
483
+ });
484
+ }
485
+ catch (error) {
486
+ context.logger.warn('verify-built-workflow: failed to persist terminal verdict', {
487
+ workItemId: input.workItemId,
488
+ workflowId,
489
+ error: error instanceof Error ? error.message : String(error),
490
+ });
491
+ }
492
+ try {
493
+ context.trackTelemetry?.('Builder remediation guard fired', {
494
+ thread_id: context.threadId,
495
+ run_id: context.runId,
496
+ work_item_id: input.workItemId,
497
+ workflow_id: workflowId,
498
+ category: remediation.category,
499
+ attempt_count: remediation.attemptCount,
500
+ reason: remediation.reason,
501
+ });
502
+ }
503
+ catch (error) {
504
+ context.logger.warn('verify-built-workflow: failed to emit remediation telemetry', {
505
+ workItemId: input.workItemId,
506
+ workflowId,
507
+ error: error instanceof Error ? error.message : String(error),
508
+ });
509
+ }
510
+ }
511
+ const maxDataChars = input.maxDataChars ?? DEFAULT_NODE_PREVIEW_CHARS;
512
+ const nodesExecuted = result.data ? Object.keys(result.data) : undefined;
47
513
  return {
48
514
  executionId: result.executionId || undefined,
49
- success: result.status === 'success',
515
+ success,
50
516
  status: result.status,
51
- data: result.data,
517
+ nodesExecuted,
518
+ nodePreviews: buildNodePreviews(result.data, maxDataChars),
519
+ ...(input.includeData ? { data: result.data } : {}),
52
520
  error: result.error,
521
+ remediation,
522
+ guidance: remediation?.guidance,
53
523
  };
54
524
  },
55
525
  });
@@ -1 +1 @@
1
- {"version":3,"file":"verify-built-workflow.tool.js","sourceRoot":"","sources":["../../../src/tools/orchestration/verify-built-workflow.tool.ts"],"names":[],"mappings":";;;AA0BA,sEA6CC;AA/DD,8CAAgD;AAChD,6BAAwB;AAIX,QAAA,8BAA8B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAChF,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC5D,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACjG,OAAO,EAAE,OAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,OAAO,CAAC;SACZ,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;CAC5D,CAAC,CAAC;AAEH,SAAgB,6BAA6B,CAAC,OAA6B;IAC1E,OAAO,IAAA,kBAAU,EAAC;QACjB,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EACV,wFAAwF;YACxF,+GAA+G;QAChH,WAAW,EAAE,sCAA8B;QAC3C,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChF,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;YACtC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAqD,EAAE,EAAE;YACxE,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC5D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;YACzE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACzF,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,OAAO;oBACN,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,wCAAwC,KAAK,CAAC,UAAU,GAAG;iBAClE,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAC9D,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf;gBACC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,YAAY,CAAC,mBAA4D;aAClF,CACD,CAAC;YAEF,OAAO;gBACN,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;gBAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;gBACpC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;aACnB,CAAC;QACH,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"verify-built-workflow.tool.js","sourceRoot":"","sources":["../../../src/tools/orchestration/verify-built-workflow.tool.ts"],"names":[],"mappings":"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"}