@path58/n8n-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/AGENT_INSTALL.md +223 -0
  2. package/CHANGELOG.md +38 -0
  3. package/LICENSE +21 -0
  4. package/README.md +187 -0
  5. package/dist/autofix/suggestion-fixers/deprecated-node-fixer.js +465 -0
  6. package/dist/autofix/suggestion-fixers/deprecated-node-fixer.js.map +1 -0
  7. package/dist/autofix/suggestion-fixers/fixer-registry.js +495 -0
  8. package/dist/autofix/suggestion-fixers/fixer-registry.js.map +1 -0
  9. package/dist/autofix/suggestion-fixers/l1-structure-fixer.js +639 -0
  10. package/dist/autofix/suggestion-fixers/l1-structure-fixer.js.map +1 -0
  11. package/dist/autofix/suggestion-fixers/l4-connection-fixer.js +449 -0
  12. package/dist/autofix/suggestion-fixers/l4-connection-fixer.js.map +1 -0
  13. package/dist/autofix/suggestion-fixers/l5-parameter-fixer.js +575 -0
  14. package/dist/autofix/suggestion-fixers/l5-parameter-fixer.js.map +1 -0
  15. package/dist/autofix/suggestion-fixers/l5-typeversion-fixer.js +431 -0
  16. package/dist/autofix/suggestion-fixers/l5-typeversion-fixer.js.map +1 -0
  17. package/dist/autofix/suggestion-fixers/l5-webhook-path-fixer.js +356 -0
  18. package/dist/autofix/suggestion-fixers/l5-webhook-path-fixer.js.map +1 -0
  19. package/dist/autofix/suggestion-fixers/l6-ai-tool-variant-fixer.js +618 -0
  20. package/dist/autofix/suggestion-fixers/l6-ai-tool-variant-fixer.js.map +1 -0
  21. package/dist/autofix/suggestion-fixers/l6-pattern-fixer.js +1475 -0
  22. package/dist/autofix/suggestion-fixers/l6-pattern-fixer.js.map +1 -0
  23. package/dist/autofix/suggestion-fixers/llm-fixer.js +716 -0
  24. package/dist/autofix/suggestion-fixers/llm-fixer.js.map +1 -0
  25. package/dist/autofix/suggestion-fixers/missing-credential-fixer.js +336 -0
  26. package/dist/autofix/suggestion-fixers/missing-credential-fixer.js.map +1 -0
  27. package/dist/autofix/suggestion-fixers/types.js +29 -0
  28. package/dist/autofix/suggestion-fixers/types.js.map +1 -0
  29. package/dist/autofix/suggestion-fixers/typo-fixer.js +197 -0
  30. package/dist/autofix/suggestion-fixers/typo-fixer.js.map +1 -0
  31. package/dist/classification/certification-engine.js +208 -0
  32. package/dist/classification/certification-engine.js.map +1 -0
  33. package/dist/classification/feedback-collector.js +516 -0
  34. package/dist/classification/feedback-collector.js.map +1 -0
  35. package/dist/classification/l5-parameter-analyzer.js +670 -0
  36. package/dist/classification/l5-parameter-analyzer.js.map +1 -0
  37. package/dist/classification/l6-graph-analyzer.js +613 -0
  38. package/dist/classification/l6-graph-analyzer.js.map +1 -0
  39. package/dist/classification/severity-classifier.js +237 -0
  40. package/dist/classification/severity-classifier.js.map +1 -0
  41. package/dist/config/env.js +280 -0
  42. package/dist/config/env.js.map +1 -0
  43. package/dist/config/env.schema.js +234 -0
  44. package/dist/config/env.schema.js.map +1 -0
  45. package/dist/config/scraperEnv.js +55 -0
  46. package/dist/config/scraperEnv.js.map +1 -0
  47. package/dist/db/postgresClient.js +38 -0
  48. package/dist/db/postgresClient.js.map +1 -0
  49. package/dist/db/scraperDb.js +6 -0
  50. package/dist/db/scraperDb.js.map +1 -0
  51. package/dist/db/scraperPostgresClient.js +118 -0
  52. package/dist/db/scraperPostgresClient.js.map +1 -0
  53. package/dist/db/validationRepository.js +55 -0
  54. package/dist/db/validationRepository.js.map +1 -0
  55. package/dist/db/validatorPostgresClient.js +248 -0
  56. package/dist/db/validatorPostgresClient.js.map +1 -0
  57. package/dist/db/workflowInstanceMappingRepository.js +128 -0
  58. package/dist/db/workflowInstanceMappingRepository.js.map +1 -0
  59. package/dist/errors/AppError.js +156 -0
  60. package/dist/errors/AppError.js.map +1 -0
  61. package/dist/errors/index.js +7 -0
  62. package/dist/errors/index.js.map +1 -0
  63. package/dist/factory/error-to-problem-mappers.js +385 -0
  64. package/dist/factory/error-to-problem-mappers.js.map +1 -0
  65. package/dist/factory/gap-recorder.js +260 -0
  66. package/dist/factory/gap-recorder.js.map +1 -0
  67. package/dist/factory/problem-recorder.js +94 -0
  68. package/dist/factory/problem-recorder.js.map +1 -0
  69. package/dist/factory/warning-to-gap-mappers.js +493 -0
  70. package/dist/factory/warning-to-gap-mappers.js.map +1 -0
  71. package/dist/factory/workflow-normalizer.js +247 -0
  72. package/dist/factory/workflow-normalizer.js.map +1 -0
  73. package/dist/mcp/adapters/catalog.js +13 -0
  74. package/dist/mcp/adapters/catalog.js.map +1 -0
  75. package/dist/mcp/adapters/index.js +36 -0
  76. package/dist/mcp/adapters/index.js.map +1 -0
  77. package/dist/mcp/adapters/supabase-catalog.js +467 -0
  78. package/dist/mcp/adapters/supabase-catalog.js.map +1 -0
  79. package/dist/mcp/adapters/test-catalog-adapter.js +100 -0
  80. package/dist/mcp/adapters/test-catalog-adapter.js.map +1 -0
  81. package/dist/mcp/adapters/validation.js +258 -0
  82. package/dist/mcp/adapters/validation.js.map +1 -0
  83. package/dist/mcp/build-email-workflow.js +113 -0
  84. package/dist/mcp/build-email-workflow.js.map +1 -0
  85. package/dist/mcp/config.js +22 -0
  86. package/dist/mcp/config.js.map +1 -0
  87. package/dist/mcp/formatters/errors.js +217 -0
  88. package/dist/mcp/formatters/errors.js.map +1 -0
  89. package/dist/mcp/formatters/index.js +12 -0
  90. package/dist/mcp/formatters/index.js.map +1 -0
  91. package/dist/mcp/formatters/response.js +141 -0
  92. package/dist/mcp/formatters/response.js.map +1 -0
  93. package/dist/mcp/quick-test.js +33 -0
  94. package/dist/mcp/quick-test.js.map +1 -0
  95. package/dist/mcp/server.js +70 -0
  96. package/dist/mcp/server.js.map +1 -0
  97. package/dist/mcp/test-mcp-error.js +81 -0
  98. package/dist/mcp/test-mcp-error.js.map +1 -0
  99. package/dist/mcp/test-mcp.js +80 -0
  100. package/dist/mcp/test-mcp.js.map +1 -0
  101. package/dist/mcp/tools/fixes/expression-fixes.js +166 -0
  102. package/dist/mcp/tools/fixes/expression-fixes.js.map +1 -0
  103. package/dist/mcp/tools/fixes/flow-fixes.js +155 -0
  104. package/dist/mcp/tools/fixes/flow-fixes.js.map +1 -0
  105. package/dist/mcp/tools/fixes/index.js +91 -0
  106. package/dist/mcp/tools/fixes/index.js.map +1 -0
  107. package/dist/mcp/tools/fixes/node-fixes.js +233 -0
  108. package/dist/mcp/tools/fixes/node-fixes.js.map +1 -0
  109. package/dist/mcp/tools/fixes/parameter-fixes.js +277 -0
  110. package/dist/mcp/tools/fixes/parameter-fixes.js.map +1 -0
  111. package/dist/mcp/tools/fixes/types.js +10 -0
  112. package/dist/mcp/tools/fixes/types.js.map +1 -0
  113. package/dist/mcp/tools/handlers/check-parameter.js +300 -0
  114. package/dist/mcp/tools/handlers/check-parameter.js.map +1 -0
  115. package/dist/mcp/tools/handlers/find-similar-pattern.js +121 -0
  116. package/dist/mcp/tools/handlers/find-similar-pattern.js.map +1 -0
  117. package/dist/mcp/tools/handlers/get-node-info.js +131 -0
  118. package/dist/mcp/tools/handlers/get-node-info.js.map +1 -0
  119. package/dist/mcp/tools/handlers/get-operation-schema.js +141 -0
  120. package/dist/mcp/tools/handlers/get-operation-schema.js.map +1 -0
  121. package/dist/mcp/tools/handlers/list-nodes.js +126 -0
  122. package/dist/mcp/tools/handlers/list-nodes.js.map +1 -0
  123. package/dist/mcp/tools/handlers/list-operations.js +138 -0
  124. package/dist/mcp/tools/handlers/list-operations.js.map +1 -0
  125. package/dist/mcp/tools/handlers/suggest-fix.js +120 -0
  126. package/dist/mcp/tools/handlers/suggest-fix.js.map +1 -0
  127. package/dist/mcp/tools/handlers/validate-workflow.js +92 -0
  128. package/dist/mcp/tools/handlers/validate-workflow.js.map +1 -0
  129. package/dist/mcp/tools/index.js +190 -0
  130. package/dist/mcp/tools/index.js.map +1 -0
  131. package/dist/mcp/tools/schemas.js +195 -0
  132. package/dist/mcp/tools/schemas.js.map +1 -0
  133. package/dist/mcp/tools/validate.js +95 -0
  134. package/dist/mcp/tools/validate.js.map +1 -0
  135. package/dist/mcp/types/mcp.js +7 -0
  136. package/dist/mcp/types/mcp.js.map +1 -0
  137. package/dist/mcp/utils/timeout.js +78 -0
  138. package/dist/mcp/utils/timeout.js.map +1 -0
  139. package/dist/services/BatchProcessor.js +433 -0
  140. package/dist/services/BatchProcessor.js.map +1 -0
  141. package/dist/services/CheckpointManager.js +281 -0
  142. package/dist/services/CheckpointManager.js.map +1 -0
  143. package/dist/services/CostCalculator.js +211 -0
  144. package/dist/services/CostCalculator.js.map +1 -0
  145. package/dist/services/EmbeddingCache.js +68 -0
  146. package/dist/services/EmbeddingCache.js.map +1 -0
  147. package/dist/services/EmbeddingService.js +143 -0
  148. package/dist/services/EmbeddingService.js.map +1 -0
  149. package/dist/services/RankingService.js +81 -0
  150. package/dist/services/RankingService.js.map +1 -0
  151. package/dist/services/RedisCache.js +376 -0
  152. package/dist/services/RedisCache.js.map +1 -0
  153. package/dist/services/RedisCatalogCache.js +680 -0
  154. package/dist/services/RedisCatalogCache.js.map +1 -0
  155. package/dist/services/ResumeManager.js +252 -0
  156. package/dist/services/ResumeManager.js.map +1 -0
  157. package/dist/services/SearchService.js +282 -0
  158. package/dist/services/SearchService.js.map +1 -0
  159. package/dist/services/SemanticCatalogSearch.js +405 -0
  160. package/dist/services/SemanticCatalogSearch.js.map +1 -0
  161. package/dist/services/ValidationCache.js +157 -0
  162. package/dist/services/ValidationCache.js.map +1 -0
  163. package/dist/services/WorkflowPipelineService.js +1997 -0
  164. package/dist/services/WorkflowPipelineService.js.map +1 -0
  165. package/dist/services/catalog/index.js +34 -0
  166. package/dist/services/catalog/index.js.map +1 -0
  167. package/dist/services/catalog/interfaces.js +17 -0
  168. package/dist/services/catalog/interfaces.js.map +1 -0
  169. package/dist/services/catalog/loaders.js +169 -0
  170. package/dist/services/catalog/loaders.js.map +1 -0
  171. package/dist/services/catalog/types.js +138 -0
  172. package/dist/services/catalog/types.js.map +1 -0
  173. package/dist/services/documentation-normalization/docUrlUtils.js +88 -0
  174. package/dist/services/documentation-normalization/docUrlUtils.js.map +1 -0
  175. package/dist/services/error-quality/ErrorQualityService.js +262 -0
  176. package/dist/services/error-quality/ErrorQualityService.js.map +1 -0
  177. package/dist/services/error-quality/analyzers/CredentialAnalyzer.js +260 -0
  178. package/dist/services/error-quality/analyzers/CredentialAnalyzer.js.map +1 -0
  179. package/dist/services/error-quality/analyzers/IssuePredictor.js +380 -0
  180. package/dist/services/error-quality/analyzers/IssuePredictor.js.map +1 -0
  181. package/dist/services/error-quality/analyzers/MockCoverageAnalyzer.js +267 -0
  182. package/dist/services/error-quality/analyzers/MockCoverageAnalyzer.js.map +1 -0
  183. package/dist/services/error-quality/data/ErrorPatternSeeder.js +963 -0
  184. package/dist/services/error-quality/data/ErrorPatternSeeder.js.map +1 -0
  185. package/dist/services/error-quality/index.js +25 -0
  186. package/dist/services/error-quality/index.js.map +1 -0
  187. package/dist/services/error-quality/reports/ReportGenerator.js +343 -0
  188. package/dist/services/error-quality/reports/ReportGenerator.js.map +1 -0
  189. package/dist/services/error-quality/taxonomy/ErrorTaxonomy.js +698 -0
  190. package/dist/services/error-quality/taxonomy/ErrorTaxonomy.js.map +1 -0
  191. package/dist/services/error-quality/types.js +11 -0
  192. package/dist/services/error-quality/types.js.map +1 -0
  193. package/dist/services/progress/ProgressTracker.js +288 -0
  194. package/dist/services/progress/ProgressTracker.js.map +1 -0
  195. package/dist/services/progress/formatters.js +122 -0
  196. package/dist/services/progress/formatters.js.map +1 -0
  197. package/dist/services/progress/index.js +36 -0
  198. package/dist/services/progress/index.js.map +1 -0
  199. package/dist/services/progress/types.js +7 -0
  200. package/dist/services/progress/types.js.map +1 -0
  201. package/dist/services/search/embeddingGenerator.js +112 -0
  202. package/dist/services/search/embeddingGenerator.js.map +1 -0
  203. package/dist/types/aiCapabilities.js +7 -0
  204. package/dist/types/aiCapabilities.js.map +1 -0
  205. package/dist/types/aiConfigSchema.js +7 -0
  206. package/dist/types/aiConfigSchema.js.map +1 -0
  207. package/dist/utils/bannerLogger.js +186 -0
  208. package/dist/utils/bannerLogger.js.map +1 -0
  209. package/dist/utils/bannerService.js +23 -0
  210. package/dist/utils/bannerService.js.map +1 -0
  211. package/dist/utils/bannerServiceAdapter.js +54 -0
  212. package/dist/utils/bannerServiceAdapter.js.map +1 -0
  213. package/dist/utils/batchLogger.js +171 -0
  214. package/dist/utils/batchLogger.js.map +1 -0
  215. package/dist/utils/bottomStickyBanner.js +239 -0
  216. package/dist/utils/bottomStickyBanner.js.map +1 -0
  217. package/dist/utils/credentialMatcher.js +206 -0
  218. package/dist/utils/credentialMatcher.js.map +1 -0
  219. package/dist/utils/credentialNormalizer.js +442 -0
  220. package/dist/utils/credentialNormalizer.js.map +1 -0
  221. package/dist/utils/integratedBannerLogger.js +59 -0
  222. package/dist/utils/integratedBannerLogger.js.map +1 -0
  223. package/dist/utils/n8nSourceGit.js +195 -0
  224. package/dist/utils/n8nSourceGit.js.map +1 -0
  225. package/dist/utils/nodeTypeNormalizer.js +131 -0
  226. package/dist/utils/nodeTypeNormalizer.js.map +1 -0
  227. package/dist/utils/openaiClient.js +397 -0
  228. package/dist/utils/openaiClient.js.map +1 -0
  229. package/dist/utils/productionLogger.js +16 -0
  230. package/dist/utils/productionLogger.js.map +1 -0
  231. package/dist/utils/progressBarBanner.js +132 -0
  232. package/dist/utils/progressBarBanner.js.map +1 -0
  233. package/dist/utils/scriptHeartbeat.js +117 -0
  234. package/dist/utils/scriptHeartbeat.js.map +1 -0
  235. package/dist/utils/scriptLogger.js +125 -0
  236. package/dist/utils/scriptLogger.js.map +1 -0
  237. package/dist/utils/scriptRunner.js +95 -0
  238. package/dist/utils/scriptRunner.js.map +1 -0
  239. package/dist/utils/scriptTimeout.js +128 -0
  240. package/dist/utils/scriptTimeout.js.map +1 -0
  241. package/dist/utils/scriptWrapper.js +219 -0
  242. package/dist/utils/scriptWrapper.js.map +1 -0
  243. package/dist/utils/stickyBanner.js +226 -0
  244. package/dist/utils/stickyBanner.js.map +1 -0
  245. package/dist/utils/terminalSpinner.js +97 -0
  246. package/dist/utils/terminalSpinner.js.map +1 -0
  247. package/dist/utils/threeLineBanner.js +427 -0
  248. package/dist/utils/threeLineBanner.js.map +1 -0
  249. package/dist/utils/validatorCheckpointManager.js +170 -0
  250. package/dist/utils/validatorCheckpointManager.js.map +1 -0
  251. package/dist/utils/validatorConnectionManager.js +124 -0
  252. package/dist/utils/validatorConnectionManager.js.map +1 -0
  253. package/dist/validation/catalog.js +56 -0
  254. package/dist/validation/catalog.js.map +1 -0
  255. package/dist/validation/config/deprecated-nodes.js +234 -0
  256. package/dist/validation/config/deprecated-nodes.js.map +1 -0
  257. package/dist/validation/config/l6-severity.js +227 -0
  258. package/dist/validation/config/l6-severity.js.map +1 -0
  259. package/dist/validation/config/terminal-nodes.js +132 -0
  260. package/dist/validation/config/terminal-nodes.js.map +1 -0
  261. package/dist/validation/config/unreachable-nodes.js +67 -0
  262. package/dist/validation/config/unreachable-nodes.js.map +1 -0
  263. package/dist/validation/core.js +47 -0
  264. package/dist/validation/core.js.map +1 -0
  265. package/dist/validation/docExtraction.js +12 -0
  266. package/dist/validation/docExtraction.js.map +1 -0
  267. package/dist/validation/dryRunMockRunner.js +128 -0
  268. package/dist/validation/dryRunMockRunner.js.map +1 -0
  269. package/dist/validation/fixtureEngine.js +61 -0
  270. package/dist/validation/fixtureEngine.js.map +1 -0
  271. package/dist/validation/index.js +15 -0
  272. package/dist/validation/index.js.map +1 -0
  273. package/dist/validation/k-levels/k2-blockers.js +222 -0
  274. package/dist/validation/k-levels/k2-blockers.js.map +1 -0
  275. package/dist/validation/l1-structure.js +296 -0
  276. package/dist/validation/l1-structure.js.map +1 -0
  277. package/dist/validation/l2-nodes.js +282 -0
  278. package/dist/validation/l2-nodes.js.map +1 -0
  279. package/dist/validation/l3-credentials.js +322 -0
  280. package/dist/validation/l3-credentials.js.map +1 -0
  281. package/dist/validation/l4-connections.js +698 -0
  282. package/dist/validation/l4-connections.js.map +1 -0
  283. package/dist/validation/l5-parameters.js +803 -0
  284. package/dist/validation/l5-parameters.js.map +1 -0
  285. package/dist/validation/l6-checks/ai-tool-variants.js +407 -0
  286. package/dist/validation/l6-checks/ai-tool-variants.js.map +1 -0
  287. package/dist/validation/l6-checks/catalog-checks.js +260 -0
  288. package/dist/validation/l6-checks/catalog-checks.js.map +1 -0
  289. package/dist/validation/l6-checks/data-contracts.js +197 -0
  290. package/dist/validation/l6-checks/data-contracts.js.map +1 -0
  291. package/dist/validation/l6-checks/deprecation.js +133 -0
  292. package/dist/validation/l6-checks/deprecation.js.map +1 -0
  293. package/dist/validation/l6-checks/error-handling.js +193 -0
  294. package/dist/validation/l6-checks/error-handling.js.map +1 -0
  295. package/dist/validation/l6-checks/expression-syntax.js +387 -0
  296. package/dist/validation/l6-checks/expression-syntax.js.map +1 -0
  297. package/dist/validation/l6-checks/flow-integrity.js +504 -0
  298. package/dist/validation/l6-checks/flow-integrity.js.map +1 -0
  299. package/dist/validation/l6-checks/index.js +106 -0
  300. package/dist/validation/l6-checks/index.js.map +1 -0
  301. package/dist/validation/l6-checks/loops.js +370 -0
  302. package/dist/validation/l6-checks/loops.js.map +1 -0
  303. package/dist/validation/l6-checks/performance.js +182 -0
  304. package/dist/validation/l6-checks/performance.js.map +1 -0
  305. package/dist/validation/l6-checks/security.js +273 -0
  306. package/dist/validation/l6-checks/security.js.map +1 -0
  307. package/dist/validation/l6-patterns.js +472 -0
  308. package/dist/validation/l6-patterns.js.map +1 -0
  309. package/dist/validation/mockLevelResolver.js +95 -0
  310. package/dist/validation/mockLevelResolver.js.map +1 -0
  311. package/dist/validation/n8nApiClient.js +21 -0
  312. package/dist/validation/n8nApiClient.js.map +1 -0
  313. package/dist/validation/n8nCli.js +87 -0
  314. package/dist/validation/n8nCli.js.map +1 -0
  315. package/dist/validation/types.js +8 -0
  316. package/dist/validation/types.js.map +1 -0
  317. package/dist/validation/usageStats.js +82 -0
  318. package/dist/validation/usageStats.js.map +1 -0
  319. package/package.json +274 -0
@@ -0,0 +1,495 @@
1
+ /**
2
+ * AutoFixer Registry
3
+ *
4
+ * RAG-2.2.92.4: Auto-fix Engine
5
+ * Central registry for all suggestion-based fixers.
6
+ * Coordinates fix application and records results to fix_history.
7
+ *
8
+ * @module suggestion-fixers/fixer-registry
9
+ * @created 2026-01-21
10
+ */
11
+ import { TypoFixer, typoFixer } from './typo-fixer.js';
12
+ import { DeprecatedNodeFixer, DeprecatedNodeHandler, deprecatedNodeFixer, deprecatedNodeHandler, } from './deprecated-node-fixer.js';
13
+ import { MissingCredentialFixer, missingCredentialFixer } from './missing-credential-fixer.js';
14
+ import { L1OrphanConnectionFixer, L1MissingConnectionsFixer, L1MissingFieldFixer, L1PositionFixer, L1DuplicateNodeNameFixer, l1OrphanConnectionFixer, l1MissingConnectionsFixer, l1MissingFieldFixer, l1PositionFixer, l1DuplicateNodeNameFixer, } from './l1-structure-fixer.js';
15
+ import { L4CircularConnectionFixer, L4InvalidPatternFixer, L4MissingInputConnectionFixer, l4CircularConnectionFixer, l4InvalidPatternFixer, l4MissingInputConnectionFixer, } from './l4-connection-fixer.js';
16
+ import { L5MissingParameterFixer, L5InvalidParameterFixer, L5UnknownParameterFixer, l5MissingParameterFixer, l5InvalidParameterFixer, l5UnknownParameterFixer, } from './l5-parameter-fixer.js';
17
+ import { L5WebhookPathFixer, l5WebhookPathFixer, } from './l5-webhook-path-fixer.js';
18
+ import { L5TypeVersionFixer, l5TypeVersionFixer, } from './l5-typeversion-fixer.js';
19
+ import { L6RetryFixer, L6ErrorOutputFixer, L6DeadEndFixerV2, L6ExpressionFixer, L6TriggerFixer, L6HardcodedUrlHandler, L6UnreachableNodeFixerV2, l6RetryFixer, l6ErrorOutputFixer, l6DeadEndFixerV2, l6ExpressionFixer, l6TriggerFixer, l6HardcodedUrlHandler, l6UnreachableNodeFixerV2, l6PatternFixers, DEAD_END_FIXER_CONFIG, UNREACHABLE_FIXER_CONFIG, } from './l6-pattern-fixer.js';
20
+ import { L6AIToolVariantFixer, l6AIToolVariantFixer, } from './l6-ai-tool-variant-fixer.js';
21
+ import { LLMFixer, createLLMFixer } from './llm-fixer.js';
22
+ import { validatorQuery } from '../../db/validatorPostgresClient.js';
23
+ import { retryDbQuery } from '@tsvika58/shared-utilities/retry';
24
+ import { logger } from '@tsvika58/shared-utilities/logging';
25
+ /**
26
+ * RAG-2.2.108.3: Get L6 fix confidence threshold from environment or use default
27
+ * Environment variable: L6_FIX_CONFIDENCE_THRESHOLD (default: 0.85)
28
+ */
29
+ function getL6FixConfidenceThreshold() {
30
+ const envValue = process.env.L6_FIX_CONFIDENCE_THRESHOLD;
31
+ if (envValue) {
32
+ const parsed = parseFloat(envValue);
33
+ if (!isNaN(parsed) && parsed >= 0 && parsed <= 1) {
34
+ return parsed;
35
+ }
36
+ logger.warn('Invalid L6_FIX_CONFIDENCE_THRESHOLD value, using default', {
37
+ envValue,
38
+ default: 0.85,
39
+ });
40
+ }
41
+ return 0.85;
42
+ }
43
+ /**
44
+ * Default configuration
45
+ * RAG-2.2.108.3: confidenceThreshold is now configurable via L6_FIX_CONFIDENCE_THRESHOLD env var
46
+ */
47
+ const DEFAULT_CONFIG = {
48
+ confidenceThreshold: getL6FixConfidenceThreshold(),
49
+ recordFixes: true,
50
+ validateAfterFix: true,
51
+ maxFixesPerPass: 10,
52
+ };
53
+ /**
54
+ * AutoFixerRegistry - Central registry and coordinator for suggestion-based fixers
55
+ *
56
+ * Manages the collection of fixers and coordinates fix application.
57
+ * Records all fix attempts to factory.fix_history for audit trail.
58
+ */
59
+ export class AutoFixerRegistry {
60
+ fixers = new Map();
61
+ config;
62
+ /** Cache: problem_code → candidate fixers that declare support via supportedCodes */
63
+ fixersByCode = new Map();
64
+ /** Cache: getAllFixers() result, invalidated on registerFixer() */
65
+ cachedFixerArray = null;
66
+ /**
67
+ * Create a new AutoFixerRegistry
68
+ * @param config - Optional configuration override
69
+ */
70
+ constructor(config) {
71
+ this.config = { ...DEFAULT_CONFIG, ...config };
72
+ // Register default fixers
73
+ this.registerFixer(typoFixer);
74
+ this.registerFixer(deprecatedNodeFixer);
75
+ // RAG-2.2.93.14: Handler for deprecated nodes WITHOUT replacements (version warnings)
76
+ this.registerFixer(deprecatedNodeHandler);
77
+ this.registerFixer(missingCredentialFixer);
78
+ // Register L1 structure fixers (RAG-2.2.93.4, RAG-2.2.106.3)
79
+ this.registerFixer(l1OrphanConnectionFixer);
80
+ this.registerFixer(l1MissingConnectionsFixer);
81
+ this.registerFixer(l1MissingFieldFixer);
82
+ this.registerFixer(l1PositionFixer);
83
+ this.registerFixer(l1DuplicateNodeNameFixer);
84
+ // Register L4 connection fixers (RAG-2.2.93.7)
85
+ this.registerFixer(l4CircularConnectionFixer);
86
+ this.registerFixer(l4InvalidPatternFixer);
87
+ this.registerFixer(l4MissingInputConnectionFixer);
88
+ // Register L5 parameter fixers (RAG-2.2.93.8)
89
+ this.registerFixer(l5MissingParameterFixer);
90
+ this.registerFixer(l5InvalidParameterFixer);
91
+ this.registerFixer(l5UnknownParameterFixer);
92
+ // Register L5 webhook path fixer (RAG-4.7.2)
93
+ this.registerFixer(l5WebhookPathFixer);
94
+ // Register L5 typeVersion fixer (RAG-4.7.1)
95
+ this.registerFixer(l5TypeVersionFixer);
96
+ // Register L6 pattern fixers (RAG-2.2.93.9)
97
+ // RAG-2.2.108.3: Use V2 fixers for unreachable and dead-end nodes with confidence tiers
98
+ this.registerFixer(l6RetryFixer);
99
+ this.registerFixer(l6ErrorOutputFixer);
100
+ this.registerFixer(l6DeadEndFixerV2); // V2: terminal detection + position-based (RAG-2.2.108.2)
101
+ this.registerFixer(l6ExpressionFixer);
102
+ this.registerFixer(l6TriggerFixer);
103
+ this.registerFixer(l6HardcodedUrlHandler);
104
+ this.registerFixer(l6UnreachableNodeFixerV2); // V2: position-based with confidence tiers (RAG-2.2.108.1)
105
+ // Register L6 AI Tool Variant fixer (RAG-4.7.3)
106
+ this.registerFixer(l6AIToolVariantFixer);
107
+ // RAG-9.4.3v2: LLMFixer registered LAST - only handles problems no static fixer can fix
108
+ // This is a fallback fixer that uses LLM as a last resort
109
+ this.registerFixer(createLLMFixer(this));
110
+ logger.info('AutoFixerRegistry initialized', {
111
+ fixers: Array.from(this.fixers.keys()),
112
+ config: this.config,
113
+ });
114
+ }
115
+ /**
116
+ * Register a fixer with the registry
117
+ * @param fixer - The fixer to register
118
+ */
119
+ registerFixer(fixer) {
120
+ this.fixers.set(fixer.name, fixer);
121
+ // Populate code→fixer lookup cache and invalidate array cache
122
+ this.cachedFixerArray = null;
123
+ for (const code of fixer.supportedCodes) {
124
+ const existing = this.fixersByCode.get(code);
125
+ if (existing) {
126
+ existing.push(fixer);
127
+ }
128
+ else {
129
+ this.fixersByCode.set(code, [fixer]);
130
+ }
131
+ }
132
+ logger.debug('Fixer registered', {
133
+ name: fixer.name,
134
+ supportedCodes: fixer.supportedCodes,
135
+ });
136
+ }
137
+ /**
138
+ * Get a fixer by name
139
+ * @param name - Fixer name
140
+ * @returns The fixer or undefined
141
+ */
142
+ getFixer(name) {
143
+ return this.fixers.get(name);
144
+ }
145
+ /**
146
+ * Get all registered fixers (cached array)
147
+ * @returns Array of all fixers
148
+ */
149
+ getAllFixers() {
150
+ if (!this.cachedFixerArray) {
151
+ this.cachedFixerArray = Array.from(this.fixers.values());
152
+ }
153
+ return this.cachedFixerArray;
154
+ }
155
+ /**
156
+ * Get fixers that declare support for a specific problem code.
157
+ * Used by LLMFixer to quickly check if a static fixer exists.
158
+ * @param code - Problem code (e.g., 'L5_MISSING_REQUIRED_PARAMETER')
159
+ * @returns Array of candidate fixers, or undefined if none
160
+ */
161
+ getFixersForCode(code) {
162
+ return this.fixersByCode.get(code);
163
+ }
164
+ /**
165
+ * Find a fixer that can handle a specific problem
166
+ * @param problem - The validation problem
167
+ * @returns The first fixer that can handle it, or undefined
168
+ */
169
+ findFixerForProblem(problem) {
170
+ // Fast path: look up candidate fixers by problem code (O(1) map lookup)
171
+ const candidates = this.fixersByCode.get(problem.code);
172
+ if (candidates) {
173
+ for (const fixer of candidates) {
174
+ if (fixer.canFix(problem)) {
175
+ return fixer;
176
+ }
177
+ }
178
+ }
179
+ // Fallback: check all fixers for those with dynamic canFix() logic
180
+ // (e.g., LLMFixer accepts any code not handled by static fixers)
181
+ for (const fixer of this.fixers.values()) {
182
+ if (fixer.canFix(problem)) {
183
+ return fixer;
184
+ }
185
+ }
186
+ return undefined;
187
+ }
188
+ /**
189
+ * Apply a single fix to a workflow
190
+ *
191
+ * @param workflow - The workflow to fix
192
+ * @param problem - The problem to fix
193
+ * @returns Fix result
194
+ */
195
+ async applyFix(workflow, problem) {
196
+ const fixer = this.findFixerForProblem(problem);
197
+ if (!fixer) {
198
+ return {
199
+ success: false,
200
+ changes: [],
201
+ reason: `No fixer found for problem code: ${problem.code}`,
202
+ confidence: 0,
203
+ fixer_name: 'none',
204
+ problem_code: problem.code,
205
+ };
206
+ }
207
+ // Apply the fix
208
+ const result = fixer.fix(workflow, problem);
209
+ // Check confidence threshold
210
+ if (result.success && result.confidence < this.config.confidenceThreshold) {
211
+ logger.info('Fix confidence below threshold, skipping', {
212
+ fixer: fixer.name,
213
+ confidence: result.confidence,
214
+ threshold: this.config.confidenceThreshold,
215
+ });
216
+ return {
217
+ ...result,
218
+ success: false,
219
+ reason: `Confidence ${result.confidence.toFixed(2)} below threshold ${this.config.confidenceThreshold}`,
220
+ };
221
+ }
222
+ // Record the fix if enabled
223
+ if (this.config.recordFixes) {
224
+ await this.recordFix(workflow, result);
225
+ }
226
+ return result;
227
+ }
228
+ /**
229
+ * Apply all applicable fixes to a workflow in a single pass
230
+ *
231
+ * @param workflow - The workflow to fix
232
+ * @param problems - List of validation problems
233
+ * @returns Pass result with fixed workflow and statistics
234
+ */
235
+ async applyFixes(workflow, problems) {
236
+ let currentWorkflow = workflow;
237
+ const results = [];
238
+ const remainingProblems = [];
239
+ let applied = 0;
240
+ let skipped = 0;
241
+ let failed = 0;
242
+ // Pre-serialize original workflow once for recordFix (avoids N redundant JSON.stringify)
243
+ const originalWorkflowJson = this.config.recordFixes ? JSON.stringify(workflow) : null;
244
+ // Sort problems by level (L1 first) for consistent ordering
245
+ const sortedProblems = [...problems].sort((a, b) => {
246
+ const levelOrder = {
247
+ L1: 1,
248
+ L2: 2,
249
+ L3: 3,
250
+ L4: 4,
251
+ L5: 5,
252
+ L6: 6,
253
+ };
254
+ return (levelOrder[a.level] || 99) - (levelOrder[b.level] || 99);
255
+ });
256
+ for (const problem of sortedProblems) {
257
+ // Stop if we've hit the max fixes per pass
258
+ if (applied >= this.config.maxFixesPerPass) {
259
+ remainingProblems.push(problem);
260
+ continue;
261
+ }
262
+ const fixer = this.findFixerForProblem(problem);
263
+ if (!fixer) {
264
+ remainingProblems.push(problem);
265
+ continue;
266
+ }
267
+ // Apply the fix with error handling
268
+ let result;
269
+ try {
270
+ result = fixer.fix(currentWorkflow, problem);
271
+ }
272
+ catch (fixError) {
273
+ // Log the error and continue with other problems
274
+ // Convert to Error if needed - logger.error expects (message, error, context)
275
+ const errToLog = fixError instanceof Error
276
+ ? fixError
277
+ : new Error(String(fixError));
278
+ logger.error('Fixer threw an exception', errToLog, {
279
+ fixer: fixer.name,
280
+ problem_code: problem.code,
281
+ });
282
+ failed++;
283
+ remainingProblems.push(problem);
284
+ continue;
285
+ }
286
+ results.push(result);
287
+ if (result.success) {
288
+ // Check confidence threshold
289
+ if (result.confidence >= this.config.confidenceThreshold) {
290
+ // Validate fixedWorkflow exists before using it
291
+ if (!result.fixedWorkflow) {
292
+ // Use undefined for error arg when there's no actual error, just context
293
+ logger.error('Fixer returned success but no fixedWorkflow', undefined, {
294
+ fixer: fixer.name,
295
+ problem_code: problem.code,
296
+ });
297
+ failed++;
298
+ remainingProblems.push(problem);
299
+ continue;
300
+ }
301
+ currentWorkflow = result.fixedWorkflow;
302
+ applied++;
303
+ // Record fix
304
+ if (this.config.recordFixes) {
305
+ await this.recordFixOptimized(originalWorkflowJson, workflow, result);
306
+ }
307
+ logger.debug('Fix applied', {
308
+ fixer: fixer.name,
309
+ problem_code: problem.code,
310
+ confidence: result.confidence,
311
+ });
312
+ }
313
+ else {
314
+ skipped++;
315
+ remainingProblems.push(problem);
316
+ logger.debug('Fix skipped (low confidence)', {
317
+ fixer: fixer.name,
318
+ problem_code: problem.code,
319
+ confidence: result.confidence,
320
+ threshold: this.config.confidenceThreshold,
321
+ });
322
+ }
323
+ }
324
+ else {
325
+ failed++;
326
+ remainingProblems.push(problem);
327
+ logger.debug('Fix failed', {
328
+ fixer: fixer.name,
329
+ problem_code: problem.code,
330
+ reason: result.reason,
331
+ });
332
+ }
333
+ }
334
+ return {
335
+ success: applied > 0,
336
+ workflow: currentWorkflow,
337
+ results,
338
+ attempted: results.length,
339
+ applied,
340
+ skipped,
341
+ failed,
342
+ remainingProblems,
343
+ };
344
+ }
345
+ /**
346
+ * Record a fix to the factory.fix_history table and sync validation_problems
347
+ * RAG-2.2.93.15: Also updates validation_problems.solution_result to 'APPLIED'
348
+ */
349
+ async recordFix(originalWorkflow, result) {
350
+ const originalJson = result.success ? JSON.stringify(originalWorkflow) : '';
351
+ await this.recordFixOptimized(originalJson, originalWorkflow, result);
352
+ }
353
+ /**
354
+ * Optimized recordFix that accepts pre-serialized original workflow JSON.
355
+ * Avoids redundant JSON.stringify when called in a loop (applyFixes).
356
+ */
357
+ async recordFixOptimized(originalWorkflowJson, originalWorkflow, result) {
358
+ try {
359
+ const workflowId = this.extractValidWorkflowId(originalWorkflow);
360
+ if (!workflowId)
361
+ return;
362
+ await this.insertFixHistory(workflowId, originalWorkflowJson, result);
363
+ if (result.success)
364
+ await this.syncSolutionResult(workflowId, result);
365
+ logger.debug('Fix recorded to database', { workflow_id: workflowId, fixer: result.fixer_name, success: result.success });
366
+ }
367
+ catch (error) {
368
+ const errToLog = error instanceof Error ? error : new Error(String(error));
369
+ logger.error('Failed to record fix to database', errToLog, { fixer: result.fixer_name, problem_code: result.problem_code });
370
+ }
371
+ }
372
+ extractValidWorkflowId(workflow) {
373
+ const workflowId = workflow.id;
374
+ if (!workflowId || typeof workflowId !== 'string') {
375
+ logger.warn('Cannot record fix: workflow has no valid ID');
376
+ return null;
377
+ }
378
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
379
+ if (!uuidRegex.test(workflowId)) {
380
+ logger.warn('Cannot record fix: workflow ID is not a valid UUID', { workflowId });
381
+ return null;
382
+ }
383
+ return workflowId;
384
+ }
385
+ buildFixHistoryParams(workflowId, originalWorkflowJson, result) {
386
+ return [
387
+ workflowId,
388
+ result.problem_code,
389
+ result.fixer_name,
390
+ result.success,
391
+ result.success ? originalWorkflowJson : null,
392
+ result.success && result.fixedWorkflow ? JSON.stringify(result.fixedWorkflow) : null,
393
+ result.success
394
+ ? result.changes.map((c) => c.description).join('; ')
395
+ : result.reason || 'Fix failed',
396
+ JSON.stringify({ confidence: result.confidence, changes: result.changes, reason: result.reason }),
397
+ ];
398
+ }
399
+ static FIX_HISTORY_SQL = `INSERT INTO factory.fix_history (
400
+ workflow_id, fix_type, fix_method, fix_successful,
401
+ before_value, after_value, reasoning, applied_at, new_error_details
402
+ ) VALUES ($1::uuid, $2, $3, $4, $5::jsonb, $6::jsonb, $7, NOW(), $8::jsonb)`;
403
+ async insertFixHistory(workflowId, originalWorkflowJson, result) {
404
+ const params = this.buildFixHistoryParams(workflowId, originalWorkflowJson, result);
405
+ await retryDbQuery(() => validatorQuery(AutoFixerRegistry.FIX_HISTORY_SQL, params), 3, `record_fix_${result.fixer_name}`);
406
+ }
407
+ /**
408
+ * Sync validation_problems.solution_result to 'APPLIED' after a successful fix
409
+ * RAG-2.2.93.15: Ensures fix_history and validation_problems stay in sync
410
+ */
411
+ async syncSolutionResult(workflowId, result) {
412
+ try {
413
+ const solutionApplied = result.changes.map((c) => c.description).join('; ');
414
+ const updateResult = await retryDbQuery(() => validatorQuery(`UPDATE factory.validation_problems
415
+ SET solution_result = 'APPLIED',
416
+ solution_applied = $1,
417
+ solution_type = 'autofix',
418
+ solved_at = NOW()
419
+ WHERE workflow_id = $2::uuid
420
+ AND problem_code = $3
421
+ AND solution_result = 'PENDING'`, [solutionApplied, workflowId, result.problem_code]), 3, `sync_solution_${result.fixer_name}`);
422
+ if (updateResult.rowCount && updateResult.rowCount > 0) {
423
+ logger.debug('Synced validation_problems solution_result', {
424
+ workflow_id: workflowId,
425
+ problem_code: result.problem_code,
426
+ rows_updated: updateResult.rowCount,
427
+ });
428
+ }
429
+ }
430
+ catch (error) {
431
+ // Log but don't fail - fix_history is the source of truth
432
+ const errToLog = error instanceof Error ? error : new Error(String(error));
433
+ logger.warn('Failed to sync validation_problems solution_result', errToLog, {
434
+ workflow_id: workflowId,
435
+ problem_code: result.problem_code,
436
+ });
437
+ }
438
+ }
439
+ /**
440
+ * Get statistics on registered fixers
441
+ */
442
+ getStats() {
443
+ const fixersByCode = {};
444
+ for (const [code, fixers] of this.fixersByCode.entries()) {
445
+ fixersByCode[code] = fixers.map(f => f.name);
446
+ }
447
+ return {
448
+ totalFixers: this.fixers.size,
449
+ fixersByCode,
450
+ };
451
+ }
452
+ /**
453
+ * Update configuration
454
+ */
455
+ updateConfig(updates) {
456
+ Object.assign(this.config, updates);
457
+ logger.info('FixerRegistry config updated', updates);
458
+ }
459
+ /**
460
+ * Get current configuration
461
+ */
462
+ getConfig() {
463
+ return { ...this.config };
464
+ }
465
+ }
466
+ // Export singleton instance
467
+ export const fixerRegistry = new AutoFixerRegistry();
468
+ // Re-export individual fixers for direct access
469
+ export { typoFixer, deprecatedNodeFixer, deprecatedNodeHandler, missingCredentialFixer };
470
+ export { TypoFixer, DeprecatedNodeFixer, DeprecatedNodeHandler, MissingCredentialFixer };
471
+ // Re-export L1 structure fixers (RAG-2.2.93.4, RAG-2.2.106.3)
472
+ export { l1OrphanConnectionFixer, l1MissingConnectionsFixer, l1MissingFieldFixer, l1PositionFixer, l1DuplicateNodeNameFixer, };
473
+ export { L1OrphanConnectionFixer, L1MissingConnectionsFixer, L1MissingFieldFixer, L1PositionFixer, L1DuplicateNodeNameFixer, };
474
+ // Re-export L4 connection fixers (RAG-2.2.93.7)
475
+ export { l4CircularConnectionFixer, l4InvalidPatternFixer, l4MissingInputConnectionFixer, };
476
+ export { L4CircularConnectionFixer, L4InvalidPatternFixer, L4MissingInputConnectionFixer, };
477
+ // Re-export L5 parameter fixers (RAG-2.2.93.8)
478
+ export { l5MissingParameterFixer, l5InvalidParameterFixer, l5UnknownParameterFixer, };
479
+ export { L5MissingParameterFixer, L5InvalidParameterFixer, L5UnknownParameterFixer, };
480
+ // Re-export L5 webhook path fixer (RAG-4.7.2)
481
+ export { l5WebhookPathFixer };
482
+ export { L5WebhookPathFixer };
483
+ // Re-export L5 typeVersion fixer (RAG-4.7.1)
484
+ export { l5TypeVersionFixer };
485
+ export { L5TypeVersionFixer };
486
+ // Re-export L6 pattern fixers (RAG-2.2.93.9)
487
+ // RAG-2.2.108.3: Export V2 fixers and configuration constants
488
+ export { l6RetryFixer, l6ErrorOutputFixer, l6DeadEndFixerV2, l6ExpressionFixer, l6TriggerFixer, l6HardcodedUrlHandler, l6UnreachableNodeFixerV2, l6PatternFixers, DEAD_END_FIXER_CONFIG, UNREACHABLE_FIXER_CONFIG, };
489
+ export { L6RetryFixer, L6ErrorOutputFixer, L6DeadEndFixerV2, L6ExpressionFixer, L6TriggerFixer, L6HardcodedUrlHandler, L6UnreachableNodeFixerV2, };
490
+ // Re-export L6 AI Tool Variant fixer (RAG-4.7.3)
491
+ export { l6AIToolVariantFixer };
492
+ export { L6AIToolVariantFixer };
493
+ // Re-export LLM fixer (RAG-9.4.3v2)
494
+ export { LLMFixer, createLLMFixer };
495
+ //# sourceMappingURL=fixer-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixer-registry.js","sourceRoot":"","sources":["../../../src/autofix/suggestion-fixers/fixer-registry.ts"],"names":[],"mappings":"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"}