@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,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScrapingAndResearchBestPractices = void 0;
4
+ const categorization_1 = require("../../types/categorization");
5
+ class ScrapingAndResearchBestPractices {
6
+ technique = categorization_1.WorkflowTechnique.SCRAPING_AND_RESEARCH;
7
+ version = '1.0.0';
8
+ documentation = `# Best Practices: Scraping & Research Workflows
9
+
10
+ ## Performance & Resource Management
11
+
12
+ Batch requests and introduce delays to avoid hitting API rate limits or overloading target servers. Use Wait nodes and
13
+ batching options in HTTP Request nodes. When 429 rate limiting errors occur due to receiving too many requests,
14
+ implement batching to reduce request frequency or use the "Retry on Fail" feature to automatically handle throttled
15
+ responses.
16
+
17
+ Workflows processing large datasets can crash due to memory constraints. Use the Split In Batches node to process 200
18
+ rows at a time to reduce memory usage, leverage built-in nodes instead of custom code, and increase execution timeouts
19
+ via environment variables for better resource management.
20
+
21
+ ## Looping & Pagination
22
+
23
+ Implement robust looping for paginated data. Use Set, IF, and Code nodes to manage page numbers and loop conditions,
24
+ ensuring you don't miss data or create infinite loops. Leverage n8n's built-in mechanisms rather than manual approaches:
25
+ use the $runIndex variable to track iterations without additional code nodes, and employ workflow static data or node
26
+ run indexes to maintain state across loop cycles.
27
+
28
+ ## Recommended Nodes
29
+
30
+ ### HTTP Request (n8n-nodes-base.httpRequest)
31
+
32
+ Purpose: Fetches web pages or API data for scraping and research workflows
33
+
34
+ Pitfalls:
35
+
36
+ - Depending on the data which the user wishes to scrape/research, it maybe against the terms of service to attempt to
37
+ fetch it from the site directly. Using scraping nodes is the best way to get around this.
38
+
39
+ Pitfalls:
40
+
41
+ - Double-check URL formatting, query parameters, and ensure all required fields are present to avoid bad request errors
42
+ - Be aware of 429 rate limiting errors when the service receives too many requests - implement batching or use "Retry on
43
+ Fail" feature
44
+ - Refresh expired tokens, verify API keys, and ensure correct permissions to avoid authentication failures
45
+
46
+ ### SerpAPI (@n8n/n8n-nodes-langchain.toolSerpApi)
47
+
48
+ Purpose: Give an agent the ability to search for research materials and fact-checking results that have been retrieved
49
+ from other sources.
50
+
51
+ ### Perplexity (n8n-nodes-base.perplexityTool)
52
+
53
+ Purpose: Give an agent the ability to search utilising Perplexity, a powerful tool for finding sources/material for
54
+ generating reports and information.
55
+
56
+ ### HTML Extract (n8n-nodes-base.htmlExtract)
57
+
58
+ Purpose: Parses HTML and extracts data using CSS selectors for web scraping
59
+
60
+ Pitfalls:
61
+
62
+ - Some sites use JavaScript to render content, which may not be accessible via simple HTTP requests. Consider using
63
+ browser automation tools or APIs if the HTML appears empty
64
+ - Validate that the CSS selectors match the actual page structure to avoid extraction failures
65
+
66
+ ### Split Out (n8n-nodes-base.splitOut)
67
+
68
+ Purpose: Processes lists of items one by one for sequential operations
69
+
70
+ Pitfalls:
71
+ - Can cause performance issues with very large datasets - consider using Split In Batches instead
72
+
73
+ ### Loop Over Items (Split in Batches) (n8n-nodes-base.splitInBatches)
74
+
75
+ Purpose: Processes lists of items in batches to manage memory and performance
76
+
77
+ Pitfalls:
78
+ - Ensure proper loop configuration to avoid infinite loops or skipped data. The index 0
79
+ (first connection) of the loop is treated as the done state, while the index 1 (second connection)
80
+ is the connection that loops.
81
+ - Use appropriate batch sizes (e.g., 200 rows) to balance memory usage and performance
82
+
83
+ ### Edit Fields (Set) (n8n-nodes-base.set)
84
+
85
+ Purpose: Manipulates data, sets variables for loop control and state management
86
+
87
+ ### Code (n8n-nodes-base.code)
88
+
89
+ Purpose: Implements custom logic for complex data transformations or pagination
90
+
91
+ Pitfalls:
92
+
93
+ - Prefer built-in nodes over custom code to reduce memory usage and improve maintainability
94
+ - Avoid processing very large datasets in a single code execution - use batching
95
+
96
+ ### If (n8n-nodes-base.if)
97
+
98
+ Purpose: Adds conditional logic for error handling, loop control, or data filtering
99
+
100
+ Pitfalls:
101
+ - Validate expressions carefully to avoid unexpected branching behavior
102
+
103
+ ### Wait (n8n-nodes-base.wait)
104
+
105
+ Purpose: Introduces delays to respect rate limits and avoid overloading servers
106
+
107
+ ### Data Tables (n8n-nodes-base.dataTable)
108
+
109
+ Purpose: Stores scraped data in n8n's built-in persistent data storage
110
+
111
+ ### Google Sheets (n8n-nodes-base.googleSheets)
112
+
113
+ Purpose: Stores scraped data in spreadsheets for easy access and sharing
114
+
115
+ ### Microsoft Excel 365 (n8n-nodes-base.microsoftExcel)
116
+
117
+ Purpose: Stores scraped data in Excel files for offline analysis
118
+
119
+ ### Airtable (n8n-nodes-base.airtable)
120
+
121
+ Purpose: Saves structured data to a database with rich data types and relationships
122
+
123
+ ### AI Agent (@n8n/n8n-nodes-langchain.agent)
124
+
125
+ Purpose: For research, summarization, and advanced data extraction. AI agents can autonomously gather information
126
+ from websites, analyze content, and organize findings into structured formats, integrating tools for web scraping,
127
+ content analysis, and database storage
128
+
129
+ ### Scraping Nodes
130
+
131
+ - Phantombuster (n8n-nodes-base.phantombuster)
132
+ - Apify (use HTTP Request or community node)
133
+ - BrightData (use HTTP Request or community node)
134
+
135
+ Purpose: If the user wishes to scrap data from sites like LinkedIn, Facebook, Instagram, Twitter/X, Indeed, Glassdoor
136
+ or any other service similar to these large providers it is better to use a node designed for this. The scraping
137
+ nodes provide access to these datasets while avoiding issues like rate limiting or breaking terms of service for
138
+ sites like these.
139
+
140
+ ## Common Pitfalls to Avoid
141
+
142
+ Bad Request Errors: Double-check URL formatting, query parameters, and ensure all required fields are present to
143
+ avoid 400 errors when making HTTP requests.
144
+
145
+ Rate Limits: Use batching and Wait nodes to avoid 429 errors. When the service receives too many requests, implement
146
+ batching to reduce request frequency or use the "Retry on Fail" feature.
147
+
148
+ Memory Issues: Avoid processing very large datasets in a single run; use batching and increase server resources if
149
+ needed. Use Split In Batches node to process 200 rows at a time, leverage built-in nodes instead of custom code, and
150
+ increase execution timeouts via environment variables.
151
+
152
+ Empty or Unexpected Data: Some sites use JavaScript to render content, which may not be accessible via simple HTTP
153
+ requests. Standard HTTP and HTML parsing nodes fail because sites load data asynchronously via JavaScript, leaving the
154
+ initial HTML empty of actual content. Web scraping nodes can be used to avoid this.
155
+ `;
156
+ getDocumentation() {
157
+ return this.documentation;
158
+ }
159
+ }
160
+ exports.ScrapingAndResearchBestPractices = ScrapingAndResearchBestPractices;
161
+ //# sourceMappingURL=scraping-and-research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scraping-and-research.js","sourceRoot":"","sources":["../../../src/tools/best-practices/scraping-and-research.ts"],"names":[],"mappings":";;;AACA,2DAA2D;AAE3D,MAAa,gCAAgC;IACnC,SAAS,GAAG,kCAAiB,CAAC,qBAAqB,CAAC;IACpD,OAAO,GAAG,OAAO,CAAC;IAEV,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmJjC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD;AA5JD,4EA4JC"}
@@ -0,0 +1,7 @@
1
+ import type { BestPracticesDocument } from '../../types/best-practices';
2
+ export declare class TriageBestPractices implements BestPracticesDocument {
3
+ readonly technique: "triage";
4
+ readonly version = "1.0.0";
5
+ private readonly documentation;
6
+ getDocumentation(): string;
7
+ }
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TriageBestPractices = void 0;
4
+ const categorization_1 = require("../../types/categorization");
5
+ class TriageBestPractices {
6
+ technique = categorization_1.WorkflowTechnique.TRIAGE;
7
+ version = '1.0.0';
8
+ documentation = `# Best Practices: Triage Workflows
9
+
10
+ ## Workflow Design
11
+
12
+ Triage workflows automatically classify incoming data and route it based on priority or category. Common use cases include sorting support tickets by urgency, categorizing emails for follow-up, or scoring leads for sales routing.
13
+
14
+ Define clear categories and outcomes before building. Design in logical stages:
15
+
16
+ 1. **Trigger & Input**: Capture incoming items (webhook, email trigger, form submission, schedule)
17
+ 2. **Preprocessing**: Fetch additional data if needed (CRM lookup, field normalization)
18
+ 3. **Classification**: Assign categories via rules or AI
19
+ 4. **Routing**: Direct items to appropriate branches using Switch node
20
+ 5. **Actions**: Execute category-specific tasks (create tasks, send alerts, update records)
21
+ 6. **Logging**: Track outcomes for monitoring and analysis
22
+
23
+ CRITICAL: Always include a default/fallback path to catch unclassified items. Never allow data to drop silently.
24
+
25
+ ## Classification Strategies
26
+
27
+ ### Rule-Based Classification
28
+ Use IF/Switch nodes for keyword detection, sender addresses, or numeric thresholds. Chain multiple conditions or use Switch for multi-way branching.
29
+
30
+ Example: IF email contains "urgent" → High Priority branch
31
+
32
+ ### AI-Powered Classification
33
+ For unstructured text or nuanced decisions, use AI nodes with clear prompts and defined output labels.
34
+
35
+ Example prompt: "Classify this email as INTERESTED, NOT_INTERESTED, or QUESTION"
36
+
37
+ Best practices:
38
+ - Use structured output format (JSON with specific fields)
39
+ - Set low temperature (0-0.2) for consistency
40
+ - Include few-shot examples for accuracy
41
+ - Implement error handling for unexpected outputs
42
+
43
+ ## Routing & Branching
44
+
45
+ Use Switch node as primary traffic controller:
46
+ - Configure cases for each classification value
47
+ - Always define Default case for unexpected values
48
+ - Each item follows exactly one branch
49
+ - Keep branches modular using Execute Workflow node for complex logic
50
+
51
+ Avoid parallel IF nodes that could match multiple conditions - use Switch or chain IF nodes with Execute Once setting.
52
+
53
+ ## Recommended Nodes
54
+
55
+ ### Trigger Nodes
56
+
57
+ **Webhook** (n8n-nodes-base.webhook):
58
+ - Purpose: Capture incoming items for triage via HTTP requests
59
+ - Best for: Form submissions, webhook integrations
60
+
61
+ **Gmail Trigger** (n8n-nodes-base.gmailTrigger):
62
+ - Purpose: Automatically process new emails
63
+ - Best for: Email-based triage workflows
64
+
65
+ **Schedule Trigger** (n8n-nodes-base.scheduleTrigger):
66
+ - Purpose: Periodic batch processing of items
67
+ - Best for: Regular review of database records or API data
68
+
69
+ ### Classification Nodes
70
+
71
+ **IF** (n8n-nodes-base.if):
72
+ - Purpose: Simple binary decisions
73
+ - Use when: Two-way branching based on conditions
74
+ - Example: Check if priority field equals "high"
75
+
76
+ **Switch** (n8n-nodes-base.switch):
77
+ - Purpose: Multi-way branching based on field values
78
+ - Use when: Multiple categories (3+ outcomes)
79
+ - CRITICAL: Always configure Default output for unmatched items
80
+
81
+ **OpenAI** (@n8n/n8n-nodes-langchain.openAi):
82
+ - Purpose: AI-powered text classification
83
+ - Best practices:
84
+ - Use structured output format
85
+ - Set low temperature (0-0.2) for consistency
86
+ - Include few-shot examples
87
+
88
+ **AI Agent** (@n8n/n8n-nodes-langchain.agent):
89
+ - Purpose: Complex classification requiring multiple steps or tool use
90
+ - Use when: Classification needs context lookup or multi-step reasoning
91
+
92
+ ### Data Processing
93
+
94
+ **Set** (n8n-nodes-base.set):
95
+ - Purpose: Normalize fields, add metadata, store classification results
96
+ - Use early: Standardize incoming data structure
97
+
98
+ **Function** (n8n-nodes-base.function):
99
+ - Purpose: Custom classification logic using JavaScript
100
+ - Use when: Complex rules that can't be expressed in IF/Switch
101
+
102
+ **HTTP Request** (n8n-nodes-base.httpRequest):
103
+ - Purpose: Fetch additional context (CRM data, user history)
104
+ - Use before: Classification to enrich decision context
105
+
106
+ ### Integration & Action Nodes
107
+
108
+ **Slack** (n8n-nodes-base.slack):
109
+ - Purpose: Send notifications, create channels by category
110
+ - Example: Alert #urgent-tickets channel for high-priority items
111
+
112
+ **HubSpot** (n8n-nodes-base.hubspot):
113
+ - Purpose: Update contact records, create tasks, set lead scores
114
+ - Example: Tag contacts based on classification
115
+
116
+ **JIRA** (n8n-nodes-base.jira):
117
+ - Purpose: Create issues with appropriate priority/assignee
118
+ - Example: Auto-assign bugs to engineering team
119
+
120
+ **Database Nodes**:
121
+ - Postgres (n8n-nodes-base.postgres)
122
+ - MySQL (n8n-nodes-base.mySql)
123
+ - MongoDB (n8n-nodes-base.mongoDb)
124
+
125
+ Purpose: Log triage outcomes, track metrics, store classification history
126
+
127
+ **Google Sheets** (n8n-nodes-base.googleSheets):
128
+ - Purpose: Simple logging and reporting
129
+ - Example: Track daily triage volumes by category
130
+
131
+ ### Workflow Control
132
+
133
+ **Execute Workflow** (n8n-nodes-base.executeWorkflow):
134
+ - Purpose: Modular branch logic
135
+ - Use when: Category-specific actions are complex
136
+ - Pattern: Switch → Execute Workflow (per category)
137
+
138
+ **Error Trigger** (n8n-nodes-base.errorTrigger):
139
+ - Purpose: Catch and handle classification failures
140
+ - CRITICAL: Always implement for production triage workflows
141
+
142
+ **Merge** (n8n-nodes-base.merge):
143
+ - Purpose: Consolidate branches for unified logging
144
+ - Use after: Category-specific actions before final logging step
145
+
146
+ ## Common Pitfalls to Avoid
147
+
148
+ ### No Default Path
149
+ **Problem**: Every Switch must have a Default output. Unmatched items should go to manual review or logging, never drop silently.
150
+
151
+ **Solution**: Always configure Default case to route unclassified items to a fallback action (e.g., manual review queue, admin notification)
152
+
153
+ ### Overlapping Conditions
154
+ **Problem**: Categories must be mutually exclusive. Items matching multiple conditions cause unpredictable routing.
155
+
156
+ **Solution**:
157
+ - Order checks from most specific to general
158
+ - Use Switch with distinct values instead of multiple IF nodes
159
+ - Test edge cases thoroughly
160
+
161
+ ### Costly API Overuse
162
+ **Problem**: Calling AI APIs multiple times for same item wastes resources.
163
+
164
+ **Solution**:
165
+ - Use pin data feature during development
166
+ - Classify each item only once, store result in variable for reuse
167
+ - Enable caching where available
168
+ - Batch similar items when possible
169
+
170
+ ### Missing Error Handling
171
+ **Problem**: AI calls can fail or return unexpected formats, breaking the workflow.
172
+
173
+ **Solution**:
174
+ - Implement Error Trigger workflow to catch failures
175
+ - Add validation after AI classification
176
+ - Handle unexpected outputs gracefully with default categorization
177
+ - Log all errors for review
178
+
179
+ ### Poor Documentation
180
+ **Problem**: Generic node names make workflows hard to maintain.
181
+
182
+ **Solution**:
183
+ - Name nodes clearly (e.g., "Classify with OpenAI", "Route by Priority")
184
+ - Use Sticky Notes for complex sections
185
+ - Store constants in Set nodes or environment variables
186
+ - Document classification criteria
187
+
188
+ ### Relying 100% on AI
189
+ **Problem**: AI can misclassify critical items, leading to wrong actions.
190
+
191
+ **Solution**:
192
+ - For critical decisions, combine AI with rule validation
193
+ - Monitor accuracy metrics
194
+ - Implement human verification for high-risk categories
195
+ - Use confidence thresholds to route uncertain items to manual review
196
+
197
+ ### No Monitoring
198
+ **Problem**: Can't track accuracy, volume trends, or system health.
199
+
200
+ **Solution**:
201
+ - Log all triage outcomes to database/sheets
202
+ - Track metrics: category volumes, error rates, processing times
203
+ - Set up alerts for anomalies (e.g., sudden spike in unclassified items)
204
+ - Review misclassifications regularly to improve rules/prompts
205
+ `;
206
+ getDocumentation() {
207
+ return this.documentation;
208
+ }
209
+ }
210
+ exports.TriageBestPractices = TriageBestPractices;
211
+ //# sourceMappingURL=triage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../src/tools/best-practices/triage.ts"],"names":[],"mappings":";;;AACA,2DAA2D;AAE3D,MAAa,mBAAmB;IACtB,SAAS,GAAG,kCAAiB,CAAC,MAAM,CAAC;IACrC,OAAO,GAAG,OAAO,CAAC;IAEV,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqMjC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD;AA9MD,kDA8MC"}
@@ -0,0 +1,16 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { Logger } from '@n8n/backend-common';
3
+ import type { INodeTypeDescription } from 'n8n-workflow';
4
+ import type { BuilderTool, BuilderToolBase } from '../utils/stream-processor';
5
+ import type { BuilderFeatureFlags } from '../workflow-builder-agent';
6
+ export declare function getBuilderTools({ parsedNodeTypes, logger, llmComplexTask, instanceUrl, featureFlags, }: {
7
+ parsedNodeTypes: INodeTypeDescription[];
8
+ llmComplexTask: BaseChatModel;
9
+ logger?: Logger;
10
+ instanceUrl?: string;
11
+ featureFlags?: BuilderFeatureFlags;
12
+ }): BuilderTool[];
13
+ export declare function getBuilderToolsForDisplay({ nodeTypes, featureFlags, }: {
14
+ nodeTypes: INodeTypeDescription[];
15
+ featureFlags?: BuilderFeatureFlags;
16
+ }): BuilderToolBase[];
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBuilderTools = getBuilderTools;
4
+ exports.getBuilderToolsForDisplay = getBuilderToolsForDisplay;
5
+ const add_node_tool_1 = require("./add-node.tool");
6
+ const categorize_prompt_tool_1 = require("./categorize-prompt.tool");
7
+ const connect_nodes_tool_1 = require("./connect-nodes.tool");
8
+ const get_best_practices_tool_1 = require("./get-best-practices.tool");
9
+ const get_node_parameter_tool_1 = require("./get-node-parameter.tool");
10
+ const get_workflow_examples_tool_1 = require("./get-workflow-examples.tool");
11
+ const node_details_tool_1 = require("./node-details.tool");
12
+ const node_search_tool_1 = require("./node-search.tool");
13
+ const remove_connection_tool_1 = require("./remove-connection.tool");
14
+ const remove_node_tool_1 = require("./remove-node.tool");
15
+ const update_node_parameters_tool_1 = require("./update-node-parameters.tool");
16
+ const validate_workflow_tool_1 = require("./validate-workflow.tool");
17
+ function getBuilderTools({ parsedNodeTypes, logger, llmComplexTask, instanceUrl, featureFlags, }) {
18
+ const tools = [
19
+ (0, categorize_prompt_tool_1.createCategorizePromptTool)(llmComplexTask, logger),
20
+ (0, get_best_practices_tool_1.createGetBestPracticesTool)(),
21
+ ];
22
+ if (featureFlags?.templateExamples === true) {
23
+ tools.push((0, get_workflow_examples_tool_1.createGetWorkflowExamplesTool)(logger));
24
+ }
25
+ tools.push((0, node_search_tool_1.createNodeSearchTool)(parsedNodeTypes), (0, node_details_tool_1.createNodeDetailsTool)(parsedNodeTypes, logger), (0, add_node_tool_1.createAddNodeTool)(parsedNodeTypes), (0, connect_nodes_tool_1.createConnectNodesTool)(parsedNodeTypes, logger), (0, remove_connection_tool_1.createRemoveConnectionTool)(logger), (0, remove_node_tool_1.createRemoveNodeTool)(logger), (0, update_node_parameters_tool_1.createUpdateNodeParametersTool)(parsedNodeTypes, llmComplexTask, logger, instanceUrl), (0, get_node_parameter_tool_1.createGetNodeParameterTool)(), (0, validate_workflow_tool_1.createValidateWorkflowTool)(parsedNodeTypes, logger));
26
+ return tools;
27
+ }
28
+ function getBuilderToolsForDisplay({ nodeTypes, featureFlags, }) {
29
+ const tools = [categorize_prompt_tool_1.CATEGORIZE_PROMPT_TOOL, get_best_practices_tool_1.GET_BEST_PRACTICES_TOOL];
30
+ if (featureFlags?.templateExamples === true) {
31
+ tools.push(get_workflow_examples_tool_1.GET_WORKFLOW_EXAMPLES_TOOL);
32
+ }
33
+ tools.push(node_search_tool_1.NODE_SEARCH_TOOL, node_details_tool_1.NODE_DETAILS_TOOL, (0, add_node_tool_1.getAddNodeToolBase)(nodeTypes), connect_nodes_tool_1.CONNECT_NODES_TOOL, remove_connection_tool_1.REMOVE_CONNECTION_TOOL, remove_node_tool_1.REMOVE_NODE_TOOL, update_node_parameters_tool_1.UPDATING_NODE_PARAMETER_TOOL, get_node_parameter_tool_1.GET_NODE_PARAMETER_TOOL, validate_workflow_tool_1.VALIDATE_WORKFLOW_TOOL);
34
+ return tools;
35
+ }
36
+ //# sourceMappingURL=builder-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-tools.js","sourceRoot":"","sources":["../../src/tools/builder-tools.ts"],"names":[],"mappings":";;AA0BA,0CAsCC;AAOD,8DA6BC;AA7FD,mDAAwE;AACxE,qEAA8F;AAC9F,6DAAkF;AAClF,uEAAgG;AAChG,uEAAgG;AAChG,6EAGsC;AACtC,2DAA+E;AAC/E,yDAA4E;AAC5E,qEAA8F;AAC9F,yDAA4E;AAC5E,+EAGuC;AACvC,qEAA8F;AAE9F,SAAgB,eAAe,CAAC,EAC/B,eAAe,EACf,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,GAOZ;IACA,MAAM,KAAK,GAAkB;QAC5B,IAAA,mDAA0B,EAAC,cAAc,EAAE,MAAM,CAAC;QAClD,IAAA,oDAA0B,GAAE;KAC5B,CAAC;IAIF,IAAI,YAAY,EAAE,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,IAAA,0DAA6B,EAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAGD,KAAK,CAAC,IAAI,CACT,IAAA,uCAAoB,EAAC,eAAe,CAAC,EACrC,IAAA,yCAAqB,EAAC,eAAe,EAAE,MAAM,CAAC,EAC9C,IAAA,iCAAiB,EAAC,eAAe,CAAC,EAClC,IAAA,2CAAsB,EAAC,eAAe,EAAE,MAAM,CAAC,EAC/C,IAAA,mDAA0B,EAAC,MAAM,CAAC,EAClC,IAAA,uCAAoB,EAAC,MAAM,CAAC,EAC5B,IAAA,4DAA8B,EAAC,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,EACpF,IAAA,oDAA0B,GAAE,EAC5B,IAAA,mDAA0B,EAAC,eAAe,EAAE,MAAM,CAAC,CACnD,CAAC;IAEF,OAAO,KAAK,CAAC;AACd,CAAC;AAOD,SAAgB,yBAAyB,CAAC,EACzC,SAAS,EACT,YAAY,GAIZ;IACA,MAAM,KAAK,GAAsB,CAAC,+CAAsB,EAAE,iDAAuB,CAAC,CAAC;IAInF,IAAI,YAAY,EAAE,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,uDAA0B,CAAC,CAAC;IACxC,CAAC;IAGD,KAAK,CAAC,IAAI,CACT,mCAAgB,EAChB,qCAAiB,EACjB,IAAA,kCAAkB,EAAC,SAAS,CAAC,EAC7B,uCAAkB,EAClB,+CAAsB,EACtB,mCAAgB,EAChB,0DAA4B,EAC5B,iDAAuB,EACvB,+CAAsB,CACtB,CAAC;IAEF,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { Logger } from '@n8n/backend-common';
3
+ import type { BuilderTool, BuilderToolBase } from '../utils/stream-processor';
4
+ export declare const CATEGORIZE_PROMPT_TOOL: BuilderToolBase;
5
+ export declare function createCategorizePromptTool(llm: BaseChatModel, logger?: Logger): BuilderTool;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CATEGORIZE_PROMPT_TOOL = void 0;
4
+ exports.createCategorizePromptTool = createCategorizePromptTool;
5
+ const tools_1 = require("@langchain/core/tools");
6
+ const zod_1 = require("zod");
7
+ const prompt_categorization_1 = require("../chains/prompt-categorization");
8
+ const errors_1 = require("../errors");
9
+ const progress_1 = require("../tools/helpers/progress");
10
+ const response_1 = require("../tools/helpers/response");
11
+ const categorizePromptSchema = zod_1.z.object({
12
+ prompt: zod_1.z.string().min(1).describe('The user prompt to categorize'),
13
+ });
14
+ function buildCategorizationMessage(categorization) {
15
+ const parts = [];
16
+ parts.push('Prompt categorized');
17
+ if (categorization.techniques.length > 0) {
18
+ parts.push(`- Techniques: ${categorization.techniques.join(', ')}`);
19
+ }
20
+ if (categorization.confidence !== undefined) {
21
+ parts.push(`- Confidence: ${(categorization.confidence * 100).toFixed(0)}%`);
22
+ }
23
+ return parts.join('\n');
24
+ }
25
+ exports.CATEGORIZE_PROMPT_TOOL = {
26
+ toolName: 'categorize_prompt',
27
+ displayTitle: 'Categorizing prompt',
28
+ };
29
+ function createCategorizePromptTool(llm, logger) {
30
+ const dynamicTool = (0, tools_1.tool)(async (input, config) => {
31
+ const reporter = (0, progress_1.createProgressReporter)(config, exports.CATEGORIZE_PROMPT_TOOL.toolName, exports.CATEGORIZE_PROMPT_TOOL.displayTitle);
32
+ try {
33
+ const validatedInput = categorizePromptSchema.parse(input);
34
+ const { prompt } = validatedInput;
35
+ reporter.start(validatedInput);
36
+ logger?.debug('Categorizing user prompt using LLM...');
37
+ reporter.progress('Analyzing prompt to identify use case and techniques...');
38
+ const categorization = await (0, prompt_categorization_1.promptCategorizationChain)(llm, prompt);
39
+ logger?.debug('Prompt categorized', {
40
+ techniques: categorization.techniques,
41
+ confidence: categorization.confidence,
42
+ });
43
+ const output = {
44
+ categorization,
45
+ };
46
+ reporter.complete(output);
47
+ return (0, response_1.createSuccessResponse)(config, buildCategorizationMessage(categorization), {
48
+ categorization,
49
+ techniqueCategories: categorization.techniques,
50
+ });
51
+ }
52
+ catch (error) {
53
+ if (error instanceof zod_1.z.ZodError) {
54
+ const validationError = new errors_1.ValidationError('Invalid input parameters', {
55
+ extra: { errors: error.errors },
56
+ });
57
+ reporter.error(validationError);
58
+ return (0, response_1.createErrorResponse)(config, validationError);
59
+ }
60
+ const toolError = new errors_1.ToolExecutionError(error instanceof Error ? error.message : 'Unknown error occurred', {
61
+ toolName: exports.CATEGORIZE_PROMPT_TOOL.toolName,
62
+ cause: error instanceof Error ? error : undefined,
63
+ });
64
+ reporter.error(toolError);
65
+ return (0, response_1.createErrorResponse)(config, toolError);
66
+ }
67
+ }, {
68
+ name: exports.CATEGORIZE_PROMPT_TOOL.toolName,
69
+ description: `Categorize a user's workflow request to identify the use case and required techniques.
70
+
71
+ This helps understand what type of workflow the user wants to build and which automation patterns will be needed.
72
+
73
+ Use this tool when you receive an initial workflow request to:
74
+ - Detect required techniques (e.g., scraping, data transformation, notifications)
75
+ - Better understand the user's needs and context
76
+
77
+ The categorization allows retrieving relevant best practice documentation to improve workflow structure and node selection.`,
78
+ schema: categorizePromptSchema,
79
+ });
80
+ return {
81
+ tool: dynamicTool,
82
+ ...exports.CATEGORIZE_PROMPT_TOOL,
83
+ };
84
+ }
85
+ //# sourceMappingURL=categorize-prompt.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categorize-prompt.tool.js","sourceRoot":"","sources":["../../src/tools/categorize-prompt.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Logger } from '@n8n/backend-common';
2
+ import { type INodeTypeDescription } from 'n8n-workflow';
3
+ import { z } from 'zod';
4
+ import type { BuilderTool, BuilderToolBase } from '../utils/stream-processor';
5
+ export declare const nodeConnectionSchema: z.ZodObject<{
6
+ sourceNodeId: z.ZodString;
7
+ targetNodeId: z.ZodString;
8
+ sourceOutputIndex: z.ZodOptional<z.ZodNumber>;
9
+ targetInputIndex: z.ZodOptional<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ sourceNodeId: string;
12
+ targetNodeId: string;
13
+ sourceOutputIndex?: number | undefined;
14
+ targetInputIndex?: number | undefined;
15
+ }, {
16
+ sourceNodeId: string;
17
+ targetNodeId: string;
18
+ sourceOutputIndex?: number | undefined;
19
+ targetInputIndex?: number | undefined;
20
+ }>;
21
+ export declare const CONNECT_NODES_TOOL: BuilderToolBase;
22
+ export declare function createConnectNodesTool(nodeTypes: INodeTypeDescription[], logger?: Logger): BuilderTool;