n8n 2.30.3 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/dist/agent-library-bundle.js +9 -0
  2. package/dist/blob-storage/azure-byte-store.ee.d.ts +1 -1
  3. package/dist/blob-storage/azure-byte-store.ee.js +3 -18
  4. package/dist/blob-storage/azure-byte-store.ee.js.map +1 -1
  5. package/dist/blob-storage/json-store.js +3 -0
  6. package/dist/blob-storage/json-store.js.map +1 -1
  7. package/dist/blob-storage/s3-byte-store.ee.d.ts +1 -1
  8. package/dist/blob-storage/s3-byte-store.ee.js +2 -17
  9. package/dist/blob-storage/s3-byte-store.ee.js.map +1 -1
  10. package/dist/build.tsbuildinfo +1 -1
  11. package/dist/commands/base-command.d.ts +2 -2
  12. package/dist/commands/base-command.js +5 -5
  13. package/dist/commands/base-command.js.map +1 -1
  14. package/dist/commands/start.js +2 -0
  15. package/dist/commands/start.js.map +1 -1
  16. package/dist/constants/workflow-reviews.d.ts +4 -0
  17. package/dist/constants/workflow-reviews.js +14 -0
  18. package/dist/constants/workflow-reviews.js.map +1 -0
  19. package/dist/constants.js +2 -0
  20. package/dist/constants.js.map +1 -1
  21. package/dist/controllers/e2e.controller.js +1 -0
  22. package/dist/controllers/e2e.controller.js.map +1 -1
  23. package/dist/controllers/security-settings.controller.d.ts +15 -10
  24. package/dist/controllers/security-settings.controller.js +41 -65
  25. package/dist/controllers/security-settings.controller.js.map +1 -1
  26. package/dist/controllers/users.controller.d.ts +2 -2
  27. package/dist/credentials/credential-connection-status-provider.interface.d.ts +2 -1
  28. package/dist/credentials/credential-connection-status-proxy.d.ts +2 -1
  29. package/dist/credentials/credential-connection-status-proxy.js +7 -2
  30. package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
  31. package/dist/credentials/credentials.controller.js +5 -5
  32. package/dist/credentials/credentials.controller.js.map +1 -1
  33. package/dist/credentials/credentials.service.d.ts +1 -0
  34. package/dist/credentials/credentials.service.ee.d.ts +3 -1
  35. package/dist/credentials/credentials.service.ee.js +10 -2
  36. package/dist/credentials/credentials.service.ee.js.map +1 -1
  37. package/dist/credentials/credentials.service.js +14 -0
  38. package/dist/credentials/credentials.service.js.map +1 -1
  39. package/dist/eventbus/event-message-classes/index.d.ts +2 -2
  40. package/dist/eventbus/event-message-classes/index.js +4 -2
  41. package/dist/eventbus/event-message-classes/index.js.map +1 -1
  42. package/dist/events/maps/relay.event-map.d.ts +19 -2
  43. package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
  44. package/dist/events/relays/log-streaming.event-relay.js +30 -2
  45. package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
  46. package/dist/events/relays/telemetry.event-relay.d.ts +3 -0
  47. package/dist/events/relays/telemetry.event-relay.js +88 -10
  48. package/dist/events/relays/telemetry.event-relay.js.map +1 -1
  49. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +21 -4
  50. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  51. package/dist/executions/execution-data/db-store.d.ts +8 -15
  52. package/dist/executions/execution-data/db-store.js +12 -25
  53. package/dist/executions/execution-data/db-store.js.map +1 -1
  54. package/dist/executions/execution-data/execution-data-json-store.d.ts +7 -0
  55. package/dist/executions/execution-data/execution-data-json-store.js +45 -0
  56. package/dist/executions/execution-data/execution-data-json-store.js.map +1 -0
  57. package/dist/executions/execution-data/types.d.ts +3 -14
  58. package/dist/executions/execution-data/types.js.map +1 -1
  59. package/dist/executions/execution-persistence.d.ts +7 -14
  60. package/dist/executions/execution-persistence.js +40 -88
  61. package/dist/executions/execution-persistence.js.map +1 -1
  62. package/dist/executions/execution.service.d.ts +3 -4
  63. package/dist/executions/execution.service.js +4 -13
  64. package/dist/executions/execution.service.js.map +1 -1
  65. package/dist/executions/executions.controller.js +1 -10
  66. package/dist/executions/executions.controller.js.map +1 -1
  67. package/dist/interfaces.d.ts +4 -1
  68. package/dist/load-nodes-and-credentials.js +1 -1
  69. package/dist/load-nodes-and-credentials.js.map +1 -1
  70. package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
  71. package/dist/metrics/prometheus/prometheus.service.js +5 -2
  72. package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
  73. package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +35 -0
  74. package/dist/metrics/prometheus/scheduler-metrics.service.js +187 -0
  75. package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -0
  76. package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
  77. package/dist/modules/agents/adapters/agents-credential-provider.js +13 -3
  78. package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
  79. package/dist/modules/agents/agent-config.service.js +11 -1
  80. package/dist/modules/agents/agent-config.service.js.map +1 -1
  81. package/dist/modules/agents/agent-knowledge.controller.js +1 -1
  82. package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
  83. package/dist/modules/agents/agent-upload.middleware.d.ts +2 -0
  84. package/dist/modules/agents/agent-upload.middleware.js +11 -0
  85. package/dist/modules/agents/agent-upload.middleware.js.map +1 -1
  86. package/dist/modules/agents/agent-validation.service.js +19 -2
  87. package/dist/modules/agents/agent-validation.service.js.map +1 -1
  88. package/dist/modules/agents/agent-vector-stores.controller.d.ts +11 -0
  89. package/dist/modules/agents/agent-vector-stores.controller.js +41 -0
  90. package/dist/modules/agents/agent-vector-stores.controller.js.map +1 -0
  91. package/dist/modules/agents/agent-vector-stores.service.d.ts +9 -0
  92. package/dist/modules/agents/agent-vector-stores.service.js +195 -0
  93. package/dist/modules/agents/agent-vector-stores.service.js.map +1 -0
  94. package/dist/modules/agents/agents-config.controller.d.ts +112 -69
  95. package/dist/modules/agents/agents.controller.d.ts +5 -1
  96. package/dist/modules/agents/agents.controller.js +11 -0
  97. package/dist/modules/agents/agents.controller.js.map +1 -1
  98. package/dist/modules/agents/agents.module.js +1 -0
  99. package/dist/modules/agents/agents.module.js.map +1 -1
  100. package/dist/modules/agents/agents.service.d.ts +7 -2
  101. package/dist/modules/agents/agents.service.js +65 -2
  102. package/dist/modules/agents/agents.service.js.map +1 -1
  103. package/dist/modules/agents/attachable-workflows.service.d.ts +12 -0
  104. package/dist/modules/agents/attachable-workflows.service.js +58 -0
  105. package/dist/modules/agents/attachable-workflows.service.js.map +1 -0
  106. package/dist/modules/agents/builder/agents-builder-model-recommendations.js +3 -2
  107. package/dist/modules/agents/builder/agents-builder-model-recommendations.js.map +1 -1
  108. package/dist/modules/agents/builder/agents-builder-prompts.d.ts +4 -4
  109. package/dist/modules/agents/builder/agents-builder-prompts.js +40 -27
  110. package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
  111. package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +3 -5
  112. package/dist/modules/agents/builder/agents-builder-tools.service.js +48 -194
  113. package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
  114. package/dist/modules/agents/builder/agents-builder.service.d.ts +10 -3
  115. package/dist/modules/agents/builder/agents-builder.service.js +22 -12
  116. package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
  117. package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
  118. package/dist/modules/agents/builder/errors.d.ts +3 -2
  119. package/dist/modules/agents/builder/errors.js +3 -2
  120. package/dist/modules/agents/builder/errors.js.map +1 -1
  121. package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +99 -2
  122. package/dist/modules/agents/builder/get-resource-locator-options.tool.js +103 -101
  123. package/dist/modules/agents/builder/get-resource-locator-options.tool.js.map +1 -1
  124. package/dist/modules/agents/builder/interactive/ask-credential.tool.js +48 -32
  125. package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
  126. package/dist/modules/agents/builder/interactive/ask-questions.tool.d.ts +2 -0
  127. package/dist/modules/agents/builder/interactive/ask-questions.tool.js +108 -0
  128. package/dist/modules/agents/builder/interactive/ask-questions.tool.js.map +1 -0
  129. package/dist/modules/agents/builder/interactive/configure-channel.tool.d.ts +7 -0
  130. package/dist/modules/agents/builder/interactive/configure-channel.tool.js +52 -0
  131. package/dist/modules/agents/builder/interactive/configure-channel.tool.js.map +1 -0
  132. package/dist/modules/agents/builder/interactive/index.d.ts +2 -2
  133. package/dist/modules/agents/builder/interactive/index.js +5 -5
  134. package/dist/modules/agents/builder/interactive/index.js.map +1 -1
  135. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +2 -2
  136. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
  137. package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +1 -1
  138. package/dist/modules/agents/builder/prompts/config-rules.prompt.js +2 -2
  139. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +10 -10
  140. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js.map +1 -1
  141. package/dist/modules/agents/builder/prompts/memory.prompt.d.ts +1 -1
  142. package/dist/modules/agents/builder/prompts/memory.prompt.js +1 -1
  143. package/dist/modules/agents/builder/search-mcp-servers.tool.js +1 -63
  144. package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -1
  145. package/dist/modules/agents/builder/skills/index.d.ts +1 -1
  146. package/dist/modules/agents/builder/skills/index.js +5 -1
  147. package/dist/modules/agents/builder/skills/index.js.map +1 -1
  148. package/dist/modules/agents/builder/skills/integrations.skill.js +15 -6
  149. package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
  150. package/dist/modules/agents/builder/skills/mcp.skill.js +2 -2
  151. package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -1
  152. package/dist/modules/agents/builder/skills/resource-locators.skill.js +2 -2
  153. package/dist/modules/agents/builder/skills/resource-locators.skill.js.map +1 -1
  154. package/dist/modules/agents/builder/skills/sub-agents.skill.js +7 -5
  155. package/dist/modules/agents/builder/skills/sub-agents.skill.js.map +1 -1
  156. package/dist/modules/agents/builder/skills/target-skills.skill.js +5 -4
  157. package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
  158. package/dist/modules/agents/builder/skills/target-tasks.skill.js +5 -5
  159. package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
  160. package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +14 -0
  161. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +96 -0
  162. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -0
  163. package/dist/modules/agents/integrations/integration-action-executor.d.ts +72 -72
  164. package/dist/modules/agents/integrations/integration-tool-definitions.d.ts +574 -574
  165. package/dist/modules/agents/json-config/embedding-credential.d.ts +4 -0
  166. package/dist/modules/agents/json-config/embedding-credential.js +25 -0
  167. package/dist/modules/agents/json-config/embedding-credential.js.map +1 -0
  168. package/dist/modules/agents/json-config/from-json-config.d.ts +2 -6
  169. package/dist/modules/agents/json-config/from-json-config.js +16 -16
  170. package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
  171. package/dist/modules/agents/json-config/model-config.js +2 -2
  172. package/dist/modules/agents/json-config/model-config.js.map +1 -1
  173. package/dist/modules/agents/json-config/vector-store-factory.d.ts +5 -0
  174. package/dist/modules/agents/json-config/vector-store-factory.js +138 -0
  175. package/dist/modules/agents/json-config/vector-store-factory.js.map +1 -0
  176. package/dist/modules/breaking-changes/rules/index.d.ts +8 -0
  177. package/dist/modules/breaking-changes/rules/index.js +8 -0
  178. package/dist/modules/breaking-changes/rules/index.js.map +1 -1
  179. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.d.ts +6 -0
  180. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +59 -0
  181. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -0
  182. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.d.ts +9 -0
  183. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +57 -0
  184. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -0
  185. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.d.ts +10 -0
  186. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +53 -0
  187. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -0
  188. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.d.ts +9 -0
  189. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +56 -0
  190. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -0
  191. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.d.ts +9 -0
  192. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +57 -0
  193. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -0
  194. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.d.ts +6 -0
  195. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +50 -0
  196. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -0
  197. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.d.ts +9 -0
  198. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +57 -0
  199. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -0
  200. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.d.ts +6 -0
  201. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js +47 -0
  202. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js.map +1 -0
  203. package/dist/modules/chat-hub/chat-hub.module.d.ts +1 -1
  204. package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +3 -3
  205. package/dist/modules/data-table/data-table-ddl.service.d.ts +2 -0
  206. package/dist/modules/data-table/data-table-ddl.service.js +16 -0
  207. package/dist/modules/data-table/data-table-ddl.service.js.map +1 -1
  208. package/dist/modules/data-table/data-table.service.d.ts +6 -3
  209. package/dist/modules/data-table/data-table.service.js +19 -0
  210. package/dist/modules/data-table/data-table.service.js.map +1 -1
  211. package/dist/modules/data-table/utils/sql-utils.d.ts +1 -0
  212. package/dist/modules/data-table/utils/sql-utils.js +4 -0
  213. package/dist/modules/data-table/utils/sql-utils.js.map +1 -1
  214. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.d.ts +0 -2
  215. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js +0 -13
  216. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js.map +1 -1
  217. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +5 -3
  218. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +19 -7
  219. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
  220. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
  221. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +1 -1
  222. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
  223. package/dist/modules/favorites/dto/add-favorite.dto.d.ts +2 -2
  224. package/dist/modules/favorites/favorites.event-relay.js +2 -3
  225. package/dist/modules/favorites/favorites.event-relay.js.map +1 -1
  226. package/dist/modules/favorites/favorites.service.d.ts +4 -1
  227. package/dist/modules/favorites/favorites.service.js +28 -3
  228. package/dist/modules/favorites/favorites.service.js.map +1 -1
  229. package/dist/modules/instance-ai/eval/execution.service.d.ts +4 -1
  230. package/dist/modules/instance-ai/eval/execution.service.js +26 -3
  231. package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
  232. package/dist/modules/instance-ai/eval/mock-handler.js +1 -1
  233. package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
  234. package/dist/modules/instance-ai/eval/mock-quirks.js +7 -0
  235. package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
  236. package/dist/modules/instance-ai/eval/pin-data-generator.js +17 -17
  237. package/dist/modules/instance-ai/eval/pin-data-generator.js.map +1 -1
  238. package/dist/modules/instance-ai/event-bus/in-process-event-bus.d.ts +17 -6
  239. package/dist/modules/instance-ai/event-bus/in-process-event-bus.js +153 -30
  240. package/dist/modules/instance-ai/event-bus/in-process-event-bus.js.map +1 -1
  241. package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -2
  242. package/dist/modules/instance-ai/instance-ai-memory.service.js +12 -1
  243. package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
  244. package/dist/modules/instance-ai/instance-ai-settings.service.js +0 -7
  245. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  246. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +89 -3
  247. package/dist/modules/instance-ai/instance-ai.adapter.service.js +272 -42
  248. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  249. package/dist/modules/instance-ai/instance-ai.controller.js +9 -2
  250. package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
  251. package/dist/modules/instance-ai/instance-ai.service.d.ts +0 -1
  252. package/dist/modules/instance-ai/instance-ai.service.js +45 -107
  253. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  254. package/dist/modules/instance-ai/workflow-templates.service.d.ts +17 -0
  255. package/dist/modules/instance-ai/workflow-templates.service.js +63 -0
  256. package/dist/modules/instance-ai/workflow-templates.service.js.map +1 -0
  257. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.d.ts +1 -0
  258. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js +2 -0
  259. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js.map +1 -1
  260. package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +2 -0
  261. package/dist/modules/mcp/dto/update-workflows-availability.dto.js +1 -0
  262. package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -1
  263. package/dist/modules/mcp/mcp-protected-resource.d.ts +4 -1
  264. package/dist/modules/mcp/mcp-protected-resource.js +13 -3
  265. package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
  266. package/dist/modules/mcp/mcp.config.d.ts +1 -0
  267. package/dist/modules/mcp/mcp.config.js +20 -0
  268. package/dist/modules/mcp/mcp.config.js.map +1 -1
  269. package/dist/modules/mcp/mcp.module.d.ts +1 -0
  270. package/dist/modules/mcp/mcp.module.js +3 -1
  271. package/dist/modules/mcp/mcp.module.js.map +1 -1
  272. package/dist/modules/mcp/mcp.settings.service.d.ts +1 -1
  273. package/dist/modules/mcp/mcp.settings.service.js +33 -18
  274. package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
  275. package/dist/modules/mcp/tools/search-workflows.tool.js +4 -2
  276. package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
  277. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +2 -0
  278. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +10 -5
  279. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
  280. package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js +4 -0
  281. package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js.map +1 -1
  282. package/dist/modules/mcp/tools/workflow-builder/skills-used.d.ts +1 -0
  283. package/dist/modules/mcp/tools/workflow-builder/skills-used.js +5 -1
  284. package/dist/modules/mcp/tools/workflow-builder/skills-used.js.map +1 -1
  285. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +10 -5
  286. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
  287. package/dist/modules/mcp/tools/workflow-builder/version-metadata.d.ts +27 -0
  288. package/dist/modules/mcp/tools/workflow-builder/version-metadata.js +109 -0
  289. package/dist/modules/mcp/tools/workflow-builder/version-metadata.js.map +1 -0
  290. package/dist/modules/mcp-registry/registry/mcp-registry-search.d.ts +18 -0
  291. package/dist/modules/mcp-registry/registry/mcp-registry-search.js +64 -0
  292. package/dist/modules/mcp-registry/registry/mcp-registry-search.js.map +1 -0
  293. package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +2 -0
  294. package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
  295. package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
  296. package/dist/modules/n8n-packages/engine/import-blocked.error.js +2 -1
  297. package/dist/modules/n8n-packages/engine/import-blocked.error.js.map +1 -1
  298. package/dist/modules/n8n-packages/engine/import-orchestrator.d.ts +30 -0
  299. package/dist/modules/n8n-packages/engine/import-orchestrator.js +86 -0
  300. package/dist/modules/n8n-packages/engine/import-orchestrator.js.map +1 -0
  301. package/dist/modules/n8n-packages/engine/import-result.d.ts +14 -0
  302. package/dist/modules/n8n-packages/engine/import-result.js +43 -0
  303. package/dist/modules/n8n-packages/engine/import-result.js.map +1 -0
  304. package/dist/modules/n8n-packages/engine/n8n-package-parser.d.ts +7 -0
  305. package/dist/modules/n8n-packages/engine/n8n-package-parser.js +72 -13
  306. package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
  307. package/dist/modules/n8n-packages/engine/package-layout.d.ts +11 -0
  308. package/dist/modules/n8n-packages/engine/package-layout.js +21 -0
  309. package/dist/modules/n8n-packages/engine/package-layout.js.map +1 -0
  310. package/dist/modules/n8n-packages/engine/project-package-importer.d.ts +11 -0
  311. package/dist/modules/n8n-packages/engine/project-package-importer.js +44 -0
  312. package/dist/modules/n8n-packages/engine/project-package-importer.js.map +1 -0
  313. package/dist/modules/n8n-packages/engine/workflow-package-importer.d.ts +24 -0
  314. package/dist/modules/n8n-packages/engine/workflow-package-importer.js +168 -0
  315. package/dist/modules/n8n-packages/engine/workflow-package-importer.js.map +1 -0
  316. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.d.ts +3 -1
  317. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js +8 -2
  318. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js.map +1 -1
  319. package/dist/modules/n8n-packages/entities/credential/credential-matcher.d.ts +6 -6
  320. package/dist/modules/n8n-packages/entities/credential/credential-matcher.js +34 -4
  321. package/dist/modules/n8n-packages/entities/credential/credential-matcher.js.map +1 -1
  322. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.d.ts +3 -0
  323. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js +27 -0
  324. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js.map +1 -0
  325. package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +2 -0
  326. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +18 -2
  327. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -1
  328. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.d.ts +3 -7
  329. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js +8 -23
  330. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js.map +1 -1
  331. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.d.ts +8 -0
  332. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js +31 -0
  333. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js.map +1 -0
  334. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.d.ts +8 -0
  335. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js +31 -0
  336. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js.map +1 -0
  337. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.d.ts +6 -0
  338. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js +38 -0
  339. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js.map +1 -0
  340. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.d.ts +26 -0
  341. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js +97 -0
  342. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js.map +1 -0
  343. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.d.ts +5 -0
  344. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +31 -0
  345. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -0
  346. package/dist/modules/n8n-packages/entities/data-table/data-table.types.d.ts +4 -0
  347. package/dist/modules/n8n-packages/entities/data-table/data-table.types.js +3 -0
  348. package/dist/modules/n8n-packages/entities/data-table/data-table.types.js.map +1 -0
  349. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.d.ts +5 -0
  350. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js +11 -0
  351. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js.map +1 -0
  352. package/dist/modules/n8n-packages/entities/folder/folder-import.types.d.ts +20 -0
  353. package/dist/modules/n8n-packages/entities/folder/folder-import.types.js +3 -0
  354. package/dist/modules/n8n-packages/entities/folder/folder-import.types.js.map +1 -0
  355. package/dist/modules/n8n-packages/entities/folder/folder-importer.d.ts +10 -0
  356. package/dist/modules/n8n-packages/entities/folder/folder-importer.js +140 -0
  357. package/dist/modules/n8n-packages/entities/folder/folder-importer.js.map +1 -0
  358. package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +5 -2
  359. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +48 -44
  360. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
  361. package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
  362. package/dist/modules/n8n-packages/entities/package-export.errors.d.ts +8 -0
  363. package/dist/modules/n8n-packages/entities/package-export.errors.js +27 -0
  364. package/dist/modules/n8n-packages/entities/package-export.errors.js.map +1 -0
  365. package/dist/modules/n8n-packages/entities/project/project-import.types.d.ts +15 -0
  366. package/dist/modules/n8n-packages/entities/project/project-import.types.js +3 -0
  367. package/dist/modules/n8n-packages/entities/project/project-import.types.js.map +1 -0
  368. package/dist/modules/n8n-packages/entities/project/project-importer.d.ts +13 -0
  369. package/dist/modules/n8n-packages/entities/project/project-importer.js +97 -0
  370. package/dist/modules/n8n-packages/entities/project/project-importer.js.map +1 -0
  371. package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +22 -4
  372. package/dist/modules/n8n-packages/entities/project/project.exporter.js +71 -26
  373. package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
  374. package/dist/modules/n8n-packages/entities/requirements.types.d.ts +2 -0
  375. package/dist/modules/n8n-packages/entities/requirements.types.js +1 -0
  376. package/dist/modules/n8n-packages/entities/requirements.types.js.map +1 -1
  377. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +4 -3
  378. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -17
  379. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
  380. package/dist/modules/n8n-packages/n8n-packages.service.d.ts +12 -3
  381. package/dist/modules/n8n-packages/n8n-packages.service.js +51 -11
  382. package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
  383. package/dist/modules/n8n-packages/n8n-packages.types.d.ts +47 -22
  384. package/dist/modules/n8n-packages/n8n-packages.types.js +5 -1
  385. package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
  386. package/dist/modules/n8n-packages/package-failure-classifier.d.ts +2 -0
  387. package/dist/modules/n8n-packages/package-failure-classifier.js +29 -0
  388. package/dist/modules/n8n-packages/package-failure-classifier.js.map +1 -0
  389. package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +62 -0
  390. package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +55 -0
  391. package/dist/modules/n8n-packages/spec/requirements.schema.js +26 -15
  392. package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -1
  393. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.d.ts +49 -0
  394. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js +20 -0
  395. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js.map +1 -0
  396. package/dist/modules/redaction/executions/execution-redaction.service.js +1 -1
  397. package/dist/modules/redaction/executions/execution-redaction.service.js.map +1 -1
  398. package/dist/modules/source-control.ee/constants.d.ts +1 -0
  399. package/dist/modules/source-control.ee/constants.js +2 -1
  400. package/dist/modules/source-control.ee/constants.js.map +1 -1
  401. package/dist/modules/source-control.ee/source-control-git.service.ee.d.ts +0 -1
  402. package/dist/modules/source-control.ee/source-control-git.service.ee.js +0 -22
  403. package/dist/modules/source-control.ee/source-control-git.service.ee.js.map +1 -1
  404. package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +3 -1
  405. package/dist/modules/source-control.ee/source-control-helper.ee.js +13 -0
  406. package/dist/modules/source-control.ee/source-control-helper.ee.js.map +1 -1
  407. package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +10 -2
  408. package/dist/modules/source-control.ee/source-control-import.service.ee.js +94 -59
  409. package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
  410. package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +0 -1
  411. package/dist/modules/source-control.ee/source-control-status.service.ee.js +30 -30
  412. package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
  413. package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +6 -6
  414. package/dist/modules/source-control.ee/source-control.service.ee.d.ts +3 -3
  415. package/dist/modules/source-control.ee/source-control.service.ee.js +8 -1
  416. package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
  417. package/dist/public-api/types.d.ts +5 -1
  418. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +9 -0
  419. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  420. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +87 -38
  421. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
  422. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.d.ts +8 -0
  423. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js +39 -0
  424. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js.map +1 -0
  425. package/dist/public-api/v1/openapi.yml +243 -12
  426. package/dist/scaling/job-processor.js +44 -6
  427. package/dist/scaling/job-processor.js.map +1 -1
  428. package/dist/scaling/pubsub/pubsub.event-map.d.ts +4 -1
  429. package/dist/scheduling/durable-job-provisioner.d.ts +16 -0
  430. package/dist/scheduling/durable-job-provisioner.js +135 -0
  431. package/dist/scheduling/durable-job-provisioner.js.map +1 -0
  432. package/dist/scheduling/durable-scheduler.d.ts +16 -0
  433. package/dist/scheduling/durable-scheduler.js +117 -0
  434. package/dist/scheduling/durable-scheduler.js.map +1 -0
  435. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.d.ts +23 -0
  436. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js +149 -0
  437. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js.map +1 -0
  438. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.d.ts +10 -0
  439. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js +33 -0
  440. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js.map +1 -0
  441. package/dist/scheduling/scheduler-tracer.d.ts +3 -0
  442. package/dist/scheduling/scheduler-tracer.js +11 -0
  443. package/dist/scheduling/scheduler-tracer.js.map +1 -0
  444. package/dist/server.js +6 -1
  445. package/dist/server.js.map +1 -1
  446. package/dist/services/folder-finder.service.d.ts +2 -0
  447. package/dist/services/folder-finder.service.js +16 -0
  448. package/dist/services/folder-finder.service.js.map +1 -1
  449. package/dist/services/folder.service.d.ts +3 -2
  450. package/dist/services/folder.service.js +11 -1
  451. package/dist/services/folder.service.js.map +1 -1
  452. package/dist/services/frontend.service.d.ts +3 -1
  453. package/dist/services/frontend.service.js +14 -2
  454. package/dist/services/frontend.service.js.map +1 -1
  455. package/dist/services/project.service.ee.d.ts +7 -1
  456. package/dist/services/project.service.ee.js +21 -4
  457. package/dist/services/project.service.ee.js.map +1 -1
  458. package/dist/services/protected-resource.registry.d.ts +1 -0
  459. package/dist/services/protected-resource.registry.js +11 -7
  460. package/dist/services/protected-resource.registry.js.map +1 -1
  461. package/dist/services/security-settings.service.d.ts +31 -1
  462. package/dist/services/security-settings.service.js +75 -2
  463. package/dist/services/security-settings.service.js.map +1 -1
  464. package/dist/services/workflow-review-policy.service.d.ts +11 -0
  465. package/dist/services/workflow-review-policy.service.js +52 -0
  466. package/dist/services/workflow-review-policy.service.js.map +1 -0
  467. package/dist/telemetry/index.d.ts +2 -0
  468. package/dist/telemetry/index.js +6 -3
  469. package/dist/telemetry/index.js.map +1 -1
  470. package/dist/webhooks/live-webhooks.js +2 -2
  471. package/dist/webhooks/live-webhooks.js.map +1 -1
  472. package/dist/webhooks/test-webhooks.js +4 -1
  473. package/dist/webhooks/test-webhooks.js.map +1 -1
  474. package/dist/webhooks/waiting-webhooks.js +2 -2
  475. package/dist/webhooks/waiting-webhooks.js.map +1 -1
  476. package/dist/workflow-execute-additional-data.js +5 -4
  477. package/dist/workflow-execute-additional-data.js.map +1 -1
  478. package/dist/workflow-helpers.js +26 -0
  479. package/dist/workflow-helpers.js.map +1 -1
  480. package/dist/workflows/triggers/webhook-trigger-registrar.js +22 -15
  481. package/dist/workflows/triggers/webhook-trigger-registrar.js.map +1 -1
  482. package/dist/workflows/triggers/workflow-trigger-activator.js +1 -7
  483. package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
  484. package/dist/workflows/workflow-creation.service.d.ts +2 -0
  485. package/dist/workflows/workflow-creation.service.js +4 -2
  486. package/dist/workflows/workflow-creation.service.js.map +1 -1
  487. package/dist/workflows/workflow-execution.service.js +8 -5
  488. package/dist/workflows/workflow-execution.service.js.map +1 -1
  489. package/dist/workflows/workflow-finder.service.d.ts +5 -2
  490. package/dist/workflows/workflow-finder.service.js +25 -2
  491. package/dist/workflows/workflow-finder.service.js.map +1 -1
  492. package/dist/workflows/workflow-history/workflow-history.service.d.ts +4 -1
  493. package/dist/workflows/workflow-history/workflow-history.service.js +3 -1
  494. package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
  495. package/dist/workflows/workflow-validation.service.js +3 -3
  496. package/dist/workflows/workflow-validation.service.js.map +1 -1
  497. package/dist/workflows/workflow.request.d.ts +7 -22
  498. package/dist/workflows/workflow.service.d.ts +2 -0
  499. package/dist/workflows/workflow.service.js +4 -2
  500. package/dist/workflows/workflow.service.js.map +1 -1
  501. package/dist/workflows/workflows.controller.d.ts +1 -1
  502. package/dist/workflows/workflows.controller.js +8 -3
  503. package/dist/workflows/workflows.controller.js.map +1 -1
  504. package/package.json +45 -40
  505. package/templates/form-trigger-completion.handlebars +6 -6
  506. package/dist/executions/execution-data/azure-store.ee.d.ts +0 -15
  507. package/dist/executions/execution-data/azure-store.ee.js +0 -117
  508. package/dist/executions/execution-data/azure-store.ee.js.map +0 -1
  509. package/dist/executions/execution-data/fs-store.d.ts +0 -16
  510. package/dist/executions/execution-data/fs-store.js +0 -118
  511. package/dist/executions/execution-data/fs-store.js.map +0 -1
  512. package/dist/executions/execution-data/s3-store.ee.d.ts +0 -15
  513. package/dist/executions/execution-data/s3-store.ee.js +0 -116
  514. package/dist/executions/execution-data/s3-store.ee.js.map +0 -1
  515. package/dist/modules/agents/builder/from-ai-node-parameters.d.ts +0 -7
  516. package/dist/modules/agents/builder/from-ai-node-parameters.js +0 -43
  517. package/dist/modules/agents/builder/from-ai-node-parameters.js.map +0 -1
  518. package/dist/modules/agents/builder/interactive/ask-llm.tool.d.ts +0 -2
  519. package/dist/modules/agents/builder/interactive/ask-llm.tool.js +0 -25
  520. package/dist/modules/agents/builder/interactive/ask-llm.tool.js.map +0 -1
  521. package/dist/modules/agents/builder/interactive/ask-question.tool.d.ts +0 -2
  522. package/dist/modules/agents/builder/interactive/ask-question.tool.js +0 -27
  523. package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +0 -1
  524. package/dist/modules/agents/json-config/model-id.d.ts +0 -1
  525. package/dist/modules/agents/json-config/model-id.js +0 -8
  526. package/dist/modules/agents/json-config/model-id.js.map +0 -1
  527. package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +0 -7
  528. package/dist/modules/agents/json-config/native-web-search-provider-tools.js +0 -55
  529. package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +0 -1
  530. package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +0 -28
  531. package/dist/modules/n8n-packages/engine/import-pipeline.js +0 -204
  532. package/dist/modules/n8n-packages/engine/import-pipeline.js.map +0 -1
@@ -46,6 +46,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
46
46
  };
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
48
  exports.InstanceAiAdapterService = void 0;
49
+ exports.buildEvaluationConfigDto = buildEvaluationConfigDto;
50
+ exports.evaluationConfigToSummary = evaluationConfigToSummary;
49
51
  exports.resolveDataTableByIdOrName = resolveDataTableByIdOrName;
50
52
  exports.truncateResultData = truncateResultData;
51
53
  exports.extractExecutionResult = extractExecutionResult;
@@ -58,10 +60,13 @@ const promises_1 = require("node:fs/promises");
58
60
  const node_path_1 = __importDefault(require("node:path"));
59
61
  const ai_utilities_1 = require("@n8n/ai-utilities");
60
62
  const instance_ai_1 = require("@n8n/instance-ai");
63
+ const api_types_1 = require("@n8n/api-types");
61
64
  const config_1 = require("@n8n/config");
62
65
  const constants_1 = require("@n8n/constants");
66
+ const nanoid_1 = require("nanoid");
63
67
  const extract_resolved_node_parameters_1 = require("./extract-resolved-node-parameters");
64
68
  const instance_ai_settings_service_1 = require("./instance-ai-settings.service");
69
+ const workflow_templates_service_1 = require("./workflow-templates.service");
65
70
  const instance_ai_run_pin_data_1 = require("./instance-ai-run-pin-data");
66
71
  const node_definition_resolver_1 = require("./node-definition-resolver");
67
72
  const web_research_1 = require("./web-research");
@@ -73,13 +78,17 @@ const permissions_1 = require("@n8n/permissions");
73
78
  const typeorm_1 = require("@n8n/typeorm");
74
79
  const n8n_workflow_1 = require("n8n-workflow");
75
80
  const active_executions_1 = require("../../active-executions");
81
+ const conflict_error_1 = require("../../errors/response-errors/conflict.error");
76
82
  const credentials_finder_service_1 = require("../../credentials/credentials-finder.service");
77
83
  const credentials_service_1 = require("../../credentials/credentials.service");
84
+ const evaluation_config_service_1 = require("../../evaluation.ee/evaluation-config.service");
78
85
  const event_service_1 = require("../../events/event.service");
79
86
  const execution_persistence_1 = require("../../executions/execution-persistence");
80
87
  const license_1 = require("../../license");
81
88
  const load_nodes_and_credentials_1 = require("../../load-nodes-and-credentials");
82
89
  const node_types_1 = require("../../node-types");
90
+ const agents_credential_provider_1 = require("../../modules/agents/adapters/agents-credential-provider");
91
+ const instance_ai_builder_delegate_adapter_1 = require("../../modules/agents/instance-ai-builder-delegate.adapter");
83
92
  const node_catalog_1 = require("../../node-catalog");
84
93
  const data_table_repository_1 = require("../../modules/data-table/data-table.repository");
85
94
  const data_table_service_1 = require("../../modules/data-table/data-table.service");
@@ -126,7 +135,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
126
135
  });
127
136
  return await promise;
128
137
  }
129
- constructor(logger, globalConfig, workflowService, workflowFinderService, workflowRepository, sharedWorkflowRepository, projectRepository, executionRepository, credentialsService, credentialsFinderService, activeExecutions, workflowRunner, loadNodesAndCredentials, nodeTypes, instanceSettings, dataTableService, dataTableRepository, nodeResourceExplorerService, folderService, projectService, tagService, sourceControlPreferencesService, settingsService, workflowHistoryService, enterpriseWorkflowService, license, executionPersistence, eventService, roleService, telemetry, aiBuilderTemporaryWorkflowRepository, ssrfProtectionService, outboundHttp, aiGatewayService, nodeCatalogService) {
138
+ constructor(logger, globalConfig, workflowService, workflowFinderService, workflowRepository, sharedWorkflowRepository, projectRepository, executionRepository, credentialsService, credentialsFinderService, activeExecutions, workflowRunner, loadNodesAndCredentials, nodeTypes, instanceSettings, dataTableService, dataTableRepository, nodeResourceExplorerService, folderService, projectService, tagService, sourceControlPreferencesService, settingsService, workflowHistoryService, enterpriseWorkflowService, license, executionPersistence, eventService, roleService, telemetry, aiBuilderTemporaryWorkflowRepository, ssrfProtectionService, outboundHttp, aiGatewayService, workflowTemplatesService, nodeCatalogService, evaluationConfigService) {
130
139
  this.globalConfig = globalConfig;
131
140
  this.workflowService = workflowService;
132
141
  this.workflowFinderService = workflowFinderService;
@@ -160,7 +169,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
160
169
  this.ssrfProtectionService = ssrfProtectionService;
161
170
  this.outboundHttp = outboundHttp;
162
171
  this.aiGatewayService = aiGatewayService;
172
+ this.workflowTemplatesService = workflowTemplatesService;
163
173
  this.nodeCatalogService = nodeCatalogService;
174
+ this.evaluationConfigService = evaluationConfigService;
164
175
  this.nodesCache = null;
165
176
  this.NODES_CACHE_TTL_MS = 5 * 60 * 1000;
166
177
  this.webResearchCache = new web_research_1.LRUCache({
@@ -178,7 +189,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
178
189
  });
179
190
  }
180
191
  createContext(user, options) {
181
- const { searchProxyConfig, pushRef, threadId, projectId, credentialIdAllowlist } = options ?? {};
192
+ const { searchProxyConfig, pushRef, threadId, projectId, credentialIdAllowlist, agentId } = options ?? {};
193
+ void this.trackGatewayAvailability();
194
+ const builderDelegateAdapter = this.getBuilderDelegateAdapter();
182
195
  return {
183
196
  userId: user.id,
184
197
  projectId,
@@ -187,15 +200,66 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
187
200
  credentialService: this.createCredentialAdapter(user, projectId, credentialIdAllowlist),
188
201
  nodeService: this.createNodeAdapter(user),
189
202
  dataTableService: this.createDataTableAdapter(user, projectId),
203
+ ...(this.evaluationConfigService
204
+ ? {
205
+ evaluationConfigService: this.createEvaluationConfigAdapter(this.evaluationConfigService, user),
206
+ }
207
+ : {}),
190
208
  webResearchService: this.createWebResearchAdapter(user, searchProxyConfig),
191
209
  workspaceService: this.createWorkspaceAdapter(user),
192
210
  templatesService: this.getTemplatesService(),
211
+ workflowTemplateService: this.createWorkflowTemplateAdapter(),
193
212
  licenseHints: this.buildLicenseHints(),
194
213
  logger: this.logger,
195
214
  nodeTypesProvider: this.nodeTypes,
196
215
  allowSendingParameterValues: this.allowSendingParameterValues,
216
+ ...(builderDelegateAdapter && agentId && projectId
217
+ ? { agentBuilderTarget: { agentId, projectId } }
218
+ : {}),
219
+ ...(builderDelegateAdapter && projectId
220
+ ? {
221
+ builderDelegate: builderDelegateAdapter.createDelegate(user, projectId, new agents_credential_provider_1.AgentsCredentialProvider(this.credentialsService, projectId, user)),
222
+ }
223
+ : {}),
197
224
  };
198
225
  }
226
+ getBuilderDelegateAdapter() {
227
+ if (!di_1.Container.get(backend_common_1.ModuleRegistry).isActive('agents'))
228
+ return null;
229
+ try {
230
+ return di_1.Container.get(instance_ai_builder_delegate_adapter_1.InstanceAiBuilderDelegateAdapterService);
231
+ }
232
+ catch {
233
+ return null;
234
+ }
235
+ }
236
+ async getGatewayConfigOrNull() {
237
+ if (!this.license.isLicensed(constants_1.LICENSE_FEATURES.AI_GATEWAY))
238
+ return null;
239
+ try {
240
+ return await this.aiGatewayService.getGatewayConfig();
241
+ }
242
+ catch {
243
+ return null;
244
+ }
245
+ }
246
+ buildAiGatewayNodeMeta(config, nodeName) {
247
+ if (!config)
248
+ return undefined;
249
+ if (!config.nodes.includes(nodeName))
250
+ return undefined;
251
+ const meta = { supported: true };
252
+ const operations = config.supportedActions?.[nodeName];
253
+ if (operations && Object.keys(operations).length > 0)
254
+ meta.operations = operations;
255
+ const minVersion = config.minNodeTypeVersion?.[nodeName];
256
+ if (minVersion !== undefined)
257
+ meta.minVersion = minVersion;
258
+ const hiddenProperties = config.hiddenNodeProperties?.[nodeName];
259
+ if (hiddenProperties && hiddenProperties.length > 0)
260
+ meta.hiddenProperties = hiddenProperties;
261
+ return meta;
262
+ }
199
263
  getTemplatesService() {
200
264
  if (!this.templatesService) {
201
265
  this.templatesService = new instance_ai_1.BuilderTemplatesService({
@@ -206,6 +270,14 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
206
270
  }
207
271
  return this.templatesService;
208
272
  }
273
+ createWorkflowTemplateAdapter() {
274
+ const workflowTemplatesService = this.workflowTemplatesService;
275
+ return {
276
+ async getTemplate(templateId) {
277
+ return await workflowTemplatesService.getTemplate(templateId);
278
+ },
279
+ };
280
+ }
209
281
  buildLicenseHints() {
210
282
  const hints = [];
211
283
  if (!this.license.isLicensed('feat:namedVersions')) {
@@ -216,6 +288,15 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
216
288
  }
217
289
  return hints;
218
290
  }
291
+ async trackGatewayAvailability() {
292
+ const config = await this.getGatewayConfigOrNull();
293
+ if (!config)
294
+ return;
295
+ this.telemetry.track('instance_ai_gateway_available', {
296
+ nodeCount: config.nodes.length,
297
+ credentialTypeCount: config.credentialTypes.length,
298
+ });
299
+ }
219
300
  assertInstanceNotReadOnly(resourceType) {
220
301
  if (this.sourceControlPreferencesService.getPreferences().branchReadOnly) {
221
302
  throw new Error(`Cannot modify ${resourceType} on a protected instance. This instance is in read-only mode.`);
@@ -286,7 +367,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
286
367
  if (!workflow) {
287
368
  throw new Error(`Workflow ${workflowId} not found or not accessible`);
288
369
  }
289
- return toWorkflowDetail(workflow, { redactParameters });
370
+ return await toWorkflowDetailWithChecksum(workflow, { redactParameters });
290
371
  },
291
372
  async archive(workflowId) {
292
373
  assertNotReadOnly();
@@ -480,9 +561,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
480
561
  workflow_id: updated.id,
481
562
  });
482
563
  }
483
- return toWorkflowDetail(updated, { redactParameters });
564
+ return await toWorkflowDetailWithChecksum(updated, { redactParameters });
484
565
  },
485
- async updateFromWorkflowJSON(workflowId, json, _options) {
566
+ async updateFromWorkflowJSON(workflowId, json, options) {
486
567
  assertNotReadOnly();
487
568
  const settings = (json.settings ?? {});
488
569
  if (settings.redactionPolicy !== undefined) {
@@ -516,9 +597,13 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
516
597
  }
517
598
  updated = await workflowService.update(user, updateData, workflowId, {
518
599
  source: 'n8n-ai',
600
+ ...(options?.expectedChecksum ? { expectedChecksum: options.expectedChecksum } : {}),
519
601
  });
520
602
  }
521
603
  catch (error) {
604
+ if (error instanceof conflict_error_1.ConflictError) {
605
+ throw new instance_ai_1.WorkflowSaveConflictError(workflowId);
606
+ }
522
607
  logger.warn('AI-builder workflow save failed', {
523
608
  threadId,
524
609
  workflowId,
@@ -532,7 +617,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
532
617
  workflow_id: workflowId,
533
618
  });
534
619
  }
535
- return toWorkflowDetail(updated, { redactParameters });
620
+ return await toWorkflowDetailWithChecksum(updated, { redactParameters });
536
621
  },
537
622
  async listVersions(workflowId, options) {
538
623
  const take = options?.limit ?? 20;
@@ -601,7 +686,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
601
686
  };
602
687
  }
603
688
  createExecutionAdapter(user, pushRef, threadId) {
604
- const { workflowFinderService, workflowRunner, activeExecutions, executionRepository, nodeTypes, allowSendingParameterValues, license, roleService, telemetry, logger, globalConfig, } = this;
689
+ const { workflowFinderService, workflowRunner, activeExecutions, executionRepository, nodeTypes, allowSendingParameterValues, roleService, telemetry, logger, globalConfig, } = this;
605
690
  const assertNotReadOnly = () => this.assertInstanceNotReadOnly('executions');
606
691
  const DEFAULT_TIMEOUT_MS = 5 * constants_1.Time.minutes.toMilliseconds;
607
692
  const MAX_TIMEOUT_MS = 10 * constants_1.Time.minutes.toMilliseconds;
@@ -621,18 +706,13 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
621
706
  return {
622
707
  async list(options) {
623
708
  const scope = 'workflow:read';
624
- let sharingOptions;
625
- if (license.isSharingEnabled()) {
626
- const projectRoles = await roleService.rolesWithScope('project', [scope]);
627
- const workflowRoles = await roleService.rolesWithScope('workflow', [scope]);
628
- sharingOptions = { scopes: [scope], projectRoles, workflowRoles };
629
- }
630
- else {
631
- sharingOptions = {
632
- workflowRoles: ['workflow:owner'],
633
- projectRoles: [permissions_1.PROJECT_OWNER_ROLE_SLUG],
634
- };
635
- }
709
+ const projectRoles = await roleService.rolesWithScope('project', [scope]);
710
+ const workflowRoles = await roleService.rolesWithScope('workflow', [scope]);
711
+ const sharingOptions = {
712
+ scopes: [scope],
713
+ projectRoles,
714
+ workflowRoles,
715
+ };
636
716
  const query = {
637
717
  kind: 'range',
638
718
  range: { limit: options?.limit ?? 20, lastId: undefined, firstId: undefined },
@@ -868,7 +948,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
868
948
  };
869
949
  }
870
950
  createCredentialAdapter(user, boundProjectId, credentialIdAllowlist) {
871
- const { credentialsService, credentialsFinderService, loadNodesAndCredentials, aiGatewayService, } = this;
951
+ const { credentialsService, credentialsFinderService, loadNodesAndCredentials } = this;
952
+ const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
872
953
  const adapter = {
873
954
  async list(options) {
874
955
  if (boundProjectId) {
@@ -1113,13 +1194,12 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1113
1194
  }
1114
1195
  },
1115
1196
  async isAiGatewayCredentialType(credType) {
1116
- try {
1117
- const config = await aiGatewayService.getGatewayConfig();
1118
- return config.credentialTypes.includes(credType);
1119
- }
1120
- catch {
1121
- return false;
1122
- }
1197
+ const config = await getGatewayConfig();
1198
+ return config?.credentialTypes.includes(credType) ?? false;
1199
+ },
1200
+ async listAiGatewayCredentialTypes() {
1201
+ const config = await getGatewayConfig();
1202
+ return config?.credentialTypes ?? [];
1123
1203
  },
1124
1204
  };
1125
1205
  if (!credentialIdAllowlist)
@@ -1130,6 +1210,46 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1130
1210
  list: async (options) => allowed.size === 0 ? [] : (await adapter.list(options)).filter((c) => allowed.has(c.id)),
1131
1211
  };
1132
1212
  }
1213
+ createEvaluationConfigAdapter(evaluationConfigService, user) {
1214
+ const { workflowFinderService } = this;
1215
+ const assertNotReadOnly = () => this.assertInstanceNotReadOnly('evaluations');
1216
+ const findWorkflow = async (workflowId, scope) => {
1217
+ const workflow = await workflowFinderService.findWorkflowForUser(workflowId, user, [scope]);
1218
+ if (!workflow) {
1219
+ throw new Error(`Workflow ${workflowId} not found or not accessible`);
1220
+ }
1221
+ return workflow;
1222
+ };
1223
+ return {
1224
+ async list(workflowId) {
1225
+ await findWorkflow(workflowId, 'workflow:read');
1226
+ const configs = await evaluationConfigService.list(workflowId);
1227
+ return configs.map(evaluationConfigToSummary);
1228
+ },
1229
+ async get(workflowId, configId) {
1230
+ await findWorkflow(workflowId, 'workflow:read');
1231
+ const config = await evaluationConfigService.get(workflowId, configId);
1232
+ return config ? evaluationConfigToSummary(config) : null;
1233
+ },
1234
+ async create(workflowId, input) {
1235
+ assertNotReadOnly();
1236
+ const workflow = await findWorkflow(workflowId, 'workflow:update');
1237
+ const config = await evaluationConfigService.create(workflowId, workflow, user, buildEvaluationConfigDto(input));
1238
+ return evaluationConfigToSummary(config);
1239
+ },
1240
+ async update(workflowId, configId, input) {
1241
+ assertNotReadOnly();
1242
+ const workflow = await findWorkflow(workflowId, 'workflow:update');
1243
+ const config = await evaluationConfigService.update(workflowId, configId, workflow, user, buildEvaluationConfigDto(input));
1244
+ return evaluationConfigToSummary(config);
1245
+ },
1246
+ async delete(workflowId, configId) {
1247
+ assertNotReadOnly();
1248
+ await findWorkflow(workflowId, 'workflow:update');
1249
+ await evaluationConfigService.delete(workflowId, configId);
1250
+ },
1251
+ };
1252
+ }
1133
1253
  createDataTableAdapter(user, boundProjectId) {
1134
1254
  const { dataTableService, dataTableRepository } = this;
1135
1255
  const assertNotReadOnly = () => this.assertInstanceNotReadOnly('data tables');
@@ -1391,6 +1511,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1391
1511
  }
1392
1512
  createNodeAdapter(user) {
1393
1513
  const getNodes = async () => await this.getNodesFromCache();
1514
+ const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
1515
+ const buildMeta = (config, nodeName) => this.buildAiGatewayNodeMeta(config, nodeName);
1394
1516
  const findNodeByVersion = (nodes, nodeType, version) => {
1395
1517
  if (version !== undefined) {
1396
1518
  const exact = nodes.find((n) => {
@@ -1407,24 +1529,34 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1407
1529
  };
1408
1530
  return {
1409
1531
  async listAvailable(options) {
1410
- const nodes = await getNodes();
1532
+ const [nodes, gatewayConfig] = await Promise.all([
1533
+ getNodes(),
1534
+ options?.n8nConnectOnly ? getGatewayConfig() : Promise.resolve(null),
1535
+ ]);
1411
1536
  let filtered = nodes;
1412
1537
  if (options?.query) {
1413
1538
  const q = options.query.toLowerCase();
1414
- filtered = nodes.filter((n) => n.displayName.toLowerCase().includes(q) ||
1539
+ filtered = filtered.filter((n) => n.displayName.toLowerCase().includes(q) ||
1415
1540
  n.name.toLowerCase().includes(q) ||
1416
1541
  n.description?.toLowerCase().includes(q));
1417
1542
  }
1418
- return filtered.map((n) => ({
1419
- name: n.name,
1420
- displayName: n.displayName,
1421
- description: n.description ?? '',
1422
- group: n.group ?? [],
1423
- version: Array.isArray(n.version) ? n.version[n.version.length - 1] : n.version,
1424
- }));
1543
+ const summaries = filtered.map((n) => {
1544
+ const summary = {
1545
+ name: n.name,
1546
+ displayName: n.displayName,
1547
+ description: n.description ?? '',
1548
+ group: n.group ?? [],
1549
+ version: Array.isArray(n.version) ? n.version[n.version.length - 1] : n.version,
1550
+ };
1551
+ const meta = buildMeta(gatewayConfig, n.name);
1552
+ if (meta)
1553
+ summary.aiGateway = meta;
1554
+ return summary;
1555
+ });
1556
+ return options?.n8nConnectOnly ? summaries.filter((s) => s.aiGateway) : summaries;
1425
1557
  },
1426
1558
  async listSearchable() {
1427
- const nodes = await getNodes();
1559
+ const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
1428
1560
  const toStringArray = (value) => {
1429
1561
  if (typeof value === 'string')
1430
1562
  return value;
@@ -1439,6 +1571,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1439
1571
  inputs: toStringArray(n.inputs),
1440
1572
  outputs: toStringArray(n.outputs),
1441
1573
  };
1574
+ const meta = buildMeta(gatewayConfig, n.name);
1575
+ if (meta)
1576
+ result.aiGateway = meta;
1442
1577
  if (n.codex?.alias) {
1443
1578
  result.codex = { alias: n.codex.alias };
1444
1579
  }
@@ -1476,7 +1611,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1476
1611
  });
1477
1612
  },
1478
1613
  async getDescription(nodeType, version) {
1479
- const nodes = await getNodes();
1614
+ const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
1480
1615
  let desc = version !== undefined
1481
1616
  ? nodes.find((n) => {
1482
1617
  if (n.name !== nodeType)
@@ -1492,6 +1627,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1492
1627
  if (!desc) {
1493
1628
  throw new Error(`Node type ${nodeType} not found`);
1494
1629
  }
1630
+ const meta = buildMeta(gatewayConfig, desc.name);
1495
1631
  return {
1496
1632
  name: desc.name,
1497
1633
  displayName: desc.displayName,
@@ -1526,6 +1662,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1526
1662
  ...(desc.webhooks ? { webhooks: desc.webhooks } : {}),
1527
1663
  ...(desc.polling ? { polling: desc.polling } : {}),
1528
1664
  ...(desc.triggerPanel !== undefined ? { triggerPanel: desc.triggerPanel } : {}),
1665
+ ...(meta ? { aiGateway: meta } : {}),
1529
1666
  };
1530
1667
  },
1531
1668
  getNodeTypeDefinition: async (nodeType, options) => {
@@ -1850,10 +1987,60 @@ exports.InstanceAiAdapterService = InstanceAiAdapterService = __decorate([
1850
1987
  backend_network_1.SsrfProtectionService,
1851
1988
  backend_network_1.OutboundHttp,
1852
1989
  ai_gateway_service_1.AiGatewayService,
1853
- node_catalog_1.NodeCatalogService])
1990
+ workflow_templates_service_1.WorkflowTemplatesService,
1991
+ node_catalog_1.NodeCatalogService,
1992
+ evaluation_config_service_1.EvaluationConfigService])
1854
1993
  ], InstanceAiAdapterService);
1855
1994
  const MAX_RESULT_CHARS = 20_000;
1856
1995
  const MAX_NODE_OUTPUT_CHARS = 1_000;
1996
+ function buildEvaluationConfigDto(input) {
1997
+ return api_types_1.upsertEvaluationConfigSchema.parse({
1998
+ name: input.name,
1999
+ startNodeName: input.startNodeName,
2000
+ endNodeName: input.endNodeName,
2001
+ datasetSource: 'data_table',
2002
+ datasetRef: { dataTableId: input.dataTableId },
2003
+ metrics: input.metrics.map((metric) => ({
2004
+ id: (0, nanoid_1.nanoid)(),
2005
+ name: metric.name,
2006
+ type: 'llm_judge',
2007
+ config: {
2008
+ preset: metric.preset,
2009
+ ...(metric.prompt ? { prompt: metric.prompt } : {}),
2010
+ provider: metric.provider,
2011
+ credentialId: metric.credentialId,
2012
+ model: metric.model,
2013
+ outputType: metric.outputType,
2014
+ inputs: {
2015
+ actualAnswer: metric.actualAnswer,
2016
+ ...(metric.userQuery ? { userQuery: metric.userQuery } : {}),
2017
+ ...(metric.expectedAnswer ? { expectedAnswer: metric.expectedAnswer } : {}),
2018
+ },
2019
+ },
2020
+ })),
2021
+ });
2022
+ }
2023
+ function evaluationConfigToSummary(config) {
2024
+ const dataTableId = config.datasetSource === 'data_table' && 'dataTableId' in config.datasetRef
2025
+ ? config.datasetRef.dataTableId
2026
+ : undefined;
2027
+ return {
2028
+ id: config.id,
2029
+ workflowId: config.workflowId,
2030
+ name: config.name,
2031
+ status: config.status,
2032
+ invalidReason: config.invalidReason,
2033
+ startNodeName: config.startNodeName,
2034
+ endNodeName: config.endNodeName,
2035
+ metrics: config.metrics.map((metric) => ({
2036
+ id: metric.id,
2037
+ name: metric.name,
2038
+ type: metric.type,
2039
+ })),
2040
+ datasetSource: config.datasetSource,
2041
+ ...(dataTableId !== undefined ? { dataTableId } : {}),
2042
+ };
2043
+ }
1857
2044
  async function resolveDataTableByIdOrName(repository, logger, idOrName, options) {
1858
2045
  const byId = await repository.findOneBy({ id: idOrName });
1859
2046
  if (byId) {
@@ -1915,6 +2102,42 @@ function wrapResultDataEntries(data) {
1915
2102
  }
1916
2103
  return wrapped;
1917
2104
  }
2105
+ const MAX_NODE_ERRORS = 10;
2106
+ function isFailedNodeRun(nodeRun) {
2107
+ return (nodeRun.executionStatus === 'error' ||
2108
+ nodeRun.error !== undefined ||
2109
+ nodeRun.redactedError !== undefined);
2110
+ }
2111
+ function nodeContinuesOnError(node) {
2112
+ return (node?.continueOnFail === true ||
2113
+ node?.onError === 'continueRegularOutput' ||
2114
+ node?.onError === 'continueErrorOutput');
2115
+ }
2116
+ function extractNodeErrors(runData, includeUpstreamDetails, workflowNodes = []) {
2117
+ if (!runData)
2118
+ return [];
2119
+ const nodesByName = new Map(workflowNodes.map((node) => [node.name, node]));
2120
+ const nodeErrors = [];
2121
+ for (const [nodeName, nodeRuns] of Object.entries(runData)) {
2122
+ if (nodeErrors.length >= MAX_NODE_ERRORS)
2123
+ break;
2124
+ if (nodeContinuesOnError(nodesByName.get(nodeName)))
2125
+ continue;
2126
+ const failedRun = nodeRuns.find(isFailedNodeRun);
2127
+ if (!failedRun)
2128
+ continue;
2129
+ const message = failedRun.error
2130
+ ? formatExecutionError(failedRun.error, includeUpstreamDetails)
2131
+ : failedRun.redactedError
2132
+ ? `${failedRun.redactedError.type} error${failedRun.redactedError.httpCode ? ` (${failedRun.redactedError.httpCode})` : ''}`
2133
+ : undefined;
2134
+ nodeErrors.push({
2135
+ nodeName,
2136
+ ...(message ? { message } : {}),
2137
+ });
2138
+ }
2139
+ return nodeErrors;
2140
+ }
1918
2141
  async function extractExecutionResult(executionId, includeOutputData = true) {
1919
2142
  const execution = await di_1.Container.get(execution_persistence_1.ExecutionPersistence).findSingleExecution(executionId, {
1920
2143
  includeData: true,
@@ -1931,9 +2154,9 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
1931
2154
  ? 'waiting'
1932
2155
  : 'success';
1933
2156
  const resultData = {};
1934
- const executedNodeNames = Object.keys(execution.data?.resultData?.runData ?? {});
2157
+ const runData = execution.data?.resultData?.runData;
2158
+ const executedNodeNames = Object.keys(runData ?? {});
1935
2159
  if (includeOutputData) {
1936
- const runData = execution.data?.resultData?.runData;
1937
2160
  if (runData) {
1938
2161
  for (const [nodeName, nodeRuns] of Object.entries(runData)) {
1939
2162
  const lastRun = nodeRuns[nodeRuns.length - 1];
@@ -1951,6 +2174,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
1951
2174
  }
1952
2175
  const error = execution.data?.resultData?.error;
1953
2176
  const errorMessage = error ? formatExecutionError(error, includeOutputData) : undefined;
2177
+ const nodeErrors = extractNodeErrors(runData, includeOutputData, execution.workflowData?.nodes);
1954
2178
  return {
1955
2179
  executionId,
1956
2180
  status,
@@ -1958,6 +2182,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
1958
2182
  ? wrapResultDataEntries(truncateResultData(resultData))
1959
2183
  : undefined,
1960
2184
  executedNodeNames: executedNodeNames.length > 0 ? executedNodeNames : undefined,
2185
+ nodeErrors: nodeErrors.length > 0 ? nodeErrors : undefined,
1961
2186
  lastNodeExecuted: execution.data?.resultData?.lastNodeExecuted,
1962
2187
  error: errorMessage,
1963
2188
  startedAt: execution.startedAt?.toISOString(),
@@ -2110,7 +2335,7 @@ async function extractExecutionDebugInfo(executionId, includeOutputData = true,
2110
2335
  nodeTrace.push({
2111
2336
  name: nodeName,
2112
2337
  type: nodeType,
2113
- status: lastRun.error !== undefined ? 'error' : 'success',
2338
+ status: isFailedNodeRun(lastRun) ? 'error' : 'success',
2114
2339
  startedAt: lastRun.startTime !== undefined ? new Date(lastRun.startTime).toISOString() : undefined,
2115
2340
  finishedAt: lastRun.startTime !== undefined && lastRun.executionTime !== undefined
2116
2341
  ? new Date(lastRun.startTime + lastRun.executionTime).toISOString()
@@ -2244,4 +2469,9 @@ function toWorkflowDetail(workflow, options) {
2244
2469
  settings: workflow.settings,
2245
2470
  };
2246
2471
  }
2472
+ async function toWorkflowDetailWithChecksum(workflow, options) {
2473
+ const detail = toWorkflowDetail(workflow, options);
2474
+ detail.checksum = await (0, n8n_workflow_1.calculateWorkflowChecksum)(workflow);
2475
+ return detail;
2476
+ }
2247
2477
  //# sourceMappingURL=instance-ai.adapter.service.js.map