n8n-atom-mcp 0.0.1

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 (794) hide show
  1. package/.env.example +220 -0
  2. package/LICENSE +21 -0
  3. package/README.md +78 -0
  4. package/data/nodes.db +0 -0
  5. package/dist/community/community-node-fetcher.d.ts +118 -0
  6. package/dist/community/community-node-fetcher.d.ts.map +1 -0
  7. package/dist/community/community-node-fetcher.js +239 -0
  8. package/dist/community/community-node-fetcher.js.map +1 -0
  9. package/dist/community/community-node-service.d.ts +42 -0
  10. package/dist/community/community-node-service.d.ts.map +1 -0
  11. package/dist/community/community-node-service.js +210 -0
  12. package/dist/community/community-node-service.js.map +1 -0
  13. package/dist/community/documentation-batch-processor.d.ts +33 -0
  14. package/dist/community/documentation-batch-processor.d.ts.map +1 -0
  15. package/dist/community/documentation-batch-processor.js +156 -0
  16. package/dist/community/documentation-batch-processor.js.map +1 -0
  17. package/dist/community/documentation-generator.d.ts +65 -0
  18. package/dist/community/documentation-generator.d.ts.map +1 -0
  19. package/dist/community/documentation-generator.js +220 -0
  20. package/dist/community/documentation-generator.js.map +1 -0
  21. package/dist/community/index.d.ts +5 -0
  22. package/dist/community/index.d.ts.map +1 -0
  23. package/dist/community/index.js +14 -0
  24. package/dist/community/index.js.map +1 -0
  25. package/dist/config/n8n-api.d.ts +15 -0
  26. package/dist/config/n8n-api.d.ts.map +1 -0
  27. package/dist/config/n8n-api.js +53 -0
  28. package/dist/config/n8n-api.js.map +1 -0
  29. package/dist/constants/type-structures.d.ts +123 -0
  30. package/dist/constants/type-structures.d.ts.map +1 -0
  31. package/dist/constants/type-structures.js +654 -0
  32. package/dist/constants/type-structures.js.map +1 -0
  33. package/dist/database/database-adapter.d.ts +33 -0
  34. package/dist/database/database-adapter.d.ts.map +1 -0
  35. package/dist/database/database-adapter.js +420 -0
  36. package/dist/database/database-adapter.js.map +1 -0
  37. package/dist/database/node-repository.d.ts +152 -0
  38. package/dist/database/node-repository.d.ts.map +1 -0
  39. package/dist/database/node-repository.js +791 -0
  40. package/dist/database/node-repository.js.map +1 -0
  41. package/dist/errors/validation-service-error.d.ts +10 -0
  42. package/dist/errors/validation-service-error.d.ts.map +1 -0
  43. package/dist/errors/validation-service-error.js +26 -0
  44. package/dist/errors/validation-service-error.js.map +1 -0
  45. package/dist/http-server-single-session.d.ts +52 -0
  46. package/dist/http-server-single-session.d.ts.map +1 -0
  47. package/dist/http-server-single-session.js +1180 -0
  48. package/dist/http-server-single-session.js.map +1 -0
  49. package/dist/http-server.d.ts +9 -0
  50. package/dist/http-server.d.ts.map +1 -0
  51. package/dist/http-server.js +481 -0
  52. package/dist/http-server.js.map +1 -0
  53. package/dist/index.d.ts +11 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +20 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/loaders/node-loader.d.ts +11 -0
  58. package/dist/loaders/node-loader.d.ts.map +1 -0
  59. package/dist/loaders/node-loader.js +79 -0
  60. package/dist/loaders/node-loader.js.map +1 -0
  61. package/dist/mappers/docs-mapper.d.ts +7 -0
  62. package/dist/mappers/docs-mapper.d.ts.map +1 -0
  63. package/dist/mappers/docs-mapper.js +106 -0
  64. package/dist/mappers/docs-mapper.js.map +1 -0
  65. package/dist/mcp/handlers-n8n-manager.d.ts +58 -0
  66. package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -0
  67. package/dist/mcp/handlers-n8n-manager.js +3299 -0
  68. package/dist/mcp/handlers-n8n-manager.js.map +1 -0
  69. package/dist/mcp/handlers-workflow-diff.d.ts +5 -0
  70. package/dist/mcp/handlers-workflow-diff.d.ts.map +1 -0
  71. package/dist/mcp/handlers-workflow-diff.js +461 -0
  72. package/dist/mcp/handlers-workflow-diff.js.map +1 -0
  73. package/dist/mcp/index.d.ts +3 -0
  74. package/dist/mcp/index.d.ts.map +1 -0
  75. package/dist/mcp/index.js +228 -0
  76. package/dist/mcp/index.js.map +1 -0
  77. package/dist/mcp/server.d.ts +82 -0
  78. package/dist/mcp/server.d.ts.map +1 -0
  79. package/dist/mcp/server.js +3006 -0
  80. package/dist/mcp/server.js.map +1 -0
  81. package/dist/mcp/stdio-wrapper.d.ts +3 -0
  82. package/dist/mcp/stdio-wrapper.d.ts.map +1 -0
  83. package/dist/mcp/stdio-wrapper.js +81 -0
  84. package/dist/mcp/stdio-wrapper.js.map +1 -0
  85. package/dist/mcp/tool-docs/configuration/get-node.d.ts +3 -0
  86. package/dist/mcp/tool-docs/configuration/get-node.d.ts.map +1 -0
  87. package/dist/mcp/tool-docs/configuration/get-node.js +90 -0
  88. package/dist/mcp/tool-docs/configuration/get-node.js.map +1 -0
  89. package/dist/mcp/tool-docs/configuration/index.d.ts +2 -0
  90. package/dist/mcp/tool-docs/configuration/index.d.ts.map +1 -0
  91. package/dist/mcp/tool-docs/configuration/index.js +6 -0
  92. package/dist/mcp/tool-docs/configuration/index.js.map +1 -0
  93. package/dist/mcp/tool-docs/discovery/index.d.ts +2 -0
  94. package/dist/mcp/tool-docs/discovery/index.d.ts.map +1 -0
  95. package/dist/mcp/tool-docs/discovery/index.js +6 -0
  96. package/dist/mcp/tool-docs/discovery/index.js.map +1 -0
  97. package/dist/mcp/tool-docs/discovery/search-nodes.d.ts +3 -0
  98. package/dist/mcp/tool-docs/discovery/search-nodes.d.ts.map +1 -0
  99. package/dist/mcp/tool-docs/discovery/search-nodes.js +70 -0
  100. package/dist/mcp/tool-docs/discovery/search-nodes.js.map +1 -0
  101. package/dist/mcp/tool-docs/guides/ai-agents-guide.d.ts +3 -0
  102. package/dist/mcp/tool-docs/guides/ai-agents-guide.d.ts.map +1 -0
  103. package/dist/mcp/tool-docs/guides/ai-agents-guide.js +739 -0
  104. package/dist/mcp/tool-docs/guides/ai-agents-guide.js.map +1 -0
  105. package/dist/mcp/tool-docs/guides/index.d.ts +2 -0
  106. package/dist/mcp/tool-docs/guides/index.d.ts.map +1 -0
  107. package/dist/mcp/tool-docs/guides/index.js +6 -0
  108. package/dist/mcp/tool-docs/guides/index.js.map +1 -0
  109. package/dist/mcp/tool-docs/index.d.ts +4 -0
  110. package/dist/mcp/tool-docs/index.d.ts.map +1 -0
  111. package/dist/mcp/tool-docs/index.js +34 -0
  112. package/dist/mcp/tool-docs/index.js.map +1 -0
  113. package/dist/mcp/tool-docs/system/index.d.ts +3 -0
  114. package/dist/mcp/tool-docs/system/index.d.ts.map +1 -0
  115. package/dist/mcp/tool-docs/system/index.js +8 -0
  116. package/dist/mcp/tool-docs/system/index.js.map +1 -0
  117. package/dist/mcp/tool-docs/system/n8n-diagnostic.d.ts +3 -0
  118. package/dist/mcp/tool-docs/system/n8n-diagnostic.d.ts.map +1 -0
  119. package/dist/mcp/tool-docs/system/n8n-diagnostic.js +99 -0
  120. package/dist/mcp/tool-docs/system/n8n-diagnostic.js.map +1 -0
  121. package/dist/mcp/tool-docs/system/n8n-health-check.d.ts +3 -0
  122. package/dist/mcp/tool-docs/system/n8n-health-check.d.ts.map +1 -0
  123. package/dist/mcp/tool-docs/system/n8n-health-check.js +102 -0
  124. package/dist/mcp/tool-docs/system/n8n-health-check.js.map +1 -0
  125. package/dist/mcp/tool-docs/system/n8n-list-available-tools.d.ts +3 -0
  126. package/dist/mcp/tool-docs/system/n8n-list-available-tools.d.ts.map +1 -0
  127. package/dist/mcp/tool-docs/system/n8n-list-available-tools.js +75 -0
  128. package/dist/mcp/tool-docs/system/n8n-list-available-tools.js.map +1 -0
  129. package/dist/mcp/tool-docs/system/tools-documentation.d.ts +3 -0
  130. package/dist/mcp/tool-docs/system/tools-documentation.d.ts.map +1 -0
  131. package/dist/mcp/tool-docs/system/tools-documentation.js +65 -0
  132. package/dist/mcp/tool-docs/system/tools-documentation.js.map +1 -0
  133. package/dist/mcp/tool-docs/templates/get-template.d.ts +3 -0
  134. package/dist/mcp/tool-docs/templates/get-template.d.ts.map +1 -0
  135. package/dist/mcp/tool-docs/templates/get-template.js +84 -0
  136. package/dist/mcp/tool-docs/templates/get-template.js.map +1 -0
  137. package/dist/mcp/tool-docs/templates/index.d.ts +3 -0
  138. package/dist/mcp/tool-docs/templates/index.d.ts.map +1 -0
  139. package/dist/mcp/tool-docs/templates/index.js +8 -0
  140. package/dist/mcp/tool-docs/templates/index.js.map +1 -0
  141. package/dist/mcp/tool-docs/templates/search-templates.d.ts +3 -0
  142. package/dist/mcp/tool-docs/templates/search-templates.d.ts.map +1 -0
  143. package/dist/mcp/tool-docs/templates/search-templates.js +143 -0
  144. package/dist/mcp/tool-docs/templates/search-templates.js.map +1 -0
  145. package/dist/mcp/tool-docs/types.d.ts +32 -0
  146. package/dist/mcp/tool-docs/types.d.ts.map +1 -0
  147. package/dist/mcp/tool-docs/types.js +3 -0
  148. package/dist/mcp/tool-docs/types.js.map +1 -0
  149. package/dist/mcp/tool-docs/validation/index.d.ts +3 -0
  150. package/dist/mcp/tool-docs/validation/index.d.ts.map +1 -0
  151. package/dist/mcp/tool-docs/validation/index.js +8 -0
  152. package/dist/mcp/tool-docs/validation/index.js.map +1 -0
  153. package/dist/mcp/tool-docs/validation/validate-node.d.ts +3 -0
  154. package/dist/mcp/tool-docs/validation/validate-node.d.ts.map +1 -0
  155. package/dist/mcp/tool-docs/validation/validate-node.js +82 -0
  156. package/dist/mcp/tool-docs/validation/validate-node.js.map +1 -0
  157. package/dist/mcp/tool-docs/validation/validate-workflow.d.ts +3 -0
  158. package/dist/mcp/tool-docs/validation/validate-workflow.d.ts.map +1 -0
  159. package/dist/mcp/tool-docs/validation/validate-workflow.js +86 -0
  160. package/dist/mcp/tool-docs/validation/validate-workflow.js.map +1 -0
  161. package/dist/mcp/tool-docs/workflow_management/index.d.ts +13 -0
  162. package/dist/mcp/tool-docs/workflow_management/index.d.ts.map +1 -0
  163. package/dist/mcp/tool-docs/workflow_management/index.js +28 -0
  164. package/dist/mcp/tool-docs/workflow_management/index.js.map +1 -0
  165. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.d.ts +3 -0
  166. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.d.ts.map +1 -0
  167. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.js +162 -0
  168. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.js.map +1 -0
  169. package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.d.ts +3 -0
  170. package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.d.ts.map +1 -0
  171. package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.js +102 -0
  172. package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.js.map +1 -0
  173. package/dist/mcp/tool-docs/workflow_management/n8n-delete-workflow.d.ts +3 -0
  174. package/dist/mcp/tool-docs/workflow_management/n8n-delete-workflow.d.ts.map +1 -0
  175. package/dist/mcp/tool-docs/workflow_management/n8n-delete-workflow.js +52 -0
  176. package/dist/mcp/tool-docs/workflow_management/n8n-delete-workflow.js.map +1 -0
  177. package/dist/mcp/tool-docs/workflow_management/n8n-deploy-template.d.ts +3 -0
  178. package/dist/mcp/tool-docs/workflow_management/n8n-deploy-template.d.ts.map +1 -0
  179. package/dist/mcp/tool-docs/workflow_management/n8n-deploy-template.js +73 -0
  180. package/dist/mcp/tool-docs/workflow_management/n8n-deploy-template.js.map +1 -0
  181. package/dist/mcp/tool-docs/workflow_management/n8n-executions.d.ts +3 -0
  182. package/dist/mcp/tool-docs/workflow_management/n8n-executions.d.ts.map +1 -0
  183. package/dist/mcp/tool-docs/workflow_management/n8n-executions.js +109 -0
  184. package/dist/mcp/tool-docs/workflow_management/n8n-executions.js.map +1 -0
  185. package/dist/mcp/tool-docs/workflow_management/n8n-get-workflow.d.ts +3 -0
  186. package/dist/mcp/tool-docs/workflow_management/n8n-get-workflow.d.ts.map +1 -0
  187. package/dist/mcp/tool-docs/workflow_management/n8n-get-workflow.js +68 -0
  188. package/dist/mcp/tool-docs/workflow_management/n8n-get-workflow.js.map +1 -0
  189. package/dist/mcp/tool-docs/workflow_management/n8n-list-workflows.d.ts +3 -0
  190. package/dist/mcp/tool-docs/workflow_management/n8n-list-workflows.d.ts.map +1 -0
  191. package/dist/mcp/tool-docs/workflow_management/n8n-list-workflows.js +57 -0
  192. package/dist/mcp/tool-docs/workflow_management/n8n-list-workflows.js.map +1 -0
  193. package/dist/mcp/tool-docs/workflow_management/n8n-test-workflow.d.ts +3 -0
  194. package/dist/mcp/tool-docs/workflow_management/n8n-test-workflow.d.ts.map +1 -0
  195. package/dist/mcp/tool-docs/workflow_management/n8n-test-workflow.js +140 -0
  196. package/dist/mcp/tool-docs/workflow_management/n8n-test-workflow.js.map +1 -0
  197. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.d.ts +3 -0
  198. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.d.ts.map +1 -0
  199. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.js +61 -0
  200. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.js.map +1 -0
  201. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.d.ts +3 -0
  202. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.d.ts.map +1 -0
  203. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js +420 -0
  204. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js.map +1 -0
  205. package/dist/mcp/tool-docs/workflow_management/n8n-validate-workflow.d.ts +3 -0
  206. package/dist/mcp/tool-docs/workflow_management/n8n-validate-workflow.d.ts.map +1 -0
  207. package/dist/mcp/tool-docs/workflow_management/n8n-validate-workflow.js +73 -0
  208. package/dist/mcp/tool-docs/workflow_management/n8n-validate-workflow.js.map +1 -0
  209. package/dist/mcp/tool-docs/workflow_management/n8n-workflow-versions.d.ts +3 -0
  210. package/dist/mcp/tool-docs/workflow_management/n8n-workflow-versions.d.ts.map +1 -0
  211. package/dist/mcp/tool-docs/workflow_management/n8n-workflow-versions.js +170 -0
  212. package/dist/mcp/tool-docs/workflow_management/n8n-workflow-versions.js.map +1 -0
  213. package/dist/mcp/tools-documentation.d.ts +6 -0
  214. package/dist/mcp/tools-documentation.d.ts.map +1 -0
  215. package/dist/mcp/tools-documentation.js +682 -0
  216. package/dist/mcp/tools-documentation.js.map +1 -0
  217. package/dist/mcp/tools-file-operations.d.ts +154 -0
  218. package/dist/mcp/tools-file-operations.d.ts.map +1 -0
  219. package/dist/mcp/tools-file-operations.js +213 -0
  220. package/dist/mcp/tools-file-operations.js.map +1 -0
  221. package/dist/mcp/tools-n8n-friendly.d.ts +6 -0
  222. package/dist/mcp/tools-n8n-friendly.d.ts.map +1 -0
  223. package/dist/mcp/tools-n8n-friendly.js +89 -0
  224. package/dist/mcp/tools-n8n-friendly.js.map +1 -0
  225. package/dist/mcp/tools-n8n-manager.d.ts +3 -0
  226. package/dist/mcp/tools-n8n-manager.d.ts.map +1 -0
  227. package/dist/mcp/tools-n8n-manager.js +1320 -0
  228. package/dist/mcp/tools-n8n-manager.js.map +1 -0
  229. package/dist/mcp/tools.d.ts +3 -0
  230. package/dist/mcp/tools.d.ts.map +1 -0
  231. package/dist/mcp/tools.js +424 -0
  232. package/dist/mcp/tools.js.map +1 -0
  233. package/dist/mcp/workflow-examples.d.ts +76 -0
  234. package/dist/mcp/workflow-examples.d.ts.map +1 -0
  235. package/dist/mcp/workflow-examples.js +111 -0
  236. package/dist/mcp/workflow-examples.js.map +1 -0
  237. package/dist/mcp-engine.d.ts +36 -0
  238. package/dist/mcp-engine.d.ts.map +1 -0
  239. package/dist/mcp-engine.js +77 -0
  240. package/dist/mcp-engine.js.map +1 -0
  241. package/dist/mcp-tools-engine.d.ts +47 -0
  242. package/dist/mcp-tools-engine.d.ts.map +1 -0
  243. package/dist/mcp-tools-engine.js +89 -0
  244. package/dist/mcp-tools-engine.js.map +1 -0
  245. package/dist/n8n/MCPApi.credentials.d.ts +8 -0
  246. package/dist/n8n/MCPApi.credentials.d.ts.map +1 -0
  247. package/dist/n8n/MCPApi.credentials.js +53 -0
  248. package/dist/n8n/MCPApi.credentials.js.map +1 -0
  249. package/dist/n8n/MCPNode.node.d.ts +13 -0
  250. package/dist/n8n/MCPNode.node.d.ts.map +1 -0
  251. package/dist/n8n/MCPNode.node.js +260 -0
  252. package/dist/n8n/MCPNode.node.js.map +1 -0
  253. package/dist/parsers/node-parser.d.ts +38 -0
  254. package/dist/parsers/node-parser.d.ts.map +1 -0
  255. package/dist/parsers/node-parser.js +250 -0
  256. package/dist/parsers/node-parser.js.map +1 -0
  257. package/dist/parsers/property-extractor.d.ts +11 -0
  258. package/dist/parsers/property-extractor.d.ts.map +1 -0
  259. package/dist/parsers/property-extractor.js +172 -0
  260. package/dist/parsers/property-extractor.js.map +1 -0
  261. package/dist/parsers/simple-parser.d.ts +25 -0
  262. package/dist/parsers/simple-parser.d.ts.map +1 -0
  263. package/dist/parsers/simple-parser.js +212 -0
  264. package/dist/parsers/simple-parser.js.map +1 -0
  265. package/dist/scripts/debug-http-search.d.ts +3 -0
  266. package/dist/scripts/debug-http-search.d.ts.map +1 -0
  267. package/dist/scripts/debug-http-search.js +57 -0
  268. package/dist/scripts/debug-http-search.js.map +1 -0
  269. package/dist/scripts/extract-from-docker.d.ts +3 -0
  270. package/dist/scripts/extract-from-docker.d.ts.map +1 -0
  271. package/dist/scripts/extract-from-docker.js +210 -0
  272. package/dist/scripts/extract-from-docker.js.map +1 -0
  273. package/dist/scripts/fetch-community-nodes.d.ts +3 -0
  274. package/dist/scripts/fetch-community-nodes.d.ts.map +1 -0
  275. package/dist/scripts/fetch-community-nodes.js +114 -0
  276. package/dist/scripts/fetch-community-nodes.js.map +1 -0
  277. package/dist/scripts/fetch-templates-robust.d.ts +4 -0
  278. package/dist/scripts/fetch-templates-robust.d.ts.map +1 -0
  279. package/dist/scripts/fetch-templates-robust.js +132 -0
  280. package/dist/scripts/fetch-templates-robust.js.map +1 -0
  281. package/dist/scripts/fetch-templates.d.ts +4 -0
  282. package/dist/scripts/fetch-templates.d.ts.map +1 -0
  283. package/dist/scripts/fetch-templates.js +411 -0
  284. package/dist/scripts/fetch-templates.js.map +1 -0
  285. package/dist/scripts/generate-community-docs.d.ts +3 -0
  286. package/dist/scripts/generate-community-docs.d.ts.map +1 -0
  287. package/dist/scripts/generate-community-docs.js +183 -0
  288. package/dist/scripts/generate-community-docs.js.map +1 -0
  289. package/dist/scripts/migrate-readme-columns.d.ts +2 -0
  290. package/dist/scripts/migrate-readme-columns.d.ts.map +1 -0
  291. package/dist/scripts/migrate-readme-columns.js +62 -0
  292. package/dist/scripts/migrate-readme-columns.js.map +1 -0
  293. package/dist/scripts/rebuild-database.d.ts +4 -0
  294. package/dist/scripts/rebuild-database.d.ts.map +1 -0
  295. package/dist/scripts/rebuild-database.js +95 -0
  296. package/dist/scripts/rebuild-database.js.map +1 -0
  297. package/dist/scripts/rebuild-optimized.d.ts +3 -0
  298. package/dist/scripts/rebuild-optimized.d.ts.map +1 -0
  299. package/dist/scripts/rebuild-optimized.js +198 -0
  300. package/dist/scripts/rebuild-optimized.js.map +1 -0
  301. package/dist/scripts/rebuild.d.ts +3 -0
  302. package/dist/scripts/rebuild.d.ts.map +1 -0
  303. package/dist/scripts/rebuild.js +258 -0
  304. package/dist/scripts/rebuild.js.map +1 -0
  305. package/dist/scripts/sanitize-templates.d.ts +3 -0
  306. package/dist/scripts/sanitize-templates.d.ts.map +1 -0
  307. package/dist/scripts/sanitize-templates.js +88 -0
  308. package/dist/scripts/sanitize-templates.js.map +1 -0
  309. package/dist/scripts/seed-canonical-ai-examples.d.ts +4 -0
  310. package/dist/scripts/seed-canonical-ai-examples.d.ts.map +1 -0
  311. package/dist/scripts/seed-canonical-ai-examples.js +121 -0
  312. package/dist/scripts/seed-canonical-ai-examples.js.map +1 -0
  313. package/dist/scripts/test-autofix-documentation.d.ts +3 -0
  314. package/dist/scripts/test-autofix-documentation.d.ts.map +1 -0
  315. package/dist/scripts/test-autofix-documentation.js +103 -0
  316. package/dist/scripts/test-autofix-documentation.js.map +1 -0
  317. package/dist/scripts/test-autofix-workflow.d.ts +2 -0
  318. package/dist/scripts/test-autofix-workflow.d.ts.map +1 -0
  319. package/dist/scripts/test-autofix-workflow.js +223 -0
  320. package/dist/scripts/test-autofix-workflow.js.map +1 -0
  321. package/dist/scripts/test-execution-filtering.d.ts +3 -0
  322. package/dist/scripts/test-execution-filtering.d.ts.map +1 -0
  323. package/dist/scripts/test-execution-filtering.js +206 -0
  324. package/dist/scripts/test-execution-filtering.js.map +1 -0
  325. package/dist/scripts/test-node-suggestions.d.ts +3 -0
  326. package/dist/scripts/test-node-suggestions.d.ts.map +1 -0
  327. package/dist/scripts/test-node-suggestions.js +165 -0
  328. package/dist/scripts/test-node-suggestions.js.map +1 -0
  329. package/dist/scripts/test-protocol-negotiation.d.ts +3 -0
  330. package/dist/scripts/test-protocol-negotiation.d.ts.map +1 -0
  331. package/dist/scripts/test-protocol-negotiation.js +154 -0
  332. package/dist/scripts/test-protocol-negotiation.js.map +1 -0
  333. package/dist/scripts/test-summary.d.ts +3 -0
  334. package/dist/scripts/test-summary.d.ts.map +1 -0
  335. package/dist/scripts/test-summary.js +77 -0
  336. package/dist/scripts/test-summary.js.map +1 -0
  337. package/dist/scripts/test-telemetry-mutations-verbose.d.ts +2 -0
  338. package/dist/scripts/test-telemetry-mutations-verbose.d.ts.map +1 -0
  339. package/dist/scripts/test-telemetry-mutations-verbose.js +133 -0
  340. package/dist/scripts/test-telemetry-mutations-verbose.js.map +1 -0
  341. package/dist/scripts/test-telemetry-mutations.d.ts +2 -0
  342. package/dist/scripts/test-telemetry-mutations.d.ts.map +1 -0
  343. package/dist/scripts/test-telemetry-mutations.js +129 -0
  344. package/dist/scripts/test-telemetry-mutations.js.map +1 -0
  345. package/dist/scripts/test-webhook-autofix.d.ts +3 -0
  346. package/dist/scripts/test-webhook-autofix.d.ts.map +1 -0
  347. package/dist/scripts/test-webhook-autofix.js +117 -0
  348. package/dist/scripts/test-webhook-autofix.js.map +1 -0
  349. package/dist/scripts/validate.d.ts +3 -0
  350. package/dist/scripts/validate.d.ts.map +1 -0
  351. package/dist/scripts/validate.js +121 -0
  352. package/dist/scripts/validate.js.map +1 -0
  353. package/dist/scripts/validation-summary.d.ts +3 -0
  354. package/dist/scripts/validation-summary.d.ts.map +1 -0
  355. package/dist/scripts/validation-summary.js +135 -0
  356. package/dist/scripts/validation-summary.js.map +1 -0
  357. package/dist/services/ai-node-validator.d.ts +12 -0
  358. package/dist/services/ai-node-validator.d.ts.map +1 -0
  359. package/dist/services/ai-node-validator.js +429 -0
  360. package/dist/services/ai-node-validator.js.map +1 -0
  361. package/dist/services/ai-tool-validators.d.ts +58 -0
  362. package/dist/services/ai-tool-validators.d.ts.map +1 -0
  363. package/dist/services/ai-tool-validators.js +438 -0
  364. package/dist/services/ai-tool-validators.js.map +1 -0
  365. package/dist/services/breaking-change-detector.d.ts +38 -0
  366. package/dist/services/breaking-change-detector.d.ts.map +1 -0
  367. package/dist/services/breaking-change-detector.js +184 -0
  368. package/dist/services/breaking-change-detector.js.map +1 -0
  369. package/dist/services/breaking-changes-registry.d.ts +28 -0
  370. package/dist/services/breaking-changes-registry.d.ts.map +1 -0
  371. package/dist/services/breaking-changes-registry.js +200 -0
  372. package/dist/services/breaking-changes-registry.js.map +1 -0
  373. package/dist/services/community-package-service.d.ts +69 -0
  374. package/dist/services/community-package-service.d.ts.map +1 -0
  375. package/dist/services/community-package-service.js +202 -0
  376. package/dist/services/community-package-service.js.map +1 -0
  377. package/dist/services/confidence-scorer.d.ts +24 -0
  378. package/dist/services/confidence-scorer.d.ts.map +1 -0
  379. package/dist/services/confidence-scorer.js +139 -0
  380. package/dist/services/confidence-scorer.js.map +1 -0
  381. package/dist/services/config-validator.d.ts +49 -0
  382. package/dist/services/config-validator.d.ts.map +1 -0
  383. package/dist/services/config-validator.js +724 -0
  384. package/dist/services/config-validator.js.map +1 -0
  385. package/dist/services/enhanced-config-validator.d.ts +54 -0
  386. package/dist/services/enhanced-config-validator.d.ts.map +1 -0
  387. package/dist/services/enhanced-config-validator.js +789 -0
  388. package/dist/services/enhanced-config-validator.js.map +1 -0
  389. package/dist/services/error-execution-processor.d.ts +9 -0
  390. package/dist/services/error-execution-processor.d.ts.map +1 -0
  391. package/dist/services/error-execution-processor.js +380 -0
  392. package/dist/services/error-execution-processor.js.map +1 -0
  393. package/dist/services/example-generator.d.ts +14 -0
  394. package/dist/services/example-generator.d.ts.map +1 -0
  395. package/dist/services/example-generator.js +970 -0
  396. package/dist/services/example-generator.js.map +1 -0
  397. package/dist/services/execution-processor.d.ts +8 -0
  398. package/dist/services/execution-processor.d.ts.map +1 -0
  399. package/dist/services/execution-processor.js +381 -0
  400. package/dist/services/execution-processor.js.map +1 -0
  401. package/dist/services/expression-format-validator.d.ts +33 -0
  402. package/dist/services/expression-format-validator.d.ts.map +1 -0
  403. package/dist/services/expression-format-validator.js +209 -0
  404. package/dist/services/expression-format-validator.js.map +1 -0
  405. package/dist/services/expression-validator.d.ts +27 -0
  406. package/dist/services/expression-validator.d.ts.map +1 -0
  407. package/dist/services/expression-validator.js +187 -0
  408. package/dist/services/expression-validator.js.map +1 -0
  409. package/dist/services/installed-node-sync-service.d.ts +32 -0
  410. package/dist/services/installed-node-sync-service.d.ts.map +1 -0
  411. package/dist/services/installed-node-sync-service.js +190 -0
  412. package/dist/services/installed-node-sync-service.js.map +1 -0
  413. package/dist/services/n8n-api-client.d.ts +48 -0
  414. package/dist/services/n8n-api-client.d.ts.map +1 -0
  415. package/dist/services/n8n-api-client.js +458 -0
  416. package/dist/services/n8n-api-client.js.map +1 -0
  417. package/dist/services/n8n-file-format.d.ts +58 -0
  418. package/dist/services/n8n-file-format.d.ts.map +1 -0
  419. package/dist/services/n8n-file-format.js +203 -0
  420. package/dist/services/n8n-file-format.js.map +1 -0
  421. package/dist/services/n8n-validation.d.ts +273 -0
  422. package/dist/services/n8n-validation.d.ts.map +1 -0
  423. package/dist/services/n8n-validation.js +491 -0
  424. package/dist/services/n8n-validation.js.map +1 -0
  425. package/dist/services/n8n-version.d.ts +23 -0
  426. package/dist/services/n8n-version.d.ts.map +1 -0
  427. package/dist/services/n8n-version.js +151 -0
  428. package/dist/services/n8n-version.js.map +1 -0
  429. package/dist/services/node-documentation-service.d.ts +70 -0
  430. package/dist/services/node-documentation-service.d.ts.map +1 -0
  431. package/dist/services/node-documentation-service.js +518 -0
  432. package/dist/services/node-documentation-service.js.map +1 -0
  433. package/dist/services/node-migration-service.d.ts +44 -0
  434. package/dist/services/node-migration-service.d.ts.map +1 -0
  435. package/dist/services/node-migration-service.js +231 -0
  436. package/dist/services/node-migration-service.js.map +1 -0
  437. package/dist/services/node-sanitizer.d.ts +5 -0
  438. package/dist/services/node-sanitizer.d.ts.map +1 -0
  439. package/dist/services/node-sanitizer.js +225 -0
  440. package/dist/services/node-sanitizer.js.map +1 -0
  441. package/dist/services/node-similarity-service.d.ts +51 -0
  442. package/dist/services/node-similarity-service.d.ts.map +1 -0
  443. package/dist/services/node-similarity-service.js +352 -0
  444. package/dist/services/node-similarity-service.js.map +1 -0
  445. package/dist/services/node-specific-validators.d.ts +37 -0
  446. package/dist/services/node-specific-validators.d.ts.map +1 -0
  447. package/dist/services/node-specific-validators.js +1331 -0
  448. package/dist/services/node-specific-validators.js.map +1 -0
  449. package/dist/services/node-version-service.d.ts +63 -0
  450. package/dist/services/node-version-service.d.ts.map +1 -0
  451. package/dist/services/node-version-service.js +215 -0
  452. package/dist/services/node-version-service.js.map +1 -0
  453. package/dist/services/operation-similarity-service.d.ts +32 -0
  454. package/dist/services/operation-similarity-service.d.ts.map +1 -0
  455. package/dist/services/operation-similarity-service.js +341 -0
  456. package/dist/services/operation-similarity-service.js.map +1 -0
  457. package/dist/services/post-update-validator.d.ts +59 -0
  458. package/dist/services/post-update-validator.d.ts.map +1 -0
  459. package/dist/services/post-update-validator.js +231 -0
  460. package/dist/services/post-update-validator.js.map +1 -0
  461. package/dist/services/property-dependencies.d.ts +36 -0
  462. package/dist/services/property-dependencies.d.ts.map +1 -0
  463. package/dist/services/property-dependencies.js +168 -0
  464. package/dist/services/property-dependencies.js.map +1 -0
  465. package/dist/services/property-filter.d.ts +44 -0
  466. package/dist/services/property-filter.d.ts.map +1 -0
  467. package/dist/services/property-filter.js +395 -0
  468. package/dist/services/property-filter.js.map +1 -0
  469. package/dist/services/resource-similarity-service.d.ts +33 -0
  470. package/dist/services/resource-similarity-service.d.ts.map +1 -0
  471. package/dist/services/resource-similarity-service.js +358 -0
  472. package/dist/services/resource-similarity-service.js.map +1 -0
  473. package/dist/services/sqlite-storage-service.d.ts +11 -0
  474. package/dist/services/sqlite-storage-service.d.ts.map +1 -0
  475. package/dist/services/sqlite-storage-service.js +74 -0
  476. package/dist/services/sqlite-storage-service.js.map +1 -0
  477. package/dist/services/task-templates.d.ts +27 -0
  478. package/dist/services/task-templates.d.ts.map +1 -0
  479. package/dist/services/task-templates.js +1397 -0
  480. package/dist/services/task-templates.js.map +1 -0
  481. package/dist/services/tool-variant-generator.d.ts +10 -0
  482. package/dist/services/tool-variant-generator.d.ts.map +1 -0
  483. package/dist/services/tool-variant-generator.js +93 -0
  484. package/dist/services/tool-variant-generator.js.map +1 -0
  485. package/dist/services/type-structure-service.d.ts +23 -0
  486. package/dist/services/type-structure-service.d.ts.map +1 -0
  487. package/dist/services/type-structure-service.js +109 -0
  488. package/dist/services/type-structure-service.js.map +1 -0
  489. package/dist/services/universal-expression-validator.d.ts +20 -0
  490. package/dist/services/universal-expression-validator.d.ts.map +1 -0
  491. package/dist/services/universal-expression-validator.js +192 -0
  492. package/dist/services/universal-expression-validator.js.map +1 -0
  493. package/dist/services/workflow-analytics-service.d.ts +34 -0
  494. package/dist/services/workflow-analytics-service.d.ts.map +1 -0
  495. package/dist/services/workflow-analytics-service.js +144 -0
  496. package/dist/services/workflow-analytics-service.js.map +1 -0
  497. package/dist/services/workflow-auto-fixer.d.ts +74 -0
  498. package/dist/services/workflow-auto-fixer.d.ts.map +1 -0
  499. package/dist/services/workflow-auto-fixer.js +557 -0
  500. package/dist/services/workflow-auto-fixer.js.map +1 -0
  501. package/dist/services/workflow-comparison.d.ts +13 -0
  502. package/dist/services/workflow-comparison.d.ts.map +1 -0
  503. package/dist/services/workflow-comparison.js +306 -0
  504. package/dist/services/workflow-comparison.js.map +1 -0
  505. package/dist/services/workflow-debugging-service.d.ts +62 -0
  506. package/dist/services/workflow-debugging-service.d.ts.map +1 -0
  507. package/dist/services/workflow-debugging-service.js +153 -0
  508. package/dist/services/workflow-debugging-service.js.map +1 -0
  509. package/dist/services/workflow-diff-engine.d.ts +45 -0
  510. package/dist/services/workflow-diff-engine.d.ts.map +1 -0
  511. package/dist/services/workflow-diff-engine.js +830 -0
  512. package/dist/services/workflow-diff-engine.js.map +1 -0
  513. package/dist/services/workflow-validator.d.ts +112 -0
  514. package/dist/services/workflow-validator.d.ts.map +1 -0
  515. package/dist/services/workflow-validator.js +1328 -0
  516. package/dist/services/workflow-validator.js.map +1 -0
  517. package/dist/services/workflow-versioning-service.d.ts +102 -0
  518. package/dist/services/workflow-versioning-service.d.ts.map +1 -0
  519. package/dist/services/workflow-versioning-service.js +264 -0
  520. package/dist/services/workflow-versioning-service.js.map +1 -0
  521. package/dist/telemetry/batch-processor.d.ts +34 -0
  522. package/dist/telemetry/batch-processor.d.ts.map +1 -0
  523. package/dist/telemetry/batch-processor.js +337 -0
  524. package/dist/telemetry/batch-processor.js.map +1 -0
  525. package/dist/telemetry/config-manager.d.ts +32 -0
  526. package/dist/telemetry/config-manager.d.ts.map +1 -0
  527. package/dist/telemetry/config-manager.js +289 -0
  528. package/dist/telemetry/config-manager.js.map +1 -0
  529. package/dist/telemetry/early-error-logger.d.ts +26 -0
  530. package/dist/telemetry/early-error-logger.d.ts.map +1 -0
  531. package/dist/telemetry/early-error-logger.js +187 -0
  532. package/dist/telemetry/early-error-logger.js.map +1 -0
  533. package/dist/telemetry/error-sanitization-utils.d.ts +2 -0
  534. package/dist/telemetry/error-sanitization-utils.d.ts.map +1 -0
  535. package/dist/telemetry/error-sanitization-utils.js +37 -0
  536. package/dist/telemetry/error-sanitization-utils.js.map +1 -0
  537. package/dist/telemetry/error-sanitizer.d.ts +4 -0
  538. package/dist/telemetry/error-sanitizer.d.ts.map +1 -0
  539. package/dist/telemetry/error-sanitizer.js +45 -0
  540. package/dist/telemetry/error-sanitizer.js.map +1 -0
  541. package/dist/telemetry/event-tracker.d.ts +71 -0
  542. package/dist/telemetry/event-tracker.d.ts.map +1 -0
  543. package/dist/telemetry/event-tracker.js +356 -0
  544. package/dist/telemetry/event-tracker.js.map +1 -0
  545. package/dist/telemetry/event-validator.d.ts +78 -0
  546. package/dist/telemetry/event-validator.d.ts.map +1 -0
  547. package/dist/telemetry/event-validator.js +227 -0
  548. package/dist/telemetry/event-validator.js.map +1 -0
  549. package/dist/telemetry/index.d.ts +5 -0
  550. package/dist/telemetry/index.d.ts.map +1 -0
  551. package/dist/telemetry/index.js +11 -0
  552. package/dist/telemetry/index.js.map +1 -0
  553. package/dist/telemetry/intent-classifier.d.ts +11 -0
  554. package/dist/telemetry/intent-classifier.d.ts.map +1 -0
  555. package/dist/telemetry/intent-classifier.js +141 -0
  556. package/dist/telemetry/intent-classifier.js.map +1 -0
  557. package/dist/telemetry/intent-sanitizer.d.ts +9 -0
  558. package/dist/telemetry/intent-sanitizer.d.ts.map +1 -0
  559. package/dist/telemetry/intent-sanitizer.js +103 -0
  560. package/dist/telemetry/intent-sanitizer.js.map +1 -0
  561. package/dist/telemetry/mutation-tracker.d.ts +15 -0
  562. package/dist/telemetry/mutation-tracker.d.ts.map +1 -0
  563. package/dist/telemetry/mutation-tracker.js +177 -0
  564. package/dist/telemetry/mutation-tracker.js.map +1 -0
  565. package/dist/telemetry/mutation-types.d.ts +106 -0
  566. package/dist/telemetry/mutation-types.d.ts.map +1 -0
  567. package/dist/telemetry/mutation-types.js +18 -0
  568. package/dist/telemetry/mutation-types.js.map +1 -0
  569. package/dist/telemetry/mutation-validator.d.ts +20 -0
  570. package/dist/telemetry/mutation-validator.d.ts.map +1 -0
  571. package/dist/telemetry/mutation-validator.js +144 -0
  572. package/dist/telemetry/mutation-validator.js.map +1 -0
  573. package/dist/telemetry/performance-monitor.d.ts +113 -0
  574. package/dist/telemetry/performance-monitor.d.ts.map +1 -0
  575. package/dist/telemetry/performance-monitor.js +208 -0
  576. package/dist/telemetry/performance-monitor.js.map +1 -0
  577. package/dist/telemetry/rate-limiter.d.ts +30 -0
  578. package/dist/telemetry/rate-limiter.d.ts.map +1 -0
  579. package/dist/telemetry/rate-limiter.js +103 -0
  580. package/dist/telemetry/rate-limiter.js.map +1 -0
  581. package/dist/telemetry/startup-checkpoints.d.ts +26 -0
  582. package/dist/telemetry/startup-checkpoints.d.ts.map +1 -0
  583. package/dist/telemetry/startup-checkpoints.js +65 -0
  584. package/dist/telemetry/startup-checkpoints.js.map +1 -0
  585. package/dist/telemetry/telemetry-error.d.ts +44 -0
  586. package/dist/telemetry/telemetry-error.d.ts.map +1 -0
  587. package/dist/telemetry/telemetry-error.js +153 -0
  588. package/dist/telemetry/telemetry-error.js.map +1 -0
  589. package/dist/telemetry/telemetry-manager.d.ts +130 -0
  590. package/dist/telemetry/telemetry-manager.d.ts.map +1 -0
  591. package/dist/telemetry/telemetry-manager.js +257 -0
  592. package/dist/telemetry/telemetry-manager.js.map +1 -0
  593. package/dist/telemetry/telemetry-types.d.ts +103 -0
  594. package/dist/telemetry/telemetry-types.d.ts.map +1 -0
  595. package/dist/telemetry/telemetry-types.js +29 -0
  596. package/dist/telemetry/telemetry-types.js.map +1 -0
  597. package/dist/telemetry/workflow-sanitizer.d.ts +34 -0
  598. package/dist/telemetry/workflow-sanitizer.d.ts.map +1 -0
  599. package/dist/telemetry/workflow-sanitizer.js +242 -0
  600. package/dist/telemetry/workflow-sanitizer.js.map +1 -0
  601. package/dist/templates/batch-processor.d.ts +35 -0
  602. package/dist/templates/batch-processor.d.ts.map +1 -0
  603. package/dist/templates/batch-processor.js +320 -0
  604. package/dist/templates/batch-processor.js.map +1 -0
  605. package/dist/templates/metadata-generator.d.ts +52 -0
  606. package/dist/templates/metadata-generator.d.ts.map +1 -0
  607. package/dist/templates/metadata-generator.js +252 -0
  608. package/dist/templates/metadata-generator.js.map +1 -0
  609. package/dist/templates/template-fetcher.d.ts +45 -0
  610. package/dist/templates/template-fetcher.d.ts.map +1 -0
  611. package/dist/templates/template-fetcher.js +122 -0
  612. package/dist/templates/template-fetcher.js.map +1 -0
  613. package/dist/templates/template-repository.d.ts +93 -0
  614. package/dist/templates/template-repository.d.ts.map +1 -0
  615. package/dist/templates/template-repository.js +644 -0
  616. package/dist/templates/template-repository.js.map +1 -0
  617. package/dist/templates/template-service.d.ts +79 -0
  618. package/dist/templates/template-service.d.ts.map +1 -0
  619. package/dist/templates/template-service.js +300 -0
  620. package/dist/templates/template-service.js.map +1 -0
  621. package/dist/triggers/handlers/base-handler.d.ts +21 -0
  622. package/dist/triggers/handlers/base-handler.d.ts.map +1 -0
  623. package/dist/triggers/handlers/base-handler.js +60 -0
  624. package/dist/triggers/handlers/base-handler.js.map +1 -0
  625. package/dist/triggers/handlers/chat-handler.d.ts +38 -0
  626. package/dist/triggers/handlers/chat-handler.d.ts.map +1 -0
  627. package/dist/triggers/handlers/chat-handler.js +129 -0
  628. package/dist/triggers/handlers/chat-handler.js.map +1 -0
  629. package/dist/triggers/handlers/form-handler.d.ts +35 -0
  630. package/dist/triggers/handlers/form-handler.d.ts.map +1 -0
  631. package/dist/triggers/handlers/form-handler.js +362 -0
  632. package/dist/triggers/handlers/form-handler.js.map +1 -0
  633. package/dist/triggers/handlers/webhook-handler.d.ts +38 -0
  634. package/dist/triggers/handlers/webhook-handler.d.ts.map +1 -0
  635. package/dist/triggers/handlers/webhook-handler.js +115 -0
  636. package/dist/triggers/handlers/webhook-handler.js.map +1 -0
  637. package/dist/triggers/index.d.ts +5 -0
  638. package/dist/triggers/index.d.ts.map +1 -0
  639. package/dist/triggers/index.js +14 -0
  640. package/dist/triggers/index.js.map +1 -0
  641. package/dist/triggers/trigger-detector.d.ts +6 -0
  642. package/dist/triggers/trigger-detector.d.ts.map +1 -0
  643. package/dist/triggers/trigger-detector.js +201 -0
  644. package/dist/triggers/trigger-detector.js.map +1 -0
  645. package/dist/triggers/trigger-registry.d.ts +18 -0
  646. package/dist/triggers/trigger-registry.d.ts.map +1 -0
  647. package/dist/triggers/trigger-registry.js +87 -0
  648. package/dist/triggers/trigger-registry.js.map +1 -0
  649. package/dist/triggers/types.d.ts +76 -0
  650. package/dist/triggers/types.d.ts.map +1 -0
  651. package/dist/triggers/types.js +3 -0
  652. package/dist/triggers/types.js.map +1 -0
  653. package/dist/types/index.d.ts +49 -0
  654. package/dist/types/index.d.ts.map +1 -0
  655. package/dist/types/index.js +21 -0
  656. package/dist/types/index.js.map +1 -0
  657. package/dist/types/instance-context.d.ts +20 -0
  658. package/dist/types/instance-context.d.ts.map +1 -0
  659. package/dist/types/instance-context.js +153 -0
  660. package/dist/types/instance-context.js.map +1 -0
  661. package/dist/types/n8n-api.d.ts +376 -0
  662. package/dist/types/n8n-api.d.ts.map +1 -0
  663. package/dist/types/n8n-api.js +10 -0
  664. package/dist/types/n8n-api.js.map +1 -0
  665. package/dist/types/node-types.d.ts +19 -0
  666. package/dist/types/node-types.d.ts.map +1 -0
  667. package/dist/types/node-types.js +62 -0
  668. package/dist/types/node-types.js.map +1 -0
  669. package/dist/types/session-state.d.ts +15 -0
  670. package/dist/types/session-state.d.ts.map +1 -0
  671. package/dist/types/session-state.js +3 -0
  672. package/dist/types/session-state.js.map +1 -0
  673. package/dist/types/type-structures.d.ts +42 -0
  674. package/dist/types/type-structures.d.ts.map +1 -0
  675. package/dist/types/type-structures.js +32 -0
  676. package/dist/types/type-structures.js.map +1 -0
  677. package/dist/types/workflow-comparison.d.ts +51 -0
  678. package/dist/types/workflow-comparison.d.ts.map +1 -0
  679. package/dist/types/workflow-comparison.js +3 -0
  680. package/dist/types/workflow-comparison.js.map +1 -0
  681. package/dist/types/workflow-diff.d.ts +148 -0
  682. package/dist/types/workflow-diff.d.ts.map +1 -0
  683. package/dist/types/workflow-diff.js +15 -0
  684. package/dist/types/workflow-diff.js.map +1 -0
  685. package/dist/utils/auth.d.ts +13 -0
  686. package/dist/utils/auth.d.ts.map +1 -0
  687. package/dist/utils/auth.js +82 -0
  688. package/dist/utils/auth.js.map +1 -0
  689. package/dist/utils/bridge.d.ts +12 -0
  690. package/dist/utils/bridge.d.ts.map +1 -0
  691. package/dist/utils/bridge.js +127 -0
  692. package/dist/utils/bridge.js.map +1 -0
  693. package/dist/utils/cache-utils.d.ts +58 -0
  694. package/dist/utils/cache-utils.d.ts.map +1 -0
  695. package/dist/utils/cache-utils.js +243 -0
  696. package/dist/utils/cache-utils.js.map +1 -0
  697. package/dist/utils/console-manager.d.ts +10 -0
  698. package/dist/utils/console-manager.d.ts.map +1 -0
  699. package/dist/utils/console-manager.js +63 -0
  700. package/dist/utils/console-manager.js.map +1 -0
  701. package/dist/utils/documentation-fetcher.d.ts +2 -0
  702. package/dist/utils/documentation-fetcher.d.ts.map +1 -0
  703. package/dist/utils/documentation-fetcher.js +18 -0
  704. package/dist/utils/documentation-fetcher.js.map +1 -0
  705. package/dist/utils/enhanced-documentation-fetcher.d.ts +74 -0
  706. package/dist/utils/enhanced-documentation-fetcher.d.ts.map +1 -0
  707. package/dist/utils/enhanced-documentation-fetcher.js +521 -0
  708. package/dist/utils/enhanced-documentation-fetcher.js.map +1 -0
  709. package/dist/utils/error-handler.d.ts +24 -0
  710. package/dist/utils/error-handler.d.ts.map +1 -0
  711. package/dist/utils/error-handler.js +84 -0
  712. package/dist/utils/error-handler.js.map +1 -0
  713. package/dist/utils/example-generator.d.ts +8 -0
  714. package/dist/utils/example-generator.d.ts.map +1 -0
  715. package/dist/utils/example-generator.js +106 -0
  716. package/dist/utils/example-generator.js.map +1 -0
  717. package/dist/utils/expression-utils.d.ts +6 -0
  718. package/dist/utils/expression-utils.d.ts.map +1 -0
  719. package/dist/utils/expression-utils.js +47 -0
  720. package/dist/utils/expression-utils.js.map +1 -0
  721. package/dist/utils/fixed-collection-validator.d.ts +35 -0
  722. package/dist/utils/fixed-collection-validator.d.ts.map +1 -0
  723. package/dist/utils/fixed-collection-validator.js +358 -0
  724. package/dist/utils/fixed-collection-validator.js.map +1 -0
  725. package/dist/utils/logger.d.ts +33 -0
  726. package/dist/utils/logger.d.ts.map +1 -0
  727. package/dist/utils/logger.js +101 -0
  728. package/dist/utils/logger.js.map +1 -0
  729. package/dist/utils/mcp-client.d.ts +21 -0
  730. package/dist/utils/mcp-client.d.ts.map +1 -0
  731. package/dist/utils/mcp-client.js +96 -0
  732. package/dist/utils/mcp-client.js.map +1 -0
  733. package/dist/utils/n8n-errors.d.ts +27 -0
  734. package/dist/utils/n8n-errors.d.ts.map +1 -0
  735. package/dist/utils/n8n-errors.js +138 -0
  736. package/dist/utils/n8n-errors.js.map +1 -0
  737. package/dist/utils/node-classification.d.ts +5 -0
  738. package/dist/utils/node-classification.d.ts.map +1 -0
  739. package/dist/utils/node-classification.js +31 -0
  740. package/dist/utils/node-classification.js.map +1 -0
  741. package/dist/utils/node-source-extractor.d.ts +21 -0
  742. package/dist/utils/node-source-extractor.d.ts.map +1 -0
  743. package/dist/utils/node-source-extractor.js +377 -0
  744. package/dist/utils/node-source-extractor.js.map +1 -0
  745. package/dist/utils/node-type-normalizer.d.ts +17 -0
  746. package/dist/utils/node-type-normalizer.d.ts.map +1 -0
  747. package/dist/utils/node-type-normalizer.js +87 -0
  748. package/dist/utils/node-type-normalizer.js.map +1 -0
  749. package/dist/utils/node-type-utils.d.ts +12 -0
  750. package/dist/utils/node-type-utils.d.ts.map +1 -0
  751. package/dist/utils/node-type-utils.js +126 -0
  752. package/dist/utils/node-type-utils.js.map +1 -0
  753. package/dist/utils/node-utils.d.ts +4 -0
  754. package/dist/utils/node-utils.d.ts.map +1 -0
  755. package/dist/utils/node-utils.js +81 -0
  756. package/dist/utils/node-utils.js.map +1 -0
  757. package/dist/utils/npm-version-checker.d.ts +14 -0
  758. package/dist/utils/npm-version-checker.d.ts.map +1 -0
  759. package/dist/utils/npm-version-checker.js +125 -0
  760. package/dist/utils/npm-version-checker.js.map +1 -0
  761. package/dist/utils/protocol-version.d.ts +19 -0
  762. package/dist/utils/protocol-version.d.ts.map +1 -0
  763. package/dist/utils/protocol-version.js +95 -0
  764. package/dist/utils/protocol-version.js.map +1 -0
  765. package/dist/utils/simple-cache.d.ts +10 -0
  766. package/dist/utils/simple-cache.d.ts.map +1 -0
  767. package/dist/utils/simple-cache.js +42 -0
  768. package/dist/utils/simple-cache.js.map +1 -0
  769. package/dist/utils/ssrf-protection.d.ts +7 -0
  770. package/dist/utils/ssrf-protection.d.ts.map +1 -0
  771. package/dist/utils/ssrf-protection.js +118 -0
  772. package/dist/utils/ssrf-protection.js.map +1 -0
  773. package/dist/utils/template-node-resolver.d.ts +2 -0
  774. package/dist/utils/template-node-resolver.d.ts.map +1 -0
  775. package/dist/utils/template-node-resolver.js +161 -0
  776. package/dist/utils/template-node-resolver.js.map +1 -0
  777. package/dist/utils/template-sanitizer.d.ts +21 -0
  778. package/dist/utils/template-sanitizer.d.ts.map +1 -0
  779. package/dist/utils/template-sanitizer.js +126 -0
  780. package/dist/utils/template-sanitizer.js.map +1 -0
  781. package/dist/utils/url-detector.d.ts +9 -0
  782. package/dist/utils/url-detector.d.ts.map +1 -0
  783. package/dist/utils/url-detector.js +79 -0
  784. package/dist/utils/url-detector.js.map +1 -0
  785. package/dist/utils/validation-schemas.d.ts +32 -0
  786. package/dist/utils/validation-schemas.d.ts.map +1 -0
  787. package/dist/utils/validation-schemas.js +219 -0
  788. package/dist/utils/validation-schemas.js.map +1 -0
  789. package/dist/utils/version.d.ts +2 -0
  790. package/dist/utils/version.d.ts.map +1 -0
  791. package/dist/utils/version.js +18 -0
  792. package/dist/utils/version.js.map +1 -0
  793. package/package.json +178 -0
  794. package/package.runtime.json +24 -0
@@ -0,0 +1,1397 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskTemplates = void 0;
4
+ class TaskTemplates {
5
+ static getAllTasks() {
6
+ return Object.keys(this.templates);
7
+ }
8
+ static getTasksForNode(nodeType) {
9
+ return Object.entries(this.templates)
10
+ .filter(([_, template]) => template.nodeType === nodeType)
11
+ .map(([task, _]) => task);
12
+ }
13
+ static getTaskTemplate(task) {
14
+ return this.templates[task];
15
+ }
16
+ static getTemplate(task) {
17
+ return this.getTaskTemplate(task);
18
+ }
19
+ static searchTasks(keyword) {
20
+ const lower = keyword.toLowerCase();
21
+ return Object.entries(this.templates)
22
+ .filter(([task, template]) => task.toLowerCase().includes(lower) ||
23
+ template.description.toLowerCase().includes(lower) ||
24
+ template.nodeType.toLowerCase().includes(lower))
25
+ .map(([task, _]) => task);
26
+ }
27
+ static getTaskCategories() {
28
+ return {
29
+ 'HTTP/API': ['get_api_data', 'post_json_request', 'call_api_with_auth', 'api_call_with_retry'],
30
+ 'Webhooks': ['receive_webhook', 'webhook_with_response', 'webhook_with_error_handling', 'process_webhook_data'],
31
+ 'Database': ['query_postgres', 'insert_postgres_data', 'database_transaction_safety'],
32
+ 'AI/LangChain': ['chat_with_ai', 'ai_agent_workflow', 'multi_tool_ai_agent', 'ai_rate_limit_handling'],
33
+ 'Data Processing': ['transform_data', 'filter_data', 'fault_tolerant_processing', 'process_webhook_data'],
34
+ 'Communication': ['send_slack_message', 'send_email'],
35
+ 'AI Tool Usage': ['use_google_sheets_as_tool', 'use_slack_as_tool', 'multi_tool_ai_agent'],
36
+ 'Error Handling': ['modern_error_handling_patterns', 'api_call_with_retry', 'fault_tolerant_processing', 'webhook_with_error_handling', 'database_transaction_safety', 'ai_rate_limit_handling']
37
+ };
38
+ }
39
+ }
40
+ exports.TaskTemplates = TaskTemplates;
41
+ TaskTemplates.templates = {
42
+ 'get_api_data': {
43
+ task: 'get_api_data',
44
+ description: 'Make a simple GET request to retrieve data from an API',
45
+ nodeType: 'nodes-base.httpRequest',
46
+ configuration: {
47
+ method: 'GET',
48
+ url: '',
49
+ authentication: 'none',
50
+ onError: 'continueRegularOutput',
51
+ retryOnFail: true,
52
+ maxTries: 3,
53
+ waitBetweenTries: 1000,
54
+ alwaysOutputData: true
55
+ },
56
+ userMustProvide: [
57
+ {
58
+ property: 'url',
59
+ description: 'The API endpoint URL',
60
+ example: 'https://api.example.com/users'
61
+ }
62
+ ],
63
+ optionalEnhancements: [
64
+ {
65
+ property: 'authentication',
66
+ description: 'Add authentication if the API requires it',
67
+ when: 'API requires authentication'
68
+ },
69
+ {
70
+ property: 'sendHeaders',
71
+ description: 'Add custom headers if needed',
72
+ when: 'API requires specific headers'
73
+ },
74
+ {
75
+ property: 'alwaysOutputData',
76
+ description: 'Set to true to capture error responses',
77
+ when: 'Need to debug API errors'
78
+ }
79
+ ]
80
+ },
81
+ 'post_json_request': {
82
+ task: 'post_json_request',
83
+ description: 'Send JSON data to an API endpoint',
84
+ nodeType: 'nodes-base.httpRequest',
85
+ configuration: {
86
+ method: 'POST',
87
+ url: '',
88
+ sendBody: true,
89
+ contentType: 'json',
90
+ specifyBody: 'json',
91
+ jsonBody: '',
92
+ onError: 'continueRegularOutput',
93
+ retryOnFail: true,
94
+ maxTries: 2,
95
+ waitBetweenTries: 1000,
96
+ alwaysOutputData: true
97
+ },
98
+ userMustProvide: [
99
+ {
100
+ property: 'url',
101
+ description: 'The API endpoint URL',
102
+ example: 'https://api.example.com/users'
103
+ },
104
+ {
105
+ property: 'jsonBody',
106
+ description: 'The JSON data to send',
107
+ example: '{\n "name": "John Doe",\n "email": "john@example.com"\n}'
108
+ }
109
+ ],
110
+ optionalEnhancements: [
111
+ {
112
+ property: 'authentication',
113
+ description: 'Add authentication if required'
114
+ },
115
+ {
116
+ property: 'onError',
117
+ description: 'Set to "continueRegularOutput" for non-critical operations',
118
+ when: 'Failure should not stop the workflow'
119
+ }
120
+ ],
121
+ notes: [
122
+ 'Make sure jsonBody contains valid JSON',
123
+ 'Content-Type header is automatically set to application/json',
124
+ 'Be careful with retries on non-idempotent operations'
125
+ ]
126
+ },
127
+ 'call_api_with_auth': {
128
+ task: 'call_api_with_auth',
129
+ description: 'Make an authenticated API request',
130
+ nodeType: 'nodes-base.httpRequest',
131
+ configuration: {
132
+ method: 'GET',
133
+ url: '',
134
+ authentication: 'genericCredentialType',
135
+ genericAuthType: 'headerAuth',
136
+ sendHeaders: true,
137
+ onError: 'continueErrorOutput',
138
+ retryOnFail: true,
139
+ maxTries: 3,
140
+ waitBetweenTries: 2000,
141
+ alwaysOutputData: true,
142
+ headerParameters: {
143
+ parameters: [
144
+ {
145
+ name: '',
146
+ value: ''
147
+ }
148
+ ]
149
+ }
150
+ },
151
+ userMustProvide: [
152
+ {
153
+ property: 'url',
154
+ description: 'The API endpoint URL'
155
+ },
156
+ {
157
+ property: 'headerParameters.parameters[0].name',
158
+ description: 'The header name for authentication',
159
+ example: 'Authorization'
160
+ },
161
+ {
162
+ property: 'headerParameters.parameters[0].value',
163
+ description: 'The authentication value',
164
+ example: 'Bearer YOUR_API_KEY'
165
+ }
166
+ ],
167
+ optionalEnhancements: [
168
+ {
169
+ property: 'method',
170
+ description: 'Change to POST/PUT/DELETE as needed'
171
+ }
172
+ ]
173
+ },
174
+ 'receive_webhook': {
175
+ task: 'receive_webhook',
176
+ description: 'Set up a webhook to receive data from external services',
177
+ nodeType: 'nodes-base.webhook',
178
+ configuration: {
179
+ httpMethod: 'POST',
180
+ path: 'webhook',
181
+ responseMode: 'lastNode',
182
+ responseData: 'allEntries',
183
+ onError: 'continueRegularOutput',
184
+ alwaysOutputData: true
185
+ },
186
+ userMustProvide: [
187
+ {
188
+ property: 'path',
189
+ description: 'The webhook path (will be appended to your n8n URL)',
190
+ example: 'github-webhook'
191
+ }
192
+ ],
193
+ optionalEnhancements: [
194
+ {
195
+ property: 'httpMethod',
196
+ description: 'Change if the service sends GET/PUT/etc'
197
+ },
198
+ {
199
+ property: 'responseCode',
200
+ description: 'Set custom response code (default 200)'
201
+ }
202
+ ],
203
+ notes: [
204
+ 'The full webhook URL will be: https://your-n8n.com/webhook/[path]',
205
+ 'Test URL will be different from production URL'
206
+ ]
207
+ },
208
+ 'webhook_with_response': {
209
+ task: 'webhook_with_response',
210
+ description: 'Receive webhook and send custom response',
211
+ nodeType: 'nodes-base.webhook',
212
+ configuration: {
213
+ httpMethod: 'POST',
214
+ path: 'webhook',
215
+ responseMode: 'responseNode',
216
+ responseData: 'firstEntryJson',
217
+ responseCode: 200,
218
+ onError: 'continueRegularOutput',
219
+ alwaysOutputData: true
220
+ },
221
+ userMustProvide: [
222
+ {
223
+ property: 'path',
224
+ description: 'The webhook path'
225
+ }
226
+ ],
227
+ notes: [
228
+ 'Use with a Respond to Webhook node to send custom response',
229
+ 'responseMode: responseNode requires a Respond to Webhook node'
230
+ ]
231
+ },
232
+ 'process_webhook_data': {
233
+ task: 'process_webhook_data',
234
+ description: 'Process incoming webhook data with Code node (shows correct data access)',
235
+ nodeType: 'nodes-base.code',
236
+ configuration: {
237
+ language: 'javaScript',
238
+ jsCode: `// ⚠️ CRITICAL: Webhook data is nested under 'body' property!
239
+ // Connect this Code node after a Webhook node
240
+
241
+ // Access webhook payload data - it's under .body, not directly under .json
242
+ const webhookData = items[0].json.body; // ✅ CORRECT
243
+ const headers = items[0].json.headers; // HTTP headers
244
+ const query = items[0].json.query; // Query parameters
245
+
246
+ // Common mistake to avoid:
247
+ // const command = items[0].json.testCommand; // ❌ WRONG - will be undefined!
248
+ // const command = items[0].json.body.testCommand; // ✅ CORRECT
249
+
250
+ // Process the webhook data
251
+ try {
252
+ // Validate required fields
253
+ if (!webhookData.command) {
254
+ throw new Error('Missing required field: command');
255
+ }
256
+
257
+ // Process based on command
258
+ let result = {};
259
+ switch (webhookData.command) {
260
+ case 'process':
261
+ result = {
262
+ status: 'processed',
263
+ data: webhookData.data,
264
+ processedAt: DateTime.now().toISO()
265
+ };
266
+ break;
267
+
268
+ case 'validate':
269
+ result = {
270
+ status: 'validated',
271
+ isValid: true,
272
+ validatedFields: Object.keys(webhookData.data || {})
273
+ };
274
+ break;
275
+
276
+ default:
277
+ result = {
278
+ status: 'unknown_command',
279
+ command: webhookData.command
280
+ };
281
+ }
282
+
283
+ // Return processed data
284
+ return [{
285
+ json: {
286
+ ...result,
287
+ requestId: headers['x-request-id'] || crypto.randomUUID(),
288
+ source: query.source || 'webhook',
289
+ originalCommand: webhookData.command,
290
+ metadata: {
291
+ httpMethod: items[0].json.httpMethod,
292
+ webhookPath: items[0].json.webhookPath,
293
+ timestamp: DateTime.now().toISO()
294
+ }
295
+ }
296
+ }];
297
+
298
+ } catch (error) {
299
+ // Return error response
300
+ return [{
301
+ json: {
302
+ status: 'error',
303
+ error: error.message,
304
+ timestamp: DateTime.now().toISO()
305
+ }
306
+ }];
307
+ }`,
308
+ onError: 'continueRegularOutput'
309
+ },
310
+ userMustProvide: [],
311
+ notes: [
312
+ '⚠️ WEBHOOK DATA IS AT items[0].json.body, NOT items[0].json',
313
+ 'This is the most common webhook processing mistake',
314
+ 'Headers are at items[0].json.headers',
315
+ 'Query parameters are at items[0].json.query',
316
+ 'Connect this Code node directly after a Webhook node'
317
+ ]
318
+ },
319
+ 'query_postgres': {
320
+ task: 'query_postgres',
321
+ description: 'Query data from PostgreSQL database',
322
+ nodeType: 'nodes-base.postgres',
323
+ configuration: {
324
+ operation: 'executeQuery',
325
+ query: '',
326
+ onError: 'continueRegularOutput',
327
+ retryOnFail: true,
328
+ maxTries: 3,
329
+ waitBetweenTries: 1000
330
+ },
331
+ userMustProvide: [
332
+ {
333
+ property: 'query',
334
+ description: 'The SQL query to execute',
335
+ example: 'SELECT * FROM users WHERE active = true LIMIT 10'
336
+ }
337
+ ],
338
+ optionalEnhancements: [
339
+ {
340
+ property: 'additionalFields.queryParams',
341
+ description: 'Use parameterized queries for security',
342
+ when: 'Using dynamic values'
343
+ }
344
+ ],
345
+ notes: [
346
+ 'Always use parameterized queries to prevent SQL injection',
347
+ 'Configure PostgreSQL credentials in n8n'
348
+ ]
349
+ },
350
+ 'insert_postgres_data': {
351
+ task: 'insert_postgres_data',
352
+ description: 'Insert data into PostgreSQL table',
353
+ nodeType: 'nodes-base.postgres',
354
+ configuration: {
355
+ operation: 'insert',
356
+ table: '',
357
+ columns: '',
358
+ returnFields: '*',
359
+ onError: 'stopWorkflow',
360
+ retryOnFail: true,
361
+ maxTries: 2,
362
+ waitBetweenTries: 1000
363
+ },
364
+ userMustProvide: [
365
+ {
366
+ property: 'table',
367
+ description: 'The table name',
368
+ example: 'users'
369
+ },
370
+ {
371
+ property: 'columns',
372
+ description: 'Comma-separated column names',
373
+ example: 'name,email,created_at'
374
+ }
375
+ ],
376
+ notes: [
377
+ 'Input data should match the column structure',
378
+ 'Use expressions like {{ $json.fieldName }} to map data'
379
+ ]
380
+ },
381
+ 'chat_with_ai': {
382
+ task: 'chat_with_ai',
383
+ description: 'Send a message to an AI model and get response',
384
+ nodeType: 'nodes-base.openAi',
385
+ configuration: {
386
+ resource: 'chat',
387
+ operation: 'message',
388
+ modelId: 'gpt-3.5-turbo',
389
+ messages: {
390
+ values: [
391
+ {
392
+ role: 'user',
393
+ content: ''
394
+ }
395
+ ]
396
+ },
397
+ onError: 'continueRegularOutput',
398
+ retryOnFail: true,
399
+ maxTries: 3,
400
+ waitBetweenTries: 5000,
401
+ alwaysOutputData: true
402
+ },
403
+ userMustProvide: [
404
+ {
405
+ property: 'messages.values[0].content',
406
+ description: 'The message to send to the AI',
407
+ example: '{{ $json.userMessage }}'
408
+ }
409
+ ],
410
+ optionalEnhancements: [
411
+ {
412
+ property: 'modelId',
413
+ description: 'Change to gpt-4 for better results'
414
+ },
415
+ {
416
+ property: 'options.temperature',
417
+ description: 'Adjust creativity (0-1)'
418
+ },
419
+ {
420
+ property: 'options.maxTokens',
421
+ description: 'Limit response length'
422
+ }
423
+ ]
424
+ },
425
+ 'ai_agent_workflow': {
426
+ task: 'ai_agent_workflow',
427
+ description: 'Create an AI agent that can use tools',
428
+ nodeType: 'nodes-langchain.agent',
429
+ configuration: {
430
+ text: '',
431
+ outputType: 'output',
432
+ systemMessage: 'You are a helpful assistant.'
433
+ },
434
+ userMustProvide: [
435
+ {
436
+ property: 'text',
437
+ description: 'The input prompt for the agent',
438
+ example: '{{ $json.query }}'
439
+ }
440
+ ],
441
+ optionalEnhancements: [
442
+ {
443
+ property: 'systemMessage',
444
+ description: 'Customize the agent\'s behavior'
445
+ }
446
+ ],
447
+ notes: [
448
+ 'Connect tool nodes to give the agent capabilities',
449
+ 'Configure the AI model credentials'
450
+ ]
451
+ },
452
+ 'transform_data': {
453
+ task: 'transform_data',
454
+ description: 'Transform data structure using JavaScript',
455
+ nodeType: 'nodes-base.code',
456
+ configuration: {
457
+ language: 'javaScript',
458
+ jsCode: `// Transform each item
459
+ const results = [];
460
+
461
+ for (const item of items) {
462
+ results.push({
463
+ json: {
464
+ // Transform your data here
465
+ id: item.json.id,
466
+ processedAt: new Date().toISOString()
467
+ }
468
+ });
469
+ }
470
+
471
+ return results;`
472
+ },
473
+ userMustProvide: [],
474
+ notes: [
475
+ 'Access input data via items array',
476
+ 'Each item has a json property with the data',
477
+ 'Return array of objects with json property'
478
+ ]
479
+ },
480
+ 'filter_data': {
481
+ task: 'filter_data',
482
+ description: 'Filter items based on conditions',
483
+ nodeType: 'nodes-base.if',
484
+ configuration: {
485
+ conditions: {
486
+ conditions: [
487
+ {
488
+ leftValue: '',
489
+ rightValue: '',
490
+ operator: {
491
+ type: 'string',
492
+ operation: 'equals'
493
+ }
494
+ }
495
+ ]
496
+ }
497
+ },
498
+ userMustProvide: [
499
+ {
500
+ property: 'conditions.conditions[0].leftValue',
501
+ description: 'The value to check',
502
+ example: '{{ $json.status }}'
503
+ },
504
+ {
505
+ property: 'conditions.conditions[0].rightValue',
506
+ description: 'The value to compare against',
507
+ example: 'active'
508
+ }
509
+ ],
510
+ notes: [
511
+ 'True output contains matching items',
512
+ 'False output contains non-matching items'
513
+ ]
514
+ },
515
+ 'send_slack_message': {
516
+ task: 'send_slack_message',
517
+ description: 'Send a message to Slack channel',
518
+ nodeType: 'nodes-base.slack',
519
+ configuration: {
520
+ resource: 'message',
521
+ operation: 'post',
522
+ channel: '',
523
+ text: '',
524
+ onError: 'continueRegularOutput',
525
+ retryOnFail: true,
526
+ maxTries: 2,
527
+ waitBetweenTries: 2000
528
+ },
529
+ userMustProvide: [
530
+ {
531
+ property: 'channel',
532
+ description: 'The Slack channel',
533
+ example: '#general'
534
+ },
535
+ {
536
+ property: 'text',
537
+ description: 'The message text',
538
+ example: 'New order received: {{ $json.orderId }}'
539
+ }
540
+ ],
541
+ optionalEnhancements: [
542
+ {
543
+ property: 'attachments',
544
+ description: 'Add rich message attachments'
545
+ },
546
+ {
547
+ property: 'blocks',
548
+ description: 'Use Block Kit for advanced formatting'
549
+ }
550
+ ]
551
+ },
552
+ 'send_email': {
553
+ task: 'send_email',
554
+ description: 'Send an email notification',
555
+ nodeType: 'nodes-base.emailSend',
556
+ configuration: {
557
+ fromEmail: '',
558
+ toEmail: '',
559
+ subject: '',
560
+ text: '',
561
+ onError: 'continueRegularOutput',
562
+ retryOnFail: true,
563
+ maxTries: 3,
564
+ waitBetweenTries: 3000,
565
+ alwaysOutputData: true
566
+ },
567
+ userMustProvide: [
568
+ {
569
+ property: 'fromEmail',
570
+ description: 'Sender email address',
571
+ example: 'notifications@company.com'
572
+ },
573
+ {
574
+ property: 'toEmail',
575
+ description: 'Recipient email address',
576
+ example: '{{ $json.customerEmail }}'
577
+ },
578
+ {
579
+ property: 'subject',
580
+ description: 'Email subject',
581
+ example: 'Order Confirmation #{{ $json.orderId }}'
582
+ },
583
+ {
584
+ property: 'text',
585
+ description: 'Email body (plain text)',
586
+ example: 'Thank you for your order!'
587
+ }
588
+ ],
589
+ optionalEnhancements: [
590
+ {
591
+ property: 'html',
592
+ description: 'Use HTML for rich formatting'
593
+ },
594
+ {
595
+ property: 'attachments',
596
+ description: 'Attach files to the email'
597
+ }
598
+ ]
599
+ },
600
+ 'use_google_sheets_as_tool': {
601
+ task: 'use_google_sheets_as_tool',
602
+ description: 'Use Google Sheets as an AI tool for reading/writing data',
603
+ nodeType: 'nodes-base.googleSheets',
604
+ configuration: {
605
+ operation: 'append',
606
+ sheetId: '={{ $fromAI("sheetId", "The Google Sheets ID") }}',
607
+ range: '={{ $fromAI("range", "The range to append to, e.g. A:Z") }}',
608
+ dataMode: 'autoMap'
609
+ },
610
+ userMustProvide: [
611
+ {
612
+ property: 'Google Sheets credentials',
613
+ description: 'Configure Google Sheets API credentials in n8n'
614
+ },
615
+ {
616
+ property: 'Tool name in AI Agent',
617
+ description: 'Give it a descriptive name like "Log Results to Sheet"'
618
+ },
619
+ {
620
+ property: 'Tool description',
621
+ description: 'Describe when and how the AI should use this tool'
622
+ }
623
+ ],
624
+ notes: [
625
+ 'Connect this node to the ai_tool port of an AI Agent node',
626
+ 'The AI can dynamically determine sheetId and range using $fromAI',
627
+ 'Works great for logging AI analysis results or reading data for processing'
628
+ ]
629
+ },
630
+ 'use_slack_as_tool': {
631
+ task: 'use_slack_as_tool',
632
+ description: 'Use Slack as an AI tool for sending notifications',
633
+ nodeType: 'nodes-base.slack',
634
+ configuration: {
635
+ resource: 'message',
636
+ operation: 'post',
637
+ channel: '={{ $fromAI("channel", "The Slack channel, e.g. #general") }}',
638
+ text: '={{ $fromAI("message", "The message to send") }}',
639
+ attachments: []
640
+ },
641
+ userMustProvide: [
642
+ {
643
+ property: 'Slack credentials',
644
+ description: 'Configure Slack OAuth2 credentials in n8n'
645
+ },
646
+ {
647
+ property: 'Tool configuration in AI Agent',
648
+ description: 'Name it something like "Send Slack Notification"'
649
+ }
650
+ ],
651
+ notes: [
652
+ 'Perfect for AI agents that need to notify teams',
653
+ 'The AI determines channel and message content dynamically',
654
+ 'Can be enhanced with blocks for rich formatting'
655
+ ]
656
+ },
657
+ 'multi_tool_ai_agent': {
658
+ task: 'multi_tool_ai_agent',
659
+ description: 'AI agent with multiple tools for complex automation',
660
+ nodeType: 'nodes-langchain.agent',
661
+ configuration: {
662
+ text: '={{ $json.query }}',
663
+ outputType: 'output',
664
+ systemMessage: 'You are an intelligent assistant with access to multiple tools. Use them wisely to complete tasks.'
665
+ },
666
+ userMustProvide: [
667
+ {
668
+ property: 'AI model credentials',
669
+ description: 'OpenAI, Anthropic, or other LLM credentials'
670
+ },
671
+ {
672
+ property: 'Multiple tool nodes',
673
+ description: 'Connect various nodes to the ai_tool port'
674
+ },
675
+ {
676
+ property: 'Tool descriptions',
677
+ description: 'Clear descriptions for each connected tool'
678
+ }
679
+ ],
680
+ optionalEnhancements: [
681
+ {
682
+ property: 'Memory',
683
+ description: 'Add memory nodes for conversation context'
684
+ },
685
+ {
686
+ property: 'Custom tools',
687
+ description: 'Create Code nodes as custom tools'
688
+ }
689
+ ],
690
+ notes: [
691
+ 'Connect multiple nodes: HTTP Request, Slack, Google Sheets, etc.',
692
+ 'Each tool should have a clear, specific purpose',
693
+ 'Test each tool individually before combining',
694
+ 'Set N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true for community nodes'
695
+ ]
696
+ },
697
+ 'api_call_with_retry': {
698
+ task: 'api_call_with_retry',
699
+ description: 'Resilient API call with automatic retry on failure',
700
+ nodeType: 'nodes-base.httpRequest',
701
+ configuration: {
702
+ method: 'GET',
703
+ url: '',
704
+ retryOnFail: true,
705
+ maxTries: 5,
706
+ waitBetweenTries: 2000,
707
+ alwaysOutputData: true,
708
+ sendHeaders: true,
709
+ headerParameters: {
710
+ parameters: [
711
+ {
712
+ name: 'X-Request-ID',
713
+ value: '={{ $workflow.id }}-{{ $itemIndex }}'
714
+ }
715
+ ]
716
+ }
717
+ },
718
+ userMustProvide: [
719
+ {
720
+ property: 'url',
721
+ description: 'The API endpoint to call',
722
+ example: 'https://api.example.com/resource/{{ $json.id }}'
723
+ }
724
+ ],
725
+ optionalEnhancements: [
726
+ {
727
+ property: 'authentication',
728
+ description: 'Add API authentication'
729
+ },
730
+ {
731
+ property: 'onError',
732
+ description: 'Change to "stopWorkflow" for critical API calls',
733
+ when: 'This is a critical API call that must succeed'
734
+ }
735
+ ],
736
+ notes: [
737
+ 'Retries help with rate limits and transient network issues',
738
+ 'waitBetweenTries prevents hammering the API',
739
+ 'alwaysOutputData captures error responses for debugging',
740
+ 'Consider exponential backoff for production use'
741
+ ]
742
+ },
743
+ 'fault_tolerant_processing': {
744
+ task: 'fault_tolerant_processing',
745
+ description: 'Data processing that continues despite individual item failures',
746
+ nodeType: 'nodes-base.code',
747
+ configuration: {
748
+ language: 'javaScript',
749
+ jsCode: `// Process items with error handling
750
+ const results = [];
751
+
752
+ for (const item of items) {
753
+ try {
754
+ // Your processing logic here
755
+ const processed = {
756
+ ...item.json,
757
+ processed: true,
758
+ timestamp: new Date().toISOString()
759
+ };
760
+
761
+ results.push({ json: processed });
762
+ } catch (error) {
763
+ // Log error but continue processing
764
+ console.error('Processing failed for item:', item.json.id, error);
765
+
766
+ // Add error item to results
767
+ results.push({
768
+ json: {
769
+ ...item.json,
770
+ error: error.message,
771
+ processed: false
772
+ }
773
+ });
774
+ }
775
+ }
776
+
777
+ return results;`,
778
+ onError: 'continueRegularOutput',
779
+ alwaysOutputData: true
780
+ },
781
+ userMustProvide: [
782
+ {
783
+ property: 'Processing logic',
784
+ description: 'Replace the comment with your data transformation logic'
785
+ }
786
+ ],
787
+ optionalEnhancements: [
788
+ {
789
+ property: 'Error notification',
790
+ description: 'Add IF node after to handle error items separately'
791
+ }
792
+ ],
793
+ notes: [
794
+ 'Individual item failures won\'t stop processing of other items',
795
+ 'Error items are marked and can be handled separately',
796
+ 'continueOnFail ensures workflow continues even on total failure'
797
+ ]
798
+ },
799
+ 'webhook_with_error_handling': {
800
+ task: 'webhook_with_error_handling',
801
+ description: 'Webhook that gracefully handles processing errors',
802
+ nodeType: 'nodes-base.webhook',
803
+ configuration: {
804
+ httpMethod: 'POST',
805
+ path: 'resilient-webhook',
806
+ responseMode: 'responseNode',
807
+ responseData: 'firstEntryJson',
808
+ onError: 'continueRegularOutput',
809
+ alwaysOutputData: true
810
+ },
811
+ userMustProvide: [
812
+ {
813
+ property: 'path',
814
+ description: 'Unique webhook path',
815
+ example: 'order-processor'
816
+ },
817
+ {
818
+ property: 'Respond to Webhook node',
819
+ description: 'Add node to send appropriate success/error responses'
820
+ }
821
+ ],
822
+ optionalEnhancements: [
823
+ {
824
+ property: 'Validation',
825
+ description: 'Add IF node to validate webhook payload'
826
+ },
827
+ {
828
+ property: 'Error logging',
829
+ description: 'Add error handler node for failed requests'
830
+ }
831
+ ],
832
+ notes: [
833
+ 'onError: continueRegularOutput ensures webhook always sends a response',
834
+ 'Use Respond to Webhook node to send appropriate status codes',
835
+ 'Log errors but don\'t expose internal errors to webhook callers',
836
+ 'Consider rate limiting for public webhooks'
837
+ ]
838
+ },
839
+ 'modern_error_handling_patterns': {
840
+ task: 'modern_error_handling_patterns',
841
+ description: 'Examples of modern error handling using onError property',
842
+ nodeType: 'nodes-base.httpRequest',
843
+ configuration: {
844
+ method: 'GET',
845
+ url: '',
846
+ onError: 'continueRegularOutput',
847
+ retryOnFail: true,
848
+ maxTries: 3,
849
+ waitBetweenTries: 2000,
850
+ alwaysOutputData: true
851
+ },
852
+ userMustProvide: [
853
+ {
854
+ property: 'url',
855
+ description: 'The API endpoint'
856
+ },
857
+ {
858
+ property: 'onError',
859
+ description: 'Choose error handling strategy',
860
+ example: 'continueRegularOutput'
861
+ }
862
+ ],
863
+ notes: [
864
+ 'onError replaces the deprecated continueOnFail property',
865
+ 'continueRegularOutput: Continue with normal output on error',
866
+ 'continueErrorOutput: Route errors to error output for special handling',
867
+ 'stopWorkflow: Stop the entire workflow on error',
868
+ 'Combine with retryOnFail for resilient workflows'
869
+ ]
870
+ },
871
+ 'database_transaction_safety': {
872
+ task: 'database_transaction_safety',
873
+ description: 'Database operations with proper error handling',
874
+ nodeType: 'nodes-base.postgres',
875
+ configuration: {
876
+ operation: 'executeQuery',
877
+ query: 'BEGIN; INSERT INTO orders ...; COMMIT;',
878
+ onError: 'continueErrorOutput',
879
+ retryOnFail: false,
880
+ alwaysOutputData: true
881
+ },
882
+ userMustProvide: [
883
+ {
884
+ property: 'query',
885
+ description: 'Your SQL query or transaction'
886
+ }
887
+ ],
888
+ notes: [
889
+ 'Transactions should not be retried automatically',
890
+ 'Use continueErrorOutput to handle errors separately',
891
+ 'Consider implementing compensating transactions',
892
+ 'Always log transaction failures for audit'
893
+ ]
894
+ },
895
+ 'ai_rate_limit_handling': {
896
+ task: 'ai_rate_limit_handling',
897
+ description: 'AI API calls with rate limit handling',
898
+ nodeType: 'nodes-base.openAi',
899
+ configuration: {
900
+ resource: 'chat',
901
+ operation: 'message',
902
+ modelId: 'gpt-4',
903
+ messages: {
904
+ values: [
905
+ {
906
+ role: 'user',
907
+ content: ''
908
+ }
909
+ ]
910
+ },
911
+ onError: 'continueRegularOutput',
912
+ retryOnFail: true,
913
+ maxTries: 5,
914
+ waitBetweenTries: 5000,
915
+ alwaysOutputData: true
916
+ },
917
+ userMustProvide: [
918
+ {
919
+ property: 'messages.values[0].content',
920
+ description: 'The prompt for the AI'
921
+ }
922
+ ],
923
+ notes: [
924
+ 'AI APIs often have rate limits',
925
+ 'Longer wait times help avoid hitting limits',
926
+ 'Consider implementing exponential backoff in Code node',
927
+ 'Monitor usage to stay within quotas'
928
+ ]
929
+ },
930
+ 'custom_ai_tool': {
931
+ task: 'custom_ai_tool',
932
+ description: 'Create a custom tool for AI agents using Code node',
933
+ nodeType: 'nodes-base.code',
934
+ configuration: {
935
+ language: 'javaScript',
936
+ mode: 'runOnceForEachItem',
937
+ jsCode: `// Custom AI Tool - Example: Text Analysis
938
+ // This code will be called by AI agents with $json containing the input
939
+
940
+ // Access the input from the AI agent
941
+ const text = $json.text || '';
942
+ const operation = $json.operation || 'analyze';
943
+
944
+ // Perform the requested operation
945
+ let result = {};
946
+
947
+ switch (operation) {
948
+ case 'wordCount':
949
+ result = {
950
+ wordCount: text.split(/\\s+/).filter(word => word.length > 0).length,
951
+ characterCount: text.length,
952
+ lineCount: text.split('\\n').length
953
+ };
954
+ break;
955
+
956
+ case 'extract':
957
+ // Extract specific patterns (emails, URLs, etc.)
958
+ result = {
959
+ emails: text.match(/[\\w.-]+@[\\w.-]+\\.\\w+/g) || [],
960
+ urls: text.match(/https?:\\/\\/[^\\s]+/g) || [],
961
+ numbers: text.match(/\\b\\d+\\b/g) || []
962
+ };
963
+ break;
964
+
965
+ default:
966
+ result = {
967
+ error: 'Unknown operation',
968
+ availableOperations: ['wordCount', 'extract']
969
+ };
970
+ }
971
+
972
+ return [{
973
+ json: {
974
+ ...result,
975
+ originalText: text,
976
+ operation: operation,
977
+ processedAt: DateTime.now().toISO()
978
+ }
979
+ }];`,
980
+ onError: 'continueRegularOutput'
981
+ },
982
+ userMustProvide: [],
983
+ notes: [
984
+ 'Connect this to AI Agent node\'s tool input',
985
+ 'AI will pass data in $json',
986
+ 'Use "Run Once for Each Item" mode for AI tools',
987
+ 'Return structured data the AI can understand'
988
+ ]
989
+ },
990
+ 'aggregate_data': {
991
+ task: 'aggregate_data',
992
+ description: 'Aggregate data from multiple items into summary statistics',
993
+ nodeType: 'nodes-base.code',
994
+ configuration: {
995
+ language: 'javaScript',
996
+ jsCode: `// Aggregate data from all items
997
+ const stats = {
998
+ count: 0,
999
+ sum: 0,
1000
+ min: Infinity,
1001
+ max: -Infinity,
1002
+ values: [],
1003
+ categories: {},
1004
+ errors: []
1005
+ };
1006
+
1007
+ // Process each item
1008
+ for (const item of items) {
1009
+ try {
1010
+ const value = item.json.value || item.json.amount || 0;
1011
+ const category = item.json.category || 'uncategorized';
1012
+
1013
+ stats.count++;
1014
+ stats.sum += value;
1015
+ stats.min = Math.min(stats.min, value);
1016
+ stats.max = Math.max(stats.max, value);
1017
+ stats.values.push(value);
1018
+
1019
+ // Count by category
1020
+ stats.categories[category] = (stats.categories[category] || 0) + 1;
1021
+
1022
+ } catch (error) {
1023
+ stats.errors.push({
1024
+ item: item.json,
1025
+ error: error.message
1026
+ });
1027
+ }
1028
+ }
1029
+
1030
+ // Calculate additional statistics
1031
+ const average = stats.count > 0 ? stats.sum / stats.count : 0;
1032
+ const sorted = [...stats.values].sort((a, b) => a - b);
1033
+ const median = sorted.length > 0
1034
+ ? sorted[Math.floor(sorted.length / 2)]
1035
+ : 0;
1036
+
1037
+ return [{
1038
+ json: {
1039
+ totalItems: stats.count,
1040
+ sum: stats.sum,
1041
+ average: average,
1042
+ median: median,
1043
+ min: stats.min === Infinity ? 0 : stats.min,
1044
+ max: stats.max === -Infinity ? 0 : stats.max,
1045
+ categoryCounts: stats.categories,
1046
+ errorCount: stats.errors.length,
1047
+ errors: stats.errors,
1048
+ processedAt: DateTime.now().toISO()
1049
+ }
1050
+ }];`,
1051
+ onError: 'continueRegularOutput'
1052
+ },
1053
+ userMustProvide: [],
1054
+ notes: [
1055
+ 'Assumes items have "value" or "amount" field',
1056
+ 'Groups by "category" field if present',
1057
+ 'Returns single item with all statistics',
1058
+ 'Handles errors gracefully'
1059
+ ]
1060
+ },
1061
+ 'batch_process_with_api': {
1062
+ task: 'batch_process_with_api',
1063
+ description: 'Process items in batches with API calls',
1064
+ nodeType: 'nodes-base.code',
1065
+ configuration: {
1066
+ language: 'javaScript',
1067
+ jsCode: `// Batch process items with API calls
1068
+ const BATCH_SIZE = 10;
1069
+ const API_URL = 'https://api.example.com/batch-process'; // USER MUST UPDATE
1070
+ const results = [];
1071
+
1072
+ // Process items in batches
1073
+ for (let i = 0; i < items.length; i += BATCH_SIZE) {
1074
+ const batch = items.slice(i, i + BATCH_SIZE);
1075
+
1076
+ try {
1077
+ // Prepare batch data
1078
+ const batchData = batch.map(item => ({
1079
+ id: item.json.id,
1080
+ data: item.json
1081
+ }));
1082
+
1083
+ // Make API request for batch
1084
+ const response = await $helpers.httpRequest({
1085
+ method: 'POST',
1086
+ url: API_URL,
1087
+ body: {
1088
+ items: batchData
1089
+ },
1090
+ headers: {
1091
+ 'Content-Type': 'application/json'
1092
+ }
1093
+ });
1094
+
1095
+ // Add results
1096
+ if (response.results && Array.isArray(response.results)) {
1097
+ response.results.forEach((result, index) => {
1098
+ results.push({
1099
+ json: {
1100
+ ...batch[index].json,
1101
+ ...result,
1102
+ batchNumber: Math.floor(i / BATCH_SIZE) + 1,
1103
+ processedAt: DateTime.now().toISO()
1104
+ }
1105
+ });
1106
+ });
1107
+ }
1108
+
1109
+ // Add delay between batches to avoid rate limits
1110
+ if (i + BATCH_SIZE < items.length) {
1111
+ await new Promise(resolve => setTimeout(resolve, 1000));
1112
+ }
1113
+
1114
+ } catch (error) {
1115
+ // Add failed batch items with error
1116
+ batch.forEach(item => {
1117
+ results.push({
1118
+ json: {
1119
+ ...item.json,
1120
+ error: error.message,
1121
+ status: 'failed',
1122
+ batchNumber: Math.floor(i / BATCH_SIZE) + 1
1123
+ }
1124
+ });
1125
+ });
1126
+ }
1127
+ }
1128
+
1129
+ return results;`,
1130
+ onError: 'continueRegularOutput',
1131
+ retryOnFail: true,
1132
+ maxTries: 2
1133
+ },
1134
+ userMustProvide: [
1135
+ {
1136
+ property: 'jsCode',
1137
+ description: 'Update API_URL in the code',
1138
+ example: 'https://your-api.com/batch'
1139
+ }
1140
+ ],
1141
+ notes: [
1142
+ 'Processes items in batches of 10',
1143
+ 'Includes delay between batches',
1144
+ 'Handles batch failures gracefully',
1145
+ 'Update API_URL and adjust BATCH_SIZE as needed'
1146
+ ]
1147
+ },
1148
+ 'error_safe_transform': {
1149
+ task: 'error_safe_transform',
1150
+ description: 'Transform data with comprehensive error handling',
1151
+ nodeType: 'nodes-base.code',
1152
+ configuration: {
1153
+ language: 'javaScript',
1154
+ jsCode: `// Safe data transformation with validation
1155
+ const results = [];
1156
+ const errors = [];
1157
+
1158
+ for (const item of items) {
1159
+ try {
1160
+ // Validate required fields
1161
+ const required = ['id', 'name']; // USER SHOULD UPDATE
1162
+ const missing = required.filter(field => !item.json[field]);
1163
+
1164
+ if (missing.length > 0) {
1165
+ throw new Error(\`Missing required fields: \${missing.join(', ')}\`);
1166
+ }
1167
+
1168
+ // Transform data with type checking
1169
+ const transformed = {
1170
+ // Ensure ID is string
1171
+ id: String(item.json.id),
1172
+
1173
+ // Clean and validate name
1174
+ name: String(item.json.name).trim(),
1175
+
1176
+ // Parse numbers safely
1177
+ amount: parseFloat(item.json.amount) || 0,
1178
+
1179
+ // Parse dates safely
1180
+ date: item.json.date
1181
+ ? DateTime.fromISO(item.json.date).isValid
1182
+ ? DateTime.fromISO(item.json.date).toISO()
1183
+ : null
1184
+ : null,
1185
+
1186
+ // Boolean conversion
1187
+ isActive: Boolean(item.json.active || item.json.isActive),
1188
+
1189
+ // Array handling
1190
+ tags: Array.isArray(item.json.tags)
1191
+ ? item.json.tags.filter(tag => typeof tag === 'string')
1192
+ : [],
1193
+
1194
+ // Nested object handling
1195
+ metadata: typeof item.json.metadata === 'object'
1196
+ ? item.json.metadata
1197
+ : {},
1198
+
1199
+ // Add processing info
1200
+ processedAt: DateTime.now().toISO(),
1201
+ originalIndex: items.indexOf(item)
1202
+ };
1203
+
1204
+ results.push({
1205
+ json: transformed
1206
+ });
1207
+
1208
+ } catch (error) {
1209
+ errors.push({
1210
+ json: {
1211
+ error: error.message,
1212
+ originalData: item.json,
1213
+ index: items.indexOf(item),
1214
+ status: 'failed'
1215
+ }
1216
+ });
1217
+ }
1218
+ }
1219
+
1220
+ // Add summary at the end
1221
+ results.push({
1222
+ json: {
1223
+ _summary: {
1224
+ totalProcessed: results.length - errors.length,
1225
+ totalErrors: errors.length,
1226
+ successRate: ((results.length - errors.length) / items.length * 100).toFixed(2) + '%',
1227
+ timestamp: DateTime.now().toISO()
1228
+ }
1229
+ }
1230
+ });
1231
+
1232
+ // Include errors at the end
1233
+ return [...results, ...errors];`,
1234
+ onError: 'continueRegularOutput'
1235
+ },
1236
+ userMustProvide: [
1237
+ {
1238
+ property: 'jsCode',
1239
+ description: 'Update required fields array',
1240
+ example: "const required = ['id', 'email', 'name'];"
1241
+ }
1242
+ ],
1243
+ notes: [
1244
+ 'Validates all data types',
1245
+ 'Handles missing/invalid data gracefully',
1246
+ 'Returns both successful and failed items',
1247
+ 'Includes processing summary'
1248
+ ]
1249
+ },
1250
+ 'async_data_processing': {
1251
+ task: 'async_data_processing',
1252
+ description: 'Process data with async operations and proper error handling',
1253
+ nodeType: 'nodes-base.code',
1254
+ configuration: {
1255
+ language: 'javaScript',
1256
+ jsCode: `// Async processing with concurrent limits
1257
+ const CONCURRENT_LIMIT = 5;
1258
+ const results = [];
1259
+
1260
+ // Process items with concurrency control
1261
+ async function processItem(item, index) {
1262
+ try {
1263
+ // Simulate async operation (replace with actual logic)
1264
+ // Example: API call, database query, file operation
1265
+ await new Promise(resolve => setTimeout(resolve, 100));
1266
+
1267
+ // Actual processing logic here
1268
+ const processed = {
1269
+ ...item.json,
1270
+ processed: true,
1271
+ index: index,
1272
+ timestamp: DateTime.now().toISO()
1273
+ };
1274
+
1275
+ // Example async operation - external API call
1276
+ if (item.json.needsEnrichment) {
1277
+ const enrichment = await $helpers.httpRequest({
1278
+ method: 'GET',
1279
+ url: \`https://api.example.com/enrich/\${item.json.id}\`
1280
+ });
1281
+ processed.enrichment = enrichment;
1282
+ }
1283
+
1284
+ return { json: processed };
1285
+
1286
+ } catch (error) {
1287
+ return {
1288
+ json: {
1289
+ ...item.json,
1290
+ error: error.message,
1291
+ status: 'failed',
1292
+ index: index
1293
+ }
1294
+ };
1295
+ }
1296
+ }
1297
+
1298
+ // Process in batches with concurrency limit
1299
+ for (let i = 0; i < items.length; i += CONCURRENT_LIMIT) {
1300
+ const batch = items.slice(i, i + CONCURRENT_LIMIT);
1301
+ const batchPromises = batch.map((item, batchIndex) =>
1302
+ processItem(item, i + batchIndex)
1303
+ );
1304
+
1305
+ const batchResults = await Promise.all(batchPromises);
1306
+ results.push(...batchResults);
1307
+ }
1308
+
1309
+ return results;`,
1310
+ onError: 'continueRegularOutput',
1311
+ retryOnFail: true,
1312
+ maxTries: 2
1313
+ },
1314
+ userMustProvide: [],
1315
+ notes: [
1316
+ 'Processes 5 items concurrently',
1317
+ 'Prevents overwhelming external services',
1318
+ 'Each item processed independently',
1319
+ 'Errors don\'t affect other items'
1320
+ ]
1321
+ },
1322
+ 'python_data_analysis': {
1323
+ task: 'python_data_analysis',
1324
+ description: 'Analyze data using Python with statistics',
1325
+ nodeType: 'nodes-base.code',
1326
+ configuration: {
1327
+ language: 'python',
1328
+ pythonCode: `# Python data analysis - use underscore prefix for built-in variables
1329
+ import json
1330
+ from datetime import datetime
1331
+ import statistics
1332
+
1333
+ # Collect data for analysis
1334
+ values = []
1335
+ categories = {}
1336
+ dates = []
1337
+
1338
+ # Use _input.all() to get items in Python
1339
+ for item in _input.all():
1340
+ # Convert JsProxy to Python dict for safe access
1341
+ item_data = item.json.to_py()
1342
+
1343
+ # Extract numeric values
1344
+ if 'value' in item_data or 'amount' in item_data:
1345
+ value = item_data.get('value', item_data.get('amount', 0))
1346
+ if isinstance(value, (int, float)):
1347
+ values.append(value)
1348
+
1349
+ # Count categories
1350
+ category = item_data.get('category', 'uncategorized')
1351
+ categories[category] = categories.get(category, 0) + 1
1352
+
1353
+ # Collect dates
1354
+ if 'date' in item_data:
1355
+ dates.append(item_data['date'])
1356
+
1357
+ # Calculate statistics
1358
+ result = {
1359
+ 'itemCount': len(_input.all()),
1360
+ 'values': {
1361
+ 'count': len(values),
1362
+ 'sum': sum(values) if values else 0,
1363
+ 'mean': statistics.mean(values) if values else 0,
1364
+ 'median': statistics.median(values) if values else 0,
1365
+ 'min': min(values) if values else 0,
1366
+ 'max': max(values) if values else 0,
1367
+ 'stdev': statistics.stdev(values) if len(values) > 1 else 0
1368
+ },
1369
+ 'categories': categories,
1370
+ 'dateRange': {
1371
+ 'earliest': min(dates) if dates else None,
1372
+ 'latest': max(dates) if dates else None,
1373
+ 'count': len(dates)
1374
+ },
1375
+ 'analysis': {
1376
+ 'hasNumericData': len(values) > 0,
1377
+ 'hasCategoricalData': len(categories) > 0,
1378
+ 'hasTemporalData': len(dates) > 0,
1379
+ 'dataQuality': 'good' if len(values) > len(items) * 0.8 else 'partial'
1380
+ },
1381
+ 'processedAt': datetime.now().isoformat()
1382
+ }
1383
+
1384
+ # Return single summary item
1385
+ return [{'json': result}]`,
1386
+ onError: 'continueRegularOutput'
1387
+ },
1388
+ userMustProvide: [],
1389
+ notes: [
1390
+ 'Uses Python statistics module',
1391
+ 'Analyzes numeric, categorical, and date data',
1392
+ 'Returns comprehensive summary',
1393
+ 'Handles missing data gracefully'
1394
+ ]
1395
+ }
1396
+ };
1397
+ //# sourceMappingURL=task-templates.js.map