0xray 3.4.1 → 3.4.3
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/.xray/codex.json +598 -0
- package/.xray/config.json +25 -0
- package/.xray/features.json +152 -0
- package/.xray/features.schema.json +33 -0
- package/AGENTS-consumer.md +127 -10
- package/AGENTS.md +172 -56
- package/README.md +159 -82
- package/SKILLS.md +79 -53
- package/dist/AGENTS.md +172 -56
- package/dist/CHANGELOG.md +95 -52
- package/dist/README.md +159 -82
- package/dist/SKILLS.md +79 -53
- 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/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 +25 -0
- package/dist/agents/known-names.d.ts +26 -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 +37 -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 +92 -0
- package/dist/analytics/emerging-pattern-detector.d.ts +66 -0
- package/dist/analytics/pattern-learning-engine.d.ts +79 -0
- package/dist/analytics/pattern-performance-tracker.d.ts +96 -0
- package/dist/analytics/predictive-analytics.d.ts +40 -0
- package/dist/analytics/prompt-pattern-analyzer.d.ts +98 -0
- package/dist/analytics/routing-performance-analyzer.d.ts +100 -0
- package/dist/analytics/routing-refiner.d.ts +102 -0
- package/dist/analytics/simple-pattern-analyzer.d.ts +79 -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/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 +23 -0
- package/dist/cli/commands/credible-init.d.ts +11 -0
- package/dist/cli/commands/enforce.d.ts +12 -0
- package/dist/cli/commands/govern.d.ts +29 -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/mcp-install.d.ts +4 -0
- package/dist/cli/commands/openclaw-install.d.ts +2 -0
- package/dist/cli/commands/opencode-install.d.ts +2 -0
- package/dist/cli/commands/plugin-commands.d.ts +18 -0
- package/dist/cli/commands/publish-agent.d.ts +15 -0
- package/dist/cli/commands/security-audit.d.ts +23 -0
- package/dist/cli/commands/skill-install.d.ts +6 -0
- package/dist/cli/commands/status.d.ts +41 -0
- package/dist/cli/commands/storyteller.d.ts +19 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/server.d.ts +1 -0
- package/dist/config/default-agents.d.ts +12 -0
- package/dist/config/routing-mappings.d.ts +26 -0
- package/dist/core/activity-logger.d.ts +71 -0
- package/dist/core/adaptive-kernel.d.ts +108 -0
- package/dist/core/agent-spawn-gate.d.ts +56 -0
- package/dist/core/boot-orchestrator.d.ts +99 -0
- package/dist/core/codex-formatter.d.ts +95 -0
- package/dist/core/codex-injector.d.ts +73 -0
- package/dist/core/config-loader.d.ts +59 -0
- package/dist/core/config-paths.d.ts +66 -0
- package/dist/core/context-loader.d.ts +120 -0
- package/dist/core/context-validator.d.ts +52 -0
- package/dist/core/features-config.d.ts +485 -0
- package/dist/core/features-config.js +5 -0
- package/dist/core/framework-logger.d.ts +76 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/kernel-patterns.d.ts +129 -0
- package/dist/core/logging-config.d.ts +10 -0
- package/dist/core/model-router.d.ts +56 -0
- package/dist/core/orchestrator.d.ts +71 -0
- package/dist/core/system-prompt-generator.d.ts +34 -0
- package/dist/core/trace-context.d.ts +12 -0
- package/dist/core/xray-activation.d.ts +14 -0
- package/dist/delegation/agent-delegator.d.ts +185 -0
- package/dist/delegation/agent-expertise.d.ts +15 -0
- package/dist/delegation/analytics/index.d.ts +11 -0
- package/dist/delegation/analytics/learning-engine.d.ts +84 -0
- package/dist/delegation/analytics/outcome-tracker.d.ts +117 -0
- package/dist/delegation/analytics/routing-analytics.d.ts +60 -0
- package/dist/delegation/ast-code-parser.d.ts +173 -0
- package/dist/delegation/codebase-context-analyzer.d.ts +164 -0
- package/dist/delegation/complexity-analyzer.d.ts +110 -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 +94 -0
- package/dist/delegation/index.d.ts +25 -0
- package/dist/delegation/metrics-aggregator.d.ts +91 -0
- package/dist/delegation/session-coordinator.d.ts +132 -0
- package/dist/delegation/strategy-selector.d.ts +27 -0
- package/dist/delegation/voting-coordinator.d.ts +48 -0
- package/dist/delegation/voting-types.d.ts +154 -0
- package/dist/delegation/weighted-voting-aggregator.d.ts +36 -0
- package/dist/enforcement/core/index.d.ts +14 -0
- package/dist/enforcement/core/rule-executor.d.ts +157 -0
- package/dist/enforcement/core/rule-hierarchy.d.ts +145 -0
- package/dist/enforcement/core/rule-registry.d.ts +196 -0
- package/dist/enforcement/core/violation-fixer.d.ts +105 -0
- package/dist/enforcement/enforcer-tools.d.ts +78 -0
- package/dist/enforcement/index.d.ts +22 -0
- package/dist/enforcement/loaders/agent-triage-loader.d.ts +98 -0
- package/dist/enforcement/loaders/agents-md-validation-loader.d.ts +75 -0
- package/dist/enforcement/loaders/base-loader.d.ts +82 -0
- package/dist/enforcement/loaders/codex-loader.d.ts +76 -0
- package/dist/enforcement/loaders/index.d.ts +36 -0
- package/dist/enforcement/loaders/loader-orchestrator.d.ts +96 -0
- package/dist/enforcement/loaders/processor-loader.d.ts +59 -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 +500 -0
- package/dist/enforcement/validators/architecture-validators.d.ts +154 -0
- package/dist/enforcement/validators/base-validator.d.ts +87 -0
- package/dist/enforcement/validators/code-quality-validators.d.ts +88 -0
- package/dist/enforcement/validators/index.d.ts +14 -0
- package/dist/enforcement/validators/security-validators.d.ts +52 -0
- package/dist/enforcement/validators/testing-validators.d.ts +80 -0
- package/dist/enforcement/validators/validator-registry.d.ts +91 -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 +56 -0
- package/dist/governance/governance-core.d.ts +53 -0
- package/dist/governance/governance-service.d.ts +38 -0
- package/dist/governance/governance-types.d.ts +90 -0
- package/dist/governance/llm-governance-provider.d.ts +13 -0
- package/dist/index.d.ts +28 -0
- package/dist/inference/deploy-verifier.d.ts +26 -0
- package/dist/inference/index.d.ts +10 -0
- package/dist/inference/inference-accumulator.d.ts +29 -0
- package/dist/inference/inference-agent-invoker.d.ts +3 -0
- package/dist/inference/inference-applier.d.ts +4 -0
- package/dist/inference/inference-cycle.d.ts +70 -0
- package/dist/inference/inference-proposal-generator.d.ts +3 -0
- package/dist/inference/semantic-patterns.d.ts +7 -0
- package/dist/inference/session-capture.d.ts +32 -0
- package/dist/infrastructure/iac-validator.d.ts +150 -0
- package/dist/infrastructure/schemas/cloud-schemas.d.ts +482 -0
- package/dist/integrations/base/ExampleIntegration.d.ts +46 -0
- package/dist/integrations/base/Integration.d.ts +266 -0
- package/dist/integrations/base/index.d.ts +11 -0
- package/dist/integrations/base/registry.d.ts +272 -0
- package/dist/integrations/base/types.d.ts +167 -0
- package/dist/integrations/enforcement-gate.d.ts +44 -0
- package/dist/integrations/governance/governance-client.d.ts +75 -0
- package/dist/integrations/governance/index.d.ts +98 -0
- package/dist/integrations/governance/types.d.ts +238 -0
- package/dist/integrations/grok/grok-cli.d.ts +25 -0
- package/dist/integrations/grok/hooks/grok-hook-activity.js +53 -0
- package/dist/integrations/grok/hooks/grok-hook-utils.js +261 -0
- package/dist/integrations/grok/hooks/pre-tool-use.js +85 -115
- package/dist/integrations/grok/hooks/session-start.js +52 -0
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +20 -3
- package/dist/integrations/openclaw/api-server.d.ts +86 -0
- package/dist/integrations/openclaw/client.d.ts +121 -0
- package/dist/integrations/openclaw/config.d.ts +95 -0
- package/dist/integrations/openclaw/hooks/xray-hooks.d.ts +123 -0
- package/dist/integrations/openclaw/index.d.ts +100 -0
- package/dist/integrations/openclaw/types.d.ts +425 -0
- package/dist/integrations/plugins/index.d.ts +9 -0
- package/dist/integrations/plugins/plugin-integration.d.ts +288 -0
- package/dist/integrations/plugins/plugin-registry.d.ts +223 -0
- package/dist/mcps/agent-resolver.d.ts +45 -0
- package/dist/mcps/architect-tools.server.d.ts +16 -0
- package/dist/mcps/auto-format.server.d.ts +18 -0
- package/dist/mcps/boot-orchestrator.server.d.ts +48 -0
- package/dist/mcps/config/config-loader.d.ts +56 -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 +126 -0
- package/dist/mcps/config/server-config-registry.d.ts +51 -0
- package/dist/mcps/config/server-config-registry.js +4 -3
- 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/process-spawner.d.ts +24 -0
- package/dist/mcps/enforcer-tools.server.d.ts +26 -0
- package/dist/mcps/estimation.server.d.ts +19 -0
- package/dist/mcps/framework-compliance-audit.server.d.ts +20 -0
- package/dist/mcps/framework-help.server.d.ts +13 -0
- package/dist/mcps/governance.server.d.ts +35 -0
- package/dist/mcps/governance.server.js +14 -2
- package/dist/mcps/in-process-skill-registry.d.ts +20 -0
- package/dist/mcps/index.d.ts +17 -0
- package/dist/mcps/knowledge-skills/api-design.server.d.ts +13 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +13 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.d.ts +31 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.d.ts +29 -0
- package/dist/mcps/knowledge-skills/code-review.server.d.ts +44 -0
- package/dist/mcps/knowledge-skills/content-creator.server.d.ts +11 -0
- package/dist/mcps/knowledge-skills/database-design.server.d.ts +41 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +41 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +13 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.d.ts +11 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.d.ts +22 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +17 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.d.ts +53 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +69 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.d.ts +35 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +31 -0
- package/dist/mcps/knowledge-skills/security-audit.server.d.ts +46 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.d.ts +24 -0
- package/dist/mcps/knowledge-skills/session-management.server.d.ts +22 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.d.ts +32 -0
- package/dist/mcps/knowledge-skills/storyteller.server.d.ts +11 -0
- package/dist/mcps/knowledge-skills/strategist.server.d.ts +15 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +45 -0
- package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +34 -0
- package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +45 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +67 -0
- package/dist/mcps/lint.server.d.ts +15 -0
- package/dist/mcps/mcp-client.d.ts +157 -0
- package/dist/mcps/model-health-check.server.d.ts +14 -0
- package/dist/mcps/orchestrator/aside-context.d.ts +21 -0
- package/dist/mcps/orchestrator/config/agent-capabilities.d.ts +39 -0
- package/dist/mcps/orchestrator/config/memory-routing-bridge.d.ts +12 -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/complexity-handler.js +33 -3
- package/dist/mcps/orchestrator/handlers/status-handler.d.ts +71 -0
- package/dist/mcps/orchestrator/handlers/task-handler.d.ts +53 -0
- package/dist/mcps/orchestrator/index.d.ts +6 -0
- package/dist/mcps/orchestrator/server.d.ts +38 -0
- package/dist/mcps/orchestrator/server.js +1 -1
- package/dist/mcps/orchestrator/types.d.ts +128 -0
- package/dist/mcps/orchestrator.server.d.ts +10 -0
- package/dist/mcps/performance-analysis.server.d.ts +25 -0
- package/dist/mcps/processor-pipeline.server.d.ts +29 -0
- package/dist/mcps/protocol/protocol-constants.d.ts +46 -0
- package/dist/mcps/researcher-confidence.d.ts +21 -0
- package/dist/mcps/researcher.server.d.ts +29 -0
- package/dist/mcps/researcher.server.js +3 -0
- package/dist/mcps/security-scan.server.d.ts +19 -0
- package/dist/mcps/shared/knowledge-skill-base.d.ts +17 -0
- package/dist/mcps/shared/prompt-security-validator.d.ts +44 -0
- package/dist/mcps/shared/security-scanner.d.ts +119 -0
- package/dist/mcps/simulation/index.d.ts +12 -0
- package/dist/mcps/simulation/server-simulations.d.ts +39 -0
- package/dist/mcps/simulation/simulation-engine.d.ts +51 -0
- package/dist/mcps/state-manager.server.d.ts +27 -0
- 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/memory-routing/index.d.ts +6 -0
- package/dist/memory-routing/null-provider.d.ts +14 -0
- package/dist/memory-routing/provider-loader.d.ts +2 -0
- package/dist/memory-routing/provider-registry.d.ts +8 -0
- package/dist/memory-routing/types.d.ts +104 -0
- package/dist/memory-routing/validate-config.d.ts +7 -0
- package/dist/metrics/agent-metrics.d.ts +169 -0
- 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 +87 -0
- package/dist/monitoring/test-auto-generation-monitor.d.ts +64 -0
- package/dist/nucleus/autonomy-kernel.d.ts +48 -0
- package/dist/nucleus/autonomy-kernel.js +176 -0
- package/dist/nucleus/default-plugins.d.ts +17 -0
- package/dist/nucleus/govern-http.d.ts +59 -0
- package/dist/nucleus/index.d.ts +17 -0
- package/dist/nucleus/index.js +1 -0
- package/dist/nucleus/kernel.d.ts +51 -0
- package/dist/nucleus/plugin-registry.d.ts +132 -0
- package/dist/nucleus/thin-dispatch.d.ts +33 -0
- package/dist/orchestrator/agent-spawn-governor.d.ts +126 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.d.ts +156 -0
- package/dist/orchestrator/intelligent-commit-batcher.d.ts +114 -0
- package/dist/orchestrator/multi-agent-orchestration-coordinator.d.ts +126 -0
- package/dist/orchestrator/orchestrator.d.ts +141 -0
- package/dist/orchestrator/self-direction-activation.d.ts +108 -0
- package/dist/orchestrator/universal-librarian-consultation.d.ts +98 -0
- package/dist/orchestrator/universal-registry-bridge.d.ts +84 -0
- package/dist/performance/performance-budget-enforcer.d.ts +157 -0
- package/dist/performance/performance-regression-tester.d.ts +107 -0
- package/dist/plugin/plugin-codex-context.d.ts +18 -0
- package/dist/plugin/plugin-helpers.d.ts +23 -0
- package/dist/plugin/plugin-logger.d.ts +8 -0
- package/dist/plugin/plugin-modules.d.ts +11 -0
- package/dist/plugin/plugin-quality-gate.d.ts +11 -0
- package/dist/plugin/plugin-types.d.ts +93 -0
- package/dist/plugin/xray-codex-injection.d.ts +39 -0
- package/dist/postprocessor/PostProcessor.d.ts +107 -0
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.d.ts +11 -0
- 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/ProcessorConfigLoader.d.ts +44 -0
- package/dist/postprocessor/config.d.ts +6 -0
- package/dist/postprocessor/escalation/EscalationEngine.d.ts +154 -0
- package/dist/postprocessor/integration.d.ts +156 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.d.ts +87 -0
- package/dist/postprocessor/metamorphosis/index.d.ts +2 -0
- package/dist/postprocessor/monitoring/MonitoringEngine.d.ts +40 -0
- package/dist/postprocessor/redeploy/RedeployCoordinator.d.ts +91 -0
- package/dist/postprocessor/redeploy/RetryHandler.d.ts +49 -0
- package/dist/postprocessor/services/RegressionAnalysisService.d.ts +39 -0
- package/dist/postprocessor/success/SuccessHandler.d.ts +57 -0
- package/dist/postprocessor/triggers/APITrigger.d.ts +34 -0
- package/dist/postprocessor/triggers/GitHookTrigger.d.ts +38 -0
- package/dist/postprocessor/triggers/WebhookTrigger.d.ts +46 -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 +62 -0
- package/dist/processors/implementations/async-pattern-processor.d.ts +47 -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 +32 -0
- package/dist/processors/implementations/coverage-analysis-processor.d.ts +19 -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/log-protection-processor.d.ts +29 -0
- package/dist/processors/implementations/nudge-processor.d.ts +21 -0
- package/dist/processors/implementations/performance-budget-processor.d.ts +49 -0
- package/dist/processors/implementations/postprocessor-chain-validator.d.ts +45 -0
- package/dist/processors/implementations/pre-validate-processor.d.ts +7 -0
- package/dist/processors/implementations/publish-preflight-processor.d.ts +37 -0
- 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/session-capture-processor.d.ts +14 -0
- package/dist/processors/implementations/session-summary-processor.d.ts +26 -0
- package/dist/processors/implementations/spawn-governance-processor.d.ts +57 -0
- package/dist/processors/implementations/state-validation-processor.d.ts +11 -0
- package/dist/processors/implementations/storytelling-trigger-processor.d.ts +40 -0
- package/dist/processors/implementations/test-auto-creation-processor.d.ts +16 -0
- package/dist/processors/implementations/test-execution-processor.d.ts +11 -0
- package/dist/processors/implementations/typescript-compilation-processor.d.ts +37 -0
- package/dist/processors/implementations/version-compliance-processor.d.ts +111 -0
- package/dist/processors/processor-interfaces.d.ts +126 -0
- package/dist/processors/processor-manager.d.ts +80 -0
- package/dist/processors/processor-types.d.ts +189 -0
- package/dist/public/XrayService.d.ts +17 -0
- package/dist/public/index.d.ts +4 -0
- 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/types.d.ts +102 -0
- package/dist/scripts/activate-kernel-pipeline.d.ts +7 -0
- package/dist/scripts/integration.d.ts +36 -0
- package/dist/security/comprehensive-security-audit.d.ts +157 -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 +71 -0
- package/dist/security/security-auditor.d.ts +55 -0
- package/dist/security/security-hardener.d.ts +61 -0
- package/dist/security/security-hardening-system.d.ts +238 -0
- package/dist/security/security-headers.d.ts +63 -0
- package/dist/security/security-orchestration-layer.d.ts +118 -0
- package/dist/security/security-scanner.d.ts +119 -0
- package/dist/services/inference-tuner.d.ts +76 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/session-cleanup-manager.d.ts +117 -0
- package/dist/session/session-monitor.d.ts +132 -0
- package/dist/session/session-state-manager.d.ts +144 -0
- package/dist/skills/boot-orchestrator/SKILL.md +1 -5
- package/dist/skills/orchestrator/SKILL.md +35 -12
- package/dist/skills/researcher/SKILL.md +17 -4
- package/dist/skills/strategist/SKILL.md +12 -0
- package/dist/skills/testing-strategy/SKILL.md +13 -2
- package/dist/skills/xray-orchestrator/index.d.ts +12 -0
- package/dist/state/context-providers.d.ts +4 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/state/state-manager.d.ts +41 -0
- package/dist/state/state-types.d.ts +5 -0
- package/dist/testing/memory-regression-suite.d.ts +105 -0
- package/dist/tools/assess-complexity-tool.d.ts +28 -0
- package/dist/tools/query-routing-tool.d.ts +17 -0
- package/dist/types/metamorphosis.d.ts +21 -0
- package/dist/utils/batch-operations.d.ts +25 -0
- package/dist/utils/codex-parser.d.ts +60 -0
- package/dist/utils/command-runner.d.ts +32 -0
- package/dist/utils/import-resolver.d.ts +54 -0
- package/dist/utils/language-detector.d.ts +43 -0
- package/dist/utils/path-resolver.d.ts +48 -0
- package/dist/utils/shutdown-handler.d.ts +26 -0
- package/dist/utils/task-graph.d.ts +29 -0
- package/dist/utils/test-template-generator.d.ts +25 -0
- package/dist/utils/token-manager.d.ts +48 -0
- package/dist/validation/agent-config-validator.d.ts +110 -0
- package/dist/validation/estimation-validator.d.ts +61 -0
- package/dist/validation/orchestration-flow-validator.d.ts +87 -0
- package/dist/validation/report-content-validator.d.ts +42 -0
- package/package.json +23 -8
- package/scripts/node/consumer-install-smoke.mjs +174 -0
- package/scripts/node/install-bridges.cjs +20 -6
- package/scripts/node/pre-publish-guard.js +107 -168
- package/scripts/node/reconcile-version.mjs +147 -0
- package/scripts/node/release-gate.mjs +66 -0
- package/scripts/node/release.js +5 -147
- package/scripts/node/release.mjs +106 -181
- package/scripts/node/setup.cjs +12 -22
- package/scripts/node/sync-versions.mjs +12 -134
- package/scripts/node/universal-version-manager.js +4 -0
- package/scripts/node/validate-release-docs.mjs +299 -0
- package/scripts/node/version-manager.mjs +225 -49
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +20 -3
- package/src/mcps/config/__tests__/server-config-registry.test.ts +9 -0
- package/src/mcps/config/server-config-registry.ts +5 -3
- package/src/mcps/governance.server.ts +15 -2
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +54 -3
- package/src/mcps/orchestrator/server.ts +1 -1
- package/src/mcps/researcher.server.ts +4 -0
- package/src/skills/boot-orchestrator/SKILL.md +1 -5
- package/src/skills/orchestrator/SKILL.md +35 -12
- package/src/skills/researcher/SKILL.md +17 -4
- package/src/skills/strategist/SKILL.md +12 -0
- package/src/skills/testing-strategy/SKILL.md +13 -2
- package/xray/config.json +25 -0
- package/xray/features.json +152 -0
- package/xray/features.schema.json +33 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Shared utilities for Grok CLI hooks — codex load, features, surface checks.
|
|
4
|
+
* Pure JS (no TS build) so hooks run from dist/ without compilation surprises.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import fs from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
|
|
10
|
+
export const LEAD_DEV_RULES = [
|
|
11
|
+
'Phased plan + todos; assign best subagent; monitor output',
|
|
12
|
+
'Lead dev loops test→fix until green; no permission pings',
|
|
13
|
+
'Per-suite test triage; full suite last',
|
|
14
|
+
'Lead stays main; subagents execute; update todos',
|
|
15
|
+
'Read all output; triage fix rerun',
|
|
16
|
+
'No buck-passing — resolve every error',
|
|
17
|
+
'Zero open errors at phase completion',
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
/** Blocking codex patterns detectable in proposed edits (term → regex + message) */
|
|
21
|
+
export const CODEX_BLOCK_PATTERNS = [
|
|
22
|
+
{ terms: [11], pattern: /:\s*any\b|as\s+any\b/g, message: 'Codex 11 Type Safety: no `any` types' },
|
|
23
|
+
{ terms: [11], pattern: /@ts-ignore|@ts-expect-error/g, message: 'Codex 11 Type Safety: no @ts-ignore / @ts-expect-error' },
|
|
24
|
+
{ terms: [29], pattern: /\beval\s*\(/g, message: 'Codex 29 Security: eval() prohibited' },
|
|
25
|
+
{ terms: [2], pattern: /\bTODO\b|\bFIXME\b|\bSTUB\b/g, message: 'Codex 2: no TODO/FIXME/STUB in production code' },
|
|
26
|
+
{ terms: [7], pattern: /console\.log\s*\(/g, message: 'Codex 7: no console.log debugging' },
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
/** New-surface paths blocked when no_new_surface is on (codex 69) */
|
|
30
|
+
export const SURFACE_DENY_PATTERNS = [
|
|
31
|
+
{ pattern: /(?:^|\/)src\/mcps\/[^/]+\.server\.(ts|js)$/i, message: 'Codex 69: new MCP server — rewire existing mcps/' },
|
|
32
|
+
{ pattern: /(?:^|\/)src\/skills\/[^/]+\/SKILL\.md$/i, message: 'Codex 69: new skill — extend orchestrator skill or existing mcps' },
|
|
33
|
+
{ pattern: /(?:^|\/)src\/mcps\/orchestrator\/handlers\/[^/]+-handler\.(ts|js)$/i, message: 'Codex 69: new orchestrator handler — merge into complexity-handler' },
|
|
34
|
+
{ pattern: /(?:^|\/)src\/nucleus\/autonomy-kernel\.(ts|js)$/i, message: 'Codex 69: parallel autonomy kernel — use existing nucleus' },
|
|
35
|
+
{ pattern: /(?:^|\/)src\/mcps\/[^/]+\/handlers\/autonomy-handler\.(ts|js)$/i, message: 'Codex 69: autonomy-handler removed — use complexity-handler' },
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const SUBAGENT_TOOLS = new Set([
|
|
39
|
+
'spawn_subagent',
|
|
40
|
+
'task',
|
|
41
|
+
'Task',
|
|
42
|
+
]);
|
|
43
|
+
|
|
44
|
+
const WRITE_TOOLS = new Set([
|
|
45
|
+
'search_replace',
|
|
46
|
+
'write',
|
|
47
|
+
'Write',
|
|
48
|
+
'Edit',
|
|
49
|
+
'MultiEdit',
|
|
50
|
+
'edit_notebook',
|
|
51
|
+
'EditNotebook',
|
|
52
|
+
]);
|
|
53
|
+
|
|
54
|
+
export function workspaceRoot() {
|
|
55
|
+
return (
|
|
56
|
+
process.env.GROK_WORKSPACE_ROOT ||
|
|
57
|
+
process.env.CLAUDE_PROJECT_DIR ||
|
|
58
|
+
process.env.XRAY_ROOT ||
|
|
59
|
+
process.cwd()
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function resolveFeaturesPath(root = workspaceRoot()) {
|
|
64
|
+
for (const p of [
|
|
65
|
+
path.join(root, '.xray', 'features.json'),
|
|
66
|
+
path.join(process.cwd(), '.xray', 'features.json'),
|
|
67
|
+
]) {
|
|
68
|
+
if (fs.existsSync(p)) return p;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function resolveCodexPath(root = workspaceRoot()) {
|
|
74
|
+
for (const p of [
|
|
75
|
+
path.join(root, '.xray', 'codex.json'),
|
|
76
|
+
path.join(process.cwd(), '.xray', 'codex.json'),
|
|
77
|
+
]) {
|
|
78
|
+
if (fs.existsSync(p)) return p;
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function loadFeatures() {
|
|
84
|
+
const featuresPath = resolveFeaturesPath();
|
|
85
|
+
if (!featuresPath) return { lead_dev_mode: true, no_new_surface: true, per_suite_triage: true };
|
|
86
|
+
try {
|
|
87
|
+
const data = JSON.parse(fs.readFileSync(featuresPath, 'utf8'));
|
|
88
|
+
const orch = data.multi_agent_orchestration ?? {};
|
|
89
|
+
return {
|
|
90
|
+
lead_dev_mode: orch.enabled !== false && orch.lead_dev_mode !== false,
|
|
91
|
+
no_new_surface: orch.no_new_surface !== false,
|
|
92
|
+
per_suite_test_triage: orch.per_suite_test_triage !== false,
|
|
93
|
+
};
|
|
94
|
+
} catch {
|
|
95
|
+
return { lead_dev_mode: true, no_new_surface: true, per_suite_triage: true };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function loadBlockingCodexTerms() {
|
|
100
|
+
const codexPath = resolveCodexPath();
|
|
101
|
+
if (!codexPath) return [];
|
|
102
|
+
try {
|
|
103
|
+
const data = JSON.parse(fs.readFileSync(codexPath, 'utf8'));
|
|
104
|
+
const terms = data.terms ?? {};
|
|
105
|
+
return Object.values(terms).filter(
|
|
106
|
+
(t) => t.enforcementLevel === 'blocking' || t.zeroTolerance === true,
|
|
107
|
+
);
|
|
108
|
+
} catch {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function leadDevPlanPath(root = workspaceRoot()) {
|
|
114
|
+
return path.join(root, '.xray', 'state', 'lead-dev-plan.json');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export function hasFreshLeadDevPlan(maxAgeMs = 4 * 60 * 60 * 1000) {
|
|
118
|
+
const planPath = leadDevPlanPath();
|
|
119
|
+
if (!fs.existsSync(planPath)) return false;
|
|
120
|
+
try {
|
|
121
|
+
const stat = fs.statSync(planPath);
|
|
122
|
+
if (Date.now() - stat.mtimeMs > maxAgeMs) return false;
|
|
123
|
+
const plan = JSON.parse(fs.readFileSync(planPath, 'utf8'));
|
|
124
|
+
return plan.active === true;
|
|
125
|
+
} catch {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function extractToolContext(event) {
|
|
131
|
+
const toolName = event.toolName || process.env.TOOL_NAME || 'unknown';
|
|
132
|
+
const toolInput = event.toolInput ?? {};
|
|
133
|
+
const paths = [];
|
|
134
|
+
let content = '';
|
|
135
|
+
|
|
136
|
+
if (toolInput.path) paths.push(String(toolInput.path));
|
|
137
|
+
if (toolInput.file_path) paths.push(String(toolInput.file_path));
|
|
138
|
+
if (toolInput.target_notebook) paths.push(String(toolInput.target_notebook));
|
|
139
|
+
if (Array.isArray(toolInput.paths)) paths.push(...toolInput.paths.map(String));
|
|
140
|
+
|
|
141
|
+
if (toolInput.new_string) content += String(toolInput.new_string);
|
|
142
|
+
if (toolInput.contents) content += String(toolInput.contents);
|
|
143
|
+
if (toolInput.command) content += String(toolInput.command);
|
|
144
|
+
if (toolInput.prompt) content += String(toolInput.prompt);
|
|
145
|
+
|
|
146
|
+
return { toolName, toolInput, paths, content, cmd: String(toolInput.command || '') };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function checkCodexPatterns(content) {
|
|
150
|
+
if (!content) return null;
|
|
151
|
+
for (const { message, pattern } of CODEX_BLOCK_PATTERNS) {
|
|
152
|
+
if (pattern.test(content)) return message;
|
|
153
|
+
pattern.lastIndex = 0;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export function checkSurfaceArea(paths, root = workspaceRoot()) {
|
|
159
|
+
for (const rel of paths) {
|
|
160
|
+
const normalized = rel.replace(/\\/g, '/');
|
|
161
|
+
const abs = path.isAbsolute(rel) ? rel : path.join(root, rel);
|
|
162
|
+
if (fs.existsSync(abs)) continue;
|
|
163
|
+
for (const { pattern, message } of SURFACE_DENY_PATTERNS) {
|
|
164
|
+
if (pattern.test(normalized)) return `${message} (blocked: ${normalized})`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function checkSubagentGate(toolName, features) {
|
|
171
|
+
if (!features.lead_dev_mode) return null;
|
|
172
|
+
if (!SUBAGENT_TOOLS.has(toolName)) return null;
|
|
173
|
+
if (hasFreshLeadDevPlan()) return null;
|
|
174
|
+
return (
|
|
175
|
+
'Codex 59/67: call xray-orchestrator analyze-complexity first — ' +
|
|
176
|
+
'writes .xray/state/lead-dev-plan.json required before spawn_subagent'
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export function checkFullTestSuite(cmd, features) {
|
|
181
|
+
if (!features.per_suite_test_triage) return null;
|
|
182
|
+
const cmdText = cmd.toLowerCase();
|
|
183
|
+
const isFullTestSuite =
|
|
184
|
+
/\b(npm\s+(run\s+)?test|vitest\s+run|pnpm\s+test|yarn\s+test)\b/.test(cmdText) &&
|
|
185
|
+
!/--\s+\S+\.test/.test(cmdText) &&
|
|
186
|
+
!/vitest\s+run\s+\S+\.test/.test(cmdText);
|
|
187
|
+
if (!isFullTestSuite) return null;
|
|
188
|
+
return (
|
|
189
|
+
'Lead-dev test protocol: run individual test files first; ' +
|
|
190
|
+
'full suite only after per-suite passes (override with focused test path)'
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export function isWriteTool(toolName) {
|
|
195
|
+
return WRITE_TOOLS.has(toolName) || /write|edit|replace/i.test(toolName);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export function isShellTool(toolName) {
|
|
199
|
+
return /terminal|bash|shell|run_terminal/i.test(toolName);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export async function readStdinJson() {
|
|
203
|
+
const chunks = [];
|
|
204
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
205
|
+
const raw = Buffer.concat(chunks).toString('utf8').trim();
|
|
206
|
+
if (!raw) return {};
|
|
207
|
+
try {
|
|
208
|
+
return JSON.parse(raw);
|
|
209
|
+
} catch {
|
|
210
|
+
return {};
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export function sessionBootPath(root = workspaceRoot()) {
|
|
215
|
+
return path.join(root, '.xray', 'state', 'session-boot.json');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export function buildSessionBootPayload(root, source = '0xray/grok-session-start', extra = {}) {
|
|
219
|
+
const features = loadFeatures();
|
|
220
|
+
const blockingTerms = loadBlockingCodexTerms();
|
|
221
|
+
return {
|
|
222
|
+
hook: source,
|
|
223
|
+
lead_dev_mode: features.lead_dev_mode,
|
|
224
|
+
no_new_surface: features.no_new_surface,
|
|
225
|
+
codexBlockingTermCount: blockingTerms.length,
|
|
226
|
+
codexTerms: [59, 67, 68, 69],
|
|
227
|
+
rules: features.lead_dev_mode ? LEAD_DEV_RULES : [],
|
|
228
|
+
mcpIntake: 'xray-orchestrator → analyze-complexity (required before spawn_subagent)',
|
|
229
|
+
enforcement: 'PreToolUse hook — codex patterns + surface area + spawn gate',
|
|
230
|
+
workspaceRoot: root,
|
|
231
|
+
sessionId: process.env.GROK_SESSION_ID || null,
|
|
232
|
+
timestamp: new Date().toISOString(),
|
|
233
|
+
source,
|
|
234
|
+
...extra,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export function writeSessionBoot(root, payload) {
|
|
239
|
+
try {
|
|
240
|
+
const stateDir = path.join(root, '.xray', 'state');
|
|
241
|
+
fs.mkdirSync(stateDir, { recursive: true });
|
|
242
|
+
fs.writeFileSync(sessionBootPath(root), JSON.stringify(payload, null, 2));
|
|
243
|
+
return sessionBootPath(root);
|
|
244
|
+
} catch {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/** Boot on SessionStart, UserPromptSubmit, or first PreToolUse if missing. */
|
|
250
|
+
export function ensureSessionBoot(root = workspaceRoot(), source = '0xray/grok-boot') {
|
|
251
|
+
const bootPath = sessionBootPath(root);
|
|
252
|
+
if (fs.existsSync(bootPath)) {
|
|
253
|
+
try {
|
|
254
|
+
const existing = JSON.parse(fs.readFileSync(bootPath, 'utf8'));
|
|
255
|
+
if (existing.lead_dev_mode !== undefined) return bootPath;
|
|
256
|
+
} catch {
|
|
257
|
+
/* rewrite corrupt boot */
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return writeSessionBoot(root, buildSessionBootPayload(root, source));
|
|
261
|
+
}
|
|
@@ -1,134 +1,104 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Grok CLI PreToolUse
|
|
4
|
-
*
|
|
5
|
-
* Real governance enforcement hook.
|
|
6
|
-
* When Grok is about to execute a tool (write_file, edit, terminal cmd, etc.),
|
|
7
|
-
* this script is spawned and runs the Dynamo Solar SSOT decision matrix.
|
|
3
|
+
* Grok CLI PreToolUse — ironclad OS gate
|
|
4
|
+
* Contract: stdin JSON → stdout {"decision":"allow"} | {"decision":"deny","reason":"..."}
|
|
8
5
|
*/
|
|
9
6
|
|
|
10
|
-
import
|
|
11
|
-
|
|
7
|
+
import {
|
|
8
|
+
checkCodexPatterns,
|
|
9
|
+
checkFullTestSuite,
|
|
10
|
+
checkSubagentGate,
|
|
11
|
+
checkSurfaceArea,
|
|
12
|
+
ensureSessionBoot,
|
|
13
|
+
isShellTool,
|
|
14
|
+
isWriteTool,
|
|
15
|
+
loadFeatures,
|
|
16
|
+
readStdinJson,
|
|
17
|
+
workspaceRoot,
|
|
18
|
+
} from './grok-hook-utils.js';
|
|
19
|
+
import { appendHookActivity } from './grok-hook-activity.js';
|
|
12
20
|
|
|
13
|
-
|
|
21
|
+
function finish(root, decision, reason, hint, toolName) {
|
|
22
|
+
const out = { decision };
|
|
23
|
+
if (reason) out.reason = reason;
|
|
24
|
+
if (hint) out.hint = hint;
|
|
25
|
+
console.log(JSON.stringify(out));
|
|
26
|
+
appendHookActivity(root, 'grok-pre-tool-use', decision, decision === 'deny' ? 'error' : 'info', {
|
|
27
|
+
tool: toolName,
|
|
28
|
+
reason: reason || hint || null,
|
|
29
|
+
livePath: true,
|
|
30
|
+
});
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
14
33
|
|
|
15
|
-
function
|
|
16
|
-
const
|
|
34
|
+
async function main() {
|
|
35
|
+
const root = workspaceRoot();
|
|
36
|
+
let toolName = 'unknown';
|
|
17
37
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (fs.existsSync(devCandidate)) return devCandidate;
|
|
23
|
-
}
|
|
38
|
+
try {
|
|
39
|
+
const event = await readStdinJson();
|
|
40
|
+
const eventRoot = event.workspaceRoot || event.cwd || root;
|
|
41
|
+
ensureSessionBoot(eventRoot, '0xray/grok-pre-tool-use-boot');
|
|
24
42
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// node_modules installed layout
|
|
30
|
-
path.resolve(process.cwd(), 'node_modules/0xray/dist/governance/governance-core.js'),
|
|
31
|
-
// Dev layout fallbacks (no extra dist/)
|
|
32
|
-
path.resolve(here, '../../../../../governance/governance-core.js'),
|
|
33
|
-
path.resolve(process.cwd(), 'dist/governance/governance-core.js'),
|
|
34
|
-
// Strong dev fallback: walk up looking for package.json
|
|
35
|
-
...walkUpForCore(here),
|
|
36
|
-
];
|
|
37
|
-
|
|
38
|
-
for (const c of candidates) {
|
|
39
|
-
if (fs.existsSync(c)) return c;
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
+
const features = loadFeatures();
|
|
44
|
+
const ctx = extractFromEvent(event);
|
|
45
|
+
toolName = ctx.toolName;
|
|
46
|
+
const { paths, content, cmd } = ctx;
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
52
|
-
if (pkg.name === '0xray') {
|
|
53
|
-
results.push(path.resolve(current, 'dist/governance/governance-core.js'));
|
|
54
|
-
results.push(path.resolve(current, 'governance/governance-core.js'));
|
|
55
|
-
}
|
|
56
|
-
} catch {}
|
|
48
|
+
const subagentBlock = checkSubagentGate(toolName, features);
|
|
49
|
+
if (subagentBlock) finish(eventRoot, 'deny', subagentBlock, null, toolName);
|
|
50
|
+
|
|
51
|
+
if (features.no_new_surface && isWriteTool(toolName) && paths.length) {
|
|
52
|
+
const surfaceBlock = checkSurfaceArea(paths, eventRoot);
|
|
53
|
+
if (surfaceBlock) finish(eventRoot, 'deny', surfaceBlock, null, toolName);
|
|
57
54
|
}
|
|
58
|
-
const parent = path.dirname(current);
|
|
59
|
-
if (parent === current) break;
|
|
60
|
-
current = parent;
|
|
61
|
-
}
|
|
62
|
-
return results;
|
|
63
|
-
}
|
|
64
55
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
['any', -0.25],
|
|
70
|
-
['eval(', -0.35],
|
|
71
|
-
['console.log', -0.15],
|
|
72
|
-
['// @ts-ignore', -0.2],
|
|
73
|
-
['require(', -0.1],
|
|
74
|
-
];
|
|
75
|
-
for (const [pat, pen] of penalties) {
|
|
76
|
-
if (text.includes(pat)) score += pen;
|
|
77
|
-
}
|
|
78
|
-
return Math.max(0.1, Math.min(0.99, score));
|
|
79
|
-
}
|
|
56
|
+
if (isWriteTool(toolName) && content) {
|
|
57
|
+
const codexBlock = checkCodexPatterns(content);
|
|
58
|
+
if (codexBlock) finish(eventRoot, 'deny', codexBlock, null, toolName);
|
|
59
|
+
}
|
|
80
60
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const corePath = findGovernanceCore();
|
|
90
|
-
let recommendation = 'ALLOW';
|
|
91
|
-
let resonance = deriveResonance(toolName, extraContext);
|
|
92
|
-
let govDetails = null;
|
|
93
|
-
|
|
94
|
-
if (corePath) {
|
|
95
|
-
try {
|
|
96
|
-
const core = await import(`file://${corePath}`);
|
|
97
|
-
if (typeof core.applyDecisionMatrix === 'function') {
|
|
98
|
-
const result = core.applyDecisionMatrix({
|
|
99
|
-
resonance,
|
|
100
|
-
isotopicRatio: resonance > 0.8 ? 0.96 : 0.7,
|
|
101
|
-
vortexVolume: 1_000_000,
|
|
102
|
-
historicalCoherence: 0.82,
|
|
103
|
-
solarActivity: 'active',
|
|
104
|
-
});
|
|
105
|
-
govDetails = result;
|
|
106
|
-
recommendation = result.recommendation || 'NEEDS_REVISION';
|
|
107
|
-
log(`Solar decision: ${recommendation} (resonance=${resonance.toFixed(2)})`);
|
|
108
|
-
}
|
|
109
|
-
} catch (e) {
|
|
110
|
-
log(`Governance core error: ${e.message}`);
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
log('Governance core not located — using safe default');
|
|
61
|
+
if (isShellTool(toolName) && cmd) {
|
|
62
|
+
const destructive =
|
|
63
|
+
/\brm\s+-rf\s+\/\b|\bmkfs\b|\bdd\s+if=|:()\s*\{\s*:\|&\s*\}\s*;:/i.test(cmd);
|
|
64
|
+
if (destructive) finish(eventRoot, 'deny', 'Blocked destructive shell command', null, toolName);
|
|
65
|
+
|
|
66
|
+
const testHint = checkFullTestSuite(cmd, features);
|
|
67
|
+
if (testHint) finish(eventRoot, 'allow', null, testHint, toolName);
|
|
114
68
|
}
|
|
115
69
|
|
|
116
|
-
|
|
117
|
-
tool: toolName,
|
|
118
|
-
decision: recommendation === 'PASS' ? 'allow' : 'allow_with_governance_note',
|
|
119
|
-
resonance: Number(resonance.toFixed(3)),
|
|
120
|
-
solar_recommendation: recommendation,
|
|
121
|
-
gov: govDetails,
|
|
122
|
-
timestamp: new Date().toISOString(),
|
|
123
|
-
source: '0xray/grok-pre-tool-use',
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
console.log(JSON.stringify(decision));
|
|
127
|
-
process.exit(0); // non-blocking rollout; future versions can exit(1) on strong reject
|
|
70
|
+
finish(eventRoot, 'allow', null, null, toolName);
|
|
128
71
|
} catch (err) {
|
|
129
|
-
|
|
130
|
-
|
|
72
|
+
appendHookActivity(root, 'grok-pre-tool-use', 'hook-error', 'error', {
|
|
73
|
+
tool: toolName,
|
|
74
|
+
error: err.message,
|
|
75
|
+
});
|
|
76
|
+
finish(root, 'allow', null, null, toolName);
|
|
131
77
|
}
|
|
132
78
|
}
|
|
133
79
|
|
|
80
|
+
function extractFromEvent(event) {
|
|
81
|
+
const toolName = event.toolName || process.env.TOOL_NAME || 'unknown';
|
|
82
|
+
const toolInput = event.toolInput ?? {};
|
|
83
|
+
const paths = [];
|
|
84
|
+
let content = '';
|
|
85
|
+
|
|
86
|
+
if (toolInput.path) paths.push(String(toolInput.path));
|
|
87
|
+
if (toolInput.file_path) paths.push(String(toolInput.file_path));
|
|
88
|
+
if (toolInput.target_notebook) paths.push(String(toolInput.target_notebook));
|
|
89
|
+
if (Array.isArray(toolInput.paths)) paths.push(...toolInput.paths.map(String));
|
|
90
|
+
|
|
91
|
+
if (toolInput.new_string) content += String(toolInput.new_string);
|
|
92
|
+
if (toolInput.contents) content += String(toolInput.contents);
|
|
93
|
+
if (toolInput.command) content += String(toolInput.command);
|
|
94
|
+
if (toolInput.prompt) content += String(toolInput.prompt);
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
toolName,
|
|
98
|
+
paths,
|
|
99
|
+
content,
|
|
100
|
+
cmd: String(toolInput.command || ''),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
134
104
|
main();
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Grok SessionStart / UserPromptSubmit — writes session-boot.json + activity.log.
|
|
4
|
+
* Stdout is ignored by Grok for these events; side effects are the suit contract.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
buildSessionBootPayload,
|
|
9
|
+
ensureSessionBoot,
|
|
10
|
+
readStdinJson,
|
|
11
|
+
workspaceRoot,
|
|
12
|
+
writeSessionBoot,
|
|
13
|
+
} from './grok-hook-utils.js';
|
|
14
|
+
import { appendHookActivity } from './grok-hook-activity.js';
|
|
15
|
+
|
|
16
|
+
const HOOK_EVENT = process.env.GROK_HOOK_EVENT || 'session_start';
|
|
17
|
+
|
|
18
|
+
async function main() {
|
|
19
|
+
const root = workspaceRoot();
|
|
20
|
+
try {
|
|
21
|
+
const event = await readStdinJson();
|
|
22
|
+
const eventRoot = event.workspaceRoot || event.cwd || root;
|
|
23
|
+
const source =
|
|
24
|
+
HOOK_EVENT === 'user_prompt_submit'
|
|
25
|
+
? '0xray/grok-user-prompt-submit'
|
|
26
|
+
: '0xray/grok-session-start';
|
|
27
|
+
|
|
28
|
+
const payload = buildSessionBootPayload(eventRoot, source, {
|
|
29
|
+
hookEvent: HOOK_EVENT,
|
|
30
|
+
sessionId: event.sessionId || process.env.GROK_SESSION_ID || null,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const bootPath = writeSessionBoot(eventRoot, payload) || ensureSessionBoot(eventRoot, source);
|
|
34
|
+
|
|
35
|
+
appendHookActivity(eventRoot, 'grok-session-start', 'session-boot-written', 'success', {
|
|
36
|
+
bootPath,
|
|
37
|
+
hookEvent: HOOK_EVENT,
|
|
38
|
+
lead_dev_mode: payload.lead_dev_mode,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
console.log(JSON.stringify(payload));
|
|
42
|
+
process.exit(0);
|
|
43
|
+
} catch (err) {
|
|
44
|
+
appendHookActivity(root, 'grok-session-start', 'session-boot-error', 'error', {
|
|
45
|
+
error: err.message,
|
|
46
|
+
hookEvent: HOOK_EVENT,
|
|
47
|
+
});
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
main();
|
|
@@ -20,11 +20,28 @@
|
|
|
20
20
|
"hooks": [
|
|
21
21
|
{
|
|
22
22
|
"type": "command",
|
|
23
|
-
"command": "
|
|
24
|
-
"args": [
|
|
23
|
+
"command": "node",
|
|
24
|
+
"args": [
|
|
25
|
+
"${XRAY_AI_PATH:-node_modules/0xray}/dist/integrations/grok/hooks/session-start.js"
|
|
26
|
+
],
|
|
27
|
+
"timeout": 15000
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"UserPromptSubmit": [
|
|
33
|
+
{
|
|
34
|
+
"hooks": [
|
|
35
|
+
{
|
|
36
|
+
"type": "command",
|
|
37
|
+
"command": "node",
|
|
38
|
+
"args": [
|
|
39
|
+
"${XRAY_AI_PATH:-node_modules/0xray}/dist/integrations/grok/hooks/session-start.js"
|
|
40
|
+
],
|
|
41
|
+
"timeout": 15000
|
|
25
42
|
}
|
|
26
43
|
]
|
|
27
44
|
}
|
|
28
45
|
]
|
|
29
46
|
}
|
|
30
|
-
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
* @since 2026-03-14
|
|
8
|
+
*/
|
|
9
|
+
import { XrayAPIServerConfig, AgentInvokeRequest, AgentInvokeResponse, APIServerStatistics } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Agent invoker interface - implemented by 0xRay
|
|
12
|
+
*/
|
|
13
|
+
export interface AgentInvoker {
|
|
14
|
+
invoke(request: AgentInvokeRequest): Promise<AgentInvokeResponse>;
|
|
15
|
+
getStatus?(): Promise<{
|
|
16
|
+
healthy: boolean;
|
|
17
|
+
version: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 0xRay API Server
|
|
22
|
+
*/
|
|
23
|
+
export declare class XrayAPIServer {
|
|
24
|
+
private server;
|
|
25
|
+
private config;
|
|
26
|
+
private agentInvoker;
|
|
27
|
+
private apiKey;
|
|
28
|
+
private stats;
|
|
29
|
+
private responseTimes;
|
|
30
|
+
private logger;
|
|
31
|
+
constructor(config: XrayAPIServerConfig);
|
|
32
|
+
/**
|
|
33
|
+
* Set the agent invoker
|
|
34
|
+
*/
|
|
35
|
+
setAgentInvoker(invoker: AgentInvoker): void;
|
|
36
|
+
/**
|
|
37
|
+
* Start the API server
|
|
38
|
+
*/
|
|
39
|
+
start(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Stop the API server
|
|
42
|
+
*/
|
|
43
|
+
stop(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if server is running
|
|
46
|
+
*/
|
|
47
|
+
isRunning(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Get server statistics
|
|
50
|
+
*/
|
|
51
|
+
getStats(): APIServerStatistics;
|
|
52
|
+
/**
|
|
53
|
+
* Handle incoming HTTP request
|
|
54
|
+
*/
|
|
55
|
+
private handleRequest;
|
|
56
|
+
/**
|
|
57
|
+
* Handle health check request
|
|
58
|
+
*/
|
|
59
|
+
private handleHealth;
|
|
60
|
+
/**
|
|
61
|
+
* Handle agent invoke request
|
|
62
|
+
*/
|
|
63
|
+
private handleAgentInvoke;
|
|
64
|
+
/**
|
|
65
|
+
* Handle agent status request
|
|
66
|
+
*/
|
|
67
|
+
private handleAgentStatus;
|
|
68
|
+
private handleGovern;
|
|
69
|
+
private handleApply;
|
|
70
|
+
/**
|
|
71
|
+
* Validate API key using constant-time comparison to prevent timing attacks
|
|
72
|
+
*/
|
|
73
|
+
private validateApiKey;
|
|
74
|
+
/**
|
|
75
|
+
* Read request body
|
|
76
|
+
*/
|
|
77
|
+
private readBody;
|
|
78
|
+
/**
|
|
79
|
+
* Send JSON response
|
|
80
|
+
*/
|
|
81
|
+
private sendResponse;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Factory function to create API server
|
|
85
|
+
*/
|
|
86
|
+
export declare function createXrayAPIServer(config: XrayAPIServerConfig): XrayAPIServer;
|