n8n 2.30.4 → 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 (518) 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/interfaces.d.ts +4 -1
  63. package/dist/load-nodes-and-credentials.js +1 -1
  64. package/dist/load-nodes-and-credentials.js.map +1 -1
  65. package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
  66. package/dist/metrics/prometheus/prometheus.service.js +5 -2
  67. package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
  68. package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +35 -0
  69. package/dist/metrics/prometheus/scheduler-metrics.service.js +187 -0
  70. package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -0
  71. package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
  72. package/dist/modules/agents/adapters/agents-credential-provider.js +13 -3
  73. package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
  74. package/dist/modules/agents/agent-config.service.js +11 -1
  75. package/dist/modules/agents/agent-config.service.js.map +1 -1
  76. package/dist/modules/agents/agent-knowledge.controller.js +1 -1
  77. package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
  78. package/dist/modules/agents/agent-upload.middleware.d.ts +2 -0
  79. package/dist/modules/agents/agent-upload.middleware.js +11 -0
  80. package/dist/modules/agents/agent-upload.middleware.js.map +1 -1
  81. package/dist/modules/agents/agent-validation.service.js +19 -2
  82. package/dist/modules/agents/agent-validation.service.js.map +1 -1
  83. package/dist/modules/agents/agent-vector-stores.controller.d.ts +11 -0
  84. package/dist/modules/agents/agent-vector-stores.controller.js +41 -0
  85. package/dist/modules/agents/agent-vector-stores.controller.js.map +1 -0
  86. package/dist/modules/agents/agent-vector-stores.service.d.ts +9 -0
  87. package/dist/modules/agents/agent-vector-stores.service.js +195 -0
  88. package/dist/modules/agents/agent-vector-stores.service.js.map +1 -0
  89. package/dist/modules/agents/agents-config.controller.d.ts +112 -69
  90. package/dist/modules/agents/agents.controller.d.ts +5 -1
  91. package/dist/modules/agents/agents.controller.js +11 -0
  92. package/dist/modules/agents/agents.controller.js.map +1 -1
  93. package/dist/modules/agents/agents.module.js +1 -0
  94. package/dist/modules/agents/agents.module.js.map +1 -1
  95. package/dist/modules/agents/agents.service.d.ts +7 -2
  96. package/dist/modules/agents/agents.service.js +65 -2
  97. package/dist/modules/agents/agents.service.js.map +1 -1
  98. package/dist/modules/agents/attachable-workflows.service.d.ts +12 -0
  99. package/dist/modules/agents/attachable-workflows.service.js +58 -0
  100. package/dist/modules/agents/attachable-workflows.service.js.map +1 -0
  101. package/dist/modules/agents/builder/agents-builder-model-recommendations.js +3 -2
  102. package/dist/modules/agents/builder/agents-builder-model-recommendations.js.map +1 -1
  103. package/dist/modules/agents/builder/agents-builder-prompts.d.ts +4 -4
  104. package/dist/modules/agents/builder/agents-builder-prompts.js +40 -27
  105. package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
  106. package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +3 -5
  107. package/dist/modules/agents/builder/agents-builder-tools.service.js +48 -194
  108. package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
  109. package/dist/modules/agents/builder/agents-builder.service.d.ts +10 -3
  110. package/dist/modules/agents/builder/agents-builder.service.js +22 -12
  111. package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
  112. package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
  113. package/dist/modules/agents/builder/errors.d.ts +3 -2
  114. package/dist/modules/agents/builder/errors.js +3 -2
  115. package/dist/modules/agents/builder/errors.js.map +1 -1
  116. package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +99 -2
  117. package/dist/modules/agents/builder/get-resource-locator-options.tool.js +103 -101
  118. package/dist/modules/agents/builder/get-resource-locator-options.tool.js.map +1 -1
  119. package/dist/modules/agents/builder/interactive/ask-credential.tool.js +48 -32
  120. package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
  121. package/dist/modules/agents/builder/interactive/ask-questions.tool.d.ts +2 -0
  122. package/dist/modules/agents/builder/interactive/ask-questions.tool.js +108 -0
  123. package/dist/modules/agents/builder/interactive/ask-questions.tool.js.map +1 -0
  124. package/dist/modules/agents/builder/interactive/configure-channel.tool.d.ts +7 -0
  125. package/dist/modules/agents/builder/interactive/configure-channel.tool.js +52 -0
  126. package/dist/modules/agents/builder/interactive/configure-channel.tool.js.map +1 -0
  127. package/dist/modules/agents/builder/interactive/index.d.ts +2 -2
  128. package/dist/modules/agents/builder/interactive/index.js +5 -5
  129. package/dist/modules/agents/builder/interactive/index.js.map +1 -1
  130. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +2 -2
  131. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
  132. package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +1 -1
  133. package/dist/modules/agents/builder/prompts/config-rules.prompt.js +2 -2
  134. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +10 -10
  135. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js.map +1 -1
  136. package/dist/modules/agents/builder/prompts/memory.prompt.d.ts +1 -1
  137. package/dist/modules/agents/builder/prompts/memory.prompt.js +1 -1
  138. package/dist/modules/agents/builder/search-mcp-servers.tool.js +1 -63
  139. package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -1
  140. package/dist/modules/agents/builder/skills/index.d.ts +1 -1
  141. package/dist/modules/agents/builder/skills/index.js +5 -1
  142. package/dist/modules/agents/builder/skills/index.js.map +1 -1
  143. package/dist/modules/agents/builder/skills/integrations.skill.js +15 -6
  144. package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
  145. package/dist/modules/agents/builder/skills/mcp.skill.js +2 -2
  146. package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -1
  147. package/dist/modules/agents/builder/skills/resource-locators.skill.js +2 -2
  148. package/dist/modules/agents/builder/skills/resource-locators.skill.js.map +1 -1
  149. package/dist/modules/agents/builder/skills/sub-agents.skill.js +7 -5
  150. package/dist/modules/agents/builder/skills/sub-agents.skill.js.map +1 -1
  151. package/dist/modules/agents/builder/skills/target-skills.skill.js +5 -4
  152. package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
  153. package/dist/modules/agents/builder/skills/target-tasks.skill.js +5 -5
  154. package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
  155. package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +14 -0
  156. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +96 -0
  157. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -0
  158. package/dist/modules/agents/integrations/integration-action-executor.d.ts +72 -72
  159. package/dist/modules/agents/integrations/integration-tool-definitions.d.ts +574 -574
  160. package/dist/modules/agents/json-config/embedding-credential.d.ts +4 -0
  161. package/dist/modules/agents/json-config/embedding-credential.js +25 -0
  162. package/dist/modules/agents/json-config/embedding-credential.js.map +1 -0
  163. package/dist/modules/agents/json-config/from-json-config.d.ts +2 -6
  164. package/dist/modules/agents/json-config/from-json-config.js +16 -16
  165. package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
  166. package/dist/modules/agents/json-config/model-config.js +2 -2
  167. package/dist/modules/agents/json-config/model-config.js.map +1 -1
  168. package/dist/modules/agents/json-config/vector-store-factory.d.ts +5 -0
  169. package/dist/modules/agents/json-config/vector-store-factory.js +138 -0
  170. package/dist/modules/agents/json-config/vector-store-factory.js.map +1 -0
  171. package/dist/modules/breaking-changes/rules/index.d.ts +8 -0
  172. package/dist/modules/breaking-changes/rules/index.js +8 -0
  173. package/dist/modules/breaking-changes/rules/index.js.map +1 -1
  174. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.d.ts +6 -0
  175. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +59 -0
  176. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -0
  177. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.d.ts +9 -0
  178. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +57 -0
  179. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -0
  180. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.d.ts +10 -0
  181. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +53 -0
  182. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -0
  183. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.d.ts +9 -0
  184. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +56 -0
  185. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -0
  186. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.d.ts +9 -0
  187. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +57 -0
  188. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -0
  189. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.d.ts +6 -0
  190. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +50 -0
  191. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -0
  192. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.d.ts +9 -0
  193. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +57 -0
  194. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -0
  195. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.d.ts +6 -0
  196. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js +47 -0
  197. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js.map +1 -0
  198. package/dist/modules/chat-hub/chat-hub.module.d.ts +1 -1
  199. package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +3 -3
  200. package/dist/modules/data-table/data-table-ddl.service.d.ts +2 -0
  201. package/dist/modules/data-table/data-table-ddl.service.js +16 -0
  202. package/dist/modules/data-table/data-table-ddl.service.js.map +1 -1
  203. package/dist/modules/data-table/data-table.service.d.ts +6 -3
  204. package/dist/modules/data-table/data-table.service.js +19 -0
  205. package/dist/modules/data-table/data-table.service.js.map +1 -1
  206. package/dist/modules/data-table/utils/sql-utils.d.ts +1 -0
  207. package/dist/modules/data-table/utils/sql-utils.js +4 -0
  208. package/dist/modules/data-table/utils/sql-utils.js.map +1 -1
  209. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.d.ts +0 -2
  210. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js +0 -13
  211. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js.map +1 -1
  212. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +5 -3
  213. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +19 -7
  214. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
  215. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
  216. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +1 -1
  217. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
  218. package/dist/modules/favorites/dto/add-favorite.dto.d.ts +2 -2
  219. package/dist/modules/favorites/favorites.event-relay.js +2 -3
  220. package/dist/modules/favorites/favorites.event-relay.js.map +1 -1
  221. package/dist/modules/favorites/favorites.service.d.ts +4 -1
  222. package/dist/modules/favorites/favorites.service.js +28 -3
  223. package/dist/modules/favorites/favorites.service.js.map +1 -1
  224. package/dist/modules/instance-ai/eval/execution.service.d.ts +4 -1
  225. package/dist/modules/instance-ai/eval/execution.service.js +26 -3
  226. package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
  227. package/dist/modules/instance-ai/eval/mock-handler.js +1 -1
  228. package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
  229. package/dist/modules/instance-ai/eval/mock-quirks.js +7 -0
  230. package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
  231. package/dist/modules/instance-ai/eval/pin-data-generator.js +17 -17
  232. package/dist/modules/instance-ai/eval/pin-data-generator.js.map +1 -1
  233. package/dist/modules/instance-ai/event-bus/in-process-event-bus.d.ts +17 -6
  234. package/dist/modules/instance-ai/event-bus/in-process-event-bus.js +153 -30
  235. package/dist/modules/instance-ai/event-bus/in-process-event-bus.js.map +1 -1
  236. package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -2
  237. package/dist/modules/instance-ai/instance-ai-memory.service.js +12 -1
  238. package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
  239. package/dist/modules/instance-ai/instance-ai-settings.service.js +0 -7
  240. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  241. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +89 -3
  242. package/dist/modules/instance-ai/instance-ai.adapter.service.js +264 -29
  243. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  244. package/dist/modules/instance-ai/instance-ai.controller.js +9 -2
  245. package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
  246. package/dist/modules/instance-ai/instance-ai.service.d.ts +0 -1
  247. package/dist/modules/instance-ai/instance-ai.service.js +45 -107
  248. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  249. package/dist/modules/instance-ai/workflow-templates.service.d.ts +17 -0
  250. package/dist/modules/instance-ai/workflow-templates.service.js +63 -0
  251. package/dist/modules/instance-ai/workflow-templates.service.js.map +1 -0
  252. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.d.ts +1 -0
  253. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js +2 -0
  254. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js.map +1 -1
  255. package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +2 -0
  256. package/dist/modules/mcp/dto/update-workflows-availability.dto.js +1 -0
  257. package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -1
  258. package/dist/modules/mcp/mcp-protected-resource.d.ts +4 -1
  259. package/dist/modules/mcp/mcp-protected-resource.js +13 -3
  260. package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
  261. package/dist/modules/mcp/mcp.config.d.ts +1 -0
  262. package/dist/modules/mcp/mcp.config.js +20 -0
  263. package/dist/modules/mcp/mcp.config.js.map +1 -1
  264. package/dist/modules/mcp/mcp.module.d.ts +1 -0
  265. package/dist/modules/mcp/mcp.module.js +3 -1
  266. package/dist/modules/mcp/mcp.module.js.map +1 -1
  267. package/dist/modules/mcp/mcp.settings.service.d.ts +1 -1
  268. package/dist/modules/mcp/mcp.settings.service.js +33 -18
  269. package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
  270. package/dist/modules/mcp/tools/search-workflows.tool.js +4 -2
  271. package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
  272. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +2 -0
  273. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +10 -5
  274. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
  275. package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js +4 -0
  276. package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js.map +1 -1
  277. package/dist/modules/mcp/tools/workflow-builder/skills-used.d.ts +1 -0
  278. package/dist/modules/mcp/tools/workflow-builder/skills-used.js +5 -1
  279. package/dist/modules/mcp/tools/workflow-builder/skills-used.js.map +1 -1
  280. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +10 -5
  281. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
  282. package/dist/modules/mcp/tools/workflow-builder/version-metadata.d.ts +27 -0
  283. package/dist/modules/mcp/tools/workflow-builder/version-metadata.js +109 -0
  284. package/dist/modules/mcp/tools/workflow-builder/version-metadata.js.map +1 -0
  285. package/dist/modules/mcp-registry/registry/mcp-registry-search.d.ts +18 -0
  286. package/dist/modules/mcp-registry/registry/mcp-registry-search.js +64 -0
  287. package/dist/modules/mcp-registry/registry/mcp-registry-search.js.map +1 -0
  288. package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +2 -0
  289. package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
  290. package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
  291. package/dist/modules/n8n-packages/engine/import-blocked.error.js +2 -1
  292. package/dist/modules/n8n-packages/engine/import-blocked.error.js.map +1 -1
  293. package/dist/modules/n8n-packages/engine/import-orchestrator.d.ts +30 -0
  294. package/dist/modules/n8n-packages/engine/import-orchestrator.js +86 -0
  295. package/dist/modules/n8n-packages/engine/import-orchestrator.js.map +1 -0
  296. package/dist/modules/n8n-packages/engine/import-result.d.ts +14 -0
  297. package/dist/modules/n8n-packages/engine/import-result.js +43 -0
  298. package/dist/modules/n8n-packages/engine/import-result.js.map +1 -0
  299. package/dist/modules/n8n-packages/engine/n8n-package-parser.d.ts +7 -0
  300. package/dist/modules/n8n-packages/engine/n8n-package-parser.js +72 -13
  301. package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
  302. package/dist/modules/n8n-packages/engine/package-layout.d.ts +11 -0
  303. package/dist/modules/n8n-packages/engine/package-layout.js +21 -0
  304. package/dist/modules/n8n-packages/engine/package-layout.js.map +1 -0
  305. package/dist/modules/n8n-packages/engine/project-package-importer.d.ts +11 -0
  306. package/dist/modules/n8n-packages/engine/project-package-importer.js +44 -0
  307. package/dist/modules/n8n-packages/engine/project-package-importer.js.map +1 -0
  308. package/dist/modules/n8n-packages/engine/workflow-package-importer.d.ts +24 -0
  309. package/dist/modules/n8n-packages/engine/workflow-package-importer.js +168 -0
  310. package/dist/modules/n8n-packages/engine/workflow-package-importer.js.map +1 -0
  311. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.d.ts +3 -1
  312. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js +8 -2
  313. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js.map +1 -1
  314. package/dist/modules/n8n-packages/entities/credential/credential-matcher.d.ts +6 -6
  315. package/dist/modules/n8n-packages/entities/credential/credential-matcher.js +34 -4
  316. package/dist/modules/n8n-packages/entities/credential/credential-matcher.js.map +1 -1
  317. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.d.ts +3 -0
  318. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js +27 -0
  319. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js.map +1 -0
  320. package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +2 -0
  321. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +18 -2
  322. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -1
  323. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.d.ts +3 -7
  324. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js +8 -23
  325. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js.map +1 -1
  326. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.d.ts +8 -0
  327. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js +31 -0
  328. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js.map +1 -0
  329. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.d.ts +8 -0
  330. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js +31 -0
  331. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js.map +1 -0
  332. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.d.ts +6 -0
  333. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js +38 -0
  334. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js.map +1 -0
  335. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.d.ts +26 -0
  336. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js +97 -0
  337. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js.map +1 -0
  338. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.d.ts +5 -0
  339. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +31 -0
  340. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -0
  341. package/dist/modules/n8n-packages/entities/data-table/data-table.types.d.ts +4 -0
  342. package/dist/modules/n8n-packages/entities/data-table/data-table.types.js +3 -0
  343. package/dist/modules/n8n-packages/entities/data-table/data-table.types.js.map +1 -0
  344. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.d.ts +5 -0
  345. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js +11 -0
  346. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js.map +1 -0
  347. package/dist/modules/n8n-packages/entities/folder/folder-import.types.d.ts +20 -0
  348. package/dist/modules/n8n-packages/entities/folder/folder-import.types.js +3 -0
  349. package/dist/modules/n8n-packages/entities/folder/folder-import.types.js.map +1 -0
  350. package/dist/modules/n8n-packages/entities/folder/folder-importer.d.ts +10 -0
  351. package/dist/modules/n8n-packages/entities/folder/folder-importer.js +140 -0
  352. package/dist/modules/n8n-packages/entities/folder/folder-importer.js.map +1 -0
  353. package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +5 -2
  354. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +48 -44
  355. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
  356. package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
  357. package/dist/modules/n8n-packages/entities/package-export.errors.d.ts +8 -0
  358. package/dist/modules/n8n-packages/entities/package-export.errors.js +27 -0
  359. package/dist/modules/n8n-packages/entities/package-export.errors.js.map +1 -0
  360. package/dist/modules/n8n-packages/entities/project/project-import.types.d.ts +15 -0
  361. package/dist/modules/n8n-packages/entities/project/project-import.types.js +3 -0
  362. package/dist/modules/n8n-packages/entities/project/project-import.types.js.map +1 -0
  363. package/dist/modules/n8n-packages/entities/project/project-importer.d.ts +13 -0
  364. package/dist/modules/n8n-packages/entities/project/project-importer.js +97 -0
  365. package/dist/modules/n8n-packages/entities/project/project-importer.js.map +1 -0
  366. package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +22 -4
  367. package/dist/modules/n8n-packages/entities/project/project.exporter.js +71 -26
  368. package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
  369. package/dist/modules/n8n-packages/entities/requirements.types.d.ts +2 -0
  370. package/dist/modules/n8n-packages/entities/requirements.types.js +1 -0
  371. package/dist/modules/n8n-packages/entities/requirements.types.js.map +1 -1
  372. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +4 -3
  373. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -17
  374. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
  375. package/dist/modules/n8n-packages/n8n-packages.service.d.ts +12 -3
  376. package/dist/modules/n8n-packages/n8n-packages.service.js +51 -11
  377. package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
  378. package/dist/modules/n8n-packages/n8n-packages.types.d.ts +47 -22
  379. package/dist/modules/n8n-packages/n8n-packages.types.js +5 -1
  380. package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
  381. package/dist/modules/n8n-packages/package-failure-classifier.d.ts +2 -0
  382. package/dist/modules/n8n-packages/package-failure-classifier.js +29 -0
  383. package/dist/modules/n8n-packages/package-failure-classifier.js.map +1 -0
  384. package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +62 -0
  385. package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +55 -0
  386. package/dist/modules/n8n-packages/spec/requirements.schema.js +26 -15
  387. package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -1
  388. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.d.ts +49 -0
  389. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js +20 -0
  390. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js.map +1 -0
  391. package/dist/modules/redaction/executions/execution-redaction.service.js +1 -1
  392. package/dist/modules/redaction/executions/execution-redaction.service.js.map +1 -1
  393. package/dist/modules/source-control.ee/constants.d.ts +1 -0
  394. package/dist/modules/source-control.ee/constants.js +2 -1
  395. package/dist/modules/source-control.ee/constants.js.map +1 -1
  396. package/dist/modules/source-control.ee/source-control-git.service.ee.d.ts +0 -1
  397. package/dist/modules/source-control.ee/source-control-git.service.ee.js +0 -22
  398. package/dist/modules/source-control.ee/source-control-git.service.ee.js.map +1 -1
  399. package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +3 -1
  400. package/dist/modules/source-control.ee/source-control-helper.ee.js +13 -0
  401. package/dist/modules/source-control.ee/source-control-helper.ee.js.map +1 -1
  402. package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +10 -2
  403. package/dist/modules/source-control.ee/source-control-import.service.ee.js +94 -59
  404. package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
  405. package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +0 -1
  406. package/dist/modules/source-control.ee/source-control-status.service.ee.js +30 -30
  407. package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
  408. package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +6 -6
  409. package/dist/modules/source-control.ee/source-control.service.ee.d.ts +3 -3
  410. package/dist/modules/source-control.ee/source-control.service.ee.js +8 -1
  411. package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
  412. package/dist/public-api/types.d.ts +5 -1
  413. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +9 -0
  414. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  415. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +87 -38
  416. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
  417. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.d.ts +8 -0
  418. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js +39 -0
  419. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js.map +1 -0
  420. package/dist/public-api/v1/openapi.yml +243 -12
  421. package/dist/scaling/job-processor.js +44 -6
  422. package/dist/scaling/job-processor.js.map +1 -1
  423. package/dist/scaling/pubsub/pubsub.event-map.d.ts +4 -1
  424. package/dist/scheduling/durable-job-provisioner.d.ts +16 -0
  425. package/dist/scheduling/durable-job-provisioner.js +135 -0
  426. package/dist/scheduling/durable-job-provisioner.js.map +1 -0
  427. package/dist/scheduling/durable-scheduler.d.ts +16 -0
  428. package/dist/scheduling/durable-scheduler.js +117 -0
  429. package/dist/scheduling/durable-scheduler.js.map +1 -0
  430. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.d.ts +23 -0
  431. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js +149 -0
  432. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js.map +1 -0
  433. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.d.ts +10 -0
  434. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js +33 -0
  435. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js.map +1 -0
  436. package/dist/scheduling/scheduler-tracer.d.ts +3 -0
  437. package/dist/scheduling/scheduler-tracer.js +11 -0
  438. package/dist/scheduling/scheduler-tracer.js.map +1 -0
  439. package/dist/services/folder-finder.service.d.ts +2 -0
  440. package/dist/services/folder-finder.service.js +16 -0
  441. package/dist/services/folder-finder.service.js.map +1 -1
  442. package/dist/services/folder.service.d.ts +3 -2
  443. package/dist/services/folder.service.js +11 -1
  444. package/dist/services/folder.service.js.map +1 -1
  445. package/dist/services/frontend.service.d.ts +3 -1
  446. package/dist/services/frontend.service.js +14 -2
  447. package/dist/services/frontend.service.js.map +1 -1
  448. package/dist/services/project.service.ee.d.ts +7 -1
  449. package/dist/services/project.service.ee.js +21 -4
  450. package/dist/services/project.service.ee.js.map +1 -1
  451. package/dist/services/protected-resource.registry.d.ts +1 -0
  452. package/dist/services/protected-resource.registry.js +11 -7
  453. package/dist/services/protected-resource.registry.js.map +1 -1
  454. package/dist/services/security-settings.service.d.ts +31 -1
  455. package/dist/services/security-settings.service.js +75 -2
  456. package/dist/services/security-settings.service.js.map +1 -1
  457. package/dist/services/workflow-review-policy.service.d.ts +11 -0
  458. package/dist/services/workflow-review-policy.service.js +52 -0
  459. package/dist/services/workflow-review-policy.service.js.map +1 -0
  460. package/dist/telemetry/index.js +2 -2
  461. package/dist/telemetry/index.js.map +1 -1
  462. package/dist/workflow-execute-additional-data.js +5 -4
  463. package/dist/workflow-execute-additional-data.js.map +1 -1
  464. package/dist/workflow-helpers.js +26 -0
  465. package/dist/workflow-helpers.js.map +1 -1
  466. package/dist/workflows/triggers/webhook-trigger-registrar.js +22 -15
  467. package/dist/workflows/triggers/webhook-trigger-registrar.js.map +1 -1
  468. package/dist/workflows/triggers/workflow-trigger-activator.js +1 -7
  469. package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
  470. package/dist/workflows/workflow-creation.service.d.ts +2 -0
  471. package/dist/workflows/workflow-creation.service.js +4 -2
  472. package/dist/workflows/workflow-creation.service.js.map +1 -1
  473. package/dist/workflows/workflow-execution.service.js +8 -5
  474. package/dist/workflows/workflow-execution.service.js.map +1 -1
  475. package/dist/workflows/workflow-finder.service.d.ts +5 -2
  476. package/dist/workflows/workflow-finder.service.js +25 -2
  477. package/dist/workflows/workflow-finder.service.js.map +1 -1
  478. package/dist/workflows/workflow-history/workflow-history.service.d.ts +4 -1
  479. package/dist/workflows/workflow-history/workflow-history.service.js +3 -1
  480. package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
  481. package/dist/workflows/workflow-validation.service.js +3 -3
  482. package/dist/workflows/workflow-validation.service.js.map +1 -1
  483. package/dist/workflows/workflow.request.d.ts +7 -22
  484. package/dist/workflows/workflow.service.d.ts +2 -0
  485. package/dist/workflows/workflow.service.js +4 -2
  486. package/dist/workflows/workflow.service.js.map +1 -1
  487. package/dist/workflows/workflows.controller.d.ts +1 -1
  488. package/dist/workflows/workflows.controller.js +8 -3
  489. package/dist/workflows/workflows.controller.js.map +1 -1
  490. package/package.json +43 -38
  491. package/templates/form-trigger-completion.handlebars +6 -6
  492. package/dist/executions/execution-data/azure-store.ee.d.ts +0 -15
  493. package/dist/executions/execution-data/azure-store.ee.js +0 -117
  494. package/dist/executions/execution-data/azure-store.ee.js.map +0 -1
  495. package/dist/executions/execution-data/fs-store.d.ts +0 -16
  496. package/dist/executions/execution-data/fs-store.js +0 -118
  497. package/dist/executions/execution-data/fs-store.js.map +0 -1
  498. package/dist/executions/execution-data/s3-store.ee.d.ts +0 -15
  499. package/dist/executions/execution-data/s3-store.ee.js +0 -116
  500. package/dist/executions/execution-data/s3-store.ee.js.map +0 -1
  501. package/dist/modules/agents/builder/from-ai-node-parameters.d.ts +0 -7
  502. package/dist/modules/agents/builder/from-ai-node-parameters.js +0 -43
  503. package/dist/modules/agents/builder/from-ai-node-parameters.js.map +0 -1
  504. package/dist/modules/agents/builder/interactive/ask-llm.tool.d.ts +0 -2
  505. package/dist/modules/agents/builder/interactive/ask-llm.tool.js +0 -25
  506. package/dist/modules/agents/builder/interactive/ask-llm.tool.js.map +0 -1
  507. package/dist/modules/agents/builder/interactive/ask-question.tool.d.ts +0 -2
  508. package/dist/modules/agents/builder/interactive/ask-question.tool.js +0 -27
  509. package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +0 -1
  510. package/dist/modules/agents/json-config/model-id.d.ts +0 -1
  511. package/dist/modules/agents/json-config/model-id.js +0 -8
  512. package/dist/modules/agents/json-config/model-id.js.map +0 -1
  513. package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +0 -7
  514. package/dist/modules/agents/json-config/native-web-search-provider-tools.js +0 -55
  515. package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +0 -1
  516. package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +0 -28
  517. package/dist/modules/n8n-packages/engine/import-pipeline.js +0 -204
  518. package/dist/modules/n8n-packages/engine/import-pipeline.js.map +0 -1
@@ -1,7 +1,8 @@
1
- import type { InstanceAiContext, ExecutionResult, ExecutionDebugInfo, NodeOutputResult, ServiceProxyConfig } from '@n8n/instance-ai';
1
+ import type { InstanceAiContext, ExecutionResult, ExecutionDebugInfo, NodeOutputResult, ServiceProxyConfig, EvaluationConfigSummary, UpsertEvaluationConfigInput } from '@n8n/instance-ai';
2
2
  import { GlobalConfig } from '@n8n/config';
3
- import type { User } from '@n8n/db';
3
+ import type { User, EvaluationConfig } from '@n8n/db';
4
4
  import { InstanceAiSettingsService } from './instance-ai-settings.service';
5
+ import { WorkflowTemplatesService } from './workflow-templates.service';
5
6
  import { AiBuilderTemporaryWorkflowRepository, ExecutionRepository, ProjectRepository, SharedWorkflowRepository, WorkflowRepository } from '@n8n/db';
6
7
  import { Logger } from '@n8n/backend-common';
7
8
  import { OutboundHttp, SsrfProtectionService } from '@n8n/backend-network';
@@ -9,6 +10,7 @@ import { type ExecutionError } from 'n8n-workflow';
9
10
  import { ActiveExecutions } from '../../active-executions';
10
11
  import { CredentialsFinderService } from '../../credentials/credentials-finder.service';
11
12
  import { CredentialsService } from '../../credentials/credentials.service';
13
+ import { EvaluationConfigService } from '../../evaluation.ee/evaluation-config.service';
12
14
  import { EventService } from '../../events/event.service';
13
15
  import { ExecutionPersistence } from '../../executions/execution-persistence';
14
16
  import { License } from '../../license';
@@ -65,28 +67,37 @@ export declare class InstanceAiAdapterService {
65
67
  private readonly ssrfProtectionService;
66
68
  private readonly outboundHttp;
67
69
  private readonly aiGatewayService;
70
+ private readonly workflowTemplatesService;
68
71
  private readonly nodeCatalogService?;
72
+ private readonly evaluationConfigService?;
69
73
  private readonly logger;
70
74
  private readonly allowSendingParameterValues;
71
75
  private nodesCache;
72
76
  private readonly NODES_CACHE_TTL_MS;
73
77
  private templatesService;
74
78
  private getNodesFromCache;
75
- constructor(logger: Logger, globalConfig: GlobalConfig, workflowService: WorkflowService, workflowFinderService: WorkflowFinderService, workflowRepository: WorkflowRepository, sharedWorkflowRepository: SharedWorkflowRepository, projectRepository: ProjectRepository, executionRepository: ExecutionRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, activeExecutions: ActiveExecutions, workflowRunner: WorkflowRunner, loadNodesAndCredentials: LoadNodesAndCredentials, nodeTypes: NodeTypes, instanceSettings: InstanceSettings, dataTableService: DataTableService, dataTableRepository: DataTableRepository, nodeResourceExplorerService: NodeResourceExplorerService, folderService: FolderService, projectService: ProjectService, tagService: TagService, sourceControlPreferencesService: SourceControlPreferencesService, settingsService: InstanceAiSettingsService, workflowHistoryService: WorkflowHistoryService, enterpriseWorkflowService: EnterpriseWorkflowService, license: License, executionPersistence: ExecutionPersistence, eventService: EventService, roleService: RoleService, telemetry: Telemetry, aiBuilderTemporaryWorkflowRepository: AiBuilderTemporaryWorkflowRepository, ssrfProtectionService: SsrfProtectionService, outboundHttp: OutboundHttp, aiGatewayService: AiGatewayService, nodeCatalogService?: NodeCatalogService | undefined);
79
+ constructor(logger: Logger, globalConfig: GlobalConfig, workflowService: WorkflowService, workflowFinderService: WorkflowFinderService, workflowRepository: WorkflowRepository, sharedWorkflowRepository: SharedWorkflowRepository, projectRepository: ProjectRepository, executionRepository: ExecutionRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, activeExecutions: ActiveExecutions, workflowRunner: WorkflowRunner, loadNodesAndCredentials: LoadNodesAndCredentials, nodeTypes: NodeTypes, instanceSettings: InstanceSettings, dataTableService: DataTableService, dataTableRepository: DataTableRepository, nodeResourceExplorerService: NodeResourceExplorerService, folderService: FolderService, projectService: ProjectService, tagService: TagService, sourceControlPreferencesService: SourceControlPreferencesService, settingsService: InstanceAiSettingsService, workflowHistoryService: WorkflowHistoryService, enterpriseWorkflowService: EnterpriseWorkflowService, license: License, executionPersistence: ExecutionPersistence, eventService: EventService, roleService: RoleService, telemetry: Telemetry, aiBuilderTemporaryWorkflowRepository: AiBuilderTemporaryWorkflowRepository, ssrfProtectionService: SsrfProtectionService, outboundHttp: OutboundHttp, aiGatewayService: AiGatewayService, workflowTemplatesService: WorkflowTemplatesService, nodeCatalogService?: NodeCatalogService | undefined, evaluationConfigService?: EvaluationConfigService | undefined);
76
80
  createContext(user: User, options?: {
77
81
  searchProxyConfig?: ServiceProxyConfig;
78
82
  pushRef?: string;
79
83
  threadId?: string;
80
84
  projectId?: string;
81
85
  credentialIdAllowlist?: string[];
86
+ agentId?: string;
82
87
  }): InstanceAiContext;
88
+ private getBuilderDelegateAdapter;
89
+ private getGatewayConfigOrNull;
90
+ private buildAiGatewayNodeMeta;
83
91
  private getTemplatesService;
92
+ private createWorkflowTemplateAdapter;
84
93
  private buildLicenseHints;
94
+ private trackGatewayAvailability;
85
95
  private assertInstanceNotReadOnly;
86
96
  private createProjectScopeHelpers;
87
97
  private createWorkflowAdapter;
88
98
  private createExecutionAdapter;
89
99
  private createCredentialAdapter;
100
+ private createEvaluationConfigAdapter;
90
101
  private createDataTableAdapter;
91
102
  private readonly webResearchCache;
92
103
  private readonly searchCache;
@@ -124,6 +135,81 @@ export type ResolveDataTableResult = {
124
135
  kind: 'ambiguous';
125
136
  candidates: DataTableRecord[];
126
137
  };
138
+ export declare function buildEvaluationConfigDto(input: UpsertEvaluationConfigInput): {
139
+ name: string;
140
+ startNodeName: string;
141
+ endNodeName: string;
142
+ metrics: ({
143
+ type: "expression";
144
+ id: string;
145
+ name: string;
146
+ config: {
147
+ expression: string;
148
+ outputType: "boolean" | "numeric";
149
+ };
150
+ } | {
151
+ type: "llm_judge";
152
+ id: string;
153
+ name: string;
154
+ config: {
155
+ provider: string;
156
+ credentialId: string;
157
+ model: string;
158
+ outputType: "boolean" | "numeric";
159
+ preset: "correctness" | "helpfulness";
160
+ inputs: {
161
+ actualAnswer: string;
162
+ userQuery?: string | undefined;
163
+ expectedAnswer?: string | undefined;
164
+ };
165
+ prompt?: string | undefined;
166
+ };
167
+ } | {
168
+ type: "string_similarity";
169
+ id: string;
170
+ name: string;
171
+ config: {
172
+ inputs: {
173
+ actualAnswer: string;
174
+ expectedAnswer: string;
175
+ };
176
+ };
177
+ } | {
178
+ type: "categorization";
179
+ id: string;
180
+ name: string;
181
+ config: {
182
+ inputs: {
183
+ actualAnswer: string;
184
+ expectedAnswer: string;
185
+ };
186
+ };
187
+ } | {
188
+ type: "tools_used";
189
+ id: string;
190
+ name: string;
191
+ config: {
192
+ inputs: {
193
+ expectedTools: string;
194
+ intermediateSteps: string;
195
+ };
196
+ };
197
+ })[];
198
+ } & ({
199
+ datasetSource: "data_table";
200
+ datasetRef: {
201
+ dataTableId: string;
202
+ };
203
+ } | {
204
+ datasetSource: "google_sheets";
205
+ datasetRef: {
206
+ credentialId: string;
207
+ spreadsheetId: string;
208
+ sheetName: string;
209
+ headerRow?: number | undefined;
210
+ };
211
+ });
212
+ export declare function evaluationConfigToSummary(config: EvaluationConfig): EvaluationConfigSummary;
127
213
  export declare function resolveDataTableByIdOrName(repository: DataTableIdOrNameRepository, logger: DataTableResolverLogger, idOrName: string, options?: {
128
214
  projectIdFilter?: string;
129
215
  accessFilter?: (id: string) => Promise<boolean>;
@@ -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;
@@ -863,7 +948,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
863
948
  };
864
949
  }
865
950
  createCredentialAdapter(user, boundProjectId, credentialIdAllowlist) {
866
- const { credentialsService, credentialsFinderService, loadNodesAndCredentials, aiGatewayService, } = this;
951
+ const { credentialsService, credentialsFinderService, loadNodesAndCredentials } = this;
952
+ const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
867
953
  const adapter = {
868
954
  async list(options) {
869
955
  if (boundProjectId) {
@@ -1108,13 +1194,12 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1108
1194
  }
1109
1195
  },
1110
1196
  async isAiGatewayCredentialType(credType) {
1111
- try {
1112
- const config = await aiGatewayService.getGatewayConfig();
1113
- return config.credentialTypes.includes(credType);
1114
- }
1115
- catch {
1116
- return false;
1117
- }
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 ?? [];
1118
1203
  },
1119
1204
  };
1120
1205
  if (!credentialIdAllowlist)
@@ -1125,6 +1210,46 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1125
1210
  list: async (options) => allowed.size === 0 ? [] : (await adapter.list(options)).filter((c) => allowed.has(c.id)),
1126
1211
  };
1127
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
+ }
1128
1253
  createDataTableAdapter(user, boundProjectId) {
1129
1254
  const { dataTableService, dataTableRepository } = this;
1130
1255
  const assertNotReadOnly = () => this.assertInstanceNotReadOnly('data tables');
@@ -1386,6 +1511,8 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1386
1511
  }
1387
1512
  createNodeAdapter(user) {
1388
1513
  const getNodes = async () => await this.getNodesFromCache();
1514
+ const getGatewayConfig = async () => await this.getGatewayConfigOrNull();
1515
+ const buildMeta = (config, nodeName) => this.buildAiGatewayNodeMeta(config, nodeName);
1389
1516
  const findNodeByVersion = (nodes, nodeType, version) => {
1390
1517
  if (version !== undefined) {
1391
1518
  const exact = nodes.find((n) => {
@@ -1402,24 +1529,34 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1402
1529
  };
1403
1530
  return {
1404
1531
  async listAvailable(options) {
1405
- const nodes = await getNodes();
1532
+ const [nodes, gatewayConfig] = await Promise.all([
1533
+ getNodes(),
1534
+ options?.n8nConnectOnly ? getGatewayConfig() : Promise.resolve(null),
1535
+ ]);
1406
1536
  let filtered = nodes;
1407
1537
  if (options?.query) {
1408
1538
  const q = options.query.toLowerCase();
1409
- filtered = nodes.filter((n) => n.displayName.toLowerCase().includes(q) ||
1539
+ filtered = filtered.filter((n) => n.displayName.toLowerCase().includes(q) ||
1410
1540
  n.name.toLowerCase().includes(q) ||
1411
1541
  n.description?.toLowerCase().includes(q));
1412
1542
  }
1413
- return filtered.map((n) => ({
1414
- name: n.name,
1415
- displayName: n.displayName,
1416
- description: n.description ?? '',
1417
- group: n.group ?? [],
1418
- version: Array.isArray(n.version) ? n.version[n.version.length - 1] : n.version,
1419
- }));
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;
1420
1557
  },
1421
1558
  async listSearchable() {
1422
- const nodes = await getNodes();
1559
+ const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
1423
1560
  const toStringArray = (value) => {
1424
1561
  if (typeof value === 'string')
1425
1562
  return value;
@@ -1434,6 +1571,9 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1434
1571
  inputs: toStringArray(n.inputs),
1435
1572
  outputs: toStringArray(n.outputs),
1436
1573
  };
1574
+ const meta = buildMeta(gatewayConfig, n.name);
1575
+ if (meta)
1576
+ result.aiGateway = meta;
1437
1577
  if (n.codex?.alias) {
1438
1578
  result.codex = { alias: n.codex.alias };
1439
1579
  }
@@ -1471,7 +1611,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1471
1611
  });
1472
1612
  },
1473
1613
  async getDescription(nodeType, version) {
1474
- const nodes = await getNodes();
1614
+ const [nodes, gatewayConfig] = await Promise.all([getNodes(), getGatewayConfig()]);
1475
1615
  let desc = version !== undefined
1476
1616
  ? nodes.find((n) => {
1477
1617
  if (n.name !== nodeType)
@@ -1487,6 +1627,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1487
1627
  if (!desc) {
1488
1628
  throw new Error(`Node type ${nodeType} not found`);
1489
1629
  }
1630
+ const meta = buildMeta(gatewayConfig, desc.name);
1490
1631
  return {
1491
1632
  name: desc.name,
1492
1633
  displayName: desc.displayName,
@@ -1521,6 +1662,7 @@ let InstanceAiAdapterService = class InstanceAiAdapterService {
1521
1662
  ...(desc.webhooks ? { webhooks: desc.webhooks } : {}),
1522
1663
  ...(desc.polling ? { polling: desc.polling } : {}),
1523
1664
  ...(desc.triggerPanel !== undefined ? { triggerPanel: desc.triggerPanel } : {}),
1665
+ ...(meta ? { aiGateway: meta } : {}),
1524
1666
  };
1525
1667
  },
1526
1668
  getNodeTypeDefinition: async (nodeType, options) => {
@@ -1845,10 +1987,60 @@ exports.InstanceAiAdapterService = InstanceAiAdapterService = __decorate([
1845
1987
  backend_network_1.SsrfProtectionService,
1846
1988
  backend_network_1.OutboundHttp,
1847
1989
  ai_gateway_service_1.AiGatewayService,
1848
- node_catalog_1.NodeCatalogService])
1990
+ workflow_templates_service_1.WorkflowTemplatesService,
1991
+ node_catalog_1.NodeCatalogService,
1992
+ evaluation_config_service_1.EvaluationConfigService])
1849
1993
  ], InstanceAiAdapterService);
1850
1994
  const MAX_RESULT_CHARS = 20_000;
1851
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
+ }
1852
2044
  async function resolveDataTableByIdOrName(repository, logger, idOrName, options) {
1853
2045
  const byId = await repository.findOneBy({ id: idOrName });
1854
2046
  if (byId) {
@@ -1910,6 +2102,42 @@ function wrapResultDataEntries(data) {
1910
2102
  }
1911
2103
  return wrapped;
1912
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
+ }
1913
2141
  async function extractExecutionResult(executionId, includeOutputData = true) {
1914
2142
  const execution = await di_1.Container.get(execution_persistence_1.ExecutionPersistence).findSingleExecution(executionId, {
1915
2143
  includeData: true,
@@ -1926,9 +2154,9 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
1926
2154
  ? 'waiting'
1927
2155
  : 'success';
1928
2156
  const resultData = {};
1929
- const executedNodeNames = Object.keys(execution.data?.resultData?.runData ?? {});
2157
+ const runData = execution.data?.resultData?.runData;
2158
+ const executedNodeNames = Object.keys(runData ?? {});
1930
2159
  if (includeOutputData) {
1931
- const runData = execution.data?.resultData?.runData;
1932
2160
  if (runData) {
1933
2161
  for (const [nodeName, nodeRuns] of Object.entries(runData)) {
1934
2162
  const lastRun = nodeRuns[nodeRuns.length - 1];
@@ -1946,6 +2174,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
1946
2174
  }
1947
2175
  const error = execution.data?.resultData?.error;
1948
2176
  const errorMessage = error ? formatExecutionError(error, includeOutputData) : undefined;
2177
+ const nodeErrors = extractNodeErrors(runData, includeOutputData, execution.workflowData?.nodes);
1949
2178
  return {
1950
2179
  executionId,
1951
2180
  status,
@@ -1953,6 +2182,7 @@ async function extractExecutionResult(executionId, includeOutputData = true) {
1953
2182
  ? wrapResultDataEntries(truncateResultData(resultData))
1954
2183
  : undefined,
1955
2184
  executedNodeNames: executedNodeNames.length > 0 ? executedNodeNames : undefined,
2185
+ nodeErrors: nodeErrors.length > 0 ? nodeErrors : undefined,
1956
2186
  lastNodeExecuted: execution.data?.resultData?.lastNodeExecuted,
1957
2187
  error: errorMessage,
1958
2188
  startedAt: execution.startedAt?.toISOString(),
@@ -2105,7 +2335,7 @@ async function extractExecutionDebugInfo(executionId, includeOutputData = true,
2105
2335
  nodeTrace.push({
2106
2336
  name: nodeName,
2107
2337
  type: nodeType,
2108
- status: lastRun.error !== undefined ? 'error' : 'success',
2338
+ status: isFailedNodeRun(lastRun) ? 'error' : 'success',
2109
2339
  startedAt: lastRun.startTime !== undefined ? new Date(lastRun.startTime).toISOString() : undefined,
2110
2340
  finishedAt: lastRun.startTime !== undefined && lastRun.executionTime !== undefined
2111
2341
  ? new Date(lastRun.startTime + lastRun.executionTime).toISOString()
@@ -2239,4 +2469,9 @@ function toWorkflowDetail(workflow, options) {
2239
2469
  settings: workflow.settings,
2240
2470
  };
2241
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
+ }
2242
2477
  //# sourceMappingURL=instance-ai.adapter.service.js.map