@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,575 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L5 Parameter Fixers
|
|
3
|
+
*
|
|
4
|
+
* RAG-2.2.93.8: L5 Parameter Fixers
|
|
5
|
+
* RAG-2.2.107.3: External Dependency Gap Recording
|
|
6
|
+
* Created: 2026-01-23
|
|
7
|
+
* Updated: 2026-02-01
|
|
8
|
+
*
|
|
9
|
+
* Fixes parameter validation problems from L5 validator:
|
|
10
|
+
* - L5_MISSING_REQUIRED_PARAMETER: adds required parameters with catalog defaults
|
|
11
|
+
* - L5_INVALID_PARAMETER_VALUE: resets invalid values to defaults
|
|
12
|
+
* - L5_UNKNOWN_PARAMETER: removes parameters not in schema
|
|
13
|
+
*
|
|
14
|
+
* RAG-2.2.107.3: External dependencies (URLs, file paths, credentials) are NOT auto-fixed.
|
|
15
|
+
* Instead, they are recorded as gaps with user guidance metadata.
|
|
16
|
+
*
|
|
17
|
+
* Uses ICatalogCache for parameter lookups and isSafelyDefaultable for
|
|
18
|
+
* determining safe default values based on parameter category.
|
|
19
|
+
*
|
|
20
|
+
* @module suggestion-fixers/l5-parameter-fixer
|
|
21
|
+
* @created 2026-01-23
|
|
22
|
+
*/
|
|
23
|
+
import { cloneWorkflow } from './types.js';
|
|
24
|
+
import { categorizeParameter, isSafelyDefaultable, classifyExternalDependency, } from '../../classification/l5-parameter-analyzer.js';
|
|
25
|
+
import { isExternalDepReclassificationEnabled } from '../../classification/severity-classifier.js';
|
|
26
|
+
import { logger } from '@tsvika58/shared-utilities/logging';
|
|
27
|
+
/**
|
|
28
|
+
* Extract node index from JSON path.
|
|
29
|
+
* @example "nodes[1].parameters.url" -> 1
|
|
30
|
+
*/
|
|
31
|
+
function extractNodeIndex(path) {
|
|
32
|
+
if (!path)
|
|
33
|
+
return -1;
|
|
34
|
+
const match = path.match(/nodes\[(\d+)\]/);
|
|
35
|
+
return match ? parseInt(match[1], 10) : -1;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract parameter name from JSON path.
|
|
39
|
+
* @example "nodes[1].parameters.url" -> "url"
|
|
40
|
+
*/
|
|
41
|
+
function extractParameterFromPath(path) {
|
|
42
|
+
if (!path)
|
|
43
|
+
return '';
|
|
44
|
+
const match = path.match(/\.parameters\.(.+)$/);
|
|
45
|
+
return match ? match[1] : '';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parse default value from string representation.
|
|
49
|
+
* Handles various types: strings, numbers, booleans, objects.
|
|
50
|
+
*/
|
|
51
|
+
function parseDefaultValue(defaultStr) {
|
|
52
|
+
if (defaultStr === null || defaultStr === undefined)
|
|
53
|
+
return undefined;
|
|
54
|
+
if (defaultStr === '')
|
|
55
|
+
return '';
|
|
56
|
+
// Try parsing as JSON first
|
|
57
|
+
try {
|
|
58
|
+
return JSON.parse(defaultStr);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Not valid JSON, return as string
|
|
62
|
+
return defaultStr;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ============================================================
|
|
66
|
+
// L5 MISSING PARAMETER FIXER
|
|
67
|
+
// ============================================================
|
|
68
|
+
/**
|
|
69
|
+
* L5MissingParameterFixer - Adds missing required parameters with catalog defaults
|
|
70
|
+
*
|
|
71
|
+
* Handles L5_MISSING_REQUIRED_PARAMETER problems by:
|
|
72
|
+
* 1. Looking up parameter definition from catalog
|
|
73
|
+
* 2. Categorizing parameter to determine safe defaults
|
|
74
|
+
* 3. Adding parameter with appropriate default value
|
|
75
|
+
*
|
|
76
|
+
* Confidence varies by parameter category:
|
|
77
|
+
* - http_method: 0.90 (safe default: 'GET')
|
|
78
|
+
* - time_unit: 0.85 (safe default: 'days')
|
|
79
|
+
* - date_field: 0.80 (safe default: '={{ $now }}')
|
|
80
|
+
* - binary_field: 0.95 (safe default: '={{ $binary.data }}')
|
|
81
|
+
* - other with schema default: 0.60-0.75
|
|
82
|
+
* - credential/url/file_path: 0 (never auto-fix)
|
|
83
|
+
*/
|
|
84
|
+
export class L5MissingParameterFixer {
|
|
85
|
+
name = 'L5MissingParameterFixer';
|
|
86
|
+
description = 'Adds missing required parameters with catalog-defined defaults';
|
|
87
|
+
supportedCodes = ['L5_MISSING_REQUIRED_PARAMETER'];
|
|
88
|
+
minConfidence = 0.60;
|
|
89
|
+
catalogCache = null;
|
|
90
|
+
/**
|
|
91
|
+
* Set the catalog cache for parameter lookups.
|
|
92
|
+
*/
|
|
93
|
+
setCatalogCache(cache) {
|
|
94
|
+
this.catalogCache = cache;
|
|
95
|
+
}
|
|
96
|
+
canFix(problem) {
|
|
97
|
+
return problem.level === 'L5' && problem.code === 'L5_MISSING_REQUIRED_PARAMETER';
|
|
98
|
+
}
|
|
99
|
+
fix(workflow, problem) {
|
|
100
|
+
if (!this.canFix(problem)) {
|
|
101
|
+
return this.createFailure(problem, 'Problem does not match L5 MISSING_REQUIRED_PARAMETER');
|
|
102
|
+
}
|
|
103
|
+
const { nodeId, nodeType, parameterName } = this.extractProblemDetails(problem);
|
|
104
|
+
if (!nodeId && !problem.path) {
|
|
105
|
+
return this.createFailure(problem, 'Missing node identification in problem');
|
|
106
|
+
}
|
|
107
|
+
if (!parameterName) {
|
|
108
|
+
return this.createFailure(problem, 'Could not determine parameter name from problem');
|
|
109
|
+
}
|
|
110
|
+
// Find the node in workflow
|
|
111
|
+
const nodeIndex = this.findNodeIndex(workflow, problem);
|
|
112
|
+
if (nodeIndex === -1) {
|
|
113
|
+
return this.createFailure(problem, `Node not found in workflow`);
|
|
114
|
+
}
|
|
115
|
+
const node = workflow.nodes[nodeIndex];
|
|
116
|
+
const resolvedNodeType = nodeType || node.type;
|
|
117
|
+
// Categorize parameter to determine safe default
|
|
118
|
+
const category = categorizeParameter(parameterName, resolvedNodeType, problem.path);
|
|
119
|
+
// RAG-2.2.107.3: Check for external dependencies FIRST
|
|
120
|
+
// When feature flag is enabled, external deps are recorded as gaps, not auto-fixed
|
|
121
|
+
if (isExternalDepReclassificationEnabled()) {
|
|
122
|
+
const externalClassification = classifyExternalDependency(category, resolvedNodeType, parameterName);
|
|
123
|
+
if (externalClassification.isExternal) {
|
|
124
|
+
return this.createGapResult(problem, node, parameterName, externalClassification);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const { isSafe, suggestedDefault, confidence } = isSafelyDefaultable(category, null, // Will look up from catalog below
|
|
128
|
+
parameterName);
|
|
129
|
+
// Try to get default from catalog if available
|
|
130
|
+
let defaultValue = suggestedDefault;
|
|
131
|
+
let finalConfidence = confidence;
|
|
132
|
+
if (this.catalogCache && !isSafe) {
|
|
133
|
+
const catalogDefault = this.lookupCatalogDefault(node, resolvedNodeType, parameterName);
|
|
134
|
+
if (catalogDefault !== undefined) {
|
|
135
|
+
defaultValue = catalogDefault;
|
|
136
|
+
finalConfidence = 0.75; // Schema-provided default
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Cannot fix if no safe default
|
|
140
|
+
if (defaultValue === null || defaultValue === undefined) {
|
|
141
|
+
return this.createFailure(problem, `No safe default for parameter "${parameterName}" (category: ${category})`);
|
|
142
|
+
}
|
|
143
|
+
// Clone and apply fix
|
|
144
|
+
const fixedWorkflow = cloneWorkflow(workflow);
|
|
145
|
+
const fixedNode = fixedWorkflow.nodes[nodeIndex];
|
|
146
|
+
if (!fixedNode.parameters) {
|
|
147
|
+
fixedNode.parameters = {};
|
|
148
|
+
}
|
|
149
|
+
// Handle nested parameters (e.g., "additionalFields.timeout")
|
|
150
|
+
this.setNestedParameter(fixedNode.parameters, parameterName, defaultValue);
|
|
151
|
+
const change = {
|
|
152
|
+
change_type: 'parameter_update',
|
|
153
|
+
node_id: node.id,
|
|
154
|
+
node_name: node.name,
|
|
155
|
+
field: `parameters.${parameterName}`,
|
|
156
|
+
old_value: undefined,
|
|
157
|
+
new_value: defaultValue,
|
|
158
|
+
confidence: finalConfidence,
|
|
159
|
+
description: `Added missing required parameter "${parameterName}" with default: ${JSON.stringify(defaultValue)}`,
|
|
160
|
+
};
|
|
161
|
+
logger.info('L5MissingParameterFixer applied fix', {
|
|
162
|
+
node_id: node.id,
|
|
163
|
+
parameter: parameterName,
|
|
164
|
+
category,
|
|
165
|
+
default_value: defaultValue,
|
|
166
|
+
confidence: finalConfidence,
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
success: true,
|
|
170
|
+
fixedWorkflow,
|
|
171
|
+
changes: [change],
|
|
172
|
+
confidence: finalConfidence,
|
|
173
|
+
fixer_name: this.name,
|
|
174
|
+
problem_code: problem.code,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
extractProblemDetails(problem) {
|
|
178
|
+
const nodeId = problem.node_id;
|
|
179
|
+
const nodeType = problem.node_type;
|
|
180
|
+
// Try to extract parameter name from various sources
|
|
181
|
+
let parameterName = '';
|
|
182
|
+
// From problem details
|
|
183
|
+
if (problem.details?.parameter_name) {
|
|
184
|
+
parameterName = problem.details.parameter_name;
|
|
185
|
+
}
|
|
186
|
+
// From path
|
|
187
|
+
else if (problem.path) {
|
|
188
|
+
parameterName = extractParameterFromPath(problem.path);
|
|
189
|
+
}
|
|
190
|
+
// From message (fallback)
|
|
191
|
+
else if (problem.message) {
|
|
192
|
+
const match = problem.message.match(/parameter[:\s]+["']?([^"'\s]+)/i);
|
|
193
|
+
if (match)
|
|
194
|
+
parameterName = match[1];
|
|
195
|
+
}
|
|
196
|
+
return { nodeId, nodeType, parameterName };
|
|
197
|
+
}
|
|
198
|
+
findNodeIndex(workflow, problem) {
|
|
199
|
+
// Try by node_id first
|
|
200
|
+
if (problem.node_id) {
|
|
201
|
+
const idx = workflow.nodes.findIndex((n) => n.id === problem.node_id);
|
|
202
|
+
if (idx !== -1)
|
|
203
|
+
return idx;
|
|
204
|
+
}
|
|
205
|
+
// Try by node_name
|
|
206
|
+
if (problem.node_name) {
|
|
207
|
+
const idx = workflow.nodes.findIndex((n) => n.name === problem.node_name);
|
|
208
|
+
if (idx !== -1)
|
|
209
|
+
return idx;
|
|
210
|
+
}
|
|
211
|
+
// Try by path
|
|
212
|
+
if (problem.path) {
|
|
213
|
+
const idx = extractNodeIndex(problem.path);
|
|
214
|
+
if (idx >= 0 && idx < workflow.nodes.length)
|
|
215
|
+
return idx;
|
|
216
|
+
}
|
|
217
|
+
return -1;
|
|
218
|
+
}
|
|
219
|
+
lookupCatalogDefault(node, nodeType, parameterName) {
|
|
220
|
+
// This would be async in real implementation, but for sync fix() we return undefined
|
|
221
|
+
// The catalog lookup should be done before calling fix() and passed via problem.details
|
|
222
|
+
// For now, check if problem has schema_default in details
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
setNestedParameter(params, path, value) {
|
|
226
|
+
const parts = path.split('.');
|
|
227
|
+
let current = params;
|
|
228
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
229
|
+
const part = parts[i];
|
|
230
|
+
if (!current[part] || typeof current[part] !== 'object') {
|
|
231
|
+
current[part] = {};
|
|
232
|
+
}
|
|
233
|
+
current = current[part];
|
|
234
|
+
}
|
|
235
|
+
current[parts[parts.length - 1]] = value;
|
|
236
|
+
}
|
|
237
|
+
createFailure(problem, reason) {
|
|
238
|
+
return {
|
|
239
|
+
success: false,
|
|
240
|
+
changes: [],
|
|
241
|
+
reason,
|
|
242
|
+
confidence: 0,
|
|
243
|
+
fixer_name: this.name,
|
|
244
|
+
problem_code: problem.code,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* RAG-2.2.107.3: Create a gap result for external dependencies
|
|
249
|
+
* External deps are not auto-fixed; they're recorded as gaps with user guidance
|
|
250
|
+
*/
|
|
251
|
+
createGapResult(problem, node, parameterName, externalClassification) {
|
|
252
|
+
const gapResult = {
|
|
253
|
+
action: 'gap_recorded',
|
|
254
|
+
gap_type: externalClassification.type,
|
|
255
|
+
user_action: externalClassification.userAction,
|
|
256
|
+
example_value: externalClassification.example,
|
|
257
|
+
blocks_k2: false, // External deps don't block K2
|
|
258
|
+
k2_mockable: true, // External deps can be mocked in K2
|
|
259
|
+
message: `External dependency: ${externalClassification.userAction}`,
|
|
260
|
+
};
|
|
261
|
+
logger.info('L5MissingParameterFixer recorded external dep as gap', {
|
|
262
|
+
node_id: node.id,
|
|
263
|
+
node_name: node.name,
|
|
264
|
+
parameter: parameterName,
|
|
265
|
+
gap_type: externalClassification.type,
|
|
266
|
+
user_action: externalClassification.userAction,
|
|
267
|
+
});
|
|
268
|
+
return {
|
|
269
|
+
success: false, // Not "fixed" in the traditional sense
|
|
270
|
+
changes: [],
|
|
271
|
+
reason: `External dependency recorded as gap: ${externalClassification.userAction}`,
|
|
272
|
+
confidence: 0,
|
|
273
|
+
fixer_name: this.name,
|
|
274
|
+
problem_code: problem.code,
|
|
275
|
+
external_dep_gap: gapResult,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// ============================================================
|
|
280
|
+
// L5 INVALID PARAMETER FIXER
|
|
281
|
+
// ============================================================
|
|
282
|
+
/**
|
|
283
|
+
* L5InvalidParameterFixer - Resets invalid parameter values to defaults
|
|
284
|
+
*
|
|
285
|
+
* Handles L5_INVALID_PARAMETER_VALUE problems by:
|
|
286
|
+
* 1. Looking up valid options from catalog
|
|
287
|
+
* 2. Resetting to default_value if available
|
|
288
|
+
* 3. Using first valid option as fallback
|
|
289
|
+
*
|
|
290
|
+
* Confidence: 0.70 (moderate - user intent unclear)
|
|
291
|
+
*/
|
|
292
|
+
export class L5InvalidParameterFixer {
|
|
293
|
+
name = 'L5InvalidParameterFixer';
|
|
294
|
+
description = 'Resets invalid parameter values to catalog defaults';
|
|
295
|
+
supportedCodes = ['L5_INVALID_PARAMETER_VALUE'];
|
|
296
|
+
minConfidence = 0.70;
|
|
297
|
+
catalogCache = null;
|
|
298
|
+
setCatalogCache(cache) {
|
|
299
|
+
this.catalogCache = cache;
|
|
300
|
+
}
|
|
301
|
+
canFix(problem) {
|
|
302
|
+
return problem.level === 'L5' && problem.code === 'L5_INVALID_PARAMETER_VALUE';
|
|
303
|
+
}
|
|
304
|
+
fix(workflow, problem) {
|
|
305
|
+
if (!this.canFix(problem)) {
|
|
306
|
+
return this.createFailure(problem, 'Problem does not match L5 INVALID_PARAMETER_VALUE');
|
|
307
|
+
}
|
|
308
|
+
const nodeIndex = this.findNodeIndex(workflow, problem);
|
|
309
|
+
if (nodeIndex === -1) {
|
|
310
|
+
return this.createFailure(problem, 'Node not found in workflow');
|
|
311
|
+
}
|
|
312
|
+
const parameterName = this.extractParameterName(problem);
|
|
313
|
+
if (!parameterName) {
|
|
314
|
+
return this.createFailure(problem, 'Could not determine parameter name');
|
|
315
|
+
}
|
|
316
|
+
const node = workflow.nodes[nodeIndex];
|
|
317
|
+
const currentValue = this.getNestedValue(node.parameters || {}, parameterName);
|
|
318
|
+
// Determine default value from problem details or catalog
|
|
319
|
+
let defaultValue = undefined;
|
|
320
|
+
// Check problem details for default
|
|
321
|
+
if (problem.details?.default_value !== undefined) {
|
|
322
|
+
defaultValue = problem.details.default_value;
|
|
323
|
+
}
|
|
324
|
+
// Check problem details for valid options
|
|
325
|
+
else if (problem.details?.valid_options && Array.isArray(problem.details.valid_options)) {
|
|
326
|
+
defaultValue = problem.details.valid_options[0];
|
|
327
|
+
}
|
|
328
|
+
if (defaultValue === undefined) {
|
|
329
|
+
return this.createFailure(problem, `No default value available for parameter "${parameterName}"`);
|
|
330
|
+
}
|
|
331
|
+
// Apply fix
|
|
332
|
+
const fixedWorkflow = cloneWorkflow(workflow);
|
|
333
|
+
const fixedNode = fixedWorkflow.nodes[nodeIndex];
|
|
334
|
+
if (!fixedNode.parameters) {
|
|
335
|
+
fixedNode.parameters = {};
|
|
336
|
+
}
|
|
337
|
+
this.setNestedValue(fixedNode.parameters, parameterName, defaultValue);
|
|
338
|
+
const change = {
|
|
339
|
+
change_type: 'parameter_update',
|
|
340
|
+
node_id: node.id,
|
|
341
|
+
node_name: node.name,
|
|
342
|
+
field: `parameters.${parameterName}`,
|
|
343
|
+
old_value: currentValue,
|
|
344
|
+
new_value: defaultValue,
|
|
345
|
+
confidence: 0.70,
|
|
346
|
+
description: `Reset invalid parameter "${parameterName}" from ${JSON.stringify(currentValue)} to ${JSON.stringify(defaultValue)}`,
|
|
347
|
+
};
|
|
348
|
+
logger.info('L5InvalidParameterFixer applied fix', {
|
|
349
|
+
node_id: node.id,
|
|
350
|
+
parameter: parameterName,
|
|
351
|
+
old_value: currentValue,
|
|
352
|
+
new_value: defaultValue,
|
|
353
|
+
});
|
|
354
|
+
return {
|
|
355
|
+
success: true,
|
|
356
|
+
fixedWorkflow,
|
|
357
|
+
changes: [change],
|
|
358
|
+
confidence: 0.70,
|
|
359
|
+
fixer_name: this.name,
|
|
360
|
+
problem_code: problem.code,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
findNodeIndex(workflow, problem) {
|
|
364
|
+
if (problem.node_id) {
|
|
365
|
+
const idx = workflow.nodes.findIndex((n) => n.id === problem.node_id);
|
|
366
|
+
if (idx !== -1)
|
|
367
|
+
return idx;
|
|
368
|
+
}
|
|
369
|
+
if (problem.node_name) {
|
|
370
|
+
const idx = workflow.nodes.findIndex((n) => n.name === problem.node_name);
|
|
371
|
+
if (idx !== -1)
|
|
372
|
+
return idx;
|
|
373
|
+
}
|
|
374
|
+
if (problem.path) {
|
|
375
|
+
const idx = extractNodeIndex(problem.path);
|
|
376
|
+
if (idx >= 0 && idx < workflow.nodes.length)
|
|
377
|
+
return idx;
|
|
378
|
+
}
|
|
379
|
+
return -1;
|
|
380
|
+
}
|
|
381
|
+
extractParameterName(problem) {
|
|
382
|
+
if (problem.details?.parameter_name) {
|
|
383
|
+
return problem.details.parameter_name;
|
|
384
|
+
}
|
|
385
|
+
if (problem.path) {
|
|
386
|
+
return extractParameterFromPath(problem.path);
|
|
387
|
+
}
|
|
388
|
+
return '';
|
|
389
|
+
}
|
|
390
|
+
getNestedValue(obj, path) {
|
|
391
|
+
const parts = path.split('.');
|
|
392
|
+
let current = obj;
|
|
393
|
+
for (const part of parts) {
|
|
394
|
+
if (current === null || current === undefined || typeof current !== 'object') {
|
|
395
|
+
return undefined;
|
|
396
|
+
}
|
|
397
|
+
current = current[part];
|
|
398
|
+
}
|
|
399
|
+
return current;
|
|
400
|
+
}
|
|
401
|
+
setNestedValue(obj, path, value) {
|
|
402
|
+
const parts = path.split('.');
|
|
403
|
+
let current = obj;
|
|
404
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
405
|
+
const part = parts[i];
|
|
406
|
+
if (!current[part] || typeof current[part] !== 'object') {
|
|
407
|
+
current[part] = {};
|
|
408
|
+
}
|
|
409
|
+
current = current[part];
|
|
410
|
+
}
|
|
411
|
+
current[parts[parts.length - 1]] = value;
|
|
412
|
+
}
|
|
413
|
+
createFailure(problem, reason) {
|
|
414
|
+
return {
|
|
415
|
+
success: false,
|
|
416
|
+
changes: [],
|
|
417
|
+
reason,
|
|
418
|
+
confidence: 0,
|
|
419
|
+
fixer_name: this.name,
|
|
420
|
+
problem_code: problem.code,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
// ============================================================
|
|
425
|
+
// L5 UNKNOWN PARAMETER FIXER
|
|
426
|
+
// ============================================================
|
|
427
|
+
/**
|
|
428
|
+
* L5UnknownParameterFixer - Removes parameters not in node schema
|
|
429
|
+
*
|
|
430
|
+
* Handles L5_UNKNOWN_PARAMETER problems by:
|
|
431
|
+
* 1. Identifying parameters not defined in node's operation schema
|
|
432
|
+
* 2. Removing the unknown parameter from node.parameters
|
|
433
|
+
*
|
|
434
|
+
* Confidence: 0.80 (safe - removes likely typos or deprecated params)
|
|
435
|
+
*/
|
|
436
|
+
export class L5UnknownParameterFixer {
|
|
437
|
+
name = 'L5UnknownParameterFixer';
|
|
438
|
+
description = 'Removes parameters not defined in node schema';
|
|
439
|
+
supportedCodes = ['L5_UNKNOWN_PARAMETER'];
|
|
440
|
+
minConfidence = 0.80;
|
|
441
|
+
canFix(problem) {
|
|
442
|
+
return problem.level === 'L5' && problem.code === 'L5_UNKNOWN_PARAMETER';
|
|
443
|
+
}
|
|
444
|
+
fix(workflow, problem) {
|
|
445
|
+
if (!this.canFix(problem)) {
|
|
446
|
+
return this.createFailure(problem, 'Problem does not match L5 UNKNOWN_PARAMETER');
|
|
447
|
+
}
|
|
448
|
+
const nodeIndex = this.findNodeIndex(workflow, problem);
|
|
449
|
+
if (nodeIndex === -1) {
|
|
450
|
+
return this.createFailure(problem, 'Node not found in workflow');
|
|
451
|
+
}
|
|
452
|
+
const parameterName = this.extractParameterName(problem);
|
|
453
|
+
if (!parameterName) {
|
|
454
|
+
return this.createFailure(problem, 'Could not determine parameter name');
|
|
455
|
+
}
|
|
456
|
+
const node = workflow.nodes[nodeIndex];
|
|
457
|
+
const currentValue = this.getNestedValue(node.parameters || {}, parameterName);
|
|
458
|
+
// Apply fix
|
|
459
|
+
const fixedWorkflow = cloneWorkflow(workflow);
|
|
460
|
+
const fixedNode = fixedWorkflow.nodes[nodeIndex];
|
|
461
|
+
if (!fixedNode.parameters) {
|
|
462
|
+
return this.createFailure(problem, 'Node has no parameters to remove');
|
|
463
|
+
}
|
|
464
|
+
// Remove the unknown parameter
|
|
465
|
+
const removed = this.deleteNestedValue(fixedNode.parameters, parameterName);
|
|
466
|
+
if (!removed) {
|
|
467
|
+
return this.createFailure(problem, `Parameter "${parameterName}" not found in node`);
|
|
468
|
+
}
|
|
469
|
+
const change = {
|
|
470
|
+
change_type: 'parameter_update',
|
|
471
|
+
node_id: node.id,
|
|
472
|
+
node_name: node.name,
|
|
473
|
+
field: `parameters.${parameterName}`,
|
|
474
|
+
old_value: currentValue,
|
|
475
|
+
new_value: undefined,
|
|
476
|
+
confidence: 0.80,
|
|
477
|
+
description: `Removed unknown parameter "${parameterName}" (was: ${JSON.stringify(currentValue)})`,
|
|
478
|
+
};
|
|
479
|
+
logger.info('L5UnknownParameterFixer applied fix', {
|
|
480
|
+
node_id: node.id,
|
|
481
|
+
parameter: parameterName,
|
|
482
|
+
removed_value: currentValue,
|
|
483
|
+
});
|
|
484
|
+
return {
|
|
485
|
+
success: true,
|
|
486
|
+
fixedWorkflow,
|
|
487
|
+
changes: [change],
|
|
488
|
+
confidence: 0.80,
|
|
489
|
+
fixer_name: this.name,
|
|
490
|
+
problem_code: problem.code,
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
findNodeIndex(workflow, problem) {
|
|
494
|
+
if (problem.node_id) {
|
|
495
|
+
const idx = workflow.nodes.findIndex((n) => n.id === problem.node_id);
|
|
496
|
+
if (idx !== -1)
|
|
497
|
+
return idx;
|
|
498
|
+
}
|
|
499
|
+
if (problem.node_name) {
|
|
500
|
+
const idx = workflow.nodes.findIndex((n) => n.name === problem.node_name);
|
|
501
|
+
if (idx !== -1)
|
|
502
|
+
return idx;
|
|
503
|
+
}
|
|
504
|
+
if (problem.path) {
|
|
505
|
+
const idx = extractNodeIndex(problem.path);
|
|
506
|
+
if (idx >= 0 && idx < workflow.nodes.length)
|
|
507
|
+
return idx;
|
|
508
|
+
}
|
|
509
|
+
return -1;
|
|
510
|
+
}
|
|
511
|
+
extractParameterName(problem) {
|
|
512
|
+
if (problem.details?.parameter_name) {
|
|
513
|
+
return problem.details.parameter_name;
|
|
514
|
+
}
|
|
515
|
+
if (problem.path) {
|
|
516
|
+
return extractParameterFromPath(problem.path);
|
|
517
|
+
}
|
|
518
|
+
return '';
|
|
519
|
+
}
|
|
520
|
+
getNestedValue(obj, path) {
|
|
521
|
+
const parts = path.split('.');
|
|
522
|
+
let current = obj;
|
|
523
|
+
for (const part of parts) {
|
|
524
|
+
if (current === null || current === undefined || typeof current !== 'object') {
|
|
525
|
+
return undefined;
|
|
526
|
+
}
|
|
527
|
+
current = current[part];
|
|
528
|
+
}
|
|
529
|
+
return current;
|
|
530
|
+
}
|
|
531
|
+
deleteNestedValue(obj, path) {
|
|
532
|
+
const parts = path.split('.');
|
|
533
|
+
let current = obj;
|
|
534
|
+
// Navigate to parent of target
|
|
535
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
536
|
+
const part = parts[i];
|
|
537
|
+
if (!current[part] || typeof current[part] !== 'object') {
|
|
538
|
+
return false;
|
|
539
|
+
}
|
|
540
|
+
current = current[part];
|
|
541
|
+
}
|
|
542
|
+
const lastPart = parts[parts.length - 1];
|
|
543
|
+
if (lastPart in current) {
|
|
544
|
+
delete current[lastPart];
|
|
545
|
+
return true;
|
|
546
|
+
}
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
createFailure(problem, reason) {
|
|
550
|
+
return {
|
|
551
|
+
success: false,
|
|
552
|
+
changes: [],
|
|
553
|
+
reason,
|
|
554
|
+
confidence: 0,
|
|
555
|
+
fixer_name: this.name,
|
|
556
|
+
problem_code: problem.code,
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
// ============================================================
|
|
561
|
+
// EXPORTS
|
|
562
|
+
// ============================================================
|
|
563
|
+
// Export singleton instances
|
|
564
|
+
export const l5MissingParameterFixer = new L5MissingParameterFixer();
|
|
565
|
+
export const l5InvalidParameterFixer = new L5InvalidParameterFixer();
|
|
566
|
+
export const l5UnknownParameterFixer = new L5UnknownParameterFixer();
|
|
567
|
+
/**
|
|
568
|
+
* All L5 parameter fixers for convenient import
|
|
569
|
+
*/
|
|
570
|
+
export const l5ParameterFixers = [
|
|
571
|
+
l5MissingParameterFixer,
|
|
572
|
+
l5InvalidParameterFixer,
|
|
573
|
+
l5UnknownParameterFixer,
|
|
574
|
+
];
|
|
575
|
+
//# sourceMappingURL=l5-parameter-fixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l5-parameter-fixer.js","sourceRoot":"","sources":["../../../src/autofix/suggestion-fixers/l5-parameter-fixer.ts"],"names":[],"mappings":"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"}
|