0xray 2.0.0 → 2.1.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/codex.codex +2 -2
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/init.sh +22 -19
- package/AGENTS.md +6 -6
- package/README.md +276 -76
- package/dist/AGENTS.md +6 -6
- package/dist/CHANGELOG.md +91 -10
- package/dist/README.md +276 -76
- package/dist/agents/architect.d.ts +2 -0
- package/dist/agents/backend-engineer.d.ts +8 -0
- package/dist/agents/bug-triage-specialist.d.ts +2 -0
- package/dist/agents/code-analyzer.d.ts +7 -0
- package/dist/agents/code-reviewer.d.ts +2 -0
- package/dist/agents/code-reviewer.js +1 -1
- package/dist/agents/content-creator.d.ts +9 -0
- package/dist/agents/database-engineer.d.ts +8 -0
- package/dist/agents/devops-engineer.d.ts +8 -0
- package/dist/agents/frontend-engineer.d.ts +8 -0
- package/dist/agents/frontend-ui-ux-engineer.d.ts +8 -0
- package/dist/agents/growth-strategist.d.ts +8 -0
- package/dist/agents/index.d.ts +24 -0
- package/dist/agents/librarian-agents-updater.d.ts +30 -0
- package/dist/agents/log-monitor.d.ts +2 -0
- package/dist/agents/mobile-developer.d.ts +9 -0
- package/dist/agents/multimodal-looker.d.ts +9 -0
- package/dist/agents/performance-engineer.d.ts +8 -0
- package/dist/agents/refactorer.d.ts +2 -0
- package/dist/agents/registry.d.ts +35 -0
- package/dist/agents/researcher.d.ts +2 -0
- package/dist/agents/security-auditor.d.ts +2 -0
- package/dist/agents/seo-consultant.d.ts +8 -0
- package/dist/agents/strategist.d.ts +7 -0
- package/dist/agents/tech-writer.d.ts +8 -0
- package/dist/agents/testing-lead.d.ts +2 -0
- package/dist/agents/types.d.ts +45 -0
- package/dist/analytics/consent-manager.d.ts +93 -0
- package/dist/analytics/emerging-pattern-detector.d.ts +67 -0
- package/dist/analytics/pattern-learning-engine.d.ts +80 -0
- package/dist/analytics/pattern-performance-tracker.d.ts +97 -0
- package/dist/analytics/predictive-analytics.d.ts +41 -0
- package/dist/analytics/prompt-pattern-analyzer.d.ts +99 -0
- package/dist/analytics/routing-performance-analyzer.d.ts +101 -0
- package/dist/analytics/routing-refiner.d.ts +104 -0
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/analytics/simple-pattern-analyzer.d.ts +80 -0
- package/dist/architect/architect-tools.d.ts +70 -0
- package/dist/architect/architectural-integrity.d.ts +20 -0
- package/dist/benchmark/performance-benchmark.d.ts +103 -0
- package/dist/benchmark/performance-benchmark.js +3 -3
- package/dist/cli/commands/analytics-disable.d.ts +9 -0
- package/dist/cli/commands/analytics-enable-action.d.ts +8 -0
- package/dist/cli/commands/analytics-preview.d.ts +9 -0
- package/dist/cli/commands/analytics-status.d.ts +9 -0
- package/dist/cli/commands/antigravity-status.d.ts +9 -0
- package/dist/cli/commands/archive-logs.d.ts +24 -0
- package/dist/cli/commands/credible-init.d.ts +11 -0
- package/dist/cli/commands/grok-install.d.ts +7 -0
- package/dist/cli/commands/hermes-install.d.ts +2 -0
- package/dist/cli/commands/hermes-install.js +4 -4
- package/dist/cli/commands/mcp-install.d.ts +4 -0
- package/dist/cli/commands/mcp-install.js +1 -1
- package/dist/cli/commands/openclaw-install.d.ts +2 -0
- package/dist/cli/commands/openclaw-install.js +1 -1
- package/dist/cli/commands/opencode-install.d.ts +2 -0
- package/dist/cli/commands/plugin-commands.d.ts +19 -0
- package/dist/cli/commands/plugin-commands.js +2 -2
- package/dist/cli/commands/publish-agent.d.ts +15 -0
- package/dist/cli/commands/publish-agent.js +5 -5
- package/dist/cli/commands/security-audit.d.ts +23 -0
- package/dist/cli/commands/skill-install.d.ts +5 -0
- package/dist/cli/commands/skill-install.js +1 -1
- package/dist/cli/commands/status.d.ts +41 -0
- package/dist/cli/commands/status.js +3 -3
- package/dist/cli/commands/storyteller.d.ts +19 -0
- package/dist/cli/commands/storyteller.js +2 -2
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +8 -8
- package/dist/cli/server.d.ts +1 -0
- package/dist/cli/server.js +1 -1
- package/dist/config/default-agents.d.ts +12 -0
- package/dist/core/activity-logger.d.ts +72 -0
- package/dist/core/adaptive-kernel.d.ts +109 -0
- package/dist/core/agent-spawn-gate.d.ts +56 -0
- package/dist/core/agent-spawn-gate.js +1 -1
- package/dist/core/boot-orchestrator.d.ts +99 -0
- package/dist/core/boot-orchestrator.js +28 -28
- package/dist/core/bridge.mjs +22 -22
- package/dist/core/codex-formatter.d.ts +96 -0
- package/dist/core/codex-formatter.js +2 -2
- package/dist/core/codex-injector.d.ts +75 -0
- package/dist/core/codex-injector.js +11 -10
- package/dist/core/config-loader.d.ts +71 -0
- package/dist/core/config-loader.js +4 -2
- package/dist/core/config-paths.d.ts +62 -0
- package/dist/core/config-paths.js +24 -23
- package/dist/core/context-loader.d.ts +122 -0
- package/dist/core/context-loader.js +7 -5
- package/dist/core/context-validator.d.ts +53 -0
- package/dist/core/features-config.d.ts +462 -0
- package/dist/core/features-config.js +1 -1
- package/dist/core/framework-logger.d.ts +76 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +1 -1
- package/dist/core/kernel-patterns.d.ts +130 -0
- package/dist/core/logging-config.d.ts +10 -0
- package/dist/core/model-router.d.ts +61 -0
- package/dist/core/orchestrator.d.ts +72 -0
- package/dist/core/orchestrator.js +3 -2
- package/dist/core/system-prompt-generator.d.ts +35 -0
- package/dist/core/system-prompt-generator.js +2 -2
- package/dist/core/trace-context.d.ts +12 -0
- package/dist/core/xray-activation.d.ts +14 -0
- package/dist/core/xray-activation.js +29 -24
- package/dist/delegation/agent-delegator.d.ts +186 -0
- package/dist/delegation/agent-delegator.js +3 -3
- package/dist/delegation/agent-expertise.d.ts +16 -0
- package/dist/delegation/analytics/index.d.ts +12 -0
- package/dist/delegation/analytics/learning-engine.d.ts +85 -0
- package/dist/delegation/analytics/outcome-tracker.d.ts +118 -0
- package/dist/delegation/analytics/routing-analytics.d.ts +61 -0
- package/dist/delegation/ast-code-parser.d.ts +174 -0
- package/dist/delegation/codebase-context-analyzer.d.ts +164 -0
- package/dist/delegation/complexity-analyzer.d.ts +111 -0
- package/dist/delegation/complexity-core.d.ts +119 -0
- package/dist/delegation/config/types.d.ts +247 -0
- package/dist/delegation/dependency-graph-builder.d.ts +95 -0
- package/dist/delegation/index.d.ts +25 -0
- package/dist/delegation/metrics-aggregator.d.ts +92 -0
- package/dist/delegation/session-coordinator.d.ts +133 -0
- package/dist/delegation/strategy-selector.d.ts +28 -0
- package/dist/delegation/voting-coordinator.d.ts +49 -0
- package/dist/delegation/voting-types.d.ts +155 -0
- package/dist/delegation/weighted-voting-aggregator.d.ts +37 -0
- package/dist/enforcement/core/index.d.ts +15 -0
- package/dist/enforcement/core/rule-executor.d.ts +158 -0
- package/dist/enforcement/core/rule-hierarchy.d.ts +146 -0
- package/dist/enforcement/core/rule-registry.d.ts +197 -0
- package/dist/enforcement/core/violation-fixer.d.ts +106 -0
- package/dist/enforcement/enforcer-tools.d.ts +78 -0
- package/dist/enforcement/enforcer-tools.js +2 -2
- package/dist/enforcement/index.d.ts +23 -0
- package/dist/enforcement/loaders/agent-triage-loader.d.ts +99 -0
- package/dist/enforcement/loaders/agents-md-validation-loader.d.ts +76 -0
- package/dist/enforcement/loaders/base-loader.d.ts +83 -0
- package/dist/enforcement/loaders/codex-loader.d.ts +77 -0
- package/dist/enforcement/loaders/codex-loader.js +2 -2
- package/dist/enforcement/loaders/index.d.ts +37 -0
- package/dist/enforcement/loaders/loader-orchestrator.d.ts +97 -0
- package/dist/enforcement/loaders/processor-loader.d.ts +60 -0
- package/dist/enforcement/rule-enforcer.d.ts +142 -0
- package/dist/enforcement/test-auto-healing.d.ts +83 -0
- package/dist/enforcement/types.d.ts +501 -0
- package/dist/enforcement/validators/architecture-validators.d.ts +155 -0
- package/dist/enforcement/validators/base-validator.d.ts +88 -0
- package/dist/enforcement/validators/code-quality-validators.d.ts +89 -0
- package/dist/enforcement/validators/index.d.ts +15 -0
- package/dist/enforcement/validators/security-validators.d.ts +53 -0
- package/dist/enforcement/validators/testing-validators.d.ts +81 -0
- package/dist/enforcement/validators/validator-registry.d.ts +92 -0
- package/dist/execution/opencode-cli-invoker.d.ts +8 -0
- package/dist/execution/proposal-applier.d.ts +24 -0
- package/dist/governance/codex-policy.service.d.ts +57 -0
- package/dist/governance/governance-core.d.ts +46 -0
- package/dist/governance/governance-service.d.ts +38 -0
- package/dist/governance/governance-types.d.ts +83 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +6 -6
- package/dist/inference/deploy-verifier.d.ts +26 -0
- package/dist/inference/deploy-verifier.js +1 -1
- package/dist/inference/index.d.ts +10 -0
- package/dist/inference/inference-accumulator.d.ts +29 -0
- package/dist/inference/inference-cycle.d.ts +110 -0
- package/dist/inference/inference-cycle.js +7 -7
- package/dist/inference/semantic-patterns.d.ts +7 -0
- package/dist/inference/session-capture.d.ts +32 -0
- package/dist/integrations/base/ExampleIntegration.d.ts +47 -0
- package/dist/integrations/base/Integration.d.ts +267 -0
- package/dist/integrations/base/README.md +2 -2
- package/dist/integrations/base/index.d.ts +12 -0
- package/dist/integrations/base/registry.d.ts +273 -0
- package/dist/integrations/base/types.d.ts +168 -0
- package/dist/integrations/governance/governance-client.d.ts +76 -0
- package/dist/integrations/governance/index.d.ts +99 -0
- package/dist/integrations/governance/index.js +1 -1
- package/dist/integrations/governance/types.d.ts +239 -0
- package/dist/integrations/grok/grok-cli.d.ts +25 -0
- package/dist/integrations/grok/grok-cli.js +6 -6
- package/dist/integrations/grok/hooks/pre-tool-use.js +1 -1
- package/dist/integrations/grok/plugin/0xray/.mcp.json +3 -3
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/dist/integrations/hermes-agent/__init__.py +78 -72
- package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/after-install.md +14 -14
- package/dist/integrations/hermes-agent/bridge.mjs +14 -14
- package/dist/integrations/hermes-agent/logs/framework/routing-outcomes.json +1 -0
- package/dist/integrations/hermes-agent/plugin.yaml +5 -5
- package/dist/integrations/hermes-agent/schemas.py +12 -12
- package/dist/integrations/hermes-agent/test_plugin.py +128 -125
- package/dist/integrations/hermes-agent/tools.py +85 -23
- package/dist/integrations/openclaw/README.md +16 -16
- package/dist/integrations/openclaw/api-server.d.ts +87 -0
- package/dist/integrations/openclaw/api-server.js +9 -9
- package/dist/integrations/openclaw/client.d.ts +122 -0
- package/dist/integrations/openclaw/config.d.ts +96 -0
- package/dist/integrations/openclaw/config.js +1 -1
- package/dist/integrations/openclaw/hooks/xray-hooks.d.ts +124 -0
- package/dist/integrations/openclaw/index.d.ts +101 -0
- package/dist/integrations/openclaw/index.js +4 -4
- package/dist/integrations/openclaw/types.d.ts +426 -0
- package/dist/integrations/plugins/index.d.ts +10 -0
- package/dist/integrations/plugins/plugin-integration.d.ts +289 -0
- package/dist/integrations/plugins/plugin-registry.d.ts +224 -0
- package/dist/integrations/plugins/plugin-registry.js +2 -2
- package/dist/mcps/agent-resolver.d.ts +46 -0
- package/dist/mcps/architect-tools.server.d.ts +17 -0
- package/dist/mcps/architect-tools.server.js +4 -4
- package/dist/mcps/auto-format.server.d.ts +19 -0
- package/dist/mcps/auto-format.server.js +4 -4
- package/dist/mcps/boot-orchestrator.server.d.ts +49 -0
- package/dist/mcps/boot-orchestrator.server.js +4 -4
- package/dist/mcps/config/config-loader.d.ts +52 -0
- package/dist/mcps/config/config-validator.d.ts +40 -0
- package/dist/mcps/config/index.d.ts +31 -0
- package/dist/mcps/config/plugin-server-registry.d.ts +127 -0
- package/dist/mcps/config/server-config-registry.d.ts +51 -0
- package/dist/mcps/config/server-config-registry.js +7 -7
- package/dist/mcps/connection/connection-manager.d.ts +39 -0
- package/dist/mcps/connection/connection-pool.d.ts +64 -0
- package/dist/mcps/connection/mcp-connection.d.ts +66 -0
- package/dist/mcps/connection/mcp-connection.js +1 -1
- package/dist/mcps/connection/process-spawner.d.ts +24 -0
- package/dist/mcps/enforcer-tools.server.d.ts +27 -0
- package/dist/mcps/enforcer-tools.server.js +4 -4
- package/dist/mcps/estimation.server.d.ts +21 -0
- package/dist/mcps/estimation.server.js +1 -1
- package/dist/mcps/framework-compliance-audit.server.d.ts +22 -0
- package/dist/mcps/framework-compliance-audit.server.js +4 -4
- package/dist/mcps/framework-help.server.d.ts +14 -0
- package/dist/mcps/framework-help.server.js +7 -7
- package/dist/mcps/governance.server.d.ts +33 -0
- package/dist/mcps/in-process-skill-registry.d.ts +20 -0
- package/dist/mcps/in-process-skill-registry.js +6 -6
- package/dist/mcps/knowledge-skills/api-design.server.d.ts +15 -0
- package/dist/mcps/knowledge-skills/api-design.server.js +4 -4
- package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +15 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +4 -4
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.d.ts +33 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-analyzer.server.d.ts +31 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-review.server.d.ts +46 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +4 -4
- package/dist/mcps/knowledge-skills/content-creator.server.d.ts +13 -0
- package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
- package/dist/mcps/knowledge-skills/database-design.server.d.ts +43 -0
- package/dist/mcps/knowledge-skills/database-design.server.js +4 -4
- package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +43 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +4 -4
- package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +15 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.js +4 -4
- package/dist/mcps/knowledge-skills/growth-strategist.server.d.ts +13 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/log-monitor.server.d.ts +24 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
- package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +19 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.js +4 -4
- package/dist/mcps/knowledge-skills/multimodal-looker.server.d.ts +55 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +3 -2
- package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +72 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +4 -4
- package/dist/mcps/knowledge-skills/project-analysis.server.d.ts +37 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +33 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +4 -4
- package/dist/mcps/knowledge-skills/security-audit.server.d.ts +48 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +4 -4
- package/dist/mcps/knowledge-skills/seo-consultant.server.d.ts +26 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
- package/dist/mcps/knowledge-skills/session-management.server.d.ts +23 -0
- package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
- package/dist/mcps/knowledge-skills/skill-invocation.server.d.ts +29 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
- package/dist/mcps/knowledge-skills/strategist.server.d.ts +17 -0
- package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +47 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.js +5 -5
- package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +36 -0
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +4 -4
- package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +47 -0
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +4 -4
- package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +69 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +6 -6
- package/dist/mcps/lint.server.d.ts +17 -0
- package/dist/mcps/lint.server.js +6 -6
- package/dist/mcps/mcp-client.d.ts +157 -0
- package/dist/mcps/mcp-client.js +3 -3
- package/dist/mcps/model-health-check.server.d.ts +16 -0
- package/dist/mcps/model-health-check.server.js +4 -4
- package/dist/mcps/orchestrator/config/agent-capabilities.d.ts +35 -0
- package/dist/mcps/orchestrator/execution/execution-planner.d.ts +62 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.d.ts +32 -0
- package/dist/mcps/orchestrator/handlers/status-handler.d.ts +69 -0
- package/dist/mcps/orchestrator/handlers/task-handler.d.ts +52 -0
- package/dist/mcps/orchestrator/server.d.ts +38 -0
- package/dist/mcps/orchestrator/server.js +2 -2
- package/dist/mcps/orchestrator/types.d.ts +79 -0
- package/dist/mcps/orchestrator.server.d.ts +10 -0
- package/dist/mcps/performance-analysis.server.d.ts +27 -0
- package/dist/mcps/performance-analysis.server.js +4 -4
- package/dist/mcps/processor-pipeline.server.d.ts +31 -0
- package/dist/mcps/processor-pipeline.server.js +4 -4
- package/dist/mcps/protocol/protocol-constants.d.ts +46 -0
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.d.ts +31 -0
- package/dist/mcps/researcher.server.js +5 -5
- package/dist/mcps/security-scan.server.d.ts +20 -0
- package/dist/mcps/security-scan.server.js +4 -4
- package/dist/mcps/simulation/index.d.ts +12 -0
- package/dist/mcps/simulation/server-simulations.d.ts +39 -0
- package/dist/mcps/simulation/server-simulations.js +3 -3
- package/dist/mcps/simulation/simulation-engine.d.ts +51 -0
- package/dist/mcps/state-manager.server.d.ts +28 -0
- package/dist/mcps/state-manager.server.js +1 -1
- package/dist/mcps/tools/index.d.ts +14 -0
- package/dist/mcps/tools/tool-cache.d.ts +53 -0
- package/dist/mcps/tools/tool-discovery.d.ts +27 -0
- package/dist/mcps/tools/tool-executor.d.ts +41 -0
- package/dist/mcps/tools/tool-registry.d.ts +42 -0
- package/dist/mcps/types/index.d.ts +13 -0
- package/dist/mcps/types/json-rpc.types.d.ts +35 -0
- package/dist/mcps/types/mcp.types.d.ts +105 -0
- package/dist/metrics/agent-metrics.d.ts +169 -0
- package/dist/metrics/agent-metrics.js +1 -1
- package/dist/metrics/index.d.ts +6 -0
- package/dist/monitoring/advanced-profiler.d.ts +51 -0
- package/dist/monitoring/memory-monitor.d.ts +113 -0
- package/dist/monitoring/nudge-watchdog.d.ts +88 -0
- package/dist/monitoring/test-auto-generation-monitor.d.ts +64 -0
- package/dist/orchestrator/agent-spawn-governor.d.ts +127 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.d.ts +156 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
- package/dist/orchestrator/intelligent-commit-batcher.d.ts +114 -0
- package/dist/orchestrator/intelligent-commit-batcher.js +3 -3
- package/dist/orchestrator/multi-agent-orchestration-coordinator.d.ts +127 -0
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +9 -9
- package/dist/orchestrator/orchestrator.d.ts +143 -0
- package/dist/orchestrator/orchestrator.js +8 -6
- package/dist/orchestrator/self-direction-activation.d.ts +109 -0
- package/dist/orchestrator/universal-librarian-consultation.d.ts +98 -0
- package/dist/orchestrator/universal-registry-bridge.d.ts +85 -0
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/performance/performance-budget-enforcer.d.ts +158 -0
- package/dist/performance/performance-regression-tester.d.ts +108 -0
- package/dist/plugin/xray-codex-injection.d.ts +55 -0
- package/dist/plugin/xray-codex-injection.js +15 -14
- package/dist/postprocessor/PostProcessor.d.ts +108 -0
- package/dist/postprocessor/PostProcessor.js +1 -1
- package/dist/postprocessor/analysis/FailureAnalysisEngine.d.ts +39 -0
- package/dist/postprocessor/autofix/AutoFixEngine.d.ts +48 -0
- package/dist/postprocessor/autofix/FixValidator.d.ts +23 -0
- package/dist/postprocessor/config.d.ts +6 -0
- package/dist/postprocessor/escalation/EscalationEngine.d.ts +154 -0
- package/dist/postprocessor/monitoring/MonitoringEngine.d.ts +40 -0
- package/dist/postprocessor/redeploy/RedeployCoordinator.d.ts +91 -0
- package/dist/postprocessor/services/RegressionAnalysisService.d.ts +40 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +2 -2
- package/dist/postprocessor/success/SuccessHandler.d.ts +57 -0
- package/dist/postprocessor/triggers/APITrigger.d.ts +35 -0
- package/dist/postprocessor/triggers/GitHookTrigger.d.ts +38 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +14 -14
- package/dist/postprocessor/triggers/WebhookTrigger.d.ts +47 -0
- package/dist/postprocessor/types.d.ts +227 -0
- package/dist/processors/doc-write-guard.d.ts +6 -0
- package/dist/processors/implementations/agents-md-validation-processor.d.ts +63 -0
- package/dist/processors/implementations/agents-md-validation-processor.js +2 -2
- package/dist/processors/implementations/async-pattern-processor.d.ts +48 -0
- package/dist/processors/implementations/codex-compliance-processor.d.ts +7 -0
- package/dist/processors/implementations/commit-batcher-processor.d.ts +13 -0
- package/dist/processors/implementations/console-log-guard-processor.d.ts +33 -0
- package/dist/processors/implementations/coverage-analysis-processor.d.ts +20 -0
- package/dist/processors/implementations/error-boundary-processor.d.ts +7 -0
- package/dist/processors/implementations/inference-improvement-processor.d.ts +36 -0
- package/dist/processors/implementations/inference-improvement-processor.js +2 -2
- package/dist/processors/implementations/log-protection-processor.d.ts +30 -0
- package/dist/processors/implementations/log-protection-processor.js +2 -2
- package/dist/processors/implementations/nudge-processor.d.ts +22 -0
- package/dist/processors/implementations/performance-budget-processor.d.ts +50 -0
- package/dist/processors/implementations/postprocessor-chain-validator.d.ts +46 -0
- package/dist/processors/implementations/pre-validate-processor.d.ts +7 -0
- package/dist/processors/implementations/publish-preflight-processor.d.ts +38 -0
- package/dist/processors/implementations/publish-preflight-processor.js +3 -3
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.d.ts +7 -0
- package/dist/processors/implementations/refactoring-logging-processor.d.ts +31 -0
- package/dist/processors/implementations/regression-testing-processor.d.ts +20 -0
- package/dist/processors/implementations/regression-testing-processor.js +2 -2
- package/dist/processors/implementations/session-capture-processor.d.ts +14 -0
- package/dist/processors/implementations/session-summary-processor.d.ts +27 -0
- package/dist/processors/implementations/session-summary-processor.js +2 -2
- package/dist/processors/implementations/spawn-governance-processor.d.ts +58 -0
- package/dist/processors/implementations/state-validation-processor.d.ts +11 -0
- package/dist/processors/implementations/storytelling-trigger-processor.d.ts +42 -0
- package/dist/processors/implementations/storytelling-trigger-processor.js +2 -2
- package/dist/processors/implementations/test-auto-creation-processor.d.ts +17 -0
- package/dist/processors/implementations/test-execution-processor.d.ts +11 -0
- package/dist/processors/implementations/typescript-compilation-processor.d.ts +38 -0
- package/dist/processors/implementations/version-compliance-processor.d.ts +112 -0
- package/dist/processors/processor-interfaces.d.ts +127 -0
- package/dist/processors/processor-manager.d.ts +80 -0
- package/dist/processors/processor-types.d.ts +190 -0
- package/dist/public/about.html +6 -6
- package/dist/public/enterprise.html +1 -1
- package/dist/public/features.html +2 -2
- package/dist/public/index.html +4 -4
- package/dist/reporting/framework-reporting-system.d.ts +19 -0
- package/dist/reporting/log-parser.d.ts +10 -0
- package/dist/reporting/metrics.d.ts +15 -0
- package/dist/reporting/report-formatter.d.ts +5 -0
- package/dist/reporting/report-formatter.js +1 -1
- package/dist/reporting/types.d.ts +102 -0
- package/dist/scripts/activate-kernel-pipeline.d.ts +7 -0
- package/dist/scripts/activate-kernel-pipeline.js +2 -2
- package/dist/scripts/integration.d.ts +37 -0
- package/dist/scripts/pre-command +1 -1
- package/dist/security/comprehensive-security-audit.d.ts +158 -0
- package/dist/security/index.d.ts +13 -0
- package/dist/security/prompt-security-validator.d.ts +44 -0
- package/dist/security/security-agent-coordinator.d.ts +72 -0
- package/dist/security/security-auditor.d.ts +56 -0
- package/dist/security/security-hardener.d.ts +62 -0
- package/dist/security/security-hardening-system.d.ts +239 -0
- package/dist/security/security-headers.d.ts +64 -0
- package/dist/security/security-orchestration-layer.d.ts +119 -0
- package/dist/security/security-scanner.d.ts +119 -0
- package/dist/services/inference-tuner.d.ts +77 -0
- package/dist/services/inference-tuner.js +2 -2
- package/dist/session/index.d.ts +3 -0
- package/dist/session/session-cleanup-manager.d.ts +118 -0
- package/dist/session/session-monitor.d.ts +133 -0
- package/dist/session/session-state-manager.d.ts +145 -0
- package/dist/skills/hermes-agent/SKILL.md +11 -11
- package/dist/skills/registry.json +1 -1
- package/dist/skills/storyteller/SKILL.md +1 -1
- package/dist/skills/xray-orchestrator/SKILL.md +141 -0
- package/dist/skills/xray-orchestrator/index.d.ts +13 -0
- package/dist/skills/xray-orchestrator/index.js +224 -0
- package/dist/state/context-providers.d.ts +4 -0
- package/dist/state/index.d.ts +5 -0
- package/dist/state/index.js +2 -1
- package/dist/state/state-manager.d.ts +42 -0
- package/dist/state/state-manager.js +5 -4
- package/dist/state/state-types.d.ts +5 -0
- package/dist/testing/memory-regression-suite.d.ts +105 -0
- package/dist/utils/batch-operations.d.ts +25 -0
- package/dist/utils/codex-parser.d.ts +61 -0
- package/dist/utils/command-runner.d.ts +32 -0
- package/dist/utils/import-resolver.d.ts +54 -0
- package/dist/utils/import-resolver.js +1 -1
- package/dist/utils/language-detector.d.ts +44 -0
- package/dist/utils/path-resolver.d.ts +48 -0
- package/dist/utils/path-resolver.js +2 -2
- package/dist/utils/shutdown-handler.d.ts +27 -0
- package/dist/utils/test-template-generator.d.ts +25 -0
- package/dist/utils/token-manager.d.ts +48 -0
- package/dist/utils/token-manager.js +1 -1
- package/dist/validation/estimation-validator.d.ts +61 -0
- package/dist/validation/estimation-validator.js +1 -1
- package/dist/validation/report-content-validator.d.ts +42 -0
- package/package.json +4 -3
- package/scripts/hooks/pre-command +1 -1
- package/scripts/hooks/run-hook.js +2 -2
- package/scripts/node/auto-reflection-generator.mjs +2 -2
- package/scripts/node/postinstall.cjs +1 -1
- package/scripts/node/release.js +6 -6
- package/scripts/node/release.mjs +10 -10
- package/scripts/node/universal-version-manager.js +53 -54
- package/scripts/node/version-manager.mjs +1 -1
- package/src/integrations/grok/plugin/0xray/.mcp.json +3 -3
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/src/mcps/architect-tools.server.ts +4 -4
- package/src/mcps/auto-format.server.ts +4 -4
- package/src/mcps/boot-orchestrator.server.ts +4 -4
- package/src/mcps/config/server-config-registry.ts +7 -7
- package/src/mcps/connection/mcp-connection.ts +1 -1
- package/src/mcps/enforcer-tools.server.ts +4 -4
- package/src/mcps/estimation.server.ts +1 -1
- package/src/mcps/framework-compliance-audit.server.ts +4 -4
- package/src/mcps/framework-help.server.ts +7 -7
- package/src/mcps/in-process-skill-registry.ts +6 -6
- package/src/mcps/knowledge-skills/api-design.server.test.ts +8 -8
- package/src/mcps/knowledge-skills/api-design.server.ts +4 -4
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +4 -4
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +1 -1
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +1 -1
- package/src/mcps/knowledge-skills/code-review.server.ts +4 -4
- package/src/mcps/knowledge-skills/content-creator.server.ts +1 -1
- package/src/mcps/knowledge-skills/database-design.server.ts +4 -4
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +4 -4
- package/src/mcps/knowledge-skills/git-workflow.server.ts +4 -4
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +1 -1
- package/src/mcps/knowledge-skills/log-monitor.server.ts +1 -1
- package/src/mcps/knowledge-skills/mobile-development.server.ts +4 -4
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +3 -2
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +4 -4
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1 -1
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +4 -4
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +23 -23
- package/src/mcps/knowledge-skills/security-audit.server.ts +4 -4
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1 -1
- package/src/mcps/knowledge-skills/session-management.server.ts +1 -1
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +1 -1
- package/src/mcps/knowledge-skills/strategist.server.ts +1 -1
- package/src/mcps/knowledge-skills/tech-writer.server.ts +5 -5
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +28 -28
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +4 -4
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +19 -19
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +4 -4
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +6 -6
- package/src/mcps/lint.server.ts +6 -6
- package/src/mcps/mcp-client.ts +3 -3
- package/src/mcps/model-health-check.server.ts +4 -4
- package/src/mcps/orchestrator/server.ts +2 -2
- package/src/mcps/performance-analysis.server.ts +4 -4
- package/src/mcps/processor-pipeline.server.ts +4 -4
- package/src/mcps/registry.json +1 -1
- package/src/mcps/researcher.server.ts +5 -5
- package/src/mcps/security-scan.server.ts +4 -4
- package/src/mcps/simulation/server-simulations.ts +3 -3
- package/src/mcps/state-manager.server.ts +1 -1
- package/src/opencode/codex.codex +2 -2
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/hermes-agent/SKILL.md +11 -11
- package/src/skills/registry.json +1 -1
- package/src/skills/storyteller/SKILL.md +1 -1
- package/src/skills/xray-orchestrator/SKILL.md +141 -0
- package/src/skills/xray-orchestrator/index.ts +268 -0
- package/.opencode/hooks/hook-metrics.json +0 -380
- package/.opencode/skills/api-design/SKILL.md +0 -37
- package/.opencode/skills/architect-tools/SKILL.md +0 -37
- package/.opencode/skills/architecture-patterns/SKILL.md +0 -37
- package/.opencode/skills/auto-format/SKILL.md +0 -37
- package/.opencode/skills/backend-engineer/SKILL.md +0 -49
- package/.opencode/skills/boot-orchestrator/SKILL.md +0 -37
- package/.opencode/skills/bug-triage/SKILL.md +0 -43
- package/.opencode/skills/code-analyzer/SKILL.md +0 -45
- package/.opencode/skills/code-review/SKILL.md +0 -52
- package/.opencode/skills/content-creator/SKILL.md +0 -38
- package/.opencode/skills/database-engineer/SKILL.md +0 -46
- package/.opencode/skills/devops-engineer/SKILL.md +0 -49
- package/.opencode/skills/enforcer/SKILL.md +0 -37
- package/.opencode/skills/framework-compliance-audit/SKILL.md +0 -37
- package/.opencode/skills/frontend-engineer/SKILL.md +0 -49
- package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +0 -41
- package/.opencode/skills/git-workflow/SKILL.md +0 -37
- package/.opencode/skills/growth-strategist/SKILL.md +0 -48
- package/.opencode/skills/hermes-agent/SKILL.md +0 -212
- package/.opencode/skills/inference-improve/SKILL.md +0 -97
- package/.opencode/skills/lint/SKILL.md +0 -37
- package/.opencode/skills/log-monitor/SKILL.md +0 -44
- package/.opencode/skills/mobile-developer/SKILL.md +0 -42
- package/.opencode/skills/model-health-check/SKILL.md +0 -37
- package/.opencode/skills/multimodal-looker/SKILL.md +0 -45
- package/.opencode/skills/orchestrator/SKILL.md +0 -37
- package/.opencode/skills/performance-analysis/SKILL.md +0 -37
- package/.opencode/skills/performance-engineer/SKILL.md +0 -41
- package/.opencode/skills/performance-optimization/SKILL.md +0 -37
- package/.opencode/skills/processor-pipeline/SKILL.md +0 -37
- package/.opencode/skills/project-analysis/SKILL.md +0 -42
- package/.opencode/skills/refactoring-strategies/SKILL.md +0 -37
- package/.opencode/skills/registry.json +0 -66
- package/.opencode/skills/researcher/SKILL.md +0 -37
- package/.opencode/skills/security-audit/SKILL.md +0 -47
- package/.opencode/skills/security-scan/SKILL.md +0 -37
- package/.opencode/skills/seo-consultant/SKILL.md +0 -43
- package/.opencode/skills/session-management/SKILL.md +0 -36
- package/.opencode/skills/state-manager/SKILL.md +0 -37
- package/.opencode/skills/storyteller/SKILL.md +0 -130
- package/.opencode/skills/strategist/SKILL.md +0 -32
- package/.opencode/skills/tech-writer/SKILL.md +0 -37
- package/.opencode/skills/testing-best-practices/SKILL.md +0 -37
- package/.opencode/skills/testing-strategy/SKILL.md +0 -43
- package/.opencode/skills/ui-ux-design/SKILL.md +0 -603
- package/scripts/validate-stringray-comprehensive.js +0 -636
- /package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -0
|
@@ -2,7 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
v2.0: Now uses the Node.js bridge for real framework integration.
|
|
4
4
|
Falls back to CLI (npx 0xray) when bridge is unavailable.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import os
|
|
9
|
+
import shutil
|
|
10
|
+
import subprocess
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# ── Paths ─────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
PLUGIN_DIR = Path(__file__).resolve().parent
|
|
17
|
+
BRIDGE_PATH = PLUGIN_DIR / "bridge.mjs"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _get_project_root():
|
|
21
|
+
"""Find the project root by walking up from cwd."""
|
|
22
|
+
cwd = os.getcwd()
|
|
23
|
+
home = Path.home()
|
|
24
|
+
d = Path(cwd).resolve()
|
|
25
|
+
while True:
|
|
26
|
+
if (d / "node_modules" / "0xray" / "package.json").exists():
|
|
27
|
+
return str(d)
|
|
28
|
+
if (d / ".opencode" / "xray" / "features.json").exists():
|
|
29
|
+
return str(d)
|
|
30
|
+
if d != home and (d / "package.json").exists():
|
|
31
|
+
return str(d)
|
|
32
|
+
d = d.parent
|
|
33
|
+
if d == d.parent:
|
|
34
|
+
break
|
|
35
|
+
return cwd
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _run_xray(args, timeout=30):
|
|
39
|
+
"""Run 0xray CLI command, return JSON string result."""
|
|
40
|
+
try:
|
|
41
|
+
result = subprocess.run(
|
|
5
42
|
["npx", "0xray"] + args,
|
|
43
|
+
capture_output=True, text=True, timeout=timeout,
|
|
44
|
+
)
|
|
45
|
+
if result.returncode == 0:
|
|
46
|
+
return json.dumps({"status": "ok", "output": result.stdout})
|
|
47
|
+
return json.dumps({"status": "error", "error": result.stderr[:500]})
|
|
48
|
+
except FileNotFoundError:
|
|
6
49
|
return json.dumps({"error": "0xray not found. Run: npm install -g 0xray"})
|
|
7
50
|
except subprocess.TimeoutExpired:
|
|
8
51
|
return json.dumps({"error": f"Command timed out after {timeout}s"})
|
|
@@ -10,9 +53,28 @@ Falls back to CLI (npx 0xray) when bridge is unavailable.
|
|
|
10
53
|
return json.dumps({"error": str(e)})
|
|
11
54
|
|
|
12
55
|
|
|
13
|
-
|
|
56
|
+
def _bridge_call(command, timeout=30):
|
|
57
|
+
"""Call bridge.mjs with a JSON command, return parsed dict."""
|
|
58
|
+
try:
|
|
59
|
+
result = subprocess.run(
|
|
60
|
+
["node", str(BRIDGE_PATH), "--cwd", _get_project_root()],
|
|
61
|
+
input=json.dumps(command),
|
|
62
|
+
capture_output=True, text=True, timeout=timeout,
|
|
63
|
+
)
|
|
64
|
+
if result.returncode != 0:
|
|
65
|
+
return {"error": result.stderr[:300] if result.stderr else "bridge failed"}
|
|
66
|
+
return json.loads(result.stdout)
|
|
67
|
+
except FileNotFoundError:
|
|
68
|
+
return {"error": "node not found"}
|
|
69
|
+
except subprocess.TimeoutExpired:
|
|
70
|
+
return {"error": f"bridge timed out after {timeout}s"}
|
|
71
|
+
except (json.JSONDecodeError, OSError) as e:
|
|
72
|
+
return {"error": str(e)}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# ── Tool: xray_validate ─────────────────────────────────────
|
|
14
76
|
|
|
15
|
-
def
|
|
77
|
+
def xray_validate(args: dict, **kwargs) -> str:
|
|
16
78
|
"""Run pre-commit validation on files using the framework.
|
|
17
79
|
|
|
18
80
|
Uses bridge for real quality gate + processor pipeline.
|
|
@@ -41,7 +103,7 @@ def strray_validate(args: dict, **kwargs) -> str:
|
|
|
41
103
|
})
|
|
42
104
|
|
|
43
105
|
# Fallback to CLI
|
|
44
|
-
result = json.loads(
|
|
106
|
+
result = json.loads(_run_xray(["validate"], timeout=30))
|
|
45
107
|
if "error" in result:
|
|
46
108
|
return json.dumps(result)
|
|
47
109
|
|
|
@@ -54,10 +116,10 @@ def strray_validate(args: dict, **kwargs) -> str:
|
|
|
54
116
|
})
|
|
55
117
|
|
|
56
118
|
|
|
57
|
-
# ── Tool:
|
|
119
|
+
# ── Tool: xray_codex_check ──────────────────────────────────
|
|
58
120
|
|
|
59
|
-
def
|
|
60
|
-
"""Check code against
|
|
121
|
+
def xray_codex_check(args: dict, **kwargs) -> str:
|
|
122
|
+
"""Check code against Xray codex rules.
|
|
61
123
|
|
|
62
124
|
Uses bridge for real quality gate codex checks.
|
|
63
125
|
Falls back to CLI if bridge unavailable.
|
|
@@ -93,7 +155,7 @@ def strray_codex_check(args: dict, **kwargs) -> str:
|
|
|
93
155
|
"focus_areas": focus_areas or "all",
|
|
94
156
|
"code_length": len(code),
|
|
95
157
|
"note": "Bridge unavailable — basic analysis only. "
|
|
96
|
-
"Full codex validation available via MCP:
|
|
158
|
+
"Full codex validation available via MCP: mcp_xray_enforcer_codex_enforcement",
|
|
97
159
|
"via": "static",
|
|
98
160
|
})
|
|
99
161
|
|
|
@@ -109,7 +171,7 @@ def strray_codex_check(args: dict, **kwargs) -> str:
|
|
|
109
171
|
"via": "bridge",
|
|
110
172
|
})
|
|
111
173
|
|
|
112
|
-
result = json.loads(
|
|
174
|
+
result = json.loads(_run_xray(["health"], timeout=15))
|
|
113
175
|
if "error" in result:
|
|
114
176
|
return json.dumps(result)
|
|
115
177
|
|
|
@@ -121,10 +183,10 @@ def strray_codex_check(args: dict, **kwargs) -> str:
|
|
|
121
183
|
})
|
|
122
184
|
|
|
123
185
|
|
|
124
|
-
# ── Tool:
|
|
186
|
+
# ── Tool: xray_health ───────────────────────────────────────
|
|
125
187
|
|
|
126
|
-
def
|
|
127
|
-
"""Check
|
|
188
|
+
def xray_health(args: dict, **kwargs) -> str:
|
|
189
|
+
"""Check Xray framework health via bridge.
|
|
128
190
|
|
|
129
191
|
Returns framework status, loaded components, version.
|
|
130
192
|
"""
|
|
@@ -141,13 +203,13 @@ def strray_health(args: dict, **kwargs) -> str:
|
|
|
141
203
|
})
|
|
142
204
|
|
|
143
205
|
# Fallback to CLI
|
|
144
|
-
return
|
|
206
|
+
return _run_xray(["health"], timeout=15)
|
|
145
207
|
|
|
146
208
|
|
|
147
|
-
# ── Tool:
|
|
209
|
+
# ── Tool: xray_hooks ───────────────────────────────────────
|
|
148
210
|
|
|
149
|
-
def
|
|
150
|
-
"""Manage
|
|
211
|
+
def xray_hooks(args: dict, **kwargs) -> str:
|
|
212
|
+
"""Manage Xray git hooks.
|
|
151
213
|
|
|
152
214
|
Actions: install, uninstall, list, status
|
|
153
215
|
Uses bridge for hook management when available.
|
|
@@ -174,7 +236,7 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
174
236
|
|
|
175
237
|
# Fallback: direct file-based hook management
|
|
176
238
|
git_hooks_dir = Path(_get_project_root()) / ".git" / "hooks"
|
|
177
|
-
|
|
239
|
+
xray_hooks_dir = Path(_get_project_root()) / "hooks"
|
|
178
240
|
|
|
179
241
|
if not git_hooks_dir.exists():
|
|
180
242
|
return json.dumps({"error": "Not a git repository", "via": "fallback"})
|
|
@@ -183,19 +245,19 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
183
245
|
result = {"managed": [], "missing": [], "external": [], "stale": []}
|
|
184
246
|
for hook_name in hooks:
|
|
185
247
|
git_hook = git_hooks_dir / hook_name
|
|
186
|
-
|
|
248
|
+
xray_hook = xray_hooks_dir / hook_name
|
|
187
249
|
if not git_hook.exists():
|
|
188
250
|
result["missing"].append(hook_name)
|
|
189
251
|
else:
|
|
190
252
|
try:
|
|
191
253
|
content = git_hook.read_text()[:500]
|
|
192
|
-
if "StringRay" in content or "strray" in content or "run-hook.js" in content:
|
|
254
|
+
if "Xray" in content or "StringRay" in content or "xray" in content or "strray" in content or "run-hook.js" in content:
|
|
193
255
|
result["managed"].append(hook_name)
|
|
194
256
|
else:
|
|
195
257
|
result["external"].append(hook_name)
|
|
196
258
|
except OSError:
|
|
197
259
|
result["external"].append(hook_name)
|
|
198
|
-
if not
|
|
260
|
+
if not xray_hook.exists():
|
|
199
261
|
result["stale"].append(hook_name)
|
|
200
262
|
return json.dumps({"status": "ok", "action": action, **result, "via": "fallback"})
|
|
201
263
|
|
|
@@ -203,7 +265,7 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
203
265
|
installed = []
|
|
204
266
|
skipped = []
|
|
205
267
|
for hook_name in hooks:
|
|
206
|
-
src =
|
|
268
|
+
src = xray_hooks_dir / hook_name
|
|
207
269
|
dst = git_hooks_dir / hook_name
|
|
208
270
|
if not src.exists():
|
|
209
271
|
skipped.append(hook_name)
|
|
@@ -212,7 +274,7 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
212
274
|
if dst.exists():
|
|
213
275
|
try:
|
|
214
276
|
content = dst.read_text()[:500]
|
|
215
|
-
if "StringRay" not in content and "strray" not in content:
|
|
277
|
+
if "Xray" not in content and "StringRay" not in content and "xray" not in content and "strray" not in content:
|
|
216
278
|
dst.rename(dst.with_suffix(".strray-backup"))
|
|
217
279
|
else:
|
|
218
280
|
dst.unlink()
|
|
@@ -238,8 +300,8 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
238
300
|
continue
|
|
239
301
|
try:
|
|
240
302
|
content = dst.read_text()[:500]
|
|
241
|
-
|
|
242
|
-
if
|
|
303
|
+
is_xray = "Xray" in content or "StringRay" in content or "xray" in content or "strray" in content or "run-hook.js" in content
|
|
304
|
+
if is_xray or dst.is_symlink():
|
|
243
305
|
dst.unlink()
|
|
244
306
|
if backup.exists():
|
|
245
307
|
shutil.move(str(backup), str(dst))
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# OpenClaw Integration
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Xray integration for OpenClaw - a self-hosted AI gateway that connects messaging platforms to AI coding agents.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
This integration allows
|
|
7
|
+
This integration allows Xray to:
|
|
8
8
|
- Connect to OpenClaw Gateway via WebSocket
|
|
9
|
-
- Expose
|
|
9
|
+
- Expose Xray capabilities through OpenClaw skills
|
|
10
10
|
- Send tool execution events to OpenClaw for real-time tracking
|
|
11
11
|
- Receive commands from OpenClaw channels (WhatsApp, Telegram, Discord, etc.)
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ This integration allows StringRay to:
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
17
|
-
│ User │────▶│ OpenClaw │────▶│
|
|
17
|
+
│ User │────▶│ OpenClaw │────▶│ Xray │
|
|
18
18
|
│ (WhatsApp, │ │ Gateway │ │ Skills │
|
|
19
19
|
│ Discord, │ │ │ │ │
|
|
20
20
|
│ Telegram) │◀────│ │◀────│ │
|
|
@@ -37,7 +37,7 @@ npm install ws
|
|
|
37
37
|
|
|
38
38
|
### 2. Configure OpenClaw
|
|
39
39
|
|
|
40
|
-
Create `.
|
|
40
|
+
Create `.xray/config/openclaw.json`:
|
|
41
41
|
|
|
42
42
|
```json
|
|
43
43
|
{
|
|
@@ -82,11 +82,11 @@ const integration = await initializeOpenClawIntegration('/path/to/config.json',
|
|
|
82
82
|
|
|
83
83
|
After installation, use these commands in any OpenClaw channel:
|
|
84
84
|
|
|
85
|
-
- `/
|
|
86
|
-
- `/
|
|
87
|
-
- `/
|
|
88
|
-
- `/
|
|
89
|
-
- `/
|
|
85
|
+
- `/xray` - Show status
|
|
86
|
+
- `/xray-analyze <file>` - Analyze code
|
|
87
|
+
- `/xray-code <file>` - Code review
|
|
88
|
+
- `/xray-file <file>` - Read file
|
|
89
|
+
- `/xray-exec <command>` - Execute command
|
|
90
90
|
|
|
91
91
|
## Configuration
|
|
92
92
|
|
|
@@ -115,14 +115,14 @@ The integration exposes a local HTTP API on port 18431:
|
|
|
115
115
|
|
|
116
116
|
### stringray-orchestrator
|
|
117
117
|
|
|
118
|
-
Main skill providing
|
|
118
|
+
Main skill providing Xray commands:
|
|
119
119
|
|
|
120
120
|
```markdown
|
|
121
|
-
/
|
|
122
|
-
/
|
|
123
|
-
/
|
|
124
|
-
/
|
|
125
|
-
/
|
|
121
|
+
/xray - Show status
|
|
122
|
+
/xray-analyze <file> - Analyze code
|
|
123
|
+
/xray-code <file> - Code review
|
|
124
|
+
/xray-file <file> - Read file
|
|
125
|
+
/xray-exec <command> - Execute command
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
## Documentation
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0xRay API Server
|
|
3
|
+
*
|
|
4
|
+
* HTTP API server that OpenClaw skills call to invoke 0xRay capabilities.
|
|
5
|
+
* This is the bridge between OpenClaw skills and 0xRay.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @since 2026-03-14
|
|
9
|
+
*/
|
|
10
|
+
import { XrayAPIServerConfig, AgentInvokeRequest, AgentInvokeResponse, APIServerStatistics } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Agent invoker interface - implemented by 0xRay
|
|
13
|
+
*/
|
|
14
|
+
export interface AgentInvoker {
|
|
15
|
+
invoke(request: AgentInvokeRequest): Promise<AgentInvokeResponse>;
|
|
16
|
+
getStatus?(): Promise<{
|
|
17
|
+
healthy: boolean;
|
|
18
|
+
version: string;
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 0xRay API Server
|
|
23
|
+
*/
|
|
24
|
+
export declare class XrayAPIServer {
|
|
25
|
+
private server;
|
|
26
|
+
private config;
|
|
27
|
+
private agentInvoker;
|
|
28
|
+
private apiKey;
|
|
29
|
+
private stats;
|
|
30
|
+
private responseTimes;
|
|
31
|
+
private logger;
|
|
32
|
+
constructor(config: XrayAPIServerConfig);
|
|
33
|
+
/**
|
|
34
|
+
* Set the agent invoker
|
|
35
|
+
*/
|
|
36
|
+
setAgentInvoker(invoker: AgentInvoker): void;
|
|
37
|
+
/**
|
|
38
|
+
* Start the API server
|
|
39
|
+
*/
|
|
40
|
+
start(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Stop the API server
|
|
43
|
+
*/
|
|
44
|
+
stop(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Check if server is running
|
|
47
|
+
*/
|
|
48
|
+
isRunning(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get server statistics
|
|
51
|
+
*/
|
|
52
|
+
getStats(): APIServerStatistics;
|
|
53
|
+
/**
|
|
54
|
+
* Handle incoming HTTP request
|
|
55
|
+
*/
|
|
56
|
+
private handleRequest;
|
|
57
|
+
/**
|
|
58
|
+
* Handle health check request
|
|
59
|
+
*/
|
|
60
|
+
private handleHealth;
|
|
61
|
+
/**
|
|
62
|
+
* Handle agent invoke request
|
|
63
|
+
*/
|
|
64
|
+
private handleAgentInvoke;
|
|
65
|
+
/**
|
|
66
|
+
* Handle agent status request
|
|
67
|
+
*/
|
|
68
|
+
private handleAgentStatus;
|
|
69
|
+
private handleGovern;
|
|
70
|
+
private handleApply;
|
|
71
|
+
/**
|
|
72
|
+
* Validate API key using constant-time comparison to prevent timing attacks
|
|
73
|
+
*/
|
|
74
|
+
private validateApiKey;
|
|
75
|
+
/**
|
|
76
|
+
* Read request body
|
|
77
|
+
*/
|
|
78
|
+
private readBody;
|
|
79
|
+
/**
|
|
80
|
+
* Send JSON response
|
|
81
|
+
*/
|
|
82
|
+
private sendResponse;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Factory function to create API server
|
|
86
|
+
*/
|
|
87
|
+
export declare function createXrayAPIServer(config: XrayAPIServerConfig): XrayAPIServer;
|
|
@@ -12,7 +12,7 @@ import * as http from 'http';
|
|
|
12
12
|
/**
|
|
13
13
|
* 0xRay API Server
|
|
14
14
|
*/
|
|
15
|
-
export class
|
|
15
|
+
export class XrayAPIServer {
|
|
16
16
|
server = null;
|
|
17
17
|
config;
|
|
18
18
|
agentInvoker = null;
|
|
@@ -51,7 +51,7 @@ export class StringRayAPIServer {
|
|
|
51
51
|
*/
|
|
52
52
|
async start() {
|
|
53
53
|
if (this.server) {
|
|
54
|
-
this.logger.warn('[
|
|
54
|
+
this.logger.warn('[XrayAPIServer] Server already running');
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
return new Promise((resolve, reject) => {
|
|
@@ -59,13 +59,13 @@ export class StringRayAPIServer {
|
|
|
59
59
|
this.handleRequest(req, res);
|
|
60
60
|
});
|
|
61
61
|
this.server.on('error', (error) => {
|
|
62
|
-
this.logger.error('[
|
|
62
|
+
this.logger.error('[XrayAPIServer] Server error:', error);
|
|
63
63
|
this.stats.errors++;
|
|
64
64
|
reject(error);
|
|
65
65
|
});
|
|
66
66
|
this.server.listen(this.config.port, this.config.host, () => {
|
|
67
67
|
this.stats.startedAt = Date.now();
|
|
68
|
-
this.logger.info(`[
|
|
68
|
+
this.logger.info(`[XrayAPIServer] Listening on http://${this.config.host}:${this.config.port}`);
|
|
69
69
|
resolve();
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -77,7 +77,7 @@ export class StringRayAPIServer {
|
|
|
77
77
|
return new Promise((resolve) => {
|
|
78
78
|
if (this.server) {
|
|
79
79
|
this.server.close(() => {
|
|
80
|
-
this.logger.info('[
|
|
80
|
+
this.logger.info('[XrayAPIServer] Server stopped');
|
|
81
81
|
this.server = null;
|
|
82
82
|
resolve();
|
|
83
83
|
});
|
|
@@ -123,7 +123,7 @@ export class StringRayAPIServer {
|
|
|
123
123
|
// to prevent cross-origin attacks where a malicious site could make
|
|
124
124
|
// authenticated requests using the API key from a victim's browser.
|
|
125
125
|
if (this.config.apiKey) {
|
|
126
|
-
this.logger.warn('[
|
|
126
|
+
this.logger.warn('[XrayAPIServer] Security: API key is set with CORS enabled. ' +
|
|
127
127
|
'Restricting Access-Control-Allow-Origin to localhost only. ' +
|
|
128
128
|
'Configure explicit allowed origins if cross-origin access is needed.');
|
|
129
129
|
const origin = req.headers.origin;
|
|
@@ -203,7 +203,7 @@ export class StringRayAPIServer {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
catch (error) {
|
|
206
|
-
this.logger.error(`[
|
|
206
|
+
this.logger.error(`[XrayAPIServer] Error handling request:`, error);
|
|
207
207
|
this.stats.errors++;
|
|
208
208
|
const errorMessage = error instanceof Error ? error.message : 'Internal server error';
|
|
209
209
|
this.sendResponse(res, 500, { error: errorMessage });
|
|
@@ -384,6 +384,6 @@ export class StringRayAPIServer {
|
|
|
384
384
|
/**
|
|
385
385
|
* Factory function to create API server
|
|
386
386
|
*/
|
|
387
|
-
export function
|
|
388
|
-
return new
|
|
387
|
+
export function createXrayAPIServer(config) {
|
|
388
|
+
return new XrayAPIServer(config);
|
|
389
389
|
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw WebSocket Client
|
|
3
|
+
*
|
|
4
|
+
* Implements OpenClaw Gateway Protocol v3 with proper request/response handling,
|
|
5
|
+
* reconnection logic, and event management.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @since 2026-03-14
|
|
9
|
+
*/
|
|
10
|
+
import { OpenClawClientConfig, OpenClawClientState, ClientStatistics } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* OpenClaw WebSocket Client
|
|
13
|
+
*/
|
|
14
|
+
export declare class OpenClawClient {
|
|
15
|
+
private ws;
|
|
16
|
+
private config;
|
|
17
|
+
private state;
|
|
18
|
+
private pendingRequests;
|
|
19
|
+
private eventListeners;
|
|
20
|
+
private stateListeners;
|
|
21
|
+
private reconnectAttempts;
|
|
22
|
+
private reconnectTimeout;
|
|
23
|
+
private pingInterval;
|
|
24
|
+
private stats;
|
|
25
|
+
private logger;
|
|
26
|
+
constructor(config: OpenClawClientConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Connect to OpenClaw Gateway
|
|
29
|
+
*/
|
|
30
|
+
private handshakeResolve;
|
|
31
|
+
private handshakeReject;
|
|
32
|
+
private _handshakeTimeout;
|
|
33
|
+
connect(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Disconnect from OpenClaw Gateway
|
|
36
|
+
*/
|
|
37
|
+
disconnect(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Send request and wait for response
|
|
40
|
+
*/
|
|
41
|
+
sendRequest<T = unknown>(method: string, params?: Record<string, unknown>): Promise<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Subscribe to events
|
|
44
|
+
*/
|
|
45
|
+
subscribeToEvents(events: string[]): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Get current state
|
|
48
|
+
*/
|
|
49
|
+
getState(): OpenClawClientState;
|
|
50
|
+
/**
|
|
51
|
+
* Check if connected
|
|
52
|
+
*/
|
|
53
|
+
isConnected(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Get statistics
|
|
56
|
+
*/
|
|
57
|
+
getStats(): ClientStatistics;
|
|
58
|
+
/**
|
|
59
|
+
* Add event listener
|
|
60
|
+
*/
|
|
61
|
+
on(event: string, listener: Function): void;
|
|
62
|
+
/**
|
|
63
|
+
* Remove event listener
|
|
64
|
+
*/
|
|
65
|
+
off(event: string, listener: Function): void;
|
|
66
|
+
/**
|
|
67
|
+
* Add state change listener
|
|
68
|
+
*/
|
|
69
|
+
onStateChange(listener: Function): void;
|
|
70
|
+
/**
|
|
71
|
+
* Remove state change listener
|
|
72
|
+
*/
|
|
73
|
+
offStateChange(listener: Function): void;
|
|
74
|
+
/**
|
|
75
|
+
* Send handshake on connect
|
|
76
|
+
*/
|
|
77
|
+
private sendHandshake;
|
|
78
|
+
/**
|
|
79
|
+
* Handle incoming WebSocket message
|
|
80
|
+
*/
|
|
81
|
+
private handleMessage;
|
|
82
|
+
/**
|
|
83
|
+
* Handle response frame
|
|
84
|
+
*/
|
|
85
|
+
private handleResponse;
|
|
86
|
+
/**
|
|
87
|
+
* Handle event frame
|
|
88
|
+
*/
|
|
89
|
+
private handleEvent;
|
|
90
|
+
/**
|
|
91
|
+
* Handle disconnection
|
|
92
|
+
*/
|
|
93
|
+
private handleDisconnect;
|
|
94
|
+
/**
|
|
95
|
+
* Schedule reconnection
|
|
96
|
+
*/
|
|
97
|
+
private scheduleReconnect;
|
|
98
|
+
/**
|
|
99
|
+
* Start ping interval for connection health
|
|
100
|
+
*/
|
|
101
|
+
private startPingInterval;
|
|
102
|
+
/**
|
|
103
|
+
* Set client state
|
|
104
|
+
*/
|
|
105
|
+
private setState;
|
|
106
|
+
/**
|
|
107
|
+
* Generate unique ID for requests
|
|
108
|
+
*/
|
|
109
|
+
private generateId;
|
|
110
|
+
/**
|
|
111
|
+
* Generate nonce for device pairing
|
|
112
|
+
*/
|
|
113
|
+
private generateNonce;
|
|
114
|
+
/**
|
|
115
|
+
* Sign device challenge
|
|
116
|
+
*/
|
|
117
|
+
private signDeviceChallenge;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Factory function to create client
|
|
121
|
+
*/
|
|
122
|
+
export declare function createOpenClawClient(config: OpenClawClientConfig): OpenClawClient;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Handles loading, validation, and management of OpenClaw integration configuration.
|
|
5
|
+
*
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @since 2026-03-14
|
|
8
|
+
*/
|
|
9
|
+
import { OpenClawIntegrationConfig, ConfigValidationResult } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration loader class
|
|
12
|
+
*/
|
|
13
|
+
export declare class OpenClawConfigLoader {
|
|
14
|
+
private config;
|
|
15
|
+
private configPath;
|
|
16
|
+
private loadedAt;
|
|
17
|
+
constructor(configPath?: string);
|
|
18
|
+
/**
|
|
19
|
+
* Load configuration from file with environment variable overrides
|
|
20
|
+
*/
|
|
21
|
+
load(): OpenClawIntegrationConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Reload configuration from file
|
|
24
|
+
*/
|
|
25
|
+
reload(): OpenClawIntegrationConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Get current configuration
|
|
28
|
+
*/
|
|
29
|
+
getConfig(): OpenClawIntegrationConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Get configuration age in milliseconds
|
|
32
|
+
*/
|
|
33
|
+
getConfigAge(): number;
|
|
34
|
+
/**
|
|
35
|
+
* Check if configuration needs reload
|
|
36
|
+
*/
|
|
37
|
+
needsReload(maxAgeMs?: number): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Apply environment variable overrides
|
|
40
|
+
*/
|
|
41
|
+
private applyEnvironmentOverrides;
|
|
42
|
+
/**
|
|
43
|
+
* Merge user config with defaults
|
|
44
|
+
*/
|
|
45
|
+
private mergeWithDefaults;
|
|
46
|
+
/**
|
|
47
|
+
* Validate configuration
|
|
48
|
+
*/
|
|
49
|
+
validateConfig(config: OpenClawIntegrationConfig): ConfigValidationResult;
|
|
50
|
+
/**
|
|
51
|
+
* Get configuration file path
|
|
52
|
+
*/
|
|
53
|
+
getConfigPath(): string;
|
|
54
|
+
/**
|
|
55
|
+
* Check if configuration file exists
|
|
56
|
+
*/
|
|
57
|
+
configExists(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Create sample configuration file
|
|
60
|
+
*/
|
|
61
|
+
createSampleConfig(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get config for API server only
|
|
64
|
+
*/
|
|
65
|
+
getAPIServerConfig(): {
|
|
66
|
+
enabled: boolean;
|
|
67
|
+
port: number;
|
|
68
|
+
host?: string;
|
|
69
|
+
apiKey?: string;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Get config for hooks only
|
|
73
|
+
*/
|
|
74
|
+
getHooksConfig(): {
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
toolBefore: boolean;
|
|
77
|
+
toolAfter: boolean;
|
|
78
|
+
includeArgs: boolean;
|
|
79
|
+
includeResult: boolean;
|
|
80
|
+
toolFilter?: string[];
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Check if integration is enabled
|
|
84
|
+
*/
|
|
85
|
+
isEnabled(): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Check if API server is enabled
|
|
88
|
+
*/
|
|
89
|
+
isAPIServerEnabled(): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Check if hooks are enabled
|
|
92
|
+
*/
|
|
93
|
+
areHooksEnabled(): boolean;
|
|
94
|
+
}
|
|
95
|
+
export declare const configLoader: OpenClawConfigLoader;
|
|
96
|
+
export declare function createConfigLoader(configPath?: string): OpenClawConfigLoader;
|
|
@@ -54,7 +54,7 @@ export class OpenClawConfigLoader {
|
|
|
54
54
|
loadedAt = 0;
|
|
55
55
|
constructor(configPath) {
|
|
56
56
|
this.configPath = configPath ||
|
|
57
|
-
path.join(process.cwd(), '.
|
|
57
|
+
path.join(process.cwd(), '.xray', 'config', 'openclaw.json');
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Load configuration from file with environment variable overrides
|