0xray 2.1.2 → 2.1.3

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 (250) hide show
  1. package/.opencode/codex.codex +1 -1
  2. package/.opencode/commands/dependency-audit.md +3 -3
  3. package/.opencode/enforcer-config.json +2 -2
  4. package/AGENTS.md +2 -1
  5. package/README.md +12 -11
  6. package/dist/AGENTS.md +2 -1
  7. package/dist/CHANGELOG.md +26 -0
  8. package/dist/README.md +12 -11
  9. package/dist/agents/code-reviewer.js +1 -1
  10. package/dist/analytics/routing-refiner.js +1 -1
  11. package/dist/cli/index.js +11 -1
  12. package/dist/cli/server.js +3 -3
  13. package/dist/core/activity-logger.d.ts +2 -2
  14. package/dist/core/activity-logger.js +4 -4
  15. package/dist/core/boot-orchestrator.d.ts +1 -1
  16. package/dist/core/boot-orchestrator.js +13 -28
  17. package/dist/core/bridge.mjs +3 -3
  18. package/dist/core/codex-formatter.js +2 -2
  19. package/dist/core/codex-injector.d.ts +0 -1
  20. package/dist/core/codex-injector.js +2 -3
  21. package/dist/core/config-loader.d.ts +1 -1
  22. package/dist/core/config-loader.js +1 -1
  23. package/dist/core/config-paths.d.ts +0 -2
  24. package/dist/core/config-paths.js +7 -8
  25. package/dist/core/context-loader.d.ts +1 -1
  26. package/dist/core/context-loader.js +1 -1
  27. package/dist/core/errors.d.ts +3 -0
  28. package/dist/core/errors.js +10 -0
  29. package/dist/core/features-config.js +1 -1
  30. package/dist/core/framework-logger.d.ts +3 -3
  31. package/dist/core/framework-logger.js +17 -9
  32. package/dist/core/index.d.ts +2 -2
  33. package/dist/core/index.js +4 -2
  34. package/dist/core/logging-config.d.ts +2 -1
  35. package/dist/core/logging-config.js +7 -7
  36. package/dist/enforcement/loaders/codex-loader.js +1 -1
  37. package/dist/execution/opencode-cli-invoker.js +5 -5
  38. package/dist/governance/governance-service.js +1 -1
  39. package/dist/index.d.ts +3 -3
  40. package/dist/index.js +3 -3
  41. package/dist/inference/inference-cycle.d.ts +1 -1
  42. package/dist/inference/inference-cycle.js +10 -10
  43. package/dist/integrations/base/Integration.js +1 -1
  44. package/dist/integrations/base/registry.js +19 -19
  45. package/dist/integrations/grok/grok-cli.js +17 -17
  46. package/dist/integrations/grok/hooks/pre-tool-use.js +1 -1
  47. package/dist/integrations/hermes-agent/bridge.mjs +1 -1
  48. package/dist/integrations/openclaw/api-server.d.ts +0 -1
  49. package/dist/integrations/openclaw/api-server.js +7 -10
  50. package/dist/integrations/openclaw/client.d.ts +0 -1
  51. package/dist/integrations/openclaw/client.js +22 -24
  52. package/dist/integrations/openclaw/hooks/xray-hooks.d.ts +0 -1
  53. package/dist/integrations/openclaw/hooks/xray-hooks.js +17 -18
  54. package/dist/integrations/plugins/plugin-registry.js +5 -5
  55. package/dist/mcps/architect-tools.server.d.ts +2 -4
  56. package/dist/mcps/architect-tools.server.js +112 -195
  57. package/dist/mcps/auto-format.server.d.ts +2 -4
  58. package/dist/mcps/auto-format.server.js +49 -95
  59. package/dist/mcps/boot-orchestrator.server.d.ts +2 -4
  60. package/dist/mcps/boot-orchestrator.server.js +73 -105
  61. package/dist/mcps/config/server-config-registry.js +3 -3
  62. package/dist/mcps/enforcer-tools.server.d.ts +2 -4
  63. package/dist/mcps/enforcer-tools.server.js +202 -285
  64. package/dist/mcps/estimation.server.d.ts +2 -4
  65. package/dist/mcps/estimation.server.js +63 -107
  66. package/dist/mcps/framework-compliance-audit.server.d.ts +2 -4
  67. package/dist/mcps/framework-compliance-audit.server.js +53 -82
  68. package/dist/mcps/framework-help.server.d.ts +2 -4
  69. package/dist/mcps/framework-help.server.js +63 -101
  70. package/dist/mcps/governance.server.js +2 -2
  71. package/dist/mcps/knowledge-skills/api-design.server.d.ts +2 -4
  72. package/dist/mcps/knowledge-skills/api-design.server.js +35 -67
  73. package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +2 -10
  74. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +35 -74
  75. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.d.ts +2 -4
  76. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +143 -162
  77. package/dist/mcps/knowledge-skills/code-analyzer.server.d.ts +3 -4
  78. package/dist/mcps/knowledge-skills/code-analyzer.server.js +20 -45
  79. package/dist/mcps/knowledge-skills/code-review.server.d.ts +2 -4
  80. package/dist/mcps/knowledge-skills/code-review.server.js +109 -143
  81. package/dist/mcps/knowledge-skills/content-creator.server.d.ts +2 -4
  82. package/dist/mcps/knowledge-skills/content-creator.server.js +205 -226
  83. package/dist/mcps/knowledge-skills/database-design.server.d.ts +2 -4
  84. package/dist/mcps/knowledge-skills/database-design.server.js +117 -151
  85. package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +2 -4
  86. package/dist/mcps/knowledge-skills/devops-deployment.server.js +71 -160
  87. package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +2 -4
  88. package/dist/mcps/knowledge-skills/git-workflow.server.js +36 -68
  89. package/dist/mcps/knowledge-skills/growth-strategist.server.d.ts +2 -4
  90. package/dist/mcps/knowledge-skills/growth-strategist.server.js +303 -324
  91. package/dist/mcps/knowledge-skills/log-monitor.server.d.ts +2 -4
  92. package/dist/mcps/knowledge-skills/log-monitor.server.js +141 -160
  93. package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +2 -4
  94. package/dist/mcps/knowledge-skills/mobile-development.server.js +92 -209
  95. package/dist/mcps/knowledge-skills/multimodal-looker.server.d.ts +2 -4
  96. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +123 -159
  97. package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +2 -5
  98. package/dist/mcps/knowledge-skills/performance-optimization.server.js +155 -296
  99. package/dist/mcps/knowledge-skills/project-analysis.server.d.ts +2 -4
  100. package/dist/mcps/knowledge-skills/project-analysis.server.js +75 -226
  101. package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +2 -4
  102. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +63 -156
  103. package/dist/mcps/knowledge-skills/security-audit.server.d.ts +2 -4
  104. package/dist/mcps/knowledge-skills/security-audit.server.js +102 -136
  105. package/dist/mcps/knowledge-skills/seo-consultant.server.d.ts +2 -4
  106. package/dist/mcps/knowledge-skills/seo-consultant.server.js +80 -203
  107. package/dist/mcps/knowledge-skills/session-management.server.d.ts +2 -4
  108. package/dist/mcps/knowledge-skills/session-management.server.js +50 -203
  109. package/dist/mcps/knowledge-skills/skill-invocation.server.d.ts +2 -4
  110. package/dist/mcps/knowledge-skills/skill-invocation.server.js +168 -347
  111. package/dist/mcps/knowledge-skills/strategist.server.d.ts +2 -11
  112. package/dist/mcps/knowledge-skills/strategist.server.js +72 -122
  113. package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +2 -4
  114. package/dist/mcps/knowledge-skills/tech-writer.server.js +87 -300
  115. package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +2 -4
  116. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +147 -182
  117. package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +2 -4
  118. package/dist/mcps/knowledge-skills/testing-strategy.server.js +78 -153
  119. package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +2 -5
  120. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +90 -399
  121. package/dist/mcps/lint.server.d.ts +2 -4
  122. package/dist/mcps/lint.server.js +51 -92
  123. package/dist/mcps/mcp-client.js +2 -2
  124. package/dist/mcps/model-health-check.server.d.ts +2 -4
  125. package/dist/mcps/model-health-check.server.js +32 -60
  126. package/dist/mcps/performance-analysis.server.d.ts +2 -4
  127. package/dist/mcps/performance-analysis.server.js +57 -88
  128. package/dist/mcps/processor-pipeline.server.d.ts +2 -4
  129. package/dist/mcps/processor-pipeline.server.js +69 -100
  130. package/dist/mcps/registry.json +1 -1
  131. package/dist/mcps/researcher.server.d.ts +3 -5
  132. package/dist/mcps/researcher.server.js +81 -154
  133. package/dist/mcps/security-scan.server.d.ts +2 -4
  134. package/dist/mcps/security-scan.server.js +54 -96
  135. package/dist/mcps/shared/knowledge-skill-base.d.ts +14 -0
  136. package/dist/mcps/shared/knowledge-skill-base.js +45 -0
  137. package/dist/{security → mcps/shared}/security-scanner.js +1 -1
  138. package/dist/mcps/state-manager.server.d.ts +2 -4
  139. package/dist/mcps/state-manager.server.js +115 -160
  140. package/dist/orchestrator/orchestrator.d.ts +1 -1
  141. package/dist/orchestrator/orchestrator.js +1 -1
  142. package/dist/orchestrator/universal-registry-bridge.js +1 -1
  143. package/dist/plugin/xray-codex-injection.d.ts +1 -1
  144. package/dist/plugin/xray-codex-injection.js +1 -1
  145. package/dist/postprocessor/PostProcessor.d.ts +4 -44
  146. package/dist/postprocessor/PostProcessor.js +39 -553
  147. package/dist/postprocessor/analysis/CodeChangeAnalyzer.d.ts +11 -0
  148. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  149. package/dist/postprocessor/compliance/ArchitecturalComplianceChecker.d.ts +11 -0
  150. package/dist/postprocessor/compliance/ArchitecturalComplianceChecker.js +356 -0
  151. package/dist/postprocessor/config/ProcessorConfigLoader.d.ts +44 -0
  152. package/dist/postprocessor/config/ProcessorConfigLoader.js +21 -0
  153. package/dist/postprocessor/reporting/PostProcessorReporter.d.ts +19 -0
  154. package/dist/postprocessor/reporting/PostProcessorReporter.js +96 -0
  155. package/dist/postprocessor/triggers/GitHookTrigger.js +11 -11
  156. package/dist/processors/implementations/refactoring-logging-processor-wrapper.d.ts +32 -0
  157. package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +95 -1
  158. package/dist/processors/processor-manager.js +346 -314
  159. package/dist/reporting/report-formatter.js +1 -1
  160. package/dist/security/security-hardener.d.ts +69 -2
  161. package/dist/security/security-hardener.js +129 -1
  162. package/dist/skills/registry.json +1 -1
  163. package/dist/state/index.d.ts +3 -5
  164. package/dist/state/index.js +1 -7
  165. package/dist/state/state-manager.d.ts +1 -1
  166. package/dist/state/state-manager.js +2 -3
  167. package/package.json +13 -10
  168. package/scripts/node/universal-version-manager.js +11 -11
  169. package/src/mcps/architect-tools.server.ts +112 -215
  170. package/src/mcps/auto-format.server.ts +50 -110
  171. package/src/mcps/boot-orchestrator.server.ts +75 -121
  172. package/src/mcps/config/__tests__/server-config-registry.test.ts +21 -12
  173. package/src/mcps/config/server-config-registry.ts +3 -3
  174. package/src/mcps/enforcer-tools.server.ts +212 -310
  175. package/src/mcps/estimation.server.ts +62 -122
  176. package/src/mcps/framework-compliance-audit.server.ts +52 -97
  177. package/src/mcps/framework-help.server.ts +64 -114
  178. package/src/mcps/governance.server.ts +2 -2
  179. package/src/mcps/knowledge-skills/api-design.server.ts +32 -77
  180. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +31 -87
  181. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +165 -193
  182. package/src/mcps/knowledge-skills/code-analyzer.server.ts +20 -55
  183. package/src/mcps/knowledge-skills/code-review.server.ts +114 -161
  184. package/src/mcps/knowledge-skills/content-creator.server.ts +218 -255
  185. package/src/mcps/knowledge-skills/database-design.server.ts +118 -165
  186. package/src/mcps/knowledge-skills/devops-deployment.server.ts +67 -172
  187. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  188. package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -361
  189. package/src/mcps/knowledge-skills/log-monitor.server.ts +160 -187
  190. package/src/mcps/knowledge-skills/mobile-development.server.ts +89 -223
  191. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +128 -175
  192. package/src/mcps/knowledge-skills/performance-optimization.server.ts +156 -329
  193. package/src/mcps/knowledge-skills/project-analysis.server.ts +72 -248
  194. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +59 -171
  195. package/src/mcps/knowledge-skills/security-audit.server.ts +104 -151
  196. package/src/mcps/knowledge-skills/seo-consultant.server.ts +80 -220
  197. package/src/mcps/knowledge-skills/session-management.server.ts +51 -232
  198. package/src/mcps/knowledge-skills/skill-invocation.server.ts +165 -372
  199. package/src/mcps/knowledge-skills/strategist.server.ts +72 -143
  200. package/src/mcps/knowledge-skills/tech-writer.server.ts +85 -350
  201. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +146 -195
  202. package/src/mcps/knowledge-skills/testing-strategy.server.ts +75 -161
  203. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +93 -487
  204. package/src/mcps/lint.server.ts +53 -107
  205. package/src/mcps/mcp-client.ts +2 -2
  206. package/src/mcps/model-health-check.server.ts +34 -71
  207. package/src/mcps/performance-analysis.server.ts +60 -104
  208. package/src/mcps/processor-pipeline.server.ts +72 -110
  209. package/src/mcps/registry.json +1 -1
  210. package/src/mcps/researcher.server.ts +88 -177
  211. package/src/mcps/security-scan.server.ts +55 -104
  212. package/src/mcps/shared/knowledge-skill-base.ts +62 -0
  213. package/src/mcps/shared/prompt-security-validator.ts +199 -0
  214. package/src/mcps/shared/security-scanner.ts +599 -0
  215. package/src/mcps/state-manager.server.ts +117 -175
  216. package/src/opencode/codex.codex +1 -1
  217. package/src/opencode/commands/dependency-audit.md +3 -3
  218. package/src/opencode/enforcer-config.json +2 -2
  219. package/src/skills/registry.json +1 -1
  220. package/xray/codex.json +1 -1
  221. package/xray/config.json +1 -1
  222. package/xray/features.json +1 -1
  223. package/xray/integrations.json +3 -3
  224. package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
  225. package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
  226. package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
  227. package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
  228. package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
  229. package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
  230. package/dist/integrations/hermes-agent/conftest.py +0 -14
  231. package/dist/integrations/hermes-agent/test_plugin.py +0 -1103
  232. package/dist/processors/implementations/refactoring-logging-processor.d.ts +0 -31
  233. package/dist/processors/implementations/refactoring-logging-processor.js +0 -96
  234. package/dist/processors/implementations/session-capture-processor.d.ts +0 -14
  235. package/dist/processors/implementations/session-capture-processor.js +0 -37
  236. package/dist/scripts/activate-kernel-pipeline.d.ts +0 -7
  237. package/dist/scripts/activate-kernel-pipeline.js +0 -101
  238. package/dist/security/index.d.ts +0 -13
  239. package/dist/security/index.js +0 -13
  240. package/dist/security/security-agent-coordinator.d.ts +0 -72
  241. package/dist/security/security-agent-coordinator.js +0 -204
  242. package/dist/security/security-auditor.d.ts +0 -56
  243. package/dist/security/security-auditor.js +0 -584
  244. package/dist/security/security-hardening-system.d.ts +0 -239
  245. package/dist/security/security-hardening-system.js +0 -727
  246. package/dist/security/security-orchestration-layer.d.ts +0 -119
  247. package/dist/security/security-orchestration-layer.js +0 -496
  248. /package/dist/{security → mcps/shared}/prompt-security-validator.d.ts +0 -0
  249. /package/dist/{security → mcps/shared}/prompt-security-validator.js +0 -0
  250. /package/dist/{security → mcps/shared}/security-scanner.d.ts +0 -0
@@ -4,15 +4,10 @@
4
4
  * Comprehensive ESLint validation and automated code quality checking
5
5
  */
6
6
 
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
- import {
10
- CallToolRequestSchema,
11
- ListToolsRequestSchema,
12
- } from "@modelcontextprotocol/sdk/types.js";
13
7
  import { execFileSync } from "child_process";
14
8
  import fs from "fs";
15
9
  import { frameworkLogger } from "../core/framework-logger.js";
10
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
16
11
 
17
12
  interface LintArgs {
18
13
  files?: string[];
@@ -33,20 +28,63 @@ interface LintResults {
33
28
  details: string[];
34
29
  }
35
30
 
36
- class XrayLintServer {
37
- private server: Server;
38
-
31
+ class XrayLintServer extends XrayKnowledgeSkillBase {
39
32
  constructor() {
40
- this.server = new Server(
33
+ super("lint", "2.0.1");
34
+
35
+ this.tools = [
41
36
  {
42
- name: "lint", version: "2.0.1",
37
+ name: "lint",
38
+ description:
39
+ "Comprehensive ESLint validation and automated code quality checking",
40
+ inputSchema: {
41
+ type: "object",
42
+ properties: {
43
+ files: {
44
+ type: "array",
45
+ items: { type: "string" },
46
+ description:
47
+ "Specific files to lint (optional - lints all if empty)",
48
+ },
49
+ fix: {
50
+ type: "boolean",
51
+ default: false,
52
+ description:
53
+ "Automatically fix linting issues where possible",
54
+ },
55
+ strict: {
56
+ type: "boolean",
57
+ default: false,
58
+ description: "Use strict linting rules",
59
+ },
60
+ },
61
+ },
43
62
  },
44
63
  {
45
- capabilities: {
46
- tools: {},
64
+ name: "lint-check",
65
+ description: "Check code quality without making changes",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ files: {
70
+ type: "array",
71
+ items: { type: "string" },
72
+ description: "Files to check",
73
+ },
74
+ rules: {
75
+ type: "array",
76
+ items: { type: "string" },
77
+ description: "Specific ESLint rules to check",
78
+ },
79
+ },
47
80
  },
48
81
  },
49
- );
82
+ ];
83
+
84
+ this.handlers = {
85
+ "lint": async (args) => this.handleLint(args as unknown as LintArgs),
86
+ "lint-check": async (args) => this.handleLintCheck(args as unknown as LintCheckArgs),
87
+ };
50
88
 
51
89
  this.setupToolHandlers();
52
90
  void frameworkLogger.log(
@@ -57,87 +95,6 @@ class XrayLintServer {
57
95
  );
58
96
  }
59
97
 
60
- private setupToolHandlers() {
61
- // List available tools
62
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
63
- return {
64
- tools: [
65
- {
66
- name: "lint",
67
- description:
68
- "Comprehensive ESLint validation and automated code quality checking",
69
- inputSchema: {
70
- type: "object",
71
- properties: {
72
- files: {
73
- type: "array",
74
- items: { type: "string" },
75
- description:
76
- "Specific files to lint (optional - lints all if empty)",
77
- },
78
- fix: {
79
- type: "boolean",
80
- default: false,
81
- description:
82
- "Automatically fix linting issues where possible",
83
- },
84
- strict: {
85
- type: "boolean",
86
- default: false,
87
- description: "Use strict linting rules",
88
- },
89
- },
90
- },
91
- },
92
- {
93
- name: "lint-check",
94
- description: "Check code quality without making changes",
95
- inputSchema: {
96
- type: "object",
97
- properties: {
98
- files: {
99
- type: "array",
100
- items: { type: "string" },
101
- description: "Files to check",
102
- },
103
- rules: {
104
- type: "array",
105
- items: { type: "string" },
106
- description: "Specific ESLint rules to check",
107
- },
108
- },
109
- },
110
- },
111
- ],
112
- };
113
- });
114
-
115
- // Handle tool calls
116
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
117
- const { name, arguments: args } = request.params;
118
-
119
- try {
120
- switch (name) {
121
- case "lint":
122
- return await this.handleLint(args as unknown as LintArgs);
123
- case "lint-check":
124
- return await this.handleLintCheck(args as unknown as LintCheckArgs);
125
- default:
126
- throw new Error(`Unknown tool: ${name}`);
127
- }
128
- } catch (error) {
129
- return {
130
- content: [
131
- {
132
- type: "text",
133
- text: `❌ Tool execution failed: ${error instanceof Error ? error.message : String(error)}`,
134
- },
135
- ],
136
- };
137
- }
138
- });
139
- }
140
-
141
98
  private async handleLint(args: LintArgs) {
142
99
  const files = args.files || [];
143
100
  const fix = args.fix || false;
@@ -461,23 +418,12 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
461
418
  - Warnings: ${results.issues.warnings}
462
419
  - Fixed: ${results.issues.fixed}`;
463
420
  }
464
-
465
- async run() {
466
- const transport = new StdioServerTransport();
467
- await this.server.connect(transport);
468
- await frameworkLogger.log(
469
- "lint.server",
470
- "-xray-lint-mcp-server-started-",
471
- "info",
472
- { message: "0xRay Lint MCP Server started" },
473
- );
474
- }
475
421
  }
476
422
 
477
423
  // Start the server if run directly
478
424
  if (import.meta.url === `file://${process.argv[1]}`) {
479
425
  const server = new XrayLintServer();
480
- server.run().catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
426
+ server.run("lint").catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
481
427
  }
482
428
 
483
429
  export { XrayLintServer };
@@ -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
  /**
@@ -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
 
@@ -4,16 +4,11 @@
4
4
  * Advanced model compatibility validation and dynamic health assessment
5
5
  */
6
6
 
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
7
  import { modelRouter } from "../core/model-router.js";
10
- import {
11
- CallToolRequestSchema,
12
- ListToolsRequestSchema,
13
- } from "@modelcontextprotocol/sdk/types.js";
14
8
  import { execSync } from "child_process";
15
9
  import fs from "fs";
16
10
  import { frameworkLogger } from "../core/framework-logger.js";
11
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
17
12
 
18
13
  interface ModelHealthCheckArgs {
19
14
  models?: string[];
@@ -36,73 +31,47 @@ interface ModelHealthReportData {
36
31
  summary: { total: number; healthy: number; issues: number };
37
32
  }
38
33
 
39
- class XrayModelHealthCheckServer {
40
- private server: Server;
41
-
34
+ class XrayModelHealthCheckServer extends XrayKnowledgeSkillBase {
42
35
  constructor() {
43
- this.server = new Server(
44
- {
45
- name: "model-health-check", version: "2.0.1",
46
- },
36
+ super("model-health-check", "2.0.1");
37
+
38
+ this.tools = [
47
39
  {
48
- capabilities: {
49
- tools: {},
40
+ name: "model-health-check",
41
+ description:
42
+ "Advanced model compatibility validation and dynamic health assessment",
43
+ inputSchema: {
44
+ type: "object",
45
+ properties: {
46
+ models: {
47
+ type: "array",
48
+ items: { type: "string" },
49
+ description:
50
+ "Specific models to check (optional - checks all configured if empty)",
51
+ },
52
+ compatibility: {
53
+ type: "boolean",
54
+ default: true,
55
+ description: "Include compatibility matrix in results",
56
+ },
57
+ performance: {
58
+ type: "boolean",
59
+ default: true,
60
+ description: "Include performance metrics in results",
61
+ },
62
+ },
50
63
  },
51
64
  },
52
- );
65
+ ];
66
+
67
+ this.handlers = {
68
+ "model-health-check": async (args) => this.handleModelHealthCheck((args || {}) as unknown as ModelHealthCheckArgs),
69
+ };
53
70
 
54
71
  this.setupToolHandlers();
55
72
  frameworkLogger.log("mcps/model-health-check", "initialize", "info");
56
73
  }
57
74
 
58
- private setupToolHandlers() {
59
- // List available tools
60
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
61
- return {
62
- tools: [
63
- {
64
- name: "model-health-check",
65
- description:
66
- "Advanced model compatibility validation and dynamic health assessment",
67
- inputSchema: {
68
- type: "object",
69
- properties: {
70
- models: {
71
- type: "array",
72
- items: { type: "string" },
73
- description:
74
- "Specific models to check (optional - checks all configured if empty)",
75
- },
76
- compatibility: {
77
- type: "boolean",
78
- default: true,
79
- description: "Include compatibility matrix in results",
80
- },
81
- performance: {
82
- type: "boolean",
83
- default: true,
84
- description: "Include performance metrics in results",
85
- },
86
- },
87
- },
88
- },
89
- ],
90
- };
91
- });
92
-
93
- // Handle tool calls
94
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
95
- const { name, arguments: args } = request.params;
96
-
97
- switch (name) {
98
- case "model-health-check":
99
- return await this.handleModelHealthCheck((args || {}) as unknown as ModelHealthCheckArgs);
100
- default:
101
- throw new Error(`Unknown tool: ${name}`);
102
- }
103
- });
104
- }
105
-
106
75
  private async handleModelHealthCheck(args: ModelHealthCheckArgs) {
107
76
  const models = args.models || [modelRouter.getValidatedModel()];
108
77
  const includeCompatibility = args.compatibility !== false;
@@ -275,18 +244,12 @@ class XrayModelHealthCheckServer {
275
244
 
276
245
  return report;
277
246
  }
278
-
279
- public async start() {
280
- const transport = new StdioServerTransport();
281
- await this.server.connect(transport);
282
- frameworkLogger.log("mcps/model-health-check", "start", "info");
283
- }
284
247
  }
285
248
 
286
249
  // Start the server if this file is run directly
287
250
  if (import.meta.url === `file://${process.argv[1]}`) {
288
251
  const server = new XrayModelHealthCheckServer();
289
- server.start().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
252
+ server.run("model-health-check").catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
290
253
  }
291
254
 
292
255
  export default XrayModelHealthCheckServer;
@@ -4,17 +4,12 @@
4
4
  * Comprehensive metrics analysis for framework integration and optimization
5
5
  */
6
6
 
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
7
  import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
9
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
- import {
11
- CallToolRequestSchema,
12
- ListToolsRequestSchema,
13
- } from "@modelcontextprotocol/sdk/types.js";
14
8
  import { execSync } from "child_process";
15
9
  import fs from "fs";
16
10
  import os from "os";
17
11
  import path from "path";
12
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
18
13
 
19
14
  interface AnalysisMetrics {
20
15
  runtime?: RuntimeMetrics;
@@ -57,23 +52,73 @@ interface ResourceMetrics {
57
52
  recommendations: string[];
58
53
  }
59
54
 
60
- class XrayPerformanceAnalysisServer {
61
- private server: Server;
55
+ class XrayPerformanceAnalysisServer extends XrayKnowledgeSkillBase {
62
56
  private startTime: number;
63
57
 
64
58
  constructor() {
65
- this.server = new Server(
59
+ super("performance-analysis", "2.0.1");
60
+
61
+ this.startTime = Date.now();
62
+
63
+ this.tools = [
66
64
  {
67
- name: "performance-analysis", version: "2.0.1",
65
+ name: "performance-analysis",
66
+ description:
67
+ "Comprehensive metrics analysis for framework integration and optimization",
68
+ inputSchema: {
69
+ type: "object",
70
+ properties: {
71
+ scope: {
72
+ type: "string",
73
+ enum: [
74
+ "full",
75
+ "runtime",
76
+ "build",
77
+ "resources",
78
+ "bottlenecks",
79
+ ],
80
+ default: "full",
81
+ description: "Scope of performance analysis",
82
+ },
83
+ duration: {
84
+ type: "number",
85
+ default: 30,
86
+ description: "Analysis duration in seconds",
87
+ },
88
+ detailed: {
89
+ type: "boolean",
90
+ default: false,
91
+ description: "Include detailed metrics and recommendations",
92
+ },
93
+ },
94
+ },
68
95
  },
69
96
  {
70
- capabilities: {
71
- tools: {},
97
+ name: "bottleneck-detection",
98
+ description:
99
+ "Identify performance bottlenecks in framework operations",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ operation: {
104
+ type: "string",
105
+ description: "Specific operation to analyze",
106
+ },
107
+ threshold: {
108
+ type: "number",
109
+ default: 1000,
110
+ description: "Performance threshold in milliseconds",
111
+ },
112
+ },
72
113
  },
73
114
  },
74
- );
115
+ ];
116
+
117
+ this.handlers = {
118
+ "performance-analysis": async (args) => this.handlePerformanceAnalysis(args as Record<string, unknown> | undefined),
119
+ "bottleneck-detection": async (args) => this.handleBottleneckDetection(args as Record<string, unknown> | undefined),
120
+ };
75
121
 
76
- this.startTime = Date.now();
77
122
  this.setupToolHandlers();
78
123
  frameworkLogger.log(
79
124
  "mcp-performance-analysis",
@@ -82,81 +127,6 @@ class XrayPerformanceAnalysisServer {
82
127
  );
83
128
  }
84
129
 
85
- private setupToolHandlers() {
86
- // List available tools
87
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
88
- return {
89
- tools: [
90
- {
91
- name: "performance-analysis",
92
- description:
93
- "Comprehensive metrics analysis for framework integration and optimization",
94
- inputSchema: {
95
- type: "object",
96
- properties: {
97
- scope: {
98
- type: "string",
99
- enum: [
100
- "full",
101
- "runtime",
102
- "build",
103
- "resources",
104
- "bottlenecks",
105
- ],
106
- default: "full",
107
- description: "Scope of performance analysis",
108
- },
109
- duration: {
110
- type: "number",
111
- default: 30,
112
- description: "Analysis duration in seconds",
113
- },
114
- detailed: {
115
- type: "boolean",
116
- default: false,
117
- description: "Include detailed metrics and recommendations",
118
- },
119
- },
120
- },
121
- },
122
- {
123
- name: "bottleneck-detection",
124
- description:
125
- "Identify performance bottlenecks in framework operations",
126
- inputSchema: {
127
- type: "object",
128
- properties: {
129
- operation: {
130
- type: "string",
131
- description: "Specific operation to analyze",
132
- },
133
- threshold: {
134
- type: "number",
135
- default: 1000,
136
- description: "Performance threshold in milliseconds",
137
- },
138
- },
139
- },
140
- },
141
- ],
142
- };
143
- });
144
-
145
- // Handle tool calls
146
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
147
- const { name, arguments: args } = request.params;
148
-
149
- switch (name) {
150
- case "performance-analysis":
151
- return await this.handlePerformanceAnalysis(args);
152
- case "bottleneck-detection":
153
- return await this.handleBottleneckDetection(args);
154
- default:
155
- throw new Error(`Unknown tool: ${name}`);
156
- }
157
- });
158
- }
159
-
160
130
  private async handlePerformanceAnalysis(args: Record<string, unknown> | undefined) {
161
131
  const scope = (args?.scope as string) || "full";
162
132
  const duration = (args?.duration as number) || 30;
@@ -690,26 +660,12 @@ ${results.recommendations.map((r) => `• 💡 ${r}`).join("\n") || "No recommen
690
660
 
691
661
  return report;
692
662
  }
693
-
694
- async run() {
695
- const transport = new StdioServerTransport();
696
- await this.server.connect(transport);
697
- const jobId = generateJobId("mcp-performance-analysis-server");
698
- await frameworkLogger.log(
699
- "mcp-performance-analysis",
700
- "server-started",
701
- "success",
702
- {},
703
- undefined, // sessionId
704
- jobId,
705
- );
706
- }
707
663
  }
708
664
 
709
665
  // Start the server if run directly
710
666
  if (import.meta.url === `file://${process.argv[1]}`) {
711
667
  const server = new XrayPerformanceAnalysisServer();
712
- server.run().catch((error) => frameworkLogger.log("mcps/performance-analysis", "run", "error", { error: String(error) }));
668
+ server.run("performance-analysis").catch((error) => frameworkLogger.log("mcps/performance-analysis", "run", "error", { error: String(error) }));
713
669
  }
714
670
 
715
671
  export { XrayPerformanceAnalysisServer };