n8n 2.23.2 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. package/dist/active-workflow-manager.d.ts +8 -4
  2. package/dist/active-workflow-manager.js +26 -9
  3. package/dist/active-workflow-manager.js.map +1 -1
  4. package/dist/auth/auth.service.d.ts +1 -1
  5. package/dist/auth/auth.service.js +2 -1
  6. package/dist/auth/auth.service.js.map +1 -1
  7. package/dist/build.tsbuildinfo +1 -1
  8. package/dist/controllers/ai.controller.js +1 -1
  9. package/dist/controllers/ai.controller.js.map +1 -1
  10. package/dist/controllers/api-keys.controller.d.ts +20 -15
  11. package/dist/controllers/api-keys.controller.js +7 -4
  12. package/dist/controllers/api-keys.controller.js.map +1 -1
  13. package/dist/controllers/oauth/oauth1-credential.controller.d.ts +4 -2
  14. package/dist/controllers/oauth/oauth1-credential.controller.js +15 -5
  15. package/dist/controllers/oauth/oauth1-credential.controller.js.map +1 -1
  16. package/dist/controllers/oauth/oauth2-credential.controller.d.ts +4 -2
  17. package/dist/controllers/oauth/oauth2-credential.controller.js +15 -6
  18. package/dist/controllers/oauth/oauth2-credential.controller.js.map +1 -1
  19. package/dist/controllers/project.controller.d.ts +8 -0
  20. package/dist/controllers/project.controller.js +2 -1
  21. package/dist/controllers/project.controller.js.map +1 -1
  22. package/dist/controllers/security-settings.controller.js +18 -1
  23. package/dist/controllers/security-settings.controller.js.map +1 -1
  24. package/dist/controllers/telemetry.controller.js +4 -1
  25. package/dist/controllers/telemetry.controller.js.map +1 -1
  26. package/dist/credentials/credential-connection-status-provider.interface.d.ts +3 -0
  27. package/dist/credentials/credential-connection-status-proxy.d.ts +3 -0
  28. package/dist/credentials/credential-connection-status-proxy.js +10 -0
  29. package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
  30. package/dist/credentials/credentials.controller.d.ts +6 -0
  31. package/dist/credentials/credentials.controller.js +39 -2
  32. package/dist/credentials/credentials.controller.js.map +1 -1
  33. package/dist/credentials/credentials.service.d.ts +29 -13
  34. package/dist/credentials/credentials.service.ee.d.ts +2 -0
  35. package/dist/credentials/credentials.service.ee.js +3 -0
  36. package/dist/credentials/credentials.service.ee.js.map +1 -1
  37. package/dist/credentials/credentials.service.js +27 -6
  38. package/dist/credentials/credentials.service.js.map +1 -1
  39. package/dist/credentials-helper.d.ts +1 -0
  40. package/dist/credentials-helper.js +14 -4
  41. package/dist/credentials-helper.js.map +1 -1
  42. package/dist/errors/credential-missing-id.error.d.ts +4 -0
  43. package/dist/errors/credential-missing-id.error.js +14 -0
  44. package/dist/errors/credential-missing-id.error.js.map +1 -0
  45. package/dist/eventbus/event-message-classes/index.d.ts +2 -2
  46. package/dist/eventbus/event-message-classes/index.js +3 -0
  47. package/dist/eventbus/event-message-classes/index.js.map +1 -1
  48. package/dist/events/maps/relay.event-map.d.ts +54 -2
  49. package/dist/events/relays/log-streaming.event-relay.d.ts +3 -0
  50. package/dist/events/relays/log-streaming.event-relay.js +39 -1
  51. package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
  52. package/dist/events/relays/telemetry.event-relay.d.ts +6 -0
  53. package/dist/events/relays/telemetry.event-relay.js +74 -3
  54. package/dist/events/relays/telemetry.event-relay.js.map +1 -1
  55. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +6 -5
  56. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  57. package/dist/executions/execution-persistence.js +4 -0
  58. package/dist/executions/execution-persistence.js.map +1 -1
  59. package/dist/expression-observability/expression-observability.provider.d.ts +3 -1
  60. package/dist/expression-observability/expression-observability.provider.js +48 -46
  61. package/dist/expression-observability/expression-observability.provider.js.map +1 -1
  62. package/dist/interfaces.d.ts +3 -1
  63. package/dist/modules/agents/agent-execution.service.d.ts +4 -2
  64. package/dist/modules/agents/agent-execution.service.js +3 -3
  65. package/dist/modules/agents/agent-execution.service.js.map +1 -1
  66. package/dist/modules/agents/agent-knowledge-command.service.d.ts +40 -0
  67. package/dist/modules/agents/agent-knowledge-command.service.js +221 -0
  68. package/dist/modules/agents/agent-knowledge-command.service.js.map +1 -0
  69. package/dist/modules/agents/agent-knowledge.service.d.ts +42 -0
  70. package/dist/modules/agents/agent-knowledge.service.js +300 -0
  71. package/dist/modules/agents/agent-knowledge.service.js.map +1 -0
  72. package/dist/modules/agents/agent-task.service.d.ts +52 -0
  73. package/dist/modules/agents/agent-task.service.js +487 -0
  74. package/dist/modules/agents/agent-task.service.js.map +1 -0
  75. package/dist/modules/agents/agent-upload.middleware.d.ts +7 -0
  76. package/dist/modules/agents/agent-upload.middleware.js +62 -0
  77. package/dist/modules/agents/agent-upload.middleware.js.map +1 -0
  78. package/dist/modules/agents/agents-tools.service.d.ts +1 -1
  79. package/dist/modules/agents/agents-tools.service.js +12 -3
  80. package/dist/modules/agents/agents-tools.service.js.map +1 -1
  81. package/dist/modules/agents/agents.controller.d.ts +138 -45
  82. package/dist/modules/agents/agents.controller.js +176 -48
  83. package/dist/modules/agents/agents.controller.js.map +1 -1
  84. package/dist/modules/agents/agents.module.d.ts +2 -2
  85. package/dist/modules/agents/agents.module.js +13 -5
  86. package/dist/modules/agents/agents.module.js.map +1 -1
  87. package/dist/modules/agents/agents.service.d.ts +43 -7
  88. package/dist/modules/agents/agents.service.js +341 -57
  89. package/dist/modules/agents/agents.service.js.map +1 -1
  90. package/dist/modules/agents/builder/agents-builder-prompts.d.ts +6 -5
  91. package/dist/modules/agents/builder/agents-builder-prompts.js +92 -18
  92. package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
  93. package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +11 -1
  94. package/dist/modules/agents/builder/agents-builder-tools.service.js +164 -26
  95. package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
  96. package/dist/modules/agents/builder/agents-builder.service.d.ts +3 -1
  97. package/dist/modules/agents/builder/agents-builder.service.js +8 -3
  98. package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
  99. package/dist/modules/agents/builder/builder-tool-names.d.ts +3 -0
  100. package/dist/modules/agents/builder/builder-tool-names.js +3 -0
  101. package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
  102. package/dist/modules/agents/builder/interactive/ask-credential.tool.d.ts +1 -0
  103. package/dist/modules/agents/builder/interactive/ask-credential.tool.js +25 -4
  104. package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
  105. package/dist/modules/agents/builder/interactive/ask-question.tool.js +6 -5
  106. package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +1 -1
  107. package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +20 -5
  108. package/dist/modules/agents/builder/prompts/config-mutation.prompt.js.map +1 -1
  109. package/dist/modules/agents/builder/prompts/config-rules.prompt.js +23 -4
  110. package/dist/modules/agents/builder/prompts/config-rules.prompt.js.map +1 -1
  111. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +18 -1
  112. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js.map +1 -1
  113. package/dist/modules/agents/builder/prompts/memory.prompt.d.ts +1 -1
  114. package/dist/modules/agents/builder/prompts/memory.prompt.js +5 -3
  115. package/dist/modules/agents/builder/prompts/memory.prompt.js.map +1 -1
  116. package/dist/modules/agents/builder/prompts/tools.prompt.d.ts +1 -1
  117. package/dist/modules/agents/builder/prompts/tools.prompt.js +11 -2
  118. package/dist/modules/agents/builder/prompts/tools.prompt.js.map +1 -1
  119. package/dist/modules/agents/builder/search-mcp-servers.tool.d.ts +6 -0
  120. package/dist/modules/agents/builder/search-mcp-servers.tool.js +85 -0
  121. package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -0
  122. package/dist/modules/agents/builder/skill-body-template.d.ts +4 -0
  123. package/dist/modules/agents/builder/skill-body-template.js +31 -0
  124. package/dist/modules/agents/builder/skill-body-template.js.map +1 -0
  125. package/dist/modules/agents/builder/skills/index.js +6 -1
  126. package/dist/modules/agents/builder/skills/index.js.map +1 -1
  127. package/dist/modules/agents/builder/skills/integrations.skill.js +39 -18
  128. package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
  129. package/dist/modules/agents/builder/skills/mcp.skill.d.ts +2 -0
  130. package/dist/modules/agents/builder/skills/mcp.skill.js +110 -0
  131. package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -0
  132. package/dist/modules/agents/builder/skills/research.skill.js +8 -5
  133. package/dist/modules/agents/builder/skills/research.skill.js.map +1 -1
  134. package/dist/modules/agents/builder/skills/target-skills.skill.js +41 -13
  135. package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
  136. package/dist/modules/agents/builder/skills/target-tasks.skill.d.ts +2 -0
  137. package/dist/modules/agents/builder/skills/target-tasks.skill.js +82 -0
  138. package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -0
  139. package/dist/modules/agents/builder/task-objective-template.d.ts +3 -0
  140. package/dist/modules/agents/builder/task-objective-template.js +27 -0
  141. package/dist/modules/agents/builder/task-objective-template.js.map +1 -0
  142. package/dist/modules/agents/builder/verify-mcp-server.tool.d.ts +8 -0
  143. package/dist/modules/agents/builder/verify-mcp-server.tool.js +79 -0
  144. package/dist/modules/agents/builder/verify-mcp-server.tool.js.map +1 -0
  145. package/dist/modules/agents/entities/agent-execution-thread.entity.d.ts +4 -0
  146. package/dist/modules/agents/entities/agent-execution-thread.entity.js +26 -0
  147. package/dist/modules/agents/entities/agent-execution-thread.entity.js.map +1 -1
  148. package/dist/modules/agents/entities/agent-file.entity.d.ts +11 -0
  149. package/dist/modules/agents/entities/agent-file.entity.js +48 -0
  150. package/dist/modules/agents/entities/agent-file.entity.js.map +1 -0
  151. package/dist/modules/agents/entities/agent-task-run-lock.entity.d.ts +10 -0
  152. package/dist/modules/agents/entities/agent-task-run-lock.entity.js +54 -0
  153. package/dist/modules/agents/entities/agent-task-run-lock.entity.js.map +1 -0
  154. package/dist/modules/agents/entities/agent-task-snapshot.entity.d.ts +12 -0
  155. package/dist/modules/agents/entities/agent-task-snapshot.entity.js +70 -0
  156. package/dist/modules/agents/entities/agent-task-snapshot.entity.js.map +1 -0
  157. package/dist/modules/agents/entities/agent-task.entity.d.ts +11 -0
  158. package/dist/modules/agents/entities/agent-task.entity.js +64 -0
  159. package/dist/modules/agents/entities/agent-task.entity.js.map +1 -0
  160. package/dist/modules/agents/execution-recorder.d.ts +1 -0
  161. package/dist/modules/agents/execution-recorder.js +9 -5
  162. package/dist/modules/agents/execution-recorder.js.map +1 -1
  163. package/dist/modules/agents/integrations/agent-chat-bridge.d.ts +16 -4
  164. package/dist/modules/agents/integrations/agent-chat-bridge.js +372 -116
  165. package/dist/modules/agents/integrations/agent-chat-bridge.js.map +1 -1
  166. package/dist/modules/agents/integrations/agent-chat-integration.d.ts +27 -2
  167. package/dist/modules/agents/integrations/agent-chat-integration.js +5 -0
  168. package/dist/modules/agents/integrations/agent-chat-integration.js.map +1 -1
  169. package/dist/modules/agents/integrations/chat-integration.service.d.ts +15 -6
  170. package/dist/modules/agents/integrations/chat-integration.service.js +9 -10
  171. package/dist/modules/agents/integrations/chat-integration.service.js.map +1 -1
  172. package/dist/modules/agents/integrations/component-mapper.d.ts +14 -0
  173. package/dist/modules/agents/integrations/component-mapper.js +9 -1
  174. package/dist/modules/agents/integrations/component-mapper.js.map +1 -1
  175. package/dist/modules/agents/integrations/integration-action-executor.d.ts +22 -0
  176. package/dist/modules/agents/integrations/integration-action-executor.js +171 -0
  177. package/dist/modules/agents/integrations/integration-action-executor.js.map +1 -0
  178. package/dist/modules/agents/integrations/integration-context-query-executor.d.ts +18 -0
  179. package/dist/modules/agents/integrations/integration-context-query-executor.js +58 -0
  180. package/dist/modules/agents/integrations/integration-context-query-executor.js.map +1 -0
  181. package/dist/modules/agents/integrations/integration-error-codes.d.ts +13 -0
  182. package/dist/modules/agents/integrations/integration-error-codes.js +16 -0
  183. package/dist/modules/agents/integrations/integration-error-codes.js.map +1 -0
  184. package/dist/modules/agents/integrations/integration-helpers.d.ts +21 -0
  185. package/dist/modules/agents/integrations/integration-helpers.js +72 -0
  186. package/dist/modules/agents/integrations/integration-helpers.js.map +1 -0
  187. package/dist/modules/agents/integrations/integration-message-context.service.d.ts +13 -0
  188. package/dist/modules/agents/integrations/integration-message-context.service.js +129 -0
  189. package/dist/modules/agents/integrations/integration-message-context.service.js.map +1 -0
  190. package/dist/modules/agents/integrations/integration-tools.d.ts +205 -0
  191. package/dist/modules/agents/integrations/integration-tools.js +955 -0
  192. package/dist/modules/agents/integrations/integration-tools.js.map +1 -0
  193. package/dist/modules/agents/integrations/integrations-sync.d.ts +1 -1
  194. package/dist/modules/agents/integrations/integrations-sync.js +1 -29
  195. package/dist/modules/agents/integrations/integrations-sync.js.map +1 -1
  196. package/dist/modules/agents/integrations/n8n-memory.d.ts +2 -0
  197. package/dist/modules/agents/integrations/n8n-memory.js +18 -11
  198. package/dist/modules/agents/integrations/n8n-memory.js.map +1 -1
  199. package/dist/modules/agents/integrations/platforms/linear-integration.d.ts +13 -2
  200. package/dist/modules/agents/integrations/platforms/linear-integration.js +70 -15
  201. package/dist/modules/agents/integrations/platforms/linear-integration.js.map +1 -1
  202. package/dist/modules/agents/integrations/platforms/linear-operations.d.ts +18 -0
  203. package/dist/modules/agents/integrations/platforms/linear-operations.js +679 -0
  204. package/dist/modules/agents/integrations/platforms/linear-operations.js.map +1 -0
  205. package/dist/modules/agents/integrations/platforms/slack-integration.d.ts +11 -1
  206. package/dist/modules/agents/integrations/platforms/slack-integration.js +53 -1
  207. package/dist/modules/agents/integrations/platforms/slack-integration.js.map +1 -1
  208. package/dist/modules/agents/integrations/platforms/slack-operations.d.ts +17 -0
  209. package/dist/modules/agents/integrations/platforms/slack-operations.js +288 -0
  210. package/dist/modules/agents/integrations/platforms/slack-operations.js.map +1 -0
  211. package/dist/modules/agents/integrations/platforms/telegram-integration.d.ts +9 -2
  212. package/dist/modules/agents/integrations/platforms/telegram-integration.js +17 -0
  213. package/dist/modules/agents/integrations/platforms/telegram-integration.js.map +1 -1
  214. package/dist/modules/agents/integrations/slack-app-setup.service.js +7 -1
  215. package/dist/modules/agents/integrations/slack-app-setup.service.js.map +1 -1
  216. package/dist/modules/agents/json-config/from-json-config.d.ts +4 -2
  217. package/dist/modules/agents/json-config/from-json-config.js +88 -11
  218. package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
  219. package/dist/modules/agents/json-config/mcp-client-factory.d.ts +16 -0
  220. package/dist/modules/agents/json-config/mcp-client-factory.js +155 -0
  221. package/dist/modules/agents/json-config/mcp-client-factory.js.map +1 -0
  222. package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +8 -0
  223. package/dist/modules/agents/json-config/native-web-search-provider-tools.js +59 -0
  224. package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +1 -0
  225. package/dist/modules/agents/json-config/schema-text-serializer.js +12 -2
  226. package/dist/modules/agents/json-config/schema-text-serializer.js.map +1 -1
  227. package/dist/modules/agents/repositories/agent-execution-thread.repository.d.ts +1 -1
  228. package/dist/modules/agents/repositories/agent-execution-thread.repository.js +5 -3
  229. package/dist/modules/agents/repositories/agent-execution-thread.repository.js.map +1 -1
  230. package/dist/modules/agents/repositories/agent-file.repository.d.ts +7 -0
  231. package/dist/modules/agents/repositories/agent-file.repository.js +35 -0
  232. package/dist/modules/agents/repositories/agent-file.repository.js.map +1 -0
  233. package/dist/modules/agents/repositories/agent-history.repository.d.ts +2 -0
  234. package/dist/modules/agents/repositories/agent-history.repository.js +18 -0
  235. package/dist/modules/agents/repositories/agent-history.repository.js.map +1 -1
  236. package/dist/modules/agents/repositories/agent-task-run-lock.repository.d.ts +12 -0
  237. package/dist/modules/agents/repositories/agent-task-run-lock.repository.js +72 -0
  238. package/dist/modules/agents/repositories/agent-task-run-lock.repository.js.map +1 -0
  239. package/dist/modules/agents/repositories/agent-task-snapshot.repository.d.ts +11 -0
  240. package/dist/modules/agents/repositories/agent-task-snapshot.repository.js +45 -0
  241. package/dist/modules/agents/repositories/agent-task-snapshot.repository.js.map +1 -0
  242. package/dist/modules/agents/repositories/agent-task.repository.d.ts +7 -0
  243. package/dist/modules/agents/repositories/agent-task.repository.js +32 -0
  244. package/dist/modules/agents/repositories/agent-task.repository.js.map +1 -0
  245. package/dist/modules/agents/repositories/agent.repository.js +1 -2
  246. package/dist/modules/agents/repositories/agent.repository.js.map +1 -1
  247. package/dist/modules/agents/tools/knowledge/csv-helpers.d.ts +73 -0
  248. package/dist/modules/agents/tools/knowledge/csv-helpers.js +341 -0
  249. package/dist/modules/agents/tools/knowledge/csv-helpers.js.map +1 -0
  250. package/dist/modules/agents/tools/knowledge/csv.operation.d.ts +61 -0
  251. package/dist/modules/agents/tools/knowledge/csv.operation.js +207 -0
  252. package/dist/modules/agents/tools/knowledge/csv.operation.js.map +1 -0
  253. package/dist/modules/agents/tools/knowledge/file-references.d.ts +16 -0
  254. package/dist/modules/agents/tools/knowledge/file-references.js +35 -0
  255. package/dist/modules/agents/tools/knowledge/file-references.js.map +1 -0
  256. package/dist/modules/agents/tools/knowledge/read.operation.d.ts +8 -0
  257. package/dist/modules/agents/tools/knowledge/read.operation.js +38 -0
  258. package/dist/modules/agents/tools/knowledge/read.operation.js.map +1 -0
  259. package/dist/modules/agents/tools/knowledge/schemas.d.ts +1505 -0
  260. package/dist/modules/agents/tools/knowledge/schemas.js +441 -0
  261. package/dist/modules/agents/tools/knowledge/schemas.js.map +1 -0
  262. package/dist/modules/agents/tools/knowledge/search.operation.d.ts +9 -0
  263. package/dist/modules/agents/tools/knowledge/search.operation.js +332 -0
  264. package/dist/modules/agents/tools/knowledge/search.operation.js.map +1 -0
  265. package/dist/modules/agents/tools/knowledge/tool.d.ts +8 -0
  266. package/dist/modules/agents/tools/knowledge/tool.js +121 -0
  267. package/dist/modules/agents/tools/knowledge/tool.js.map +1 -0
  268. package/dist/modules/agents/utils/agent-memory-scope.d.ts +1 -1
  269. package/dist/modules/agents/utils/agent-memory-scope.js +4 -4
  270. package/dist/modules/agents/utils/agent-memory-scope.js.map +1 -1
  271. package/dist/modules/agents/utils/agent-resource-id.d.ts +1 -1
  272. package/dist/modules/chat-hub/chat-hub.module.d.ts +2 -2
  273. package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +4 -4
  274. package/dist/modules/chat-hub/chat-hub.types.d.ts +5 -5
  275. package/dist/modules/chat-hub/dto/chat-models-request.dto.d.ts +1 -1
  276. package/dist/modules/dynamic-credentials.ee/constants.d.ts +1 -1
  277. package/dist/modules/dynamic-credentials.ee/constants.js +2 -1
  278. package/dist/modules/dynamic-credentials.ee/constants.js.map +1 -1
  279. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.d.ts +9 -2
  280. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js +45 -14
  281. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.controller.js.map +1 -1
  282. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +4 -0
  283. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +16 -0
  284. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
  285. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +6 -2
  286. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
  287. package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.d.ts +1 -0
  288. package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js +21 -2
  289. package/dist/modules/instance-ai/eval/eval-mocked-credentials-helper.js.map +1 -1
  290. package/dist/modules/instance-ai/eval/execution.service.d.ts +4 -1
  291. package/dist/modules/instance-ai/eval/execution.service.js +118 -24
  292. package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
  293. package/dist/modules/instance-ai/eval/llm-wire-server.d.ts +8 -3
  294. package/dist/modules/instance-ai/eval/llm-wire-server.js +147 -50
  295. package/dist/modules/instance-ai/eval/llm-wire-server.js.map +1 -1
  296. package/dist/modules/instance-ai/eval/mock-handler.js +45 -8
  297. package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
  298. package/dist/modules/instance-ai/eval/mock-quirks.d.ts +4 -2
  299. package/dist/modules/instance-ai/eval/mock-quirks.js +83 -4
  300. package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
  301. package/dist/modules/instance-ai/eval/openai-envelope.d.ts +8 -0
  302. package/dist/modules/instance-ai/eval/openai-envelope.js +121 -8
  303. package/dist/modules/instance-ai/eval/openai-envelope.js.map +1 -1
  304. package/dist/modules/instance-ai/eval/openai-responses-envelope.d.ts +11 -0
  305. package/dist/modules/instance-ai/eval/openai-responses-envelope.js +238 -0
  306. package/dist/modules/instance-ai/eval/openai-responses-envelope.js.map +1 -0
  307. package/dist/modules/instance-ai/eval/request-binary-redactor.d.ts +1 -0
  308. package/dist/modules/instance-ai/eval/request-binary-redactor.js +74 -0
  309. package/dist/modules/instance-ai/eval/request-binary-redactor.js.map +1 -0
  310. package/dist/modules/instance-ai/eval/workflow-analysis.d.ts +19 -1
  311. package/dist/modules/instance-ai/eval/workflow-analysis.js +159 -76
  312. package/dist/modules/instance-ai/eval/workflow-analysis.js.map +1 -1
  313. package/dist/modules/instance-ai/extract-resolved-node-parameters.d.ts +7 -0
  314. package/dist/modules/instance-ai/extract-resolved-node-parameters.js +221 -0
  315. package/dist/modules/instance-ai/extract-resolved-node-parameters.js.map +1 -0
  316. package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -1
  317. package/dist/modules/instance-ai/instance-ai-memory.service.js +80 -3
  318. package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
  319. package/dist/modules/instance-ai/instance-ai-settings.service.js +1 -16
  320. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  321. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +1 -1
  322. package/dist/modules/instance-ai/instance-ai.adapter.service.js +67 -7
  323. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  324. package/dist/modules/instance-ai/instance-ai.module.d.ts +1 -1
  325. package/dist/modules/instance-ai/instance-ai.service.d.ts +24 -1
  326. package/dist/modules/instance-ai/instance-ai.service.js +400 -26
  327. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  328. package/dist/modules/instance-ai/liveness/instance-ai-liveness.service.d.ts +1 -0
  329. package/dist/modules/instance-ai/liveness/instance-ai-liveness.service.js +1 -0
  330. package/dist/modules/instance-ai/liveness/instance-ai-liveness.service.js.map +1 -1
  331. package/dist/modules/instance-ai/message-parser.d.ts +2 -0
  332. package/dist/modules/instance-ai/message-parser.js +165 -36
  333. package/dist/modules/instance-ai/message-parser.js.map +1 -1
  334. package/dist/modules/instance-ai/repositories/instance-ai-checkpoint.repository.d.ts +2 -0
  335. package/dist/modules/instance-ai/repositories/instance-ai-checkpoint.repository.js +13 -0
  336. package/dist/modules/instance-ai/repositories/instance-ai-checkpoint.repository.js.map +1 -1
  337. package/dist/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.d.ts +12 -0
  338. package/dist/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.js +80 -0
  339. package/dist/modules/instance-ai/repositories/instance-ai-pending-confirmation.repository.js.map +1 -0
  340. package/dist/modules/instance-ai/storage/db-snapshot-storage.d.ts +1 -0
  341. package/dist/modules/instance-ai/storage/db-snapshot-storage.js +23 -0
  342. package/dist/modules/instance-ai/storage/db-snapshot-storage.js.map +1 -1
  343. package/dist/modules/instance-ai/storage/typeorm-agent-checkpoint-store.d.ts +10 -4
  344. package/dist/modules/instance-ai/storage/typeorm-agent-checkpoint-store.js +49 -37
  345. package/dist/modules/instance-ai/storage/typeorm-agent-checkpoint-store.js.map +1 -1
  346. package/dist/modules/instance-ai/web-research/index.d.ts +0 -2
  347. package/dist/modules/instance-ai/web-research/index.js +1 -5
  348. package/dist/modules/instance-ai/web-research/index.js.map +1 -1
  349. package/dist/modules/ldap.ee/helpers.ee.js +6 -2
  350. package/dist/modules/ldap.ee/helpers.ee.js.map +1 -1
  351. package/dist/modules/mcp/mcp.controller.js +13 -6
  352. package/dist/modules/mcp/mcp.controller.js.map +1 -1
  353. package/dist/modules/mcp/mcp.service.d.ts +10 -2
  354. package/dist/modules/mcp/mcp.service.js +36 -6
  355. package/dist/modules/mcp/mcp.service.js.map +1 -1
  356. package/dist/modules/mcp/mcp.settings.controller.d.ts +2 -0
  357. package/dist/modules/mcp/mcp.settings.service.d.ts +2 -0
  358. package/dist/modules/mcp/mcp.settings.service.js +6 -5
  359. package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
  360. package/dist/modules/mcp/mcp.types.d.ts +6 -0
  361. package/dist/modules/mcp/mcp.types.js +9 -0
  362. package/dist/modules/mcp/mcp.types.js.map +1 -1
  363. package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +6 -6
  364. package/dist/modules/mcp/tools/search-workflows.tool.d.ts +2 -1
  365. package/dist/modules/mcp/tools/search-workflows.tool.js +12 -4
  366. package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
  367. package/dist/modules/mcp/tools/workflow-builder/mcp-instructions.js +1 -1
  368. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.d.ts +67 -6
  369. package/dist/modules/mcp/tools/workflow-builder/workflow-operations.d.ts +67 -6
  370. package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js +51 -0
  371. package/dist/modules/mcp/tools/workflow-builder/workflow-operations.js.map +1 -1
  372. package/dist/modules/mcp-registry/registry/mcp-registry.types.js.map +1 -1
  373. package/dist/modules/mcp-registry/synthesize-type-def.d.ts +2 -0
  374. package/dist/modules/mcp-registry/synthesize-type-def.js +35 -0
  375. package/dist/modules/mcp-registry/synthesize-type-def.js.map +1 -0
  376. package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +24 -0
  377. package/dist/modules/n8n-packages/engine/import-pipeline.js +206 -0
  378. package/dist/modules/n8n-packages/engine/import-pipeline.js.map +1 -0
  379. package/dist/modules/n8n-packages/entities/credential/credential-requirements.extractor.d.ts +6 -0
  380. package/dist/modules/n8n-packages/entities/credential/credential-requirements.extractor.js +33 -0
  381. package/dist/modules/n8n-packages/entities/credential/credential-requirements.extractor.js.map +1 -0
  382. package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +23 -0
  383. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +68 -0
  384. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -0
  385. package/dist/modules/n8n-packages/entities/credential/credential.serializer.d.ts +5 -0
  386. package/dist/modules/n8n-packages/entities/credential/credential.serializer.js +25 -0
  387. package/dist/modules/n8n-packages/entities/credential/credential.serializer.js.map +1 -0
  388. package/dist/modules/n8n-packages/entities/credential/credential.types.d.ts +6 -0
  389. package/dist/modules/n8n-packages/entities/credential/credential.types.js +3 -0
  390. package/dist/modules/n8n-packages/entities/credential/credential.types.js.map +1 -0
  391. package/dist/modules/n8n-packages/entities/requirements-extractor.d.ts +4 -0
  392. package/dist/modules/n8n-packages/entities/requirements-extractor.js +3 -0
  393. package/dist/modules/n8n-packages/entities/requirements-extractor.js.map +1 -0
  394. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +12 -3
  395. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -20
  396. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
  397. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.d.ts +3 -0
  398. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js +10 -0
  399. package/dist/modules/n8n-packages/entities/workflow/workflow.serializer.js.map +1 -1
  400. package/dist/modules/n8n-packages/io/package-reader.d.ts +6 -0
  401. package/dist/modules/n8n-packages/io/package-reader.js +3 -0
  402. package/dist/modules/n8n-packages/io/package-reader.js.map +1 -0
  403. package/dist/modules/n8n-packages/io/slug.utils.d.ts +1 -1
  404. package/dist/modules/n8n-packages/io/slug.utils.js +3 -3
  405. package/dist/modules/n8n-packages/io/slug.utils.js.map +1 -1
  406. package/dist/modules/n8n-packages/io/tar/tar-package-reader.d.ts +13 -0
  407. package/dist/modules/n8n-packages/io/tar/tar-package-reader.js +84 -0
  408. package/dist/modules/n8n-packages/io/tar/tar-package-reader.js.map +1 -0
  409. package/dist/modules/n8n-packages/io/unique-filename-allocator.d.ts +7 -0
  410. package/dist/modules/n8n-packages/io/unique-filename-allocator.js +27 -0
  411. package/dist/modules/n8n-packages/io/unique-filename-allocator.js.map +1 -0
  412. package/dist/modules/n8n-packages/n8n-packages.service.d.ts +7 -2
  413. package/dist/modules/n8n-packages/n8n-packages.service.js +21 -3
  414. package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
  415. package/dist/modules/n8n-packages/n8n-packages.types.d.ts +22 -0
  416. package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +121 -4
  417. package/dist/modules/n8n-packages/spec/manifest.schema.js +22 -3
  418. package/dist/modules/n8n-packages/spec/manifest.schema.js.map +1 -1
  419. package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +51 -0
  420. package/dist/modules/n8n-packages/spec/requirements.schema.js +14 -0
  421. package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -0
  422. package/dist/modules/n8n-packages/spec/serialized/credential.schema.d.ts +15 -0
  423. package/dist/modules/n8n-packages/spec/serialized/credential.schema.js +12 -0
  424. package/dist/modules/n8n-packages/spec/serialized/credential.schema.js.map +1 -0
  425. package/dist/modules/n8n-packages/spec/serialized/workflow.schema.d.ts +4 -4
  426. package/dist/modules/n8n-packages/utils/import-package-upload.d.ts +13 -0
  427. package/dist/modules/n8n-packages/utils/import-package-upload.js +59 -0
  428. package/dist/modules/n8n-packages/utils/import-package-upload.js.map +1 -0
  429. package/dist/modules/otel/execution-level-tracer.js +15 -6
  430. package/dist/modules/otel/execution-level-tracer.js.map +1 -1
  431. package/dist/modules/otel/execution-level-tracer.types.d.ts +3 -0
  432. package/dist/modules/otel/execution-level-tracer.types.js.map +1 -1
  433. package/dist/modules/otel/otel-lifecycle-handler.d.ts +4 -2
  434. package/dist/modules/otel/otel-lifecycle-handler.js +69 -4
  435. package/dist/modules/otel/otel-lifecycle-handler.js.map +1 -1
  436. package/dist/modules/otel/otel.config.d.ts +1 -0
  437. package/dist/modules/otel/otel.config.js +5 -0
  438. package/dist/modules/otel/otel.config.js.map +1 -1
  439. package/dist/modules/otel/otel.constants.d.ts +2 -0
  440. package/dist/modules/otel/otel.constants.js +2 -0
  441. package/dist/modules/otel/otel.constants.js.map +1 -1
  442. package/dist/modules/redaction/instance-redaction-enforcement.service.d.ts +4 -0
  443. package/dist/modules/redaction/instance-redaction-enforcement.service.js +8 -0
  444. package/dist/modules/redaction/instance-redaction-enforcement.service.js.map +1 -1
  445. package/dist/modules/redaction/redaction-context-hook.d.ts +9 -0
  446. package/dist/modules/redaction/redaction-context-hook.js +57 -0
  447. package/dist/modules/redaction/redaction-context-hook.js.map +1 -0
  448. package/dist/modules/redaction/redaction.module.js +1 -0
  449. package/dist/modules/redaction/redaction.module.js.map +1 -1
  450. package/dist/modules/source-control.ee/constants.d.ts +1 -0
  451. package/dist/modules/source-control.ee/constants.js +2 -1
  452. package/dist/modules/source-control.ee/constants.js.map +1 -1
  453. package/dist/modules/source-control.ee/source-control-status.service.ee.js +5 -0
  454. package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
  455. package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +4 -2
  456. package/dist/modules/source-control.ee/source-control.controller.ee.js +32 -5
  457. package/dist/modules/source-control.ee/source-control.controller.ee.js.map +1 -1
  458. package/dist/modules/source-control.ee/source-control.service.ee.js +2 -0
  459. package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
  460. package/dist/modules/workflow-builder/workflow-builder-session.repository.js +2 -1
  461. package/dist/modules/workflow-builder/workflow-builder-session.repository.js.map +1 -1
  462. package/dist/node-catalog/node-catalog.service.d.ts +2 -0
  463. package/dist/node-catalog/node-catalog.service.js +38 -2
  464. package/dist/node-catalog/node-catalog.service.js.map +1 -1
  465. package/dist/oauth/oauth-browser-binding.service.d.ts +18 -0
  466. package/dist/oauth/oauth-browser-binding.service.js +68 -0
  467. package/dist/oauth/oauth-browser-binding.service.js.map +1 -0
  468. package/dist/oauth/oauth.service.d.ts +10 -4
  469. package/dist/oauth/oauth.service.js +87 -4
  470. package/dist/oauth/oauth.service.js.map +1 -1
  471. package/dist/oauth/types.d.ts +1 -0
  472. package/dist/oauth/types.js.map +1 -1
  473. package/dist/public-api/index.js +5 -1
  474. package/dist/public-api/index.js.map +1 -1
  475. package/dist/public-api/types.d.ts +6 -0
  476. package/dist/public-api/v1/handlers/credentials/credentials.service.js +1 -0
  477. package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
  478. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.d.ts +5 -0
  479. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +22 -0
  480. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
  481. package/dist/public-api/v1/openapi.yml +207 -59
  482. package/dist/requests.d.ts +4 -0
  483. package/dist/scaling/constants.d.ts +2 -2
  484. package/dist/scaling/pubsub/pubsub.event-map.d.ts +5 -2
  485. package/dist/scaling/pubsub/pubsub.types.d.ts +2 -1
  486. package/dist/services/ai-workflow-builder.service.d.ts +6 -3
  487. package/dist/services/ai-workflow-builder.service.js +13 -5
  488. package/dist/services/ai-workflow-builder.service.js.map +1 -1
  489. package/dist/services/api-key-auth.strategy.d.ts +4 -1
  490. package/dist/services/api-key-auth.strategy.js +18 -2
  491. package/dist/services/api-key-auth.strategy.js.map +1 -1
  492. package/dist/services/ownership.service.d.ts +1 -0
  493. package/dist/services/ownership.service.js +7 -0
  494. package/dist/services/ownership.service.js.map +1 -1
  495. package/dist/services/project.service.ee.d.ts +6 -2
  496. package/dist/services/project.service.ee.js +30 -8
  497. package/dist/services/project.service.ee.js.map +1 -1
  498. package/dist/services/public-api-key.service.d.ts +21 -14
  499. package/dist/services/public-api-key.service.js +14 -9
  500. package/dist/services/public-api-key.service.js.map +1 -1
  501. package/dist/telemetry/index.d.ts +6 -9
  502. package/dist/telemetry/index.js +23 -9
  503. package/dist/telemetry/index.js.map +1 -1
  504. package/dist/webhooks/constants.js +5 -1
  505. package/dist/webhooks/constants.js.map +1 -1
  506. package/dist/webhooks/live-webhooks.d.ts +8 -1
  507. package/dist/webhooks/live-webhooks.js +37 -22
  508. package/dist/webhooks/live-webhooks.js.map +1 -1
  509. package/dist/webhooks/waiting-forms.js +8 -1
  510. package/dist/webhooks/waiting-forms.js.map +1 -1
  511. package/dist/webhooks/webhook-helpers.d.ts +1 -1
  512. package/dist/webhooks/webhook-helpers.js +20 -10
  513. package/dist/webhooks/webhook-helpers.js.map +1 -1
  514. package/dist/webhooks/webhook-request-handler.js +1 -1
  515. package/dist/webhooks/webhook-request-handler.js.map +1 -1
  516. package/dist/workflow-helpers.d.ts +6 -1
  517. package/dist/workflow-helpers.js +9 -1
  518. package/dist/workflow-helpers.js.map +1 -1
  519. package/dist/workflows/workflow-creation.service.d.ts +4 -1
  520. package/dist/workflows/workflow-creation.service.js +12 -3
  521. package/dist/workflows/workflow-creation.service.js.map +1 -1
  522. package/dist/workflows/workflow-finder.service.d.ts +1 -0
  523. package/dist/workflows/workflow-published-data.service.d.ts +11 -0
  524. package/dist/workflows/workflow-published-data.service.js +39 -0
  525. package/dist/workflows/workflow-published-data.service.js.map +1 -0
  526. package/dist/workflows/workflow-validation.service.d.ts +5 -1
  527. package/dist/workflows/workflow-validation.service.js +55 -2
  528. package/dist/workflows/workflow-validation.service.js.map +1 -1
  529. package/dist/workflows/workflow.service.js +4 -0
  530. package/dist/workflows/workflow.service.js.map +1 -1
  531. package/dist/workflows/workflows.controller.d.ts +8 -0
  532. package/package.json +40 -32
  533. package/templates/form-trigger-completion.handlebars +12 -1
  534. package/dist/modules/agents/integrations/agent-schedule.service.d.ts +0 -30
  535. package/dist/modules/agents/integrations/agent-schedule.service.js +0 -331
  536. package/dist/modules/agents/integrations/agent-schedule.service.js.map +0 -1
  537. package/dist/modules/instance-ai/web-research/brave-search.d.ts +0 -10
  538. package/dist/modules/instance-ai/web-research/brave-search.js +0 -44
  539. package/dist/modules/instance-ai/web-research/brave-search.js.map +0 -1
  540. package/dist/modules/instance-ai/web-research/searxng-search.d.ts +0 -6
  541. package/dist/modules/instance-ai/web-research/searxng-search.js +0 -39
  542. package/dist/modules/instance-ai/web-research/searxng-search.js.map +0 -1
@@ -5,9 +5,48 @@ const di_1 = require("@n8n/di");
5
5
  const agent_memory_scope_1 = require("../utils/agent-memory-scope");
6
6
  const agent_chat_integration_1 = require("./agent-chat-integration");
7
7
  const callback_store_1 = require("./callback-store");
8
+ const component_mapper_1 = require("./component-mapper");
9
+ const integration_message_context_service_1 = require("./integration-message-context.service");
10
+ const integration_tools_1 = require("./integration-tools");
8
11
  const types_1 = require("./types");
12
+ const SLACK_THINKING_STATUS = 'Thinking...';
13
+ const SLACK_STATUS_RETRY_DELAY_MS = 750;
14
+ function isIntegrationActionSuspendPayload(value) {
15
+ return (typeof value === 'object' &&
16
+ value !== null &&
17
+ 'type' in value &&
18
+ value.type === 'integration_action');
19
+ }
20
+ function toIntegrationMessageSubject(subject) {
21
+ if (!subject || typeof subject.type !== 'string' || typeof subject.id !== 'string') {
22
+ return undefined;
23
+ }
24
+ const assignee = toIntegrationSubjectPerson(subject.assignee);
25
+ const author = toIntegrationSubjectPerson(subject.author);
26
+ const labels = subject.labels?.filter((label) => typeof label === 'string');
27
+ return {
28
+ type: subject.type,
29
+ id: subject.id,
30
+ ...(typeof subject.title === 'string' ? { title: subject.title } : {}),
31
+ ...(typeof subject.description === 'string' ? { description: subject.description } : {}),
32
+ ...(typeof subject.url === 'string' ? { url: subject.url } : {}),
33
+ ...(typeof subject.status === 'string' ? { status: subject.status } : {}),
34
+ ...(labels && labels.length > 0 ? { labels } : {}),
35
+ ...(assignee ? { assignee } : {}),
36
+ ...(author ? { author } : {}),
37
+ };
38
+ }
39
+ function toIntegrationSubjectPerson(person) {
40
+ if (!person || typeof person.id !== 'string' || typeof person.name !== 'string') {
41
+ return undefined;
42
+ }
43
+ return {
44
+ id: person.id,
45
+ name: person.name,
46
+ };
47
+ }
9
48
  class AgentChatBridge {
10
- constructor(chat, agentId, agentService, componentMapper, logger, n8nProjectId, integration) {
49
+ constructor(chat, agentId, agentService, componentMapper, logger, n8nProjectId, integration, messageContextStore) {
11
50
  this.chat = chat;
12
51
  this.agentId = agentId;
13
52
  this.agentService = agentService;
@@ -15,6 +54,7 @@ class AgentChatBridge {
15
54
  this.logger = logger;
16
55
  this.n8nProjectId = n8nProjectId;
17
56
  this.integration = integration;
57
+ this.messageContextStore = messageContextStore;
18
58
  this.activeResumedRuns = new Set();
19
59
  this.richInteractionInputs = new Map();
20
60
  this.integrationImpl = di_1.Container.get(agent_chat_integration_1.ChatIntegrationRegistry).get(integration.type);
@@ -45,7 +85,7 @@ class AgentChatBridge {
45
85
  yield* agentService.resumeForChat(config);
46
86
  },
47
87
  };
48
- return new AgentChatBridge(chat, agentId, agentExecutor, componentMapper, logger, n8nProjectId, integration);
88
+ return new AgentChatBridge(chat, agentId, agentExecutor, componentMapper, logger, n8nProjectId, integration, di_1.Container.get(integration_message_context_service_1.IntegrationMessageContextService));
49
89
  }
50
90
  registerHandlers() {
51
91
  this.chat.onNewMention(async (thread, message) => {
@@ -102,11 +142,25 @@ class AgentChatBridge {
102
142
  };
103
143
  }
104
144
  async executeAndStream(thread, message) {
105
- const text = message.text?.trim();
145
+ const platformAgentContext = this.getPlatformAgentContext();
146
+ const text = this.prepareInboundText(message.text, platformAgentContext).trim();
106
147
  if (!text)
107
148
  return;
108
149
  const platformThreadId = this.resolvePlatformThreadId(thread);
109
150
  const threadId = this.toAgentThreadId(platformThreadId);
151
+ const slackThreadContext = this.getSlackThreadContext(message);
152
+ const useNativeSlackThreadFeatures = this.integration.type !== 'slack' || slackThreadContext?.hasRealThreadTs === true;
153
+ const statusRetry = new AbortController();
154
+ const [, subject] = await Promise.all([
155
+ this.startThinkingStatus(thread, slackThreadContext, statusRetry.signal),
156
+ this.resolveMessageSubject(message),
157
+ ]);
158
+ await this.updateLatestMessageContext(threadId.id, message.author.userId, thread, {
159
+ messageId: message.id,
160
+ interactingUserId: message.author.userId,
161
+ ...platformAgentContext,
162
+ subject,
163
+ });
110
164
  const stream = this.agentService.executeForChatPublished({
111
165
  agentId: this.agentId,
112
166
  projectId: this.n8nProjectId,
@@ -117,10 +171,17 @@ class AgentChatBridge {
117
171
  },
118
172
  integrationType: this.integration.type,
119
173
  });
120
- await this.consumeStream(stream, thread);
174
+ try {
175
+ await this.consumeStream(stream, thread, {
176
+ forceBuffered: this.integration.type === 'slack' && !useNativeSlackThreadFeatures,
177
+ });
178
+ }
179
+ finally {
180
+ statusRetry.abort();
181
+ }
121
182
  }
122
- async consumeStream(stream, thread) {
123
- if (this.disableStreaming) {
183
+ async consumeStream(stream, thread, options = {}) {
184
+ if (this.disableStreaming || options.forceBuffered) {
124
185
  await this.consumeStreamBuffered(stream, thread);
125
186
  return;
126
187
  }
@@ -192,50 +253,55 @@ class AgentChatBridge {
192
253
  if (!streamingPost)
193
254
  startStreamingPost();
194
255
  };
195
- for await (const chunk of stream) {
196
- switch (chunk.type) {
197
- case 'text-delta': {
198
- const { delta } = chunk;
199
- ensureStreamingPost();
200
- textStream.yield?.(delta);
201
- break;
202
- }
203
- case 'reasoning-delta': {
204
- const { delta } = chunk;
205
- ensureStreamingPost();
206
- textStream.yield?.(`_${delta}_`);
207
- break;
208
- }
209
- case 'tool-call':
210
- this.stashRichInteractionInput(chunk);
211
- break;
212
- case 'tool-call-suspended':
213
- this.richInteractionInputs.delete(chunk.toolCallId);
214
- await endStreamingPost();
215
- await this.handleSuspension(chunk, thread);
216
- break;
217
- case 'tool-result':
218
- if (this.isRichInteractionDisplayOnly(chunk)) {
219
- await endStreamingPost();
220
- await this.handleDisplayOnly(chunk, thread);
256
+ try {
257
+ for await (const chunk of stream) {
258
+ switch (chunk.type) {
259
+ case 'text-delta': {
260
+ const { delta } = chunk;
261
+ ensureStreamingPost();
262
+ textStream.yield?.(delta);
263
+ break;
221
264
  }
222
- else {
223
- this.richInteractionInputs.delete(chunk.toolCallId);
265
+ case 'reasoning-delta': {
266
+ const { delta } = chunk;
267
+ ensureStreamingPost();
268
+ textStream.yield?.(`_${delta}_`);
269
+ break;
224
270
  }
225
- break;
226
- case 'message':
227
- await endStreamingPost();
228
- await this.handleMessage(chunk, thread);
229
- break;
230
- case 'error':
231
- await endStreamingPost();
232
- await this.postErrorToThread(thread, chunk.error);
233
- break;
234
- default:
235
- break;
271
+ case 'tool-call':
272
+ this.stashRichInteractionInput(chunk);
273
+ break;
274
+ case 'tool-call-suspended':
275
+ this.richInteractionInputs.delete(chunk.toolCallId);
276
+ await endStreamingPost();
277
+ await this.handleSuspension(chunk, thread);
278
+ break;
279
+ case 'tool-result':
280
+ if (this.isRichInteractionDisplayOnly(chunk)) {
281
+ await endStreamingPost();
282
+ await this.handleDisplayOnly(chunk, thread);
283
+ }
284
+ else {
285
+ this.richInteractionInputs.delete(chunk.toolCallId);
286
+ }
287
+ break;
288
+ case 'message':
289
+ await endStreamingPost();
290
+ await this.handleMessage(chunk, thread);
291
+ break;
292
+ case 'error':
293
+ await endStreamingPost();
294
+ await this.postErrorToThread(thread, chunk.error);
295
+ break;
296
+ default:
297
+ break;
298
+ }
236
299
  }
237
300
  }
238
- await endStreamingPost();
301
+ finally {
302
+ await endStreamingPost();
303
+ this.richInteractionInputs.clear();
304
+ }
239
305
  }
240
306
  async consumeStreamBuffered(stream, thread) {
241
307
  let buffer = '';
@@ -254,44 +320,49 @@ class AgentChatBridge {
254
320
  });
255
321
  }
256
322
  };
257
- for await (const chunk of stream) {
258
- switch (chunk.type) {
259
- case 'text-delta':
260
- buffer += chunk.delta;
261
- break;
262
- case 'reasoning-delta':
263
- buffer += `_${chunk.delta}_`;
264
- break;
265
- case 'tool-call':
266
- this.stashRichInteractionInput(chunk);
267
- break;
268
- case 'tool-call-suspended':
269
- this.richInteractionInputs.delete(chunk.toolCallId);
270
- await flushBuffer();
271
- await this.handleSuspension(chunk, thread);
272
- break;
273
- case 'tool-result':
274
- if (this.isRichInteractionDisplayOnly(chunk)) {
275
- await flushBuffer();
276
- await this.handleDisplayOnly(chunk, thread);
277
- }
278
- else {
323
+ try {
324
+ for await (const chunk of stream) {
325
+ switch (chunk.type) {
326
+ case 'text-delta':
327
+ buffer += chunk.delta;
328
+ break;
329
+ case 'reasoning-delta':
330
+ buffer += `_${chunk.delta}_`;
331
+ break;
332
+ case 'tool-call':
333
+ this.stashRichInteractionInput(chunk);
334
+ break;
335
+ case 'tool-call-suspended':
279
336
  this.richInteractionInputs.delete(chunk.toolCallId);
280
- }
281
- break;
282
- case 'message':
283
- await flushBuffer();
284
- await this.handleMessage(chunk, thread);
285
- break;
286
- case 'error':
287
- await flushBuffer();
288
- await this.postErrorToThread(thread, chunk.error);
289
- break;
290
- default:
291
- break;
337
+ await flushBuffer();
338
+ await this.handleSuspension(chunk, thread);
339
+ break;
340
+ case 'tool-result':
341
+ if (this.isRichInteractionDisplayOnly(chunk)) {
342
+ await flushBuffer();
343
+ await this.handleDisplayOnly(chunk, thread);
344
+ }
345
+ else {
346
+ this.richInteractionInputs.delete(chunk.toolCallId);
347
+ }
348
+ break;
349
+ case 'message':
350
+ await flushBuffer();
351
+ await this.handleMessage(chunk, thread);
352
+ break;
353
+ case 'error':
354
+ await flushBuffer();
355
+ await this.postErrorToThread(thread, chunk.error);
356
+ break;
357
+ default:
358
+ break;
359
+ }
292
360
  }
293
361
  }
294
- await flushBuffer();
362
+ finally {
363
+ await flushBuffer();
364
+ this.richInteractionInputs.clear();
365
+ }
295
366
  }
296
367
  async handleSuspension(chunk, thread) {
297
368
  const { runId, toolCallId, suspendPayload } = chunk;
@@ -304,6 +375,9 @@ class AgentChatBridge {
304
375
  return;
305
376
  }
306
377
  const payload = suspendPayload;
378
+ if (isIntegrationActionSuspendPayload(payload)) {
379
+ return;
380
+ }
307
381
  const hasComponents = payload &&
308
382
  'components' in payload &&
309
383
  Array.isArray(payload.components) &&
@@ -344,15 +418,8 @@ class AgentChatBridge {
344
418
  this.logger.warn('[AgentChatBridge] rich_interaction has no components');
345
419
  return;
346
420
  }
347
- const riResumeSchema = {
348
- type: 'object',
349
- properties: {
350
- type: { type: 'string' },
351
- value: { type: 'string' },
352
- },
353
- };
354
421
  try {
355
- const card = await this.componentMapper.toCard(payload, runId, toolCallId, riResumeSchema, this.getShortenCallback(), this.integration.type);
422
+ const card = await this.componentMapper.toCard(payload, runId, toolCallId, component_mapper_1.RICH_INTERACTION_RESUME_JSON_SCHEMA, this.getShortenCallback(), this.integration.type);
356
423
  await thread.post(card);
357
424
  }
358
425
  catch (error) {
@@ -386,12 +453,8 @@ class AgentChatBridge {
386
453
  });
387
454
  return;
388
455
  }
389
- const displayResumeSchema = {
390
- type: 'object',
391
- properties: { type: { type: 'string' }, value: { type: 'string' } },
392
- };
393
456
  try {
394
- const card = await this.componentMapper.toCard(cardPayload, '', toolCallId, displayResumeSchema, this.getShortenCallback(), this.integration.type);
457
+ const card = await this.componentMapper.toCard(cardPayload, '', toolCallId, component_mapper_1.RICH_INTERACTION_RESUME_JSON_SCHEMA, this.getShortenCallback(), this.integration.type);
395
458
  await thread.post({ card });
396
459
  }
397
460
  catch (error) {
@@ -422,21 +485,6 @@ class AgentChatBridge {
422
485
  }
423
486
  }
424
487
  parseActionId(actionId, value) {
425
- if (actionId.startsWith('ri-btn:')) {
426
- const parts = actionId.split(':');
427
- if (parts.length < 4) {
428
- this.logger.warn('[AgentChatBridge] Malformed ri-btn action ID', { actionId });
429
- return null;
430
- }
431
- let resumeData;
432
- try {
433
- resumeData = JSON.parse(value ?? '');
434
- }
435
- catch {
436
- resumeData = { type: 'button', value };
437
- }
438
- return { runId: parts[1], toolCallId: parts.slice(2, -1).join(':'), resumeData };
439
- }
440
488
  if (actionId.startsWith('ri-sel:')) {
441
489
  const parts = actionId.split(':');
442
490
  if (parts.length < 4) {
@@ -486,13 +534,6 @@ class AgentChatBridge {
486
534
  error: deleteError instanceof Error ? deleteError.message : String(deleteError),
487
535
  });
488
536
  }
489
- const threadInternal = event.thread;
490
- if (threadInternal?._currentMessage?.raw) {
491
- const raw = threadInternal._currentMessage.raw;
492
- if (raw.team && typeof raw.team === 'object' && !raw.team_id) {
493
- raw.team_id = raw.team.id;
494
- }
495
- }
496
537
  }
497
538
  async executeResume(thread, runId, toolCallId, resumeData) {
498
539
  if (this.activeResumedRuns.has(runId)) {
@@ -502,6 +543,7 @@ class AgentChatBridge {
502
543
  }
503
544
  this.activeResumedRuns.add(runId);
504
545
  try {
546
+ await this.startThinkingStatus(thread);
505
547
  const stream = this.agentService.resumeForChat({
506
548
  agentId: this.agentId,
507
549
  projectId: this.n8nProjectId,
@@ -516,6 +558,169 @@ class AgentChatBridge {
516
558
  this.activeResumedRuns.delete(runId);
517
559
  }
518
560
  }
561
+ async startThinkingStatus(thread, slackThreadContext, statusRetrySignal) {
562
+ if (this.integration.type !== 'slack')
563
+ return;
564
+ if (slackThreadContext && !slackThreadContext.hasRealThreadTs) {
565
+ this.setSlackAssistantStatus(slackThreadContext, statusRetrySignal);
566
+ return;
567
+ }
568
+ try {
569
+ await thread.startTyping(SLACK_THINKING_STATUS);
570
+ }
571
+ catch (error) {
572
+ this.logger.warn('[AgentChatBridge] Failed to set Slack assistant status', {
573
+ agentId: this.agentId,
574
+ threadId: thread.id,
575
+ error: error instanceof Error ? error.message : String(error),
576
+ });
577
+ }
578
+ }
579
+ setSlackAssistantStatus(context, statusRetrySignal) {
580
+ const adapter = this.getSlackAssistantStatusAdapter();
581
+ if (!adapter)
582
+ return;
583
+ void this.setSlackAssistantStatusWithRetry(adapter, context, statusRetrySignal);
584
+ }
585
+ async setSlackAssistantStatusWithRetry(adapter, context, statusRetrySignal) {
586
+ try {
587
+ await adapter.setAssistantStatus(context.channelId, context.threadTs, SLACK_THINKING_STATUS, [
588
+ SLACK_THINKING_STATUS,
589
+ ]);
590
+ return;
591
+ }
592
+ catch (error) {
593
+ if (getSlackErrorCode(error) !== 'invalid_thread_ts') {
594
+ this.logger.warn('[AgentChatBridge] Failed to set Slack assistant status', {
595
+ agentId: this.agentId,
596
+ channelId: context.channelId,
597
+ threadTs: context.threadTs,
598
+ error: error instanceof Error ? error.message : String(error),
599
+ });
600
+ return;
601
+ }
602
+ }
603
+ if (!(await sleep(SLACK_STATUS_RETRY_DELAY_MS, statusRetrySignal)))
604
+ return;
605
+ try {
606
+ await adapter.setAssistantStatus(context.channelId, context.threadTs, SLACK_THINKING_STATUS, [
607
+ SLACK_THINKING_STATUS,
608
+ ]);
609
+ }
610
+ catch (error) {
611
+ const errorCode = getSlackErrorCode(error);
612
+ const logPayload = {
613
+ agentId: this.agentId,
614
+ channelId: context.channelId,
615
+ threadTs: context.threadTs,
616
+ error: error instanceof Error ? error.message : String(error),
617
+ ...(errorCode ? { errorCode } : {}),
618
+ };
619
+ if (errorCode === 'invalid_thread_ts') {
620
+ this.logger.debug('[AgentChatBridge] Slack assistant status unavailable for thread', logPayload);
621
+ return;
622
+ }
623
+ this.logger.warn('[AgentChatBridge] Failed to set Slack assistant status', logPayload);
624
+ }
625
+ }
626
+ getSlackThreadContext(message) {
627
+ if (this.integration.type !== 'slack')
628
+ return undefined;
629
+ const raw = message.raw;
630
+ if (!isRecord(raw))
631
+ return undefined;
632
+ const channelId = stringValue(raw.channel);
633
+ const realThreadTs = stringValue(raw.thread_ts);
634
+ const threadTs = realThreadTs ?? stringValue(raw.ts);
635
+ if (!channelId || !threadTs)
636
+ return undefined;
637
+ return {
638
+ channelId,
639
+ threadTs,
640
+ hasRealThreadTs: realThreadTs !== undefined,
641
+ };
642
+ }
643
+ getSlackAssistantStatusAdapter() {
644
+ const adapter = this.chat.getAdapter('slack');
645
+ return isSlackAssistantStatusAdapter(adapter) ? adapter : undefined;
646
+ }
647
+ async updateLatestMessageContext(threadId, resourceId, thread, options = {}) {
648
+ if (!this.messageContextStore)
649
+ return undefined;
650
+ const integrationConnectionId = (0, integration_tools_1.buildIntegrationConnectionId)(this.integration);
651
+ const previousContext = await this.getPreviousContext(threadId, integrationConnectionId);
652
+ const agentUserId = options.agentUserId ?? previousContext?.agentUserId;
653
+ const context = {
654
+ integrationConnectionId,
655
+ platform: this.integration.type,
656
+ target: {
657
+ type: 'thread',
658
+ threadId: thread.id,
659
+ channelId: thread.channelId,
660
+ },
661
+ ...(options.messageId ? { messageId: options.messageId } : {}),
662
+ ...(options.interactingUserId ? { interactingUserId: options.interactingUserId } : {}),
663
+ ...(agentUserId ? { agentUserId } : {}),
664
+ ...(options.subject ? { subject: options.subject } : {}),
665
+ ...(!options.subject && previousContext?.subject ? { subject: previousContext.subject } : {}),
666
+ updatedAt: new Date().toISOString(),
667
+ };
668
+ try {
669
+ await this.messageContextStore.setLatest(threadId, resourceId, context);
670
+ return context;
671
+ }
672
+ catch (error) {
673
+ this.logger.warn('[AgentChatBridge] Failed to update latest message context', {
674
+ agentId: this.agentId,
675
+ threadId,
676
+ error: error instanceof Error ? error.message : String(error),
677
+ });
678
+ return undefined;
679
+ }
680
+ }
681
+ getPlatformAgentContext() {
682
+ if (this.integration.type !== 'slack')
683
+ return {};
684
+ const adapter = this.chat.getAdapter(this.integration.type);
685
+ if (!isRecord(adapter))
686
+ return {};
687
+ const agentUserId = stringValue(adapter.botUserId);
688
+ return agentUserId ? { agentUserId } : {};
689
+ }
690
+ prepareInboundText(text, context) {
691
+ const trimmed = text?.trim() ?? '';
692
+ if (this.integration.type !== 'slack' || !context.agentUserId)
693
+ return trimmed;
694
+ return stripSlackSelfMention(trimmed, context.agentUserId);
695
+ }
696
+ async getPreviousContext(threadId, integrationConnectionId) {
697
+ if (!this.messageContextStore)
698
+ return undefined;
699
+ try {
700
+ const previousContext = await this.messageContextStore.getLatest(threadId);
701
+ if (previousContext?.integrationConnectionId !== integrationConnectionId) {
702
+ return undefined;
703
+ }
704
+ return previousContext;
705
+ }
706
+ catch (error) {
707
+ this.logger.warn('[AgentChatBridge] Failed to read previous message context', {
708
+ agentId: this.agentId,
709
+ threadId,
710
+ error: error instanceof Error ? error.message : String(error),
711
+ });
712
+ return undefined;
713
+ }
714
+ }
715
+ async resolveMessageSubject(message) {
716
+ try {
717
+ return toIntegrationMessageSubject(await message.subject);
718
+ }
719
+ catch (error) {
720
+ this.logger.debug(`[AgentChatBridge] Failed to fetch message subject: ${error instanceof Error ? error.message : String(error)}`);
721
+ return undefined;
722
+ }
723
+ }
519
724
  async handleAction(event) {
520
725
  const { thread } = event;
521
726
  if (!thread) {
@@ -531,6 +736,13 @@ class AgentChatBridge {
531
736
  const parsed = this.parseActionId(callbackData.actionId, callbackData.value);
532
737
  if (!parsed)
533
738
  return;
739
+ const platformThreadId = this.resolvePlatformThreadId(thread);
740
+ const threadId = this.toAgentThreadId(platformThreadId);
741
+ await this.updateLatestMessageContext(threadId.id, event.user.userId, thread, {
742
+ messageId: event.messageId,
743
+ interactingUserId: event.user.userId,
744
+ ...this.getPlatformAgentContext(),
745
+ });
534
746
  await this.cleanUpBeforeResume(event);
535
747
  await this.executeResume(thread, parsed.runId, parsed.toolCallId, parsed.resumeData);
536
748
  }
@@ -560,4 +772,48 @@ class AgentChatBridge {
560
772
  }
561
773
  }
562
774
  exports.AgentChatBridge = AgentChatBridge;
775
+ function stripSlackSelfMention(text, userId) {
776
+ const escapedUserId = escapeRegExp(userId);
777
+ return text
778
+ .replace(new RegExp(`(^|\\s)<@!?${escapedUserId}(?:\\|[^>]+)?>`, 'gi'), '$1')
779
+ .replace(new RegExp(`(^|\\s)@${escapedUserId}\\b`, 'gi'), '$1')
780
+ .replace(/\s+/g, ' ')
781
+ .trim();
782
+ }
783
+ function isRecord(value) {
784
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
785
+ }
786
+ function isSlackAssistantStatusAdapter(value) {
787
+ return isRecord(value) && typeof value.setAssistantStatus === 'function';
788
+ }
789
+ function stringValue(value) {
790
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
791
+ }
792
+ function escapeRegExp(value) {
793
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
794
+ }
795
+ function getSlackErrorCode(error) {
796
+ if (!isRecord(error))
797
+ return undefined;
798
+ const data = error.data;
799
+ if (!isRecord(data))
800
+ return undefined;
801
+ return stringValue(data.error);
802
+ }
803
+ async function sleep(ms, signal) {
804
+ if (signal?.aborted)
805
+ return false;
806
+ return await new Promise((resolve) => {
807
+ const timeout = setTimeout(() => {
808
+ signal?.removeEventListener('abort', abort);
809
+ resolve(true);
810
+ }, ms);
811
+ const abort = () => {
812
+ clearTimeout(timeout);
813
+ signal?.removeEventListener('abort', abort);
814
+ resolve(false);
815
+ };
816
+ signal?.addEventListener('abort', abort, { once: true });
817
+ });
818
+ }
563
819
  //# sourceMappingURL=agent-chat-bridge.js.map