n8n 2.7.2 → 2.8.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 (326) hide show
  1. package/dist/active-workflow-manager.js +0 -1
  2. package/dist/active-workflow-manager.js.map +1 -1
  3. package/dist/auth/auth-handler.registry.d.ts +15 -0
  4. package/dist/auth/auth-handler.registry.js +87 -0
  5. package/dist/auth/auth-handler.registry.js.map +1 -0
  6. package/dist/auth/handlers/email.auth-handler.d.ts +19 -0
  7. package/dist/auth/handlers/email.auth-handler.js +52 -0
  8. package/dist/auth/handlers/email.auth-handler.js.map +1 -0
  9. package/dist/build.tsbuildinfo +1 -1
  10. package/dist/chat/chat-service.types.d.ts +2 -2
  11. package/dist/commands/base-command.js +5 -2
  12. package/dist/commands/base-command.js.map +1 -1
  13. package/dist/commands/start.js +17 -0
  14. package/dist/commands/start.js.map +1 -1
  15. package/dist/controllers/ai.controller.js +2 -0
  16. package/dist/controllers/ai.controller.js.map +1 -1
  17. package/dist/controllers/auth.controller.d.ts +8 -1
  18. package/dist/controllers/auth.controller.js +66 -85
  19. package/dist/controllers/auth.controller.js.map +1 -1
  20. package/dist/controllers/dynamic-node-parameters.controller.d.ts +2 -2
  21. package/dist/controllers/dynamic-node-parameters.controller.js +13 -13
  22. package/dist/controllers/dynamic-node-parameters.controller.js.map +1 -1
  23. package/dist/controllers/e2e.controller.d.ts +4 -0
  24. package/dist/controllers/e2e.controller.js +18 -0
  25. package/dist/controllers/e2e.controller.js.map +1 -1
  26. package/dist/controllers/me.controller.d.ts +2 -2
  27. package/dist/controllers/me.controller.js +1 -1
  28. package/dist/controllers/me.controller.js.map +1 -1
  29. package/dist/controllers/mfa.controller.js +11 -0
  30. package/dist/controllers/mfa.controller.js.map +1 -1
  31. package/dist/controllers/security-settings.controller.d.ts +18 -0
  32. package/dist/controllers/security-settings.controller.js +96 -0
  33. package/dist/controllers/security-settings.controller.js.map +1 -0
  34. package/dist/controllers/users.controller.js.map +1 -1
  35. package/dist/credentials/credentials-finder.service.d.ts +1 -5
  36. package/dist/credentials/credentials-finder.service.js +2 -2
  37. package/dist/credentials/credentials-finder.service.js.map +1 -1
  38. package/dist/credentials/credentials.controller.js +1 -1
  39. package/dist/credentials/credentials.controller.js.map +1 -1
  40. package/dist/credentials/credentials.service.d.ts +3 -2
  41. package/dist/credentials/credentials.service.js +32 -3
  42. package/dist/credentials/credentials.service.js.map +1 -1
  43. package/dist/credentials/validation.d.ts +4 -0
  44. package/dist/credentials/validation.js +44 -0
  45. package/dist/credentials/validation.js.map +1 -0
  46. package/dist/eventbus/event-message-classes/event-message-audit.d.ts +4 -0
  47. package/dist/eventbus/event-message-classes/event-message-audit.js.map +1 -1
  48. package/dist/eventbus/event-message-classes/index.d.ts +2 -2
  49. package/dist/eventbus/event-message-classes/index.js +7 -0
  50. package/dist/eventbus/event-message-classes/index.js.map +1 -1
  51. package/dist/events/maps/relay.event-map.d.ts +14 -0
  52. package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
  53. package/dist/events/relays/log-streaming.event-relay.js +60 -2
  54. package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
  55. package/dist/events/relays/telemetry.event-relay.d.ts +1 -0
  56. package/dist/events/relays/telemetry.event-relay.js +7 -0
  57. package/dist/events/relays/telemetry.event-relay.js.map +1 -1
  58. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +14 -0
  59. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  60. package/dist/modules/chat-hub/chat-hub-execution-store.service.d.ts +44 -0
  61. package/dist/modules/chat-hub/chat-hub-execution-store.service.js +159 -0
  62. package/dist/modules/chat-hub/chat-hub-execution-store.service.js.map +1 -0
  63. package/dist/modules/chat-hub/chat-hub-execution-watcher.service.d.ts +25 -0
  64. package/dist/modules/chat-hub/chat-hub-execution-watcher.service.js +205 -0
  65. package/dist/modules/chat-hub/chat-hub-execution-watcher.service.js.map +1 -0
  66. package/dist/modules/chat-hub/chat-hub-execution.service.d.ts +10 -12
  67. package/dist/modules/chat-hub/chat-hub-execution.service.js +93 -187
  68. package/dist/modules/chat-hub/chat-hub-execution.service.js.map +1 -1
  69. package/dist/modules/chat-hub/chat-hub-title.service.js +2 -2
  70. package/dist/modules/chat-hub/chat-hub-title.service.js.map +1 -1
  71. package/dist/modules/chat-hub/chat-hub-workflow.service.d.ts +1 -0
  72. package/dist/modules/chat-hub/chat-hub-workflow.service.js +101 -9
  73. package/dist/modules/chat-hub/chat-hub-workflow.service.js.map +1 -1
  74. package/dist/modules/chat-hub/chat-hub.constants.js +7 -3
  75. package/dist/modules/chat-hub/chat-hub.constants.js.map +1 -1
  76. package/dist/modules/chat-hub/chat-hub.models.service.d.ts +2 -2
  77. package/dist/modules/chat-hub/chat-hub.models.service.js.map +1 -1
  78. package/dist/modules/chat-hub/chat-hub.module.js +7 -0
  79. package/dist/modules/chat-hub/chat-hub.module.js.map +1 -1
  80. package/dist/modules/chat-hub/chat-hub.service.js +3 -6
  81. package/dist/modules/chat-hub/chat-hub.service.js.map +1 -1
  82. package/dist/modules/chat-hub/chat-stream-state.service.d.ts +4 -2
  83. package/dist/modules/chat-hub/chat-stream-state.service.js +11 -11
  84. package/dist/modules/chat-hub/chat-stream-state.service.js.map +1 -1
  85. package/dist/modules/chat-hub/chat-stream.service.d.ts +1 -1
  86. package/dist/modules/chat-hub/chat-stream.service.js +1 -1
  87. package/dist/modules/chat-hub/chat-stream.service.js.map +1 -1
  88. package/dist/modules/chat-hub/dto/chat-models-request.dto.d.ts +3 -2
  89. package/dist/modules/chat-hub/dto/chat-models-request.dto.js +1 -2
  90. package/dist/modules/chat-hub/dto/chat-models-request.dto.js.map +1 -1
  91. package/dist/modules/community-packages/community-node-types.service.d.ts +1 -0
  92. package/dist/modules/community-packages/community-node-types.service.js +30 -0
  93. package/dist/modules/community-packages/community-node-types.service.js.map +1 -1
  94. package/dist/modules/data-table/data-table.controller.d.ts +4 -1
  95. package/dist/modules/data-table/data-table.controller.js +23 -2
  96. package/dist/modules/data-table/data-table.controller.js.map +1 -1
  97. package/dist/modules/data-table/middleware/branch-write-access-middleware.d.ts +2 -0
  98. package/dist/modules/data-table/middleware/branch-write-access-middleware.js +15 -0
  99. package/dist/modules/data-table/middleware/branch-write-access-middleware.js.map +1 -0
  100. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-introspection-identifier.d.ts +2 -2
  101. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js +2 -2
  102. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js.map +1 -1
  103. package/dist/modules/external-secrets.ee/external-secrets-manager.ee.d.ts +16 -7
  104. package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js +63 -20
  105. package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js.map +1 -1
  106. package/dist/modules/external-secrets.ee/external-secrets-providers.ee.d.ts +2 -0
  107. package/dist/modules/external-secrets.ee/external-secrets-providers.ee.js +8 -0
  108. package/dist/modules/external-secrets.ee/external-secrets-providers.ee.js.map +1 -1
  109. package/dist/modules/external-secrets.ee/external-secrets.controller.ee.d.ts +7 -3
  110. package/dist/modules/external-secrets.ee/external-secrets.module.js +1 -1
  111. package/dist/modules/external-secrets.ee/external-secrets.module.js.map +1 -1
  112. package/dist/modules/external-secrets.ee/external-secrets.service.ee.d.ts +10 -5
  113. package/dist/modules/external-secrets.ee/external-secrets.service.ee.js +7 -45
  114. package/dist/modules/external-secrets.ee/external-secrets.service.ee.js.map +1 -1
  115. package/dist/modules/external-secrets.ee/redaction.service.ee.d.ts +7 -0
  116. package/dist/modules/external-secrets.ee/redaction.service.ee.js +56 -0
  117. package/dist/modules/external-secrets.ee/redaction.service.ee.js.map +1 -0
  118. package/dist/modules/external-secrets.ee/secrets-providers-completions.controller.ee.d.ts +15 -0
  119. package/dist/modules/external-secrets.ee/secrets-providers-completions.controller.ee.js +76 -0
  120. package/dist/modules/external-secrets.ee/secrets-providers-completions.controller.ee.js.map +1 -0
  121. package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.d.ts +10 -12
  122. package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js +21 -42
  123. package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js.map +1 -1
  124. package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.d.ts +16 -3
  125. package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js +60 -5
  126. package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js.map +1 -1
  127. package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.d.ts +8 -4
  128. package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js +20 -9
  129. package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js.map +1 -1
  130. package/dist/modules/external-secrets.ee/secrets-providers-types.controller.ee.d.ts +9 -5
  131. package/dist/modules/external-secrets.ee/secrets-providers-types.controller.ee.js +33 -13
  132. package/dist/modules/external-secrets.ee/secrets-providers-types.controller.ee.js.map +1 -1
  133. package/dist/modules/external-secrets.ee/secrets-providers.responses.ee.d.ts +9 -3
  134. package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +3 -3
  135. package/dist/modules/insights/insights.service.d.ts +3 -3
  136. package/dist/modules/ldap.ee/ldap.module.js +1 -4
  137. package/dist/modules/ldap.ee/ldap.module.js.map +1 -1
  138. package/dist/modules/ldap.ee/ldap.service.ee.d.ts +11 -4
  139. package/dist/modules/ldap.ee/ldap.service.ee.js +5 -2
  140. package/dist/modules/ldap.ee/ldap.service.ee.js.map +1 -1
  141. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.js +1 -1
  142. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.js.map +1 -1
  143. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.js +10 -1
  144. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.js.map +1 -1
  145. package/dist/modules/mcp/dto/approve-consent-request.dto.d.ts +3 -2
  146. package/dist/modules/mcp/dto/approve-consent-request.dto.js +2 -2
  147. package/dist/modules/mcp/dto/approve-consent-request.dto.js.map +1 -1
  148. package/dist/modules/mcp/dto/update-mcp-settings.dto.d.ts +3 -2
  149. package/dist/modules/mcp/dto/update-mcp-settings.dto.js +2 -2
  150. package/dist/modules/mcp/dto/update-mcp-settings.dto.js.map +1 -1
  151. package/dist/modules/mcp/dto/update-workflow-availability.dto.d.ts +3 -2
  152. package/dist/modules/mcp/dto/update-workflow-availability.dto.js +2 -2
  153. package/dist/modules/mcp/dto/update-workflow-availability.dto.js.map +1 -1
  154. package/dist/modules/mcp/mcp.service.d.ts +15 -2
  155. package/dist/modules/mcp/mcp.service.js +66 -3
  156. package/dist/modules/mcp/mcp.service.js.map +1 -1
  157. package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +3 -2
  158. package/dist/modules/mcp/tools/execute-workflow.tool.js +18 -9
  159. package/dist/modules/mcp/tools/execute-workflow.tool.js.map +1 -1
  160. package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
  161. package/dist/modules/mcp/tools/search-workflows.tool.js +1 -1
  162. package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
  163. package/dist/modules/quick-connect/handlers/quick-connect.handler.d.ts +11 -0
  164. package/dist/modules/quick-connect/handlers/quick-connect.handler.js +26 -0
  165. package/dist/modules/quick-connect/handlers/quick-connect.handler.js.map +1 -0
  166. package/dist/modules/quick-connect/handlers/sample.handler.d.ts +7 -0
  167. package/dist/modules/quick-connect/handlers/sample.handler.js +27 -0
  168. package/dist/modules/quick-connect/handlers/sample.handler.js.map +1 -0
  169. package/dist/modules/quick-connect/quick-connect.config.d.ts +95 -0
  170. package/dist/modules/quick-connect/quick-connect.config.js +48 -0
  171. package/dist/modules/quick-connect/quick-connect.config.js.map +1 -0
  172. package/dist/modules/quick-connect/quick-connect.controller.d.ts +10 -0
  173. package/dist/modules/quick-connect/quick-connect.controller.js +39 -0
  174. package/dist/modules/quick-connect/quick-connect.controller.js.map +1 -0
  175. package/dist/modules/quick-connect/quick-connect.errors.d.ts +5 -0
  176. package/dist/modules/quick-connect/quick-connect.errors.js +12 -0
  177. package/dist/modules/quick-connect/quick-connect.errors.js.map +1 -0
  178. package/dist/modules/quick-connect/quick-connect.module.d.ts +15 -0
  179. package/dist/modules/quick-connect/quick-connect.module.js +70 -0
  180. package/dist/modules/quick-connect/quick-connect.module.js.map +1 -0
  181. package/dist/modules/quick-connect/quick-connect.service.d.ts +17 -0
  182. package/dist/modules/quick-connect/quick-connect.service.js +87 -0
  183. package/dist/modules/quick-connect/quick-connect.service.js.map +1 -0
  184. package/dist/modules/source-control.ee/constants.d.ts +2 -0
  185. package/dist/modules/source-control.ee/constants.js +3 -1
  186. package/dist/modules/source-control.ee/constants.js.map +1 -1
  187. package/dist/modules/source-control.ee/source-control-export.service.ee.d.ts +6 -1
  188. package/dist/modules/source-control.ee/source-control-export.service.ee.js +136 -19
  189. package/dist/modules/source-control.ee/source-control-export.service.ee.js.map +1 -1
  190. package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +10 -2
  191. package/dist/modules/source-control.ee/source-control-helper.ee.js +81 -5
  192. package/dist/modules/source-control.ee/source-control-helper.ee.js.map +1 -1
  193. package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +15 -1
  194. package/dist/modules/source-control.ee/source-control-import.service.ee.js +209 -3
  195. package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
  196. package/dist/modules/source-control.ee/source-control-scoped.service.d.ts +2 -0
  197. package/dist/modules/source-control.ee/source-control-scoped.service.js +8 -0
  198. package/dist/modules/source-control.ee/source-control-scoped.service.js.map +1 -1
  199. package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +3 -0
  200. package/dist/modules/source-control.ee/source-control-status.service.ee.js +494 -328
  201. package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
  202. package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +2 -2
  203. package/dist/modules/source-control.ee/source-control.service.ee.d.ts +1 -1
  204. package/dist/modules/source-control.ee/source-control.service.ee.js +12 -1
  205. package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
  206. package/dist/modules/source-control.ee/types/exportable-data-table.d.ts +20 -0
  207. package/dist/modules/source-control.ee/types/exportable-data-table.js +3 -0
  208. package/dist/modules/source-control.ee/types/exportable-data-table.js.map +1 -0
  209. package/dist/modules/source-control.ee/types/source-control-get-status.d.ts +4 -0
  210. package/dist/modules/source-control.ee/types/source-control-get-status.js.map +1 -1
  211. package/dist/modules/sso-oidc/oidc.service.ee.js +7 -4
  212. package/dist/modules/sso-oidc/oidc.service.ee.js.map +1 -1
  213. package/dist/modules/sso-saml/saml.controller.ee.d.ts +10 -3
  214. package/dist/modules/workflow-index/workflow-index.service.d.ts +4 -2
  215. package/dist/modules/workflow-index/workflow-index.service.js +56 -29
  216. package/dist/modules/workflow-index/workflow-index.service.js.map +1 -1
  217. package/dist/oauth/oauth.service.d.ts +1 -0
  218. package/dist/oauth/oauth.service.js +24 -3
  219. package/dist/oauth/oauth.service.js.map +1 -1
  220. package/dist/oauth/validate-oauth-url.d.ts +1 -0
  221. package/dist/oauth/validate-oauth-url.js +21 -0
  222. package/dist/oauth/validate-oauth-url.js.map +1 -0
  223. package/dist/public-api/types.d.ts +5 -0
  224. package/dist/public-api/v1/handlers/credentials/credentials.handler.d.ts +15 -0
  225. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +43 -5
  226. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  227. package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +14 -2
  228. package/dist/public-api/v1/handlers/credentials/credentials.service.js +21 -2
  229. package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
  230. package/dist/public-api/v1/handlers/projects/projects.handler.d.ts +4 -0
  231. package/dist/public-api/v1/handlers/projects/projects.handler.js +57 -0
  232. package/dist/public-api/v1/handlers/projects/projects.handler.js.map +1 -1
  233. package/dist/public-api/v1/handlers/workflows/workflows.handler.js +15 -15
  234. package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
  235. package/dist/public-api/v1/openapi.yml +187 -31
  236. package/dist/push/abstract.push.js +2 -0
  237. package/dist/push/abstract.push.js.map +1 -1
  238. package/dist/scaling/constants.d.ts +1 -0
  239. package/dist/scaling/constants.js +2 -1
  240. package/dist/scaling/constants.js.map +1 -1
  241. package/dist/scaling/job-processor.d.ts +1 -0
  242. package/dist/scaling/job-processor.js +106 -0
  243. package/dist/scaling/job-processor.js.map +1 -1
  244. package/dist/scaling/pubsub/publisher.service.d.ts +4 -0
  245. package/dist/scaling/pubsub/publisher.service.js +14 -0
  246. package/dist/scaling/pubsub/publisher.service.js.map +1 -1
  247. package/dist/scaling/pubsub/subscriber.service.d.ts +10 -0
  248. package/dist/scaling/pubsub/subscriber.service.js +25 -0
  249. package/dist/scaling/pubsub/subscriber.service.js.map +1 -1
  250. package/dist/scaling/scaling.service.d.ts +1 -0
  251. package/dist/scaling/scaling.service.js +54 -0
  252. package/dist/scaling/scaling.service.js.map +1 -1
  253. package/dist/scaling/scaling.types.d.ts +20 -1
  254. package/dist/server.d.ts +1 -0
  255. package/dist/server.js +1 -0
  256. package/dist/server.js.map +1 -1
  257. package/dist/services/dynamic-node-parameters.service.d.ts +5 -3
  258. package/dist/services/dynamic-node-parameters.service.js +20 -3
  259. package/dist/services/dynamic-node-parameters.service.js.map +1 -1
  260. package/dist/services/folder.service.js +1 -1
  261. package/dist/services/folder.service.js.map +1 -1
  262. package/dist/services/frontend.service.d.ts +1 -0
  263. package/dist/services/frontend.service.js +9 -2
  264. package/dist/services/frontend.service.js.map +1 -1
  265. package/dist/services/rate-limit.service.d.ts +1 -1
  266. package/dist/services/rate-limit.service.js +1 -1
  267. package/dist/services/rate-limit.service.js.map +1 -1
  268. package/dist/services/role.service.d.ts +6 -3
  269. package/dist/services/role.service.js +39 -2
  270. package/dist/services/role.service.js.map +1 -1
  271. package/dist/services/security-settings.service.d.ts +20 -0
  272. package/dist/services/security-settings.service.js +68 -0
  273. package/dist/services/security-settings.service.js.map +1 -0
  274. package/dist/task-runners/task-broker/task-broker-ws-server.d.ts +4 -2
  275. package/dist/task-runners/task-broker/task-broker-ws-server.js +24 -2
  276. package/dist/task-runners/task-broker/task-broker-ws-server.js.map +1 -1
  277. package/dist/task-runners/task-broker/task-broker.service.d.ts +4 -0
  278. package/dist/task-runners/task-broker/task-broker.service.js +19 -0
  279. package/dist/task-runners/task-broker/task-broker.service.js.map +1 -1
  280. package/dist/telemetry/index.js +3 -0
  281. package/dist/telemetry/index.js.map +1 -1
  282. package/dist/webhooks/live-webhooks.js +2 -3
  283. package/dist/webhooks/live-webhooks.js.map +1 -1
  284. package/dist/webhooks/webhook-helpers.js +66 -7
  285. package/dist/webhooks/webhook-helpers.js.map +1 -1
  286. package/dist/webhooks/webhook.service.js +1 -2
  287. package/dist/webhooks/webhook.service.js.map +1 -1
  288. package/dist/workflow-runner.js +8 -3
  289. package/dist/workflow-runner.js.map +1 -1
  290. package/dist/workflows/workflow-finder.service.d.ts +2 -0
  291. package/dist/workflows/workflow-finder.service.js +22 -2
  292. package/dist/workflows/workflow-finder.service.js.map +1 -1
  293. package/dist/workflows/workflow-history/workflow-history-manager.d.ts +3 -1
  294. package/dist/workflows/workflow-history/workflow-history-manager.js +7 -3
  295. package/dist/workflows/workflow-history/workflow-history-manager.js.map +1 -1
  296. package/dist/workflows/workflow-history/workflow-history.controller.d.ts +6 -1
  297. package/dist/workflows/workflow-history/workflow-history.controller.js +24 -0
  298. package/dist/workflows/workflow-history/workflow-history.controller.js.map +1 -1
  299. package/dist/workflows/workflow-history/workflow-history.service.d.ts +7 -3
  300. package/dist/workflows/workflow-history/workflow-history.service.js +41 -4
  301. package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
  302. package/dist/workflows/workflow-sharing.service.d.ts +1 -1
  303. package/dist/workflows/workflow-sharing.service.js +2 -2
  304. package/dist/workflows/workflow-sharing.service.js.map +1 -1
  305. package/dist/workflows/workflow-validation.service.d.ts +4 -2
  306. package/dist/workflows/workflow-validation.service.js +93 -1
  307. package/dist/workflows/workflow-validation.service.js.map +1 -1
  308. package/dist/workflows/workflow.service.d.ts +13 -6
  309. package/dist/workflows/workflow.service.ee.js +11 -4
  310. package/dist/workflows/workflow.service.ee.js.map +1 -1
  311. package/dist/workflows/workflow.service.js +70 -47
  312. package/dist/workflows/workflow.service.js.map +1 -1
  313. package/dist/workflows/workflows.controller.d.ts +3 -3
  314. package/dist/workflows/workflows.controller.js +16 -8
  315. package/dist/workflows/workflows.controller.js.map +1 -1
  316. package/package.json +28 -23
  317. package/templates/form-trigger-completion.handlebars +1 -1
  318. package/dist/auth/index.d.ts +0 -1
  319. package/dist/auth/index.js +0 -18
  320. package/dist/auth/index.js.map +0 -1
  321. package/dist/auth/methods/email.d.ts +0 -2
  322. package/dist/auth/methods/email.js +0 -26
  323. package/dist/auth/methods/email.js.map +0 -1
  324. package/dist/modules/external-secrets.ee/secrets-providers-autocomplete.controller.ee.d.ts +0 -11
  325. package/dist/modules/external-secrets.ee/secrets-providers-autocomplete.controller.ee.js +0 -64
  326. package/dist/modules/external-secrets.ee/secrets-providers-autocomplete.controller.ee.js.map +0 -1
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ChatHubExecutionWatcherService = void 0;
13
+ const backend_common_1 = require("@n8n/backend-common");
14
+ const db_1 = require("@n8n/db");
15
+ const decorators_1 = require("@n8n/decorators");
16
+ const di_1 = require("@n8n/di");
17
+ const uuid_1 = require("uuid");
18
+ const chat_execution_manager_1 = require("../../chat/chat-execution-manager");
19
+ const chat_hub_execution_store_service_1 = require("./chat-hub-execution-store.service");
20
+ const chat_hub_execution_service_1 = require("./chat-hub-execution.service");
21
+ const chat_message_repository_1 = require("./chat-message.repository");
22
+ const chat_stream_service_1 = require("./chat-stream.service");
23
+ const utils_1 = require("../../chat/utils");
24
+ let ChatHubExecutionWatcherService = class ChatHubExecutionWatcherService {
25
+ constructor(logger, executionStore, messageRepository, chatHubExecutionService, executionRepository, chatStreamService, executionManager) {
26
+ this.logger = logger;
27
+ this.executionStore = executionStore;
28
+ this.messageRepository = messageRepository;
29
+ this.chatHubExecutionService = chatHubExecutionService;
30
+ this.executionRepository = executionRepository;
31
+ this.chatStreamService = chatStreamService;
32
+ this.executionManager = executionManager;
33
+ this.logger = this.logger.scoped('chat-hub');
34
+ }
35
+ async handleExecutionResumed(ctx) {
36
+ const { executionId } = ctx;
37
+ const context = await this.executionStore.get(executionId);
38
+ if (!context)
39
+ return;
40
+ if (!context.awaitingResume)
41
+ return;
42
+ this.logger.debug('Chat hub execution resumed, notifying frontend', { executionId });
43
+ await this.chatStreamService.startExecution(context.userId, context.sessionId);
44
+ if (context.createMessageOnResume) {
45
+ const newMessageId = (0, uuid_1.v4)();
46
+ await this.messageRepository.updateChatMessage(context.messageId, { status: 'success' });
47
+ await this.createNextMessage(context, newMessageId, executionId);
48
+ await this.executionStore.update(executionId, {
49
+ previousMessageId: context.messageId,
50
+ messageId: newMessageId,
51
+ createMessageOnResume: false,
52
+ awaitingResume: false,
53
+ });
54
+ await this.chatStreamService.startStream({
55
+ userId: context.userId,
56
+ sessionId: context.sessionId,
57
+ messageId: newMessageId,
58
+ previousMessageId: context.messageId,
59
+ retryOfMessageId: null,
60
+ executionId: parseInt(executionId, 10),
61
+ });
62
+ return;
63
+ }
64
+ await this.executionStore.update(executionId, { awaitingResume: false });
65
+ await this.chatStreamService.startStream({
66
+ userId: context.userId,
67
+ sessionId: context.sessionId,
68
+ messageId: context.messageId,
69
+ previousMessageId: context.previousMessageId,
70
+ retryOfMessageId: null,
71
+ executionId: parseInt(executionId, 10),
72
+ });
73
+ }
74
+ async handleWorkflowExecuteAfter(ctx) {
75
+ const { runData, executionId } = ctx;
76
+ const context = await this.executionStore.get(executionId);
77
+ if (!context)
78
+ return;
79
+ this.logger.debug('Handling workflow execution completion', { executionId });
80
+ if (!['success', 'waiting', 'canceled'].includes(runData.status)) {
81
+ const errorMessage = this.chatHubExecutionService.extractErrorMessage(runData) ??
82
+ 'Failed to generate a response';
83
+ await this.pushErrorResults(context, errorMessage);
84
+ await this.executionStore.remove(executionId);
85
+ return;
86
+ }
87
+ if (runData.status === 'canceled') {
88
+ await this.chatStreamService.endExecution(context.userId, context.sessionId, 'cancelled');
89
+ await this.executionStore.remove(executionId);
90
+ return;
91
+ }
92
+ const message = this.chatHubExecutionService.extractMessage(runData, context.responseMode);
93
+ if (runData.status === 'waiting') {
94
+ await this.handleWaitingExecution(context, executionId, message);
95
+ return;
96
+ }
97
+ if (runData.finished) {
98
+ await this.pushFinalResults(context, message);
99
+ await this.executionStore.remove(executionId);
100
+ }
101
+ }
102
+ async handleWaitingExecution(context, executionId, message) {
103
+ await this.messageRepository.updateChatMessage(context.messageId, {
104
+ content: message ?? '',
105
+ status: 'waiting',
106
+ });
107
+ if (message) {
108
+ await this.chatStreamService.sendChunk(context.sessionId, context.messageId, message);
109
+ }
110
+ await this.chatStreamService.endStream(context.sessionId, context.messageId, 'waiting');
111
+ await this.chatStreamService.endExecution(context.userId, context.sessionId, 'success');
112
+ if (context.responseMode === 'responseNodes') {
113
+ const execution = await this.executionRepository.findSingleExecution(executionId, {
114
+ includeData: true,
115
+ unflattenData: true,
116
+ });
117
+ if (execution) {
118
+ const lastNode = (0, utils_1.getLastNodeExecuted)(execution);
119
+ if (lastNode && (0, utils_1.shouldResumeImmediately)(lastNode)) {
120
+ await this.triggerAutoResume(context, execution);
121
+ return;
122
+ }
123
+ }
124
+ }
125
+ await this.executionStore.update(executionId, {
126
+ awaitingResume: true,
127
+ createMessageOnResume: true,
128
+ });
129
+ }
130
+ async triggerAutoResume(context, execution) {
131
+ this.logger.debug('Triggering auto-resume of execution', { executionId: execution.id });
132
+ await this.messageRepository.updateChatMessage(context.messageId, { status: 'success' });
133
+ const newMessageId = (0, uuid_1.v4)();
134
+ await this.createNextMessage(context, newMessageId, execution.id);
135
+ await this.executionStore.update(execution.id, {
136
+ previousMessageId: context.messageId,
137
+ messageId: newMessageId,
138
+ awaitingResume: true,
139
+ createMessageOnResume: false,
140
+ });
141
+ void this.executionManager.runWorkflow(execution, {
142
+ action: 'sendMessage',
143
+ chatInput: '',
144
+ sessionId: context.sessionId,
145
+ });
146
+ }
147
+ async createNextMessage(context, messageId, executionId) {
148
+ await this.messageRepository.createChatMessage({
149
+ id: messageId,
150
+ sessionId: context.sessionId,
151
+ previousMessageId: context.messageId,
152
+ executionId: parseInt(executionId, 10),
153
+ type: 'ai',
154
+ name: 'AI',
155
+ status: 'running',
156
+ content: '',
157
+ retryOfMessageId: null,
158
+ ...context.model,
159
+ });
160
+ }
161
+ async pushFinalResults(context, message) {
162
+ if (message) {
163
+ await this.chatStreamService.sendChunk(context.sessionId, context.messageId, message);
164
+ }
165
+ await this.chatStreamService.endStream(context.sessionId, context.messageId, 'success');
166
+ await this.chatStreamService.endExecution(context.userId, context.sessionId, 'success');
167
+ await this.messageRepository.updateChatMessage(context.messageId, {
168
+ content: message ?? '',
169
+ status: 'success',
170
+ });
171
+ }
172
+ async pushErrorResults(context, errorMessage) {
173
+ await this.chatStreamService.sendChunk(context.sessionId, context.messageId, errorMessage);
174
+ await this.chatStreamService.endStream(context.sessionId, context.messageId, 'error');
175
+ await this.chatStreamService.endExecution(context.userId, context.sessionId, 'error');
176
+ await this.messageRepository.updateChatMessage(context.messageId, {
177
+ content: errorMessage,
178
+ status: 'error',
179
+ });
180
+ }
181
+ };
182
+ exports.ChatHubExecutionWatcherService = ChatHubExecutionWatcherService;
183
+ __decorate([
184
+ (0, decorators_1.OnLifecycleEvent)('workflowExecuteResume'),
185
+ __metadata("design:type", Function),
186
+ __metadata("design:paramtypes", [Object]),
187
+ __metadata("design:returntype", Promise)
188
+ ], ChatHubExecutionWatcherService.prototype, "handleExecutionResumed", null);
189
+ __decorate([
190
+ (0, decorators_1.OnLifecycleEvent)('workflowExecuteAfter'),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", [Object]),
193
+ __metadata("design:returntype", Promise)
194
+ ], ChatHubExecutionWatcherService.prototype, "handleWorkflowExecuteAfter", null);
195
+ exports.ChatHubExecutionWatcherService = ChatHubExecutionWatcherService = __decorate([
196
+ (0, di_1.Service)(),
197
+ __metadata("design:paramtypes", [backend_common_1.Logger,
198
+ chat_hub_execution_store_service_1.ChatHubExecutionStore,
199
+ chat_message_repository_1.ChatHubMessageRepository,
200
+ chat_hub_execution_service_1.ChatHubExecutionService,
201
+ db_1.ExecutionRepository,
202
+ chat_stream_service_1.ChatStreamService,
203
+ chat_execution_manager_1.ChatExecutionManager])
204
+ ], ChatHubExecutionWatcherService);
205
+ //# sourceMappingURL=chat-hub-execution-watcher.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-hub-execution-watcher.service.js","sourceRoot":"","sources":["../../../src/modules/chat-hub/chat-hub-execution-watcher.service.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,14 @@ import { type ChatMessageId, type ChatSessionId, ChatHubConversationModel } from
2
2
  import { Logger } from '@n8n/backend-common';
3
3
  import { ExecutionRepository, IExecutionResponse, User } from '@n8n/db';
4
4
  import { InstanceSettings } from 'n8n-core';
5
- import { type IWorkflowBase, IRunExecutionData } from 'n8n-workflow';
5
+ import { type IWorkflowBase, IRunExecutionData, IRun } from 'n8n-workflow';
6
6
  import { ActiveExecutions } from '../../active-executions';
7
7
  import { ChatExecutionManager } from '../../chat/chat-execution-manager';
8
8
  import { ExecutionService } from '../../executions/execution.service';
9
9
  import { WorkflowExecutionService } from '../../workflows/workflow-execution.service';
10
+ import { ChatHubExecutionStore } from './chat-hub-execution-store.service';
10
11
  import { ChatHubWorkflowService } from './chat-hub-workflow.service';
11
- import { ChatTriggerResponseMode } from './chat-hub.types';
12
+ import type { NonStreamingResponseMode, ChatTriggerResponseMode } from './chat-hub.types';
12
13
  import { ChatHubMessageRepository } from './chat-message.repository';
13
14
  import { ChatStreamService } from './chat-stream.service';
14
15
  export declare class ChatHubExecutionService {
@@ -21,8 +22,9 @@ export declare class ChatHubExecutionService {
21
22
  private readonly instanceSettings;
22
23
  private readonly chatStreamService;
23
24
  private readonly chatHubWorkflowService;
25
+ private readonly chatHubExecutionStore;
24
26
  private readonly messageRepository;
25
- constructor(logger: Logger, executionService: ExecutionService, workflowExecutionService: WorkflowExecutionService, executionRepository: ExecutionRepository, executionManager: ChatExecutionManager, activeExecutions: ActiveExecutions, instanceSettings: InstanceSettings, chatStreamService: ChatStreamService, chatHubWorkflowService: ChatHubWorkflowService, messageRepository: ChatHubMessageRepository);
27
+ constructor(logger: Logger, executionService: ExecutionService, workflowExecutionService: WorkflowExecutionService, executionRepository: ExecutionRepository, executionManager: ChatExecutionManager, activeExecutions: ActiveExecutions, instanceSettings: InstanceSettings, chatStreamService: ChatStreamService, chatHubWorkflowService: ChatHubWorkflowService, chatHubExecutionStore: ChatHubExecutionStore, messageRepository: ChatHubMessageRepository);
26
28
  execute(user: User, workflowData: IWorkflowBase, executionData: IRunExecutionData): Promise<{
27
29
  executionId: string;
28
30
  }>;
@@ -30,19 +32,15 @@ export declare class ChatHubExecutionService {
30
32
  executeChatWorkflowWithCleanup(user: User, model: ChatHubConversationModel, workflowData: IWorkflowBase, executionData: IRunExecutionData, sessionId: ChatSessionId, previousMessageId: ChatMessageId, retryOfMessageId: ChatMessageId | null, responseMode: ChatTriggerResponseMode): Promise<void>;
31
33
  private executeChatWorkflow;
32
34
  private executeWithStreaming;
33
- private executeLastNode;
34
- resumeChatExecution(execution: IExecutionResponse, message: string, sessionId: ChatSessionId, user: User, previousMessageId: ChatMessageId, model: ChatHubConversationModel, responseMode: 'responseNodes'): Promise<void>;
35
- private resumeExecution;
35
+ private executeNonStreaming;
36
+ resumeChatExecution(execution: IExecutionResponse, message: string, sessionId: ChatSessionId, _user: User, previousMessageId: ChatMessageId, model: ChatHubConversationModel, _responseMode: 'responseNodes'): Promise<void>;
36
37
  waitForExecutionCompletion(executionId: string): Promise<void>;
37
38
  private waitForExecutionPoller;
38
39
  private waitForExecutionPromise;
39
40
  private waitForErrorDetails;
40
- getErrorMessage(execution: IExecutionResponse): string | undefined;
41
- getAIOutput(execution: IExecutionResponse, nodeName: string): string | undefined;
42
- private getMessageFromExecution;
43
- private getLastNodeExecutedName;
44
- private getNodeOutputs;
41
+ private createStreamAdapter;
42
+ extractErrorMessage(runData: IRun): string | undefined;
43
+ extractMessage(runData: IRun, responseMode: NonStreamingResponseMode): string | undefined;
45
44
  private getFirstOutputEntry;
46
45
  private extractMessageFromEntry;
47
- private createStreamAdapter;
48
46
  }
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ChatHubExecutionService = void 0;
13
+ const api_types_1 = require("@n8n/api-types");
13
14
  const backend_common_1 = require("@n8n/backend-common");
14
15
  const db_1 = require("@n8n/db");
15
16
  const di_1 = require("@n8n/di");
@@ -22,14 +23,14 @@ const execution_not_found_error_1 = require("../../errors/execution-not-found-er
22
23
  const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
23
24
  const execution_service_1 = require("../../executions/execution.service");
24
25
  const workflow_execution_service_1 = require("../../workflows/workflow-execution.service");
26
+ const chat_hub_execution_store_service_1 = require("./chat-hub-execution-store.service");
25
27
  const chat_hub_workflow_service_1 = require("./chat-hub-workflow.service");
26
28
  const chat_hub_constants_1 = require("./chat-hub.constants");
27
29
  const chat_message_repository_1 = require("./chat-message.repository");
28
30
  const chat_stream_service_1 = require("./chat-stream.service");
29
31
  const stream_capturer_1 = require("./stream-capturer");
30
- const utils_1 = require("../../chat/utils");
31
32
  let ChatHubExecutionService = class ChatHubExecutionService {
32
- constructor(logger, executionService, workflowExecutionService, executionRepository, executionManager, activeExecutions, instanceSettings, chatStreamService, chatHubWorkflowService, messageRepository) {
33
+ constructor(logger, executionService, workflowExecutionService, executionRepository, executionManager, activeExecutions, instanceSettings, chatStreamService, chatHubWorkflowService, chatHubExecutionStore, messageRepository) {
33
34
  this.logger = logger;
34
35
  this.executionService = executionService;
35
36
  this.workflowExecutionService = workflowExecutionService;
@@ -39,6 +40,7 @@ let ChatHubExecutionService = class ChatHubExecutionService {
39
40
  this.instanceSettings = instanceSettings;
40
41
  this.chatStreamService = chatStreamService;
41
42
  this.chatHubWorkflowService = chatHubWorkflowService;
43
+ this.chatHubExecutionStore = chatHubExecutionStore;
42
44
  this.messageRepository = messageRepository;
43
45
  this.logger = this.logger.scoped('chat-hub');
44
46
  }
@@ -49,8 +51,9 @@ let ChatHubExecutionService = class ChatHubExecutionService {
49
51
  return await this.executionService.stop(executionId, [workflowId]);
50
52
  }
51
53
  async executeChatWorkflowWithCleanup(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, responseMode) {
54
+ const executionMode = model.provider === 'n8n' ? 'webhook' : 'chat';
55
+ const { id: workflowId } = workflowData;
52
56
  try {
53
- const executionMode = model.provider === 'n8n' ? 'webhook' : 'chat';
54
57
  await this.executeChatWorkflow(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, executionMode, responseMode);
55
58
  }
56
59
  catch (error) {
@@ -71,7 +74,7 @@ let ChatHubExecutionService = class ChatHubExecutionService {
71
74
  }
72
75
  finally {
73
76
  if (model.provider !== 'n8n') {
74
- await this.chatHubWorkflowService.deleteChatWorkflow(workflowData.id);
77
+ await this.chatHubWorkflowService.deleteChatWorkflow(workflowId);
75
78
  }
76
79
  }
77
80
  }
@@ -81,7 +84,7 @@ let ChatHubExecutionService = class ChatHubExecutionService {
81
84
  throw new bad_request_error_1.BadRequestError(`Response mode "${responseMode}" is not supported yet.`);
82
85
  }
83
86
  if (responseMode === 'lastNode' || responseMode === 'responseNodes') {
84
- return await this.executeLastNode(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, executionMode, responseMode);
87
+ return await this.executeNonStreaming(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, executionMode, responseMode);
85
88
  }
86
89
  else if (responseMode === 'streaming') {
87
90
  return await this.executeWithStreaming(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, executionMode);
@@ -182,13 +185,25 @@ let ChatHubExecutionService = class ChatHubExecutionService {
182
185
  await this.chatStreamService.endExecution(user.id, sessionId, executionStatus);
183
186
  }
184
187
  }
185
- async executeLastNode(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, executionMode, responseMode) {
188
+ async executeNonStreaming(user, model, workflowData, executionData, sessionId, previousMessageId, retryOfMessageId, executionMode, responseMode) {
186
189
  const running = await this.workflowExecutionService.executeChatWorkflow(user, workflowData, executionData, undefined, false, executionMode);
187
- const messageId = (0, uuid_1.v4)();
188
190
  const executionId = running.executionId;
189
191
  if (!executionId) {
190
192
  throw new n8n_workflow_1.OperationalError('There was a problem starting the chat execution.');
191
193
  }
194
+ const messageId = (0, uuid_1.v4)();
195
+ await this.chatHubExecutionStore.register({
196
+ executionId,
197
+ sessionId,
198
+ userId: user.id,
199
+ messageId,
200
+ previousMessageId,
201
+ model,
202
+ responseMode,
203
+ awaitingResume: false,
204
+ createMessageOnResume: false,
205
+ workflowId: workflowData.id,
206
+ });
192
207
  await this.chatStreamService.startExecution(user.id, sessionId);
193
208
  await this.messageRepository.createAIMessage({
194
209
  id: messageId,
@@ -208,118 +223,28 @@ let ChatHubExecutionService = class ChatHubExecutionService {
208
223
  retryOfMessageId,
209
224
  executionId: parseInt(executionId, 10),
210
225
  });
211
- try {
212
- await this.waitForExecutionCompletion(executionId);
213
- const execution = await this.executionRepository.findSingleExecution(executionId, {
214
- includeData: true,
215
- unflattenData: true,
216
- });
217
- if (!execution) {
218
- throw new n8n_workflow_1.OperationalError('Chat execution not found after completion - make sure your instance is saving executions.');
219
- }
220
- if (!['success', 'waiting', 'canceled'].includes(execution.status)) {
221
- const errorMessage = this.getErrorMessage(execution) ?? 'Failed to generate a response';
222
- throw new n8n_workflow_1.OperationalError(errorMessage);
223
- }
224
- const message = this.getMessageFromExecution(execution, responseMode);
225
- const status = execution?.status === 'waiting' ? 'waiting' : 'success';
226
- if (message) {
227
- await this.chatStreamService.sendChunk(sessionId, messageId, message);
228
- }
229
- await this.messageRepository.updateChatMessage(messageId, {
230
- content: message ?? '',
231
- status,
232
- });
233
- await this.chatStreamService.endStream(sessionId, messageId, status);
234
- await this.chatStreamService.endExecution(user.id, sessionId, status === 'waiting' ? 'success' : status);
235
- if (status === 'waiting' && responseMode === 'responseNodes') {
236
- const lastNode = (0, utils_1.getLastNodeExecuted)(execution);
237
- if (lastNode && (0, utils_1.shouldResumeImmediately)(lastNode)) {
238
- this.logger.debug(`Resuming execution ${execution.id} immediately after wait in node ${lastNode.name}`);
239
- await this.resumeChatExecution(execution, '', sessionId, user, messageId, model, responseMode);
240
- }
241
- }
242
- }
243
- catch (e) {
244
- if (e instanceof n8n_workflow_1.ManualExecutionCancelledError) {
245
- await this.chatStreamService.endExecution(user.id, sessionId, 'cancelled');
246
- return;
247
- }
248
- const errorMessage = e instanceof Error ? e.message : 'Unknown error occurred during chat execution';
249
- await this.messageRepository.updateChatMessage(messageId, {
250
- content: errorMessage,
251
- status: 'error',
252
- });
253
- await this.chatStreamService.sendChunk(sessionId, messageId, errorMessage);
254
- await this.chatStreamService.endStream(sessionId, messageId, 'error');
255
- await this.chatStreamService.endExecution(user.id, sessionId, 'error');
256
- }
257
226
  }
258
- async resumeChatExecution(execution, message, sessionId, user, previousMessageId, model, responseMode) {
259
- let currentExecution = execution;
260
- let currentMessage = message;
261
- let currentPreviousMessageId = previousMessageId;
262
- while (true) {
263
- await this.resumeExecution(sessionId, currentExecution, currentMessage);
264
- const messageId = (0, uuid_1.v4)();
265
- await this.chatStreamService.startExecution(user.id, sessionId);
266
- await this.messageRepository.createAIMessage({
267
- id: messageId,
268
- content: '',
269
- sessionId,
270
- executionId: currentExecution.id,
271
- model,
272
- previousMessageId: currentPreviousMessageId,
273
- retryOfMessageId: null,
274
- status: 'running',
275
- });
276
- await this.chatStreamService.startStream({
277
- userId: user.id,
278
- sessionId,
279
- messageId,
280
- previousMessageId: currentPreviousMessageId,
281
- retryOfMessageId: null,
282
- executionId: parseInt(currentExecution.id, 10),
283
- });
284
- await this.waitForExecutionCompletion(currentExecution.id);
285
- const completed = await this.executionRepository.findSingleExecution(currentExecution.id, {
286
- includeData: true,
287
- unflattenData: true,
288
- });
289
- if (!completed) {
290
- throw new n8n_workflow_1.OperationalError('Chat execution not found after completion - make sure your instance is saving executions.');
291
- }
292
- if (!['success', 'waiting', 'canceled'].includes(completed.status)) {
293
- const errorMessage = this.getErrorMessage(completed) ?? 'Failed to generate a response';
294
- throw new n8n_workflow_1.OperationalError(errorMessage);
295
- }
296
- const reply = this.getMessageFromExecution(completed, responseMode);
297
- const status = completed?.status === 'waiting' ? 'waiting' : 'success';
298
- if (reply) {
299
- await this.chatStreamService.sendChunk(sessionId, messageId, reply);
300
- }
301
- await this.messageRepository.updateChatMessage(messageId, {
302
- content: reply ?? '',
303
- status,
304
- });
305
- await this.chatStreamService.endStream(sessionId, messageId, status);
306
- await this.chatStreamService.endExecution(user.id, sessionId, status === 'waiting' ? 'success' : status);
307
- const lastNode = (0, utils_1.getLastNodeExecuted)(completed);
308
- if (status === 'waiting' && lastNode && (0, utils_1.shouldResumeImmediately)(lastNode)) {
309
- this.logger.debug(`Resuming execution ${completed.id} immediately after wait in node ${lastNode.name}`);
310
- await this.messageRepository.updateChatMessage(messageId, {
311
- status: 'success',
312
- });
313
- currentMessage = '';
314
- currentExecution = completed;
315
- currentPreviousMessageId = messageId;
316
- }
317
- else {
318
- return;
319
- }
320
- }
321
- }
322
- async resumeExecution(sessionId, execution, message) {
227
+ async resumeChatExecution(execution, message, sessionId, _user, previousMessageId, model, _responseMode) {
228
+ await this.messageRepository.updateChatMessage(previousMessageId, {
229
+ status: 'success',
230
+ });
231
+ const messageId = (0, uuid_1.v4)();
232
+ await this.messageRepository.createAIMessage({
233
+ id: messageId,
234
+ content: '',
235
+ sessionId,
236
+ executionId: execution.id,
237
+ model,
238
+ previousMessageId,
239
+ retryOfMessageId: null,
240
+ status: 'running',
241
+ });
242
+ await this.chatHubExecutionStore.update(execution.id, {
243
+ previousMessageId,
244
+ messageId,
245
+ awaitingResume: true,
246
+ createMessageOnResume: false,
247
+ });
323
248
  await this.executionManager.runWorkflow(execution, {
324
249
  action: 'sendMessage',
325
250
  chatInput: message,
@@ -404,7 +329,7 @@ let ChatHubExecutionService = class ChatHubExecutionService {
404
329
  workflowId,
405
330
  ]);
406
331
  if (execution && chat_hub_constants_1.EXECUTION_FINISHED_STATUSES.includes(execution.status)) {
407
- errorText = this.getErrorMessage(execution);
332
+ errorText = this.extractErrorMessage(execution);
408
333
  break;
409
334
  }
410
335
  }
@@ -419,74 +344,6 @@ let ChatHubExecutionService = class ChatHubExecutionService {
419
344
  }
420
345
  return errorText;
421
346
  }
422
- getErrorMessage(execution) {
423
- if (execution.data.resultData.error) {
424
- return execution.data.resultData.error.description ?? execution.data.resultData.error.message;
425
- }
426
- return undefined;
427
- }
428
- getAIOutput(execution, nodeName) {
429
- const agent = execution.data.resultData.runData[nodeName];
430
- if (!agent || !Array.isArray(agent) || agent.length === 0)
431
- return undefined;
432
- const runIndex = agent.length - 1;
433
- const mainOutputs = agent[runIndex].data?.main;
434
- if (mainOutputs && Array.isArray(mainOutputs)) {
435
- for (const branch of mainOutputs) {
436
- if (branch && Array.isArray(branch) && branch.length > 0 && branch[0].json?.output) {
437
- if (typeof branch[0].json.output === 'string') {
438
- return branch[0].json.output;
439
- }
440
- }
441
- }
442
- }
443
- return undefined;
444
- }
445
- getMessageFromExecution(execution, responseMode) {
446
- const nodeName = this.getLastNodeExecutedName(execution);
447
- if (!nodeName)
448
- return undefined;
449
- const outputs = this.getNodeOutputs(execution, nodeName);
450
- const entry = this.getFirstOutputEntry(outputs);
451
- if (!entry)
452
- return undefined;
453
- const message = this.extractMessageFromEntry(entry, responseMode);
454
- if (typeof message === 'object' && message !== null) {
455
- return (0, n8n_workflow_1.jsonStringify)(message);
456
- }
457
- return message;
458
- }
459
- getLastNodeExecutedName(execution) {
460
- const lastNodeExecuted = execution.data.resultData.lastNodeExecuted;
461
- return typeof lastNodeExecuted === 'string' ? lastNodeExecuted : undefined;
462
- }
463
- getNodeOutputs(execution, nodeName) {
464
- const runData = execution.data.resultData.runData[nodeName];
465
- if (!runData || runData.length === 0)
466
- return [];
467
- const runIndex = runData.length - 1;
468
- const data = runData[runIndex]?.data;
469
- return data?.main ?? data?.[n8n_workflow_1.NodeConnectionTypes.AiTool] ?? [];
470
- }
471
- getFirstOutputEntry(outputs) {
472
- for (const branch of outputs) {
473
- if (!Array.isArray(branch) || branch.length === 0)
474
- continue;
475
- return branch[0];
476
- }
477
- return undefined;
478
- }
479
- extractMessageFromEntry(entry, responseMode) {
480
- if (responseMode === 'responseNodes') {
481
- return entry.sendMessage ?? '';
482
- }
483
- if (responseMode === 'lastNode') {
484
- const response = entry.json ?? {};
485
- const message = response.output ?? response.text ?? response.message ?? '';
486
- return typeof message === 'string' ? message : (0, n8n_workflow_1.jsonStringify)(message);
487
- }
488
- return undefined;
489
- }
490
347
  createStreamAdapter(aggregator) {
491
348
  let processingChain = Promise.resolve();
492
349
  const adapter = {
@@ -530,6 +387,54 @@ let ChatHubExecutionService = class ChatHubExecutionService {
530
387
  };
531
388
  return { adapter: adapter, waitForPendingOperations };
532
389
  }
390
+ extractErrorMessage(runData) {
391
+ if (runData.data.resultData.error) {
392
+ return runData.data.resultData.error.description ?? runData.data.resultData.error.message;
393
+ }
394
+ return undefined;
395
+ }
396
+ extractMessage(runData, responseMode) {
397
+ const lastNodeExecuted = runData.data.resultData.lastNodeExecuted;
398
+ if (typeof lastNodeExecuted !== 'string')
399
+ return undefined;
400
+ const nodeRunData = runData.data.resultData.runData[lastNodeExecuted];
401
+ if (!nodeRunData || nodeRunData.length === 0)
402
+ return undefined;
403
+ const runIndex = nodeRunData.length - 1;
404
+ const data = nodeRunData[runIndex]?.data;
405
+ const outputs = data?.main ?? data?.[n8n_workflow_1.NodeConnectionTypes.AiTool] ?? [];
406
+ const entry = this.getFirstOutputEntry(outputs);
407
+ if (!entry)
408
+ return undefined;
409
+ return this.extractMessageFromEntry(entry, responseMode);
410
+ }
411
+ getFirstOutputEntry(outputs) {
412
+ for (const branch of outputs) {
413
+ if (!Array.isArray(branch) || branch.length === 0)
414
+ continue;
415
+ return branch[0];
416
+ }
417
+ return undefined;
418
+ }
419
+ extractMessageFromEntry(entry, responseMode) {
420
+ if (responseMode === 'responseNodes') {
421
+ const sendMessage = entry.sendMessage;
422
+ if (typeof sendMessage === 'string') {
423
+ return sendMessage;
424
+ }
425
+ const result = api_types_1.chatHubMessageWithButtonsSchema.safeParse(sendMessage);
426
+ if (result.success) {
427
+ return (0, n8n_workflow_1.jsonStringify)(result.data);
428
+ }
429
+ return '';
430
+ }
431
+ if (responseMode === 'lastNode') {
432
+ const response = entry.json ?? {};
433
+ const message = response.output ?? response.text ?? response.message ?? '';
434
+ return typeof message === 'string' ? message : (0, n8n_workflow_1.jsonStringify)(message);
435
+ }
436
+ return undefined;
437
+ }
533
438
  };
534
439
  exports.ChatHubExecutionService = ChatHubExecutionService;
535
440
  exports.ChatHubExecutionService = ChatHubExecutionService = __decorate([
@@ -543,6 +448,7 @@ exports.ChatHubExecutionService = ChatHubExecutionService = __decorate([
543
448
  n8n_core_1.InstanceSettings,
544
449
  chat_stream_service_1.ChatStreamService,
545
450
  chat_hub_workflow_service_1.ChatHubWorkflowService,
451
+ chat_hub_execution_store_service_1.ChatHubExecutionStore,
546
452
  chat_message_repository_1.ChatHubMessageRepository])
547
453
  ], ChatHubExecutionService);
548
454
  //# sourceMappingURL=chat-hub-execution.service.js.map