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,600 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Validators
|
|
3
|
+
*
|
|
4
|
+
* Validators for architecture category rules extracted from rule-enforcer.ts.
|
|
5
|
+
* Each validator encapsulates the validation logic for a specific architectural rule.
|
|
6
|
+
*
|
|
7
|
+
* @module validators/architecture-validators
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { BaseValidator } from "./base-validator.js";
|
|
11
|
+
/**
|
|
12
|
+
* Validates dependency management (Codex Term #46).
|
|
13
|
+
* Ensures dependencies are properly declared and used.
|
|
14
|
+
*/
|
|
15
|
+
export class DependencyManagementValidator extends BaseValidator {
|
|
16
|
+
id = "dependency-management-validator";
|
|
17
|
+
ruleId = "dependency-management";
|
|
18
|
+
category = "architecture";
|
|
19
|
+
severity = "error";
|
|
20
|
+
async validate(context) {
|
|
21
|
+
const { newCode, dependencies } = context;
|
|
22
|
+
if (!newCode) {
|
|
23
|
+
return this.createSuccessResult("No code to validate for dependencies");
|
|
24
|
+
}
|
|
25
|
+
// Allow dynamic imports for edge cases
|
|
26
|
+
const dynamicImports = newCode.includes("import(") || newCode.includes("await import");
|
|
27
|
+
if (dynamicImports) {
|
|
28
|
+
return this.createSuccessResult("Dynamic imports are allowed");
|
|
29
|
+
}
|
|
30
|
+
// Check for used imports
|
|
31
|
+
const imports = newCode.match(/import\s+.*?from\s+['"]([^'"]+)['"]/g);
|
|
32
|
+
if (!imports) {
|
|
33
|
+
// Check for unused dependencies when there are no imports
|
|
34
|
+
if (dependencies && dependencies.length > 0) {
|
|
35
|
+
return this.createFailureResult(`Unused dependencies declared: ${dependencies.join(", ")}`, ["Remove unused dependencies", "Check import statements"]);
|
|
36
|
+
}
|
|
37
|
+
return this.createSuccessResult("No imports to validate");
|
|
38
|
+
}
|
|
39
|
+
const usedImports = imports
|
|
40
|
+
.map((imp) => {
|
|
41
|
+
const match = imp.match(/from\s+['"]([^'"]+)['"]/);
|
|
42
|
+
return match ? match[1] : "";
|
|
43
|
+
})
|
|
44
|
+
.filter(Boolean);
|
|
45
|
+
// Check if declared dependencies are actually used
|
|
46
|
+
if (dependencies) {
|
|
47
|
+
const unusedDeps = dependencies.filter((dep) => !usedImports.some((imp) => imp && imp.includes(dep)));
|
|
48
|
+
if (unusedDeps.length > 0) {
|
|
49
|
+
return this.createFailureResult(`Unused dependencies declared: ${unusedDeps.join(", ")}`, ["Remove unused dependencies", "Check import statements"]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Allow properly declared dependencies even if not used (common in libraries)
|
|
53
|
+
if (dependencies && dependencies.length > 0) {
|
|
54
|
+
// Check that declared dependencies don't have undeclared usage
|
|
55
|
+
const undeclaredDeps = usedImports.filter((imp) => imp &&
|
|
56
|
+
!dependencies?.some((dep) => imp.includes(dep)) &&
|
|
57
|
+
!imp.startsWith("./") &&
|
|
58
|
+
!imp.startsWith("../"));
|
|
59
|
+
if (undeclaredDeps.length > 0) {
|
|
60
|
+
return this.createFailureResult(`Undeclared dependencies used: ${undeclaredDeps.join(", ")}`, ["Add missing dependencies to package.json", "Check import paths"]);
|
|
61
|
+
}
|
|
62
|
+
// If we have proper declarations and no undeclared usage, pass
|
|
63
|
+
return this.createSuccessResult("Dependencies properly declared and managed");
|
|
64
|
+
}
|
|
65
|
+
// Check for undeclared dependencies
|
|
66
|
+
const undeclaredDeps = usedImports.filter((imp) => imp &&
|
|
67
|
+
!dependencies?.some((dep) => imp.includes(dep)) &&
|
|
68
|
+
!imp.startsWith("./") &&
|
|
69
|
+
!imp.startsWith("../"));
|
|
70
|
+
if (undeclaredDeps.length > 0) {
|
|
71
|
+
return this.createFailureResult(`Undeclared dependencies used: ${undeclaredDeps.join(", ")}`, ["Add missing dependencies to package.json", "Check import paths"]);
|
|
72
|
+
}
|
|
73
|
+
return this.createSuccessResult("Dependencies properly managed");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Validates src-dist integrity.
|
|
78
|
+
* Prevents direct file copying between src/ and dist/.
|
|
79
|
+
* All changes must be made in src/ and compiled via npm run build.
|
|
80
|
+
*/
|
|
81
|
+
export class SrcDistIntegrityValidator extends BaseValidator {
|
|
82
|
+
id = "src-dist-integrity-validator";
|
|
83
|
+
ruleId = "src-dist-integrity";
|
|
84
|
+
category = "architecture";
|
|
85
|
+
severity = "error";
|
|
86
|
+
async validate(context) {
|
|
87
|
+
const { files, operation } = context;
|
|
88
|
+
if (!files || files.length === 0) {
|
|
89
|
+
return this.createSuccessResult("No files to check for src-dist integrity");
|
|
90
|
+
}
|
|
91
|
+
// Check if any files are being copied directly between src and dist
|
|
92
|
+
const violations = [];
|
|
93
|
+
for (const file of files) {
|
|
94
|
+
const normalizedFile = file.replace(/^\.\//, ""); // Remove leading ./
|
|
95
|
+
// Check for direct edits to dist/ that should come from src/
|
|
96
|
+
if ((normalizedFile.startsWith("dist/") ||
|
|
97
|
+
normalizedFile.includes("/dist/")) &&
|
|
98
|
+
!normalizedFile.includes("/node_modules/")) {
|
|
99
|
+
violations.push("Direct edit to dist/: " +
|
|
100
|
+
file +
|
|
101
|
+
". Make changes in src/ and run 'npm run build'");
|
|
102
|
+
}
|
|
103
|
+
// Check for direct edits to .opencode/ that should be generated
|
|
104
|
+
if ((normalizedFile.startsWith(".opencode/") ||
|
|
105
|
+
normalizedFile.includes("/.opencode/")) &&
|
|
106
|
+
(normalizedFile.includes("/plugin/"))) {
|
|
107
|
+
violations.push("Direct edit to .opencode/plugin/: " +
|
|
108
|
+
file +
|
|
109
|
+
". This should be generated via build/postinstall");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (violations.length > 0) {
|
|
113
|
+
return this.createFailureResult(`SRC-DIST INTEGRITY VIOLATION: ${violations.length} issue(s) found`, [
|
|
114
|
+
"Make all code changes in src/ directory",
|
|
115
|
+
"Run 'npm run build' to compile to dist/",
|
|
116
|
+
"Use postinstall scripts for consumer path transformations",
|
|
117
|
+
"Never copy files directly between src and dist",
|
|
118
|
+
]);
|
|
119
|
+
}
|
|
120
|
+
return this.createSuccessResult("Src-dist integrity maintained");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validates import consistency (Codex Term #46).
|
|
125
|
+
* Ensures consistent import patterns throughout the codebase.
|
|
126
|
+
*/
|
|
127
|
+
export class ImportConsistencyValidator extends BaseValidator {
|
|
128
|
+
id = "import-consistency-validator";
|
|
129
|
+
ruleId = "import-consistency";
|
|
130
|
+
category = "architecture";
|
|
131
|
+
severity = "error";
|
|
132
|
+
async validate(context) {
|
|
133
|
+
const { newCode, operation } = context;
|
|
134
|
+
if (!newCode || operation !== "write") {
|
|
135
|
+
return this.createSuccessResult("No code to validate for import consistency");
|
|
136
|
+
}
|
|
137
|
+
if (newCode.includes("import type")) {
|
|
138
|
+
return this.createSuccessResult("Type-only imports are allowed");
|
|
139
|
+
}
|
|
140
|
+
// Simple check - flag obvious import issues but allow type-only imports
|
|
141
|
+
if (newCode.includes("from '../src/") || newCode.includes("from './src/")) {
|
|
142
|
+
return this.createFailureResult("Import from src/ directory detected", [
|
|
143
|
+
"Use relative imports or dist/ for runtime compatibility",
|
|
144
|
+
]);
|
|
145
|
+
}
|
|
146
|
+
if (newCode.includes("from './dist/") ||
|
|
147
|
+
newCode.includes("from '../dist/")) {
|
|
148
|
+
return this.createFailureResult("Import from dist/ directory in source file detected", ["Use relative imports in source files"]);
|
|
149
|
+
}
|
|
150
|
+
// Allow type-only imports
|
|
151
|
+
if (newCode.includes("import type")) {
|
|
152
|
+
return this.createSuccessResult("Type-only imports are allowed");
|
|
153
|
+
}
|
|
154
|
+
return this.createSuccessResult("Import patterns are consistent");
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Validates module system consistency (Codex Term #47).
|
|
159
|
+
* Enforces ES module consistency and prevents CommonJS/ES module mixing.
|
|
160
|
+
*/
|
|
161
|
+
export class ModuleSystemConsistencyValidator extends BaseValidator {
|
|
162
|
+
id = "module-system-consistency-validator";
|
|
163
|
+
ruleId = "module-system-consistency";
|
|
164
|
+
category = "architecture";
|
|
165
|
+
severity = "error";
|
|
166
|
+
async validate(context) {
|
|
167
|
+
const { newCode, operation } = context;
|
|
168
|
+
if (!newCode || operation !== "write") {
|
|
169
|
+
return this.createSuccessResult("No code to validate for module system consistency");
|
|
170
|
+
}
|
|
171
|
+
const violations = [];
|
|
172
|
+
const suggestions = [];
|
|
173
|
+
// CRITICAL: CommonJS patterns in ES module environment
|
|
174
|
+
if (newCode.includes("require.main")) {
|
|
175
|
+
violations.push("CommonJS require.main pattern detected in ES module");
|
|
176
|
+
suggestions.push("Replace require.main === module with import.meta.url === `file://${process.argv[1]}`");
|
|
177
|
+
}
|
|
178
|
+
if (newCode.includes("require(") &&
|
|
179
|
+
!newCode.includes("// Allow require for") &&
|
|
180
|
+
!newCode.includes("dynamic import")) {
|
|
181
|
+
violations.push("CommonJS require() calls detected in ES module");
|
|
182
|
+
suggestions.push("Use ES module import statements instead of require()");
|
|
183
|
+
}
|
|
184
|
+
if (newCode.includes("__dirname") || newCode.includes("__filename")) {
|
|
185
|
+
violations.push("CommonJS __dirname/__filename usage detected in ES module");
|
|
186
|
+
suggestions.push("Use import.meta.url with fileURLToPath() and dirname()");
|
|
187
|
+
}
|
|
188
|
+
if (newCode.includes("module.exports") || newCode.includes("exports.")) {
|
|
189
|
+
violations.push("CommonJS module.exports pattern detected in ES module");
|
|
190
|
+
suggestions.push("Use ES module export statements");
|
|
191
|
+
}
|
|
192
|
+
if (newCode.includes("global.") &&
|
|
193
|
+
!newCode.includes("// Allow global for")) {
|
|
194
|
+
violations.push("Global namespace usage detected");
|
|
195
|
+
suggestions.push("Avoid global variables; use proper module scoping");
|
|
196
|
+
}
|
|
197
|
+
// Check for mixed module patterns
|
|
198
|
+
const hasImport = newCode.includes("import ");
|
|
199
|
+
const hasRequire = newCode.includes("require(");
|
|
200
|
+
const hasExport = newCode.includes("export ");
|
|
201
|
+
const hasModuleExports = newCode.includes("module.exports");
|
|
202
|
+
if ((hasImport || hasExport) && (hasRequire || hasModuleExports)) {
|
|
203
|
+
violations.push("Mixed ES module and CommonJS patterns detected");
|
|
204
|
+
suggestions.push("Choose one module system: use either ES modules OR CommonJS, not both");
|
|
205
|
+
}
|
|
206
|
+
// Package.json consistency check (if this is package.json related)
|
|
207
|
+
if (newCode.includes('"type": "module"') &&
|
|
208
|
+
(hasRequire || hasModuleExports)) {
|
|
209
|
+
violations.push("ES module package using CommonJS patterns");
|
|
210
|
+
suggestions.push('Remove CommonJS patterns or change "type" to "commonjs"');
|
|
211
|
+
}
|
|
212
|
+
if (violations.length > 0) {
|
|
213
|
+
return this.createFailureResult(`Module system consistency violations: ${violations.join(", ")}`, [
|
|
214
|
+
"This codebase uses ES modules exclusively",
|
|
215
|
+
"CommonJS patterns will cause runtime failures",
|
|
216
|
+
...suggestions,
|
|
217
|
+
"Run: npm run lint:fix to auto-correct module patterns",
|
|
218
|
+
]);
|
|
219
|
+
}
|
|
220
|
+
return this.createSuccessResult("Module system consistency validated - ES modules only");
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Validates error resolution (Codex Term #7).
|
|
225
|
+
* Ensures proper error handling and prevents console.log debugging.
|
|
226
|
+
*/
|
|
227
|
+
export class ErrorResolutionValidator extends BaseValidator {
|
|
228
|
+
id = "error-resolution-validator";
|
|
229
|
+
ruleId = "error-resolution";
|
|
230
|
+
category = "architecture";
|
|
231
|
+
severity = "error";
|
|
232
|
+
async validate(context) {
|
|
233
|
+
const { newCode, operation } = context;
|
|
234
|
+
if (!newCode || operation !== "write") {
|
|
235
|
+
return this.createSuccessResult("No code to validate for error resolution");
|
|
236
|
+
}
|
|
237
|
+
const violations = [];
|
|
238
|
+
const suggestions = [];
|
|
239
|
+
// Remove comments before checking for console.log
|
|
240
|
+
const codeWithoutComments = newCode
|
|
241
|
+
.replace(/\/\/.*$/gm, '') // Remove single-line comments
|
|
242
|
+
.replace(/\/\*[\s\S]*?\*\//g, ''); // Remove multi-line comments
|
|
243
|
+
// Check for console.log debugging (improper error handling)
|
|
244
|
+
const consoleLogMatches = codeWithoutComments.match(/console\.(log|debug|info)\s*\(/g);
|
|
245
|
+
if (consoleLogMatches && consoleLogMatches.length > 0) {
|
|
246
|
+
violations.push(`Found ${consoleLogMatches.length} console.log/debug/info statements - use proper logging`);
|
|
247
|
+
suggestions.push("Replace console.log/debug/info with frameworkLogger");
|
|
248
|
+
}
|
|
249
|
+
// Check for unhandled promise rejections
|
|
250
|
+
const asyncOps = (codeWithoutComments.match(/await\s+\w+/g) || []).length;
|
|
251
|
+
const tryCatchBlocks = (codeWithoutComments.match(/try\s*{[\s\S]*?}\s*catch/g) || [])
|
|
252
|
+
.length;
|
|
253
|
+
// For edge cases, require error handling for any async operations
|
|
254
|
+
if (asyncOps > 0 && tryCatchBlocks === 0) {
|
|
255
|
+
violations.push("Async operations without error handling detected");
|
|
256
|
+
suggestions.push("Wrap async operations in try-catch blocks");
|
|
257
|
+
}
|
|
258
|
+
// Check for empty catch blocks (use code without comments)
|
|
259
|
+
const emptyCatchMatches = codeWithoutComments.match(/catch\s*\(\s*\w+\s*\)\s*{[\s\S]*?}/g);
|
|
260
|
+
if (emptyCatchMatches) {
|
|
261
|
+
for (const match of emptyCatchMatches) {
|
|
262
|
+
// Extract content between braces
|
|
263
|
+
const content = match.match(/catch\s*\([^)]*\)\s*{([^}]*)}/)?.[1] || "";
|
|
264
|
+
// Check if catch block has meaningful error handling
|
|
265
|
+
const hasMeaningfulContent = content.trim().length > 5 &&
|
|
266
|
+
(content.includes("throw") || content.includes("log") || content.includes("error") ||
|
|
267
|
+
content.includes("return") || content.includes("retry") || content.includes("handle") ||
|
|
268
|
+
content.includes("retry") || content.includes("reject"));
|
|
269
|
+
if (!hasMeaningfulContent) {
|
|
270
|
+
violations.push("Empty or minimal catch block detected");
|
|
271
|
+
suggestions.push("Implement proper error handling in catch blocks");
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (violations.length > 0) {
|
|
277
|
+
return this.createFailureResult(`Error resolution violations: ${violations.join(", ")}`, suggestions);
|
|
278
|
+
}
|
|
279
|
+
return this.createSuccessResult("Error resolution patterns are properly implemented");
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Validates loop safety (Codex Term #8).
|
|
284
|
+
* Prevents infinite loops by checking for proper termination conditions.
|
|
285
|
+
*/
|
|
286
|
+
export class LoopSafetyValidator extends BaseValidator {
|
|
287
|
+
id = "loop-safety-validator";
|
|
288
|
+
ruleId = "loop-safety";
|
|
289
|
+
category = "architecture";
|
|
290
|
+
severity = "error";
|
|
291
|
+
async validate(context) {
|
|
292
|
+
const { newCode, operation } = context;
|
|
293
|
+
if (!newCode || operation !== "write") {
|
|
294
|
+
return this.createSuccessResult("No code to validate for loop safety");
|
|
295
|
+
}
|
|
296
|
+
const violations = [];
|
|
297
|
+
const suggestions = [];
|
|
298
|
+
// Check for for loops without clear termination
|
|
299
|
+
const forLoops = newCode.match(/for\s*\([^;]*;[^;]*;[^)]*\)/g);
|
|
300
|
+
if (forLoops) {
|
|
301
|
+
for (const loop of forLoops) {
|
|
302
|
+
// Check for potentially infinite loops (empty condition or no increment)
|
|
303
|
+
// Match patterns like: for (;;) or for (let i = 0; ; i++) or for (let i = 0; i < 10; )
|
|
304
|
+
const hasEmptyCondition = loop.match(/;\s*;/); // Two consecutive semicolons
|
|
305
|
+
const hasEmptyMiddle = loop.match(/;\s*;/) && !loop.match(/;\s*[^;\s]+\s*;/);
|
|
306
|
+
if (hasEmptyCondition || loop.includes("for (;;)")) {
|
|
307
|
+
violations.push("Potentially infinite for loop detected");
|
|
308
|
+
suggestions.push("Ensure for loops have clear termination conditions");
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Check for while loops
|
|
313
|
+
const whileLoops = newCode.match(/while\s*\([^)]+\)/g);
|
|
314
|
+
if (whileLoops) {
|
|
315
|
+
for (const loop of whileLoops) {
|
|
316
|
+
// Flag while(true) or similar
|
|
317
|
+
if (loop.includes("while (true)") || loop.includes("while(1)")) {
|
|
318
|
+
violations.push("Potentially infinite while loop detected");
|
|
319
|
+
suggestions.push("Replace infinite while loops with proper termination conditions");
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Check for recursion without base case detection (basic)
|
|
324
|
+
const functionMatches = newCode.match(/function\s+\w+\s*\([^)]*\)/g);
|
|
325
|
+
if (functionMatches) {
|
|
326
|
+
const functionNames = functionMatches
|
|
327
|
+
.map((match) => {
|
|
328
|
+
const nameMatch = match.match(/function\s+(\w+)/);
|
|
329
|
+
return nameMatch ? nameMatch[1] : null;
|
|
330
|
+
})
|
|
331
|
+
.filter(Boolean);
|
|
332
|
+
for (const funcName of functionNames) {
|
|
333
|
+
// Check if function calls itself (basic recursion detection)
|
|
334
|
+
const selfCalls = (newCode.match(new RegExp(`${funcName}\\s*\\(`, "g")) || []).length;
|
|
335
|
+
if (selfCalls > 1) {
|
|
336
|
+
// More than just the function definition
|
|
337
|
+
// Allow recursive functions with proper base cases (edge case)
|
|
338
|
+
const hasBaseCase = newCode.includes(`if`) &&
|
|
339
|
+
newCode.includes(`return`) &&
|
|
340
|
+
(newCode.includes(`<= 1`) ||
|
|
341
|
+
newCode.includes(`<= 0`) ||
|
|
342
|
+
newCode.includes(`=== 0`));
|
|
343
|
+
if (hasBaseCase) {
|
|
344
|
+
return this.createSuccessResult("Recursive function with proper base case allowed");
|
|
345
|
+
}
|
|
346
|
+
violations.push(`Potential unsafe recursion detected in ${funcName} - ensure base case exists`);
|
|
347
|
+
suggestions.push("Ensure recursive functions have proper base cases and termination conditions");
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
if (violations.length > 0) {
|
|
352
|
+
return this.createFailureResult(`Loop safety violations: ${violations.join(", ")}`, suggestions);
|
|
353
|
+
}
|
|
354
|
+
return this.createSuccessResult("All loops have proper termination conditions");
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Validates state management patterns (Codex Term #41).
|
|
359
|
+
* Ensures proper state management throughout the application.
|
|
360
|
+
*/
|
|
361
|
+
export class StateManagementPatternsValidator extends BaseValidator {
|
|
362
|
+
id = "state-management-patterns-validator";
|
|
363
|
+
ruleId = "state-management-patterns";
|
|
364
|
+
category = "architecture";
|
|
365
|
+
severity = "error";
|
|
366
|
+
async validate(context) {
|
|
367
|
+
const { newCode, operation } = context;
|
|
368
|
+
if (!newCode || operation !== "write") {
|
|
369
|
+
return this.createSuccessResult("No code to validate for state management patterns");
|
|
370
|
+
}
|
|
371
|
+
const violations = [];
|
|
372
|
+
const suggestions = [];
|
|
373
|
+
// Check for global state abuse
|
|
374
|
+
const globalVarMatches = newCode.match(/(?:window\.|global\.|globalThis\.)\w+\s*=/g);
|
|
375
|
+
if (globalVarMatches && globalVarMatches.length > 0) {
|
|
376
|
+
violations.push(`${globalVarMatches.length} global variable assignments detected`);
|
|
377
|
+
suggestions.push("Avoid global state - use proper state management patterns");
|
|
378
|
+
}
|
|
379
|
+
// Check for prop drilling (basic detection)
|
|
380
|
+
const propsPassing = newCode.match(/props\.\w+\s*=\s*{\s*[\s\S]*?}/g);
|
|
381
|
+
if (propsPassing &&
|
|
382
|
+
propsPassing.some((match) => match.split("\n").length > 3)) {
|
|
383
|
+
violations.push("Potential prop drilling detected - deep props passing");
|
|
384
|
+
suggestions.push("Consider using Context API, Redux, or Zustand for state management");
|
|
385
|
+
}
|
|
386
|
+
// Check for direct DOM manipulation (anti-pattern for state management)
|
|
387
|
+
const domManipulation = newCode.match(/document\.(?:getElementById|querySelector)\s*\(/g);
|
|
388
|
+
if (domManipulation && domManipulation.length > 0) {
|
|
389
|
+
violations.push(`${domManipulation.length} direct DOM manipulations detected`);
|
|
390
|
+
suggestions.push("Use proper state management instead of direct DOM manipulation");
|
|
391
|
+
}
|
|
392
|
+
// Allow legacy class components for acceptable contexts first
|
|
393
|
+
if (newCode.includes("Legacy") ||
|
|
394
|
+
newCode.includes("migration")) {
|
|
395
|
+
return this.createSuccessResult("Legacy patterns allowed in acceptable contexts");
|
|
396
|
+
}
|
|
397
|
+
// Check for stateful class components (React anti-pattern)
|
|
398
|
+
const classComponents = newCode.match(/class\s+\w+\s+extends\s+(?:Component|React\.Component)/g);
|
|
399
|
+
if (classComponents && classComponents.length > 0) {
|
|
400
|
+
const hasState = newCode.includes("this.state") || newCode.includes("setState");
|
|
401
|
+
if (hasState) {
|
|
402
|
+
violations.push("Stateful class components detected - prefer functional components with hooks");
|
|
403
|
+
suggestions.push("Migrate to functional components with useState/useReducer hooks");
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// Flag obvious state abuse
|
|
407
|
+
if (newCode.includes("GlobalStateManager") &&
|
|
408
|
+
newCode.includes("static global")) {
|
|
409
|
+
violations.push("Global state abuse detected");
|
|
410
|
+
suggestions.push("Avoid global state - use proper state management patterns");
|
|
411
|
+
}
|
|
412
|
+
// Check for state updates without proper immutability
|
|
413
|
+
const directMutations = newCode.match(/state\.\w+\s*=\s*[^=]/g);
|
|
414
|
+
if (directMutations && directMutations.length > 0) {
|
|
415
|
+
violations.push(`${directMutations.length} direct state mutations detected`);
|
|
416
|
+
suggestions.push("Use immutable state updates (spread operator, immer, etc.)");
|
|
417
|
+
}
|
|
418
|
+
if (violations.length > 0) {
|
|
419
|
+
return this.createFailureResult(`State management violations: ${violations.join(", ")}`, suggestions);
|
|
420
|
+
}
|
|
421
|
+
return this.createSuccessResult("State management patterns are properly implemented");
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Validates single responsibility principle (Codex Term #24).
|
|
426
|
+
* Ensures classes and functions don't do too many things.
|
|
427
|
+
*/
|
|
428
|
+
export class SingleResponsibilityValidator extends BaseValidator {
|
|
429
|
+
id = "single-responsibility-validator";
|
|
430
|
+
ruleId = "single-responsibility";
|
|
431
|
+
category = "architecture";
|
|
432
|
+
severity = "warning";
|
|
433
|
+
async validate(context) {
|
|
434
|
+
const { newCode, operation } = context;
|
|
435
|
+
if (!newCode || operation !== "write") {
|
|
436
|
+
return this.createSuccessResult("No code to validate for single responsibility");
|
|
437
|
+
}
|
|
438
|
+
// Check for classes/functions that do too many things
|
|
439
|
+
const classes = newCode.match(/class\s+\w+/g) || [];
|
|
440
|
+
const functions = newCode.match(/(?:function|const\s+\w+\s*=).*?\(/g) || [];
|
|
441
|
+
if (classes.length > 0) {
|
|
442
|
+
// Check if class has too many methods (more than 10 might indicate multiple responsibilities)
|
|
443
|
+
const methods = newCode.match(/(?:async\s+)?(?:public\s+|private\s+|protected\s+)?(?:\w+\s+)?\w+\s*\(/g) || [];
|
|
444
|
+
if (methods.length > 15) {
|
|
445
|
+
return this.createFailureResult(`Class has ${methods.length} methods - may violate single responsibility principle`, [
|
|
446
|
+
"Split class into smaller, focused classes",
|
|
447
|
+
"Extract methods into separate modules",
|
|
448
|
+
]);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
return this.createSuccessResult("Single responsibility principle maintained");
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Validates deployment safety (Codex Term #43).
|
|
456
|
+
* Ensures deployments have proper safety checks.
|
|
457
|
+
*/
|
|
458
|
+
export class DeploymentSafetyValidator extends BaseValidator {
|
|
459
|
+
id = "deployment-safety-validator";
|
|
460
|
+
ruleId = "deployment-safety";
|
|
461
|
+
category = "architecture";
|
|
462
|
+
severity = "blocking";
|
|
463
|
+
async validate(context) {
|
|
464
|
+
const { newCode, operation } = context;
|
|
465
|
+
if (!newCode || operation !== "write") {
|
|
466
|
+
return this.createSuccessResult("No code change to validate");
|
|
467
|
+
}
|
|
468
|
+
const hasDeployCode = newCode.includes("deploy") ||
|
|
469
|
+
newCode.includes("docker") ||
|
|
470
|
+
newCode.includes("kubernetes") ||
|
|
471
|
+
newCode.includes("ci/cd") ||
|
|
472
|
+
newCode.includes("pipeline");
|
|
473
|
+
if (hasDeployCode) {
|
|
474
|
+
const hasSafetyChecks = newCode.includes("rollback") ||
|
|
475
|
+
newCode.includes("health") ||
|
|
476
|
+
newCode.includes("verify") ||
|
|
477
|
+
newCode.includes("canary") ||
|
|
478
|
+
newCode.includes("graceful");
|
|
479
|
+
if (!hasSafetyChecks) {
|
|
480
|
+
return this.createFailureResult("Deployment code lacks safety checks", ["Add rollback capability", "Add health verification", "Consider canary deployments"]);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
return this.createSuccessResult("Deployment safety requirements met");
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Validates multi-agent ensemble patterns.
|
|
488
|
+
* Ensures multi-agent configurations follow best practices.
|
|
489
|
+
*/
|
|
490
|
+
export class MultiAgentEnsembleValidator extends BaseValidator {
|
|
491
|
+
id = "multi-agent-ensemble-validator";
|
|
492
|
+
ruleId = "multi-agent-ensemble";
|
|
493
|
+
category = "architecture";
|
|
494
|
+
severity = "warning";
|
|
495
|
+
async validate(context) {
|
|
496
|
+
const { newCode, operation } = context;
|
|
497
|
+
if (!newCode || operation !== "write") {
|
|
498
|
+
return this.createSuccessResult("No code change to validate");
|
|
499
|
+
}
|
|
500
|
+
const hasMultiAgentCode = newCode.includes("subagent") ||
|
|
501
|
+
newCode.includes("delegate") ||
|
|
502
|
+
newCode.includes("spawn") ||
|
|
503
|
+
newCode.includes("orchestrat");
|
|
504
|
+
if (hasMultiAgentCode) {
|
|
505
|
+
const hasCoordination = newCode.includes("timeout") ||
|
|
506
|
+
newCode.includes("retry") ||
|
|
507
|
+
newCode.includes("fallback") ||
|
|
508
|
+
newCode.includes("error");
|
|
509
|
+
if (!hasCoordination) {
|
|
510
|
+
return this.createFailureResult("Multi-agent code lacks coordination patterns", ["Add timeout handling", "Add retry/fallback logic"]);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return this.createSuccessResult("Multi-agent ensemble requirements met");
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Validates substrate externalization patterns.
|
|
518
|
+
* Ensures proper abstraction boundaries.
|
|
519
|
+
*/
|
|
520
|
+
export class SubstrateExternalizationValidator extends BaseValidator {
|
|
521
|
+
id = "substrate-externalization-validator";
|
|
522
|
+
ruleId = "substrate-externalization";
|
|
523
|
+
category = "architecture";
|
|
524
|
+
severity = "info";
|
|
525
|
+
async validate(context) {
|
|
526
|
+
const { newCode, operation } = context;
|
|
527
|
+
if (!newCode || operation !== "write") {
|
|
528
|
+
return this.createSuccessResult("No code change to validate");
|
|
529
|
+
}
|
|
530
|
+
const hasExternalAPICode = newCode.includes("export") &&
|
|
531
|
+
(newCode.includes("interface") ||
|
|
532
|
+
newCode.includes("type") ||
|
|
533
|
+
newCode.includes("class"));
|
|
534
|
+
if (hasExternalAPICode) {
|
|
535
|
+
const hasAbstraction = newCode.includes("abstract") ||
|
|
536
|
+
newCode.includes("interface") ||
|
|
537
|
+
newCode.includes("implements");
|
|
538
|
+
if (!hasAbstraction) {
|
|
539
|
+
return this.createFailureResult("External API lacks proper abstraction", ["Use interfaces for external APIs", "Consider abstract classes for implementations"]);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return this.createSuccessResult("Substrate externalization requirements met");
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Validates framework self-validation capability.
|
|
547
|
+
* Ensures framework can validate itself.
|
|
548
|
+
*/
|
|
549
|
+
export class FrameworkSelfValidationValidator extends BaseValidator {
|
|
550
|
+
id = "framework-self-validation-validator";
|
|
551
|
+
ruleId = "framework-self-validation";
|
|
552
|
+
category = "architecture";
|
|
553
|
+
severity = "info";
|
|
554
|
+
async validate(context) {
|
|
555
|
+
const { files, operation } = context;
|
|
556
|
+
if (operation !== "write") {
|
|
557
|
+
return this.createSuccessResult("No code change to validate");
|
|
558
|
+
}
|
|
559
|
+
const isFrameworkCode = files?.some((f) => f.includes("src/core") || f.includes("src/enforcement"));
|
|
560
|
+
if (isFrameworkCode) {
|
|
561
|
+
const hasSelfTests = context.newCode?.includes("self") ||
|
|
562
|
+
context.newCode?.includes("validate") ||
|
|
563
|
+
context.newCode?.includes("test");
|
|
564
|
+
if (!hasSelfTests) {
|
|
565
|
+
return this.createFailureResult("Framework code lacks self-validation", ["Add self-validation tests", "Include framework health checks"]);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
return this.createSuccessResult("Framework self-validation requirements met");
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Validates emergent improvement patterns.
|
|
573
|
+
* Ensures continuous improvement mechanisms exist.
|
|
574
|
+
*/
|
|
575
|
+
export class EmergentImprovementValidator extends BaseValidator {
|
|
576
|
+
id = "emergent-improvement-validator";
|
|
577
|
+
ruleId = "emergent-improvement";
|
|
578
|
+
category = "architecture";
|
|
579
|
+
severity = "info";
|
|
580
|
+
async validate(context) {
|
|
581
|
+
const { newCode, operation } = context;
|
|
582
|
+
if (!newCode || operation !== "write") {
|
|
583
|
+
return this.createSuccessResult("No code change to validate");
|
|
584
|
+
}
|
|
585
|
+
const hasImprovementCode = newCode.includes("improve") ||
|
|
586
|
+
newCode.includes("optimize") ||
|
|
587
|
+
newCode.includes("refactor") ||
|
|
588
|
+
newCode.includes("enhance");
|
|
589
|
+
if (hasImprovementCode) {
|
|
590
|
+
const hasFeedbackLoop = newCode.includes("metrics") ||
|
|
591
|
+
newCode.includes("telemetry") ||
|
|
592
|
+
newCode.includes("analytics") ||
|
|
593
|
+
newCode.includes("log");
|
|
594
|
+
if (!hasFeedbackLoop) {
|
|
595
|
+
return this.createFailureResult("Improvement code lacks feedback mechanism", ["Add metrics/telemetry for improvement tracking", "Include analytics for continuous improvement"]);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
return this.createSuccessResult("Emergent improvement requirements met");
|
|
599
|
+
}
|
|
600
|
+
}
|