0xray 3.0.14 → 3.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.
Files changed (296) hide show
  1. package/.gitignore.default +59 -0
  2. package/.mcp.json +35 -0
  3. package/.opencode/codex.codex +1 -1
  4. package/.opencode/commands/dependency-audit.md +3 -3
  5. package/.opencode/commands/summary-logger.md +4 -4
  6. package/.opencode/enforcer-config.json +2 -2
  7. package/.opencode/hooks/post-commit +1 -1
  8. package/.opencode/init.sh +10 -4
  9. package/.plugin/plugin.json +11 -0
  10. package/AGENTS-consumer.md +46 -0
  11. package/AGENTS.md +10 -10
  12. package/LICENSE +1 -1
  13. package/README.md +8 -8
  14. package/SKILLS.md +140 -0
  15. package/dist/.gitignore.default +59 -0
  16. package/dist/AGENTS.md +10 -10
  17. package/dist/CHANGELOG.md +34 -0
  18. package/dist/LICENSE +1 -1
  19. package/dist/README.md +8 -8
  20. package/dist/SKILLS.md +140 -0
  21. package/dist/agents/index.js +3 -1
  22. package/dist/agents/registry.js +13 -0
  23. package/dist/analytics/routing-refiner.js +1 -1
  24. package/dist/architect/architectural-integrity.js +3 -3
  25. package/dist/benchmark/performance-benchmark.js +4 -3
  26. package/dist/cli/commands/antigravity-status.js +23 -23
  27. package/dist/cli/commands/credible-init.js +1 -1
  28. package/dist/cli/commands/hermes-install.js +12 -4
  29. package/dist/cli/commands/mcp-install.js +1 -1
  30. package/dist/cli/commands/openclaw-install.js +10 -1
  31. package/dist/cli/commands/opencode-install.js +22 -0
  32. package/dist/cli/commands/plugin-commands.js +2 -2
  33. package/dist/cli/commands/publish-agent.js +5 -5
  34. package/dist/cli/commands/skill-install.js +39 -2
  35. package/dist/cli/commands/status.js +8 -3
  36. package/dist/cli/commands/storyteller.js +2 -2
  37. package/dist/cli/index.js +17 -11
  38. package/dist/cli/server.js +4 -4
  39. package/dist/core/activity-logger.js +4 -4
  40. package/dist/core/agent-spawn-gate.js +1 -1
  41. package/dist/core/boot-orchestrator.js +30 -31
  42. package/dist/core/bridge.mjs +26 -26
  43. package/dist/core/codex-formatter.js +2 -3
  44. package/dist/core/codex-injector.js +7 -7
  45. package/dist/core/config-loader.js +3 -2
  46. package/dist/core/config-paths.js +38 -31
  47. package/dist/core/context-loader.js +5 -5
  48. package/dist/core/features-config.js +1 -1
  49. package/dist/core/index.js +2 -2
  50. package/dist/core/logging-config.js +7 -7
  51. package/dist/core/orchestrator.js +2 -2
  52. package/dist/core/system-prompt-generator.js +2 -2
  53. package/dist/core/xray-activation.js +42 -41
  54. package/dist/delegation/agent-delegator.js +3 -3
  55. package/dist/enforcement/enforcer-tools.js +4 -4
  56. package/dist/enforcement/loaders/codex-loader.js +2 -2
  57. package/dist/execution/opencode-cli-invoker.js +1 -1
  58. package/dist/governance/governance-service.js +1 -1
  59. package/dist/governance/llm-governance-provider.js +223 -0
  60. package/dist/index.js +6 -6
  61. package/dist/inference/deploy-verifier.js +1 -1
  62. package/dist/inference/inference-cycle.js +16 -16
  63. package/dist/integrations/base/README.md +1 -1
  64. package/dist/integrations/enforcement-gate.js +2 -2
  65. package/dist/integrations/governance/index.js +1 -1
  66. package/dist/integrations/grok/grok-cli.js +20 -6
  67. package/dist/integrations/grok/hooks/pre-tool-use.js +3 -3
  68. package/dist/integrations/grok/plugin/0xray/.mcp.json +16 -4
  69. package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  70. package/dist/integrations/hermes-agent/__init__.py +90 -79
  71. package/dist/integrations/hermes-agent/after-install.md +14 -14
  72. package/dist/integrations/hermes-agent/bridge.mjs +60 -25
  73. package/dist/integrations/hermes-agent/plugin.yaml +5 -5
  74. package/dist/integrations/hermes-agent/schemas.py +61 -12
  75. package/dist/integrations/hermes-agent/test_plugin.py +124 -124
  76. package/dist/integrations/hermes-agent/tools.py +129 -25
  77. package/dist/integrations/openclaw/README.md +6 -6
  78. package/dist/integrations/openclaw/config.js +1 -1
  79. package/dist/integrations/openclaw/index.js +2 -2
  80. package/dist/integrations/openclaw/types.js +3 -3
  81. package/dist/integrations/plugins/plugin-integration.js +1 -1
  82. package/dist/integrations/plugins/plugin-registry.js +3 -3
  83. package/dist/mcps/architect-tools.server.js +3 -2
  84. package/dist/mcps/auto-format.server.js +2 -2
  85. package/dist/mcps/boot-orchestrator.server.js +2 -2
  86. package/dist/mcps/config/config-loader.js +40 -9
  87. package/dist/mcps/config/server-config-registry.js +10 -10
  88. package/dist/mcps/connection/mcp-connection.js +1 -1
  89. package/dist/mcps/enforcer-tools.server.js +2 -2
  90. package/dist/mcps/estimation.server.js +3 -2
  91. package/dist/mcps/framework-compliance-audit.server.js +2 -2
  92. package/dist/mcps/framework-help.server.js +9 -8
  93. package/dist/mcps/governance.server.js +8 -4
  94. package/dist/mcps/knowledge-skills/api-design.server.js +3 -2
  95. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +3 -2
  96. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +3 -3
  97. package/dist/mcps/knowledge-skills/code-analyzer.server.js +2 -2
  98. package/dist/mcps/knowledge-skills/code-review.server.js +14 -39
  99. package/dist/mcps/knowledge-skills/content-creator.server.js +3 -3
  100. package/dist/mcps/knowledge-skills/database-design.server.js +2 -2
  101. package/dist/mcps/knowledge-skills/devops-deployment.server.js +3 -2
  102. package/dist/mcps/knowledge-skills/git-workflow.server.js +3 -2
  103. package/dist/mcps/knowledge-skills/growth-strategist.server.js +3 -3
  104. package/dist/mcps/knowledge-skills/log-monitor.server.js +3 -3
  105. package/dist/mcps/knowledge-skills/mobile-development.server.js +3 -3
  106. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +3 -3
  107. package/dist/mcps/knowledge-skills/performance-optimization.server.js +2 -2
  108. package/dist/mcps/knowledge-skills/project-analysis.server.js +2 -2
  109. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +3 -2
  110. package/dist/mcps/knowledge-skills/security-audit.server.js +14 -44
  111. package/dist/mcps/knowledge-skills/seo-consultant.server.js +3 -2
  112. package/dist/mcps/knowledge-skills/session-management.server.js +3 -2
  113. package/dist/mcps/knowledge-skills/skill-invocation.server.js +105 -3
  114. package/dist/mcps/knowledge-skills/strategist.server.js +3 -3
  115. package/dist/mcps/knowledge-skills/tech-writer.server.js +3 -3
  116. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +3 -2
  117. package/dist/mcps/knowledge-skills/testing-strategy.server.js +2 -2
  118. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +5 -4
  119. package/dist/mcps/lint.server.js +4 -4
  120. package/dist/mcps/mcp-client.js +5 -5
  121. package/dist/mcps/model-health-check.server.js +3 -2
  122. package/dist/mcps/orchestrator/server.js +4 -3
  123. package/dist/mcps/orchestrator.server.js +2 -1
  124. package/dist/mcps/performance-analysis.server.js +2 -2
  125. package/dist/mcps/processor-pipeline.server.js +3 -2
  126. package/dist/mcps/registry.json +1 -1
  127. package/dist/mcps/researcher.server.js +14 -39
  128. package/dist/mcps/security-scan.server.js +2 -2
  129. package/dist/mcps/simulation/server-simulations.js +3 -3
  130. package/dist/mcps/state-manager.server.js +5 -5
  131. package/dist/metrics/agent-metrics.js +1 -1
  132. package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +4 -4
  133. package/dist/orchestrator/intelligent-commit-batcher.js +2 -3
  134. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +9 -9
  135. package/dist/orchestrator/orchestrator.js +9 -8
  136. package/dist/orchestrator/universal-registry-bridge.js +4 -4
  137. package/dist/postprocessor/PostProcessor.js +9 -9
  138. package/dist/postprocessor/services/RegressionAnalysisService.js +4 -4
  139. package/dist/postprocessor/triggers/GitHookTrigger.js +18 -18
  140. package/dist/processors/implementations/agents-md-validation-processor.js +2 -2
  141. package/dist/processors/implementations/inference-improvement-processor.js +1 -2
  142. package/dist/processors/implementations/log-protection-processor.js +2 -2
  143. package/dist/processors/implementations/publish-preflight-processor.js +2 -3
  144. package/dist/processors/implementations/regression-testing-processor.js +2 -2
  145. package/dist/processors/implementations/session-summary-processor.js +2 -2
  146. package/dist/processors/implementations/storytelling-trigger-processor.js +1 -2
  147. package/dist/public/about.html +6 -6
  148. package/dist/public/enterprise.html +1 -1
  149. package/dist/public/features.html +2 -2
  150. package/dist/public/index.html +4 -4
  151. package/dist/reporting/report-formatter.js +1 -1
  152. package/dist/scripts/activate-kernel-pipeline.js +4 -4
  153. package/dist/scripts/pre-command +1 -1
  154. package/dist/services/inference-tuner.js +2 -2
  155. package/dist/skills/api-design/SKILL.md +1 -1
  156. package/dist/skills/architect-tools/SKILL.md +1 -1
  157. package/dist/skills/architecture-patterns/SKILL.md +1 -1
  158. package/dist/skills/auto-format/SKILL.md +1 -1
  159. package/dist/skills/boot-orchestrator/SKILL.md +1 -1
  160. package/dist/skills/bug-triage/SKILL.md +1 -1
  161. package/dist/skills/code-analyzer/SKILL.md +1 -1
  162. package/dist/skills/code-review/SKILL.md +1 -1
  163. package/dist/skills/enforcer/SKILL.md +1 -1
  164. package/dist/skills/framework-compliance-audit/SKILL.md +1 -1
  165. package/dist/skills/git-workflow/SKILL.md +1 -1
  166. package/dist/skills/hermes-agent/SKILL.md +42 -42
  167. package/dist/skills/inference-improve/SKILL.md +1 -1
  168. package/dist/skills/lint/SKILL.md +1 -1
  169. package/dist/skills/log-monitor/SKILL.md +1 -1
  170. package/dist/skills/model-health-check/SKILL.md +1 -1
  171. package/dist/skills/multimodal-looker/SKILL.md +1 -1
  172. package/dist/skills/orchestrator/SKILL.md +1 -1
  173. package/dist/skills/performance-analysis/SKILL.md +1 -1
  174. package/dist/skills/performance-optimization/SKILL.md +1 -1
  175. package/dist/skills/processor-pipeline/SKILL.md +1 -1
  176. package/dist/skills/project-analysis/SKILL.md +1 -1
  177. package/dist/skills/refactoring-strategies/SKILL.md +1 -1
  178. package/dist/skills/registry.json +1 -1
  179. package/dist/skills/researcher/SKILL.md +1 -1
  180. package/dist/skills/security-audit/SKILL.md +1 -1
  181. package/dist/skills/security-scan/SKILL.md +1 -1
  182. package/dist/skills/session-management/SKILL.md +1 -1
  183. package/dist/skills/state-manager/SKILL.md +1 -1
  184. package/dist/skills/storyteller/SKILL.md +1 -1
  185. package/dist/skills/testing-best-practices/SKILL.md +1 -1
  186. package/dist/skills/testing-strategy/SKILL.md +1 -1
  187. package/dist/skills/ui-ux-design/SKILL.md +1 -1
  188. package/dist/state/index.js +1 -1
  189. package/dist/state/state-manager.js +3 -4
  190. package/dist/utils/import-resolver.js +1 -1
  191. package/dist/utils/path-resolver.js +2 -2
  192. package/dist/utils/token-manager.js +1 -1
  193. package/dist/validation/estimation-validator.js +1 -1
  194. package/package.json +10 -3
  195. package/scripts/hooks/pre-command +1 -1
  196. package/scripts/hooks/run-hook.js +2 -2
  197. package/scripts/node/auto-reflection-generator.mjs +30 -36
  198. package/scripts/node/govern-reflection.mjs +1 -1
  199. package/scripts/node/postinstall.cjs +37 -2
  200. package/scripts/node/pre-publish-guard.js +13 -9
  201. package/scripts/node/setup-xai-oauth.mjs +244 -0
  202. package/scripts/node/universal-version-manager.js +8 -8
  203. package/scripts/node/version-manager.mjs +1 -1
  204. package/src/integrations/grok/plugin/0xray/.mcp.json +16 -4
  205. package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  206. package/src/mcps/architect-tools.server.ts +2 -2
  207. package/src/mcps/auto-format.server.ts +2 -2
  208. package/src/mcps/boot-orchestrator.server.ts +2 -2
  209. package/src/mcps/config/__tests__/config-loader.test.ts +29 -33
  210. package/src/mcps/config/__tests__/server-config-registry.test.ts +12 -12
  211. package/src/mcps/config/config-loader.ts +50 -11
  212. package/src/mcps/config/server-config-registry.ts +10 -10
  213. package/src/mcps/connection/mcp-connection.ts +1 -1
  214. package/src/mcps/enforcer-tools.server.ts +2 -2
  215. package/src/mcps/estimation.server.ts +3 -2
  216. package/src/mcps/framework-compliance-audit.server.ts +2 -2
  217. package/src/mcps/framework-help.server.ts +9 -8
  218. package/src/mcps/governance.server.ts +8 -3
  219. package/src/mcps/knowledge-skills/api-design.server.ts +3 -2
  220. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +2 -2
  221. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +2 -2
  222. package/src/mcps/knowledge-skills/code-analyzer.server.ts +2 -2
  223. package/src/mcps/knowledge-skills/code-review.server.ts +21 -36
  224. package/src/mcps/knowledge-skills/content-creator.server.ts +3 -3
  225. package/src/mcps/knowledge-skills/database-design.server.ts +2 -2
  226. package/src/mcps/knowledge-skills/devops-deployment.server.ts +3 -2
  227. package/src/mcps/knowledge-skills/git-workflow.server.ts +3 -2
  228. package/src/mcps/knowledge-skills/growth-strategist.server.ts +3 -3
  229. package/src/mcps/knowledge-skills/log-monitor.server.ts +3 -3
  230. package/src/mcps/knowledge-skills/mobile-development.server.ts +3 -3
  231. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +3 -3
  232. package/src/mcps/knowledge-skills/performance-optimization.server.ts +2 -2
  233. package/src/mcps/knowledge-skills/project-analysis.server.ts +2 -2
  234. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +3 -2
  235. package/src/mcps/knowledge-skills/security-audit.server.ts +21 -40
  236. package/src/mcps/knowledge-skills/seo-consultant.server.ts +3 -2
  237. package/src/mcps/knowledge-skills/session-management.server.ts +3 -2
  238. package/src/mcps/knowledge-skills/skill-invocation.server.ts +113 -3
  239. package/src/mcps/knowledge-skills/strategist.server.ts +3 -3
  240. package/src/mcps/knowledge-skills/tech-writer.server.ts +3 -3
  241. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +3 -2
  242. package/src/mcps/knowledge-skills/testing-strategy.server.ts +2 -2
  243. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +5 -4
  244. package/src/mcps/lint.server.ts +4 -4
  245. package/src/mcps/mcp-client.ts +5 -5
  246. package/src/mcps/model-health-check.server.ts +2 -2
  247. package/src/mcps/orchestrator/server.ts +4 -3
  248. package/src/mcps/orchestrator.server.ts +2 -1
  249. package/src/mcps/performance-analysis.server.ts +2 -2
  250. package/src/mcps/processor-pipeline.server.ts +3 -2
  251. package/src/mcps/registry.json +1 -1
  252. package/src/mcps/researcher.server.ts +21 -36
  253. package/src/mcps/security-scan.server.ts +2 -2
  254. package/src/mcps/simulation/server-simulations.ts +3 -3
  255. package/src/mcps/state-manager.server.ts +5 -5
  256. package/src/opencode/codex.codex +1 -1
  257. package/src/opencode/commands/dependency-audit.md +3 -3
  258. package/src/opencode/commands/summary-logger.md +4 -4
  259. package/src/opencode/enforcer-config.json +2 -2
  260. package/src/skills/api-design/SKILL.md +1 -1
  261. package/src/skills/architect-tools/SKILL.md +1 -1
  262. package/src/skills/architecture-patterns/SKILL.md +1 -1
  263. package/src/skills/auto-format/SKILL.md +1 -1
  264. package/src/skills/boot-orchestrator/SKILL.md +1 -1
  265. package/src/skills/bug-triage/SKILL.md +1 -1
  266. package/src/skills/code-analyzer/SKILL.md +1 -1
  267. package/src/skills/code-review/SKILL.md +1 -1
  268. package/src/skills/enforcer/SKILL.md +1 -1
  269. package/src/skills/framework-compliance-audit/SKILL.md +1 -1
  270. package/src/skills/git-workflow/SKILL.md +1 -1
  271. package/src/skills/hermes-agent/SKILL.md +42 -42
  272. package/src/skills/inference-improve/SKILL.md +1 -1
  273. package/src/skills/lint/SKILL.md +1 -1
  274. package/src/skills/log-monitor/SKILL.md +1 -1
  275. package/src/skills/model-health-check/SKILL.md +1 -1
  276. package/src/skills/multimodal-looker/SKILL.md +1 -1
  277. package/src/skills/orchestrator/SKILL.md +1 -1
  278. package/src/skills/performance-analysis/SKILL.md +1 -1
  279. package/src/skills/performance-optimization/SKILL.md +1 -1
  280. package/src/skills/processor-pipeline/SKILL.md +1 -1
  281. package/src/skills/project-analysis/SKILL.md +1 -1
  282. package/src/skills/refactoring-strategies/SKILL.md +1 -1
  283. package/src/skills/registry.json +1 -1
  284. package/src/skills/researcher/SKILL.md +1 -1
  285. package/src/skills/security-audit/SKILL.md +1 -1
  286. package/src/skills/security-scan/SKILL.md +1 -1
  287. package/src/skills/session-management/SKILL.md +1 -1
  288. package/src/skills/state-manager/SKILL.md +1 -1
  289. package/src/skills/storyteller/SKILL.md +1 -1
  290. package/src/skills/testing-best-practices/SKILL.md +1 -1
  291. package/src/skills/testing-strategy/SKILL.md +1 -1
  292. package/src/skills/ui-ux-design/SKILL.md +1 -1
  293. package/xray/agents_template.md +46 -0
  294. package/xray/codex.json +598 -0
  295. package/dist/plugin/xray-codex-injection.js +0 -857
  296. /package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -0
@@ -8,11 +8,12 @@ import {
8
8
  ListToolsRequestSchema,
9
9
  McpError,
10
10
  } from "@modelcontextprotocol/sdk/types.js";
11
- import * as path from "path";
11
+ import * as fs from "fs";
12
12
  import { fileURLToPath } from "url";
13
13
  import { randomUUID } from "crypto";
14
14
  import { mcpClientManager } from "../mcp-client.js";
15
15
  import { frameworkLogger } from "../../core/framework-logger.js";
16
+ import { skillInstallCommand, skillRegistryCommand } from "../../cli/commands/skill-install.js";
16
17
 
17
18
  interface ListSkillsArgs {
18
19
  category?: "all" | "core" | "registry" | "knowledge";
@@ -90,7 +91,7 @@ class SkillInvocationServer {
90
91
  constructor() {
91
92
  this.server = new Server(
92
93
  {
93
- name: "xray/skill-invocation", version: "1.22.67",
94
+ name: "xray/skill-invocation", version: "3.1.0",
94
95
  },
95
96
  {
96
97
  capabilities: {
@@ -363,6 +364,61 @@ class SkillInvocationServer {
363
364
  required: ["storyType"],
364
365
  },
365
366
  },
367
+ {
368
+ name: "install-skill",
369
+ description: "Install skills from the registry or any git repo",
370
+ inputSchema: {
371
+ type: "object",
372
+ properties: {
373
+ source: {
374
+ type: "string",
375
+ description: "Source name or git URL to install skills from",
376
+ },
377
+ path: {
378
+ type: "string",
379
+ description: "Subdirectory in repo containing skills",
380
+ },
381
+ force: {
382
+ type: "boolean",
383
+ description: "Reinstall even if already installed",
384
+ },
385
+ },
386
+ required: ["source"],
387
+ },
388
+ },
389
+ {
390
+ name: "skill-registry-list",
391
+ description: "List all available skill registry sources",
392
+ inputSchema: {
393
+ type: "object",
394
+ properties: {},
395
+ },
396
+ },
397
+ {
398
+ name: "skill-registry-add",
399
+ description: "Add a new source to the skills registry",
400
+ inputSchema: {
401
+ type: "object",
402
+ properties: {
403
+ name: { type: "string", description: "Unique source name" },
404
+ url: { type: "string", description: "Repository URL" },
405
+ desc: { type: "string", description: "Short description" },
406
+ license: { type: "string", description: "License type" },
407
+ },
408
+ required: ["name", "url"],
409
+ },
410
+ },
411
+ {
412
+ name: "skill-registry-remove",
413
+ description: "Remove a source from the skills registry",
414
+ inputSchema: {
415
+ type: "object",
416
+ properties: {
417
+ name: { type: "string", description: "Source name to remove" },
418
+ },
419
+ required: ["name"],
420
+ },
421
+ },
366
422
  ],
367
423
  };
368
424
  });
@@ -399,6 +455,14 @@ class SkillInvocationServer {
399
455
  return await this.handleSkillDocumentationGeneration(args as unknown as DocumentationGenerationArgs);
400
456
  case "skill-storyteller":
401
457
  return await this.handleSkillStoryteller(args as unknown as StorytellerArgs);
458
+ case "install-skill":
459
+ return await this.handleInstallSkill(args as unknown as { source: string; path?: string; force?: boolean });
460
+ case "skill-registry-list":
461
+ return await this.handleSkillRegistryList();
462
+ case "skill-registry-add":
463
+ return await this.handleSkillRegistryAdd(args as unknown as { name: string; url: string; desc?: string; license?: string });
464
+ case "skill-registry-remove":
465
+ return await this.handleSkillRegistryRemove(args as unknown as { name: string });
402
466
  default:
403
467
  throw new McpError(
404
468
  ErrorCode.MethodNotFound,
@@ -824,6 +888,52 @@ class SkillInvocationServer {
824
888
  };
825
889
  }
826
890
 
891
+ private async captureConsole(fn: () => Promise<void>): Promise<string> {
892
+ const chunks: string[] = [];
893
+ const origLog = console.log;
894
+ console.log = (...args: unknown[]) => chunks.push(args.map(String).join(" "));
895
+ try {
896
+ await fn();
897
+ } finally {
898
+ console.log = origLog;
899
+ }
900
+ return chunks.join("\n");
901
+ }
902
+
903
+ private async handleInstallSkill(args: { source: string; path?: string; force?: boolean }) {
904
+ const opts: { path?: string; force?: boolean } = {};
905
+ if (args.path !== undefined) opts.path = args.path;
906
+ if (args.force !== undefined) opts.force = args.force;
907
+ const output = await this.captureConsole(() =>
908
+ skillInstallCommand(args.source, opts)
909
+ );
910
+ return { content: [{ type: "text", text: output || "Skill installation completed." }] };
911
+ }
912
+
913
+ private async handleSkillRegistryList() {
914
+ const output = await this.captureConsole(() =>
915
+ skillRegistryCommand("list")
916
+ );
917
+ return { content: [{ type: "text", text: output || "No registry sources configured." }] };
918
+ }
919
+
920
+ private async handleSkillRegistryAdd(args: { name: string; url: string; desc?: string; license?: string }) {
921
+ const registryArgs: Record<string, string> = { name: args.name, url: args.url };
922
+ if (args.desc !== undefined) registryArgs.desc = args.desc;
923
+ if (args.license !== undefined) registryArgs.license = args.license;
924
+ const output = await this.captureConsole(() =>
925
+ skillRegistryCommand("add", registryArgs)
926
+ );
927
+ return { content: [{ type: "text", text: output || "Source added." }] };
928
+ }
929
+
930
+ private async handleSkillRegistryRemove(args: { name: string }) {
931
+ const output = await this.captureConsole(() =>
932
+ skillRegistryCommand("remove", { name: args.name })
933
+ );
934
+ return { content: [{ type: "text", text: output || "Source removed." }] };
935
+ }
936
+
827
937
  async run(): Promise<void> {
828
938
  const transport = new StdioServerTransport();
829
939
  await this.server.connect(transport);
@@ -917,7 +1027,7 @@ class SkillInvocationServer {
917
1027
  }
918
1028
 
919
1029
  // Start the server if this file is run directly
920
- const entryPoint = path.resolve(process.argv[1] ?? "");
1030
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
921
1031
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
922
1032
  // If --port or MCP_PORT is set, use HTTP transport (for Grok CLI compatibility)
923
1033
  const cliPort = process.argv.find((a) => a.startsWith("--port="))?.split("=")[1];
@@ -11,7 +11,7 @@ import {
11
11
  CallToolRequestSchema,
12
12
  ListToolsRequestSchema,
13
13
  } from "@modelcontextprotocol/sdk/types.js";
14
- import * as path from "path";
14
+ import * as fs from "fs";
15
15
  import { fileURLToPath } from "url";
16
16
  import { frameworkLogger } from "../../core/framework-logger.js";
17
17
 
@@ -110,7 +110,7 @@ class StrategistServer {
110
110
  constructor() {
111
111
  this.server = new Server(
112
112
  {
113
- name: "xray/strategist", version: "1.22.67",
113
+ name: "xray/strategist", version: "3.1.0",
114
114
  },
115
115
  {
116
116
  capabilities: {
@@ -258,7 +258,7 @@ class StrategistServer {
258
258
  }
259
259
  }
260
260
 
261
- const entryPoint = path.resolve(process.argv[1] ?? "");
261
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
262
262
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
263
263
  const server = new StrategistServer();
264
264
  server.start().catch((error) => frameworkLogger.log("mcps/strategist", "run", "error", { error: String(error) }));
@@ -166,7 +166,7 @@ class XrayDocumentationGenerationServer {
166
166
  constructor() {
167
167
  this.server = new Server(
168
168
  {
169
- name: "documentation-generation", version: "1.22.67",
169
+ name: "documentation-generation", version: "3.1.0",
170
170
  },
171
171
  {
172
172
  capabilities: {
@@ -1053,7 +1053,7 @@ class XrayDocumentationGenerationServer {
1053
1053
  openapi: "3.0.0",
1054
1054
  info: {
1055
1055
  title: "API Documentation",
1056
- version: "1.22.67",
1056
+ version: "3.1.0",
1057
1057
  description: "Generated API documentation",
1058
1058
  },
1059
1059
  servers: [
@@ -1630,7 +1630,7 @@ class XrayDocumentationGenerationServer {
1630
1630
  }
1631
1631
 
1632
1632
  // Run the server if this file is executed directly
1633
- if (import.meta.url === `file://${process.argv[1]}`) {
1633
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
1634
1634
  const server = new XrayDocumentationGenerationServer();
1635
1635
  server.run().catch(() => {});
1636
1636
  }
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
9
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
+ import * as fs from "fs";
10
11
  import { frameworkLogger } from "../../core/framework-logger.js";
11
12
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
12
13
  import {
@@ -209,7 +210,7 @@ class XrayTestingBestPracticesServer {
209
210
  constructor() {
210
211
  this.server = new Server(
211
212
  {
212
- name: "testing-best-practices", version: "1.22.67",
213
+ name: "testing-best-practices", version: "3.1.0",
213
214
  },
214
215
  {
215
216
  capabilities: {
@@ -1224,7 +1225,7 @@ class XrayTestingBestPracticesServer {
1224
1225
  }
1225
1226
 
1226
1227
  // Run the server if this file is executed directly
1227
- if (import.meta.url === `file://${process.argv[1]}`) {
1228
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
1228
1229
  const server = new XrayTestingBestPracticesServer();
1229
1230
  server.run().catch(() => {});
1230
1231
  }
@@ -135,7 +135,7 @@ class XrayTestingStrategyServer {
135
135
  constructor() {
136
136
  this.server = new Server(
137
137
  {
138
- name: "testing-strategy", version: "1.22.67",
138
+ name: "testing-strategy", version: "3.1.0",
139
139
  },
140
140
  {
141
141
  capabilities: {
@@ -1164,7 +1164,7 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
1164
1164
  }
1165
1165
 
1166
1166
  // Start the server if run directly
1167
- if (import.meta.url === `file://${process.argv[1]}`) {
1167
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
1168
1168
  const server = new XrayTestingStrategyServer();
1169
1169
  server.run().catch(() => {});
1170
1170
  }
@@ -12,6 +12,7 @@ import {
12
12
  ListToolsRequestSchema,
13
13
  type CallToolResult,
14
14
  } from "@modelcontextprotocol/sdk/types.js";
15
+ import * as fs from "fs";
15
16
  import { frameworkLogger } from "../../core/framework-logger.js";
16
17
 
17
18
  interface UIDesignAnalysis {
@@ -192,7 +193,7 @@ class XrayUIUXDesignServer {
192
193
  constructor() {
193
194
  this.server = new Server(
194
195
  {
195
- name: "ui-ux-design", version: "1.22.67",
196
+ name: "ui-ux-design", version: "3.1.0",
196
197
  },
197
198
  {
198
199
  capabilities: {
@@ -1985,7 +1986,7 @@ Available: ${Object.keys(system.components).length} component types
1985
1986
  await this.server.connect(transport);
1986
1987
  await frameworkLogger.log(
1987
1988
  "ui-ux-design.server",
1988
- "-strray-ui-ux-design-mcp-server-running-",
1989
+ "-xray-ui-ux-design-mcp-server-running-",
1989
1990
  "info",
1990
1991
  { message: "xray UI/UX Design MCP Server running..." },
1991
1992
  );
@@ -2011,7 +2012,7 @@ Available: ${Object.keys(system.components).length} component types
2011
2012
  clearTimeout(timeout);
2012
2013
  await frameworkLogger.log(
2013
2014
  "ui-ux-design.server",
2014
- "-strray-mcp-server-shut-down-gracefully-",
2015
+ "-xray-mcp-server-shut-down-gracefully-",
2015
2016
  "info",
2016
2017
  { message: "xray MCP Server shut down gracefully" },
2017
2018
  );
@@ -2068,7 +2069,7 @@ Available: ${Object.keys(system.components).length} component types
2068
2069
  }
2069
2070
 
2070
2071
  // Run the server if this file is executed directly
2071
- if (import.meta.url === `file://${process.argv[1]}`) {
2072
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
2072
2073
  const server = new XrayUIUXDesignServer();
2073
2074
  server.run().catch((error) => frameworkLogger.log("mcps/ui-ux-design", "run", "error", { error: String(error) }));
2074
2075
  }
@@ -39,7 +39,7 @@ class XrayLintServer {
39
39
  constructor() {
40
40
  this.server = new Server(
41
41
  {
42
- name: "lint", version: "1.22.67",
42
+ name: "lint", version: "3.1.0",
43
43
  },
44
44
  {
45
45
  capabilities: {
@@ -51,7 +51,7 @@ class XrayLintServer {
51
51
  this.setupToolHandlers();
52
52
  void frameworkLogger.log(
53
53
  "lint.server",
54
- "-strray-lint-mcp-server-initialized-",
54
+ "-xray-lint-mcp-server-initialized-",
55
55
  "info",
56
56
  { message: "0xRay Lint MCP Server initialized" },
57
57
  );
@@ -467,7 +467,7 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
467
467
  await this.server.connect(transport);
468
468
  await frameworkLogger.log(
469
469
  "lint.server",
470
- "-strray-lint-mcp-server-started-",
470
+ "-xray-lint-mcp-server-started-",
471
471
  "info",
472
472
  { message: "0xRay Lint MCP Server started" },
473
473
  );
@@ -475,7 +475,7 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
475
475
  }
476
476
 
477
477
  // Start the server if run directly
478
- if (import.meta.url === `file://${process.argv[1]}`) {
478
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
479
479
  const server = new XrayLintServer();
480
480
  server.run().catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
481
481
  }
@@ -153,7 +153,7 @@ export class MCPClient extends EventEmitter {
153
153
  * Pure MCP mode — simulation and generic fallbacks are disabled.
154
154
  */
155
155
  private get isPureMcpMode(): boolean {
156
- return process.env.STRRAY_FORCE_MCP_GOVERNANCE === 'true';
156
+ return process.env.XRAY_FORCE_MCP_GOVERNANCE === 'true';
157
157
  }
158
158
 
159
159
  /**
@@ -344,17 +344,17 @@ export class MCPClient extends EventEmitter {
344
344
  ],
345
345
  'framework-help': [
346
346
  {
347
- name: 'strray_get_capabilities',
347
+ name: 'xray_get_capabilities',
348
348
  description: 'Get 0xRay framework capabilities',
349
349
  inputSchema: { type: 'object', properties: {} },
350
350
  },
351
351
  {
352
- name: 'strray_get_commands',
352
+ name: 'xray_get_commands',
353
353
  description: 'Get available 0xRay commands',
354
354
  inputSchema: { type: 'object', properties: {} },
355
355
  },
356
356
  {
357
- name: 'strray_explain_capability',
357
+ name: 'xray_explain_capability',
358
358
  description: 'Explain a specific capability',
359
359
  inputSchema: {
360
360
  type: 'object',
@@ -470,7 +470,7 @@ export class MCPClient extends EventEmitter {
470
470
  if (this.isPureMcpMode) {
471
471
  throw new Error(
472
472
  `[PURE MCP] No real response for ${serverName}/${toolName}. ` +
473
- `All fallbacks are disabled when STRRAY_FORCE_MCP_GOVERNANCE=true.`
473
+ `All fallbacks are disabled when XRAY_FORCE_MCP_GOVERNANCE=true.`
474
474
  );
475
475
  }
476
476
 
@@ -42,7 +42,7 @@ class XrayModelHealthCheckServer {
42
42
  constructor() {
43
43
  this.server = new Server(
44
44
  {
45
- name: "model-health-check", version: "1.22.67",
45
+ name: "model-health-check", version: "3.1.0",
46
46
  },
47
47
  {
48
48
  capabilities: {
@@ -284,7 +284,7 @@ class XrayModelHealthCheckServer {
284
284
  }
285
285
 
286
286
  // Start the server if this file is run directly
287
- if (import.meta.url === `file://${process.argv[1]}`) {
287
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
288
288
  const server = new XrayModelHealthCheckServer();
289
289
  server.start().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
290
290
  }
@@ -11,8 +11,9 @@ import {
11
11
  CallToolRequestSchema,
12
12
  ListToolsRequestSchema,
13
13
  } from '@modelcontextprotocol/sdk/types.js';
14
+ import * as fs from 'fs';
14
15
  import { frameworkLogger } from '../../core/framework-logger.js';
15
- import { StringRayStateManager } from '../../state/state-manager.js';
16
+ import { XrayStateManager } from '../../state/state-manager.js';
16
17
  import { MultiAgentOrchestrationCoordinator } from '../../orchestrator/multi-agent-orchestration-coordinator.js';
17
18
 
18
19
  import { TaskHandler } from './handlers/task-handler.js';
@@ -45,7 +46,7 @@ export class OrchestratorServer {
45
46
 
46
47
  constructor() {
47
48
  // Initialize actual coordinator
48
- const stateManager = new StringRayStateManager();
49
+ const stateManager = new XrayStateManager();
49
50
  this.coordinator = new MultiAgentOrchestrationCoordinator(stateManager);
50
51
 
51
52
  // Initialize handlers
@@ -377,7 +378,7 @@ export function createOrchestratorServer(): OrchestratorServer {
377
378
  }
378
379
 
379
380
  // Run if called directly
380
- if (import.meta.url === `file://${process.argv[1]}`) {
381
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
381
382
  const server = createOrchestratorServer();
382
383
  server.start().catch((error) => {
383
384
  frameworkLogger.log('orchestrator.server', 'fatal-error', 'error', {
@@ -7,6 +7,7 @@
7
7
  * @deprecated Use src/mcps/orchestrator/server.ts instead
8
8
  */
9
9
 
10
+ import * as fs from 'fs';
10
11
  import { frameworkLogger } from '../core/framework-logger.js';
11
12
 
12
13
  export { OrchestratorServer, createOrchestratorServer } from './orchestrator/server.js';
@@ -24,7 +25,7 @@ export type {
24
25
  } from './orchestrator/types.js';
25
26
 
26
27
  // Run if called directly
27
- if (import.meta.url === `file://${process.argv[1]}`) {
28
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
28
29
  const { createOrchestratorServer } = await import('./orchestrator/server.js');
29
30
  const server = createOrchestratorServer();
30
31
  server.start().catch((error) => {
@@ -64,7 +64,7 @@ class XrayPerformanceAnalysisServer {
64
64
  constructor() {
65
65
  this.server = new Server(
66
66
  {
67
- name: "performance-analysis", version: "1.22.67",
67
+ name: "performance-analysis", version: "3.1.0",
68
68
  },
69
69
  {
70
70
  capabilities: {
@@ -707,7 +707,7 @@ ${results.recommendations.map((r) => `• 💡 ${r}`).join("\n") || "No recommen
707
707
  }
708
708
 
709
709
  // Start the server if run directly
710
- if (import.meta.url === `file://${process.argv[1]}`) {
710
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
711
711
  const server = new XrayPerformanceAnalysisServer();
712
712
  server.run().catch((error) => frameworkLogger.log("mcps/performance-analysis", "run", "error", { error: String(error) }));
713
713
  }
@@ -10,6 +10,7 @@ import {
10
10
  CallToolRequestSchema,
11
11
  ListToolsRequestSchema,
12
12
  } from "@modelcontextprotocol/sdk/types.js";
13
+ import * as fs from "fs";
13
14
  import { frameworkLogger } from "../core/framework-logger.js";
14
15
  import { CodexLoader } from "../enforcement/loaders/codex-loader.js";
15
16
  import type { RuleDefinition, RuleValidationContext } from "../enforcement/types.js";
@@ -107,7 +108,7 @@ class XrayProcessorPipelineServer {
107
108
  this.codexLoader = new CodexLoader();
108
109
  this.server = new Server(
109
110
  {
110
- name: "processor-pipeline", version: "1.22.67",
111
+ name: "processor-pipeline", version: "3.1.0",
111
112
  },
112
113
  {
113
114
  capabilities: {
@@ -770,7 +771,7 @@ ${complianceResults.actions.map((a: string) => `• 🔧 ${a}`).join("\n") || "N
770
771
  }
771
772
 
772
773
  // Start the server if run directly
773
- if (import.meta.url === `file://${process.argv[1]}`) {
774
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
774
775
  const server = new XrayProcessorPipelineServer();
775
776
  server.run().catch((error) => frameworkLogger.log("mcps/processor-pipeline", "run", "error", { error: String(error) }));
776
777
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.22.67",
2
+ "version": "3.1.0",
3
3
  "description": "0xRay Community MCPs Registry - curated API-focused MCP servers",
4
4
  "sources": [
5
5
  {
@@ -18,6 +18,7 @@ import {
18
18
  import * as fs from "fs";
19
19
  import * as path from "path";
20
20
  import { frameworkLogger } from "../core/framework-logger.js";
21
+ import { tryLLMGovernance } from "../governance/llm-governance-provider.js";
21
22
 
22
23
  interface SearchResult {
23
24
  file: string;
@@ -54,7 +55,7 @@ class XrayLibrarianServer {
54
55
  constructor() {
55
56
  this.server = new Server(
56
57
  {
57
- name: "researcher", version: "1.22.67",
58
+ name: "researcher", version: "3.1.0",
58
59
  },
59
60
  {
60
61
  capabilities: {
@@ -482,47 +483,31 @@ class XrayLibrarianServer {
482
483
  */
483
484
  async analyzeProposal(args: AnalyzeProposalArgs): Promise<CallToolResult> {
484
485
  const { proposalTitle = "", proposalDescription = "", evidence = [], proposalType = "" } = args || {};
485
- const text = `${proposalTitle} ${proposalDescription} ${(evidence || []).join(" ")}`.toLowerCase();
486
-
487
- let decision: "approve" | "reject" | "abstain" = "approve";
488
- let confidence = 0.80;
489
- let reasoning = "From a project-wide analysis perspective, the proposal aligns with observed recurring patterns and has supporting evidence in the corpus.";
490
-
491
- if (text.includes("aml") || text.includes("kyc") || text.includes("anti-money")) {
492
- decision = "approve";
493
- confidence = 0.86;
494
- reasoning = "AML/KYC compliance integration is a recurring pattern across financial services codebases. The corpus shows that automated transaction monitoring reduces regulatory incident frequency by approximately 60% when properly integrated with sanction list APIs.";
495
- } else if (text.includes("psd2") || text.includes("strong customer authentication") || text.includes("payment initiation")) {
496
- decision = "approve";
497
- confidence = 0.88;
498
- reasoning = "PSD2 SCA patterns are well-established in the corpus across multiple implementations. The Berlin Group standards provide a reliable reference architecture, and existing integrations show consistent compliance with EBA regulatory technical standards.";
499
- } else if (text.includes("gdpr") || text.includes("right to erasure") || text.includes("data protection")) {
500
- decision = "approve";
501
- confidence = 0.91;
502
- reasoning = "GDPR data erasure pipeline patterns appear in approximately 35% of enterprise codebases in the corpus. The most successful implementations use the saga pattern with compensating transactions for cross-system consistency.";
503
- } else if (text.includes("extract method")) {
504
- decision = "approve";
505
- confidence = 0.89;
506
- reasoning = "The Extract Method pattern is a core refactoring technique that improves modularity; the corpus shows consistent positive outcomes when applied to repeated logic across many sessions.";
507
- } else if (text.includes("test coverage")) {
508
- decision = "approve";
509
- confidence = 0.94;
510
- reasoning = "Test coverage expansion is one of the highest-leverage improvements for long-term project health, directly reducing regression incidents across 100+ sessions in the historical data.";
511
- } else if (text.includes("technical debt")) {
512
- decision = "approve";
513
- confidence = 0.85;
514
- reasoning = "Systematic technical debt reduction is strongly supported by historical data showing fewer critical violations and faster feature delivery in low-debt modules.";
515
- }
516
486
 
517
- if (proposalType === "fix" && !text.includes("pattern") && !text.includes("recurring")) {
518
- confidence = Math.max(0.68, confidence - 0.10);
487
+ const vote = await tryLLMGovernance(
488
+ "researcher",
489
+ proposalTitle || "",
490
+ proposalDescription || "",
491
+ evidence || [],
492
+ proposalType || "",
493
+ );
494
+
495
+ if (!vote) {
496
+ return {
497
+ content: [
498
+ {
499
+ type: "text",
500
+ text: "DECISION: abstain\nCONFIDENCE: 0.50\nREASONING: No LLM governance provider configured. Set XRAY_GOVERNANCE_LLM_ENABLED=true + XRAY_LLM_ENDPOINT, or install Hermes and run: hermes auth add xai-oauth --no-browser",
501
+ },
502
+ ],
503
+ };
519
504
  }
520
505
 
521
506
  return {
522
507
  content: [
523
508
  {
524
509
  type: "text",
525
- text: `DECISION: ${decision}\nCONFIDENCE: ${confidence.toFixed(2)}\nREASONING: ${reasoning}`,
510
+ text: `DECISION: ${vote.decision}\nCONFIDENCE: ${vote.confidence.toFixed(2)}\nREASONING: ${vote.reasoning}`,
526
511
  },
527
512
  ],
528
513
  };
@@ -587,7 +572,7 @@ class XrayLibrarianServer {
587
572
  }
588
573
 
589
574
  // Run the server if this file is executed directly
590
- if (import.meta.url === `file://${process.argv[1]}`) {
575
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
591
576
  const server = new XrayLibrarianServer();
592
577
  server.run().catch((error) => frameworkLogger.log("mcps/researcher", "run", "error", { error: String(error) }));
593
578
  }
@@ -45,7 +45,7 @@ class XraySecurityScanServer {
45
45
  constructor() {
46
46
  this.server = new Server(
47
47
  {
48
- name: "security-scan", version: "1.22.67",
48
+ name: "security-scan", version: "3.1.0",
49
49
  },
50
50
  {
51
51
  capabilities: {
@@ -643,7 +643,7 @@ ${results.recommendations.map((r) => `• ${r}`).join("\n") || "No recommendatio
643
643
  }
644
644
 
645
645
  // Start the server if run directly
646
- if (import.meta.url === `file://${process.argv[1]}`) {
646
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
647
647
  const server = new XraySecurityScanServer();
648
648
  server.run().catch((error) => frameworkLogger.log("mcps/security-scan", "run", "error", { error: String(error) }));
649
649
  }
@@ -86,7 +86,7 @@ export const researcherSimulations: Record<string, SimulatorFunction> = {
86
86
  * Framework Help server simulations
87
87
  */
88
88
  export const frameworkHelpSimulations: Record<string, SimulatorFunction> = {
89
- strray_get_capabilities: (): MCPToolResult => ({
89
+ xray_get_capabilities: (): MCPToolResult => ({
90
90
  content: [
91
91
  {
92
92
  type: 'text',
@@ -118,7 +118,7 @@ export const frameworkHelpSimulations: Record<string, SimulatorFunction> = {
118
118
  ],
119
119
  }),
120
120
 
121
- strray_get_commands: (): MCPToolResult => ({
121
+ xray_get_commands: (): MCPToolResult => ({
122
122
  content: [
123
123
  {
124
124
  type: 'text',
@@ -146,7 +146,7 @@ framework-reporting-system - Generate comprehensive framework reports
146
146
  ],
147
147
  }),
148
148
 
149
- strray_explain_capability: (): MCPToolResult => ({
149
+ xray_explain_capability: (): MCPToolResult => ({
150
150
  content: [
151
151
  {
152
152
  type: 'text',
@@ -62,7 +62,7 @@ interface ValidationResult {
62
62
 
63
63
  type StateValue = string | number | boolean | object | null | undefined;
64
64
 
65
- class StrRayStateManagerServer {
65
+ class XrayStateManagerServer {
66
66
  private server: Server;
67
67
  private state: Map<string, unknown> = new Map();
68
68
  private stateFile: string;
@@ -71,7 +71,7 @@ class StrRayStateManagerServer {
71
71
  constructor() {
72
72
  this.server = new Server(
73
73
  {
74
- name: "state-manager", version: "1.22.67",
74
+ name: "state-manager", version: "3.1.0",
75
75
  },
76
76
  {
77
77
  capabilities: {
@@ -769,9 +769,9 @@ ${results.repairedKeys.length > 0 ? `**Repaired Keys:**\n${results.repairedKeys.
769
769
  }
770
770
 
771
771
  // Start the server if run directly
772
- if (import.meta.url === `file://${process.argv[1]}`) {
773
- const server = new StrRayStateManagerServer();
772
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
773
+ const server = new XrayStateManagerServer();
774
774
  server.run().catch((error) => frameworkLogger.log("mcps/state-manager", "run", "error", { error: String(error) }));
775
775
  }
776
776
 
777
- export { StrRayStateManagerServer };
777
+ export { XrayStateManagerServer };