agentic-qe 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/package.json +6 -1
- package/v3/CHANGELOG.md +88 -0
- package/v3/dist/cli/bundle.js +18794 -15534
- package/v3/dist/cli/command-registry.d.ts +55 -0
- package/v3/dist/cli/command-registry.d.ts.map +1 -0
- package/v3/dist/cli/command-registry.js +103 -0
- package/v3/dist/cli/command-registry.js.map +1 -0
- package/v3/dist/cli/commands/code.d.ts +9 -0
- package/v3/dist/cli/commands/code.d.ts.map +1 -0
- package/v3/dist/cli/commands/code.js +254 -0
- package/v3/dist/cli/commands/code.js.map +1 -0
- package/v3/dist/cli/commands/completions.d.ts +8 -0
- package/v3/dist/cli/commands/completions.d.ts.map +1 -0
- package/v3/dist/cli/commands/completions.js +99 -0
- package/v3/dist/cli/commands/completions.js.map +1 -0
- package/v3/dist/cli/commands/coverage.d.ts +9 -0
- package/v3/dist/cli/commands/coverage.d.ts.map +1 -0
- package/v3/dist/cli/commands/coverage.js +208 -0
- package/v3/dist/cli/commands/coverage.js.map +1 -0
- package/v3/dist/cli/commands/fleet.d.ts +11 -0
- package/v3/dist/cli/commands/fleet.d.ts.map +1 -0
- package/v3/dist/cli/commands/fleet.js +338 -0
- package/v3/dist/cli/commands/fleet.js.map +1 -0
- package/v3/dist/cli/commands/migrate.d.ts +9 -0
- package/v3/dist/cli/commands/migrate.d.ts.map +1 -0
- package/v3/dist/cli/commands/migrate.js +566 -0
- package/v3/dist/cli/commands/migrate.js.map +1 -0
- package/v3/dist/cli/commands/quality.d.ts +9 -0
- package/v3/dist/cli/commands/quality.d.ts.map +1 -0
- package/v3/dist/cli/commands/quality.js +40 -0
- package/v3/dist/cli/commands/quality.js.map +1 -0
- package/v3/dist/cli/commands/security.d.ts +9 -0
- package/v3/dist/cli/commands/security.d.ts.map +1 -0
- package/v3/dist/cli/commands/security.js +124 -0
- package/v3/dist/cli/commands/security.js.map +1 -0
- package/v3/dist/cli/commands/sync.d.ts +19 -0
- package/v3/dist/cli/commands/sync.d.ts.map +1 -0
- package/v3/dist/cli/commands/sync.js +283 -0
- package/v3/dist/cli/commands/sync.js.map +1 -0
- package/v3/dist/cli/commands/test.d.ts +9 -0
- package/v3/dist/cli/commands/test.d.ts.map +1 -0
- package/v3/dist/cli/commands/test.js +166 -0
- package/v3/dist/cli/commands/test.js.map +1 -0
- package/v3/dist/cli/handlers/agent-handler.d.ts +20 -0
- package/v3/dist/cli/handlers/agent-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/agent-handler.js +158 -0
- package/v3/dist/cli/handlers/agent-handler.js.map +1 -0
- package/v3/dist/cli/handlers/domain-handler.d.ts +20 -0
- package/v3/dist/cli/handlers/domain-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/domain-handler.js +115 -0
- package/v3/dist/cli/handlers/domain-handler.js.map +1 -0
- package/v3/dist/cli/handlers/index.d.ts +13 -0
- package/v3/dist/cli/handlers/index.d.ts.map +1 -0
- package/v3/dist/cli/handlers/index.js +15 -0
- package/v3/dist/cli/handlers/index.js.map +1 -0
- package/v3/dist/cli/handlers/init-handler.d.ts +38 -0
- package/v3/dist/cli/handlers/init-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/init-handler.js +288 -0
- package/v3/dist/cli/handlers/init-handler.js.map +1 -0
- package/v3/dist/cli/handlers/interfaces.d.ts +104 -0
- package/v3/dist/cli/handlers/interfaces.d.ts.map +1 -0
- package/v3/dist/cli/handlers/interfaces.js +109 -0
- package/v3/dist/cli/handlers/interfaces.js.map +1 -0
- package/v3/dist/cli/handlers/protocol-handler.d.ts +19 -0
- package/v3/dist/cli/handlers/protocol-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/protocol-handler.js +79 -0
- package/v3/dist/cli/handlers/protocol-handler.js.map +1 -0
- package/v3/dist/cli/handlers/status-handler.d.ts +30 -0
- package/v3/dist/cli/handlers/status-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/status-handler.js +218 -0
- package/v3/dist/cli/handlers/status-handler.js.map +1 -0
- package/v3/dist/cli/handlers/task-handler.d.ts +22 -0
- package/v3/dist/cli/handlers/task-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/task-handler.js +271 -0
- package/v3/dist/cli/handlers/task-handler.js.map +1 -0
- package/v3/dist/cli/index.d.ts +4 -0
- package/v3/dist/cli/index.d.ts.map +1 -1
- package/v3/dist/cli/index.js +48 -2677
- package/v3/dist/cli/index.js.map +1 -1
- package/v3/dist/cli/wizards/core/index.d.ts +11 -0
- package/v3/dist/cli/wizards/core/index.d.ts.map +1 -0
- package/v3/dist/cli/wizards/core/index.js +15 -0
- package/v3/dist/cli/wizards/core/index.js.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-base.d.ts +87 -0
- package/v3/dist/cli/wizards/core/wizard-base.d.ts.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-base.js +120 -0
- package/v3/dist/cli/wizards/core/wizard-base.js.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-command.d.ts +182 -0
- package/v3/dist/cli/wizards/core/wizard-command.d.ts.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-command.js +45 -0
- package/v3/dist/cli/wizards/core/wizard-command.js.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-step.d.ts +109 -0
- package/v3/dist/cli/wizards/core/wizard-step.d.ts.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-step.js +384 -0
- package/v3/dist/cli/wizards/core/wizard-step.js.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-utils.d.ts +117 -0
- package/v3/dist/cli/wizards/core/wizard-utils.d.ts.map +1 -0
- package/v3/dist/cli/wizards/core/wizard-utils.js +291 -0
- package/v3/dist/cli/wizards/core/wizard-utils.js.map +1 -0
- package/v3/dist/cli/wizards/coverage-wizard.d.ts +13 -68
- package/v3/dist/cli/wizards/coverage-wizard.d.ts.map +1 -1
- package/v3/dist/cli/wizards/coverage-wizard.js +127 -391
- package/v3/dist/cli/wizards/coverage-wizard.js.map +1 -1
- package/v3/dist/cli/wizards/fleet-wizard.d.ts +13 -64
- package/v3/dist/cli/wizards/fleet-wizard.d.ts.map +1 -1
- package/v3/dist/cli/wizards/fleet-wizard.js +150 -363
- package/v3/dist/cli/wizards/fleet-wizard.js.map +1 -1
- package/v3/dist/cli/wizards/index.d.ts +2 -0
- package/v3/dist/cli/wizards/index.d.ts.map +1 -1
- package/v3/dist/cli/wizards/index.js +3 -0
- package/v3/dist/cli/wizards/index.js.map +1 -1
- package/v3/dist/cli/wizards/security-wizard.d.ts +13 -64
- package/v3/dist/cli/wizards/security-wizard.d.ts.map +1 -1
- package/v3/dist/cli/wizards/security-wizard.js +152 -395
- package/v3/dist/cli/wizards/security-wizard.js.map +1 -1
- package/v3/dist/cli/wizards/test-wizard.d.ts +13 -77
- package/v3/dist/cli/wizards/test-wizard.d.ts.map +1 -1
- package/v3/dist/cli/wizards/test-wizard.js +196 -328
- package/v3/dist/cli/wizards/test-wizard.js.map +1 -1
- package/v3/dist/coordination/mincut/mincut-health-monitor.d.ts +3 -0
- package/v3/dist/coordination/mincut/mincut-health-monitor.d.ts.map +1 -1
- package/v3/dist/coordination/mincut/mincut-health-monitor.js +6 -2
- package/v3/dist/coordination/mincut/mincut-health-monitor.js.map +1 -1
- package/v3/dist/coordination/mincut/queen-integration.d.ts +3 -0
- package/v3/dist/coordination/mincut/queen-integration.d.ts.map +1 -1
- package/v3/dist/coordination/mincut/queen-integration.js +6 -1
- package/v3/dist/coordination/mincut/queen-integration.js.map +1 -1
- package/v3/dist/coordination/task-executor.js +2 -2
- package/v3/dist/coordination/task-executor.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/plugin.js +2 -2
- package/v3/dist/domains/chaos-resilience/plugin.js.map +1 -1
- package/v3/dist/domains/code-intelligence/plugin.js +2 -2
- package/v3/dist/domains/code-intelligence/plugin.js.map +1 -1
- package/v3/dist/domains/contract-testing/plugin.js +2 -2
- package/v3/dist/domains/contract-testing/plugin.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/plugin.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/plugin.js +2 -1
- package/v3/dist/domains/coverage-analysis/plugin.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/plugin.js +2 -2
- package/v3/dist/domains/defect-intelligence/plugin.js.map +1 -1
- package/v3/dist/domains/domain-interface.d.ts.map +1 -1
- package/v3/dist/domains/domain-interface.js +3 -1
- package/v3/dist/domains/domain-interface.js.map +1 -1
- package/v3/dist/domains/learning-optimization/plugin.js +2 -2
- package/v3/dist/domains/learning-optimization/plugin.js.map +1 -1
- package/v3/dist/domains/quality-assessment/plugin.js +2 -2
- package/v3/dist/domains/quality-assessment/plugin.js.map +1 -1
- package/v3/dist/domains/requirements-validation/plugin.js +2 -2
- package/v3/dist/domains/requirements-validation/plugin.js.map +1 -1
- package/v3/dist/domains/security-compliance/plugin.js +2 -2
- package/v3/dist/domains/security-compliance/plugin.js.map +1 -1
- package/v3/dist/domains/test-execution/index.d.ts +2 -1
- package/v3/dist/domains/test-execution/index.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/index.js +0 -2
- package/v3/dist/domains/test-execution/index.js.map +1 -1
- package/v3/dist/domains/test-execution/interfaces.d.ts +222 -25
- package/v3/dist/domains/test-execution/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/interfaces.js +130 -3
- package/v3/dist/domains/test-execution/interfaces.js.map +1 -1
- package/v3/dist/domains/test-execution/plugin.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/plugin.js +2 -1
- package/v3/dist/domains/test-execution/plugin.js.map +1 -1
- package/v3/dist/domains/test-execution/test-prioritization-types.d.ts +5 -172
- package/v3/dist/domains/test-execution/test-prioritization-types.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/test-prioritization-types.js +6 -129
- package/v3/dist/domains/test-execution/test-prioritization-types.js.map +1 -1
- package/v3/dist/domains/test-execution/types/index.d.ts +7 -3
- package/v3/dist/domains/test-execution/types/index.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/types/index.js +7 -17
- package/v3/dist/domains/test-execution/types/index.js.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.d.ts +1 -1
- package/v3/dist/domains/test-generation/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.js +3 -3
- package/v3/dist/domains/test-generation/coordinator.js.map +1 -1
- package/v3/dist/domains/test-generation/factories/index.d.ts +8 -0
- package/v3/dist/domains/test-generation/factories/index.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/factories/index.js +8 -0
- package/v3/dist/domains/test-generation/factories/index.js.map +1 -0
- package/v3/dist/domains/test-generation/factories/test-generator-factory.d.ts +108 -0
- package/v3/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/factories/test-generator-factory.js +158 -0
- package/v3/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -0
- package/v3/dist/domains/test-generation/generators/base-test-generator.d.ts +79 -0
- package/v3/dist/domains/test-generation/generators/base-test-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/generators/base-test-generator.js +252 -0
- package/v3/dist/domains/test-generation/generators/base-test-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/generators/index.d.ts +11 -0
- package/v3/dist/domains/test-generation/generators/index.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/generators/index.js +13 -0
- package/v3/dist/domains/test-generation/generators/index.js.map +1 -0
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.d.ts +77 -0
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js +365 -0
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/generators/mocha-generator.d.ts +56 -0
- package/v3/dist/domains/test-generation/generators/mocha-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/generators/mocha-generator.js +197 -0
- package/v3/dist/domains/test-generation/generators/mocha-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts +66 -0
- package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/generators/pytest-generator.js +240 -0
- package/v3/dist/domains/test-generation/generators/pytest-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/index.d.ts +2 -2
- package/v3/dist/domains/test-generation/index.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/index.js +3 -3
- package/v3/dist/domains/test-generation/index.js.map +1 -1
- package/v3/dist/domains/test-generation/interfaces/index.d.ts +9 -0
- package/v3/dist/domains/test-generation/interfaces/index.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/interfaces/index.js +9 -0
- package/v3/dist/domains/test-generation/interfaces/index.js.map +1 -0
- package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts +166 -0
- package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/interfaces/test-generator.interface.js +8 -0
- package/v3/dist/domains/test-generation/interfaces/test-generator.interface.js.map +1 -0
- package/v3/dist/domains/test-generation/interfaces.d.ts +163 -24
- package/v3/dist/domains/test-generation/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/interfaces.js +2 -2
- package/v3/dist/domains/test-generation/plugin.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/plugin.js +6 -5
- package/v3/dist/domains/test-generation/plugin.js.map +1 -1
- package/v3/dist/domains/test-generation/{coherence-gate.d.ts → services/coherence-gate-service.d.ts} +4 -4
- package/v3/dist/domains/test-generation/services/coherence-gate-service.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/{coherence-gate.js → services/coherence-gate-service.js} +2 -2
- package/v3/dist/domains/test-generation/services/coherence-gate-service.js.map +1 -0
- package/v3/dist/domains/test-generation/services/index.d.ts +8 -2
- package/v3/dist/domains/test-generation/services/index.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/index.js +10 -3
- package/v3/dist/domains/test-generation/services/index.js.map +1 -1
- package/v3/dist/domains/test-generation/services/property-test-generator.d.ts +34 -0
- package/v3/dist/domains/test-generation/services/property-test-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/services/property-test-generator.js +306 -0
- package/v3/dist/domains/test-generation/services/property-test-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/services/tdd-generator.d.ts +33 -0
- package/v3/dist/domains/test-generation/services/tdd-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/services/tdd-generator.js +342 -0
- package/v3/dist/domains/test-generation/services/tdd-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/services/test-data-generator.d.ts +34 -0
- package/v3/dist/domains/test-generation/services/test-data-generator.d.ts.map +1 -0
- package/v3/dist/domains/test-generation/services/test-data-generator.js +245 -0
- package/v3/dist/domains/test-generation/services/test-data-generator.js.map +1 -0
- package/v3/dist/domains/test-generation/services/test-generator.d.ts +51 -160
- package/v3/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/test-generator.js +101 -1858
- package/v3/dist/domains/test-generation/services/test-generator.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.js +2 -2
- package/v3/dist/domains/visual-accessibility/plugin.js.map +1 -1
- package/v3/dist/init/phases/12-verification.d.ts +23 -0
- package/v3/dist/init/phases/12-verification.d.ts.map +1 -1
- package/v3/dist/init/phases/12-verification.js +185 -2
- package/v3/dist/init/phases/12-verification.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.d.ts +24 -62
- package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.js +45 -497
- package/v3/dist/integrations/agentic-flow/model-router/complexity-analyzer.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/router.js +2 -2
- package/v3/dist/integrations/agentic-flow/model-router/router.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.d.ts +98 -0
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.d.ts.map +1 -0
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js +197 -0
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js.map +1 -0
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts +102 -0
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts.map +1 -0
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js +372 -0
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js.map +1 -0
- package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.d.ts +64 -0
- package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.d.ts.map +1 -0
- package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.js +120 -0
- package/v3/dist/integrations/agentic-flow/model-router/tier-recommender.js.map +1 -0
- package/v3/dist/integrations/coherence/coherence-service.d.ts.map +1 -1
- package/v3/dist/integrations/coherence/coherence-service.js +87 -30
- package/v3/dist/integrations/coherence/coherence-service.js.map +1 -1
- package/v3/dist/integrations/coherence/engines/spectral-adapter.d.ts.map +1 -1
- package/v3/dist/integrations/coherence/engines/spectral-adapter.js +124 -35
- package/v3/dist/integrations/coherence/engines/spectral-adapter.js.map +1 -1
- package/v3/dist/learning/memory-auditor.d.ts.map +1 -1
- package/v3/dist/learning/memory-auditor.js +3 -1
- package/v3/dist/learning/memory-auditor.js.map +1 -1
- package/v3/dist/mcp/bundle.js +2475 -1463
- package/v3/dist/mcp/security/cve-prevention.d.ts +31 -134
- package/v3/dist/mcp/security/cve-prevention.d.ts.map +1 -1
- package/v3/dist/mcp/security/cve-prevention.js +37 -562
- package/v3/dist/mcp/security/cve-prevention.js.map +1 -1
- package/v3/dist/mcp/security/index.d.ts +5 -1
- package/v3/dist/mcp/security/index.d.ts.map +1 -1
- package/v3/dist/mcp/security/validators/command-validator.d.ts +41 -0
- package/v3/dist/mcp/security/validators/command-validator.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/command-validator.js +123 -0
- package/v3/dist/mcp/security/validators/command-validator.js.map +1 -0
- package/v3/dist/mcp/security/validators/crypto-validator.d.ts +40 -0
- package/v3/dist/mcp/security/validators/crypto-validator.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/crypto-validator.js +72 -0
- package/v3/dist/mcp/security/validators/crypto-validator.js.map +1 -0
- package/v3/dist/mcp/security/validators/index.d.ts +12 -0
- package/v3/dist/mcp/security/validators/index.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/index.js +22 -0
- package/v3/dist/mcp/security/validators/index.js.map +1 -0
- package/v3/dist/mcp/security/validators/input-sanitizer.d.ts +56 -0
- package/v3/dist/mcp/security/validators/input-sanitizer.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/input-sanitizer.js +157 -0
- package/v3/dist/mcp/security/validators/input-sanitizer.js.map +1 -0
- package/v3/dist/mcp/security/validators/interfaces.d.ts +164 -0
- package/v3/dist/mcp/security/validators/interfaces.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/interfaces.js +6 -0
- package/v3/dist/mcp/security/validators/interfaces.js.map +1 -0
- package/v3/dist/mcp/security/validators/path-traversal-validator.d.ts +50 -0
- package/v3/dist/mcp/security/validators/path-traversal-validator.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/path-traversal-validator.js +242 -0
- package/v3/dist/mcp/security/validators/path-traversal-validator.js.map +1 -0
- package/v3/dist/mcp/security/validators/regex-safety-validator.d.ts +50 -0
- package/v3/dist/mcp/security/validators/regex-safety-validator.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/regex-safety-validator.js +183 -0
- package/v3/dist/mcp/security/validators/regex-safety-validator.js.map +1 -0
- package/v3/dist/mcp/security/validators/validation-orchestrator.d.ts +66 -0
- package/v3/dist/mcp/security/validators/validation-orchestrator.d.ts.map +1 -0
- package/v3/dist/mcp/security/validators/validation-orchestrator.js +146 -0
- package/v3/dist/mcp/security/validators/validation-orchestrator.js.map +1 -0
- package/v3/dist/mcp/server.d.ts.map +1 -1
- package/v3/dist/mcp/server.js +1 -0
- package/v3/dist/mcp/server.js.map +1 -1
- package/v3/dist/mcp/tool-registry.d.ts +3 -1
- package/v3/dist/mcp/tool-registry.d.ts.map +1 -1
- package/v3/dist/mcp/tool-registry.js +155 -2
- package/v3/dist/mcp/tool-registry.js.map +1 -1
- package/v3/dist/mcp/tools/test-generation/generate.d.ts +1 -0
- package/v3/dist/mcp/tools/test-generation/generate.d.ts.map +1 -1
- package/v3/dist/mcp/tools/test-generation/generate.js +3 -2
- package/v3/dist/mcp/tools/test-generation/generate.js.map +1 -1
- package/v3/dist/sync/cloud/index.d.ts +8 -0
- package/v3/dist/sync/cloud/index.d.ts.map +1 -0
- package/v3/dist/sync/cloud/index.js +8 -0
- package/v3/dist/sync/cloud/index.js.map +1 -0
- package/v3/dist/sync/cloud/postgres-writer.d.ts +88 -0
- package/v3/dist/sync/cloud/postgres-writer.d.ts.map +1 -0
- package/v3/dist/sync/cloud/postgres-writer.js +319 -0
- package/v3/dist/sync/cloud/postgres-writer.js.map +1 -0
- package/v3/dist/sync/cloud/tunnel-manager.d.ts +75 -0
- package/v3/dist/sync/cloud/tunnel-manager.d.ts.map +1 -0
- package/v3/dist/sync/cloud/tunnel-manager.js +221 -0
- package/v3/dist/sync/cloud/tunnel-manager.js.map +1 -0
- package/v3/dist/sync/index.d.ts +35 -0
- package/v3/dist/sync/index.d.ts.map +1 -0
- package/v3/dist/sync/index.js +35 -0
- package/v3/dist/sync/index.js.map +1 -0
- package/v3/dist/sync/interfaces.d.ts +245 -0
- package/v3/dist/sync/interfaces.d.ts.map +1 -0
- package/v3/dist/sync/interfaces.js +160 -0
- package/v3/dist/sync/interfaces.js.map +1 -0
- package/v3/dist/sync/readers/index.d.ts +8 -0
- package/v3/dist/sync/readers/index.d.ts.map +1 -0
- package/v3/dist/sync/readers/index.js +8 -0
- package/v3/dist/sync/readers/index.js.map +1 -0
- package/v3/dist/sync/readers/json-reader.d.ts +95 -0
- package/v3/dist/sync/readers/json-reader.d.ts.map +1 -0
- package/v3/dist/sync/readers/json-reader.js +306 -0
- package/v3/dist/sync/readers/json-reader.js.map +1 -0
- package/v3/dist/sync/readers/sqlite-reader.d.ts +88 -0
- package/v3/dist/sync/readers/sqlite-reader.d.ts.map +1 -0
- package/v3/dist/sync/readers/sqlite-reader.js +255 -0
- package/v3/dist/sync/readers/sqlite-reader.js.map +1 -0
- package/v3/dist/sync/sync-agent.d.ts +116 -0
- package/v3/dist/sync/sync-agent.d.ts.map +1 -0
- package/v3/dist/sync/sync-agent.js +416 -0
- package/v3/dist/sync/sync-agent.js.map +1 -0
- package/v3/package.json +13 -2
- package/v3/dist/domains/test-generation/coherence-gate.d.ts.map +0 -1
- package/v3/dist/domains/test-generation/coherence-gate.js.map +0 -1
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
* Agentic QE v3 - MCP Security: CVE Prevention Utilities
|
|
3
3
|
* Security utilities for preventing common vulnerabilities (ADR-012)
|
|
4
4
|
*
|
|
5
|
+
* This file serves as a facade that maintains backward compatibility
|
|
6
|
+
* while the actual implementations are organized using the Strategy Pattern
|
|
7
|
+
* in the validators/ directory.
|
|
8
|
+
*
|
|
5
9
|
* Features:
|
|
6
10
|
* - Path traversal protection (no ../ in paths)
|
|
7
11
|
* - ReDoS prevention with regex escaping
|
|
@@ -9,579 +13,50 @@
|
|
|
9
13
|
* - Input sanitization utilities
|
|
10
14
|
* - Command injection prevention
|
|
11
15
|
*/
|
|
12
|
-
import { createHash, timingSafeEqual, randomBytes } from 'crypto';
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// Path Traversal Protection
|
|
15
16
|
// ============================================================================
|
|
16
|
-
|
|
17
|
-
* Path traversal patterns to detect
|
|
18
|
-
*/
|
|
19
|
-
const PATH_TRAVERSAL_PATTERNS = [
|
|
20
|
-
/\.\./, // Basic traversal
|
|
21
|
-
/%2e%2e/i, // URL encoded ..
|
|
22
|
-
/%252e%252e/i, // Double URL encoded
|
|
23
|
-
/\.\.%2f/i, // Mixed encoding
|
|
24
|
-
/%2f\.\./i, // Forward slash + ..
|
|
25
|
-
/\.\.%5c/i, // Backslash + ..
|
|
26
|
-
/\.\.\\/, // Windows backslash traversal
|
|
27
|
-
/%c0%ae/i, // UTF-8 overlong encoding
|
|
28
|
-
/%c0%2f/i, // UTF-8 overlong /
|
|
29
|
-
/%c1%9c/i, // UTF-8 overlong \
|
|
30
|
-
/\0/, // Null byte injection
|
|
31
|
-
/%00/i, // URL encoded null
|
|
32
|
-
];
|
|
33
|
-
/**
|
|
34
|
-
* Dangerous path components
|
|
35
|
-
*/
|
|
36
|
-
const DANGEROUS_PATH_COMPONENTS = [
|
|
37
|
-
/^\/etc\//i,
|
|
38
|
-
/^\/proc\//i,
|
|
39
|
-
/^\/sys\//i,
|
|
40
|
-
/^\/dev\//i,
|
|
41
|
-
/^\/root\//i,
|
|
42
|
-
/^\/home\/.+\/\./i,
|
|
43
|
-
/^[A-Z]:\\Windows/i,
|
|
44
|
-
/^[A-Z]:\\System/i,
|
|
45
|
-
/^[A-Z]:\\Users\\.+\\AppData/i,
|
|
46
|
-
];
|
|
47
|
-
/**
|
|
48
|
-
* Validate and sanitize a file path to prevent traversal attacks
|
|
49
|
-
*/
|
|
50
|
-
export function validatePath(path, options = {}) {
|
|
51
|
-
const { basePath = '', allowAbsolute = false, allowedExtensions = [], deniedExtensions = ['.exe', '.bat', '.cmd', '.sh', '.ps1', '.dll', '.so'], maxDepth = 10, maxLength = 4096, } = options;
|
|
52
|
-
// Check length
|
|
53
|
-
if (path.length > maxLength) {
|
|
54
|
-
return {
|
|
55
|
-
valid: false,
|
|
56
|
-
error: `Path exceeds maximum length of ${maxLength}`,
|
|
57
|
-
riskLevel: 'medium',
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
// Check for traversal patterns
|
|
61
|
-
for (const pattern of PATH_TRAVERSAL_PATTERNS) {
|
|
62
|
-
if (pattern.test(path)) {
|
|
63
|
-
return {
|
|
64
|
-
valid: false,
|
|
65
|
-
error: 'Path traversal attempt detected',
|
|
66
|
-
riskLevel: 'critical',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// Check for absolute paths
|
|
71
|
-
if (!allowAbsolute && (path.startsWith('/') || /^[A-Z]:/i.test(path))) {
|
|
72
|
-
return {
|
|
73
|
-
valid: false,
|
|
74
|
-
error: 'Absolute paths are not allowed',
|
|
75
|
-
riskLevel: 'high',
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
// Check for dangerous path components
|
|
79
|
-
for (const pattern of DANGEROUS_PATH_COMPONENTS) {
|
|
80
|
-
if (pattern.test(path)) {
|
|
81
|
-
return {
|
|
82
|
-
valid: false,
|
|
83
|
-
error: 'Access to system paths is not allowed',
|
|
84
|
-
riskLevel: 'critical',
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// Normalize the path
|
|
89
|
-
const normalizedPath = normalizePath(path);
|
|
90
|
-
// Re-check for traversal after normalization
|
|
91
|
-
if (normalizedPath.includes('..')) {
|
|
92
|
-
return {
|
|
93
|
-
valid: false,
|
|
94
|
-
error: 'Path traversal detected after normalization',
|
|
95
|
-
riskLevel: 'critical',
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
// Check depth
|
|
99
|
-
const depth = normalizedPath.split('/').filter(Boolean).length;
|
|
100
|
-
if (depth > maxDepth) {
|
|
101
|
-
return {
|
|
102
|
-
valid: false,
|
|
103
|
-
error: `Path depth exceeds maximum of ${maxDepth}`,
|
|
104
|
-
riskLevel: 'low',
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
// Check extension
|
|
108
|
-
const ext = getExtension(normalizedPath);
|
|
109
|
-
if (ext) {
|
|
110
|
-
const extWithDot = `.${ext.toLowerCase()}`;
|
|
111
|
-
const extWithoutDot = ext.toLowerCase();
|
|
112
|
-
// Check denied extensions (support both .exe and exe formats)
|
|
113
|
-
if (deniedExtensions.length > 0) {
|
|
114
|
-
const isDenied = deniedExtensions.some(denied => denied.toLowerCase() === extWithDot || denied.toLowerCase() === extWithoutDot);
|
|
115
|
-
if (isDenied) {
|
|
116
|
-
return {
|
|
117
|
-
valid: false,
|
|
118
|
-
error: `File extension '${ext}' is not allowed`,
|
|
119
|
-
riskLevel: 'high',
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Check allowed extensions (support both .ts and ts formats)
|
|
124
|
-
if (allowedExtensions.length > 0) {
|
|
125
|
-
const isAllowed = allowedExtensions.some(allowed => allowed.toLowerCase() === extWithDot || allowed.toLowerCase() === extWithoutDot);
|
|
126
|
-
if (!isAllowed) {
|
|
127
|
-
return {
|
|
128
|
-
valid: false,
|
|
129
|
-
error: `File extension '${ext}' is not in allowed list`,
|
|
130
|
-
riskLevel: 'medium',
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Combine with base path if provided
|
|
136
|
-
const finalPath = basePath
|
|
137
|
-
? joinPathsAbsolute(basePath, normalizedPath)
|
|
138
|
-
: normalizedPath;
|
|
139
|
-
// Verify final path doesn't escape base (use normalized base for comparison)
|
|
140
|
-
const normalizedBase = basePath.startsWith('/')
|
|
141
|
-
? `/${normalizePath(basePath)}`
|
|
142
|
-
: normalizePath(basePath);
|
|
143
|
-
if (basePath && !finalPath.startsWith(normalizedBase)) {
|
|
144
|
-
return {
|
|
145
|
-
valid: false,
|
|
146
|
-
error: 'Path escapes base directory',
|
|
147
|
-
riskLevel: 'critical',
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
return {
|
|
151
|
-
valid: true,
|
|
152
|
-
normalizedPath: finalPath,
|
|
153
|
-
riskLevel: 'none',
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Normalize a path by resolving . and .. components
|
|
158
|
-
*/
|
|
159
|
-
export function normalizePath(path) {
|
|
160
|
-
// Replace backslashes with forward slashes
|
|
161
|
-
let normalized = path.replace(/\\/g, '/');
|
|
162
|
-
// Remove multiple consecutive slashes
|
|
163
|
-
normalized = normalized.replace(/\/+/g, '/');
|
|
164
|
-
// Split and resolve
|
|
165
|
-
const parts = normalized.split('/');
|
|
166
|
-
const result = [];
|
|
167
|
-
for (const part of parts) {
|
|
168
|
-
if (part === '.' || part === '') {
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
if (part === '..') {
|
|
172
|
-
// Don't allow going above root
|
|
173
|
-
if (result.length > 0 && result[result.length - 1] !== '..') {
|
|
174
|
-
result.pop();
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
result.push(part);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return result.join('/');
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Safely join path components (strips leading/trailing slashes from all parts)
|
|
185
|
-
*/
|
|
186
|
-
export function joinPaths(...paths) {
|
|
187
|
-
if (paths.length === 0)
|
|
188
|
-
return '';
|
|
189
|
-
return paths
|
|
190
|
-
.map(p => p.replace(/^\/+|\/+$/g, ''))
|
|
191
|
-
.filter(Boolean)
|
|
192
|
-
.join('/');
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Join paths preserving absolute path from first component
|
|
196
|
-
*/
|
|
197
|
-
export function joinPathsAbsolute(...paths) {
|
|
198
|
-
if (paths.length === 0)
|
|
199
|
-
return '';
|
|
200
|
-
// Check if the first path is absolute
|
|
201
|
-
const isAbsolute = paths[0].startsWith('/');
|
|
202
|
-
const result = paths
|
|
203
|
-
// Use non-backtracking patterns with possessive-like behavior via split/join
|
|
204
|
-
.map(p => {
|
|
205
|
-
// Remove leading slashes by splitting and rejoining
|
|
206
|
-
while (p.startsWith('/'))
|
|
207
|
-
p = p.slice(1);
|
|
208
|
-
// Remove trailing slashes
|
|
209
|
-
while (p.endsWith('/'))
|
|
210
|
-
p = p.slice(0, -1);
|
|
211
|
-
return p;
|
|
212
|
-
})
|
|
213
|
-
.filter(Boolean)
|
|
214
|
-
.join('/');
|
|
215
|
-
// Preserve leading slash for absolute paths
|
|
216
|
-
return isAbsolute ? `/${result}` : result;
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Get file extension
|
|
220
|
-
*/
|
|
221
|
-
export function getExtension(path) {
|
|
222
|
-
const match = path.match(/\.([^./\\]+)$/);
|
|
223
|
-
return match ? match[1] : null;
|
|
224
|
-
}
|
|
17
|
+
// Re-export Validators and Functions
|
|
225
18
|
// ============================================================================
|
|
19
|
+
// Path Traversal Protection
|
|
20
|
+
export { validatePath, normalizePath, joinPaths, joinPathsAbsolute, getExtension, PathTraversalValidator, PATH_TRAVERSAL_PATTERNS, DANGEROUS_PATH_COMPONENTS, } from './validators/path-traversal-validator';
|
|
226
21
|
// ReDoS Prevention
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Patterns that can cause ReDoS
|
|
230
|
-
*/
|
|
231
|
-
const REDOS_PATTERNS = [
|
|
232
|
-
/\(\.\*\)\+/, // (.*)+
|
|
233
|
-
/\(\.\+\)\+/, // (.+)+
|
|
234
|
-
/\([^)]*\?\)\+/, // (...?)+
|
|
235
|
-
/\([^)]*\*\)\+/, // (...*)+
|
|
236
|
-
/\([^)]*\+\)\+/, // (...+)+
|
|
237
|
-
/\(\[.*?\]\+\)\+/, // ([...]+)+
|
|
238
|
-
/\(\[.*?\]\*\)\+/, // ([...]*)+
|
|
239
|
-
/\(\[.*?\]\?\)\+/, // ([...]?)+
|
|
240
|
-
/\(\[.*?\]\*\)\*/, // ([...]*)*
|
|
241
|
-
/\.\*\.\*/, // .*.*
|
|
242
|
-
/\.\+\.\+/, // .+.+
|
|
243
|
-
/\(\.\|\.\)/, // (.|.)
|
|
244
|
-
];
|
|
245
|
-
/**
|
|
246
|
-
* Maximum allowed regex complexity (nested quantifiers)
|
|
247
|
-
*/
|
|
248
|
-
const MAX_REGEX_COMPLEXITY = 3;
|
|
249
|
-
/**
|
|
250
|
-
* Check if a regex pattern is safe from ReDoS
|
|
251
|
-
*/
|
|
252
|
-
export function isRegexSafe(pattern) {
|
|
253
|
-
const riskyPatterns = [];
|
|
254
|
-
// Check for known ReDoS patterns
|
|
255
|
-
for (const redosPattern of REDOS_PATTERNS) {
|
|
256
|
-
if (redosPattern.test(pattern)) {
|
|
257
|
-
riskyPatterns.push(redosPattern.source);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
// Check nesting depth of quantifiers
|
|
261
|
-
const quantifierDepth = countQuantifierNesting(pattern);
|
|
262
|
-
if (quantifierDepth > MAX_REGEX_COMPLEXITY) {
|
|
263
|
-
riskyPatterns.push(`Quantifier nesting depth: ${quantifierDepth} (max: ${MAX_REGEX_COMPLEXITY})`);
|
|
264
|
-
}
|
|
265
|
-
// Check for exponential backtracking potential
|
|
266
|
-
if (hasExponentialBacktracking(pattern)) {
|
|
267
|
-
riskyPatterns.push('Exponential backtracking potential detected');
|
|
268
|
-
}
|
|
269
|
-
return {
|
|
270
|
-
safe: riskyPatterns.length === 0,
|
|
271
|
-
pattern,
|
|
272
|
-
escapedPattern: escapeRegex(pattern),
|
|
273
|
-
riskyPatterns,
|
|
274
|
-
error: riskyPatterns.length > 0 ? 'Pattern may cause ReDoS' : undefined,
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Count nested quantifier depth
|
|
279
|
-
*/
|
|
280
|
-
function countQuantifierNesting(pattern) {
|
|
281
|
-
let maxDepth = 0;
|
|
282
|
-
let currentDepth = 0;
|
|
283
|
-
let inGroup = false;
|
|
284
|
-
let escaped = false;
|
|
285
|
-
for (let i = 0; i < pattern.length; i++) {
|
|
286
|
-
const char = pattern[i];
|
|
287
|
-
if (escaped) {
|
|
288
|
-
escaped = false;
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
if (char === '\\') {
|
|
292
|
-
escaped = true;
|
|
293
|
-
continue;
|
|
294
|
-
}
|
|
295
|
-
if (char === '(') {
|
|
296
|
-
inGroup = true;
|
|
297
|
-
continue;
|
|
298
|
-
}
|
|
299
|
-
if (char === ')') {
|
|
300
|
-
inGroup = false;
|
|
301
|
-
// Check if followed by quantifier
|
|
302
|
-
const next = pattern[i + 1];
|
|
303
|
-
if (next === '*' || next === '+' || next === '?' || next === '{') {
|
|
304
|
-
currentDepth++;
|
|
305
|
-
maxDepth = Math.max(maxDepth, currentDepth);
|
|
306
|
-
}
|
|
307
|
-
continue;
|
|
308
|
-
}
|
|
309
|
-
if ((char === '*' || char === '+' || char === '?') && !inGroup) {
|
|
310
|
-
currentDepth = 1;
|
|
311
|
-
maxDepth = Math.max(maxDepth, currentDepth);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return maxDepth;
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Check for exponential backtracking potential
|
|
318
|
-
*/
|
|
319
|
-
function hasExponentialBacktracking(pattern) {
|
|
320
|
-
// Simplified check for common exponential patterns
|
|
321
|
-
const dangerous = [
|
|
322
|
-
/\(\[^\\]*\]\+\)\+/, // ([...]+)+
|
|
323
|
-
/\(\[^\\]*\]\*\)\*/, // ([...]*)*
|
|
324
|
-
/\([^)]+\|[^)]+\)\+/, // (a|b)+
|
|
325
|
-
/\(\.\*\)[*+]/, // (.*)+, (.*)*
|
|
326
|
-
/\(\.\+\)[*+]/, // (.+)+, (.+)*
|
|
327
|
-
];
|
|
328
|
-
return dangerous.some(d => d.test(pattern));
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Escape special regex characters in a string
|
|
332
|
-
*/
|
|
333
|
-
export function escapeRegex(str) {
|
|
334
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Create a safe regex with timeout
|
|
338
|
-
*/
|
|
339
|
-
export function createSafeRegex(pattern, flags, maxLength = 10000) {
|
|
340
|
-
const safety = isRegexSafe(pattern);
|
|
341
|
-
if (!safety.safe) {
|
|
342
|
-
return null;
|
|
343
|
-
}
|
|
344
|
-
if (pattern.length > maxLength) {
|
|
345
|
-
return null;
|
|
346
|
-
}
|
|
347
|
-
try {
|
|
348
|
-
return new RegExp(pattern, flags);
|
|
349
|
-
}
|
|
350
|
-
catch {
|
|
351
|
-
return null;
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
// ============================================================================
|
|
22
|
+
export { isRegexSafe, escapeRegex, createSafeRegex, RegexSafetyValidator, REDOS_PATTERNS, countQuantifierNesting, hasExponentialBacktracking, } from './validators/regex-safety-validator';
|
|
355
23
|
// Timing-Safe Comparison
|
|
24
|
+
export { timingSafeCompare, timingSafeHashCompare, generateSecureToken, secureHash, CryptoValidator, } from './validators/crypto-validator';
|
|
25
|
+
// Input Sanitization
|
|
26
|
+
export { sanitizeInput, escapeHtml, stripHtmlTags, InputSanitizer, HTML_ESCAPE_MAP, SQL_INJECTION_PATTERNS, SHELL_METACHARACTERS, DANGEROUS_CONTROL_CHARS, } from './validators/input-sanitizer';
|
|
27
|
+
// Command Injection Prevention
|
|
28
|
+
export { validateCommand, escapeShellArg, CommandValidator, DEFAULT_ALLOWED_COMMANDS, BLOCKED_COMMAND_PATTERNS, } from './validators/command-validator';
|
|
356
29
|
// ============================================================================
|
|
357
|
-
|
|
358
|
-
* Perform a timing-safe string comparison
|
|
359
|
-
*/
|
|
360
|
-
export function timingSafeCompare(a, b) {
|
|
361
|
-
// Pad shorter string to prevent length-based timing attacks
|
|
362
|
-
const maxLen = Math.max(a.length, b.length);
|
|
363
|
-
const paddedA = a.padEnd(maxLen, '\0');
|
|
364
|
-
const paddedB = b.padEnd(maxLen, '\0');
|
|
365
|
-
try {
|
|
366
|
-
return timingSafeEqual(Buffer.from(paddedA), Buffer.from(paddedB));
|
|
367
|
-
}
|
|
368
|
-
catch {
|
|
369
|
-
return false;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Timing-safe comparison for hashed values
|
|
374
|
-
*/
|
|
375
|
-
export function timingSafeHashCompare(value, expectedHash) {
|
|
376
|
-
const hash = createHash('sha256').update(value).digest('hex');
|
|
377
|
-
return timingSafeCompare(hash, expectedHash);
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* Generate a secure random token
|
|
381
|
-
*/
|
|
382
|
-
export function generateSecureToken(length = 32) {
|
|
383
|
-
return randomBytes(length)
|
|
384
|
-
.toString('base64')
|
|
385
|
-
.replace(/\+/g, '-')
|
|
386
|
-
.replace(/\//g, '_')
|
|
387
|
-
.replace(/=/g, '');
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Hash a value securely
|
|
391
|
-
*/
|
|
392
|
-
export function secureHash(value, salt) {
|
|
393
|
-
const data = salt ? `${salt}:${value}` : value;
|
|
394
|
-
return createHash('sha256').update(data).digest('hex');
|
|
395
|
-
}
|
|
30
|
+
// Re-export Orchestrator
|
|
396
31
|
// ============================================================================
|
|
397
|
-
|
|
32
|
+
export { ValidationOrchestrator, getOrchestrator, createOrchestrator, } from './validators/validation-orchestrator';
|
|
398
33
|
// ============================================================================
|
|
399
|
-
|
|
400
|
-
* HTML escape characters
|
|
401
|
-
*/
|
|
402
|
-
const HTML_ESCAPE_MAP = {
|
|
403
|
-
'&': '&',
|
|
404
|
-
'<': '<',
|
|
405
|
-
'>': '>',
|
|
406
|
-
'"': '"',
|
|
407
|
-
"'": ''',
|
|
408
|
-
'/': '/',
|
|
409
|
-
'`': '`',
|
|
410
|
-
'=': '=',
|
|
411
|
-
};
|
|
412
|
-
/**
|
|
413
|
-
* SQL injection patterns
|
|
414
|
-
*/
|
|
415
|
-
const SQL_INJECTION_PATTERNS = [
|
|
416
|
-
/('|")\s*;\s*--/i,
|
|
417
|
-
/'\s*OR\s+'1'\s*=\s*'1/i,
|
|
418
|
-
/"\s*OR\s+"1"\s*=\s*"1/i,
|
|
419
|
-
/UNION\s+SELECT/i,
|
|
420
|
-
/INSERT\s+INTO/i,
|
|
421
|
-
/DROP\s+TABLE/i,
|
|
422
|
-
/DELETE\s+FROM/i,
|
|
423
|
-
/UPDATE\s+.*\s+SET/i,
|
|
424
|
-
/EXEC(\s+|\()sp_/i,
|
|
425
|
-
/xp_cmdshell/i,
|
|
426
|
-
];
|
|
427
|
-
/**
|
|
428
|
-
* Shell metacharacters (excludes parentheses which are common in normal text)
|
|
429
|
-
*/
|
|
430
|
-
const SHELL_METACHARACTERS = /[|;&$`<>{}[\]!#*?~]/g;
|
|
431
|
-
/**
|
|
432
|
-
* Sanitize input string
|
|
433
|
-
*/
|
|
434
|
-
export function sanitizeInput(input, options = {}) {
|
|
435
|
-
const { maxLength = 10000, allowedChars, stripHtml = true, stripSql = true, escapeShell = true, trim = true, } = options;
|
|
436
|
-
let result = input;
|
|
437
|
-
// Trim
|
|
438
|
-
if (trim) {
|
|
439
|
-
result = result.trim();
|
|
440
|
-
}
|
|
441
|
-
// Max length
|
|
442
|
-
if (result.length > maxLength) {
|
|
443
|
-
result = result.substring(0, maxLength);
|
|
444
|
-
}
|
|
445
|
-
// Strip HTML
|
|
446
|
-
if (stripHtml) {
|
|
447
|
-
result = stripHtmlTags(result);
|
|
448
|
-
}
|
|
449
|
-
// Strip SQL injection attempts
|
|
450
|
-
if (stripSql) {
|
|
451
|
-
for (const pattern of SQL_INJECTION_PATTERNS) {
|
|
452
|
-
result = result.replace(pattern, '');
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
// Escape shell metacharacters
|
|
456
|
-
if (escapeShell) {
|
|
457
|
-
result = result.replace(SHELL_METACHARACTERS, '');
|
|
458
|
-
}
|
|
459
|
-
// Filter to allowed characters
|
|
460
|
-
if (allowedChars) {
|
|
461
|
-
// Filter character by character to respect the provided regex
|
|
462
|
-
result = result.split('').filter(char => allowedChars.test(char)).join('');
|
|
463
|
-
}
|
|
464
|
-
return result;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Escape HTML special characters
|
|
468
|
-
*/
|
|
469
|
-
export function escapeHtml(str) {
|
|
470
|
-
return str.replace(/[&<>"'`=/]/g, char => HTML_ESCAPE_MAP[char] || char);
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* Strip HTML tags from a string
|
|
474
|
-
* Handles both complete tags and incomplete/malformed tags to prevent XSS
|
|
475
|
-
*/
|
|
476
|
-
export function stripHtmlTags(str) {
|
|
477
|
-
// Limit input length to prevent ReDoS
|
|
478
|
-
const MAX_LENGTH = 100000;
|
|
479
|
-
if (str.length > MAX_LENGTH) {
|
|
480
|
-
str = str.slice(0, MAX_LENGTH);
|
|
481
|
-
}
|
|
482
|
-
let result = str;
|
|
483
|
-
let prevLength;
|
|
484
|
-
// Loop until no more changes (handles nested/malformed tags like <script<script>>)
|
|
485
|
-
do {
|
|
486
|
-
prevLength = result.length;
|
|
487
|
-
// Remove complete HTML tags using a non-backtracking approach
|
|
488
|
-
// Process character by character to avoid regex backtracking
|
|
489
|
-
let cleaned = '';
|
|
490
|
-
let inTag = false;
|
|
491
|
-
for (let i = 0; i < result.length; i++) {
|
|
492
|
-
const char = result[i];
|
|
493
|
-
if (char === '<') {
|
|
494
|
-
inTag = true;
|
|
495
|
-
}
|
|
496
|
-
else if (char === '>' && inTag) {
|
|
497
|
-
inTag = false;
|
|
498
|
-
}
|
|
499
|
-
else if (!inTag) {
|
|
500
|
-
cleaned += char;
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
result = cleaned;
|
|
504
|
-
} while (result.length < prevLength && result.length > 0);
|
|
505
|
-
// Encode any remaining angle brackets
|
|
506
|
-
result = result.replace(/</g, '<').replace(/>/g, '>');
|
|
507
|
-
return result;
|
|
508
|
-
}
|
|
34
|
+
// Import for CVEPrevention Object
|
|
509
35
|
// ============================================================================
|
|
510
|
-
|
|
36
|
+
import { validatePath } from './validators/path-traversal-validator';
|
|
37
|
+
import { normalizePath } from './validators/path-traversal-validator';
|
|
38
|
+
import { joinPaths } from './validators/path-traversal-validator';
|
|
39
|
+
import { joinPathsAbsolute } from './validators/path-traversal-validator';
|
|
40
|
+
import { getExtension } from './validators/path-traversal-validator';
|
|
41
|
+
import { isRegexSafe } from './validators/regex-safety-validator';
|
|
42
|
+
import { escapeRegex } from './validators/regex-safety-validator';
|
|
43
|
+
import { createSafeRegex } from './validators/regex-safety-validator';
|
|
44
|
+
import { timingSafeCompare } from './validators/crypto-validator';
|
|
45
|
+
import { timingSafeHashCompare } from './validators/crypto-validator';
|
|
46
|
+
import { generateSecureToken } from './validators/crypto-validator';
|
|
47
|
+
import { secureHash } from './validators/crypto-validator';
|
|
48
|
+
import { sanitizeInput } from './validators/input-sanitizer';
|
|
49
|
+
import { escapeHtml } from './validators/input-sanitizer';
|
|
50
|
+
import { stripHtmlTags } from './validators/input-sanitizer';
|
|
51
|
+
import { validateCommand } from './validators/command-validator';
|
|
52
|
+
import { escapeShellArg } from './validators/command-validator';
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Export Utilities Object (Backward Compatibility)
|
|
511
55
|
// ============================================================================
|
|
512
56
|
/**
|
|
513
|
-
*
|
|
514
|
-
|
|
515
|
-
const DEFAULT_ALLOWED_COMMANDS = [
|
|
516
|
-
'ls', 'cat', 'echo', 'grep', 'find', 'head', 'tail', 'wc',
|
|
517
|
-
'npm', 'node', 'yarn', 'pnpm',
|
|
518
|
-
'git', 'jest', 'vitest', 'playwright',
|
|
519
|
-
];
|
|
520
|
-
/**
|
|
521
|
-
* Blocked command patterns
|
|
522
|
-
*/
|
|
523
|
-
const BLOCKED_COMMAND_PATTERNS = [
|
|
524
|
-
/;/, // Command chaining with semicolon
|
|
525
|
-
/&&/, // Command chaining with AND
|
|
526
|
-
/\|\|/, // Command chaining with OR
|
|
527
|
-
/\|/, // Piping
|
|
528
|
-
/`.*`/, // Backtick command substitution
|
|
529
|
-
/\$\(.*\)/, // $() command substitution
|
|
530
|
-
/>\s*\/dev\/sd/i, // Writing to block devices
|
|
531
|
-
/>\s*\/etc\//i, // Writing to /etc
|
|
532
|
-
];
|
|
533
|
-
/**
|
|
534
|
-
* Validate and sanitize a command
|
|
535
|
-
*/
|
|
536
|
-
export function validateCommand(command, allowedCommands = DEFAULT_ALLOWED_COMMANDS) {
|
|
537
|
-
const blockedPatterns = [];
|
|
538
|
-
// Check for blocked patterns
|
|
539
|
-
for (const pattern of BLOCKED_COMMAND_PATTERNS) {
|
|
540
|
-
if (pattern.test(command)) {
|
|
541
|
-
blockedPatterns.push(pattern.source);
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
if (blockedPatterns.length > 0) {
|
|
545
|
-
return {
|
|
546
|
-
valid: false,
|
|
547
|
-
error: 'Command contains blocked patterns',
|
|
548
|
-
blockedPatterns,
|
|
549
|
-
};
|
|
550
|
-
}
|
|
551
|
-
// Extract base command
|
|
552
|
-
const parts = command.trim().split(/\s+/);
|
|
553
|
-
const baseCommand = parts[0].split('/').pop() || '';
|
|
554
|
-
// Check against whitelist
|
|
555
|
-
if (!allowedCommands.includes(baseCommand)) {
|
|
556
|
-
return {
|
|
557
|
-
valid: false,
|
|
558
|
-
error: `Command '${baseCommand}' is not in the allowed list`,
|
|
559
|
-
blockedPatterns: [],
|
|
560
|
-
};
|
|
561
|
-
}
|
|
562
|
-
// Sanitize arguments
|
|
563
|
-
const sanitizedParts = parts.map((part, i) => {
|
|
564
|
-
if (i === 0)
|
|
565
|
-
return part;
|
|
566
|
-
// Remove shell metacharacters from arguments
|
|
567
|
-
return part.replace(SHELL_METACHARACTERS, '');
|
|
568
|
-
});
|
|
569
|
-
return {
|
|
570
|
-
valid: true,
|
|
571
|
-
sanitizedCommand: sanitizedParts.join(' '),
|
|
572
|
-
blockedPatterns: [],
|
|
573
|
-
};
|
|
574
|
-
}
|
|
575
|
-
/**
|
|
576
|
-
* Escape a string for safe shell usage
|
|
57
|
+
* CVEPrevention - Main security utilities object
|
|
58
|
+
* Provides backward-compatible access to all security functions
|
|
577
59
|
*/
|
|
578
|
-
export function escapeShellArg(arg) {
|
|
579
|
-
// Wrap in single quotes and escape any internal single quotes
|
|
580
|
-
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
581
|
-
}
|
|
582
|
-
// ============================================================================
|
|
583
|
-
// Export Utilities Object
|
|
584
|
-
// ============================================================================
|
|
585
60
|
export const CVEPrevention = {
|
|
586
61
|
// Path traversal
|
|
587
62
|
validatePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cve-prevention.js","sourceRoot":"","sources":["../../../src/mcp/security/cve-prevention.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cve-prevention.js","sourceRoot":"","sources":["../../../src/mcp/security/cve-prevention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoBH,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,4BAA4B;AAC5B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAE/C,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAE7C,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,EACV,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAEvC,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AAEtC,+BAA+B;AAC/B,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AAExC,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAE9C,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,SAAS;IACT,iBAAiB;IACjB,YAAY;IAEZ,QAAQ;IACR,WAAW;IACX,WAAW;IACX,eAAe;IAEf,cAAc;IACd,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,UAAU;IAEV,qBAAqB;IACrB,aAAa;IACb,UAAU;IACV,aAAa;IAEb,oBAAoB;IACpB,eAAe;IACf,cAAc;CACf,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -99,7 +99,11 @@ export declare function createSecurityMiddleware(config?: SecurityMiddlewareConf
|
|
|
99
99
|
/**
|
|
100
100
|
* Validate command for execution
|
|
101
101
|
*/
|
|
102
|
-
validateShellCommand(command: string, allowedCommands?: string[]): import("./cve-prevention").CommandValidationResult
|
|
102
|
+
validateShellCommand(command: string, allowedCommands?: string[]): import("./cve-prevention").CommandValidationResult | {
|
|
103
|
+
valid: boolean;
|
|
104
|
+
sanitizedCommand: string;
|
|
105
|
+
blockedPatterns: never[];
|
|
106
|
+
};
|
|
103
107
|
/**
|
|
104
108
|
* Run all security checks
|
|
105
109
|
*/
|