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,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule Enforcement Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides rule enforcement capabilities for the 0xRay framework.
|
|
5
|
+
* It validates code against development rules and codex compliance requirements.
|
|
6
|
+
*
|
|
7
|
+
* @module enforcement
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { RuleEnforcer, RuleDefinition, ValidationReport } from './enforcement/index.js';
|
|
13
|
+
*
|
|
14
|
+
* const enforcer = new RuleEnforcer();
|
|
15
|
+
* const report = await enforcer.validateOperation('write', context);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
// Core enforcer
|
|
19
|
+
export { RuleEnforcer } from "./rule-enforcer.js";
|
|
20
|
+
// Core components (Phase 5 refactoring)
|
|
21
|
+
export { RuleRegistry, RuleHierarchy, RuleExecutor, ViolationFixer, } from "./core/index.js";
|
|
22
|
+
// All types
|
|
23
|
+
export { isRuleValidationResult, } from "./types.js";
|
|
24
|
+
// Validators (Phase 3 refactoring)
|
|
25
|
+
export {
|
|
26
|
+
// Base class
|
|
27
|
+
BaseValidator,
|
|
28
|
+
// Registry
|
|
29
|
+
ValidatorRegistry, globalValidatorRegistry,
|
|
30
|
+
// Code quality validators
|
|
31
|
+
NoDuplicateCodeValidator, ContextAnalysisIntegrationValidator, MemoryOptimizationValidator, DocumentationRequiredValidator, NoOverEngineeringValidator, CleanDebugLogsValidator, ConsoleLogUsageValidator, } from "./validators/index.js";
|
|
32
|
+
// Loaders (Phase 4 refactoring)
|
|
33
|
+
export {
|
|
34
|
+
// Base loader
|
|
35
|
+
BaseLoader,
|
|
36
|
+
// Concrete loaders
|
|
37
|
+
CodexLoader, AgentTriageLoader, ProcessorLoader, AgentsMdValidationLoader,
|
|
38
|
+
// Orchestrator
|
|
39
|
+
LoaderOrchestrator, } from "./loaders/index.js";
|
|
40
|
+
// Enforcer tools (if any exports exist)
|
|
41
|
+
export * as enforcerTools from "./enforcer-tools.js";
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Triage Rule Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads agent triage rules from AGENTS.md file.
|
|
5
|
+
* Extracts triage guidelines and converts them to RuleDefinition objects.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 refactoring: Extracted from RuleEnforcer.loadAgentTriageRules()
|
|
8
|
+
*
|
|
9
|
+
* @module loaders/agent-triage-loader
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
+
import { BaseLoader } from "./base-loader.js";
|
|
14
|
+
/**
|
|
15
|
+
* Loader for agent triage rules from AGENTS.md.
|
|
16
|
+
* Parses the markdown file to extract triage guidelines.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const loader = new AgentTriageLoader();
|
|
21
|
+
* if (await loader.isAvailable()) {
|
|
22
|
+
* const rules = await loader.load();
|
|
23
|
+
* console.log(`Loaded ${rules.length} triage rules`);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class AgentTriageLoader extends BaseLoader {
|
|
28
|
+
name = "agent-triage";
|
|
29
|
+
/**
|
|
30
|
+
* Path to the AGENTS.md file.
|
|
31
|
+
*/
|
|
32
|
+
get agentsPath() {
|
|
33
|
+
return this.resolvePath("AGENTS.md");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if AGENTS.md exists.
|
|
37
|
+
* @returns Promise resolving to true if AGENTS.md is available
|
|
38
|
+
*/
|
|
39
|
+
async isAvailable() {
|
|
40
|
+
return this.fileExists(this.agentsPath);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Load agent triage rules from AGENTS.md.
|
|
44
|
+
* @returns Promise resolving to array of rule definitions
|
|
45
|
+
*/
|
|
46
|
+
async load() {
|
|
47
|
+
const rules = [];
|
|
48
|
+
try {
|
|
49
|
+
const content = await this.readFile(this.agentsPath);
|
|
50
|
+
// Extract triage guidelines from AGENTS.md
|
|
51
|
+
const triageSection = this.extractTriageSection(content);
|
|
52
|
+
if (triageSection) {
|
|
53
|
+
// Create triage commit status reporting rule
|
|
54
|
+
rules.push(this.createTriageCommitStatusRule());
|
|
55
|
+
// Create additional triage rules based on AGENTS.md content
|
|
56
|
+
const additionalRules = this.extractAdditionalRules(content);
|
|
57
|
+
rules.push(...additionalRules);
|
|
58
|
+
await frameworkLogger.log("agent-triage-loader", "loaded-triage-rules", "success", {
|
|
59
|
+
message: `Loaded ${rules.length} agent triage rules`,
|
|
60
|
+
ruleCount: rules.length,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
await frameworkLogger.log("agent-triage-loader", "failed-to-load-triage", "error", {
|
|
66
|
+
message: `Failed to load agent triage rules: ${error instanceof Error ? error.message : String(error)}`,
|
|
67
|
+
error: error instanceof Error ? error.message : String(error),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return rules;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Extract the triage section from AGENTS.md content.
|
|
74
|
+
* @param content - Full content of AGENTS.md
|
|
75
|
+
* @returns Triage section content or null if not found
|
|
76
|
+
*/
|
|
77
|
+
extractTriageSection(content) {
|
|
78
|
+
// Look for triage-related sections
|
|
79
|
+
const triagePatterns = [
|
|
80
|
+
/### Triage Summary Guidelines([\s\S]*?)(?=###|$)/,
|
|
81
|
+
/### Agent Triage([\s\S]*?)(?=###|$)/,
|
|
82
|
+
/### Triage([\s\S]*?)(?=###|$)/,
|
|
83
|
+
/## Triage([\s\S]*?)(?=##|$)/,
|
|
84
|
+
];
|
|
85
|
+
for (const pattern of triagePatterns) {
|
|
86
|
+
const match = content.match(pattern);
|
|
87
|
+
if (match && match[1]) {
|
|
88
|
+
return match[1].trim();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Extract additional rules from AGENTS.md content.
|
|
95
|
+
* @param content - Full content of AGENTS.md
|
|
96
|
+
* @returns Array of additional rule definitions
|
|
97
|
+
*/
|
|
98
|
+
extractAdditionalRules(content) {
|
|
99
|
+
const rules = [];
|
|
100
|
+
// Check for reflection guidelines
|
|
101
|
+
if (content.includes("reflection") || content.includes("Reflection")) {
|
|
102
|
+
rules.push(this.createReflectionGuidelineRule());
|
|
103
|
+
}
|
|
104
|
+
// Check for complexity routing
|
|
105
|
+
if (content.includes("complexity") ||
|
|
106
|
+
content.includes("routing") ||
|
|
107
|
+
content.includes("Complexity")) {
|
|
108
|
+
rules.push(this.createComplexityRoutingRule());
|
|
109
|
+
}
|
|
110
|
+
// Check for agent invocation patterns
|
|
111
|
+
if (content.includes("@") || content.includes("invoke")) {
|
|
112
|
+
rules.push(this.createAgentInvocationRule());
|
|
113
|
+
}
|
|
114
|
+
return rules;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create the triage commit status reporting rule.
|
|
118
|
+
* @returns RuleDefinition for triage commit status
|
|
119
|
+
*/
|
|
120
|
+
createTriageCommitStatusRule() {
|
|
121
|
+
return {
|
|
122
|
+
id: "agent-triage-commit-status",
|
|
123
|
+
name: "Triage Commit Status Reporting",
|
|
124
|
+
description: "When providing triage summaries after build error resolution or major changes, ALWAYS explicitly state the commit status (successful/failed) to avoid confusion",
|
|
125
|
+
category: "reporting",
|
|
126
|
+
severity: "info",
|
|
127
|
+
enabled: true,
|
|
128
|
+
validator: this.validateTriageReporting.bind(this),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a reflection guideline rule.
|
|
133
|
+
* @returns RuleDefinition for reflection guidelines
|
|
134
|
+
*/
|
|
135
|
+
createReflectionGuidelineRule() {
|
|
136
|
+
return {
|
|
137
|
+
id: "agent-triage-reflection-guidelines",
|
|
138
|
+
name: "Triage Reflection Guidelines",
|
|
139
|
+
description: "Complex investigations and multi-session work should be documented in deep reflections",
|
|
140
|
+
category: "reporting",
|
|
141
|
+
severity: "info",
|
|
142
|
+
enabled: true,
|
|
143
|
+
validator: this.validateReflectionGuidelines.bind(this),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Create a complexity routing rule.
|
|
148
|
+
* @returns RuleDefinition for complexity routing
|
|
149
|
+
*/
|
|
150
|
+
createComplexityRoutingRule() {
|
|
151
|
+
return {
|
|
152
|
+
id: "agent-triage-complexity-routing",
|
|
153
|
+
name: "Complexity-Based Agent Routing",
|
|
154
|
+
description: "Tasks should be routed to appropriate agents based on complexity level",
|
|
155
|
+
category: "architecture",
|
|
156
|
+
severity: "info",
|
|
157
|
+
enabled: true,
|
|
158
|
+
validator: this.validateComplexityRouting.bind(this),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Create an agent invocation rule.
|
|
163
|
+
* @returns RuleDefinition for agent invocation
|
|
164
|
+
*/
|
|
165
|
+
createAgentInvocationRule() {
|
|
166
|
+
return {
|
|
167
|
+
id: "agent-triage-invocation-syntax",
|
|
168
|
+
name: "Agent Invocation Syntax",
|
|
169
|
+
description: "Use @agent-name syntax in prompts or code comments to invoke agents",
|
|
170
|
+
category: "code-quality",
|
|
171
|
+
severity: "info",
|
|
172
|
+
enabled: true,
|
|
173
|
+
validator: this.validateAgentInvocation.bind(this),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Validate triage reporting requirements.
|
|
178
|
+
* @param context - Validation context
|
|
179
|
+
* @returns Validation result
|
|
180
|
+
*/
|
|
181
|
+
async validateTriageReporting(context) {
|
|
182
|
+
// This rule validates that triage summaries include commit status
|
|
183
|
+
// Would be checked during reporting operations
|
|
184
|
+
return {
|
|
185
|
+
passed: true,
|
|
186
|
+
message: "Triage reporting guidelines enforced",
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Validate reflection guidelines.
|
|
191
|
+
* @param context - Validation context
|
|
192
|
+
* @returns Validation result
|
|
193
|
+
*/
|
|
194
|
+
async validateReflectionGuidelines(context) {
|
|
195
|
+
return {
|
|
196
|
+
passed: true,
|
|
197
|
+
message: "Reflection guidelines available",
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Validate complexity routing.
|
|
202
|
+
* @param context - Validation context
|
|
203
|
+
* @returns Validation result
|
|
204
|
+
*/
|
|
205
|
+
async validateComplexityRouting(context) {
|
|
206
|
+
return {
|
|
207
|
+
passed: true,
|
|
208
|
+
message: "Complexity routing guidelines available",
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Validate agent invocation syntax.
|
|
213
|
+
* @param context - Validation context
|
|
214
|
+
* @returns Validation result
|
|
215
|
+
*/
|
|
216
|
+
async validateAgentInvocation(context) {
|
|
217
|
+
return {
|
|
218
|
+
passed: true,
|
|
219
|
+
message: "Agent invocation syntax guidelines available",
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENTS.md Validation Rule Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads validation rules for AGENTS.md file existence and currency.
|
|
5
|
+
* Ensures that AGENTS.md exists and is properly maintained.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 refactoring: Extracted from RuleEnforcer.loadAgentsMdValidationRule()
|
|
8
|
+
*
|
|
9
|
+
* @module loaders/agents-md-validation-loader
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
+
import { BaseLoader } from "./base-loader.js";
|
|
14
|
+
/**
|
|
15
|
+
* Loader for AGENTS.md validation rules.
|
|
16
|
+
* Creates rules that validate AGENTS.md existence and currency.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const loader = new AgentsMdValidationLoader();
|
|
21
|
+
* if (await loader.isAvailable()) {
|
|
22
|
+
* const rules = await loader.load();
|
|
23
|
+
* console.log(`Loaded ${rules.length} AGENTS.md validation rules`);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class AgentsMdValidationLoader extends BaseLoader {
|
|
28
|
+
name = "agents-md-validation";
|
|
29
|
+
/**
|
|
30
|
+
* Path to the AGENTS.md file.
|
|
31
|
+
*/
|
|
32
|
+
get agentsPath() {
|
|
33
|
+
return this.resolvePath("AGENTS.md");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if AGENTS.md exists.
|
|
37
|
+
* @returns Promise resolving to true if AGENTS.md is available
|
|
38
|
+
*/
|
|
39
|
+
async isAvailable() {
|
|
40
|
+
return this.fileExists(this.agentsPath);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Load AGENTS.md validation rules.
|
|
44
|
+
* @returns Promise resolving to array of rule definitions
|
|
45
|
+
*/
|
|
46
|
+
async load() {
|
|
47
|
+
const rules = [];
|
|
48
|
+
try {
|
|
49
|
+
// Rule: AGENTS.md must exist
|
|
50
|
+
rules.push(this.createAgentsMdExistsRule());
|
|
51
|
+
// Rule: AGENTS.md must be current
|
|
52
|
+
rules.push(this.createAgentsMdCurrentRule());
|
|
53
|
+
// Rule: AGENTS.md must have valid structure
|
|
54
|
+
rules.push(this.createAgentsMdStructureRule());
|
|
55
|
+
await frameworkLogger.log("agents-md-validation-loader", "loaded-agents-md-rules", "success", {
|
|
56
|
+
message: `Loaded ${rules.length} AGENTS.md validation rules`,
|
|
57
|
+
ruleCount: rules.length,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
await frameworkLogger.log("agents-md-validation-loader", "failed-to-load-agents-md-rules", "error", {
|
|
62
|
+
message: `Failed to load AGENTS.md validation rules: ${error instanceof Error ? error.message : String(error)}`,
|
|
63
|
+
error: error instanceof Error ? error.message : String(error),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return rules;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create AGENTS.md existence rule.
|
|
70
|
+
* @returns RuleDefinition for AGENTS.md existence
|
|
71
|
+
*/
|
|
72
|
+
createAgentsMdExistsRule() {
|
|
73
|
+
return {
|
|
74
|
+
id: "agents-md-exists",
|
|
75
|
+
name: "AGENTS.md Must Exist",
|
|
76
|
+
description: "AGENTS.md is required for agent triage rules, codex compliance, and session management. Projects must maintain an up-to-date AGENTS.md file.",
|
|
77
|
+
category: "architecture",
|
|
78
|
+
severity: "blocking",
|
|
79
|
+
enabled: true,
|
|
80
|
+
validator: this.validateAgentsMdExists.bind(this),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create AGENTS.md currency rule.
|
|
85
|
+
* @returns RuleDefinition for AGENTS.md currency
|
|
86
|
+
*/
|
|
87
|
+
createAgentsMdCurrentRule() {
|
|
88
|
+
return {
|
|
89
|
+
id: "agents-md-current",
|
|
90
|
+
name: "AGENTS.md Must Be Current",
|
|
91
|
+
description: "AGENTS.md should be reviewed and updated regularly (within 30 days) to ensure agent capabilities and rules are accurate.",
|
|
92
|
+
category: "reporting",
|
|
93
|
+
severity: "warning",
|
|
94
|
+
enabled: true,
|
|
95
|
+
validator: this.validateAgentsMdCurrent.bind(this),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create AGENTS.md structure rule.
|
|
100
|
+
* @returns RuleDefinition for AGENTS.md structure
|
|
101
|
+
*/
|
|
102
|
+
createAgentsMdStructureRule() {
|
|
103
|
+
return {
|
|
104
|
+
id: "agents-md-structure",
|
|
105
|
+
name: "AGENTS.md Must Have Valid Structure",
|
|
106
|
+
description: "AGENTS.md must contain required sections including agent list, triage guidelines, and reflection paths.",
|
|
107
|
+
category: "architecture",
|
|
108
|
+
severity: "warning",
|
|
109
|
+
enabled: true,
|
|
110
|
+
validator: this.validateAgentsMdStructure.bind(this),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Validate that AGENTS.md exists.
|
|
115
|
+
* @param context - Validation context
|
|
116
|
+
* @returns Validation result
|
|
117
|
+
*/
|
|
118
|
+
async validateAgentsMdExists(context) {
|
|
119
|
+
try {
|
|
120
|
+
const exists = await this.fileExists(this.agentsPath);
|
|
121
|
+
if (!exists) {
|
|
122
|
+
const fixes = [
|
|
123
|
+
{
|
|
124
|
+
type: "run-command",
|
|
125
|
+
description: "Auto-generate AGENTS.md from template",
|
|
126
|
+
command: "node scripts/node/enforce-agents-md.js --generate",
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
return {
|
|
130
|
+
passed: false,
|
|
131
|
+
message: "AGENTS.md not found in project root",
|
|
132
|
+
suggestions: [
|
|
133
|
+
"Create AGENTS.md using template from docs/AGENTS_TEMPLATE.md",
|
|
134
|
+
"Run: node scripts/node/enforce-agents-md.js --generate",
|
|
135
|
+
"See AGENTS.md for agent triage rules and codex compliance",
|
|
136
|
+
],
|
|
137
|
+
fixes,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
passed: true,
|
|
142
|
+
message: "AGENTS.md exists",
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return {
|
|
147
|
+
passed: false,
|
|
148
|
+
message: `Error checking AGENTS.md: ${error instanceof Error ? error.message : String(error)}`,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validate that AGENTS.md is current (updated within 30 days).
|
|
154
|
+
* @param context - Validation context
|
|
155
|
+
* @returns Validation result
|
|
156
|
+
*/
|
|
157
|
+
async validateAgentsMdCurrent(context) {
|
|
158
|
+
try {
|
|
159
|
+
const exists = await this.fileExists(this.agentsPath);
|
|
160
|
+
if (!exists) {
|
|
161
|
+
return {
|
|
162
|
+
passed: true,
|
|
163
|
+
message: "AGENTS.md check skipped (file does not exist)",
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
const content = await this.readFile(this.agentsPath);
|
|
167
|
+
const dateMatch = content.match(/\*\*Updated\*\*:\s*(\d{4}-\d{2}-\d{2})/);
|
|
168
|
+
if (!dateMatch || !dateMatch[1]) {
|
|
169
|
+
return {
|
|
170
|
+
passed: false,
|
|
171
|
+
severity: "warning",
|
|
172
|
+
message: "AGENTS.md missing date stamp",
|
|
173
|
+
suggestions: ["Add '**Updated**: YYYY-MM-DD' to AGENTS.md header"],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
const updateDate = new Date(dateMatch[1]);
|
|
177
|
+
const daysSinceUpdate = Math.floor((Date.now() - updateDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
178
|
+
if (daysSinceUpdate > 30) {
|
|
179
|
+
return {
|
|
180
|
+
passed: false,
|
|
181
|
+
message: `AGENTS.md is ${daysSinceUpdate} days old (recommended: review every 30 days)`,
|
|
182
|
+
suggestions: [
|
|
183
|
+
"Review and update AGENTS.md to reflect current agent capabilities",
|
|
184
|
+
"Update the date stamp to today's date",
|
|
185
|
+
],
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
passed: true,
|
|
190
|
+
message: `AGENTS.md is current (${daysSinceUpdate} days old)`,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
return {
|
|
195
|
+
passed: false,
|
|
196
|
+
message: `Error checking AGENTS.md date: ${error instanceof Error ? error.message : String(error)}`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Validate AGENTS.md structure.
|
|
202
|
+
* @param context - Validation context
|
|
203
|
+
* @returns Validation result
|
|
204
|
+
*/
|
|
205
|
+
async validateAgentsMdStructure(context) {
|
|
206
|
+
try {
|
|
207
|
+
const exists = await this.fileExists(this.agentsPath);
|
|
208
|
+
if (!exists) {
|
|
209
|
+
return {
|
|
210
|
+
passed: true,
|
|
211
|
+
message: "AGENTS.md structure check skipped (file does not exist)",
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
const content = await this.readFile(this.agentsPath);
|
|
215
|
+
const missingSections = [];
|
|
216
|
+
// Check for required sections
|
|
217
|
+
if (!content.includes("# 0xRay Agents")) {
|
|
218
|
+
missingSections.push("Main title (0xRay Agents)");
|
|
219
|
+
}
|
|
220
|
+
if (!content.includes("Available Agents")) {
|
|
221
|
+
missingSections.push("Available Agents section");
|
|
222
|
+
}
|
|
223
|
+
if (!content.includes("Triage") && !content.includes("triage")) {
|
|
224
|
+
missingSections.push("Triage guidelines section");
|
|
225
|
+
}
|
|
226
|
+
if (!content.includes("reflection") &&
|
|
227
|
+
!content.includes("Reflection")) {
|
|
228
|
+
missingSections.push("Reflection guidelines section");
|
|
229
|
+
}
|
|
230
|
+
if (missingSections.length > 0) {
|
|
231
|
+
return {
|
|
232
|
+
passed: false,
|
|
233
|
+
message: `AGENTS.md missing required sections: ${missingSections.join(", ")}`,
|
|
234
|
+
suggestions: [
|
|
235
|
+
"Add missing sections to AGENTS.md",
|
|
236
|
+
"Reference docs/AGENTS_TEMPLATE.md for structure",
|
|
237
|
+
],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
passed: true,
|
|
242
|
+
message: "AGENTS.md has valid structure",
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
return {
|
|
247
|
+
passed: false,
|
|
248
|
+
message: `Error checking AGENTS.md structure: ${error instanceof Error ? error.message : String(error)}`,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Rule Loader
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for all rule loaders. Provides common functionality
|
|
5
|
+
* for loading rules from various sources such as files, APIs, or databases.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 refactoring: Extracted from RuleEnforcer to separate loading logic
|
|
8
|
+
* from rule execution.
|
|
9
|
+
*
|
|
10
|
+
* @module loaders/base-loader
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from "fs";
|
|
14
|
+
import * as path from "path";
|
|
15
|
+
/**
|
|
16
|
+
* Abstract base class implementing IRuleLoader interface.
|
|
17
|
+
* Provides common file loading utilities and error handling.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* class MyLoader extends BaseLoader {
|
|
22
|
+
* readonly name = 'my-loader';
|
|
23
|
+
*
|
|
24
|
+
* async load(): Promise<RuleDefinition[]> {
|
|
25
|
+
* const data = await this.loadJsonFile('rules.json');
|
|
26
|
+
* return this.transformToRules(data);
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* async isAvailable(): Promise<boolean> {
|
|
30
|
+
* return this.fileExists('rules.json');
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class BaseLoader {
|
|
36
|
+
/**
|
|
37
|
+
* Load and parse a JSON file.
|
|
38
|
+
* @param filePath - Path to the JSON file
|
|
39
|
+
* @returns Promise resolving to parsed JSON data
|
|
40
|
+
* @throws Error if file cannot be read or parsed
|
|
41
|
+
*/
|
|
42
|
+
async loadJsonFile(filePath) {
|
|
43
|
+
const content = await fs.promises.readFile(filePath, "utf8");
|
|
44
|
+
return JSON.parse(content);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if a file exists.
|
|
48
|
+
* @param filePath - Path to check
|
|
49
|
+
* @returns Promise resolving to true if file exists
|
|
50
|
+
*/
|
|
51
|
+
async fileExists(filePath) {
|
|
52
|
+
try {
|
|
53
|
+
await fs.promises.access(filePath, fs.constants.F_OK);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Read file content as string.
|
|
62
|
+
* @param filePath - Path to the file
|
|
63
|
+
* @returns Promise resolving to file content
|
|
64
|
+
* @throws Error if file cannot be read
|
|
65
|
+
*/
|
|
66
|
+
async readFile(filePath) {
|
|
67
|
+
return fs.promises.readFile(filePath, "utf8");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resolve a path relative to the current working directory.
|
|
71
|
+
* @param relativePath - Path relative to process.cwd()
|
|
72
|
+
* @returns Absolute path
|
|
73
|
+
*/
|
|
74
|
+
resolvePath(relativePath) {
|
|
75
|
+
return path.join(process.cwd(), relativePath);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get file stats.
|
|
79
|
+
* @param filePath - Path to the file
|
|
80
|
+
* @returns Promise resolving to file stats
|
|
81
|
+
* @throws Error if file cannot be accessed
|
|
82
|
+
*/
|
|
83
|
+
async getFileStats(filePath) {
|
|
84
|
+
return fs.promises.stat(filePath);
|
|
85
|
+
}
|
|
86
|
+
}
|