n8n 2.35.4 → 2.36.2

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 (733) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/commands/start.js +4 -2
  3. package/dist/commands/start.js.map +1 -1
  4. package/dist/config/index.js +0 -1
  5. package/dist/config/index.js.map +1 -1
  6. package/dist/constants/oauth2-triggers.d.ts +0 -1
  7. package/dist/constants/oauth2-triggers.js +0 -4
  8. package/dist/constants/oauth2-triggers.js.map +1 -1
  9. package/dist/constants.js +1 -0
  10. package/dist/constants.js.map +1 -1
  11. package/dist/controllers/ai.controller.d.ts +2 -5
  12. package/dist/controllers/ai.controller.js.map +1 -1
  13. package/dist/controllers/api-keys.controller.d.ts +1 -1
  14. package/dist/controllers/api-keys.controller.js +10 -10
  15. package/dist/controllers/api-keys.controller.js.map +1 -1
  16. package/dist/controllers/dynamic-node-parameters.controller.d.ts +6 -1
  17. package/dist/controllers/dynamic-node-parameters.controller.js +21 -2
  18. package/dist/controllers/dynamic-node-parameters.controller.js.map +1 -1
  19. package/dist/controllers/e2e.controller.d.ts +21 -2
  20. package/dist/controllers/e2e.controller.js +40 -2
  21. package/dist/controllers/e2e.controller.js.map +1 -1
  22. package/dist/controllers/role.controller.js +3 -5
  23. package/dist/controllers/role.controller.js.map +1 -1
  24. package/dist/credentials/credential-connection-status-provider.interface.d.ts +4 -1
  25. package/dist/credentials/credential-connection-status-proxy.d.ts +2 -2
  26. package/dist/credentials/credential-connection-status-proxy.js +3 -3
  27. package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
  28. package/dist/credentials/credentials-finder.service.d.ts +2 -1
  29. package/dist/credentials/credentials-finder.service.js +2 -1
  30. package/dist/credentials/credentials-finder.service.js.map +1 -1
  31. package/dist/credentials/credentials.controller.d.ts +8 -6
  32. package/dist/credentials/credentials.controller.js +3 -12
  33. package/dist/credentials/credentials.controller.js.map +1 -1
  34. package/dist/credentials/credentials.service.d.ts +38 -30
  35. package/dist/credentials/credentials.service.ee.d.ts +6 -4
  36. package/dist/credentials/credentials.service.ee.js +2 -1
  37. package/dist/credentials/credentials.service.ee.js.map +1 -1
  38. package/dist/credentials/credentials.service.js +93 -45
  39. package/dist/credentials/credentials.service.js.map +1 -1
  40. package/dist/credentials-overwrites.d.ts +1 -0
  41. package/dist/credentials-overwrites.js +17 -0
  42. package/dist/credentials-overwrites.js.map +1 -1
  43. package/dist/deprecation/deprecation.service.js +5 -0
  44. package/dist/deprecation/deprecation.service.js.map +1 -1
  45. package/dist/errors/http-error-classifier.d.ts +4 -1
  46. package/dist/errors/http-error-classifier.js +4 -1
  47. package/dist/errors/http-error-classifier.js.map +1 -1
  48. package/dist/evaluation.ee/evaluation-dataset.service.d.ts +3 -3
  49. package/dist/evaluation.ee/evaluation-dataset.service.js +5 -6
  50. package/dist/evaluation.ee/evaluation-dataset.service.js.map +1 -1
  51. package/dist/events/event.service.d.ts +2 -1
  52. package/dist/events/event.service.js.map +1 -1
  53. package/dist/events/maps/poll-trigger-metrics.event-map.d.ts +9 -0
  54. package/dist/events/maps/poll-trigger-metrics.event-map.js +3 -0
  55. package/dist/events/maps/poll-trigger-metrics.event-map.js.map +1 -0
  56. package/dist/executions/enqueued-execution-recovery.service.js +7 -1
  57. package/dist/executions/enqueued-execution-recovery.service.js.map +1 -1
  58. package/dist/executions/execution-persistence.d.ts +7 -2
  59. package/dist/executions/execution-persistence.js +27 -6
  60. package/dist/executions/execution-persistence.js.map +1 -1
  61. package/dist/executions/execution.service.d.ts +4 -1
  62. package/dist/executions/execution.service.js +2 -2
  63. package/dist/executions/execution.service.js.map +1 -1
  64. package/dist/load-nodes-and-credentials.d.ts +1 -0
  65. package/dist/load-nodes-and-credentials.js +31 -16
  66. package/dist/load-nodes-and-credentials.js.map +1 -1
  67. package/dist/metrics/prometheus/poll-trigger-metrics.service.d.ts +13 -0
  68. package/dist/metrics/prometheus/poll-trigger-metrics.service.js +81 -0
  69. package/dist/metrics/prometheus/poll-trigger-metrics.service.js.map +1 -0
  70. package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
  71. package/dist/metrics/prometheus/prometheus.service.js +4 -2
  72. package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
  73. package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +2 -0
  74. package/dist/metrics/prometheus/scheduler-metrics.service.js +10 -0
  75. package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -1
  76. package/dist/modules/agent-evals/agent-eval-case-generation.service.d.ts +3 -3
  77. package/dist/modules/agent-evals/agent-eval-case-generation.service.js +5 -5
  78. package/dist/modules/agent-evals/agent-eval-case-generation.service.js.map +1 -1
  79. package/dist/modules/agent-evals/agent-eval-rating.service.js +5 -6
  80. package/dist/modules/agent-evals/agent-eval-rating.service.js.map +1 -1
  81. package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
  82. package/dist/modules/agents/adapters/agents-credential-provider.js +11 -2
  83. package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
  84. package/dist/modules/agents/agent-config.service.js +9 -0
  85. package/dist/modules/agents/agent-config.service.js.map +1 -1
  86. package/dist/modules/agents/agent-default-model-resolver.service.d.ts +19 -0
  87. package/dist/modules/agents/agent-default-model-resolver.service.js +106 -0
  88. package/dist/modules/agents/agent-default-model-resolver.service.js.map +1 -0
  89. package/dist/modules/agents/agent-execution-orchestrator.service.d.ts +7 -1
  90. package/dist/modules/agents/agent-execution-orchestrator.service.js +200 -108
  91. package/dist/modules/agents/agent-execution-orchestrator.service.js.map +1 -1
  92. package/dist/modules/agents/agent-integration-management.service.d.ts +24 -6
  93. package/dist/modules/agents/agent-integration-management.service.js +175 -34
  94. package/dist/modules/agents/agent-integration-management.service.js.map +1 -1
  95. package/dist/modules/agents/agent-integration-persistence.service.d.ts +21 -6
  96. package/dist/modules/agents/agent-integration-persistence.service.js +61 -50
  97. package/dist/modules/agents/agent-integration-persistence.service.js.map +1 -1
  98. package/dist/modules/agents/agent-integrations.controller.d.ts +3 -5
  99. package/dist/modules/agents/agent-integrations.controller.js +11 -6
  100. package/dist/modules/agents/agent-integrations.controller.js.map +1 -1
  101. package/dist/modules/agents/agent-knowledge-commands.d.ts +3 -3
  102. package/dist/modules/agents/agent-knowledge-commands.js +16 -22
  103. package/dist/modules/agents/agent-knowledge-commands.js.map +1 -1
  104. package/dist/modules/agents/{agent-knowledge-sandbox.service.d.ts → agent-knowledge-mirror.service.d.ts} +6 -22
  105. package/dist/modules/agents/agent-knowledge-mirror.service.js +442 -0
  106. package/dist/modules/agents/agent-knowledge-mirror.service.js.map +1 -0
  107. package/dist/modules/agents/agent-knowledge-storage.d.ts +7 -3
  108. package/dist/modules/agents/agent-knowledge-storage.js +11 -4
  109. package/dist/modules/agents/agent-knowledge-storage.js.map +1 -1
  110. package/dist/modules/agents/agent-knowledge.controller.d.ts +3 -5
  111. package/dist/modules/agents/agent-knowledge.controller.js +5 -8
  112. package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
  113. package/dist/modules/agents/agent-knowledge.service.d.ts +8 -6
  114. package/dist/modules/agents/agent-knowledge.service.js +20 -14
  115. package/dist/modules/agents/agent-knowledge.service.js.map +1 -1
  116. package/dist/modules/agents/agent-model-catalog.service.d.ts +4 -1
  117. package/dist/modules/agents/agent-model-catalog.service.js +24 -13
  118. package/dist/modules/agents/agent-model-catalog.service.js.map +1 -1
  119. package/dist/modules/agents/agent-runtime-cache.service.d.ts +9 -1
  120. package/dist/modules/agents/agent-runtime-cache.service.js +50 -17
  121. package/dist/modules/agents/agent-runtime-cache.service.js.map +1 -1
  122. package/dist/modules/agents/agent-runtime-reconstruction.service.d.ts +11 -6
  123. package/dist/modules/agents/agent-runtime-reconstruction.service.js +35 -18
  124. package/dist/modules/agents/agent-runtime-reconstruction.service.js.map +1 -1
  125. package/dist/modules/agents/agent-sandbox-principal.d.ts +34 -0
  126. package/dist/modules/agents/agent-sandbox-principal.js +64 -0
  127. package/dist/modules/agents/agent-sandbox-principal.js.map +1 -0
  128. package/dist/modules/agents/agent-sandbox-runtime.service.d.ts +42 -0
  129. package/dist/modules/agents/agent-sandbox-runtime.service.js +290 -0
  130. package/dist/modules/agents/agent-sandbox-runtime.service.js.map +1 -0
  131. package/dist/modules/agents/agent-sandbox.controller.d.ts +3 -6
  132. package/dist/modules/agents/agent-sandbox.controller.js +6 -14
  133. package/dist/modules/agents/agent-sandbox.controller.js.map +1 -1
  134. package/dist/modules/agents/agent-session-langsmith-export.service.d.ts +27 -0
  135. package/dist/modules/agents/agent-session-langsmith-export.service.js +390 -0
  136. package/dist/modules/agents/agent-session-langsmith-export.service.js.map +1 -0
  137. package/dist/modules/agents/agent-skills.service.js +4 -0
  138. package/dist/modules/agents/agent-skills.service.js.map +1 -1
  139. package/dist/modules/agents/agent-slack-integrations.controller.d.ts +22 -2
  140. package/dist/modules/agents/agent-slack-integrations.controller.js +108 -9
  141. package/dist/modules/agents/agent-slack-integrations.controller.js.map +1 -1
  142. package/dist/modules/agents/agent-sse-stream.js +10 -3
  143. package/dist/modules/agents/agent-sse-stream.js.map +1 -1
  144. package/dist/modules/agents/agent-threads.controller.d.ts +8 -1
  145. package/dist/modules/agents/agent-threads.controller.js +20 -2
  146. package/dist/modules/agents/agent-threads.controller.js.map +1 -1
  147. package/dist/modules/agents/agent-validation.service.js +9 -0
  148. package/dist/modules/agents/agent-validation.service.js.map +1 -1
  149. package/dist/modules/agents/agent-workflow-execution.service.d.ts +8 -2
  150. package/dist/modules/agents/agent-workflow-execution.service.js +43 -7
  151. package/dist/modules/agents/agent-workflow-execution.service.js.map +1 -1
  152. package/dist/modules/agents/agent-workspace.service.d.ts +16 -0
  153. package/dist/modules/agents/agent-workspace.service.js +65 -0
  154. package/dist/modules/agents/agent-workspace.service.js.map +1 -0
  155. package/dist/modules/agents/agents.controller.d.ts +3 -1
  156. package/dist/modules/agents/agents.controller.js +6 -2
  157. package/dist/modules/agents/agents.controller.js.map +1 -1
  158. package/dist/modules/agents/agents.module.d.ts +1 -1
  159. package/dist/modules/agents/agents.module.js +6 -2
  160. package/dist/modules/agents/agents.module.js.map +1 -1
  161. package/dist/modules/agents/agents.service.d.ts +5 -1
  162. package/dist/modules/agents/agents.service.js +3 -2
  163. package/dist/modules/agents/agents.service.js.map +1 -1
  164. package/dist/modules/agents/builder/agents-builder-prompts.d.ts +3 -3
  165. package/dist/modules/agents/builder/agents-builder-prompts.js +23 -11
  166. package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
  167. package/dist/modules/agents/builder/agents-builder-settings.service.d.ts +3 -1
  168. package/dist/modules/agents/builder/agents-builder-settings.service.js +38 -29
  169. package/dist/modules/agents/builder/agents-builder-settings.service.js.map +1 -1
  170. package/dist/modules/agents/builder/agents-builder-tools.service.js +209 -2
  171. package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
  172. package/dist/modules/agents/builder/agents-builder.service.js +5 -2
  173. package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
  174. package/dist/modules/agents/builder/builder-model-live-lookup.service.js +1 -1
  175. package/dist/modules/agents/builder/builder-model-live-lookup.service.js.map +1 -1
  176. package/dist/modules/agents/builder/builder-tool-names.d.ts +5 -0
  177. package/dist/modules/agents/builder/builder-tool-names.js +5 -0
  178. package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
  179. package/dist/modules/agents/builder/format-preview-context.js +3 -0
  180. package/dist/modules/agents/builder/format-preview-context.js.map +1 -1
  181. package/dist/modules/agents/builder/interactive/ask-credential.tool.d.ts +1 -0
  182. package/dist/modules/agents/builder/interactive/ask-credential.tool.js +5 -2
  183. package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
  184. package/dist/modules/agents/builder/interactive/finish-setup.tool.js +1 -0
  185. package/dist/modules/agents/builder/interactive/finish-setup.tool.js.map +1 -1
  186. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +7 -3
  187. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
  188. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +1 -1
  189. package/dist/modules/agents/builder/prompts/tools.prompt.d.ts +1 -1
  190. package/dist/modules/agents/builder/prompts/tools.prompt.js +11 -7
  191. package/dist/modules/agents/builder/prompts/tools.prompt.js.map +1 -1
  192. package/dist/modules/agents/builder/resolve-integration.tool.js +1 -1
  193. package/dist/modules/agents/builder/resolve-integration.tool.js.map +1 -1
  194. package/dist/modules/agents/builder/skills/external-services.skill.js +13 -94
  195. package/dist/modules/agents/builder/skills/external-services.skill.js.map +1 -1
  196. package/dist/modules/agents/builder/skills/index.js +2 -0
  197. package/dist/modules/agents/builder/skills/index.js.map +1 -1
  198. package/dist/modules/agents/builder/skills/node-tools.skill.d.ts +2 -0
  199. package/dist/modules/agents/builder/skills/node-tools.skill.js +132 -0
  200. package/dist/modules/agents/builder/skills/node-tools.skill.js.map +1 -0
  201. package/dist/modules/agents/builder/skills/target-skills.skill.js +62 -21
  202. package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
  203. package/dist/modules/agents/builder/skills/target-tasks.skill.js +34 -17
  204. package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
  205. package/dist/modules/agents/builder/task-objective-template.d.ts +2 -2
  206. package/dist/modules/agents/builder/task-objective-template.js +11 -9
  207. package/dist/modules/agents/builder/task-objective-template.js.map +1 -1
  208. package/dist/modules/agents/execution-recorder.d.ts +25 -0
  209. package/dist/modules/agents/execution-recorder.js +47 -0
  210. package/dist/modules/agents/execution-recorder.js.map +1 -1
  211. package/dist/modules/agents/integrations/agent-chat-bridge.d.ts +3 -1
  212. package/dist/modules/agents/integrations/agent-chat-bridge.js +10 -2
  213. package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
  214. package/dist/modules/agents/integrations/agent-chat-integration.d.ts +10 -1
  215. package/dist/modules/agents/integrations/agent-chat-integration.js.map +1 -1
  216. package/dist/modules/agents/integrations/agent-chat-suspension-cards.d.ts +0 -1
  217. package/dist/modules/agents/integrations/agent-chat-suspension-cards.js +0 -24
  218. package/dist/modules/agents/integrations/agent-chat-suspension-cards.js.map +1 -1
  219. package/dist/modules/agents/integrations/chat-integration.service.d.ts +0 -1
  220. package/dist/modules/agents/integrations/chat-integration.service.js +1 -4
  221. package/dist/modules/agents/integrations/chat-integration.service.js.map +1 -1
  222. package/dist/modules/agents/integrations/integration-tool-descriptions.js +1 -0
  223. package/dist/modules/agents/integrations/integration-tool-descriptions.js.map +1 -1
  224. package/dist/modules/agents/integrations/n8n-checkpoint-storage.d.ts +3 -0
  225. package/dist/modules/agents/integrations/n8n-checkpoint-storage.js +26 -1
  226. package/dist/modules/agents/integrations/n8n-checkpoint-storage.js.map +1 -1
  227. package/dist/modules/agents/integrations/platforms/slack/assets/n8n-bot-icon.png +0 -0
  228. package/dist/modules/agents/integrations/platforms/slack/slack-integration.d.ts +5 -4
  229. package/dist/modules/agents/integrations/platforms/slack/slack-integration.js +5 -3
  230. package/dist/modules/agents/integrations/platforms/slack/slack-integration.js.map +1 -1
  231. package/dist/modules/agents/integrations/platforms/slack/slack-managed-setup.service.d.ts +78 -0
  232. package/dist/modules/agents/integrations/platforms/slack/slack-managed-setup.service.js +620 -0
  233. package/dist/modules/agents/integrations/platforms/slack/slack-managed-setup.service.js.map +1 -0
  234. package/dist/modules/agents/integrations/platforms/slack/slack-manual-setup.service.d.ts +6 -6
  235. package/dist/modules/agents/integrations/platforms/slack/slack-manual-setup.service.js +31 -24
  236. package/dist/modules/agents/integrations/platforms/slack/slack-manual-setup.service.js.map +1 -1
  237. package/dist/modules/agents/integrations/platforms/slack/slack-methods.service.d.ts +19 -10
  238. package/dist/modules/agents/integrations/platforms/slack/slack-methods.service.js +85 -54
  239. package/dist/modules/agents/integrations/platforms/slack/slack-methods.service.js.map +1 -1
  240. package/dist/modules/agents/integrations/platforms/slack/slack-setup.types.d.ts +16 -0
  241. package/dist/modules/agents/integrations/platforms/slack/slack-setup.types.js +36 -0
  242. package/dist/modules/agents/integrations/platforms/slack/slack-setup.types.js.map +1 -0
  243. package/dist/modules/agents/json-config/from-json-config.d.ts +2 -2
  244. package/dist/modules/agents/json-config/from-json-config.js +5 -0
  245. package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
  246. package/dist/modules/agents/json-config/mcp-client-factory.js +17 -12
  247. package/dist/modules/agents/json-config/mcp-client-factory.js.map +1 -1
  248. package/dist/modules/agents/llm-provider-defaults.js +8 -8
  249. package/dist/modules/agents/llm-provider-defaults.js.map +1 -1
  250. package/dist/modules/agents/register-favorite-resolver.d.ts +1 -0
  251. package/dist/modules/agents/register-favorite-resolver.js +18 -0
  252. package/dist/modules/agents/register-favorite-resolver.js.map +1 -0
  253. package/dist/modules/agents/repositories/agent-checkpoint.repository.d.ts +1 -0
  254. package/dist/modules/agents/repositories/agent-checkpoint.repository.js +7 -0
  255. package/dist/modules/agents/repositories/agent-checkpoint.repository.js.map +1 -1
  256. package/dist/modules/agents/repositories/agent-credential-dependency.repository.js +1 -1
  257. package/dist/modules/agents/repositories/agent-credential-dependency.repository.js.map +1 -1
  258. package/dist/modules/agents/repositories/agent-execution-thread.repository.d.ts +1 -0
  259. package/dist/modules/agents/repositories/agent-execution-thread.repository.js +6 -0
  260. package/dist/modules/agents/repositories/agent-execution-thread.repository.js.map +1 -1
  261. package/dist/modules/agents/repositories/agent.repository.d.ts +4 -1
  262. package/dist/modules/agents/repositories/agent.repository.js +14 -0
  263. package/dist/modules/agents/repositories/agent.repository.js.map +1 -1
  264. package/dist/modules/agents/runtime/agent-secure-runtime.d.ts +2 -0
  265. package/dist/modules/agents/runtime/agent-secure-runtime.js +72 -30
  266. package/dist/modules/agents/runtime/agent-secure-runtime.js.map +1 -1
  267. package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js +5 -0
  268. package/dist/modules/agents/sub-agents/delegate-sub-agent-tool.js.map +1 -1
  269. package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.d.ts +1 -0
  270. package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.js +33 -0
  271. package/dist/modules/agents/sub-agents/sub-agent-foreground-runner.js.map +1 -1
  272. package/dist/modules/agents/tools/input-data-tool.js +2 -1
  273. package/dist/modules/agents/tools/input-data-tool.js.map +1 -1
  274. package/dist/modules/agents/tools/knowledge/search-knowledge.tool.d.ts +3 -3
  275. package/dist/modules/agents/tools/knowledge/search-knowledge.tool.js +4 -4
  276. package/dist/modules/agents/tools/knowledge/search-knowledge.tool.js.map +1 -1
  277. package/dist/modules/agents/tools/workflow-tool-factory.js +11 -70
  278. package/dist/modules/agents/tools/workflow-tool-factory.js.map +1 -1
  279. package/dist/modules/agents/tools/workflow-tool-workflow-loader.service.d.ts +2 -6
  280. package/dist/modules/agents/tools/workflow-tool-workflow-loader.service.js +6 -25
  281. package/dist/modules/agents/tools/workflow-tool-workflow-loader.service.js.map +1 -1
  282. package/dist/modules/agents/utils/execution-to-message-mapper.js +9 -0
  283. package/dist/modules/agents/utils/execution-to-message-mapper.js.map +1 -1
  284. package/dist/modules/agents/utils/model-snapshot-alias.d.ts +2 -0
  285. package/dist/modules/agents/utils/model-snapshot-alias.js +9 -0
  286. package/dist/modules/agents/utils/model-snapshot-alias.js.map +1 -0
  287. package/dist/modules/agents/utils/node-tool-validation.d.ts +6 -0
  288. package/dist/modules/agents/utils/node-tool-validation.js +28 -0
  289. package/dist/modules/agents/utils/node-tool-validation.js.map +1 -1
  290. package/dist/modules/data-table/data-table-proxy.service.d.ts +3 -3
  291. package/dist/modules/data-table/data-table-proxy.service.js +5 -6
  292. package/dist/modules/data-table/data-table-proxy.service.js.map +1 -1
  293. package/dist/modules/data-table/data-table.controller.d.ts +3 -3
  294. package/dist/modules/data-table/data-table.controller.js +5 -6
  295. package/dist/modules/data-table/data-table.controller.js.map +1 -1
  296. package/dist/modules/data-table/data-table.module.js +2 -0
  297. package/dist/modules/data-table/data-table.module.js.map +1 -1
  298. package/dist/modules/data-table/data-table.repository.d.ts +1 -1
  299. package/dist/modules/data-table/data-table.repository.js +10 -6
  300. package/dist/modules/data-table/data-table.repository.js.map +1 -1
  301. package/dist/modules/data-table/middleware/branch-write-access-middleware.js +2 -3
  302. package/dist/modules/data-table/middleware/branch-write-access-middleware.js.map +1 -1
  303. package/dist/modules/data-table/register-favorite-resolver.d.ts +1 -0
  304. package/dist/modules/data-table/register-favorite-resolver.js +18 -0
  305. package/dist/modules/data-table/register-favorite-resolver.js.map +1 -0
  306. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.d.ts +52 -0
  307. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.js +25 -7
  308. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/n8n-identifier.js.map +1 -1
  309. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js +1 -1
  310. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js.map +1 -1
  311. package/dist/modules/dynamic-credentials.ee/errors/n8n-identity-not-supported.error.d.ts +4 -0
  312. package/dist/modules/dynamic-credentials.ee/errors/n8n-identity-not-supported.error.js +12 -0
  313. package/dist/modules/dynamic-credentials.ee/errors/n8n-identity-not-supported.error.js.map +1 -0
  314. package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.d.ts +8 -1
  315. package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js +49 -2
  316. package/dist/modules/dynamic-credentials.ee/services/credential-check-proxy.service.js.map +1 -1
  317. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +8 -3
  318. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +29 -6
  319. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
  320. package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js +3 -0
  321. package/dist/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.js.map +1 -1
  322. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.d.ts +3 -1
  323. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js +9 -12
  324. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js.map +1 -1
  325. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +11 -0
  326. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
  327. package/dist/modules/favorites/favorite-resource-resolver.registry.d.ts +17 -0
  328. package/dist/modules/favorites/favorite-resource-resolver.registry.js +26 -0
  329. package/dist/modules/favorites/favorite-resource-resolver.registry.js.map +1 -0
  330. package/dist/modules/favorites/favorites.service.d.ts +4 -7
  331. package/dist/modules/favorites/favorites.service.js +18 -34
  332. package/dist/modules/favorites/favorites.service.js.map +1 -1
  333. package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +0 -1
  334. package/dist/modules/insights/database/repositories/insights-by-period.repository.js +1 -5
  335. package/dist/modules/insights/database/repositories/insights-by-period.repository.js.map +1 -1
  336. package/dist/modules/instance-ai/canvas-node-context-flag-gate.d.ts +7 -0
  337. package/dist/modules/instance-ai/canvas-node-context-flag-gate.js +35 -0
  338. package/dist/modules/instance-ai/canvas-node-context-flag-gate.js.map +1 -0
  339. package/dist/modules/instance-ai/drop-rejected-attachments.d.ts +18 -0
  340. package/dist/modules/instance-ai/drop-rejected-attachments.js +49 -0
  341. package/dist/modules/instance-ai/drop-rejected-attachments.js.map +1 -0
  342. package/dist/modules/instance-ai/eval/agent-execution.service.js +2 -1
  343. package/dist/modules/instance-ai/eval/agent-execution.service.js.map +1 -1
  344. package/dist/modules/instance-ai/instance-ai-error-reporter.service.d.ts +1 -0
  345. package/dist/modules/instance-ai/instance-ai-error-reporter.service.js +9 -0
  346. package/dist/modules/instance-ai/instance-ai-error-reporter.service.js.map +1 -1
  347. package/dist/modules/instance-ai/instance-ai-model.service.d.ts +3 -3
  348. package/dist/modules/instance-ai/instance-ai-model.service.js +15 -21
  349. package/dist/modules/instance-ai/instance-ai-model.service.js.map +1 -1
  350. package/dist/modules/instance-ai/instance-ai-settings.service.d.ts +9 -4
  351. package/dist/modules/instance-ai/instance-ai-settings.service.js +119 -98
  352. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  353. package/dist/modules/instance-ai/instance-ai-terminal-outcome.service.d.ts +4 -0
  354. package/dist/modules/instance-ai/instance-ai-terminal-outcome.service.js +11 -0
  355. package/dist/modules/instance-ai/instance-ai-terminal-outcome.service.js.map +1 -1
  356. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +16 -14
  357. package/dist/modules/instance-ai/instance-ai.adapter.service.js +143 -79
  358. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  359. package/dist/modules/instance-ai/instance-ai.controller.js +9 -0
  360. package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
  361. package/dist/modules/instance-ai/instance-ai.module.js +3 -3
  362. package/dist/modules/instance-ai/instance-ai.module.js.map +1 -1
  363. package/dist/modules/instance-ai/instance-ai.service.d.ts +19 -6
  364. package/dist/modules/instance-ai/instance-ai.service.js +288 -27
  365. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  366. package/dist/modules/instance-ai/internal-messages.js +1 -1
  367. package/dist/modules/instance-ai/internal-messages.js.map +1 -1
  368. package/dist/modules/instance-ai/repositories/instance-ai-thread-grant.repository.d.ts +1 -0
  369. package/dist/modules/instance-ai/repositories/instance-ai-thread-grant.repository.js +3 -0
  370. package/dist/modules/instance-ai/repositories/instance-ai-thread-grant.repository.js.map +1 -1
  371. package/dist/modules/instance-ai/stream-transport-error.d.ts +1 -0
  372. package/dist/modules/instance-ai/stream-transport-error.js +9 -0
  373. package/dist/modules/instance-ai/stream-transport-error.js.map +1 -0
  374. package/dist/modules/instance-ai/workflow-verification-task-projector.js +4 -1
  375. package/dist/modules/instance-ai/workflow-verification-task-projector.js.map +1 -1
  376. package/dist/modules/mcp/dto/update-mcp-settings.dto.d.ts +32 -2
  377. package/dist/modules/mcp/dto/update-mcp-settings.dto.js +17 -3
  378. package/dist/modules/mcp/dto/update-mcp-settings.dto.js.map +1 -1
  379. package/dist/modules/mcp/mcp-protected-resource.d.ts +3 -2
  380. package/dist/modules/mcp/mcp-protected-resource.js +6 -3
  381. package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
  382. package/dist/modules/mcp/mcp-scopes.d.ts +1 -0
  383. package/dist/modules/mcp/mcp-scopes.js +12 -2
  384. package/dist/modules/mcp/mcp-scopes.js.map +1 -1
  385. package/dist/modules/mcp/mcp.controller.js +1 -1
  386. package/dist/modules/mcp/mcp.controller.js.map +1 -1
  387. package/dist/modules/mcp/mcp.module.d.ts +1 -0
  388. package/dist/modules/mcp/mcp.module.js +4 -2
  389. package/dist/modules/mcp/mcp.module.js.map +1 -1
  390. package/dist/modules/mcp/mcp.service.d.ts +6 -3
  391. package/dist/modules/mcp/mcp.service.js +24 -5
  392. package/dist/modules/mcp/mcp.service.js.map +1 -1
  393. package/dist/modules/mcp/mcp.settings.controller.d.ts +2 -0
  394. package/dist/modules/mcp/mcp.settings.controller.js +24 -10
  395. package/dist/modules/mcp/mcp.settings.controller.js.map +1 -1
  396. package/dist/modules/mcp/mcp.settings.service.d.ts +4 -3
  397. package/dist/modules/mcp/mcp.settings.service.js +20 -2
  398. package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
  399. package/dist/modules/mcp/mcp.types.d.ts +4 -3
  400. package/dist/modules/mcp/mcp.utils.d.ts +4 -1
  401. package/dist/modules/mcp/mcp.utils.js +14 -4
  402. package/dist/modules/mcp/mcp.utils.js.map +1 -1
  403. package/dist/modules/mcp/tools/agents/agent-tools.service.js +10 -1
  404. package/dist/modules/mcp/tools/agents/agent-tools.service.js.map +1 -1
  405. package/dist/modules/mcp/tools/create-folder.tool.d.ts +13 -0
  406. package/dist/modules/mcp/tools/create-folder.tool.js +68 -0
  407. package/dist/modules/mcp/tools/create-folder.tool.js.map +1 -0
  408. package/dist/modules/mcp/tools/data-table/add-data-table-rows.tool.js +1 -1
  409. package/dist/modules/mcp/tools/data-table/add-data-table-rows.tool.js.map +1 -1
  410. package/dist/modules/mcp/tools/data-table/get-data-table-rows.tool.d.ts +44 -0
  411. package/dist/modules/mcp/tools/data-table/get-data-table-rows.tool.js +134 -0
  412. package/dist/modules/mcp/tools/data-table/get-data-table-rows.tool.js.map +1 -0
  413. package/dist/modules/mcp/tools/data-table/index.d.ts +1 -0
  414. package/dist/modules/mcp/tools/data-table/index.js +3 -1
  415. package/dist/modules/mcp/tools/data-table/index.js.map +1 -1
  416. package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +11 -21
  417. package/dist/modules/mcp/tools/execute-workflow.tool.js +113 -76
  418. package/dist/modules/mcp/tools/execute-workflow.tool.js.map +1 -1
  419. package/dist/modules/mcp/tools/folder-error.utils.d.ts +13 -0
  420. package/dist/modules/mcp/tools/folder-error.utils.js +25 -0
  421. package/dist/modules/mcp/tools/folder-error.utils.js.map +1 -0
  422. package/dist/modules/mcp/tools/get-workflow-details.tool.js +1 -1
  423. package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
  424. package/dist/modules/mcp/tools/get-workflow-versions-diff.tool.d.ts +81 -0
  425. package/dist/modules/mcp/tools/get-workflow-versions-diff.tool.js +218 -0
  426. package/dist/modules/mcp/tools/get-workflow-versions-diff.tool.js.map +1 -0
  427. package/dist/modules/mcp/tools/move-workflows-to-folder.tool.d.ts +13 -0
  428. package/dist/modules/mcp/tools/move-workflows-to-folder.tool.js +122 -0
  429. package/dist/modules/mcp/tools/move-workflows-to-folder.tool.js.map +1 -0
  430. package/dist/modules/mcp/tools/schemas.d.ts +7 -0
  431. package/dist/modules/mcp/tools/schemas.js +15 -1
  432. package/dist/modules/mcp/tools/schemas.js.map +1 -1
  433. package/dist/modules/mcp/tools/search-folders.tool.d.ts +3 -2
  434. package/dist/modules/mcp/tools/search-folders.tool.js +14 -8
  435. package/dist/modules/mcp/tools/search-folders.tool.js.map +1 -1
  436. package/dist/modules/mcp/tools/test-workflow.tool.js +10 -18
  437. package/dist/modules/mcp/tools/test-workflow.tool.js.map +1 -1
  438. package/dist/modules/mcp/tools/update-folder.tool.d.ts +14 -0
  439. package/dist/modules/mcp/tools/update-folder.tool.js +74 -0
  440. package/dist/modules/mcp/tools/update-folder.tool.js.map +1 -0
  441. package/dist/modules/mcp/tools/webhook-utils.js +6 -4
  442. package/dist/modules/mcp/tools/webhook-utils.js.map +1 -1
  443. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +18 -5
  444. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
  445. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +4 -4
  446. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +467 -397
  447. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
  448. package/dist/modules/mcp/tools/workflow-inputs.d.ts +111 -0
  449. package/dist/modules/mcp/tools/workflow-inputs.js +81 -0
  450. package/dist/modules/mcp/tools/workflow-inputs.js.map +1 -0
  451. package/dist/modules/mcp/tools/workflow-validation.utils.d.ts +2 -0
  452. package/dist/modules/mcp/tools/workflow-validation.utils.js +7 -6
  453. package/dist/modules/mcp/tools/workflow-validation.utils.js.map +1 -1
  454. package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +1 -0
  455. package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
  456. package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
  457. package/dist/modules/n8n-packages/entities/credential/credential.serializer.js +4 -2
  458. package/dist/modules/n8n-packages/entities/credential/credential.serializer.js.map +1 -1
  459. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +13 -9
  460. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -1
  461. package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +2 -0
  462. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +1 -0
  463. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
  464. package/dist/modules/n8n-packages/entities/folder/folder.serializer.js +4 -2
  465. package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
  466. package/dist/modules/n8n-packages/entities/package-serialization.types.d.ts +17 -0
  467. package/dist/modules/n8n-packages/entities/package-serialization.types.js +7 -0
  468. package/dist/modules/n8n-packages/entities/package-serialization.types.js.map +1 -0
  469. package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +2 -0
  470. package/dist/modules/n8n-packages/entities/project/project.exporter.js +2 -0
  471. package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
  472. package/dist/modules/n8n-packages/entities/project/project.serializer.js +4 -2
  473. package/dist/modules/n8n-packages/entities/project/project.serializer.js.map +1 -1
  474. package/dist/modules/n8n-packages/entities/tag/tag.exporter.js +3 -1
  475. package/dist/modules/n8n-packages/entities/tag/tag.exporter.js.map +1 -1
  476. package/dist/modules/n8n-packages/entities/variable/variable.serializer.js +6 -3
  477. package/dist/modules/n8n-packages/entities/variable/variable.serializer.js.map +1 -1
  478. package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.d.ts +2 -0
  479. package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.js +21 -4
  480. package/dist/modules/n8n-packages/entities/workflow/auto-included-workflow-resolver.js.map +1 -1
  481. package/dist/modules/n8n-packages/entities/workflow/workflow-dependency-resolver.d.ts +2 -0
  482. package/dist/modules/n8n-packages/entities/workflow/workflow-dependency-resolver.js +4 -1
  483. package/dist/modules/n8n-packages/entities/workflow/workflow-dependency-resolver.js.map +1 -1
  484. package/dist/modules/n8n-packages/entities/workflow/workflow-version-policy.d.ts +4 -0
  485. package/dist/modules/n8n-packages/entities/workflow/workflow-version-policy.js +48 -0
  486. package/dist/modules/n8n-packages/entities/workflow/workflow-version-policy.js.map +1 -0
  487. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +2 -0
  488. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +7 -2
  489. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
  490. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js +5 -3
  491. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js.map +1 -1
  492. package/dist/modules/n8n-packages/n8n-packages.service.js +6 -0
  493. package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
  494. package/dist/modules/n8n-packages/n8n-packages.types.d.ts +8 -0
  495. package/dist/modules/n8n-packages/n8n-packages.types.js +7 -1
  496. package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
  497. package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.d.ts +2 -2
  498. package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.js +3 -3
  499. package/dist/modules/oauth-server/database/repositories/oauth-access-token.repository.js.map +1 -1
  500. package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.d.ts +2 -2
  501. package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.js +3 -3
  502. package/dist/modules/oauth-server/database/repositories/oauth-refresh-token.repository.js.map +1 -1
  503. package/dist/modules/oauth-server/oauth-consent.controller.js +2 -0
  504. package/dist/modules/oauth-server/oauth-consent.controller.js.map +1 -1
  505. package/dist/modules/oauth-server/oauth-consent.service.d.ts +8 -1
  506. package/dist/modules/oauth-server/oauth-consent.service.js +33 -0
  507. package/dist/modules/oauth-server/oauth-consent.service.js.map +1 -1
  508. package/dist/modules/oauth-server/oauth-server.service.d.ts +6 -1
  509. package/dist/modules/oauth-server/oauth-server.service.js +36 -4
  510. package/dist/modules/oauth-server/oauth-server.service.js.map +1 -1
  511. package/dist/modules/oauth-server/oauth-token.service.d.ts +6 -2
  512. package/dist/modules/oauth-server/oauth-token.service.js +19 -7
  513. package/dist/modules/oauth-server/oauth-token.service.js.map +1 -1
  514. package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-resource.resolver.d.ts +7 -3
  515. package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-resource.resolver.js +8 -7
  516. package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-resource.resolver.js.map +1 -1
  517. package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-test-resource.resolver.d.ts +6 -3
  518. package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-test-resource.resolver.js +8 -7
  519. package/dist/modules/oauth-server/protected-resource-resolvers/form-trigger-test-resource.resolver.js.map +1 -1
  520. package/dist/modules/oauth-server/protected-resource-resolvers/utils.d.ts +2 -0
  521. package/dist/modules/oauth-server/protected-resource-resolvers/utils.js +5 -1
  522. package/dist/modules/oauth-server/protected-resource-resolvers/utils.js.map +1 -1
  523. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.d.ts +4 -3
  524. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.js +7 -7
  525. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-test-trigger-resource.resolver.js.map +1 -1
  526. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.d.ts +5 -3
  527. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.js +7 -7
  528. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-mcp-trigger-resource.resolver.js.map +1 -1
  529. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-test-trigger-resource.resolver.js +7 -11
  530. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-test-trigger-resource.resolver.js.map +1 -1
  531. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-trigger-resource.resolver.js +7 -11
  532. package/dist/modules/oauth-server/protected-resource-resolvers/workflow-webhook-trigger-resource.resolver.js.map +1 -1
  533. package/dist/modules/oauth-server/resource-gate.d.ts +6 -0
  534. package/dist/modules/oauth-server/resource-gate.js +17 -0
  535. package/dist/modules/oauth-server/resource-gate.js.map +1 -0
  536. package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js +1 -9
  537. package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js.map +1 -1
  538. package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.d.ts +5 -2
  539. package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js +14 -4
  540. package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js.map +1 -1
  541. package/dist/modules/source-control.ee/source-control-preferences.service.ee.d.ts +3 -1
  542. package/dist/modules/source-control.ee/source-control-preferences.service.ee.js +5 -2
  543. package/dist/modules/source-control.ee/source-control-preferences.service.ee.js.map +1 -1
  544. package/dist/modules/workflow-reviews.ee/workflow-review-access.service.d.ts +27 -0
  545. package/dist/modules/workflow-reviews.ee/workflow-review-access.service.js +108 -0
  546. package/dist/modules/workflow-reviews.ee/workflow-review-access.service.js.map +1 -0
  547. package/dist/modules/workflow-reviews.ee/workflow-review-activity.service.d.ts +23 -0
  548. package/dist/modules/workflow-reviews.ee/workflow-review-activity.service.js +99 -0
  549. package/dist/modules/workflow-reviews.ee/workflow-review-activity.service.js.map +1 -0
  550. package/dist/modules/workflow-reviews.ee/workflow-review-auto-close.service.d.ts +4 -2
  551. package/dist/modules/workflow-reviews.ee/workflow-review-auto-close.service.js +30 -11
  552. package/dist/modules/workflow-reviews.ee/workflow-review-auto-close.service.js.map +1 -1
  553. package/dist/modules/workflow-reviews.ee/workflow-review-eligibility.service.d.ts +18 -0
  554. package/dist/modules/workflow-reviews.ee/workflow-review-eligibility.service.js +77 -0
  555. package/dist/modules/workflow-reviews.ee/workflow-review-eligibility.service.js.map +1 -0
  556. package/dist/modules/workflow-reviews.ee/workflow-review-inbox.service.d.ts +8 -11
  557. package/dist/modules/workflow-reviews.ee/workflow-review-inbox.service.js +52 -71
  558. package/dist/modules/workflow-reviews.ee/workflow-review-inbox.service.js.map +1 -1
  559. package/dist/modules/workflow-reviews.ee/workflow-review-request.service.d.ts +6 -4
  560. package/dist/modules/workflow-reviews.ee/workflow-review-request.service.js +157 -40
  561. package/dist/modules/workflow-reviews.ee/workflow-review-request.service.js.map +1 -1
  562. package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.d.ts +6 -2
  563. package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.js +30 -2
  564. package/dist/modules/workflow-reviews.ee/workflow-review-requests.controller.js.map +1 -1
  565. package/dist/modules/workflow-reviews.ee/workflow-review.mapper.d.ts +4 -2
  566. package/dist/modules/workflow-reviews.ee/workflow-review.mapper.js +69 -0
  567. package/dist/modules/workflow-reviews.ee/workflow-review.mapper.js.map +1 -1
  568. package/dist/oauth/account-identifier.d.ts +2 -0
  569. package/dist/oauth/account-identifier.js +38 -0
  570. package/dist/oauth/account-identifier.js.map +1 -0
  571. package/dist/oauth/oauth.service.d.ts +0 -1
  572. package/dist/oauth/oauth.service.js +7 -39
  573. package/dist/oauth/oauth.service.js.map +1 -1
  574. package/dist/posthog/index.js +3 -0
  575. package/dist/posthog/index.js.map +1 -1
  576. package/dist/public-api/index.d.ts +1 -1
  577. package/dist/public-api/index.js +8 -4
  578. package/dist/public-api/index.js.map +1 -1
  579. package/dist/public-api/types.d.ts +0 -16
  580. package/dist/public-api/v1/controllers/index.d.ts +1 -0
  581. package/dist/public-api/v1/controllers/index.js +1 -0
  582. package/dist/public-api/v1/controllers/index.js.map +1 -1
  583. package/dist/public-api/v1/controllers/role-mapping-rules.public.controller.d.ts +11 -0
  584. package/dist/public-api/v1/controllers/role-mapping-rules.public.controller.js +61 -0
  585. package/dist/public-api/v1/controllers/role-mapping-rules.public.controller.js.map +1 -0
  586. package/dist/public-api/v1/controllers/roles.public.controller.d.ts +4 -1
  587. package/dist/public-api/v1/controllers/roles.public.controller.js +95 -10
  588. package/dist/public-api/v1/controllers/roles.public.controller.js.map +1 -1
  589. package/dist/public-api/v1/controllers/workflows.public.controller.d.ts +11 -2
  590. package/dist/public-api/v1/controllers/workflows.public.controller.js +159 -3
  591. package/dist/public-api/v1/controllers/workflows.public.controller.js.map +1 -1
  592. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +111 -43
  593. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  594. package/dist/public-api/v1/handlers/credentials/credentials.middleware.js +13 -6
  595. package/dist/public-api/v1/handlers/credentials/credentials.middleware.js.map +1 -1
  596. package/dist/public-api/v1/handlers/credentials/credentials.utils.d.ts +12 -0
  597. package/dist/public-api/v1/handlers/credentials/credentials.utils.js +182 -0
  598. package/dist/public-api/v1/handlers/credentials/credentials.utils.js.map +1 -0
  599. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.d.ts +1 -0
  600. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +1 -0
  601. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
  602. package/dist/public-api/v1/handlers/workflows/workflows.handler.d.ts +0 -3
  603. package/dist/public-api/v1/handlers/workflows/workflows.handler.js +0 -76
  604. package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
  605. package/dist/public-api/v1/openapi.yml +678 -126
  606. package/dist/public-api/v1/public-api-error-response.d.ts +2 -1
  607. package/dist/public-api/v1/public-api-error-response.js +2 -2
  608. package/dist/public-api/v1/public-api-error-response.js.map +1 -1
  609. package/dist/scaling/constants.js +1 -0
  610. package/dist/scaling/constants.js.map +1 -1
  611. package/dist/scaling/job-processor.js +15 -11
  612. package/dist/scaling/job-processor.js.map +1 -1
  613. package/dist/scaling/scaling.types.d.ts +2 -1
  614. package/dist/scheduling/durable-job-provisioner.d.ts +3 -2
  615. package/dist/scheduling/durable-job-provisioner.js +42 -8
  616. package/dist/scheduling/durable-job-provisioner.js.map +1 -1
  617. package/dist/scheduling/durable-scheduler.js +5 -1
  618. package/dist/scheduling/durable-scheduler.js.map +1 -1
  619. package/dist/scheduling/owner-key.d.ts +14 -0
  620. package/dist/scheduling/owner-key.js +17 -0
  621. package/dist/scheduling/owner-key.js.map +1 -0
  622. package/dist/scheduling/poll-trigger-node/poll-job-provider.d.ts +3 -1
  623. package/dist/scheduling/poll-trigger-node/poll-job-provider.js +7 -3
  624. package/dist/scheduling/poll-trigger-node/poll-job-provider.js.map +1 -1
  625. package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.d.ts +5 -2
  626. package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.js +60 -33
  627. package/dist/scheduling/poll-trigger-node/poll-trigger-task-handler.js.map +1 -1
  628. package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.js +35 -6
  629. package/dist/scheduling/schedule-trigger-node/schedule-trigger-job-registrar.js.map +1 -1
  630. package/dist/security-audit/risk-reporters/instance-risk-reporter.js +1 -1
  631. package/dist/security-audit/risk-reporters/instance-risk-reporter.js.map +1 -1
  632. package/dist/server.js +8 -9
  633. package/dist/server.js.map +1 -1
  634. package/dist/services/ai-gateway.service.d.ts +3 -7
  635. package/dist/services/ai-gateway.service.js +31 -8
  636. package/dist/services/ai-gateway.service.js.map +1 -1
  637. package/dist/services/api-key-auth.strategy.js +3 -0
  638. package/dist/services/api-key-auth.strategy.js.map +1 -1
  639. package/dist/services/dynamic-node-parameters.service.d.ts +4 -2
  640. package/dist/services/dynamic-node-parameters.service.js +17 -3
  641. package/dist/services/dynamic-node-parameters.service.js.map +1 -1
  642. package/dist/services/folder.service.d.ts +1 -1
  643. package/dist/services/folder.service.js.map +1 -1
  644. package/dist/services/frontend.service.js +2 -1
  645. package/dist/services/frontend.service.js.map +1 -1
  646. package/dist/services/instance-write-access.service.d.ts +5 -0
  647. package/dist/services/instance-write-access.service.js +26 -0
  648. package/dist/services/instance-write-access.service.js.map +1 -0
  649. package/dist/services/oauth-token-verifier-proxy.service.d.ts +4 -2
  650. package/dist/services/oauth-token-verifier-proxy.service.js +2 -2
  651. package/dist/services/oauth-token-verifier-proxy.service.js.map +1 -1
  652. package/dist/services/ownership-transfer/ownership-transfer.manifest.json +1 -1
  653. package/dist/services/project.service.ee.js +12 -5
  654. package/dist/services/project.service.ee.js.map +1 -1
  655. package/dist/services/protected-resource.registry.d.ts +4 -0
  656. package/dist/services/protected-resource.registry.js.map +1 -1
  657. package/dist/services/pruning/workflow-history-compaction.service.js +9 -6
  658. package/dist/services/pruning/workflow-history-compaction.service.js.map +1 -1
  659. package/dist/services/role.service.d.ts +13 -3
  660. package/dist/services/role.service.js +13 -5
  661. package/dist/services/role.service.js.map +1 -1
  662. package/dist/services/sandbox-settings.service.d.ts +29 -0
  663. package/dist/services/sandbox-settings.service.js +144 -0
  664. package/dist/services/sandbox-settings.service.js.map +1 -0
  665. package/dist/services/session-cookie-auth.strategy.d.ts +11 -0
  666. package/dist/services/session-cookie-auth.strategy.js +61 -0
  667. package/dist/services/session-cookie-auth.strategy.js.map +1 -0
  668. package/dist/utils/ai-proxy-language-model.d.ts +13 -0
  669. package/dist/utils/ai-proxy-language-model.js +48 -0
  670. package/dist/utils/ai-proxy-language-model.js.map +1 -0
  671. package/dist/utils/ttl-map.d.ts +3 -1
  672. package/dist/utils/ttl-map.js +13 -17
  673. package/dist/utils/ttl-map.js.map +1 -1
  674. package/dist/webhooks/webhook-helpers.js +12 -2
  675. package/dist/webhooks/webhook-helpers.js.map +1 -1
  676. package/dist/workflow-execute-additional-data.js +17 -1
  677. package/dist/workflow-execute-additional-data.js.map +1 -1
  678. package/dist/workflow-runner.d.ts +4 -1
  679. package/dist/workflow-runner.js +6 -1
  680. package/dist/workflow-runner.js.map +1 -1
  681. package/dist/workflows/publication/trigger-diff.js +10 -1
  682. package/dist/workflows/publication/trigger-diff.js.map +1 -1
  683. package/dist/workflows/publication/workflow-publication-outbox-consumer.d.ts +3 -4
  684. package/dist/workflows/publication/workflow-publication-outbox-consumer.js +46 -50
  685. package/dist/workflows/publication/workflow-publication-outbox-consumer.js.map +1 -1
  686. package/dist/workflows/publication/workflow-publication-outbox-worker-pool.d.ts +16 -0
  687. package/dist/workflows/publication/workflow-publication-outbox-worker-pool.js +50 -0
  688. package/dist/workflows/publication/workflow-publication-outbox-worker-pool.js.map +1 -0
  689. package/dist/workflows/triggers/durable-poller-gate.service.d.ts +19 -0
  690. package/dist/workflows/triggers/durable-poller-gate.service.js +78 -0
  691. package/dist/workflows/triggers/durable-poller-gate.service.js.map +1 -0
  692. package/dist/workflows/triggers/enabled-trigger-nodes.d.ts +6 -0
  693. package/dist/workflows/triggers/enabled-trigger-nodes.js +18 -0
  694. package/dist/workflows/triggers/enabled-trigger-nodes.js.map +1 -0
  695. package/dist/workflows/triggers/poll-cursor.service.d.ts +39 -0
  696. package/dist/workflows/triggers/poll-cursor.service.js +100 -0
  697. package/dist/workflows/triggers/poll-cursor.service.js.map +1 -0
  698. package/dist/workflows/triggers/trigger-execution-context.factory.d.ts +6 -4
  699. package/dist/workflows/triggers/trigger-execution-context.factory.js +56 -7
  700. package/dist/workflows/triggers/trigger-execution-context.factory.js.map +1 -1
  701. package/dist/workflows/triggers/workflow-trigger-activator.d.ts +3 -5
  702. package/dist/workflows/triggers/workflow-trigger-activator.js +2 -11
  703. package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
  704. package/dist/workflows/workflow-creation.service.d.ts +4 -1
  705. package/dist/workflows/workflow-creation.service.js +20 -2
  706. package/dist/workflows/workflow-creation.service.js.map +1 -1
  707. package/dist/workflows/workflow-entity-mapper.js.map +1 -1
  708. package/dist/workflows/workflow-execution.service.d.ts +9 -4
  709. package/dist/workflows/workflow-execution.service.js +93 -2
  710. package/dist/workflows/workflow-execution.service.js.map +1 -1
  711. package/dist/workflows/workflow-finder.service.d.ts +1 -0
  712. package/dist/workflows/workflow-finder.service.js +5 -1
  713. package/dist/workflows/workflow-finder.service.js.map +1 -1
  714. package/dist/workflows/workflow-validation.service.d.ts +1 -0
  715. package/dist/workflows/workflow-validation.service.js +32 -11
  716. package/dist/workflows/workflow-validation.service.js.map +1 -1
  717. package/dist/workflows/workflow.service.d.ts +1 -0
  718. package/dist/workflows/workflow.service.js +18 -4
  719. package/dist/workflows/workflow.service.js.map +1 -1
  720. package/package.json +42 -41
  721. package/templates/form-shell.handlebars +155 -86
  722. package/templates/form-trigger.handlebars +97 -2
  723. package/dist/modules/agents/agent-knowledge-gate.d.ts +0 -2
  724. package/dist/modules/agents/agent-knowledge-gate.js +0 -7
  725. package/dist/modules/agents/agent-knowledge-gate.js.map +0 -1
  726. package/dist/modules/agents/agent-knowledge-sandbox.service.js +0 -693
  727. package/dist/modules/agents/agent-knowledge-sandbox.service.js.map +0 -1
  728. package/dist/modules/workflow-reviews.ee/workflow-review-decision-eligibility.service.d.ts +0 -15
  729. package/dist/modules/workflow-reviews.ee/workflow-review-decision-eligibility.service.js +0 -52
  730. package/dist/modules/workflow-reviews.ee/workflow-review-decision-eligibility.service.js.map +0 -1
  731. package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +0 -36
  732. package/dist/public-api/v1/handlers/credentials/credentials.service.js +0 -330
  733. package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +0 -1
@@ -10,6 +10,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.InstanceAiService = exports.QuotaExhaustedStreamError = exports.QUOTA_EXHAUSTED_USER_MESSAGE = void 0;
13
+ exports.buildContextResourcesBlock = buildContextResourcesBlock;
14
+ exports.isAttachmentRejectedByProviderError = isAttachmentRejectedByProviderError;
13
15
  exports.getUserFacingErrorMessage = getUserFacingErrorMessage;
14
16
  exports.isMaskedStreamFailure = isMaskedStreamFailure;
15
17
  const agents_1 = require("@n8n/agents");
@@ -32,9 +34,9 @@ const forbidden_error_1 = require("../../errors/response-errors/forbidden.error"
32
34
  const event_service_1 = require("../../events/event.service");
33
35
  const instance_ai_builder_delegate_adapter_1 = require("../../modules/agents/instance-ai-builder-delegate.adapter");
34
36
  const check_access_1 = require("../../permissions.ee/check-access");
35
- const source_control_preferences_service_ee_1 = require("../../modules/source-control.ee/source-control-preferences.service.ee");
36
37
  const publisher_service_1 = require("../../scaling/pubsub/publisher.service");
37
38
  const ai_service_1 = require("../../services/ai.service");
39
+ const instance_write_access_service_1 = require("../../services/instance-write-access.service");
38
40
  const proxy_token_manager_1 = require("../../services/proxy-token-manager");
39
41
  const url_service_1 = require("../../services/url.service");
40
42
  const telemetry_2 = require("../../telemetry");
@@ -42,6 +44,8 @@ const utils_1 = require("../../utils");
42
44
  const agent_preview_handoff_1 = require("./agent-preview-handoff");
43
45
  const composite_local_mcp_server_1 = require("./browser/composite-local-mcp-server");
44
46
  const instance_ai_browser_session_service_1 = require("./browser/instance-ai-browser-session.service");
47
+ const canvas_node_context_flag_gate_1 = require("./canvas-node-context-flag-gate");
48
+ const drop_rejected_attachments_1 = require("./drop-rejected-attachments");
45
49
  const thread_credential_allowlist_service_1 = require("./eval/thread-credential-allowlist.service");
46
50
  const durable_event_log_1 = require("./event-bus/durable-event-log");
47
51
  const in_process_event_bus_1 = require("./event-bus/in-process-event-bus");
@@ -70,6 +74,7 @@ const db_iteration_log_storage_1 = require("./storage/db-iteration-log-storage")
70
74
  const db_snapshot_storage_1 = require("./storage/db-snapshot-storage");
71
75
  const typeorm_agent_checkpoint_store_1 = require("./storage/typeorm-agent-checkpoint-store");
72
76
  const typeorm_agent_memory_1 = require("./storage/typeorm-agent-memory");
77
+ const stream_transport_error_1 = require("./stream-transport-error");
73
78
  const suspended_run_restorer_service_1 = require("./suspended-run-restorer.service");
74
79
  const suspended_thread_persistence_service_1 = require("./suspended-thread-persistence.service");
75
80
  const tracing_1 = require("./tracing");
@@ -92,10 +97,33 @@ function buildSuspensionTraceOutputs(runId, suspension) {
92
97
  ...(message ? { message } : {}),
93
98
  };
94
99
  }
100
+ function buildNodesAttachmentLine(attachment) {
101
+ const setLines = attachment.sets.map((set) => {
102
+ const names = set.nodes.map((node) => node.name ?? node.id);
103
+ const label = names.length === 1
104
+ ? `Node "${names[0]}"`
105
+ : `A chain of connected nodes: ${names.join(' → ')}`;
106
+ const input = set.inputNode ? `, preceded by "${set.inputNode.name ?? set.inputNode.id}"` : '';
107
+ const output = set.outputNode
108
+ ? `, followed by "${set.outputNode.name ?? set.outputNode.id}"`
109
+ : '';
110
+ const group = set.canvasGroupName
111
+ ? `, part of canvas group "${set.canvasGroupName}"`
112
+ : set.canvasGroupId
113
+ ? `, part of canvas group \`${set.canvasGroupId}\``
114
+ : '';
115
+ return ` - ${label}${input}${output}${group}.`;
116
+ });
117
+ return `- Selected nodes in workflow \`${attachment.workflowId}\`:\n${setLines.join('\n')}`;
118
+ }
95
119
  function buildContextResourcesBlock(contextAttachments) {
96
- if (contextAttachments.length === 0)
120
+ if (contextAttachments.length === 0) {
97
121
  return '';
122
+ }
98
123
  const lines = contextAttachments.map((attachment) => {
124
+ if (attachment.type === 'nodes') {
125
+ return buildNodesAttachmentLine(attachment);
126
+ }
99
127
  const name = attachment.name ? ` "${attachment.name}"` : '';
100
128
  if (attachment.type === 'agent') {
101
129
  if (attachment.pending) {
@@ -124,6 +152,9 @@ function buildContextResourcesBlock(contextAttachments) {
124
152
  .join('\n');
125
153
  return `${internal_messages_1.EDITOR_CONTEXT_OPEN_TAG}\n${JSON.stringify(contextAttachments)}\n\n${prose}\n${internal_messages_1.EDITOR_CONTEXT_CLOSE_TAG}`;
126
154
  }
155
+ function isNamedResourceAttachment(attachment) {
156
+ return attachment.type !== 'nodes' && Boolean(attachment.name);
157
+ }
127
158
  function buildHandoffContextBlock(context) {
128
159
  if (!context || context.source !== 'credential-modal')
129
160
  return '';
@@ -181,16 +212,41 @@ function isSandboxEndpointNotAllowedError(error) {
181
212
  function isStaleResumeError(error) {
182
213
  return error instanceof Error && error.name === 'StaleResumeError';
183
214
  }
215
+ const ATTACHMENT_SUBJECT_PATTERN = /image|attachment/;
216
+ const ATTACHMENT_REFUSAL_PATTERN = /exceed|too large|maximum|max allowed|could not process/;
217
+ function collectErrorText(value, depth = 0) {
218
+ if (depth > 4 || value === null || value === undefined)
219
+ return [];
220
+ if (typeof value === 'string')
221
+ return [value];
222
+ if (Array.isArray(value))
223
+ return value.flatMap((item) => collectErrorText(item, depth + 1));
224
+ if (value instanceof Error) {
225
+ return [value.message, ...collectErrorText(Reflect.get(value, 'cause'), depth + 1)];
226
+ }
227
+ if (typeof value === 'object') {
228
+ const record = value;
229
+ return ['message', 'error', 'responseBody', 'data', 'cause', 'errors'].flatMap((key) => collectErrorText(record[key], depth + 1));
230
+ }
231
+ return [];
232
+ }
233
+ function isAttachmentRejectedByProviderError(error) {
234
+ const haystack = [getErrorMessage(error), ...collectErrorText(error)].join(' ').toLowerCase();
235
+ return ATTACHMENT_SUBJECT_PATTERN.test(haystack) && ATTACHMENT_REFUSAL_PATTERN.test(haystack);
236
+ }
184
237
  exports.QUOTA_EXHAUSTED_USER_MESSAGE = "You've run out of AI credits. Upgrade your plan to continue using the AI assistant.";
185
238
  const OPERATIONAL_ERROR_USER_MESSAGE = 'I hit an operational error before I could finish that response. Please try again.';
186
239
  const GENERIC_ERROR_USER_MESSAGE = 'Something went wrong before I could finish that response. Please try again.';
187
240
  function getUserFacingErrorCode(error) {
188
241
  return (0, instance_ai_1.isQuotaExhaustedError)(error) ? 'quota_exhausted' : undefined;
189
242
  }
190
- function getUserFacingErrorMessage(error, fallback = GENERIC_ERROR_USER_MESSAGE) {
243
+ function getUserFacingErrorMessage(error, fallback = GENERIC_ERROR_USER_MESSAGE, opts = {}) {
191
244
  if ((0, instance_ai_1.isQuotaExhaustedError)(error)) {
192
245
  return exports.QUOTA_EXHAUSTED_USER_MESSAGE;
193
246
  }
247
+ if ((0, stream_transport_error_1.isStreamTransportError)(error)) {
248
+ return 'The connection to the AI provider dropped before I could finish that response. Please try again.';
249
+ }
194
250
  if (error instanceof n8n_workflow_1.UserError) {
195
251
  return error.message;
196
252
  }
@@ -200,6 +256,16 @@ function getUserFacingErrorMessage(error, fallback = GENERIC_ERROR_USER_MESSAGE)
200
256
  if (isSandboxEndpointNotAllowedError(error)) {
201
257
  return "I couldn't finish preparing the workspace sandbox. Please try again in a moment.";
202
258
  }
259
+ if (opts.attachmentRemoved !== undefined || isAttachmentRejectedByProviderError(error)) {
260
+ const sizeAdvice = isAttachmentRejectedByProviderError(error)
261
+ ? ` Keep it under ${(0, api_types_1.formatAttachmentSizeLimit)()}, and for images no more than 8000x8000 pixels.`
262
+ : '';
263
+ return opts.attachmentRemoved === false
264
+ ? 'I could not read one of the attached files, and I could not remove it from this ' +
265
+ `conversation either. Start a new chat and attach it again.${sizeAdvice}`
266
+ : 'I could not read one of the attached files, so I left it out. Attach it again — ' +
267
+ `ideally a smaller version.${sizeAdvice}`;
268
+ }
203
269
  if (error instanceof n8n_workflow_1.OperationalError) {
204
270
  return OPERATIONAL_ERROR_USER_MESSAGE;
205
271
  }
@@ -212,6 +278,18 @@ function isMaskedStreamFailure(error) {
212
278
  return true;
213
279
  return error.name === 'TypeError' && error.message === 'terminated';
214
280
  }
281
+ const GENERATION_STAGE_ERROR_CODES = new Set([
282
+ 'missing_captured_fields',
283
+ 'unresolved_field',
284
+ 'gateway_context_missing',
285
+ ]);
286
+ function failureStageForErrorCode(errorCode) {
287
+ if (errorCode && GENERATION_STAGE_ERROR_CODES.has(errorCode))
288
+ return 'generation';
289
+ if (errorCode === 'credential_create_failed')
290
+ return 'persistence';
291
+ return 'unknown';
292
+ }
215
293
  class QuotaExhaustedStreamError extends n8n_workflow_1.UserError {
216
294
  constructor(maskedError) {
217
295
  super(`AI credits exhausted (${maskedError.name}: ${maskedError.message})`, {
@@ -266,15 +344,21 @@ function toConfirmationData(request) {
266
344
  case 'credentialSelection':
267
345
  return { approved: true, credentials: request.credentials };
268
346
  case 'credentialAutoSetup':
269
- return { approved: true, autoSetup: { credentialType: request.credentialType } };
347
+ return {
348
+ approved: true,
349
+ autoSetup: { credentialType: request.credentialType, attemptId: request.attemptId },
350
+ };
270
351
  case 'resourceDecision':
271
352
  return { approved: true, resourceDecision: request.resourceDecision };
353
+ case 'mcpConnect':
354
+ return { approved: request.approved, connectedSlugs: request.connectedSlugs };
272
355
  case 'setupWorkflowApply':
273
356
  return {
274
357
  approved: true,
275
358
  action: 'apply',
276
359
  nodeCredentials: request.nodeCredentials,
277
360
  nodeParameters: request.nodeParameters,
361
+ skippedNodes: request.skippedNodes,
278
362
  };
279
363
  case 'setupWorkflowTestTrigger':
280
364
  return {
@@ -293,7 +377,7 @@ let InstanceAiService = class InstanceAiService {
293
377
  }
294
378
  return this._mcpClientManager;
295
379
  }
296
- constructor(logger, globalConfig, instanceSettings, adapterService, eventBus, eventLog, interruptedRunSweeper, settingsService, gatewayService, browserSessionService, memoryService, agentMemory, checkpointStore, aiService, threadGrantRepo, pendingConfirmationRepo, urlService, dbSnapshotStorage, dbIterationLogStorage, sourceControlPreferencesService, telemetry, mcpRegistryService, userRepository, temporaryWorkflowService, errorReporter, ssrfProtectionConfig, ssrfProtectionService, eventService, evalCredentialAllowlists, runProbe, modelService, creditService, publisher, instanceAiErrorReporter) {
380
+ constructor(logger, globalConfig, instanceSettings, adapterService, eventBus, eventLog, interruptedRunSweeper, settingsService, gatewayService, browserSessionService, memoryService, agentMemory, checkpointStore, aiService, threadGrantRepo, pendingConfirmationRepo, urlService, dbSnapshotStorage, dbIterationLogStorage, instanceWriteAccess, telemetry, mcpRegistryService, userRepository, temporaryWorkflowService, errorReporter, ssrfProtectionConfig, ssrfProtectionService, eventService, evalCredentialAllowlists, runProbe, modelService, creditService, publisher, instanceAiErrorReporter, canvasNodeContextFlagGate) {
297
381
  this.instanceSettings = instanceSettings;
298
382
  this.adapterService = adapterService;
299
383
  this.eventBus = eventBus;
@@ -311,7 +395,7 @@ let InstanceAiService = class InstanceAiService {
311
395
  this.urlService = urlService;
312
396
  this.dbSnapshotStorage = dbSnapshotStorage;
313
397
  this.dbIterationLogStorage = dbIterationLogStorage;
314
- this.sourceControlPreferencesService = sourceControlPreferencesService;
398
+ this.instanceWriteAccess = instanceWriteAccess;
315
399
  this.telemetry = telemetry;
316
400
  this.mcpRegistryService = mcpRegistryService;
317
401
  this.userRepository = userRepository;
@@ -323,11 +407,13 @@ let InstanceAiService = class InstanceAiService {
323
407
  this.creditService = creditService;
324
408
  this.publisher = publisher;
325
409
  this.instanceAiErrorReporter = instanceAiErrorReporter;
410
+ this.canvasNodeContextFlagGate = canvasNodeContextFlagGate;
326
411
  this.runState = new instance_ai_1.RunStateRegistry();
327
412
  this.backgroundTasks = new instance_ai_1.BackgroundTaskManager(MAX_CONCURRENT_BACKGROUND_TASKS_PER_THREAD);
328
413
  this.memoryTaskRegistry = new instance_ai_1.MemoryTaskRegistry();
329
414
  this.domainAccessTrackersByThread = new Map();
330
415
  this.threadPushRef = new Map();
416
+ this.pendingBrowserCredentialSetups = new Map();
331
417
  this.planRequestsByThread = new Map();
332
418
  this.schedulerLocks = new Map();
333
419
  this.failedInternalFollowUpStreaks = new Map();
@@ -404,6 +490,7 @@ let InstanceAiService = class InstanceAiService {
404
490
  dbSnapshotStorage: this.dbSnapshotStorage,
405
491
  agentMemory: this.agentMemory,
406
492
  telemetry: this.telemetry,
493
+ errorReporter: this.instanceAiErrorReporter,
407
494
  logger: this.logger,
408
495
  runState: this.runState,
409
496
  suspendedThreads: this.suspendedThreads,
@@ -494,6 +581,18 @@ let InstanceAiService = class InstanceAiService {
494
581
  });
495
582
  }
496
583
  }
584
+ async revokeThreadSessionGrant(threadId, userId, key) {
585
+ try {
586
+ await this.threadGrantRepo.revoke(threadId, userId, key);
587
+ }
588
+ catch (error) {
589
+ this.logger.warn('Failed to revoke Instance AI session grant', {
590
+ threadId,
591
+ key,
592
+ error: getErrorMessage(error),
593
+ });
594
+ }
595
+ }
497
596
  isProxyEnabled() {
498
597
  return this.modelService.isProxyEnabled();
499
598
  }
@@ -502,6 +601,15 @@ let InstanceAiService = class InstanceAiService {
502
601
  const credits = await this.modelService.getCredits(user);
503
602
  return (0, instance_ai_credit_display_1.maskCreditsForDisplay)(credits, this.settingsService.isActivationCapped());
504
603
  }
604
+ async dropTurnAttachments(args) {
605
+ const outcome = await (0, drop_rejected_attachments_1.dropRejectedAttachmentsFromHistory)(this.agentMemory, { threadId: args.threadId, resourceId: args.resourceId }, this.logger);
606
+ if (outcome === 'no-attachments')
607
+ return undefined;
608
+ return outcome === 'removed';
609
+ }
610
+ shouldDropTurnAttachments(args) {
611
+ return args.turnHadAttachments && args.producedNoOutput;
612
+ }
505
613
  async reclassifyMaskedStreamFailure(error, user, context) {
506
614
  if (!isMaskedStreamFailure(error))
507
615
  return error;
@@ -563,7 +671,9 @@ let InstanceAiService = class InstanceAiService {
563
671
  }
564
672
  subscribeToAgentErrors(agent, threadId, runId) {
565
673
  agent.on("error", (event) => {
566
- if (event.type !== "error" || !event.source)
674
+ if (event.type !== "error")
675
+ return;
676
+ if (!event.source)
567
677
  return;
568
678
  const severity = (0, instance_ai_error_reporter_service_1.getAgentErrorSeverity)(event.source);
569
679
  this.instanceAiErrorReporter.report(event.error, {
@@ -1331,9 +1441,10 @@ let InstanceAiService = class InstanceAiService {
1331
1441
  const userGateway = this.gatewayService.findGateway(user.id);
1332
1442
  await this.creditService.ensureQuotaLockApplied(user);
1333
1443
  const { searchProxyConfig, tracingProxyConfig, tokenManager, proxyBaseUrl } = proxyRunConfig ?? (await this.createProxyRunConfig(user));
1444
+ const proxyContext = { runId, threadId };
1334
1445
  const modelId = proxyBaseUrl && tokenManager
1335
- ? await this.modelService.resolveProxyModel(user, proxyBaseUrl, tokenManager)
1336
- : await this.modelService.resolveAgentModelConfig(user);
1446
+ ? await this.modelService.resolveProxyModel(user, proxyBaseUrl, tokenManager, proxyContext)
1447
+ : await this.modelService.resolveAgentModelConfig(user, proxyContext);
1337
1448
  const configEvalsEnabled = await this.adapterService.isConfigEvalsEnabled(user);
1338
1449
  const mcpConnectionsEnabled = await this.adapterService.isMcpConnectionsEnabled(user);
1339
1450
  const context = this.adapterService.createContext(user, {
@@ -1357,11 +1468,12 @@ let InstanceAiService = class InstanceAiService {
1357
1468
  context.localMcpServer = localMcpServer;
1358
1469
  }
1359
1470
  context.permissions = this.settingsService.getPermissions();
1360
- if (this.sourceControlPreferencesService.getPreferences().branchReadOnly) {
1471
+ if (this.instanceWriteAccess.isReadOnly()) {
1361
1472
  context.permissions = (0, api_types_1.applyBranchReadOnlyOverrides)(context.permissions);
1362
1473
  context.branchReadOnly = true;
1363
1474
  }
1364
1475
  context.runId = runId;
1476
+ context.browserCredentialSetup = this.createBrowserCredentialSetupTracker(runId, user.id);
1365
1477
  const sessionGrants = await this.loadThreadSessionGrants(threadId, user.id);
1366
1478
  context.sessionApprovedToolKeys = sessionGrants;
1367
1479
  const grantSessionToolApproval = async (key) => {
@@ -1369,6 +1481,10 @@ let InstanceAiService = class InstanceAiService {
1369
1481
  sessionGrants.add(key);
1370
1482
  };
1371
1483
  context.grantSessionToolApproval = grantSessionToolApproval;
1484
+ context.revokeSessionToolApproval = async (key) => {
1485
+ await this.revokeThreadSessionGrant(threadId, user.id, key);
1486
+ sessionGrants.delete(key);
1487
+ };
1372
1488
  const domainTracker = (0, instance_ai_1.createDomainAccessTracker)({
1373
1489
  grantedKeys: sessionGrants,
1374
1490
  persistGrant: grantSessionToolApproval,
@@ -1451,7 +1567,7 @@ let InstanceAiService = class InstanceAiService {
1451
1567
  if (!workspace)
1452
1568
  return undefined;
1453
1569
  const root = await (0, instance_ai_1.getWorkspaceRoot)(workspace);
1454
- return (0, instance_ai_1.createScopedWorkspace)(workspace, root);
1570
+ return (0, agents_1.createScopedWorkspace)(workspace, root);
1455
1571
  };
1456
1572
  runtimeWorkspace = (0, instance_ai_1.createLazyRuntimeWorkspace)({
1457
1573
  sandboxInstructions: '',
@@ -2079,14 +2195,21 @@ let InstanceAiService = class InstanceAiService {
2079
2195
  });
2080
2196
  }
2081
2197
  }
2082
- async executeRun(user, threadId, runId, message, abortController, attachments, handoffContext, messageGroupId, timeZone, isReplanFollowUp = false, checkpoint, resumeReason, plannedBuild) {
2083
- const fileAttachments = (attachments ?? []).filter((attachment) => attachment.type === 'file');
2084
- const workflowAttachments = (attachments ?? []).filter((attachment) => attachment.type === 'workflow');
2085
- const agentAttachments = (attachments ?? []).filter((attachment) => attachment.type === 'agent');
2086
- const contextAttachments = [
2198
+ async resolveContextAttachments(attachments, user) {
2199
+ const attachmentsOrEmpty = attachments ?? [];
2200
+ const workflowAttachments = attachmentsOrEmpty.filter((attachment) => attachment.type === 'workflow');
2201
+ const agentAttachments = attachmentsOrEmpty.filter((attachment) => attachment.type === 'agent');
2202
+ const nodeAttachments = attachmentsOrEmpty.filter((attachment) => attachment.type === 'nodes');
2203
+ const canvasNodeContextEnabled = nodeAttachments.length > 0 && (await this.canvasNodeContextFlagGate.isEnabled(user));
2204
+ return [
2087
2205
  ...workflowAttachments,
2088
2206
  ...agentAttachments,
2207
+ ...(canvasNodeContextEnabled ? nodeAttachments : []),
2089
2208
  ];
2209
+ }
2210
+ async executeRun(user, threadId, runId, message, abortController, attachments, handoffContext, messageGroupId, timeZone, isReplanFollowUp = false, checkpoint, resumeReason, plannedBuild) {
2211
+ const fileAttachments = (attachments ?? []).filter((attachment) => attachment.type === 'file');
2212
+ const contextAttachments = await this.resolveContextAttachments(attachments, user);
2090
2213
  const signal = abortController.signal;
2091
2214
  let tracing;
2092
2215
  let messageTraceFinalization;
@@ -2094,6 +2217,7 @@ let InstanceAiService = class InstanceAiService {
2094
2217
  let activeSnapshotStorage;
2095
2218
  let messageId = '';
2096
2219
  let streamReached = false;
2220
+ let turnHadFileAttachments = false;
2097
2221
  const turnStartedAt = new Date();
2098
2222
  let errorReporterExecutionToken;
2099
2223
  try {
@@ -2108,6 +2232,9 @@ let InstanceAiService = class InstanceAiService {
2108
2232
  }
2109
2233
  if (contextAttachments.length) {
2110
2234
  traceInput.resourceAttachments = contextAttachments.map((attachment) => {
2235
+ if (attachment.type === 'nodes') {
2236
+ return { type: attachment.type, id: attachment.workflowId };
2237
+ }
2111
2238
  const resource = {
2112
2239
  type: attachment.type,
2113
2240
  id: attachment.id,
@@ -2283,8 +2410,7 @@ let InstanceAiService = class InstanceAiService {
2283
2410
  }
2284
2411
  const thread = await memory.getThread(threadId);
2285
2412
  if (thread && !thread.title) {
2286
- const handoffTitle = contextAttachments.find((attachment) => attachment.name)?.name ??
2287
- agentPreviewTitleFallback;
2413
+ const handoffTitle = contextAttachments.find(isNamedResourceAttachment)?.name ?? agentPreviewTitleFallback;
2288
2414
  await (0, instance_ai_1.patchThread)(memory, {
2289
2415
  threadId,
2290
2416
  update: ({ metadata }) => handoffTitle
@@ -2310,6 +2436,7 @@ let InstanceAiService = class InstanceAiService {
2310
2436
  if (fileAttachments.length > 0) {
2311
2437
  const classifiedAttachments = (0, instance_ai_1.classifyAttachments)(fileAttachments);
2312
2438
  nonStructuredAttachments = fileAttachments.filter((attachment) => !(0, instance_ai_1.isParseableAttachment)(attachment));
2439
+ turnHadFileAttachments = nonStructuredAttachments.length > 0;
2313
2440
  hasParseableAttachment = classifiedAttachments.some((attachment) => attachment.parseable);
2314
2441
  attachmentManifest = (0, instance_ai_1.buildAttachmentManifest)(classifiedAttachments);
2315
2442
  }
@@ -2533,6 +2660,7 @@ let InstanceAiService = class InstanceAiService {
2533
2660
  if (result.status === 'errored') {
2534
2661
  this.instanceAiErrorReporter.report(terminalError ?? new Error('Instance AI stream errored'), {
2535
2662
  component: 'instance-ai-stream',
2663
+ providerStream: true,
2536
2664
  threadId,
2537
2665
  runId,
2538
2666
  tracing,
@@ -2542,7 +2670,15 @@ let InstanceAiService = class InstanceAiService {
2542
2670
  messageId,
2543
2671
  });
2544
2672
  }
2545
- const userFacingErrorMessage = result.status === 'errored' ? getUserFacingErrorMessage(terminalError) : undefined;
2673
+ const attachmentRemoved = this.shouldDropTurnAttachments({
2674
+ turnHadAttachments: turnHadFileAttachments,
2675
+ producedNoOutput: result.status === 'errored' && outputText.length === 0,
2676
+ })
2677
+ ? await this.dropTurnAttachments({ threadId, resourceId: user.id })
2678
+ : undefined;
2679
+ const userFacingErrorMessage = result.status === 'errored'
2680
+ ? getUserFacingErrorMessage(terminalError, undefined, { attachmentRemoved })
2681
+ : undefined;
2546
2682
  const userFacingErrorCode = result.status === 'errored' ? getUserFacingErrorCode(terminalError) : undefined;
2547
2683
  if (runControl.shouldEmitTerminalOutcome(result.stopReason)) {
2548
2684
  await this.terminalOutcome.evaluateTerminalResponse(threadId, runId, result.status, {
@@ -2640,8 +2776,16 @@ let InstanceAiService = class InstanceAiService {
2640
2776
  threadId,
2641
2777
  runId,
2642
2778
  });
2779
+ const attachmentRemoved = this.shouldDropTurnAttachments({
2780
+ turnHadAttachments: turnHadFileAttachments,
2781
+ producedNoOutput: true,
2782
+ })
2783
+ ? await this.dropTurnAttachments({ threadId, resourceId: user.id })
2784
+ : undefined;
2643
2785
  const errorMessage = getErrorMessage(terminalError);
2644
- const userFacingErrorMessage = getUserFacingErrorMessage(terminalError);
2786
+ const userFacingErrorMessage = getUserFacingErrorMessage(terminalError, undefined, {
2787
+ attachmentRemoved,
2788
+ });
2645
2789
  const userFacingErrorCode = getUserFacingErrorCode(terminalError);
2646
2790
  const errCtx = {
2647
2791
  threadId,
@@ -3052,7 +3196,7 @@ let InstanceAiService = class InstanceAiService {
3052
3196
  throw new forbidden_error_1.ForbiddenError('You do not have permission to load or edit agent previews in this project.');
3053
3197
  }
3054
3198
  }
3055
- async rebuildAgentForAutoSetupResume(user, threadId, runId, abortController, tracing, runHandoff, messageGroupId) {
3199
+ async rebuildAgentForResume(user, threadId, runId, abortController, tracing, runHandoff, messageGroupId) {
3056
3200
  try {
3057
3201
  const rebuilt = await this.buildFreshInstanceAgent(user, threadId, runId, abortController.signal, tracing, messageGroupId, this.threadPushRef.get(threadId));
3058
3202
  (0, instance_ai_1.createOrchestratorRunControl)(rebuilt.orchestrationContext, runHandoff ?? {});
@@ -3063,7 +3207,7 @@ let InstanceAiService = class InstanceAiService {
3063
3207
  };
3064
3208
  }
3065
3209
  catch (error) {
3066
- this.logger.warn('Failed to rebuild agent for credential auto-setup resume', {
3210
+ this.logger.warn('Failed to rebuild agent for resume', {
3067
3211
  threadId,
3068
3212
  runId,
3069
3213
  error: getErrorMessage(error),
@@ -3116,11 +3260,14 @@ let InstanceAiService = class InstanceAiService {
3116
3260
  ...(data.domainAccessAction ? { domainAccessAction: data.domainAccessAction } : {}),
3117
3261
  ...(data.action ? { action: data.action } : {}),
3118
3262
  ...(data.nodeParameters ? { nodeParameters: data.nodeParameters } : {}),
3263
+ ...(data.skippedNodes ? { skippedNodes: data.skippedNodes } : {}),
3119
3264
  ...(data.testTriggerNode ? { testTriggerNode: data.testTriggerNode } : {}),
3120
3265
  ...(data.answers ? { answers: data.answers } : {}),
3121
3266
  ...(data.resourceDecision ? { resourceDecision: data.resourceDecision } : {}),
3122
3267
  ...(data.scope ? { scope: data.scope } : {}),
3123
3268
  ...(data.autoSetup ? { autoSetup: data.autoSetup } : {}),
3269
+ ...(data.denied ? { denied: true } : {}),
3270
+ ...(data.connectedSlugs ? { connectedSlugs: data.connectedSlugs } : {}),
3124
3271
  };
3125
3272
  const resumeTracing = await this.tracing.createOrchestratorResumeTraceContext({
3126
3273
  baseTracing: tracing,
@@ -3159,8 +3306,8 @@ let InstanceAiService = class InstanceAiService {
3159
3306
  let resumeAgent = agent;
3160
3307
  let resumeModelId = modelId;
3161
3308
  let resumeOrchestrationContext = orchestrationContext;
3162
- if (data.autoSetup) {
3163
- const rebuilt = await this.rebuildAgentForAutoSetupResume(activeUser, threadId, runId, abortController, effectiveTracing, runHandoff, messageGroupId);
3309
+ if (data.autoSetup || data.connectedSlugs?.length) {
3310
+ const rebuilt = await this.rebuildAgentForResume(activeUser, threadId, runId, abortController, effectiveTracing, runHandoff, messageGroupId);
3164
3311
  if (!rebuilt) {
3165
3312
  const rebuildFailure = 'Agent rebuild failed';
3166
3313
  await this.tracing.finalizeDetachedTraceRun(`resume-rebuild:${runId}`, unregisteredResumeTracing, {
@@ -3217,6 +3364,7 @@ let InstanceAiService = class InstanceAiService {
3217
3364
  let resumeClaimed = false;
3218
3365
  let resumeTraceRegistered = false;
3219
3366
  let errorReporterExecutionToken;
3367
+ let resumedRunProducedOutput = false;
3220
3368
  const onResumeClaimed = async () => {
3221
3369
  if (resumeClaimed)
3222
3370
  return;
@@ -3389,6 +3537,7 @@ let InstanceAiService = class InstanceAiService {
3389
3537
  return;
3390
3538
  }
3391
3539
  const outputText = await (result.text ?? Promise.resolve(''));
3540
+ resumedRunProducedOutput = outputText.length > 0;
3392
3541
  const messageGroupId = this.tracing.getMessageGroupId(opts.runId);
3393
3542
  const terminalError = result.status === 'errored'
3394
3543
  ? await this.reclassifyMaskedStreamFailure(result.error, opts.user, {
@@ -3399,6 +3548,7 @@ let InstanceAiService = class InstanceAiService {
3399
3548
  if (result.status === 'errored') {
3400
3549
  this.instanceAiErrorReporter.report(terminalError ?? new Error('Instance AI resumed stream errored'), {
3401
3550
  component: 'instance-ai-stream',
3551
+ providerStream: true,
3402
3552
  threadId: opts.threadId,
3403
3553
  runId: opts.runId,
3404
3554
  tracing: opts.tracing,
@@ -3407,7 +3557,18 @@ let InstanceAiService = class InstanceAiService {
3407
3557
  messageGroupId,
3408
3558
  });
3409
3559
  }
3410
- const userFacingErrorMessage = result.status === 'errored' ? getUserFacingErrorMessage(terminalError) : undefined;
3560
+ const attachmentRemoved = this.shouldDropTurnAttachments({
3561
+ turnHadAttachments: true,
3562
+ producedNoOutput: result.status === 'errored' && outputText.length === 0,
3563
+ })
3564
+ ? await this.dropTurnAttachments({
3565
+ threadId: opts.threadId,
3566
+ resourceId: opts.user.id,
3567
+ })
3568
+ : undefined;
3569
+ const userFacingErrorMessage = result.status === 'errored'
3570
+ ? getUserFacingErrorMessage(terminalError, undefined, { attachmentRemoved })
3571
+ : undefined;
3411
3572
  const userFacingErrorCode = result.status === 'errored' ? getUserFacingErrorCode(terminalError) : undefined;
3412
3573
  if (runControl.shouldEmitTerminalOutcome(result.stopReason)) {
3413
3574
  await this.terminalOutcome.evaluateTerminalResponse(opts.threadId, opts.runId, result.status, {
@@ -3505,8 +3666,19 @@ let InstanceAiService = class InstanceAiService {
3505
3666
  threadId: opts.threadId,
3506
3667
  runId: opts.runId,
3507
3668
  });
3669
+ const attachmentRemoved = this.shouldDropTurnAttachments({
3670
+ turnHadAttachments: true,
3671
+ producedNoOutput: !resumedRunProducedOutput,
3672
+ })
3673
+ ? await this.dropTurnAttachments({
3674
+ threadId: opts.threadId,
3675
+ resourceId: opts.user.id,
3676
+ })
3677
+ : undefined;
3508
3678
  const errorMessage = getErrorMessage(terminalError);
3509
- const userFacingErrorMessage = getUserFacingErrorMessage(terminalError);
3679
+ const userFacingErrorMessage = getUserFacingErrorMessage(terminalError, undefined, {
3680
+ attachmentRemoved,
3681
+ });
3510
3682
  const userFacingErrorCode = getUserFacingErrorCode(terminalError);
3511
3683
  const messageGroupId = this.tracing.getMessageGroupId(opts.runId);
3512
3684
  const errCtx = {
@@ -3897,6 +4069,8 @@ let InstanceAiService = class InstanceAiService {
3897
4069
  const inputThreadId = (0, nanoid_1.nanoid)();
3898
4070
  payload.inputThreadId = inputThreadId;
3899
4071
  const inputType = payload.inputType;
4072
+ const mcpConnectServers = api_types_1.mcpConnectRequestSchema.safeParse(payload.mcpConnectRequest).data
4073
+ ?.servers;
3900
4074
  let type;
3901
4075
  if (inputType) {
3902
4076
  type = inputType;
@@ -3907,6 +4081,9 @@ let InstanceAiService = class InstanceAiService {
3907
4081
  else if (Array.isArray(payload.credentialRequests) && payload.credentialRequests.length > 0) {
3908
4082
  type = 'credential-setup';
3909
4083
  }
4084
+ else if (mcpConnectServers) {
4085
+ type = 'mcp-connect';
4086
+ }
3910
4087
  else {
3911
4088
  type = 'approval';
3912
4089
  }
@@ -3920,6 +4097,9 @@ let InstanceAiService = class InstanceAiService {
3920
4097
  else if (Array.isArray(payload.credentialRequests)) {
3921
4098
  numSteps = payload.credentialRequests.length;
3922
4099
  }
4100
+ else if (mcpConnectServers) {
4101
+ numSteps = mcpConnectServers.length;
4102
+ }
3923
4103
  if (inputType === 'plan-review') {
3924
4104
  const planCount = (this.planRequestsByThread.get(threadId) ?? 0) + 1;
3925
4105
  this.planRequestsByThread.set(threadId, planCount);
@@ -4004,6 +4184,7 @@ let InstanceAiService = class InstanceAiService {
4004
4184
  status: effectiveStatus,
4005
4185
  ...(userId ? { user_id: userId } : {}),
4006
4186
  });
4187
+ this.emitBrowserCredentialSetupOutcomes(threadId, runId, status, reason);
4007
4188
  if (status === 'errored') {
4008
4189
  this.telemetry.track('Builder generation errored', {
4009
4190
  thread_id: threadId,
@@ -4014,6 +4195,86 @@ let InstanceAiService = class InstanceAiService {
4014
4195
  });
4015
4196
  }
4016
4197
  }
4198
+ createBrowserCredentialSetupTracker(runId, userId) {
4199
+ const getOrCreateAttempts = () => {
4200
+ let pending = this.pendingBrowserCredentialSetups.get(runId);
4201
+ if (!pending) {
4202
+ pending = { userId, attempts: [] };
4203
+ this.pendingBrowserCredentialSetups.set(runId, pending);
4204
+ }
4205
+ return pending.attempts;
4206
+ };
4207
+ const resolveOpenAttempt = (credentialType) => {
4208
+ const attempts = getOrCreateAttempts();
4209
+ let attempt = attempts.findLast((a) => a.credentialType === credentialType && !a.created);
4210
+ if (!attempt) {
4211
+ attempt = {
4212
+ credentialType,
4213
+ setupMethod: 'conversation',
4214
+ startedAt: Date.now(),
4215
+ created: false,
4216
+ };
4217
+ attempts.push(attempt);
4218
+ }
4219
+ return attempt;
4220
+ };
4221
+ return {
4222
+ markPending: (credentialType, attemptId) => {
4223
+ const attempts = getOrCreateAttempts();
4224
+ if (attemptId && attempts.some((attempt) => attempt.attemptId === attemptId)) {
4225
+ return;
4226
+ }
4227
+ attempts.push({
4228
+ credentialType,
4229
+ setupMethod: 'setup_card',
4230
+ attemptId,
4231
+ startedAt: Date.now(),
4232
+ created: false,
4233
+ });
4234
+ },
4235
+ markCreated: (credentialType) => {
4236
+ const attempt = resolveOpenAttempt(credentialType);
4237
+ attempt.created = true;
4238
+ attempt.errorCode = undefined;
4239
+ },
4240
+ markCreateFailed: (credentialType, errorCode) => {
4241
+ resolveOpenAttempt(credentialType).errorCode = errorCode;
4242
+ },
4243
+ };
4244
+ }
4245
+ emitBrowserCredentialSetupOutcomes(threadId, runId, runStatus, runFinishReason) {
4246
+ const browserSetup = this.pendingBrowserCredentialSetups.get(runId);
4247
+ if (!browserSetup)
4248
+ return;
4249
+ this.pendingBrowserCredentialSetups.delete(runId);
4250
+ const terminalErrorCode = runStatus === 'completed'
4251
+ ? 'not_attempted'
4252
+ : runStatus === 'errored'
4253
+ ? 'run_errored'
4254
+ : runFinishReason === liveness_1.INSTANCE_AI_RUN_TIMEOUT_REASON
4255
+ ? 'run_timed_out'
4256
+ : 'run_cancelled';
4257
+ for (const attempt of browserSetup.attempts) {
4258
+ this.telemetry.track('Instance AI Browser Use credential setup completed', {
4259
+ user_id: browserSetup.userId,
4260
+ credential_type: attempt.credentialType,
4261
+ status: attempt.created ? 'success' : 'failure',
4262
+ ...(attempt.created
4263
+ ? {}
4264
+ : {
4265
+ failure_stage: failureStageForErrorCode(attempt.errorCode),
4266
+ error_code: attempt.errorCode ?? terminalErrorCode,
4267
+ }),
4268
+ is_valid: null,
4269
+ is_new: true,
4270
+ setup_method: attempt.setupMethod,
4271
+ thread_id: threadId,
4272
+ run_id: runId,
4273
+ ...(attempt.attemptId ? { credential_setup_attempt_id: attempt.attemptId } : {}),
4274
+ duration_ms: Date.now() - attempt.startedAt,
4275
+ });
4276
+ }
4277
+ }
4017
4278
  async finalizeRun(threadId, runId, status, snapshotStorage, options) {
4018
4279
  this.publishRunFinish(threadId, runId, status, options?.errorReason, options?.archivedWorkflowIds, options?.userId, options?.errorInfo);
4019
4280
  this.emitRunMetrics(threadId, status, options);
@@ -4242,6 +4503,6 @@ __decorate([
4242
4503
  ], InstanceAiService.prototype, "stopCheckpointPruning", null);
4243
4504
  exports.InstanceAiService = InstanceAiService = __decorate([
4244
4505
  (0, di_1.Service)(),
4245
- __metadata("design:paramtypes", [backend_common_1.Logger, config_1.GlobalConfig, n8n_core_1.InstanceSettings, instance_ai_adapter_service_1.InstanceAiAdapterService, in_process_event_bus_1.InProcessEventBus, durable_event_log_1.DurableEventLog, interrupted_run_sweeper_1.InterruptedRunSweeper, instance_ai_settings_service_1.InstanceAiSettingsService, instance_ai_gateway_service_1.InstanceAiGatewayService, instance_ai_browser_session_service_1.InstanceAiBrowserSessionService, instance_ai_memory_service_1.InstanceAiMemoryService, typeorm_agent_memory_1.TypeORMAgentMemory, typeorm_agent_checkpoint_store_1.TypeORMAgentCheckpointStore, ai_service_1.AiService, instance_ai_thread_grant_repository_1.InstanceAiThreadGrantRepository, instance_ai_pending_confirmation_repository_1.InstanceAiPendingConfirmationRepository, url_service_1.UrlService, db_snapshot_storage_1.DbSnapshotStorage, db_iteration_log_storage_1.DbIterationLogStorage, source_control_preferences_service_ee_1.SourceControlPreferencesService, telemetry_2.Telemetry, mcp_1.InstanceAiMcpRegistryService, db_1.UserRepository, instance_ai_temporary_workflow_service_1.InstanceAiTemporaryWorkflowService, n8n_core_1.ErrorReporter, config_1.SsrfProtectionConfig, backend_network_1.SsrfProtectionService, event_service_1.EventService, thread_credential_allowlist_service_1.EvalThreadCredentialAllowlistService, instance_ai_run_probe_1.InstanceAiRunProbe, instance_ai_model_service_1.InstanceAiModelService, instance_ai_credit_service_1.InstanceAiCreditService, publisher_service_1.Publisher, instance_ai_error_reporter_service_1.InstanceAiErrorReporterService])
4506
+ __metadata("design:paramtypes", [backend_common_1.Logger, config_1.GlobalConfig, n8n_core_1.InstanceSettings, instance_ai_adapter_service_1.InstanceAiAdapterService, in_process_event_bus_1.InProcessEventBus, durable_event_log_1.DurableEventLog, interrupted_run_sweeper_1.InterruptedRunSweeper, instance_ai_settings_service_1.InstanceAiSettingsService, instance_ai_gateway_service_1.InstanceAiGatewayService, instance_ai_browser_session_service_1.InstanceAiBrowserSessionService, instance_ai_memory_service_1.InstanceAiMemoryService, typeorm_agent_memory_1.TypeORMAgentMemory, typeorm_agent_checkpoint_store_1.TypeORMAgentCheckpointStore, ai_service_1.AiService, instance_ai_thread_grant_repository_1.InstanceAiThreadGrantRepository, instance_ai_pending_confirmation_repository_1.InstanceAiPendingConfirmationRepository, url_service_1.UrlService, db_snapshot_storage_1.DbSnapshotStorage, db_iteration_log_storage_1.DbIterationLogStorage, instance_write_access_service_1.InstanceWriteAccessService, telemetry_2.Telemetry, mcp_1.InstanceAiMcpRegistryService, db_1.UserRepository, instance_ai_temporary_workflow_service_1.InstanceAiTemporaryWorkflowService, n8n_core_1.ErrorReporter, config_1.SsrfProtectionConfig, backend_network_1.SsrfProtectionService, event_service_1.EventService, thread_credential_allowlist_service_1.EvalThreadCredentialAllowlistService, instance_ai_run_probe_1.InstanceAiRunProbe, instance_ai_model_service_1.InstanceAiModelService, instance_ai_credit_service_1.InstanceAiCreditService, publisher_service_1.Publisher, instance_ai_error_reporter_service_1.InstanceAiErrorReporterService, canvas_node_context_flag_gate_1.CanvasNodeContextFlagGate])
4246
4507
  ], InstanceAiService);
4247
4508
  //# sourceMappingURL=instance-ai.service.js.map