0xray 2.0.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/.opencode/agents/api-design.yml +31 -0
- package/.opencode/agents/architect.yml +15 -0
- package/.opencode/agents/architecture-patterns.yml +14 -0
- package/.opencode/agents/auto-format.yml +14 -0
- package/.opencode/agents/backend-engineer.yml +12 -0
- package/.opencode/agents/boot-orchestrator.yml +14 -0
- package/.opencode/agents/bug-triage-specialist.yml +15 -0
- package/.opencode/agents/code-analyzer.yml +12 -0
- package/.opencode/agents/code-reviewer.yml +14 -0
- package/.opencode/agents/content-creator.yml +12 -0
- package/.opencode/agents/database-engineer.yml +12 -0
- package/.opencode/agents/devops-engineer.yml +12 -0
- package/.opencode/agents/framework-compliance-audit.yml +14 -0
- package/.opencode/agents/frontend-engineer.yml +12 -0
- package/.opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/.opencode/agents/git-workflow.yml +15 -0
- package/.opencode/agents/growth-strategist.yml +12 -0
- package/.opencode/agents/hermes-agent.yml +12 -0
- package/.opencode/agents/inference-improve.yml +12 -0
- package/.opencode/agents/lint.yml +14 -0
- package/.opencode/agents/log-monitor.yml +12 -0
- package/.opencode/agents/mobile-developer.yml +12 -0
- package/.opencode/agents/model-health-check.yml +12 -0
- package/.opencode/agents/multimodal-looker.yml +12 -0
- package/.opencode/agents/performance-analysis.yml +12 -0
- package/.opencode/agents/performance-engineer.yml +12 -0
- package/.opencode/agents/performance-optimization.yml +12 -0
- package/.opencode/agents/processor-pipeline.yml +14 -0
- package/.opencode/agents/project-analysis.yml +12 -0
- package/.opencode/agents/refactorer.yml +12 -0
- package/.opencode/agents/researcher.yml +12 -0
- package/.opencode/agents/security-auditor.yml +12 -0
- package/.opencode/agents/security-scan.yml +12 -0
- package/.opencode/agents/seo-consultant.yml +12 -0
- package/.opencode/agents/session-management.yml +12 -0
- package/.opencode/agents/state-manager.yml +12 -0
- package/.opencode/agents/storyteller.yml +12 -0
- package/.opencode/agents/strategist.yml +12 -0
- package/.opencode/agents/tech-writer.yml +12 -0
- package/.opencode/agents/testing-best-practices.yml +12 -0
- package/.opencode/agents/testing-lead.yml +12 -0
- package/.opencode/agents/ui-ux-design.yml +12 -0
- package/.opencode/codex.codex +8 -0
- package/.opencode/commands/auto-format.md +99 -0
- package/.opencode/commands/auto-summary-capture.md +90 -0
- package/.opencode/commands/dependency-audit.md +184 -0
- package/.opencode/commands/enforcer-daily-scan.md +137 -0
- package/.opencode/commands/framework-compliance-audit.md +205 -0
- package/.opencode/commands/interactive-validator.md +75 -0
- package/.opencode/commands/job-summary-logger.md +68 -0
- package/.opencode/commands/lint.md +11 -0
- package/.opencode/commands/mode-switch.md +95 -0
- package/.opencode/commands/model-health-check.md +186 -0
- package/.opencode/commands/performance-analysis.md +144 -0
- package/.opencode/commands/pre-commit-introspection.md +185 -0
- package/.opencode/commands/pre-commit-introspection.sh +133 -0
- package/.opencode/commands/security-scan.md +157 -0
- package/.opencode/commands/sisyphus-validation.md +128 -0
- package/.opencode/commands/summary-logger.md +83 -0
- package/.opencode/enforcer-config.json +285 -0
- package/.opencode/hooks/hook-metrics.json +380 -0
- package/.opencode/hooks/post-commit +114 -0
- package/.opencode/hooks/post-push +34 -0
- package/.opencode/init.sh +151 -0
- package/.opencode/skills/api-design/SKILL.md +37 -0
- package/.opencode/skills/architect-tools/SKILL.md +37 -0
- package/.opencode/skills/architecture-patterns/SKILL.md +37 -0
- package/.opencode/skills/auto-format/SKILL.md +37 -0
- package/.opencode/skills/backend-engineer/SKILL.md +49 -0
- package/.opencode/skills/boot-orchestrator/SKILL.md +37 -0
- package/.opencode/skills/bug-triage/SKILL.md +43 -0
- package/.opencode/skills/code-analyzer/SKILL.md +45 -0
- package/.opencode/skills/code-review/SKILL.md +52 -0
- package/.opencode/skills/content-creator/SKILL.md +38 -0
- package/.opencode/skills/database-engineer/SKILL.md +46 -0
- package/.opencode/skills/devops-engineer/SKILL.md +49 -0
- package/.opencode/skills/enforcer/SKILL.md +37 -0
- package/.opencode/skills/framework-compliance-audit/SKILL.md +37 -0
- package/.opencode/skills/frontend-engineer/SKILL.md +49 -0
- package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/.opencode/skills/git-workflow/SKILL.md +37 -0
- package/.opencode/skills/growth-strategist/SKILL.md +48 -0
- package/.opencode/skills/hermes-agent/SKILL.md +212 -0
- package/.opencode/skills/inference-improve/SKILL.md +97 -0
- package/.opencode/skills/lint/SKILL.md +37 -0
- package/.opencode/skills/log-monitor/SKILL.md +44 -0
- package/.opencode/skills/mobile-developer/SKILL.md +42 -0
- package/.opencode/skills/model-health-check/SKILL.md +37 -0
- package/.opencode/skills/multimodal-looker/SKILL.md +45 -0
- package/.opencode/skills/orchestrator/SKILL.md +37 -0
- package/.opencode/skills/performance-analysis/SKILL.md +37 -0
- package/.opencode/skills/performance-engineer/SKILL.md +41 -0
- package/.opencode/skills/performance-optimization/SKILL.md +37 -0
- package/.opencode/skills/processor-pipeline/SKILL.md +37 -0
- package/.opencode/skills/project-analysis/SKILL.md +42 -0
- package/.opencode/skills/refactoring-strategies/SKILL.md +37 -0
- package/.opencode/skills/registry.json +66 -0
- package/.opencode/skills/researcher/SKILL.md +37 -0
- package/.opencode/skills/security-audit/SKILL.md +47 -0
- package/.opencode/skills/security-scan/SKILL.md +37 -0
- package/.opencode/skills/seo-consultant/SKILL.md +43 -0
- package/.opencode/skills/session-management/SKILL.md +36 -0
- package/.opencode/skills/state-manager/SKILL.md +37 -0
- package/.opencode/skills/storyteller/SKILL.md +130 -0
- package/.opencode/skills/strategist/SKILL.md +32 -0
- package/.opencode/skills/tech-writer/SKILL.md +37 -0
- package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
- package/.opencode/skills/testing-strategy/SKILL.md +43 -0
- package/.opencode/skills/ui-ux-design/SKILL.md +603 -0
- package/.opencode/workflows/post-deployment-audit.yml +123 -0
- package/AGENTS.md +110 -0
- package/LICENSE +21 -0
- package/README.md +131 -0
- package/dist/AGENTS.md +110 -0
- package/dist/CHANGELOG.md +2182 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +131 -0
- package/dist/agents/architect.js +56 -0
- package/dist/agents/backend-engineer.js +81 -0
- package/dist/agents/bug-triage-specialist.js +74 -0
- package/dist/agents/code-analyzer.js +150 -0
- package/dist/agents/code-reviewer.js +69 -0
- package/dist/agents/content-creator.js +72 -0
- package/dist/agents/database-engineer.js +76 -0
- package/dist/agents/devops-engineer.js +84 -0
- package/dist/agents/frontend-engineer.js +78 -0
- package/dist/agents/frontend-ui-ux-engineer.js +64 -0
- package/dist/agents/growth-strategist.js +111 -0
- package/dist/agents/index.js +45 -0
- package/dist/agents/librarian-agents-updater.js +333 -0
- package/dist/agents/log-monitor.js +109 -0
- package/dist/agents/mobile-developer.js +102 -0
- package/dist/agents/multimodal-looker.js +93 -0
- package/dist/agents/performance-engineer.js +86 -0
- package/dist/agents/refactorer.js +80 -0
- package/dist/agents/registry.js +340 -0
- package/dist/agents/researcher.js +83 -0
- package/dist/agents/security-auditor.js +158 -0
- package/dist/agents/seo-consultant.js +53 -0
- package/dist/agents/strategist.js +47 -0
- package/dist/agents/tech-writer.js +84 -0
- package/dist/agents/testing-lead.js +95 -0
- package/dist/agents/types.js +1 -0
- package/dist/analytics/consent-manager.js +258 -0
- package/dist/analytics/emerging-pattern-detector.js +260 -0
- package/dist/analytics/pattern-learning-engine.js +278 -0
- package/dist/analytics/pattern-performance-tracker.js +336 -0
- package/dist/analytics/predictive-analytics.js +248 -0
- package/dist/analytics/prompt-pattern-analyzer.js +371 -0
- package/dist/analytics/routing-performance-analyzer.js +356 -0
- package/dist/analytics/routing-refiner.js +380 -0
- package/dist/analytics/simple-pattern-analyzer.js +297 -0
- package/dist/architect/architect-tools.js +437 -0
- package/dist/architect/architectural-integrity.js +78 -0
- package/dist/benchmark/performance-benchmark.js +372 -0
- package/dist/cli/commands/analytics-disable.js +72 -0
- package/dist/cli/commands/analytics-enable-action.js +82 -0
- package/dist/cli/commands/analytics-preview.js +106 -0
- package/dist/cli/commands/analytics-status.js +68 -0
- package/dist/cli/commands/antigravity-status.js +106 -0
- package/dist/cli/commands/archive-logs.js +161 -0
- package/dist/cli/commands/credible-init.js +82 -0
- package/dist/cli/commands/grok-install.js +16 -0
- package/dist/cli/commands/hermes-install.js +66 -0
- package/dist/cli/commands/mcp-install.js +253 -0
- package/dist/cli/commands/openclaw-install.js +44 -0
- package/dist/cli/commands/opencode-install.js +99 -0
- package/dist/cli/commands/plugin-commands.js +246 -0
- package/dist/cli/commands/publish-agent.js +184 -0
- package/dist/cli/commands/security-audit.js +219 -0
- package/dist/cli/commands/skill-install.js +481 -0
- package/dist/cli/commands/status.js +196 -0
- package/dist/cli/commands/storyteller.js +230 -0
- package/dist/cli/index.js +986 -0
- package/dist/cli/server.js +147 -0
- package/dist/config/default-agents.js +16 -0
- package/dist/core/activity-logger.js +260 -0
- package/dist/core/adaptive-kernel.js +192 -0
- package/dist/core/agent-spawn-gate.js +120 -0
- package/dist/core/boot-orchestrator.js +812 -0
- package/dist/core/bridge.mjs +945 -0
- package/dist/core/codex-formatter.js +220 -0
- package/dist/core/codex-injector.js +424 -0
- package/dist/core/config-loader.js +148 -0
- package/dist/core/config-paths.js +162 -0
- package/dist/core/context-loader.js +269 -0
- package/dist/core/context-validator.js +212 -0
- package/dist/core/features-config.js +457 -0
- package/dist/core/framework-logger.js +275 -0
- package/dist/core/index.js +6 -0
- package/dist/core/kernel-patterns.js +302 -0
- package/dist/core/logging-config.js +43 -0
- package/dist/core/model-router.js +175 -0
- package/dist/core/orchestrator.js +408 -0
- package/dist/core/system-prompt-generator.js +265 -0
- package/dist/core/trace-context.js +33 -0
- package/dist/core/xray-activation.js +134 -0
- package/dist/delegation/agent-delegator.js +769 -0
- package/dist/delegation/agent-expertise.js +156 -0
- package/dist/delegation/analytics/index.js +12 -0
- package/dist/delegation/analytics/learning-engine.js +277 -0
- package/dist/delegation/analytics/outcome-tracker.js +279 -0
- package/dist/delegation/analytics/routing-analytics.js +193 -0
- package/dist/delegation/ast-code-parser.js +878 -0
- package/dist/delegation/codebase-context-analyzer.js +1040 -0
- package/dist/delegation/complexity-analyzer.js +282 -0
- package/dist/delegation/complexity-core.js +219 -0
- package/dist/delegation/config/types.js +6 -0
- package/dist/delegation/dependency-graph-builder.js +409 -0
- package/dist/delegation/index.js +20 -0
- package/dist/delegation/metrics-aggregator.js +335 -0
- package/dist/delegation/session-coordinator.js +352 -0
- package/dist/delegation/strategy-selector.js +108 -0
- package/dist/delegation/voting-coordinator.js +375 -0
- package/dist/delegation/voting-types.js +10 -0
- package/dist/delegation/weighted-voting-aggregator.js +194 -0
- package/dist/enforcement/core/index.js +19 -0
- package/dist/enforcement/core/rule-executor.js +365 -0
- package/dist/enforcement/core/rule-hierarchy.js +259 -0
- package/dist/enforcement/core/rule-registry.js +240 -0
- package/dist/enforcement/core/violation-fixer.js +651 -0
- package/dist/enforcement/enforcer-tools.js +909 -0
- package/dist/enforcement/index.js +41 -0
- package/dist/enforcement/loaders/agent-triage-loader.js +222 -0
- package/dist/enforcement/loaders/agents-md-validation-loader.js +252 -0
- package/dist/enforcement/loaders/base-loader.js +86 -0
- package/dist/enforcement/loaders/codex-loader.js +396 -0
- package/dist/enforcement/loaders/index.js +40 -0
- package/dist/enforcement/loaders/loader-orchestrator.js +168 -0
- package/dist/enforcement/loaders/processor-loader.js +113 -0
- package/dist/enforcement/rule-enforcer.js +298 -0
- package/dist/enforcement/test-auto-healing.js +325 -0
- package/dist/enforcement/types.js +30 -0
- package/dist/enforcement/validators/architecture-validators.js +600 -0
- package/dist/enforcement/validators/base-validator.js +108 -0
- package/dist/enforcement/validators/code-quality-validators.js +336 -0
- package/dist/enforcement/validators/index.js +21 -0
- package/dist/enforcement/validators/security-validators.js +220 -0
- package/dist/enforcement/validators/testing-validators.js +253 -0
- package/dist/enforcement/validators/validator-registry.js +150 -0
- package/dist/execution/opencode-cli-invoker.js +173 -0
- package/dist/execution/proposal-applier.js +254 -0
- package/dist/governance/codex-policy.service.js +167 -0
- package/dist/governance/governance-core.js +152 -0
- package/dist/governance/governance-service.js +274 -0
- package/dist/governance/governance-types.js +6 -0
- package/dist/index.js +24 -0
- package/dist/inference/deploy-verifier.js +161 -0
- package/dist/inference/index.js +5 -0
- package/dist/inference/inference-accumulator.js +126 -0
- package/dist/inference/inference-cycle.js +1168 -0
- package/dist/inference/semantic-patterns.js +310 -0
- package/dist/inference/session-capture.js +308 -0
- package/dist/integrations/base/ExampleIntegration.js +181 -0
- package/dist/integrations/base/Integration.js +395 -0
- package/dist/integrations/base/README.md +446 -0
- package/dist/integrations/base/index.js +16 -0
- package/dist/integrations/base/registry.js +606 -0
- package/dist/integrations/base/types.js +118 -0
- package/dist/integrations/governance/governance-client.js +316 -0
- package/dist/integrations/governance/index.js +373 -0
- package/dist/integrations/governance/types.js +97 -0
- package/dist/integrations/grok/grok-cli.js +83 -0
- package/dist/integrations/grok/hooks/pre-tool-use.js +134 -0
- package/dist/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/dist/integrations/hermes-agent/__init__.py +718 -0
- package/dist/integrations/hermes-agent/after-install.md +71 -0
- package/dist/integrations/hermes-agent/bridge.mjs +861 -0
- package/dist/integrations/hermes-agent/conftest.py +14 -0
- package/dist/integrations/hermes-agent/plugin.yaml +12 -0
- package/dist/integrations/hermes-agent/schemas.py +100 -0
- package/dist/integrations/hermes-agent/test_plugin.py +1100 -0
- package/dist/integrations/hermes-agent/tools.py +253 -0
- package/dist/integrations/openclaw/README.md +134 -0
- package/dist/integrations/openclaw/api-server.js +389 -0
- package/dist/integrations/openclaw/client.js +492 -0
- package/dist/integrations/openclaw/config.js +374 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.js +280 -0
- package/dist/integrations/openclaw/index.js +351 -0
- package/dist/integrations/openclaw/types.js +153 -0
- package/dist/integrations/plugins/index.js +10 -0
- package/dist/integrations/plugins/plugin-integration.js +606 -0
- package/dist/integrations/plugins/plugin-registry.js +580 -0
- package/dist/mcps/agent-resolver.js +106 -0
- package/dist/mcps/architect-tools.server.js +277 -0
- package/dist/mcps/auto-format.server.js +413 -0
- package/dist/mcps/boot-orchestrator.server.js +853 -0
- package/dist/mcps/config/config-loader.js +103 -0
- package/dist/mcps/config/config-validator.js +101 -0
- package/dist/mcps/config/index.js +30 -0
- package/dist/mcps/config/plugin-server-registry.js +223 -0
- package/dist/mcps/config/server-config-registry.js +348 -0
- package/dist/mcps/connection/connection-manager.js +79 -0
- package/dist/mcps/connection/connection-pool.js +164 -0
- package/dist/mcps/connection/mcp-connection.js +233 -0
- package/dist/mcps/connection/process-spawner.js +34 -0
- package/dist/mcps/enforcer-tools.server.js +778 -0
- package/dist/mcps/estimation.server.js +192 -0
- package/dist/mcps/framework-compliance-audit.server.js +500 -0
- package/dist/mcps/framework-help.server.js +400 -0
- package/dist/mcps/governance.server.js +464 -0
- package/dist/mcps/in-process-skill-registry.js +48 -0
- package/dist/mcps/knowledge-skills/api-design.server.js +123 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +113 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +474 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +605 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +847 -0
- package/dist/mcps/knowledge-skills/content-creator.server.js +256 -0
- package/dist/mcps/knowledge-skills/database-design.server.js +822 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +1180 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.js +115 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +361 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.js +451 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.js +525 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1063 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +1587 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.js +811 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +796 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +846 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +937 -0
- package/dist/mcps/knowledge-skills/session-management.server.js +470 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +729 -0
- package/dist/mcps/knowledge-skills/strategist.server.js +217 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.js +1191 -0
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +866 -0
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +827 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1538 -0
- package/dist/mcps/lint.server.js +381 -0
- package/dist/mcps/mcp-client.js +574 -0
- package/dist/mcps/model-health-check.server.js +228 -0
- package/dist/mcps/orchestrator/config/agent-capabilities.js +87 -0
- package/dist/mcps/orchestrator/execution/execution-planner.js +279 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +94 -0
- package/dist/mcps/orchestrator/handlers/status-handler.js +232 -0
- package/dist/mcps/orchestrator/handlers/task-handler.js +197 -0
- package/dist/mcps/orchestrator/server.js +305 -0
- package/dist/mcps/orchestrator/types.js +6 -0
- package/dist/mcps/orchestrator.server.js +19 -0
- package/dist/mcps/performance-analysis.server.js +519 -0
- package/dist/mcps/processor-pipeline.server.js +561 -0
- package/dist/mcps/protocol/protocol-constants.js +46 -0
- package/dist/mcps/registry.json +110 -0
- package/dist/mcps/researcher.server.js +504 -0
- package/dist/mcps/security-scan.server.js +531 -0
- package/dist/mcps/simulation/index.js +12 -0
- package/dist/mcps/simulation/server-simulations.js +219 -0
- package/dist/mcps/simulation/simulation-engine.js +96 -0
- package/dist/mcps/state-manager.server.js +637 -0
- package/dist/mcps/tools/index.js +14 -0
- package/dist/mcps/tools/tool-cache.js +112 -0
- package/dist/mcps/tools/tool-discovery.js +65 -0
- package/dist/mcps/tools/tool-executor.js +75 -0
- package/dist/mcps/tools/tool-registry.js +67 -0
- package/dist/mcps/types/index.js +15 -0
- package/dist/mcps/types/json-rpc.types.js +7 -0
- package/dist/mcps/types/mcp.types.js +7 -0
- package/dist/metrics/agent-metrics.js +574 -0
- package/dist/metrics/index.js +6 -0
- package/dist/monitoring/advanced-profiler.js +232 -0
- package/dist/monitoring/memory-monitor.js +315 -0
- package/dist/monitoring/nudge-watchdog.js +356 -0
- package/dist/monitoring/test-auto-generation-monitor.js +157 -0
- package/dist/orchestrator/agent-spawn-governor.js +559 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +399 -0
- package/dist/orchestrator/intelligent-commit-batcher.js +353 -0
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +456 -0
- package/dist/orchestrator/orchestrator.js +657 -0
- package/dist/orchestrator/self-direction-activation.js +245 -0
- package/dist/orchestrator/universal-librarian-consultation.js +216 -0
- package/dist/orchestrator/universal-registry-bridge.js +247 -0
- package/dist/performance/performance-budget-enforcer.js +434 -0
- package/dist/performance/performance-regression-tester.js +342 -0
- package/dist/plugin/xray-codex-injection.js +857 -0
- package/dist/postprocessor/PostProcessor.js +1048 -0
- package/dist/postprocessor/analysis/FailureAnalysisEngine.js +245 -0
- package/dist/postprocessor/autofix/AutoFixEngine.js +254 -0
- package/dist/postprocessor/autofix/FixValidator.js +56 -0
- package/dist/postprocessor/config.js +65 -0
- package/dist/postprocessor/escalation/EscalationEngine.js +492 -0
- package/dist/postprocessor/monitoring/MonitoringEngine.js +125 -0
- package/dist/postprocessor/redeploy/RedeployCoordinator.js +342 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +131 -0
- package/dist/postprocessor/success/SuccessHandler.js +134 -0
- package/dist/postprocessor/triggers/APITrigger.js +115 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +551 -0
- package/dist/postprocessor/triggers/WebhookTrigger.js +211 -0
- package/dist/postprocessor/types.js +4 -0
- package/dist/processors/doc-write-guard.js +46 -0
- package/dist/processors/implementations/agents-md-validation-processor.js +286 -0
- package/dist/processors/implementations/async-pattern-processor.js +158 -0
- package/dist/processors/implementations/codex-compliance-processor.js +57 -0
- package/dist/processors/implementations/commit-batcher-processor.js +71 -0
- package/dist/processors/implementations/console-log-guard-processor.js +163 -0
- package/dist/processors/implementations/coverage-analysis-processor.js +138 -0
- package/dist/processors/implementations/error-boundary-processor.js +44 -0
- package/dist/processors/implementations/inference-improvement-processor.js +270 -0
- package/dist/processors/implementations/log-protection-processor.js +118 -0
- package/dist/processors/implementations/nudge-processor.js +130 -0
- package/dist/processors/implementations/performance-budget-processor.js +217 -0
- package/dist/processors/implementations/postprocessor-chain-validator.js +149 -0
- package/dist/processors/implementations/pre-validate-processor.js +18 -0
- package/dist/processors/implementations/publish-preflight-processor.js +249 -0
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +33 -0
- package/dist/processors/implementations/refactoring-logging-processor.js +96 -0
- package/dist/processors/implementations/regression-testing-processor.js +59 -0
- package/dist/processors/implementations/session-capture-processor.js +37 -0
- package/dist/processors/implementations/session-summary-processor.js +130 -0
- package/dist/processors/implementations/spawn-governance-processor.js +219 -0
- package/dist/processors/implementations/state-validation-processor.js +15 -0
- package/dist/processors/implementations/storytelling-trigger-processor.js +589 -0
- package/dist/processors/implementations/test-auto-creation-processor.js +484 -0
- package/dist/processors/implementations/test-execution-processor.js +132 -0
- package/dist/processors/implementations/typescript-compilation-processor.js +87 -0
- package/dist/processors/implementations/version-compliance-processor.js +350 -0
- package/dist/processors/processor-interfaces.js +126 -0
- package/dist/processors/processor-manager.js +826 -0
- package/dist/processors/processor-types.js +12 -0
- package/dist/public/about.html +228 -0
- package/dist/public/enterprise.html +27 -0
- package/dist/public/features.html +102 -0
- package/dist/public/index.html +145 -0
- package/dist/reporting/framework-reporting-system.js +187 -0
- package/dist/reporting/log-parser.js +281 -0
- package/dist/reporting/metrics.js +202 -0
- package/dist/reporting/report-formatter.js +146 -0
- package/dist/reporting/types.js +1 -0
- package/dist/scripts/activate-kernel-pipeline.js +101 -0
- package/dist/scripts/integration.js +234 -0
- package/dist/scripts/pre-command +26 -0
- package/dist/scripts/pre-command.mjs +358 -0
- package/dist/security/comprehensive-security-audit.js +1005 -0
- package/dist/security/index.js +13 -0
- package/dist/security/prompt-security-validator.js +148 -0
- package/dist/security/security-agent-coordinator.js +204 -0
- package/dist/security/security-auditor.js +584 -0
- package/dist/security/security-hardener.js +170 -0
- package/dist/security/security-hardening-system.js +727 -0
- package/dist/security/security-headers.js +118 -0
- package/dist/security/security-orchestration-layer.js +496 -0
- package/dist/security/security-scanner.js +429 -0
- package/dist/services/inference-tuner.js +301 -0
- package/dist/session/index.js +3 -0
- package/dist/session/session-cleanup-manager.js +366 -0
- package/dist/session/session-monitor.js +503 -0
- package/dist/session/session-state-manager.js +522 -0
- package/dist/skills/api-design/SKILL.md +37 -0
- package/dist/skills/architect-tools/SKILL.md +37 -0
- package/dist/skills/architecture-patterns/SKILL.md +37 -0
- package/dist/skills/auto-format/SKILL.md +37 -0
- package/dist/skills/backend-engineer/SKILL.md +49 -0
- package/dist/skills/boot-orchestrator/SKILL.md +37 -0
- package/dist/skills/bug-triage/SKILL.md +43 -0
- package/dist/skills/code-analyzer/SKILL.md +45 -0
- package/dist/skills/code-review/SKILL.md +52 -0
- package/dist/skills/content-creator/SKILL.md +38 -0
- package/dist/skills/database-engineer/SKILL.md +46 -0
- package/dist/skills/devops-engineer/SKILL.md +49 -0
- package/dist/skills/enforcer/SKILL.md +37 -0
- package/dist/skills/framework-compliance-audit/SKILL.md +37 -0
- package/dist/skills/frontend-engineer/SKILL.md +49 -0
- package/dist/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/dist/skills/git-workflow/SKILL.md +37 -0
- package/dist/skills/growth-strategist/SKILL.md +48 -0
- package/dist/skills/hermes-agent/SKILL.md +212 -0
- package/dist/skills/inference-improve/SKILL.md +97 -0
- package/dist/skills/lint/SKILL.md +37 -0
- package/dist/skills/log-monitor/SKILL.md +44 -0
- package/dist/skills/mobile-developer/SKILL.md +42 -0
- package/dist/skills/model-health-check/SKILL.md +37 -0
- package/dist/skills/multimodal-looker/SKILL.md +45 -0
- package/dist/skills/orchestrator/SKILL.md +37 -0
- package/dist/skills/performance-analysis/SKILL.md +37 -0
- package/dist/skills/performance-engineer/SKILL.md +41 -0
- package/dist/skills/performance-optimization/SKILL.md +37 -0
- package/dist/skills/processor-pipeline/SKILL.md +37 -0
- package/dist/skills/project-analysis/SKILL.md +42 -0
- package/dist/skills/refactoring-strategies/SKILL.md +37 -0
- package/dist/skills/registry.json +66 -0
- package/dist/skills/researcher/SKILL.md +37 -0
- package/dist/skills/security-audit/SKILL.md +48 -0
- package/dist/skills/security-scan/SKILL.md +37 -0
- package/dist/skills/seo-consultant/SKILL.md +43 -0
- package/dist/skills/session-management/SKILL.md +36 -0
- package/dist/skills/state-manager/SKILL.md +37 -0
- package/dist/skills/storyteller/SKILL.md +130 -0
- package/dist/skills/strategist/SKILL.md +32 -0
- package/dist/skills/tech-writer/SKILL.md +37 -0
- package/dist/skills/testing-best-practices/SKILL.md +37 -0
- package/dist/skills/testing-strategy/SKILL.md +43 -0
- package/dist/skills/ui-ux-design/SKILL.md +603 -0
- package/dist/state/context-providers.js +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/state-manager.js +208 -0
- package/dist/state/state-types.js +1 -0
- package/dist/testing/memory-regression-suite.js +258 -0
- package/dist/utils/batch-operations.js +292 -0
- package/dist/utils/codex-parser.js +445 -0
- package/dist/utils/command-runner.js +96 -0
- package/dist/utils/import-resolver.js +189 -0
- package/dist/utils/language-detector.js +383 -0
- package/dist/utils/path-resolver.js +112 -0
- package/dist/utils/shutdown-handler.js +75 -0
- package/dist/utils/test-template-generator.js +178 -0
- package/dist/utils/token-manager.js +163 -0
- package/dist/validation/estimation-validator.js +241 -0
- package/dist/validation/report-content-validator.js +218 -0
- package/opencode.json +153 -0
- package/package.json +170 -0
- package/scripts/helpers/resolve-config-path.cjs +57 -0
- package/scripts/helpers/resolve-config-path.mjs +73 -0
- package/scripts/hooks/pre-command +26 -0
- package/scripts/hooks/pre-command.mjs +358 -0
- package/scripts/hooks/run-hook.js +570 -0
- package/scripts/mjs/test-consumer-readiness.mjs +273 -0
- package/scripts/mjs/test-mcp-functionality.mjs +507 -0
- package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
- package/scripts/mjs/validate-postinstall-config.mjs +308 -0
- package/scripts/node/auto-reflection-generator.mjs +496 -0
- package/scripts/node/basic-security-audit.cjs +338 -0
- package/scripts/node/ci-cd-auto-fix.cjs +263 -0
- package/scripts/node/ci-report-generator.mjs +227 -0
- package/scripts/node/enforce-agents-md.mjs +420 -0
- package/scripts/node/enforce-version-compliance.sh +22 -0
- package/scripts/node/enforce-version-compliance.ts +126 -0
- package/scripts/node/github-actions-monitor.cjs +23 -0
- package/scripts/node/govern-reflection.mjs +160 -0
- package/scripts/node/postinstall.cjs +78 -0
- package/scripts/node/pre-publish-guard.js +267 -0
- package/scripts/node/prepare-consumer.cjs +143 -0
- package/scripts/node/reflection-processor.cjs +213 -0
- package/scripts/node/reflection-validate.sh +194 -0
- package/scripts/node/release-tweet.mjs +39 -0
- package/scripts/node/release.js +159 -0
- package/scripts/node/release.mjs +213 -0
- package/scripts/node/setup-dev.cjs +83 -0
- package/scripts/node/setup.cjs +214 -0
- package/scripts/node/sync-versions.mjs +140 -0
- package/scripts/node/universal-version-manager.js +1025 -0
- package/scripts/node/validate-external-processes.js +265 -0
- package/scripts/node/validate-mcp-connectivity.js +258 -0
- package/scripts/node/version-manager.mjs +524 -0
- package/scripts/validate-stringray-comprehensive.js +636 -0
- package/src/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/src/mcps/agent-resolver.ts +168 -0
- package/src/mcps/architect-tools.server.ts +343 -0
- package/src/mcps/auto-format.server.ts +529 -0
- package/src/mcps/boot-orchestrator.server.ts +1082 -0
- package/src/mcps/config/__tests__/config-loader.test.ts +338 -0
- package/src/mcps/config/__tests__/config-validator.test.ts +646 -0
- package/src/mcps/config/__tests__/server-config-registry.test.ts +257 -0
- package/src/mcps/config/config-loader.ts +127 -0
- package/src/mcps/config/config-validator.ts +127 -0
- package/src/mcps/config/index.ts +32 -0
- package/src/mcps/config/plugin-server-registry.ts +335 -0
- package/src/mcps/config/server-config-registry.ts +395 -0
- package/src/mcps/connection/connection-manager.ts +91 -0
- package/src/mcps/connection/connection-pool.ts +216 -0
- package/src/mcps/connection/mcp-connection.ts +327 -0
- package/src/mcps/connection/process-spawner.ts +47 -0
- package/src/mcps/enforcer-tools.server.ts +1106 -0
- package/src/mcps/estimation.server.ts +229 -0
- package/src/mcps/framework-compliance-audit.server.ts +635 -0
- package/src/mcps/framework-help.server.ts +467 -0
- package/src/mcps/governance.server.ts +551 -0
- package/src/mcps/in-process-skill-registry.ts +79 -0
- package/src/mcps/knowledge-skills/api-design.server.test.ts +41 -0
- package/src/mcps/knowledge-skills/api-design.server.ts +160 -0
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +152 -0
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +624 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.test.ts +129 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +591 -0
- package/src/mcps/knowledge-skills/code-review.server.ts +1132 -0
- package/src/mcps/knowledge-skills/content-creator.server.ts +300 -0
- package/src/mcps/knowledge-skills/database-design.server.ts +1200 -0
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +1622 -0
- package/src/mcps/knowledge-skills/git-workflow.server.ts +152 -0
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +413 -0
- package/src/mcps/knowledge-skills/log-monitor.server.ts +619 -0
- package/src/mcps/knowledge-skills/mobile-development.server.ts +672 -0
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1500 -0
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +2065 -0
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1111 -0
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +1092 -0
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +112 -0
- package/src/mcps/knowledge-skills/security-audit.server.ts +1193 -0
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1160 -0
- package/src/mcps/knowledge-skills/session-management.server.ts +576 -0
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +941 -0
- package/src/mcps/knowledge-skills/strategist.server.ts +267 -0
- package/src/mcps/knowledge-skills/tech-writer.server.ts +1638 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +136 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +1232 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +100 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +1172 -0
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +2076 -0
- package/src/mcps/lint.server.ts +483 -0
- package/src/mcps/mcp-client.ts +706 -0
- package/src/mcps/model-health-check.server.ts +292 -0
- package/src/mcps/orchestrator/config/agent-capabilities.ts +108 -0
- package/src/mcps/orchestrator/execution/execution-planner.ts +353 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +125 -0
- package/src/mcps/orchestrator/handlers/status-handler.ts +295 -0
- package/src/mcps/orchestrator/handlers/task-handler.ts +268 -0
- package/src/mcps/orchestrator/server.ts +388 -0
- package/src/mcps/orchestrator/types.ts +81 -0
- package/src/mcps/orchestrator.server.ts +34 -0
- package/src/mcps/performance-analysis.server.ts +715 -0
- package/src/mcps/processor-pipeline.server.ts +778 -0
- package/src/mcps/protocol/protocol-constants.ts +51 -0
- package/src/mcps/registry.json +110 -0
- package/src/mcps/researcher.server.ts +595 -0
- package/src/mcps/security-scan.server.ts +651 -0
- package/src/mcps/simulation/__tests__/simulation-engine.test.ts +275 -0
- package/src/mcps/simulation/index.ts +23 -0
- package/src/mcps/simulation/server-simulations.ts +241 -0
- package/src/mcps/simulation/simulation-engine.ts +126 -0
- package/src/mcps/state-manager.server.ts +777 -0
- package/src/mcps/tools/__tests__/tool-cache.test.ts +205 -0
- package/src/mcps/tools/__tests__/tool-discovery.test.ts +189 -0
- package/src/mcps/tools/__tests__/tool-executor.test.ts +215 -0
- package/src/mcps/tools/__tests__/tool-registry.test.ts +230 -0
- package/src/mcps/tools/index.ts +15 -0
- package/src/mcps/tools/tool-cache.ts +145 -0
- package/src/mcps/tools/tool-discovery.ts +83 -0
- package/src/mcps/tools/tool-executor.ts +106 -0
- package/src/mcps/tools/tool-registry.ts +78 -0
- package/src/mcps/types/__tests__/types.test.ts +341 -0
- package/src/mcps/types/index.ts +17 -0
- package/src/mcps/types/json-rpc.types.ts +38 -0
- package/src/mcps/types/mcp.types.ts +115 -0
- package/src/opencode/agents/api-design.yml +31 -0
- package/src/opencode/agents/architect.yml +15 -0
- package/src/opencode/agents/architecture-patterns.yml +14 -0
- package/src/opencode/agents/auto-format.yml +14 -0
- package/src/opencode/agents/backend-engineer.yml +12 -0
- package/src/opencode/agents/boot-orchestrator.yml +14 -0
- package/src/opencode/agents/bug-triage-specialist.yml +15 -0
- package/src/opencode/agents/code-analyzer.yml +12 -0
- package/src/opencode/agents/code-reviewer.yml +14 -0
- package/src/opencode/agents/content-creator.yml +12 -0
- package/src/opencode/agents/database-engineer.yml +12 -0
- package/src/opencode/agents/devops-engineer.yml +12 -0
- package/src/opencode/agents/framework-compliance-audit.yml +14 -0
- package/src/opencode/agents/frontend-engineer.yml +12 -0
- package/src/opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/src/opencode/agents/git-workflow.yml +15 -0
- package/src/opencode/agents/growth-strategist.yml +12 -0
- package/src/opencode/agents/hermes-agent.yml +12 -0
- package/src/opencode/agents/inference-improve.yml +12 -0
- package/src/opencode/agents/lint.yml +14 -0
- package/src/opencode/agents/log-monitor.yml +12 -0
- package/src/opencode/agents/mobile-developer.yml +12 -0
- package/src/opencode/agents/model-health-check.yml +12 -0
- package/src/opencode/agents/multimodal-looker.yml +12 -0
- package/src/opencode/agents/performance-analysis.yml +12 -0
- package/src/opencode/agents/performance-engineer.yml +12 -0
- package/src/opencode/agents/performance-optimization.yml +12 -0
- package/src/opencode/agents/processor-pipeline.yml +14 -0
- package/src/opencode/agents/project-analysis.yml +12 -0
- package/src/opencode/agents/refactorer.yml +12 -0
- package/src/opencode/agents/researcher.yml +12 -0
- package/src/opencode/agents/security-auditor.yml +12 -0
- package/src/opencode/agents/security-scan.yml +12 -0
- package/src/opencode/agents/seo-consultant.yml +12 -0
- package/src/opencode/agents/session-management.yml +12 -0
- package/src/opencode/agents/state-manager.yml +12 -0
- package/src/opencode/agents/storyteller.yml +12 -0
- package/src/opencode/agents/strategist.yml +12 -0
- package/src/opencode/agents/tech-writer.yml +12 -0
- package/src/opencode/agents/testing-best-practices.yml +12 -0
- package/src/opencode/agents/testing-lead.yml +12 -0
- package/src/opencode/agents/ui-ux-design.yml +12 -0
- package/src/opencode/codex.codex +8 -0
- package/src/opencode/commands/auto-format.md +99 -0
- package/src/opencode/commands/auto-summary-capture.md +90 -0
- package/src/opencode/commands/dependency-audit.md +184 -0
- package/src/opencode/commands/enforcer-daily-scan.md +137 -0
- package/src/opencode/commands/framework-compliance-audit.md +205 -0
- package/src/opencode/commands/interactive-validator.md +75 -0
- package/src/opencode/commands/job-summary-logger.md +68 -0
- package/src/opencode/commands/lint.md +11 -0
- package/src/opencode/commands/mode-switch.md +95 -0
- package/src/opencode/commands/model-health-check.md +186 -0
- package/src/opencode/commands/performance-analysis.md +144 -0
- package/src/opencode/commands/pre-commit-introspection.md +185 -0
- package/src/opencode/commands/pre-commit-introspection.sh +133 -0
- package/src/opencode/commands/security-scan.md +157 -0
- package/src/opencode/commands/sisyphus-validation.md +128 -0
- package/src/opencode/commands/summary-logger.md +83 -0
- package/src/opencode/enforcer-config.json +285 -0
- package/src/opencode/openclaw/config.json +25 -0
- package/src/opencode/workflows/post-deployment-audit.yml +123 -0
- package/src/skills/api-design/SKILL.md +37 -0
- package/src/skills/architect-tools/SKILL.md +37 -0
- package/src/skills/architecture-patterns/SKILL.md +37 -0
- package/src/skills/auto-format/SKILL.md +37 -0
- package/src/skills/backend-engineer/SKILL.md +49 -0
- package/src/skills/boot-orchestrator/SKILL.md +37 -0
- package/src/skills/bug-triage/SKILL.md +43 -0
- package/src/skills/code-analyzer/SKILL.md +45 -0
- package/src/skills/code-review/SKILL.md +52 -0
- package/src/skills/content-creator/SKILL.md +38 -0
- package/src/skills/database-engineer/SKILL.md +46 -0
- package/src/skills/devops-engineer/SKILL.md +49 -0
- package/src/skills/enforcer/SKILL.md +37 -0
- package/src/skills/framework-compliance-audit/SKILL.md +37 -0
- package/src/skills/frontend-engineer/SKILL.md +49 -0
- package/src/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/src/skills/git-workflow/SKILL.md +37 -0
- package/src/skills/growth-strategist/SKILL.md +48 -0
- package/src/skills/hermes-agent/SKILL.md +212 -0
- package/src/skills/inference-improve/SKILL.md +97 -0
- package/src/skills/lint/SKILL.md +37 -0
- package/src/skills/log-monitor/SKILL.md +44 -0
- package/src/skills/mobile-developer/SKILL.md +42 -0
- package/src/skills/model-health-check/SKILL.md +37 -0
- package/src/skills/multimodal-looker/SKILL.md +45 -0
- package/src/skills/orchestrator/SKILL.md +37 -0
- package/src/skills/performance-analysis/SKILL.md +37 -0
- package/src/skills/performance-engineer/SKILL.md +41 -0
- package/src/skills/performance-optimization/SKILL.md +37 -0
- package/src/skills/processor-pipeline/SKILL.md +37 -0
- package/src/skills/project-analysis/SKILL.md +42 -0
- package/src/skills/refactoring-strategies/SKILL.md +37 -0
- package/src/skills/registry.json +66 -0
- package/src/skills/researcher/SKILL.md +37 -0
- package/src/skills/security-audit/SKILL.md +48 -0
- package/src/skills/security-scan/SKILL.md +37 -0
- package/src/skills/seo-consultant/SKILL.md +43 -0
- package/src/skills/session-management/SKILL.md +36 -0
- package/src/skills/state-manager/SKILL.md +37 -0
- package/src/skills/storyteller/SKILL.md +130 -0
- package/src/skills/strategist/SKILL.md +32 -0
- package/src/skills/tech-writer/SKILL.md +37 -0
- package/src/skills/testing-best-practices/SKILL.md +37 -0
- package/src/skills/testing-strategy/SKILL.md +43 -0
- package/src/skills/ui-ux-design/SKILL.md +603 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Validators
|
|
3
|
+
*
|
|
4
|
+
* Security-related validators extracted from rule-enforcer.ts during Phase 3 refactoring.
|
|
5
|
+
* These validators enforce security best practices and input validation requirements.
|
|
6
|
+
*
|
|
7
|
+
* @module validators/security-validators
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { BaseValidator } from "./base-validator.js";
|
|
11
|
+
/**
|
|
12
|
+
* Validates input validation patterns in code.
|
|
13
|
+
* Checks for proper input validation, sanitization, and parameter validation.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const validator = new InputValidationValidator();
|
|
18
|
+
* const result = await validator.validate({
|
|
19
|
+
* newCode: 'function processUser(req) { return req.body.name; }',
|
|
20
|
+
* operation: 'write'
|
|
21
|
+
* });
|
|
22
|
+
* // result.passed === false (missing validation)
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class InputValidationValidator extends BaseValidator {
|
|
26
|
+
id = "input-validation-validator";
|
|
27
|
+
ruleId = "input-validation";
|
|
28
|
+
category = "security";
|
|
29
|
+
severity = "blocking";
|
|
30
|
+
async validate(context) {
|
|
31
|
+
const { newCode, operation } = context;
|
|
32
|
+
if (!newCode || operation !== "write") {
|
|
33
|
+
return {
|
|
34
|
+
passed: true,
|
|
35
|
+
message: "No code to validate for input validation",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Allow internal utility functions to skip validation
|
|
39
|
+
if (newCode.includes("internal") ||
|
|
40
|
+
newCode.includes("utility") ||
|
|
41
|
+
newCode.includes("helper")) {
|
|
42
|
+
return {
|
|
43
|
+
passed: true,
|
|
44
|
+
message: "Internal utility functions may skip validation",
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// For input validation in general functions, be more lenient
|
|
48
|
+
// Only flag obvious user input patterns without validation
|
|
49
|
+
// Note: "input" alone (as function param) shouldn't trigger this - only HTTP request inputs
|
|
50
|
+
const hasUserInput = newCode.includes("req.body") ||
|
|
51
|
+
newCode.includes("req.query") ||
|
|
52
|
+
newCode.includes("req.params");
|
|
53
|
+
const hasValidation = newCode.includes("validate") ||
|
|
54
|
+
newCode.includes("sanitize") ||
|
|
55
|
+
newCode.includes("zod") ||
|
|
56
|
+
newCode.includes("joi");
|
|
57
|
+
if (hasUserInput &&
|
|
58
|
+
!hasValidation &&
|
|
59
|
+
!newCode.includes("internal") &&
|
|
60
|
+
!newCode.includes("utility")) {
|
|
61
|
+
return {
|
|
62
|
+
passed: false,
|
|
63
|
+
message: "User input handling requires validation",
|
|
64
|
+
suggestions: ["Add input validation", "Sanitize user inputs"],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Look for functions with parameters that don't validate inputs
|
|
68
|
+
const functionsWithParams = newCode.match(/function\s+\w+\s*\([^)]*\)|const\s+\w+\s*=\s*\([^)]*\)\s*=>/g);
|
|
69
|
+
if (!functionsWithParams) {
|
|
70
|
+
return {
|
|
71
|
+
passed: true,
|
|
72
|
+
message: "No functions with parameters to validate",
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
for (const func of functionsWithParams) {
|
|
76
|
+
// Check if function has basic validation
|
|
77
|
+
const funcName = func.match(/(?:function|const)\s+(\w+)/)?.[1];
|
|
78
|
+
if (funcName) {
|
|
79
|
+
const funcBody = this.extractFunctionBody(newCode, funcName);
|
|
80
|
+
if (funcBody &&
|
|
81
|
+
!funcBody.includes("if") &&
|
|
82
|
+
!funcBody.includes("throw") &&
|
|
83
|
+
(func.includes("string") || func.includes("any"))) {
|
|
84
|
+
return {
|
|
85
|
+
passed: false,
|
|
86
|
+
message: `Function ${funcName} lacks input validation for parameters`,
|
|
87
|
+
suggestions: [
|
|
88
|
+
"Add parameter validation",
|
|
89
|
+
"Use type guards",
|
|
90
|
+
"Add null/undefined checks",
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
passed: true,
|
|
98
|
+
message: "Input validation implemented where needed",
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Validates security by design principles.
|
|
104
|
+
* Checks for security architecture patterns, input sanitization, and vulnerability prevention.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const validator = new SecurityByDesignValidator();
|
|
109
|
+
* const result = await validator.validate({
|
|
110
|
+
* newCode: 'app.post("/api", (req, res) => { db.query(req.body.sql); })',
|
|
111
|
+
* operation: 'write'
|
|
112
|
+
* });
|
|
113
|
+
* // result.passed === false (SQL injection risk)
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export class SecurityByDesignValidator extends BaseValidator {
|
|
117
|
+
id = "security-by-design-validator";
|
|
118
|
+
ruleId = "security-by-design";
|
|
119
|
+
category = "security";
|
|
120
|
+
severity = "blocking";
|
|
121
|
+
async validate(context) {
|
|
122
|
+
const { newCode, operation } = context;
|
|
123
|
+
if (!newCode || operation !== "write") {
|
|
124
|
+
return { passed: true, message: "No code to validate for security" };
|
|
125
|
+
}
|
|
126
|
+
const violations = [];
|
|
127
|
+
const suggestions = [];
|
|
128
|
+
// Check for user input handling without validation (skip for safe contexts)
|
|
129
|
+
const userInputs = newCode.match(/(?:req\.body|req\.query|req\.params)/g);
|
|
130
|
+
const hasInputKeyword = newCode.includes("input") &&
|
|
131
|
+
(newCode.includes("function") || newCode.includes("validate"));
|
|
132
|
+
if ((userInputs || hasInputKeyword) &&
|
|
133
|
+
!newCode.includes("useContext") &&
|
|
134
|
+
!newCode.includes("Context.") &&
|
|
135
|
+
!newCode.includes("performance") &&
|
|
136
|
+
!newCode.includes("optimized") &&
|
|
137
|
+
!newCode.includes("internal") &&
|
|
138
|
+
!newCode.includes("utility")) {
|
|
139
|
+
// Look for validation patterns
|
|
140
|
+
const hasValidation = newCode.includes("validate") ||
|
|
141
|
+
newCode.includes("sanitize") ||
|
|
142
|
+
newCode.includes("zod") ||
|
|
143
|
+
newCode.includes("joi") ||
|
|
144
|
+
newCode.includes("yup") ||
|
|
145
|
+
newCode.includes("express-validator");
|
|
146
|
+
if (!hasValidation) {
|
|
147
|
+
violations.push("User input handling detected without validation");
|
|
148
|
+
suggestions.push("Add input validation and sanitization");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Check for SQL injection patterns
|
|
152
|
+
const sqlInjectionPatterns = [
|
|
153
|
+
/query\s*\(\s*[`"'].*\$\{/,
|
|
154
|
+
/exec\s*\(\s*[`"'].*\$\{/,
|
|
155
|
+
/execute\s*\(\s*[`"'].*\$\{/,
|
|
156
|
+
/query\s*\(\s*.*\+\s*/,
|
|
157
|
+
/exec\s*\(\s*.*\+\s*/,
|
|
158
|
+
];
|
|
159
|
+
for (const pattern of sqlInjectionPatterns) {
|
|
160
|
+
if (pattern.test(newCode)) {
|
|
161
|
+
violations.push("Potential SQL injection vulnerability detected");
|
|
162
|
+
suggestions.push("Use parameterized queries or prepared statements", "Avoid string concatenation in SQL queries");
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Check for XSS vulnerabilities
|
|
167
|
+
const xssPatterns = [
|
|
168
|
+
/innerHTML\s*=/,
|
|
169
|
+
/outerHTML\s*=/,
|
|
170
|
+
/document\.write\s*\(/,
|
|
171
|
+
/eval\s*\(/,
|
|
172
|
+
];
|
|
173
|
+
for (const pattern of xssPatterns) {
|
|
174
|
+
if (pattern.test(newCode)) {
|
|
175
|
+
violations.push("Potential XSS vulnerability detected");
|
|
176
|
+
suggestions.push("Avoid using innerHTML with user input", "Use textContent instead of innerHTML", "Sanitize user input before rendering");
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Check for insecure authentication patterns
|
|
181
|
+
if (newCode.includes("password") ||
|
|
182
|
+
newCode.includes("token") ||
|
|
183
|
+
newCode.includes("secret")) {
|
|
184
|
+
const insecurePatterns = [
|
|
185
|
+
/password\s*[=:]\s*["'][^"']{1,7}["']/,
|
|
186
|
+
/token\s*[=:]\s*["'][^"']{1,15}["']/,
|
|
187
|
+
/secret\s*[=:]\s*["'][^"']{1,15}["']/,
|
|
188
|
+
];
|
|
189
|
+
for (const pattern of insecurePatterns) {
|
|
190
|
+
if (pattern.test(newCode)) {
|
|
191
|
+
violations.push("Short or hardcoded credential detected - potential security risk");
|
|
192
|
+
suggestions.push("Use environment variables for credentials", "Use a secrets management service", "Ensure credentials are sufficiently long and complex");
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Check for insecure randomness
|
|
198
|
+
// Math.random() should not be used for security-sensitive operations
|
|
199
|
+
const hasMathRandom = newCode.includes("Math.random()");
|
|
200
|
+
const securityContext = newCode.match(/function\s+\w*(?:token|password|secret|crypto)\w*\s*\(/i) ||
|
|
201
|
+
newCode.includes("generateToken") ||
|
|
202
|
+
newCode.includes("generatePassword") ||
|
|
203
|
+
newCode.includes("createSecret");
|
|
204
|
+
if (hasMathRandom && securityContext) {
|
|
205
|
+
violations.push("Math.random() used for security-sensitive operations");
|
|
206
|
+
suggestions.push("Use crypto.randomBytes() or crypto.randomUUID() for security tokens", "Use a cryptographically secure random number generator");
|
|
207
|
+
}
|
|
208
|
+
if (violations.length > 0) {
|
|
209
|
+
return {
|
|
210
|
+
passed: false,
|
|
211
|
+
message: `Security violations: ${violations.join(", ")}`,
|
|
212
|
+
suggestions,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
passed: true,
|
|
217
|
+
message: "Security by design principles followed",
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing Validators
|
|
3
|
+
*
|
|
4
|
+
* Validators for testing category rules extracted from rule-enforcer.ts.
|
|
5
|
+
* Each validator encapsulates the validation logic for a specific testing rule.
|
|
6
|
+
*
|
|
7
|
+
* @module validators/testing-validators
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { BaseValidator } from "./base-validator.js";
|
|
11
|
+
/**
|
|
12
|
+
* Validates that tests are required for new code (Codex Term #26).
|
|
13
|
+
* Checks if tests exist for new components or modified functionality.
|
|
14
|
+
*/
|
|
15
|
+
export class TestsRequiredValidator extends BaseValidator {
|
|
16
|
+
id = "tests-required-validator";
|
|
17
|
+
ruleId = "tests-required";
|
|
18
|
+
category = "testing";
|
|
19
|
+
severity = "error";
|
|
20
|
+
async validate(context) {
|
|
21
|
+
const { newCode, operation, tests } = context;
|
|
22
|
+
// For create operations, check if tests array is provided and empty
|
|
23
|
+
if (operation === "create" && Array.isArray(tests) && tests.length === 0) {
|
|
24
|
+
return this.createFailureResult("Tests are required when creating new components", ["Add unit tests for the new component", "Include integration tests if applicable"]);
|
|
25
|
+
}
|
|
26
|
+
// If no code provided, skip validation
|
|
27
|
+
if (!newCode) {
|
|
28
|
+
return this.createSuccessResult("No code to validate for tests");
|
|
29
|
+
}
|
|
30
|
+
// If we have newCode, check if it's a test file or has exported functions
|
|
31
|
+
if (newCode) {
|
|
32
|
+
// Check for test files themselves (should not require their own tests)
|
|
33
|
+
if (newCode.includes("describe(") ||
|
|
34
|
+
newCode.includes("it(") ||
|
|
35
|
+
newCode.includes("test(")) {
|
|
36
|
+
return this.createSuccessResult("Test files do not require additional tests");
|
|
37
|
+
}
|
|
38
|
+
// Simple check - if we have exported functions and no tests provided, flag it
|
|
39
|
+
const exportedFunctions = (newCode.match(/export\s+function\s+\w+/g) || []).length;
|
|
40
|
+
if (exportedFunctions > 0 && (!tests || tests.length === 0)) {
|
|
41
|
+
// Allow over-engineered code to pass test requirements for edge case
|
|
42
|
+
if (newCode.includes("if (") && newCode.split("\n").length > 10) {
|
|
43
|
+
return this.createSuccessResult("Over-engineered code may have different testing requirements");
|
|
44
|
+
}
|
|
45
|
+
return this.createFailureResult("Complex exported functions require tests", ["Add unit tests for exported functions", "Ensure test coverage for all code paths"]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return this.createSuccessResult("Tests present or not required");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validates test coverage thresholds (Codex Term #26).
|
|
53
|
+
* Maintains 85%+ behavioral test coverage.
|
|
54
|
+
*/
|
|
55
|
+
export class TestCoverageValidator extends BaseValidator {
|
|
56
|
+
id = "test-coverage-validator";
|
|
57
|
+
ruleId = "test-coverage";
|
|
58
|
+
category = "testing";
|
|
59
|
+
severity = "warning";
|
|
60
|
+
async validate(context) {
|
|
61
|
+
const { newCode, operation, tests } = context;
|
|
62
|
+
if (!newCode || operation !== "write") {
|
|
63
|
+
return this.createSuccessResult("No code to validate for test coverage");
|
|
64
|
+
}
|
|
65
|
+
// Check for exported functions that need tests
|
|
66
|
+
const exportedFunctions = newCode.match(/export\s+(?:function|const|let)\s+(\w+)/g);
|
|
67
|
+
if (exportedFunctions && exportedFunctions.length > 0) {
|
|
68
|
+
const testCount = tests ? tests.length : 0;
|
|
69
|
+
const coverageRatio = testCount / exportedFunctions.length;
|
|
70
|
+
if (coverageRatio < 0.85) {
|
|
71
|
+
// Less than 85% coverage
|
|
72
|
+
return this.createFailureResult(`Test coverage: ${Math.round(coverageRatio * 100)}% (${testCount}/${exportedFunctions.length} functions)`, [
|
|
73
|
+
"Add unit tests for exported functions",
|
|
74
|
+
"Aim for 85%+ behavioral test coverage",
|
|
75
|
+
"Focus on critical code paths first",
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return this.createSuccessResult("Test coverage requirements met (85%+)");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validates continuous integration requirements (Codex Term #36).
|
|
84
|
+
* Ensures automated testing and linting on every commit.
|
|
85
|
+
*/
|
|
86
|
+
export class ContinuousIntegrationValidator extends BaseValidator {
|
|
87
|
+
id = "continuous-integration-validator";
|
|
88
|
+
ruleId = "continuous-integration";
|
|
89
|
+
category = "testing";
|
|
90
|
+
severity = "error";
|
|
91
|
+
async validate(context) {
|
|
92
|
+
const { files, newCode } = context;
|
|
93
|
+
// Check for CI configuration files
|
|
94
|
+
const hasCIConfig = files?.some((file) => file.includes(".github/workflows") ||
|
|
95
|
+
file.includes(".gitlab-ci.yml") ||
|
|
96
|
+
file.includes("azure-pipelines.yml") ||
|
|
97
|
+
file.includes("jenkins") ||
|
|
98
|
+
file.includes(".circleci"));
|
|
99
|
+
// If modifying CI configs, validate they include testing steps
|
|
100
|
+
if (hasCIConfig && newCode) {
|
|
101
|
+
const hasTestStep = newCode.includes("npm test") ||
|
|
102
|
+
newCode.includes("yarn test") ||
|
|
103
|
+
newCode.includes("pnpm test") ||
|
|
104
|
+
newCode.includes("jest") ||
|
|
105
|
+
newCode.includes("vitest") ||
|
|
106
|
+
newCode.includes("mocha");
|
|
107
|
+
const hasLintStep = newCode.includes("npm run lint") ||
|
|
108
|
+
newCode.includes("yarn lint") ||
|
|
109
|
+
newCode.includes("pnpm lint") ||
|
|
110
|
+
newCode.includes("eslint") ||
|
|
111
|
+
newCode.includes("prettier --check");
|
|
112
|
+
if (!hasTestStep) {
|
|
113
|
+
return this.createFailureResult("CI configuration missing test execution step", [
|
|
114
|
+
"Add npm test or equivalent test command to CI pipeline",
|
|
115
|
+
"Ensure tests run on every commit",
|
|
116
|
+
]);
|
|
117
|
+
}
|
|
118
|
+
if (!hasLintStep) {
|
|
119
|
+
return this.createFailureResult("CI configuration missing linting step", [
|
|
120
|
+
"Add npm run lint or equivalent lint command to CI pipeline",
|
|
121
|
+
"Ensure code quality checks run on every commit",
|
|
122
|
+
]);
|
|
123
|
+
}
|
|
124
|
+
return this.createSuccessResult("CI configuration includes testing and linting steps");
|
|
125
|
+
}
|
|
126
|
+
// For non-CI file changes, just verify CI is set up
|
|
127
|
+
if (!hasCIConfig) {
|
|
128
|
+
// Check if CI files exist elsewhere (not in current changes)
|
|
129
|
+
return this.createSuccessResult("CI validation skipped (no CI configuration in changes)");
|
|
130
|
+
}
|
|
131
|
+
return this.createSuccessResult("Continuous integration requirements met");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Validates test failure reporting requirements.
|
|
136
|
+
* Ensures proper test failure handling and reporting mechanisms.
|
|
137
|
+
*/
|
|
138
|
+
export class TestFailureReportingValidator extends BaseValidator {
|
|
139
|
+
id = "test-failure-reporting-validator";
|
|
140
|
+
ruleId = "test-failure-reporting";
|
|
141
|
+
category = "reporting";
|
|
142
|
+
severity = "high";
|
|
143
|
+
async validate(context) {
|
|
144
|
+
const { files, newCode } = context;
|
|
145
|
+
// Check if we're modifying test files
|
|
146
|
+
const isTestFile = files?.some((file) => file.endsWith(".test.ts") ||
|
|
147
|
+
file.endsWith(".test.js") ||
|
|
148
|
+
file.endsWith(".spec.ts") ||
|
|
149
|
+
file.endsWith(".spec.js") ||
|
|
150
|
+
file.includes("__tests__"));
|
|
151
|
+
if (isTestFile && newCode) {
|
|
152
|
+
// Check for proper error handling in tests
|
|
153
|
+
const hasProperAssertions = newCode.includes("expect(") ||
|
|
154
|
+
newCode.includes("assert(") ||
|
|
155
|
+
newCode.includes("should(") ||
|
|
156
|
+
newCode.includes(".should.");
|
|
157
|
+
if (!hasProperAssertions) {
|
|
158
|
+
return this.createFailureResult("Test file missing proper assertions", [
|
|
159
|
+
"Add expect() or assert() statements to verify behavior",
|
|
160
|
+
"Ensure tests have meaningful assertions",
|
|
161
|
+
]);
|
|
162
|
+
}
|
|
163
|
+
// Check for test reporting setup
|
|
164
|
+
const hasReporterConfig = newCode.includes("reporter") ||
|
|
165
|
+
newCode.includes("coverage") ||
|
|
166
|
+
newCode.includes("testResultsProcessor");
|
|
167
|
+
if (!hasReporterConfig) {
|
|
168
|
+
return this.createWarningResult("Consider adding test reporting configuration", [
|
|
169
|
+
"Add test reporters for better failure visibility",
|
|
170
|
+
"Configure coverage reporting",
|
|
171
|
+
]);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return this.createSuccessResult("Test failure reporting requirements met");
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Create a warning validation result (convenience method).
|
|
178
|
+
*/
|
|
179
|
+
createWarningResult(message, suggestions) {
|
|
180
|
+
const result = {
|
|
181
|
+
passed: true, // Warnings don't fail validation
|
|
182
|
+
message: `Warning: ${message}`,
|
|
183
|
+
};
|
|
184
|
+
if (suggestions && suggestions.length > 0) {
|
|
185
|
+
result.suggestions = suggestions;
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Validates performance regression reporting requirements.
|
|
192
|
+
* Ensures performance metrics are tracked and reported.
|
|
193
|
+
*/
|
|
194
|
+
export class PerformanceRegressionReportingValidator extends BaseValidator {
|
|
195
|
+
id = "performance-regression-reporting-validator";
|
|
196
|
+
ruleId = "performance-regression-reporting";
|
|
197
|
+
category = "reporting";
|
|
198
|
+
severity = "warning";
|
|
199
|
+
async validate(context) {
|
|
200
|
+
const { newCode, operation } = context;
|
|
201
|
+
if (!newCode || operation !== "write") {
|
|
202
|
+
return this.createSuccessResult("No code change to validate");
|
|
203
|
+
}
|
|
204
|
+
const hasPerfCode = newCode.includes("performance") ||
|
|
205
|
+
newCode.includes("benchmark") ||
|
|
206
|
+
newCode.includes("profiling") ||
|
|
207
|
+
newCode.includes("measure") ||
|
|
208
|
+
newCode.includes("optimize");
|
|
209
|
+
if (hasPerfCode) {
|
|
210
|
+
const hasReporting = newCode.includes("console.time") ||
|
|
211
|
+
newCode.includes("performance.now") ||
|
|
212
|
+
newCode.includes("benchmark") ||
|
|
213
|
+
newCode.includes("metrics") ||
|
|
214
|
+
newCode.includes("report");
|
|
215
|
+
if (!hasReporting) {
|
|
216
|
+
return this.createFailureResult("Performance code lacks measurement/reporting", ["Add performance.now() or console.time()", "Include metrics reporting"]);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return this.createSuccessResult("Performance regression reporting requirements met");
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Validates security vulnerability reporting requirements.
|
|
224
|
+
* Ensures security issues are properly reported.
|
|
225
|
+
*/
|
|
226
|
+
export class SecurityVulnerabilityReportingValidator extends BaseValidator {
|
|
227
|
+
id = "security-vulnerability-reporting-validator";
|
|
228
|
+
ruleId = "security-vulnerability-reporting";
|
|
229
|
+
category = "reporting";
|
|
230
|
+
severity = "error";
|
|
231
|
+
async validate(context) {
|
|
232
|
+
const { newCode, operation } = context;
|
|
233
|
+
if (!newCode || operation !== "write") {
|
|
234
|
+
return this.createSuccessResult("No code change to validate");
|
|
235
|
+
}
|
|
236
|
+
const hasSecurityCode = newCode.includes("password") ||
|
|
237
|
+
newCode.includes("secret") ||
|
|
238
|
+
newCode.includes("token") ||
|
|
239
|
+
newCode.includes("auth") ||
|
|
240
|
+
newCode.includes("encrypt") ||
|
|
241
|
+
newCode.includes("credential");
|
|
242
|
+
if (hasSecurityCode) {
|
|
243
|
+
const exposesSecrets = newCode.includes("console.log") &&
|
|
244
|
+
(newCode.includes("password") ||
|
|
245
|
+
newCode.includes("secret") ||
|
|
246
|
+
newCode.includes("token"));
|
|
247
|
+
if (exposesSecrets) {
|
|
248
|
+
return this.createFailureResult("Security-sensitive data may be logged", ["Remove console.log of sensitive data", "Use secure logging"]);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return this.createSuccessResult("Security vulnerability reporting requirements met");
|
|
252
|
+
}
|
|
253
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all validator instances. Provides lookup by rule ID
|
|
5
|
+
* and category filtering capabilities.
|
|
6
|
+
*
|
|
7
|
+
* @module validators/validator-registry
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { NoDuplicateCodeValidator, ContextAnalysisIntegrationValidator, MemoryOptimizationValidator, DocumentationRequiredValidator, NoOverEngineeringValidator, CleanDebugLogsValidator, ConsoleLogUsageValidator, } from "./code-quality-validators.js";
|
|
11
|
+
import { InputValidationValidator, SecurityByDesignValidator, } from "./security-validators.js";
|
|
12
|
+
import { TestsRequiredValidator, TestCoverageValidator, ContinuousIntegrationValidator, TestFailureReportingValidator, PerformanceRegressionReportingValidator, SecurityVulnerabilityReportingValidator, } from "./testing-validators.js";
|
|
13
|
+
import { DependencyManagementValidator, SrcDistIntegrityValidator, ImportConsistencyValidator, ModuleSystemConsistencyValidator, ErrorResolutionValidator, LoopSafetyValidator, StateManagementPatternsValidator, SingleResponsibilityValidator, DeploymentSafetyValidator, MultiAgentEnsembleValidator, SubstrateExternalizationValidator, FrameworkSelfValidationValidator, EmergentImprovementValidator, } from "./architecture-validators.js";
|
|
14
|
+
/**
|
|
15
|
+
* Implementation of the validator registry.
|
|
16
|
+
* Manages validator instances in a Map for O(1) lookup by rule ID.
|
|
17
|
+
* Auto-registers all validators on construction for facade simplicity.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const registry = new ValidatorRegistry();
|
|
22
|
+
* const validator = registry.getValidator('no-duplicate-code')!;
|
|
23
|
+
* const result = await validator.validate(context);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export class ValidatorRegistry {
|
|
27
|
+
/** Internal map storing validators by rule ID */
|
|
28
|
+
validators = new Map();
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new ValidatorRegistry and auto-registers all validators.
|
|
31
|
+
*/
|
|
32
|
+
constructor() {
|
|
33
|
+
this.registerAllValidators();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Auto-register all validators.
|
|
37
|
+
* Called automatically on construction.
|
|
38
|
+
*/
|
|
39
|
+
registerAllValidators() {
|
|
40
|
+
// Code Quality Validators
|
|
41
|
+
this.register(new NoDuplicateCodeValidator());
|
|
42
|
+
this.register(new ContextAnalysisIntegrationValidator());
|
|
43
|
+
this.register(new MemoryOptimizationValidator());
|
|
44
|
+
this.register(new DocumentationRequiredValidator());
|
|
45
|
+
this.register(new NoOverEngineeringValidator());
|
|
46
|
+
this.register(new CleanDebugLogsValidator());
|
|
47
|
+
this.register(new ConsoleLogUsageValidator());
|
|
48
|
+
// Security Validators
|
|
49
|
+
this.register(new InputValidationValidator());
|
|
50
|
+
this.register(new SecurityByDesignValidator());
|
|
51
|
+
// Testing Validators
|
|
52
|
+
this.register(new TestsRequiredValidator());
|
|
53
|
+
this.register(new TestCoverageValidator());
|
|
54
|
+
this.register(new ContinuousIntegrationValidator());
|
|
55
|
+
this.register(new TestFailureReportingValidator());
|
|
56
|
+
// Architecture Validators
|
|
57
|
+
this.register(new DependencyManagementValidator());
|
|
58
|
+
this.register(new SrcDistIntegrityValidator());
|
|
59
|
+
this.register(new ImportConsistencyValidator());
|
|
60
|
+
this.register(new ModuleSystemConsistencyValidator());
|
|
61
|
+
this.register(new ErrorResolutionValidator());
|
|
62
|
+
this.register(new LoopSafetyValidator());
|
|
63
|
+
this.register(new StateManagementPatternsValidator());
|
|
64
|
+
this.register(new SingleResponsibilityValidator());
|
|
65
|
+
this.register(new DeploymentSafetyValidator());
|
|
66
|
+
this.register(new MultiAgentEnsembleValidator());
|
|
67
|
+
this.register(new SubstrateExternalizationValidator());
|
|
68
|
+
this.register(new FrameworkSelfValidationValidator());
|
|
69
|
+
this.register(new EmergentImprovementValidator());
|
|
70
|
+
// Reporting Validators
|
|
71
|
+
this.register(new PerformanceRegressionReportingValidator());
|
|
72
|
+
this.register(new SecurityVulnerabilityReportingValidator());
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Register a validator instance.
|
|
76
|
+
* The validator is keyed by its ruleId property.
|
|
77
|
+
*
|
|
78
|
+
* @param validator - The validator instance to register
|
|
79
|
+
* @throws Error if a validator for this ruleId already exists
|
|
80
|
+
*/
|
|
81
|
+
register(validator) {
|
|
82
|
+
if (this.validators.has(validator.ruleId)) {
|
|
83
|
+
throw new Error(`Validator for rule '${validator.ruleId}' is already registered`);
|
|
84
|
+
}
|
|
85
|
+
this.validators.set(validator.ruleId, validator);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get a validator by rule ID.
|
|
89
|
+
*
|
|
90
|
+
* @param ruleId - The rule ID to look up
|
|
91
|
+
* @returns The validator instance or undefined if not found
|
|
92
|
+
*/
|
|
93
|
+
getValidator(ruleId) {
|
|
94
|
+
return this.validators.get(ruleId);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get all validators for a specific category.
|
|
98
|
+
*
|
|
99
|
+
* @param category - The category to filter by
|
|
100
|
+
* @returns Array of validators in that category
|
|
101
|
+
*/
|
|
102
|
+
getValidatorsByCategory(category) {
|
|
103
|
+
return Array.from(this.validators.values()).filter((validator) => validator.category === category);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get all registered validators.
|
|
107
|
+
*
|
|
108
|
+
* @returns Array of all registered validators
|
|
109
|
+
*/
|
|
110
|
+
getAllValidators() {
|
|
111
|
+
return Array.from(this.validators.values());
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if a validator exists for a rule ID.
|
|
115
|
+
*
|
|
116
|
+
* @param ruleId - The rule ID to check
|
|
117
|
+
* @returns True if a validator exists, false otherwise
|
|
118
|
+
*/
|
|
119
|
+
hasValidator(ruleId) {
|
|
120
|
+
return this.validators.has(ruleId);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Remove a validator from the registry.
|
|
124
|
+
*
|
|
125
|
+
* @param ruleId - The rule ID of the validator to remove
|
|
126
|
+
* @returns True if a validator was removed, false if not found
|
|
127
|
+
*/
|
|
128
|
+
unregister(ruleId) {
|
|
129
|
+
return this.validators.delete(ruleId);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Clear all validators from the registry.
|
|
133
|
+
*/
|
|
134
|
+
clear() {
|
|
135
|
+
this.validators.clear();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get the count of registered validators.
|
|
139
|
+
*
|
|
140
|
+
* @returns Number of registered validators
|
|
141
|
+
*/
|
|
142
|
+
getCount() {
|
|
143
|
+
return this.validators.size;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Singleton instance of the validator registry.
|
|
148
|
+
* Use this for global validator management.
|
|
149
|
+
*/
|
|
150
|
+
export const globalValidatorRegistry = new ValidatorRegistry();
|