0xray 3.1.0 → 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 (274) 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 +6 -0
  9. package/.plugin/plugin.json +11 -0
  10. package/AGENTS-consumer.md +46 -0
  11. package/AGENTS.md +8 -8
  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 +8 -8
  17. package/dist/CHANGELOG.md +25 -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 +1 -2
  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 +8 -0
  29. package/dist/cli/commands/mcp-install.js +1 -1
  30. package/dist/cli/commands/openclaw-install.js +9 -0
  31. package/dist/cli/commands/opencode-install.js +22 -0
  32. package/dist/cli/commands/skill-install.js +39 -2
  33. package/dist/cli/commands/status.js +5 -0
  34. package/dist/cli/commands/storyteller.js +1 -1
  35. package/dist/cli/index.js +12 -6
  36. package/dist/core/activity-logger.js +4 -4
  37. package/dist/core/agent-spawn-gate.js +1 -1
  38. package/dist/core/boot-orchestrator.js +12 -13
  39. package/dist/core/bridge.mjs +4 -4
  40. package/dist/core/codex-formatter.js +1 -2
  41. package/dist/core/codex-injector.js +3 -3
  42. package/dist/core/config-loader.js +1 -2
  43. package/dist/core/config-paths.js +30 -23
  44. package/dist/core/context-loader.js +0 -3
  45. package/dist/core/features-config.js +1 -1
  46. package/dist/core/index.js +2 -2
  47. package/dist/core/logging-config.js +7 -7
  48. package/dist/core/orchestrator.js +1 -1
  49. package/dist/core/xray-activation.js +3 -4
  50. package/dist/delegation/agent-delegator.js +2 -2
  51. package/dist/enforcement/enforcer-tools.js +2 -2
  52. package/dist/enforcement/loaders/codex-loader.js +2 -2
  53. package/dist/execution/opencode-cli-invoker.js +1 -1
  54. package/dist/governance/governance-service.js +1 -1
  55. package/dist/governance/llm-governance-provider.js +14 -1
  56. package/dist/index.js +3 -5
  57. package/dist/inference/inference-cycle.js +11 -11
  58. package/dist/integrations/base/README.md +1 -1
  59. package/dist/integrations/enforcement-gate.js +2 -2
  60. package/dist/integrations/governance/index.js +1 -1
  61. package/dist/integrations/grok/grok-cli.js +20 -6
  62. package/dist/integrations/grok/hooks/pre-tool-use.js +3 -3
  63. package/dist/integrations/grok/plugin/0xray/.mcp.json +16 -4
  64. package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  65. package/dist/integrations/hermes-agent/__init__.py +25 -14
  66. package/dist/integrations/hermes-agent/bridge.mjs +39 -4
  67. package/dist/integrations/hermes-agent/schemas.py +49 -0
  68. package/dist/integrations/hermes-agent/test_plugin.py +7 -7
  69. package/dist/integrations/hermes-agent/tools.py +107 -3
  70. package/dist/integrations/openclaw/README.md +6 -6
  71. package/dist/integrations/openclaw/config.js +1 -1
  72. package/dist/integrations/openclaw/index.js +2 -2
  73. package/dist/integrations/openclaw/types.js +3 -3
  74. package/dist/integrations/plugins/plugin-integration.js +1 -1
  75. package/dist/integrations/plugins/plugin-registry.js +1 -1
  76. package/dist/mcps/architect-tools.server.js +3 -2
  77. package/dist/mcps/auto-format.server.js +2 -2
  78. package/dist/mcps/boot-orchestrator.server.js +2 -2
  79. package/dist/mcps/config/config-loader.js +40 -9
  80. package/dist/mcps/enforcer-tools.server.js +2 -2
  81. package/dist/mcps/estimation.server.js +3 -2
  82. package/dist/mcps/framework-compliance-audit.server.js +2 -2
  83. package/dist/mcps/framework-help.server.js +3 -2
  84. package/dist/mcps/governance.server.js +8 -4
  85. package/dist/mcps/knowledge-skills/api-design.server.js +3 -2
  86. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +3 -2
  87. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +3 -3
  88. package/dist/mcps/knowledge-skills/code-analyzer.server.js +2 -2
  89. package/dist/mcps/knowledge-skills/code-review.server.js +2 -2
  90. package/dist/mcps/knowledge-skills/content-creator.server.js +3 -3
  91. package/dist/mcps/knowledge-skills/database-design.server.js +2 -2
  92. package/dist/mcps/knowledge-skills/devops-deployment.server.js +3 -2
  93. package/dist/mcps/knowledge-skills/git-workflow.server.js +3 -2
  94. package/dist/mcps/knowledge-skills/growth-strategist.server.js +3 -3
  95. package/dist/mcps/knowledge-skills/log-monitor.server.js +3 -3
  96. package/dist/mcps/knowledge-skills/mobile-development.server.js +3 -3
  97. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +3 -3
  98. package/dist/mcps/knowledge-skills/performance-optimization.server.js +2 -2
  99. package/dist/mcps/knowledge-skills/project-analysis.server.js +2 -2
  100. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +3 -2
  101. package/dist/mcps/knowledge-skills/security-audit.server.js +2 -2
  102. package/dist/mcps/knowledge-skills/seo-consultant.server.js +3 -2
  103. package/dist/mcps/knowledge-skills/session-management.server.js +3 -2
  104. package/dist/mcps/knowledge-skills/skill-invocation.server.js +105 -3
  105. package/dist/mcps/knowledge-skills/strategist.server.js +3 -3
  106. package/dist/mcps/knowledge-skills/tech-writer.server.js +3 -3
  107. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +3 -2
  108. package/dist/mcps/knowledge-skills/testing-strategy.server.js +2 -2
  109. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +3 -2
  110. package/dist/mcps/lint.server.js +2 -2
  111. package/dist/mcps/model-health-check.server.js +3 -2
  112. package/dist/mcps/orchestrator/server.js +2 -1
  113. package/dist/mcps/orchestrator.server.js +2 -1
  114. package/dist/mcps/performance-analysis.server.js +2 -2
  115. package/dist/mcps/processor-pipeline.server.js +3 -2
  116. package/dist/mcps/registry.json +1 -1
  117. package/dist/mcps/researcher.server.js +2 -2
  118. package/dist/mcps/security-scan.server.js +2 -2
  119. package/dist/mcps/state-manager.server.js +5 -5
  120. package/dist/metrics/agent-metrics.js +1 -1
  121. package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
  122. package/dist/orchestrator/intelligent-commit-batcher.js +0 -1
  123. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +1 -1
  124. package/dist/orchestrator/orchestrator.js +1 -2
  125. package/dist/orchestrator/universal-registry-bridge.js +1 -1
  126. package/dist/postprocessor/PostProcessor.js +5 -5
  127. package/dist/postprocessor/services/RegressionAnalysisService.js +2 -2
  128. package/dist/postprocessor/triggers/GitHookTrigger.js +4 -4
  129. package/dist/processors/implementations/inference-improvement-processor.js +0 -1
  130. package/dist/processors/implementations/publish-preflight-processor.js +0 -1
  131. package/dist/processors/implementations/session-summary-processor.js +2 -2
  132. package/dist/processors/implementations/storytelling-trigger-processor.js +0 -1
  133. package/dist/public/about.html +6 -6
  134. package/dist/public/enterprise.html +1 -1
  135. package/dist/public/features.html +2 -2
  136. package/dist/public/index.html +4 -4
  137. package/dist/reporting/report-formatter.js +1 -1
  138. package/dist/scripts/activate-kernel-pipeline.js +2 -2
  139. package/dist/scripts/pre-command +1 -1
  140. package/dist/services/inference-tuner.js +1 -1
  141. package/dist/skills/api-design/SKILL.md +1 -1
  142. package/dist/skills/architect-tools/SKILL.md +1 -1
  143. package/dist/skills/architecture-patterns/SKILL.md +1 -1
  144. package/dist/skills/auto-format/SKILL.md +1 -1
  145. package/dist/skills/boot-orchestrator/SKILL.md +1 -1
  146. package/dist/skills/bug-triage/SKILL.md +1 -1
  147. package/dist/skills/code-analyzer/SKILL.md +1 -1
  148. package/dist/skills/code-review/SKILL.md +1 -1
  149. package/dist/skills/enforcer/SKILL.md +1 -1
  150. package/dist/skills/framework-compliance-audit/SKILL.md +1 -1
  151. package/dist/skills/git-workflow/SKILL.md +1 -1
  152. package/dist/skills/hermes-agent/SKILL.md +2 -2
  153. package/dist/skills/inference-improve/SKILL.md +1 -1
  154. package/dist/skills/lint/SKILL.md +1 -1
  155. package/dist/skills/log-monitor/SKILL.md +1 -1
  156. package/dist/skills/model-health-check/SKILL.md +1 -1
  157. package/dist/skills/multimodal-looker/SKILL.md +1 -1
  158. package/dist/skills/orchestrator/SKILL.md +1 -1
  159. package/dist/skills/performance-analysis/SKILL.md +1 -1
  160. package/dist/skills/performance-optimization/SKILL.md +1 -1
  161. package/dist/skills/processor-pipeline/SKILL.md +1 -1
  162. package/dist/skills/project-analysis/SKILL.md +1 -1
  163. package/dist/skills/refactoring-strategies/SKILL.md +1 -1
  164. package/dist/skills/registry.json +1 -1
  165. package/dist/skills/researcher/SKILL.md +1 -1
  166. package/dist/skills/security-audit/SKILL.md +1 -1
  167. package/dist/skills/security-scan/SKILL.md +1 -1
  168. package/dist/skills/session-management/SKILL.md +1 -1
  169. package/dist/skills/state-manager/SKILL.md +1 -1
  170. package/dist/skills/storyteller/SKILL.md +1 -1
  171. package/dist/skills/testing-best-practices/SKILL.md +1 -1
  172. package/dist/skills/testing-strategy/SKILL.md +1 -1
  173. package/dist/skills/ui-ux-design/SKILL.md +1 -1
  174. package/dist/state/index.js +0 -1
  175. package/dist/state/state-manager.js +1 -2
  176. package/dist/utils/import-resolver.js +1 -1
  177. package/dist/utils/path-resolver.js +2 -2
  178. package/package.json +10 -3
  179. package/scripts/hooks/pre-command +1 -1
  180. package/scripts/hooks/run-hook.js +2 -2
  181. package/scripts/node/auto-reflection-generator.mjs +30 -36
  182. package/scripts/node/govern-reflection.mjs +1 -1
  183. package/scripts/node/postinstall.cjs +37 -2
  184. package/scripts/node/setup-xai-oauth.mjs +244 -0
  185. package/scripts/node/universal-version-manager.js +8 -8
  186. package/scripts/node/version-manager.mjs +1 -1
  187. package/src/integrations/grok/plugin/0xray/.mcp.json +16 -4
  188. package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  189. package/src/mcps/architect-tools.server.ts +2 -2
  190. package/src/mcps/auto-format.server.ts +2 -2
  191. package/src/mcps/boot-orchestrator.server.ts +2 -2
  192. package/src/mcps/config/__tests__/config-loader.test.ts +29 -33
  193. package/src/mcps/config/config-loader.ts +50 -11
  194. package/src/mcps/enforcer-tools.server.ts +2 -2
  195. package/src/mcps/estimation.server.ts +3 -2
  196. package/src/mcps/framework-compliance-audit.server.ts +2 -2
  197. package/src/mcps/framework-help.server.ts +3 -2
  198. package/src/mcps/governance.server.ts +8 -3
  199. package/src/mcps/knowledge-skills/api-design.server.ts +3 -2
  200. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +2 -2
  201. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +2 -2
  202. package/src/mcps/knowledge-skills/code-analyzer.server.ts +2 -2
  203. package/src/mcps/knowledge-skills/code-review.server.ts +2 -2
  204. package/src/mcps/knowledge-skills/content-creator.server.ts +3 -3
  205. package/src/mcps/knowledge-skills/database-design.server.ts +2 -2
  206. package/src/mcps/knowledge-skills/devops-deployment.server.ts +3 -2
  207. package/src/mcps/knowledge-skills/git-workflow.server.ts +3 -2
  208. package/src/mcps/knowledge-skills/growth-strategist.server.ts +3 -3
  209. package/src/mcps/knowledge-skills/log-monitor.server.ts +3 -3
  210. package/src/mcps/knowledge-skills/mobile-development.server.ts +3 -3
  211. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +3 -3
  212. package/src/mcps/knowledge-skills/performance-optimization.server.ts +2 -2
  213. package/src/mcps/knowledge-skills/project-analysis.server.ts +2 -2
  214. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +3 -2
  215. package/src/mcps/knowledge-skills/security-audit.server.ts +2 -2
  216. package/src/mcps/knowledge-skills/seo-consultant.server.ts +3 -2
  217. package/src/mcps/knowledge-skills/session-management.server.ts +3 -2
  218. package/src/mcps/knowledge-skills/skill-invocation.server.ts +113 -3
  219. package/src/mcps/knowledge-skills/strategist.server.ts +3 -3
  220. package/src/mcps/knowledge-skills/tech-writer.server.ts +3 -3
  221. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +3 -2
  222. package/src/mcps/knowledge-skills/testing-strategy.server.ts +2 -2
  223. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +3 -2
  224. package/src/mcps/lint.server.ts +2 -2
  225. package/src/mcps/model-health-check.server.ts +2 -2
  226. package/src/mcps/orchestrator/server.ts +2 -1
  227. package/src/mcps/orchestrator.server.ts +2 -1
  228. package/src/mcps/performance-analysis.server.ts +2 -2
  229. package/src/mcps/processor-pipeline.server.ts +3 -2
  230. package/src/mcps/registry.json +1 -1
  231. package/src/mcps/researcher.server.ts +2 -2
  232. package/src/mcps/security-scan.server.ts +2 -2
  233. package/src/mcps/state-manager.server.ts +5 -5
  234. package/src/opencode/codex.codex +1 -1
  235. package/src/opencode/commands/dependency-audit.md +3 -3
  236. package/src/opencode/commands/summary-logger.md +4 -4
  237. package/src/opencode/enforcer-config.json +2 -2
  238. package/src/skills/api-design/SKILL.md +1 -1
  239. package/src/skills/architect-tools/SKILL.md +1 -1
  240. package/src/skills/architecture-patterns/SKILL.md +1 -1
  241. package/src/skills/auto-format/SKILL.md +1 -1
  242. package/src/skills/boot-orchestrator/SKILL.md +1 -1
  243. package/src/skills/bug-triage/SKILL.md +1 -1
  244. package/src/skills/code-analyzer/SKILL.md +1 -1
  245. package/src/skills/code-review/SKILL.md +1 -1
  246. package/src/skills/enforcer/SKILL.md +1 -1
  247. package/src/skills/framework-compliance-audit/SKILL.md +1 -1
  248. package/src/skills/git-workflow/SKILL.md +1 -1
  249. package/src/skills/hermes-agent/SKILL.md +2 -2
  250. package/src/skills/inference-improve/SKILL.md +1 -1
  251. package/src/skills/lint/SKILL.md +1 -1
  252. package/src/skills/log-monitor/SKILL.md +1 -1
  253. package/src/skills/model-health-check/SKILL.md +1 -1
  254. package/src/skills/multimodal-looker/SKILL.md +1 -1
  255. package/src/skills/orchestrator/SKILL.md +1 -1
  256. package/src/skills/performance-analysis/SKILL.md +1 -1
  257. package/src/skills/performance-optimization/SKILL.md +1 -1
  258. package/src/skills/processor-pipeline/SKILL.md +1 -1
  259. package/src/skills/project-analysis/SKILL.md +1 -1
  260. package/src/skills/refactoring-strategies/SKILL.md +1 -1
  261. package/src/skills/registry.json +1 -1
  262. package/src/skills/researcher/SKILL.md +1 -1
  263. package/src/skills/security-audit/SKILL.md +1 -1
  264. package/src/skills/security-scan/SKILL.md +1 -1
  265. package/src/skills/session-management/SKILL.md +1 -1
  266. package/src/skills/state-manager/SKILL.md +1 -1
  267. package/src/skills/storyteller/SKILL.md +1 -1
  268. package/src/skills/testing-best-practices/SKILL.md +1 -1
  269. package/src/skills/testing-strategy/SKILL.md +1 -1
  270. package/src/skills/ui-ux-design/SKILL.md +1 -1
  271. package/xray/agents_template.md +46 -0
  272. package/xray/codex.json +598 -0
  273. package/dist/plugin/xray-codex-injection.js +0 -857
  274. /package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -0
@@ -6,13 +6,14 @@
6
6
  */
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import * as fs from "fs";
9
10
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
10
11
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
11
12
  class XrayDevOpsDeploymentServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "devops-deployment", version: "1.22.67",
16
+ name: "devops-deployment", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -1173,7 +1174,7 @@ spec:
1173
1174
  }
1174
1175
  }
1175
1176
  // Run the server if this file is executed directly
1176
- if (import.meta.url === `file://${process.argv[1]}`) {
1177
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
1177
1178
  const server = new XrayDevOpsDeploymentServer();
1178
1179
  server.run().catch(() => { });
1179
1180
  }
@@ -7,12 +7,13 @@
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import * as fs from "fs";
10
11
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
11
12
  class XrayGitWorkflowServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "git-workflow", version: "1.22.67",
16
+ name: "git-workflow", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -108,7 +109,7 @@ class XrayGitWorkflowServer {
108
109
  });
109
110
  }
110
111
  }
111
- if (import.meta.url === `file://${process.argv[1]}`) {
112
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
112
113
  const server = new XrayGitWorkflowServer();
113
114
  server.run().catch(() => { });
114
115
  }
@@ -7,7 +7,7 @@
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
- import * as path from "path";
10
+ import * as fs from "fs";
11
11
  import { fileURLToPath } from "url";
12
12
  class MarketingExpertServer {
13
13
  server;
@@ -93,7 +93,7 @@ class MarketingExpertServer {
93
93
  },
94
94
  ];
95
95
  constructor() {
96
- this.server = new Server({ name: "growth-strategist", version: "1.22.67" }, { capabilities: { tools: {} } });
96
+ this.server = new Server({ name: "growth-strategist", version: "3.1.0" }, { capabilities: { tools: {} } });
97
97
  this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
98
98
  tools: this.tools,
99
99
  }));
@@ -353,7 +353,7 @@ class MarketingExpertServer {
353
353
  await this.server.connect(transport);
354
354
  }
355
355
  }
356
- const entryPoint = path.resolve(process.argv[1] ?? "");
356
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
357
357
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
358
358
  const server = new MarketingExpertServer();
359
359
  server.run();
@@ -8,7 +8,7 @@
8
8
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
9
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
10
  import { CallToolRequestSchema, ListToolsRequestSchema, } 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
  class LogMonitorServer {
14
14
  server;
@@ -60,7 +60,7 @@ class LogMonitorServer {
60
60
  },
61
61
  ];
62
62
  constructor() {
63
- this.server = new Server({ name: "log-monitor", version: "1.22.67" }, { capabilities: { tools: {} } });
63
+ this.server = new Server({ name: "log-monitor", version: "3.1.0" }, { capabilities: { tools: {} } });
64
64
  this.setupToolHandlers();
65
65
  }
66
66
  setupToolHandlers() {
@@ -443,7 +443,7 @@ ${analysis.recommendations.map((r) => `- ${r}`).join("\n")}
443
443
  await this.server.connect(transport);
444
444
  }
445
445
  }
446
- const entryPoint = path.resolve(process.argv[1] ?? "");
446
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
447
447
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
448
448
  const server = new LogMonitorServer();
449
449
  server.run();
@@ -7,13 +7,13 @@
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
- import * as path from "path";
10
+ import * as fs from "fs";
11
11
  import { fileURLToPath } from "url";
12
12
  class XrayMobileDevelopmentServer {
13
13
  server;
14
14
  constructor() {
15
15
  this.server = new Server({
16
- name: "mobile-development", version: "1.22.67",
16
+ name: "mobile-development", version: "3.1.0",
17
17
  }, {
18
18
  capabilities: {
19
19
  tools: {},
@@ -517,7 +517,7 @@ class HomePage extends StatelessWidget {
517
517
  await this.server.connect(transport);
518
518
  }
519
519
  }
520
- const entryPoint = path.resolve(process.argv[1] ?? "");
520
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
521
521
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
522
522
  const server = new XrayMobileDevelopmentServer();
523
523
  server.start().catch(() => { });
@@ -10,7 +10,7 @@
10
10
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
11
11
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
12
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
13
- import * as path from "path";
13
+ import * as fs from "fs";
14
14
  import { fileURLToPath } from "url";
15
15
  import { frameworkLogger } from "../../core/framework-logger.js";
16
16
  /* ============================================================================
@@ -19,7 +19,7 @@ import { frameworkLogger } from "../../core/framework-logger.js";
19
19
  class MultimodalLookerServer {
20
20
  server;
21
21
  constructor() {
22
- this.server = new Server({ name: "multimodal-looker", version: "1.22.67" }, { capabilities: { tools: {} } });
22
+ this.server = new Server({ name: "multimodal-looker", version: "3.1.0" }, { capabilities: { tools: {} } });
23
23
  this.setupToolHandlers();
24
24
  }
25
25
  /* --------------------------------------------------------------------------
@@ -1056,7 +1056,7 @@ class MultimodalLookerServer {
1056
1056
  await this.server.connect(transport);
1057
1057
  }
1058
1058
  }
1059
- const entryPoint = path.resolve(process.argv[1] ?? "");
1059
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
1060
1060
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
1061
1061
  const server = new MultimodalLookerServer();
1062
1062
  server.run().catch((err) => frameworkLogger.log('multimodal-looker', 'run-error', 'error', { error: String(err) }));
@@ -16,7 +16,7 @@ class XrayPerformanceOptimizationServer {
16
16
  startTime;
17
17
  constructor() {
18
18
  this.server = new Server({
19
- name: "performance-optimization", version: "1.22.67",
19
+ name: "performance-optimization", version: "3.1.0",
20
20
  }, {
21
21
  capabilities: {
22
22
  tools: {},
@@ -1578,7 +1578,7 @@ ${result.recommendations.slice(0, 5).map((r, i) => `${i + 1}. ${r}`).join("\n")
1578
1578
  });
1579
1579
  }
1580
1580
  }
1581
- if (import.meta.url === `file://${process.argv[1]}`) {
1581
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
1582
1582
  const server = new XrayPerformanceOptimizationServer();
1583
1583
  server.run().catch((error) => {
1584
1584
  frameworkLogger.log("mcp/performance-optimization", "run", "error", { error: String(error) });
@@ -14,7 +14,7 @@ class ProjectAnalysisServer {
14
14
  server;
15
15
  constructor() {
16
16
  this.server = new Server({
17
- name: "project-analysis", version: "1.22.67",
17
+ name: "project-analysis", version: "3.1.0",
18
18
  }, {
19
19
  capabilities: {
20
20
  tools: {},
@@ -804,7 +804,7 @@ class ProjectAnalysisServer {
804
804
  }
805
805
  }
806
806
  // Start the server if run directly
807
- if (import.meta.url === `file://${process.argv[1]}`) {
807
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
808
808
  const server = new ProjectAnalysisServer();
809
809
  server.run().catch((error) => frameworkLogger.log("mcps/project-analysis", "run", "error", { error: String(error) }));
810
810
  }
@@ -6,13 +6,14 @@
6
6
  */
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import * as fs from "fs";
9
10
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
10
11
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
11
12
  class XrayRefactoringStrategiesServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "refactoring-strategies", version: "1.22.67",
16
+ name: "refactoring-strategies", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -789,7 +790,7 @@ class XrayRefactoringStrategiesServer {
789
790
  }
790
791
  }
791
792
  // Run the server if this file is executed directly
792
- if (import.meta.url === `file://${process.argv[1]}`) {
793
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
793
794
  const server = new XrayRefactoringStrategiesServer();
794
795
  server.run().catch(() => { });
795
796
  }
@@ -15,7 +15,7 @@ class XraySecurityAuditServer {
15
15
  server;
16
16
  constructor() {
17
17
  this.server = new Server({
18
- name: "security-audit", version: "1.22.67",
18
+ name: "security-audit", version: "3.1.0",
19
19
  }, {
20
20
  capabilities: {
21
21
  tools: {},
@@ -809,7 +809,7 @@ class XraySecurityAuditServer {
809
809
  }
810
810
  }
811
811
  // Run the server if this file is executed directly
812
- if (import.meta.url === `file://${process.argv[1]}`) {
812
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
813
813
  const server = new XraySecurityAuditServer();
814
814
  server.run().catch(() => { });
815
815
  }
@@ -8,11 +8,12 @@
8
8
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
9
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
10
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
11
+ import * as fs from "fs";
11
12
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
12
13
  class SEOSpecialistServer {
13
14
  server;
14
15
  constructor() {
15
- this.server = new Server({ name: "seo-consultant", version: "1.22.67" }, { capabilities: { tools: {} } });
16
+ this.server = new Server({ name: "seo-consultant", version: "3.1.0" }, { capabilities: { tools: {} } });
16
17
  this.setupToolHandlers();
17
18
  }
18
19
  setupToolHandlers() {
@@ -930,7 +931,7 @@ Sitemap: ${baseUrl}/sitemap.xml`;
930
931
  });
931
932
  }
932
933
  }
933
- if (import.meta.url === `file://${process.argv[1]}`) {
934
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
934
935
  const server = new SEOSpecialistServer();
935
936
  server.run().catch(() => { });
936
937
  }
@@ -7,6 +7,7 @@
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import * as fs from "fs";
10
11
  import { frameworkLogger } from "../../core/framework-logger.js";
11
12
  class SessionManagementServer {
12
13
  server;
@@ -132,7 +133,7 @@ class SessionManagementServer {
132
133
  },
133
134
  ];
134
135
  constructor() {
135
- this.server = new Server({ name: "session-management", version: "1.22.67" }, { capabilities: { tools: {} } });
136
+ this.server = new Server({ name: "session-management", version: "3.1.0" }, { capabilities: { tools: {} } });
136
137
  this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
137
138
  tools: this.tools,
138
139
  }));
@@ -463,7 +464,7 @@ class SessionManagementServer {
463
464
  });
464
465
  }
465
466
  }
466
- if (import.meta.url === `file://${process.argv[1]}`) {
467
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
467
468
  const server = new SessionManagementServer();
468
469
  server.run().catch((error) => frameworkLogger.log("mcps/session-management", "run", "error", { error: String(error) }));
469
470
  }
@@ -3,16 +3,17 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
3
3
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
4
  import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
5
5
  import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from "@modelcontextprotocol/sdk/types.js";
6
- import * as path from "path";
6
+ import * as fs from "fs";
7
7
  import { fileURLToPath } from "url";
8
8
  import { randomUUID } from "crypto";
9
9
  import { mcpClientManager } from "../mcp-client.js";
10
10
  import { frameworkLogger } from "../../core/framework-logger.js";
11
+ import { skillInstallCommand, skillRegistryCommand } from "../../cli/commands/skill-install.js";
11
12
  class SkillInvocationServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "xray/skill-invocation", version: "1.22.67",
16
+ name: "xray/skill-invocation", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -274,6 +275,61 @@ class SkillInvocationServer {
274
275
  required: ["storyType"],
275
276
  },
276
277
  },
278
+ {
279
+ name: "install-skill",
280
+ description: "Install skills from the registry or any git repo",
281
+ inputSchema: {
282
+ type: "object",
283
+ properties: {
284
+ source: {
285
+ type: "string",
286
+ description: "Source name or git URL to install skills from",
287
+ },
288
+ path: {
289
+ type: "string",
290
+ description: "Subdirectory in repo containing skills",
291
+ },
292
+ force: {
293
+ type: "boolean",
294
+ description: "Reinstall even if already installed",
295
+ },
296
+ },
297
+ required: ["source"],
298
+ },
299
+ },
300
+ {
301
+ name: "skill-registry-list",
302
+ description: "List all available skill registry sources",
303
+ inputSchema: {
304
+ type: "object",
305
+ properties: {},
306
+ },
307
+ },
308
+ {
309
+ name: "skill-registry-add",
310
+ description: "Add a new source to the skills registry",
311
+ inputSchema: {
312
+ type: "object",
313
+ properties: {
314
+ name: { type: "string", description: "Unique source name" },
315
+ url: { type: "string", description: "Repository URL" },
316
+ desc: { type: "string", description: "Short description" },
317
+ license: { type: "string", description: "License type" },
318
+ },
319
+ required: ["name", "url"],
320
+ },
321
+ },
322
+ {
323
+ name: "skill-registry-remove",
324
+ description: "Remove a source from the skills registry",
325
+ inputSchema: {
326
+ type: "object",
327
+ properties: {
328
+ name: { type: "string", description: "Source name to remove" },
329
+ },
330
+ required: ["name"],
331
+ },
332
+ },
277
333
  ],
278
334
  };
279
335
  });
@@ -308,6 +364,14 @@ class SkillInvocationServer {
308
364
  return await this.handleSkillDocumentationGeneration(args);
309
365
  case "skill-storyteller":
310
366
  return await this.handleSkillStoryteller(args);
367
+ case "install-skill":
368
+ return await this.handleInstallSkill(args);
369
+ case "skill-registry-list":
370
+ return await this.handleSkillRegistryList();
371
+ case "skill-registry-add":
372
+ return await this.handleSkillRegistryAdd(args);
373
+ case "skill-registry-remove":
374
+ return await this.handleSkillRegistryRemove(args);
311
375
  default:
312
376
  throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
313
377
  }
@@ -626,6 +690,44 @@ class SkillInvocationServer {
626
690
  ],
627
691
  };
628
692
  }
693
+ async captureConsole(fn) {
694
+ const chunks = [];
695
+ const origLog = console.log;
696
+ console.log = (...args) => chunks.push(args.map(String).join(" "));
697
+ try {
698
+ await fn();
699
+ }
700
+ finally {
701
+ console.log = origLog;
702
+ }
703
+ return chunks.join("\n");
704
+ }
705
+ async handleInstallSkill(args) {
706
+ const opts = {};
707
+ if (args.path !== undefined)
708
+ opts.path = args.path;
709
+ if (args.force !== undefined)
710
+ opts.force = args.force;
711
+ const output = await this.captureConsole(() => skillInstallCommand(args.source, opts));
712
+ return { content: [{ type: "text", text: output || "Skill installation completed." }] };
713
+ }
714
+ async handleSkillRegistryList() {
715
+ const output = await this.captureConsole(() => skillRegistryCommand("list"));
716
+ return { content: [{ type: "text", text: output || "No registry sources configured." }] };
717
+ }
718
+ async handleSkillRegistryAdd(args) {
719
+ const registryArgs = { name: args.name, url: args.url };
720
+ if (args.desc !== undefined)
721
+ registryArgs.desc = args.desc;
722
+ if (args.license !== undefined)
723
+ registryArgs.license = args.license;
724
+ const output = await this.captureConsole(() => skillRegistryCommand("add", registryArgs));
725
+ return { content: [{ type: "text", text: output || "Source added." }] };
726
+ }
727
+ async handleSkillRegistryRemove(args) {
728
+ const output = await this.captureConsole(() => skillRegistryCommand("remove", { name: args.name }));
729
+ return { content: [{ type: "text", text: output || "Source removed." }] };
730
+ }
629
731
  async run() {
630
732
  const transport = new StdioServerTransport();
631
733
  await this.server.connect(transport);
@@ -706,7 +808,7 @@ class SkillInvocationServer {
706
808
  }
707
809
  }
708
810
  // Start the server if this file is run directly
709
- const entryPoint = path.resolve(process.argv[1] ?? "");
811
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
710
812
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
711
813
  // If --port or MCP_PORT is set, use HTTP transport (for Grok CLI compatibility)
712
814
  const cliPort = process.argv.find((a) => a.startsWith("--port="))?.split("=")[1];
@@ -7,7 +7,7 @@
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
- import * as path from "path";
10
+ import * as fs from "fs";
11
11
  import { fileURLToPath } from "url";
12
12
  import { frameworkLogger } from "../../core/framework-logger.js";
13
13
  class StrategistServer {
@@ -78,7 +78,7 @@ class StrategistServer {
78
78
  ];
79
79
  constructor() {
80
80
  this.server = new Server({
81
- name: "xray/strategist", version: "1.22.67",
81
+ name: "xray/strategist", version: "3.1.0",
82
82
  }, {
83
83
  capabilities: {
84
84
  tools: {},
@@ -209,7 +209,7 @@ class StrategistServer {
209
209
  await frameworkLogger.log("mcp-strategist", "server-started", "success");
210
210
  }
211
211
  }
212
- const entryPoint = path.resolve(process.argv[1] ?? "");
212
+ const entryPoint = fs.realpathSync(process.argv[1] ?? "");
213
213
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
214
214
  const server = new StrategistServer();
215
215
  server.start().catch((error) => frameworkLogger.log("mcps/strategist", "run", "error", { error: String(error) }));
@@ -14,7 +14,7 @@ class XrayDocumentationGenerationServer {
14
14
  server;
15
15
  constructor() {
16
16
  this.server = new Server({
17
- name: "documentation-generation", version: "1.22.67",
17
+ name: "documentation-generation", version: "3.1.0",
18
18
  }, {
19
19
  capabilities: {
20
20
  tools: {},
@@ -727,7 +727,7 @@ class XrayDocumentationGenerationServer {
727
727
  openapi: "3.0.0",
728
728
  info: {
729
729
  title: "API Documentation",
730
- version: "1.22.67",
730
+ version: "3.1.0",
731
731
  description: "Generated API documentation",
732
732
  },
733
733
  servers: [
@@ -1184,7 +1184,7 @@ class XrayDocumentationGenerationServer {
1184
1184
  }
1185
1185
  }
1186
1186
  // Run the server if this file is executed directly
1187
- if (import.meta.url === `file://${process.argv[1]}`) {
1187
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
1188
1188
  const server = new XrayDocumentationGenerationServer();
1189
1189
  server.run().catch(() => { });
1190
1190
  }
@@ -6,13 +6,14 @@
6
6
  */
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import * as fs from "fs";
9
10
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
10
11
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
11
12
  class XrayTestingBestPracticesServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "testing-best-practices", version: "1.22.67",
16
+ name: "testing-best-practices", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -859,7 +860,7 @@ class XrayTestingBestPracticesServer {
859
860
  }
860
861
  }
861
862
  // Run the server if this file is executed directly
862
- if (import.meta.url === `file://${process.argv[1]}`) {
863
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
863
864
  const server = new XrayTestingBestPracticesServer();
864
865
  server.run().catch(() => { });
865
866
  }
@@ -16,7 +16,7 @@ class XrayTestingStrategyServer {
16
16
  server;
17
17
  constructor() {
18
18
  this.server = new Server({
19
- name: "testing-strategy", version: "1.22.67",
19
+ name: "testing-strategy", version: "3.1.0",
20
20
  }, {
21
21
  capabilities: {
22
22
  tools: {},
@@ -820,7 +820,7 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
820
820
  }
821
821
  }
822
822
  // Start the server if run directly
823
- if (import.meta.url === `file://${process.argv[1]}`) {
823
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
824
824
  const server = new XrayTestingStrategyServer();
825
825
  server.run().catch(() => { });
826
826
  }
@@ -7,12 +7,13 @@
7
7
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import * as fs from "fs";
10
11
  import { frameworkLogger } from "../../core/framework-logger.js";
11
12
  class XrayUIUXDesignServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "ui-ux-design", version: "1.22.67",
16
+ name: "ui-ux-design", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -1531,7 +1532,7 @@ Available: ${Object.keys(system.components).length} component types
1531
1532
  }
1532
1533
  }
1533
1534
  // Run the server if this file is executed directly
1534
- if (import.meta.url === `file://${process.argv[1]}`) {
1535
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
1535
1536
  const server = new XrayUIUXDesignServer();
1536
1537
  server.run().catch((error) => frameworkLogger.log("mcps/ui-ux-design", "run", "error", { error: String(error) }));
1537
1538
  }
@@ -13,7 +13,7 @@ class XrayLintServer {
13
13
  server;
14
14
  constructor() {
15
15
  this.server = new Server({
16
- name: "lint", version: "1.22.67",
16
+ name: "lint", version: "3.1.0",
17
17
  }, {
18
18
  capabilities: {
19
19
  tools: {},
@@ -374,7 +374,7 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
374
374
  }
375
375
  }
376
376
  // Start the server if run directly
377
- if (import.meta.url === `file://${process.argv[1]}`) {
377
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
378
378
  const server = new XrayLintServer();
379
379
  server.run().catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
380
380
  }
@@ -7,12 +7,13 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
7
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
8
  import { modelRouter } from "../core/model-router.js";
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import fs from "fs";
10
11
  import { frameworkLogger } from "../core/framework-logger.js";
11
12
  class XrayModelHealthCheckServer {
12
13
  server;
13
14
  constructor() {
14
15
  this.server = new Server({
15
- name: "model-health-check", version: "1.22.67",
16
+ name: "model-health-check", version: "3.1.0",
16
17
  }, {
17
18
  capabilities: {
18
19
  tools: {},
@@ -221,7 +222,7 @@ class XrayModelHealthCheckServer {
221
222
  }
222
223
  }
223
224
  // Start the server if this file is run directly
224
- if (import.meta.url === `file://${process.argv[1]}`) {
225
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
225
226
  const server = new XrayModelHealthCheckServer();
226
227
  server.start().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
227
228
  }
@@ -7,6 +7,7 @@
7
7
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
8
8
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
9
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
10
+ import * as fs from 'fs';
10
11
  import { frameworkLogger } from '../../core/framework-logger.js';
11
12
  import { XrayStateManager } from '../../state/state-manager.js';
12
13
  import { MultiAgentOrchestrationCoordinator } from '../../orchestrator/multi-agent-orchestration-coordinator.js';
@@ -294,7 +295,7 @@ export function createOrchestratorServer() {
294
295
  return serverInstance;
295
296
  }
296
297
  // Run if called directly
297
- if (import.meta.url === `file://${process.argv[1]}`) {
298
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
298
299
  const server = createOrchestratorServer();
299
300
  server.start().catch((error) => {
300
301
  frameworkLogger.log('orchestrator.server', 'fatal-error', 'error', {
@@ -6,10 +6,11 @@
6
6
  *
7
7
  * @deprecated Use src/mcps/orchestrator/server.ts instead
8
8
  */
9
+ import * as fs from 'fs';
9
10
  import { frameworkLogger } from '../core/framework-logger.js';
10
11
  export { OrchestratorServer, createOrchestratorServer } from './orchestrator/server.js';
11
12
  // Run if called directly
12
- if (import.meta.url === `file://${process.argv[1]}`) {
13
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
13
14
  const { createOrchestratorServer } = await import('./orchestrator/server.js');
14
15
  const server = createOrchestratorServer();
15
16
  server.start().catch((error) => {