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,909 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enforcer Tools - Integration layer between enforcer agent and rule enforcement system
|
|
3
|
+
* Provides tools for codex compliance, rule validation, and contextual analysis enforcement
|
|
4
|
+
*/
|
|
5
|
+
import { ruleEnforcer, } from "./rule-enforcer.js";
|
|
6
|
+
import { frameworkLogger } from "../core/framework-logger.js";
|
|
7
|
+
import { AgentDelegator } from "../delegation/agent-delegator.js";
|
|
8
|
+
import { StringRayStateManager } from "../state/state-manager.js";
|
|
9
|
+
import { strRayConfigLoader } from "../core/config-loader.js";
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import * as path from "path";
|
|
12
|
+
// Minimum confidence to auto-delegate to another agent
|
|
13
|
+
const DELEGATION_CONFIDENCE_THRESHOLD = 0.50;
|
|
14
|
+
// Agents that enforcer should NOT delegate to (enforcer handles these itself)
|
|
15
|
+
const ENFORCER_HANDLES = new Set(["code-reviewer"]);
|
|
16
|
+
// Community skills are OPTIONAL - they may not be installed
|
|
17
|
+
// These mappings have lower confidence (0.55-0.7) since skills may not be available
|
|
18
|
+
// The system will fall back gracefully if the skill isn't installed
|
|
19
|
+
const ROUTING_MAPPINGS = [
|
|
20
|
+
// Core built-in skills (high confidence)
|
|
21
|
+
{ keywords: ["write", "file", "create"], skill: "code-review", agent: "code-reviewer", confidence: 0.9 },
|
|
22
|
+
{ keywords: ["review", "audit", "assess", "evaluate", "check", "inspect", "quality", "validate", "code-review"], skill: "code-review", agent: "code-reviewer", confidence: 0.9 },
|
|
23
|
+
{ keywords: ["test", "testing", "jest", "coverage", "unit", "e2e", "cypress", "spec", "verify"], skill: "testing-best-practices", agent: "testing-lead", confidence: 0.95 },
|
|
24
|
+
{ keywords: ["fix", "debug", "triage", "broken", "error", "crash", "bug", "issue", "resolve"], skill: "bug-triage", agent: "bug-triage-specialist", confidence: 0.92 },
|
|
25
|
+
{ keywords: ["security", "vulnerability", "threat", "scan", "risk", "exploit", "secure", "pentest"], skill: "security-audit", agent: "security-auditor", confidence: 0.95 },
|
|
26
|
+
{ keywords: ["refactor", "cleanup", "improve", "restructure", "modernize", "debt"], skill: "refactoring-strategies", agent: "refactorer", confidence: 0.92 },
|
|
27
|
+
{ keywords: ["performance", "optimize", "bottleneck", "benchmark", "profile", "speed"], skill: "performance-optimization", agent: "performance-engineer", confidence: 0.93 },
|
|
28
|
+
{ keywords: ["frontend", "react", "vue", "angular", "ui", "ux", "interface", "component"], skill: "frontend-development", agent: "frontend-engineer", confidence: 0.95 },
|
|
29
|
+
{ keywords: ["backend", "api", "server", "microservice", "endpoint"], skill: "backend-development", agent: "backend-engineer", confidence: 0.95 },
|
|
30
|
+
{ keywords: ["docs", "documentation", "readme", "wiki", "guide", "manual"], skill: "documentation-generation", agent: "tech-writer", confidence: 0.9 },
|
|
31
|
+
{ keywords: ["database", "db", "sql", "schema", "migration", "query"], skill: "database-design", agent: "database-engineer", confidence: 0.95 },
|
|
32
|
+
{ keywords: ["deploy", "ci/cd", "pipeline", "docker", "kubernetes", "infrastructure"], skill: "devops-deployment", agent: "devops-engineer", confidence: 0.94 },
|
|
33
|
+
{ keywords: ["mobile", "ios", "android", "react-native", "flutter"], skill: "mobile-development", agent: "mobile-developer", confidence: 0.95 },
|
|
34
|
+
{ keywords: ["enforce", "compliance", "rule", "standard", "codex", "block", "prevent"], skill: "code-review", agent: "code-reviewer", confidence: 0.95 },
|
|
35
|
+
{ keywords: ["design", "architect", "plan", "system", "model", "pattern", "architecture"], skill: "architecture-patterns", agent: "architect", confidence: 0.95 },
|
|
36
|
+
{ keywords: ["codebase", "explore", "research", "discover", "implementation"], skill: "git-workflow", agent: "researcher", confidence: 0.88 },
|
|
37
|
+
// Additional built-in skill mappings
|
|
38
|
+
{ keywords: ["api", "rest", "graphql", "openapi", "endpoint", "swagger"], skill: "api-design", agent: "backend-engineer", confidence: 0.9 },
|
|
39
|
+
{ keywords: ["strategy", "roadmap", "planning", "technical", "decision", "architecture"], skill: "architecture-patterns", agent: "strategist", confidence: 0.88 },
|
|
40
|
+
{ keywords: ["reflection", "story", "narrative", "saga", "journey", "document"], skill: "storyteller", agent: "tech-writer", confidence: 0.85 },
|
|
41
|
+
{ keywords: ["analyze", "metrics", "complexity", "maintainability", "quality"], skill: "code-analyzer", agent: "code-analyzer", confidence: 0.9 },
|
|
42
|
+
{ keywords: ["growth", "marketing", "conversion", "acquisition", "user-acquisition"], skill: "growth-strategist", agent: "growth-strategist", confidence: 0.9 },
|
|
43
|
+
{ keywords: ["seo", "search", "organic", "traffic", "keywords", "ranking"], skill: "seo-consultant", agent: "seo-consultant", confidence: 0.92 },
|
|
44
|
+
{ keywords: ["content", "copy", "blog", "marketing", "social"], skill: "content-creator", agent: "content-creator", confidence: 0.88 },
|
|
45
|
+
{ keywords: ["format", "lint", "prettier", "eslint", "style", "formatting"], skill: "auto-format", agent: "code-reviewer", confidence: 0.85 },
|
|
46
|
+
{ keywords: ["project", "structure", "health", "dependencies", "architecture"], skill: "project-analysis", agent: "architect", confidence: 0.88 },
|
|
47
|
+
{ keywords: ["compliance", "audit", "standards", "framework", "validation"], skill: "framework-compliance-audit", agent: "code-reviewer", confidence: 0.9 },
|
|
48
|
+
{ keywords: ["session", "state", "persistence", "storage", "cache"], skill: "session-management", agent: "backend-engineer", confidence: 0.85 },
|
|
49
|
+
{ keywords: ["image", "visual", "pdf", "diagram", "multimedia", "media"], skill: "multimodal-looker", agent: "multimodal-looker", confidence: 0.92 },
|
|
50
|
+
{ keywords: ["testing", "strategy", "coverage", "test-plan"], skill: "testing-strategy", agent: "testing-lead", confidence: 0.92 },
|
|
51
|
+
{ keywords: ["inference", "model", "llm", "tuning", "optimization"], skill: "inference-improve", agent: "performance-engineer", confidence: 0.88 },
|
|
52
|
+
{ keywords: ["orchestrate", "boot", "initialize", "startup", "bootstrap"], skill: "boot-orchestrator", agent: "architect", confidence: 0.9 },
|
|
53
|
+
// Additional unmapped skills
|
|
54
|
+
{ keywords: ["tool", "utility", "helper", "instrument"], skill: "architect-tools", agent: "architect", confidence: 0.85 },
|
|
55
|
+
{ keywords: ["design", "visual", "style", "theme", "css", "accessibility"], skill: "ui-ux-design", agent: "frontend-ui-ux-engineer", confidence: 0.9 },
|
|
56
|
+
{ keywords: ["agent", "multi-agent", "coordination", "hermes", "communication"], skill: "hermes-agent", agent: "architect", confidence: 0.88 },
|
|
57
|
+
{ keywords: ["log", "diagnostic", "trace", "monitor", "watch"], skill: "log-monitor", agent: "log-monitor", confidence: 0.9 },
|
|
58
|
+
{ keywords: ["health", "diagnostic", "model-health", "validate-llm"], skill: "model-health-check", agent: "performance-engineer", confidence: 0.88 },
|
|
59
|
+
{ keywords: ["analyze", "profiling", "memory", "cpu", "latency"], skill: "performance-analysis", agent: "performance-engineer", confidence: 0.9 },
|
|
60
|
+
{ keywords: ["pipeline", "stream", "etl", "batch", "process"], skill: "processor-pipeline", agent: "backend-engineer", confidence: 0.88 },
|
|
61
|
+
{ keywords: ["vulnerability", "cve", "sast", "dast", "dependency-check"], skill: "security-scan", agent: "security-auditor", confidence: 0.92 },
|
|
62
|
+
{ keywords: ["state", "store", "redux", "context", "persistence"], skill: "state-manager", agent: "backend-engineer", confidence: 0.88 },
|
|
63
|
+
// ============================================================
|
|
64
|
+
// Community Skills (optional, lower confidence)
|
|
65
|
+
// These skills are from antigravity and may not be installed
|
|
66
|
+
// ============================================================
|
|
67
|
+
// UI/UX Design & Themes (antigravity)
|
|
68
|
+
{ keywords: ["theme", "design-system", "color", "font", "typography", "palette"], skill: "antigravity--theme-factory", agent: "frontend-ui-ux-engineer", confidence: 0.6 },
|
|
69
|
+
{ keywords: ["hig", "salesforce design", "lightning design", "slds"], skill: "antigravity--hig-components-system", agent: "frontend-ui-ux-engineer", confidence: 0.65 },
|
|
70
|
+
{ keywords: ["slide", "deck", "presentation", "powerpoint"], skill: "antigravity--theme-factory", agent: "content-creator", confidence: 0.55 },
|
|
71
|
+
// SEO (antigravity)
|
|
72
|
+
{ keywords: ["seo technical", "crawl", "indexability", "core web vitals", "sitemap"], skill: "antigravity--seo-technical", agent: "seo-consultant", confidence: 0.7 },
|
|
73
|
+
{ keywords: ["seo structure", "content hierarchy", "schema", "internal linking"], skill: "antigravity--seo-structure-architect", agent: "seo-consultant", confidence: 0.7 },
|
|
74
|
+
{ keywords: ["seo snippet", "meta description", "title tag"], skill: "antigravity--seo-snippet-hunter", agent: "seo-consultant", confidence: 0.7 },
|
|
75
|
+
{ keywords: ["seo hreflang", "international seo", "multilingual"], skill: "antigravity--seo-hreflang", agent: "seo-consultant", confidence: 0.65 },
|
|
76
|
+
// Security (antigravity)
|
|
77
|
+
{ keywords: ["backend security", "secure coding", "input validation", "authentication"], skill: "antigravity--backend-security-coder", agent: "security-auditor", confidence: 0.7 },
|
|
78
|
+
{ keywords: ["mobile security", "ios security", "android security"], skill: "antigravity--mobile-security-coder", agent: "security-auditor", confidence: 0.65 },
|
|
79
|
+
{ keywords: ["security audit", "vulnerability assessment", "penetration test"], skill: "security-audit", agent: "security-auditor", confidence: 0.75 },
|
|
80
|
+
// Vector/AI Databases (antigravity)
|
|
81
|
+
{ keywords: ["vector", "embeddings", "similarity search", "pinecone", "qdrant", "chroma"], skill: "antigravity--vector-database-engineer", agent: "database-engineer", confidence: 0.65 },
|
|
82
|
+
{ keywords: ["similarity search", "approximate nearest neighbor"], skill: "antigravity--similarity-search-patterns", agent: "database-engineer", confidence: 0.65 },
|
|
83
|
+
// Frameworks & Libraries (antigravity)
|
|
84
|
+
{ keywords: ["svelte", "sveltekit", "svelte.js"], skill: "antigravity--sveltekit", agent: "frontend-engineer", confidence: 0.65 },
|
|
85
|
+
{ keywords: ["trpc", "typescript rpc", "tRPC"], skill: "antigravity--trpc-fullstack", agent: "backend-engineer", confidence: 0.65 },
|
|
86
|
+
{ keywords: ["vercel ai", "ai sdk", "vapi"], skill: "antigravity--vercel-ai-sdk-expert", agent: "backend-engineer", confidence: 0.65 },
|
|
87
|
+
{ keywords: ["threejs", "3d web", "webgl", "3d graphics"], skill: "antigravity--threejs-loaders", agent: "frontend-engineer", confidence: 0.6 },
|
|
88
|
+
{ keywords: ["comfyui", "ai image generation", "stable diffusion"], skill: "antigravity--comfyui-gateway", agent: "multimodal-looker", confidence: 0.6 },
|
|
89
|
+
// Mobile (antigravity)
|
|
90
|
+
{ keywords: ["swiftui", "ios development"], skill: "antigravity--swiftui-liquid-glass", agent: "mobile-developer", confidence: 0.7 },
|
|
91
|
+
{ keywords: ["ios performance", "swift optimization"], skill: "antigravity--swiftui-performance-audit", agent: "mobile-developer", confidence: 0.65 },
|
|
92
|
+
{ keywords: ["react native", "rn"], skill: "mobile-development", agent: "mobile-developer", confidence: 0.7 },
|
|
93
|
+
// Backend/Golang (antigravity)
|
|
94
|
+
{ keywords: ["golang", "go", "gopher"], skill: "antigravity--golang-pro", agent: "backend-engineer", confidence: 0.65 },
|
|
95
|
+
{ keywords: ["temporal", "workflow", " durable execution"], skill: "antigravity--temporal-golang-pro", agent: "backend-engineer", confidence: 0.65 },
|
|
96
|
+
{ keywords: ["python async", "asyncio", "uvloop"], skill: "antigravity--async-python-patterns", agent: "backend-engineer", confidence: 0.65 },
|
|
97
|
+
{ keywords: ["pydantic", "data validation", "python models"], skill: "antigravity--pydantic-models-py", agent: "backend-engineer", confidence: 0.65 },
|
|
98
|
+
{ keywords: ["scala", "spark", "big data"], skill: "antigravity--scala-pro", agent: "backend-engineer", confidence: 0.6 },
|
|
99
|
+
{ keywords: ["dotnet", "c#", ".net"], skill: "antigravity--dotnet-backend-patterns", agent: "backend-engineer", confidence: 0.6 },
|
|
100
|
+
// Cloud/Azure (antigravity)
|
|
101
|
+
{ keywords: ["azure", "azd", "azure deploy"], skill: "antigravity--azd-deployment", agent: "devops-engineer", confidence: 0.65 },
|
|
102
|
+
{ keywords: ["azure storage", "file share"], skill: "antigravity--azure-storage-file-share-ts", agent: "devops-engineer", confidence: 0.6 },
|
|
103
|
+
{ keywords: ["azure service bus", "messaging"], skill: "antigravity--azure-servicebus-py", agent: "devops-engineer", confidence: 0.6 },
|
|
104
|
+
// Automation/Bots (antigravity)
|
|
105
|
+
{ keywords: ["discord bot", "discord automation"], skill: "antigravity--discord-bot-architect", agent: "backend-engineer", confidence: 0.6 },
|
|
106
|
+
{ keywords: ["n8n", "workflow automation"], skill: "antigravity--n8n-expression-syntax", agent: "devops-engineer", confidence: 0.6 },
|
|
107
|
+
{ keywords: ["linkedin automation", "social posting"], skill: "antigravity--linkedin-automation", agent: "growth-strategist", confidence: 0.55 },
|
|
108
|
+
{ keywords: ["reddit automation"], skill: "antigravity--reddit-automation", agent: "growth-strategist", confidence: 0.55 },
|
|
109
|
+
{ keywords: ["freshdesk", "customer support automation"], skill: "antigravity--freshdesk-automation", agent: "devops-engineer", confidence: 0.55 },
|
|
110
|
+
{ keywords: ["pagerduty", "incident management"], skill: "antigravity--pagerduty-automation", agent: "devops-engineer", confidence: 0.55 },
|
|
111
|
+
// AI/ML (antigravity)
|
|
112
|
+
{ keywords: ["local llm", "ollama", "llama", "local model"], skill: "antigravity--local-llm-expert", agent: "performance-engineer", confidence: 0.65 },
|
|
113
|
+
{ keywords: ["agent", "mcp", "model context protocol"], skill: "antigravity--agent-memory-mcp", agent: "architect", confidence: 0.65 },
|
|
114
|
+
{ keywords: ["agent evaluation", "agent testing"], skill: "antigravity--agent-evaluation", agent: "testing-lead", confidence: 0.65 },
|
|
115
|
+
{ keywords: ["ai agent", "autonomous agent"], skill: "antigravity--ai-agent-development", agent: "backend-engineer", confidence: 0.65 },
|
|
116
|
+
// Content/Marketing (antigravity)
|
|
117
|
+
{ keywords: ["marketing content", "ad creative", "campaign"], skill: "antigravity--marketing-ideas", agent: "content-creator", confidence: 0.6 },
|
|
118
|
+
{ keywords: ["conversion", "cro", "optimization"], skill: "antigravity--onboarding-cro", agent: "growth-strategist", confidence: 0.6 },
|
|
119
|
+
// Documentation & Code Quality (antigravity)
|
|
120
|
+
{ keywords: ["code documentation", "code explain", "explain code"], skill: "antigravity--code-documentation-code-explain", agent: "tech-writer", confidence: 0.65 },
|
|
121
|
+
{ keywords: ["code refactoring", "clean code"], skill: "antigravity--code-refactoring-refactor-clean", agent: "refactorer", confidence: 0.65 },
|
|
122
|
+
{ keywords: ["code review checklist"], skill: "antigravity--code-review-checklist", agent: "code-reviewer", confidence: 0.7 },
|
|
123
|
+
// Microservices & Architecture (antigravity)
|
|
124
|
+
{ keywords: ["microservices", "service mesh", "distributed systems"], skill: "antigravity--microservices-patterns", agent: "architect", confidence: 0.65 },
|
|
125
|
+
{ keywords: ["architecture decision", "adr", "decision records"], skill: "antigravity--architecture-decision-records", agent: "architect", confidence: 0.65 },
|
|
126
|
+
// Context/Memory Management (antigravity)
|
|
127
|
+
{ keywords: ["context management", "context compression", "token optimization"], skill: "antigravity--context-compression", agent: "performance-engineer", confidence: 0.65 },
|
|
128
|
+
{ keywords: ["context guardian", "memory safety"], skill: "antigravity--context-guardian", agent: "performance-engineer", confidence: 0.6 },
|
|
129
|
+
{ keywords: ["context fundamentals"], skill: "antigravity--context-fundamentals", agent: "performance-engineer", confidence: 0.6 },
|
|
130
|
+
// Specialized Skills
|
|
131
|
+
{ keywords: ["interview", "technical interview", "coding interview"], skill: "antigravity--interview-coach", agent: "growth-strategist", confidence: 0.6 },
|
|
132
|
+
{ keywords: ["i18n", "localization", "translation"], skill: "antigravity--i18n-localization", agent: "frontend-engineer", confidence: 0.6 },
|
|
133
|
+
{ keywords: ["accessibility", "a11y", "wcag"], skill: "antigravity--accessibility-compliance-accessibility-audit", agent: "frontend-ui-ux-engineer", confidence: 0.7 },
|
|
134
|
+
{ keywords: ["pwa", "progressive web app"], skill: "antigravity--progressive-web-app", agent: "frontend-engineer", confidence: 0.6 },
|
|
135
|
+
{ keywords: ["data migration", "sql migration"], skill: "antigravity--database-migrations-sql-migrations", agent: "database-engineer", confidence: 0.65 },
|
|
136
|
+
// Requesting Code Review (superpowers)
|
|
137
|
+
{ keywords: ["request code review", "pr review", "pull request"], skill: "superpowers--requesting-code-review", agent: "code-reviewer", confidence: 0.7 },
|
|
138
|
+
];
|
|
139
|
+
export function getTaskRoutingRecommendation(taskDescription) {
|
|
140
|
+
const desc = taskDescription.toLowerCase();
|
|
141
|
+
for (const mapping of ROUTING_MAPPINGS) {
|
|
142
|
+
for (const keyword of mapping.keywords) {
|
|
143
|
+
if (desc.includes(keyword.toLowerCase())) {
|
|
144
|
+
return {
|
|
145
|
+
suggestedAgent: mapping.agent,
|
|
146
|
+
suggestedSkill: mapping.skill,
|
|
147
|
+
confidence: mapping.confidence,
|
|
148
|
+
matchedKeyword: keyword,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
suggestedAgent: "code-reviewer",
|
|
155
|
+
suggestedSkill: "code-review",
|
|
156
|
+
confidence: 0.5,
|
|
157
|
+
matchedKeyword: "none",
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Pre-process and validate that the routing is appropriate for the operation
|
|
162
|
+
* This is the integration point between TaskSkillRouter and RuleEnforcer
|
|
163
|
+
*/
|
|
164
|
+
export async function preProcessAndRoute(operation, context) {
|
|
165
|
+
// Build task description from operation and context
|
|
166
|
+
const taskDescription = buildTaskDescription(operation, context);
|
|
167
|
+
// Get routing recommendation
|
|
168
|
+
const routing = getTaskRoutingRecommendation(taskDescription);
|
|
169
|
+
// Log the routing decision
|
|
170
|
+
await frameworkLogger.log("enforcer-tools", "task-routed", "debug", {
|
|
171
|
+
operation,
|
|
172
|
+
taskDescription: taskDescription.substring(0, 100),
|
|
173
|
+
suggestedAgent: routing.suggestedAgent,
|
|
174
|
+
suggestedSkill: routing.suggestedSkill,
|
|
175
|
+
confidence: routing.confidence,
|
|
176
|
+
});
|
|
177
|
+
// Enhance context with routing information
|
|
178
|
+
const enhancedContext = {
|
|
179
|
+
...context,
|
|
180
|
+
operation,
|
|
181
|
+
// Add routing info to context for rule validators to use
|
|
182
|
+
...context.routing,
|
|
183
|
+
};
|
|
184
|
+
return {
|
|
185
|
+
enhancedContext,
|
|
186
|
+
routing,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Build a task description from operation and context for routing
|
|
191
|
+
*/
|
|
192
|
+
function buildTaskDescription(operation, context) {
|
|
193
|
+
const parts = [operation];
|
|
194
|
+
if (context.component) {
|
|
195
|
+
parts.push(context.component);
|
|
196
|
+
}
|
|
197
|
+
if (context.files && context.files.length > 0) {
|
|
198
|
+
parts.push(`files: ${context.files.join(", ")}`);
|
|
199
|
+
}
|
|
200
|
+
return parts.join(" ");
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Execute the full release workflow
|
|
204
|
+
* Triggered when user says: release, npm publish, publish to npm, bump and publish, ship it
|
|
205
|
+
*/
|
|
206
|
+
async function executeReleaseWorkflow(operation, context, jobId, routing) {
|
|
207
|
+
const { execSync } = await import('child_process');
|
|
208
|
+
// Extract release options from routing context
|
|
209
|
+
const releaseContext = routing.context || {};
|
|
210
|
+
const bumpType = releaseContext.bumpType || 'patch';
|
|
211
|
+
const createTag = releaseContext.createTag || false;
|
|
212
|
+
await frameworkLogger.log("enforcer-tools", "release-workflow-starting", "info", { jobId, bumpType, createTag });
|
|
213
|
+
const steps = [];
|
|
214
|
+
const errors = [];
|
|
215
|
+
// HARD STOP: Build must pass before release
|
|
216
|
+
await frameworkLogger.log("enforcer-tools", "release-build-check", "info", { step: "Verifying build passes..." });
|
|
217
|
+
try {
|
|
218
|
+
execSync(`npm run build`, {
|
|
219
|
+
cwd: process.cwd(),
|
|
220
|
+
stdio: 'pipe'
|
|
221
|
+
});
|
|
222
|
+
steps.push("✅ Build verified");
|
|
223
|
+
}
|
|
224
|
+
catch (e) {
|
|
225
|
+
const errorMsg = `🛑 RELEASE STOPPED: Build failed before publishing. Fix build errors first.`;
|
|
226
|
+
frameworkLogger.log("enforcer-tools", "release-blocked", "error", {
|
|
227
|
+
message: errorMsg,
|
|
228
|
+
});
|
|
229
|
+
frameworkLogger.log("enforcer-tools", "release-build-error", "error", {
|
|
230
|
+
message: `Error: ${e}`,
|
|
231
|
+
error: e,
|
|
232
|
+
});
|
|
233
|
+
return {
|
|
234
|
+
operation: "release",
|
|
235
|
+
passed: false,
|
|
236
|
+
blocked: true,
|
|
237
|
+
errors: [errorMsg, `Build error: ${e}`],
|
|
238
|
+
warnings: [],
|
|
239
|
+
fixes: [],
|
|
240
|
+
report: {
|
|
241
|
+
passed: false,
|
|
242
|
+
operation: "release",
|
|
243
|
+
errors: [errorMsg, `Build error: ${e}`],
|
|
244
|
+
warnings: [],
|
|
245
|
+
results: [],
|
|
246
|
+
timestamp: new Date(),
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
// Step 1: Run version-manager to bump version and generate changelog
|
|
252
|
+
await frameworkLogger.log("enforcer-tools", "release-step-1-version", "info", { step: "Bumping version..." });
|
|
253
|
+
try {
|
|
254
|
+
const versionArg = createTag ? '--tag' : '';
|
|
255
|
+
execSync(`node scripts/node/version-manager.mjs ${bumpType} ${versionArg}`, {
|
|
256
|
+
cwd: process.cwd(),
|
|
257
|
+
stdio: 'inherit'
|
|
258
|
+
});
|
|
259
|
+
steps.push("✅ Version bumped + changelog generated");
|
|
260
|
+
}
|
|
261
|
+
catch (e) {
|
|
262
|
+
errors.push(`Version bump failed: ${e}`);
|
|
263
|
+
}
|
|
264
|
+
// Step 2: Git commit and push
|
|
265
|
+
await frameworkLogger.log("enforcer-tools", "release-step-2-git", "info", { step: "Committing and pushing..." });
|
|
266
|
+
try {
|
|
267
|
+
execSync(`git add -A && git commit -m "release: v${bumpType} - Changelog updated" && git push`, {
|
|
268
|
+
cwd: process.cwd(),
|
|
269
|
+
stdio: 'inherit'
|
|
270
|
+
});
|
|
271
|
+
steps.push("✅ Git commit + push");
|
|
272
|
+
}
|
|
273
|
+
catch (e) {
|
|
274
|
+
errors.push(`Git commit/push failed: ${e}`);
|
|
275
|
+
}
|
|
276
|
+
// Step 3: npm publish
|
|
277
|
+
await frameworkLogger.log("enforcer-tools", "release-step-3-npm", "info", { step: "Publishing to npm..." });
|
|
278
|
+
try {
|
|
279
|
+
execSync(`npm publish`, {
|
|
280
|
+
cwd: process.cwd(),
|
|
281
|
+
stdio: 'inherit'
|
|
282
|
+
});
|
|
283
|
+
steps.push("✅ npm published");
|
|
284
|
+
}
|
|
285
|
+
catch (e) {
|
|
286
|
+
errors.push(`npm publish failed: ${e}`);
|
|
287
|
+
}
|
|
288
|
+
// Step 4: Generate tweet context
|
|
289
|
+
await frameworkLogger.log("enforcer-tools", "release-step-4-tweet", "info", { step: "Generating tweet..." });
|
|
290
|
+
try {
|
|
291
|
+
execSync(`node scripts/node/release-tweet.mjs`, {
|
|
292
|
+
cwd: process.cwd(),
|
|
293
|
+
stdio: 'inherit'
|
|
294
|
+
});
|
|
295
|
+
steps.push("✅ Tweet context generated - ready for @growth-strategist");
|
|
296
|
+
}
|
|
297
|
+
catch (e) {
|
|
298
|
+
errors.push(`Tweet generation failed: ${e}`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
catch (e) {
|
|
302
|
+
errors.push(`Release workflow failed: ${e}`);
|
|
303
|
+
}
|
|
304
|
+
return {
|
|
305
|
+
operation: "release",
|
|
306
|
+
passed: errors.length === 0,
|
|
307
|
+
blocked: false,
|
|
308
|
+
errors,
|
|
309
|
+
warnings: [],
|
|
310
|
+
fixes: [],
|
|
311
|
+
report: {
|
|
312
|
+
passed: errors.length === 0,
|
|
313
|
+
operation: "release",
|
|
314
|
+
errors,
|
|
315
|
+
warnings: steps,
|
|
316
|
+
results: steps.map(s => ({ rule: 'release', passed: true, message: s })),
|
|
317
|
+
timestamp: new Date(),
|
|
318
|
+
},
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Delegate a task to another agent via AgentDelegator
|
|
323
|
+
* This is the key integration that ensures enforcer routes to best agent
|
|
324
|
+
*/
|
|
325
|
+
async function delegateToAgent(agentName, operation, context, jobId) {
|
|
326
|
+
try {
|
|
327
|
+
// Create a minimal state manager and config loader for the delegator
|
|
328
|
+
const stateManager = new StringRayStateManager();
|
|
329
|
+
// Create the delegator
|
|
330
|
+
const delegator = new AgentDelegator(stateManager, strRayConfigLoader);
|
|
331
|
+
// Build task description for the delegated agent
|
|
332
|
+
const taskDescription = buildTaskDescription(operation, context);
|
|
333
|
+
// Build the delegation request
|
|
334
|
+
const request = {
|
|
335
|
+
operation,
|
|
336
|
+
description: taskDescription,
|
|
337
|
+
context: {
|
|
338
|
+
...context,
|
|
339
|
+
originalJobId: jobId,
|
|
340
|
+
},
|
|
341
|
+
sessionId: stateManager.get("current_session_id") || `delegated-${jobId}`,
|
|
342
|
+
};
|
|
343
|
+
// Analyze and get delegation strategy
|
|
344
|
+
const analysis = await delegator.analyzeDelegation(request);
|
|
345
|
+
// Execute the delegation
|
|
346
|
+
const result = await delegator.executeDelegation(analysis, request);
|
|
347
|
+
await frameworkLogger.log("enforcer-tools", "delegation-complete", "info", {
|
|
348
|
+
jobId,
|
|
349
|
+
delegatedTo: agentName,
|
|
350
|
+
success: result.success,
|
|
351
|
+
agentsUsed: result.agents,
|
|
352
|
+
});
|
|
353
|
+
// Convert delegation result to EnforcementResult format
|
|
354
|
+
return {
|
|
355
|
+
operation,
|
|
356
|
+
passed: result.success,
|
|
357
|
+
blocked: !result.success,
|
|
358
|
+
errors: result.errors || [],
|
|
359
|
+
warnings: [],
|
|
360
|
+
fixes: [],
|
|
361
|
+
report: {
|
|
362
|
+
passed: result.success,
|
|
363
|
+
operation,
|
|
364
|
+
timestamp: new Date(),
|
|
365
|
+
errors: result.errors || [],
|
|
366
|
+
warnings: [],
|
|
367
|
+
results: [],
|
|
368
|
+
},
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
373
|
+
await frameworkLogger.log("enforcer-tools", "delegation-failed", "error", {
|
|
374
|
+
jobId,
|
|
375
|
+
delegatedTo: agentName,
|
|
376
|
+
error: errorMessage,
|
|
377
|
+
});
|
|
378
|
+
// Fall back to self-execution if delegation fails
|
|
379
|
+
return await ruleValidationSelf(operation, context, jobId);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Fallback: Execute validation ourselves if delegation fails
|
|
384
|
+
*/
|
|
385
|
+
async function ruleValidationSelf(operation, context, jobId) {
|
|
386
|
+
const report = await ruleEnforcer.validateOperation(operation, context);
|
|
387
|
+
return {
|
|
388
|
+
operation,
|
|
389
|
+
passed: report.passed,
|
|
390
|
+
blocked: report.errors.length > 0,
|
|
391
|
+
errors: report.errors,
|
|
392
|
+
warnings: report.warnings,
|
|
393
|
+
fixes: [],
|
|
394
|
+
report,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Run pre-commit validation with auto-fix enabled
|
|
399
|
+
* This is the integration point that automatically creates test files when needed
|
|
400
|
+
*/
|
|
401
|
+
async function runPreCommitValidationWithAutoFix(files, operation = "commit") {
|
|
402
|
+
try {
|
|
403
|
+
// Dynamically import to avoid circular dependencies
|
|
404
|
+
const { testAutoCreationProcessor } = await import("../processors/implementations/test-auto-creation-processor.js");
|
|
405
|
+
let fixesApplied = 0;
|
|
406
|
+
// Process each file
|
|
407
|
+
for (const filePath of files) {
|
|
408
|
+
// Only process TypeScript source files
|
|
409
|
+
if (filePath.endsWith(".ts") && !filePath.endsWith(".test.ts")) {
|
|
410
|
+
const result = await testAutoCreationProcessor.execute({
|
|
411
|
+
tool: "write",
|
|
412
|
+
args: { filePath },
|
|
413
|
+
directory: process.cwd(),
|
|
414
|
+
filePath,
|
|
415
|
+
operation,
|
|
416
|
+
});
|
|
417
|
+
if (result.success) {
|
|
418
|
+
fixesApplied++;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return { success: true, fixesApplied };
|
|
423
|
+
}
|
|
424
|
+
catch (error) {
|
|
425
|
+
return {
|
|
426
|
+
success: false,
|
|
427
|
+
fixesApplied: 0,
|
|
428
|
+
error: error instanceof Error ? error.message : String(error),
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Rule Validation Tool - Validates operations against rule hierarchy
|
|
434
|
+
* Now with intelligent task routing via TaskSkillRouter
|
|
435
|
+
* Automatically delegates to best agent when confidence is high
|
|
436
|
+
*/
|
|
437
|
+
export async function ruleValidation(operation, context) {
|
|
438
|
+
const jobId = `rule-validation-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
439
|
+
// PRE-PROCESS: Get intelligent routing recommendation
|
|
440
|
+
const { enhancedContext, routing } = await preProcessAndRoute(operation, context);
|
|
441
|
+
await frameworkLogger.log("enforcer-tools", "rule-validation-start", "info", {
|
|
442
|
+
jobId,
|
|
443
|
+
operation,
|
|
444
|
+
files: context.files?.length || 0,
|
|
445
|
+
hasExistingCode: !!context.existingCode,
|
|
446
|
+
// Add routing info to logs
|
|
447
|
+
routedTo: routing.suggestedAgent,
|
|
448
|
+
routingSkill: routing.suggestedSkill,
|
|
449
|
+
routingConfidence: routing.confidence,
|
|
450
|
+
});
|
|
451
|
+
// DELEGATION LOGIC: If high confidence and recommended agent is not self-handled, delegate!
|
|
452
|
+
const shouldDelegate = routing.confidence >= DELEGATION_CONFIDENCE_THRESHOLD &&
|
|
453
|
+
!ENFORCER_HANDLES.has(routing.suggestedAgent) &&
|
|
454
|
+
routing.suggestedAgent !== "code-reviewer";
|
|
455
|
+
// SPECIAL CASE: Release workflow - execute full release process
|
|
456
|
+
if (routing.matchedKeyword === "release-workflow") {
|
|
457
|
+
await frameworkLogger.log("enforcer-tools", "release-workflow-triggered", "info", {
|
|
458
|
+
jobId,
|
|
459
|
+
operation,
|
|
460
|
+
bumpType: routing.context?.bumpType || 'patch',
|
|
461
|
+
createTag: routing.context?.createTag || false,
|
|
462
|
+
});
|
|
463
|
+
// Execute the release workflow
|
|
464
|
+
return await executeReleaseWorkflow(operation, context, jobId, routing);
|
|
465
|
+
}
|
|
466
|
+
if (shouldDelegate) {
|
|
467
|
+
await frameworkLogger.log("enforcer-tools", "delegating-to-agent", "info", {
|
|
468
|
+
jobId,
|
|
469
|
+
operation,
|
|
470
|
+
delegatedTo: routing.suggestedAgent,
|
|
471
|
+
confidence: routing.confidence,
|
|
472
|
+
reason: `High confidence (${routing.confidence}) routing to specialized agent`,
|
|
473
|
+
});
|
|
474
|
+
// Delegate to the recommended agent instead of doing work itself
|
|
475
|
+
return await delegateToAgent(routing.suggestedAgent, operation, context, jobId);
|
|
476
|
+
}
|
|
477
|
+
// Use enhanced context with routing for validation
|
|
478
|
+
const report = await ruleEnforcer.validateOperation(operation, enhancedContext);
|
|
479
|
+
const result = {
|
|
480
|
+
operation,
|
|
481
|
+
passed: report.passed,
|
|
482
|
+
blocked: report.errors.length > 0,
|
|
483
|
+
errors: report.errors,
|
|
484
|
+
warnings: report.warnings,
|
|
485
|
+
fixes: [],
|
|
486
|
+
report,
|
|
487
|
+
};
|
|
488
|
+
// Generate fixes for common issues
|
|
489
|
+
if (!report.passed) {
|
|
490
|
+
result.fixes = generateFixes(report, context);
|
|
491
|
+
}
|
|
492
|
+
// AUTO-FIX: Run pre-commit validation with auto-fix for missing tests
|
|
493
|
+
// This integrates the auto-fix path into the standard validation flow
|
|
494
|
+
if (!report.passed && context.files && context.files.length > 0) {
|
|
495
|
+
const autoFixResult = await runPreCommitValidationWithAutoFix(context.files, operation);
|
|
496
|
+
if (autoFixResult.success && autoFixResult.fixesApplied > 0) {
|
|
497
|
+
await frameworkLogger.log("enforcer-tools", "auto-fix-applied", "info", {
|
|
498
|
+
jobId,
|
|
499
|
+
fixesApplied: autoFixResult.fixesApplied,
|
|
500
|
+
files: context.files,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
// INTEGRATION POINT: Check for reporting rules and trigger report generation
|
|
505
|
+
// This integrates reporting triggers into the existing rule validation pipeline
|
|
506
|
+
if (!report.passed) {
|
|
507
|
+
// Trigger report generation for rule violations
|
|
508
|
+
await frameworkLogger.log("enforcer-tools", "reporting-triggered", "info", {
|
|
509
|
+
jobId,
|
|
510
|
+
operation,
|
|
511
|
+
hasViolations: report.errors.length > 0,
|
|
512
|
+
hasWarnings: report.warnings.length > 0,
|
|
513
|
+
context: {
|
|
514
|
+
files: context.files?.length,
|
|
515
|
+
operation,
|
|
516
|
+
timestamp: new Date().toISOString(),
|
|
517
|
+
},
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
await frameworkLogger.log("enforcer-tools", "rule-validation-complete", result.passed ? "success" : "error", {
|
|
521
|
+
jobId,
|
|
522
|
+
operation,
|
|
523
|
+
passed: result.passed,
|
|
524
|
+
blocked: result.blocked,
|
|
525
|
+
errorCount: result.errors.length,
|
|
526
|
+
warningCount: result.warnings.length,
|
|
527
|
+
fixCount: result.fixes.length,
|
|
528
|
+
});
|
|
529
|
+
return result;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Context Analysis Validation Tool - Validates contextual analysis integration
|
|
533
|
+
*/
|
|
534
|
+
export async function contextAnalysisValidation(files, operation) {
|
|
535
|
+
const jobId = `context-validation-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
536
|
+
await frameworkLogger.log("enforcer-tools", "context-validation-start", "info", {
|
|
537
|
+
jobId,
|
|
538
|
+
operation,
|
|
539
|
+
fileCount: files.length,
|
|
540
|
+
});
|
|
541
|
+
// Check if files exist and are readable
|
|
542
|
+
const existingFiles = new Map();
|
|
543
|
+
const missingFiles = [];
|
|
544
|
+
for (const file of files) {
|
|
545
|
+
try {
|
|
546
|
+
const content = fs.readFileSync(file, "utf8");
|
|
547
|
+
existingFiles.set(file, content);
|
|
548
|
+
}
|
|
549
|
+
catch (error) {
|
|
550
|
+
missingFiles.push(file);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
const context = {
|
|
554
|
+
operation,
|
|
555
|
+
files,
|
|
556
|
+
existingCode: existingFiles,
|
|
557
|
+
};
|
|
558
|
+
// Run comprehensive validation
|
|
559
|
+
const validationResult = await ruleValidation(operation, context);
|
|
560
|
+
// Additional context-specific checks
|
|
561
|
+
const contextIssues = await validateContextIntegration(files, existingFiles);
|
|
562
|
+
const result = {
|
|
563
|
+
...validationResult,
|
|
564
|
+
errors: [...validationResult.errors, ...contextIssues.errors],
|
|
565
|
+
warnings: [...validationResult.warnings, ...contextIssues.warnings],
|
|
566
|
+
blocked: validationResult.blocked,
|
|
567
|
+
};
|
|
568
|
+
await frameworkLogger.log("enforcer-tools", "context-validation-complete", result.passed ? "success" : "error", {
|
|
569
|
+
jobId,
|
|
570
|
+
operation,
|
|
571
|
+
fileCount: files.length,
|
|
572
|
+
contextErrors: contextIssues.errors.length,
|
|
573
|
+
contextWarnings: contextIssues.warnings.length,
|
|
574
|
+
});
|
|
575
|
+
return result;
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Codex Enforcement Tool - Comprehensive codex compliance validation
|
|
579
|
+
*/
|
|
580
|
+
export async function codexEnforcement(operation, files, newCode) {
|
|
581
|
+
const jobId = `codex-enforcement-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
582
|
+
await frameworkLogger.log("enforcer-tools", "codex-enforcement-start", "info", {
|
|
583
|
+
jobId,
|
|
584
|
+
operation,
|
|
585
|
+
fileCount: files.length,
|
|
586
|
+
hasNewCode: !!newCode,
|
|
587
|
+
});
|
|
588
|
+
// Load existing code for comparison
|
|
589
|
+
const existingCode = new Map();
|
|
590
|
+
for (const file of files) {
|
|
591
|
+
try {
|
|
592
|
+
const content = fs.readFileSync(file, "utf8");
|
|
593
|
+
existingCode.set(file, content);
|
|
594
|
+
}
|
|
595
|
+
catch (error) {
|
|
596
|
+
// File doesn't exist yet (new file)
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
const context = {
|
|
600
|
+
operation,
|
|
601
|
+
files,
|
|
602
|
+
existingCode,
|
|
603
|
+
...(newCode && { newCode }),
|
|
604
|
+
dependencies: extractDependencies(newCode || "", files),
|
|
605
|
+
};
|
|
606
|
+
const validationResult = await ruleValidation(operation, context);
|
|
607
|
+
// Generate codex compliance report
|
|
608
|
+
const codexReport = await generateCodexComplianceReport(files, newCode);
|
|
609
|
+
const combinedErrors = [...validationResult.errors, ...codexReport.violations];
|
|
610
|
+
const combinedWarnings = [...validationResult.warnings, ...codexReport.warnings];
|
|
611
|
+
const result = {
|
|
612
|
+
...validationResult,
|
|
613
|
+
errors: combinedErrors,
|
|
614
|
+
warnings: combinedWarnings,
|
|
615
|
+
blocked: combinedErrors.length > 0,
|
|
616
|
+
};
|
|
617
|
+
await frameworkLogger.log("enforcer-tools", "codex-enforcement-complete", result.passed ? "success" : "error", {
|
|
618
|
+
jobId,
|
|
619
|
+
operation,
|
|
620
|
+
codexViolations: codexReport.violations.length,
|
|
621
|
+
codexWarnings: codexReport.warnings.length,
|
|
622
|
+
complianceScore: codexReport.complianceScore,
|
|
623
|
+
});
|
|
624
|
+
return result;
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Quality Gate Check Tool - Final validation before commit/execution
|
|
628
|
+
*/
|
|
629
|
+
export async function qualityGateCheck(operation, context) {
|
|
630
|
+
const jobId = `quality-gate-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
631
|
+
await frameworkLogger.log("enforcer-tools", "quality-gate-start", "info", {
|
|
632
|
+
jobId,
|
|
633
|
+
operation,
|
|
634
|
+
files: context.files.length,
|
|
635
|
+
hasTests: !!(context.tests && context.tests.length > 0),
|
|
636
|
+
});
|
|
637
|
+
// Run all validations
|
|
638
|
+
const validations = await Promise.all([
|
|
639
|
+
ruleValidation(operation, {
|
|
640
|
+
operation,
|
|
641
|
+
files: context.files,
|
|
642
|
+
...(context.newCode && { newCode: context.newCode }),
|
|
643
|
+
...(context.tests && { tests: context.tests }),
|
|
644
|
+
...(context.dependencies && { dependencies: context.dependencies }),
|
|
645
|
+
}),
|
|
646
|
+
contextAnalysisValidation(context.files, operation),
|
|
647
|
+
codexEnforcement(operation, context.files, context.newCode),
|
|
648
|
+
]);
|
|
649
|
+
// Combine results
|
|
650
|
+
const combinedErrors = validations.flatMap((v) => v.errors);
|
|
651
|
+
const combinedWarnings = validations.flatMap((v) => v.warnings);
|
|
652
|
+
const combinedFixes = validations.flatMap((v) => v.fixes);
|
|
653
|
+
const passed = combinedErrors.length === 0;
|
|
654
|
+
const blocked = !passed; // Quality gates block on any error
|
|
655
|
+
const result = {
|
|
656
|
+
operation,
|
|
657
|
+
passed,
|
|
658
|
+
blocked,
|
|
659
|
+
errors: combinedErrors,
|
|
660
|
+
warnings: combinedWarnings,
|
|
661
|
+
fixes: combinedFixes,
|
|
662
|
+
report: validations[0].report, // Use first report as primary
|
|
663
|
+
};
|
|
664
|
+
// Execute automatic fixes if operation would pass after fixes
|
|
665
|
+
if (blocked && combinedFixes.some((f) => f.type === "auto")) {
|
|
666
|
+
await executeAutomaticFixes(combinedFixes.filter((f) => f.type === "auto"));
|
|
667
|
+
result.blocked = false; // Allow after auto-fixes
|
|
668
|
+
}
|
|
669
|
+
await frameworkLogger.log("enforcer-tools", "quality-gate-complete", passed ? "success" : "error", {
|
|
670
|
+
jobId,
|
|
671
|
+
operation,
|
|
672
|
+
passed,
|
|
673
|
+
blocked: result.blocked,
|
|
674
|
+
totalErrors: combinedErrors.length,
|
|
675
|
+
totalWarnings: combinedWarnings.length,
|
|
676
|
+
autoFixes: combinedFixes.filter((f) => f.type === "auto").length,
|
|
677
|
+
});
|
|
678
|
+
return result;
|
|
679
|
+
}
|
|
680
|
+
// Helper functions
|
|
681
|
+
function generateFixes(report, context) {
|
|
682
|
+
const fixes = [];
|
|
683
|
+
for (const result of report.results) {
|
|
684
|
+
if (result.fixes) {
|
|
685
|
+
for (const fix of result.fixes) {
|
|
686
|
+
if (fix.type === "create-file") {
|
|
687
|
+
fixes.push({
|
|
688
|
+
type: "auto",
|
|
689
|
+
description: fix.description,
|
|
690
|
+
action: async () => {
|
|
691
|
+
if (fix.filePath && fix.content) {
|
|
692
|
+
const dir = path.dirname(fix.filePath);
|
|
693
|
+
if (!fs.existsSync(dir)) {
|
|
694
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
695
|
+
}
|
|
696
|
+
fs.writeFileSync(fix.filePath, fix.content);
|
|
697
|
+
}
|
|
698
|
+
},
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
else {
|
|
702
|
+
fixes.push({
|
|
703
|
+
type: "manual",
|
|
704
|
+
description: fix.description,
|
|
705
|
+
});
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
return fixes;
|
|
711
|
+
}
|
|
712
|
+
async function validateContextIntegration(files, existingCode) {
|
|
713
|
+
const errors = [];
|
|
714
|
+
const warnings = [];
|
|
715
|
+
for (const [filePath, content] of existingCode) {
|
|
716
|
+
// Check for proper context provider usage
|
|
717
|
+
if (content.includes("CodebaseContextAnalyzer") &&
|
|
718
|
+
!content.includes("memoryConfig")) {
|
|
719
|
+
warnings.push(`${filePath}: CodebaseContextAnalyzer should use memory configuration`);
|
|
720
|
+
}
|
|
721
|
+
if (content.includes("ASTCodeParser") &&
|
|
722
|
+
!content.includes("try") &&
|
|
723
|
+
!content.includes("catch")) {
|
|
724
|
+
errors.push(`${filePath}: ASTCodeParser initialization should handle missing ast-grep gracefully`);
|
|
725
|
+
}
|
|
726
|
+
if (content.includes("DependencyGraphBuilder") &&
|
|
727
|
+
!content.includes("contextAnalyzer")) {
|
|
728
|
+
errors.push(`${filePath}: DependencyGraphBuilder requires context analyzer parameter`);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
return { errors, warnings };
|
|
732
|
+
}
|
|
733
|
+
async function generateCodexComplianceReport(files, newCode) {
|
|
734
|
+
const violations = [];
|
|
735
|
+
const warnings = [];
|
|
736
|
+
// Basic codex checks (simplified - would integrate with full codex validation)
|
|
737
|
+
if (newCode) {
|
|
738
|
+
if (newCode.includes("any") || newCode.includes("@ts-ignore")) {
|
|
739
|
+
violations.push('Codex violation: Type safety first - no "any" types or ts-ignore allowed');
|
|
740
|
+
}
|
|
741
|
+
// Check for actual console.log() calls - only flag if NOT in a comment
|
|
742
|
+
const consoleLogCallMatches = newCode.match(/console\.log\(/g);
|
|
743
|
+
if (consoleLogCallMatches && consoleLogCallMatches.length > 0) {
|
|
744
|
+
const lines = newCode.split('\n');
|
|
745
|
+
let hasConsoleLogInCode = false;
|
|
746
|
+
for (const line of lines) {
|
|
747
|
+
const trimmed = line.trim();
|
|
748
|
+
if (trimmed.includes('console.log(')) {
|
|
749
|
+
const beforeConsole = trimmed.substring(0, trimmed.indexOf('console.log('));
|
|
750
|
+
if (!beforeConsole.includes('//') && !beforeConsole.includes('/*')) {
|
|
751
|
+
hasConsoleLogInCode = true;
|
|
752
|
+
break;
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
if (hasConsoleLogInCode) {
|
|
757
|
+
violations.push('Codex violation: console.log() statements detected in production code - use frameworkLogger instead');
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
if (!newCode.includes("try") &&
|
|
761
|
+
(newCode.includes("await") || newCode.includes("Promise"))) {
|
|
762
|
+
warnings.push("Codex warning: Async operations should have error handling");
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
const complianceScore = violations.length === 0
|
|
766
|
+
? 100
|
|
767
|
+
: Math.max(0, 100 - violations.length * 20 - warnings.length * 5);
|
|
768
|
+
return { violations, warnings, complianceScore };
|
|
769
|
+
}
|
|
770
|
+
function extractDependencies(code, files) {
|
|
771
|
+
const dependencies = [];
|
|
772
|
+
// Simple regex-based dependency extraction (would be enhanced with proper AST parsing)
|
|
773
|
+
const importRegex = /import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;
|
|
774
|
+
let match;
|
|
775
|
+
while ((match = importRegex.exec(code)) !== null) {
|
|
776
|
+
const dep = match[1];
|
|
777
|
+
if (dep && !dep.startsWith(".") && !dep.startsWith("/")) {
|
|
778
|
+
dependencies.push(dep);
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
return dependencies;
|
|
782
|
+
}
|
|
783
|
+
async function executeAutomaticFixes(fixes) {
|
|
784
|
+
for (const fix of fixes) {
|
|
785
|
+
if (fix.action) {
|
|
786
|
+
try {
|
|
787
|
+
await fix.action();
|
|
788
|
+
await frameworkLogger.log("enforcer-tools", "auto-fix-executed", "success", {
|
|
789
|
+
description: fix.description,
|
|
790
|
+
});
|
|
791
|
+
}
|
|
792
|
+
catch (error) {
|
|
793
|
+
await frameworkLogger.log("enforcer-tools", "auto-fix-failed", "error", {
|
|
794
|
+
description: fix.description,
|
|
795
|
+
error: error instanceof Error ? error.message : String(error),
|
|
796
|
+
});
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
// Additional utility functions for enforcer operations
|
|
802
|
+
/**
|
|
803
|
+
* Get comprehensive enforcement status
|
|
804
|
+
*/
|
|
805
|
+
export async function getEnforcementStatus() {
|
|
806
|
+
try {
|
|
807
|
+
const stats = ruleEnforcer.getRuleStats();
|
|
808
|
+
return {
|
|
809
|
+
rules: stats.totalRules,
|
|
810
|
+
validations: 0, // Would be tracked in real implementation
|
|
811
|
+
violations: 0, // Would be tracked in real implementation
|
|
812
|
+
fixes: 0, // Would be tracked in real implementation
|
|
813
|
+
success: true,
|
|
814
|
+
};
|
|
815
|
+
}
|
|
816
|
+
catch (error) {
|
|
817
|
+
await frameworkLogger.log("enforcer-tools", "status-check-failed", "error", {
|
|
818
|
+
error: error instanceof Error ? error.message : String(error),
|
|
819
|
+
});
|
|
820
|
+
return {
|
|
821
|
+
rules: 0,
|
|
822
|
+
validations: 0,
|
|
823
|
+
violations: 0,
|
|
824
|
+
fixes: 0,
|
|
825
|
+
success: false,
|
|
826
|
+
};
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
/**
|
|
830
|
+
* Run comprehensive pre-commit validation
|
|
831
|
+
*/
|
|
832
|
+
export async function runPreCommitValidation(files, operation = "commit") {
|
|
833
|
+
const jobId = `pre-commit-validation-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
|
|
834
|
+
await frameworkLogger.log("enforcer-tools", "pre-commit-validation-start", "info", {
|
|
835
|
+
jobId,
|
|
836
|
+
files: files.length,
|
|
837
|
+
operation,
|
|
838
|
+
});
|
|
839
|
+
try {
|
|
840
|
+
// Run all validation types
|
|
841
|
+
const validations = await Promise.allSettled([
|
|
842
|
+
ruleValidation(operation, { operation, files }),
|
|
843
|
+
contextAnalysisValidation(files, operation),
|
|
844
|
+
codexEnforcement(operation, files),
|
|
845
|
+
]);
|
|
846
|
+
// Aggregate results
|
|
847
|
+
const errors = [];
|
|
848
|
+
const warnings = [];
|
|
849
|
+
const fixes = [];
|
|
850
|
+
for (const result of validations) {
|
|
851
|
+
if (result.status === "fulfilled") {
|
|
852
|
+
errors.push(...result.value.errors);
|
|
853
|
+
warnings.push(...result.value.warnings);
|
|
854
|
+
fixes.push(...result.value.fixes);
|
|
855
|
+
}
|
|
856
|
+
else {
|
|
857
|
+
errors.push(`Validation failed: ${result.reason}`);
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
const finalResult = {
|
|
861
|
+
operation,
|
|
862
|
+
passed: errors.length === 0,
|
|
863
|
+
blocked: errors.length > 0,
|
|
864
|
+
errors,
|
|
865
|
+
warnings,
|
|
866
|
+
fixes,
|
|
867
|
+
report: validations[0]?.status === "fulfilled"
|
|
868
|
+
? validations[0].value.report
|
|
869
|
+
: {},
|
|
870
|
+
};
|
|
871
|
+
await frameworkLogger.log("enforcer-tools", "pre-commit-validation-complete", finalResult.passed ? "success" : "error", {
|
|
872
|
+
jobId,
|
|
873
|
+
operation,
|
|
874
|
+
passed: finalResult.passed,
|
|
875
|
+
blocked: finalResult.blocked,
|
|
876
|
+
errors: errors.length,
|
|
877
|
+
warnings: warnings.length,
|
|
878
|
+
fixes: fixes.length,
|
|
879
|
+
});
|
|
880
|
+
return finalResult;
|
|
881
|
+
}
|
|
882
|
+
catch (error) {
|
|
883
|
+
await frameworkLogger.log("enforcer-tools", "pre-commit-validation-failed", "error", {
|
|
884
|
+
jobId,
|
|
885
|
+
operation,
|
|
886
|
+
error: error instanceof Error ? error.message : String(error),
|
|
887
|
+
});
|
|
888
|
+
return {
|
|
889
|
+
operation,
|
|
890
|
+
passed: false,
|
|
891
|
+
blocked: true,
|
|
892
|
+
errors: [
|
|
893
|
+
`Pre-commit validation failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
894
|
+
],
|
|
895
|
+
warnings: [],
|
|
896
|
+
fixes: [],
|
|
897
|
+
report: {},
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
// Export tools for MCP integration
|
|
902
|
+
export const enforcerTools = {
|
|
903
|
+
ruleValidation,
|
|
904
|
+
contextAnalysisValidation,
|
|
905
|
+
codexEnforcement,
|
|
906
|
+
qualityGateCheck,
|
|
907
|
+
getEnforcementStatus,
|
|
908
|
+
runPreCommitValidation,
|
|
909
|
+
};
|