@atom8n/ai-workflow-builder 1.2.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 (455) hide show
  1. package/dist/agents/responder.agent.d.ts +21 -0
  2. package/dist/agents/responder.agent.js +71 -0
  3. package/dist/agents/responder.agent.js.map +1 -0
  4. package/dist/agents/supervisor.agent.d.ts +31 -0
  5. package/dist/agents/supervisor.agent.js +68 -0
  6. package/dist/agents/supervisor.agent.js.map +1 -0
  7. package/dist/ai-workflow-builder-agent.service.d.ts +32 -0
  8. package/dist/ai-workflow-builder-agent.service.js +236 -0
  9. package/dist/ai-workflow-builder-agent.service.js.map +1 -0
  10. package/dist/build.tsbuildinfo +1 -0
  11. package/dist/chains/conversation-compact.d.ts +7 -0
  12. package/dist/chains/conversation-compact.js +56 -0
  13. package/dist/chains/conversation-compact.js.map +1 -0
  14. package/dist/chains/parameter-updater.d.ts +16 -0
  15. package/dist/chains/parameter-updater.js +112 -0
  16. package/dist/chains/parameter-updater.js.map +1 -0
  17. package/dist/chains/prompt-categorization.d.ts +3 -0
  18. package/dist/chains/prompt-categorization.js +31 -0
  19. package/dist/chains/prompt-categorization.js.map +1 -0
  20. package/dist/chains/test/integration/test-helpers.d.ts +3 -0
  21. package/dist/chains/test/integration/test-helpers.js +16 -0
  22. package/dist/chains/test/integration/test-helpers.js.map +1 -0
  23. package/dist/chains/workflow-name.d.ts +4 -0
  24. package/dist/chains/workflow-name.js +22 -0
  25. package/dist/chains/workflow-name.js.map +1 -0
  26. package/dist/constants.d.ts +14 -0
  27. package/dist/constants.js +18 -0
  28. package/dist/constants.js.map +1 -0
  29. package/dist/errors/index.d.ts +52 -0
  30. package/dist/errors/index.js +137 -0
  31. package/dist/errors/index.js.map +1 -0
  32. package/dist/index.d.ts +4 -0
  33. package/dist/index.js +22 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/llm-config.d.ts +11 -0
  36. package/dist/llm-config.js +126 -0
  37. package/dist/llm-config.js.map +1 -0
  38. package/dist/multi-agent-workflow-subgraphs.d.ts +122 -0
  39. package/dist/multi-agent-workflow-subgraphs.js +159 -0
  40. package/dist/multi-agent-workflow-subgraphs.js.map +1 -0
  41. package/dist/parent-graph-state.d.ts +27 -0
  42. package/dist/parent-graph-state.js +47 -0
  43. package/dist/parent-graph-state.js.map +1 -0
  44. package/dist/prompts/agents/builder.prompt.d.ts +1 -0
  45. package/dist/prompts/agents/builder.prompt.js +320 -0
  46. package/dist/prompts/agents/builder.prompt.js.map +1 -0
  47. package/dist/prompts/agents/configurator.prompt.d.ts +2 -0
  48. package/dist/prompts/agents/configurator.prompt.js +143 -0
  49. package/dist/prompts/agents/configurator.prompt.js.map +1 -0
  50. package/dist/prompts/agents/discovery.prompt.d.ts +11 -0
  51. package/dist/prompts/agents/discovery.prompt.js +260 -0
  52. package/dist/prompts/agents/discovery.prompt.js.map +1 -0
  53. package/dist/prompts/agents/responder.prompt.d.ts +1 -0
  54. package/dist/prompts/agents/responder.prompt.js +41 -0
  55. package/dist/prompts/agents/responder.prompt.js.map +1 -0
  56. package/dist/prompts/agents/supervisor.prompt.d.ts +1 -0
  57. package/dist/prompts/agents/supervisor.prompt.js +43 -0
  58. package/dist/prompts/agents/supervisor.prompt.js.map +1 -0
  59. package/dist/prompts/builder/index.d.ts +2 -0
  60. package/dist/prompts/builder/index.js +7 -0
  61. package/dist/prompts/builder/index.js.map +1 -0
  62. package/dist/prompts/builder/prompt-builder.d.ts +17 -0
  63. package/dist/prompts/builder/prompt-builder.js +147 -0
  64. package/dist/prompts/builder/prompt-builder.js.map +1 -0
  65. package/dist/prompts/builder/types.d.ts +22 -0
  66. package/dist/prompts/builder/types.js +3 -0
  67. package/dist/prompts/builder/types.js.map +1 -0
  68. package/dist/prompts/chains/categorization.prompt.d.ts +43 -0
  69. package/dist/prompts/chains/categorization.prompt.js +86 -0
  70. package/dist/prompts/chains/categorization.prompt.js.map +1 -0
  71. package/dist/prompts/chains/compact.prompt.d.ts +2 -0
  72. package/dist/prompts/chains/compact.prompt.js +16 -0
  73. package/dist/prompts/chains/compact.prompt.js.map +1 -0
  74. package/dist/prompts/chains/parameter-updater/examples/if-node.d.ts +2 -0
  75. package/dist/prompts/chains/parameter-updater/examples/if-node.js +141 -0
  76. package/dist/prompts/chains/parameter-updater/examples/if-node.js.map +1 -0
  77. package/dist/prompts/chains/parameter-updater/examples/index.d.ts +6 -0
  78. package/dist/prompts/chains/parameter-updater/examples/index.js +16 -0
  79. package/dist/prompts/chains/parameter-updater/examples/index.js.map +1 -0
  80. package/dist/prompts/chains/parameter-updater/examples/resource-locator.d.ts +2 -0
  81. package/dist/prompts/chains/parameter-updater/examples/resource-locator.js +83 -0
  82. package/dist/prompts/chains/parameter-updater/examples/resource-locator.js.map +1 -0
  83. package/dist/prompts/chains/parameter-updater/examples/set-node.d.ts +2 -0
  84. package/dist/prompts/chains/parameter-updater/examples/set-node.js +151 -0
  85. package/dist/prompts/chains/parameter-updater/examples/set-node.js.map +1 -0
  86. package/dist/prompts/chains/parameter-updater/examples/simple-updates.d.ts +2 -0
  87. package/dist/prompts/chains/parameter-updater/examples/simple-updates.js +54 -0
  88. package/dist/prompts/chains/parameter-updater/examples/simple-updates.js.map +1 -0
  89. package/dist/prompts/chains/parameter-updater/examples/switch-node.d.ts +2 -0
  90. package/dist/prompts/chains/parameter-updater/examples/switch-node.js +131 -0
  91. package/dist/prompts/chains/parameter-updater/examples/switch-node.js.map +1 -0
  92. package/dist/prompts/chains/parameter-updater/examples/tool-nodes.d.ts +2 -0
  93. package/dist/prompts/chains/parameter-updater/examples/tool-nodes.js +74 -0
  94. package/dist/prompts/chains/parameter-updater/examples/tool-nodes.js.map +1 -0
  95. package/dist/prompts/chains/parameter-updater/guides/embedding-nodes.d.ts +2 -0
  96. package/dist/prompts/chains/parameter-updater/guides/embedding-nodes.js +70 -0
  97. package/dist/prompts/chains/parameter-updater/guides/embedding-nodes.js.map +1 -0
  98. package/dist/prompts/chains/parameter-updater/guides/gmail.d.ts +2 -0
  99. package/dist/prompts/chains/parameter-updater/guides/gmail.js +28 -0
  100. package/dist/prompts/chains/parameter-updater/guides/gmail.js.map +1 -0
  101. package/dist/prompts/chains/parameter-updater/guides/http-request.d.ts +2 -0
  102. package/dist/prompts/chains/parameter-updater/guides/http-request.js +139 -0
  103. package/dist/prompts/chains/parameter-updater/guides/http-request.js.map +1 -0
  104. package/dist/prompts/chains/parameter-updater/guides/if-node.d.ts +2 -0
  105. package/dist/prompts/chains/parameter-updater/guides/if-node.js +159 -0
  106. package/dist/prompts/chains/parameter-updater/guides/if-node.js.map +1 -0
  107. package/dist/prompts/chains/parameter-updater/guides/index.d.ts +10 -0
  108. package/dist/prompts/chains/parameter-updater/guides/index.js +24 -0
  109. package/dist/prompts/chains/parameter-updater/guides/index.js.map +1 -0
  110. package/dist/prompts/chains/parameter-updater/guides/resource-locator.d.ts +2 -0
  111. package/dist/prompts/chains/parameter-updater/guides/resource-locator.js +99 -0
  112. package/dist/prompts/chains/parameter-updater/guides/resource-locator.js.map +1 -0
  113. package/dist/prompts/chains/parameter-updater/guides/set-node.d.ts +2 -0
  114. package/dist/prompts/chains/parameter-updater/guides/set-node.js +94 -0
  115. package/dist/prompts/chains/parameter-updater/guides/set-node.js.map +1 -0
  116. package/dist/prompts/chains/parameter-updater/guides/switch-node.d.ts +2 -0
  117. package/dist/prompts/chains/parameter-updater/guides/switch-node.js +75 -0
  118. package/dist/prompts/chains/parameter-updater/guides/switch-node.js.map +1 -0
  119. package/dist/prompts/chains/parameter-updater/guides/system-message.d.ts +2 -0
  120. package/dist/prompts/chains/parameter-updater/guides/system-message.js +96 -0
  121. package/dist/prompts/chains/parameter-updater/guides/system-message.js.map +1 -0
  122. package/dist/prompts/chains/parameter-updater/guides/text-fields.d.ts +2 -0
  123. package/dist/prompts/chains/parameter-updater/guides/text-fields.js +31 -0
  124. package/dist/prompts/chains/parameter-updater/guides/text-fields.js.map +1 -0
  125. package/dist/prompts/chains/parameter-updater/guides/tool-nodes.d.ts +2 -0
  126. package/dist/prompts/chains/parameter-updater/guides/tool-nodes.js +76 -0
  127. package/dist/prompts/chains/parameter-updater/guides/tool-nodes.js.map +1 -0
  128. package/dist/prompts/chains/parameter-updater/index.d.ts +8 -0
  129. package/dist/prompts/chains/parameter-updater/index.js +35 -0
  130. package/dist/prompts/chains/parameter-updater/index.js.map +1 -0
  131. package/dist/prompts/chains/parameter-updater/instance-url.d.ts +1 -0
  132. package/dist/prompts/chains/parameter-updater/instance-url.js +15 -0
  133. package/dist/prompts/chains/parameter-updater/instance-url.js.map +1 -0
  134. package/dist/prompts/chains/parameter-updater/parameter-updater.prompt.d.ts +4 -0
  135. package/dist/prompts/chains/parameter-updater/parameter-updater.prompt.js +52 -0
  136. package/dist/prompts/chains/parameter-updater/parameter-updater.prompt.js.map +1 -0
  137. package/dist/prompts/chains/parameter-updater/registry.d.ts +4 -0
  138. package/dist/prompts/chains/parameter-updater/registry.js +66 -0
  139. package/dist/prompts/chains/parameter-updater/registry.js.map +1 -0
  140. package/dist/prompts/chains/parameter-updater/types.d.ts +18 -0
  141. package/dist/prompts/chains/parameter-updater/types.js +3 -0
  142. package/dist/prompts/chains/parameter-updater/types.js.map +1 -0
  143. package/dist/prompts/chains/parameter-updater/utils.d.ts +2 -0
  144. package/dist/prompts/chains/parameter-updater/utils.js +16 -0
  145. package/dist/prompts/chains/parameter-updater/utils.js.map +1 -0
  146. package/dist/prompts/chains/workflow-name.prompt.d.ts +2 -0
  147. package/dist/prompts/chains/workflow-name.prompt.js +11 -0
  148. package/dist/prompts/chains/workflow-name.prompt.js.map +1 -0
  149. package/dist/prompts/index.d.ts +12 -0
  150. package/dist/prompts/index.js +50 -0
  151. package/dist/prompts/index.js.map +1 -0
  152. package/dist/prompts/legacy-agent.prompt.d.ts +6 -0
  153. package/dist/prompts/legacy-agent.prompt.js +594 -0
  154. package/dist/prompts/legacy-agent.prompt.js.map +1 -0
  155. package/dist/session-manager.service.d.ts +16 -0
  156. package/dist/session-manager.service.js +125 -0
  157. package/dist/session-manager.service.js.map +1 -0
  158. package/dist/subgraphs/builder.subgraph.d.ts +132 -0
  159. package/dist/subgraphs/builder.subgraph.js +173 -0
  160. package/dist/subgraphs/builder.subgraph.js.map +1 -0
  161. package/dist/subgraphs/configurator.subgraph.d.ts +142 -0
  162. package/dist/subgraphs/configurator.subgraph.js +173 -0
  163. package/dist/subgraphs/configurator.subgraph.js.map +1 -0
  164. package/dist/subgraphs/discovery.subgraph.d.ts +158 -0
  165. package/dist/subgraphs/discovery.subgraph.js +221 -0
  166. package/dist/subgraphs/discovery.subgraph.js.map +1 -0
  167. package/dist/subgraphs/subgraph-interface.d.ts +23 -0
  168. package/dist/subgraphs/subgraph-interface.js +7 -0
  169. package/dist/subgraphs/subgraph-interface.js.map +1 -0
  170. package/dist/tools/add-node.tool.d.ts +54 -0
  171. package/dist/tools/add-node.tool.js +176 -0
  172. package/dist/tools/add-node.tool.js.map +1 -0
  173. package/dist/tools/best-practices/chatbot.d.ts +7 -0
  174. package/dist/tools/best-practices/chatbot.js +118 -0
  175. package/dist/tools/best-practices/chatbot.js.map +1 -0
  176. package/dist/tools/best-practices/content-generation.d.ts +7 -0
  177. package/dist/tools/best-practices/content-generation.js +115 -0
  178. package/dist/tools/best-practices/content-generation.js.map +1 -0
  179. package/dist/tools/best-practices/data-analysis.d.ts +7 -0
  180. package/dist/tools/best-practices/data-analysis.js +367 -0
  181. package/dist/tools/best-practices/data-analysis.js.map +1 -0
  182. package/dist/tools/best-practices/data-extraction.d.ts +7 -0
  183. package/dist/tools/best-practices/data-extraction.js +122 -0
  184. package/dist/tools/best-practices/data-extraction.js.map +1 -0
  185. package/dist/tools/best-practices/data-transformation.d.ts +7 -0
  186. package/dist/tools/best-practices/data-transformation.js +162 -0
  187. package/dist/tools/best-practices/data-transformation.js.map +1 -0
  188. package/dist/tools/best-practices/document-processing.d.ts +7 -0
  189. package/dist/tools/best-practices/document-processing.js +335 -0
  190. package/dist/tools/best-practices/document-processing.js.map +1 -0
  191. package/dist/tools/best-practices/enrichment.d.ts +7 -0
  192. package/dist/tools/best-practices/enrichment.js +271 -0
  193. package/dist/tools/best-practices/enrichment.js.map +1 -0
  194. package/dist/tools/best-practices/form-input.d.ts +7 -0
  195. package/dist/tools/best-practices/form-input.js +173 -0
  196. package/dist/tools/best-practices/form-input.js.map +1 -0
  197. package/dist/tools/best-practices/human-in-the-loop.d.ts +7 -0
  198. package/dist/tools/best-practices/human-in-the-loop.js +268 -0
  199. package/dist/tools/best-practices/human-in-the-loop.js.map +1 -0
  200. package/dist/tools/best-practices/index.d.ts +3 -0
  201. package/dist/tools/best-practices/index.js +29 -0
  202. package/dist/tools/best-practices/index.js.map +1 -0
  203. package/dist/tools/best-practices/knowledge-base.d.ts +7 -0
  204. package/dist/tools/best-practices/knowledge-base.js +268 -0
  205. package/dist/tools/best-practices/knowledge-base.js.map +1 -0
  206. package/dist/tools/best-practices/monitoring.d.ts +7 -0
  207. package/dist/tools/best-practices/monitoring.js +178 -0
  208. package/dist/tools/best-practices/monitoring.js.map +1 -0
  209. package/dist/tools/best-practices/notification.d.ts +7 -0
  210. package/dist/tools/best-practices/notification.js +229 -0
  211. package/dist/tools/best-practices/notification.js.map +1 -0
  212. package/dist/tools/best-practices/scheduling.d.ts +7 -0
  213. package/dist/tools/best-practices/scheduling.js +281 -0
  214. package/dist/tools/best-practices/scheduling.js.map +1 -0
  215. package/dist/tools/best-practices/scraping-and-research.d.ts +7 -0
  216. package/dist/tools/best-practices/scraping-and-research.js +161 -0
  217. package/dist/tools/best-practices/scraping-and-research.js.map +1 -0
  218. package/dist/tools/best-practices/triage.d.ts +7 -0
  219. package/dist/tools/best-practices/triage.js +211 -0
  220. package/dist/tools/best-practices/triage.js.map +1 -0
  221. package/dist/tools/builder-tools.d.ts +16 -0
  222. package/dist/tools/builder-tools.js +36 -0
  223. package/dist/tools/builder-tools.js.map +1 -0
  224. package/dist/tools/categorize-prompt.tool.d.ts +5 -0
  225. package/dist/tools/categorize-prompt.tool.js +85 -0
  226. package/dist/tools/categorize-prompt.tool.js.map +1 -0
  227. package/dist/tools/connect-nodes.tool.d.ts +22 -0
  228. package/dist/tools/connect-nodes.tool.js +231 -0
  229. package/dist/tools/connect-nodes.tool.js.map +1 -0
  230. package/dist/tools/engines/node-search-engine.d.ts +16 -0
  231. package/dist/tools/engines/node-search-engine.js +123 -0
  232. package/dist/tools/engines/node-search-engine.js.map +1 -0
  233. package/dist/tools/get-best-practices.tool.d.ts +33 -0
  234. package/dist/tools/get-best-practices.tool.js +94 -0
  235. package/dist/tools/get-best-practices.tool.js.map +1 -0
  236. package/dist/tools/get-node-examples.tool.d.ts +119 -0
  237. package/dist/tools/get-node-examples.tool.js +189 -0
  238. package/dist/tools/get-node-examples.tool.js.map +1 -0
  239. package/dist/tools/get-node-parameter.tool.d.ts +4 -0
  240. package/dist/tools/get-node-parameter.tool.js +114 -0
  241. package/dist/tools/get-node-parameter.tool.js.map +1 -0
  242. package/dist/tools/get-workflow-examples.tool.d.ts +34 -0
  243. package/dist/tools/get-workflow-examples.tool.js +138 -0
  244. package/dist/tools/get-workflow-examples.tool.js.map +1 -0
  245. package/dist/tools/helpers/index.d.ts +4 -0
  246. package/dist/tools/helpers/index.js +21 -0
  247. package/dist/tools/helpers/index.js.map +1 -0
  248. package/dist/tools/helpers/progress.d.ts +9 -0
  249. package/dist/tools/helpers/progress.js +126 -0
  250. package/dist/tools/helpers/progress.js.map +1 -0
  251. package/dist/tools/helpers/response.d.ts +7 -0
  252. package/dist/tools/helpers/response.js +33 -0
  253. package/dist/tools/helpers/response.js.map +1 -0
  254. package/dist/tools/helpers/state.d.ts +14 -0
  255. package/dist/tools/helpers/state.js +85 -0
  256. package/dist/tools/helpers/state.js.map +1 -0
  257. package/dist/tools/helpers/validation.d.ts +13 -0
  258. package/dist/tools/helpers/validation.js +83 -0
  259. package/dist/tools/helpers/validation.js.map +1 -0
  260. package/dist/tools/node-details.tool.d.ts +31 -0
  261. package/dist/tools/node-details.tool.js +201 -0
  262. package/dist/tools/node-details.tool.js.map +1 -0
  263. package/dist/tools/node-search.tool.d.ts +62 -0
  264. package/dist/tools/node-search.tool.js +155 -0
  265. package/dist/tools/node-search.tool.js.map +1 -0
  266. package/dist/tools/remove-connection.tool.d.ts +24 -0
  267. package/dist/tools/remove-connection.tool.js +234 -0
  268. package/dist/tools/remove-connection.tool.js.map +1 -0
  269. package/dist/tools/remove-node.tool.d.ts +4 -0
  270. package/dist/tools/remove-node.tool.js +106 -0
  271. package/dist/tools/remove-node.tool.js.map +1 -0
  272. package/dist/tools/update-node-parameters.tool.d.ts +5 -0
  273. package/dist/tools/update-node-parameters.tool.js +156 -0
  274. package/dist/tools/update-node-parameters.tool.js.map +1 -0
  275. package/dist/tools/utils/connection-parameters.utils.d.ts +8 -0
  276. package/dist/tools/utils/connection-parameters.utils.js +47 -0
  277. package/dist/tools/utils/connection-parameters.utils.js.map +1 -0
  278. package/dist/tools/utils/connection.utils.d.ts +15 -0
  279. package/dist/tools/utils/connection.utils.js +321 -0
  280. package/dist/tools/utils/connection.utils.js.map +1 -0
  281. package/dist/tools/utils/mermaid.utils.d.ts +13 -0
  282. package/dist/tools/utils/mermaid.utils.js +647 -0
  283. package/dist/tools/utils/mermaid.utils.js.map +1 -0
  284. package/dist/tools/utils/node-configuration.utils.d.ts +13 -0
  285. package/dist/tools/utils/node-configuration.utils.js +75 -0
  286. package/dist/tools/utils/node-configuration.utils.js.map +1 -0
  287. package/dist/tools/utils/node-creation.utils.d.ts +8 -0
  288. package/dist/tools/utils/node-creation.utils.js +56 -0
  289. package/dist/tools/utils/node-creation.utils.js.map +1 -0
  290. package/dist/tools/utils/node-positioning.utils.d.ts +17 -0
  291. package/dist/tools/utils/node-positioning.utils.js +87 -0
  292. package/dist/tools/utils/node-positioning.utils.js.map +1 -0
  293. package/dist/tools/utils/parameter-update.utils.d.ts +6 -0
  294. package/dist/tools/utils/parameter-update.utils.js +75 -0
  295. package/dist/tools/utils/parameter-update.utils.js.map +1 -0
  296. package/dist/tools/utils/test/workflows/ai-assistant.workflow.d.ts +2 -0
  297. package/dist/tools/utils/test/workflows/ai-assistant.workflow.js +542 -0
  298. package/dist/tools/utils/test/workflows/ai-assistant.workflow.js.map +1 -0
  299. package/dist/tools/validate-configuration.tool.d.ts +4 -0
  300. package/dist/tools/validate-configuration.tool.js +70 -0
  301. package/dist/tools/validate-configuration.tool.js.map +1 -0
  302. package/dist/tools/validate-structure.tool.d.ts +4 -0
  303. package/dist/tools/validate-structure.tool.js +66 -0
  304. package/dist/tools/validate-structure.tool.js.map +1 -0
  305. package/dist/tools/validate-workflow.tool.d.ts +5 -0
  306. package/dist/tools/validate-workflow.tool.js +73 -0
  307. package/dist/tools/validate-workflow.tool.js.map +1 -0
  308. package/dist/tools/web/templates.d.ts +23 -0
  309. package/dist/tools/web/templates.js +106 -0
  310. package/dist/tools/web/templates.js.map +1 -0
  311. package/dist/types/best-practices.d.ts +6 -0
  312. package/dist/types/best-practices.js +3 -0
  313. package/dist/types/best-practices.js.map +1 -0
  314. package/dist/types/categorization.d.ts +23 -0
  315. package/dist/types/categorization.js +38 -0
  316. package/dist/types/categorization.js.map +1 -0
  317. package/dist/types/config.d.ts +55 -0
  318. package/dist/types/config.js +3 -0
  319. package/dist/types/config.js.map +1 -0
  320. package/dist/types/connections.d.ts +30 -0
  321. package/dist/types/connections.js +3 -0
  322. package/dist/types/connections.js.map +1 -0
  323. package/dist/types/coordination.d.ts +42 -0
  324. package/dist/types/coordination.js +23 -0
  325. package/dist/types/coordination.js.map +1 -0
  326. package/dist/types/discovery-types.d.ts +12 -0
  327. package/dist/types/discovery-types.js +3 -0
  328. package/dist/types/discovery-types.js.map +1 -0
  329. package/dist/types/index.d.ts +11 -0
  330. package/dist/types/index.js +18 -0
  331. package/dist/types/index.js.map +1 -0
  332. package/dist/types/langchain.d.ts +3 -0
  333. package/dist/types/langchain.js +15 -0
  334. package/dist/types/langchain.js.map +1 -0
  335. package/dist/types/messages.d.ts +32 -0
  336. package/dist/types/messages.js +3 -0
  337. package/dist/types/messages.js.map +1 -0
  338. package/dist/types/nodes.d.ts +27 -0
  339. package/dist/types/nodes.js +3 -0
  340. package/dist/types/nodes.js.map +1 -0
  341. package/dist/types/sessions.d.ts +8 -0
  342. package/dist/types/sessions.js +34 -0
  343. package/dist/types/sessions.js.map +1 -0
  344. package/dist/types/streaming.d.ts +33 -0
  345. package/dist/types/streaming.js +3 -0
  346. package/dist/types/streaming.js.map +1 -0
  347. package/dist/types/tools.d.ts +120 -0
  348. package/dist/types/tools.js +3 -0
  349. package/dist/types/tools.js.map +1 -0
  350. package/dist/types/utils.d.ts +2 -0
  351. package/dist/types/utils.js +3 -0
  352. package/dist/types/utils.js.map +1 -0
  353. package/dist/types/web/templates.d.ts +45 -0
  354. package/dist/types/web/templates.js +37 -0
  355. package/dist/types/web/templates.js.map +1 -0
  356. package/dist/types/workflow.d.ts +31 -0
  357. package/dist/types/workflow.js +3 -0
  358. package/dist/types/workflow.js.map +1 -0
  359. package/dist/utils/cache-control/helpers.d.ts +5 -0
  360. package/dist/utils/cache-control/helpers.js +126 -0
  361. package/dist/utils/cache-control/helpers.js.map +1 -0
  362. package/dist/utils/cache-control/index.d.ts +1 -0
  363. package/dist/utils/cache-control/index.js +9 -0
  364. package/dist/utils/cache-control/index.js.map +1 -0
  365. package/dist/utils/cleanup-dangling-tool-call-messages.d.ts +3 -0
  366. package/dist/utils/cleanup-dangling-tool-call-messages.js +10 -0
  367. package/dist/utils/cleanup-dangling-tool-call-messages.js.map +1 -0
  368. package/dist/utils/context-builders.d.ts +10 -0
  369. package/dist/utils/context-builders.js +71 -0
  370. package/dist/utils/context-builders.js.map +1 -0
  371. package/dist/utils/coordination-log.d.ts +15 -0
  372. package/dist/utils/coordination-log.js +75 -0
  373. package/dist/utils/coordination-log.js.map +1 -0
  374. package/dist/utils/http-proxy-agent.d.ts +2 -0
  375. package/dist/utils/http-proxy-agent.js +16 -0
  376. package/dist/utils/http-proxy-agent.js.map +1 -0
  377. package/dist/utils/node-helpers.d.ts +2 -0
  378. package/dist/utils/node-helpers.js +54 -0
  379. package/dist/utils/node-helpers.js.map +1 -0
  380. package/dist/utils/operations-processor.d.ts +14 -0
  381. package/dist/utils/operations-processor.js +196 -0
  382. package/dist/utils/operations-processor.js.map +1 -0
  383. package/dist/utils/state-modifier.d.ts +32 -0
  384. package/dist/utils/state-modifier.js +112 -0
  385. package/dist/utils/state-modifier.js.map +1 -0
  386. package/dist/utils/state-reducers.d.ts +3 -0
  387. package/dist/utils/state-reducers.js +20 -0
  388. package/dist/utils/state-reducers.js.map +1 -0
  389. package/dist/utils/stream-processor.d.ts +20 -0
  390. package/dist/utils/stream-processor.js +277 -0
  391. package/dist/utils/stream-processor.js.map +1 -0
  392. package/dist/utils/subgraph-helpers.d.ts +16 -0
  393. package/dist/utils/subgraph-helpers.js +117 -0
  394. package/dist/utils/subgraph-helpers.js.map +1 -0
  395. package/dist/utils/token-usage.d.ts +21 -0
  396. package/dist/utils/token-usage.js +45 -0
  397. package/dist/utils/token-usage.js.map +1 -0
  398. package/dist/utils/tool-executor.d.ts +3 -0
  399. package/dist/utils/tool-executor.js +108 -0
  400. package/dist/utils/tool-executor.js.map +1 -0
  401. package/dist/utils/trim-workflow-context.d.ts +2 -0
  402. package/dist/utils/trim-workflow-context.js +53 -0
  403. package/dist/utils/trim-workflow-context.js.map +1 -0
  404. package/dist/utils/workflow-validation.d.ts +2 -0
  405. package/dist/utils/workflow-validation.js +37 -0
  406. package/dist/utils/workflow-validation.js.map +1 -0
  407. package/dist/validation/checks/agent-prompt.d.ts +3 -0
  408. package/dist/validation/checks/agent-prompt.js +47 -0
  409. package/dist/validation/checks/agent-prompt.js.map +1 -0
  410. package/dist/validation/checks/connections.d.ts +4 -0
  411. package/dist/validation/checks/connections.js +163 -0
  412. package/dist/validation/checks/connections.js.map +1 -0
  413. package/dist/validation/checks/credentials.d.ts +3 -0
  414. package/dist/validation/checks/credentials.js +125 -0
  415. package/dist/validation/checks/credentials.js.map +1 -0
  416. package/dist/validation/checks/from-ai.d.ts +4 -0
  417. package/dist/validation/checks/from-ai.js +62 -0
  418. package/dist/validation/checks/from-ai.js.map +1 -0
  419. package/dist/validation/checks/index.d.ts +7 -0
  420. package/dist/validation/checks/index.js +18 -0
  421. package/dist/validation/checks/index.js.map +1 -0
  422. package/dist/validation/checks/nodes.d.ts +4 -0
  423. package/dist/validation/checks/nodes.js +44 -0
  424. package/dist/validation/checks/nodes.js.map +1 -0
  425. package/dist/validation/checks/tools.d.ts +4 -0
  426. package/dist/validation/checks/tools.js +38 -0
  427. package/dist/validation/checks/tools.js.map +1 -0
  428. package/dist/validation/checks/trigger.d.ts +8 -0
  429. package/dist/validation/checks/trigger.js +33 -0
  430. package/dist/validation/checks/trigger.js.map +1 -0
  431. package/dist/validation/programmatic.d.ts +3 -0
  432. package/dist/validation/programmatic.js +24 -0
  433. package/dist/validation/programmatic.js.map +1 -0
  434. package/dist/validation/types.d.ts +52 -0
  435. package/dist/validation/types.js +31 -0
  436. package/dist/validation/types.js.map +1 -0
  437. package/dist/validation/utils/expressions.d.ts +3 -0
  438. package/dist/validation/utils/expressions.js +37 -0
  439. package/dist/validation/utils/expressions.js.map +1 -0
  440. package/dist/validation/utils/is-tool.d.ts +2 -0
  441. package/dist/validation/utils/is-tool.js +7 -0
  442. package/dist/validation/utils/is-tool.js.map +1 -0
  443. package/dist/validation/utils/node-type-map.d.ts +8 -0
  444. package/dist/validation/utils/node-type-map.js +50 -0
  445. package/dist/validation/utils/node-type-map.js.map +1 -0
  446. package/dist/validation/utils/resolve-connections.d.ts +8 -0
  447. package/dist/validation/utils/resolve-connections.js +64 -0
  448. package/dist/validation/utils/resolve-connections.js.map +1 -0
  449. package/dist/workflow-builder-agent.d.ts +72 -0
  450. package/dist/workflow-builder-agent.js +401 -0
  451. package/dist/workflow-builder-agent.js.map +1 -0
  452. package/dist/workflow-state.d.ts +26 -0
  453. package/dist/workflow-state.js +79 -0
  454. package/dist/workflow-state.js.map +1 -0
  455. package/package.json +77 -0
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationBestPractices = void 0;
4
+ const categorization_1 = require("../../types/categorization");
5
+ class NotificationBestPractices {
6
+ technique = categorization_1.WorkflowTechnique.NOTIFICATION;
7
+ version = '1.0.0';
8
+ documentation = `# Best Practices: Notification Workflows
9
+
10
+ ## Workflow Design
11
+
12
+ Structure notification workflows in a clear sequence: Trigger → Data Retrieval/Processing → Condition Check → Notification Action → Post-Notification (logging/tracking). Keep each part modular with nodes dedicated to specific purposes.
13
+
14
+ Choose between event-based triggers (webhooks, form submissions, CRM events) for immediate notifications or scheduled triggers (Cron) for periodic condition monitoring. Test Cron triggers in manual mode first to avoid unintended executions.
15
+
16
+ CRITICAL: Multi-channel notifications should branch from a single condition check to multiple notification nodes in parallel, not duplicate the entire workflow. This enables easy extension and maintenance.
17
+
18
+ Example pattern:
19
+ - Webhook/Schedule Trigger → Fetch Data → IF (threshold exceeded) → [Email + Slack + SMS nodes in parallel]
20
+ - Result: Single workflow handles all channels efficiently with consistent logic
21
+
22
+ ## Condition Logic & Filtering
23
+
24
+ Use IF nodes for simple threshold checks without code. For complex conditions (multiple fields, array filtering), use Function nodes to script the logic and filter items that need alerts.
25
+
26
+ Always include empty notification prevention - check that alert-worthy items exist (items.length > 0) before proceeding to notification nodes. Route the false branch to end the workflow or log "no alert needed".
27
+
28
+ Store threshold values in environment variables or external sources (Google Sheets, database) rather than hardcoding. This enables adjustment without workflow modification.
29
+
30
+ ## Message Construction
31
+
32
+ Use expressions to inject dynamic data into messages. The expression \`{{ $json.fieldName }}\` pulls data from input items. For email subjects and bodies, include key details like metric names, values, and timestamps.
33
+
34
+ Format messages appropriately for each channel:
35
+ - Email: Support HTML or plain text, use clear subject lines
36
+ - Slack: Use markdown-like formatting, \\n for newlines
37
+ - SMS: Keep concise due to character limits, plain text only
38
+
39
+ ## Authentication & Permissions
40
+
41
+ Configure proper credentials for each service:
42
+ - Email: SMTP settings with correct host/port/auth (use App Passwords for Gmail)
43
+ - Slack: Bot token with chat:write scope, bot must be invited to target channel
44
+ - SMS (Twilio): Account SID, Auth Token, verified phone numbers
45
+
46
+ Store sensitive information in n8n credentials system or environment variables, never hardcode in workflows.
47
+
48
+ ## Alert Management
49
+
50
+ Implement cooldown mechanisms to prevent notification floods. Record last alert time and check before sending duplicates. Consider alert aggregation - send one message listing multiple items rather than individual alerts.
51
+
52
+ Add logging nodes to track sent notifications for audit trails and duplicate prevention. Consider using error handling paths with Continue on Fail settings for redundancy.
53
+
54
+ ## Recommended Nodes
55
+
56
+ ### Trigger Nodes
57
+
58
+ **Webhook** (n8n-nodes-base.webhook):
59
+ - Purpose: Event-based notifications triggered by external systems
60
+ - Use cases: Form submissions, CRM events, API webhooks
61
+ - Best practice: Validate incoming data before processing
62
+
63
+ **Schedule Trigger** (n8n-nodes-base.scheduleTrigger):
64
+ - Purpose: Periodic monitoring and batch notifications
65
+ - Use cases: Daily reports, threshold monitoring, scheduled alerts
66
+ - Best practice: Test in manual mode first to avoid unintended executions
67
+
68
+ **Email Trigger IMAP** (n8n-nodes-base.emailReadImap):
69
+ - Purpose: Email-triggered alerts and auto-responses
70
+ - Use cases: Support ticket creation, email monitoring
71
+ - Best practice: Use filters to avoid processing every email
72
+
73
+ ### Notification Nodes
74
+
75
+ **Send Email** (n8n-nodes-base.emailSend):
76
+ - Purpose: Detailed alerts with attachments and HTML formatting
77
+ - Use cases: Reports, detailed notifications, formal communications
78
+ - Configuration: SMTP settings, use App Passwords for Gmail
79
+ - Best practice: Use clear subject lines with key information
80
+
81
+ **Slack** (n8n-nodes-base.slack):
82
+ - Purpose: Team notifications in channels or direct messages
83
+ - Use cases: Team alerts, status updates, incident notifications
84
+ - Configuration: Bot token with chat:write scope, bot must be invited to channel
85
+ - Best practice: Use markdown formatting, channel IDs (starting with C) not names
86
+
87
+ **Telegram** (n8n-nodes-base.telegram):
88
+ - Purpose: Instant messaging alerts to individuals or groups
89
+ - Use cases: Personal notifications, bot interactions
90
+ - Configuration: Bot token from BotFather
91
+ - Best practice: Use chat ID for direct messages
92
+
93
+ **Twilio** (n8n-nodes-base.twilio):
94
+ - Purpose: SMS/WhatsApp critical alerts
95
+ - Use cases: High-priority alerts, two-factor authentication, critical incidents
96
+ - Configuration: Account SID, Auth Token, verified phone numbers
97
+ - Best practice: Keep messages concise, use international format (+1234567890)
98
+
99
+ **HTTP Request** (n8n-nodes-base.httpRequest):
100
+ - Purpose: Custom webhooks (Microsoft Teams, Discord, custom APIs)
101
+ - Use cases: Integration with services without dedicated nodes
102
+ - Best practice: Test webhook URLs before production
103
+
104
+ ### Logic & Processing
105
+
106
+ **IF** (n8n-nodes-base.if):
107
+ - Purpose: Simple threshold checks and condition routing
108
+ - Use cases: Check if metric exceeds threshold, validate data
109
+ - Best practice: Include empty notification prevention (items.length > 0)
110
+
111
+ **Switch** (n8n-nodes-base.switch):
112
+ - Purpose: Route notifications based on severity/type
113
+ - Use cases: Different channels for different alert levels
114
+ - Best practice: Always define Default case for unexpected values
115
+
116
+ **Function** (n8n-nodes-base.function):
117
+ - Purpose: Complex filtering and data transformation
118
+ - Use cases: Array filtering, complex conditions, message formatting
119
+ - Best practice: Keep logic focused and well-documented
120
+
121
+ **Merge** (n8n-nodes-base.merge):
122
+ - Purpose: Combine parallel notification branches
123
+ - Use cases: Track all notification attempts, consolidate logs
124
+ - Best practice: Use after parallel notification nodes
125
+
126
+ ### Data Sources
127
+
128
+ **Database Nodes**:
129
+ - Postgres (n8n-nodes-base.postgres)
130
+ - MySQL (n8n-nodes-base.mySql)
131
+ - MongoDB (n8n-nodes-base.mongoDb)
132
+
133
+ Purpose: Fetch metrics, thresholds, and historical data
134
+ Best practice: Use queries with proper indexing for performance
135
+
136
+ **Google Sheets** (n8n-nodes-base.googleSheets):
137
+ - Purpose: Configuration storage and logging
138
+ - Use cases: Store thresholds, log notifications, track cooldowns
139
+ - Best practice: Use for non-critical configurations that need easy updates
140
+
141
+ **HTTP Request** (n8n-nodes-base.httpRequest):
142
+ - Purpose: API data retrieval
143
+ - Use cases: Fetch metrics from monitoring APIs, get user preferences
144
+ - Best practice: Handle API errors gracefully
145
+
146
+ ### Utility Nodes
147
+
148
+ **Set** (n8n-nodes-base.set):
149
+ - Purpose: Prepare alert messages and structure data
150
+ - Use cases: Format notification content, add metadata
151
+ - Best practice: Use to centralize message construction logic
152
+
153
+ **Wait** (n8n-nodes-base.wait):
154
+ - Purpose: Delays between notifications
155
+ - Use cases: Rate limiting, cooldown periods, retry logic
156
+ - Best practice: Use for preventing notification floods
157
+
158
+ **Split In Batches** (n8n-nodes-base.splitInBatches):
159
+ - Purpose: Handle large datasets without overwhelming recipients
160
+ - Use cases: Bulk notifications with rate limiting
161
+ - Best practice: Combine with Wait node for controlled sending
162
+
163
+ ## Common Pitfalls to Avoid
164
+
165
+ ### Authentication Failures
166
+ **Problem**: Invalid or expired credentials are the most common cause of failed notifications.
167
+
168
+ **Solution**:
169
+ - Regularly verify API keys, OAuth tokens, and SMTP passwords
170
+ - Ensure bots have proper permissions (Slack bots need channel membership)
171
+ - Use n8n credentials system, never hardcode sensitive data
172
+ - Test authentication in isolation before deploying
173
+
174
+ ### Notification Floods
175
+ **Problem**: Without proper controls, a threshold breach can trigger hundreds of identical alerts.
176
+
177
+ **Solution**:
178
+ - Implement cooldown periods using Wait node or tracking last alert time
179
+ - Use alert aggregation - send one message listing multiple items
180
+ - Use deduplication logic to prevent identical alerts
181
+ - Consider exponential backoff for repeated alerts
182
+ - Store last notification timestamp in database/sheets
183
+
184
+ ### Incorrect Channel Configuration
185
+ **Problem**: Notifications fail due to misconfigured channels.
186
+
187
+ **Solution**:
188
+ - Slack requires channel IDs (starting with C) not names
189
+ - Email requires verified sender addresses
190
+ - SMS needs international format (+1234567890)
191
+ - Test each channel with sample data before production
192
+ - Validate configuration in node settings
193
+
194
+ ### Data Type Mismatches
195
+ **Problem**: String-to-number comparisons fail silently ("5" > "10" is lexicographically true).
196
+
197
+ **Solution**:
198
+ - Always convert data types before comparisons
199
+ - Use Number() or parseInt() for numeric comparisons
200
+ - Escape special characters in messages to prevent formatting breaks
201
+ - Validate data types early in the workflow
202
+
203
+ ### Missing Error Handling
204
+ **Problem**: A single failed notification can stop the entire workflow.
205
+
206
+ **Solution**:
207
+ - Configure error workflows using Error Trigger node
208
+ - Use "Continue on Fail" setting for redundancy
209
+ - Implement fallback channels (if Slack fails, send email)
210
+ - Log failed notification attempts for debugging
211
+ - Add retry logic with exponential backoff
212
+
213
+ ### Rate Limit Violations
214
+ **Problem**: External services have posting limits that can block notifications.
215
+
216
+ **Solution**:
217
+ - Add delays between bulk sends using Wait node
218
+ - Monitor API quotas and adjust trigger frequency
219
+ - Use BCC for bulk emails when appropriate
220
+ - Implement batch processing with Split In Batches
221
+ - Check service documentation for rate limits
222
+ - Use webhook aggregation where possible
223
+ `;
224
+ getDocumentation() {
225
+ return this.documentation;
226
+ }
227
+ }
228
+ exports.NotificationBestPractices = NotificationBestPractices;
229
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../../src/tools/best-practices/notification.ts"],"names":[],"mappings":";;;AACA,2DAA2D;AAE3D,MAAa,yBAAyB;IAC5B,SAAS,GAAG,kCAAiB,CAAC,YAAY,CAAC;IAC3C,OAAO,GAAG,OAAO,CAAC;IAEV,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuNjC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD;AAhOD,8DAgOC"}
@@ -0,0 +1,7 @@
1
+ import type { BestPracticesDocument } from '../../types/best-practices';
2
+ export declare class SchedulingBestPractices implements BestPracticesDocument {
3
+ readonly technique: "scheduling";
4
+ readonly version = "1.0.0";
5
+ private readonly documentation;
6
+ getDocumentation(): string;
7
+ }
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchedulingBestPractices = void 0;
4
+ const categorization_1 = require("../../types/categorization");
5
+ class SchedulingBestPractices {
6
+ technique = categorization_1.WorkflowTechnique.SCHEDULING;
7
+ version = '1.0.0';
8
+ documentation = `# Best Practices: Scheduling Workflows
9
+
10
+ ## Workflow Design
11
+
12
+ Structure scheduled workflows to perform focused, well-defined tasks. Use modular sub-workflows via Execute Workflow node for complex operations (database cleanup, report generation) to isolate failures and improve maintainability.
13
+
14
+ For recurring tasks, use Schedule Trigger node with clear naming (e.g., "Daily 08:00 Trigger", "Every 6h Cron"). Document schedule purpose in workflow description.
15
+
16
+ Prevent overlapping executions by ensuring worst-case execution time < schedule interval. For frequent schedules, implement mutex/lock mechanisms using external systems if needed.
17
+
18
+ CRITICAL: Always save and activate workflows with Schedule Trigger nodes - scheduled workflows only run in active mode. Manual execution works during development but activation is required for automatic runs.
19
+
20
+ ## Scheduling Patterns
21
+
22
+ ### Recurring Schedules
23
+
24
+ Use Schedule Trigger in two modes:
25
+ - **Interval Mode**: User-friendly dropdowns for common schedules (every X minutes, daily at 09:00, weekly on Mondays)
26
+ - **Cron Expression Mode**: Complex patterns using 5-field syntax (m h dom mon dow) with optional seconds field. Example: \`0 9 * * 1\` triggers every Monday at 09:00
27
+
28
+ Multiple schedules can be combined in single Schedule Trigger node using multiple Trigger Rules. Useful when same logic applies to different timings.
29
+
30
+ ### One-Time Events
31
+
32
+ For one-time future runs, use cron expression with exact date/time (e.g., \`0 12 22 10 *\` for Oct 22 at 12:00).
33
+ IMPORTANT: Deactivate workflow after execution to prevent yearly recurrence.
34
+
35
+ For event-relative scheduling, use Wait node to pause workflow until specified time/date. Workflow state persists across n8n restarts.
36
+
37
+ ### Conditional Scheduling
38
+
39
+ Use IF/Switch nodes after Schedule Trigger for runtime conditions:
40
+ - Check if today is last day of month before running monthly reports
41
+ - Skip execution on holidays or based on external data
42
+ - Route different tasks based on conditions
43
+
44
+ Better than complex cron expressions and provides flexibility for dynamic requirements.
45
+
46
+ ## Time Zone Configuration
47
+
48
+ CRITICAL: Explicitly set timezone to avoid scheduling confusion.
49
+
50
+ By default n8n will:
51
+ - Attempts to detect local timezone at signup, defaults to GMT if unsure
52
+ - Set instance timezone via Admin Panel
53
+ - Override per-workflow as needed
54
+
55
+ Schedule Trigger uses workflow timezone if set, otherwise instance timezone. Cron schedules automatically adjust for DST when using region timezones (Europe/London, America/New_York).
56
+
57
+ WARNING: Wait node uses server system time, ignoring workflow timezone settings. Account for this when using Wait with specific clock times.
58
+
59
+ ## Error Handling & Monitoring
60
+
61
+ Build robust error handling for unattended execution:
62
+ - Use Error Trigger for global error workflow
63
+ - Implement retry logic with Wait node for transient failures
64
+ - Add email/Slack notifications for failures
65
+ - Log timestamps with Console node to detect timing issues
66
+
67
+ Monitor Executions list regularly for:
68
+ - Expected trigger times
69
+ - Duplicates or gaps
70
+ - Failed executions
71
+ - Long-running workflows
72
+
73
+ ## Recommended Nodes
74
+
75
+ ### Schedule Trigger (n8n-nodes-base.scheduleTrigger)
76
+
77
+ Purpose: Primary node for running workflows on schedule
78
+
79
+ Modes:
80
+ - Interval: Simple recurring schedules via UI
81
+ - Cron: Complex patterns via expressions
82
+
83
+ Best Practices:
84
+ - Activate workflow for schedule to work
85
+ - Use descriptive names including schedule
86
+ - Test with manual execution during development
87
+ - Consider DST impacts for region timezones
88
+
89
+ ### Wait (n8n-nodes-base.wait)
90
+
91
+ Purpose: Pause workflow execution until specified time
92
+
93
+ Use Cases:
94
+ - Delay actions relative to events
95
+ - One-off timers per data item
96
+ - Follow-up actions after specific duration
97
+
98
+ Best Practices:
99
+ - Use external database (PostgreSQL) for long waits
100
+ - Avoid extremely long wait times
101
+ - Remember Wait uses server time, not workflow timezone
102
+ - State persists across n8n restarts
103
+
104
+ ### IF (n8n-nodes-base.if)
105
+
106
+ Purpose: Add conditional logic to scheduled workflows
107
+
108
+ Use Cases:
109
+ - Check date conditions (last day of month)
110
+ - Skip execution based on external data
111
+ - Route to different actions conditionally
112
+
113
+ Best Practices:
114
+ - Enable "Convert types where required" for comparisons
115
+ - Document condition logic clearly
116
+ - Prefer IF nodes over complex cron expressions
117
+
118
+ ### Switch (n8n-nodes-base.switch)
119
+
120
+ Purpose: Multiple conditional branches for complex routing
121
+
122
+ Use Cases:
123
+ - Different actions based on day of week
124
+ - Time-based routing within workflow
125
+ - Multi-path conditional execution
126
+
127
+ ### Error Trigger (n8n-nodes-base.errorTrigger)
128
+
129
+ Purpose: Global error handling for failed scheduled executions
130
+
131
+ Use Cases:
132
+ - Send notifications on workflow failure
133
+ - Log errors to external systems
134
+ - Implement global retry logic
135
+
136
+ Best Practices:
137
+ - Create dedicated error workflow
138
+ - Include workflow name and timestamp in notifications
139
+ - Consider severity levels for different failures
140
+
141
+ ### Execute Workflow (n8n-nodes-base.executeWorkflow)
142
+
143
+ Purpose: Call sub-workflows for modular scheduling
144
+
145
+ Use Cases:
146
+ - Break complex scheduled tasks into modules
147
+ - Reuse common scheduled operations
148
+ - Isolate failures to specific components
149
+
150
+ Best Practices:
151
+ - Pass parameters for configuration
152
+ - Handle sub-workflow errors appropriately
153
+ - Use for maintainable, focused workflows
154
+
155
+ ### Database Nodes
156
+
157
+ Purpose: Check pending tasks or store execution history
158
+
159
+ - MySQL (n8n-nodes-base.mySql)
160
+ - Postgres (n8n-nodes-base.postgres)
161
+ - MongoDB (n8n-nodes-base.mongoDb)
162
+
163
+ Use Cases:
164
+ - Store list of pending one-time tasks
165
+ - Log execution history
166
+ - Implement custom scheduling queue
167
+
168
+ Best Practices:
169
+ - Query efficiently with proper indexes
170
+ - Clean up old execution logs periodically
171
+ - Use for dynamic scheduling requirements
172
+
173
+ ### HTTP Request (n8n-nodes-base.httpRequest)
174
+
175
+ Purpose: Call external APIs or monitoring services
176
+
177
+ Use Cases:
178
+ - Send heartbeat to monitoring service
179
+ - Check external conditions before execution
180
+ - Trigger external scheduled jobs
181
+
182
+ ### Email/Slack
183
+
184
+ - Email (n8n-nodes-base.emailSend)
185
+ - Slack (n8n-nodes-base.slack)
186
+
187
+ Purpose: Send notifications for scheduled workflow events
188
+
189
+ Use Cases:
190
+ - Daily report delivery
191
+ - Failure notifications
192
+ - Completion confirmations
193
+
194
+ ## Common Pitfalls to Avoid
195
+
196
+ ### Time Zone Mismatch
197
+
198
+ **Problem**: Workflows run at wrong time due to incorrect timezone configuration. Schedule set for 08:00 runs at 07:00 or 09:00.
199
+
200
+ **Solution**:
201
+ - Explicitly set workflow or instance timezone
202
+ - Verify timezone after DST changes
203
+ - Use UTC for consistency if timezone complexity is problematic
204
+ - Remember self-hosted defaults to America/New_York
205
+
206
+ ### Daylight Saving Time Issues
207
+
208
+ **Problem**: Missed or duplicate executions during DST transitions. Jobs may not run or run twice when clocks change.
209
+
210
+ **Solution**:
211
+ - Use region timezones for automatic DST handling
212
+ - Test critical schedules around DST dates
213
+ - Consider fixed-offset timezone for year-round consistency
214
+ - Update n8n version for latest timezone database
215
+
216
+ ### Duplicate Trigger Executions
217
+
218
+ **Problem**: Workflows triggering multiple times at scheduled time, especially in multi-instance setups.
219
+
220
+ **Solution**:
221
+ - Upgrade to n8n ≥1.107.0 (fixes duplicate cron registrations)
222
+ - Configure N8N_MULTI_MAIN_PROCESS=true for multi-instance setups
223
+ - Disable and re-enable workflow if duplicates persist
224
+ - Restart n8n process if issues occur after editing
225
+
226
+ ### Missed Schedules During Downtime
227
+
228
+ **Problem**: Scheduled runs missed when n8n instance is down. No automatic catch-up for missed triggers.
229
+
230
+ **Solution**:
231
+ - Ensure high availability for critical schedules
232
+ - Design idempotent workflows that check for missed work
233
+ - Use daily check pattern instead of exact timing when possible
234
+ - Implement external monitoring for uptime
235
+
236
+ ### Overlapping Executions
237
+
238
+ **Problem**: Next scheduled run starts before previous completes, causing race conditions or resource conflicts.
239
+
240
+ **Solution**:
241
+ - Increase interval to exceed worst-case execution time
242
+ - Implement mutex/lock using database or external system
243
+ - Add execution check at workflow start
244
+ - Configure single worker for workflow in queue mode
245
+
246
+ ### Wait Node Timezone Confusion
247
+
248
+ **Problem**: Wait node uses server system time, ignoring workflow timezone setting. Wait until "10:00" may not match expected timezone.
249
+
250
+ **Solution**:
251
+ - Account for server timezone when setting Wait times
252
+ - Use UTC timestamps for clarity
253
+ - Run server in target timezone if possible
254
+ - Prefer Schedule Trigger for timezone-aware scheduling
255
+
256
+ ### First Execution Timing
257
+
258
+ **Problem**: First execution after activation doesn't match expected schedule. Activation time affects next run calculation.
259
+
260
+ **Solution**:
261
+ - Plan activation timing carefully
262
+ - Use manual execution for immediate first run
263
+ - Understand that schedule recalculates from activation moment
264
+ - Document expected first run time
265
+
266
+ ### Cron Syntax Errors
267
+
268
+ **Problem**: Invalid cron expression prevents trigger activation. Missing fields or incorrect format causes silent failures.
269
+
270
+ **Solution**:
271
+ - Use crontab.guru to validate expressions
272
+ - Remember n8n supports 5 or 6 field syntax
273
+ - n8n supports both 5-field and 6-field (with seconds) cron syntax; use 6 fields if you want to specify seconds (e.g., prefix with 0 for seconds: \`0 0 * * * *\`)
274
+ - Use interval mode for simple schedules
275
+ `;
276
+ getDocumentation() {
277
+ return this.documentation;
278
+ }
279
+ }
280
+ exports.SchedulingBestPractices = SchedulingBestPractices;
281
+ //# sourceMappingURL=scheduling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduling.js","sourceRoot":"","sources":["../../../src/tools/best-practices/scheduling.ts"],"names":[],"mappings":";;;AACA,2DAA2D;AAE3D,MAAa,uBAAuB;IAC1B,SAAS,GAAG,kCAAiB,CAAC,UAAU,CAAC;IACzC,OAAO,GAAG,OAAO,CAAC;IAEV,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2QjC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD;AApRD,0DAoRC"}
@@ -0,0 +1,7 @@
1
+ import type { BestPracticesDocument } from '../../types/best-practices';
2
+ export declare class ScrapingAndResearchBestPractices implements BestPracticesDocument {
3
+ readonly technique: "scraping_and_research";
4
+ readonly version = "1.0.0";
5
+ private readonly documentation;
6
+ getDocumentation(): string;
7
+ }