n8n 2.19.2 → 2.20.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 (306) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/chat/chat-execution-manager.js +7 -1
  3. package/dist/chat/chat-execution-manager.js.map +1 -1
  4. package/dist/collaboration/collaboration.service.d.ts +1 -0
  5. package/dist/collaboration/collaboration.service.js +31 -0
  6. package/dist/collaboration/collaboration.service.js.map +1 -1
  7. package/dist/commands/execute.d.ts +2 -2
  8. package/dist/commands/export/credentials.d.ts +2 -2
  9. package/dist/commands/export/credentials.js +1 -1
  10. package/dist/commands/export/credentials.js.map +1 -1
  11. package/dist/commands/export/workflow.d.ts +4 -4
  12. package/dist/commands/import/credentials.d.ts +12 -2
  13. package/dist/commands/import/credentials.js +89 -11
  14. package/dist/commands/import/credentials.js.map +1 -1
  15. package/dist/commands/import/workflow.d.ts +2 -2
  16. package/dist/commands/ttwf/generate.d.ts +3 -3
  17. package/dist/controllers/e2e.controller.js +1 -1
  18. package/dist/controllers/e2e.controller.js.map +1 -1
  19. package/dist/controllers/oauth/oauth2-credential.controller.d.ts +6 -4
  20. package/dist/controllers/oauth/oauth2-credential.controller.js +12 -5
  21. package/dist/controllers/oauth/oauth2-credential.controller.js.map +1 -1
  22. package/dist/credentials/credentials.controller.js +1 -1
  23. package/dist/credentials/credentials.controller.js.map +1 -1
  24. package/dist/credentials/credentials.service.d.ts +2 -2
  25. package/dist/credentials/credentials.service.ee.js +2 -2
  26. package/dist/credentials/credentials.service.ee.js.map +1 -1
  27. package/dist/credentials/credentials.service.js +13 -16
  28. package/dist/credentials/credentials.service.js.map +1 -1
  29. package/dist/credentials/dynamic-credentials-proxy.js +1 -1
  30. package/dist/credentials/dynamic-credentials-proxy.js.map +1 -1
  31. package/dist/credentials-helper.d.ts +1 -0
  32. package/dist/credentials-helper.js +12 -4
  33. package/dist/credentials-helper.js.map +1 -1
  34. package/dist/credentials-overwrites.js +2 -2
  35. package/dist/credentials-overwrites.js.map +1 -1
  36. package/dist/evaluation.ee/test-runner/evaluation-metrics.ee.d.ts +5 -0
  37. package/dist/evaluation.ee/test-runner/evaluation-metrics.ee.js +22 -12
  38. package/dist/evaluation.ee/test-runner/evaluation-metrics.ee.js.map +1 -1
  39. package/dist/evaluation.ee/test-runner/test-runner.service.ee.d.ts +4 -2
  40. package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +152 -89
  41. package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
  42. package/dist/evaluation.ee/test-runs.controller.ee.d.ts +8 -2
  43. package/dist/evaluation.ee/test-runs.controller.ee.js +31 -5
  44. package/dist/evaluation.ee/test-runs.controller.ee.js.map +1 -1
  45. package/dist/eventbus/event-message-classes/index.d.ts +3 -2
  46. package/dist/eventbus/event-message-classes/index.js +11 -1
  47. package/dist/eventbus/event-message-classes/index.js.map +1 -1
  48. package/dist/eventbus/message-event-bus/message-event-bus.d.ts +5 -2
  49. package/dist/eventbus/message-event-bus/message-event-bus.js +101 -73
  50. package/dist/eventbus/message-event-bus/message-event-bus.js.map +1 -1
  51. package/dist/eventbus/message-event-bus-writer/message-event-bus-log-writer.d.ts +3 -0
  52. package/dist/eventbus/message-event-bus-writer/message-event-bus-log-writer.js +3 -1
  53. package/dist/eventbus/message-event-bus-writer/message-event-bus-log-writer.js.map +1 -1
  54. package/dist/eventbus/message-event-bus-writer/resolve-event-log-path.d.ts +12 -0
  55. package/dist/eventbus/message-event-bus-writer/resolve-event-log-path.js +34 -0
  56. package/dist/eventbus/message-event-bus-writer/resolve-event-log-path.js.map +1 -0
  57. package/dist/execution-lifecycle/execute-error-workflow.js +1 -1
  58. package/dist/execution-lifecycle/execute-error-workflow.js.map +1 -1
  59. package/dist/executions/execution-recovery.service.d.ts +1 -1
  60. package/dist/executions/execution-recovery.service.js +11 -6
  61. package/dist/executions/execution-recovery.service.js.map +1 -1
  62. package/dist/executions/execution.service.d.ts +7 -2
  63. package/dist/executions/execution.service.js +18 -1
  64. package/dist/executions/execution.service.js.map +1 -1
  65. package/dist/executions/executions.controller.d.ts +1 -3
  66. package/dist/executions/executions.controller.js +3 -17
  67. package/dist/executions/executions.controller.js.map +1 -1
  68. package/dist/instance-settings-loader/instance-settings-loader.service.d.ts +3 -1
  69. package/dist/instance-settings-loader/instance-settings-loader.service.js +6 -2
  70. package/dist/instance-settings-loader/instance-settings-loader.service.js.map +1 -1
  71. package/dist/instance-settings-loader/loaders/mcp-settings.loader.d.ts +10 -0
  72. package/dist/instance-settings-loader/loaders/mcp-settings.loader.js +42 -0
  73. package/dist/instance-settings-loader/loaders/mcp-settings.loader.js.map +1 -0
  74. package/dist/instance-settings-loader/loaders/sso.instance-settings-loader.js +9 -4
  75. package/dist/instance-settings-loader/loaders/sso.instance-settings-loader.js.map +1 -1
  76. package/dist/mfa/mfa.service.d.ts +2 -2
  77. package/dist/mfa/mfa.service.js +11 -10
  78. package/dist/mfa/mfa.service.js.map +1 -1
  79. package/dist/modules/chat-hub/chat-hub-extractor.js +1 -1
  80. package/dist/modules/chat-hub/chat-hub-extractor.js.map +1 -1
  81. package/dist/modules/chat-hub/chat-hub-workflow.service.d.ts +1 -1
  82. package/dist/modules/chat-hub/chat-hub-workflow.service.js +4 -4
  83. package/dist/modules/chat-hub/chat-hub-workflow.service.js.map +1 -1
  84. package/dist/modules/community-packages/community-node-types.service.js +3 -1
  85. package/dist/modules/community-packages/community-node-types.service.js.map +1 -1
  86. package/dist/modules/dynamic-credentials.ee/credential-resolvers/n8n-credential-resolver.js +2 -2
  87. package/dist/modules/dynamic-credentials.ee/credential-resolvers/n8n-credential-resolver.js.map +1 -1
  88. package/dist/modules/dynamic-credentials.ee/credential-resolvers/oauth-credential-resolver.js +2 -2
  89. package/dist/modules/dynamic-credentials.ee/credential-resolvers/oauth-credential-resolver.js.map +1 -1
  90. package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.js +2 -2
  91. package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.js.map +1 -1
  92. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js +2 -2
  93. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js.map +1 -1
  94. package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js +1 -1
  95. package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js.map +1 -1
  96. package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js +1 -1
  97. package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js.map +1 -1
  98. package/dist/modules/dynamic-credentials.ee/services/credential-resolver.service.js +14 -14
  99. package/dist/modules/dynamic-credentials.ee/services/credential-resolver.service.js.map +1 -1
  100. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
  101. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js.map +1 -1
  102. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +4 -4
  103. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
  104. package/dist/modules/encryption-key-manager/encryption-bootstrap.service.d.ts +6 -1
  105. package/dist/modules/encryption-key-manager/encryption-bootstrap.service.js +14 -2
  106. package/dist/modules/encryption-key-manager/encryption-bootstrap.service.js.map +1 -1
  107. package/dist/modules/encryption-key-manager/encryption-key.controller.js +1 -0
  108. package/dist/modules/encryption-key-manager/encryption-key.controller.js.map +1 -1
  109. package/dist/modules/encryption-key-manager/key-manager.service.d.ts +2 -1
  110. package/dist/modules/encryption-key-manager/key-manager.service.js +24 -5
  111. package/dist/modules/encryption-key-manager/key-manager.service.js.map +1 -1
  112. package/dist/modules/external-secrets.ee/constants.d.ts +1 -0
  113. package/dist/modules/external-secrets.ee/constants.js +2 -1
  114. package/dist/modules/external-secrets.ee/constants.js.map +1 -1
  115. package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js +4 -4
  116. package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js.map +1 -1
  117. package/dist/modules/external-secrets.ee/secrets-cache.service.d.ts +1 -0
  118. package/dist/modules/external-secrets.ee/secrets-cache.service.js +18 -1
  119. package/dist/modules/external-secrets.ee/secrets-cache.service.js.map +1 -1
  120. package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js +3 -3
  121. package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js.map +1 -1
  122. package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.d.ts +1 -1
  123. package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js +15 -13
  124. package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js.map +1 -1
  125. package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js +3 -3
  126. package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js.map +1 -1
  127. package/dist/modules/external-secrets.ee/settings-store.service.js +6 -6
  128. package/dist/modules/external-secrets.ee/settings-store.service.js.map +1 -1
  129. package/dist/modules/insights/insights-collection.service.js +7 -1
  130. package/dist/modules/insights/insights-collection.service.js.map +1 -1
  131. package/dist/modules/insights/insights-pruning.service.d.ts +2 -4
  132. package/dist/modules/insights/insights-pruning.service.js +13 -10
  133. package/dist/modules/insights/insights-pruning.service.js.map +1 -1
  134. package/dist/modules/insights/insights.config.js +2 -1
  135. package/dist/modules/insights/insights.config.js.map +1 -1
  136. package/dist/modules/insights/insights.constants.d.ts +2 -0
  137. package/dist/modules/insights/insights.constants.js +3 -1
  138. package/dist/modules/insights/insights.constants.js.map +1 -1
  139. package/dist/modules/insights/insights.service.js +1 -3
  140. package/dist/modules/insights/insights.service.js.map +1 -1
  141. package/dist/modules/instance-ai/compaction.service.d.ts +7 -2
  142. package/dist/modules/instance-ai/compaction.service.js +17 -17
  143. package/dist/modules/instance-ai/compaction.service.js.map +1 -1
  144. package/dist/modules/instance-ai/instance-ai-settings.service.js +4 -4
  145. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  146. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +38 -1
  147. package/dist/modules/instance-ai/instance-ai.adapter.service.js +179 -60
  148. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  149. package/dist/modules/instance-ai/instance-ai.controller.d.ts +2 -2
  150. package/dist/modules/instance-ai/instance-ai.controller.js +7 -17
  151. package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
  152. package/dist/modules/instance-ai/instance-ai.service.d.ts +15 -4
  153. package/dist/modules/instance-ai/instance-ai.service.js +489 -76
  154. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  155. package/dist/modules/instance-ai/storage/typeorm-memory-storage.js +11 -1
  156. package/dist/modules/instance-ai/storage/typeorm-memory-storage.js.map +1 -1
  157. package/dist/modules/instance-ai/web-research/fetch-and-extract.d.ts +3 -1
  158. package/dist/modules/instance-ai/web-research/fetch-and-extract.js +13 -11
  159. package/dist/modules/instance-ai/web-research/fetch-and-extract.js.map +1 -1
  160. package/dist/modules/instance-ai/web-research/index.d.ts +0 -1
  161. package/dist/modules/instance-ai/web-research/index.js +1 -3
  162. package/dist/modules/instance-ai/web-research/index.js.map +1 -1
  163. package/dist/modules/instance-registry/checks/check.service.d.ts +43 -0
  164. package/dist/modules/instance-registry/checks/check.service.js +248 -0
  165. package/dist/modules/instance-registry/checks/check.service.js.map +1 -0
  166. package/dist/modules/instance-registry/checks/hostid-clash.check.d.ts +8 -0
  167. package/dist/modules/instance-registry/checks/hostid-clash.check.js +68 -0
  168. package/dist/modules/instance-registry/checks/hostid-clash.check.js.map +1 -0
  169. package/dist/modules/instance-registry/checks/index.d.ts +4 -0
  170. package/dist/modules/instance-registry/checks/index.js +7 -0
  171. package/dist/modules/instance-registry/checks/index.js.map +1 -0
  172. package/dist/modules/instance-registry/checks/lifecycle.check.d.ts +8 -0
  173. package/dist/modules/instance-registry/checks/lifecycle.check.js +52 -0
  174. package/dist/modules/instance-registry/checks/lifecycle.check.js.map +1 -0
  175. package/dist/modules/instance-registry/checks/split-brain.check.d.ts +8 -0
  176. package/dist/modules/instance-registry/checks/split-brain.check.js +67 -0
  177. package/dist/modules/instance-registry/checks/split-brain.check.js.map +1 -0
  178. package/dist/modules/instance-registry/checks/version-mismatch.check.d.ts +8 -0
  179. package/dist/modules/instance-registry/checks/version-mismatch.check.js +55 -0
  180. package/dist/modules/instance-registry/checks/version-mismatch.check.js.map +1 -0
  181. package/dist/modules/instance-registry/instance-registry.controller.d.ts +3 -1
  182. package/dist/modules/instance-registry/instance-registry.controller.js +41 -5
  183. package/dist/modules/instance-registry/instance-registry.controller.js.map +1 -1
  184. package/dist/modules/instance-registry/instance-registry.module.js +3 -9
  185. package/dist/modules/instance-registry/instance-registry.module.js.map +1 -1
  186. package/dist/modules/ldap.ee/helpers.ee.js +1 -1
  187. package/dist/modules/ldap.ee/helpers.ee.js.map +1 -1
  188. package/dist/modules/ldap.ee/ldap.service.ee.js +2 -2
  189. package/dist/modules/ldap.ee/ldap.service.ee.js.map +1 -1
  190. package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +15 -0
  191. package/dist/modules/mcp/dto/update-workflows-availability.dto.js +14 -0
  192. package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -0
  193. package/dist/modules/mcp/mcp-oauth-service.d.ts +6 -0
  194. package/dist/modules/mcp/mcp-oauth-service.js +15 -3
  195. package/dist/modules/mcp/mcp-oauth-service.js.map +1 -1
  196. package/dist/modules/mcp/mcp-oauth-token.service.d.ts +1 -0
  197. package/dist/modules/mcp/mcp-oauth-token.service.js +3 -0
  198. package/dist/modules/mcp/mcp-oauth-token.service.js.map +1 -1
  199. package/dist/modules/mcp/mcp.controller.d.ts +2 -0
  200. package/dist/modules/mcp/mcp.controller.js +49 -11
  201. package/dist/modules/mcp/mcp.controller.js.map +1 -1
  202. package/dist/modules/mcp/mcp.errors.d.ts +6 -0
  203. package/dist/modules/mcp/mcp.errors.js +12 -1
  204. package/dist/modules/mcp/mcp.errors.js.map +1 -1
  205. package/dist/modules/mcp/mcp.module.d.ts +1 -0
  206. package/dist/modules/mcp/mcp.module.js +3 -1
  207. package/dist/modules/mcp/mcp.module.js.map +1 -1
  208. package/dist/modules/mcp/mcp.oauth-clients.controller.d.ts +2 -1
  209. package/dist/modules/mcp/mcp.oauth-clients.controller.js +10 -0
  210. package/dist/modules/mcp/mcp.oauth-clients.controller.js.map +1 -1
  211. package/dist/modules/mcp/mcp.oauth.controller.js +20 -1
  212. package/dist/modules/mcp/mcp.oauth.controller.js.map +1 -1
  213. package/dist/modules/mcp/mcp.service.js +3 -0
  214. package/dist/modules/mcp/mcp.service.js.map +1 -1
  215. package/dist/modules/mcp/mcp.settings.controller.d.ts +11 -12
  216. package/dist/modules/mcp/mcp.settings.controller.js +19 -50
  217. package/dist/modules/mcp/mcp.settings.controller.js.map +1 -1
  218. package/dist/modules/mcp/mcp.settings.service.d.ts +30 -2
  219. package/dist/modules/mcp/mcp.settings.service.js +165 -2
  220. package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
  221. package/dist/modules/mcp/tools/search-executions.tool.d.ts +16 -0
  222. package/dist/modules/mcp/tools/search-executions.tool.js +140 -0
  223. package/dist/modules/mcp/tools/search-executions.tool.js.map +1 -0
  224. package/dist/modules/mcp/tools/workflow-builder/get-workflow-node-types.tool.d.ts +2 -2
  225. package/dist/modules/oauth-jwe/oauth-jwe-decrypt.service.d.ts +7 -0
  226. package/dist/modules/oauth-jwe/oauth-jwe-decrypt.service.js +48 -0
  227. package/dist/modules/oauth-jwe/oauth-jwe-decrypt.service.js.map +1 -0
  228. package/dist/modules/oauth-jwe/oauth-jwe-key.service.d.ts +31 -0
  229. package/dist/modules/oauth-jwe/oauth-jwe-key.service.js +174 -0
  230. package/dist/modules/oauth-jwe/oauth-jwe-key.service.js.map +1 -0
  231. package/dist/modules/oauth-jwe/oauth-jwe.config.d.ts +3 -0
  232. package/dist/modules/oauth-jwe/oauth-jwe.config.js +27 -0
  233. package/dist/modules/oauth-jwe/oauth-jwe.config.js.map +1 -0
  234. package/dist/modules/oauth-jwe/oauth-jwe.constants.d.ts +9 -0
  235. package/dist/modules/oauth-jwe/oauth-jwe.constants.js +15 -0
  236. package/dist/modules/oauth-jwe/oauth-jwe.constants.js.map +1 -0
  237. package/dist/modules/oauth-jwe/oauth-jwe.controller.d.ts +10 -0
  238. package/dist/modules/oauth-jwe/oauth-jwe.controller.js +60 -0
  239. package/dist/modules/oauth-jwe/oauth-jwe.controller.js.map +1 -0
  240. package/dist/modules/oauth-jwe/oauth-jwe.module.d.ts +8 -0
  241. package/dist/modules/oauth-jwe/oauth-jwe.module.js +70 -0
  242. package/dist/modules/oauth-jwe/oauth-jwe.module.js.map +1 -0
  243. package/dist/modules/oauth-jwe/oauth-jwe.schemas.d.ts +131 -0
  244. package/dist/modules/oauth-jwe/oauth-jwe.schemas.js +34 -0
  245. package/dist/modules/oauth-jwe/oauth-jwe.schemas.js.map +1 -0
  246. package/dist/modules/oauth-jwe/oauth-jwe.utils.d.ts +4 -0
  247. package/dist/modules/oauth-jwe/oauth-jwe.utils.js +27 -0
  248. package/dist/modules/oauth-jwe/oauth-jwe.utils.js.map +1 -0
  249. package/dist/modules/source-control.ee/source-control-export.service.ee.js +1 -1
  250. package/dist/modules/source-control.ee/source-control-export.service.ee.js.map +1 -1
  251. package/dist/modules/source-control.ee/source-control-import.service.ee.js +6 -6
  252. package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
  253. package/dist/modules/source-control.ee/source-control-preferences.service.ee.js +6 -6
  254. package/dist/modules/source-control.ee/source-control-preferences.service.ee.js.map +1 -1
  255. package/dist/modules/sso-oidc/oidc.service.ee.js +2 -2
  256. package/dist/modules/sso-oidc/oidc.service.ee.js.map +1 -1
  257. package/dist/modules/sso-saml/saml.service.ee.js +6 -6
  258. package/dist/modules/sso-saml/saml.service.ee.js.map +1 -1
  259. package/dist/oauth/oauth-jwe-service.proxy.d.ts +9 -0
  260. package/dist/oauth/oauth-jwe-service.proxy.js +27 -0
  261. package/dist/oauth/oauth-jwe-service.proxy.js.map +1 -0
  262. package/dist/oauth/oauth.service.d.ts +2 -2
  263. package/dist/oauth/oauth.service.js +13 -12
  264. package/dist/oauth/oauth.service.js.map +1 -1
  265. package/dist/posthog/index.d.ts +2 -0
  266. package/dist/posthog/index.js +16 -0
  267. package/dist/posthog/index.js.map +1 -1
  268. package/dist/public-api/v1/handlers/credentials/credentials.service.js +2 -2
  269. package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
  270. package/dist/services/dynamic-node-parameters.service.d.ts +1 -0
  271. package/dist/services/dynamic-node-parameters.service.js +29 -12
  272. package/dist/services/dynamic-node-parameters.service.js.map +1 -1
  273. package/dist/services/export.service.js +2 -2
  274. package/dist/services/export.service.js.map +1 -1
  275. package/dist/services/frontend.service.js +18 -0
  276. package/dist/services/frontend.service.js.map +1 -1
  277. package/dist/services/import.service.d.ts +5 -1
  278. package/dist/services/import.service.js +62 -5
  279. package/dist/services/import.service.js.map +1 -1
  280. package/dist/services/redis-client.service.d.ts +6 -5
  281. package/dist/services/redis-client.service.js +19 -12
  282. package/dist/services/redis-client.service.js.map +1 -1
  283. package/dist/services/user.service.js +0 -9
  284. package/dist/services/user.service.js.map +1 -1
  285. package/dist/task-runners/task-broker/auth/task-broker-auth.service.d.ts +4 -4
  286. package/dist/task-runners/task-broker/auth/task-broker-auth.service.js +9 -8
  287. package/dist/task-runners/task-broker/auth/task-broker-auth.service.js.map +1 -1
  288. package/dist/task-runners/task-broker/task-broker-server.js +1 -1
  289. package/dist/task-runners/task-broker/task-broker-server.js.map +1 -1
  290. package/dist/webhooks/test-webhooks.js +16 -2
  291. package/dist/webhooks/test-webhooks.js.map +1 -1
  292. package/dist/workflow-execute-additional-data.js +4 -2
  293. package/dist/workflow-execute-additional-data.js.map +1 -1
  294. package/dist/workflows/workflow-finder.service.d.ts +2 -0
  295. package/dist/workflows/workflow-finder.service.js +12 -1
  296. package/dist/workflows/workflow-finder.service.js.map +1 -1
  297. package/dist/workflows/workflows.controller.d.ts +7 -2
  298. package/dist/workflows/workflows.controller.js +43 -10
  299. package/dist/workflows/workflows.controller.js.map +1 -1
  300. package/package.json +30 -28
  301. package/dist/modules/instance-ai/web-research/ssrf-guard.d.ts +0 -1
  302. package/dist/modules/instance-ai/web-research/ssrf-guard.js +0 -85
  303. package/dist/modules/instance-ai/web-research/ssrf-guard.js.map +0 -1
  304. package/dist/modules/mcp/dto/update-workflow-availability.dto.d.ts +0 -9
  305. package/dist/modules/mcp/dto/update-workflow-availability.dto.js +0 -11
  306. package/dist/modules/mcp/dto/update-workflow-availability.dto.js.map +0 -1
@@ -0,0 +1,174 @@
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.OAuthJweKeyService = void 0;
13
+ const backend_common_1 = require("@n8n/backend-common");
14
+ const db_1 = require("@n8n/db");
15
+ const di_1 = require("@n8n/di");
16
+ const typeorm_1 = require("@n8n/typeorm");
17
+ const utils_1 = require("@n8n/utils");
18
+ const jose_1 = require("jose");
19
+ const n8n_core_1 = require("n8n-core");
20
+ const n8n_workflow_1 = require("n8n-workflow");
21
+ const cache_service_1 = require("../../services/cache/cache.service");
22
+ const oauth_jwe_constants_1 = require("./oauth-jwe.constants");
23
+ let OAuthJweKeyService = class OAuthJweKeyService {
24
+ constructor(deploymentKeyRepository, cipher, cacheService, logger) {
25
+ this.deploymentKeyRepository = deploymentKeyRepository;
26
+ this.cipher = cipher;
27
+ this.cacheService = cacheService;
28
+ this.logger = logger;
29
+ this.logger = this.logger.scoped('oauth-jwe');
30
+ }
31
+ async initialize() {
32
+ await this.loadData();
33
+ }
34
+ async getKeyPair(algorithm = oauth_jwe_constants_1.JWE_KEY_ALGORITHMS[0]) {
35
+ const entry = await this.findEntry(algorithm);
36
+ return await this.deriveKeyPair(entry);
37
+ }
38
+ async getPublicJwk(algorithm = oauth_jwe_constants_1.JWE_KEY_ALGORITHMS[0]) {
39
+ const { publicJwk } = await this.getKeyPair(algorithm);
40
+ return publicJwk;
41
+ }
42
+ async getPublicJwks() {
43
+ const data = await this.loadData();
44
+ return await Promise.all(data.map(async (entry) => (await this.deriveKeyPair(entry)).publicJwk));
45
+ }
46
+ async findEntry(algorithm) {
47
+ const data = await this.loadData();
48
+ const entry = data.find((e) => e.algorithm === algorithm);
49
+ if (!entry) {
50
+ throw new n8n_workflow_1.UnexpectedError(`No active OAuth JWE key found for algorithm "${algorithm}"`);
51
+ }
52
+ return entry;
53
+ }
54
+ async loadData() {
55
+ const data = await this.cacheService.get(oauth_jwe_constants_1.JWE_KEY_CACHE_KEY, {
56
+ refreshFn: async () => await this.loadOrGenerate(),
57
+ });
58
+ if (!data || data.length === 0) {
59
+ throw new n8n_workflow_1.UnexpectedError('OAuth JWE key pair unavailable');
60
+ }
61
+ return data;
62
+ }
63
+ async deriveKeyPair(entry) {
64
+ const decryptedPrivate = this.cipher.decryptWithInstanceKey(entry.encryptedPrivateJwk);
65
+ const privateJwk = (0, n8n_workflow_1.jsonParse)(decryptedPrivate, {
66
+ errorMessage: 'Failed to parse OAuth JWE private key',
67
+ });
68
+ const publicJwk = toPublicJwk(privateJwk, entry.algorithm);
69
+ const [publicKey, privateKey] = await Promise.all([
70
+ (0, jose_1.importJWK)(publicJwk, entry.algorithm),
71
+ (0, jose_1.importJWK)(privateJwk, entry.algorithm),
72
+ ]);
73
+ return {
74
+ algorithm: entry.algorithm,
75
+ publicKey: publicKey,
76
+ privateKey: privateKey,
77
+ publicJwk,
78
+ kid: entry.kid,
79
+ };
80
+ }
81
+ async loadOrGenerate() {
82
+ const entries = [];
83
+ for (const algorithm of oauth_jwe_constants_1.JWE_KEY_ALGORITHMS) {
84
+ let entry = await this.readActiveEntry(algorithm);
85
+ if (!entry) {
86
+ await this.generateAndPersist(algorithm);
87
+ entry = await this.readActiveEntry(algorithm);
88
+ }
89
+ if (!entry) {
90
+ throw new n8n_workflow_1.UnexpectedError(`OAuth JWE key for algorithm "${algorithm}" not found after generation`);
91
+ }
92
+ entries.push(entry);
93
+ }
94
+ return entries;
95
+ }
96
+ async readActiveEntry(algorithm) {
97
+ const privateRow = await this.deploymentKeyRepository.findOne({
98
+ where: {
99
+ type: oauth_jwe_constants_1.JWE_PRIVATE_KEY_TYPE,
100
+ algorithm,
101
+ status: 'active',
102
+ },
103
+ });
104
+ if (!privateRow)
105
+ return null;
106
+ const decryptedPrivate = this.cipher.decryptWithInstanceKey(privateRow.value);
107
+ const privateJwk = (0, n8n_workflow_1.jsonParse)(decryptedPrivate, {
108
+ errorMessage: 'Failed to parse OAuth JWE private key',
109
+ });
110
+ if (!privateJwk.kid) {
111
+ throw new n8n_workflow_1.UnexpectedError(`OAuth JWE private key for "${algorithm}" is missing a kid`);
112
+ }
113
+ if (privateJwk.kid !== privateRow.id) {
114
+ throw new n8n_workflow_1.UnexpectedError(`OAuth JWE private key for "${algorithm}" has a kid that does not match its row id`);
115
+ }
116
+ return {
117
+ algorithm,
118
+ encryptedPrivateJwk: privateRow.value,
119
+ kid: privateRow.id,
120
+ };
121
+ }
122
+ async generateAndPersist(algorithm) {
123
+ const { privateKey } = await (0, jose_1.generateKeyPair)(algorithm, { extractable: true });
124
+ const id = (0, utils_1.generateNanoId)();
125
+ const privateJwk = {
126
+ ...(await (0, jose_1.exportJWK)(privateKey)),
127
+ kid: id,
128
+ alg: algorithm,
129
+ use: oauth_jwe_constants_1.JWE_KEY_USE,
130
+ };
131
+ const encryptedPrivate = this.cipher.encryptWithInstanceKey(JSON.stringify(privateJwk));
132
+ try {
133
+ await this.deploymentKeyRepository.insert({
134
+ id,
135
+ type: oauth_jwe_constants_1.JWE_PRIVATE_KEY_TYPE,
136
+ value: encryptedPrivate,
137
+ algorithm,
138
+ status: 'active',
139
+ });
140
+ this.logger.info('Generated new instance OAuth JWE key pair', { algorithm, kid: id });
141
+ }
142
+ catch (error) {
143
+ if (!isUniqueConstraintViolation(error))
144
+ throw error;
145
+ this.logger.debug('OAuth JWE key insert raced with another main; re-reading winner', error instanceof Error ? { algorithm, message: error.message } : { algorithm });
146
+ }
147
+ }
148
+ };
149
+ exports.OAuthJweKeyService = OAuthJweKeyService;
150
+ exports.OAuthJweKeyService = OAuthJweKeyService = __decorate([
151
+ (0, di_1.Service)(),
152
+ __metadata("design:paramtypes", [db_1.DeploymentKeyRepository,
153
+ n8n_core_1.Cipher,
154
+ cache_service_1.CacheService,
155
+ backend_common_1.Logger])
156
+ ], OAuthJweKeyService);
157
+ const PUBLIC_JWK_FIELDS = {
158
+ 'RSA-OAEP-256': ['kty', 'kid', 'alg', 'use', 'n', 'e'],
159
+ };
160
+ function toPublicJwk(privateJwk, algorithm) {
161
+ const allowed = PUBLIC_JWK_FIELDS[algorithm];
162
+ const entries = allowed
163
+ .filter((field) => privateJwk[field] !== undefined)
164
+ .map((field) => [field, privateJwk[field]]);
165
+ return Object.fromEntries(entries);
166
+ }
167
+ function isUniqueConstraintViolation(error) {
168
+ if (!(error instanceof typeorm_1.QueryFailedError))
169
+ return false;
170
+ const driverError = error.driverError;
171
+ const code = driverError?.code;
172
+ return code === '23505' || code === 'SQLITE_CONSTRAINT_UNIQUE';
173
+ }
174
+ //# sourceMappingURL=oauth-jwe-key.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe-key.service.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe-key.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class OAuthJweConfig {
2
+ rateLimitJwksPerMinute: number;
3
+ }
@@ -0,0 +1,27 @@
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.OAuthJweConfig = void 0;
13
+ const config_1 = require("@n8n/config");
14
+ let OAuthJweConfig = class OAuthJweConfig {
15
+ constructor() {
16
+ this.rateLimitJwksPerMinute = 60;
17
+ }
18
+ };
19
+ exports.OAuthJweConfig = OAuthJweConfig;
20
+ __decorate([
21
+ (0, config_1.Env)('N8N_OAUTH_JWE_JWKS_PER_MINUTE'),
22
+ __metadata("design:type", Number)
23
+ ], OAuthJweConfig.prototype, "rateLimitJwksPerMinute", void 0);
24
+ exports.OAuthJweConfig = OAuthJweConfig = __decorate([
25
+ config_1.Config
26
+ ], OAuthJweConfig);
27
+ //# sourceMappingURL=oauth-jwe.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe.config.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAGnC,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAGN,2BAAsB,GAAW,EAAE,CAAC;IACrC,CAAC;CAAA,CAAA;AAJY,wCAAc;AAG1B;IADC,IAAA,YAAG,EAAC,+BAA+B,CAAC;;8DACD;yBAHxB,cAAc;IAD1B,eAAM;GACM,cAAc,CAI1B"}
@@ -0,0 +1,9 @@
1
+ export declare const JWE_PRIVATE_KEY_TYPE = "jwe.private-key";
2
+ export declare const JWE_RSA_ALGORITHMS: readonly ["RSA-OAEP-256"];
3
+ export type JweRsaAlgorithm = (typeof JWE_RSA_ALGORITHMS)[number];
4
+ export declare const JWE_EC_ALGORITHMS: readonly ["ECDH-ES", "ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"];
5
+ export type JweEcAlgorithm = (typeof JWE_EC_ALGORITHMS)[number];
6
+ export declare const JWE_KEY_ALGORITHMS: readonly ["RSA-OAEP-256"];
7
+ export type JweKeyAlgorithm = (typeof JWE_KEY_ALGORITHMS)[number];
8
+ export declare const JWE_KEY_USE = "enc";
9
+ export declare const JWE_KEY_CACHE_KEY = "jwe:key-pair";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JWE_KEY_CACHE_KEY = exports.JWE_KEY_USE = exports.JWE_KEY_ALGORITHMS = exports.JWE_EC_ALGORITHMS = exports.JWE_RSA_ALGORITHMS = exports.JWE_PRIVATE_KEY_TYPE = void 0;
4
+ exports.JWE_PRIVATE_KEY_TYPE = 'jwe.private-key';
5
+ exports.JWE_RSA_ALGORITHMS = ['RSA-OAEP-256'];
6
+ exports.JWE_EC_ALGORITHMS = [
7
+ 'ECDH-ES',
8
+ 'ECDH-ES+A128KW',
9
+ 'ECDH-ES+A192KW',
10
+ 'ECDH-ES+A256KW',
11
+ ];
12
+ exports.JWE_KEY_ALGORITHMS = ['RSA-OAEP-256'];
13
+ exports.JWE_KEY_USE = 'enc';
14
+ exports.JWE_KEY_CACHE_KEY = 'jwe:key-pair';
15
+ //# sourceMappingURL=oauth-jwe.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe.constants.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,iBAAiB,CAAC;AAMzC,QAAA,kBAAkB,GAAG,CAAC,cAAc,CAAU,CAAC;AAQ/C,QAAA,iBAAiB,GAAG;IAChC,SAAS;IACT,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACP,CAAC;AAUE,QAAA,kBAAkB,GAAG,CAAC,cAAc,CAAU,CAAC;AAG/C,QAAA,WAAW,GAAG,KAAK,CAAC;AACpB,QAAA,iBAAiB,GAAG,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from '@n8n/backend-common';
2
+ import type { Response } from 'express';
3
+ import { AuthlessRequest } from '../../requests';
4
+ import { OAuthJweKeyService } from './oauth-jwe-key.service';
5
+ export declare class OAuthJweController {
6
+ private readonly jweKeyService;
7
+ private readonly logger;
8
+ constructor(jweKeyService: OAuthJweKeyService, logger: Logger);
9
+ getKeys(_req: AuthlessRequest, res: Response): Promise<void>;
10
+ }
@@ -0,0 +1,60 @@
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.OAuthJweController = void 0;
13
+ const backend_common_1 = require("@n8n/backend-common");
14
+ const constants_1 = require("@n8n/constants");
15
+ const decorators_1 = require("@n8n/decorators");
16
+ const di_1 = require("@n8n/di");
17
+ const oauth_jwe_key_service_1 = require("./oauth-jwe-key.service");
18
+ const oauth_jwe_config_1 = require("./oauth-jwe.config");
19
+ const oauth_jwe_schemas_1 = require("./oauth-jwe.schemas");
20
+ const configService = di_1.Container.get(oauth_jwe_config_1.OAuthJweConfig);
21
+ let OAuthJweController = class OAuthJweController {
22
+ constructor(jweKeyService, logger) {
23
+ this.jweKeyService = jweKeyService;
24
+ this.logger = logger;
25
+ }
26
+ async getKeys(_req, res) {
27
+ const jwks = await this.jweKeyService.getPublicJwks();
28
+ const keys = jwks
29
+ .map((key) => oauth_jwe_schemas_1.PublicJweJwkSchema.safeParse(key))
30
+ .filter((result) => {
31
+ if (!result.success) {
32
+ this.logger.warn('Failed to parse public JWK', { error: result.error });
33
+ }
34
+ return result.success;
35
+ })
36
+ .map((result) => result.data);
37
+ const response = { keys };
38
+ res.setHeader('Cache-Control', 'public, max-age=3600, must-revalidate');
39
+ res.json(response);
40
+ }
41
+ };
42
+ exports.OAuthJweController = OAuthJweController;
43
+ __decorate([
44
+ (0, decorators_1.Get)('/jwks.json', {
45
+ skipAuth: true,
46
+ ipRateLimit: {
47
+ limit: configService.rateLimitJwksPerMinute,
48
+ windowMs: 1 * constants_1.Time.minutes.toMilliseconds,
49
+ },
50
+ }),
51
+ __metadata("design:type", Function),
52
+ __metadata("design:paramtypes", [Object, Object]),
53
+ __metadata("design:returntype", Promise)
54
+ ], OAuthJweController.prototype, "getKeys", null);
55
+ exports.OAuthJweController = OAuthJweController = __decorate([
56
+ (0, decorators_1.RestController)('/.well-known'),
57
+ __metadata("design:paramtypes", [oauth_jwe_key_service_1.OAuthJweKeyService,
58
+ backend_common_1.Logger])
59
+ ], OAuthJweController);
60
+ //# sourceMappingURL=oauth-jwe.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe.controller.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,8CAAsC;AACtC,gDAAsD;AACtD,gCAAoC;AAKpC,mEAA6D;AAC7D,yDAAoD;AACpD,2DAA4E;AAE5E,MAAM,aAAa,GAAG,cAAS,CAAC,GAAG,CAAC,iCAAc,CAAC,CAAC;AAG7C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC9B,YACkB,aAAiC,EACjC,MAAc;QADd,kBAAa,GAAb,aAAa,CAAoB;QACjC,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IASE,AAAN,KAAK,CAAC,OAAO,CAAC,IAAqB,EAAE,GAAa;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QAEtD,MAAM,IAAI,GAAG,IAAI;aACf,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,sCAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC/C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAiB,EAAE,IAAI,EAAE,CAAC;QAExC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,uCAAuC,CAAC,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;CACD,CAAA;AA/BY,gDAAkB;AAaxB;IAPL,IAAA,gBAAG,EAAC,YAAY,EAAE;QAClB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE;YACZ,KAAK,EAAE,aAAa,CAAC,sBAAsB;YAC3C,QAAQ,EAAE,CAAC,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc;SACzC;KACD,CAAC;;;;iDAkBD;6BA9BW,kBAAkB;IAD9B,IAAA,2BAAc,EAAC,cAAc,CAAC;qCAGG,0CAAkB;QACzB,uBAAM;GAHpB,kBAAkB,CA+B9B"}
@@ -0,0 +1,8 @@
1
+ import type { ModuleInterface } from '@n8n/decorators';
2
+ import { OAuthJweServiceProxy } from '../../oauth/oauth-jwe-service.proxy';
3
+ export declare class OAuthJweModule implements ModuleInterface {
4
+ init(): Promise<void>;
5
+ context(): Promise<{
6
+ oauthJweProxyProvider: OAuthJweServiceProxy;
7
+ }>;
8
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.OAuthJweModule = void 0;
43
+ const decorators_1 = require("@n8n/decorators");
44
+ const di_1 = require("@n8n/di");
45
+ const n8n_core_1 = require("n8n-core");
46
+ const oauth_jwe_service_proxy_1 = require("../../oauth/oauth-jwe-service.proxy");
47
+ function isFeatureFlagEnabled() {
48
+ return process.env.N8N_ENV_FEAT_OAUTH2_JWE === 'true';
49
+ }
50
+ let OAuthJweModule = class OAuthJweModule {
51
+ async init() {
52
+ if (!isFeatureFlagEnabled())
53
+ return;
54
+ const { OAuthJweDecryptService } = await Promise.resolve().then(() => __importStar(require('./oauth-jwe-decrypt.service')));
55
+ di_1.Container.get(oauth_jwe_service_proxy_1.OAuthJweServiceProxy).setHandler(di_1.Container.get(OAuthJweDecryptService));
56
+ if (di_1.Container.get(n8n_core_1.InstanceSettings).instanceType === 'main') {
57
+ const { OAuthJweKeyService } = await Promise.resolve().then(() => __importStar(require('./oauth-jwe-key.service')));
58
+ await di_1.Container.get(OAuthJweKeyService).initialize();
59
+ await Promise.resolve().then(() => __importStar(require('./oauth-jwe.controller')));
60
+ }
61
+ }
62
+ async context() {
63
+ return { oauthJweProxyProvider: di_1.Container.get(oauth_jwe_service_proxy_1.OAuthJweServiceProxy) };
64
+ }
65
+ };
66
+ exports.OAuthJweModule = OAuthJweModule;
67
+ exports.OAuthJweModule = OAuthJweModule = __decorate([
68
+ (0, decorators_1.BackendModule)({ name: 'oauth-jwe' })
69
+ ], OAuthJweModule);
70
+ //# sourceMappingURL=oauth-jwe.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe.module.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAgD;AAChD,gCAAoC;AACpC,uCAA4C;AAE5C,6EAAuE;AAEvE,SAAS,oBAAoB;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAC;AACvD,CAAC;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;IAC1B,KAAK,CAAC,IAAI;QACT,IAAI,CAAC,oBAAoB,EAAE;YAAE,OAAO;QAEpC,MAAM,EAAE,sBAAsB,EAAE,GAAG,wDAAa,6BAA6B,GAAC,CAAC;QAC/E,cAAS,CAAC,GAAG,CAAC,8CAAoB,CAAC,CAAC,UAAU,CAAC,cAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAMtF,IAAI,cAAS,CAAC,GAAG,CAAC,2BAAgB,CAAC,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YAC7D,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,yBAAyB,GAAC,CAAC;YACvE,MAAM,cAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,UAAU,EAAE,CAAC;YACrD,wDAAa,wBAAwB,GAAC,CAAC;QACxC,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,OAAO,EAAE,qBAAqB,EAAE,cAAS,CAAC,GAAG,CAAC,8CAAoB,CAAC,EAAE,CAAC;IACvE,CAAC;CACD,CAAA;AArBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;GACxB,cAAc,CAqB1B"}
@@ -0,0 +1,131 @@
1
+ import { z } from 'zod';
2
+ export declare const PublicJweJwkSchema: z.ZodDiscriminatedUnion<"kty", [z.ZodObject<{
3
+ kty: z.ZodLiteral<"RSA">;
4
+ kid: z.ZodString;
5
+ use: z.ZodLiteral<"enc">;
6
+ alg: z.ZodEnum<["RSA-OAEP-256"]>;
7
+ n: z.ZodString;
8
+ e: z.ZodString;
9
+ }, "strict", z.ZodTypeAny, {
10
+ kid: string;
11
+ use: "enc";
12
+ e: string;
13
+ n: string;
14
+ kty: "RSA";
15
+ alg: "RSA-OAEP-256";
16
+ }, {
17
+ kid: string;
18
+ use: "enc";
19
+ e: string;
20
+ n: string;
21
+ kty: "RSA";
22
+ alg: "RSA-OAEP-256";
23
+ }>, z.ZodObject<{
24
+ kty: z.ZodLiteral<"EC">;
25
+ kid: z.ZodString;
26
+ use: z.ZodLiteral<"enc">;
27
+ alg: z.ZodEnum<["ECDH-ES", "ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"]>;
28
+ crv: z.ZodEnum<["P-256", "P-384", "P-521"]>;
29
+ x: z.ZodString;
30
+ y: z.ZodString;
31
+ }, "strict", z.ZodTypeAny, {
32
+ y: string;
33
+ kid: string;
34
+ use: "enc";
35
+ crv: "P-256" | "P-384" | "P-521";
36
+ x: string;
37
+ kty: "EC";
38
+ alg: "ECDH-ES" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW";
39
+ }, {
40
+ y: string;
41
+ kid: string;
42
+ use: "enc";
43
+ crv: "P-256" | "P-384" | "P-521";
44
+ x: string;
45
+ kty: "EC";
46
+ alg: "ECDH-ES" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW";
47
+ }>]>;
48
+ export type PublicJweJwk = z.infer<typeof PublicJweJwkSchema>;
49
+ export declare const JwksResponseSchema: z.ZodObject<{
50
+ keys: z.ZodArray<z.ZodDiscriminatedUnion<"kty", [z.ZodObject<{
51
+ kty: z.ZodLiteral<"RSA">;
52
+ kid: z.ZodString;
53
+ use: z.ZodLiteral<"enc">;
54
+ alg: z.ZodEnum<["RSA-OAEP-256"]>;
55
+ n: z.ZodString;
56
+ e: z.ZodString;
57
+ }, "strict", z.ZodTypeAny, {
58
+ kid: string;
59
+ use: "enc";
60
+ e: string;
61
+ n: string;
62
+ kty: "RSA";
63
+ alg: "RSA-OAEP-256";
64
+ }, {
65
+ kid: string;
66
+ use: "enc";
67
+ e: string;
68
+ n: string;
69
+ kty: "RSA";
70
+ alg: "RSA-OAEP-256";
71
+ }>, z.ZodObject<{
72
+ kty: z.ZodLiteral<"EC">;
73
+ kid: z.ZodString;
74
+ use: z.ZodLiteral<"enc">;
75
+ alg: z.ZodEnum<["ECDH-ES", "ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"]>;
76
+ crv: z.ZodEnum<["P-256", "P-384", "P-521"]>;
77
+ x: z.ZodString;
78
+ y: z.ZodString;
79
+ }, "strict", z.ZodTypeAny, {
80
+ y: string;
81
+ kid: string;
82
+ use: "enc";
83
+ crv: "P-256" | "P-384" | "P-521";
84
+ x: string;
85
+ kty: "EC";
86
+ alg: "ECDH-ES" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW";
87
+ }, {
88
+ y: string;
89
+ kid: string;
90
+ use: "enc";
91
+ crv: "P-256" | "P-384" | "P-521";
92
+ x: string;
93
+ kty: "EC";
94
+ alg: "ECDH-ES" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW";
95
+ }>]>, "many">;
96
+ }, "strip", z.ZodTypeAny, {
97
+ keys: ({
98
+ kid: string;
99
+ use: "enc";
100
+ e: string;
101
+ n: string;
102
+ kty: "RSA";
103
+ alg: "RSA-OAEP-256";
104
+ } | {
105
+ y: string;
106
+ kid: string;
107
+ use: "enc";
108
+ crv: "P-256" | "P-384" | "P-521";
109
+ x: string;
110
+ kty: "EC";
111
+ alg: "ECDH-ES" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW";
112
+ })[];
113
+ }, {
114
+ keys: ({
115
+ kid: string;
116
+ use: "enc";
117
+ e: string;
118
+ n: string;
119
+ kty: "RSA";
120
+ alg: "RSA-OAEP-256";
121
+ } | {
122
+ y: string;
123
+ kid: string;
124
+ use: "enc";
125
+ crv: "P-256" | "P-384" | "P-521";
126
+ x: string;
127
+ kty: "EC";
128
+ alg: "ECDH-ES" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW";
129
+ })[];
130
+ }>;
131
+ export type JwksResponse = z.infer<typeof JwksResponseSchema>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwksResponseSchema = exports.PublicJweJwkSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const oauth_jwe_constants_1 = require("./oauth-jwe.constants");
6
+ const RsaPublicJwkSchema = zod_1.z
7
+ .object({
8
+ kty: zod_1.z.literal('RSA'),
9
+ kid: zod_1.z.string().min(1),
10
+ use: zod_1.z.literal(oauth_jwe_constants_1.JWE_KEY_USE),
11
+ alg: zod_1.z.enum(oauth_jwe_constants_1.JWE_RSA_ALGORITHMS),
12
+ n: zod_1.z.string().min(1),
13
+ e: zod_1.z.string().min(1),
14
+ })
15
+ .strict();
16
+ const EcPublicJwkSchema = zod_1.z
17
+ .object({
18
+ kty: zod_1.z.literal('EC'),
19
+ kid: zod_1.z.string().min(1),
20
+ use: zod_1.z.literal(oauth_jwe_constants_1.JWE_KEY_USE),
21
+ alg: zod_1.z.enum(oauth_jwe_constants_1.JWE_EC_ALGORITHMS),
22
+ crv: zod_1.z.enum(['P-256', 'P-384', 'P-521']),
23
+ x: zod_1.z.string().min(1),
24
+ y: zod_1.z.string().min(1),
25
+ })
26
+ .strict();
27
+ exports.PublicJweJwkSchema = zod_1.z.discriminatedUnion('kty', [
28
+ RsaPublicJwkSchema,
29
+ EcPublicJwkSchema,
30
+ ]);
31
+ exports.JwksResponseSchema = zod_1.z.object({
32
+ keys: zod_1.z.array(exports.PublicJweJwkSchema),
33
+ });
34
+ //# sourceMappingURL=oauth-jwe.schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe.schemas.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,+DAA2F;AAO3F,MAAM,kBAAkB,GAAG,OAAC;KAC1B,MAAM,CAAC;IACP,GAAG,EAAE,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,GAAG,EAAE,OAAC,CAAC,OAAO,CAAC,iCAAW,CAAC;IAC3B,GAAG,EAAE,OAAC,CAAC,IAAI,CAAC,wCAAkB,CAAC;IAC/B,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACpB,CAAC;KACD,MAAM,EAAE,CAAC;AAMX,MAAM,iBAAiB,GAAG,OAAC;KACzB,MAAM,CAAC;IACP,GAAG,EAAE,OAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,GAAG,EAAE,OAAC,CAAC,OAAO,CAAC,iCAAW,CAAC;IAC3B,GAAG,EAAE,OAAC,CAAC,IAAI,CAAC,uCAAiB,CAAC;IAC9B,GAAG,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACpB,CAAC;KACD,MAAM,EAAE,CAAC;AAOE,QAAA,kBAAkB,GAAG,OAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE;IAC7D,kBAAkB;IAClB,iBAAiB;CACjB,CAAC,CAAC;AAIU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,0BAAkB,CAAC;CACjC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CryptoKey } from 'jose';
2
+ export declare function isJweToken(token: unknown): token is string;
3
+ export declare function decryptJweToken(token: string, privateKey: CryptoKey): Promise<string>;
4
+ export declare function decryptJweTokenData(data: Record<string, unknown>, privateKey: CryptoKey): Promise<Record<string, unknown>>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isJweToken = isJweToken;
4
+ exports.decryptJweToken = decryptJweToken;
5
+ exports.decryptJweTokenData = decryptJweTokenData;
6
+ const jose_1 = require("jose");
7
+ const JWE_SEGMENT_COUNT = 5;
8
+ function isJweToken(token) {
9
+ if (typeof token !== 'string' || token.length === 0)
10
+ return false;
11
+ return token.split('.').length === JWE_SEGMENT_COUNT;
12
+ }
13
+ async function decryptJweToken(token, privateKey) {
14
+ const { plaintext } = await (0, jose_1.compactDecrypt)(token, privateKey);
15
+ return new TextDecoder().decode(plaintext);
16
+ }
17
+ async function decryptJweTokenData(data, privateKey) {
18
+ const result = { ...data };
19
+ for (const field of ['access_token', 'id_token']) {
20
+ const value = result[field];
21
+ if (isJweToken(value)) {
22
+ result[field] = await decryptJweToken(value, privateKey);
23
+ }
24
+ }
25
+ return result;
26
+ }
27
+ //# sourceMappingURL=oauth-jwe.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-jwe.utils.js","sourceRoot":"","sources":["../../../src/modules/oauth-jwe/oauth-jwe.utils.ts"],"names":[],"mappings":";;AAWA,gCAGC;AAOD,0CAGC;AAOD,kDAcC;AA5CD,+BAAsC;AAEtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAQ5B,SAAgB,UAAU,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC;AACtD,CAAC;AAOM,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,UAAqB;IACzE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,qBAAc,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9D,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACxC,IAA6B,EAC7B,UAAqB;IAErB,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IAEpD,KAAK,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,UAAU,CAAU,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -422,7 +422,7 @@ let SourceControlExportService = class SourceControlExportService {
422
422
  teamName: sharing.project.name,
423
423
  };
424
424
  }
425
- const sanitizedData = (0, source_control_helper_ee_1.sanitizeCredentialData)(credentials.getData());
425
+ const sanitizedData = (0, source_control_helper_ee_1.sanitizeCredentialData)(await credentials.getData());
426
426
  const stub = {
427
427
  id,
428
428
  name,