0xray 3.1.1 → 3.3.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 (309) 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 +55 -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 +40 -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/config/agent-capabilities.js +30 -11
  151. package/dist/mcps/orchestrator/config/memory-routing-bridge.js +70 -0
  152. package/dist/mcps/orchestrator/execution/execution-planner.js +25 -7
  153. package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
  154. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  155. package/dist/mcps/orchestrator/handlers/task-handler.js +59 -1
  156. package/dist/mcps/orchestrator/index.js +5 -0
  157. package/dist/mcps/orchestrator/server.js +63 -8
  158. package/dist/mcps/performance-analysis.server.js +56 -87
  159. package/dist/mcps/processor-pipeline.server.js +68 -99
  160. package/dist/mcps/researcher.server.js +80 -153
  161. package/dist/mcps/security-scan.server.js +56 -70
  162. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  163. package/dist/mcps/state-manager.server.js +124 -152
  164. package/dist/memory-routing/index.js +4 -0
  165. package/dist/memory-routing/null-provider.js +51 -0
  166. package/dist/memory-routing/provider-loader.js +91 -0
  167. package/dist/memory-routing/provider-registry.js +40 -0
  168. package/dist/memory-routing/types.js +7 -0
  169. package/dist/memory-routing/validate-config.js +32 -0
  170. package/dist/monitoring/nudge-watchdog.js +0 -1
  171. package/dist/nucleus/default-plugins.js +13 -19
  172. package/dist/nucleus/index.js +0 -1
  173. package/dist/nucleus/thin-dispatch.js +29 -1
  174. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  175. package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
  176. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
  177. package/dist/orchestrator/orchestrator.js +8 -18
  178. package/dist/orchestrator/self-direction-activation.js +0 -1
  179. package/dist/orchestrator/universal-registry-bridge.js +0 -1
  180. package/dist/performance/performance-budget-enforcer.js +0 -1
  181. package/dist/performance/performance-regression-tester.js +0 -1
  182. package/dist/plugin/plugin-codex-context.js +87 -0
  183. package/dist/plugin/plugin-helpers.js +155 -0
  184. package/dist/plugin/plugin-logger.js +46 -0
  185. package/dist/plugin/plugin-modules.js +144 -0
  186. package/dist/plugin/plugin-quality-gate.js +88 -0
  187. package/dist/plugin/plugin-types.js +1 -0
  188. package/dist/plugin/xray-codex-injection.js +338 -0
  189. package/dist/postprocessor/PostProcessor.js +3 -9
  190. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  191. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  192. package/dist/postprocessor/integration.js +194 -0
  193. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  194. package/dist/postprocessor/metamorphosis/index.js +1 -0
  195. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  196. package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
  197. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  198. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  199. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  200. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  201. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  202. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  203. package/dist/processors/implementations/inference-improvement-processor.js +2 -9
  204. package/dist/processors/implementations/log-protection-processor.js +0 -1
  205. package/dist/processors/implementations/nudge-processor.js +0 -1
  206. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  207. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  208. package/dist/processors/implementations/publish-preflight-processor.js +4 -12
  209. package/dist/processors/implementations/session-summary-processor.js +8 -16
  210. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  211. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
  212. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  213. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  214. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  215. package/dist/processors/processor-interfaces.js +0 -1
  216. package/dist/processors/processor-types.js +0 -1
  217. package/dist/scripts/integration.js +0 -1
  218. package/dist/security/comprehensive-security-audit.js +0 -1
  219. package/dist/security/security-agent-coordinator.js +0 -1
  220. package/dist/security/security-auditor.js +0 -1
  221. package/dist/security/security-hardener.js +0 -1
  222. package/dist/security/security-hardening-system.js +0 -1
  223. package/dist/security/security-headers.js +0 -1
  224. package/dist/security/security-orchestration-layer.js +0 -1
  225. package/dist/services/inference-tuner.js +0 -1
  226. package/dist/session/session-cleanup-manager.js +0 -1
  227. package/dist/session/session-monitor.js +0 -1
  228. package/dist/session/session-state-manager.js +0 -1
  229. package/dist/skills/xray-orchestrator/index.js +0 -1
  230. package/dist/utils/codex-parser.js +0 -1
  231. package/dist/utils/language-detector.js +0 -1
  232. package/dist/utils/shutdown-handler.js +0 -1
  233. package/dist/validation/agent-config-validator.js +280 -0
  234. package/dist/validation/orchestration-flow-validator.js +606 -0
  235. package/package.json +1 -1
  236. package/scripts/node/release.mjs +2 -2
  237. package/scripts/node/setup.cjs +28 -0
  238. package/scripts/node/universal-version-manager.js +1 -1
  239. package/src/mcps/agent-resolver.ts +0 -1
  240. package/src/mcps/architect-tools.server.ts +129 -211
  241. package/src/mcps/auto-format.server.ts +74 -103
  242. package/src/mcps/boot-orchestrator.server.ts +71 -96
  243. package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
  244. package/src/mcps/config/config-loader.ts +7 -0
  245. package/src/mcps/config/plugin-server-registry.ts +0 -1
  246. package/src/mcps/enforcer-tools.server.ts +217 -294
  247. package/src/mcps/estimation.server.ts +62 -122
  248. package/src/mcps/framework-compliance-audit.server.ts +53 -95
  249. package/src/mcps/framework-help.server.ts +74 -96
  250. package/src/mcps/governance.server.ts +97 -162
  251. package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
  252. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
  253. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
  254. package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
  255. package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
  256. package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
  257. package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
  258. package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
  259. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  260. package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
  261. package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
  262. package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
  263. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
  264. package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
  265. package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
  266. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
  267. package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
  268. package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
  269. package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
  270. package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
  271. package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
  272. package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
  273. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
  274. package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
  275. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
  276. package/src/mcps/lint.server.ts +52 -105
  277. package/src/mcps/model-health-check.server.ts +34 -70
  278. package/src/mcps/orchestrator/aside-context.ts +245 -0
  279. package/src/mcps/orchestrator/config/agent-capabilities.ts +49 -14
  280. package/src/mcps/orchestrator/config/memory-routing-bridge.ts +80 -0
  281. package/src/mcps/orchestrator/execution/execution-planner.ts +36 -9
  282. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  283. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  284. package/src/mcps/orchestrator/handlers/task-handler.ts +78 -2
  285. package/src/mcps/orchestrator/index.ts +29 -0
  286. package/src/mcps/orchestrator/server.ts +79 -24
  287. package/src/mcps/orchestrator/types.ts +50 -0
  288. package/src/mcps/performance-analysis.server.ts +59 -102
  289. package/src/mcps/processor-pipeline.server.ts +70 -108
  290. package/src/mcps/researcher.server.ts +87 -175
  291. package/src/mcps/security-scan.server.ts +57 -76
  292. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  293. package/src/mcps/state-manager.server.ts +129 -169
  294. package/src/opencode/codex.codex +1 -1
  295. package/src/opencode/commands/auto-format.md +3 -3
  296. package/src/opencode/commands/auto-summary-capture.md +2 -2
  297. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  298. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  299. package/src/opencode/commands/interactive-validator.md +2 -2
  300. package/src/opencode/commands/job-summary-logger.md +2 -2
  301. package/src/opencode/commands/mode-switch.md +1 -1
  302. package/src/opencode/commands/model-health-check.md +2 -2
  303. package/src/opencode/commands/performance-analysis.md +2 -2
  304. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  305. package/src/opencode/commands/security-scan.md +3 -3
  306. package/src/opencode/commands/sisyphus-validation.md +3 -3
  307. package/src/opencode/commands/summary-logger.md +2 -2
  308. package/src/skills/xray-orchestrator/index.ts +0 -1
  309. package/dist/nucleus/orchestrator.js +0 -479
@@ -7,179 +7,150 @@
7
7
  *
8
8
  * Production-ready implementation with real analysis logic.
9
9
  */
10
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
11
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
13
10
  import * as fs from "fs";
14
11
  import { fileURLToPath } from "url";
15
12
  import { frameworkLogger } from "../../core/framework-logger.js";
13
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
16
14
  /* ============================================================================
17
15
  * Analysis Engine
18
16
  * ============================================================================ */
19
- class MultimodalLookerServer {
20
- server;
17
+ class MultimodalLookerServer extends XrayKnowledgeSkillBase {
21
18
  constructor() {
22
- this.server = new Server({ name: "multimodal-looker", version: "3.1.0" }, { capabilities: { tools: {} } });
23
- this.setupToolHandlers();
24
- }
25
- /* --------------------------------------------------------------------------
26
- * Tool Registration
27
- * -------------------------------------------------------------------------- */
28
- setupToolHandlers() {
29
- this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
30
- tools: [
31
- {
32
- name: "analyze-screenshot",
33
- description: "Extract UI elements from screenshots. Identifies components, layout structure, and provides detailed element analysis for code generation.",
34
- inputSchema: {
35
- type: "object",
36
- properties: {
37
- imageData: {
38
- type: "string",
39
- description: "Base64 encoded image or detailed visual description",
40
- },
41
- extractComponents: {
42
- type: "boolean",
43
- default: true,
44
- description: "Extract individual UI components",
45
- },
46
- checkAccessibility: {
47
- type: "boolean",
48
- default: true,
49
- description: "Check for accessibility issues",
50
- },
51
- analyzeLayout: {
52
- type: "boolean",
53
- default: true,
54
- description: "Analyze layout structure and grid",
55
- },
19
+ super("multimodal-looker", "3.1.0");
20
+ this.tools = [
21
+ {
22
+ name: "analyze-screenshot",
23
+ description: "Extract UI elements from screenshots. Identifies components, layout structure, and provides detailed element analysis for code generation.",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ imageData: {
28
+ type: "string",
29
+ description: "Base64 encoded image or detailed visual description",
30
+ },
31
+ extractComponents: {
32
+ type: "boolean",
33
+ default: true,
34
+ description: "Extract individual UI components",
35
+ },
36
+ checkAccessibility: {
37
+ type: "boolean",
38
+ default: true,
39
+ description: "Check for accessibility issues",
40
+ },
41
+ analyzeLayout: {
42
+ type: "boolean",
43
+ default: true,
44
+ description: "Analyze layout structure and grid",
56
45
  },
57
- required: ["imageData"],
58
46
  },
47
+ required: ["imageData"],
59
48
  },
60
- {
61
- name: "describe-diagram",
62
- description: "Parse architecture and flow diagrams. Extracts nodes, edges, relationships for understanding system design.",
63
- inputSchema: {
64
- type: "object",
65
- properties: {
66
- imageData: {
67
- type: "string",
68
- description: "Diagram image or description",
69
- },
70
- diagramType: {
71
- type: "string",
72
- enum: ["auto", "flowchart", "sequence", "class", "architecture", "erd", "state"],
73
- default: "auto",
74
- },
75
- extractMetadata: {
76
- type: "boolean",
77
- default: true,
78
- description: "Extract additional metadata about the diagram",
79
- },
49
+ },
50
+ {
51
+ name: "describe-diagram",
52
+ description: "Parse architecture and flow diagrams. Extracts nodes, edges, relationships for understanding system design.",
53
+ inputSchema: {
54
+ type: "object",
55
+ properties: {
56
+ imageData: {
57
+ type: "string",
58
+ description: "Diagram image or description",
59
+ },
60
+ diagramType: {
61
+ type: "string",
62
+ enum: ["auto", "flowchart", "sequence", "class", "architecture", "erd", "state"],
63
+ default: "auto",
64
+ },
65
+ extractMetadata: {
66
+ type: "boolean",
67
+ default: true,
68
+ description: "Extract additional metadata about the diagram",
80
69
  },
81
- required: ["imageData"],
82
70
  },
71
+ required: ["imageData"],
83
72
  },
84
- {
85
- name: "review-ui-mockup",
86
- description: "Evaluate UI mockups against best practices. Checks consistency, accessibility, and provides improvement suggestions.",
87
- inputSchema: {
88
- type: "object",
89
- properties: {
90
- imageData: {
91
- type: "string",
92
- description: "UI mockup image or description",
93
- },
94
- framework: {
95
- type: "string",
96
- enum: ["react", "vue", "angular", "svelte", "html"],
97
- default: "react",
98
- },
99
- checkResponsive: {
100
- type: "boolean",
101
- default: true,
102
- description: "Check for responsive design patterns",
103
- },
73
+ },
74
+ {
75
+ name: "review-ui-mockup",
76
+ description: "Evaluate UI mockups against best practices. Checks consistency, accessibility, and provides improvement suggestions.",
77
+ inputSchema: {
78
+ type: "object",
79
+ properties: {
80
+ imageData: {
81
+ type: "string",
82
+ description: "UI mockup image or description",
83
+ },
84
+ framework: {
85
+ type: "string",
86
+ enum: ["react", "vue", "angular", "svelte", "html"],
87
+ default: "react",
88
+ },
89
+ checkResponsive: {
90
+ type: "boolean",
91
+ default: true,
92
+ description: "Check for responsive design patterns",
104
93
  },
105
- required: ["imageData"],
106
94
  },
95
+ required: ["imageData"],
107
96
  },
108
- {
109
- name: "extract-visual-specs",
110
- description: "Convert visual content to design specifications. Extracts colors, spacing, typography, and other design tokens.",
111
- inputSchema: {
112
- type: "object",
113
- properties: {
114
- imageData: {
115
- type: "string",
116
- description: "Visual content to analyze",
117
- },
118
- includeValues: {
119
- type: "boolean",
120
- default: true,
121
- description: "Include actual CSS values",
122
- },
123
- format: {
124
- type: "string",
125
- enum: ["css", "tailwind", "json"],
126
- default: "css",
127
- },
97
+ },
98
+ {
99
+ name: "extract-visual-specs",
100
+ description: "Convert visual content to design specifications. Extracts colors, spacing, typography, and other design tokens.",
101
+ inputSchema: {
102
+ type: "object",
103
+ properties: {
104
+ imageData: {
105
+ type: "string",
106
+ description: "Visual content to analyze",
107
+ },
108
+ includeValues: {
109
+ type: "boolean",
110
+ default: true,
111
+ description: "Include actual CSS values",
112
+ },
113
+ format: {
114
+ type: "string",
115
+ enum: ["css", "tailwind", "json"],
116
+ default: "css",
128
117
  },
129
- required: ["imageData"],
130
118
  },
119
+ required: ["imageData"],
131
120
  },
132
- {
133
- name: "compare-designs",
134
- description: "Compare two designs for consistency. Identifies differences in colors, layout, typography, and components.",
135
- inputSchema: {
136
- type: "object",
137
- properties: {
138
- imageA: {
139
- type: "string",
140
- description: "Reference design",
141
- },
142
- imageB: {
143
- type: "string",
144
- description: "Design to compare",
145
- },
146
- tolerance: {
147
- type: "number",
148
- default: 5,
149
- description: "Difference tolerance threshold (0-100)",
150
- },
121
+ },
122
+ {
123
+ name: "compare-designs",
124
+ description: "Compare two designs for consistency. Identifies differences in colors, layout, typography, and components.",
125
+ inputSchema: {
126
+ type: "object",
127
+ properties: {
128
+ imageA: {
129
+ type: "string",
130
+ description: "Reference design",
131
+ },
132
+ imageB: {
133
+ type: "string",
134
+ description: "Design to compare",
135
+ },
136
+ tolerance: {
137
+ type: "number",
138
+ default: 5,
139
+ description: "Difference tolerance threshold (0-100)",
151
140
  },
152
- required: ["imageA", "imageB"],
153
141
  },
142
+ required: ["imageA", "imageB"],
154
143
  },
155
- ],
156
- }));
157
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
158
- const { name, arguments: args = {} } = request.params;
159
- const params = args;
160
- try {
161
- switch (name) {
162
- case "analyze-screenshot":
163
- return this.handleAnalyzeScreenshot(params);
164
- case "describe-diagram":
165
- return this.handleDescribeDiagram(params);
166
- case "review-ui-mockup":
167
- return this.handleReviewUIMockup(params);
168
- case "extract-visual-specs":
169
- return this.handleExtractVisualSpecs(params);
170
- case "compare-designs":
171
- return this.handleCompareDesigns(params);
172
- default:
173
- throw new Error(`Unknown tool: ${name}`);
174
- }
175
- }
176
- catch (error) {
177
- return {
178
- content: [{ type: "text", text: `Error: ${error}` }],
179
- isError: true,
180
- };
181
- }
182
- });
144
+ },
145
+ ];
146
+ this.handlers = {
147
+ "analyze-screenshot": async (args) => this.handleAnalyzeScreenshot(args),
148
+ "describe-diagram": async (args) => this.handleDescribeDiagram(args),
149
+ "review-ui-mockup": async (args) => this.handleReviewUIMockup(args),
150
+ "extract-visual-specs": async (args) => this.handleExtractVisualSpecs(args),
151
+ "compare-designs": async (args) => this.handleCompareDesigns(args),
152
+ };
153
+ this.setupToolHandlers();
183
154
  }
184
155
  /* --------------------------------------------------------------------------
185
156
  * Tool Handlers
@@ -1048,13 +1019,6 @@ class MultimodalLookerServer {
1048
1019
  }
1049
1020
  return recommendations;
1050
1021
  }
1051
- /* --------------------------------------------------------------------------
1052
- * Server Lifecycle
1053
- * -------------------------------------------------------------------------- */
1054
- async run() {
1055
- const transport = new StdioServerTransport();
1056
- await this.server.connect(transport);
1057
- }
1058
1022
  }
1059
1023
  const entryPoint = fs.realpathSync(process.argv[1] ?? "");
1060
1024
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
@@ -4,144 +4,105 @@
4
4
  * Knowledge skill for performance analysis, optimization recommendations,
5
5
  * profiling, benchmarking, memory analysis, and Core Web Vitals measurement
6
6
  */
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
7
  import { frameworkLogger, generateJobId } from "../../core/framework-logger.js";
11
- import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
12
8
  import fs from "fs";
13
9
  import path from "path";
14
- class XrayPerformanceOptimizationServer {
15
- server;
16
- startTime;
10
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
11
+ class XrayPerformanceOptimizationServer extends XrayKnowledgeSkillBase {
17
12
  constructor() {
18
- this.server = new Server({
19
- name: "performance-optimization", version: "3.1.0",
20
- }, {
21
- capabilities: {
22
- tools: {},
13
+ super("performance-optimization", "3.1.0");
14
+ this.tools = [
15
+ {
16
+ name: "profile-application",
17
+ description: "Run comprehensive performance profiling on the codebase to identify bottlenecks and hot paths",
18
+ inputSchema: {
19
+ type: "object",
20
+ properties: {
21
+ projectRoot: { type: "string", description: "Path to the project root directory" },
22
+ scope: {
23
+ type: "string",
24
+ enum: ["full", "runtime", "build", "memory"],
25
+ default: "full",
26
+ description: "Scope of profiling analysis"
27
+ },
28
+ duration: { type: "number", default: 30, description: "Profiling duration in seconds" },
29
+ includeHotPaths: { type: "boolean", default: true, description: "Include hot path analysis" }
30
+ },
31
+ required: ["projectRoot"]
32
+ }
23
33
  },
24
- });
25
- this.startTime = Date.now();
26
- this.setupToolHandlers();
27
- }
28
- setupToolHandlers() {
29
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
30
- return {
31
- tools: [
32
- {
33
- name: "profile-application",
34
- description: "Run comprehensive performance profiling on the codebase to identify bottlenecks and hot paths",
35
- inputSchema: {
36
- type: "object",
37
- properties: {
38
- projectRoot: { type: "string", description: "Path to the project root directory" },
39
- scope: {
40
- type: "string",
41
- enum: ["full", "runtime", "build", "memory"],
42
- default: "full",
43
- description: "Scope of profiling analysis"
44
- },
45
- duration: { type: "number", default: 30, description: "Profiling duration in seconds" },
46
- includeHotPaths: { type: "boolean", default: true, description: "Include hot path analysis" }
47
- },
48
- required: ["projectRoot"]
49
- }
34
+ {
35
+ name: "analyze-memory",
36
+ description: "Perform memory leak detection and heap analysis to identify memory issues",
37
+ inputSchema: {
38
+ type: "object",
39
+ properties: {
40
+ projectRoot: { type: "string", description: "Path to the project root directory" },
41
+ heapSnapshot: { type: "boolean", default: true, description: "Generate heap snapshot analysis" },
42
+ gcAnalysis: { type: "boolean", default: true, description: "Analyze garbage collection patterns" },
43
+ leakDetection: { type: "boolean", default: true, description: "Detect potential memory leaks" }
50
44
  },
51
- {
52
- name: "analyze-memory",
53
- description: "Perform memory leak detection and heap analysis to identify memory issues",
54
- inputSchema: {
55
- type: "object",
56
- properties: {
57
- projectRoot: { type: "string", description: "Path to the project root directory" },
58
- heapSnapshot: { type: "boolean", default: true, description: "Generate heap snapshot analysis" },
59
- gcAnalysis: { type: "boolean", default: true, description: "Analyze garbage collection patterns" },
60
- leakDetection: { type: "boolean", default: true, description: "Detect potential memory leaks" }
61
- },
62
- required: ["projectRoot"]
63
- }
45
+ required: ["projectRoot"]
46
+ }
47
+ },
48
+ {
49
+ name: "benchmark-code",
50
+ description: "Execute and compare benchmark results for code performance measurement",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: {
54
+ projectRoot: { type: "string", description: "Path to the project root directory" },
55
+ testFile: { type: "string", description: "Specific benchmark test file to run" },
56
+ iterations: { type: "number", default: 100, description: "Number of benchmark iterations" },
57
+ warmupRuns: { type: "number", default: 10, description: "Number of warmup runs" },
58
+ compareBaseline: { type: "boolean", default: false, description: "Compare results against baseline" }
64
59
  },
65
- {
66
- name: "benchmark-code",
67
- description: "Execute and compare benchmark results for code performance measurement",
68
- inputSchema: {
69
- type: "object",
70
- properties: {
71
- projectRoot: { type: "string", description: "Path to the project root directory" },
72
- testFile: { type: "string", description: "Specific benchmark test file to run" },
73
- iterations: { type: "number", default: 100, description: "Number of benchmark iterations" },
74
- warmupRuns: { type: "number", default: 10, description: "Number of warmup runs" },
75
- compareBaseline: { type: "boolean", default: false, description: "Compare results against baseline" }
76
- },
77
- required: ["projectRoot"]
78
- }
60
+ required: ["projectRoot"]
61
+ }
62
+ },
63
+ {
64
+ name: "suggest-optimizations",
65
+ description: "Generate specific, actionable optimization suggestions based on code analysis",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ projectRoot: { type: "string", description: "Path to the project root directory" },
70
+ focus: {
71
+ type: "string",
72
+ enum: ["cpu", "memory", "network", "io", "all"],
73
+ default: "all",
74
+ description: "Focus area for optimizations"
75
+ },
76
+ threshold: { type: "number", default: 100, description: "Performance threshold in ms" }
79
77
  },
80
- {
81
- name: "suggest-optimizations",
82
- description: "Generate specific, actionable optimization suggestions based on code analysis",
83
- inputSchema: {
84
- type: "object",
85
- properties: {
86
- projectRoot: { type: "string", description: "Path to the project root directory" },
87
- focus: {
88
- type: "string",
89
- enum: ["cpu", "memory", "network", "io", "all"],
90
- default: "all",
91
- description: "Focus area for optimizations"
92
- },
93
- threshold: { type: "number", default: 100, description: "Performance threshold in ms" }
94
- },
95
- required: ["projectRoot"]
96
- }
78
+ required: ["projectRoot"]
79
+ }
80
+ },
81
+ {
82
+ name: "measure-core-web-vitals",
83
+ description: "Analyze Core Web Vitals metrics (LCP, INP, CLS) for web application performance",
84
+ inputSchema: {
85
+ type: "object",
86
+ properties: {
87
+ projectRoot: { type: "string", description: "Path to the project root directory" },
88
+ analyzeBundle: { type: "boolean", default: true, description: "Analyze JavaScript bundle" },
89
+ checkAccessibility: { type: "boolean", default: true, description: "Check accessibility factors affecting CLS" },
90
+ measureLCP: { type: "boolean", default: true, description: "Measure Largest Contentful Paint" },
91
+ measureINP: { type: "boolean", default: true, description: "Measure Interaction to Next Paint" },
92
+ measureCLS: { type: "boolean", default: true, description: "Measure Cumulative Layout Shift" }
97
93
  },
98
- {
99
- name: "measure-core-web-vitals",
100
- description: "Analyze Core Web Vitals metrics (LCP, INP, CLS) for web application performance",
101
- inputSchema: {
102
- type: "object",
103
- properties: {
104
- projectRoot: { type: "string", description: "Path to the project root directory" },
105
- analyzeBundle: { type: "boolean", default: true, description: "Analyze JavaScript bundle" },
106
- checkAccessibility: { type: "boolean", default: true, description: "Check accessibility factors affecting CLS" },
107
- measureLCP: { type: "boolean", default: true, description: "Measure Largest Contentful Paint" },
108
- measureINP: { type: "boolean", default: true, description: "Measure Interaction to Next Paint" },
109
- measureCLS: { type: "boolean", default: true, description: "Measure Cumulative Layout Shift" }
110
- },
111
- required: ["projectRoot"]
112
- }
113
- }
114
- ]
115
- };
116
- });
117
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
118
- const { name, arguments: args } = request.params;
119
- try {
120
- switch (name) {
121
- case "profile-application":
122
- return await this.handleProfileApplication(args);
123
- case "analyze-memory":
124
- return await this.handleAnalyzeMemory(args);
125
- case "benchmark-code":
126
- return await this.handleBenchmarkCode(args);
127
- case "suggest-optimizations":
128
- return await this.handleSuggestOptimizations(args);
129
- case "measure-core-web-vitals":
130
- return await this.handleMeasureCoreWebVitals(args);
131
- default:
132
- throw new Error(`Unknown tool: ${name}`);
94
+ required: ["projectRoot"]
133
95
  }
134
96
  }
135
- catch (error) {
136
- frameworkLogger.log("mcp/performance-optimization", "tool-handler", "error", { tool: name, error: String(error) });
137
- return {
138
- content: [{
139
- type: "text",
140
- text: `Error executing tool "${name}": ${error instanceof Error ? error.message : String(error)}`
141
- }]
142
- };
143
- }
144
- });
97
+ ];
98
+ this.handlers = {
99
+ "profile-application": async (args) => this.handleProfileApplication(args),
100
+ "analyze-memory": async (args) => this.handleAnalyzeMemory(args),
101
+ "benchmark-code": async (args) => this.handleBenchmarkCode(args),
102
+ "suggest-optimizations": async (args) => this.handleSuggestOptimizations(args),
103
+ "measure-core-web-vitals": async (args) => this.handleMeasureCoreWebVitals(args),
104
+ };
105
+ this.setupToolHandlers();
145
106
  }
146
107
  async handleProfileApplication(args) {
147
108
  const { projectRoot, scope = "full", duration = 30, includeHotPaths = true } = args;
@@ -1566,17 +1527,6 @@ ${result.recommendations.slice(0, 5).map((r, i) => `${i + 1}. ${r}`).join("\n")
1566
1527
  }
1567
1528
  return files.slice(0, 100);
1568
1529
  }
1569
- async run() {
1570
- const transport = new StdioServerTransport();
1571
- await this.server.connect(transport);
1572
- createGracefulShutdown({
1573
- serverName: "performance-optimization.server",
1574
- server: this.server,
1575
- });
1576
- frameworkLogger.log("mcp/performance-optimization", "server-started", "info", {
1577
- uptime: Date.now() - this.startTime
1578
- });
1579
- }
1580
1530
  }
1581
1531
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
1582
1532
  const server = new XrayPerformanceOptimizationServer();