0xray 3.1.0 → 3.2.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/.gitignore.default +59 -0
- package/.mcp.json +35 -0
- package/.opencode/codex.codex +1 -1
- package/.opencode/commands/auto-format.md +3 -3
- package/.opencode/commands/auto-summary-capture.md +2 -2
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/commands/enforcer-daily-scan.md +3 -3
- package/.opencode/commands/framework-compliance-audit.md +4 -4
- package/.opencode/commands/interactive-validator.md +2 -2
- package/.opencode/commands/job-summary-logger.md +2 -2
- package/.opencode/commands/mode-switch.md +1 -1
- package/.opencode/commands/model-health-check.md +2 -2
- package/.opencode/commands/performance-analysis.md +2 -2
- package/.opencode/commands/pre-commit-introspection.md +3 -3
- package/.opencode/commands/security-scan.md +3 -3
- package/.opencode/commands/sisyphus-validation.md +3 -3
- package/.opencode/commands/summary-logger.md +6 -6
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/hooks/post-commit +1 -1
- package/.opencode/init.sh +6 -0
- package/.plugin/plugin.json +11 -0
- package/AGENTS-consumer.md +46 -0
- package/AGENTS.md +2 -12
- package/LICENSE +1 -1
- package/README.md +6 -6
- package/SKILLS.md +140 -0
- package/dist/.gitignore.default +59 -0
- package/dist/AGENTS.md +2 -12
- package/dist/CHANGELOG.md +54 -0
- package/dist/LICENSE +1 -1
- package/dist/README.md +6 -6
- package/dist/SKILLS.md +140 -0
- package/dist/agents/index.js +3 -1
- package/dist/agents/registry.js +13 -0
- package/dist/analytics/consent-manager.js +0 -1
- package/dist/analytics/emerging-pattern-detector.js +0 -1
- package/dist/analytics/pattern-learning-engine.js +0 -1
- package/dist/analytics/pattern-performance-tracker.js +0 -1
- package/dist/analytics/predictive-analytics.js +0 -1
- package/dist/analytics/prompt-pattern-analyzer.js +0 -1
- package/dist/analytics/routing-performance-analyzer.js +0 -1
- package/dist/analytics/routing-refiner.js +1 -2
- package/dist/analytics/simple-pattern-analyzer.js +0 -1
- package/dist/architect/architectural-integrity.js +3 -3
- package/dist/benchmark/performance-benchmark.js +1 -2
- package/dist/cli/commands/antigravity-status.js +23 -23
- package/dist/cli/commands/archive-logs.js +0 -1
- package/dist/cli/commands/credible-init.js +1 -1
- package/dist/cli/commands/hermes-install.js +8 -0
- package/dist/cli/commands/mcp-install.js +1 -1
- package/dist/cli/commands/openclaw-install.js +9 -0
- package/dist/cli/commands/opencode-install.js +35 -0
- package/dist/cli/commands/plugin-commands.js +0 -1
- package/dist/cli/commands/skill-install.js +39 -2
- package/dist/cli/commands/status.js +16 -13
- package/dist/cli/commands/storyteller.js +1 -1
- package/dist/cli/index.js +14 -13
- package/dist/core/activity-logger.js +4 -5
- package/dist/core/adaptive-kernel.js +0 -1
- package/dist/core/agent-spawn-gate.js +1 -1
- package/dist/core/boot-orchestrator.js +14 -25
- package/dist/core/bridge.mjs +4 -5
- package/dist/core/codex-formatter.js +1 -3
- package/dist/core/codex-injector.js +3 -4
- package/dist/core/config-loader.js +36 -29
- package/dist/core/config-paths.js +30 -23
- package/dist/core/context-loader.js +0 -4
- package/dist/core/context-validator.js +0 -1
- package/dist/core/features-config.js +38 -2
- package/dist/core/index.js +2 -2
- package/dist/core/kernel-patterns.js +0 -1
- package/dist/core/logging-config.js +7 -7
- package/dist/core/model-router.js +23 -64
- package/dist/core/orchestrator.js +1 -1
- package/dist/core/system-prompt-generator.js +0 -1
- package/dist/core/xray-activation.js +3 -4
- package/dist/delegation/agent-delegator.js +2 -3
- package/dist/delegation/agent-expertise.js +0 -1
- package/dist/delegation/analytics/index.js +0 -1
- package/dist/delegation/analytics/learning-engine.js +0 -1
- package/dist/delegation/analytics/outcome-tracker.js +0 -1
- package/dist/delegation/analytics/routing-analytics.js +0 -1
- package/dist/delegation/ast-code-parser.js +0 -1
- package/dist/delegation/complexity-analyzer.js +0 -1
- package/dist/delegation/dependency-graph-builder.js +0 -1
- package/dist/delegation/index.js +0 -1
- package/dist/delegation/metrics-aggregator.js +0 -1
- package/dist/delegation/session-coordinator.js +0 -1
- package/dist/delegation/strategy-selector.js +0 -1
- package/dist/delegation/voting-coordinator.js +0 -1
- package/dist/delegation/voting-types.js +0 -1
- package/dist/delegation/weighted-voting-aggregator.js +0 -1
- package/dist/enforcement/core/index.js +0 -1
- package/dist/enforcement/core/rule-executor.js +0 -1
- package/dist/enforcement/core/rule-hierarchy.js +0 -1
- package/dist/enforcement/core/rule-registry.js +0 -1
- package/dist/enforcement/core/violation-fixer.js +0 -1
- package/dist/enforcement/enforcer-tools.js +2 -2
- package/dist/enforcement/index.js +0 -1
- package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
- package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
- package/dist/enforcement/loaders/base-loader.js +0 -1
- package/dist/enforcement/loaders/codex-loader.js +2 -3
- package/dist/enforcement/loaders/index.js +0 -1
- package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
- package/dist/enforcement/loaders/processor-loader.js +0 -1
- package/dist/enforcement/types.js +0 -1
- package/dist/enforcement/validators/architecture-validators.js +0 -1
- package/dist/enforcement/validators/base-validator.js +0 -1
- package/dist/enforcement/validators/code-quality-validators.js +0 -1
- package/dist/enforcement/validators/index.js +0 -1
- package/dist/enforcement/validators/security-validators.js +0 -1
- package/dist/enforcement/validators/testing-validators.js +0 -1
- package/dist/enforcement/validators/validator-registry.js +0 -1
- package/dist/execution/opencode-cli-invoker.js +1 -1
- package/dist/governance/codex-policy.service.js +0 -1
- package/dist/governance/governance-service.js +1 -1
- package/dist/governance/llm-governance-provider.js +14 -1
- package/dist/index.js +3 -5
- package/dist/inference/inference-agent-invoker.js +67 -0
- package/dist/inference/inference-applier.js +178 -0
- package/dist/inference/inference-cycle.js +52 -828
- package/dist/inference/inference-proposal-generator.js +149 -0
- package/dist/infrastructure/iac-validator.js +465 -0
- package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
- package/dist/integrations/base/ExampleIntegration.js +0 -1
- package/dist/integrations/base/Integration.js +0 -1
- package/dist/integrations/base/README.md +1 -1
- package/dist/integrations/base/index.js +0 -1
- package/dist/integrations/base/registry.js +0 -1
- package/dist/integrations/base/types.js +0 -1
- package/dist/integrations/enforcement-gate.js +5 -5
- package/dist/integrations/governance/governance-client.js +0 -1
- package/dist/integrations/governance/index.js +11 -19
- package/dist/integrations/governance/types.js +0 -1
- package/dist/integrations/grok/grok-cli.js +20 -6
- package/dist/integrations/grok/hooks/pre-tool-use.js +3 -3
- package/dist/integrations/grok/plugin/0xray/.mcp.json +16 -4
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/dist/integrations/hermes-agent/__init__.py +29 -14
- package/dist/integrations/hermes-agent/bridge.mjs +76 -4
- package/dist/integrations/hermes-agent/schemas.py +49 -0
- package/dist/integrations/hermes-agent/test_plugin.py +7 -7
- package/dist/integrations/hermes-agent/tools.py +107 -3
- package/dist/integrations/openclaw/README.md +6 -6
- package/dist/integrations/openclaw/api-server.js +0 -1
- package/dist/integrations/openclaw/client.js +0 -1
- package/dist/integrations/openclaw/config.js +1 -2
- package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -1
- package/dist/integrations/openclaw/index.js +2 -3
- package/dist/integrations/openclaw/types.js +3 -4
- package/dist/integrations/plugins/index.js +0 -1
- package/dist/integrations/plugins/plugin-integration.js +1 -2
- package/dist/integrations/plugins/plugin-registry.js +1 -2
- package/dist/mcps/agent-resolver.js +0 -1
- package/dist/mcps/architect-tools.server.js +121 -186
- package/dist/mcps/auto-format.server.js +57 -75
- package/dist/mcps/boot-orchestrator.server.js +68 -86
- package/dist/mcps/config/config-loader.js +46 -9
- package/dist/mcps/config/plugin-server-registry.js +0 -1
- package/dist/mcps/enforcer-tools.server.js +208 -274
- package/dist/mcps/estimation.server.js +65 -108
- package/dist/mcps/framework-compliance-audit.server.js +53 -82
- package/dist/mcps/framework-help.server.js +73 -90
- package/dist/mcps/governance.server.js +104 -152
- package/dist/mcps/knowledge-skills/api-design.server.js +35 -66
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +35 -66
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +125 -165
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +211 -238
- package/dist/mcps/knowledge-skills/code-review.server.js +109 -143
- package/dist/mcps/knowledge-skills/content-creator.server.js +205 -227
- package/dist/mcps/knowledge-skills/database-design.server.js +117 -151
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +125 -158
- package/dist/mcps/knowledge-skills/git-workflow.server.js +36 -68
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +303 -325
- package/dist/mcps/knowledge-skills/log-monitor.server.js +141 -161
- package/dist/mcps/knowledge-skills/mobile-development.server.js +172 -202
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +124 -160
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +89 -139
- package/dist/mcps/knowledge-skills/project-analysis.server.js +132 -219
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +117 -151
- package/dist/mcps/knowledge-skills/security-audit.server.js +17 -144
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +22 -214
- package/dist/mcps/knowledge-skills/session-management.server.js +15 -91
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +83 -359
- package/dist/mcps/knowledge-skills/strategist.server.js +12 -57
- package/dist/mcps/knowledge-skills/tech-writer.server.js +18 -193
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +20 -192
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +19 -157
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +24 -297
- package/dist/mcps/lint.server.js +51 -92
- package/dist/mcps/model-health-check.server.js +34 -61
- package/dist/mcps/orchestrator/aside-context.js +207 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
- package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
- package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
- package/dist/mcps/orchestrator/index.js +5 -0
- package/dist/mcps/orchestrator/server.js +65 -9
- package/dist/mcps/orchestrator.server.js +2 -1
- package/dist/mcps/performance-analysis.server.js +57 -88
- package/dist/mcps/processor-pipeline.server.js +70 -100
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.js +81 -154
- package/dist/mcps/security-scan.server.js +57 -71
- package/dist/mcps/shared/knowledge-skill-base.js +11 -4
- package/dist/mcps/state-manager.server.js +127 -155
- package/dist/metrics/agent-metrics.js +1 -1
- package/dist/monitoring/nudge-watchdog.js +0 -1
- package/dist/nucleus/default-plugins.js +13 -19
- package/dist/nucleus/index.js +0 -1
- package/dist/orchestrator/agent-spawn-governor.js +0 -1
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
- package/dist/orchestrator/intelligent-commit-batcher.js +2 -11
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +1 -2
- package/dist/orchestrator/orchestrator.js +8 -19
- package/dist/orchestrator/self-direction-activation.js +0 -1
- package/dist/orchestrator/universal-registry-bridge.js +1 -2
- package/dist/performance/performance-budget-enforcer.js +0 -1
- package/dist/performance/performance-regression-tester.js +0 -1
- package/dist/plugin/plugin-codex-context.js +87 -0
- package/dist/plugin/plugin-helpers.js +155 -0
- package/dist/plugin/plugin-logger.js +46 -0
- package/dist/plugin/plugin-modules.js +144 -0
- package/dist/plugin/plugin-quality-gate.js +88 -0
- package/dist/plugin/plugin-types.js +1 -0
- package/dist/plugin/xray-codex-injection.js +39 -558
- package/dist/postprocessor/PostProcessor.js +7 -13
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
- package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
- package/dist/postprocessor/integration.js +194 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
- package/dist/postprocessor/metamorphosis/index.js +1 -0
- package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +2 -3
- package/dist/postprocessor/triggers/APITrigger.js +0 -1
- package/dist/postprocessor/triggers/GitHookTrigger.js +4 -4
- package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
- package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
- package/dist/processors/implementations/async-pattern-processor.js +0 -1
- package/dist/processors/implementations/console-log-guard-processor.js +0 -1
- package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
- package/dist/processors/implementations/inference-improvement-processor.js +2 -10
- package/dist/processors/implementations/log-protection-processor.js +0 -1
- package/dist/processors/implementations/nudge-processor.js +0 -1
- package/dist/processors/implementations/performance-budget-processor.js +0 -1
- package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
- package/dist/processors/implementations/publish-preflight-processor.js +4 -13
- package/dist/processors/implementations/session-summary-processor.js +8 -16
- package/dist/processors/implementations/spawn-governance-processor.js +0 -1
- package/dist/processors/implementations/storytelling-trigger-processor.js +3 -29
- package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
- package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
- package/dist/processors/implementations/version-compliance-processor.js +0 -1
- package/dist/processors/processor-interfaces.js +0 -1
- package/dist/processors/processor-types.js +0 -1
- package/dist/public/about.html +6 -6
- package/dist/public/enterprise.html +1 -1
- package/dist/public/features.html +2 -2
- package/dist/public/index.html +4 -4
- package/dist/reporting/report-formatter.js +1 -1
- package/dist/scripts/activate-kernel-pipeline.js +2 -2
- package/dist/scripts/integration.js +0 -1
- package/dist/scripts/pre-command +1 -1
- package/dist/security/comprehensive-security-audit.js +0 -1
- package/dist/security/security-agent-coordinator.js +0 -1
- package/dist/security/security-auditor.js +0 -1
- package/dist/security/security-hardener.js +0 -1
- package/dist/security/security-hardening-system.js +0 -1
- package/dist/security/security-headers.js +0 -1
- package/dist/security/security-orchestration-layer.js +0 -1
- package/dist/services/inference-tuner.js +1 -2
- package/dist/session/session-cleanup-manager.js +0 -1
- package/dist/session/session-monitor.js +0 -1
- package/dist/session/session-state-manager.js +0 -1
- package/dist/skills/api-design/SKILL.md +1 -1
- package/dist/skills/architect-tools/SKILL.md +1 -1
- package/dist/skills/architecture-patterns/SKILL.md +1 -1
- package/dist/skills/auto-format/SKILL.md +1 -1
- package/dist/skills/boot-orchestrator/SKILL.md +1 -1
- package/dist/skills/bug-triage/SKILL.md +1 -1
- package/dist/skills/code-analyzer/SKILL.md +1 -1
- package/dist/skills/code-review/SKILL.md +1 -1
- package/dist/skills/enforcer/SKILL.md +1 -1
- package/dist/skills/framework-compliance-audit/SKILL.md +1 -1
- package/dist/skills/git-workflow/SKILL.md +1 -1
- package/dist/skills/hermes-agent/SKILL.md +2 -2
- package/dist/skills/inference-improve/SKILL.md +1 -1
- package/dist/skills/lint/SKILL.md +1 -1
- package/dist/skills/log-monitor/SKILL.md +1 -1
- package/dist/skills/model-health-check/SKILL.md +1 -1
- package/dist/skills/multimodal-looker/SKILL.md +1 -1
- package/dist/skills/orchestrator/SKILL.md +1 -1
- package/dist/skills/performance-analysis/SKILL.md +1 -1
- package/dist/skills/performance-optimization/SKILL.md +1 -1
- package/dist/skills/processor-pipeline/SKILL.md +1 -1
- package/dist/skills/project-analysis/SKILL.md +1 -1
- package/dist/skills/refactoring-strategies/SKILL.md +1 -1
- package/dist/skills/registry.json +1 -1
- package/dist/skills/researcher/SKILL.md +1 -1
- package/dist/skills/security-audit/SKILL.md +1 -1
- package/dist/skills/security-scan/SKILL.md +1 -1
- package/dist/skills/session-management/SKILL.md +1 -1
- package/dist/skills/state-manager/SKILL.md +1 -1
- package/dist/skills/storyteller/SKILL.md +1 -1
- package/dist/skills/testing-best-practices/SKILL.md +1 -1
- package/dist/skills/testing-strategy/SKILL.md +1 -1
- package/dist/skills/ui-ux-design/SKILL.md +1 -1
- package/dist/skills/xray-orchestrator/index.js +0 -1
- package/dist/state/index.js +0 -1
- package/dist/state/state-manager.js +1 -2
- package/dist/utils/codex-parser.js +0 -1
- package/dist/utils/import-resolver.js +1 -1
- package/dist/utils/language-detector.js +0 -1
- package/dist/utils/path-resolver.js +2 -2
- package/dist/utils/shutdown-handler.js +0 -1
- package/dist/validation/agent-config-validator.js +280 -0
- package/dist/validation/orchestration-flow-validator.js +606 -0
- package/package.json +10 -3
- package/scripts/hooks/pre-command +1 -1
- package/scripts/hooks/run-hook.js +2 -2
- package/scripts/node/auto-reflection-generator.mjs +30 -36
- package/scripts/node/govern-reflection.mjs +1 -1
- package/scripts/node/postinstall.cjs +37 -2
- package/scripts/node/release.mjs +2 -2
- package/scripts/node/setup-xai-oauth.mjs +244 -0
- package/scripts/node/setup.cjs +28 -0
- package/scripts/node/universal-version-manager.js +8 -8
- package/scripts/node/version-manager.mjs +1 -1
- package/src/integrations/grok/plugin/0xray/.mcp.json +16 -4
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/src/mcps/agent-resolver.ts +0 -1
- package/src/mcps/architect-tools.server.ts +130 -212
- package/src/mcps/auto-format.server.ts +75 -104
- package/src/mcps/boot-orchestrator.server.ts +72 -97
- package/src/mcps/config/__tests__/config-loader.test.ts +33 -37
- package/src/mcps/config/config-loader.ts +57 -11
- package/src/mcps/config/plugin-server-registry.ts +0 -1
- package/src/mcps/enforcer-tools.server.ts +218 -295
- package/src/mcps/estimation.server.ts +64 -123
- package/src/mcps/framework-compliance-audit.server.ts +54 -96
- package/src/mcps/framework-help.server.ts +76 -97
- package/src/mcps/governance.server.ts +104 -164
- package/src/mcps/knowledge-skills/api-design.server.ts +35 -73
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +34 -73
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +149 -194
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +223 -255
- package/src/mcps/knowledge-skills/code-review.server.ts +116 -158
- package/src/mcps/knowledge-skills/content-creator.server.ts +221 -248
- package/src/mcps/knowledge-skills/database-design.server.ts +120 -161
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +128 -168
- package/src/mcps/knowledge-skills/git-workflow.server.ts +34 -78
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -362
- package/src/mcps/knowledge-skills/log-monitor.server.ts +70 -97
- package/src/mcps/knowledge-skills/mobile-development.server.ts +18 -58
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +15 -61
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +14 -75
- package/src/mcps/knowledge-skills/project-analysis.server.ts +14 -121
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +15 -61
- package/src/mcps/knowledge-skills/security-audit.server.ts +20 -158
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +25 -228
- package/src/mcps/knowledge-skills/session-management.server.ts +19 -107
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +89 -380
- package/src/mcps/knowledge-skills/strategist.server.ts +15 -65
- package/src/mcps/knowledge-skills/tech-writer.server.ts +21 -206
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +23 -205
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +22 -166
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +27 -343
- package/src/mcps/lint.server.ts +53 -106
- package/src/mcps/model-health-check.server.ts +35 -71
- package/src/mcps/orchestrator/aside-context.ts +245 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
- package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
- package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
- package/src/mcps/orchestrator/index.ts +29 -0
- package/src/mcps/orchestrator/server.ts +81 -25
- package/src/mcps/orchestrator/types.ts +37 -0
- package/src/mcps/orchestrator.server.ts +2 -1
- package/src/mcps/performance-analysis.server.ts +60 -103
- package/src/mcps/processor-pipeline.server.ts +72 -109
- package/src/mcps/registry.json +1 -1
- package/src/mcps/researcher.server.ts +88 -176
- package/src/mcps/security-scan.server.ts +58 -77
- package/src/mcps/shared/knowledge-skill-base.ts +12 -4
- package/src/mcps/state-manager.server.ts +132 -172
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/auto-format.md +3 -3
- package/src/opencode/commands/auto-summary-capture.md +2 -2
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/commands/enforcer-daily-scan.md +3 -3
- package/src/opencode/commands/framework-compliance-audit.md +4 -4
- package/src/opencode/commands/interactive-validator.md +2 -2
- package/src/opencode/commands/job-summary-logger.md +2 -2
- package/src/opencode/commands/mode-switch.md +1 -1
- package/src/opencode/commands/model-health-check.md +2 -2
- package/src/opencode/commands/performance-analysis.md +2 -2
- package/src/opencode/commands/pre-commit-introspection.md +3 -3
- package/src/opencode/commands/security-scan.md +3 -3
- package/src/opencode/commands/sisyphus-validation.md +3 -3
- package/src/opencode/commands/summary-logger.md +6 -6
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/api-design/SKILL.md +1 -1
- package/src/skills/architect-tools/SKILL.md +1 -1
- package/src/skills/architecture-patterns/SKILL.md +1 -1
- package/src/skills/auto-format/SKILL.md +1 -1
- package/src/skills/boot-orchestrator/SKILL.md +1 -1
- package/src/skills/bug-triage/SKILL.md +1 -1
- package/src/skills/code-analyzer/SKILL.md +1 -1
- package/src/skills/code-review/SKILL.md +1 -1
- package/src/skills/enforcer/SKILL.md +1 -1
- package/src/skills/framework-compliance-audit/SKILL.md +1 -1
- package/src/skills/git-workflow/SKILL.md +1 -1
- package/src/skills/hermes-agent/SKILL.md +2 -2
- package/src/skills/inference-improve/SKILL.md +1 -1
- package/src/skills/lint/SKILL.md +1 -1
- package/src/skills/log-monitor/SKILL.md +1 -1
- package/src/skills/model-health-check/SKILL.md +1 -1
- package/src/skills/multimodal-looker/SKILL.md +1 -1
- package/src/skills/orchestrator/SKILL.md +1 -1
- package/src/skills/performance-analysis/SKILL.md +1 -1
- package/src/skills/performance-optimization/SKILL.md +1 -1
- package/src/skills/processor-pipeline/SKILL.md +1 -1
- package/src/skills/project-analysis/SKILL.md +1 -1
- package/src/skills/refactoring-strategies/SKILL.md +1 -1
- package/src/skills/registry.json +1 -1
- package/src/skills/researcher/SKILL.md +1 -1
- package/src/skills/security-audit/SKILL.md +1 -1
- package/src/skills/security-scan/SKILL.md +1 -1
- package/src/skills/session-management/SKILL.md +1 -1
- package/src/skills/state-manager/SKILL.md +1 -1
- package/src/skills/storyteller/SKILL.md +1 -1
- package/src/skills/testing-best-practices/SKILL.md +1 -1
- package/src/skills/testing-strategy/SKILL.md +1 -1
- package/src/skills/ui-ux-design/SKILL.md +1 -1
- package/src/skills/xray-orchestrator/index.ts +0 -1
- package/xray/agents_template.md +46 -0
- package/xray/codex.json +598 -0
- package/dist/nucleus/orchestrator.js +0 -479
|
@@ -5,16 +5,10 @@
|
|
|
5
5
|
* and testing methodology recommendations
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
9
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
-
import {
|
|
11
|
-
CallToolRequestSchema,
|
|
12
|
-
ListToolsRequestSchema,
|
|
13
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
14
8
|
import * as fs from "fs";
|
|
15
9
|
import * as path from "path";
|
|
16
10
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
17
|
-
import {
|
|
11
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
18
12
|
import {
|
|
19
13
|
detectProjectLanguage,
|
|
20
14
|
LANGUAGE_CONFIGS,
|
|
@@ -129,160 +123,31 @@ interface BaseTestCounts {
|
|
|
129
123
|
security: number;
|
|
130
124
|
}
|
|
131
125
|
|
|
132
|
-
class XrayTestingStrategyServer {
|
|
133
|
-
private server: Server;
|
|
126
|
+
class XrayTestingStrategyServer extends XrayKnowledgeSkillBase {
|
|
134
127
|
|
|
135
128
|
constructor() {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
129
|
+
super("testing-strategy", "3.1.0");
|
|
130
|
+
|
|
131
|
+
this.tools = [
|
|
132
|
+
{ name: "analyze-test-coverage", description: "Analyze current test coverage and identify gaps", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, includeBreakdown: { type: "boolean", default: true }, coverageThreshold: { type: "number", default: 80 } }, required: ["projectRoot"] } },
|
|
133
|
+
{ name: "design-test-strategy", description: "Design comprehensive testing strategy for the project", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, projectType: { type: "string", enum: ["web", "api", "mobile", "desktop"] }, complexity: { type: "string", enum: ["simple", "medium", "complex"] }, timeline: { type: "string", enum: ["agile", "waterfall", "continuous"] } }, required: ["projectRoot"] } },
|
|
134
|
+
{ name: "identify-test-gaps", description: "Identify untested code and recommend test cases", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, sourceFiles: { type: "array", items: { type: "string" } }, existingTests: { type: "array", items: { type: "string" } } }, required: ["projectRoot"] } },
|
|
135
|
+
{ name: "optimize-test-coverage", description: "Analyze and optimize test coverage patterns", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, currentCoverage: { type: "number" }, targetCoverage: { type: "number", default: 85 }, focusAreas: { type: "array", items: { type: "string" } } }, required: ["projectRoot"] } },
|
|
136
|
+
{ name: "generate-test-file", description: "Generate test file for a source file with exports", inputSchema: { type: "object", properties: { sourceFile: { type: "string", description: "Path to source file" }, sourceContent: { type: "string", description: "Source file content" }, exports: { type: "array", items: { type: "object", properties: { name: { type: "string" }, type: { type: "string" } } }, description: "Exported functions/classes to test" }, testFilePath: { type: "string", description: "Path for generated test file" }, directory: { type: "string", description: "Project directory" } }, required: ["sourceFile", "sourceContent", "exports", "testFilePath"] } },
|
|
137
|
+
];
|
|
138
|
+
|
|
139
|
+
this.handlers = {
|
|
140
|
+
"analyze-test-coverage": async (args) => this.analyzeTestCoverage(args as AnalyzeTestCoverageArgs),
|
|
141
|
+
"design-test-strategy": async (args) => this.designTestStrategy(args as DesignTestStrategyArgs),
|
|
142
|
+
"identify-test-gaps": async (args) => this.identifyTestGaps(args as IdentifyTestGapsArgs),
|
|
143
|
+
"optimize-test-coverage": async (args) => this.optimizeTestCoverage(args as OptimizeTestCoverageArgs),
|
|
144
|
+
"generate-test-file": async (args) => this.generateTestFile(args as GenerateTestFileArgs),
|
|
145
|
+
};
|
|
146
146
|
|
|
147
147
|
this.setupToolHandlers();
|
|
148
|
-
// Server initialization - removed unnecessary startup logging
|
|
149
148
|
}
|
|
150
149
|
|
|
151
|
-
|
|
152
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
153
|
-
return {
|
|
154
|
-
tools: [
|
|
155
|
-
{
|
|
156
|
-
name: "analyze-test-coverage",
|
|
157
|
-
description: "Analyze current test coverage and identify gaps",
|
|
158
|
-
inputSchema: {
|
|
159
|
-
type: "object",
|
|
160
|
-
properties: {
|
|
161
|
-
projectRoot: { type: "string" },
|
|
162
|
-
includeBreakdown: { type: "boolean", default: true },
|
|
163
|
-
coverageThreshold: { type: "number", default: 80 },
|
|
164
|
-
},
|
|
165
|
-
required: ["projectRoot"],
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
name: "design-test-strategy",
|
|
170
|
-
description:
|
|
171
|
-
"Design comprehensive testing strategy for the project",
|
|
172
|
-
inputSchema: {
|
|
173
|
-
type: "object",
|
|
174
|
-
properties: {
|
|
175
|
-
projectRoot: { type: "string" },
|
|
176
|
-
projectType: {
|
|
177
|
-
type: "string",
|
|
178
|
-
enum: ["web", "api", "mobile", "desktop"],
|
|
179
|
-
},
|
|
180
|
-
complexity: {
|
|
181
|
-
type: "string",
|
|
182
|
-
enum: ["simple", "medium", "complex"],
|
|
183
|
-
},
|
|
184
|
-
timeline: {
|
|
185
|
-
type: "string",
|
|
186
|
-
enum: ["agile", "waterfall", "continuous"],
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
required: ["projectRoot"],
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
name: "identify-test-gaps",
|
|
194
|
-
description: "Identify untested code and recommend test cases",
|
|
195
|
-
inputSchema: {
|
|
196
|
-
type: "object",
|
|
197
|
-
properties: {
|
|
198
|
-
projectRoot: { type: "string" },
|
|
199
|
-
sourceFiles: { type: "array", items: { type: "string" } },
|
|
200
|
-
existingTests: { type: "array", items: { type: "string" } },
|
|
201
|
-
},
|
|
202
|
-
required: ["projectRoot"],
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
name: "optimize-test-coverage",
|
|
207
|
-
description: "Analyze and optimize test coverage patterns",
|
|
208
|
-
inputSchema: {
|
|
209
|
-
type: "object",
|
|
210
|
-
properties: {
|
|
211
|
-
projectRoot: { type: "string" },
|
|
212
|
-
currentCoverage: { type: "number" },
|
|
213
|
-
targetCoverage: { type: "number", default: 85 },
|
|
214
|
-
focusAreas: { type: "array", items: { type: "string" } },
|
|
215
|
-
},
|
|
216
|
-
required: ["projectRoot"],
|
|
217
|
-
},
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
name: "generate-test-file",
|
|
221
|
-
description: "Generate test file for a source file with exports",
|
|
222
|
-
inputSchema: {
|
|
223
|
-
type: "object",
|
|
224
|
-
properties: {
|
|
225
|
-
sourceFile: {
|
|
226
|
-
type: "string",
|
|
227
|
-
description: "Path to source file",
|
|
228
|
-
},
|
|
229
|
-
sourceContent: {
|
|
230
|
-
type: "string",
|
|
231
|
-
description: "Source file content",
|
|
232
|
-
},
|
|
233
|
-
exports: {
|
|
234
|
-
type: "array",
|
|
235
|
-
items: {
|
|
236
|
-
type: "object",
|
|
237
|
-
properties: {
|
|
238
|
-
name: { type: "string" },
|
|
239
|
-
type: { type: "string" },
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
description: "Exported functions/classes to test",
|
|
243
|
-
},
|
|
244
|
-
testFilePath: {
|
|
245
|
-
type: "string",
|
|
246
|
-
description: "Path for generated test file",
|
|
247
|
-
},
|
|
248
|
-
directory: { type: "string", description: "Project directory" },
|
|
249
|
-
},
|
|
250
|
-
required: [
|
|
251
|
-
"sourceFile",
|
|
252
|
-
"sourceContent",
|
|
253
|
-
"exports",
|
|
254
|
-
"testFilePath",
|
|
255
|
-
],
|
|
256
|
-
},
|
|
257
|
-
},
|
|
258
|
-
],
|
|
259
|
-
};
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
263
|
-
const { name, arguments: args } = request.params;
|
|
264
|
-
|
|
265
|
-
try {
|
|
266
|
-
switch (name) {
|
|
267
|
-
case "analyze-test-coverage":
|
|
268
|
-
return await this.analyzeTestCoverage(args as unknown as AnalyzeTestCoverageArgs);
|
|
269
|
-
case "design-test-strategy":
|
|
270
|
-
return await this.designTestStrategy(args as unknown as DesignTestStrategyArgs);
|
|
271
|
-
case "identify-test-gaps":
|
|
272
|
-
return await this.identifyTestGaps(args as unknown as IdentifyTestGapsArgs);
|
|
273
|
-
case "optimize-test-coverage":
|
|
274
|
-
return await this.optimizeTestCoverage(args as unknown as OptimizeTestCoverageArgs);
|
|
275
|
-
case "generate-test-file":
|
|
276
|
-
return await this.generateTestFile(args as unknown as GenerateTestFileArgs);
|
|
277
|
-
default:
|
|
278
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
279
|
-
}
|
|
280
|
-
} catch (error) {
|
|
281
|
-
frameworkLogger.log("mcps/testing-strategy", "tool", "error", { tool: name, error: String(error) });
|
|
282
|
-
throw error;
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
}
|
|
150
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
286
151
|
|
|
287
152
|
private async analyzeTestCoverage(args: AnalyzeTestCoverageArgs) {
|
|
288
153
|
const {
|
|
@@ -1151,20 +1016,11 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
|
|
|
1151
1016
|
return ignorePatterns.some((pattern) => pattern.test(filePath));
|
|
1152
1017
|
}
|
|
1153
1018
|
|
|
1154
|
-
|
|
1155
|
-
const transport = new StdioServerTransport();
|
|
1156
|
-
await this.server.connect(transport);
|
|
1157
|
-
|
|
1158
|
-
// Use centralized shutdown handler
|
|
1159
|
-
createGracefulShutdown({
|
|
1160
|
-
serverName: "testing-strategy.server",
|
|
1161
|
-
server: this.server,
|
|
1162
|
-
});
|
|
1163
|
-
}
|
|
1019
|
+
// run() removed — handled by XrayKnowledgeSkillBase
|
|
1164
1020
|
}
|
|
1165
1021
|
|
|
1166
1022
|
// Start the server if run directly
|
|
1167
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1023
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
1168
1024
|
const server = new XrayTestingStrategyServer();
|
|
1169
1025
|
server.run().catch(() => {});
|
|
1170
1026
|
}
|
|
@@ -5,14 +5,9 @@
|
|
|
5
5
|
* component patterns, accessibility compliance, and design system guidance
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
9
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
-
import {
|
|
11
|
-
CallToolRequestSchema,
|
|
12
|
-
ListToolsRequestSchema,
|
|
13
|
-
type CallToolResult,
|
|
14
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import * as fs from "fs";
|
|
15
9
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
10
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
16
11
|
|
|
17
12
|
interface UIDesignAnalysis {
|
|
18
13
|
component: string;
|
|
@@ -186,262 +181,35 @@ interface ToolResponse {
|
|
|
186
181
|
isError?: boolean;
|
|
187
182
|
}
|
|
188
183
|
|
|
189
|
-
class XrayUIUXDesignServer {
|
|
190
|
-
private server: Server;
|
|
184
|
+
class XrayUIUXDesignServer extends XrayKnowledgeSkillBase {
|
|
191
185
|
|
|
192
186
|
constructor() {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
},
|
|
202
|
-
|
|
187
|
+
super("ui-ux-design", "3.1.0");
|
|
188
|
+
|
|
189
|
+
this.tools = [
|
|
190
|
+
{ name: "analyze_ui_component", description: "Analyze UI component for accessibility, usability, and design best practices", inputSchema: { type: "object", properties: { componentCode: { type: "string", description: "React/Vue/Angular component code to analyze" }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte"], description: "UI framework being used" }, checkAccessibility: { type: "boolean", description: "Include WCAG accessibility analysis", default: true }, checkResponsive: { type: "boolean", description: "Include responsive design analysis", default: true } }, required: ["componentCode", "framework"] } },
|
|
191
|
+
{ name: "design_component", description: "Design a UI component with proper accessibility and UX patterns", inputSchema: { type: "object", properties: { componentType: { type: "string", enum: ["button", "input", "modal", "navigation", "card", "form"], description: "Type of component to design" }, requirements: { type: "string", description: "Functional requirements and use cases" }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte"], description: "Target UI framework" }, accessibility: { type: "boolean", description: "Include accessibility features", default: true } }, required: ["componentType", "requirements", "framework"] } },
|
|
192
|
+
{ name: "audit_accessibility", description: "Perform comprehensive accessibility audit using WCAG guidelines", inputSchema: { type: "object", properties: { htmlContent: { type: "string", description: "HTML content to audit for accessibility" }, cssContent: { type: "string", description: "CSS styles to check for accessibility" }, wcagLevel: { type: "string", enum: ["A", "AA", "AAA"], description: "WCAG conformance level to check", default: "AA" } }, required: ["htmlContent"] } },
|
|
193
|
+
{ name: "generate_design_system", description: "Generate a comprehensive design system with colors, typography, and components", inputSchema: { type: "object", properties: { brandGuidelines: { type: "string", description: "Brand colors, fonts, and style guidelines" }, targetAudience: { type: "string", description: "Target user demographics and preferences" }, platform: { type: "string", enum: ["web", "mobile", "desktop"], description: "Target platform" }, includeAccessibility: { type: "boolean", description: "Include accessibility-compliant design tokens", default: true } }, required: ["brandGuidelines", "platform"] } },
|
|
194
|
+
{ name: "validate_mobile_design", description: "Validate mobile-first design principles including touch targets, responsive typography, and thumb zone optimization", inputSchema: { type: "object", properties: { componentCode: { type: "string", description: "Component code to validate for mobile" }, viewportWidth: { type: "number", description: "Minimum viewport width to validate (default: 320)", default: 320 }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte", "css"], description: "UI framework or CSS" } }, required: ["componentCode"] } },
|
|
195
|
+
{ name: "analyze_visual_hierarchy", description: "Analyze visual hierarchy and cognitive load following 'Don't Make Me Think' principles", inputSchema: { type: "object", properties: { designCode: { type: "string", description: "HTML/CSS/React code of the design to analyze" }, pageType: { type: "string", enum: ["landing", "dashboard", "form", "content", "ecommerce"], description: "Type of page being analyzed" } }, required: ["designCode"] } },
|
|
196
|
+
{ name: "recommend_images", description: "Recommend appropriate image libraries, styles, and optimization strategies for the design context", inputSchema: { type: "object", properties: { context: { type: "string", description: "Design context (e.g., 'hero section', 'product gallery', 'team portraits')" }, style: { type: "string", enum: ["photography", "illustration", "3d", "abstract", "minimal"], description: "Preferred visual style" }, budget: { type: "string", enum: ["free", "low", "premium"], description: "Budget constraint", default: "free" } }, required: ["context"] } },
|
|
197
|
+
];
|
|
198
|
+
|
|
199
|
+
this.handlers = {
|
|
200
|
+
analyze_ui_component: async (args) => this.analyzeUIComponent(args as AnalyzeUIComponentArgs),
|
|
201
|
+
design_component: async (args) => this.designComponent(args as DesignComponentArgs),
|
|
202
|
+
audit_accessibility: async (args) => this.auditAccessibility(args as AuditAccessibilityArgs),
|
|
203
|
+
generate_design_system: async (args) => this.generateDesignSystem(args as GenerateDesignSystemArgs),
|
|
204
|
+
validate_mobile_design: async (args) => this.validateMobileDesign(args as ValidateMobileDesignArgs),
|
|
205
|
+
analyze_visual_hierarchy: async (args) => this.analyzeVisualHierarchy(args as AnalyzeVisualHierarchyArgs),
|
|
206
|
+
recommend_images: async (args) => this.recommendImages(args as RecommendImagesArgs),
|
|
207
|
+
};
|
|
203
208
|
|
|
204
209
|
this.setupToolHandlers();
|
|
205
|
-
// Server initialization - removed unnecessary startup logging
|
|
206
210
|
}
|
|
207
211
|
|
|
208
|
-
|
|
209
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
210
|
-
return {
|
|
211
|
-
tools: [
|
|
212
|
-
{
|
|
213
|
-
name: "analyze_ui_component",
|
|
214
|
-
description:
|
|
215
|
-
"Analyze UI component for accessibility, usability, and design best practices",
|
|
216
|
-
inputSchema: {
|
|
217
|
-
type: "object",
|
|
218
|
-
properties: {
|
|
219
|
-
componentCode: {
|
|
220
|
-
type: "string",
|
|
221
|
-
description: "React/Vue/Angular component code to analyze",
|
|
222
|
-
},
|
|
223
|
-
framework: {
|
|
224
|
-
type: "string",
|
|
225
|
-
enum: ["react", "vue", "angular", "svelte"],
|
|
226
|
-
description: "UI framework being used",
|
|
227
|
-
},
|
|
228
|
-
checkAccessibility: {
|
|
229
|
-
type: "boolean",
|
|
230
|
-
description: "Include WCAG accessibility analysis",
|
|
231
|
-
default: true,
|
|
232
|
-
},
|
|
233
|
-
checkResponsive: {
|
|
234
|
-
type: "boolean",
|
|
235
|
-
description: "Include responsive design analysis",
|
|
236
|
-
default: true,
|
|
237
|
-
},
|
|
238
|
-
},
|
|
239
|
-
required: ["componentCode", "framework"],
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
name: "design_component",
|
|
244
|
-
description:
|
|
245
|
-
"Design a UI component with proper accessibility and UX patterns",
|
|
246
|
-
inputSchema: {
|
|
247
|
-
type: "object",
|
|
248
|
-
properties: {
|
|
249
|
-
componentType: {
|
|
250
|
-
type: "string",
|
|
251
|
-
enum: [
|
|
252
|
-
"button",
|
|
253
|
-
"input",
|
|
254
|
-
"modal",
|
|
255
|
-
"navigation",
|
|
256
|
-
"card",
|
|
257
|
-
"form",
|
|
258
|
-
],
|
|
259
|
-
description: "Type of component to design",
|
|
260
|
-
},
|
|
261
|
-
requirements: {
|
|
262
|
-
type: "string",
|
|
263
|
-
description: "Functional requirements and use cases",
|
|
264
|
-
},
|
|
265
|
-
framework: {
|
|
266
|
-
type: "string",
|
|
267
|
-
enum: ["react", "vue", "angular", "svelte"],
|
|
268
|
-
description: "Target UI framework",
|
|
269
|
-
},
|
|
270
|
-
accessibility: {
|
|
271
|
-
type: "boolean",
|
|
272
|
-
description: "Include accessibility features",
|
|
273
|
-
default: true,
|
|
274
|
-
},
|
|
275
|
-
},
|
|
276
|
-
required: ["componentType", "requirements", "framework"],
|
|
277
|
-
},
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
name: "audit_accessibility",
|
|
281
|
-
description:
|
|
282
|
-
"Perform comprehensive accessibility audit using WCAG guidelines",
|
|
283
|
-
inputSchema: {
|
|
284
|
-
type: "object",
|
|
285
|
-
properties: {
|
|
286
|
-
htmlContent: {
|
|
287
|
-
type: "string",
|
|
288
|
-
description: "HTML content to audit for accessibility",
|
|
289
|
-
},
|
|
290
|
-
cssContent: {
|
|
291
|
-
type: "string",
|
|
292
|
-
description: "CSS styles to check for accessibility",
|
|
293
|
-
},
|
|
294
|
-
wcagLevel: {
|
|
295
|
-
type: "string",
|
|
296
|
-
enum: ["A", "AA", "AAA"],
|
|
297
|
-
description: "WCAG conformance level to check",
|
|
298
|
-
default: "AA",
|
|
299
|
-
},
|
|
300
|
-
},
|
|
301
|
-
required: ["htmlContent"],
|
|
302
|
-
},
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
name: "generate_design_system",
|
|
306
|
-
description:
|
|
307
|
-
"Generate a comprehensive design system with colors, typography, and components",
|
|
308
|
-
inputSchema: {
|
|
309
|
-
type: "object",
|
|
310
|
-
properties: {
|
|
311
|
-
brandGuidelines: {
|
|
312
|
-
type: "string",
|
|
313
|
-
description: "Brand colors, fonts, and style guidelines",
|
|
314
|
-
},
|
|
315
|
-
targetAudience: {
|
|
316
|
-
type: "string",
|
|
317
|
-
description: "Target user demographics and preferences",
|
|
318
|
-
},
|
|
319
|
-
platform: {
|
|
320
|
-
type: "string",
|
|
321
|
-
enum: ["web", "mobile", "desktop"],
|
|
322
|
-
description: "Target platform",
|
|
323
|
-
},
|
|
324
|
-
includeAccessibility: {
|
|
325
|
-
type: "boolean",
|
|
326
|
-
description: "Include accessibility-compliant design tokens",
|
|
327
|
-
default: true,
|
|
328
|
-
},
|
|
329
|
-
},
|
|
330
|
-
required: ["brandGuidelines", "platform"],
|
|
331
|
-
},
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
name: "validate_mobile_design",
|
|
335
|
-
description:
|
|
336
|
-
"Validate mobile-first design principles including touch targets, responsive typography, and thumb zone optimization",
|
|
337
|
-
inputSchema: {
|
|
338
|
-
type: "object",
|
|
339
|
-
properties: {
|
|
340
|
-
componentCode: {
|
|
341
|
-
type: "string",
|
|
342
|
-
description: "Component code to validate for mobile",
|
|
343
|
-
},
|
|
344
|
-
viewportWidth: {
|
|
345
|
-
type: "number",
|
|
346
|
-
description:
|
|
347
|
-
"Minimum viewport width to validate (default: 320)",
|
|
348
|
-
default: 320,
|
|
349
|
-
},
|
|
350
|
-
framework: {
|
|
351
|
-
type: "string",
|
|
352
|
-
enum: ["react", "vue", "angular", "svelte", "css"],
|
|
353
|
-
description: "UI framework or CSS",
|
|
354
|
-
},
|
|
355
|
-
},
|
|
356
|
-
required: ["componentCode"],
|
|
357
|
-
},
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
name: "analyze_visual_hierarchy",
|
|
361
|
-
description:
|
|
362
|
-
"Analyze visual hierarchy and cognitive load following 'Don't Make Me Think' principles",
|
|
363
|
-
inputSchema: {
|
|
364
|
-
type: "object",
|
|
365
|
-
properties: {
|
|
366
|
-
designCode: {
|
|
367
|
-
type: "string",
|
|
368
|
-
description: "HTML/CSS/React code of the design to analyze",
|
|
369
|
-
},
|
|
370
|
-
pageType: {
|
|
371
|
-
type: "string",
|
|
372
|
-
enum: [
|
|
373
|
-
"landing",
|
|
374
|
-
"dashboard",
|
|
375
|
-
"form",
|
|
376
|
-
"content",
|
|
377
|
-
"ecommerce",
|
|
378
|
-
],
|
|
379
|
-
description: "Type of page being analyzed",
|
|
380
|
-
},
|
|
381
|
-
},
|
|
382
|
-
required: ["designCode"],
|
|
383
|
-
},
|
|
384
|
-
},
|
|
385
|
-
{
|
|
386
|
-
name: "recommend_images",
|
|
387
|
-
description:
|
|
388
|
-
"Recommend appropriate image libraries, styles, and optimization strategies for the design context",
|
|
389
|
-
inputSchema: {
|
|
390
|
-
type: "object",
|
|
391
|
-
properties: {
|
|
392
|
-
context: {
|
|
393
|
-
type: "string",
|
|
394
|
-
description:
|
|
395
|
-
"Design context (e.g., 'hero section', 'product gallery', 'team portraits')",
|
|
396
|
-
},
|
|
397
|
-
style: {
|
|
398
|
-
type: "string",
|
|
399
|
-
enum: [
|
|
400
|
-
"photography",
|
|
401
|
-
"illustration",
|
|
402
|
-
"3d",
|
|
403
|
-
"abstract",
|
|
404
|
-
"minimal",
|
|
405
|
-
],
|
|
406
|
-
description: "Preferred visual style",
|
|
407
|
-
},
|
|
408
|
-
budget: {
|
|
409
|
-
type: "string",
|
|
410
|
-
enum: ["free", "low", "premium"],
|
|
411
|
-
description: "Budget constraint",
|
|
412
|
-
default: "free",
|
|
413
|
-
},
|
|
414
|
-
},
|
|
415
|
-
required: ["context"],
|
|
416
|
-
},
|
|
417
|
-
},
|
|
418
|
-
],
|
|
419
|
-
};
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request): Promise<CallToolResult> => {
|
|
423
|
-
const { name, arguments: args } = request.params;
|
|
424
|
-
|
|
425
|
-
switch (name) {
|
|
426
|
-
case "analyze_ui_component":
|
|
427
|
-
return await this.analyzeUIComponent(args as unknown as AnalyzeUIComponentArgs) as CallToolResult;
|
|
428
|
-
case "design_component":
|
|
429
|
-
return await this.designComponent(args as unknown as DesignComponentArgs) as CallToolResult;
|
|
430
|
-
case "audit_accessibility":
|
|
431
|
-
return await this.auditAccessibility(args as unknown as AuditAccessibilityArgs) as CallToolResult;
|
|
432
|
-
case "generate_design_system":
|
|
433
|
-
return await this.generateDesignSystem(args as unknown as GenerateDesignSystemArgs) as CallToolResult;
|
|
434
|
-
case "validate_mobile_design":
|
|
435
|
-
return await this.validateMobileDesign(args as unknown as ValidateMobileDesignArgs) as CallToolResult;
|
|
436
|
-
case "analyze_visual_hierarchy":
|
|
437
|
-
return await this.analyzeVisualHierarchy(args as unknown as AnalyzeVisualHierarchyArgs) as CallToolResult;
|
|
438
|
-
case "recommend_images":
|
|
439
|
-
return await this.recommendImages(args as unknown as RecommendImagesArgs) as CallToolResult;
|
|
440
|
-
default:
|
|
441
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
442
|
-
}
|
|
443
|
-
});
|
|
444
|
-
}
|
|
212
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
445
213
|
|
|
446
214
|
private async analyzeUIComponent(args: AnalyzeUIComponentArgs): Promise<ToolResponse> {
|
|
447
215
|
const {
|
|
@@ -1980,95 +1748,11 @@ Available: ${Object.keys(system.components).length} component types
|
|
|
1980
1748
|
};
|
|
1981
1749
|
}
|
|
1982
1750
|
|
|
1983
|
-
|
|
1984
|
-
const transport = new StdioServerTransport();
|
|
1985
|
-
await this.server.connect(transport);
|
|
1986
|
-
await frameworkLogger.log(
|
|
1987
|
-
"ui-ux-design.server",
|
|
1988
|
-
"-xray-ui-ux-design-mcp-server-running-",
|
|
1989
|
-
"info",
|
|
1990
|
-
{ message: "xray UI/UX Design MCP Server running..." },
|
|
1991
|
-
);
|
|
1992
|
-
|
|
1993
|
-
const cleanup = async (signal: string) => {
|
|
1994
|
-
await frameworkLogger.log(
|
|
1995
|
-
"ui-ux-design.server",
|
|
1996
|
-
"-received-signal-shutting-down-gracefully-",
|
|
1997
|
-
"info",
|
|
1998
|
-
{ message: `Received ${signal}, shutting down gracefully...` },
|
|
1999
|
-
);
|
|
2000
|
-
|
|
2001
|
-
// Set a timeout to force exit if graceful shutdown fails
|
|
2002
|
-
const timeout = setTimeout(() => {
|
|
2003
|
-
frameworkLogger.log("mcps/ui-ux-design", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
|
|
2004
|
-
process.exit(1);
|
|
2005
|
-
}, 5000); // 5 second timeout
|
|
2006
|
-
|
|
2007
|
-
try {
|
|
2008
|
-
if (this.server && typeof this.server.close === "function") {
|
|
2009
|
-
await this.server.close();
|
|
2010
|
-
}
|
|
2011
|
-
clearTimeout(timeout);
|
|
2012
|
-
await frameworkLogger.log(
|
|
2013
|
-
"ui-ux-design.server",
|
|
2014
|
-
"-xray-mcp-server-shut-down-gracefully-",
|
|
2015
|
-
"info",
|
|
2016
|
-
{ message: "xray MCP Server shut down gracefully" },
|
|
2017
|
-
);
|
|
2018
|
-
process.exit(0);
|
|
2019
|
-
} catch (error) {
|
|
2020
|
-
clearTimeout(timeout);
|
|
2021
|
-
frameworkLogger.log("mcps/ui-ux-design", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
|
|
2022
|
-
process.exit(1);
|
|
2023
|
-
}
|
|
2024
|
-
};
|
|
2025
|
-
|
|
2026
|
-
// Handle multiple shutdown signals
|
|
2027
|
-
process.on("SIGINT", () => cleanup("SIGINT"));
|
|
2028
|
-
process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
2029
|
-
process.on("SIGHUP", () => cleanup("SIGHUP"));
|
|
2030
|
-
|
|
2031
|
-
// Monitor parent process (opencode) and shutdown if it dies
|
|
2032
|
-
const checkParent = async () => {
|
|
2033
|
-
try {
|
|
2034
|
-
process.kill(process.ppid, 0); // Check if parent is alive
|
|
2035
|
-
setTimeout(checkParent, 1000); // Check again in 1 second
|
|
2036
|
-
} catch (error) {
|
|
2037
|
-
// Parent process died, shut down gracefully
|
|
2038
|
-
await frameworkLogger.log(
|
|
2039
|
-
"ui-ux-design.server",
|
|
2040
|
-
"-parent-process-opencode-died-shutting-down-mcp-se",
|
|
2041
|
-
"info",
|
|
2042
|
-
{
|
|
2043
|
-
message:
|
|
2044
|
-
"Parent process (opencode) died, shutting down MCP server...",
|
|
2045
|
-
},
|
|
2046
|
-
);
|
|
2047
|
-
cleanup("parent-process-death");
|
|
2048
|
-
}
|
|
2049
|
-
};
|
|
2050
|
-
|
|
2051
|
-
// Start monitoring parent process
|
|
2052
|
-
setTimeout(checkParent, 2000); // Start checking after 2 seconds
|
|
2053
|
-
|
|
2054
|
-
// Handle uncaught exceptions and unhandled rejections
|
|
2055
|
-
process.on("uncaughtException", (error) => {
|
|
2056
|
-
frameworkLogger.log("mcps/ui-ux-design", "uncaughtException", "error", { error: String(error) });
|
|
2057
|
-
cleanup("uncaughtException");
|
|
2058
|
-
});
|
|
2059
|
-
|
|
2060
|
-
process.on("unhandledRejection", (reason, promise) => {
|
|
2061
|
-
frameworkLogger.log("mcps/ui-ux-design", "unhandledRejection", "error", { error: String(reason) });
|
|
2062
|
-
cleanup("unhandledRejection");
|
|
2063
|
-
});
|
|
2064
|
-
|
|
2065
|
-
process.on("SIGINT", cleanup);
|
|
2066
|
-
process.on("SIGTERM", cleanup);
|
|
2067
|
-
}
|
|
1751
|
+
// run() removed — handled by XrayKnowledgeSkillBase
|
|
2068
1752
|
}
|
|
2069
1753
|
|
|
2070
1754
|
// Run the server if this file is executed directly
|
|
2071
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1755
|
+
if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
|
|
2072
1756
|
const server = new XrayUIUXDesignServer();
|
|
2073
1757
|
server.run().catch((error) => frameworkLogger.log("mcps/ui-ux-design", "run", "error", { error: String(error) }));
|
|
2074
1758
|
}
|