0xray 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/agents/api-design.yml +31 -0
- package/.opencode/agents/architect.yml +15 -0
- package/.opencode/agents/architecture-patterns.yml +14 -0
- package/.opencode/agents/auto-format.yml +14 -0
- package/.opencode/agents/backend-engineer.yml +12 -0
- package/.opencode/agents/boot-orchestrator.yml +14 -0
- package/.opencode/agents/bug-triage-specialist.yml +15 -0
- package/.opencode/agents/code-analyzer.yml +12 -0
- package/.opencode/agents/code-reviewer.yml +14 -0
- package/.opencode/agents/content-creator.yml +12 -0
- package/.opencode/agents/database-engineer.yml +12 -0
- package/.opencode/agents/devops-engineer.yml +12 -0
- package/.opencode/agents/framework-compliance-audit.yml +14 -0
- package/.opencode/agents/frontend-engineer.yml +12 -0
- package/.opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/.opencode/agents/git-workflow.yml +15 -0
- package/.opencode/agents/growth-strategist.yml +12 -0
- package/.opencode/agents/hermes-agent.yml +12 -0
- package/.opencode/agents/inference-improve.yml +12 -0
- package/.opencode/agents/lint.yml +14 -0
- package/.opencode/agents/log-monitor.yml +12 -0
- package/.opencode/agents/mobile-developer.yml +12 -0
- package/.opencode/agents/model-health-check.yml +12 -0
- package/.opencode/agents/multimodal-looker.yml +12 -0
- package/.opencode/agents/performance-analysis.yml +12 -0
- package/.opencode/agents/performance-engineer.yml +12 -0
- package/.opencode/agents/performance-optimization.yml +12 -0
- package/.opencode/agents/processor-pipeline.yml +14 -0
- package/.opencode/agents/project-analysis.yml +12 -0
- package/.opencode/agents/refactorer.yml +12 -0
- package/.opencode/agents/researcher.yml +12 -0
- package/.opencode/agents/security-auditor.yml +12 -0
- package/.opencode/agents/security-scan.yml +12 -0
- package/.opencode/agents/seo-consultant.yml +12 -0
- package/.opencode/agents/session-management.yml +12 -0
- package/.opencode/agents/state-manager.yml +12 -0
- package/.opencode/agents/storyteller.yml +12 -0
- package/.opencode/agents/strategist.yml +12 -0
- package/.opencode/agents/tech-writer.yml +12 -0
- package/.opencode/agents/testing-best-practices.yml +12 -0
- package/.opencode/agents/testing-lead.yml +12 -0
- package/.opencode/agents/ui-ux-design.yml +12 -0
- package/.opencode/codex.codex +8 -0
- package/.opencode/commands/auto-format.md +99 -0
- package/.opencode/commands/auto-summary-capture.md +90 -0
- package/.opencode/commands/dependency-audit.md +184 -0
- package/.opencode/commands/enforcer-daily-scan.md +137 -0
- package/.opencode/commands/framework-compliance-audit.md +205 -0
- package/.opencode/commands/interactive-validator.md +75 -0
- package/.opencode/commands/job-summary-logger.md +68 -0
- package/.opencode/commands/lint.md +11 -0
- package/.opencode/commands/mode-switch.md +95 -0
- package/.opencode/commands/model-health-check.md +186 -0
- package/.opencode/commands/performance-analysis.md +144 -0
- package/.opencode/commands/pre-commit-introspection.md +185 -0
- package/.opencode/commands/pre-commit-introspection.sh +133 -0
- package/.opencode/commands/security-scan.md +157 -0
- package/.opencode/commands/sisyphus-validation.md +128 -0
- package/.opencode/commands/summary-logger.md +83 -0
- package/.opencode/enforcer-config.json +285 -0
- package/.opencode/hooks/hook-metrics.json +380 -0
- package/.opencode/hooks/post-commit +114 -0
- package/.opencode/hooks/post-push +34 -0
- package/.opencode/init.sh +151 -0
- package/.opencode/skills/api-design/SKILL.md +37 -0
- package/.opencode/skills/architect-tools/SKILL.md +37 -0
- package/.opencode/skills/architecture-patterns/SKILL.md +37 -0
- package/.opencode/skills/auto-format/SKILL.md +37 -0
- package/.opencode/skills/backend-engineer/SKILL.md +49 -0
- package/.opencode/skills/boot-orchestrator/SKILL.md +37 -0
- package/.opencode/skills/bug-triage/SKILL.md +43 -0
- package/.opencode/skills/code-analyzer/SKILL.md +45 -0
- package/.opencode/skills/code-review/SKILL.md +52 -0
- package/.opencode/skills/content-creator/SKILL.md +38 -0
- package/.opencode/skills/database-engineer/SKILL.md +46 -0
- package/.opencode/skills/devops-engineer/SKILL.md +49 -0
- package/.opencode/skills/enforcer/SKILL.md +37 -0
- package/.opencode/skills/framework-compliance-audit/SKILL.md +37 -0
- package/.opencode/skills/frontend-engineer/SKILL.md +49 -0
- package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/.opencode/skills/git-workflow/SKILL.md +37 -0
- package/.opencode/skills/growth-strategist/SKILL.md +48 -0
- package/.opencode/skills/hermes-agent/SKILL.md +212 -0
- package/.opencode/skills/inference-improve/SKILL.md +97 -0
- package/.opencode/skills/lint/SKILL.md +37 -0
- package/.opencode/skills/log-monitor/SKILL.md +44 -0
- package/.opencode/skills/mobile-developer/SKILL.md +42 -0
- package/.opencode/skills/model-health-check/SKILL.md +37 -0
- package/.opencode/skills/multimodal-looker/SKILL.md +45 -0
- package/.opencode/skills/orchestrator/SKILL.md +37 -0
- package/.opencode/skills/performance-analysis/SKILL.md +37 -0
- package/.opencode/skills/performance-engineer/SKILL.md +41 -0
- package/.opencode/skills/performance-optimization/SKILL.md +37 -0
- package/.opencode/skills/processor-pipeline/SKILL.md +37 -0
- package/.opencode/skills/project-analysis/SKILL.md +42 -0
- package/.opencode/skills/refactoring-strategies/SKILL.md +37 -0
- package/.opencode/skills/registry.json +66 -0
- package/.opencode/skills/researcher/SKILL.md +37 -0
- package/.opencode/skills/security-audit/SKILL.md +47 -0
- package/.opencode/skills/security-scan/SKILL.md +37 -0
- package/.opencode/skills/seo-consultant/SKILL.md +43 -0
- package/.opencode/skills/session-management/SKILL.md +36 -0
- package/.opencode/skills/state-manager/SKILL.md +37 -0
- package/.opencode/skills/storyteller/SKILL.md +130 -0
- package/.opencode/skills/strategist/SKILL.md +32 -0
- package/.opencode/skills/tech-writer/SKILL.md +37 -0
- package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
- package/.opencode/skills/testing-strategy/SKILL.md +43 -0
- package/.opencode/skills/ui-ux-design/SKILL.md +603 -0
- package/.opencode/workflows/post-deployment-audit.yml +123 -0
- package/AGENTS.md +110 -0
- package/LICENSE +21 -0
- package/README.md +131 -0
- package/dist/AGENTS.md +110 -0
- package/dist/CHANGELOG.md +2182 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +131 -0
- package/dist/agents/architect.js +56 -0
- package/dist/agents/backend-engineer.js +81 -0
- package/dist/agents/bug-triage-specialist.js +74 -0
- package/dist/agents/code-analyzer.js +150 -0
- package/dist/agents/code-reviewer.js +69 -0
- package/dist/agents/content-creator.js +72 -0
- package/dist/agents/database-engineer.js +76 -0
- package/dist/agents/devops-engineer.js +84 -0
- package/dist/agents/frontend-engineer.js +78 -0
- package/dist/agents/frontend-ui-ux-engineer.js +64 -0
- package/dist/agents/growth-strategist.js +111 -0
- package/dist/agents/index.js +45 -0
- package/dist/agents/librarian-agents-updater.js +333 -0
- package/dist/agents/log-monitor.js +109 -0
- package/dist/agents/mobile-developer.js +102 -0
- package/dist/agents/multimodal-looker.js +93 -0
- package/dist/agents/performance-engineer.js +86 -0
- package/dist/agents/refactorer.js +80 -0
- package/dist/agents/registry.js +340 -0
- package/dist/agents/researcher.js +83 -0
- package/dist/agents/security-auditor.js +158 -0
- package/dist/agents/seo-consultant.js +53 -0
- package/dist/agents/strategist.js +47 -0
- package/dist/agents/tech-writer.js +84 -0
- package/dist/agents/testing-lead.js +95 -0
- package/dist/agents/types.js +1 -0
- package/dist/analytics/consent-manager.js +258 -0
- package/dist/analytics/emerging-pattern-detector.js +260 -0
- package/dist/analytics/pattern-learning-engine.js +278 -0
- package/dist/analytics/pattern-performance-tracker.js +336 -0
- package/dist/analytics/predictive-analytics.js +248 -0
- package/dist/analytics/prompt-pattern-analyzer.js +371 -0
- package/dist/analytics/routing-performance-analyzer.js +356 -0
- package/dist/analytics/routing-refiner.js +380 -0
- package/dist/analytics/simple-pattern-analyzer.js +297 -0
- package/dist/architect/architect-tools.js +437 -0
- package/dist/architect/architectural-integrity.js +78 -0
- package/dist/benchmark/performance-benchmark.js +372 -0
- package/dist/cli/commands/analytics-disable.js +72 -0
- package/dist/cli/commands/analytics-enable-action.js +82 -0
- package/dist/cli/commands/analytics-preview.js +106 -0
- package/dist/cli/commands/analytics-status.js +68 -0
- package/dist/cli/commands/antigravity-status.js +106 -0
- package/dist/cli/commands/archive-logs.js +161 -0
- package/dist/cli/commands/credible-init.js +82 -0
- package/dist/cli/commands/grok-install.js +16 -0
- package/dist/cli/commands/hermes-install.js +66 -0
- package/dist/cli/commands/mcp-install.js +253 -0
- package/dist/cli/commands/openclaw-install.js +44 -0
- package/dist/cli/commands/opencode-install.js +99 -0
- package/dist/cli/commands/plugin-commands.js +246 -0
- package/dist/cli/commands/publish-agent.js +184 -0
- package/dist/cli/commands/security-audit.js +219 -0
- package/dist/cli/commands/skill-install.js +481 -0
- package/dist/cli/commands/status.js +196 -0
- package/dist/cli/commands/storyteller.js +230 -0
- package/dist/cli/index.js +986 -0
- package/dist/cli/server.js +147 -0
- package/dist/config/default-agents.js +16 -0
- package/dist/core/activity-logger.js +260 -0
- package/dist/core/adaptive-kernel.js +192 -0
- package/dist/core/agent-spawn-gate.js +120 -0
- package/dist/core/boot-orchestrator.js +812 -0
- package/dist/core/bridge.mjs +945 -0
- package/dist/core/codex-formatter.js +220 -0
- package/dist/core/codex-injector.js +424 -0
- package/dist/core/config-loader.js +148 -0
- package/dist/core/config-paths.js +162 -0
- package/dist/core/context-loader.js +269 -0
- package/dist/core/context-validator.js +212 -0
- package/dist/core/features-config.js +457 -0
- package/dist/core/framework-logger.js +275 -0
- package/dist/core/index.js +6 -0
- package/dist/core/kernel-patterns.js +302 -0
- package/dist/core/logging-config.js +43 -0
- package/dist/core/model-router.js +175 -0
- package/dist/core/orchestrator.js +408 -0
- package/dist/core/system-prompt-generator.js +265 -0
- package/dist/core/trace-context.js +33 -0
- package/dist/core/xray-activation.js +134 -0
- package/dist/delegation/agent-delegator.js +769 -0
- package/dist/delegation/agent-expertise.js +156 -0
- package/dist/delegation/analytics/index.js +12 -0
- package/dist/delegation/analytics/learning-engine.js +277 -0
- package/dist/delegation/analytics/outcome-tracker.js +279 -0
- package/dist/delegation/analytics/routing-analytics.js +193 -0
- package/dist/delegation/ast-code-parser.js +878 -0
- package/dist/delegation/codebase-context-analyzer.js +1040 -0
- package/dist/delegation/complexity-analyzer.js +282 -0
- package/dist/delegation/complexity-core.js +219 -0
- package/dist/delegation/config/types.js +6 -0
- package/dist/delegation/dependency-graph-builder.js +409 -0
- package/dist/delegation/index.js +20 -0
- package/dist/delegation/metrics-aggregator.js +335 -0
- package/dist/delegation/session-coordinator.js +352 -0
- package/dist/delegation/strategy-selector.js +108 -0
- package/dist/delegation/voting-coordinator.js +375 -0
- package/dist/delegation/voting-types.js +10 -0
- package/dist/delegation/weighted-voting-aggregator.js +194 -0
- package/dist/enforcement/core/index.js +19 -0
- package/dist/enforcement/core/rule-executor.js +365 -0
- package/dist/enforcement/core/rule-hierarchy.js +259 -0
- package/dist/enforcement/core/rule-registry.js +240 -0
- package/dist/enforcement/core/violation-fixer.js +651 -0
- package/dist/enforcement/enforcer-tools.js +909 -0
- package/dist/enforcement/index.js +41 -0
- package/dist/enforcement/loaders/agent-triage-loader.js +222 -0
- package/dist/enforcement/loaders/agents-md-validation-loader.js +252 -0
- package/dist/enforcement/loaders/base-loader.js +86 -0
- package/dist/enforcement/loaders/codex-loader.js +396 -0
- package/dist/enforcement/loaders/index.js +40 -0
- package/dist/enforcement/loaders/loader-orchestrator.js +168 -0
- package/dist/enforcement/loaders/processor-loader.js +113 -0
- package/dist/enforcement/rule-enforcer.js +298 -0
- package/dist/enforcement/test-auto-healing.js +325 -0
- package/dist/enforcement/types.js +30 -0
- package/dist/enforcement/validators/architecture-validators.js +600 -0
- package/dist/enforcement/validators/base-validator.js +108 -0
- package/dist/enforcement/validators/code-quality-validators.js +336 -0
- package/dist/enforcement/validators/index.js +21 -0
- package/dist/enforcement/validators/security-validators.js +220 -0
- package/dist/enforcement/validators/testing-validators.js +253 -0
- package/dist/enforcement/validators/validator-registry.js +150 -0
- package/dist/execution/opencode-cli-invoker.js +173 -0
- package/dist/execution/proposal-applier.js +254 -0
- package/dist/governance/codex-policy.service.js +167 -0
- package/dist/governance/governance-core.js +152 -0
- package/dist/governance/governance-service.js +274 -0
- package/dist/governance/governance-types.js +6 -0
- package/dist/index.js +24 -0
- package/dist/inference/deploy-verifier.js +161 -0
- package/dist/inference/index.js +5 -0
- package/dist/inference/inference-accumulator.js +126 -0
- package/dist/inference/inference-cycle.js +1168 -0
- package/dist/inference/semantic-patterns.js +310 -0
- package/dist/inference/session-capture.js +308 -0
- package/dist/integrations/base/ExampleIntegration.js +181 -0
- package/dist/integrations/base/Integration.js +395 -0
- package/dist/integrations/base/README.md +446 -0
- package/dist/integrations/base/index.js +16 -0
- package/dist/integrations/base/registry.js +606 -0
- package/dist/integrations/base/types.js +118 -0
- package/dist/integrations/governance/governance-client.js +316 -0
- package/dist/integrations/governance/index.js +373 -0
- package/dist/integrations/governance/types.js +97 -0
- package/dist/integrations/grok/grok-cli.js +83 -0
- package/dist/integrations/grok/hooks/pre-tool-use.js +134 -0
- package/dist/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/dist/integrations/hermes-agent/__init__.py +718 -0
- package/dist/integrations/hermes-agent/after-install.md +71 -0
- package/dist/integrations/hermes-agent/bridge.mjs +861 -0
- package/dist/integrations/hermes-agent/conftest.py +14 -0
- package/dist/integrations/hermes-agent/plugin.yaml +12 -0
- package/dist/integrations/hermes-agent/schemas.py +100 -0
- package/dist/integrations/hermes-agent/test_plugin.py +1100 -0
- package/dist/integrations/hermes-agent/tools.py +253 -0
- package/dist/integrations/openclaw/README.md +134 -0
- package/dist/integrations/openclaw/api-server.js +389 -0
- package/dist/integrations/openclaw/client.js +492 -0
- package/dist/integrations/openclaw/config.js +374 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.js +280 -0
- package/dist/integrations/openclaw/index.js +351 -0
- package/dist/integrations/openclaw/types.js +153 -0
- package/dist/integrations/plugins/index.js +10 -0
- package/dist/integrations/plugins/plugin-integration.js +606 -0
- package/dist/integrations/plugins/plugin-registry.js +580 -0
- package/dist/mcps/agent-resolver.js +106 -0
- package/dist/mcps/architect-tools.server.js +277 -0
- package/dist/mcps/auto-format.server.js +413 -0
- package/dist/mcps/boot-orchestrator.server.js +853 -0
- package/dist/mcps/config/config-loader.js +103 -0
- package/dist/mcps/config/config-validator.js +101 -0
- package/dist/mcps/config/index.js +30 -0
- package/dist/mcps/config/plugin-server-registry.js +223 -0
- package/dist/mcps/config/server-config-registry.js +348 -0
- package/dist/mcps/connection/connection-manager.js +79 -0
- package/dist/mcps/connection/connection-pool.js +164 -0
- package/dist/mcps/connection/mcp-connection.js +233 -0
- package/dist/mcps/connection/process-spawner.js +34 -0
- package/dist/mcps/enforcer-tools.server.js +778 -0
- package/dist/mcps/estimation.server.js +192 -0
- package/dist/mcps/framework-compliance-audit.server.js +500 -0
- package/dist/mcps/framework-help.server.js +400 -0
- package/dist/mcps/governance.server.js +464 -0
- package/dist/mcps/in-process-skill-registry.js +48 -0
- package/dist/mcps/knowledge-skills/api-design.server.js +123 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +113 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +474 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +605 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +847 -0
- package/dist/mcps/knowledge-skills/content-creator.server.js +256 -0
- package/dist/mcps/knowledge-skills/database-design.server.js +822 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +1180 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.js +115 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +361 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.js +451 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.js +525 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1063 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +1587 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.js +811 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +796 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +846 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +937 -0
- package/dist/mcps/knowledge-skills/session-management.server.js +470 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +729 -0
- package/dist/mcps/knowledge-skills/strategist.server.js +217 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.js +1191 -0
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +866 -0
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +827 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1538 -0
- package/dist/mcps/lint.server.js +381 -0
- package/dist/mcps/mcp-client.js +574 -0
- package/dist/mcps/model-health-check.server.js +228 -0
- package/dist/mcps/orchestrator/config/agent-capabilities.js +87 -0
- package/dist/mcps/orchestrator/execution/execution-planner.js +279 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +94 -0
- package/dist/mcps/orchestrator/handlers/status-handler.js +232 -0
- package/dist/mcps/orchestrator/handlers/task-handler.js +197 -0
- package/dist/mcps/orchestrator/server.js +305 -0
- package/dist/mcps/orchestrator/types.js +6 -0
- package/dist/mcps/orchestrator.server.js +19 -0
- package/dist/mcps/performance-analysis.server.js +519 -0
- package/dist/mcps/processor-pipeline.server.js +561 -0
- package/dist/mcps/protocol/protocol-constants.js +46 -0
- package/dist/mcps/registry.json +110 -0
- package/dist/mcps/researcher.server.js +504 -0
- package/dist/mcps/security-scan.server.js +531 -0
- package/dist/mcps/simulation/index.js +12 -0
- package/dist/mcps/simulation/server-simulations.js +219 -0
- package/dist/mcps/simulation/simulation-engine.js +96 -0
- package/dist/mcps/state-manager.server.js +637 -0
- package/dist/mcps/tools/index.js +14 -0
- package/dist/mcps/tools/tool-cache.js +112 -0
- package/dist/mcps/tools/tool-discovery.js +65 -0
- package/dist/mcps/tools/tool-executor.js +75 -0
- package/dist/mcps/tools/tool-registry.js +67 -0
- package/dist/mcps/types/index.js +15 -0
- package/dist/mcps/types/json-rpc.types.js +7 -0
- package/dist/mcps/types/mcp.types.js +7 -0
- package/dist/metrics/agent-metrics.js +574 -0
- package/dist/metrics/index.js +6 -0
- package/dist/monitoring/advanced-profiler.js +232 -0
- package/dist/monitoring/memory-monitor.js +315 -0
- package/dist/monitoring/nudge-watchdog.js +356 -0
- package/dist/monitoring/test-auto-generation-monitor.js +157 -0
- package/dist/orchestrator/agent-spawn-governor.js +559 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +399 -0
- package/dist/orchestrator/intelligent-commit-batcher.js +353 -0
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +456 -0
- package/dist/orchestrator/orchestrator.js +657 -0
- package/dist/orchestrator/self-direction-activation.js +245 -0
- package/dist/orchestrator/universal-librarian-consultation.js +216 -0
- package/dist/orchestrator/universal-registry-bridge.js +247 -0
- package/dist/performance/performance-budget-enforcer.js +434 -0
- package/dist/performance/performance-regression-tester.js +342 -0
- package/dist/plugin/xray-codex-injection.js +857 -0
- package/dist/postprocessor/PostProcessor.js +1048 -0
- package/dist/postprocessor/analysis/FailureAnalysisEngine.js +245 -0
- package/dist/postprocessor/autofix/AutoFixEngine.js +254 -0
- package/dist/postprocessor/autofix/FixValidator.js +56 -0
- package/dist/postprocessor/config.js +65 -0
- package/dist/postprocessor/escalation/EscalationEngine.js +492 -0
- package/dist/postprocessor/monitoring/MonitoringEngine.js +125 -0
- package/dist/postprocessor/redeploy/RedeployCoordinator.js +342 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +131 -0
- package/dist/postprocessor/success/SuccessHandler.js +134 -0
- package/dist/postprocessor/triggers/APITrigger.js +115 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +551 -0
- package/dist/postprocessor/triggers/WebhookTrigger.js +211 -0
- package/dist/postprocessor/types.js +4 -0
- package/dist/processors/doc-write-guard.js +46 -0
- package/dist/processors/implementations/agents-md-validation-processor.js +286 -0
- package/dist/processors/implementations/async-pattern-processor.js +158 -0
- package/dist/processors/implementations/codex-compliance-processor.js +57 -0
- package/dist/processors/implementations/commit-batcher-processor.js +71 -0
- package/dist/processors/implementations/console-log-guard-processor.js +163 -0
- package/dist/processors/implementations/coverage-analysis-processor.js +138 -0
- package/dist/processors/implementations/error-boundary-processor.js +44 -0
- package/dist/processors/implementations/inference-improvement-processor.js +270 -0
- package/dist/processors/implementations/log-protection-processor.js +118 -0
- package/dist/processors/implementations/nudge-processor.js +130 -0
- package/dist/processors/implementations/performance-budget-processor.js +217 -0
- package/dist/processors/implementations/postprocessor-chain-validator.js +149 -0
- package/dist/processors/implementations/pre-validate-processor.js +18 -0
- package/dist/processors/implementations/publish-preflight-processor.js +249 -0
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +33 -0
- package/dist/processors/implementations/refactoring-logging-processor.js +96 -0
- package/dist/processors/implementations/regression-testing-processor.js +59 -0
- package/dist/processors/implementations/session-capture-processor.js +37 -0
- package/dist/processors/implementations/session-summary-processor.js +130 -0
- package/dist/processors/implementations/spawn-governance-processor.js +219 -0
- package/dist/processors/implementations/state-validation-processor.js +15 -0
- package/dist/processors/implementations/storytelling-trigger-processor.js +589 -0
- package/dist/processors/implementations/test-auto-creation-processor.js +484 -0
- package/dist/processors/implementations/test-execution-processor.js +132 -0
- package/dist/processors/implementations/typescript-compilation-processor.js +87 -0
- package/dist/processors/implementations/version-compliance-processor.js +350 -0
- package/dist/processors/processor-interfaces.js +126 -0
- package/dist/processors/processor-manager.js +826 -0
- package/dist/processors/processor-types.js +12 -0
- package/dist/public/about.html +228 -0
- package/dist/public/enterprise.html +27 -0
- package/dist/public/features.html +102 -0
- package/dist/public/index.html +145 -0
- package/dist/reporting/framework-reporting-system.js +187 -0
- package/dist/reporting/log-parser.js +281 -0
- package/dist/reporting/metrics.js +202 -0
- package/dist/reporting/report-formatter.js +146 -0
- package/dist/reporting/types.js +1 -0
- package/dist/scripts/activate-kernel-pipeline.js +101 -0
- package/dist/scripts/integration.js +234 -0
- package/dist/scripts/pre-command +26 -0
- package/dist/scripts/pre-command.mjs +358 -0
- package/dist/security/comprehensive-security-audit.js +1005 -0
- package/dist/security/index.js +13 -0
- package/dist/security/prompt-security-validator.js +148 -0
- package/dist/security/security-agent-coordinator.js +204 -0
- package/dist/security/security-auditor.js +584 -0
- package/dist/security/security-hardener.js +170 -0
- package/dist/security/security-hardening-system.js +727 -0
- package/dist/security/security-headers.js +118 -0
- package/dist/security/security-orchestration-layer.js +496 -0
- package/dist/security/security-scanner.js +429 -0
- package/dist/services/inference-tuner.js +301 -0
- package/dist/session/index.js +3 -0
- package/dist/session/session-cleanup-manager.js +366 -0
- package/dist/session/session-monitor.js +503 -0
- package/dist/session/session-state-manager.js +522 -0
- package/dist/skills/api-design/SKILL.md +37 -0
- package/dist/skills/architect-tools/SKILL.md +37 -0
- package/dist/skills/architecture-patterns/SKILL.md +37 -0
- package/dist/skills/auto-format/SKILL.md +37 -0
- package/dist/skills/backend-engineer/SKILL.md +49 -0
- package/dist/skills/boot-orchestrator/SKILL.md +37 -0
- package/dist/skills/bug-triage/SKILL.md +43 -0
- package/dist/skills/code-analyzer/SKILL.md +45 -0
- package/dist/skills/code-review/SKILL.md +52 -0
- package/dist/skills/content-creator/SKILL.md +38 -0
- package/dist/skills/database-engineer/SKILL.md +46 -0
- package/dist/skills/devops-engineer/SKILL.md +49 -0
- package/dist/skills/enforcer/SKILL.md +37 -0
- package/dist/skills/framework-compliance-audit/SKILL.md +37 -0
- package/dist/skills/frontend-engineer/SKILL.md +49 -0
- package/dist/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/dist/skills/git-workflow/SKILL.md +37 -0
- package/dist/skills/growth-strategist/SKILL.md +48 -0
- package/dist/skills/hermes-agent/SKILL.md +212 -0
- package/dist/skills/inference-improve/SKILL.md +97 -0
- package/dist/skills/lint/SKILL.md +37 -0
- package/dist/skills/log-monitor/SKILL.md +44 -0
- package/dist/skills/mobile-developer/SKILL.md +42 -0
- package/dist/skills/model-health-check/SKILL.md +37 -0
- package/dist/skills/multimodal-looker/SKILL.md +45 -0
- package/dist/skills/orchestrator/SKILL.md +37 -0
- package/dist/skills/performance-analysis/SKILL.md +37 -0
- package/dist/skills/performance-engineer/SKILL.md +41 -0
- package/dist/skills/performance-optimization/SKILL.md +37 -0
- package/dist/skills/processor-pipeline/SKILL.md +37 -0
- package/dist/skills/project-analysis/SKILL.md +42 -0
- package/dist/skills/refactoring-strategies/SKILL.md +37 -0
- package/dist/skills/registry.json +66 -0
- package/dist/skills/researcher/SKILL.md +37 -0
- package/dist/skills/security-audit/SKILL.md +48 -0
- package/dist/skills/security-scan/SKILL.md +37 -0
- package/dist/skills/seo-consultant/SKILL.md +43 -0
- package/dist/skills/session-management/SKILL.md +36 -0
- package/dist/skills/state-manager/SKILL.md +37 -0
- package/dist/skills/storyteller/SKILL.md +130 -0
- package/dist/skills/strategist/SKILL.md +32 -0
- package/dist/skills/tech-writer/SKILL.md +37 -0
- package/dist/skills/testing-best-practices/SKILL.md +37 -0
- package/dist/skills/testing-strategy/SKILL.md +43 -0
- package/dist/skills/ui-ux-design/SKILL.md +603 -0
- package/dist/state/context-providers.js +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/state-manager.js +208 -0
- package/dist/state/state-types.js +1 -0
- package/dist/testing/memory-regression-suite.js +258 -0
- package/dist/utils/batch-operations.js +292 -0
- package/dist/utils/codex-parser.js +445 -0
- package/dist/utils/command-runner.js +96 -0
- package/dist/utils/import-resolver.js +189 -0
- package/dist/utils/language-detector.js +383 -0
- package/dist/utils/path-resolver.js +112 -0
- package/dist/utils/shutdown-handler.js +75 -0
- package/dist/utils/test-template-generator.js +178 -0
- package/dist/utils/token-manager.js +163 -0
- package/dist/validation/estimation-validator.js +241 -0
- package/dist/validation/report-content-validator.js +218 -0
- package/opencode.json +153 -0
- package/package.json +170 -0
- package/scripts/helpers/resolve-config-path.cjs +57 -0
- package/scripts/helpers/resolve-config-path.mjs +73 -0
- package/scripts/hooks/pre-command +26 -0
- package/scripts/hooks/pre-command.mjs +358 -0
- package/scripts/hooks/run-hook.js +570 -0
- package/scripts/mjs/test-consumer-readiness.mjs +273 -0
- package/scripts/mjs/test-mcp-functionality.mjs +507 -0
- package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
- package/scripts/mjs/validate-postinstall-config.mjs +308 -0
- package/scripts/node/auto-reflection-generator.mjs +496 -0
- package/scripts/node/basic-security-audit.cjs +338 -0
- package/scripts/node/ci-cd-auto-fix.cjs +263 -0
- package/scripts/node/ci-report-generator.mjs +227 -0
- package/scripts/node/enforce-agents-md.mjs +420 -0
- package/scripts/node/enforce-version-compliance.sh +22 -0
- package/scripts/node/enforce-version-compliance.ts +126 -0
- package/scripts/node/github-actions-monitor.cjs +23 -0
- package/scripts/node/govern-reflection.mjs +160 -0
- package/scripts/node/postinstall.cjs +78 -0
- package/scripts/node/pre-publish-guard.js +267 -0
- package/scripts/node/prepare-consumer.cjs +143 -0
- package/scripts/node/reflection-processor.cjs +213 -0
- package/scripts/node/reflection-validate.sh +194 -0
- package/scripts/node/release-tweet.mjs +39 -0
- package/scripts/node/release.js +159 -0
- package/scripts/node/release.mjs +213 -0
- package/scripts/node/setup-dev.cjs +83 -0
- package/scripts/node/setup.cjs +214 -0
- package/scripts/node/sync-versions.mjs +140 -0
- package/scripts/node/universal-version-manager.js +1025 -0
- package/scripts/node/validate-external-processes.js +265 -0
- package/scripts/node/validate-mcp-connectivity.js +258 -0
- package/scripts/node/version-manager.mjs +524 -0
- package/scripts/validate-stringray-comprehensive.js +636 -0
- package/src/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/src/mcps/agent-resolver.ts +168 -0
- package/src/mcps/architect-tools.server.ts +343 -0
- package/src/mcps/auto-format.server.ts +529 -0
- package/src/mcps/boot-orchestrator.server.ts +1082 -0
- package/src/mcps/config/__tests__/config-loader.test.ts +338 -0
- package/src/mcps/config/__tests__/config-validator.test.ts +646 -0
- package/src/mcps/config/__tests__/server-config-registry.test.ts +257 -0
- package/src/mcps/config/config-loader.ts +127 -0
- package/src/mcps/config/config-validator.ts +127 -0
- package/src/mcps/config/index.ts +32 -0
- package/src/mcps/config/plugin-server-registry.ts +335 -0
- package/src/mcps/config/server-config-registry.ts +395 -0
- package/src/mcps/connection/connection-manager.ts +91 -0
- package/src/mcps/connection/connection-pool.ts +216 -0
- package/src/mcps/connection/mcp-connection.ts +327 -0
- package/src/mcps/connection/process-spawner.ts +47 -0
- package/src/mcps/enforcer-tools.server.ts +1106 -0
- package/src/mcps/estimation.server.ts +229 -0
- package/src/mcps/framework-compliance-audit.server.ts +635 -0
- package/src/mcps/framework-help.server.ts +467 -0
- package/src/mcps/governance.server.ts +551 -0
- package/src/mcps/in-process-skill-registry.ts +79 -0
- package/src/mcps/knowledge-skills/api-design.server.test.ts +41 -0
- package/src/mcps/knowledge-skills/api-design.server.ts +160 -0
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +152 -0
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +624 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.test.ts +129 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +591 -0
- package/src/mcps/knowledge-skills/code-review.server.ts +1132 -0
- package/src/mcps/knowledge-skills/content-creator.server.ts +300 -0
- package/src/mcps/knowledge-skills/database-design.server.ts +1200 -0
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +1622 -0
- package/src/mcps/knowledge-skills/git-workflow.server.ts +152 -0
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +413 -0
- package/src/mcps/knowledge-skills/log-monitor.server.ts +619 -0
- package/src/mcps/knowledge-skills/mobile-development.server.ts +672 -0
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1500 -0
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +2065 -0
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1111 -0
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +1092 -0
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +112 -0
- package/src/mcps/knowledge-skills/security-audit.server.ts +1193 -0
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1160 -0
- package/src/mcps/knowledge-skills/session-management.server.ts +576 -0
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +941 -0
- package/src/mcps/knowledge-skills/strategist.server.ts +267 -0
- package/src/mcps/knowledge-skills/tech-writer.server.ts +1638 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +136 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +1232 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +100 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +1172 -0
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +2076 -0
- package/src/mcps/lint.server.ts +483 -0
- package/src/mcps/mcp-client.ts +706 -0
- package/src/mcps/model-health-check.server.ts +292 -0
- package/src/mcps/orchestrator/config/agent-capabilities.ts +108 -0
- package/src/mcps/orchestrator/execution/execution-planner.ts +353 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +125 -0
- package/src/mcps/orchestrator/handlers/status-handler.ts +295 -0
- package/src/mcps/orchestrator/handlers/task-handler.ts +268 -0
- package/src/mcps/orchestrator/server.ts +388 -0
- package/src/mcps/orchestrator/types.ts +81 -0
- package/src/mcps/orchestrator.server.ts +34 -0
- package/src/mcps/performance-analysis.server.ts +715 -0
- package/src/mcps/processor-pipeline.server.ts +778 -0
- package/src/mcps/protocol/protocol-constants.ts +51 -0
- package/src/mcps/registry.json +110 -0
- package/src/mcps/researcher.server.ts +595 -0
- package/src/mcps/security-scan.server.ts +651 -0
- package/src/mcps/simulation/__tests__/simulation-engine.test.ts +275 -0
- package/src/mcps/simulation/index.ts +23 -0
- package/src/mcps/simulation/server-simulations.ts +241 -0
- package/src/mcps/simulation/simulation-engine.ts +126 -0
- package/src/mcps/state-manager.server.ts +777 -0
- package/src/mcps/tools/__tests__/tool-cache.test.ts +205 -0
- package/src/mcps/tools/__tests__/tool-discovery.test.ts +189 -0
- package/src/mcps/tools/__tests__/tool-executor.test.ts +215 -0
- package/src/mcps/tools/__tests__/tool-registry.test.ts +230 -0
- package/src/mcps/tools/index.ts +15 -0
- package/src/mcps/tools/tool-cache.ts +145 -0
- package/src/mcps/tools/tool-discovery.ts +83 -0
- package/src/mcps/tools/tool-executor.ts +106 -0
- package/src/mcps/tools/tool-registry.ts +78 -0
- package/src/mcps/types/__tests__/types.test.ts +341 -0
- package/src/mcps/types/index.ts +17 -0
- package/src/mcps/types/json-rpc.types.ts +38 -0
- package/src/mcps/types/mcp.types.ts +115 -0
- package/src/opencode/agents/api-design.yml +31 -0
- package/src/opencode/agents/architect.yml +15 -0
- package/src/opencode/agents/architecture-patterns.yml +14 -0
- package/src/opencode/agents/auto-format.yml +14 -0
- package/src/opencode/agents/backend-engineer.yml +12 -0
- package/src/opencode/agents/boot-orchestrator.yml +14 -0
- package/src/opencode/agents/bug-triage-specialist.yml +15 -0
- package/src/opencode/agents/code-analyzer.yml +12 -0
- package/src/opencode/agents/code-reviewer.yml +14 -0
- package/src/opencode/agents/content-creator.yml +12 -0
- package/src/opencode/agents/database-engineer.yml +12 -0
- package/src/opencode/agents/devops-engineer.yml +12 -0
- package/src/opencode/agents/framework-compliance-audit.yml +14 -0
- package/src/opencode/agents/frontend-engineer.yml +12 -0
- package/src/opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/src/opencode/agents/git-workflow.yml +15 -0
- package/src/opencode/agents/growth-strategist.yml +12 -0
- package/src/opencode/agents/hermes-agent.yml +12 -0
- package/src/opencode/agents/inference-improve.yml +12 -0
- package/src/opencode/agents/lint.yml +14 -0
- package/src/opencode/agents/log-monitor.yml +12 -0
- package/src/opencode/agents/mobile-developer.yml +12 -0
- package/src/opencode/agents/model-health-check.yml +12 -0
- package/src/opencode/agents/multimodal-looker.yml +12 -0
- package/src/opencode/agents/performance-analysis.yml +12 -0
- package/src/opencode/agents/performance-engineer.yml +12 -0
- package/src/opencode/agents/performance-optimization.yml +12 -0
- package/src/opencode/agents/processor-pipeline.yml +14 -0
- package/src/opencode/agents/project-analysis.yml +12 -0
- package/src/opencode/agents/refactorer.yml +12 -0
- package/src/opencode/agents/researcher.yml +12 -0
- package/src/opencode/agents/security-auditor.yml +12 -0
- package/src/opencode/agents/security-scan.yml +12 -0
- package/src/opencode/agents/seo-consultant.yml +12 -0
- package/src/opencode/agents/session-management.yml +12 -0
- package/src/opencode/agents/state-manager.yml +12 -0
- package/src/opencode/agents/storyteller.yml +12 -0
- package/src/opencode/agents/strategist.yml +12 -0
- package/src/opencode/agents/tech-writer.yml +12 -0
- package/src/opencode/agents/testing-best-practices.yml +12 -0
- package/src/opencode/agents/testing-lead.yml +12 -0
- package/src/opencode/agents/ui-ux-design.yml +12 -0
- package/src/opencode/codex.codex +8 -0
- package/src/opencode/commands/auto-format.md +99 -0
- package/src/opencode/commands/auto-summary-capture.md +90 -0
- package/src/opencode/commands/dependency-audit.md +184 -0
- package/src/opencode/commands/enforcer-daily-scan.md +137 -0
- package/src/opencode/commands/framework-compliance-audit.md +205 -0
- package/src/opencode/commands/interactive-validator.md +75 -0
- package/src/opencode/commands/job-summary-logger.md +68 -0
- package/src/opencode/commands/lint.md +11 -0
- package/src/opencode/commands/mode-switch.md +95 -0
- package/src/opencode/commands/model-health-check.md +186 -0
- package/src/opencode/commands/performance-analysis.md +144 -0
- package/src/opencode/commands/pre-commit-introspection.md +185 -0
- package/src/opencode/commands/pre-commit-introspection.sh +133 -0
- package/src/opencode/commands/security-scan.md +157 -0
- package/src/opencode/commands/sisyphus-validation.md +128 -0
- package/src/opencode/commands/summary-logger.md +83 -0
- package/src/opencode/enforcer-config.json +285 -0
- package/src/opencode/openclaw/config.json +25 -0
- package/src/opencode/workflows/post-deployment-audit.yml +123 -0
- package/src/skills/api-design/SKILL.md +37 -0
- package/src/skills/architect-tools/SKILL.md +37 -0
- package/src/skills/architecture-patterns/SKILL.md +37 -0
- package/src/skills/auto-format/SKILL.md +37 -0
- package/src/skills/backend-engineer/SKILL.md +49 -0
- package/src/skills/boot-orchestrator/SKILL.md +37 -0
- package/src/skills/bug-triage/SKILL.md +43 -0
- package/src/skills/code-analyzer/SKILL.md +45 -0
- package/src/skills/code-review/SKILL.md +52 -0
- package/src/skills/content-creator/SKILL.md +38 -0
- package/src/skills/database-engineer/SKILL.md +46 -0
- package/src/skills/devops-engineer/SKILL.md +49 -0
- package/src/skills/enforcer/SKILL.md +37 -0
- package/src/skills/framework-compliance-audit/SKILL.md +37 -0
- package/src/skills/frontend-engineer/SKILL.md +49 -0
- package/src/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/src/skills/git-workflow/SKILL.md +37 -0
- package/src/skills/growth-strategist/SKILL.md +48 -0
- package/src/skills/hermes-agent/SKILL.md +212 -0
- package/src/skills/inference-improve/SKILL.md +97 -0
- package/src/skills/lint/SKILL.md +37 -0
- package/src/skills/log-monitor/SKILL.md +44 -0
- package/src/skills/mobile-developer/SKILL.md +42 -0
- package/src/skills/model-health-check/SKILL.md +37 -0
- package/src/skills/multimodal-looker/SKILL.md +45 -0
- package/src/skills/orchestrator/SKILL.md +37 -0
- package/src/skills/performance-analysis/SKILL.md +37 -0
- package/src/skills/performance-engineer/SKILL.md +41 -0
- package/src/skills/performance-optimization/SKILL.md +37 -0
- package/src/skills/processor-pipeline/SKILL.md +37 -0
- package/src/skills/project-analysis/SKILL.md +42 -0
- package/src/skills/refactoring-strategies/SKILL.md +37 -0
- package/src/skills/registry.json +66 -0
- package/src/skills/researcher/SKILL.md +37 -0
- package/src/skills/security-audit/SKILL.md +48 -0
- package/src/skills/security-scan/SKILL.md +37 -0
- package/src/skills/seo-consultant/SKILL.md +43 -0
- package/src/skills/session-management/SKILL.md +36 -0
- package/src/skills/state-manager/SKILL.md +37 -0
- package/src/skills/storyteller/SKILL.md +130 -0
- package/src/skills/strategist/SKILL.md +32 -0
- package/src/skills/tech-writer/SKILL.md +37 -0
- package/src/skills/testing-best-practices/SKILL.md +37 -0
- package/src/skills/testing-strategy/SKILL.md +43 -0
- package/src/skills/ui-ux-design/SKILL.md +603 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
// Consumer runtime compat shim from prior StringRay releases (1-line min per Scope Rule; primary xray paths + XRAY_||STRRAY_ env + .strray fallbacks)
|
|
2
|
+
import { frameworkLogger } from "../core/framework-logger.js";
|
|
3
|
+
import crypto from "crypto";
|
|
4
|
+
export class StringRayPerformanceBenchmark {
|
|
5
|
+
results = [];
|
|
6
|
+
activeBenchmarks = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* Start a benchmark measurement
|
|
9
|
+
*/
|
|
10
|
+
startBenchmark(operation, metadata = {}) {
|
|
11
|
+
const benchmarkId = `${operation}_${Date.now()}_${crypto.randomBytes(4).toString("hex")}`;
|
|
12
|
+
this.activeBenchmarks.set(benchmarkId, {
|
|
13
|
+
startTime: performance.now(),
|
|
14
|
+
metadata,
|
|
15
|
+
});
|
|
16
|
+
return benchmarkId;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* End a benchmark measurement
|
|
20
|
+
*/
|
|
21
|
+
endBenchmark(benchmarkId, success = true, error) {
|
|
22
|
+
const activeBenchmark = this.activeBenchmarks.get(benchmarkId);
|
|
23
|
+
if (!activeBenchmark) {
|
|
24
|
+
frameworkLogger.log("performance-benchmark", "benchmark-not-found", "warning", { benchmarkId });
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const endTime = performance.now();
|
|
28
|
+
const duration = endTime - activeBenchmark.startTime;
|
|
29
|
+
const result = {
|
|
30
|
+
operation: benchmarkId.split("_")[0] || "unknown",
|
|
31
|
+
startTime: activeBenchmark.startTime,
|
|
32
|
+
endTime,
|
|
33
|
+
duration,
|
|
34
|
+
success,
|
|
35
|
+
metadata: activeBenchmark.metadata,
|
|
36
|
+
error,
|
|
37
|
+
};
|
|
38
|
+
this.results.push(result);
|
|
39
|
+
this.activeBenchmarks.delete(benchmarkId);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Benchmark boot sequence performance
|
|
44
|
+
*/
|
|
45
|
+
async benchmarkBootSequence(_bootOrchestrator) {
|
|
46
|
+
const result = {
|
|
47
|
+
totalBootTime: 0,
|
|
48
|
+
phaseTimings: {},
|
|
49
|
+
componentLoadTimes: {},
|
|
50
|
+
memoryUsage: {
|
|
51
|
+
beforeBoot: 0,
|
|
52
|
+
afterBoot: 0,
|
|
53
|
+
peakDuringBoot: 0,
|
|
54
|
+
},
|
|
55
|
+
success: false,
|
|
56
|
+
errors: [],
|
|
57
|
+
};
|
|
58
|
+
const bootStartTime = performance.now();
|
|
59
|
+
const peakMemory = 0;
|
|
60
|
+
try {
|
|
61
|
+
// Measure initial memory
|
|
62
|
+
result.memoryUsage.beforeBoot = process.memoryUsage().heapUsed;
|
|
63
|
+
// Phase 1: Orchestrator loading
|
|
64
|
+
const orchestratorStart = performance.now();
|
|
65
|
+
const benchmarkId = this.startBenchmark("orchestrator_load");
|
|
66
|
+
// Boot sequence will be executed by the caller
|
|
67
|
+
const orchestratorResult = this.endBenchmark(benchmarkId, true);
|
|
68
|
+
if (orchestratorResult) {
|
|
69
|
+
result.phaseTimings.orchestrator_load = orchestratorResult.duration;
|
|
70
|
+
result.componentLoadTimes.orchestrator = orchestratorResult.duration;
|
|
71
|
+
}
|
|
72
|
+
// Phase 2: Delegation system initialization
|
|
73
|
+
const delegationStart = performance.now();
|
|
74
|
+
const delegationBenchmarkId = this.startBenchmark("delegation_init");
|
|
75
|
+
// This will be measured during actual boot
|
|
76
|
+
const delegationResult = this.endBenchmark(delegationBenchmarkId, true);
|
|
77
|
+
if (delegationResult) {
|
|
78
|
+
result.phaseTimings.delegation_init = delegationResult.duration;
|
|
79
|
+
result.componentLoadTimes.delegation_system = delegationResult.duration;
|
|
80
|
+
}
|
|
81
|
+
// Phase 3: Session management initialization
|
|
82
|
+
const sessionStart = performance.now();
|
|
83
|
+
const sessionBenchmarkId = this.startBenchmark("session_management_init");
|
|
84
|
+
const sessionResult = this.endBenchmark(sessionBenchmarkId, true);
|
|
85
|
+
if (sessionResult) {
|
|
86
|
+
result.phaseTimings.session_management_init = sessionResult.duration;
|
|
87
|
+
result.componentLoadTimes.session_management = sessionResult.duration;
|
|
88
|
+
}
|
|
89
|
+
// Phase 4: Processor activation
|
|
90
|
+
const processorStart = performance.now();
|
|
91
|
+
const processorBenchmarkId = this.startBenchmark("processor_activation");
|
|
92
|
+
const processorResult = this.endBenchmark(processorBenchmarkId, true);
|
|
93
|
+
if (processorResult) {
|
|
94
|
+
result.phaseTimings.processor_activation = processorResult.duration;
|
|
95
|
+
result.componentLoadTimes.processor_pipeline = processorResult.duration;
|
|
96
|
+
}
|
|
97
|
+
// Phase 5: Agent loading
|
|
98
|
+
const agentStart = performance.now();
|
|
99
|
+
const agentBenchmarkId = this.startBenchmark("agent_loading");
|
|
100
|
+
const agentResult = this.endBenchmark(agentBenchmarkId, true);
|
|
101
|
+
if (agentResult) {
|
|
102
|
+
result.phaseTimings.agent_loading = agentResult.duration;
|
|
103
|
+
result.componentLoadTimes.agent_loading = agentResult.duration;
|
|
104
|
+
}
|
|
105
|
+
// Phase 6: Enforcement activation
|
|
106
|
+
const enforcementStart = performance.now();
|
|
107
|
+
const enforcementBenchmarkId = this.startBenchmark("enforcement_activation");
|
|
108
|
+
const enforcementResult = this.endBenchmark(enforcementBenchmarkId, true);
|
|
109
|
+
if (enforcementResult) {
|
|
110
|
+
result.phaseTimings.enforcement_activation = enforcementResult.duration;
|
|
111
|
+
result.componentLoadTimes.enforcement_system =
|
|
112
|
+
enforcementResult.duration;
|
|
113
|
+
}
|
|
114
|
+
// Phase 7: Codex compliance activation
|
|
115
|
+
const codexStart = performance.now();
|
|
116
|
+
const codexBenchmarkId = this.startBenchmark("codex_compliance_activation");
|
|
117
|
+
const codexResult = this.endBenchmark(codexBenchmarkId, true);
|
|
118
|
+
if (codexResult) {
|
|
119
|
+
result.phaseTimings.codex_compliance_activation = codexResult.duration;
|
|
120
|
+
result.componentLoadTimes.codex_compliance = codexResult.duration;
|
|
121
|
+
}
|
|
122
|
+
// Calculate total boot time
|
|
123
|
+
result.totalBootTime = performance.now() - bootStartTime;
|
|
124
|
+
result.memoryUsage.afterBoot = process.memoryUsage().heapUsed;
|
|
125
|
+
result.memoryUsage.peakDuringBoot = peakMemory;
|
|
126
|
+
result.success = true;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
result.errors.push(error instanceof Error ? error.message : String(error));
|
|
130
|
+
result.success = false;
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Benchmark orchestrator task execution
|
|
136
|
+
*/
|
|
137
|
+
async benchmarkOrchestratorTasks(_orchestrator, taskCount = 10, concurrentTasks = 3) {
|
|
138
|
+
const result = {
|
|
139
|
+
taskExecutionTimes: [],
|
|
140
|
+
delegationLatencies: [],
|
|
141
|
+
conflictResolutionTimes: [],
|
|
142
|
+
concurrentTaskThroughput: 0,
|
|
143
|
+
dependencyResolutionTime: 0,
|
|
144
|
+
overallSuccess: true,
|
|
145
|
+
};
|
|
146
|
+
try {
|
|
147
|
+
// Benchmark single task execution
|
|
148
|
+
for (let i = 0; i < taskCount; i++) {
|
|
149
|
+
const taskStart = performance.now();
|
|
150
|
+
const benchmarkId = this.startBenchmark(`single_task_${i}`, {
|
|
151
|
+
taskId: `task_${i}`,
|
|
152
|
+
});
|
|
153
|
+
// Simulate task execution
|
|
154
|
+
await new Promise((resolve) => setTimeout(resolve, Math.random() * 100 + 50));
|
|
155
|
+
const taskResult = this.endBenchmark(benchmarkId, true);
|
|
156
|
+
if (taskResult) {
|
|
157
|
+
result.taskExecutionTimes.push(taskResult.duration);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Benchmark concurrent task execution
|
|
161
|
+
const concurrentStart = performance.now();
|
|
162
|
+
const concurrentPromises = [];
|
|
163
|
+
for (let i = 0; i < concurrentTasks; i++) {
|
|
164
|
+
const benchmarkId = this.startBenchmark(`concurrent_task_${i}`, {
|
|
165
|
+
concurrent: true,
|
|
166
|
+
});
|
|
167
|
+
const promise = new Promise((resolve) => {
|
|
168
|
+
setTimeout(() => {
|
|
169
|
+
this.endBenchmark(benchmarkId, true);
|
|
170
|
+
resolve();
|
|
171
|
+
}, Math.random() * 200 + 100);
|
|
172
|
+
});
|
|
173
|
+
concurrentPromises.push(promise);
|
|
174
|
+
}
|
|
175
|
+
await Promise.all(concurrentPromises);
|
|
176
|
+
const concurrentEnd = performance.now();
|
|
177
|
+
result.concurrentTaskThroughput =
|
|
178
|
+
concurrentTasks / ((concurrentEnd - concurrentStart) / 1000);
|
|
179
|
+
// Benchmark complex task with dependencies
|
|
180
|
+
const dependencyStart = performance.now();
|
|
181
|
+
const dependencyBenchmarkId = this.startBenchmark("dependency_resolution");
|
|
182
|
+
const complexTasks = [
|
|
183
|
+
{
|
|
184
|
+
id: "task_a",
|
|
185
|
+
description: "Task A",
|
|
186
|
+
subagentType: "architect",
|
|
187
|
+
dependencies: [],
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
id: "task_b",
|
|
191
|
+
description: "Task B",
|
|
192
|
+
subagentType: "code-reviewer",
|
|
193
|
+
dependencies: ["task_a"],
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: "task_c",
|
|
197
|
+
description: "Task C",
|
|
198
|
+
subagentType: "researcher",
|
|
199
|
+
dependencies: ["task_b"],
|
|
200
|
+
},
|
|
201
|
+
];
|
|
202
|
+
// Simulate dependency resolution
|
|
203
|
+
await new Promise((resolve) => setTimeout(resolve, 150));
|
|
204
|
+
const dependencyResult = this.endBenchmark(dependencyBenchmarkId, true);
|
|
205
|
+
if (dependencyResult) {
|
|
206
|
+
result.dependencyResolutionTime = dependencyResult.duration;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
result.overallSuccess = false;
|
|
211
|
+
await frameworkLogger.log("performance-benchmark", "orchestrator-benchmarking-failed", "error", { error: String(error) });
|
|
212
|
+
}
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Benchmark session management operations
|
|
217
|
+
*/
|
|
218
|
+
async benchmarkSessionOperations(_sessionStateManager, operationCount = 20) {
|
|
219
|
+
const result = {
|
|
220
|
+
stateShareLatencies: [],
|
|
221
|
+
dependencyUpdateTimes: [],
|
|
222
|
+
groupOperationTimes: [],
|
|
223
|
+
migrationTimes: [],
|
|
224
|
+
failoverTimes: [],
|
|
225
|
+
concurrentSessionOperations: 0,
|
|
226
|
+
};
|
|
227
|
+
try {
|
|
228
|
+
// Benchmark state sharing
|
|
229
|
+
for (let i = 0; i < operationCount; i++) {
|
|
230
|
+
const shareStart = performance.now();
|
|
231
|
+
const benchmarkId = this.startBenchmark(`state_share_${i}`, {
|
|
232
|
+
operation: "share",
|
|
233
|
+
});
|
|
234
|
+
// Simulate state sharing
|
|
235
|
+
await new Promise((resolve) => setTimeout(resolve, Math.random() * 20 + 5));
|
|
236
|
+
const shareResult = this.endBenchmark(benchmarkId, true);
|
|
237
|
+
if (shareResult) {
|
|
238
|
+
result.stateShareLatencies.push(shareResult.duration);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Benchmark dependency operations
|
|
242
|
+
for (let i = 0; i < operationCount / 2; i++) {
|
|
243
|
+
const depStart = performance.now();
|
|
244
|
+
const benchmarkId = this.startBenchmark(`dependency_update_${i}`, {
|
|
245
|
+
operation: "dependency",
|
|
246
|
+
});
|
|
247
|
+
// Simulate dependency update
|
|
248
|
+
await new Promise((resolve) => setTimeout(resolve, Math.random() * 30 + 10));
|
|
249
|
+
const depResult = this.endBenchmark(benchmarkId, true);
|
|
250
|
+
if (depResult) {
|
|
251
|
+
result.dependencyUpdateTimes.push(depResult.duration);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Benchmark group operations
|
|
255
|
+
const groupStart = performance.now();
|
|
256
|
+
const groupBenchmarkId = this.startBenchmark("group_operations", {
|
|
257
|
+
operation: "group",
|
|
258
|
+
});
|
|
259
|
+
// Simulate group operations
|
|
260
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
261
|
+
const groupResult = this.endBenchmark(groupBenchmarkId, true);
|
|
262
|
+
if (groupResult) {
|
|
263
|
+
result.groupOperationTimes.push(groupResult.duration);
|
|
264
|
+
}
|
|
265
|
+
// Benchmark migration simulation
|
|
266
|
+
const migrationStart = performance.now();
|
|
267
|
+
const migrationBenchmarkId = this.startBenchmark("session_migration", {
|
|
268
|
+
operation: "migration",
|
|
269
|
+
});
|
|
270
|
+
// Simulate migration
|
|
271
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
272
|
+
const migrationResult = this.endBenchmark(migrationBenchmarkId, true);
|
|
273
|
+
if (migrationResult) {
|
|
274
|
+
result.migrationTimes.push(migrationResult.duration);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
await frameworkLogger.log("performance-benchmark", "session-benchmarking-failed", "error", { error: String(error) });
|
|
279
|
+
}
|
|
280
|
+
return result;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Calculate performance metrics from benchmark results
|
|
284
|
+
*/
|
|
285
|
+
calculateMetrics(operationFilter) {
|
|
286
|
+
const filteredResults = operationFilter
|
|
287
|
+
? this.results.filter((r) => r.operation.includes(operationFilter))
|
|
288
|
+
: this.results;
|
|
289
|
+
if (filteredResults.length === 0) {
|
|
290
|
+
return {
|
|
291
|
+
totalOperations: 0,
|
|
292
|
+
successfulOperations: 0,
|
|
293
|
+
failedOperations: 0,
|
|
294
|
+
averageDuration: 0,
|
|
295
|
+
medianDuration: 0,
|
|
296
|
+
p95Duration: 0,
|
|
297
|
+
p99Duration: 0,
|
|
298
|
+
minDuration: 0,
|
|
299
|
+
maxDuration: 0,
|
|
300
|
+
throughput: 0,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
const durations = filteredResults
|
|
304
|
+
.map((r) => r.duration)
|
|
305
|
+
.sort((a, b) => a - b);
|
|
306
|
+
const successful = filteredResults.filter((r) => r.success);
|
|
307
|
+
const totalTime = Math.max(...filteredResults.map((r) => r.endTime)) -
|
|
308
|
+
Math.min(...filteredResults.map((r) => r.startTime));
|
|
309
|
+
const avgDuration = durations.length > 0
|
|
310
|
+
? durations.reduce((a, b) => a + b, 0) / durations.length
|
|
311
|
+
: 0;
|
|
312
|
+
const medianIndex = Math.floor(durations.length / 2);
|
|
313
|
+
const medianDuration = durations.length > 0 ? durations[medianIndex] : 0;
|
|
314
|
+
const p95Index = Math.floor(durations.length * 0.95);
|
|
315
|
+
const p95Duration = durations.length > 0 ? durations[p95Index] : 0;
|
|
316
|
+
const p99Index = Math.floor(durations.length * 0.99);
|
|
317
|
+
const p99Duration = durations.length > 0 ? durations[p99Index] : 0;
|
|
318
|
+
const minDuration = durations.length > 0 ? Math.min(...durations) : 0;
|
|
319
|
+
const maxDuration = durations.length > 0 ? Math.max(...durations) : 0;
|
|
320
|
+
return {
|
|
321
|
+
totalOperations: filteredResults.length,
|
|
322
|
+
successfulOperations: successful.length,
|
|
323
|
+
failedOperations: filteredResults.length - successful.length,
|
|
324
|
+
averageDuration: avgDuration,
|
|
325
|
+
medianDuration,
|
|
326
|
+
p95Duration,
|
|
327
|
+
p99Duration,
|
|
328
|
+
minDuration,
|
|
329
|
+
maxDuration,
|
|
330
|
+
throughput: filteredResults.length / (totalTime / 1000),
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Generate comprehensive benchmark report
|
|
335
|
+
*/
|
|
336
|
+
generateReport() {
|
|
337
|
+
const summary = this.calculateMetrics();
|
|
338
|
+
const report = {
|
|
339
|
+
summary,
|
|
340
|
+
recommendations: [],
|
|
341
|
+
};
|
|
342
|
+
// Analyze results and generate recommendations
|
|
343
|
+
if (summary.averageDuration > 100) {
|
|
344
|
+
report.recommendations.push("Consider optimizing slow operations (>100ms average)");
|
|
345
|
+
}
|
|
346
|
+
if (summary.failedOperations > 0) {
|
|
347
|
+
report.recommendations.push(`${summary.failedOperations} operations failed - investigate error patterns`);
|
|
348
|
+
}
|
|
349
|
+
if (summary.p95Duration > 500) {
|
|
350
|
+
report.recommendations.push("P95 latency >500ms - consider performance optimizations");
|
|
351
|
+
}
|
|
352
|
+
if (summary.throughput < 10) {
|
|
353
|
+
report.recommendations.push("Low throughput (<10 ops/sec) - evaluate bottlenecks");
|
|
354
|
+
}
|
|
355
|
+
return report;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Clear all benchmark results
|
|
359
|
+
*/
|
|
360
|
+
clearResults() {
|
|
361
|
+
this.results = [];
|
|
362
|
+
this.activeBenchmarks.clear();
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Export results for external analysis
|
|
366
|
+
*/
|
|
367
|
+
exportResults() {
|
|
368
|
+
return [...this.results];
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
// Export singleton instance
|
|
372
|
+
export const performanceBenchmark = new StringRayPerformanceBenchmark();
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics Disable CLI Command
|
|
3
|
+
*
|
|
4
|
+
* Disables 0xRay Central Analytics with immediate opt-out
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx 0xray analytics disable
|
|
7
|
+
*/
|
|
8
|
+
import { program } from "commander";
|
|
9
|
+
import { ConsentManager } from "../../analytics/consent-manager.js";
|
|
10
|
+
export const analyticsDisableCommand = program
|
|
11
|
+
.command("analytics disable")
|
|
12
|
+
.description("Disable 0xRay Central Analytics (opt-out)")
|
|
13
|
+
.option("-y, --yes", "Skip confirmation prompts", false)
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
console.log("š Disabling 0xRay Central Analytics...\n");
|
|
16
|
+
try {
|
|
17
|
+
const consentManager = new ConsentManager();
|
|
18
|
+
const currentStatus = await consentManager.initialize();
|
|
19
|
+
// Check if already disabled
|
|
20
|
+
if (!currentStatus.analyticsEnabled) {
|
|
21
|
+
console.log("ā
Analytics is already disabled!");
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Show what will be disabled
|
|
25
|
+
console.log("š Current Status:");
|
|
26
|
+
console.log(` Project ID: ${currentStatus.projectId}`);
|
|
27
|
+
console.log(` Enabled Categories: ${Object.entries(currentStatus.categories)
|
|
28
|
+
.filter(([_, enabled]) => enabled)
|
|
29
|
+
.map(([cat]) => cat)
|
|
30
|
+
.join(', ')}`);
|
|
31
|
+
console.log(` Submissions will: STOP IMMEDIATELY`);
|
|
32
|
+
// Confirmation
|
|
33
|
+
if (!options.yes) {
|
|
34
|
+
console.log(`\nā ļø This will immediately stop all data submission.`);
|
|
35
|
+
console.log(` ⢠Existing submission queue will be cleared`);
|
|
36
|
+
console.log(` ⢠Your project ID will be preserved in config`);
|
|
37
|
+
console.log(` ⢠You can re-enable anytime: npx 0xray analytics enable\n`);
|
|
38
|
+
const readline = await import('readline');
|
|
39
|
+
const rl = readline.createInterface({
|
|
40
|
+
input: process.stdin,
|
|
41
|
+
output: process.stdout
|
|
42
|
+
});
|
|
43
|
+
const answer = await new Promise((resolve) => {
|
|
44
|
+
rl.question("Do you want to proceed? (yes/no): ", resolve);
|
|
45
|
+
});
|
|
46
|
+
rl.close();
|
|
47
|
+
if (answer.toLowerCase() !== 'yes' && answer.toLowerCase() !== 'y') {
|
|
48
|
+
console.log("ā Consent not disabled. Aborted.");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Disable consent
|
|
53
|
+
await consentManager.disableConsent();
|
|
54
|
+
// Show success
|
|
55
|
+
console.log("\nā
Analytics successfully disabled!");
|
|
56
|
+
console.log(`\nš All data submission has stopped.`);
|
|
57
|
+
console.log(`\nš Your consent configuration:`);
|
|
58
|
+
const updatedStatus = await consentManager.getStatus();
|
|
59
|
+
console.log(` Project ID: ${updatedStatus.projectId}`);
|
|
60
|
+
console.log(` Opt-Out Date: ${updatedStatus.lastOptOut?.toISOString()}`);
|
|
61
|
+
console.log(` Analytics Enabled: ${updatedStatus.analyticsEnabled}`);
|
|
62
|
+
console.log(`\nš” Re-enable anytime:`);
|
|
63
|
+
console.log(` npx 0xray analytics enable`);
|
|
64
|
+
console.log(`\nš Learn more: docs/architecture/central-analytics-store.md`);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error("ā Failed to disable analytics:", error instanceof Error ? error.message : String(error));
|
|
68
|
+
console.error("\nš” Try: npx 0xray analytics disable --help");
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
export default analyticsDisableCommand;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics Enable Action
|
|
3
|
+
*
|
|
4
|
+
* Enables 0xRay Central Analytics with opt-in consent
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx 0xray analytics enable [--categories reflections,logs,metrics,patterns]
|
|
7
|
+
*/
|
|
8
|
+
import { ConsentManager } from "../../analytics/consent-manager.js";
|
|
9
|
+
export async function analyticsEnableAction(options) {
|
|
10
|
+
console.log("š Enabling 0xRay Central Analytics...\n");
|
|
11
|
+
try {
|
|
12
|
+
const consentManager = new ConsentManager();
|
|
13
|
+
const currentStatus = await consentManager.initialize();
|
|
14
|
+
// Check if already enabled
|
|
15
|
+
if (currentStatus.analyticsEnabled) {
|
|
16
|
+
console.log("ā
Analytics is already enabled!");
|
|
17
|
+
console.log(`\nCurrent Status:`);
|
|
18
|
+
console.log(` Project ID: ${currentStatus.projectId}`);
|
|
19
|
+
console.log(` Categories: ${Object.entries(currentStatus.categories)
|
|
20
|
+
.filter(([_, enabled]) => enabled)
|
|
21
|
+
.map(([cat]) => cat)
|
|
22
|
+
.join(', ')}`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Parse categories
|
|
26
|
+
let categories;
|
|
27
|
+
if (options.all) {
|
|
28
|
+
categories = ["reflections", "logs", "metrics", "patterns"];
|
|
29
|
+
}
|
|
30
|
+
else if (options.categories) {
|
|
31
|
+
categories = options.categories.split(',').map((c) => c.trim());
|
|
32
|
+
}
|
|
33
|
+
// Show what will be enabled
|
|
34
|
+
console.log("š Configuration:");
|
|
35
|
+
console.log(` Categories to enable: ${categories ? categories.join(', ') : 'all'}`);
|
|
36
|
+
console.log(` Project ID will be: ${currentStatus.projectId}`);
|
|
37
|
+
console.log(` Consent version: 1.0`);
|
|
38
|
+
// Confirmation
|
|
39
|
+
if (!options.yes) {
|
|
40
|
+
console.log(`\nā ļø This will enable anonymous data submission to 0xRay Central Analytics.`);
|
|
41
|
+
console.log(` ⢠Data is anonymized before submission`);
|
|
42
|
+
console.log(` ⢠You can disable anytime with: npx 0xray analytics disable`);
|
|
43
|
+
console.log(` ⢠Preview what would be submitted: npx 0xray analytics preview`);
|
|
44
|
+
console.log(` ⢠Learn more: docs/architecture/central-analytics-store.md\n`);
|
|
45
|
+
const readline = await import('readline');
|
|
46
|
+
const rl = readline.createInterface({
|
|
47
|
+
input: process.stdin,
|
|
48
|
+
output: process.stdout
|
|
49
|
+
});
|
|
50
|
+
const answer = await new Promise((resolve) => {
|
|
51
|
+
rl.question("Do you want to proceed? (yes/no): ", resolve);
|
|
52
|
+
});
|
|
53
|
+
rl.close();
|
|
54
|
+
if (answer.toLowerCase() !== 'yes' && answer.toLowerCase() !== 'y') {
|
|
55
|
+
console.log("ā Consent not enabled. Aborted.");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Enable consent
|
|
60
|
+
await consentManager.enableConsent(categories);
|
|
61
|
+
// Show success
|
|
62
|
+
console.log("\nā
Analytics successfully enabled!");
|
|
63
|
+
console.log(`\nš Your project can now contribute to community learning!`);
|
|
64
|
+
console.log(`\nš Your consent configuration:`);
|
|
65
|
+
const updatedStatus = await consentManager.getStatus();
|
|
66
|
+
console.log(` Project ID: ${updatedStatus.projectId}`);
|
|
67
|
+
console.log(` Consent Date: ${updatedStatus.consentDate.toISOString()}`);
|
|
68
|
+
console.log(` Categories Enabled: ${Object.entries(updatedStatus.categories)
|
|
69
|
+
.filter(([_, enabled]) => enabled)
|
|
70
|
+
.map(([cat]) => cat)
|
|
71
|
+
.join(', ')}`);
|
|
72
|
+
console.log(`\nš” Next steps:`);
|
|
73
|
+
console.log(` 1. Check what will be submitted: npx 0xray analytics preview`);
|
|
74
|
+
console.log(` 2. View current status: npx 0xray analytics status`);
|
|
75
|
+
console.log(` 3. Disable anytime: npx 0xray analytics disable`);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error("ā Failed to enable analytics:", error instanceof Error ? error.message : String(error));
|
|
79
|
+
console.error("\nš” Try: npx 0xray analytics enable --help");
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics Preview CLI Command
|
|
3
|
+
*
|
|
4
|
+
* Shows what data would be submitted without actually submitting it
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx 0xray analytics preview [--type reflections|logs|metrics|patterns] [--all]
|
|
7
|
+
*/
|
|
8
|
+
import { program } from "commander";
|
|
9
|
+
import { ConsentManager } from "../../analytics/consent-manager.js";
|
|
10
|
+
export const analyticsPreviewCommand = program
|
|
11
|
+
.command("analytics preview")
|
|
12
|
+
.description("Preview what data would be submitted (without submitting)")
|
|
13
|
+
.option("-t, --type <type>", "Specific data type to preview", "all")
|
|
14
|
+
.option("--all", "Preview all data types", false)
|
|
15
|
+
.action(async (options) => {
|
|
16
|
+
console.log("šļø 0xRay Central Analytics - Data Preview\n");
|
|
17
|
+
try {
|
|
18
|
+
const consentManager = new ConsentManager();
|
|
19
|
+
const status = await consentManager.initialize();
|
|
20
|
+
// Check if analytics is enabled
|
|
21
|
+
if (!status.analyticsEnabled) {
|
|
22
|
+
console.log("ā Analytics is currently disabled.");
|
|
23
|
+
console.log(`\nš” Enable analytics first: npx 0xray analytics enable`);
|
|
24
|
+
console.log(` Then preview what would be submitted: npx 0xray analytics preview`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log("š This preview shows what anonymized data would be submitted.\n");
|
|
28
|
+
// Show what gets anonymized vs preserved
|
|
29
|
+
console.log("š What Gets REMOVED (Privacy Protection):");
|
|
30
|
+
console.log(" ā Project names and company information");
|
|
31
|
+
console.log(" ā Repository URLs and file paths");
|
|
32
|
+
console.log(" ā User names, emails, and personal identifiers");
|
|
33
|
+
console.log(" ā IP addresses and precise timestamps");
|
|
34
|
+
console.log(" ā API keys, secrets, and credentials");
|
|
35
|
+
console.log(" ā Actual code snippets and proprietary logic");
|
|
36
|
+
console.log("\nā
What Gets PRESERVED (For Learning):");
|
|
37
|
+
console.log(" ā
Agent performance metrics (success rates, confidence scores)");
|
|
38
|
+
console.log(" ā
Complexity ratings and outcomes");
|
|
39
|
+
console.log(" ā
Pattern effectiveness data");
|
|
40
|
+
console.log(" ā
Anonymized emotional/struggle patterns");
|
|
41
|
+
console.log(" ā
Counterfactual analysis structures");
|
|
42
|
+
// Show anonymization example
|
|
43
|
+
console.log("\nš Anonymization Example:");
|
|
44
|
+
console.log(" š„ Before (Local - Never Submitted):");
|
|
45
|
+
console.log(" {");
|
|
46
|
+
console.log(` "project": "acme-corp/legacy-system",`);
|
|
47
|
+
console.log(` "reflection": "Fixed bug in user authentication...",`);
|
|
48
|
+
console.log(` "filePath": "/Users/john/projects/legacy/src/auth.ts",`);
|
|
49
|
+
console.log(` "author": "john.doe@acme.com",`);
|
|
50
|
+
console.log(` "code": "function authenticate(user) { ... }"`);
|
|
51
|
+
console.log(" }");
|
|
52
|
+
console.log("\n š¤ After (Anonymized - What Gets Submitted):");
|
|
53
|
+
console.log(" {");
|
|
54
|
+
console.log(` "submissionId": "uuid-v4",`);
|
|
55
|
+
console.log(` "taskType": "bug_fix",`);
|
|
56
|
+
console.log(` "complexity": 75,`);
|
|
57
|
+
console.log(` "routedAgent": "bug-triage-specialist",`);
|
|
58
|
+
console.log(` "success": true,`);
|
|
59
|
+
console.log(` "emotionalContext": {`);
|
|
60
|
+
console.log(` "struggleLevel": "medium",`);
|
|
61
|
+
console.log(` "hasCounterfactualAnalysis": true,`);
|
|
62
|
+
console.log(` "depthScore": 4`);
|
|
63
|
+
console.log(" },");
|
|
64
|
+
console.log(` "patterns": {`);
|
|
65
|
+
console.log(` "keywords": ["bug", "authentication", "critical"],`);
|
|
66
|
+
console.log(` "successRate": 0.85`);
|
|
67
|
+
console.log(" }");
|
|
68
|
+
console.log(" }");
|
|
69
|
+
// Show enabled categories
|
|
70
|
+
const categories = consentManager.getCategories();
|
|
71
|
+
const enabledCategories = categories.filter(c => c.enabled);
|
|
72
|
+
console.log("\nš Currently Enabled Categories:");
|
|
73
|
+
enabledCategories.forEach(cat => {
|
|
74
|
+
console.log(` ā
${cat.name.padEnd(20)} ${cat.description}`);
|
|
75
|
+
});
|
|
76
|
+
const disabledCategories = categories.filter(c => !c.enabled);
|
|
77
|
+
if (disabledCategories.length > 0) {
|
|
78
|
+
console.log("\nā Disabled Categories (Will Not Be Submitted):");
|
|
79
|
+
disabledCategories.forEach(cat => {
|
|
80
|
+
console.log(` ā ${cat.name.padEnd(20)} ${cat.description}`);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Show privacy guarantees
|
|
84
|
+
console.log("\nš Privacy Guarantees:");
|
|
85
|
+
console.log(" ā
Your data is anonymized before leaving your machine");
|
|
86
|
+
console.log(" ā
All submissions encrypted in transit (HTTPS/TLS)");
|
|
87
|
+
console.log(" ā
You can disable anytime: npx 0xray analytics disable");
|
|
88
|
+
console.log(" ā
Request data deletion anytime");
|
|
89
|
+
console.log(" ā
Full transparency - see exactly what's submitted");
|
|
90
|
+
console.log("\nš” Next Steps:");
|
|
91
|
+
console.log(" 1. Review this preview carefully");
|
|
92
|
+
console.log(" 2. Enable specific categories: npx 0xray analytics enable --categories reflections,metrics");
|
|
93
|
+
console.log(" 3. View current status: npx 0xray analytics status");
|
|
94
|
+
console.log(" 4. Learn more: docs/architecture/central-analytics-store.md");
|
|
95
|
+
console.log("\nš Documentation:");
|
|
96
|
+
console.log(" ⢠Architecture: docs/architecture/central-analytics-store.md");
|
|
97
|
+
console.log(" ⢠Privacy Policy: [To be published]");
|
|
98
|
+
console.log(" ⢠FAQ: docs/quickstart/central-analytics-quickstart.md");
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error("ā Failed to preview analytics:", error instanceof Error ? error.message : String(error));
|
|
102
|
+
console.error("\nš” Try: npx 0xray analytics preview --help");
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
export default analyticsPreviewCommand;
|