0xray 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/.opencode/codex.codex +1 -1
  2. package/.opencode/commands/auto-format.md +3 -3
  3. package/.opencode/commands/auto-summary-capture.md +2 -2
  4. package/.opencode/commands/enforcer-daily-scan.md +3 -3
  5. package/.opencode/commands/framework-compliance-audit.md +4 -4
  6. package/.opencode/commands/interactive-validator.md +2 -2
  7. package/.opencode/commands/job-summary-logger.md +2 -2
  8. package/.opencode/commands/mode-switch.md +1 -1
  9. package/.opencode/commands/model-health-check.md +2 -2
  10. package/.opencode/commands/performance-analysis.md +2 -2
  11. package/.opencode/commands/pre-commit-introspection.md +3 -3
  12. package/.opencode/commands/security-scan.md +3 -3
  13. package/.opencode/commands/sisyphus-validation.md +3 -3
  14. package/.opencode/commands/summary-logger.md +2 -2
  15. package/AGENTS.md +3 -13
  16. package/README.md +3 -3
  17. package/dist/AGENTS.md +3 -13
  18. package/dist/CHANGELOG.md +29 -0
  19. package/dist/README.md +3 -3
  20. package/dist/analytics/consent-manager.js +0 -1
  21. package/dist/analytics/emerging-pattern-detector.js +0 -1
  22. package/dist/analytics/pattern-learning-engine.js +0 -1
  23. package/dist/analytics/pattern-performance-tracker.js +0 -1
  24. package/dist/analytics/predictive-analytics.js +0 -1
  25. package/dist/analytics/prompt-pattern-analyzer.js +0 -1
  26. package/dist/analytics/routing-performance-analyzer.js +0 -1
  27. package/dist/analytics/routing-refiner.js +0 -1
  28. package/dist/analytics/simple-pattern-analyzer.js +0 -1
  29. package/dist/cli/commands/archive-logs.js +0 -1
  30. package/dist/cli/commands/opencode-install.js +13 -0
  31. package/dist/cli/commands/plugin-commands.js +0 -1
  32. package/dist/cli/commands/status.js +11 -13
  33. package/dist/cli/index.js +2 -7
  34. package/dist/core/activity-logger.js +0 -1
  35. package/dist/core/adaptive-kernel.js +0 -1
  36. package/dist/core/boot-orchestrator.js +2 -12
  37. package/dist/core/bridge.mjs +0 -1
  38. package/dist/core/codex-formatter.js +0 -1
  39. package/dist/core/codex-injector.js +0 -1
  40. package/dist/core/config-loader.js +36 -28
  41. package/dist/core/context-loader.js +0 -1
  42. package/dist/core/context-validator.js +0 -1
  43. package/dist/core/features-config.js +37 -1
  44. package/dist/core/kernel-patterns.js +0 -1
  45. package/dist/core/model-router.js +23 -64
  46. package/dist/core/system-prompt-generator.js +0 -1
  47. package/dist/delegation/agent-delegator.js +0 -1
  48. package/dist/delegation/agent-expertise.js +0 -1
  49. package/dist/delegation/analytics/index.js +0 -1
  50. package/dist/delegation/analytics/learning-engine.js +0 -1
  51. package/dist/delegation/analytics/outcome-tracker.js +0 -1
  52. package/dist/delegation/analytics/routing-analytics.js +0 -1
  53. package/dist/delegation/ast-code-parser.js +0 -1
  54. package/dist/delegation/complexity-analyzer.js +0 -1
  55. package/dist/delegation/dependency-graph-builder.js +0 -1
  56. package/dist/delegation/index.js +0 -1
  57. package/dist/delegation/metrics-aggregator.js +0 -1
  58. package/dist/delegation/session-coordinator.js +0 -1
  59. package/dist/delegation/strategy-selector.js +0 -1
  60. package/dist/delegation/voting-coordinator.js +0 -1
  61. package/dist/delegation/voting-types.js +0 -1
  62. package/dist/delegation/weighted-voting-aggregator.js +0 -1
  63. package/dist/enforcement/core/index.js +0 -1
  64. package/dist/enforcement/core/rule-executor.js +0 -1
  65. package/dist/enforcement/core/rule-hierarchy.js +0 -1
  66. package/dist/enforcement/core/rule-registry.js +0 -1
  67. package/dist/enforcement/core/violation-fixer.js +0 -1
  68. package/dist/enforcement/index.js +0 -1
  69. package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
  70. package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
  71. package/dist/enforcement/loaders/base-loader.js +0 -1
  72. package/dist/enforcement/loaders/codex-loader.js +0 -1
  73. package/dist/enforcement/loaders/index.js +0 -1
  74. package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
  75. package/dist/enforcement/loaders/processor-loader.js +0 -1
  76. package/dist/enforcement/types.js +0 -1
  77. package/dist/enforcement/validators/architecture-validators.js +0 -1
  78. package/dist/enforcement/validators/base-validator.js +0 -1
  79. package/dist/enforcement/validators/code-quality-validators.js +0 -1
  80. package/dist/enforcement/validators/index.js +0 -1
  81. package/dist/enforcement/validators/security-validators.js +0 -1
  82. package/dist/enforcement/validators/testing-validators.js +0 -1
  83. package/dist/enforcement/validators/validator-registry.js +0 -1
  84. package/dist/governance/codex-policy.service.js +0 -1
  85. package/dist/inference/inference-agent-invoker.js +67 -0
  86. package/dist/inference/inference-applier.js +178 -0
  87. package/dist/inference/inference-cycle.js +51 -827
  88. package/dist/inference/inference-proposal-generator.js +149 -0
  89. package/dist/infrastructure/iac-validator.js +465 -0
  90. package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
  91. package/dist/integrations/base/ExampleIntegration.js +0 -1
  92. package/dist/integrations/base/Integration.js +0 -1
  93. package/dist/integrations/base/index.js +0 -1
  94. package/dist/integrations/base/registry.js +0 -1
  95. package/dist/integrations/base/types.js +0 -1
  96. package/dist/integrations/enforcement-gate.js +3 -3
  97. package/dist/integrations/governance/governance-client.js +0 -1
  98. package/dist/integrations/governance/index.js +11 -19
  99. package/dist/integrations/governance/types.js +0 -1
  100. package/dist/integrations/hermes-agent/__init__.py +4 -0
  101. package/dist/integrations/hermes-agent/bridge.mjs +37 -0
  102. package/dist/integrations/openclaw/api-server.js +0 -1
  103. package/dist/integrations/openclaw/client.js +0 -1
  104. package/dist/integrations/openclaw/config.js +0 -1
  105. package/dist/integrations/openclaw/hooks/xray-hooks.js +0 -1
  106. package/dist/integrations/openclaw/index.js +0 -1
  107. package/dist/integrations/openclaw/types.js +0 -1
  108. package/dist/integrations/plugins/index.js +0 -1
  109. package/dist/integrations/plugins/plugin-integration.js +0 -1
  110. package/dist/integrations/plugins/plugin-registry.js +0 -1
  111. package/dist/mcps/agent-resolver.js +0 -1
  112. package/dist/mcps/architect-tools.server.js +119 -185
  113. package/dist/mcps/auto-format.server.js +56 -74
  114. package/dist/mcps/boot-orchestrator.server.js +67 -85
  115. package/dist/mcps/config/config-loader.js +6 -0
  116. package/dist/mcps/config/plugin-server-registry.js +0 -1
  117. package/dist/mcps/enforcer-tools.server.js +207 -273
  118. package/dist/mcps/estimation.server.js +63 -107
  119. package/dist/mcps/framework-compliance-audit.server.js +52 -81
  120. package/dist/mcps/framework-help.server.js +71 -89
  121. package/dist/mcps/governance.server.js +97 -149
  122. package/dist/mcps/knowledge-skills/api-design.server.js +33 -65
  123. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +33 -65
  124. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +123 -163
  125. package/dist/mcps/knowledge-skills/code-analyzer.server.js +210 -237
  126. package/dist/mcps/knowledge-skills/code-review.server.js +108 -142
  127. package/dist/mcps/knowledge-skills/content-creator.server.js +203 -225
  128. package/dist/mcps/knowledge-skills/database-design.server.js +116 -150
  129. package/dist/mcps/knowledge-skills/devops-deployment.server.js +123 -157
  130. package/dist/mcps/knowledge-skills/git-workflow.server.js +34 -67
  131. package/dist/mcps/knowledge-skills/growth-strategist.server.js +301 -323
  132. package/dist/mcps/knowledge-skills/log-monitor.server.js +139 -159
  133. package/dist/mcps/knowledge-skills/mobile-development.server.js +170 -200
  134. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +122 -158
  135. package/dist/mcps/knowledge-skills/performance-optimization.server.js +88 -138
  136. package/dist/mcps/knowledge-skills/project-analysis.server.js +131 -218
  137. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +115 -150
  138. package/dist/mcps/knowledge-skills/security-audit.server.js +16 -143
  139. package/dist/mcps/knowledge-skills/seo-consultant.server.js +20 -213
  140. package/dist/mcps/knowledge-skills/session-management.server.js +13 -90
  141. package/dist/mcps/knowledge-skills/skill-invocation.server.js +43 -421
  142. package/dist/mcps/knowledge-skills/strategist.server.js +10 -55
  143. package/dist/mcps/knowledge-skills/tech-writer.server.js +16 -191
  144. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +18 -191
  145. package/dist/mcps/knowledge-skills/testing-strategy.server.js +18 -156
  146. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +22 -296
  147. package/dist/mcps/lint.server.js +50 -91
  148. package/dist/mcps/model-health-check.server.js +32 -60
  149. package/dist/mcps/orchestrator/aside-context.js +207 -0
  150. package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
  151. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  152. package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
  153. package/dist/mcps/orchestrator/index.js +5 -0
  154. package/dist/mcps/orchestrator/server.js +63 -8
  155. package/dist/mcps/performance-analysis.server.js +56 -87
  156. package/dist/mcps/processor-pipeline.server.js +68 -99
  157. package/dist/mcps/researcher.server.js +80 -153
  158. package/dist/mcps/security-scan.server.js +56 -70
  159. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  160. package/dist/mcps/state-manager.server.js +124 -152
  161. package/dist/monitoring/nudge-watchdog.js +0 -1
  162. package/dist/nucleus/default-plugins.js +13 -19
  163. package/dist/nucleus/index.js +0 -1
  164. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  165. package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
  166. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
  167. package/dist/orchestrator/orchestrator.js +8 -18
  168. package/dist/orchestrator/self-direction-activation.js +0 -1
  169. package/dist/orchestrator/universal-registry-bridge.js +0 -1
  170. package/dist/performance/performance-budget-enforcer.js +0 -1
  171. package/dist/performance/performance-regression-tester.js +0 -1
  172. package/dist/plugin/plugin-codex-context.js +87 -0
  173. package/dist/plugin/plugin-helpers.js +155 -0
  174. package/dist/plugin/plugin-logger.js +46 -0
  175. package/dist/plugin/plugin-modules.js +144 -0
  176. package/dist/plugin/plugin-quality-gate.js +88 -0
  177. package/dist/plugin/plugin-types.js +1 -0
  178. package/dist/plugin/xray-codex-injection.js +338 -0
  179. package/dist/postprocessor/PostProcessor.js +3 -9
  180. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  181. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  182. package/dist/postprocessor/integration.js +194 -0
  183. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  184. package/dist/postprocessor/metamorphosis/index.js +1 -0
  185. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  186. package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
  187. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  188. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  189. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  190. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  191. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  192. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  193. package/dist/processors/implementations/inference-improvement-processor.js +2 -9
  194. package/dist/processors/implementations/log-protection-processor.js +0 -1
  195. package/dist/processors/implementations/nudge-processor.js +0 -1
  196. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  197. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  198. package/dist/processors/implementations/publish-preflight-processor.js +4 -12
  199. package/dist/processors/implementations/session-summary-processor.js +8 -16
  200. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  201. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
  202. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  203. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  204. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  205. package/dist/processors/processor-interfaces.js +0 -1
  206. package/dist/processors/processor-types.js +0 -1
  207. package/dist/scripts/integration.js +0 -1
  208. package/dist/security/comprehensive-security-audit.js +0 -1
  209. package/dist/security/security-agent-coordinator.js +0 -1
  210. package/dist/security/security-auditor.js +0 -1
  211. package/dist/security/security-hardener.js +0 -1
  212. package/dist/security/security-hardening-system.js +0 -1
  213. package/dist/security/security-headers.js +0 -1
  214. package/dist/security/security-orchestration-layer.js +0 -1
  215. package/dist/services/inference-tuner.js +0 -1
  216. package/dist/session/session-cleanup-manager.js +0 -1
  217. package/dist/session/session-monitor.js +0 -1
  218. package/dist/session/session-state-manager.js +0 -1
  219. package/dist/skills/xray-orchestrator/index.js +0 -1
  220. package/dist/utils/codex-parser.js +0 -1
  221. package/dist/utils/language-detector.js +0 -1
  222. package/dist/utils/shutdown-handler.js +0 -1
  223. package/dist/validation/agent-config-validator.js +280 -0
  224. package/dist/validation/orchestration-flow-validator.js +606 -0
  225. package/package.json +1 -1
  226. package/scripts/node/release.mjs +2 -2
  227. package/scripts/node/setup.cjs +28 -0
  228. package/scripts/node/universal-version-manager.js +1 -1
  229. package/src/mcps/agent-resolver.ts +0 -1
  230. package/src/mcps/architect-tools.server.ts +129 -211
  231. package/src/mcps/auto-format.server.ts +74 -103
  232. package/src/mcps/boot-orchestrator.server.ts +71 -96
  233. package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
  234. package/src/mcps/config/config-loader.ts +7 -0
  235. package/src/mcps/config/plugin-server-registry.ts +0 -1
  236. package/src/mcps/enforcer-tools.server.ts +217 -294
  237. package/src/mcps/estimation.server.ts +62 -122
  238. package/src/mcps/framework-compliance-audit.server.ts +53 -95
  239. package/src/mcps/framework-help.server.ts +74 -96
  240. package/src/mcps/governance.server.ts +97 -162
  241. package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
  242. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
  243. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
  244. package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
  245. package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
  246. package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
  247. package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
  248. package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
  249. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  250. package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
  251. package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
  252. package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
  253. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
  254. package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
  255. package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
  256. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
  257. package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
  258. package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
  259. package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
  260. package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
  261. package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
  262. package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
  263. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
  264. package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
  265. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
  266. package/src/mcps/lint.server.ts +52 -105
  267. package/src/mcps/model-health-check.server.ts +34 -70
  268. package/src/mcps/orchestrator/aside-context.ts +245 -0
  269. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  270. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  271. package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
  272. package/src/mcps/orchestrator/index.ts +29 -0
  273. package/src/mcps/orchestrator/server.ts +79 -24
  274. package/src/mcps/orchestrator/types.ts +37 -0
  275. package/src/mcps/performance-analysis.server.ts +59 -102
  276. package/src/mcps/processor-pipeline.server.ts +70 -108
  277. package/src/mcps/researcher.server.ts +87 -175
  278. package/src/mcps/security-scan.server.ts +57 -76
  279. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  280. package/src/mcps/state-manager.server.ts +129 -169
  281. package/src/opencode/codex.codex +1 -1
  282. package/src/opencode/commands/auto-format.md +3 -3
  283. package/src/opencode/commands/auto-summary-capture.md +2 -2
  284. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  285. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  286. package/src/opencode/commands/interactive-validator.md +2 -2
  287. package/src/opencode/commands/job-summary-logger.md +2 -2
  288. package/src/opencode/commands/mode-switch.md +1 -1
  289. package/src/opencode/commands/model-health-check.md +2 -2
  290. package/src/opencode/commands/performance-analysis.md +2 -2
  291. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  292. package/src/opencode/commands/security-scan.md +3 -3
  293. package/src/opencode/commands/sisyphus-validation.md +3 -3
  294. package/src/opencode/commands/summary-logger.md +2 -2
  295. package/src/skills/xray-orchestrator/index.ts +0 -1
  296. package/dist/nucleus/orchestrator.js +0 -479
@@ -6,14 +6,9 @@
6
6
  * and performance issues in real-time.
7
7
  */
8
8
 
9
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
10
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
11
- import {
12
- CallToolRequestSchema,
13
- ListToolsRequestSchema,
14
- } from "@modelcontextprotocol/sdk/types.js";
15
9
  import * as fs from "fs";
16
10
  import { fileURLToPath } from "url";
11
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
17
12
 
18
13
  interface LogEntry {
19
14
  timestamp: string;
@@ -65,8 +60,7 @@ interface LogAnomaly {
65
60
  count: number;
66
61
  }
67
62
 
68
- class LogMonitorServer {
69
- private server: Server;
63
+ class LogMonitorServer extends XrayKnowledgeSkillBase {
70
64
  private patternLibrary: LogPattern[] = [
71
65
  {
72
66
  id: "memory-leak",
@@ -116,16 +110,8 @@ class LogMonitorServer {
116
110
  ];
117
111
 
118
112
  constructor() {
119
- this.server = new Server(
120
- { name: "log-monitor", version: "3.1.0" },
121
- { capabilities: { tools: {} } },
122
- );
123
- this.setupToolHandlers();
124
- }
125
-
126
- private setupToolHandlers() {
127
- this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
128
- tools: [
113
+ super("log-monitor", "3.1.0");
114
+ this.tools = [
129
115
  {
130
116
  name: "analyze_logs",
131
117
  description:
@@ -238,82 +224,72 @@ class LogMonitorServer {
238
224
  required: ["analysis"],
239
225
  },
240
226
  },
241
- ],
242
- }));
243
-
244
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
245
- const { name, arguments: args = {} } = request.params;
246
-
247
- try {
227
+ ];
228
+ this.handlers = {
229
+ "analyze_logs": async (args) => {
248
230
  const params = args as Record<string, unknown>;
249
- switch (name) {
250
- case "analyze_logs": {
251
- const result = this.analyzeLogs(
252
- (params.logs as string[]) || [],
253
- (params.options as Record<string, unknown>) || {},
254
- );
255
- return {
256
- content: [
257
- { type: "text", text: JSON.stringify(result, null, 2) },
258
- ],
259
- };
260
- }
261
- case "detect_patterns": {
262
- const result = this.detectPatterns(
263
- (params.logs as string[]) || [],
264
- (params.customPatterns as string[]) || [],
265
- (params.sensitivity as number) || 80,
266
- );
267
- return {
268
- content: [
269
- { type: "text", text: JSON.stringify(result, null, 2) },
270
- ],
271
- };
272
- }
273
- case "alert_on_issues": {
274
- const result = this.alertOnIssues(
275
- params.analysis as unknown as LogAnalysis,
276
- (params.thresholds as Record<string, unknown>) || {},
277
- );
278
- return {
279
- content: [
280
- { type: "text", text: JSON.stringify(result, null, 2) },
281
- ],
282
- };
283
- }
284
- case "correlate_events": {
285
- const result = this.correlateEvents(
286
- (params.logSets as Array<{ source: string; logs: string[] }>) ||
287
- [],
288
- (params.timeWindow as number) || 60,
289
- );
290
- return {
291
- content: [
292
- { type: "text", text: JSON.stringify(result, null, 2) },
293
- ],
294
- };
295
- }
296
- case "generate_report": {
297
- const result = this.generateReport(
298
- params.analysis as unknown as LogAnalysis,
299
- (params.format as string) || "json",
300
- );
301
- return {
302
- content: [
303
- { type: "text", text: JSON.stringify(result, null, 2) },
304
- ],
305
- };
306
- }
307
- default:
308
- throw new Error(`Unknown tool: ${name}`);
309
- }
310
- } catch (error) {
231
+ const result = this.analyzeLogs(
232
+ (params.logs as string[]) || [],
233
+ (params.options as Record<string, unknown>) || {},
234
+ );
311
235
  return {
312
- content: [{ type: "text", text: `Error: ${error}` }],
313
- isError: true,
236
+ content: [
237
+ { type: "text", text: JSON.stringify(result, null, 2) },
238
+ ],
314
239
  };
315
- }
316
- });
240
+ },
241
+ "detect_patterns": async (args) => {
242
+ const params = args as Record<string, unknown>;
243
+ const result = this.detectPatterns(
244
+ (params.logs as string[]) || [],
245
+ (params.customPatterns as string[]) || [],
246
+ (params.sensitivity as number) || 80,
247
+ );
248
+ return {
249
+ content: [
250
+ { type: "text", text: JSON.stringify(result, null, 2) },
251
+ ],
252
+ };
253
+ },
254
+ "alert_on_issues": async (args) => {
255
+ const params = args as Record<string, unknown>;
256
+ const result = this.alertOnIssues(
257
+ params.analysis as unknown as LogAnalysis,
258
+ (params.thresholds as Record<string, unknown>) || {},
259
+ );
260
+ return {
261
+ content: [
262
+ { type: "text", text: JSON.stringify(result, null, 2) },
263
+ ],
264
+ };
265
+ },
266
+ "correlate_events": async (args) => {
267
+ const params = args as Record<string, unknown>;
268
+ const result = this.correlateEvents(
269
+ (params.logSets as Array<{ source: string; logs: string[] }>) ||
270
+ [],
271
+ (params.timeWindow as number) || 60,
272
+ );
273
+ return {
274
+ content: [
275
+ { type: "text", text: JSON.stringify(result, null, 2) },
276
+ ],
277
+ };
278
+ },
279
+ "generate_report": async (args) => {
280
+ const params = args as Record<string, unknown>;
281
+ const result = this.generateReport(
282
+ params.analysis as unknown as LogAnalysis,
283
+ (params.format as string) || "json",
284
+ );
285
+ return {
286
+ content: [
287
+ { type: "text", text: JSON.stringify(result, null, 2) },
288
+ ],
289
+ };
290
+ },
291
+ };
292
+ this.setupToolHandlers();
317
293
  }
318
294
 
319
295
  private analyzeLogs(logs: string[], options: Record<string, unknown>): LogAnalysis {
@@ -604,10 +580,7 @@ ${analysis.recommendations.map((r) => `- ${r}`).join("\n")}
604
580
  return recs;
605
581
  }
606
582
 
607
- async run() {
608
- const transport = new StdioServerTransport();
609
- await this.server.connect(transport);
610
- }
583
+
611
584
  }
612
585
 
613
586
  const entryPoint = fs.realpathSync(process.argv[1] ?? "");
@@ -5,14 +5,9 @@
5
5
  * React Native, Flutter, and mobile performance optimization
6
6
  */
7
7
 
8
- import { Server } from "@modelcontextprotocol/sdk/server/index.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 * as fs from "fs";
15
9
  import { fileURLToPath } from "url";
10
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
16
11
 
17
12
  interface IOSBlueprint {
18
13
  projectName: string;
@@ -107,28 +102,10 @@ interface AppStoreMetadataArgs {
107
102
  features?: string[];
108
103
  }
109
104
 
110
- class XrayMobileDevelopmentServer {
111
- private server: Server;
112
-
105
+ class XrayMobileDevelopmentServer extends XrayKnowledgeSkillBase {
113
106
  constructor() {
114
- this.server = new Server(
115
- {
116
- name: "mobile-development", version: "3.1.0",
117
- },
118
- {
119
- capabilities: {
120
- tools: {},
121
- },
122
- },
123
- );
124
-
125
- this.setupToolHandlers();
126
- }
127
-
128
- private setupToolHandlers() {
129
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
130
- return {
131
- tools: [
107
+ super("mobile-development", "3.1.0");
108
+ this.tools = [
132
109
  {
133
110
  name: "ios_blueprint",
134
111
  description:
@@ -305,30 +282,16 @@ class XrayMobileDevelopmentServer {
305
282
  required: ["appName", "platform"],
306
283
  },
307
284
  },
308
- ],
309
- };
310
- });
311
-
312
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
313
- const { name, arguments: args } = request.params;
314
-
315
- switch (name) {
316
- case "ios_blueprint":
317
- return await this.generateIOSBlueprint(args ?? {});
318
- case "android_blueprint":
319
- return await this.generateAndroidBlueprint(args ?? {});
320
- case "react_native_boilerplate":
321
- return await this.generateReactNativeBlueprint(args ?? {});
322
- case "flutter_boilerplate":
323
- return await this.generateFlutterBlueprint(args ?? {});
324
- case "mobile_performance_profile":
325
- return await this.analyzeMobilePerformance(args ?? {});
326
- case "app_store_metadata":
327
- return await this.generateAppStoreMetadata(args ?? {});
328
- default:
329
- throw new Error(`Unknown tool: ${name}`);
330
- }
331
- });
285
+ ];
286
+ this.handlers = {
287
+ "ios_blueprint": async (args) => this.generateIOSBlueprint((args ?? {}) as Record<string, unknown>),
288
+ "android_blueprint": async (args) => this.generateAndroidBlueprint((args ?? {}) as Record<string, unknown>),
289
+ "react_native_boilerplate": async (args) => this.generateReactNativeBlueprint((args ?? {}) as Record<string, unknown>),
290
+ "flutter_boilerplate": async (args) => this.generateFlutterBlueprint((args ?? {}) as Record<string, unknown>),
291
+ "mobile_performance_profile": async (args) => this.analyzeMobilePerformance((args ?? {}) as Record<string, unknown>),
292
+ "app_store_metadata": async (args) => this.generateAppStoreMetadata((args ?? {}) as Record<string, unknown>),
293
+ };
294
+ this.setupToolHandlers();
332
295
  }
333
296
 
334
297
  private async generateIOSBlueprint(args: Record<string, unknown>) {
@@ -657,16 +620,13 @@ class HomePage extends StatelessWidget {
657
620
  };
658
621
  }
659
622
 
660
- async start() {
661
- const transport = new StdioServerTransport();
662
- await this.server.connect(transport);
663
- }
623
+
664
624
  }
665
625
 
666
626
  const entryPoint = fs.realpathSync(process.argv[1] ?? "");
667
627
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
668
628
  const server = new XrayMobileDevelopmentServer();
669
- server.start().catch(() => {});
629
+ server.run().catch(() => {});
670
630
  }
671
631
 
672
632
  export { XrayMobileDevelopmentServer };
@@ -8,15 +8,10 @@
8
8
  * Production-ready implementation with real analysis logic.
9
9
  */
10
10
 
11
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
12
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
13
- import {
14
- CallToolRequestSchema,
15
- ListToolsRequestSchema,
16
- } from "@modelcontextprotocol/sdk/types.js";
17
11
  import * as fs from "fs";
18
12
  import { fileURLToPath } from "url";
19
13
  import { frameworkLogger } from "../../core/framework-logger.js";
14
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
20
15
 
21
16
  /* ============================================================================
22
17
  * Type Definitions
@@ -162,24 +157,10 @@ interface VisualComparison {
162
157
  * Analysis Engine
163
158
  * ============================================================================ */
164
159
 
165
- class MultimodalLookerServer {
166
- private server: Server;
167
-
160
+ class MultimodalLookerServer extends XrayKnowledgeSkillBase {
168
161
  constructor() {
169
- this.server = new Server(
170
- { name: "multimodal-looker", version: "3.1.0" },
171
- { capabilities: { tools: {} } },
172
- );
173
- this.setupToolHandlers();
174
- }
175
-
176
- /* --------------------------------------------------------------------------
177
- * Tool Registration
178
- * -------------------------------------------------------------------------- */
179
-
180
- private setupToolHandlers() {
181
- this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
182
- tools: [
162
+ super("multimodal-looker", "3.1.0");
163
+ this.tools = [
183
164
  {
184
165
  name: "analyze-screenshot",
185
166
  description:
@@ -309,35 +290,15 @@ class MultimodalLookerServer {
309
290
  required: ["imageA", "imageB"],
310
291
  },
311
292
  },
312
- ],
313
- }));
314
-
315
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
316
- const { name, arguments: args = {} } = request.params;
317
- const params = args as Record<string, unknown>;
318
-
319
- try {
320
- switch (name) {
321
- case "analyze-screenshot":
322
- return this.handleAnalyzeScreenshot(params);
323
- case "describe-diagram":
324
- return this.handleDescribeDiagram(params);
325
- case "review-ui-mockup":
326
- return this.handleReviewUIMockup(params);
327
- case "extract-visual-specs":
328
- return this.handleExtractVisualSpecs(params);
329
- case "compare-designs":
330
- return this.handleCompareDesigns(params);
331
- default:
332
- throw new Error(`Unknown tool: ${name}`);
333
- }
334
- } catch (error) {
335
- return {
336
- content: [{ type: "text", text: `Error: ${error}` }],
337
- isError: true,
338
- };
339
- }
340
- });
293
+ ];
294
+ this.handlers = {
295
+ "analyze-screenshot": async (args) => this.handleAnalyzeScreenshot(args as Record<string, unknown>),
296
+ "describe-diagram": async (args) => this.handleDescribeDiagram(args as Record<string, unknown>),
297
+ "review-ui-mockup": async (args) => this.handleReviewUIMockup(args as Record<string, unknown>),
298
+ "extract-visual-specs": async (args) => this.handleExtractVisualSpecs(args as Record<string, unknown>),
299
+ "compare-designs": async (args) => this.handleCompareDesigns(args as Record<string, unknown>),
300
+ };
301
+ this.setupToolHandlers();
341
302
  }
342
303
 
343
304
  /* --------------------------------------------------------------------------
@@ -1482,14 +1443,7 @@ class MultimodalLookerServer {
1482
1443
  return recommendations;
1483
1444
  }
1484
1445
 
1485
- /* --------------------------------------------------------------------------
1486
- * Server Lifecycle
1487
- * -------------------------------------------------------------------------- */
1488
1446
 
1489
- async run(): Promise<void> {
1490
- const transport = new StdioServerTransport();
1491
- await this.server.connect(transport);
1492
- }
1493
1447
  }
1494
1448
 
1495
1449
  const entryPoint = fs.realpathSync(process.argv[1] ?? "");
@@ -5,18 +5,12 @@
5
5
  * profiling, benchmarking, memory analysis, and Core Web Vitals measurement
6
6
  */
7
7
 
8
- import { Server } from "@modelcontextprotocol/sdk/server/index.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 { frameworkLogger, generateJobId } from "../../core/framework-logger.js";
15
- import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
16
9
  import fs from "fs";
17
10
  import path from "path";
18
11
  import os from "os";
19
12
  import { execSync } from "child_process";
13
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
20
14
 
21
15
  interface ProfileApplicationArgs {
22
16
  projectRoot: string;
@@ -217,30 +211,10 @@ interface McpToolResponse {
217
211
  data?: Record<string, unknown>;
218
212
  }
219
213
 
220
- class XrayPerformanceOptimizationServer {
221
- private server: Server;
222
- private startTime: number;
223
-
214
+ class XrayPerformanceOptimizationServer extends XrayKnowledgeSkillBase {
224
215
  constructor() {
225
- this.server = new Server(
226
- {
227
- name: "performance-optimization", version: "3.1.0",
228
- },
229
- {
230
- capabilities: {
231
- tools: {},
232
- },
233
- },
234
- );
235
-
236
- this.startTime = Date.now();
237
- this.setupToolHandlers();
238
- }
239
-
240
- private setupToolHandlers() {
241
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
242
- return {
243
- tools: [
216
+ super("performance-optimization", "3.1.0");
217
+ this.tools = [
244
218
  {
245
219
  name: "profile-application",
246
220
  description: "Run comprehensive performance profiling on the codebase to identify bottlenecks and hot paths",
@@ -323,38 +297,15 @@ class XrayPerformanceOptimizationServer {
323
297
  required: ["projectRoot"]
324
298
  }
325
299
  }
326
- ]
327
- };
328
- });
329
-
330
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
331
- const { name, arguments: args } = request.params;
332
-
333
- try {
334
- switch (name) {
335
- case "profile-application":
336
- return await this.handleProfileApplication(args as unknown as ProfileApplicationArgs) as never;
337
- case "analyze-memory":
338
- return await this.handleAnalyzeMemory(args as unknown as AnalyzeMemoryArgs) as never;
339
- case "benchmark-code":
340
- return await this.handleBenchmarkCode(args as unknown as BenchmarkCodeArgs) as never;
341
- case "suggest-optimizations":
342
- return await this.handleSuggestOptimizations(args as unknown as SuggestOptimizationsArgs) as never;
343
- case "measure-core-web-vitals":
344
- return await this.handleMeasureCoreWebVitals(args as unknown as MeasureCoreWebVitalsArgs) as never;
345
- default:
346
- throw new Error(`Unknown tool: ${name}`);
347
- }
348
- } catch (error) {
349
- frameworkLogger.log("mcp/performance-optimization", "tool-handler", "error", { tool: name, error: String(error) });
350
- return {
351
- content: [{
352
- type: "text",
353
- text: `Error executing tool "${name}": ${error instanceof Error ? error.message : String(error)}`
354
- }]
355
- };
356
- }
357
- });
300
+ ];
301
+ this.handlers = {
302
+ "profile-application": async (args) => this.handleProfileApplication(args as unknown as ProfileApplicationArgs),
303
+ "analyze-memory": async (args) => this.handleAnalyzeMemory(args as unknown as AnalyzeMemoryArgs),
304
+ "benchmark-code": async (args) => this.handleBenchmarkCode(args as unknown as BenchmarkCodeArgs),
305
+ "suggest-optimizations": async (args) => this.handleSuggestOptimizations(args as unknown as SuggestOptimizationsArgs),
306
+ "measure-core-web-vitals": async (args) => this.handleMeasureCoreWebVitals(args as unknown as MeasureCoreWebVitalsArgs),
307
+ };
308
+ this.setupToolHandlers();
358
309
  }
359
310
 
360
311
  private async handleProfileApplication(args: ProfileApplicationArgs): Promise<McpToolResponse> {
@@ -2040,19 +1991,7 @@ ${result.recommendations.slice(0, 5).map((r, i) => `${i + 1}. ${r}`).join("\n")
2040
1991
  return files.slice(0, 100);
2041
1992
  }
2042
1993
 
2043
- async run(): Promise<void> {
2044
- const transport = new StdioServerTransport();
2045
- await this.server.connect(transport);
2046
-
2047
- createGracefulShutdown({
2048
- serverName: "performance-optimization.server",
2049
- server: this.server,
2050
- });
2051
1994
 
2052
- frameworkLogger.log("mcp/performance-optimization", "server-started", "info", {
2053
- uptime: Date.now() - this.startTime
2054
- });
2055
- }
2056
1995
  }
2057
1996
 
2058
1997
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {