@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.
- package/AGENT_INSTALL.md +223 -0
- package/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/dist/autofix/suggestion-fixers/deprecated-node-fixer.js +465 -0
- package/dist/autofix/suggestion-fixers/deprecated-node-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/fixer-registry.js +495 -0
- package/dist/autofix/suggestion-fixers/fixer-registry.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l1-structure-fixer.js +639 -0
- package/dist/autofix/suggestion-fixers/l1-structure-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l4-connection-fixer.js +449 -0
- package/dist/autofix/suggestion-fixers/l4-connection-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l5-parameter-fixer.js +575 -0
- package/dist/autofix/suggestion-fixers/l5-parameter-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l5-typeversion-fixer.js +431 -0
- package/dist/autofix/suggestion-fixers/l5-typeversion-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l5-webhook-path-fixer.js +356 -0
- package/dist/autofix/suggestion-fixers/l5-webhook-path-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l6-ai-tool-variant-fixer.js +618 -0
- package/dist/autofix/suggestion-fixers/l6-ai-tool-variant-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/l6-pattern-fixer.js +1475 -0
- package/dist/autofix/suggestion-fixers/l6-pattern-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/llm-fixer.js +716 -0
- package/dist/autofix/suggestion-fixers/llm-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/missing-credential-fixer.js +336 -0
- package/dist/autofix/suggestion-fixers/missing-credential-fixer.js.map +1 -0
- package/dist/autofix/suggestion-fixers/types.js +29 -0
- package/dist/autofix/suggestion-fixers/types.js.map +1 -0
- package/dist/autofix/suggestion-fixers/typo-fixer.js +197 -0
- package/dist/autofix/suggestion-fixers/typo-fixer.js.map +1 -0
- package/dist/classification/certification-engine.js +208 -0
- package/dist/classification/certification-engine.js.map +1 -0
- package/dist/classification/feedback-collector.js +516 -0
- package/dist/classification/feedback-collector.js.map +1 -0
- package/dist/classification/l5-parameter-analyzer.js +670 -0
- package/dist/classification/l5-parameter-analyzer.js.map +1 -0
- package/dist/classification/l6-graph-analyzer.js +613 -0
- package/dist/classification/l6-graph-analyzer.js.map +1 -0
- package/dist/classification/severity-classifier.js +237 -0
- package/dist/classification/severity-classifier.js.map +1 -0
- package/dist/config/env.js +280 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/env.schema.js +234 -0
- package/dist/config/env.schema.js.map +1 -0
- package/dist/config/scraperEnv.js +55 -0
- package/dist/config/scraperEnv.js.map +1 -0
- package/dist/db/postgresClient.js +38 -0
- package/dist/db/postgresClient.js.map +1 -0
- package/dist/db/scraperDb.js +6 -0
- package/dist/db/scraperDb.js.map +1 -0
- package/dist/db/scraperPostgresClient.js +118 -0
- package/dist/db/scraperPostgresClient.js.map +1 -0
- package/dist/db/validationRepository.js +55 -0
- package/dist/db/validationRepository.js.map +1 -0
- package/dist/db/validatorPostgresClient.js +248 -0
- package/dist/db/validatorPostgresClient.js.map +1 -0
- package/dist/db/workflowInstanceMappingRepository.js +128 -0
- package/dist/db/workflowInstanceMappingRepository.js.map +1 -0
- package/dist/errors/AppError.js +156 -0
- package/dist/errors/AppError.js.map +1 -0
- package/dist/errors/index.js +7 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/factory/error-to-problem-mappers.js +385 -0
- package/dist/factory/error-to-problem-mappers.js.map +1 -0
- package/dist/factory/gap-recorder.js +260 -0
- package/dist/factory/gap-recorder.js.map +1 -0
- package/dist/factory/problem-recorder.js +94 -0
- package/dist/factory/problem-recorder.js.map +1 -0
- package/dist/factory/warning-to-gap-mappers.js +493 -0
- package/dist/factory/warning-to-gap-mappers.js.map +1 -0
- package/dist/factory/workflow-normalizer.js +247 -0
- package/dist/factory/workflow-normalizer.js.map +1 -0
- package/dist/mcp/adapters/catalog.js +13 -0
- package/dist/mcp/adapters/catalog.js.map +1 -0
- package/dist/mcp/adapters/index.js +36 -0
- package/dist/mcp/adapters/index.js.map +1 -0
- package/dist/mcp/adapters/supabase-catalog.js +467 -0
- package/dist/mcp/adapters/supabase-catalog.js.map +1 -0
- package/dist/mcp/adapters/test-catalog-adapter.js +100 -0
- package/dist/mcp/adapters/test-catalog-adapter.js.map +1 -0
- package/dist/mcp/adapters/validation.js +258 -0
- package/dist/mcp/adapters/validation.js.map +1 -0
- package/dist/mcp/build-email-workflow.js +113 -0
- package/dist/mcp/build-email-workflow.js.map +1 -0
- package/dist/mcp/config.js +22 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/formatters/errors.js +217 -0
- package/dist/mcp/formatters/errors.js.map +1 -0
- package/dist/mcp/formatters/index.js +12 -0
- package/dist/mcp/formatters/index.js.map +1 -0
- package/dist/mcp/formatters/response.js +141 -0
- package/dist/mcp/formatters/response.js.map +1 -0
- package/dist/mcp/quick-test.js +33 -0
- package/dist/mcp/quick-test.js.map +1 -0
- package/dist/mcp/server.js +70 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/test-mcp-error.js +81 -0
- package/dist/mcp/test-mcp-error.js.map +1 -0
- package/dist/mcp/test-mcp.js +80 -0
- package/dist/mcp/test-mcp.js.map +1 -0
- package/dist/mcp/tools/fixes/expression-fixes.js +166 -0
- package/dist/mcp/tools/fixes/expression-fixes.js.map +1 -0
- package/dist/mcp/tools/fixes/flow-fixes.js +155 -0
- package/dist/mcp/tools/fixes/flow-fixes.js.map +1 -0
- package/dist/mcp/tools/fixes/index.js +91 -0
- package/dist/mcp/tools/fixes/index.js.map +1 -0
- package/dist/mcp/tools/fixes/node-fixes.js +233 -0
- package/dist/mcp/tools/fixes/node-fixes.js.map +1 -0
- package/dist/mcp/tools/fixes/parameter-fixes.js +277 -0
- package/dist/mcp/tools/fixes/parameter-fixes.js.map +1 -0
- package/dist/mcp/tools/fixes/types.js +10 -0
- package/dist/mcp/tools/fixes/types.js.map +1 -0
- package/dist/mcp/tools/handlers/check-parameter.js +300 -0
- package/dist/mcp/tools/handlers/check-parameter.js.map +1 -0
- package/dist/mcp/tools/handlers/find-similar-pattern.js +121 -0
- package/dist/mcp/tools/handlers/find-similar-pattern.js.map +1 -0
- package/dist/mcp/tools/handlers/get-node-info.js +131 -0
- package/dist/mcp/tools/handlers/get-node-info.js.map +1 -0
- package/dist/mcp/tools/handlers/get-operation-schema.js +141 -0
- package/dist/mcp/tools/handlers/get-operation-schema.js.map +1 -0
- package/dist/mcp/tools/handlers/list-nodes.js +126 -0
- package/dist/mcp/tools/handlers/list-nodes.js.map +1 -0
- package/dist/mcp/tools/handlers/list-operations.js +138 -0
- package/dist/mcp/tools/handlers/list-operations.js.map +1 -0
- package/dist/mcp/tools/handlers/suggest-fix.js +120 -0
- package/dist/mcp/tools/handlers/suggest-fix.js.map +1 -0
- package/dist/mcp/tools/handlers/validate-workflow.js +92 -0
- package/dist/mcp/tools/handlers/validate-workflow.js.map +1 -0
- package/dist/mcp/tools/index.js +190 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/schemas.js +195 -0
- package/dist/mcp/tools/schemas.js.map +1 -0
- package/dist/mcp/tools/validate.js +95 -0
- package/dist/mcp/tools/validate.js.map +1 -0
- package/dist/mcp/types/mcp.js +7 -0
- package/dist/mcp/types/mcp.js.map +1 -0
- package/dist/mcp/utils/timeout.js +78 -0
- package/dist/mcp/utils/timeout.js.map +1 -0
- package/dist/services/BatchProcessor.js +433 -0
- package/dist/services/BatchProcessor.js.map +1 -0
- package/dist/services/CheckpointManager.js +281 -0
- package/dist/services/CheckpointManager.js.map +1 -0
- package/dist/services/CostCalculator.js +211 -0
- package/dist/services/CostCalculator.js.map +1 -0
- package/dist/services/EmbeddingCache.js +68 -0
- package/dist/services/EmbeddingCache.js.map +1 -0
- package/dist/services/EmbeddingService.js +143 -0
- package/dist/services/EmbeddingService.js.map +1 -0
- package/dist/services/RankingService.js +81 -0
- package/dist/services/RankingService.js.map +1 -0
- package/dist/services/RedisCache.js +376 -0
- package/dist/services/RedisCache.js.map +1 -0
- package/dist/services/RedisCatalogCache.js +680 -0
- package/dist/services/RedisCatalogCache.js.map +1 -0
- package/dist/services/ResumeManager.js +252 -0
- package/dist/services/ResumeManager.js.map +1 -0
- package/dist/services/SearchService.js +282 -0
- package/dist/services/SearchService.js.map +1 -0
- package/dist/services/SemanticCatalogSearch.js +405 -0
- package/dist/services/SemanticCatalogSearch.js.map +1 -0
- package/dist/services/ValidationCache.js +157 -0
- package/dist/services/ValidationCache.js.map +1 -0
- package/dist/services/WorkflowPipelineService.js +1997 -0
- package/dist/services/WorkflowPipelineService.js.map +1 -0
- package/dist/services/catalog/index.js +34 -0
- package/dist/services/catalog/index.js.map +1 -0
- package/dist/services/catalog/interfaces.js +17 -0
- package/dist/services/catalog/interfaces.js.map +1 -0
- package/dist/services/catalog/loaders.js +169 -0
- package/dist/services/catalog/loaders.js.map +1 -0
- package/dist/services/catalog/types.js +138 -0
- package/dist/services/catalog/types.js.map +1 -0
- package/dist/services/documentation-normalization/docUrlUtils.js +88 -0
- package/dist/services/documentation-normalization/docUrlUtils.js.map +1 -0
- package/dist/services/error-quality/ErrorQualityService.js +262 -0
- package/dist/services/error-quality/ErrorQualityService.js.map +1 -0
- package/dist/services/error-quality/analyzers/CredentialAnalyzer.js +260 -0
- package/dist/services/error-quality/analyzers/CredentialAnalyzer.js.map +1 -0
- package/dist/services/error-quality/analyzers/IssuePredictor.js +380 -0
- package/dist/services/error-quality/analyzers/IssuePredictor.js.map +1 -0
- package/dist/services/error-quality/analyzers/MockCoverageAnalyzer.js +267 -0
- package/dist/services/error-quality/analyzers/MockCoverageAnalyzer.js.map +1 -0
- package/dist/services/error-quality/data/ErrorPatternSeeder.js +963 -0
- package/dist/services/error-quality/data/ErrorPatternSeeder.js.map +1 -0
- package/dist/services/error-quality/index.js +25 -0
- package/dist/services/error-quality/index.js.map +1 -0
- package/dist/services/error-quality/reports/ReportGenerator.js +343 -0
- package/dist/services/error-quality/reports/ReportGenerator.js.map +1 -0
- package/dist/services/error-quality/taxonomy/ErrorTaxonomy.js +698 -0
- package/dist/services/error-quality/taxonomy/ErrorTaxonomy.js.map +1 -0
- package/dist/services/error-quality/types.js +11 -0
- package/dist/services/error-quality/types.js.map +1 -0
- package/dist/services/progress/ProgressTracker.js +288 -0
- package/dist/services/progress/ProgressTracker.js.map +1 -0
- package/dist/services/progress/formatters.js +122 -0
- package/dist/services/progress/formatters.js.map +1 -0
- package/dist/services/progress/index.js +36 -0
- package/dist/services/progress/index.js.map +1 -0
- package/dist/services/progress/types.js +7 -0
- package/dist/services/progress/types.js.map +1 -0
- package/dist/services/search/embeddingGenerator.js +112 -0
- package/dist/services/search/embeddingGenerator.js.map +1 -0
- package/dist/types/aiCapabilities.js +7 -0
- package/dist/types/aiCapabilities.js.map +1 -0
- package/dist/types/aiConfigSchema.js +7 -0
- package/dist/types/aiConfigSchema.js.map +1 -0
- package/dist/utils/bannerLogger.js +186 -0
- package/dist/utils/bannerLogger.js.map +1 -0
- package/dist/utils/bannerService.js +23 -0
- package/dist/utils/bannerService.js.map +1 -0
- package/dist/utils/bannerServiceAdapter.js +54 -0
- package/dist/utils/bannerServiceAdapter.js.map +1 -0
- package/dist/utils/batchLogger.js +171 -0
- package/dist/utils/batchLogger.js.map +1 -0
- package/dist/utils/bottomStickyBanner.js +239 -0
- package/dist/utils/bottomStickyBanner.js.map +1 -0
- package/dist/utils/credentialMatcher.js +206 -0
- package/dist/utils/credentialMatcher.js.map +1 -0
- package/dist/utils/credentialNormalizer.js +442 -0
- package/dist/utils/credentialNormalizer.js.map +1 -0
- package/dist/utils/integratedBannerLogger.js +59 -0
- package/dist/utils/integratedBannerLogger.js.map +1 -0
- package/dist/utils/n8nSourceGit.js +195 -0
- package/dist/utils/n8nSourceGit.js.map +1 -0
- package/dist/utils/nodeTypeNormalizer.js +131 -0
- package/dist/utils/nodeTypeNormalizer.js.map +1 -0
- package/dist/utils/openaiClient.js +397 -0
- package/dist/utils/openaiClient.js.map +1 -0
- package/dist/utils/productionLogger.js +16 -0
- package/dist/utils/productionLogger.js.map +1 -0
- package/dist/utils/progressBarBanner.js +132 -0
- package/dist/utils/progressBarBanner.js.map +1 -0
- package/dist/utils/scriptHeartbeat.js +117 -0
- package/dist/utils/scriptHeartbeat.js.map +1 -0
- package/dist/utils/scriptLogger.js +125 -0
- package/dist/utils/scriptLogger.js.map +1 -0
- package/dist/utils/scriptRunner.js +95 -0
- package/dist/utils/scriptRunner.js.map +1 -0
- package/dist/utils/scriptTimeout.js +128 -0
- package/dist/utils/scriptTimeout.js.map +1 -0
- package/dist/utils/scriptWrapper.js +219 -0
- package/dist/utils/scriptWrapper.js.map +1 -0
- package/dist/utils/stickyBanner.js +226 -0
- package/dist/utils/stickyBanner.js.map +1 -0
- package/dist/utils/terminalSpinner.js +97 -0
- package/dist/utils/terminalSpinner.js.map +1 -0
- package/dist/utils/threeLineBanner.js +427 -0
- package/dist/utils/threeLineBanner.js.map +1 -0
- package/dist/utils/validatorCheckpointManager.js +170 -0
- package/dist/utils/validatorCheckpointManager.js.map +1 -0
- package/dist/utils/validatorConnectionManager.js +124 -0
- package/dist/utils/validatorConnectionManager.js.map +1 -0
- package/dist/validation/catalog.js +56 -0
- package/dist/validation/catalog.js.map +1 -0
- package/dist/validation/config/deprecated-nodes.js +234 -0
- package/dist/validation/config/deprecated-nodes.js.map +1 -0
- package/dist/validation/config/l6-severity.js +227 -0
- package/dist/validation/config/l6-severity.js.map +1 -0
- package/dist/validation/config/terminal-nodes.js +132 -0
- package/dist/validation/config/terminal-nodes.js.map +1 -0
- package/dist/validation/config/unreachable-nodes.js +67 -0
- package/dist/validation/config/unreachable-nodes.js.map +1 -0
- package/dist/validation/core.js +47 -0
- package/dist/validation/core.js.map +1 -0
- package/dist/validation/docExtraction.js +12 -0
- package/dist/validation/docExtraction.js.map +1 -0
- package/dist/validation/dryRunMockRunner.js +128 -0
- package/dist/validation/dryRunMockRunner.js.map +1 -0
- package/dist/validation/fixtureEngine.js +61 -0
- package/dist/validation/fixtureEngine.js.map +1 -0
- package/dist/validation/index.js +15 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/k-levels/k2-blockers.js +222 -0
- package/dist/validation/k-levels/k2-blockers.js.map +1 -0
- package/dist/validation/l1-structure.js +296 -0
- package/dist/validation/l1-structure.js.map +1 -0
- package/dist/validation/l2-nodes.js +282 -0
- package/dist/validation/l2-nodes.js.map +1 -0
- package/dist/validation/l3-credentials.js +322 -0
- package/dist/validation/l3-credentials.js.map +1 -0
- package/dist/validation/l4-connections.js +698 -0
- package/dist/validation/l4-connections.js.map +1 -0
- package/dist/validation/l5-parameters.js +803 -0
- package/dist/validation/l5-parameters.js.map +1 -0
- package/dist/validation/l6-checks/ai-tool-variants.js +407 -0
- package/dist/validation/l6-checks/ai-tool-variants.js.map +1 -0
- package/dist/validation/l6-checks/catalog-checks.js +260 -0
- package/dist/validation/l6-checks/catalog-checks.js.map +1 -0
- package/dist/validation/l6-checks/data-contracts.js +197 -0
- package/dist/validation/l6-checks/data-contracts.js.map +1 -0
- package/dist/validation/l6-checks/deprecation.js +133 -0
- package/dist/validation/l6-checks/deprecation.js.map +1 -0
- package/dist/validation/l6-checks/error-handling.js +193 -0
- package/dist/validation/l6-checks/error-handling.js.map +1 -0
- package/dist/validation/l6-checks/expression-syntax.js +387 -0
- package/dist/validation/l6-checks/expression-syntax.js.map +1 -0
- package/dist/validation/l6-checks/flow-integrity.js +504 -0
- package/dist/validation/l6-checks/flow-integrity.js.map +1 -0
- package/dist/validation/l6-checks/index.js +106 -0
- package/dist/validation/l6-checks/index.js.map +1 -0
- package/dist/validation/l6-checks/loops.js +370 -0
- package/dist/validation/l6-checks/loops.js.map +1 -0
- package/dist/validation/l6-checks/performance.js +182 -0
- package/dist/validation/l6-checks/performance.js.map +1 -0
- package/dist/validation/l6-checks/security.js +273 -0
- package/dist/validation/l6-checks/security.js.map +1 -0
- package/dist/validation/l6-patterns.js +472 -0
- package/dist/validation/l6-patterns.js.map +1 -0
- package/dist/validation/mockLevelResolver.js +95 -0
- package/dist/validation/mockLevelResolver.js.map +1 -0
- package/dist/validation/n8nApiClient.js +21 -0
- package/dist/validation/n8nApiClient.js.map +1 -0
- package/dist/validation/n8nCli.js +87 -0
- package/dist/validation/n8nCli.js.map +1 -0
- package/dist/validation/types.js +8 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/usageStats.js +82 -0
- package/dist/validation/usageStats.js.map +1 -0
- package/package.json +274 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-fixer.js","sourceRoot":"","sources":["../../../src/autofix/suggestion-fixers/llm-fixer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Missing Credential Fixer
|
|
3
|
+
*
|
|
4
|
+
* RAG-2.2.92.4: Auto-fix Engine
|
|
5
|
+
* Adds placeholder credential references for nodes missing required credentials
|
|
6
|
+
* using L3 validator suggestions.
|
|
7
|
+
*
|
|
8
|
+
* Target success rate: 80%
|
|
9
|
+
*
|
|
10
|
+
* @module suggestion-fixers/missing-credential-fixer
|
|
11
|
+
* @created 2026-01-21
|
|
12
|
+
*/
|
|
13
|
+
import { cloneWorkflow } from './types.js';
|
|
14
|
+
import { logger } from '@tsvika58/shared-utilities/logging';
|
|
15
|
+
/**
|
|
16
|
+
* Known credential type → placeholder name mappings.
|
|
17
|
+
* These provide sensible defaults for common credential types.
|
|
18
|
+
*/
|
|
19
|
+
const CREDENTIAL_PLACEHOLDERS = {
|
|
20
|
+
// Google services
|
|
21
|
+
googleOAuth2Api: { name: 'Google OAuth2', description: 'Google OAuth2 credentials' },
|
|
22
|
+
googleSheetsOAuth2Api: { name: 'Google Sheets OAuth2', description: 'Google Sheets API credentials' },
|
|
23
|
+
googleDriveOAuth2Api: { name: 'Google Drive OAuth2', description: 'Google Drive API credentials' },
|
|
24
|
+
// Slack
|
|
25
|
+
slackApi: { name: 'Slack API', description: 'Slack Bot/User Token' },
|
|
26
|
+
slackOAuth2Api: { name: 'Slack OAuth2', description: 'Slack OAuth2 credentials' },
|
|
27
|
+
// GitHub
|
|
28
|
+
githubApi: { name: 'GitHub API', description: 'GitHub Personal Access Token' },
|
|
29
|
+
githubOAuth2Api: { name: 'GitHub OAuth2', description: 'GitHub OAuth2 credentials' },
|
|
30
|
+
// HTTP/Generic
|
|
31
|
+
httpBasicAuth: { name: 'HTTP Basic Auth', description: 'Basic authentication credentials' },
|
|
32
|
+
httpDigestAuth: { name: 'HTTP Digest Auth', description: 'Digest authentication credentials' },
|
|
33
|
+
httpHeaderAuth: { name: 'HTTP Header Auth', description: 'Header-based authentication' },
|
|
34
|
+
httpQueryAuth: { name: 'HTTP Query Auth', description: 'Query parameter authentication' },
|
|
35
|
+
oAuth2Api: { name: 'OAuth2 API', description: 'Generic OAuth2 credentials' },
|
|
36
|
+
// Databases
|
|
37
|
+
postgresApi: { name: 'PostgreSQL', description: 'PostgreSQL database credentials' },
|
|
38
|
+
mysqlApi: { name: 'MySQL', description: 'MySQL database credentials' },
|
|
39
|
+
mongoDb: { name: 'MongoDB', description: 'MongoDB credentials' },
|
|
40
|
+
// Cloud providers
|
|
41
|
+
awsApi: { name: 'AWS', description: 'AWS Access Key credentials' },
|
|
42
|
+
azureApi: { name: 'Azure', description: 'Azure credentials' },
|
|
43
|
+
// Email
|
|
44
|
+
smtpApi: { name: 'SMTP', description: 'SMTP email credentials' },
|
|
45
|
+
imapApi: { name: 'IMAP', description: 'IMAP email credentials' },
|
|
46
|
+
gmailOAuth2: { name: 'Gmail OAuth2', description: 'Gmail OAuth2 credentials' },
|
|
47
|
+
// Other common services
|
|
48
|
+
notionApi: { name: 'Notion API', description: 'Notion integration token' },
|
|
49
|
+
airtableApi: { name: 'Airtable API', description: 'Airtable API key' },
|
|
50
|
+
twilioApi: { name: 'Twilio API', description: 'Twilio credentials' },
|
|
51
|
+
sendGridApi: { name: 'SendGrid API', description: 'SendGrid API key' },
|
|
52
|
+
stripeApi: { name: 'Stripe API', description: 'Stripe API key' },
|
|
53
|
+
shopifyApi: { name: 'Shopify API', description: 'Shopify API credentials' },
|
|
54
|
+
hubspotApi: { name: 'HubSpot API', description: 'HubSpot API key' },
|
|
55
|
+
salesforceOAuth2Api: { name: 'Salesforce OAuth2', description: 'Salesforce OAuth2 credentials' },
|
|
56
|
+
jiraApi: { name: 'Jira API', description: 'Jira API credentials' },
|
|
57
|
+
asanaApi: { name: 'Asana API', description: 'Asana API credentials' },
|
|
58
|
+
trelloApi: { name: 'Trello API', description: 'Trello API credentials' },
|
|
59
|
+
discordApi: { name: 'Discord API', description: 'Discord Bot Token' },
|
|
60
|
+
telegramApi: { name: 'Telegram API', description: 'Telegram Bot Token' },
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Generate a placeholder credential ID.
|
|
64
|
+
* Uses a predictable format that indicates it needs to be replaced.
|
|
65
|
+
*/
|
|
66
|
+
function generatePlaceholderId(credentialType) {
|
|
67
|
+
return `placeholder-${credentialType}-${Date.now().toString(36)}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate a placeholder credential name.
|
|
71
|
+
*/
|
|
72
|
+
function generatePlaceholderName(credentialType) {
|
|
73
|
+
const known = CREDENTIAL_PLACEHOLDERS[credentialType];
|
|
74
|
+
if (known) {
|
|
75
|
+
return `[PLACEHOLDER] ${known.name}`;
|
|
76
|
+
}
|
|
77
|
+
// Convert camelCase to Title Case
|
|
78
|
+
const titleCase = credentialType
|
|
79
|
+
.replace(/([A-Z])/g, ' $1')
|
|
80
|
+
.replace(/^./, (str) => str.toUpperCase())
|
|
81
|
+
.replace(/Api$/i, ' API')
|
|
82
|
+
.replace(/OAuth2$/i, ' OAuth2')
|
|
83
|
+
.trim();
|
|
84
|
+
return `[PLACEHOLDER] ${titleCase}`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Calculate confidence based on credential type recognition.
|
|
88
|
+
*
|
|
89
|
+
* Confidence levels:
|
|
90
|
+
* - Known credential type with placeholder: 0.88
|
|
91
|
+
* - Unknown credential type with suggestion: 0.82
|
|
92
|
+
* - Unknown credential type without suggestion: 0.70
|
|
93
|
+
*/
|
|
94
|
+
function calculateCredentialConfidence(credentialType, hasSuggestion) {
|
|
95
|
+
const isKnown = credentialType in CREDENTIAL_PLACEHOLDERS;
|
|
96
|
+
if (isKnown) {
|
|
97
|
+
return 0.88; // Known type - high confidence
|
|
98
|
+
}
|
|
99
|
+
if (hasSuggestion) {
|
|
100
|
+
return 0.82; // Has suggestion from validator
|
|
101
|
+
}
|
|
102
|
+
return 0.70; // Unknown type - lower confidence
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* MissingCredentialFixer - Adds placeholder credentials for nodes that need them
|
|
106
|
+
*
|
|
107
|
+
* Uses L3 validator's credential type detection and suggestions to add
|
|
108
|
+
* placeholder credential references that users can then configure.
|
|
109
|
+
*
|
|
110
|
+
* Note: This fixer adds PLACEHOLDER credentials that must be replaced
|
|
111
|
+
* with actual credentials by the user. The workflow will not run until
|
|
112
|
+
* real credentials are configured.
|
|
113
|
+
*
|
|
114
|
+
* Example fixes:
|
|
115
|
+
* - Node without slackApi credentials → Add placeholder Slack credential reference
|
|
116
|
+
* - Node with unknown credential type → Add placeholder with suggested type
|
|
117
|
+
*/
|
|
118
|
+
export class MissingCredentialFixer {
|
|
119
|
+
name = 'MissingCredentialFixer';
|
|
120
|
+
description = 'Adds placeholder credential references for nodes missing required credentials';
|
|
121
|
+
/**
|
|
122
|
+
* Supported L3 problem codes:
|
|
123
|
+
* - MISSING_CREDENTIAL: Node needs credentials but none specified (fixable with placeholder)
|
|
124
|
+
* - UNKNOWN_CREDENTIAL_TYPE: Credential type not in catalog (fixable if suggestions available)
|
|
125
|
+
* - CREDENTIALS_REDACTED: Credentials are redacted (skip - expected for exported workflows)
|
|
126
|
+
*/
|
|
127
|
+
supportedCodes = ['L3_MISSING_CREDENTIAL', 'L3_UNKNOWN_CREDENTIAL_TYPE', 'L3_CREDENTIALS_REDACTED'];
|
|
128
|
+
minConfidence = 0.80;
|
|
129
|
+
/**
|
|
130
|
+
* Check if this fixer can handle the problem.
|
|
131
|
+
*
|
|
132
|
+
* Requirements:
|
|
133
|
+
* 1. Problem must be L3 level
|
|
134
|
+
* 2. Must have node_id to target
|
|
135
|
+
* 3. Must have credential_type to add
|
|
136
|
+
*
|
|
137
|
+
* RAG-2.2.93.6: L3 Problem Classification:
|
|
138
|
+
* - MISSING_CREDENTIAL: Fixable if we have node_id and credential_type
|
|
139
|
+
* - UNKNOWN_CREDENTIAL_TYPE: Fixable only if suggestions available
|
|
140
|
+
* - CREDENTIALS_REDACTED: Skip (expected behavior for exported workflows)
|
|
141
|
+
*/
|
|
142
|
+
canFix(problem) {
|
|
143
|
+
if (problem.level !== 'L3') {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
// L3_CREDENTIALS_REDACTED: Skip - expected behavior for exported workflows
|
|
147
|
+
// These cannot be fixed automatically and are not errors in the catalog
|
|
148
|
+
if (problem.code === 'L3_CREDENTIALS_REDACTED') {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
// We can fix L3_MISSING_CREDENTIAL if we have node_id and credential_type
|
|
152
|
+
if (problem.code === 'L3_MISSING_CREDENTIAL') {
|
|
153
|
+
return !!problem.node_id && !!problem.credential_type;
|
|
154
|
+
}
|
|
155
|
+
// L3_UNKNOWN_CREDENTIAL_TYPE: Fixable only if suggestions available
|
|
156
|
+
// Without suggestions, this is a catalog gap that cannot be auto-fixed
|
|
157
|
+
if (problem.code === 'L3_UNKNOWN_CREDENTIAL_TYPE') {
|
|
158
|
+
return (!!problem.node_id &&
|
|
159
|
+
!!problem.credential_type &&
|
|
160
|
+
Array.isArray(problem.suggestions) &&
|
|
161
|
+
problem.suggestions.length > 0);
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Apply the credential fix to the workflow.
|
|
167
|
+
*
|
|
168
|
+
* For MISSING_CREDENTIAL: Adds the missing credential type with a placeholder.
|
|
169
|
+
* For UNKNOWN_CREDENTIAL_TYPE: Replaces with first suggestion and adds placeholder.
|
|
170
|
+
*/
|
|
171
|
+
fix(workflow, problem) {
|
|
172
|
+
// Validate prerequisites
|
|
173
|
+
if (!this.canFix(problem)) {
|
|
174
|
+
return {
|
|
175
|
+
success: false,
|
|
176
|
+
changes: [],
|
|
177
|
+
reason: 'Problem does not meet requirements for MissingCredentialFixer',
|
|
178
|
+
confidence: 0,
|
|
179
|
+
fixer_name: this.name,
|
|
180
|
+
problem_code: problem.code,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const nodeId = problem.node_id;
|
|
184
|
+
const originalCredType = problem.credential_type;
|
|
185
|
+
// Determine the credential type to use
|
|
186
|
+
let credentialType = originalCredType;
|
|
187
|
+
if (problem.code === 'L3_UNKNOWN_CREDENTIAL_TYPE' && problem.suggestions?.length) {
|
|
188
|
+
credentialType = problem.suggestions[0]; // Use first suggestion
|
|
189
|
+
}
|
|
190
|
+
const hasSuggestion = problem.suggestions && problem.suggestions.length > 0;
|
|
191
|
+
const confidence = calculateCredentialConfidence(credentialType, !!hasSuggestion);
|
|
192
|
+
logger.debug('MissingCredentialFixer attempting fix', {
|
|
193
|
+
node_id: nodeId,
|
|
194
|
+
original_cred_type: originalCredType,
|
|
195
|
+
resolved_cred_type: credentialType,
|
|
196
|
+
confidence,
|
|
197
|
+
problem_code: problem.code,
|
|
198
|
+
});
|
|
199
|
+
// Find and update the node
|
|
200
|
+
const fixedWorkflow = cloneWorkflow(workflow);
|
|
201
|
+
let nodeFound = false;
|
|
202
|
+
for (const node of fixedWorkflow.nodes) {
|
|
203
|
+
if (node.id === nodeId) {
|
|
204
|
+
nodeFound = true;
|
|
205
|
+
// Ensure credentials object exists
|
|
206
|
+
if (!node.credentials) {
|
|
207
|
+
node.credentials = {};
|
|
208
|
+
}
|
|
209
|
+
const oldCredentials = JSON.parse(JSON.stringify(node.credentials));
|
|
210
|
+
// Add or replace credential
|
|
211
|
+
const placeholderId = generatePlaceholderId(credentialType);
|
|
212
|
+
const placeholderName = generatePlaceholderName(credentialType);
|
|
213
|
+
node.credentials[credentialType] = {
|
|
214
|
+
id: placeholderId,
|
|
215
|
+
name: placeholderName,
|
|
216
|
+
};
|
|
217
|
+
// If we're replacing an unknown type, remove the old one
|
|
218
|
+
if (problem.code === 'L3_UNKNOWN_CREDENTIAL_TYPE' && credentialType !== originalCredType) {
|
|
219
|
+
delete node.credentials[originalCredType];
|
|
220
|
+
}
|
|
221
|
+
const change = {
|
|
222
|
+
change_type: 'credential_add',
|
|
223
|
+
node_id: node.id,
|
|
224
|
+
node_name: node.name,
|
|
225
|
+
field: `credentials.${credentialType}`,
|
|
226
|
+
old_value: oldCredentials,
|
|
227
|
+
new_value: node.credentials,
|
|
228
|
+
confidence,
|
|
229
|
+
description: problem.code === 'L3_UNKNOWN_CREDENTIAL_TYPE'
|
|
230
|
+
? `Replaced unknown credential type "${originalCredType}" with "${credentialType}" (placeholder - needs configuration)`
|
|
231
|
+
: `Added placeholder credential "${credentialType}" (needs configuration)`,
|
|
232
|
+
};
|
|
233
|
+
logger.info('MissingCredentialFixer applied fix', {
|
|
234
|
+
node_id: node.id,
|
|
235
|
+
node_name: node.name,
|
|
236
|
+
credential_type: credentialType,
|
|
237
|
+
placeholder_name: placeholderName,
|
|
238
|
+
confidence,
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
success: true,
|
|
242
|
+
fixedWorkflow,
|
|
243
|
+
changes: [change],
|
|
244
|
+
confidence,
|
|
245
|
+
fixer_name: this.name,
|
|
246
|
+
problem_code: problem.code,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Node not found
|
|
251
|
+
if (!nodeFound) {
|
|
252
|
+
logger.warn('MissingCredentialFixer could not find target node', {
|
|
253
|
+
node_id: nodeId,
|
|
254
|
+
});
|
|
255
|
+
return {
|
|
256
|
+
success: false,
|
|
257
|
+
changes: [],
|
|
258
|
+
reason: `Node not found: ${nodeId}`,
|
|
259
|
+
confidence: 0,
|
|
260
|
+
fixer_name: this.name,
|
|
261
|
+
problem_code: problem.code,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// Should not reach here
|
|
265
|
+
return {
|
|
266
|
+
success: false,
|
|
267
|
+
changes: [],
|
|
268
|
+
reason: 'Unexpected error in MissingCredentialFixer',
|
|
269
|
+
confidence: 0,
|
|
270
|
+
fixer_name: this.name,
|
|
271
|
+
problem_code: problem.code,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get placeholder info for a credential type.
|
|
276
|
+
* Exposed for testing and external use.
|
|
277
|
+
*/
|
|
278
|
+
getPlaceholderInfo(credentialType) {
|
|
279
|
+
return CREDENTIAL_PLACEHOLDERS[credentialType];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get all known credential types.
|
|
283
|
+
* Useful for reporting and analysis.
|
|
284
|
+
*/
|
|
285
|
+
getKnownCredentialTypes() {
|
|
286
|
+
return Object.keys(CREDENTIAL_PLACEHOLDERS);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Classify an L3 problem to determine the appropriate action.
|
|
290
|
+
*
|
|
291
|
+
* RAG-2.2.93.6: L3 Problem Classification for pipeline routing:
|
|
292
|
+
* - 'fixable': Can be auto-fixed (MISSING_CREDENTIAL, UNKNOWN with suggestions)
|
|
293
|
+
* - 'gap': Catalog gap - record to factory.gaps (UNKNOWN without suggestions)
|
|
294
|
+
* - 'skip': Expected behavior, no action needed (CREDENTIALS_REDACTED)
|
|
295
|
+
*
|
|
296
|
+
* @param problem - The validation problem to classify
|
|
297
|
+
* @returns Classification result with action and reason
|
|
298
|
+
*/
|
|
299
|
+
static classifyL3Problem(problem) {
|
|
300
|
+
if (problem.level !== 'L3') {
|
|
301
|
+
return { action: 'skip', reason: 'Not an L3 problem' };
|
|
302
|
+
}
|
|
303
|
+
switch (problem.code) {
|
|
304
|
+
case 'L3_MISSING_CREDENTIAL':
|
|
305
|
+
// Fixable if we have the required info
|
|
306
|
+
if (problem.node_id && problem.credential_type) {
|
|
307
|
+
return { action: 'fixable', reason: 'Can add placeholder credential' };
|
|
308
|
+
}
|
|
309
|
+
return { action: 'skip', reason: 'Missing required node_id or credential_type' };
|
|
310
|
+
case 'L3_UNKNOWN_CREDENTIAL_TYPE':
|
|
311
|
+
// Fixable only if suggestions available
|
|
312
|
+
if (problem.node_id &&
|
|
313
|
+
problem.credential_type &&
|
|
314
|
+
Array.isArray(problem.suggestions) &&
|
|
315
|
+
problem.suggestions.length > 0) {
|
|
316
|
+
return { action: 'fixable', reason: 'Can replace with suggested credential type' };
|
|
317
|
+
}
|
|
318
|
+
// Without suggestions, this is a catalog gap
|
|
319
|
+
return {
|
|
320
|
+
action: 'gap',
|
|
321
|
+
reason: `Credential type "${problem.credential_type}" not in catalog and no suggestions available`,
|
|
322
|
+
};
|
|
323
|
+
case 'L3_CREDENTIALS_REDACTED':
|
|
324
|
+
// Expected behavior for exported workflows - skip
|
|
325
|
+
return {
|
|
326
|
+
action: 'skip',
|
|
327
|
+
reason: 'Credentials are redacted (expected for exported workflows)',
|
|
328
|
+
};
|
|
329
|
+
default:
|
|
330
|
+
return { action: 'skip', reason: `Unknown L3 problem code: ${problem.code}` };
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// Export singleton instance
|
|
335
|
+
export const missingCredentialFixer = new MissingCredentialFixer();
|
|
336
|
+
//# sourceMappingURL=missing-credential-fixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missing-credential-fixer.js","sourceRoot":"","sources":["../../../src/autofix/suggestion-fixers/missing-credential-fixer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Suggestion-Based Fixer Types
|
|
3
|
+
*
|
|
4
|
+
* RAG-2.2.92.4: Auto-fix Engine
|
|
5
|
+
* Types for fixers that leverage L2/L3 validation suggestions.
|
|
6
|
+
*
|
|
7
|
+
* @module suggestion-fixers/types
|
|
8
|
+
* @created 2026-01-21
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Deep clone any serializable object.
|
|
12
|
+
* Uses structuredClone (standard API, handles circular refs & typed arrays).
|
|
13
|
+
* On Node.js v24, JSON.parse/stringify is ~40% faster for plain data objects,
|
|
14
|
+
* but the absolute difference is negligible (~30μs per clone vs ~200ms per validation).
|
|
15
|
+
*/
|
|
16
|
+
export function deepClone(obj) {
|
|
17
|
+
if (typeof structuredClone === 'function') {
|
|
18
|
+
return structuredClone(obj);
|
|
19
|
+
}
|
|
20
|
+
return JSON.parse(JSON.stringify(obj));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Deep clone a workflow to avoid mutations.
|
|
24
|
+
* Alias for deepClone with Workflow constraint for type safety.
|
|
25
|
+
*/
|
|
26
|
+
export function cloneWorkflow(workflow) {
|
|
27
|
+
return deepClone(workflow);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/autofix/suggestion-fixers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4KH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAI,GAAM;IACjC,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAqB,QAAW;IAC3D,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typo Fixer
|
|
3
|
+
*
|
|
4
|
+
* RAG-2.2.92.4: Auto-fix Engine
|
|
5
|
+
* Fixes misspelled node types using L2 validator's didYouMean suggestions.
|
|
6
|
+
*
|
|
7
|
+
* Target success rate: 90%
|
|
8
|
+
*
|
|
9
|
+
* @module suggestion-fixers/typo-fixer
|
|
10
|
+
* @created 2026-01-21
|
|
11
|
+
*/
|
|
12
|
+
import { cloneWorkflow } from './types.js';
|
|
13
|
+
import { logger } from '@tsvika58/shared-utilities/logging';
|
|
14
|
+
/**
|
|
15
|
+
* Calculate Levenshtein distance for confidence scoring.
|
|
16
|
+
* Lower distance = higher confidence.
|
|
17
|
+
*/
|
|
18
|
+
function levenshteinDistance(str1, str2) {
|
|
19
|
+
const s1 = str1.toLowerCase();
|
|
20
|
+
const s2 = str2.toLowerCase();
|
|
21
|
+
if (s1 === s2)
|
|
22
|
+
return 0;
|
|
23
|
+
if (s1.length === 0)
|
|
24
|
+
return s2.length;
|
|
25
|
+
if (s2.length === 0)
|
|
26
|
+
return s1.length;
|
|
27
|
+
let prevRow = Array.from({ length: s1.length + 1 }, (_, i) => i);
|
|
28
|
+
let currRow = new Array(s1.length + 1);
|
|
29
|
+
for (let i = 1; i <= s2.length; i++) {
|
|
30
|
+
currRow[0] = i;
|
|
31
|
+
for (let j = 1; j <= s1.length; j++) {
|
|
32
|
+
const cost = s2.charAt(i - 1) === s1.charAt(j - 1) ? 0 : 1;
|
|
33
|
+
currRow[j] = Math.min(prevRow[j] + 1, currRow[j - 1] + 1, prevRow[j - 1] + cost);
|
|
34
|
+
}
|
|
35
|
+
[prevRow, currRow] = [currRow, prevRow];
|
|
36
|
+
}
|
|
37
|
+
return prevRow[s1.length];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Calculate confidence based on edit distance and string length.
|
|
41
|
+
* - Edit distance 1: 0.95 confidence
|
|
42
|
+
* - Edit distance 2: 0.90 confidence
|
|
43
|
+
* - Edit distance 3: 0.80 confidence
|
|
44
|
+
* - Edit distance 4+: 0.60 confidence (below auto-apply threshold)
|
|
45
|
+
*/
|
|
46
|
+
function calculateTypoConfidence(original, suggestion) {
|
|
47
|
+
const distance = levenshteinDistance(original, suggestion);
|
|
48
|
+
const maxLen = Math.max(original.length, suggestion.length);
|
|
49
|
+
// Base confidence from edit distance
|
|
50
|
+
let confidence;
|
|
51
|
+
if (distance === 1) {
|
|
52
|
+
confidence = 0.95;
|
|
53
|
+
}
|
|
54
|
+
else if (distance === 2) {
|
|
55
|
+
confidence = 0.90;
|
|
56
|
+
}
|
|
57
|
+
else if (distance === 3) {
|
|
58
|
+
confidence = 0.80;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
confidence = 0.60;
|
|
62
|
+
}
|
|
63
|
+
// Boost if suggestion has same suffix (likely same node family)
|
|
64
|
+
const origSuffix = original.split('.').pop()?.toLowerCase() || '';
|
|
65
|
+
const suggSuffix = suggestion.split('.').pop()?.toLowerCase() || '';
|
|
66
|
+
if (origSuffix.includes(suggSuffix) || suggSuffix.includes(origSuffix)) {
|
|
67
|
+
confidence = Math.min(confidence + 0.05, 0.98);
|
|
68
|
+
}
|
|
69
|
+
return confidence;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* TypoFixer - Fixes misspelled node types
|
|
73
|
+
*
|
|
74
|
+
* Uses L2 validator's didYouMean suggestions to automatically
|
|
75
|
+
* correct typos in node type names.
|
|
76
|
+
*
|
|
77
|
+
* Example fixes:
|
|
78
|
+
* - "HttpRequest" → "n8n-nodes-base.httpRequest"
|
|
79
|
+
* - "n8n-nodes-base.slck" → "n8n-nodes-base.slack"
|
|
80
|
+
* - "n8n-nodes-base.GoogleSheet" → "n8n-nodes-base.googleSheets"
|
|
81
|
+
*/
|
|
82
|
+
export class TypoFixer {
|
|
83
|
+
name = 'TypoFixer';
|
|
84
|
+
description = 'Fixes misspelled node types using L2 didYouMean suggestions';
|
|
85
|
+
supportedCodes = ['L2_UNKNOWN_NODE_TYPE'];
|
|
86
|
+
minConfidence = 0.85;
|
|
87
|
+
/**
|
|
88
|
+
* Check if this fixer can handle the problem.
|
|
89
|
+
*
|
|
90
|
+
* Requirements:
|
|
91
|
+
* 1. Problem must be L2 level
|
|
92
|
+
* 2. Problem code must be L2_UNKNOWN_NODE_TYPE
|
|
93
|
+
* 3. Must have at least one suggestion
|
|
94
|
+
*/
|
|
95
|
+
canFix(problem) {
|
|
96
|
+
return (problem.level === 'L2' &&
|
|
97
|
+
problem.code === 'L2_UNKNOWN_NODE_TYPE' &&
|
|
98
|
+
Array.isArray(problem.suggestions) &&
|
|
99
|
+
problem.suggestions.length > 0);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Apply the typo fix to the workflow.
|
|
103
|
+
*
|
|
104
|
+
* Takes the first (best) suggestion from the validator and
|
|
105
|
+
* replaces the node type in the workflow.
|
|
106
|
+
*/
|
|
107
|
+
fix(workflow, problem) {
|
|
108
|
+
// Validate prerequisites
|
|
109
|
+
if (!this.canFix(problem)) {
|
|
110
|
+
return {
|
|
111
|
+
success: false,
|
|
112
|
+
changes: [],
|
|
113
|
+
reason: 'Problem does not meet requirements for TypoFixer',
|
|
114
|
+
confidence: 0,
|
|
115
|
+
fixer_name: this.name,
|
|
116
|
+
problem_code: problem.code,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const suggestions = problem.suggestions;
|
|
120
|
+
const bestSuggestion = suggestions[0];
|
|
121
|
+
const originalType = problem.node_type || '';
|
|
122
|
+
// Calculate confidence based on edit distance
|
|
123
|
+
const confidence = calculateTypoConfidence(originalType, bestSuggestion);
|
|
124
|
+
logger.debug('TypoFixer attempting fix', {
|
|
125
|
+
node_id: problem.node_id,
|
|
126
|
+
original_type: originalType,
|
|
127
|
+
suggestion: bestSuggestion,
|
|
128
|
+
confidence,
|
|
129
|
+
});
|
|
130
|
+
// Find and update the node
|
|
131
|
+
const fixedWorkflow = cloneWorkflow(workflow);
|
|
132
|
+
let nodeFound = false;
|
|
133
|
+
for (const node of fixedWorkflow.nodes) {
|
|
134
|
+
// Match by node_id if available, otherwise by type
|
|
135
|
+
const isTargetNode = problem.node_id
|
|
136
|
+
? node.id === problem.node_id
|
|
137
|
+
: node.type === originalType;
|
|
138
|
+
if (isTargetNode) {
|
|
139
|
+
nodeFound = true;
|
|
140
|
+
const oldType = node.type;
|
|
141
|
+
node.type = bestSuggestion;
|
|
142
|
+
const change = {
|
|
143
|
+
change_type: 'node_type_update',
|
|
144
|
+
node_id: node.id,
|
|
145
|
+
node_name: node.name,
|
|
146
|
+
field: 'type',
|
|
147
|
+
old_value: oldType,
|
|
148
|
+
new_value: bestSuggestion,
|
|
149
|
+
confidence,
|
|
150
|
+
description: `Fixed typo in node type: "${oldType}" → "${bestSuggestion}"`,
|
|
151
|
+
};
|
|
152
|
+
logger.info('TypoFixer applied fix', {
|
|
153
|
+
node_id: node.id,
|
|
154
|
+
node_name: node.name,
|
|
155
|
+
old_type: oldType,
|
|
156
|
+
new_type: bestSuggestion,
|
|
157
|
+
confidence,
|
|
158
|
+
});
|
|
159
|
+
return {
|
|
160
|
+
success: true,
|
|
161
|
+
fixedWorkflow,
|
|
162
|
+
changes: [change],
|
|
163
|
+
confidence,
|
|
164
|
+
fixer_name: this.name,
|
|
165
|
+
problem_code: problem.code,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Node not found
|
|
170
|
+
if (!nodeFound) {
|
|
171
|
+
logger.warn('TypoFixer could not find target node', {
|
|
172
|
+
node_id: problem.node_id,
|
|
173
|
+
node_type: originalType,
|
|
174
|
+
});
|
|
175
|
+
return {
|
|
176
|
+
success: false,
|
|
177
|
+
changes: [],
|
|
178
|
+
reason: `Node not found: ${problem.node_id || originalType}`,
|
|
179
|
+
confidence: 0,
|
|
180
|
+
fixer_name: this.name,
|
|
181
|
+
problem_code: problem.code,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// Should not reach here, but return failure just in case
|
|
185
|
+
return {
|
|
186
|
+
success: false,
|
|
187
|
+
changes: [],
|
|
188
|
+
reason: 'Unexpected error in TypoFixer',
|
|
189
|
+
confidence: 0,
|
|
190
|
+
fixer_name: this.name,
|
|
191
|
+
problem_code: problem.code,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Export singleton instance
|
|
196
|
+
export const typoFixer = new TypoFixer();
|
|
197
|
+
//# sourceMappingURL=typo-fixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typo-fixer.js","sourceRoot":"","sources":["../../../src/autofix/suggestion-fixers/typo-fixer.ts"],"names":[],"mappings":"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"}
|