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
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
1
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
2
|
import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
|
|
5
3
|
import {
|
|
6
|
-
CallToolRequestSchema,
|
|
7
4
|
ErrorCode,
|
|
8
|
-
ListToolsRequestSchema,
|
|
9
5
|
McpError,
|
|
10
6
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
11
|
-
import
|
|
7
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
8
|
+
import * as fs from "fs";
|
|
12
9
|
import { fileURLToPath } from "url";
|
|
13
10
|
import { randomUUID } from "crypto";
|
|
14
11
|
import { mcpClientManager } from "../mcp-client.js";
|
|
15
12
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
+
import { skillInstallCommand, skillRegistryCommand } from "../../cli/commands/skill-install.js";
|
|
16
14
|
|
|
17
15
|
interface ListSkillsArgs {
|
|
18
16
|
category?: "all" | "core" | "registry" | "knowledge";
|
|
@@ -84,335 +82,55 @@ interface StorytellerArgs {
|
|
|
84
82
|
framework?: "three_act_structure" | "hero_journey" | "spiral";
|
|
85
83
|
}
|
|
86
84
|
|
|
87
|
-
class SkillInvocationServer {
|
|
88
|
-
private server: Server;
|
|
85
|
+
class SkillInvocationServer extends XrayKnowledgeSkillBase {
|
|
89
86
|
|
|
90
87
|
constructor() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
},
|
|
100
|
-
|
|
88
|
+
super("skill-invocation", "3.1.0");
|
|
89
|
+
|
|
90
|
+
this.tools = [
|
|
91
|
+
{ name: "list-skills", description: "List all available skills with descriptions", inputSchema: { type: "object", properties: { category: { type: "string", enum: ["all", "core", "registry", "knowledge"], description: "Filter by category" } } } },
|
|
92
|
+
{ name: "invoke-skill", description: "Generic skill invocation tool for calling any MCP skill server", inputSchema: { type: "object", properties: { skillName: { type: "string", description: "Name of the skill to invoke (use list-skills to see available)" }, toolName: { type: "string", description: "Name of the tool within the skill to execute" }, args: { type: "object", description: "Arguments to pass to the skill tool" } }, required: ["skillName", "toolName"] } },
|
|
93
|
+
{ name: "skill-code-review", description: "Invoke code review skill for comprehensive code analysis", inputSchema: { type: "object", properties: { code: { type: "string", description: "Code to analyze" }, language: { type: "string", description: "Programming language" }, context: { type: "object", description: "Additional context" } }, required: ["code"] } },
|
|
94
|
+
{ name: "skill-security-audit", description: "Invoke security audit skill for vulnerability scanning", inputSchema: { type: "object", properties: { files: { type: "array", items: { type: "string" }, description: "Files to audit" }, severity: { type: "string", enum: ["low", "medium", "high", "critical"], description: "Minimum severity level" } }, required: ["files"] } },
|
|
95
|
+
{ name: "skill-performance-optimization", description: "Invoke performance optimization skill for bottleneck analysis", inputSchema: { type: "object", properties: { code: { type: "string", description: "Code to analyze" }, language: { type: "string", description: "Programming language" }, metrics: { type: "array", items: { type: "string" }, description: "Performance metrics to analyze" } }, required: ["code"] } },
|
|
96
|
+
{ name: "skill-testing-strategy", description: "Invoke testing strategy skill for test planning", inputSchema: { type: "object", properties: { code: { type: "string", description: "Code to analyze for testing" }, existingTests: { type: "array", items: { type: "string" }, description: "Existing test files" }, requirements: { type: "object", description: "Testing requirements and constraints" } }, required: ["code"] } },
|
|
97
|
+
{ name: "skill-project-analysis", description: "Invoke project analysis skill for codebase insights", inputSchema: { type: "object", properties: { scope: { type: "string", enum: ["full", "directory", "file"], description: "Analysis scope" }, analysis: { type: "array", items: { type: "string" }, description: "Types of analysis to perform" } } } },
|
|
98
|
+
{ name: "skill-database-design", description: "Invoke database design skill for schema design and query optimization", inputSchema: { type: "object", properties: { schema: { type: "string", description: "Database schema or entities" }, databaseType: { type: "string", enum: ["postgresql", "mysql", "mongodb", "dynamodb"], description: "Target database type" } }, required: ["schema"] } },
|
|
99
|
+
{ name: "skill-devops-deployment", description: "Invoke DevOps deployment skill for CI/CD and infrastructure", inputSchema: { type: "object", properties: { projectType: { type: "string", description: "Type of project" }, cloudProvider: { type: "string", enum: ["aws", "gcp", "azure"], description: "Target cloud provider" } }, required: ["projectType"] } },
|
|
100
|
+
{ name: "skill-api-design", description: "Invoke API design skill for REST/GraphQL endpoints", inputSchema: { type: "object", properties: { resources: { type: "array", items: { type: "string" }, description: "API resources" }, style: { type: "string", enum: ["rest", "graphql"], description: "API style" } }, required: ["resources"] } },
|
|
101
|
+
{ name: "skill-ui-ux-design", description: "Invoke UI/UX design skill for component design", inputSchema: { type: "object", properties: { component: { type: "string", description: "Component to design" }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte"], description: "Target framework" } }, required: ["component"] } },
|
|
102
|
+
{ name: "skill-documentation-generation", description: "Invoke documentation skill for API docs and README", inputSchema: { type: "object", properties: { type: { type: "string", enum: ["api", "readme", "guide"], description: "Documentation type" }, code: { type: "string", description: "Code to document" } }, required: ["type"] } },
|
|
103
|
+
{ name: "skill-storyteller", description: "Invoke storyteller skill for writing reflections, sagas, and journeys", inputSchema: { type: "object", properties: { storyType: { type: "string", enum: ["reflection", "saga", "journey", "narrative"], description: "Type of story to write" }, title: { type: "string", description: "Title for the story" }, context: { type: "object", description: "Context including commits, changes, metadata" }, framework: { type: "string", enum: ["three_act_structure", "hero_journey", "spiral"], description: "Storytelling framework to use" } }, required: ["storyType"] } },
|
|
104
|
+
{ name: "install-skill", description: "Install skills from the registry or any git repo", inputSchema: { type: "object", properties: { source: { type: "string", description: "Source name or git URL to install skills from" }, path: { type: "string", description: "Subdirectory in repo containing skills" }, force: { type: "boolean", description: "Reinstall even if already installed" } }, required: ["source"] } },
|
|
105
|
+
{ name: "skill-registry-list", description: "List all available skill registry sources", inputSchema: { type: "object", properties: {} } },
|
|
106
|
+
{ name: "skill-registry-add", description: "Add a new source to the skills registry", inputSchema: { type: "object", properties: { name: { type: "string", description: "Unique source name" }, url: { type: "string", description: "Repository URL" }, desc: { type: "string", description: "Short description" }, license: { type: "string", description: "License type" } }, required: ["name", "url"] } },
|
|
107
|
+
{ name: "skill-registry-remove", description: "Remove a source from the skills registry", inputSchema: { type: "object", properties: { name: { type: "string", description: "Source name to remove" } }, required: ["name"] } },
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
this.handlers = {
|
|
111
|
+
"list-skills": async (args) => this.handleListSkills(args as ListSkillsArgs),
|
|
112
|
+
"invoke-skill": async (args) => this.handleInvokeSkill(args as InvokeSkillArgs),
|
|
113
|
+
"skill-code-review": async (args) => this.handleSkillCodeReview(args as CodeReviewArgs),
|
|
114
|
+
"skill-security-audit": async (args) => this.handleSkillSecurityAudit(args as SecurityAuditArgs),
|
|
115
|
+
"skill-performance-optimization": async (args) => this.handleSkillPerformanceOptimization(args as PerformanceOptimizationArgs),
|
|
116
|
+
"skill-testing-strategy": async (args) => this.handleSkillTestingStrategy(args as TestingStrategyArgs),
|
|
117
|
+
"skill-project-analysis": async (args) => this.handleSkillProjectAnalysis(args as ProjectAnalysisArgs),
|
|
118
|
+
"skill-database-design": async (args) => this.handleSkillDatabaseDesign(args as DatabaseDesignArgs),
|
|
119
|
+
"skill-devops-deployment": async (args) => this.handleSkillDevopsDeployment(args as DevopsDeploymentArgs),
|
|
120
|
+
"skill-api-design": async (args) => this.handleSkillApiDesign(args as ApiDesignArgs),
|
|
121
|
+
"skill-ui-ux-design": async (args) => this.handleSkillUiUxDesign(args as UiUxDesignArgs),
|
|
122
|
+
"skill-documentation-generation": async (args) => this.handleSkillDocumentationGeneration(args as DocumentationGenerationArgs),
|
|
123
|
+
"skill-storyteller": async (args) => this.handleSkillStoryteller(args as StorytellerArgs),
|
|
124
|
+
"install-skill": async (args) => this.handleInstallSkill(args as { source: string; path?: string; force?: boolean }),
|
|
125
|
+
"skill-registry-list": async () => this.handleSkillRegistryList(),
|
|
126
|
+
"skill-registry-add": async (args) => this.handleSkillRegistryAdd(args as { name: string; url: string; desc?: string; license?: string }),
|
|
127
|
+
"skill-registry-remove": async (args) => this.handleSkillRegistryRemove(args as { name: string }),
|
|
128
|
+
};
|
|
101
129
|
|
|
102
130
|
this.setupToolHandlers();
|
|
103
131
|
}
|
|
104
132
|
|
|
105
|
-
|
|
106
|
-
// List available tools
|
|
107
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
108
|
-
return {
|
|
109
|
-
tools: [
|
|
110
|
-
{
|
|
111
|
-
name: "list-skills",
|
|
112
|
-
description: "List all available skills with descriptions",
|
|
113
|
-
inputSchema: {
|
|
114
|
-
type: "object",
|
|
115
|
-
properties: {
|
|
116
|
-
category: {
|
|
117
|
-
type: "string",
|
|
118
|
-
enum: ["all", "core", "registry", "knowledge"],
|
|
119
|
-
description: "Filter by category",
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
name: "invoke-skill",
|
|
126
|
-
description:
|
|
127
|
-
"Generic skill invocation tool for calling any MCP skill server",
|
|
128
|
-
inputSchema: {
|
|
129
|
-
type: "object",
|
|
130
|
-
properties: {
|
|
131
|
-
skillName: {
|
|
132
|
-
type: "string",
|
|
133
|
-
description: "Name of the skill to invoke (use list-skills to see available)",
|
|
134
|
-
},
|
|
135
|
-
toolName: {
|
|
136
|
-
type: "string",
|
|
137
|
-
description: "Name of the tool within the skill to execute",
|
|
138
|
-
},
|
|
139
|
-
args: {
|
|
140
|
-
type: "object",
|
|
141
|
-
description: "Arguments to pass to the skill tool",
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
required: ["skillName", "toolName"],
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
name: "skill-code-review",
|
|
149
|
-
description:
|
|
150
|
-
"Invoke code review skill for comprehensive code analysis",
|
|
151
|
-
inputSchema: {
|
|
152
|
-
type: "object",
|
|
153
|
-
properties: {
|
|
154
|
-
code: { type: "string", description: "Code to analyze" },
|
|
155
|
-
language: {
|
|
156
|
-
type: "string",
|
|
157
|
-
description: "Programming language",
|
|
158
|
-
},
|
|
159
|
-
context: { type: "object", description: "Additional context" },
|
|
160
|
-
},
|
|
161
|
-
required: ["code"],
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
name: "skill-security-audit",
|
|
166
|
-
description:
|
|
167
|
-
"Invoke security audit skill for vulnerability scanning",
|
|
168
|
-
inputSchema: {
|
|
169
|
-
type: "object",
|
|
170
|
-
properties: {
|
|
171
|
-
files: {
|
|
172
|
-
type: "array",
|
|
173
|
-
items: { type: "string" },
|
|
174
|
-
description: "Files to audit",
|
|
175
|
-
},
|
|
176
|
-
severity: {
|
|
177
|
-
type: "string",
|
|
178
|
-
enum: ["low", "medium", "high", "critical"],
|
|
179
|
-
description: "Minimum severity level",
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
required: ["files"],
|
|
183
|
-
},
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
name: "skill-performance-optimization",
|
|
187
|
-
description:
|
|
188
|
-
"Invoke performance optimization skill for bottleneck analysis",
|
|
189
|
-
inputSchema: {
|
|
190
|
-
type: "object",
|
|
191
|
-
properties: {
|
|
192
|
-
code: { type: "string", description: "Code to analyze" },
|
|
193
|
-
language: {
|
|
194
|
-
type: "string",
|
|
195
|
-
description: "Programming language",
|
|
196
|
-
},
|
|
197
|
-
metrics: {
|
|
198
|
-
type: "array",
|
|
199
|
-
items: { type: "string" },
|
|
200
|
-
description: "Performance metrics to analyze",
|
|
201
|
-
},
|
|
202
|
-
},
|
|
203
|
-
required: ["code"],
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
name: "skill-testing-strategy",
|
|
208
|
-
description: "Invoke testing strategy skill for test planning",
|
|
209
|
-
inputSchema: {
|
|
210
|
-
type: "object",
|
|
211
|
-
properties: {
|
|
212
|
-
code: {
|
|
213
|
-
type: "string",
|
|
214
|
-
description: "Code to analyze for testing",
|
|
215
|
-
},
|
|
216
|
-
existingTests: {
|
|
217
|
-
type: "array",
|
|
218
|
-
items: { type: "string" },
|
|
219
|
-
description: "Existing test files",
|
|
220
|
-
},
|
|
221
|
-
requirements: {
|
|
222
|
-
type: "object",
|
|
223
|
-
description: "Testing requirements and constraints",
|
|
224
|
-
},
|
|
225
|
-
},
|
|
226
|
-
required: ["code"],
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
name: "skill-project-analysis",
|
|
231
|
-
description: "Invoke project analysis skill for codebase insights",
|
|
232
|
-
inputSchema: {
|
|
233
|
-
type: "object",
|
|
234
|
-
properties: {
|
|
235
|
-
scope: {
|
|
236
|
-
type: "string",
|
|
237
|
-
enum: ["full", "directory", "file"],
|
|
238
|
-
description: "Analysis scope",
|
|
239
|
-
},
|
|
240
|
-
analysis: {
|
|
241
|
-
type: "array",
|
|
242
|
-
items: { type: "string" },
|
|
243
|
-
description: "Types of analysis to perform",
|
|
244
|
-
},
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
name: "skill-database-design",
|
|
250
|
-
description:
|
|
251
|
-
"Invoke database design skill for schema design and query optimization",
|
|
252
|
-
inputSchema: {
|
|
253
|
-
type: "object",
|
|
254
|
-
properties: {
|
|
255
|
-
schema: {
|
|
256
|
-
type: "string",
|
|
257
|
-
description: "Database schema or entities",
|
|
258
|
-
},
|
|
259
|
-
databaseType: {
|
|
260
|
-
type: "string",
|
|
261
|
-
enum: ["postgresql", "mysql", "mongodb", "dynamodb"],
|
|
262
|
-
description: "Target database type",
|
|
263
|
-
},
|
|
264
|
-
},
|
|
265
|
-
required: ["schema"],
|
|
266
|
-
},
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
name: "skill-devops-deployment",
|
|
270
|
-
description:
|
|
271
|
-
"Invoke DevOps deployment skill for CI/CD and infrastructure",
|
|
272
|
-
inputSchema: {
|
|
273
|
-
type: "object",
|
|
274
|
-
properties: {
|
|
275
|
-
projectType: { type: "string", description: "Type of project" },
|
|
276
|
-
cloudProvider: {
|
|
277
|
-
type: "string",
|
|
278
|
-
enum: ["aws", "gcp", "azure"],
|
|
279
|
-
description: "Target cloud provider",
|
|
280
|
-
},
|
|
281
|
-
},
|
|
282
|
-
required: ["projectType"],
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
name: "skill-api-design",
|
|
287
|
-
description: "Invoke API design skill for REST/GraphQL endpoints",
|
|
288
|
-
inputSchema: {
|
|
289
|
-
type: "object",
|
|
290
|
-
properties: {
|
|
291
|
-
resources: {
|
|
292
|
-
type: "array",
|
|
293
|
-
items: { type: "string" },
|
|
294
|
-
description: "API resources",
|
|
295
|
-
},
|
|
296
|
-
style: {
|
|
297
|
-
type: "string",
|
|
298
|
-
enum: ["rest", "graphql"],
|
|
299
|
-
description: "API style",
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
required: ["resources"],
|
|
303
|
-
},
|
|
304
|
-
},
|
|
305
|
-
{
|
|
306
|
-
name: "skill-ui-ux-design",
|
|
307
|
-
description: "Invoke UI/UX design skill for component design",
|
|
308
|
-
inputSchema: {
|
|
309
|
-
type: "object",
|
|
310
|
-
properties: {
|
|
311
|
-
component: {
|
|
312
|
-
type: "string",
|
|
313
|
-
description: "Component to design",
|
|
314
|
-
},
|
|
315
|
-
framework: {
|
|
316
|
-
type: "string",
|
|
317
|
-
enum: ["react", "vue", "angular", "svelte"],
|
|
318
|
-
description: "Target framework",
|
|
319
|
-
},
|
|
320
|
-
},
|
|
321
|
-
required: ["component"],
|
|
322
|
-
},
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
name: "skill-documentation-generation",
|
|
326
|
-
description: "Invoke documentation skill for API docs and README",
|
|
327
|
-
inputSchema: {
|
|
328
|
-
type: "object",
|
|
329
|
-
properties: {
|
|
330
|
-
type: {
|
|
331
|
-
type: "string",
|
|
332
|
-
enum: ["api", "readme", "guide"],
|
|
333
|
-
description: "Documentation type",
|
|
334
|
-
},
|
|
335
|
-
code: { type: "string", description: "Code to document" },
|
|
336
|
-
},
|
|
337
|
-
required: ["type"],
|
|
338
|
-
},
|
|
339
|
-
},
|
|
340
|
-
{
|
|
341
|
-
name: "skill-storyteller",
|
|
342
|
-
description:
|
|
343
|
-
"Invoke storyteller skill for writing reflections, sagas, and journeys",
|
|
344
|
-
inputSchema: {
|
|
345
|
-
type: "object",
|
|
346
|
-
properties: {
|
|
347
|
-
storyType: {
|
|
348
|
-
type: "string",
|
|
349
|
-
enum: ["reflection", "saga", "journey", "narrative"],
|
|
350
|
-
description: "Type of story to write",
|
|
351
|
-
},
|
|
352
|
-
title: { type: "string", description: "Title for the story" },
|
|
353
|
-
context: {
|
|
354
|
-
type: "object",
|
|
355
|
-
description: "Context including commits, changes, metadata",
|
|
356
|
-
},
|
|
357
|
-
framework: {
|
|
358
|
-
type: "string",
|
|
359
|
-
enum: ["three_act_structure", "hero_journey", "spiral"],
|
|
360
|
-
description: "Storytelling framework to use",
|
|
361
|
-
},
|
|
362
|
-
},
|
|
363
|
-
required: ["storyType"],
|
|
364
|
-
},
|
|
365
|
-
},
|
|
366
|
-
],
|
|
367
|
-
};
|
|
368
|
-
});
|
|
369
|
-
|
|
370
|
-
// Handle tool calls
|
|
371
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
372
|
-
const { name, arguments: args } = request.params;
|
|
373
|
-
|
|
374
|
-
try {
|
|
375
|
-
switch (name) {
|
|
376
|
-
case "list-skills":
|
|
377
|
-
return await this.handleListSkills(args as unknown as ListSkillsArgs);
|
|
378
|
-
case "invoke-skill":
|
|
379
|
-
return await this.handleInvokeSkill(args as unknown as InvokeSkillArgs);
|
|
380
|
-
case "skill-code-review":
|
|
381
|
-
return await this.handleSkillCodeReview(args as unknown as CodeReviewArgs);
|
|
382
|
-
case "skill-security-audit":
|
|
383
|
-
return await this.handleSkillSecurityAudit(args as unknown as SecurityAuditArgs);
|
|
384
|
-
case "skill-performance-optimization":
|
|
385
|
-
return await this.handleSkillPerformanceOptimization(args as unknown as PerformanceOptimizationArgs);
|
|
386
|
-
case "skill-testing-strategy":
|
|
387
|
-
return await this.handleSkillTestingStrategy(args as unknown as TestingStrategyArgs);
|
|
388
|
-
case "skill-project-analysis":
|
|
389
|
-
return await this.handleSkillProjectAnalysis(args as unknown as ProjectAnalysisArgs);
|
|
390
|
-
case "skill-database-design":
|
|
391
|
-
return await this.handleSkillDatabaseDesign(args as unknown as DatabaseDesignArgs);
|
|
392
|
-
case "skill-devops-deployment":
|
|
393
|
-
return await this.handleSkillDevopsDeployment(args as unknown as DevopsDeploymentArgs);
|
|
394
|
-
case "skill-api-design":
|
|
395
|
-
return await this.handleSkillApiDesign(args as unknown as ApiDesignArgs);
|
|
396
|
-
case "skill-ui-ux-design":
|
|
397
|
-
return await this.handleSkillUiUxDesign(args as unknown as UiUxDesignArgs);
|
|
398
|
-
case "skill-documentation-generation":
|
|
399
|
-
return await this.handleSkillDocumentationGeneration(args as unknown as DocumentationGenerationArgs);
|
|
400
|
-
case "skill-storyteller":
|
|
401
|
-
return await this.handleSkillStoryteller(args as unknown as StorytellerArgs);
|
|
402
|
-
default:
|
|
403
|
-
throw new McpError(
|
|
404
|
-
ErrorCode.MethodNotFound,
|
|
405
|
-
`Unknown tool: ${name}`,
|
|
406
|
-
);
|
|
407
|
-
}
|
|
408
|
-
} catch (error) {
|
|
409
|
-
throw new McpError(
|
|
410
|
-
ErrorCode.InternalError,
|
|
411
|
-
`Tool execution failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
412
|
-
);
|
|
413
|
-
}
|
|
414
|
-
});
|
|
415
|
-
}
|
|
133
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
416
134
|
|
|
417
135
|
private skillMetrics: Map<string, { success: number; failure: number; avgDuration: number }> = new Map();
|
|
418
136
|
|
|
@@ -824,63 +542,54 @@ class SkillInvocationServer {
|
|
|
824
542
|
};
|
|
825
543
|
}
|
|
826
544
|
|
|
827
|
-
async
|
|
828
|
-
const
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
const timeout = setTimeout(() => {
|
|
840
|
-
frameworkLogger.log("mcps/skill-invocation", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
|
|
841
|
-
process.exit(1);
|
|
842
|
-
}, 5000);
|
|
843
|
-
|
|
844
|
-
try {
|
|
845
|
-
if (this.server && typeof this.server.close === "function") {
|
|
846
|
-
await this.server.close();
|
|
847
|
-
}
|
|
848
|
-
clearTimeout(timeout);
|
|
849
|
-
process.exit(0);
|
|
850
|
-
} catch (error) {
|
|
851
|
-
clearTimeout(timeout);
|
|
852
|
-
frameworkLogger.log("mcps/skill-invocation", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
|
|
853
|
-
process.exit(1);
|
|
854
|
-
}
|
|
855
|
-
};
|
|
856
|
-
|
|
857
|
-
process.on("SIGINT", () => cleanup("SIGINT"));
|
|
858
|
-
process.on("SIGTERM", () => cleanup("SIGTERM"));
|
|
859
|
-
process.on("SIGHUP", () => cleanup("SIGHUP"));
|
|
545
|
+
private async captureConsole(fn: () => Promise<void>): Promise<string> {
|
|
546
|
+
const chunks: string[] = [];
|
|
547
|
+
const origLog = console.log;
|
|
548
|
+
console.log = (...args: unknown[]) => chunks.push(args.map(String).join(" "));
|
|
549
|
+
try {
|
|
550
|
+
await fn();
|
|
551
|
+
} finally {
|
|
552
|
+
console.log = origLog;
|
|
553
|
+
}
|
|
554
|
+
return chunks.join("\n");
|
|
555
|
+
}
|
|
860
556
|
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
557
|
+
private async handleInstallSkill(args: { source: string; path?: string; force?: boolean }) {
|
|
558
|
+
const opts: { path?: string; force?: boolean } = {};
|
|
559
|
+
if (args.path !== undefined) opts.path = args.path;
|
|
560
|
+
if (args.force !== undefined) opts.force = args.force;
|
|
561
|
+
const output = await this.captureConsole(() =>
|
|
562
|
+
skillInstallCommand(args.source, opts)
|
|
563
|
+
);
|
|
564
|
+
return { content: [{ type: "text", text: output || "Skill installation completed." }] };
|
|
565
|
+
}
|
|
870
566
|
|
|
871
|
-
|
|
567
|
+
private async handleSkillRegistryList() {
|
|
568
|
+
const output = await this.captureConsole(() =>
|
|
569
|
+
skillRegistryCommand("list")
|
|
570
|
+
);
|
|
571
|
+
return { content: [{ type: "text", text: output || "No registry sources configured." }] };
|
|
572
|
+
}
|
|
872
573
|
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
574
|
+
private async handleSkillRegistryAdd(args: { name: string; url: string; desc?: string; license?: string }) {
|
|
575
|
+
const registryArgs: Record<string, string> = { name: args.name, url: args.url };
|
|
576
|
+
if (args.desc !== undefined) registryArgs.desc = args.desc;
|
|
577
|
+
if (args.license !== undefined) registryArgs.license = args.license;
|
|
578
|
+
const output = await this.captureConsole(() =>
|
|
579
|
+
skillRegistryCommand("add", registryArgs)
|
|
580
|
+
);
|
|
581
|
+
return { content: [{ type: "text", text: output || "Source added." }] };
|
|
582
|
+
}
|
|
877
583
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
584
|
+
private async handleSkillRegistryRemove(args: { name: string }) {
|
|
585
|
+
const output = await this.captureConsole(() =>
|
|
586
|
+
skillRegistryCommand("remove", { name: args.name })
|
|
587
|
+
);
|
|
588
|
+
return { content: [{ type: "text", text: output || "Source removed." }] };
|
|
882
589
|
}
|
|
883
590
|
|
|
591
|
+
// run() removed — handled by XrayKnowledgeSkillBase
|
|
592
|
+
|
|
884
593
|
/**
|
|
885
594
|
* Run as HTTP server using Streamable HTTP transport (for Grok CLI compatibility).
|
|
886
595
|
*/
|
|
@@ -917,7 +626,7 @@ class SkillInvocationServer {
|
|
|
917
626
|
}
|
|
918
627
|
|
|
919
628
|
// Start the server if this file is run directly
|
|
920
|
-
const entryPoint =
|
|
629
|
+
const entryPoint = fs.realpathSync(process.argv[1] ?? "");
|
|
921
630
|
if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
|
|
922
631
|
// If --port or MCP_PORT is set, use HTTP transport (for Grok CLI compatibility)
|
|
923
632
|
const cliPort = process.argv.find((a) => a.startsWith("--port="))?.split("=")[1];
|
|
@@ -5,15 +5,10 @@
|
|
|
5
5
|
* Provides strategic planning, risk assessment, and technical strategy tools.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
9
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
-
import {
|
|
11
|
-
CallToolRequestSchema,
|
|
12
|
-
ListToolsRequestSchema,
|
|
13
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
14
|
-
import * as path from "path";
|
|
8
|
+
import * as fs from "fs";
|
|
15
9
|
import { fileURLToPath } from "url";
|
|
16
10
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
11
|
+
import { XrayKnowledgeSkillBase, type ToolDefinition } from "../shared/knowledge-skill-base.js";
|
|
17
12
|
|
|
18
13
|
interface Tool {
|
|
19
14
|
name: string;
|
|
@@ -37,9 +32,8 @@ interface ArchitectureReviewArgs {
|
|
|
37
32
|
requirements?: string[];
|
|
38
33
|
}
|
|
39
34
|
|
|
40
|
-
class StrategistServer {
|
|
41
|
-
|
|
42
|
-
private tools: Tool[] = [
|
|
35
|
+
class StrategistServer extends XrayKnowledgeSkillBase {
|
|
36
|
+
protected tools: ToolDefinition[] = [
|
|
43
37
|
{
|
|
44
38
|
name: "strategic_guidance",
|
|
45
39
|
description:
|
|
@@ -108,58 +102,18 @@ class StrategistServer {
|
|
|
108
102
|
];
|
|
109
103
|
|
|
110
104
|
constructor() {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
);
|
|
105
|
+
super("strategist", "3.1.0");
|
|
106
|
+
|
|
107
|
+
this.handlers = {
|
|
108
|
+
strategic_guidance: async (args) => this.handleStrategicGuidance(args as StrategicGuidanceArgs),
|
|
109
|
+
risk_assessment: async (args) => this.handleRiskAssessment(args as RiskAssessmentArgs),
|
|
110
|
+
architecture_review: async (args) => this.handleArchitectureReview(args as ArchitectureReviewArgs),
|
|
111
|
+
};
|
|
121
112
|
|
|
122
113
|
this.setupToolHandlers();
|
|
123
114
|
}
|
|
124
115
|
|
|
125
|
-
|
|
126
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
127
|
-
return {
|
|
128
|
-
tools: this.tools.map((tool) => ({
|
|
129
|
-
name: tool.name,
|
|
130
|
-
description: tool.description,
|
|
131
|
-
inputSchema: tool.inputSchema,
|
|
132
|
-
})),
|
|
133
|
-
};
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
137
|
-
const { name, arguments: args } = request.params;
|
|
138
|
-
|
|
139
|
-
try {
|
|
140
|
-
switch (name) {
|
|
141
|
-
case "strategic_guidance":
|
|
142
|
-
return await this.handleStrategicGuidance(args as unknown as StrategicGuidanceArgs);
|
|
143
|
-
case "risk_assessment":
|
|
144
|
-
return await this.handleRiskAssessment(args as unknown as RiskAssessmentArgs);
|
|
145
|
-
case "architecture_review":
|
|
146
|
-
return await this.handleArchitectureReview(args as unknown as ArchitectureReviewArgs);
|
|
147
|
-
default:
|
|
148
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
149
|
-
}
|
|
150
|
-
} catch (error) {
|
|
151
|
-
return {
|
|
152
|
-
content: [
|
|
153
|
-
{
|
|
154
|
-
type: "text",
|
|
155
|
-
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
isError: true,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
116
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
163
117
|
|
|
164
118
|
private async handleStrategicGuidance(args: StrategicGuidanceArgs) {
|
|
165
119
|
const { context, options = [], criteria = [] } = args;
|
|
@@ -251,17 +205,13 @@ class StrategistServer {
|
|
|
251
205
|
};
|
|
252
206
|
}
|
|
253
207
|
|
|
254
|
-
|
|
255
|
-
const transport = new StdioServerTransport();
|
|
256
|
-
await this.server.connect(transport);
|
|
257
|
-
await frameworkLogger.log("mcp-strategist", "server-started", "success");
|
|
258
|
-
}
|
|
208
|
+
// run() removed — handled by XrayKnowledgeSkillBase
|
|
259
209
|
}
|
|
260
210
|
|
|
261
|
-
const entryPoint =
|
|
211
|
+
const entryPoint = fs.realpathSync(process.argv[1] ?? "");
|
|
262
212
|
if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
|
|
263
213
|
const server = new StrategistServer();
|
|
264
|
-
server.
|
|
214
|
+
server.run().catch((error) => frameworkLogger.log("mcps/strategist", "run", "error", { error: String(error) }));
|
|
265
215
|
}
|
|
266
216
|
|
|
267
217
|
export { StrategistServer };
|