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,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Rule Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads codex terms from the resolved codex path and converts them
|
|
5
|
+
* to RuleDefinition objects for the rule enforcement system.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 refactoring: Extracted from RuleEnforcer.loadCodexRules()
|
|
8
|
+
*
|
|
9
|
+
* @module loaders/codex-loader
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
+
import { resolveCodexPath } from "../../core/config-paths.js";
|
|
14
|
+
import { existsSync } from "fs";
|
|
15
|
+
import { BaseLoader, } from "./base-loader.js";
|
|
16
|
+
/**
|
|
17
|
+
* Loader for codex terms from codex.json.
|
|
18
|
+
* Converts codex terms to RuleDefinition objects.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const loader = new CodexLoader();
|
|
23
|
+
* if (await loader.isAvailable()) {
|
|
24
|
+
* const rules = await loader.load();
|
|
25
|
+
* console.log(`Loaded ${rules.length} codex rules`);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class CodexLoader extends BaseLoader {
|
|
30
|
+
name = "codex";
|
|
31
|
+
/**
|
|
32
|
+
* Path to the codex.json file.
|
|
33
|
+
* Uses the standard config-paths resolver which checks .strray/, .opencode/strray/, etc.
|
|
34
|
+
*/
|
|
35
|
+
get codexPath() {
|
|
36
|
+
const candidates = resolveCodexPath();
|
|
37
|
+
const found = candidates.find((p) => existsSync(p));
|
|
38
|
+
// Fallback to primary path even if not found yet
|
|
39
|
+
return found ?? candidates[0] ?? this.resolvePath(".opencode/strray/codex.json");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if codex.json exists.
|
|
43
|
+
* @returns Promise resolving to true if codex.json is available
|
|
44
|
+
*/
|
|
45
|
+
async isAvailable() {
|
|
46
|
+
return this.fileExists(this.codexPath);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Load codex terms and convert to RuleDefinition objects.
|
|
50
|
+
* @returns Promise resolving to array of rule definitions
|
|
51
|
+
*/
|
|
52
|
+
async load() {
|
|
53
|
+
const rules = [];
|
|
54
|
+
try {
|
|
55
|
+
const codexData = await this.loadJsonFile(this.codexPath);
|
|
56
|
+
// Convert codex terms to rules
|
|
57
|
+
for (const [key, term] of Object.entries(codexData.terms)) {
|
|
58
|
+
if (this.isValidCodexTerm(term)) {
|
|
59
|
+
const rule = this.convertTermToRule(key, term);
|
|
60
|
+
rules.push(rule);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
await frameworkLogger.log("codex-loader", "loaded-codex-rules", "success", {
|
|
64
|
+
message: `Loaded ${rules.length} codex rules`,
|
|
65
|
+
ruleCount: rules.length,
|
|
66
|
+
version: codexData.version,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
await frameworkLogger.log("codex-loader", "failed-to-load-codex", "error", {
|
|
71
|
+
message: `Failed to load codex rules: ${error instanceof Error ? error.message : String(error)}`,
|
|
72
|
+
error: error instanceof Error ? error.message : String(error),
|
|
73
|
+
});
|
|
74
|
+
// Return empty array on failure - other loaders can continue
|
|
75
|
+
}
|
|
76
|
+
return rules;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Type guard to check if an object is a valid CodexTerm.
|
|
80
|
+
* @param term - Object to validate
|
|
81
|
+
* @returns True if the object is a valid CodexTerm
|
|
82
|
+
*/
|
|
83
|
+
isValidCodexTerm(term) {
|
|
84
|
+
return (typeof term === "object" &&
|
|
85
|
+
term !== null &&
|
|
86
|
+
"title" in term &&
|
|
87
|
+
typeof term.title === "string");
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Convert a codex term to a RuleDefinition.
|
|
91
|
+
* @param key - Term key (number as string)
|
|
92
|
+
* @param term - Codex term data
|
|
93
|
+
* @returns RuleDefinition object
|
|
94
|
+
*/
|
|
95
|
+
convertTermToRule(key, term) {
|
|
96
|
+
return {
|
|
97
|
+
id: `codex-${key}`,
|
|
98
|
+
name: term.title,
|
|
99
|
+
description: term.description || term.title,
|
|
100
|
+
category: this.mapCodexCategory(term.category),
|
|
101
|
+
severity: this.mapCodexSeverity(term.enforcementLevel, term.zeroTolerance),
|
|
102
|
+
enabled: true,
|
|
103
|
+
validator: this.createCodexValidator(term),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Map codex category to RuleCategory.
|
|
108
|
+
* @param category - Codex category string
|
|
109
|
+
* @returns Mapped RuleCategory
|
|
110
|
+
*/
|
|
111
|
+
mapCodexCategory(category) {
|
|
112
|
+
const categoryMap = {
|
|
113
|
+
core: "code-quality",
|
|
114
|
+
architecture: "architecture",
|
|
115
|
+
performance: "performance",
|
|
116
|
+
security: "security",
|
|
117
|
+
testing: "testing",
|
|
118
|
+
operations: "architecture",
|
|
119
|
+
documentation: "reporting",
|
|
120
|
+
process: "architecture",
|
|
121
|
+
"ci-cd": "testing",
|
|
122
|
+
infrastructure: "architecture",
|
|
123
|
+
quality: "code-quality",
|
|
124
|
+
validation: "code-quality",
|
|
125
|
+
resilience: "architecture",
|
|
126
|
+
governance: "architecture",
|
|
127
|
+
accessibility: "code-quality",
|
|
128
|
+
};
|
|
129
|
+
return categoryMap[category || ""] || "codex";
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Map codex severity to RuleSeverity.
|
|
133
|
+
* @param enforcementLevel - Codex enforcement level
|
|
134
|
+
* @param zeroTolerance - Whether term has zero tolerance
|
|
135
|
+
* @returns Mapped RuleSeverity
|
|
136
|
+
*/
|
|
137
|
+
mapCodexSeverity(enforcementLevel, zeroTolerance) {
|
|
138
|
+
// Zero tolerance terms are always blocking
|
|
139
|
+
if (zeroTolerance) {
|
|
140
|
+
return "blocking";
|
|
141
|
+
}
|
|
142
|
+
switch (enforcementLevel?.toLowerCase()) {
|
|
143
|
+
case "blocking":
|
|
144
|
+
return "blocking";
|
|
145
|
+
case "high":
|
|
146
|
+
return "error";
|
|
147
|
+
case "medium":
|
|
148
|
+
return "warning";
|
|
149
|
+
case "low":
|
|
150
|
+
return "info";
|
|
151
|
+
default:
|
|
152
|
+
return "info";
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create a validator function for a codex term.
|
|
157
|
+
* Now actually validates code against the term requirements.
|
|
158
|
+
* @param term - Codex term data
|
|
159
|
+
* @returns Validator function that performs real validation
|
|
160
|
+
*/
|
|
161
|
+
createCodexValidator(term) {
|
|
162
|
+
return async (context) => {
|
|
163
|
+
const { newCode, operation } = context;
|
|
164
|
+
// Only validate write operations with code content
|
|
165
|
+
if (!newCode || operation !== "write") {
|
|
166
|
+
return {
|
|
167
|
+
passed: true,
|
|
168
|
+
message: `${term.title}: No code to validate`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const violations = [];
|
|
172
|
+
const termNum = typeof term.number === "string" ? parseInt(term.number, 10) : term.number;
|
|
173
|
+
// Term 1: Progressive Prod-Ready Code - no stubs/TODOs/FIXMEs
|
|
174
|
+
if (termNum === 1) {
|
|
175
|
+
if (/TODO\s*:/i.test(newCode)) {
|
|
176
|
+
violations.push("Code contains TODO - not production-ready");
|
|
177
|
+
}
|
|
178
|
+
if (/FIXME\s*:/i.test(newCode)) {
|
|
179
|
+
violations.push("Code contains FIXME - not production-ready");
|
|
180
|
+
}
|
|
181
|
+
if (/STUB|PLACEHOLDER|TEMP\.{3}/i.test(newCode)) {
|
|
182
|
+
violations.push("Code contains stub/placeholder - not production-ready");
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Term 2: No Patches/Boiler/Stubs
|
|
186
|
+
if (termNum === 2) {
|
|
187
|
+
if (/console\.log\s*\(/g.test(newCode) && !newCode.includes("debug")) {
|
|
188
|
+
// console.log is a form of temporary debugging
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Term 7: Resolve All Errors - no console.log debugging
|
|
192
|
+
if (termNum === 7) {
|
|
193
|
+
// Strip comments before checking for console.log
|
|
194
|
+
const codeWithoutComments = newCode
|
|
195
|
+
.replace(/\/\/.*$/gm, '')
|
|
196
|
+
.replace(/\/\*[\s\S]*?\*\//g, '');
|
|
197
|
+
const consoleMatches = codeWithoutComments.match(/console\.(log|debug|info)\s*\(/g);
|
|
198
|
+
if (consoleMatches) {
|
|
199
|
+
violations.push(`Found ${consoleMatches.length} console.log/debug/info statements - use frameworkLogger`);
|
|
200
|
+
}
|
|
201
|
+
// Check for empty catch blocks
|
|
202
|
+
if (/catch\s*\([^)]*\)\s*\{\s*\}/.test(codeWithoutComments)) {
|
|
203
|
+
violations.push("Empty catch block - errors must be handled");
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Term 8: Prevent Infinite Loops
|
|
207
|
+
if (termNum === 8) {
|
|
208
|
+
if (/while\s*\(\s*true\s*\)/.test(newCode) || /while\s*\(\s*1\s*\)/.test(newCode)) {
|
|
209
|
+
violations.push("Infinite while loop detected");
|
|
210
|
+
}
|
|
211
|
+
// Check for while loops without clear termination
|
|
212
|
+
if (/while\s*\([^)]*[^<>!=\?]/.test(newCode)) {
|
|
213
|
+
// Potential infinite loop - let it pass with a note
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Term 11: Type Safety First - no @ts-ignore/@ts-expect-error
|
|
217
|
+
if (termNum === 11) {
|
|
218
|
+
if (/@ts-ignore/.test(newCode)) {
|
|
219
|
+
violations.push("@ts-ignore found - type safety bypass detected");
|
|
220
|
+
}
|
|
221
|
+
if (/@ts-expect-error/.test(newCode)) {
|
|
222
|
+
violations.push("@ts-expect-error found - type safety bypass detected");
|
|
223
|
+
}
|
|
224
|
+
if (/\: any\b/.test(newCode) && !newCode.includes("// Allow any")) {
|
|
225
|
+
violations.push("Type 'any' found - use proper typing instead");
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Term 26: Test Coverage >85% - check if new code has tests
|
|
229
|
+
if (termNum === 26) {
|
|
230
|
+
const exportedItems = newCode.match(/export\s+(function|class|const|let|var)/g);
|
|
231
|
+
if (exportedItems && exportedItems.length > 3) {
|
|
232
|
+
// Large module without obvious test references
|
|
233
|
+
if (!newCode.includes(".test.") && !newCode.includes(".spec.") && !newCode.includes("describe(")) {
|
|
234
|
+
violations.push(`${exportedItems.length} exported items without test references - ensure 85%+ coverage`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Term 46: Import Consistency - no src/ imports in source
|
|
239
|
+
if (termNum === 46) {
|
|
240
|
+
if (/from\s+['"]\.\.\/src\//.test(newCode) || /from\s+['"]\.\/src\//.test(newCode)) {
|
|
241
|
+
violations.push("Import from src/ directory - use relative imports for source files");
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Term 47: Module System Consistency - no CommonJS in ESM
|
|
245
|
+
if (termNum === 47) {
|
|
246
|
+
if (/require\s*\(/.test(newCode) && !newCode.includes("// Allow require")) {
|
|
247
|
+
violations.push("CommonJS require() in ES module - use import statements");
|
|
248
|
+
}
|
|
249
|
+
if (/module\.exports/.test(newCode)) {
|
|
250
|
+
violations.push("module.exports in ES module - use export statements");
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Term 32: Proper Error Handling - no empty catch
|
|
254
|
+
if (termNum === 32) {
|
|
255
|
+
if (/catch\s*\([^)]*\)\s*\{\s*\}/.test(newCode)) {
|
|
256
|
+
violations.push("Empty catch block - errors must be handled");
|
|
257
|
+
}
|
|
258
|
+
// Check for throws without messages
|
|
259
|
+
if (/throw\s+new\s+Error\s*\(\s*\)/.test(newCode)) {
|
|
260
|
+
violations.push("Empty Error throw - provide meaningful error message");
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Term 38: Functionality Retention - no accidental deletions
|
|
264
|
+
if (termNum === 38) {
|
|
265
|
+
// This is harder to check statically, but can warn about destructive patterns
|
|
266
|
+
}
|
|
267
|
+
// Term 29: Security by Design - check for hardcoded secrets
|
|
268
|
+
if (termNum === 29) {
|
|
269
|
+
if (/password\s*=\s*['"][^'"]{8,}['"]/i.test(newCode)) {
|
|
270
|
+
violations.push("Potential hardcoded password detected");
|
|
271
|
+
}
|
|
272
|
+
if (/api[_-]?key\s*=\s*['"][^'"]{20,}['"]/i.test(newCode)) {
|
|
273
|
+
violations.push("Potential hardcoded API key detected");
|
|
274
|
+
}
|
|
275
|
+
if (/secret\s*=\s*['"][^'"]{8,}['"]/i.test(newCode)) {
|
|
276
|
+
violations.push("Potential hardcoded secret detected");
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// Term 12: Early Returns and Guard Clauses - deeply nested code
|
|
280
|
+
if (termNum === 12) {
|
|
281
|
+
let maxNesting = 0;
|
|
282
|
+
let currentNesting = 0;
|
|
283
|
+
let inString = false;
|
|
284
|
+
let inBlockComment = false;
|
|
285
|
+
for (let i = 0; i < newCode.length; i++) {
|
|
286
|
+
const char = newCode[i];
|
|
287
|
+
const nextChar = newCode[i + 1];
|
|
288
|
+
// Handle comments
|
|
289
|
+
if (inBlockComment) {
|
|
290
|
+
if (char === '*' && nextChar === '/') {
|
|
291
|
+
inBlockComment = false;
|
|
292
|
+
i++;
|
|
293
|
+
}
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (char === '/' && nextChar === '*') {
|
|
297
|
+
inBlockComment = true;
|
|
298
|
+
i++;
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (char === '/' && nextChar === '/') {
|
|
302
|
+
i = newCode.indexOf('\n', i);
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
// Handle strings
|
|
306
|
+
if (char === '"' || char === "'" || char === '`') {
|
|
307
|
+
inString = !inString;
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
if (inString)
|
|
311
|
+
continue;
|
|
312
|
+
// Count nesting
|
|
313
|
+
if (char === '{') {
|
|
314
|
+
currentNesting++;
|
|
315
|
+
maxNesting = Math.max(maxNesting, currentNesting);
|
|
316
|
+
}
|
|
317
|
+
else if (char === '}') {
|
|
318
|
+
currentNesting = Math.max(0, currentNesting - 1);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (maxNesting > 5) {
|
|
322
|
+
violations.push(`Excessive nesting depth (${maxNesting} levels) - use early returns/guard clauses`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Term 19: Small, Focused Functions - check function size
|
|
326
|
+
if (termNum === 19) {
|
|
327
|
+
// Match actual function declarations and arrow functions (not variable declarations)
|
|
328
|
+
const functionRegex = /(?:^|\n)(?:function\s+\w+|async\s+function\s+\w+|(?:\([^)]*\)|[^=])=>\s*\{)/g;
|
|
329
|
+
const matches = newCode.match(functionRegex);
|
|
330
|
+
if (matches) {
|
|
331
|
+
for (const match of matches) {
|
|
332
|
+
const startIdx = newCode.indexOf(match);
|
|
333
|
+
const afterMatch = newCode.substring(startIdx + match.length);
|
|
334
|
+
const closingIdx = afterMatch.indexOf('}');
|
|
335
|
+
if (closingIdx > 0) {
|
|
336
|
+
const functionBody = afterMatch.substring(0, closingIdx);
|
|
337
|
+
const lines = functionBody.split('\n').filter(l => l.trim().length > 0);
|
|
338
|
+
if (lines.length > 30) {
|
|
339
|
+
violations.push(`Function with ${lines.length} lines - consider splitting into smaller functions (max 30)`);
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
// Term 16: DRY - Don't Repeat Yourself - detect code duplication
|
|
347
|
+
if (termNum === 16) {
|
|
348
|
+
const lines = newCode.split('\n').filter(l => l.trim().length > 0 && !l.trim().startsWith('//') && !l.trim().startsWith('/*') && !l.trim().startsWith('*'));
|
|
349
|
+
const seenPatterns = new Map();
|
|
350
|
+
for (const line of lines) {
|
|
351
|
+
// Normalize: remove extra spaces, take first 40 chars
|
|
352
|
+
const normalized = line.replace(/\s+/g, ' ').trim().substring(0, 40);
|
|
353
|
+
if (normalized.length > 10) {
|
|
354
|
+
const count = (seenPatterns.get(normalized) || 0) + 1;
|
|
355
|
+
seenPatterns.set(normalized, count);
|
|
356
|
+
if (count >= 2) {
|
|
357
|
+
violations.push(`Repeated code pattern detected (${count}x) - extract to reusable function`);
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Term 3: Do Not Over-Engineer - complexity check
|
|
364
|
+
if (termNum === 3) {
|
|
365
|
+
const classMatches = newCode.match(/class\s+\w+/g) || [];
|
|
366
|
+
const interfaceMatches = newCode.match(/interface\s+\w+/g) || [];
|
|
367
|
+
const typeMatches = newCode.match(/type\s+\w+\s*=/g) || [];
|
|
368
|
+
const abstractionCount = classMatches.length + interfaceMatches.length + typeMatches.length;
|
|
369
|
+
const exportedFunctions = (newCode.match(/export\s+(?:function|const|class|interface|type)/g) || []).length;
|
|
370
|
+
if (abstractionCount > 5 && exportedFunctions < abstractionCount) {
|
|
371
|
+
violations.push(`Over-abstraction: ${abstractionCount} types/interfaces/classes with few exports - keep it simpler`);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// Term 13: Error Boundaries and Graceful Degradation
|
|
375
|
+
if (termNum === 13) {
|
|
376
|
+
const hasTryCatch = /try\s*\{/.test(newCode);
|
|
377
|
+
const hasAsyncAwait = /async\s+(?:function|\()/i.test(newCode);
|
|
378
|
+
const hasPromiseCatch = /\.catch\s*\(/g.test(newCode);
|
|
379
|
+
if (hasAsyncAwait && !hasTryCatch && !hasPromiseCatch) {
|
|
380
|
+
violations.push("Async function without try-catch or .catch() - add error boundaries");
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
if (violations.length > 0) {
|
|
384
|
+
return {
|
|
385
|
+
passed: false,
|
|
386
|
+
message: `${term.title} violated: ${violations.join("; ")}`,
|
|
387
|
+
suggestions: violations.map(v => `Fix: ${v}`),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
return {
|
|
391
|
+
passed: true,
|
|
392
|
+
message: `${term.title} validated`,
|
|
393
|
+
};
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule Loaders Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides rule loading capabilities for the 0xRay framework.
|
|
5
|
+
* Loaders encapsulate the logic for loading rules from various sources.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 refactoring: Extracted async rule loading from RuleEnforcer
|
|
8
|
+
*
|
|
9
|
+
* @module loaders
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import {
|
|
15
|
+
* LoaderOrchestrator,
|
|
16
|
+
* CodexLoader,
|
|
17
|
+
* AgentTriageLoader,
|
|
18
|
+
* IRuleLoader
|
|
19
|
+
* } from './enforcement/loaders/index.js';
|
|
20
|
+
*
|
|
21
|
+
* // Use the orchestrator to load all rules
|
|
22
|
+
* const orchestrator = new LoaderOrchestrator();
|
|
23
|
+
* const result = await orchestrator.loadAllRules();
|
|
24
|
+
*
|
|
25
|
+
* // Or use individual loaders
|
|
26
|
+
* const codexLoader = new CodexLoader();
|
|
27
|
+
* if (await codexLoader.isAvailable()) {
|
|
28
|
+
* const codexRules = await codexLoader.load();
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
// Base loader
|
|
33
|
+
export { BaseLoader } from "./base-loader.js";
|
|
34
|
+
// Concrete loaders
|
|
35
|
+
export { CodexLoader } from "./codex-loader.js";
|
|
36
|
+
export { AgentTriageLoader } from "./agent-triage-loader.js";
|
|
37
|
+
export { ProcessorLoader } from "./processor-loader.js";
|
|
38
|
+
export { AgentsMdValidationLoader } from "./agents-md-validation-loader.js";
|
|
39
|
+
// Orchestrator
|
|
40
|
+
export { LoaderOrchestrator, } from "./loader-orchestrator.js";
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loader Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Coordinates multiple rule loaders to load rules from various sources.
|
|
5
|
+
* Manages loader execution, error handling, and rule aggregation.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 refactoring: Extracted loader orchestration from RuleEnforcer
|
|
8
|
+
*
|
|
9
|
+
* @module loaders/loader-orchestrator
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
+
import { CodexLoader } from "./codex-loader.js";
|
|
14
|
+
import { AgentTriageLoader } from "./agent-triage-loader.js";
|
|
15
|
+
import { ProcessorLoader } from "./processor-loader.js";
|
|
16
|
+
import { AgentsMdValidationLoader } from "./agents-md-validation-loader.js";
|
|
17
|
+
/**
|
|
18
|
+
* Orchestrates multiple rule loaders to load rules from various sources.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const orchestrator = new LoaderOrchestrator();
|
|
23
|
+
* const result = await orchestrator.loadAllRules();
|
|
24
|
+
* console.log(`Loaded ${result.rules.length} rules from ${result.successfulLoaders} loaders`);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class LoaderOrchestrator {
|
|
28
|
+
loaders = [];
|
|
29
|
+
options;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new LoaderOrchestrator.
|
|
32
|
+
* @param options - Configuration options
|
|
33
|
+
*/
|
|
34
|
+
constructor(options = {}) {
|
|
35
|
+
this.options = {
|
|
36
|
+
continueOnError: true,
|
|
37
|
+
enableLogging: true,
|
|
38
|
+
...options,
|
|
39
|
+
};
|
|
40
|
+
// Register default loaders
|
|
41
|
+
this.registerDefaultLoaders();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register the default set of loaders.
|
|
45
|
+
*/
|
|
46
|
+
registerDefaultLoaders() {
|
|
47
|
+
this.loaders = [
|
|
48
|
+
new CodexLoader(),
|
|
49
|
+
new AgentTriageLoader(),
|
|
50
|
+
new ProcessorLoader(),
|
|
51
|
+
new AgentsMdValidationLoader(),
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Load all rules from all available loaders.
|
|
56
|
+
* @returns Promise resolving to orchestrator result
|
|
57
|
+
*/
|
|
58
|
+
async loadAllRules() {
|
|
59
|
+
const allRules = [];
|
|
60
|
+
const loaderResults = new Map();
|
|
61
|
+
let successfulLoaders = 0;
|
|
62
|
+
let failedLoaders = 0;
|
|
63
|
+
for (const loader of this.loaders) {
|
|
64
|
+
try {
|
|
65
|
+
const isAvailable = await loader.isAvailable();
|
|
66
|
+
if (!isAvailable) {
|
|
67
|
+
if (this.options.enableLogging) {
|
|
68
|
+
await frameworkLogger.log("loader-orchestrator", "loader-not-available", "info", {
|
|
69
|
+
message: `Loader ${loader.name} not available, skipping`,
|
|
70
|
+
loader: loader.name,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
loaderResults.set(loader.name, { success: true, ruleCount: 0 });
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const rules = await loader.load();
|
|
77
|
+
allRules.push(...rules);
|
|
78
|
+
successfulLoaders++;
|
|
79
|
+
loaderResults.set(loader.name, { success: true, ruleCount: rules.length });
|
|
80
|
+
if (this.options.enableLogging) {
|
|
81
|
+
await frameworkLogger.log("loader-orchestrator", "loader-success", "success", {
|
|
82
|
+
message: `Loader ${loader.name} loaded ${rules.length} rules`,
|
|
83
|
+
loader: loader.name,
|
|
84
|
+
ruleCount: rules.length,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
failedLoaders++;
|
|
90
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
91
|
+
loaderResults.set(loader.name, { success: false, ruleCount: 0, error: errorMessage });
|
|
92
|
+
if (this.options.enableLogging) {
|
|
93
|
+
await frameworkLogger.log("loader-orchestrator", "loader-failed", "error", {
|
|
94
|
+
message: `Loader ${loader.name} failed: ${errorMessage}`,
|
|
95
|
+
loader: loader.name,
|
|
96
|
+
error: errorMessage,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (!this.options.continueOnError) {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const result = {
|
|
105
|
+
rules: allRules,
|
|
106
|
+
successfulLoaders,
|
|
107
|
+
failedLoaders,
|
|
108
|
+
loaderResults,
|
|
109
|
+
};
|
|
110
|
+
if (this.options.enableLogging) {
|
|
111
|
+
await frameworkLogger.log("loader-orchestrator", "load-complete", "success", {
|
|
112
|
+
message: `Loaded ${allRules.length} rules from ${successfulLoaders} loaders (${failedLoaders} failed)`,
|
|
113
|
+
totalRules: allRules.length,
|
|
114
|
+
successfulLoaders,
|
|
115
|
+
failedLoaders,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Register a custom loader.
|
|
122
|
+
* @param loader - Loader to register
|
|
123
|
+
*/
|
|
124
|
+
registerLoader(loader) {
|
|
125
|
+
this.loaders.push(loader);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get all registered loaders.
|
|
129
|
+
* @returns Array of registered loaders
|
|
130
|
+
*/
|
|
131
|
+
getLoaders() {
|
|
132
|
+
return [...this.loaders];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get loader by name.
|
|
136
|
+
* @param name - Loader name
|
|
137
|
+
* @returns Loader instance or undefined
|
|
138
|
+
*/
|
|
139
|
+
getLoader(name) {
|
|
140
|
+
return this.loaders.find((loader) => loader.name === name);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Remove a loader by name.
|
|
144
|
+
* @param name - Loader name
|
|
145
|
+
* @returns True if loader was removed
|
|
146
|
+
*/
|
|
147
|
+
removeLoader(name) {
|
|
148
|
+
const index = this.loaders.findIndex((loader) => loader.name === name);
|
|
149
|
+
if (index >= 0) {
|
|
150
|
+
this.loaders.splice(index, 1);
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Clear all registered loaders.
|
|
157
|
+
*/
|
|
158
|
+
clearLoaders() {
|
|
159
|
+
this.loaders = [];
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get count of registered loaders.
|
|
163
|
+
* @returns Number of loaders
|
|
164
|
+
*/
|
|
165
|
+
getLoaderCount() {
|
|
166
|
+
return this.loaders.length;
|
|
167
|
+
}
|
|
168
|
+
}
|