0xray 2.0.1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/codex.codex +1 -1
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/hooks/post-commit +1 -1
- package/.opencode/init.sh +2 -2
- package/AGENTS.md +1 -1
- package/README.md +2 -2
- package/dist/AGENTS.md +1 -1
- package/dist/CHANGELOG.md +10 -0
- package/dist/README.md +2 -2
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/benchmark/performance-benchmark.d.ts +2 -2
- package/dist/benchmark/performance-benchmark.js +3 -3
- package/dist/cli/commands/hermes-install.js +4 -4
- package/dist/cli/commands/mcp-install.js +1 -1
- package/dist/cli/commands/openclaw-install.js +1 -1
- package/dist/cli/commands/plugin-commands.js +2 -2
- package/dist/cli/commands/publish-agent.js +5 -5
- package/dist/cli/commands/skill-install.js +1 -1
- package/dist/cli/commands/status.js +3 -3
- package/dist/cli/commands/storyteller.js +2 -2
- package/dist/cli/index.js +8 -8
- package/dist/cli/server.js +1 -1
- package/dist/core/agent-spawn-gate.d.ts +1 -1
- package/dist/core/agent-spawn-gate.js +1 -1
- package/dist/core/boot-orchestrator.d.ts +4 -4
- package/dist/core/boot-orchestrator.js +27 -27
- package/dist/core/bridge.mjs +22 -22
- package/dist/core/codex-formatter.js +2 -2
- package/dist/core/codex-injector.d.ts +4 -3
- package/dist/core/codex-injector.js +11 -10
- package/dist/core/config-loader.d.ts +5 -4
- package/dist/core/config-loader.js +4 -2
- package/dist/core/config-paths.d.ts +9 -8
- package/dist/core/config-paths.js +24 -23
- package/dist/core/context-loader.d.ts +4 -3
- package/dist/core/context-loader.js +7 -5
- package/dist/core/features-config.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/orchestrator.d.ts +1 -0
- package/dist/core/orchestrator.js +3 -2
- package/dist/core/system-prompt-generator.js +2 -2
- package/dist/core/xray-activation.d.ts +4 -4
- package/dist/core/xray-activation.js +29 -24
- package/dist/delegation/agent-delegator.d.ts +3 -3
- package/dist/delegation/agent-delegator.js +3 -3
- package/dist/delegation/metrics-aggregator.d.ts +11 -11
- package/dist/delegation/session-coordinator.d.ts +3 -3
- package/dist/delegation/voting-coordinator.d.ts +3 -3
- package/dist/enforcement/enforcer-tools.js +2 -2
- package/dist/enforcement/loaders/codex-loader.d.ts +1 -1
- package/dist/enforcement/loaders/codex-loader.js +2 -2
- package/dist/index.d.ts +5 -5
- package/dist/index.js +6 -6
- package/dist/inference/deploy-verifier.js +1 -1
- package/dist/inference/inference-cycle.js +7 -7
- package/dist/integrations/base/README.md +2 -2
- package/dist/integrations/governance/index.js +1 -1
- package/dist/integrations/grok/grok-cli.d.ts +1 -1
- package/dist/integrations/grok/grok-cli.js +6 -6
- package/dist/integrations/grok/hooks/pre-tool-use.js +1 -1
- package/dist/integrations/grok/plugin/0xray/.mcp.json +3 -3
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/dist/integrations/hermes-agent/__init__.py +77 -71
- package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/after-install.md +14 -14
- package/dist/integrations/hermes-agent/bridge.mjs +14 -14
- package/dist/integrations/hermes-agent/logs/framework/routing-outcomes.json +1 -0
- package/dist/integrations/hermes-agent/plugin.yaml +5 -5
- package/dist/integrations/hermes-agent/schemas.py +12 -12
- package/dist/integrations/hermes-agent/test_plugin.py +128 -125
- package/dist/integrations/hermes-agent/tools.py +85 -23
- package/dist/integrations/openclaw/README.md +16 -16
- package/dist/integrations/openclaw/api-server.d.ts +4 -4
- package/dist/integrations/openclaw/api-server.js +9 -9
- package/dist/integrations/openclaw/config.js +1 -1
- package/dist/integrations/openclaw/hooks/{strray-hooks.d.ts → xray-hooks.d.ts} +4 -4
- package/dist/integrations/openclaw/index.d.ts +4 -4
- package/dist/integrations/openclaw/index.js +4 -4
- package/dist/integrations/openclaw/types.d.ts +1 -1
- package/dist/integrations/plugins/plugin-registry.js +2 -2
- package/dist/mcps/architect-tools.server.d.ts +2 -2
- package/dist/mcps/architect-tools.server.js +4 -4
- package/dist/mcps/auto-format.server.d.ts +2 -2
- package/dist/mcps/auto-format.server.js +4 -4
- package/dist/mcps/boot-orchestrator.server.d.ts +2 -2
- package/dist/mcps/boot-orchestrator.server.js +4 -4
- package/dist/mcps/config/server-config-registry.d.ts +1 -1
- package/dist/mcps/config/server-config-registry.js +7 -7
- package/dist/mcps/connection/mcp-connection.js +1 -1
- package/dist/mcps/enforcer-tools.server.d.ts +2 -2
- package/dist/mcps/enforcer-tools.server.js +4 -4
- package/dist/mcps/estimation.server.js +1 -1
- package/dist/mcps/framework-compliance-audit.server.d.ts +2 -2
- package/dist/mcps/framework-compliance-audit.server.js +4 -4
- package/dist/mcps/framework-help.server.js +7 -7
- package/dist/mcps/governance.server.js +1 -1
- package/dist/mcps/in-process-skill-registry.js +6 -6
- package/dist/mcps/knowledge-skills/api-design.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/api-design.server.js +4 -4
- package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +4 -4
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-review.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/code-review.server.js +4 -4
- package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
- package/dist/mcps/knowledge-skills/database-design.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/database-design.server.js +4 -4
- package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +4 -4
- package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/git-workflow.server.js +4 -4
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
- package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/mobile-development.server.js +4 -4
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
- package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +4 -4
- package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +4 -4
- package/dist/mcps/knowledge-skills/security-audit.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/security-audit.server.js +4 -4
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
- package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
- package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/tech-writer.server.js +5 -5
- package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +4 -4
- package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +4 -4
- package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +2 -2
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +6 -6
- package/dist/mcps/lint.server.d.ts +2 -2
- package/dist/mcps/lint.server.js +6 -6
- package/dist/mcps/mcp-client.js +3 -3
- package/dist/mcps/model-health-check.server.d.ts +2 -2
- package/dist/mcps/model-health-check.server.js +4 -4
- package/dist/mcps/orchestrator/server.js +2 -2
- package/dist/mcps/performance-analysis.server.d.ts +2 -2
- package/dist/mcps/performance-analysis.server.js +4 -4
- package/dist/mcps/processor-pipeline.server.d.ts +2 -2
- package/dist/mcps/processor-pipeline.server.js +4 -4
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.d.ts +3 -3
- package/dist/mcps/researcher.server.js +5 -5
- package/dist/mcps/security-scan.server.d.ts +2 -2
- package/dist/mcps/security-scan.server.js +4 -4
- package/dist/mcps/simulation/server-simulations.js +3 -3
- package/dist/mcps/state-manager.server.js +1 -1
- package/dist/metrics/agent-metrics.d.ts +4 -4
- package/dist/metrics/agent-metrics.js +1 -1
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.d.ts +2 -2
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
- package/dist/orchestrator/intelligent-commit-batcher.d.ts +1 -1
- package/dist/orchestrator/intelligent-commit-batcher.js +3 -3
- package/dist/orchestrator/multi-agent-orchestration-coordinator.d.ts +3 -3
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +9 -9
- package/dist/orchestrator/orchestrator.d.ts +3 -2
- package/dist/orchestrator/orchestrator.js +8 -6
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/plugin/xray-codex-injection.d.ts +1 -1
- package/dist/plugin/xray-codex-injection.js +8 -7
- package/dist/postprocessor/PostProcessor.d.ts +2 -2
- package/dist/postprocessor/PostProcessor.js +1 -1
- package/dist/postprocessor/monitoring/MonitoringEngine.d.ts +2 -2
- package/dist/postprocessor/services/RegressionAnalysisService.js +2 -2
- package/dist/postprocessor/triggers/GitHookTrigger.js +14 -14
- package/dist/processors/implementations/agents-md-validation-processor.js +2 -2
- package/dist/processors/implementations/inference-improvement-processor.js +2 -2
- package/dist/processors/implementations/log-protection-processor.d.ts +1 -1
- package/dist/processors/implementations/log-protection-processor.js +2 -2
- package/dist/processors/implementations/publish-preflight-processor.d.ts +1 -1
- package/dist/processors/implementations/publish-preflight-processor.js +3 -3
- package/dist/processors/implementations/regression-testing-processor.js +2 -2
- package/dist/processors/implementations/session-summary-processor.js +2 -2
- package/dist/processors/implementations/storytelling-trigger-processor.js +2 -2
- package/dist/processors/processor-manager.d.ts +2 -2
- 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/pre-command +1 -1
- package/dist/services/inference-tuner.js +2 -2
- package/dist/session/session-cleanup-manager.d.ts +3 -3
- package/dist/session/session-monitor.d.ts +3 -3
- package/dist/session/session-state-manager.d.ts +3 -3
- package/dist/skills/hermes-agent/SKILL.md +12 -12
- package/dist/skills/registry.json +1 -1
- package/dist/skills/storyteller/SKILL.md +1 -1
- package/dist/skills/xray-orchestrator/SKILL.md +141 -0
- package/dist/skills/xray-orchestrator/index.d.ts +13 -0
- package/dist/skills/xray-orchestrator/index.js +224 -0
- package/dist/state/index.d.ts +2 -1
- package/dist/state/index.js +2 -1
- package/dist/state/state-manager.d.ts +2 -2
- package/dist/state/state-manager.js +5 -4
- package/dist/utils/import-resolver.js +1 -1
- package/dist/utils/path-resolver.js +2 -2
- package/dist/utils/token-manager.js +1 -1
- package/dist/validation/estimation-validator.js +1 -1
- package/package.json +2 -2
- package/scripts/hooks/pre-command +1 -1
- package/scripts/hooks/run-hook.js +2 -2
- package/scripts/node/auto-reflection-generator.mjs +2 -2
- package/scripts/node/postinstall.cjs +1 -1
- package/scripts/node/pre-publish-guard.js +16 -10
- package/scripts/node/release.js +6 -6
- package/scripts/node/release.mjs +11 -11
- package/scripts/node/universal-version-manager.js +2 -2
- package/scripts/node/version-manager.mjs +1 -1
- package/src/integrations/grok/plugin/0xray/.mcp.json +3 -3
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
- package/src/mcps/architect-tools.server.ts +4 -4
- package/src/mcps/auto-format.server.ts +4 -4
- package/src/mcps/boot-orchestrator.server.ts +4 -4
- package/src/mcps/config/server-config-registry.ts +7 -7
- package/src/mcps/connection/mcp-connection.ts +1 -1
- package/src/mcps/enforcer-tools.server.ts +4 -4
- package/src/mcps/estimation.server.ts +1 -1
- package/src/mcps/framework-compliance-audit.server.ts +4 -4
- package/src/mcps/framework-help.server.ts +7 -7
- package/src/mcps/governance.server.ts +1 -1
- package/src/mcps/in-process-skill-registry.ts +6 -6
- package/src/mcps/knowledge-skills/api-design.server.test.ts +8 -8
- package/src/mcps/knowledge-skills/api-design.server.ts +4 -4
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +4 -4
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +1 -1
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +1 -1
- package/src/mcps/knowledge-skills/code-review.server.ts +4 -4
- package/src/mcps/knowledge-skills/content-creator.server.ts +1 -1
- package/src/mcps/knowledge-skills/database-design.server.ts +4 -4
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +4 -4
- package/src/mcps/knowledge-skills/git-workflow.server.ts +4 -4
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +1 -1
- package/src/mcps/knowledge-skills/log-monitor.server.ts +1 -1
- package/src/mcps/knowledge-skills/mobile-development.server.ts +4 -4
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1 -1
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +4 -4
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1 -1
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +4 -4
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +23 -23
- package/src/mcps/knowledge-skills/security-audit.server.ts +4 -4
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1 -1
- package/src/mcps/knowledge-skills/session-management.server.ts +1 -1
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +1 -1
- package/src/mcps/knowledge-skills/strategist.server.ts +1 -1
- package/src/mcps/knowledge-skills/tech-writer.server.ts +5 -5
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +28 -28
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +4 -4
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +19 -19
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +4 -4
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +6 -6
- package/src/mcps/lint.server.ts +6 -6
- package/src/mcps/mcp-client.ts +3 -3
- package/src/mcps/model-health-check.server.ts +4 -4
- package/src/mcps/orchestrator/server.ts +2 -2
- package/src/mcps/performance-analysis.server.ts +4 -4
- package/src/mcps/processor-pipeline.server.ts +4 -4
- package/src/mcps/registry.json +1 -1
- package/src/mcps/researcher.server.ts +5 -5
- package/src/mcps/security-scan.server.ts +4 -4
- package/src/mcps/simulation/server-simulations.ts +3 -3
- package/src/mcps/state-manager.server.ts +1 -1
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/hermes-agent/SKILL.md +12 -12
- package/src/skills/registry.json +1 -1
- package/src/skills/storyteller/SKILL.md +1 -1
- package/src/skills/xray-orchestrator/SKILL.md +141 -0
- package/src/skills/xray-orchestrator/index.ts +268 -0
- package/scripts/validate-stringray-comprehensive.js +0 -636
- /package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -0
|
@@ -2,7 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
v2.0: Now uses the Node.js bridge for real framework integration.
|
|
4
4
|
Falls back to CLI (npx 0xray) when bridge is unavailable.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import os
|
|
9
|
+
import shutil
|
|
10
|
+
import subprocess
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# ── Paths ─────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
PLUGIN_DIR = Path(__file__).resolve().parent
|
|
17
|
+
BRIDGE_PATH = PLUGIN_DIR / "bridge.mjs"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _get_project_root():
|
|
21
|
+
"""Find the project root by walking up from cwd."""
|
|
22
|
+
cwd = os.getcwd()
|
|
23
|
+
home = Path.home()
|
|
24
|
+
d = Path(cwd).resolve()
|
|
25
|
+
while True:
|
|
26
|
+
if (d / "node_modules" / "0xray" / "package.json").exists():
|
|
27
|
+
return str(d)
|
|
28
|
+
if (d / ".opencode" / "xray" / "features.json").exists():
|
|
29
|
+
return str(d)
|
|
30
|
+
if d != home and (d / "package.json").exists():
|
|
31
|
+
return str(d)
|
|
32
|
+
d = d.parent
|
|
33
|
+
if d == d.parent:
|
|
34
|
+
break
|
|
35
|
+
return cwd
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _run_xray(args, timeout=30):
|
|
39
|
+
"""Run 0xray CLI command, return JSON string result."""
|
|
40
|
+
try:
|
|
41
|
+
result = subprocess.run(
|
|
5
42
|
["npx", "0xray"] + args,
|
|
43
|
+
capture_output=True, text=True, timeout=timeout,
|
|
44
|
+
)
|
|
45
|
+
if result.returncode == 0:
|
|
46
|
+
return json.dumps({"status": "ok", "output": result.stdout})
|
|
47
|
+
return json.dumps({"status": "error", "error": result.stderr[:500]})
|
|
48
|
+
except FileNotFoundError:
|
|
6
49
|
return json.dumps({"error": "0xray not found. Run: npm install -g 0xray"})
|
|
7
50
|
except subprocess.TimeoutExpired:
|
|
8
51
|
return json.dumps({"error": f"Command timed out after {timeout}s"})
|
|
@@ -10,9 +53,28 @@ Falls back to CLI (npx 0xray) when bridge is unavailable.
|
|
|
10
53
|
return json.dumps({"error": str(e)})
|
|
11
54
|
|
|
12
55
|
|
|
13
|
-
|
|
56
|
+
def _bridge_call(command, timeout=30):
|
|
57
|
+
"""Call bridge.mjs with a JSON command, return parsed dict."""
|
|
58
|
+
try:
|
|
59
|
+
result = subprocess.run(
|
|
60
|
+
["node", str(BRIDGE_PATH), "--cwd", _get_project_root()],
|
|
61
|
+
input=json.dumps(command),
|
|
62
|
+
capture_output=True, text=True, timeout=timeout,
|
|
63
|
+
)
|
|
64
|
+
if result.returncode != 0:
|
|
65
|
+
return {"error": result.stderr[:300] if result.stderr else "bridge failed"}
|
|
66
|
+
return json.loads(result.stdout)
|
|
67
|
+
except FileNotFoundError:
|
|
68
|
+
return {"error": "node not found"}
|
|
69
|
+
except subprocess.TimeoutExpired:
|
|
70
|
+
return {"error": f"bridge timed out after {timeout}s"}
|
|
71
|
+
except (json.JSONDecodeError, OSError) as e:
|
|
72
|
+
return {"error": str(e)}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# ── Tool: xray_validate ─────────────────────────────────────
|
|
14
76
|
|
|
15
|
-
def
|
|
77
|
+
def xray_validate(args: dict, **kwargs) -> str:
|
|
16
78
|
"""Run pre-commit validation on files using the framework.
|
|
17
79
|
|
|
18
80
|
Uses bridge for real quality gate + processor pipeline.
|
|
@@ -41,7 +103,7 @@ def strray_validate(args: dict, **kwargs) -> str:
|
|
|
41
103
|
})
|
|
42
104
|
|
|
43
105
|
# Fallback to CLI
|
|
44
|
-
result = json.loads(
|
|
106
|
+
result = json.loads(_run_xray(["validate"], timeout=30))
|
|
45
107
|
if "error" in result:
|
|
46
108
|
return json.dumps(result)
|
|
47
109
|
|
|
@@ -54,10 +116,10 @@ def strray_validate(args: dict, **kwargs) -> str:
|
|
|
54
116
|
})
|
|
55
117
|
|
|
56
118
|
|
|
57
|
-
# ── Tool:
|
|
119
|
+
# ── Tool: xray_codex_check ──────────────────────────────────
|
|
58
120
|
|
|
59
|
-
def
|
|
60
|
-
"""Check code against
|
|
121
|
+
def xray_codex_check(args: dict, **kwargs) -> str:
|
|
122
|
+
"""Check code against Xray codex rules.
|
|
61
123
|
|
|
62
124
|
Uses bridge for real quality gate codex checks.
|
|
63
125
|
Falls back to CLI if bridge unavailable.
|
|
@@ -93,7 +155,7 @@ def strray_codex_check(args: dict, **kwargs) -> str:
|
|
|
93
155
|
"focus_areas": focus_areas or "all",
|
|
94
156
|
"code_length": len(code),
|
|
95
157
|
"note": "Bridge unavailable — basic analysis only. "
|
|
96
|
-
"Full codex validation available via MCP:
|
|
158
|
+
"Full codex validation available via MCP: mcp_xray_enforcer_codex_enforcement",
|
|
97
159
|
"via": "static",
|
|
98
160
|
})
|
|
99
161
|
|
|
@@ -109,7 +171,7 @@ def strray_codex_check(args: dict, **kwargs) -> str:
|
|
|
109
171
|
"via": "bridge",
|
|
110
172
|
})
|
|
111
173
|
|
|
112
|
-
result = json.loads(
|
|
174
|
+
result = json.loads(_run_xray(["health"], timeout=15))
|
|
113
175
|
if "error" in result:
|
|
114
176
|
return json.dumps(result)
|
|
115
177
|
|
|
@@ -121,10 +183,10 @@ def strray_codex_check(args: dict, **kwargs) -> str:
|
|
|
121
183
|
})
|
|
122
184
|
|
|
123
185
|
|
|
124
|
-
# ── Tool:
|
|
186
|
+
# ── Tool: xray_health ───────────────────────────────────────
|
|
125
187
|
|
|
126
|
-
def
|
|
127
|
-
"""Check
|
|
188
|
+
def xray_health(args: dict, **kwargs) -> str:
|
|
189
|
+
"""Check Xray framework health via bridge.
|
|
128
190
|
|
|
129
191
|
Returns framework status, loaded components, version.
|
|
130
192
|
"""
|
|
@@ -141,13 +203,13 @@ def strray_health(args: dict, **kwargs) -> str:
|
|
|
141
203
|
})
|
|
142
204
|
|
|
143
205
|
# Fallback to CLI
|
|
144
|
-
return
|
|
206
|
+
return _run_xray(["health"], timeout=15)
|
|
145
207
|
|
|
146
208
|
|
|
147
|
-
# ── Tool:
|
|
209
|
+
# ── Tool: xray_hooks ───────────────────────────────────────
|
|
148
210
|
|
|
149
|
-
def
|
|
150
|
-
"""Manage
|
|
211
|
+
def xray_hooks(args: dict, **kwargs) -> str:
|
|
212
|
+
"""Manage Xray git hooks.
|
|
151
213
|
|
|
152
214
|
Actions: install, uninstall, list, status
|
|
153
215
|
Uses bridge for hook management when available.
|
|
@@ -174,7 +236,7 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
174
236
|
|
|
175
237
|
# Fallback: direct file-based hook management
|
|
176
238
|
git_hooks_dir = Path(_get_project_root()) / ".git" / "hooks"
|
|
177
|
-
|
|
239
|
+
xray_hooks_dir = Path(_get_project_root()) / "hooks"
|
|
178
240
|
|
|
179
241
|
if not git_hooks_dir.exists():
|
|
180
242
|
return json.dumps({"error": "Not a git repository", "via": "fallback"})
|
|
@@ -183,19 +245,19 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
183
245
|
result = {"managed": [], "missing": [], "external": [], "stale": []}
|
|
184
246
|
for hook_name in hooks:
|
|
185
247
|
git_hook = git_hooks_dir / hook_name
|
|
186
|
-
|
|
248
|
+
xray_hook = xray_hooks_dir / hook_name
|
|
187
249
|
if not git_hook.exists():
|
|
188
250
|
result["missing"].append(hook_name)
|
|
189
251
|
else:
|
|
190
252
|
try:
|
|
191
253
|
content = git_hook.read_text()[:500]
|
|
192
|
-
if "StringRay" in content or "strray" in content or "run-hook.js" in content:
|
|
254
|
+
if "Xray" in content or "StringRay" in content or "xray" in content or "strray" in content or "run-hook.js" in content:
|
|
193
255
|
result["managed"].append(hook_name)
|
|
194
256
|
else:
|
|
195
257
|
result["external"].append(hook_name)
|
|
196
258
|
except OSError:
|
|
197
259
|
result["external"].append(hook_name)
|
|
198
|
-
if not
|
|
260
|
+
if not xray_hook.exists():
|
|
199
261
|
result["stale"].append(hook_name)
|
|
200
262
|
return json.dumps({"status": "ok", "action": action, **result, "via": "fallback"})
|
|
201
263
|
|
|
@@ -203,7 +265,7 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
203
265
|
installed = []
|
|
204
266
|
skipped = []
|
|
205
267
|
for hook_name in hooks:
|
|
206
|
-
src =
|
|
268
|
+
src = xray_hooks_dir / hook_name
|
|
207
269
|
dst = git_hooks_dir / hook_name
|
|
208
270
|
if not src.exists():
|
|
209
271
|
skipped.append(hook_name)
|
|
@@ -212,7 +274,7 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
212
274
|
if dst.exists():
|
|
213
275
|
try:
|
|
214
276
|
content = dst.read_text()[:500]
|
|
215
|
-
if "StringRay" not in content and "strray" not in content:
|
|
277
|
+
if "Xray" not in content and "StringRay" not in content and "xray" not in content and "strray" not in content:
|
|
216
278
|
dst.rename(dst.with_suffix(".strray-backup"))
|
|
217
279
|
else:
|
|
218
280
|
dst.unlink()
|
|
@@ -238,8 +300,8 @@ def strray_hooks(args: dict, **kwargs) -> str:
|
|
|
238
300
|
continue
|
|
239
301
|
try:
|
|
240
302
|
content = dst.read_text()[:500]
|
|
241
|
-
|
|
242
|
-
if
|
|
303
|
+
is_xray = "Xray" in content or "StringRay" in content or "xray" in content or "strray" in content or "run-hook.js" in content
|
|
304
|
+
if is_xray or dst.is_symlink():
|
|
243
305
|
dst.unlink()
|
|
244
306
|
if backup.exists():
|
|
245
307
|
shutil.move(str(backup), str(dst))
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# OpenClaw Integration
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Xray integration for OpenClaw - a self-hosted AI gateway that connects messaging platforms to AI coding agents.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
This integration allows
|
|
7
|
+
This integration allows Xray to:
|
|
8
8
|
- Connect to OpenClaw Gateway via WebSocket
|
|
9
|
-
- Expose
|
|
9
|
+
- Expose Xray capabilities through OpenClaw skills
|
|
10
10
|
- Send tool execution events to OpenClaw for real-time tracking
|
|
11
11
|
- Receive commands from OpenClaw channels (WhatsApp, Telegram, Discord, etc.)
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ This integration allows StringRay to:
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
17
|
-
│ User │────▶│ OpenClaw │────▶│
|
|
17
|
+
│ User │────▶│ OpenClaw │────▶│ Xray │
|
|
18
18
|
│ (WhatsApp, │ │ Gateway │ │ Skills │
|
|
19
19
|
│ Discord, │ │ │ │ │
|
|
20
20
|
│ Telegram) │◀────│ │◀────│ │
|
|
@@ -37,7 +37,7 @@ npm install ws
|
|
|
37
37
|
|
|
38
38
|
### 2. Configure OpenClaw
|
|
39
39
|
|
|
40
|
-
Create `.
|
|
40
|
+
Create `.xray/config/openclaw.json`:
|
|
41
41
|
|
|
42
42
|
```json
|
|
43
43
|
{
|
|
@@ -82,11 +82,11 @@ const integration = await initializeOpenClawIntegration('/path/to/config.json',
|
|
|
82
82
|
|
|
83
83
|
After installation, use these commands in any OpenClaw channel:
|
|
84
84
|
|
|
85
|
-
- `/
|
|
86
|
-
- `/
|
|
87
|
-
- `/
|
|
88
|
-
- `/
|
|
89
|
-
- `/
|
|
85
|
+
- `/xray` - Show status
|
|
86
|
+
- `/xray-analyze <file>` - Analyze code
|
|
87
|
+
- `/xray-code <file>` - Code review
|
|
88
|
+
- `/xray-file <file>` - Read file
|
|
89
|
+
- `/xray-exec <command>` - Execute command
|
|
90
90
|
|
|
91
91
|
## Configuration
|
|
92
92
|
|
|
@@ -115,14 +115,14 @@ The integration exposes a local HTTP API on port 18431:
|
|
|
115
115
|
|
|
116
116
|
### stringray-orchestrator
|
|
117
117
|
|
|
118
|
-
Main skill providing
|
|
118
|
+
Main skill providing Xray commands:
|
|
119
119
|
|
|
120
120
|
```markdown
|
|
121
|
-
/
|
|
122
|
-
/
|
|
123
|
-
/
|
|
124
|
-
/
|
|
125
|
-
/
|
|
121
|
+
/xray - Show status
|
|
122
|
+
/xray-analyze <file> - Analyze code
|
|
123
|
+
/xray-code <file> - Code review
|
|
124
|
+
/xray-file <file> - Read file
|
|
125
|
+
/xray-exec <command> - Execute command
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
## Documentation
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @version 1.0.0
|
|
8
8
|
* @since 2026-03-14
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { XrayAPIServerConfig, AgentInvokeRequest, AgentInvokeResponse, APIServerStatistics } from './types.js';
|
|
11
11
|
/**
|
|
12
12
|
* Agent invoker interface - implemented by 0xRay
|
|
13
13
|
*/
|
|
@@ -21,7 +21,7 @@ export interface AgentInvoker {
|
|
|
21
21
|
/**
|
|
22
22
|
* 0xRay API Server
|
|
23
23
|
*/
|
|
24
|
-
export declare class
|
|
24
|
+
export declare class XrayAPIServer {
|
|
25
25
|
private server;
|
|
26
26
|
private config;
|
|
27
27
|
private agentInvoker;
|
|
@@ -29,7 +29,7 @@ export declare class StringRayAPIServer {
|
|
|
29
29
|
private stats;
|
|
30
30
|
private responseTimes;
|
|
31
31
|
private logger;
|
|
32
|
-
constructor(config:
|
|
32
|
+
constructor(config: XrayAPIServerConfig);
|
|
33
33
|
/**
|
|
34
34
|
* Set the agent invoker
|
|
35
35
|
*/
|
|
@@ -84,4 +84,4 @@ export declare class StringRayAPIServer {
|
|
|
84
84
|
/**
|
|
85
85
|
* Factory function to create API server
|
|
86
86
|
*/
|
|
87
|
-
export declare function
|
|
87
|
+
export declare function createXrayAPIServer(config: XrayAPIServerConfig): XrayAPIServer;
|
|
@@ -12,7 +12,7 @@ import * as http from 'http';
|
|
|
12
12
|
/**
|
|
13
13
|
* 0xRay API Server
|
|
14
14
|
*/
|
|
15
|
-
export class
|
|
15
|
+
export class XrayAPIServer {
|
|
16
16
|
server = null;
|
|
17
17
|
config;
|
|
18
18
|
agentInvoker = null;
|
|
@@ -51,7 +51,7 @@ export class StringRayAPIServer {
|
|
|
51
51
|
*/
|
|
52
52
|
async start() {
|
|
53
53
|
if (this.server) {
|
|
54
|
-
this.logger.warn('[
|
|
54
|
+
this.logger.warn('[XrayAPIServer] Server already running');
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
return new Promise((resolve, reject) => {
|
|
@@ -59,13 +59,13 @@ export class StringRayAPIServer {
|
|
|
59
59
|
this.handleRequest(req, res);
|
|
60
60
|
});
|
|
61
61
|
this.server.on('error', (error) => {
|
|
62
|
-
this.logger.error('[
|
|
62
|
+
this.logger.error('[XrayAPIServer] Server error:', error);
|
|
63
63
|
this.stats.errors++;
|
|
64
64
|
reject(error);
|
|
65
65
|
});
|
|
66
66
|
this.server.listen(this.config.port, this.config.host, () => {
|
|
67
67
|
this.stats.startedAt = Date.now();
|
|
68
|
-
this.logger.info(`[
|
|
68
|
+
this.logger.info(`[XrayAPIServer] Listening on http://${this.config.host}:${this.config.port}`);
|
|
69
69
|
resolve();
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -77,7 +77,7 @@ export class StringRayAPIServer {
|
|
|
77
77
|
return new Promise((resolve) => {
|
|
78
78
|
if (this.server) {
|
|
79
79
|
this.server.close(() => {
|
|
80
|
-
this.logger.info('[
|
|
80
|
+
this.logger.info('[XrayAPIServer] Server stopped');
|
|
81
81
|
this.server = null;
|
|
82
82
|
resolve();
|
|
83
83
|
});
|
|
@@ -123,7 +123,7 @@ export class StringRayAPIServer {
|
|
|
123
123
|
// to prevent cross-origin attacks where a malicious site could make
|
|
124
124
|
// authenticated requests using the API key from a victim's browser.
|
|
125
125
|
if (this.config.apiKey) {
|
|
126
|
-
this.logger.warn('[
|
|
126
|
+
this.logger.warn('[XrayAPIServer] Security: API key is set with CORS enabled. ' +
|
|
127
127
|
'Restricting Access-Control-Allow-Origin to localhost only. ' +
|
|
128
128
|
'Configure explicit allowed origins if cross-origin access is needed.');
|
|
129
129
|
const origin = req.headers.origin;
|
|
@@ -203,7 +203,7 @@ export class StringRayAPIServer {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
catch (error) {
|
|
206
|
-
this.logger.error(`[
|
|
206
|
+
this.logger.error(`[XrayAPIServer] Error handling request:`, error);
|
|
207
207
|
this.stats.errors++;
|
|
208
208
|
const errorMessage = error instanceof Error ? error.message : 'Internal server error';
|
|
209
209
|
this.sendResponse(res, 500, { error: errorMessage });
|
|
@@ -384,6 +384,6 @@ export class StringRayAPIServer {
|
|
|
384
384
|
/**
|
|
385
385
|
* Factory function to create API server
|
|
386
386
|
*/
|
|
387
|
-
export function
|
|
388
|
-
return new
|
|
387
|
+
export function createXrayAPIServer(config) {
|
|
388
|
+
return new XrayAPIServer(config);
|
|
389
389
|
}
|
|
@@ -54,7 +54,7 @@ export class OpenClawConfigLoader {
|
|
|
54
54
|
loadedAt = 0;
|
|
55
55
|
constructor(configPath) {
|
|
56
56
|
this.configPath = configPath ||
|
|
57
|
-
path.join(process.cwd(), '.
|
|
57
|
+
path.join(process.cwd(), '.xray', 'config', 'openclaw.json');
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Load configuration from file with environment variable overrides
|
|
@@ -22,7 +22,7 @@ export interface OpenClawHooksConfig {
|
|
|
22
22
|
/**
|
|
23
23
|
* 0xRay tool event
|
|
24
24
|
*/
|
|
25
|
-
export interface
|
|
25
|
+
export interface XrayToolEvent {
|
|
26
26
|
toolName: string;
|
|
27
27
|
toolId: string;
|
|
28
28
|
args: Record<string, unknown>;
|
|
@@ -36,7 +36,7 @@ export interface StringRayToolEvent {
|
|
|
36
36
|
/**
|
|
37
37
|
* Hook event callback type
|
|
38
38
|
*/
|
|
39
|
-
export type ToolEventCallback = (event:
|
|
39
|
+
export type ToolEventCallback = (event: XrayToolEvent) => void | Promise<void>;
|
|
40
40
|
/**
|
|
41
41
|
* OpenClaw Hooks Manager
|
|
42
42
|
*/
|
|
@@ -80,11 +80,11 @@ export declare class OpenClawHooksManager {
|
|
|
80
80
|
/**
|
|
81
81
|
* Handle tool.before event from 0xRay
|
|
82
82
|
*/
|
|
83
|
-
onToolBefore(event:
|
|
83
|
+
onToolBefore(event: XrayToolEvent): Promise<void>;
|
|
84
84
|
/**
|
|
85
85
|
* Handle tool.after event from 0xRay
|
|
86
86
|
*/
|
|
87
|
-
onToolAfter(event:
|
|
87
|
+
onToolAfter(event: XrayToolEvent): Promise<void>;
|
|
88
88
|
/**
|
|
89
89
|
* Queue an event for later delivery when connection is restored
|
|
90
90
|
*/
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
import { BaseIntegration } from '../base/index.js';
|
|
10
10
|
import type { OpenClawIntegrationConfig, IntegrationStatistics } from './types.js';
|
|
11
11
|
import { OpenClawClient } from './client.js';
|
|
12
|
-
import {
|
|
13
|
-
import { OpenClawHooksManager } from './hooks/
|
|
12
|
+
import { XrayAPIServer } from './api-server.js';
|
|
13
|
+
import { OpenClawHooksManager } from './hooks/xray-hooks.js';
|
|
14
14
|
import type { AgentInvoker } from './api-server.js';
|
|
15
15
|
/**
|
|
16
16
|
* Main OpenClaw Integration class
|
|
@@ -58,7 +58,7 @@ export declare class OpenClawIntegration extends BaseIntegration {
|
|
|
58
58
|
/**
|
|
59
59
|
* Get the API server instance
|
|
60
60
|
*/
|
|
61
|
-
getAPIServer():
|
|
61
|
+
getAPIServer(): XrayAPIServer | null;
|
|
62
62
|
/**
|
|
63
63
|
* Get the client instance
|
|
64
64
|
*/
|
|
@@ -98,4 +98,4 @@ export * from './types.js';
|
|
|
98
98
|
export * from './config.js';
|
|
99
99
|
export * from './client.js';
|
|
100
100
|
export * from './api-server.js';
|
|
101
|
-
export { OpenClawHooksManager } from './hooks/
|
|
101
|
+
export { OpenClawHooksManager } from './hooks/xray-hooks.js';
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
import { BaseIntegration } from '../base/index.js';
|
|
10
10
|
import { OpenClawConfigLoader } from './config.js';
|
|
11
11
|
import { OpenClawClient } from './client.js';
|
|
12
|
-
import {
|
|
12
|
+
import { XrayAPIServer } from './api-server.js';
|
|
13
13
|
import { initializeGovernanceIntegration } from '../governance/index.js';
|
|
14
14
|
import { featuresConfigLoader } from '../../core/features-config.js';
|
|
15
|
-
import { OpenClawHooksManager } from './hooks/
|
|
15
|
+
import { OpenClawHooksManager } from './hooks/xray-hooks.js';
|
|
16
16
|
import { mcpClientManager } from '../../mcps/mcp-client.js';
|
|
17
17
|
/**
|
|
18
18
|
* Main OpenClaw Integration class
|
|
@@ -56,7 +56,7 @@ export class OpenClawIntegration extends BaseIntegration {
|
|
|
56
56
|
// Initialize API server if enabled
|
|
57
57
|
if (config.apiServer?.enabled) {
|
|
58
58
|
await this.log('info', 'Starting API server...');
|
|
59
|
-
this.apiServer = new
|
|
59
|
+
this.apiServer = new XrayAPIServer(config.apiServer);
|
|
60
60
|
if (this.agentInvoker) {
|
|
61
61
|
this.apiServer.setAgentInvoker(this.agentInvoker);
|
|
62
62
|
}
|
|
@@ -348,4 +348,4 @@ export * from './types.js';
|
|
|
348
348
|
export * from './config.js';
|
|
349
349
|
export * from './client.js';
|
|
350
350
|
export * from './api-server.js';
|
|
351
|
-
export { OpenClawHooksManager } from './hooks/
|
|
351
|
+
export { OpenClawHooksManager } from './hooks/xray-hooks.js';
|
|
@@ -46,8 +46,8 @@ export class PluginRegistry extends EventEmitter {
|
|
|
46
46
|
reloadDebounce = new Map();
|
|
47
47
|
constructor(config = {}) {
|
|
48
48
|
super();
|
|
49
|
-
this.pluginsDir = config.pluginsDir || ".
|
|
50
|
-
this.configPath = config.configPath || ".
|
|
49
|
+
this.pluginsDir = config.pluginsDir || ".xray/plugins";
|
|
50
|
+
this.configPath = config.configPath || ".xray/config/plugin-config.json";
|
|
51
51
|
this.autoStart = config.autoStart ?? true;
|
|
52
52
|
this.enableMetrics = config.enableMetrics ?? true;
|
|
53
53
|
this.enableHotReload = config.enableHotReload ?? false;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Converts architect-tools.ts functions into MCP server tools
|
|
5
5
|
* Provides contextual analysis capabilities via MCP protocol
|
|
6
6
|
*/
|
|
7
|
-
declare class
|
|
7
|
+
declare class XrayArchitectToolsServer {
|
|
8
8
|
private server;
|
|
9
9
|
constructor();
|
|
10
10
|
private setupToolHandlers;
|
|
@@ -14,4 +14,4 @@ declare class StringRayArchitectToolsServer {
|
|
|
14
14
|
private architectureAssessment;
|
|
15
15
|
run(): Promise<void>;
|
|
16
16
|
}
|
|
17
|
-
export default
|
|
17
|
+
export default XrayArchitectToolsServer;
|
|
@@ -9,11 +9,11 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
9
9
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
10
10
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
11
11
|
import { contextAnalysis as architectContextAnalysis, codebaseStructure as architectCodebaseStructure, dependencyAnalysis as architectDependencyAnalysis, architectureAssessment as architectArchitectureAssessment, } from "../architect/architect-tools.js";
|
|
12
|
-
class
|
|
12
|
+
class XrayArchitectToolsServer {
|
|
13
13
|
server;
|
|
14
14
|
constructor() {
|
|
15
15
|
this.server = new Server({
|
|
16
|
-
name: "architect-tools", version: "2.0.
|
|
16
|
+
name: "architect-tools", version: "2.0.1",
|
|
17
17
|
}, {
|
|
18
18
|
capabilities: {
|
|
19
19
|
tools: {},
|
|
@@ -271,7 +271,7 @@ class StringRayArchitectToolsServer {
|
|
|
271
271
|
}
|
|
272
272
|
}
|
|
273
273
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
274
|
-
const server = new
|
|
274
|
+
const server = new XrayArchitectToolsServer();
|
|
275
275
|
server.run().catch((error) => frameworkLogger.log("mcps/architect-tools", "run", "error", { error: String(error) }));
|
|
276
276
|
}
|
|
277
|
-
export default
|
|
277
|
+
export default XrayArchitectToolsServer;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Automated code formatting hook with Prettier and framework-specific formatters
|
|
5
5
|
*/
|
|
6
|
-
declare class
|
|
6
|
+
declare class XrayAutoFormatServer {
|
|
7
7
|
private server;
|
|
8
8
|
constructor();
|
|
9
9
|
private setupToolHandlers;
|
|
@@ -16,4 +16,4 @@ declare class StringRayAutoFormatServer {
|
|
|
16
16
|
private generateFormatSummary;
|
|
17
17
|
run(): Promise<void>;
|
|
18
18
|
}
|
|
19
|
-
export {
|
|
19
|
+
export { XrayAutoFormatServer };
|
|
@@ -9,11 +9,11 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
|
|
|
9
9
|
import { execFileSync } from "child_process";
|
|
10
10
|
import fs from "fs";
|
|
11
11
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
12
|
-
class
|
|
12
|
+
class XrayAutoFormatServer {
|
|
13
13
|
server;
|
|
14
14
|
constructor() {
|
|
15
15
|
this.server = new Server({
|
|
16
|
-
name: "auto-format", version: "2.0.
|
|
16
|
+
name: "auto-format", version: "2.0.1",
|
|
17
17
|
}, {
|
|
18
18
|
capabilities: {
|
|
19
19
|
tools: {},
|
|
@@ -407,7 +407,7 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
|
|
|
407
407
|
}
|
|
408
408
|
// Start the server if run directly
|
|
409
409
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
410
|
-
const server = new
|
|
410
|
+
const server = new XrayAutoFormatServer();
|
|
411
411
|
server.run().catch((error) => frameworkLogger.log("mcps/auto-format", "run", "error", { error: String(error) }));
|
|
412
412
|
}
|
|
413
|
-
export {
|
|
413
|
+
export { XrayAutoFormatServer };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Advanced initialization orchestration with dependency management and health monitoring
|
|
5
5
|
*/
|
|
6
|
-
declare class
|
|
6
|
+
declare class XrayBootOrchestratorServer {
|
|
7
7
|
private server;
|
|
8
8
|
private bootStatus;
|
|
9
9
|
private bootSequence;
|
|
@@ -46,4 +46,4 @@ declare class StringRayBootOrchestratorServer {
|
|
|
46
46
|
private formatOverallStatus;
|
|
47
47
|
run(): Promise<void>;
|
|
48
48
|
}
|
|
49
|
-
export {
|
|
49
|
+
export { XrayBootOrchestratorServer };
|
|
@@ -11,7 +11,7 @@ import fs from "fs";
|
|
|
11
11
|
import path from "path";
|
|
12
12
|
import { frameworkLogger } from "../core/framework-logger.js";
|
|
13
13
|
import { resolveLogDir, resolveStateDir } from "../core/config-paths.js";
|
|
14
|
-
class
|
|
14
|
+
class XrayBootOrchestratorServer {
|
|
15
15
|
server;
|
|
16
16
|
bootStatus;
|
|
17
17
|
// Boot sequence in dependency order
|
|
@@ -30,7 +30,7 @@ class StringRayBootOrchestratorServer {
|
|
|
30
30
|
];
|
|
31
31
|
constructor() {
|
|
32
32
|
this.server = new Server({
|
|
33
|
-
name: "boot-orchestrator", version: "2.0.
|
|
33
|
+
name: "boot-orchestrator", version: "2.0.1",
|
|
34
34
|
}, {
|
|
35
35
|
capabilities: {
|
|
36
36
|
tools: {},
|
|
@@ -847,7 +847,7 @@ ${results.warnings.length > 0 ? `**Warnings:**\n${results.warnings.map((w) => `
|
|
|
847
847
|
}
|
|
848
848
|
// Start the server if run directly
|
|
849
849
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
850
|
-
const server = new
|
|
850
|
+
const server = new XrayBootOrchestratorServer();
|
|
851
851
|
server.run().catch((error) => frameworkLogger.log("mcps/boot-orchestrator", "run", "error", { error: String(error) }));
|
|
852
852
|
}
|
|
853
|
-
export {
|
|
853
|
+
export { XrayBootOrchestratorServer };
|
|
@@ -41,7 +41,7 @@ export declare class ServerConfigRegistry {
|
|
|
41
41
|
/**
|
|
42
42
|
* Create a dynamic configuration for an unknown server
|
|
43
43
|
* Uses the knowledge-skills directory as default location.
|
|
44
|
-
|
|
44
|
+
* Now respects the "xray" field declared in package.json.
|
|
45
45
|
*/
|
|
46
46
|
createDynamicConfig(serverName: string): IServerConfig;
|
|
47
47
|
}
|