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,830 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowDiffEngine = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const logger_1 = require("../utils/logger");
6
+ const node_sanitizer_1 = require("./node-sanitizer");
7
+ const node_type_utils_1 = require("../utils/node-type-utils");
8
+ const logger = new logger_1.Logger({ prefix: '[WorkflowDiffEngine]' });
9
+ class WorkflowDiffEngine {
10
+ constructor() {
11
+ this.renameMap = new Map();
12
+ this.warnings = [];
13
+ }
14
+ async applyDiff(workflow, request) {
15
+ try {
16
+ this.renameMap.clear();
17
+ this.warnings = [];
18
+ const workflowCopy = JSON.parse(JSON.stringify(workflow));
19
+ const nodeOperationTypes = ['addNode', 'removeNode', 'updateNode', 'moveNode', 'enableNode', 'disableNode'];
20
+ const nodeOperations = [];
21
+ const otherOperations = [];
22
+ request.operations.forEach((operation, index) => {
23
+ if (nodeOperationTypes.includes(operation.type)) {
24
+ nodeOperations.push({ operation, index });
25
+ }
26
+ else {
27
+ otherOperations.push({ operation, index });
28
+ }
29
+ });
30
+ const allOperations = [...nodeOperations, ...otherOperations];
31
+ const errors = [];
32
+ const appliedIndices = [];
33
+ const failedIndices = [];
34
+ if (request.continueOnError) {
35
+ for (const { operation, index } of allOperations) {
36
+ const error = this.validateOperation(workflowCopy, operation);
37
+ if (error) {
38
+ errors.push({
39
+ operation: index,
40
+ message: error,
41
+ details: operation
42
+ });
43
+ failedIndices.push(index);
44
+ continue;
45
+ }
46
+ try {
47
+ this.applyOperation(workflowCopy, operation);
48
+ appliedIndices.push(index);
49
+ }
50
+ catch (error) {
51
+ const errorMsg = `Failed to apply operation: ${error instanceof Error ? error.message : 'Unknown error'}`;
52
+ errors.push({
53
+ operation: index,
54
+ message: errorMsg,
55
+ details: operation
56
+ });
57
+ failedIndices.push(index);
58
+ }
59
+ }
60
+ if (this.renameMap.size > 0 && appliedIndices.length > 0) {
61
+ this.updateConnectionReferences(workflowCopy);
62
+ logger.debug(`Auto-updated ${this.renameMap.size} node name references in connections (continueOnError mode)`);
63
+ }
64
+ if (request.validateOnly) {
65
+ return {
66
+ success: errors.length === 0,
67
+ message: errors.length === 0
68
+ ? 'Validation successful. All operations are valid.'
69
+ : `Validation completed with ${errors.length} errors.`,
70
+ errors: errors.length > 0 ? errors : undefined,
71
+ warnings: this.warnings.length > 0 ? this.warnings : undefined,
72
+ applied: appliedIndices,
73
+ failed: failedIndices
74
+ };
75
+ }
76
+ const success = appliedIndices.length > 0;
77
+ return {
78
+ success,
79
+ workflow: workflowCopy,
80
+ operationsApplied: appliedIndices.length,
81
+ message: `Applied ${appliedIndices.length} operations, ${failedIndices.length} failed (continueOnError mode)`,
82
+ errors: errors.length > 0 ? errors : undefined,
83
+ warnings: this.warnings.length > 0 ? this.warnings : undefined,
84
+ applied: appliedIndices,
85
+ failed: failedIndices
86
+ };
87
+ }
88
+ else {
89
+ for (const { operation, index } of nodeOperations) {
90
+ const error = this.validateOperation(workflowCopy, operation);
91
+ if (error) {
92
+ return {
93
+ success: false,
94
+ errors: [{
95
+ operation: index,
96
+ message: error,
97
+ details: operation
98
+ }]
99
+ };
100
+ }
101
+ try {
102
+ this.applyOperation(workflowCopy, operation);
103
+ }
104
+ catch (error) {
105
+ return {
106
+ success: false,
107
+ errors: [{
108
+ operation: index,
109
+ message: `Failed to apply operation: ${error instanceof Error ? error.message : 'Unknown error'}`,
110
+ details: operation
111
+ }]
112
+ };
113
+ }
114
+ }
115
+ if (this.renameMap.size > 0) {
116
+ this.updateConnectionReferences(workflowCopy);
117
+ logger.debug(`Auto-updated ${this.renameMap.size} node name references in connections`);
118
+ }
119
+ for (const { operation, index } of otherOperations) {
120
+ const error = this.validateOperation(workflowCopy, operation);
121
+ if (error) {
122
+ return {
123
+ success: false,
124
+ errors: [{
125
+ operation: index,
126
+ message: error,
127
+ details: operation
128
+ }]
129
+ };
130
+ }
131
+ try {
132
+ this.applyOperation(workflowCopy, operation);
133
+ }
134
+ catch (error) {
135
+ return {
136
+ success: false,
137
+ errors: [{
138
+ operation: index,
139
+ message: `Failed to apply operation: ${error instanceof Error ? error.message : 'Unknown error'}`,
140
+ details: operation
141
+ }]
142
+ };
143
+ }
144
+ }
145
+ workflowCopy.nodes = workflowCopy.nodes.map((node) => (0, node_sanitizer_1.sanitizeNode)(node));
146
+ logger.debug('Applied full-workflow sanitization to all nodes');
147
+ if (request.validateOnly) {
148
+ return {
149
+ success: true,
150
+ message: 'Validation successful. Operations are valid but not applied.'
151
+ };
152
+ }
153
+ const operationsApplied = request.operations.length;
154
+ const shouldActivate = workflowCopy._shouldActivate === true;
155
+ const shouldDeactivate = workflowCopy._shouldDeactivate === true;
156
+ delete workflowCopy._shouldActivate;
157
+ delete workflowCopy._shouldDeactivate;
158
+ return {
159
+ success: true,
160
+ workflow: workflowCopy,
161
+ operationsApplied,
162
+ message: `Successfully applied ${operationsApplied} operations (${nodeOperations.length} node ops, ${otherOperations.length} other ops)`,
163
+ warnings: this.warnings.length > 0 ? this.warnings : undefined,
164
+ shouldActivate: shouldActivate || undefined,
165
+ shouldDeactivate: shouldDeactivate || undefined
166
+ };
167
+ }
168
+ }
169
+ catch (error) {
170
+ logger.error('Failed to apply diff', error);
171
+ return {
172
+ success: false,
173
+ errors: [{
174
+ operation: -1,
175
+ message: `Diff engine error: ${error instanceof Error ? error.message : 'Unknown error'}`
176
+ }]
177
+ };
178
+ }
179
+ }
180
+ validateOperation(workflow, operation) {
181
+ switch (operation.type) {
182
+ case 'addNode':
183
+ return this.validateAddNode(workflow, operation);
184
+ case 'removeNode':
185
+ return this.validateRemoveNode(workflow, operation);
186
+ case 'updateNode':
187
+ return this.validateUpdateNode(workflow, operation);
188
+ case 'moveNode':
189
+ return this.validateMoveNode(workflow, operation);
190
+ case 'enableNode':
191
+ case 'disableNode':
192
+ return this.validateToggleNode(workflow, operation);
193
+ case 'addConnection':
194
+ return this.validateAddConnection(workflow, operation);
195
+ case 'removeConnection':
196
+ return this.validateRemoveConnection(workflow, operation);
197
+ case 'rewireConnection':
198
+ return this.validateRewireConnection(workflow, operation);
199
+ case 'updateSettings':
200
+ case 'updateName':
201
+ case 'addTag':
202
+ case 'removeTag':
203
+ return null;
204
+ case 'activateWorkflow':
205
+ return this.validateActivateWorkflow(workflow, operation);
206
+ case 'deactivateWorkflow':
207
+ return this.validateDeactivateWorkflow(workflow, operation);
208
+ case 'cleanStaleConnections':
209
+ return this.validateCleanStaleConnections(workflow, operation);
210
+ case 'replaceConnections':
211
+ return this.validateReplaceConnections(workflow, operation);
212
+ default:
213
+ return `Unknown operation type: ${operation.type}`;
214
+ }
215
+ }
216
+ applyOperation(workflow, operation) {
217
+ switch (operation.type) {
218
+ case 'addNode':
219
+ this.applyAddNode(workflow, operation);
220
+ break;
221
+ case 'removeNode':
222
+ this.applyRemoveNode(workflow, operation);
223
+ break;
224
+ case 'updateNode':
225
+ this.applyUpdateNode(workflow, operation);
226
+ break;
227
+ case 'moveNode':
228
+ this.applyMoveNode(workflow, operation);
229
+ break;
230
+ case 'enableNode':
231
+ this.applyEnableNode(workflow, operation);
232
+ break;
233
+ case 'disableNode':
234
+ this.applyDisableNode(workflow, operation);
235
+ break;
236
+ case 'addConnection':
237
+ this.applyAddConnection(workflow, operation);
238
+ break;
239
+ case 'removeConnection':
240
+ this.applyRemoveConnection(workflow, operation);
241
+ break;
242
+ case 'rewireConnection':
243
+ this.applyRewireConnection(workflow, operation);
244
+ break;
245
+ case 'updateSettings':
246
+ this.applyUpdateSettings(workflow, operation);
247
+ break;
248
+ case 'updateName':
249
+ this.applyUpdateName(workflow, operation);
250
+ break;
251
+ case 'addTag':
252
+ this.applyAddTag(workflow, operation);
253
+ break;
254
+ case 'removeTag':
255
+ this.applyRemoveTag(workflow, operation);
256
+ break;
257
+ case 'activateWorkflow':
258
+ this.applyActivateWorkflow(workflow, operation);
259
+ break;
260
+ case 'deactivateWorkflow':
261
+ this.applyDeactivateWorkflow(workflow, operation);
262
+ break;
263
+ case 'cleanStaleConnections':
264
+ this.applyCleanStaleConnections(workflow, operation);
265
+ break;
266
+ case 'replaceConnections':
267
+ this.applyReplaceConnections(workflow, operation);
268
+ break;
269
+ }
270
+ }
271
+ validateAddNode(workflow, operation) {
272
+ const { node } = operation;
273
+ const normalizedNewName = this.normalizeNodeName(node.name);
274
+ const duplicate = workflow.nodes.find(n => this.normalizeNodeName(n.name) === normalizedNewName);
275
+ if (duplicate) {
276
+ return `Node with name "${node.name}" already exists (normalized name matches existing node "${duplicate.name}")`;
277
+ }
278
+ if (!node.type.includes('.')) {
279
+ return `Invalid node type "${node.type}". Must include package prefix (e.g., "n8n-nodes-base.webhook")`;
280
+ }
281
+ if (node.type.startsWith('nodes-base.')) {
282
+ return `Invalid node type "${node.type}". Use "n8n-nodes-base.${node.type.substring(11)}" instead`;
283
+ }
284
+ return null;
285
+ }
286
+ validateRemoveNode(workflow, operation) {
287
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
288
+ if (!node) {
289
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', 'removeNode');
290
+ }
291
+ const hasConnections = Object.values(workflow.connections).some(conn => {
292
+ return Object.values(conn).some(outputs => outputs.some(connections => connections.some(c => c.node === node.name)));
293
+ });
294
+ if (hasConnections || workflow.connections[node.name]) {
295
+ logger.warn(`Removing node "${node.name}" will break existing connections`);
296
+ }
297
+ return null;
298
+ }
299
+ validateUpdateNode(workflow, operation) {
300
+ const operationAny = operation;
301
+ if (operationAny.changes && !operation.updates) {
302
+ return `Invalid parameter 'changes'. The updateNode operation requires 'updates' (not 'changes'). Example: {type: "updateNode", nodeId: "abc", updates: {name: "New Name", "parameters.url": "https://example.com"}}`;
303
+ }
304
+ if (!operation.updates) {
305
+ return `Missing required parameter 'updates'. The updateNode operation requires an 'updates' object containing properties to modify. Example: {type: "updateNode", nodeId: "abc", updates: {name: "New Name"}}`;
306
+ }
307
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
308
+ if (!node) {
309
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', 'updateNode');
310
+ }
311
+ if (operation.updates.name && operation.updates.name !== node.name) {
312
+ const normalizedNewName = this.normalizeNodeName(operation.updates.name);
313
+ const normalizedCurrentName = this.normalizeNodeName(node.name);
314
+ if (normalizedNewName !== normalizedCurrentName) {
315
+ const collision = workflow.nodes.find(n => n.id !== node.id && this.normalizeNodeName(n.name) === normalizedNewName);
316
+ if (collision) {
317
+ return `Cannot rename node "${node.name}" to "${operation.updates.name}": A node with that name already exists (id: ${collision.id.substring(0, 8)}...). Please choose a different name.`;
318
+ }
319
+ }
320
+ }
321
+ return null;
322
+ }
323
+ validateMoveNode(workflow, operation) {
324
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
325
+ if (!node) {
326
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', 'moveNode');
327
+ }
328
+ return null;
329
+ }
330
+ validateToggleNode(workflow, operation) {
331
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
332
+ if (!node) {
333
+ const operationType = operation.type === 'enableNode' ? 'enableNode' : 'disableNode';
334
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', operationType);
335
+ }
336
+ return null;
337
+ }
338
+ validateAddConnection(workflow, operation) {
339
+ const operationAny = operation;
340
+ if (operationAny.sourceNodeId || operationAny.targetNodeId) {
341
+ const wrongParams = [];
342
+ if (operationAny.sourceNodeId)
343
+ wrongParams.push('sourceNodeId');
344
+ if (operationAny.targetNodeId)
345
+ wrongParams.push('targetNodeId');
346
+ return `Invalid parameter(s): ${wrongParams.join(', ')}. Use 'source' and 'target' instead. Example: {type: "addConnection", source: "Node Name", target: "Target Name"}`;
347
+ }
348
+ if (!operation.source) {
349
+ return `Missing required parameter 'source'. The addConnection operation requires both 'source' and 'target' parameters. Check that you're using 'source' (not 'sourceNodeId').`;
350
+ }
351
+ if (!operation.target) {
352
+ return `Missing required parameter 'target'. The addConnection operation requires both 'source' and 'target' parameters. Check that you're using 'target' (not 'targetNodeId').`;
353
+ }
354
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
355
+ const targetNode = this.findNode(workflow, operation.target, operation.target);
356
+ if (!sourceNode) {
357
+ const availableNodes = workflow.nodes
358
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
359
+ .join(', ');
360
+ return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters (apostrophes, quotes).`;
361
+ }
362
+ if (!targetNode) {
363
+ const availableNodes = workflow.nodes
364
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
365
+ .join(', ');
366
+ return `Target node not found: "${operation.target}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters (apostrophes, quotes).`;
367
+ }
368
+ const sourceOutput = operation.sourceOutput || 'main';
369
+ const existing = workflow.connections[sourceNode.name]?.[sourceOutput];
370
+ if (existing) {
371
+ const hasConnection = existing.some(connections => connections.some(c => c.node === targetNode.name));
372
+ if (hasConnection) {
373
+ return `Connection already exists from "${sourceNode.name}" to "${targetNode.name}"`;
374
+ }
375
+ }
376
+ return null;
377
+ }
378
+ validateRemoveConnection(workflow, operation) {
379
+ if (operation.ignoreErrors) {
380
+ return null;
381
+ }
382
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
383
+ const targetNode = this.findNode(workflow, operation.target, operation.target);
384
+ if (!sourceNode) {
385
+ const availableNodes = workflow.nodes
386
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
387
+ .join(', ');
388
+ return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
389
+ }
390
+ if (!targetNode) {
391
+ const availableNodes = workflow.nodes
392
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
393
+ .join(', ');
394
+ return `Target node not found: "${operation.target}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
395
+ }
396
+ const sourceOutput = operation.sourceOutput || 'main';
397
+ const connections = workflow.connections[sourceNode.name]?.[sourceOutput];
398
+ if (!connections) {
399
+ return `No connections found from "${sourceNode.name}"`;
400
+ }
401
+ const hasConnection = connections.some(conns => conns.some(c => c.node === targetNode.name));
402
+ if (!hasConnection) {
403
+ return `No connection exists from "${sourceNode.name}" to "${targetNode.name}"`;
404
+ }
405
+ return null;
406
+ }
407
+ validateRewireConnection(workflow, operation) {
408
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
409
+ if (!sourceNode) {
410
+ const availableNodes = workflow.nodes
411
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
412
+ .join(', ');
413
+ return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
414
+ }
415
+ const fromNode = this.findNode(workflow, operation.from, operation.from);
416
+ if (!fromNode) {
417
+ const availableNodes = workflow.nodes
418
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
419
+ .join(', ');
420
+ return `"From" node not found: "${operation.from}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
421
+ }
422
+ const toNode = this.findNode(workflow, operation.to, operation.to);
423
+ if (!toNode) {
424
+ const availableNodes = workflow.nodes
425
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
426
+ .join(', ');
427
+ return `"To" node not found: "${operation.to}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
428
+ }
429
+ const { sourceOutput, sourceIndex } = this.resolveSmartParameters(workflow, operation);
430
+ const connections = workflow.connections[sourceNode.name]?.[sourceOutput];
431
+ if (!connections) {
432
+ return `No connections found from "${sourceNode.name}" on output "${sourceOutput}"`;
433
+ }
434
+ if (!connections[sourceIndex]) {
435
+ return `No connections found from "${sourceNode.name}" on output "${sourceOutput}" at index ${sourceIndex}`;
436
+ }
437
+ const hasConnection = connections[sourceIndex].some(c => c.node === fromNode.name);
438
+ if (!hasConnection) {
439
+ return `No connection exists from "${sourceNode.name}" to "${fromNode.name}" on output "${sourceOutput}" at index ${sourceIndex}"`;
440
+ }
441
+ return null;
442
+ }
443
+ applyAddNode(workflow, operation) {
444
+ const newNode = {
445
+ id: operation.node.id || (0, uuid_1.v4)(),
446
+ name: operation.node.name,
447
+ type: operation.node.type,
448
+ typeVersion: operation.node.typeVersion || 1,
449
+ position: operation.node.position,
450
+ parameters: operation.node.parameters || {},
451
+ credentials: operation.node.credentials,
452
+ disabled: operation.node.disabled,
453
+ notes: operation.node.notes,
454
+ notesInFlow: operation.node.notesInFlow,
455
+ continueOnFail: operation.node.continueOnFail,
456
+ onError: operation.node.onError,
457
+ retryOnFail: operation.node.retryOnFail,
458
+ maxTries: operation.node.maxTries,
459
+ waitBetweenTries: operation.node.waitBetweenTries,
460
+ alwaysOutputData: operation.node.alwaysOutputData,
461
+ executeOnce: operation.node.executeOnce
462
+ };
463
+ const sanitizedNode = (0, node_sanitizer_1.sanitizeNode)(newNode);
464
+ workflow.nodes.push(sanitizedNode);
465
+ }
466
+ applyRemoveNode(workflow, operation) {
467
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
468
+ if (!node)
469
+ return;
470
+ const index = workflow.nodes.findIndex(n => n.id === node.id);
471
+ if (index !== -1) {
472
+ workflow.nodes.splice(index, 1);
473
+ }
474
+ delete workflow.connections[node.name];
475
+ Object.keys(workflow.connections).forEach(sourceName => {
476
+ const sourceConnections = workflow.connections[sourceName];
477
+ Object.keys(sourceConnections).forEach(outputName => {
478
+ sourceConnections[outputName] = sourceConnections[outputName].map(connections => connections.filter(conn => conn.node !== node.name)).filter(connections => connections.length > 0);
479
+ if (sourceConnections[outputName].length === 0) {
480
+ delete sourceConnections[outputName];
481
+ }
482
+ });
483
+ if (Object.keys(sourceConnections).length === 0) {
484
+ delete workflow.connections[sourceName];
485
+ }
486
+ });
487
+ }
488
+ applyUpdateNode(workflow, operation) {
489
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
490
+ if (!node)
491
+ return;
492
+ if (operation.updates.name && operation.updates.name !== node.name) {
493
+ const oldName = node.name;
494
+ const newName = operation.updates.name;
495
+ this.renameMap.set(oldName, newName);
496
+ logger.debug(`Tracking rename: "${oldName}" → "${newName}"`);
497
+ }
498
+ Object.entries(operation.updates).forEach(([path, value]) => {
499
+ this.setNestedProperty(node, path, value);
500
+ });
501
+ const sanitized = (0, node_sanitizer_1.sanitizeNode)(node);
502
+ Object.assign(node, sanitized);
503
+ }
504
+ applyMoveNode(workflow, operation) {
505
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
506
+ if (!node)
507
+ return;
508
+ node.position = operation.position;
509
+ }
510
+ applyEnableNode(workflow, operation) {
511
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
512
+ if (!node)
513
+ return;
514
+ node.disabled = false;
515
+ }
516
+ applyDisableNode(workflow, operation) {
517
+ const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
518
+ if (!node)
519
+ return;
520
+ node.disabled = true;
521
+ }
522
+ resolveSmartParameters(workflow, operation) {
523
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
524
+ let sourceOutput = operation.sourceOutput ?? 'main';
525
+ let sourceIndex = operation.sourceIndex ?? 0;
526
+ if (operation.branch !== undefined && operation.sourceIndex === undefined) {
527
+ if (sourceNode?.type === 'n8n-nodes-base.if') {
528
+ sourceIndex = operation.branch === 'true' ? 0 : 1;
529
+ }
530
+ }
531
+ if (operation.case !== undefined && operation.sourceIndex === undefined) {
532
+ sourceIndex = operation.case;
533
+ }
534
+ if (sourceNode && operation.sourceIndex !== undefined && operation.branch === undefined && operation.case === undefined) {
535
+ if (sourceNode.type === 'n8n-nodes-base.if') {
536
+ this.warnings.push({
537
+ operation: -1,
538
+ message: `Connection to If node "${operation.source}" uses sourceIndex=${operation.sourceIndex}. ` +
539
+ `Consider using branch="true" or branch="false" for better clarity. ` +
540
+ `If node outputs: main[0]=TRUE branch, main[1]=FALSE branch.`
541
+ });
542
+ }
543
+ else if (sourceNode.type === 'n8n-nodes-base.switch') {
544
+ this.warnings.push({
545
+ operation: -1,
546
+ message: `Connection to Switch node "${operation.source}" uses sourceIndex=${operation.sourceIndex}. ` +
547
+ `Consider using case=N for better clarity (case=0 for first output, case=1 for second, etc.).`
548
+ });
549
+ }
550
+ }
551
+ return { sourceOutput, sourceIndex };
552
+ }
553
+ applyAddConnection(workflow, operation) {
554
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
555
+ const targetNode = this.findNode(workflow, operation.target, operation.target);
556
+ if (!sourceNode || !targetNode)
557
+ return;
558
+ const { sourceOutput, sourceIndex } = this.resolveSmartParameters(workflow, operation);
559
+ const targetInput = operation.targetInput ?? sourceOutput;
560
+ const targetIndex = operation.targetIndex ?? 0;
561
+ if (!workflow.connections[sourceNode.name]) {
562
+ workflow.connections[sourceNode.name] = {};
563
+ }
564
+ if (!workflow.connections[sourceNode.name][sourceOutput]) {
565
+ workflow.connections[sourceNode.name][sourceOutput] = [];
566
+ }
567
+ const outputArray = workflow.connections[sourceNode.name][sourceOutput];
568
+ while (outputArray.length <= sourceIndex) {
569
+ outputArray.push([]);
570
+ }
571
+ if (!Array.isArray(outputArray[sourceIndex])) {
572
+ outputArray[sourceIndex] = [];
573
+ }
574
+ outputArray[sourceIndex].push({
575
+ node: targetNode.name,
576
+ type: targetInput,
577
+ index: targetIndex
578
+ });
579
+ }
580
+ applyRemoveConnection(workflow, operation) {
581
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
582
+ const targetNode = this.findNode(workflow, operation.target, operation.target);
583
+ if (!sourceNode || !targetNode) {
584
+ if (operation.ignoreErrors) {
585
+ return;
586
+ }
587
+ return;
588
+ }
589
+ const sourceOutput = operation.sourceOutput || 'main';
590
+ const connections = workflow.connections[sourceNode.name]?.[sourceOutput];
591
+ if (!connections)
592
+ return;
593
+ workflow.connections[sourceNode.name][sourceOutput] = connections.map(conns => conns.filter(conn => conn.node !== targetNode.name));
594
+ const outputConnections = workflow.connections[sourceNode.name][sourceOutput];
595
+ while (outputConnections.length > 0 && outputConnections[outputConnections.length - 1].length === 0) {
596
+ outputConnections.pop();
597
+ }
598
+ if (outputConnections.length === 0) {
599
+ delete workflow.connections[sourceNode.name][sourceOutput];
600
+ }
601
+ if (Object.keys(workflow.connections[sourceNode.name]).length === 0) {
602
+ delete workflow.connections[sourceNode.name];
603
+ }
604
+ }
605
+ applyRewireConnection(workflow, operation) {
606
+ const { sourceOutput, sourceIndex } = this.resolveSmartParameters(workflow, operation);
607
+ this.applyRemoveConnection(workflow, {
608
+ type: 'removeConnection',
609
+ source: operation.source,
610
+ target: operation.from,
611
+ sourceOutput: sourceOutput,
612
+ targetInput: operation.targetInput
613
+ });
614
+ this.applyAddConnection(workflow, {
615
+ type: 'addConnection',
616
+ source: operation.source,
617
+ target: operation.to,
618
+ sourceOutput: sourceOutput,
619
+ targetInput: operation.targetInput,
620
+ sourceIndex: sourceIndex,
621
+ targetIndex: 0
622
+ });
623
+ }
624
+ applyUpdateSettings(workflow, operation) {
625
+ if (operation.settings && Object.keys(operation.settings).length > 0) {
626
+ if (!workflow.settings) {
627
+ workflow.settings = {};
628
+ }
629
+ Object.assign(workflow.settings, operation.settings);
630
+ }
631
+ }
632
+ applyUpdateName(workflow, operation) {
633
+ workflow.name = operation.name;
634
+ }
635
+ applyAddTag(workflow, operation) {
636
+ if (!workflow.tags) {
637
+ workflow.tags = [];
638
+ }
639
+ if (!workflow.tags.includes(operation.tag)) {
640
+ workflow.tags.push(operation.tag);
641
+ }
642
+ }
643
+ applyRemoveTag(workflow, operation) {
644
+ if (!workflow.tags)
645
+ return;
646
+ const index = workflow.tags.indexOf(operation.tag);
647
+ if (index !== -1) {
648
+ workflow.tags.splice(index, 1);
649
+ }
650
+ }
651
+ validateActivateWorkflow(workflow, operation) {
652
+ const activatableTriggers = workflow.nodes.filter(node => !node.disabled && (0, node_type_utils_1.isActivatableTrigger)(node.type));
653
+ if (activatableTriggers.length === 0) {
654
+ return 'Cannot activate workflow: No activatable trigger nodes found. Workflows must have at least one enabled trigger node (webhook, schedule, executeWorkflowTrigger, etc.).';
655
+ }
656
+ return null;
657
+ }
658
+ validateDeactivateWorkflow(workflow, operation) {
659
+ return null;
660
+ }
661
+ applyActivateWorkflow(workflow, operation) {
662
+ workflow._shouldActivate = true;
663
+ }
664
+ applyDeactivateWorkflow(workflow, operation) {
665
+ workflow._shouldDeactivate = true;
666
+ }
667
+ validateCleanStaleConnections(workflow, operation) {
668
+ return null;
669
+ }
670
+ validateReplaceConnections(workflow, operation) {
671
+ const nodeNames = new Set(workflow.nodes.map(n => n.name));
672
+ for (const [sourceName, outputs] of Object.entries(operation.connections)) {
673
+ if (!nodeNames.has(sourceName)) {
674
+ return `Source node not found in connections: ${sourceName}`;
675
+ }
676
+ for (const outputName of Object.keys(outputs)) {
677
+ const connections = outputs[outputName];
678
+ for (const conns of connections) {
679
+ for (const conn of conns) {
680
+ if (!nodeNames.has(conn.node)) {
681
+ return `Target node not found in connections: ${conn.node}`;
682
+ }
683
+ }
684
+ }
685
+ }
686
+ }
687
+ return null;
688
+ }
689
+ applyCleanStaleConnections(workflow, operation) {
690
+ const nodeNames = new Set(workflow.nodes.map(n => n.name));
691
+ const staleConnections = [];
692
+ if (operation.dryRun) {
693
+ for (const [sourceName, outputs] of Object.entries(workflow.connections)) {
694
+ if (!nodeNames.has(sourceName)) {
695
+ for (const [outputName, connections] of Object.entries(outputs)) {
696
+ for (const conns of connections) {
697
+ for (const conn of conns) {
698
+ staleConnections.push({ from: sourceName, to: conn.node });
699
+ }
700
+ }
701
+ }
702
+ }
703
+ else {
704
+ for (const [outputName, connections] of Object.entries(outputs)) {
705
+ for (const conns of connections) {
706
+ for (const conn of conns) {
707
+ if (!nodeNames.has(conn.node)) {
708
+ staleConnections.push({ from: sourceName, to: conn.node });
709
+ }
710
+ }
711
+ }
712
+ }
713
+ }
714
+ }
715
+ logger.info(`[DryRun] Would remove ${staleConnections.length} stale connections:`, staleConnections);
716
+ return;
717
+ }
718
+ for (const [sourceName, outputs] of Object.entries(workflow.connections)) {
719
+ if (!nodeNames.has(sourceName)) {
720
+ for (const [outputName, connections] of Object.entries(outputs)) {
721
+ for (const conns of connections) {
722
+ for (const conn of conns) {
723
+ staleConnections.push({ from: sourceName, to: conn.node });
724
+ }
725
+ }
726
+ }
727
+ delete workflow.connections[sourceName];
728
+ continue;
729
+ }
730
+ for (const [outputName, connections] of Object.entries(outputs)) {
731
+ const filteredConnections = connections.map(conns => conns.filter(conn => {
732
+ if (!nodeNames.has(conn.node)) {
733
+ staleConnections.push({ from: sourceName, to: conn.node });
734
+ return false;
735
+ }
736
+ return true;
737
+ })).filter(conns => conns.length > 0);
738
+ if (filteredConnections.length === 0) {
739
+ delete outputs[outputName];
740
+ }
741
+ else {
742
+ outputs[outputName] = filteredConnections;
743
+ }
744
+ }
745
+ if (Object.keys(outputs).length === 0) {
746
+ delete workflow.connections[sourceName];
747
+ }
748
+ }
749
+ logger.info(`Removed ${staleConnections.length} stale connections`);
750
+ }
751
+ applyReplaceConnections(workflow, operation) {
752
+ workflow.connections = operation.connections;
753
+ }
754
+ updateConnectionReferences(workflow) {
755
+ if (this.renameMap.size === 0)
756
+ return;
757
+ logger.debug(`Updating connection references for ${this.renameMap.size} renamed nodes`);
758
+ const renames = new Map(this.renameMap);
759
+ const updatedConnections = {};
760
+ for (const [sourceName, outputs] of Object.entries(workflow.connections)) {
761
+ const newSourceName = renames.get(sourceName) || sourceName;
762
+ updatedConnections[newSourceName] = outputs;
763
+ }
764
+ for (const [sourceName, outputs] of Object.entries(updatedConnections)) {
765
+ for (const [outputType, connections] of Object.entries(outputs)) {
766
+ for (let outputIndex = 0; outputIndex < connections.length; outputIndex++) {
767
+ const connectionsAtIndex = connections[outputIndex];
768
+ for (let connIndex = 0; connIndex < connectionsAtIndex.length; connIndex++) {
769
+ const connection = connectionsAtIndex[connIndex];
770
+ if (renames.has(connection.node)) {
771
+ const newTargetName = renames.get(connection.node);
772
+ connection.node = newTargetName;
773
+ logger.debug(`Updated connection: ${sourceName}[${outputType}][${outputIndex}][${connIndex}].node: "${connection.node}" → "${newTargetName}"`);
774
+ }
775
+ }
776
+ }
777
+ }
778
+ }
779
+ workflow.connections = updatedConnections;
780
+ logger.info(`Auto-updated ${this.renameMap.size} node name references in connections`);
781
+ }
782
+ normalizeNodeName(name) {
783
+ return name
784
+ .trim()
785
+ .replace(/\\\\/g, '\\')
786
+ .replace(/\\'/g, "'")
787
+ .replace(/\\"/g, '"')
788
+ .replace(/\s+/g, ' ');
789
+ }
790
+ findNode(workflow, nodeId, nodeName) {
791
+ if (nodeId) {
792
+ const nodeById = workflow.nodes.find(n => n.id === nodeId);
793
+ if (nodeById)
794
+ return nodeById;
795
+ }
796
+ if (nodeName) {
797
+ const normalizedSearch = this.normalizeNodeName(nodeName);
798
+ const nodeByName = workflow.nodes.find(n => this.normalizeNodeName(n.name) === normalizedSearch);
799
+ if (nodeByName)
800
+ return nodeByName;
801
+ }
802
+ if (nodeId && !nodeName) {
803
+ const normalizedSearch = this.normalizeNodeName(nodeId);
804
+ const nodeByName = workflow.nodes.find(n => this.normalizeNodeName(n.name) === normalizedSearch);
805
+ if (nodeByName)
806
+ return nodeByName;
807
+ }
808
+ return null;
809
+ }
810
+ formatNodeNotFoundError(workflow, nodeIdentifier, operationType) {
811
+ const availableNodes = workflow.nodes
812
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
813
+ .join(', ');
814
+ return `Node not found for ${operationType}: "${nodeIdentifier}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters (apostrophes, quotes).`;
815
+ }
816
+ setNestedProperty(obj, path, value) {
817
+ const keys = path.split('.');
818
+ let current = obj;
819
+ for (let i = 0; i < keys.length - 1; i++) {
820
+ const key = keys[i];
821
+ if (!(key in current) || typeof current[key] !== 'object') {
822
+ current[key] = {};
823
+ }
824
+ current = current[key];
825
+ }
826
+ current[keys[keys.length - 1]] = value;
827
+ }
828
+ }
829
+ exports.WorkflowDiffEngine = WorkflowDiffEngine;
830
+ //# sourceMappingURL=workflow-diff-engine.js.map