n8n 2.40.5 → 2.41.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 (823) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/commands/import/credentials.js +12 -3
  3. package/dist/commands/import/credentials.js.map +1 -1
  4. package/dist/commands/import/workflow.js +4 -4
  5. package/dist/commands/import/workflow.js.map +1 -1
  6. package/dist/commands/start.js +5 -2
  7. package/dist/commands/start.js.map +1 -1
  8. package/dist/constants.d.ts +1 -0
  9. package/dist/constants.js +2 -1
  10. package/dist/constants.js.map +1 -1
  11. package/dist/controllers/ai-preference.controller.js +1 -1
  12. package/dist/controllers/ai-preference.controller.js.map +1 -1
  13. package/dist/controllers/ai.controller.d.ts +1 -0
  14. package/dist/controllers/dev.controller.d.ts +8 -0
  15. package/dist/controllers/dev.controller.js +35 -0
  16. package/dist/controllers/dev.controller.js.map +1 -0
  17. package/dist/controllers/me.controller.d.ts +2 -4
  18. package/dist/controllers/me.controller.js +9 -24
  19. package/dist/controllers/me.controller.js.map +1 -1
  20. package/dist/controllers/role.controller.js +1 -0
  21. package/dist/controllers/role.controller.js.map +1 -1
  22. package/dist/crash-journal.js +1 -1
  23. package/dist/crash-journal.js.map +1 -1
  24. package/dist/credentials/credential-dependency.service.d.ts +2 -2
  25. package/dist/credentials/credential-dependency.service.js +5 -4
  26. package/dist/credentials/credential-dependency.service.js.map +1 -1
  27. package/dist/credentials/credentials-finder.service.d.ts +1 -0
  28. package/dist/credentials/credentials.controller.d.ts +4 -0
  29. package/dist/credentials/credentials.controller.js +5 -0
  30. package/dist/credentials/credentials.controller.js.map +1 -1
  31. package/dist/credentials/credentials.service.d.ts +16 -3
  32. package/dist/credentials/credentials.service.ee.d.ts +2 -0
  33. package/dist/credentials/credentials.service.js +112 -30
  34. package/dist/credentials/credentials.service.js.map +1 -1
  35. package/dist/credentials/validation.d.ts +1 -0
  36. package/dist/credentials/validation.js +11 -0
  37. package/dist/credentials/validation.js.map +1 -1
  38. package/dist/credentials-helper.d.ts +3 -2
  39. package/dist/credentials-helper.js +39 -19
  40. package/dist/credentials-helper.js.map +1 -1
  41. package/dist/credentials-overwrites.js +2 -0
  42. package/dist/credentials-overwrites.js.map +1 -1
  43. package/dist/errors/response-errors/incompatible-nodes-api-version.error.d.ts +11 -0
  44. package/dist/errors/response-errors/incompatible-nodes-api-version.error.js +13 -0
  45. package/dist/errors/response-errors/incompatible-nodes-api-version.error.js.map +1 -0
  46. package/dist/errors/unsupported-end-user-credential-trigger.error.d.ts +4 -0
  47. package/dist/errors/unsupported-end-user-credential-trigger.error.js +13 -0
  48. package/dist/errors/unsupported-end-user-credential-trigger.error.js.map +1 -0
  49. package/dist/eventbus/event-message-classes/abstract-event-message.d.ts +1 -1
  50. package/dist/eventbus/event-message-classes/abstract-event-message.js +8 -0
  51. package/dist/eventbus/event-message-classes/abstract-event-message.js.map +1 -1
  52. package/dist/eventbus/event-message-classes/event-message-ai-node.d.ts +0 -2
  53. package/dist/eventbus/event-message-classes/event-message-ai-node.js +0 -8
  54. package/dist/eventbus/event-message-classes/event-message-ai-node.js.map +1 -1
  55. package/dist/eventbus/event-message-classes/event-message-audit.d.ts +1 -2
  56. package/dist/eventbus/event-message-classes/event-message-audit.js +0 -8
  57. package/dist/eventbus/event-message-classes/event-message-audit.js.map +1 -1
  58. package/dist/eventbus/event-message-classes/event-message-execution.d.ts +0 -2
  59. package/dist/eventbus/event-message-classes/event-message-execution.js +0 -8
  60. package/dist/eventbus/event-message-classes/event-message-execution.js.map +1 -1
  61. package/dist/eventbus/event-message-classes/event-message-generic.d.ts +0 -2
  62. package/dist/eventbus/event-message-classes/event-message-generic.js +0 -8
  63. package/dist/eventbus/event-message-classes/event-message-generic.js.map +1 -1
  64. package/dist/eventbus/event-message-classes/event-message-mcp.d.ts +0 -2
  65. package/dist/eventbus/event-message-classes/event-message-mcp.js +0 -8
  66. package/dist/eventbus/event-message-classes/event-message-mcp.js.map +1 -1
  67. package/dist/eventbus/event-message-classes/event-message-node.d.ts +0 -2
  68. package/dist/eventbus/event-message-classes/event-message-node.js +0 -8
  69. package/dist/eventbus/event-message-classes/event-message-node.js.map +1 -1
  70. package/dist/eventbus/event-message-classes/event-message-queue.d.ts +0 -2
  71. package/dist/eventbus/event-message-classes/event-message-queue.js +0 -8
  72. package/dist/eventbus/event-message-classes/event-message-queue.js.map +1 -1
  73. package/dist/eventbus/event-message-classes/event-message-runner.d.ts +0 -2
  74. package/dist/eventbus/event-message-classes/event-message-runner.js +0 -8
  75. package/dist/eventbus/event-message-classes/event-message-runner.js.map +1 -1
  76. package/dist/eventbus/event-message-classes/event-message-workflow.d.ts +1 -2
  77. package/dist/eventbus/event-message-classes/event-message-workflow.js +0 -8
  78. package/dist/eventbus/event-message-classes/event-message-workflow.js.map +1 -1
  79. package/dist/events/event.service.d.ts +3 -2
  80. package/dist/events/event.service.js.map +1 -1
  81. package/dist/events/maps/mcp-post-save-metrics.event-map.d.ts +7 -0
  82. package/dist/events/maps/mcp-post-save-metrics.event-map.js +3 -0
  83. package/dist/events/maps/mcp-post-save-metrics.event-map.js.map +1 -0
  84. package/dist/events/maps/relay.event-map.d.ts +3 -0
  85. package/dist/events/maps/system-task-metrics.event-map.d.ts +45 -0
  86. package/dist/events/maps/system-task-metrics.event-map.js +3 -0
  87. package/dist/events/maps/system-task-metrics.event-map.js.map +1 -0
  88. package/dist/events/relays/activity.event-relay.d.ts +9 -3
  89. package/dist/events/relays/activity.event-relay.js +33 -4
  90. package/dist/events/relays/activity.event-relay.js.map +1 -1
  91. package/dist/events/relays/telemetry.event-relay.js +34 -14
  92. package/dist/events/relays/telemetry.event-relay.js.map +1 -1
  93. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +10 -6
  94. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  95. package/dist/execution-lifecycle/shared/shared-hook-functions.d.ts +1 -1
  96. package/dist/execution-lifecycle/shared/shared-hook-functions.js +2 -1
  97. package/dist/execution-lifecycle/shared/shared-hook-functions.js.map +1 -1
  98. package/dist/executions/engine-v2-execution-reader.service.d.ts +26 -0
  99. package/dist/executions/engine-v2-execution-reader.service.js +58 -13
  100. package/dist/executions/engine-v2-execution-reader.service.js.map +1 -1
  101. package/dist/executions/engine-v2-mapping.d.ts +5 -0
  102. package/dist/executions/engine-v2-mapping.js +30 -0
  103. package/dist/executions/engine-v2-mapping.js.map +1 -0
  104. package/dist/executions/execution-cursor.d.ts +51 -0
  105. package/dist/executions/execution-cursor.js +39 -0
  106. package/dist/executions/execution-cursor.js.map +1 -0
  107. package/dist/executions/execution-id.js +2 -2
  108. package/dist/executions/execution-id.js.map +1 -1
  109. package/dist/executions/execution-list-v1.service.d.ts +27 -0
  110. package/dist/executions/execution-list-v1.service.js +98 -0
  111. package/dist/executions/execution-list-v1.service.js.map +1 -0
  112. package/dist/executions/execution-list-v2.service.d.ts +25 -0
  113. package/dist/executions/execution-list-v2.service.js +168 -0
  114. package/dist/executions/execution-list-v2.service.js.map +1 -0
  115. package/dist/executions/execution-list.service.d.ts +19 -0
  116. package/dist/executions/execution-list.service.js +67 -0
  117. package/dist/executions/execution-list.service.js.map +1 -0
  118. package/dist/executions/execution-recovery.service.d.ts +1 -2
  119. package/dist/executions/execution-recovery.service.js +1 -2
  120. package/dist/executions/execution-recovery.service.js.map +1 -1
  121. package/dist/executions/execution.service.d.ts +1 -34
  122. package/dist/executions/execution.service.js +4 -73
  123. package/dist/executions/execution.service.js.map +1 -1
  124. package/dist/executions/execution.types.d.ts +4 -2
  125. package/dist/executions/executions.controller.d.ts +4 -1
  126. package/dist/executions/executions.controller.js +12 -23
  127. package/dist/executions/executions.controller.js.map +1 -1
  128. package/dist/executions/merge-execution-pages.d.ts +10 -0
  129. package/dist/executions/merge-execution-pages.js +30 -0
  130. package/dist/executions/merge-execution-pages.js.map +1 -0
  131. package/dist/executions/parse-range-query.middleware.d.ts +2 -3
  132. package/dist/executions/parse-range-query.middleware.js +27 -21
  133. package/dist/executions/parse-range-query.middleware.js.map +1 -1
  134. package/dist/external-hooks.d.ts +6 -2
  135. package/dist/load-nodes-and-credentials.d.ts +3 -0
  136. package/dist/load-nodes-and-credentials.js +37 -15
  137. package/dist/load-nodes-and-credentials.js.map +1 -1
  138. package/dist/metrics/prometheus/constant.d.ts +1 -0
  139. package/dist/metrics/prometheus/constant.js +4 -1
  140. package/dist/metrics/prometheus/constant.js.map +1 -1
  141. package/dist/metrics/prometheus/mcp-post-save-metrics.service.d.ts +10 -0
  142. package/dist/metrics/prometheus/mcp-post-save-metrics.service.js +44 -0
  143. package/dist/metrics/prometheus/mcp-post-save-metrics.service.js.map +1 -0
  144. package/dist/metrics/prometheus/prometheus.service.d.ts +3 -1
  145. package/dist/metrics/prometheus/prometheus.service.js +6 -2
  146. package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
  147. package/dist/metrics/prometheus/system-task-metrics.service.d.ts +12 -0
  148. package/dist/metrics/prometheus/system-task-metrics.service.js +157 -0
  149. package/dist/metrics/prometheus/system-task-metrics.service.js.map +1 -0
  150. package/dist/middlewares/list-query/dtos/credentials.select.dto.js +1 -0
  151. package/dist/middlewares/list-query/dtos/credentials.select.dto.js.map +1 -1
  152. package/dist/modules/agents/adapters/agents-credential-provider.d.ts +2 -1
  153. package/dist/modules/agents/adapters/agents-credential-provider.js +3 -1
  154. package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
  155. package/dist/modules/agents/agent-chat.controller.js +32 -37
  156. package/dist/modules/agents/agent-chat.controller.js.map +1 -1
  157. package/dist/modules/agents/agent-config.service.js +1 -1
  158. package/dist/modules/agents/agent-config.service.js.map +1 -1
  159. package/dist/modules/agents/agent-conversation-state.service.d.ts +12 -0
  160. package/dist/modules/agents/agent-conversation-state.service.js +34 -0
  161. package/dist/modules/agents/agent-conversation-state.service.js.map +1 -0
  162. package/dist/modules/agents/agent-custom-tools.service.js +2 -2
  163. package/dist/modules/agents/agent-custom-tools.service.js.map +1 -1
  164. package/dist/modules/agents/agent-execution-orchestrator.service.d.ts +13 -6
  165. package/dist/modules/agents/agent-execution-orchestrator.service.js +284 -417
  166. package/dist/modules/agents/agent-execution-orchestrator.service.js.map +1 -1
  167. package/dist/modules/agents/agent-execution-recording.error.d.ts +21 -0
  168. package/dist/modules/agents/agent-execution-recording.error.js +17 -0
  169. package/dist/modules/agents/agent-execution-recording.error.js.map +1 -0
  170. package/dist/modules/agents/agent-execution.service.d.ts +1 -1
  171. package/dist/modules/agents/agent-execution.service.js +51 -20
  172. package/dist/modules/agents/agent-execution.service.js.map +1 -1
  173. package/dist/modules/agents/agent-integration-management.service.d.ts +5 -3
  174. package/dist/modules/agents/agent-integration-management.service.js +9 -6
  175. package/dist/modules/agents/agent-integration-management.service.js.map +1 -1
  176. package/dist/modules/agents/agent-integrations.controller.d.ts +1 -3
  177. package/dist/modules/agents/agent-integrations.controller.js +4 -6
  178. package/dist/modules/agents/agent-integrations.controller.js.map +1 -1
  179. package/dist/modules/agents/agent-message-mapper.d.ts +1 -1
  180. package/dist/modules/agents/agent-message-mapper.js +3 -0
  181. package/dist/modules/agents/agent-message-mapper.js.map +1 -1
  182. package/dist/modules/agents/agent-modification-telemetry.service.d.ts +2 -2
  183. package/dist/modules/agents/agent-modification-telemetry.service.js.map +1 -1
  184. package/dist/modules/agents/agent-publish.service.js +5 -5
  185. package/dist/modules/agents/agent-publish.service.js.map +1 -1
  186. package/dist/modules/agents/agent-runnable-state.service.js +1 -1
  187. package/dist/modules/agents/agent-runnable-state.service.js.map +1 -1
  188. package/dist/modules/agents/agent-runtime-cache.service.js +1 -1
  189. package/dist/modules/agents/agent-runtime-cache.service.js.map +1 -1
  190. package/dist/modules/agents/agent-runtime-reconstruction.service.js +1 -1
  191. package/dist/modules/agents/agent-runtime-reconstruction.service.js.map +1 -1
  192. package/dist/modules/agents/agent-skills.service.js +3 -3
  193. package/dist/modules/agents/agent-skills.service.js.map +1 -1
  194. package/dist/modules/agents/agent-sse-stream.d.ts +4 -1
  195. package/dist/modules/agents/agent-sse-stream.js +46 -33
  196. package/dist/modules/agents/agent-sse-stream.js.map +1 -1
  197. package/dist/modules/agents/agent-task.service.js +3 -3
  198. package/dist/modules/agents/agent-task.service.js.map +1 -1
  199. package/dist/modules/agents/agent-test-run.service.d.ts +24 -41
  200. package/dist/modules/agents/agent-test-run.service.js +83 -59
  201. package/dist/modules/agents/agent-test-run.service.js.map +1 -1
  202. package/dist/modules/agents/agent-turn-execution.service.d.ts +49 -0
  203. package/dist/modules/agents/agent-turn-execution.service.js +212 -0
  204. package/dist/modules/agents/agent-turn-execution.service.js.map +1 -0
  205. package/dist/modules/agents/agent-workflow-execution.service.d.ts +6 -3
  206. package/dist/modules/agents/agent-workflow-execution.service.js +77 -105
  207. package/dist/modules/agents/agent-workflow-execution.service.js.map +1 -1
  208. package/dist/modules/agents/agent-workflow-tool-resume.service.d.ts +0 -1
  209. package/dist/modules/agents/agent-workflow-tool-resume.service.js +46 -20
  210. package/dist/modules/agents/agent-workflow-tool-resume.service.js.map +1 -1
  211. package/dist/modules/agents/agents-config.controller.js +1 -1
  212. package/dist/modules/agents/agents-config.controller.js.map +1 -1
  213. package/dist/modules/agents/background/agent-wake.service.d.ts +3 -5
  214. package/dist/modules/agents/background/agent-wake.service.js +6 -10
  215. package/dist/modules/agents/background/agent-wake.service.js.map +1 -1
  216. package/dist/modules/agents/builder/agents-builder-prompts.d.ts +1 -1
  217. package/dist/modules/agents/builder/agents-builder-prompts.js +21 -0
  218. package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
  219. package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +2 -2
  220. package/dist/modules/agents/builder/skills/external-services.skill.js +4 -1
  221. package/dist/modules/agents/builder/skills/external-services.skill.js.map +1 -1
  222. package/dist/modules/agents/entities/agent-checkpoint.entity.d.ts +1 -0
  223. package/dist/modules/agents/entities/agent-checkpoint.entity.js +10 -1
  224. package/dist/modules/agents/entities/agent-checkpoint.entity.js.map +1 -1
  225. package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +1 -1
  226. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +3 -3
  227. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -1
  228. package/dist/modules/agents/integrations/agent-chat-bridge.d.ts +11 -24
  229. package/dist/modules/agents/integrations/agent-chat-bridge.js +58 -28
  230. package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
  231. package/dist/modules/agents/integrations/agent-chat-hitl-resume-handler.d.ts +5 -12
  232. package/dist/modules/agents/integrations/agent-chat-hitl-resume-handler.js +8 -3
  233. package/dist/modules/agents/integrations/agent-chat-hitl-resume-handler.js.map +1 -1
  234. package/dist/modules/agents/integrations/agent-chat-integration.d.ts +2 -1
  235. package/dist/modules/agents/integrations/agent-chat-integration.js.map +1 -1
  236. package/dist/modules/agents/integrations/agent-chat-message-context.d.ts +4 -4
  237. package/dist/modules/agents/integrations/agent-chat-message-context.js +4 -37
  238. package/dist/modules/agents/integrations/agent-chat-message-context.js.map +1 -1
  239. package/dist/modules/agents/integrations/integration-message-context.d.ts +7 -0
  240. package/dist/modules/agents/integrations/integration-message-context.js +115 -0
  241. package/dist/modules/agents/integrations/integration-message-context.js.map +1 -0
  242. package/dist/modules/agents/integrations/integration-message-context.service.d.ts +8 -3
  243. package/dist/modules/agents/integrations/integration-message-context.service.js +36 -58
  244. package/dist/modules/agents/integrations/integration-message-context.service.js.map +1 -1
  245. package/dist/modules/agents/integrations/integration-tool-definitions.js +1 -1
  246. package/dist/modules/agents/integrations/integration-tool-definitions.js.map +1 -1
  247. package/dist/modules/agents/integrations/integration-tool-execution.d.ts +0 -1
  248. package/dist/modules/agents/integrations/integration-tool-execution.js +19 -42
  249. package/dist/modules/agents/integrations/integration-tool-execution.js.map +1 -1
  250. package/dist/modules/agents/integrations/integration-tool-factory.d.ts +0 -1
  251. package/dist/modules/agents/integrations/integration-tool-factory.js +1 -3
  252. package/dist/modules/agents/integrations/integration-tool-factory.js.map +1 -1
  253. package/dist/modules/agents/integrations/integration-tool-types.d.ts +13 -0
  254. package/dist/modules/agents/integrations/n8n-checkpoint-storage.js +4 -2
  255. package/dist/modules/agents/integrations/n8n-checkpoint-storage.js.map +1 -1
  256. package/dist/modules/agents/integrations/platforms/telegram-bridge-behavior.d.ts +2 -0
  257. package/dist/modules/agents/integrations/platforms/telegram-bridge-behavior.js +40 -0
  258. package/dist/modules/agents/integrations/platforms/telegram-bridge-behavior.js.map +1 -1
  259. package/dist/modules/agents/integrations/platforms/telegram-integration.d.ts +1 -0
  260. package/dist/modules/agents/integrations/platforms/telegram-integration.js +4 -0
  261. package/dist/modules/agents/integrations/platforms/telegram-integration.js.map +1 -1
  262. package/dist/modules/agents/repositories/agent-checkpoint.repository.d.ts +1 -1
  263. package/dist/modules/agents/repositories/agent-checkpoint.repository.js +2 -2
  264. package/dist/modules/agents/repositories/agent-checkpoint.repository.js.map +1 -1
  265. package/dist/modules/agents/repositories/agent-execution.repository.d.ts +2 -1
  266. package/dist/modules/agents/repositories/agent-execution.repository.js +7 -4
  267. package/dist/modules/agents/repositories/agent-execution.repository.js.map +1 -1
  268. package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js +3 -0
  269. package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js.map +1 -1
  270. package/dist/modules/agents/sub-agents/sub-agent-runner.d.ts +3 -4
  271. package/dist/modules/agents/sub-agents/sub-agent-runner.js +95 -151
  272. package/dist/modules/agents/sub-agents/sub-agent-runner.js.map +1 -1
  273. package/dist/modules/agents/tools/workflow-tool-factory.js +1 -1
  274. package/dist/modules/agents/tools/workflow-tool-factory.js.map +1 -1
  275. package/dist/modules/agents/utils/agent-credential-provider.d.ts +1 -1
  276. package/dist/modules/agents/utils/agent-credential-provider.js +2 -2
  277. package/dist/modules/agents/utils/agent-credential-provider.js.map +1 -1
  278. package/dist/modules/agents/utils/execution-to-message-mapper.d.ts +1 -1
  279. package/dist/modules/agents/utils/execution-to-message-mapper.js +3 -0
  280. package/dist/modules/agents/utils/execution-to-message-mapper.js.map +1 -1
  281. package/dist/modules/agents/utils/mcp-attribution.js +3 -1
  282. package/dist/modules/agents/utils/mcp-attribution.js.map +1 -1
  283. package/dist/modules/breaking-changes/breaking-changes.migration-registry.service.d.ts +2 -2
  284. package/dist/modules/breaking-changes/breaking-changes.migration-registry.service.js.map +1 -1
  285. package/dist/modules/breaking-changes/breaking-changes.migration.service.d.ts +4 -11
  286. package/dist/modules/breaking-changes/breaking-changes.migration.service.js +52 -28
  287. package/dist/modules/breaking-changes/breaking-changes.migration.service.js.map +1 -1
  288. package/dist/modules/breaking-changes/detection-report.d.ts +5 -0
  289. package/dist/modules/breaking-changes/detection-report.js +18 -0
  290. package/dist/modules/breaking-changes/detection-report.js.map +1 -0
  291. package/dist/modules/breaking-changes/migrations/execute-workflow-each-to-loop.migration.d.ts +2 -0
  292. package/dist/modules/breaking-changes/migrations/execute-workflow-each-to-loop.migration.js +159 -0
  293. package/dist/modules/breaking-changes/migrations/execute-workflow-each-to-loop.migration.js.map +1 -0
  294. package/dist/modules/breaking-changes/migrations/index.d.ts +2 -2
  295. package/dist/modules/breaking-changes/migrations/index.js +2 -1
  296. package/dist/modules/breaking-changes/migrations/index.js.map +1 -1
  297. package/dist/modules/breaking-changes/migrations/node-migration.d.ts +30 -1
  298. package/dist/modules/breaking-changes/migrations/node-migration.js +12 -0
  299. package/dist/modules/breaking-changes/migrations/node-migration.js.map +1 -1
  300. package/dist/modules/breaking-changes/rules/v2/oauth-callback-auth.rule.js +2 -1
  301. package/dist/modules/breaking-changes/rules/v2/oauth-callback-auth.rule.js.map +1 -1
  302. package/dist/modules/breaking-changes/rules/v2/pyodide-removed.rule.js +6 -12
  303. package/dist/modules/breaking-changes/rules/v2/pyodide-removed.rule.js.map +1 -1
  304. package/dist/modules/breaking-changes/rules/v3/agent-node-version.rule.js +6 -12
  305. package/dist/modules/breaking-changes/rules/v3/agent-node-version.rule.js.map +1 -1
  306. package/dist/modules/breaking-changes/rules/v3/agent-removed-modes.rule.js +7 -13
  307. package/dist/modules/breaking-changes/rules/v3/agent-removed-modes.rule.js.map +1 -1
  308. package/dist/modules/breaking-changes/rules/v3/ai-transform-deprecated.rule.js +6 -12
  309. package/dist/modules/breaking-changes/rules/v3/ai-transform-deprecated.rule.js.map +1 -1
  310. package/dist/modules/breaking-changes/rules/v3/always-output-data-multi-output.rule.js +6 -13
  311. package/dist/modules/breaking-changes/rules/v3/always-output-data-multi-output.rule.js.map +1 -1
  312. package/dist/modules/breaking-changes/rules/v3/caller-policy-default-any.rule.js +2 -1
  313. package/dist/modules/breaking-changes/rules/v3/caller-policy-default-any.rule.js.map +1 -1
  314. package/dist/modules/breaking-changes/rules/v3/chat-hub-deprecated.rule.js +2 -1
  315. package/dist/modules/breaking-changes/rules/v3/chat-hub-deprecated.rule.js.map +1 -1
  316. package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.js +6 -12
  317. package/dist/modules/breaking-changes/rules/v3/chat-trigger-embedded-json.rule.js.map +1 -1
  318. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +2 -1
  319. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -1
  320. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +2 -1
  321. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -1
  322. package/dist/modules/breaking-changes/rules/v3/execute-workflow-each-mode.rule.js +6 -12
  323. package/dist/modules/breaking-changes/rules/v3/execute-workflow-each-mode.rule.js.map +1 -1
  324. package/dist/modules/breaking-changes/rules/v3/execute-workflow-source-modes.rule.js +6 -12
  325. package/dist/modules/breaking-changes/rules/v3/execute-workflow-source-modes.rule.js.map +1 -1
  326. package/dist/modules/breaking-changes/rules/v3/external-secrets-project-roles-default.rule.js +3 -2
  327. package/dist/modules/breaking-changes/rules/v3/external-secrets-project-roles-default.rule.js.map +1 -1
  328. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +6 -12
  329. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -1
  330. package/dist/modules/breaking-changes/rules/v3/gmail-trigger-version.rule.js +6 -12
  331. package/dist/modules/breaking-changes/rules/v3/gmail-trigger-version.rule.js.map +1 -1
  332. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +2 -1
  333. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -1
  334. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +2 -1
  335. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -1
  336. package/dist/modules/breaking-changes/rules/v3/pre-execute-error-creates-execution.rule.js +2 -1
  337. package/dist/modules/breaking-changes/rules/v3/pre-execute-error-creates-execution.rule.js.map +1 -1
  338. package/dist/modules/breaking-changes/rules/v3/ssrf-default-blocked-ranges.rule.js +2 -1
  339. package/dist/modules/breaking-changes/rules/v3/ssrf-default-blocked-ranges.rule.js.map +1 -1
  340. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +2 -1
  341. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -1
  342. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +2 -1
  343. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -1
  344. package/dist/modules/chat-hub/chat-hub-workflow.service.d.ts +1 -0
  345. package/dist/modules/chat-hub/chat-hub-workflow.service.js +7 -2
  346. package/dist/modules/chat-hub/chat-hub-workflow.service.js.map +1 -1
  347. package/dist/modules/chat-hub/chat-hub.attachment.service.js +3 -1
  348. package/dist/modules/chat-hub/chat-hub.attachment.service.js.map +1 -1
  349. package/dist/modules/community-packages/community-node-types-utils.d.ts +2 -2
  350. package/dist/modules/community-packages/community-node-types-utils.js +4 -2
  351. package/dist/modules/community-packages/community-node-types-utils.js.map +1 -1
  352. package/dist/modules/community-packages/community-node-types.service.d.ts +1 -0
  353. package/dist/modules/community-packages/community-node-types.service.js +12 -6
  354. package/dist/modules/community-packages/community-node-types.service.js.map +1 -1
  355. package/dist/modules/community-packages/community-packages.config.d.ts +1 -0
  356. package/dist/modules/community-packages/community-packages.config.js +2 -0
  357. package/dist/modules/community-packages/community-packages.config.js.map +1 -1
  358. package/dist/modules/community-packages/community-packages.lifecycle.service.d.ts +2 -1
  359. package/dist/modules/community-packages/community-packages.lifecycle.service.js +23 -18
  360. package/dist/modules/community-packages/community-packages.lifecycle.service.js.map +1 -1
  361. package/dist/modules/community-packages/community-packages.service.d.ts +1 -0
  362. package/dist/modules/community-packages/community-packages.service.js +33 -2
  363. package/dist/modules/community-packages/community-packages.service.js.map +1 -1
  364. package/dist/modules/engine-v2/engine-data-plane-client.d.ts +2 -1
  365. package/dist/modules/engine-v2/engine-data-plane-client.js +14 -0
  366. package/dist/modules/engine-v2/engine-data-plane-client.js.map +1 -1
  367. package/dist/modules/engine-v2/engine-v2.module.d.ts +1 -0
  368. package/dist/modules/engine-v2/engine-v2.module.js +11 -2
  369. package/dist/modules/engine-v2/engine-v2.module.js.map +1 -1
  370. package/dist/modules/engine-v2/engine-v2.runtime.d.ts +11 -2
  371. package/dist/modules/engine-v2/engine-v2.runtime.js +29 -11
  372. package/dist/modules/engine-v2/engine-v2.runtime.js.map +1 -1
  373. package/dist/modules/external-secrets.ee/constants.d.ts +0 -1
  374. package/dist/modules/external-secrets.ee/constants.js +1 -2
  375. package/dist/modules/external-secrets.ee/constants.js.map +1 -1
  376. package/dist/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.d.ts +1 -2
  377. package/dist/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.js +28 -29
  378. package/dist/modules/external-secrets.ee/external-secrets-provider-connection-manager.ee.js.map +1 -1
  379. package/dist/modules/external-secrets.ee/external-secrets.config.d.ts +2 -0
  380. package/dist/modules/external-secrets.ee/external-secrets.config.js +12 -0
  381. package/dist/modules/external-secrets.ee/external-secrets.config.js.map +1 -1
  382. package/dist/modules/external-secrets.ee/provider-lifecycle.service.js +1 -1
  383. package/dist/modules/external-secrets.ee/provider-lifecycle.service.js.map +1 -1
  384. package/dist/modules/external-secrets.ee/providers/infisical.js +6 -2
  385. package/dist/modules/external-secrets.ee/providers/infisical.js.map +1 -1
  386. package/dist/modules/external-secrets.ee/providers/vault.d.ts +1 -0
  387. package/dist/modules/external-secrets.ee/providers/vault.js +43 -13
  388. package/dist/modules/external-secrets.ee/providers/vault.js.map +1 -1
  389. package/dist/modules/external-secrets.ee/retry-manager.service.js +9 -1
  390. package/dist/modules/external-secrets.ee/retry-manager.service.js.map +1 -1
  391. package/dist/modules/external-secrets.ee/secrets-cache.service.d.ts +5 -2
  392. package/dist/modules/external-secrets.ee/secrets-cache.service.js +23 -20
  393. package/dist/modules/external-secrets.ee/secrets-cache.service.js.map +1 -1
  394. package/dist/modules/external-secrets.ee/types.d.ts +1 -0
  395. package/dist/modules/external-secrets.ee/types.js +7 -1
  396. package/dist/modules/external-secrets.ee/types.js.map +1 -1
  397. package/dist/modules/external-secrets.ee/with-timeout.d.ts +4 -0
  398. package/dist/modules/external-secrets.ee/with-timeout.js +21 -0
  399. package/dist/modules/external-secrets.ee/with-timeout.js.map +1 -0
  400. package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +3 -2
  401. package/dist/modules/insights/database/repositories/insights-by-period.repository.js +4 -3
  402. package/dist/modules/insights/database/repositories/insights-by-period.repository.js.map +1 -1
  403. package/dist/modules/insights/insights-collection.service.js +10 -2
  404. package/dist/modules/insights/insights-collection.service.js.map +1 -1
  405. package/dist/modules/insights/insights.module.d.ts +1 -1
  406. package/dist/modules/instance-ai/computer-use-availability.d.ts +14 -0
  407. package/dist/modules/instance-ai/computer-use-availability.js +42 -0
  408. package/dist/modules/instance-ai/computer-use-availability.js.map +1 -0
  409. package/dist/modules/instance-ai/eval/agent-execution.service.js +1 -1
  410. package/dist/modules/instance-ai/eval/agent-execution.service.js.map +1 -1
  411. package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.d.ts +4 -2
  412. package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js +17 -3
  413. package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js.map +1 -1
  414. package/dist/modules/instance-ai/eval/execution.service.js +14 -4
  415. package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
  416. package/dist/modules/instance-ai/eval/thread-restore.service.d.ts +9 -3
  417. package/dist/modules/instance-ai/eval/thread-restore.service.js +75 -7
  418. package/dist/modules/instance-ai/eval/thread-restore.service.js.map +1 -1
  419. package/dist/modules/instance-ai/eval/workflow-analysis.d.ts +3 -1
  420. package/dist/modules/instance-ai/eval/workflow-analysis.js +16 -2
  421. package/dist/modules/instance-ai/eval/workflow-analysis.js.map +1 -1
  422. package/dist/modules/instance-ai/instance-ai-conversation-history.service.js +1 -1
  423. package/dist/modules/instance-ai/instance-ai-conversation-history.service.js.map +1 -1
  424. package/dist/modules/instance-ai/instance-ai-execution-wait.d.ts +14 -0
  425. package/dist/modules/instance-ai/instance-ai-execution-wait.js +66 -0
  426. package/dist/modules/instance-ai/instance-ai-execution-wait.js.map +1 -0
  427. package/dist/modules/instance-ai/instance-ai-settings.service.js +1 -4
  428. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  429. package/dist/modules/instance-ai/instance-ai-step-run.d.ts +32 -0
  430. package/dist/modules/instance-ai/instance-ai-step-run.js +135 -0
  431. package/dist/modules/instance-ai/instance-ai-step-run.js.map +1 -0
  432. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +9 -2
  433. package/dist/modules/instance-ai/instance-ai.adapter.service.js +305 -92
  434. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  435. package/dist/modules/instance-ai/instance-ai.controller.d.ts +1 -0
  436. package/dist/modules/instance-ai/instance-ai.controller.js +17 -4
  437. package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
  438. package/dist/modules/instance-ai/instance-ai.service.d.ts +4 -4
  439. package/dist/modules/instance-ai/instance-ai.service.js +85 -121
  440. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  441. package/dist/modules/instance-ai/instance-context.service.d.ts +39 -10
  442. package/dist/modules/instance-ai/instance-context.service.js +283 -69
  443. package/dist/modules/instance-ai/instance-context.service.js.map +1 -1
  444. package/dist/modules/instance-ai/internal-messages.d.ts +11 -2
  445. package/dist/modules/instance-ai/internal-messages.js +183 -16
  446. package/dist/modules/instance-ai/internal-messages.js.map +1 -1
  447. package/dist/modules/instance-ai/message-parser.js.map +1 -1
  448. package/dist/modules/instance-registry/instance-registry.module.d.ts +2 -2
  449. package/dist/modules/instance-registry/instance-registry.module.js +5 -1
  450. package/dist/modules/instance-registry/instance-registry.module.js.map +1 -1
  451. package/dist/modules/instance-registry/stale-member-cleanup.task.d.ts +1 -1
  452. package/dist/modules/instance-registry/stale-member-cleanup.task.js +1 -1
  453. package/dist/modules/instance-registry/stale-member-cleanup.task.js.map +1 -1
  454. package/dist/modules/instance-registry/storage/redis-instance-storage.js +2 -10
  455. package/dist/modules/instance-registry/storage/redis-instance-storage.js.map +1 -1
  456. package/dist/modules/mcp/mcp-post-save-metrics.service.d.ts +10 -0
  457. package/dist/modules/mcp/mcp-post-save-metrics.service.js +40 -0
  458. package/dist/modules/mcp/mcp-post-save-metrics.service.js.map +1 -0
  459. package/dist/modules/mcp/mcp-protected-resource.d.ts +5 -2
  460. package/dist/modules/mcp/mcp-protected-resource.js +25 -4
  461. package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
  462. package/dist/modules/mcp/mcp-scopes.d.ts +3 -0
  463. package/dist/modules/mcp/mcp-scopes.js +21 -1
  464. package/dist/modules/mcp/mcp-scopes.js.map +1 -1
  465. package/dist/modules/mcp/mcp-tool-availability.d.ts +7 -0
  466. package/dist/modules/mcp/mcp-tool-availability.js +11 -0
  467. package/dist/modules/mcp/mcp-tool-availability.js.map +1 -1
  468. package/dist/modules/mcp/mcp.config.d.ts +1 -0
  469. package/dist/modules/mcp/mcp.config.js +5 -0
  470. package/dist/modules/mcp/mcp.config.js.map +1 -1
  471. package/dist/modules/mcp/mcp.constants.d.ts +6 -0
  472. package/dist/modules/mcp/mcp.constants.js +7 -1
  473. package/dist/modules/mcp/mcp.constants.js.map +1 -1
  474. package/dist/modules/mcp/mcp.controller.js +3 -6
  475. package/dist/modules/mcp/mcp.controller.js.map +1 -1
  476. package/dist/modules/mcp/mcp.service.d.ts +11 -7
  477. package/dist/modules/mcp/mcp.service.js +116 -43
  478. package/dist/modules/mcp/mcp.service.js.map +1 -1
  479. package/dist/modules/mcp/mcp.types.d.ts +0 -1
  480. package/dist/modules/mcp/tools/get-instance-context.tool.d.ts +29 -0
  481. package/dist/modules/mcp/tools/get-instance-context.tool.js +109 -0
  482. package/dist/modules/mcp/tools/get-instance-context.tool.js.map +1 -0
  483. package/dist/modules/mcp/tools/get-node-usage.tool.d.ts +13 -0
  484. package/dist/modules/mcp/tools/get-node-usage.tool.js +117 -0
  485. package/dist/modules/mcp/tools/get-node-usage.tool.js.map +1 -0
  486. package/dist/modules/mcp/tools/get-user-preferences.tool.d.ts +10 -0
  487. package/dist/modules/mcp/tools/get-user-preferences.tool.js +108 -0
  488. package/dist/modules/mcp/tools/get-user-preferences.tool.js.map +1 -0
  489. package/dist/modules/mcp/tools/instance-activity.tool.d.ts +27 -0
  490. package/dist/modules/mcp/tools/instance-activity.tool.js +205 -0
  491. package/dist/modules/mcp/tools/instance-activity.tool.js.map +1 -0
  492. package/dist/modules/mcp/tools/list-credentials.tool.d.ts +63 -13
  493. package/dist/modules/mcp/tools/list-credentials.tool.js +8 -1
  494. package/dist/modules/mcp/tools/list-credentials.tool.js.map +1 -1
  495. package/dist/modules/mcp/tools/search-executions.tool.d.ts +3 -3
  496. package/dist/modules/mcp/tools/search-executions.tool.js +22 -14
  497. package/dist/modules/mcp/tools/search-executions.tool.js.map +1 -1
  498. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +8 -4
  499. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +128 -70
  500. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
  501. package/dist/modules/mcp/tools/workflow-builder/error-code.utils.d.ts +1 -0
  502. package/dist/modules/mcp/tools/workflow-builder/error-code.utils.js +22 -0
  503. package/dist/modules/mcp/tools/workflow-builder/error-code.utils.js.map +1 -0
  504. package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.d.ts +1 -3
  505. package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.js +5 -6
  506. package/dist/modules/mcp/tools/workflow-builder/get-workflow-best-practices.tool.js.map +1 -1
  507. package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.d.ts +1 -1
  508. package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.js +2 -2
  509. package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.js.map +1 -1
  510. package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.d.ts +2 -5
  511. package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.js +10 -16
  512. package/dist/modules/mcp/tools/workflow-builder/get-workflow-sdk-reference.tool.js.map +1 -1
  513. package/dist/modules/mcp/tools/workflow-builder/install-community-node.tool.d.ts +12 -0
  514. package/dist/modules/mcp/tools/workflow-builder/install-community-node.tool.js +140 -0
  515. package/dist/modules/mcp/tools/workflow-builder/install-community-node.tool.js.map +1 -0
  516. package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.d.ts +2 -2
  517. package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js +17 -9
  518. package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js.map +1 -1
  519. package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.d.ts +1 -3
  520. package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.js +2 -6
  521. package/dist/modules/mcp/tools/workflow-builder/sdk-reference-content.js.map +1 -1
  522. package/dist/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.d.ts +1 -1
  523. package/dist/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.js +9 -8
  524. package/dist/modules/mcp/tools/workflow-builder/search-workflow-nodes.tool.js.map +1 -1
  525. package/dist/modules/mcp/tools/workflow-builder/uninstalled-node-warnings.d.ts +13 -0
  526. package/dist/modules/mcp/tools/workflow-builder/uninstalled-node-warnings.js +23 -0
  527. package/dist/modules/mcp/tools/workflow-builder/uninstalled-node-warnings.js.map +1 -0
  528. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +18 -14
  529. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +200 -87
  530. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
  531. package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.d.ts +1 -4
  532. package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.js +3 -5
  533. package/dist/modules/mcp/tools/workflow-builder/validate-workflow-code.tool.js.map +1 -1
  534. package/dist/modules/mcp/tools/workflow-builder/workflow-operations.d.ts +1 -3
  535. package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js +2 -2
  536. package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js.map +1 -1
  537. package/dist/modules/mcp-registry/node-description-transform.js +3 -0
  538. package/dist/modules/mcp-registry/node-description-transform.js.map +1 -1
  539. package/dist/modules/mcp-registry/registry/mcp-registry-api.client.js +1 -1
  540. package/dist/modules/mcp-registry/registry/mcp-registry-api.client.js.map +1 -1
  541. package/dist/modules/mcp-registry/registry/mcp-registry-capabilities.d.ts +6 -0
  542. package/dist/modules/mcp-registry/registry/mcp-registry-capabilities.js +34 -0
  543. package/dist/modules/mcp-registry/registry/mcp-registry-capabilities.js.map +1 -0
  544. package/dist/modules/mcp-registry/registry/mcp-registry-server.entity.d.ts +1 -0
  545. package/dist/modules/mcp-registry/registry/mcp-registry-server.entity.js.map +1 -1
  546. package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +4 -1
  547. package/dist/modules/mcp-registry/registry/mcp-registry.service.js +20 -9
  548. package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
  549. package/dist/modules/mcp-registry/registry/mcp-registry.types.d.ts +3 -0
  550. package/dist/modules/mcp-registry/registry/mcp-registry.types.js +1 -0
  551. package/dist/modules/mcp-registry/registry/mcp-registry.types.js.map +1 -1
  552. package/dist/modules/n8n-packages/engine/n8n-package-parser.js +1 -1
  553. package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
  554. package/dist/modules/n8n-packages/entities/credential/credential.serializer.js.map +1 -1
  555. package/dist/modules/n8n-packages/entities/variable/variable-requirements.extractor.d.ts +8 -2
  556. package/dist/modules/n8n-packages/entities/variable/variable-requirements.extractor.js.map +1 -1
  557. package/dist/modules/n8n-packages/entities/workflow/workflow-published-state.d.ts +1 -1
  558. package/dist/modules/n8n-packages/entities/workflow/workflow-published-state.js +2 -2
  559. package/dist/modules/n8n-packages/entities/workflow/workflow-published-state.js.map +1 -1
  560. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.d.ts +1 -2
  561. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js +4 -2
  562. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js.map +1 -1
  563. package/dist/modules/n8n-packages/io/directory/package-directory-inventory-reader.d.ts +43 -0
  564. package/dist/modules/n8n-packages/io/directory/package-directory-inventory-reader.js +177 -0
  565. package/dist/modules/n8n-packages/io/directory/package-directory-inventory-reader.js.map +1 -0
  566. package/dist/modules/n8n-packages/spec/serialized/workflow-metadata.schema.d.ts +3 -0
  567. package/dist/modules/n8n-packages/spec/serialized/workflow-metadata.schema.js +1 -0
  568. package/dist/modules/n8n-packages/spec/serialized/workflow-metadata.schema.js.map +1 -1
  569. package/dist/modules/n8n-packages/spec/serialized/workflow.schema.d.ts +0 -3
  570. package/dist/modules/n8n-packages/spec/serialized/workflow.schema.js +0 -1
  571. package/dist/modules/n8n-packages/spec/serialized/workflow.schema.js.map +1 -1
  572. package/dist/modules/oauth-jwe/oauth-jwe-key.service.d.ts +1 -0
  573. package/dist/modules/oauth-jwe/oauth-jwe-key.service.js +10 -3
  574. package/dist/modules/oauth-jwe/oauth-jwe-key.service.js.map +1 -1
  575. package/dist/modules/oauth-server/oauth-clients.controller.js +1 -1
  576. package/dist/modules/oauth-server/oauth-clients.controller.js.map +1 -1
  577. package/dist/modules/oauth-server/oauth-consent.service.d.ts +1 -0
  578. package/dist/modules/oauth-server/oauth-consent.service.js +21 -10
  579. package/dist/modules/oauth-server/oauth-consent.service.js.map +1 -1
  580. package/dist/modules/oauth-server/oauth-server.service.d.ts +1 -1
  581. package/dist/modules/oauth-server/oauth-server.service.js +2 -2
  582. package/dist/modules/oauth-server/oauth-server.service.js.map +1 -1
  583. package/dist/modules/oauth-server/oauth-token.service.d.ts +3 -1
  584. package/dist/modules/oauth-server/oauth-token.service.js +10 -2
  585. package/dist/modules/oauth-server/oauth-token.service.js.map +1 -1
  586. package/dist/modules/policy-infrastructure/policy-decision-audit.d.ts +1 -1
  587. package/dist/modules/policy-infrastructure/policy-decision-audit.js +8 -1
  588. package/dist/modules/policy-infrastructure/policy-decision-audit.js.map +1 -1
  589. package/dist/modules/policy-infrastructure/policy-decision.service.js +1 -0
  590. package/dist/modules/policy-infrastructure/policy-decision.service.js.map +1 -1
  591. package/dist/modules/promotions.ee/base-branch-files.d.ts +2 -2
  592. package/dist/modules/promotions.ee/base-branch-files.js +2 -3
  593. package/dist/modules/promotions.ee/base-branch-files.js.map +1 -1
  594. package/dist/modules/promotions.ee/constants.d.ts +1 -0
  595. package/dist/modules/promotions.ee/constants.js +2 -1
  596. package/dist/modules/promotions.ee/constants.js.map +1 -1
  597. package/dist/modules/promotions.ee/database/repositories/promotion-provider.repository.js +1 -14
  598. package/dist/modules/promotions.ee/database/repositories/promotion-provider.repository.js.map +1 -1
  599. package/dist/modules/promotions.ee/promotion-binding-preflight.service.d.ts +22 -0
  600. package/dist/modules/promotions.ee/promotion-binding-preflight.service.js +264 -0
  601. package/dist/modules/promotions.ee/promotion-binding-preflight.service.js.map +1 -0
  602. package/dist/modules/promotions.ee/promotion-change.service.d.ts +8 -3
  603. package/dist/modules/promotions.ee/promotion-change.service.js +133 -24
  604. package/dist/modules/promotions.ee/promotion-change.service.js.map +1 -1
  605. package/dist/modules/promotions.ee/promotion-changes.controller.d.ts +2 -2
  606. package/dist/modules/promotions.ee/promotion-changes.controller.js +10 -12
  607. package/dist/modules/promotions.ee/promotion-changes.controller.js.map +1 -1
  608. package/dist/modules/promotions.ee/promotion-connections.service.d.ts +48 -2
  609. package/dist/modules/promotions.ee/promotion-connections.service.js +66 -14
  610. package/dist/modules/promotions.ee/promotion-connections.service.js.map +1 -1
  611. package/dist/modules/promotions.ee/promotions-git.service.d.ts +8 -1
  612. package/dist/modules/promotions.ee/promotions-git.service.js +27 -9
  613. package/dist/modules/promotions.ee/promotions-git.service.js.map +1 -1
  614. package/dist/modules/promotions.ee/promotions-git.utils.d.ts +8 -2
  615. package/dist/modules/promotions.ee/promotions-git.utils.js +10 -0
  616. package/dist/modules/promotions.ee/promotions-git.utils.js.map +1 -1
  617. package/dist/modules/promotions.ee/promotions.service.d.ts +9 -5
  618. package/dist/modules/promotions.ee/promotions.service.js +78 -21
  619. package/dist/modules/promotions.ee/promotions.service.js.map +1 -1
  620. package/dist/modules/promotions.ee/promotions.types.d.ts +6 -0
  621. package/dist/modules/promotions.ee/promotions.types.js.map +1 -1
  622. package/dist/modules/token-exchange/database/repositories/token-exchange-jti.repository.js +1 -0
  623. package/dist/modules/token-exchange/database/repositories/token-exchange-jti.repository.js.map +1 -1
  624. package/dist/modules/token-exchange/services/jti-cleanup.task.d.ts +1 -1
  625. package/dist/modules/token-exchange/services/jti-cleanup.task.js +1 -1
  626. package/dist/modules/token-exchange/services/jti-cleanup.task.js.map +1 -1
  627. package/dist/modules/type-availability-policies/constants.d.ts +1 -0
  628. package/dist/modules/type-availability-policies/constants.js +2 -1
  629. package/dist/modules/type-availability-policies/constants.js.map +1 -1
  630. package/dist/modules/type-availability-policies/database/entities/type-availability-policy.entity.js +2 -1
  631. package/dist/modules/type-availability-policies/database/entities/type-availability-policy.entity.js.map +1 -1
  632. package/dist/modules/type-availability-policies/database/repositories/type-availability-policy-scope.repository.d.ts +2 -1
  633. package/dist/modules/type-availability-policies/database/repositories/type-availability-policy-scope.repository.js +12 -0
  634. package/dist/modules/type-availability-policies/database/repositories/type-availability-policy-scope.repository.js.map +1 -1
  635. package/dist/modules/type-availability-policies/database/repositories/type-availability-policy.repository.d.ts +5 -1
  636. package/dist/modules/type-availability-policies/database/repositories/type-availability-policy.repository.js +11 -2
  637. package/dist/modules/type-availability-policies/database/repositories/type-availability-policy.repository.js.map +1 -1
  638. package/dist/modules/type-availability-policies/node-type-policy.check.d.ts +17 -0
  639. package/dist/modules/type-availability-policies/node-type-policy.check.js +87 -0
  640. package/dist/modules/type-availability-policies/node-type-policy.check.js.map +1 -0
  641. package/dist/modules/type-availability-policies/package-resolver.d.ts +4 -0
  642. package/dist/modules/type-availability-policies/package-resolver.js +26 -0
  643. package/dist/modules/type-availability-policies/package-resolver.js.map +1 -0
  644. package/dist/modules/type-availability-policies/policy-evaluator.d.ts +6 -4
  645. package/dist/modules/type-availability-policies/policy-evaluator.js +16 -13
  646. package/dist/modules/type-availability-policies/policy-evaluator.js.map +1 -1
  647. package/dist/modules/type-availability-policies/policy-rule.types.d.ts +4 -0
  648. package/dist/modules/type-availability-policies/policy-shadow-lint.d.ts +2 -1
  649. package/dist/modules/type-availability-policies/policy-shadow-lint.js +7 -5
  650. package/dist/modules/type-availability-policies/policy-shadow-lint.js.map +1 -1
  651. package/dist/modules/type-availability-policies/type-availability-policies.module.d.ts +1 -1
  652. package/dist/modules/type-availability-policies/type-availability-policies.module.js +1 -0
  653. package/dist/modules/type-availability-policies/type-availability-policies.module.js.map +1 -1
  654. package/dist/modules/type-availability-policies/type-availability-policy-instance.controller.js +3 -3
  655. package/dist/modules/type-availability-policies/type-availability-policy-instance.controller.js.map +1 -1
  656. package/dist/modules/type-availability-policies/type-availability-policy.service.d.ts +33 -4
  657. package/dist/modules/type-availability-policies/type-availability-policy.service.js +189 -28
  658. package/dist/modules/type-availability-policies/type-availability-policy.service.js.map +1 -1
  659. package/dist/modules/workflow-index/workflow-index.service.js +5 -2
  660. package/dist/modules/workflow-index/workflow-index.service.js.map +1 -1
  661. package/dist/node-catalog/index.d.ts +1 -1
  662. package/dist/node-catalog/index.js.map +1 -1
  663. package/dist/node-catalog/node-catalog.service.d.ts +28 -4
  664. package/dist/node-catalog/node-catalog.service.js +202 -7
  665. package/dist/node-catalog/node-catalog.service.js.map +1 -1
  666. package/dist/node-catalog/registry-lookup.d.ts +12 -0
  667. package/dist/node-catalog/registry-lookup.js +68 -0
  668. package/dist/node-catalog/registry-lookup.js.map +1 -0
  669. package/dist/node-execution/execute-node.service.d.ts +72 -0
  670. package/dist/node-execution/execute-node.service.js +297 -0
  671. package/dist/node-execution/execute-node.service.js.map +1 -0
  672. package/dist/node-execution/index.d.ts +2 -0
  673. package/dist/node-execution/index.js +5 -1
  674. package/dist/node-execution/index.js.map +1 -1
  675. package/dist/oauth/dcr-managed-fields.d.ts +1 -1
  676. package/dist/oauth/dcr-managed-fields.js +4 -2
  677. package/dist/oauth/dcr-managed-fields.js.map +1 -1
  678. package/dist/policy/policy-enforcement-backend.d.ts +2 -1
  679. package/dist/policy/policy-enforcement.service.d.ts +3 -1
  680. package/dist/policy/policy-enforcement.service.js +9 -0
  681. package/dist/policy/policy-enforcement.service.js.map +1 -1
  682. package/dist/posthog/index.d.ts +1 -0
  683. package/dist/posthog/index.js +35 -14
  684. package/dist/posthog/index.js.map +1 -1
  685. package/dist/public-api/constants.d.ts +1 -0
  686. package/dist/public-api/constants.js +5 -0
  687. package/dist/public-api/constants.js.map +1 -0
  688. package/dist/public-api/public-api-controller.registry.d.ts +1 -0
  689. package/dist/public-api/public-api-controller.registry.js +15 -0
  690. package/dist/public-api/public-api-controller.registry.js.map +1 -1
  691. package/dist/public-api/types.d.ts +2 -27
  692. package/dist/public-api/v1/controllers/credentials.public.controller.d.ts +3 -1
  693. package/dist/public-api/v1/controllers/credentials.public.controller.js +52 -1
  694. package/dist/public-api/v1/controllers/credentials.public.controller.js.map +1 -1
  695. package/dist/public-api/v1/controllers/executions.public.controller.js +3 -3
  696. package/dist/public-api/v1/controllers/executions.public.controller.js.map +1 -1
  697. package/dist/public-api/v1/controllers/folders.public.controller.d.ts +10 -0
  698. package/dist/public-api/v1/controllers/folders.public.controller.js +121 -0
  699. package/dist/public-api/v1/controllers/folders.public.controller.js.map +1 -0
  700. package/dist/public-api/v1/controllers/index.d.ts +2 -0
  701. package/dist/public-api/v1/controllers/index.js +2 -0
  702. package/dist/public-api/v1/controllers/index.js.map +1 -1
  703. package/dist/public-api/v1/controllers/insights.public.controller.d.ts +9 -0
  704. package/dist/public-api/v1/controllers/insights.public.controller.js +69 -0
  705. package/dist/public-api/v1/controllers/insights.public.controller.js.map +1 -0
  706. package/dist/public-api/v1/controllers/node-type-policies.public.controller.d.ts +11 -5
  707. package/dist/public-api/v1/controllers/node-type-policies.public.controller.js +152 -4
  708. package/dist/public-api/v1/controllers/node-type-policies.public.controller.js.map +1 -1
  709. package/dist/public-api/v1/controllers/promotions.public.controller.d.ts +5 -2
  710. package/dist/public-api/v1/controllers/promotions.public.controller.js +60 -4
  711. package/dist/public-api/v1/controllers/promotions.public.controller.js.map +1 -1
  712. package/dist/public-api/v1/controllers/roles.public.controller.js +1 -0
  713. package/dist/public-api/v1/controllers/roles.public.controller.js.map +1 -1
  714. package/dist/public-api/v1/controllers/tags.public.controller.d.ts +3 -1
  715. package/dist/public-api/v1/controllers/tags.public.controller.js +61 -0
  716. package/dist/public-api/v1/controllers/tags.public.controller.js.map +1 -1
  717. package/dist/public-api/v1/handlers/credentials/credentials.utils.d.ts +3 -3
  718. package/dist/public-api/v1/handlers/credentials/credentials.utils.js +1 -6
  719. package/dist/public-api/v1/handlers/credentials/credentials.utils.js.map +1 -1
  720. package/dist/public-api/v1/handlers/folders/folders.handler.d.ts +0 -7
  721. package/dist/public-api/v1/handlers/folders/folders.handler.js +0 -29
  722. package/dist/public-api/v1/handlers/folders/folders.handler.js.map +1 -1
  723. package/dist/public-api/v1/openapi.yml +4051 -2008
  724. package/dist/public-api/v1/shared/middlewares/global.middleware.d.ts +1 -1
  725. package/dist/public-api/v1/shared/middlewares/global.middleware.js +4 -3
  726. package/dist/public-api/v1/shared/middlewares/global.middleware.js.map +1 -1
  727. package/dist/requests.d.ts +1 -0
  728. package/dist/scaling/constants.d.ts +2 -0
  729. package/dist/scaling/constants.js +4 -1
  730. package/dist/scaling/constants.js.map +1 -1
  731. package/dist/scaling/pubsub/subscriber.service.d.ts +5 -0
  732. package/dist/scaling/pubsub/subscriber.service.js +47 -0
  733. package/dist/scaling/pubsub/subscriber.service.js.map +1 -1
  734. package/dist/scheduling/durable-job-provisioner.d.ts +10 -1
  735. package/dist/scheduling/durable-job-provisioner.js +26 -9
  736. package/dist/scheduling/durable-job-provisioner.js.map +1 -1
  737. package/dist/scheduling/durable-scheduler.d.ts +2 -1
  738. package/dist/scheduling/durable-scheduler.js +4 -3
  739. package/dist/scheduling/durable-scheduler.js.map +1 -1
  740. package/dist/scheduling/scheduled-job-owner-registry.d.ts +2 -1
  741. package/dist/scheduling/scheduled-job-owner-registry.js +2 -1
  742. package/dist/scheduling/scheduled-job-owner-registry.js.map +1 -1
  743. package/dist/scheduling/system-tasks/emit-system-task-metric.d.ts +3 -0
  744. package/dist/scheduling/system-tasks/emit-system-task-metric.js +11 -0
  745. package/dist/scheduling/system-tasks/emit-system-task-metric.js.map +1 -0
  746. package/dist/scheduling/system-tasks/system-task-handler.d.ts +5 -1
  747. package/dist/scheduling/system-tasks/system-task-handler.js +9 -8
  748. package/dist/scheduling/system-tasks/system-task-handler.js.map +1 -1
  749. package/dist/scheduling/system-tasks/system-task-job-registrar.d.ts +28 -0
  750. package/dist/scheduling/system-tasks/system-task-job-registrar.js +130 -0
  751. package/dist/scheduling/system-tasks/system-task-job-registrar.js.map +1 -0
  752. package/dist/scheduling/system-tasks/system-task-run-observer.d.ts +13 -0
  753. package/dist/scheduling/system-tasks/system-task-run-observer.js +54 -0
  754. package/dist/scheduling/system-tasks/system-task-run-observer.js.map +1 -0
  755. package/dist/scheduling/system-tasks/system-task-runner.d.ts +13 -3
  756. package/dist/scheduling/system-tasks/system-task-runner.js +85 -15
  757. package/dist/scheduling/system-tasks/system-task-runner.js.map +1 -1
  758. package/dist/scheduling/system-tasks/system-task-scheduled-job-owner.d.ts +13 -0
  759. package/dist/scheduling/system-tasks/system-task-scheduled-job-owner.js +51 -0
  760. package/dist/scheduling/system-tasks/system-task-scheduled-job-owner.js.map +1 -0
  761. package/dist/scheduling/system-tasks/system-task-timer.d.ts +3 -1
  762. package/dist/scheduling/system-tasks/system-task-timer.js +33 -9
  763. package/dist/scheduling/system-tasks/system-task-timer.js.map +1 -1
  764. package/dist/scheduling/system-tasks/system-task-version-stamp.d.ts +5 -0
  765. package/dist/scheduling/system-tasks/system-task-version-stamp.js +14 -0
  766. package/dist/scheduling/system-tasks/system-task-version-stamp.js.map +1 -0
  767. package/dist/server.d.ts +0 -1
  768. package/dist/server.js +4 -2
  769. package/dist/server.js.map +1 -1
  770. package/dist/services/ai-gateway.service.d.ts +2 -1
  771. package/dist/services/ai-gateway.service.js +7 -4
  772. package/dist/services/ai-gateway.service.js.map +1 -1
  773. package/dist/services/ai-preference.service.d.ts +29 -5
  774. package/dist/services/ai-preference.service.js +119 -20
  775. package/dist/services/ai-preference.service.js.map +1 -1
  776. package/dist/services/credentials-tester.service.js +12 -0
  777. package/dist/services/credentials-tester.service.js.map +1 -1
  778. package/dist/services/engine-data-plane-proxy.service.d.ts +3 -1
  779. package/dist/services/engine-data-plane-proxy.service.js +5 -0
  780. package/dist/services/engine-data-plane-proxy.service.js.map +1 -1
  781. package/dist/services/free-ai-credits.service.d.ts +1 -0
  782. package/dist/services/frontend.service.js +2 -1
  783. package/dist/services/frontend.service.js.map +1 -1
  784. package/dist/services/protected-resource.registry.d.ts +2 -1
  785. package/dist/services/protected-resource.registry.js.map +1 -1
  786. package/dist/services/role.service.js +5 -4
  787. package/dist/services/role.service.js.map +1 -1
  788. package/dist/utils/strapi-utils.d.ts +1 -0
  789. package/dist/utils/strapi-utils.js.map +1 -1
  790. package/dist/wait-tracker.d.ts +5 -0
  791. package/dist/wait-tracker.js +130 -20
  792. package/dist/wait-tracker.js.map +1 -1
  793. package/dist/webhooks/live-webhooks.js +2 -2
  794. package/dist/webhooks/live-webhooks.js.map +1 -1
  795. package/dist/webhooks/test-webhook-registrations.service.d.ts +3 -1
  796. package/dist/webhooks/test-webhook-registrations.service.js +24 -11
  797. package/dist/webhooks/test-webhook-registrations.service.js.map +1 -1
  798. package/dist/webhooks/test-webhooks.d.ts +1 -0
  799. package/dist/webhooks/test-webhooks.js +9 -4
  800. package/dist/webhooks/test-webhooks.js.map +1 -1
  801. package/dist/webhooks/webhook-helpers.d.ts +1 -1
  802. package/dist/webhooks/webhook-helpers.js +113 -92
  803. package/dist/webhooks/webhook-helpers.js.map +1 -1
  804. package/dist/workflow-helpers.d.ts +1 -1
  805. package/dist/workflow-helpers.js +10 -3
  806. package/dist/workflow-helpers.js.map +1 -1
  807. package/dist/workflow-runner.js +104 -7
  808. package/dist/workflow-runner.js.map +1 -1
  809. package/dist/workflows/workflow.service.d.ts +1 -1
  810. package/package.json +42 -36
  811. package/dist/controllers/instance-ai-examples.controller.d.ts +0 -31
  812. package/dist/controllers/instance-ai-examples.controller.js +0 -104
  813. package/dist/controllers/instance-ai-examples.controller.js.map +0 -1
  814. package/dist/instance-ai-examples.data.json +0 -277957
  815. package/dist/public-api/v1/handlers/credentials/credentials.handler.d.ts +0 -8
  816. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +0 -45
  817. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +0 -1
  818. package/dist/public-api/v1/handlers/insights/insights.handler.d.ts +0 -7
  819. package/dist/public-api/v1/handlers/insights/insights.handler.js +0 -62
  820. package/dist/public-api/v1/handlers/insights/insights.handler.js.map +0 -1
  821. package/dist/public-api/v1/handlers/tags/tags.handler.d.ts +0 -8
  822. package/dist/public-api/v1/handlers/tags/tags.handler.js +0 -46
  823. package/dist/public-api/v1/handlers/tags/tags.handler.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import type { Logger } from '@n8n/backend-common';
1
2
  import type { GlobalConfig } from '@n8n/config';
2
3
  import { type User, type SharedWorkflowRepository } from '@n8n/db';
3
4
  import { z } from 'zod';
@@ -5,6 +6,7 @@ import type { CollaborationService } from '../../../../collaboration/collaborati
5
6
  import type { CredentialsService } from '../../../../credentials/credentials.service';
6
7
  import type { SubworkflowPolicyChecker } from '../../../../executions/pre-execution-checks/subworkflow-policy-checker';
7
8
  import type { DataTableUserOperations } from '../../../../modules/data-table/data-table-proxy.service';
9
+ import type { McpPostSaveMetricsService } from '../../../../modules/mcp/mcp-post-save-metrics.service';
8
10
  import type { NodeTypes } from '../../../../node-types';
9
11
  import type { AiGatewayService } from '../../../../services/ai-gateway.service';
10
12
  import type { TagService } from '../../../../services/tag.service';
@@ -13,12 +15,13 @@ import type { Telemetry } from '../../../../telemetry';
13
15
  import type { WorkflowFinderService } from '../../../../workflows/workflow-finder.service';
14
16
  import type { WorkflowPublishedDataService } from '../../../../workflows/workflow-published-data.service';
15
17
  import type { WorkflowService } from '../../../../workflows/workflow.service';
18
+ import { type FindUninstalledNodeTypes } from './uninstalled-node-warnings';
16
19
  import type { ToolDefinition } from '../../mcp.types';
17
- declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
20
+ declare const inputSchema: {
18
21
  workflowId: z.ZodString;
19
22
  skillsUsed: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
20
23
  operations: z.ZodArray<z.ZodObject<{
21
- type: z.ZodEnum<["updateNodeParameters", "setNodeParameter", "addNode", "removeNode", "renameNode", "addConnection", "removeConnection", "setNodeCredential", "setNodePosition", "setNodeDisabled", "setNodeSettings", "setWorkflowMetadata", "setWorkflowSettings", "addTags", "removeTags", "setNodeGroups"]> | z.ZodEnum<["updateNodeParameters", "setNodeParameter", "addNode", "removeNode", "renameNode", "addConnection", "removeConnection", "setNodeCredential", "setNodePosition", "setNodeDisabled", "setNodeSettings", "setWorkflowMetadata", "setWorkflowSettings", "addTags", "removeTags", "setNodeGroups", "addNodeGroup", "removeNodeGroup", "updateNodeGroup"]>;
24
+ type: z.ZodEnum<["updateNodeParameters", "setNodeParameter", "addNode", "removeNode", "renameNode", "addConnection", "removeConnection", "setNodeCredential", "setNodePosition", "setNodeDisabled", "setNodeSettings", "setWorkflowMetadata", "setWorkflowSettings", "addTags", "removeTags", "setNodeGroups", "addNodeGroup", "removeNodeGroup", "updateNodeGroup"]>;
22
25
  nodeName: z.ZodOptional<z.ZodString>;
23
26
  node: z.ZodOptional<z.ZodObject<{
24
27
  name: z.ZodString;
@@ -156,9 +159,9 @@ declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
156
159
  nodeNames: string[];
157
160
  description?: string | undefined;
158
161
  }>, "many">>;
159
- groupName?: z.ZodOptional<z.ZodString> | undefined;
160
- nodeNames?: z.ZodOptional<z.ZodArray<z.ZodString, "many">> | undefined;
161
- id?: z.ZodOptional<z.ZodString> | undefined;
162
+ groupName: z.ZodOptional<z.ZodString>;
163
+ nodeNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
164
+ id: z.ZodOptional<z.ZodString>;
162
165
  }, "strict", z.ZodTypeAny, {
163
166
  type: "addConnection" | "addNode" | "addNodeGroup" | "addTags" | "removeConnection" | "removeNode" | "removeNodeGroup" | "removeTags" | "renameNode" | "setNodeCredential" | "setNodeDisabled" | "setNodeGroups" | "setNodeParameter" | "setNodePosition" | "setNodeSettings" | "setWorkflowMetadata" | "setWorkflowSettings" | "updateNodeGroup" | "updateNodeParameters";
164
167
  nodeName?: string | undefined;
@@ -220,9 +223,9 @@ declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
220
223
  nodeNames: string[];
221
224
  description?: string | undefined;
222
225
  }[] | undefined;
223
- groupName?: unknown;
224
- nodeNames?: unknown;
225
- id?: unknown;
226
+ groupName?: string | undefined;
227
+ nodeNames?: string[] | undefined;
228
+ id?: string | undefined;
226
229
  }, {
227
230
  type: "addConnection" | "addNode" | "addNodeGroup" | "addTags" | "removeConnection" | "removeNode" | "removeNodeGroup" | "removeTags" | "renameNode" | "setNodeCredential" | "setNodeDisabled" | "setNodeGroups" | "setNodeParameter" | "setNodePosition" | "setNodeSettings" | "setWorkflowMetadata" | "setWorkflowSettings" | "updateNodeGroup" | "updateNodeParameters";
228
231
  nodeName?: string | undefined;
@@ -284,14 +287,15 @@ declare const buildInputSchema: (canvasGroupsEnabled: boolean) => {
284
287
  nodeNames: string[];
285
288
  description?: string | undefined;
286
289
  }[] | undefined;
287
- groupName?: unknown;
288
- nodeNames?: unknown;
289
- id?: unknown;
290
+ groupName?: string | undefined;
291
+ nodeNames?: string[] | undefined;
292
+ id?: string | undefined;
290
293
  }>, "many">;
291
294
  versionName: z.ZodOptional<z.ZodString>;
292
295
  versionDescription: z.ZodOptional<z.ZodString>;
293
296
  };
294
- export declare const createUpdateWorkflowTool: (user: User, workflowFinderService: WorkflowFinderService, workflowService: WorkflowService, urlService: UrlService, telemetry: Telemetry, nodeTypes: NodeTypes, credentialsService: CredentialsService, sharedWorkflowRepository: SharedWorkflowRepository, collaborationService: CollaborationService, dataTableOps: DataTableUserOperations, tagService: TagService, globalConfig: GlobalConfig, subworkflowPolicyChecker: SubworkflowPolicyChecker, workflowPublishedDataService: WorkflowPublishedDataService, aiGatewayService: AiGatewayService, options?: {
295
- canvasGroupsEnabled?: boolean;
296
- }) => ToolDefinition<ReturnType<typeof buildInputSchema>>;
297
+ export declare const createUpdateWorkflowTool: (user: User, workflowFinderService: WorkflowFinderService, workflowService: WorkflowService, urlService: UrlService, telemetry: Telemetry, nodeTypes: NodeTypes, credentialsService: CredentialsService, sharedWorkflowRepository: SharedWorkflowRepository, collaborationService: CollaborationService, dataTableOps: DataTableUserOperations, tagService: TagService, globalConfig: GlobalConfig, subworkflowPolicyChecker: SubworkflowPolicyChecker, workflowPublishedDataService: WorkflowPublishedDataService, aiGatewayService: AiGatewayService, options: {
298
+ findUninstalledNodeTypes?: FindUninstalledNodeTypes;
299
+ installToolAvailable?: boolean;
300
+ } | undefined, logger: Logger, postSaveMetrics: McpPostSaveMetricsService) => ToolDefinition<typeof inputSchema>;
297
301
  export {};
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.createUpdateWorkflowTool = void 0;
4
7
  const db_1 = require("@n8n/db");
5
8
  const permissions_1 = require("@n8n/permissions");
9
+ const isEqual_1 = __importDefault(require("lodash/isEqual"));
6
10
  const n8n_workflow_1 = require("n8n-workflow");
7
11
  const zod_1 = require("zod");
8
12
  const subworkflow_policy_denial_error_1 = require("../../../../errors/subworkflow-policy-denial.error");
@@ -12,14 +16,17 @@ const constants_1 = require("./constants");
12
16
  const credential_validation_1 = require("./credential-validation");
13
17
  const credentials_auto_assign_1 = require("./credentials-auto-assign");
14
18
  const data_table_validation_1 = require("./data-table-validation");
19
+ const error_code_utils_1 = require("./error-code.utils");
15
20
  const skills_used_1 = require("./skills-used");
16
21
  const top_level_items_warning_1 = require("./top-level-items-warning");
22
+ const uninstalled_node_warnings_1 = require("./uninstalled-node-warnings");
17
23
  const version_metadata_1 = require("./version-metadata");
18
24
  const workflow_operations_1 = require("./workflow-operations");
19
25
  const mcp_constants_1 = require("../../mcp.constants");
20
26
  const workflow_validation_utils_1 = require("../workflow-validation.utils");
21
27
  const MAX_OPERATIONS_PER_CALL = 100;
22
- const baseOperationTypes = [
28
+ const normalize = (value) => JSON.parse(JSON.stringify(value ?? null));
29
+ const operationTypes = [
23
30
  'updateNodeParameters',
24
31
  'setNodeParameter',
25
32
  'addNode',
@@ -36,16 +43,28 @@ const baseOperationTypes = [
36
43
  'addTags',
37
44
  'removeTags',
38
45
  'setNodeGroups',
39
- ];
40
- const gatedGroupOperationTypes = [
41
46
  'addNodeGroup',
42
47
  'removeNodeGroup',
43
48
  'updateNodeGroup',
44
49
  ];
45
- const GATED_GROUP_OP_TYPES = new Set(gatedGroupOperationTypes);
46
- const buildOperationTypeSchema = (canvasGroupsEnabled) => canvasGroupsEnabled
47
- ? zod_1.z.enum([...baseOperationTypes, ...gatedGroupOperationTypes])
48
- : zod_1.z.enum(baseOperationTypes);
50
+ const operationTypeSchema = zod_1.z.enum(operationTypes);
51
+ const GRAPH_OPERATION_TYPES = new Set([
52
+ 'addNode',
53
+ 'removeNode',
54
+ 'renameNode',
55
+ 'updateNodeParameters',
56
+ 'setNodeParameter',
57
+ 'addConnection',
58
+ 'removeConnection',
59
+ 'setNodeCredential',
60
+ 'setNodePosition',
61
+ 'setNodeDisabled',
62
+ 'setNodeGroups',
63
+ 'addNodeGroup',
64
+ 'removeNodeGroup',
65
+ 'updateNodeGroup',
66
+ 'setNodeSettings',
67
+ ]);
49
68
  const positionInputSchema = () => zod_1.z.array(zod_1.z.number()).length(2).describe('Canvas [x, y].');
50
69
  const credentialsInputSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.object({ id: zod_1.z.string().optional(), name: zod_1.z.string() }));
51
70
  const nodeInputSchema = zod_1.z.object({
@@ -76,23 +95,17 @@ const combinedSettingsInputSchema = zod_1.z
76
95
  ...workflow_operations_1.workflowSettingsObjectSchema.shape,
77
96
  })
78
97
  .describe('Settings to write. For setNodeSettings use the node-level keys (onError, retryOnFail, maxTries, waitBetweenTries, alwaysOutputData, executeOnce). For setWorkflowSettings use the workflow-level keys (errorWorkflow, timezone, executionOrder, saveExecutionProgress, saveManualExecutions, saveDataErrorExecution, saveDataSuccessExecution, executionTimeout, timeSavedPerExecution, callerPolicy, callerIds). Provide only the keys for the operation you are running.');
79
- const buildOperationInputSchema = (canvasGroupsEnabled) => zod_1.z
98
+ const operationInputSchema = zod_1.z
80
99
  .object({
81
- type: buildOperationTypeSchema(canvasGroupsEnabled).describe('Operation type.'),
100
+ type: operationTypeSchema.describe('Operation type.'),
82
101
  nodeName: zod_1.z.string().optional().describe('For node-targeted ops.'),
83
102
  node: nodeInputSchema.optional().describe('For addNode.'),
84
- parameters: zod_1.z
85
- .record(zod_1.z.string(), zod_1.z.unknown())
86
- .optional()
87
- .describe('For updateNodeParameters.'),
103
+ parameters: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe('For updateNodeParameters.'),
88
104
  replace: zod_1.z.boolean().optional().describe('For updateNodeParameters; default false.'),
89
105
  path: zod_1.z.string().min(2).optional().describe('For setNodeParameter; JSON Pointer path.'),
90
106
  value: zod_1.z.unknown().optional().describe('For setNodeParameter.'),
91
107
  oldName: zod_1.z.string().optional().describe('For renameNode.'),
92
- newName: zod_1.z
93
- .string()
94
- .optional()
95
- .describe(canvasGroupsEnabled ? 'For renameNode or updateNodeGroup.' : 'For renameNode.'),
108
+ newName: zod_1.z.string().optional().describe('For renameNode or updateNodeGroup.'),
96
109
  source: zod_1.z.string().optional().describe('For connection ops.'),
97
110
  target: zod_1.z.string().optional().describe('For connection ops.'),
98
111
  sourceIndex: zod_1.z
@@ -120,16 +133,12 @@ const buildOperationInputSchema = (canvasGroupsEnabled) => zod_1.z
120
133
  .string()
121
134
  .max(128)
122
135
  .optional()
123
- .describe(canvasGroupsEnabled
124
- ? 'For setWorkflowMetadata (workflow name) or addNodeGroup (group name).'
125
- : 'Only used for setWorkflowMetadata.'),
136
+ .describe('For setWorkflowMetadata (workflow name) or addNodeGroup (group name).'),
126
137
  description: zod_1.z
127
138
  .string()
128
139
  .max(255)
129
140
  .optional()
130
- .describe(canvasGroupsEnabled
131
- ? 'For setWorkflowMetadata, addNodeGroup, or updateNodeGroup.'
132
- : 'Only used for setWorkflowMetadata.'),
141
+ .describe('For setWorkflowMetadata, addNodeGroup, or updateNodeGroup.'),
133
142
  names: zod_1.z.array(zod_1.z.string()).optional().describe('For addTags / removeTags.'),
134
143
  nodeGroups: zod_1.z
135
144
  .array(zod_1.z.object({
@@ -140,16 +149,12 @@ const buildOperationInputSchema = (canvasGroupsEnabled) => zod_1.z
140
149
  }))
141
150
  .optional()
142
151
  .describe('For setNodeGroups. Replaces all node groups; pass [] to clear. Group members are node names, not ids.'),
143
- ...(canvasGroupsEnabled
144
- ? {
145
- groupName: zod_1.z.string().optional().describe('For removeNodeGroup / updateNodeGroup.'),
146
- nodeNames: zod_1.z
147
- .array(zod_1.z.string())
148
- .optional()
149
- .describe('For addNodeGroup / updateNodeGroup; group member node names.'),
150
- id: zod_1.z.string().optional().describe('For addNodeGroup; group id, generated if omitted.'),
151
- }
152
- : {}),
152
+ groupName: zod_1.z.string().optional().describe('For removeNodeGroup / updateNodeGroup.'),
153
+ nodeNames: zod_1.z
154
+ .array(zod_1.z.string())
155
+ .optional()
156
+ .describe('For addNodeGroup / updateNodeGroup; group member node names.'),
157
+ id: zod_1.z.string().optional().describe('For addNodeGroup; group id, generated if omitted.'),
153
158
  })
154
159
  .strict()
155
160
  .describe('Workflow update operation. Provide fields matching type.');
@@ -171,25 +176,18 @@ function parseStrictOperations(operations) {
171
176
  throw new Error(`Invalid operations: ${details}`);
172
177
  }
173
178
  const NON_FATAL_OPERATION_TYPES_LIST = [...workflow_operations_1.NON_FATAL_OPERATION_TYPES].join(', ');
174
- const buildToolDescription = (canvasGroupsEnabled) => {
175
- const base = 'Atomically update an existing workflow with operation objects. Edits nodes/connections and also workflow-level settings via setWorkflowSettings — including the error workflow that runs automatically on failure to send alerts (e.g. when a user asks to "add error handling" or "notify me if this breaks"). Pass skillsUsed if n8n skills were used.';
176
- return canvasGroupsEnabled
177
- ? `${base} Node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}) are the one exception to "atomically": an invalid one is skipped and reported in skippedOperations instead of aborting the whole update. Separately, if other edits in the batch make an existing group invalid, that group is removed and reported in removedGroups.`
178
- : base;
179
- };
180
- const buildInputSchema = (canvasGroupsEnabled) => ({
179
+ const TOOL_DESCRIPTION = `Atomically update an existing workflow with operation objects. Edits nodes/connections and also workflow-level settings via setWorkflowSettings — including the error workflow that runs automatically on failure to send alerts (e.g. when a user asks to "add error handling" or "notify me if this breaks"). Pass skillsUsed if n8n skills were used. Node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}) are the one exception to "atomically": an invalid one is skipped and reported in skippedOperations instead of aborting the whole update. Separately, if other edits in the batch make an existing group invalid, that group is removed and reported in removedGroups.`;
180
+ const inputSchema = {
181
181
  workflowId: zod_1.z.string().describe('The ID of the workflow to update.'),
182
182
  skillsUsed: zod_1.z.array(zod_1.z.string()).optional().describe(skills_used_1.SKILLS_USED_PARAM_DESCRIPTION),
183
183
  operations: zod_1.z
184
- .array(buildOperationInputSchema(canvasGroupsEnabled))
184
+ .array(operationInputSchema)
185
185
  .min(1)
186
186
  .max(MAX_OPERATIONS_PER_CALL)
187
- .describe(canvasGroupsEnabled
188
- ? `Ordered operations to apply atomically (max ${MAX_OPERATIONS_PER_CALL}). If any op fails, nothing is saved — except node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}): an invalid one is skipped and reported in skippedOperations, while the rest of the batch still saves. An existing group that these ops leave invalid is removed and reported in removedGroups.`
189
- : `Ordered operations to apply atomically (max ${MAX_OPERATIONS_PER_CALL}). If any op fails, nothing is saved.`),
187
+ .describe(`Ordered operations to apply atomically (max ${MAX_OPERATIONS_PER_CALL}). If any op fails, nothing is saved — except node-group operations (${NON_FATAL_OPERATION_TYPES_LIST}): an invalid one is skipped and reported in skippedOperations, while the rest of the batch still saves. An existing group that these ops leave invalid is removed and reported in removedGroups.`),
190
188
  versionName: version_metadata_1.versionNameInputSchema.describe('Short summary of what this update changes, shown in the workflow\'s version history (e.g. "Added Slack notification after HTTP request"). Always provide it.'),
191
189
  versionDescription: version_metadata_1.versionDescriptionInputSchema.describe('Longer description of what changed and why, shown in the version history alongside the version name.'),
192
- });
190
+ };
193
191
  const outputSchema = {
194
192
  workflowId: zod_1.z.string().optional(),
195
193
  name: zod_1.z.string().optional(),
@@ -220,7 +218,6 @@ const outputSchema = {
220
218
  }))
221
219
  .optional()
222
220
  .describe('Graph and JSON validation warnings on the resulting workflow. Warnings marked preExisting (also tagged [pre-existing] in the message) were already present before this update; only self-correct the rest on the next call.'),
223
- note: zod_1.z.string().optional(),
224
221
  skippedOperations: zod_1.z
225
222
  .array(zod_1.z.object({
226
223
  opIndex: zod_1.z.number(),
@@ -244,6 +241,8 @@ const outputSchema = {
244
241
  .string()
245
242
  .optional()
246
243
  .describe('Error message explaining why the update failed. Present only on failure.'),
244
+ errorCode: zod_1.z.string().optional().describe('Machine-readable error code.'),
245
+ note: zod_1.z.string().optional(),
247
246
  };
248
247
  async function assertErrorWorkflowIsUsable({ errorWorkflowId, parentWorkflowId, user, workflowFinderService, workflowPublishedDataService, useWorkflowPublicationService, nodeTypes, subworkflowPolicyChecker, errorTriggerType, }) {
249
248
  if (!errorWorkflowId || errorWorkflowId === 'DEFAULT') {
@@ -366,6 +365,12 @@ function dedupeNamesPreservingCase(names) {
366
365
  }
367
366
  return result;
368
367
  }
368
+ function haveSameTagNames(actualTags, expectedTagNames) {
369
+ if (!actualTags || !expectedTagNames) {
370
+ return false;
371
+ }
372
+ return (0, isEqual_1.default)(actualTags.map((tag) => tag.name).sort(), dedupeNamesPreservingCase(expectedTagNames).sort());
373
+ }
369
374
  function collectTouchedNodes(operations) {
370
375
  const touched = new Map();
371
376
  const recordTouch = (name, opIndex) => {
@@ -413,24 +418,19 @@ const countOperationsWithNoEffect = (skippedOperations, groupOperations) => {
413
418
  };
414
419
  const isTagOperation = (op) => op.type === 'addTags' || op.type === 'removeTags';
415
420
  const isSettingsOperation = (op) => op.type === 'setWorkflowSettings';
416
- function assertOperationsSupported(strictOperations, { canvasGroupsEnabled, tagsDisabled }) {
417
- if (!canvasGroupsEnabled && strictOperations.some((op) => GATED_GROUP_OP_TYPES.has(op.type))) {
418
- throw new Error('Node group operations (addNodeGroup, removeNodeGroup, updateNodeGroup) are not available on this instance.');
419
- }
421
+ function assertOperationsSupported(strictOperations, { tagsDisabled }) {
420
422
  if (tagsDisabled && strictOperations.some(isTagOperation)) {
421
423
  throw new Error('Tag operations are not supported on this instance because tags are disabled.');
422
424
  }
423
425
  }
424
- function resolveNodeGroupViolations(result, canvasGroupsEnabled, nodeTypes) {
426
+ function resolveNodeGroupViolations(result, nodeTypes) {
425
427
  const skippedOperations = [...result.skippedOperations];
426
428
  const removedGroups = [];
427
429
  const getNodeType = (0, workflow_helpers_1.makeGetNodeTypeForGrouping)(nodeTypes);
428
- const violations = canvasGroupsEnabled
429
- ? [
430
- ...(0, workflow_helpers_1.dropInvalidWorkflowGroups)(result.workflow, getNodeType, (violation) => result.groupOperations[violation.groupId] !== undefined),
431
- ...(0, workflow_helpers_1.dropInvalidWorkflowGroups)(result.workflow, getNodeType),
432
- ]
433
- : [];
430
+ const violations = [
431
+ ...(0, workflow_helpers_1.dropInvalidWorkflowGroups)(result.workflow, getNodeType, (violation) => result.groupOperations[violation.groupId] !== undefined),
432
+ ...(0, workflow_helpers_1.dropInvalidWorkflowGroups)(result.workflow, getNodeType),
433
+ ];
434
434
  for (const violation of violations) {
435
435
  const requestedBy = result.groupOperations[violation.groupId];
436
436
  if (requestedBy) {
@@ -533,8 +533,7 @@ async function resolveTagIds(tagNames, user, tagService) {
533
533
  }
534
534
  return resolvedTags.map((t) => t.id);
535
535
  }
536
- const createUpdateWorkflowTool = (user, workflowFinderService, workflowService, urlService, telemetry, nodeTypes, credentialsService, sharedWorkflowRepository, collaborationService, dataTableOps, tagService, globalConfig, subworkflowPolicyChecker, workflowPublishedDataService, aiGatewayService, options = {}) => {
537
- const canvasGroupsEnabled = options.canvasGroupsEnabled === true;
536
+ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService, urlService, telemetry, nodeTypes, credentialsService, sharedWorkflowRepository, collaborationService, dataTableOps, tagService, globalConfig, subworkflowPolicyChecker, workflowPublishedDataService, aiGatewayService, options = {}, logger, postSaveMetrics) => {
538
537
  const settingsGuardDependencies = {
539
538
  user,
540
539
  nodeTypes,
@@ -546,8 +545,8 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
546
545
  return {
547
546
  name: constants_1.MCP_UPDATE_WORKFLOW_TOOL.toolName,
548
547
  config: {
549
- description: buildToolDescription(canvasGroupsEnabled),
550
- inputSchema: buildInputSchema(canvasGroupsEnabled),
548
+ description: TOOL_DESCRIPTION,
549
+ inputSchema,
551
550
  outputSchema,
552
551
  annotations: {
553
552
  title: constants_1.MCP_UPDATE_WORKFLOW_TOOL.displayTitle,
@@ -566,27 +565,34 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
566
565
  versionName,
567
566
  versionDescription,
568
567
  });
568
+ let updateAttempted = false;
569
+ let hasGraphOps = false;
570
+ let hasTagOperations = false;
571
+ let expectedWorkflow = null;
572
+ let expectedSettings;
573
+ let expectedTagNames;
574
+ let existingWorkflow = null;
569
575
  try {
570
576
  const strictOperations = parseStrictOperations(operations);
571
- const hasTagOperations = strictOperations.some(isTagOperation);
577
+ hasTagOperations = strictOperations.some(isTagOperation);
572
578
  const hasNonTagOperations = strictOperations.some((op) => !isTagOperation(op));
573
579
  const hasSettingsOperations = strictOperations.some(isSettingsOperation);
580
+ hasGraphOps = strictOperations.some((op) => GRAPH_OPERATION_TYPES.has(op.type));
574
581
  assertOperationsSupported(strictOperations, {
575
- canvasGroupsEnabled,
576
582
  tagsDisabled: globalConfig.tags.disabled,
577
583
  });
578
- const existingWorkflow = await (0, workflow_validation_utils_1.getMcpWorkflow)(workflowId, user, ['workflow:update'], workflowFinderService, { includeTags: hasTagOperations });
584
+ existingWorkflow = await (0, workflow_validation_utils_1.getMcpWorkflow)(workflowId, user, ['workflow:update'], workflowFinderService, { includeTags: hasTagOperations });
579
585
  await collaborationService.ensureWorkflowEditable(existingWorkflow.id);
580
- const result = (0, workflow_operations_1.applyOperations)((0, workflow_operations_1.toWorkflowSlice)(existingWorkflow, { includeTags: hasTagOperations }), strictOperations, { canvasGroupsEnabled });
586
+ const result = (0, workflow_operations_1.applyOperations)((0, workflow_operations_1.toWorkflowSlice)(existingWorkflow, { includeTags: hasTagOperations }), strictOperations);
581
587
  if (!result.success) {
582
588
  throw new Error(result.error);
583
589
  }
584
- const { skippedOperations, removedGroups, nodeGroupsNeedPersisting } = resolveNodeGroupViolations(result, canvasGroupsEnabled, nodeTypes);
590
+ const { skippedOperations, removedGroups, nodeGroupsNeedPersisting } = resolveNodeGroupViolations(result, nodeTypes);
585
591
  const credentialCheck = await (0, credential_validation_1.validateCredentialReferences)(strictOperations, existingWorkflow, user, credentialsService, nodeTypes, { workflowId: existingWorkflow.id });
586
592
  if (!credentialCheck.ok) {
587
593
  throw new Error(credentialCheck.error);
588
594
  }
589
- const invalidToolSourceResponse = (0, connection_structure_check_1.buildInvalidAiToolSourceErrorResponse)({ nodes: result.workflow.nodes, connections: result.workflow.connections }, nodeTypes, (errorMessage) => ({ error: errorMessage }), telemetryPayload, telemetry);
595
+ const invalidToolSourceResponse = (0, connection_structure_check_1.buildInvalidAiToolSourceErrorResponse)({ nodes: result.workflow.nodes, connections: result.workflow.connections }, nodeTypes, (errorMessage) => ({ error: errorMessage, errorCode: 'INVALID_AI_TOOL_SOURCE' }), telemetryPayload, telemetry);
590
596
  if (invalidToolSourceResponse) {
591
597
  return invalidToolSourceResponse;
592
598
  }
@@ -618,8 +624,22 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
618
624
  projectId: workflowProjectId,
619
625
  }, { user, nodeTypes, credentialsService, aiGatewayService });
620
626
  const validationWarnings = await collectValidationWarnings(workflowUpdateData, existingWorkflow, nodeTypes);
627
+ validationWarnings.push(...(await (0, uninstalled_node_warnings_1.buildUninstalledNodeWarnings)(workflowUpdateData.nodes.filter((node) => result.addedNodeNames.includes(node.name)), options.findUninstalledNodeTypes, options.installToolAvailable)));
621
628
  const tagIds = await resolveTagIds(result.tagNames, user, tagService);
622
629
  const versionMetadata = (0, version_metadata_1.resolveVersionMetadata)({ versionName, versionDescription }, (0, version_metadata_1.buildUpdateVersionMetadata)({ nodes: existingWorkflow.nodes, connections: existingWorkflow.connections }, { nodes: workflowUpdateData.nodes, connections: workflowUpdateData.connections }));
630
+ expectedWorkflow = {
631
+ nodes: workflowUpdateData.nodes,
632
+ connections: workflowUpdateData.connections,
633
+ ...(workflowUpdateData.nodeGroups !== undefined
634
+ ? { nodeGroups: workflowUpdateData.nodeGroups }
635
+ : {}),
636
+ };
637
+ expectedSettings =
638
+ hasSettingsOperations && workflowUpdateData.settings
639
+ ? (0, workflow_helpers_1.removeDefaultValues)({ ...(existingWorkflow.settings ?? {}), ...workflowUpdateData.settings }, globalConfig.executions.timeout)
640
+ : undefined;
641
+ expectedTagNames = result.tagNames;
642
+ updateAttempted = true;
623
643
  const updatedWorkflow = await workflowService.update(user, workflowUpdateData, workflowId, {
624
644
  aiBuilderAssisted: hasNonTagOperations,
625
645
  source: 'n8n-mcp',
@@ -627,25 +647,10 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
627
647
  versionDescription: versionMetadata.description,
628
648
  ...(tagIds !== undefined ? { tagIds } : {}),
629
649
  });
630
- if (autoAssignOutcomes.length > 0) {
631
- const nodeTypesByName = new Map(updatedWorkflow.nodes.map((n) => [n.name, n.type]));
632
- (0, credentials_auto_assign_1.trackAutoassignOutcomes)(telemetry, user.id, 'update_workflow', autoAssignOutcomes, nodeTypesByName, workflowId);
633
- }
634
- void collaborationService.broadcastWorkflowUpdate(workflowId, user.id).catch(() => { });
635
650
  const baseUrl = urlService.getInstanceBaseUrl();
636
651
  const workflowUrl = `${baseUrl}/workflow/${updatedWorkflow.id}`;
637
- telemetryPayload.results = {
638
- success: true,
639
- data: {
640
- workflowId: updatedWorkflow.id,
641
- nodeCount: updatedWorkflow.nodes.length,
642
- },
643
- };
644
- telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
645
652
  const notAppliedCount = countOperationsWithNoEffect(skippedOperations, result.groupOperations);
646
- const ceilingWarning = canvasGroupsEnabled
647
- ? (0, top_level_items_warning_1.topLevelItemsWarning)(updatedWorkflow)
648
- : undefined;
653
+ const ceilingWarning = (0, top_level_items_warning_1.topLevelItemsWarning)(updatedWorkflow);
649
654
  if (ceilingWarning) {
650
655
  const preExistingUngroupedNodeNames = new Set((0, top_level_items_warning_1.summarizeUngroupedNodeNames)(existingWorkflow));
651
656
  const hasNewlyAddedUngroupedNodeNames = (0, top_level_items_warning_1.summarizeUngroupedNodeNames)(updatedWorkflow).some((name) => !preExistingUngroupedNodeNames.has(name));
@@ -676,6 +681,28 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
676
681
  ? (updatedWorkflow.settings ?? {})
677
682
  : undefined,
678
683
  };
684
+ try {
685
+ if (autoAssignOutcomes.length > 0) {
686
+ const nodeTypesByName = new Map(updatedWorkflow.nodes.map((n) => [n.name, n.type]));
687
+ (0, credentials_auto_assign_1.trackAutoassignOutcomes)(telemetry, user.id, 'update_workflow', autoAssignOutcomes, nodeTypesByName, workflowId);
688
+ }
689
+ void collaborationService.broadcastWorkflowUpdate(workflowId, user.id).catch(() => { });
690
+ telemetryPayload.results = {
691
+ success: true,
692
+ data: {
693
+ workflowId: updatedWorkflow.id,
694
+ nodeCount: updatedWorkflow.nodes.length,
695
+ },
696
+ };
697
+ telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
698
+ }
699
+ catch (sideEffectError) {
700
+ logger.error('Post-save side effect failed for update_workflow', {
701
+ workflowId: updatedWorkflow.id,
702
+ error: sideEffectError,
703
+ });
704
+ postSaveMetrics.incrementPostSaveFailure('update', sideEffectError);
705
+ }
679
706
  return {
680
707
  content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
681
708
  structuredContent: output,
@@ -683,12 +710,98 @@ const createUpdateWorkflowTool = (user, workflowFinderService, workflowService,
683
710
  }
684
711
  catch (error) {
685
712
  const errorMessage = error instanceof Error ? error.message : String(error);
686
- telemetryPayload.results = {
687
- success: false,
713
+ const errorCode = (0, error_code_utils_1.getErrorCode)(error);
714
+ if (updateAttempted && existingWorkflow) {
715
+ let persisted = null;
716
+ try {
717
+ persisted = await workflowFinderService.findWorkflowForUser(workflowId, user, ['workflow:read'], { includeTags: hasTagOperations });
718
+ }
719
+ catch (lookupError) {
720
+ logger.warn('Post-update verification lookup failed', {
721
+ workflowId,
722
+ error: lookupError,
723
+ });
724
+ }
725
+ const matchesExpected = persisted &&
726
+ expectedWorkflow &&
727
+ (0, isEqual_1.default)(normalize(persisted.nodes), normalize(expectedWorkflow.nodes)) &&
728
+ (0, isEqual_1.default)(normalize(persisted.connections), normalize(expectedWorkflow.connections)) &&
729
+ (expectedWorkflow.nodeGroups === undefined ||
730
+ (0, isEqual_1.default)(normalize(persisted.nodeGroups), normalize(expectedWorkflow.nodeGroups)));
731
+ const contentChanged = !(0, isEqual_1.default)(normalize(existingWorkflow.nodes), normalize(expectedWorkflow?.nodes)) ||
732
+ !(0, isEqual_1.default)(normalize(existingWorkflow.connections), normalize(expectedWorkflow?.connections)) ||
733
+ (expectedWorkflow?.nodeGroups !== undefined &&
734
+ !(0, isEqual_1.default)(normalize(existingWorkflow.nodeGroups), normalize(expectedWorkflow.nodeGroups)));
735
+ const existingUpdatedAt = existingWorkflow.updatedAt
736
+ ? new Date(existingWorkflow.updatedAt).getTime()
737
+ : undefined;
738
+ const persistedUpdatedAt = persisted?.updatedAt
739
+ ? new Date(persisted.updatedAt).getTime()
740
+ : undefined;
741
+ const hasNewerTimestamp = existingUpdatedAt !== undefined &&
742
+ persistedUpdatedAt !== undefined &&
743
+ persistedUpdatedAt > existingUpdatedAt;
744
+ const hasPersistedExpectedSettings = expectedSettings !== undefined &&
745
+ persisted &&
746
+ (0, isEqual_1.default)(normalize(persisted.settings), normalize(expectedSettings)) &&
747
+ !(0, isEqual_1.default)(normalize(existingWorkflow.settings), normalize(expectedSettings));
748
+ const wasTouched = Boolean(hasNewerTimestamp || hasPersistedExpectedSettings);
749
+ const tagsMatchExpected = !hasTagOperations || haveSameTagNames(persisted?.tags, expectedTagNames);
750
+ const recovered = tagsMatchExpected &&
751
+ (hasGraphOps
752
+ ? Boolean(matchesExpected) && (contentChanged || hasNewerTimestamp)
753
+ : wasTouched);
754
+ if (persisted && recovered) {
755
+ const baseUrl = urlService.getInstanceBaseUrl();
756
+ const workflowUrl = `${baseUrl}/workflow/${persisted.id}`;
757
+ try {
758
+ telemetryPayload.results = {
759
+ success: true,
760
+ data: {
761
+ workflowId: persisted.id,
762
+ nodeCount: persisted.nodes.length,
763
+ postSaveError: errorMessage,
764
+ },
765
+ };
766
+ telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
767
+ }
768
+ catch (telemetryError) {
769
+ logger.error('Post-save telemetry failed for update_workflow (recovery path)', {
770
+ workflowId: persisted.id,
771
+ error: telemetryError,
772
+ });
773
+ postSaveMetrics.incrementPostSaveFailure('update', telemetryError);
774
+ }
775
+ const output = {
776
+ workflowId: persisted.id,
777
+ name: persisted.name,
778
+ nodeCount: persisted.nodes.length,
779
+ url: workflowUrl,
780
+ note: `Workflow was updated successfully, but a post-save operation failed: ${errorMessage}`,
781
+ };
782
+ postSaveMetrics.incrementPostSaveFailure('update', error);
783
+ return {
784
+ content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
785
+ structuredContent: output,
786
+ };
787
+ }
788
+ }
789
+ try {
790
+ telemetryPayload.results = {
791
+ success: false,
792
+ error: errorMessage,
793
+ };
794
+ telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
795
+ }
796
+ catch (telemetryError) {
797
+ logger.error('Telemetry failed for update_workflow (error path)', {
798
+ error: telemetryError,
799
+ });
800
+ }
801
+ const output = {
688
802
  error: errorMessage,
803
+ errorCode,
689
804
  };
690
- telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload);
691
- const output = { error: errorMessage };
692
805
  return {
693
806
  content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
694
807
  structuredContent: output,