0xray 3.1.0 → 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 (437) hide show
  1. package/.gitignore.default +59 -0
  2. package/.mcp.json +35 -0
  3. package/.opencode/codex.codex +1 -1
  4. package/.opencode/commands/auto-format.md +3 -3
  5. package/.opencode/commands/auto-summary-capture.md +2 -2
  6. package/.opencode/commands/dependency-audit.md +3 -3
  7. package/.opencode/commands/enforcer-daily-scan.md +3 -3
  8. package/.opencode/commands/framework-compliance-audit.md +4 -4
  9. package/.opencode/commands/interactive-validator.md +2 -2
  10. package/.opencode/commands/job-summary-logger.md +2 -2
  11. package/.opencode/commands/mode-switch.md +1 -1
  12. package/.opencode/commands/model-health-check.md +2 -2
  13. package/.opencode/commands/performance-analysis.md +2 -2
  14. package/.opencode/commands/pre-commit-introspection.md +3 -3
  15. package/.opencode/commands/security-scan.md +3 -3
  16. package/.opencode/commands/sisyphus-validation.md +3 -3
  17. package/.opencode/commands/summary-logger.md +6 -6
  18. package/.opencode/enforcer-config.json +2 -2
  19. package/.opencode/hooks/post-commit +1 -1
  20. package/.opencode/init.sh +6 -0
  21. package/.plugin/plugin.json +11 -0
  22. package/AGENTS-consumer.md +46 -0
  23. package/AGENTS.md +2 -12
  24. package/LICENSE +1 -1
  25. package/README.md +6 -6
  26. package/SKILLS.md +140 -0
  27. package/dist/.gitignore.default +59 -0
  28. package/dist/AGENTS.md +2 -12
  29. package/dist/CHANGELOG.md +54 -0
  30. package/dist/LICENSE +1 -1
  31. package/dist/README.md +6 -6
  32. package/dist/SKILLS.md +140 -0
  33. package/dist/agents/index.js +3 -1
  34. package/dist/agents/registry.js +13 -0
  35. package/dist/analytics/consent-manager.js +0 -1
  36. package/dist/analytics/emerging-pattern-detector.js +0 -1
  37. package/dist/analytics/pattern-learning-engine.js +0 -1
  38. package/dist/analytics/pattern-performance-tracker.js +0 -1
  39. package/dist/analytics/predictive-analytics.js +0 -1
  40. package/dist/analytics/prompt-pattern-analyzer.js +0 -1
  41. package/dist/analytics/routing-performance-analyzer.js +0 -1
  42. package/dist/analytics/routing-refiner.js +1 -2
  43. package/dist/analytics/simple-pattern-analyzer.js +0 -1
  44. package/dist/architect/architectural-integrity.js +3 -3
  45. package/dist/benchmark/performance-benchmark.js +1 -2
  46. package/dist/cli/commands/antigravity-status.js +23 -23
  47. package/dist/cli/commands/archive-logs.js +0 -1
  48. package/dist/cli/commands/credible-init.js +1 -1
  49. package/dist/cli/commands/hermes-install.js +8 -0
  50. package/dist/cli/commands/mcp-install.js +1 -1
  51. package/dist/cli/commands/openclaw-install.js +9 -0
  52. package/dist/cli/commands/opencode-install.js +35 -0
  53. package/dist/cli/commands/plugin-commands.js +0 -1
  54. package/dist/cli/commands/skill-install.js +39 -2
  55. package/dist/cli/commands/status.js +16 -13
  56. package/dist/cli/commands/storyteller.js +1 -1
  57. package/dist/cli/index.js +14 -13
  58. package/dist/core/activity-logger.js +4 -5
  59. package/dist/core/adaptive-kernel.js +0 -1
  60. package/dist/core/agent-spawn-gate.js +1 -1
  61. package/dist/core/boot-orchestrator.js +14 -25
  62. package/dist/core/bridge.mjs +4 -5
  63. package/dist/core/codex-formatter.js +1 -3
  64. package/dist/core/codex-injector.js +3 -4
  65. package/dist/core/config-loader.js +36 -29
  66. package/dist/core/config-paths.js +30 -23
  67. package/dist/core/context-loader.js +0 -4
  68. package/dist/core/context-validator.js +0 -1
  69. package/dist/core/features-config.js +38 -2
  70. package/dist/core/index.js +2 -2
  71. package/dist/core/kernel-patterns.js +0 -1
  72. package/dist/core/logging-config.js +7 -7
  73. package/dist/core/model-router.js +23 -64
  74. package/dist/core/orchestrator.js +1 -1
  75. package/dist/core/system-prompt-generator.js +0 -1
  76. package/dist/core/xray-activation.js +3 -4
  77. package/dist/delegation/agent-delegator.js +2 -3
  78. package/dist/delegation/agent-expertise.js +0 -1
  79. package/dist/delegation/analytics/index.js +0 -1
  80. package/dist/delegation/analytics/learning-engine.js +0 -1
  81. package/dist/delegation/analytics/outcome-tracker.js +0 -1
  82. package/dist/delegation/analytics/routing-analytics.js +0 -1
  83. package/dist/delegation/ast-code-parser.js +0 -1
  84. package/dist/delegation/complexity-analyzer.js +0 -1
  85. package/dist/delegation/dependency-graph-builder.js +0 -1
  86. package/dist/delegation/index.js +0 -1
  87. package/dist/delegation/metrics-aggregator.js +0 -1
  88. package/dist/delegation/session-coordinator.js +0 -1
  89. package/dist/delegation/strategy-selector.js +0 -1
  90. package/dist/delegation/voting-coordinator.js +0 -1
  91. package/dist/delegation/voting-types.js +0 -1
  92. package/dist/delegation/weighted-voting-aggregator.js +0 -1
  93. package/dist/enforcement/core/index.js +0 -1
  94. package/dist/enforcement/core/rule-executor.js +0 -1
  95. package/dist/enforcement/core/rule-hierarchy.js +0 -1
  96. package/dist/enforcement/core/rule-registry.js +0 -1
  97. package/dist/enforcement/core/violation-fixer.js +0 -1
  98. package/dist/enforcement/enforcer-tools.js +2 -2
  99. package/dist/enforcement/index.js +0 -1
  100. package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
  101. package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
  102. package/dist/enforcement/loaders/base-loader.js +0 -1
  103. package/dist/enforcement/loaders/codex-loader.js +2 -3
  104. package/dist/enforcement/loaders/index.js +0 -1
  105. package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
  106. package/dist/enforcement/loaders/processor-loader.js +0 -1
  107. package/dist/enforcement/types.js +0 -1
  108. package/dist/enforcement/validators/architecture-validators.js +0 -1
  109. package/dist/enforcement/validators/base-validator.js +0 -1
  110. package/dist/enforcement/validators/code-quality-validators.js +0 -1
  111. package/dist/enforcement/validators/index.js +0 -1
  112. package/dist/enforcement/validators/security-validators.js +0 -1
  113. package/dist/enforcement/validators/testing-validators.js +0 -1
  114. package/dist/enforcement/validators/validator-registry.js +0 -1
  115. package/dist/execution/opencode-cli-invoker.js +1 -1
  116. package/dist/governance/codex-policy.service.js +0 -1
  117. package/dist/governance/governance-service.js +1 -1
  118. package/dist/governance/llm-governance-provider.js +14 -1
  119. package/dist/index.js +3 -5
  120. package/dist/inference/inference-agent-invoker.js +67 -0
  121. package/dist/inference/inference-applier.js +178 -0
  122. package/dist/inference/inference-cycle.js +52 -828
  123. package/dist/inference/inference-proposal-generator.js +149 -0
  124. package/dist/infrastructure/iac-validator.js +465 -0
  125. package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
  126. package/dist/integrations/base/ExampleIntegration.js +0 -1
  127. package/dist/integrations/base/Integration.js +0 -1
  128. package/dist/integrations/base/README.md +1 -1
  129. package/dist/integrations/base/index.js +0 -1
  130. package/dist/integrations/base/registry.js +0 -1
  131. package/dist/integrations/base/types.js +0 -1
  132. package/dist/integrations/enforcement-gate.js +5 -5
  133. package/dist/integrations/governance/governance-client.js +0 -1
  134. package/dist/integrations/governance/index.js +11 -19
  135. package/dist/integrations/governance/types.js +0 -1
  136. package/dist/integrations/grok/grok-cli.js +20 -6
  137. package/dist/integrations/grok/hooks/pre-tool-use.js +3 -3
  138. package/dist/integrations/grok/plugin/0xray/.mcp.json +16 -4
  139. package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  140. package/dist/integrations/hermes-agent/__init__.py +29 -14
  141. package/dist/integrations/hermes-agent/bridge.mjs +76 -4
  142. package/dist/integrations/hermes-agent/schemas.py +49 -0
  143. package/dist/integrations/hermes-agent/test_plugin.py +7 -7
  144. package/dist/integrations/hermes-agent/tools.py +107 -3
  145. package/dist/integrations/openclaw/README.md +6 -6
  146. package/dist/integrations/openclaw/api-server.js +0 -1
  147. package/dist/integrations/openclaw/client.js +0 -1
  148. package/dist/integrations/openclaw/config.js +1 -2
  149. package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -1
  150. package/dist/integrations/openclaw/index.js +2 -3
  151. package/dist/integrations/openclaw/types.js +3 -4
  152. package/dist/integrations/plugins/index.js +0 -1
  153. package/dist/integrations/plugins/plugin-integration.js +1 -2
  154. package/dist/integrations/plugins/plugin-registry.js +1 -2
  155. package/dist/mcps/agent-resolver.js +0 -1
  156. package/dist/mcps/architect-tools.server.js +121 -186
  157. package/dist/mcps/auto-format.server.js +57 -75
  158. package/dist/mcps/boot-orchestrator.server.js +68 -86
  159. package/dist/mcps/config/config-loader.js +46 -9
  160. package/dist/mcps/config/plugin-server-registry.js +0 -1
  161. package/dist/mcps/enforcer-tools.server.js +208 -274
  162. package/dist/mcps/estimation.server.js +65 -108
  163. package/dist/mcps/framework-compliance-audit.server.js +53 -82
  164. package/dist/mcps/framework-help.server.js +73 -90
  165. package/dist/mcps/governance.server.js +104 -152
  166. package/dist/mcps/knowledge-skills/api-design.server.js +35 -66
  167. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +35 -66
  168. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +125 -165
  169. package/dist/mcps/knowledge-skills/code-analyzer.server.js +211 -238
  170. package/dist/mcps/knowledge-skills/code-review.server.js +109 -143
  171. package/dist/mcps/knowledge-skills/content-creator.server.js +205 -227
  172. package/dist/mcps/knowledge-skills/database-design.server.js +117 -151
  173. package/dist/mcps/knowledge-skills/devops-deployment.server.js +125 -158
  174. package/dist/mcps/knowledge-skills/git-workflow.server.js +36 -68
  175. package/dist/mcps/knowledge-skills/growth-strategist.server.js +303 -325
  176. package/dist/mcps/knowledge-skills/log-monitor.server.js +141 -161
  177. package/dist/mcps/knowledge-skills/mobile-development.server.js +172 -202
  178. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +124 -160
  179. package/dist/mcps/knowledge-skills/performance-optimization.server.js +89 -139
  180. package/dist/mcps/knowledge-skills/project-analysis.server.js +132 -219
  181. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +117 -151
  182. package/dist/mcps/knowledge-skills/security-audit.server.js +17 -144
  183. package/dist/mcps/knowledge-skills/seo-consultant.server.js +22 -214
  184. package/dist/mcps/knowledge-skills/session-management.server.js +15 -91
  185. package/dist/mcps/knowledge-skills/skill-invocation.server.js +83 -359
  186. package/dist/mcps/knowledge-skills/strategist.server.js +12 -57
  187. package/dist/mcps/knowledge-skills/tech-writer.server.js +18 -193
  188. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +20 -192
  189. package/dist/mcps/knowledge-skills/testing-strategy.server.js +19 -157
  190. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +24 -297
  191. package/dist/mcps/lint.server.js +51 -92
  192. package/dist/mcps/model-health-check.server.js +34 -61
  193. package/dist/mcps/orchestrator/aside-context.js +207 -0
  194. package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
  195. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  196. package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
  197. package/dist/mcps/orchestrator/index.js +5 -0
  198. package/dist/mcps/orchestrator/server.js +65 -9
  199. package/dist/mcps/orchestrator.server.js +2 -1
  200. package/dist/mcps/performance-analysis.server.js +57 -88
  201. package/dist/mcps/processor-pipeline.server.js +70 -100
  202. package/dist/mcps/registry.json +1 -1
  203. package/dist/mcps/researcher.server.js +81 -154
  204. package/dist/mcps/security-scan.server.js +57 -71
  205. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  206. package/dist/mcps/state-manager.server.js +127 -155
  207. package/dist/metrics/agent-metrics.js +1 -1
  208. package/dist/monitoring/nudge-watchdog.js +0 -1
  209. package/dist/nucleus/default-plugins.js +13 -19
  210. package/dist/nucleus/index.js +0 -1
  211. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  212. package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
  213. package/dist/orchestrator/intelligent-commit-batcher.js +2 -11
  214. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +1 -2
  215. package/dist/orchestrator/orchestrator.js +8 -19
  216. package/dist/orchestrator/self-direction-activation.js +0 -1
  217. package/dist/orchestrator/universal-registry-bridge.js +1 -2
  218. package/dist/performance/performance-budget-enforcer.js +0 -1
  219. package/dist/performance/performance-regression-tester.js +0 -1
  220. package/dist/plugin/plugin-codex-context.js +87 -0
  221. package/dist/plugin/plugin-helpers.js +155 -0
  222. package/dist/plugin/plugin-logger.js +46 -0
  223. package/dist/plugin/plugin-modules.js +144 -0
  224. package/dist/plugin/plugin-quality-gate.js +88 -0
  225. package/dist/plugin/plugin-types.js +1 -0
  226. package/dist/plugin/xray-codex-injection.js +39 -558
  227. package/dist/postprocessor/PostProcessor.js +7 -13
  228. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  229. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  230. package/dist/postprocessor/integration.js +194 -0
  231. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  232. package/dist/postprocessor/metamorphosis/index.js +1 -0
  233. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  234. package/dist/postprocessor/services/RegressionAnalysisService.js +2 -3
  235. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  236. package/dist/postprocessor/triggers/GitHookTrigger.js +4 -4
  237. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  238. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  239. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  240. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  241. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  242. package/dist/processors/implementations/inference-improvement-processor.js +2 -10
  243. package/dist/processors/implementations/log-protection-processor.js +0 -1
  244. package/dist/processors/implementations/nudge-processor.js +0 -1
  245. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  246. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  247. package/dist/processors/implementations/publish-preflight-processor.js +4 -13
  248. package/dist/processors/implementations/session-summary-processor.js +8 -16
  249. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  250. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -29
  251. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  252. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  253. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  254. package/dist/processors/processor-interfaces.js +0 -1
  255. package/dist/processors/processor-types.js +0 -1
  256. package/dist/public/about.html +6 -6
  257. package/dist/public/enterprise.html +1 -1
  258. package/dist/public/features.html +2 -2
  259. package/dist/public/index.html +4 -4
  260. package/dist/reporting/report-formatter.js +1 -1
  261. package/dist/scripts/activate-kernel-pipeline.js +2 -2
  262. package/dist/scripts/integration.js +0 -1
  263. package/dist/scripts/pre-command +1 -1
  264. package/dist/security/comprehensive-security-audit.js +0 -1
  265. package/dist/security/security-agent-coordinator.js +0 -1
  266. package/dist/security/security-auditor.js +0 -1
  267. package/dist/security/security-hardener.js +0 -1
  268. package/dist/security/security-hardening-system.js +0 -1
  269. package/dist/security/security-headers.js +0 -1
  270. package/dist/security/security-orchestration-layer.js +0 -1
  271. package/dist/services/inference-tuner.js +1 -2
  272. package/dist/session/session-cleanup-manager.js +0 -1
  273. package/dist/session/session-monitor.js +0 -1
  274. package/dist/session/session-state-manager.js +0 -1
  275. package/dist/skills/api-design/SKILL.md +1 -1
  276. package/dist/skills/architect-tools/SKILL.md +1 -1
  277. package/dist/skills/architecture-patterns/SKILL.md +1 -1
  278. package/dist/skills/auto-format/SKILL.md +1 -1
  279. package/dist/skills/boot-orchestrator/SKILL.md +1 -1
  280. package/dist/skills/bug-triage/SKILL.md +1 -1
  281. package/dist/skills/code-analyzer/SKILL.md +1 -1
  282. package/dist/skills/code-review/SKILL.md +1 -1
  283. package/dist/skills/enforcer/SKILL.md +1 -1
  284. package/dist/skills/framework-compliance-audit/SKILL.md +1 -1
  285. package/dist/skills/git-workflow/SKILL.md +1 -1
  286. package/dist/skills/hermes-agent/SKILL.md +2 -2
  287. package/dist/skills/inference-improve/SKILL.md +1 -1
  288. package/dist/skills/lint/SKILL.md +1 -1
  289. package/dist/skills/log-monitor/SKILL.md +1 -1
  290. package/dist/skills/model-health-check/SKILL.md +1 -1
  291. package/dist/skills/multimodal-looker/SKILL.md +1 -1
  292. package/dist/skills/orchestrator/SKILL.md +1 -1
  293. package/dist/skills/performance-analysis/SKILL.md +1 -1
  294. package/dist/skills/performance-optimization/SKILL.md +1 -1
  295. package/dist/skills/processor-pipeline/SKILL.md +1 -1
  296. package/dist/skills/project-analysis/SKILL.md +1 -1
  297. package/dist/skills/refactoring-strategies/SKILL.md +1 -1
  298. package/dist/skills/registry.json +1 -1
  299. package/dist/skills/researcher/SKILL.md +1 -1
  300. package/dist/skills/security-audit/SKILL.md +1 -1
  301. package/dist/skills/security-scan/SKILL.md +1 -1
  302. package/dist/skills/session-management/SKILL.md +1 -1
  303. package/dist/skills/state-manager/SKILL.md +1 -1
  304. package/dist/skills/storyteller/SKILL.md +1 -1
  305. package/dist/skills/testing-best-practices/SKILL.md +1 -1
  306. package/dist/skills/testing-strategy/SKILL.md +1 -1
  307. package/dist/skills/ui-ux-design/SKILL.md +1 -1
  308. package/dist/skills/xray-orchestrator/index.js +0 -1
  309. package/dist/state/index.js +0 -1
  310. package/dist/state/state-manager.js +1 -2
  311. package/dist/utils/codex-parser.js +0 -1
  312. package/dist/utils/import-resolver.js +1 -1
  313. package/dist/utils/language-detector.js +0 -1
  314. package/dist/utils/path-resolver.js +2 -2
  315. package/dist/utils/shutdown-handler.js +0 -1
  316. package/dist/validation/agent-config-validator.js +280 -0
  317. package/dist/validation/orchestration-flow-validator.js +606 -0
  318. package/package.json +10 -3
  319. package/scripts/hooks/pre-command +1 -1
  320. package/scripts/hooks/run-hook.js +2 -2
  321. package/scripts/node/auto-reflection-generator.mjs +30 -36
  322. package/scripts/node/govern-reflection.mjs +1 -1
  323. package/scripts/node/postinstall.cjs +37 -2
  324. package/scripts/node/release.mjs +2 -2
  325. package/scripts/node/setup-xai-oauth.mjs +244 -0
  326. package/scripts/node/setup.cjs +28 -0
  327. package/scripts/node/universal-version-manager.js +8 -8
  328. package/scripts/node/version-manager.mjs +1 -1
  329. package/src/integrations/grok/plugin/0xray/.mcp.json +16 -4
  330. package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  331. package/src/mcps/agent-resolver.ts +0 -1
  332. package/src/mcps/architect-tools.server.ts +130 -212
  333. package/src/mcps/auto-format.server.ts +75 -104
  334. package/src/mcps/boot-orchestrator.server.ts +72 -97
  335. package/src/mcps/config/__tests__/config-loader.test.ts +33 -37
  336. package/src/mcps/config/config-loader.ts +57 -11
  337. package/src/mcps/config/plugin-server-registry.ts +0 -1
  338. package/src/mcps/enforcer-tools.server.ts +218 -295
  339. package/src/mcps/estimation.server.ts +64 -123
  340. package/src/mcps/framework-compliance-audit.server.ts +54 -96
  341. package/src/mcps/framework-help.server.ts +76 -97
  342. package/src/mcps/governance.server.ts +104 -164
  343. package/src/mcps/knowledge-skills/api-design.server.ts +35 -73
  344. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +34 -73
  345. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +149 -194
  346. package/src/mcps/knowledge-skills/code-analyzer.server.ts +223 -255
  347. package/src/mcps/knowledge-skills/code-review.server.ts +116 -158
  348. package/src/mcps/knowledge-skills/content-creator.server.ts +221 -248
  349. package/src/mcps/knowledge-skills/database-design.server.ts +120 -161
  350. package/src/mcps/knowledge-skills/devops-deployment.server.ts +128 -168
  351. package/src/mcps/knowledge-skills/git-workflow.server.ts +34 -78
  352. package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -362
  353. package/src/mcps/knowledge-skills/log-monitor.server.ts +70 -97
  354. package/src/mcps/knowledge-skills/mobile-development.server.ts +18 -58
  355. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +15 -61
  356. package/src/mcps/knowledge-skills/performance-optimization.server.ts +14 -75
  357. package/src/mcps/knowledge-skills/project-analysis.server.ts +14 -121
  358. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +15 -61
  359. package/src/mcps/knowledge-skills/security-audit.server.ts +20 -158
  360. package/src/mcps/knowledge-skills/seo-consultant.server.ts +25 -228
  361. package/src/mcps/knowledge-skills/session-management.server.ts +19 -107
  362. package/src/mcps/knowledge-skills/skill-invocation.server.ts +89 -380
  363. package/src/mcps/knowledge-skills/strategist.server.ts +15 -65
  364. package/src/mcps/knowledge-skills/tech-writer.server.ts +21 -206
  365. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +23 -205
  366. package/src/mcps/knowledge-skills/testing-strategy.server.ts +22 -166
  367. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +27 -343
  368. package/src/mcps/lint.server.ts +53 -106
  369. package/src/mcps/model-health-check.server.ts +35 -71
  370. package/src/mcps/orchestrator/aside-context.ts +245 -0
  371. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  372. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  373. package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
  374. package/src/mcps/orchestrator/index.ts +29 -0
  375. package/src/mcps/orchestrator/server.ts +81 -25
  376. package/src/mcps/orchestrator/types.ts +37 -0
  377. package/src/mcps/orchestrator.server.ts +2 -1
  378. package/src/mcps/performance-analysis.server.ts +60 -103
  379. package/src/mcps/processor-pipeline.server.ts +72 -109
  380. package/src/mcps/registry.json +1 -1
  381. package/src/mcps/researcher.server.ts +88 -176
  382. package/src/mcps/security-scan.server.ts +58 -77
  383. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  384. package/src/mcps/state-manager.server.ts +132 -172
  385. package/src/opencode/codex.codex +1 -1
  386. package/src/opencode/commands/auto-format.md +3 -3
  387. package/src/opencode/commands/auto-summary-capture.md +2 -2
  388. package/src/opencode/commands/dependency-audit.md +3 -3
  389. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  390. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  391. package/src/opencode/commands/interactive-validator.md +2 -2
  392. package/src/opencode/commands/job-summary-logger.md +2 -2
  393. package/src/opencode/commands/mode-switch.md +1 -1
  394. package/src/opencode/commands/model-health-check.md +2 -2
  395. package/src/opencode/commands/performance-analysis.md +2 -2
  396. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  397. package/src/opencode/commands/security-scan.md +3 -3
  398. package/src/opencode/commands/sisyphus-validation.md +3 -3
  399. package/src/opencode/commands/summary-logger.md +6 -6
  400. package/src/opencode/enforcer-config.json +2 -2
  401. package/src/skills/api-design/SKILL.md +1 -1
  402. package/src/skills/architect-tools/SKILL.md +1 -1
  403. package/src/skills/architecture-patterns/SKILL.md +1 -1
  404. package/src/skills/auto-format/SKILL.md +1 -1
  405. package/src/skills/boot-orchestrator/SKILL.md +1 -1
  406. package/src/skills/bug-triage/SKILL.md +1 -1
  407. package/src/skills/code-analyzer/SKILL.md +1 -1
  408. package/src/skills/code-review/SKILL.md +1 -1
  409. package/src/skills/enforcer/SKILL.md +1 -1
  410. package/src/skills/framework-compliance-audit/SKILL.md +1 -1
  411. package/src/skills/git-workflow/SKILL.md +1 -1
  412. package/src/skills/hermes-agent/SKILL.md +2 -2
  413. package/src/skills/inference-improve/SKILL.md +1 -1
  414. package/src/skills/lint/SKILL.md +1 -1
  415. package/src/skills/log-monitor/SKILL.md +1 -1
  416. package/src/skills/model-health-check/SKILL.md +1 -1
  417. package/src/skills/multimodal-looker/SKILL.md +1 -1
  418. package/src/skills/orchestrator/SKILL.md +1 -1
  419. package/src/skills/performance-analysis/SKILL.md +1 -1
  420. package/src/skills/performance-optimization/SKILL.md +1 -1
  421. package/src/skills/processor-pipeline/SKILL.md +1 -1
  422. package/src/skills/project-analysis/SKILL.md +1 -1
  423. package/src/skills/refactoring-strategies/SKILL.md +1 -1
  424. package/src/skills/registry.json +1 -1
  425. package/src/skills/researcher/SKILL.md +1 -1
  426. package/src/skills/security-audit/SKILL.md +1 -1
  427. package/src/skills/security-scan/SKILL.md +1 -1
  428. package/src/skills/session-management/SKILL.md +1 -1
  429. package/src/skills/state-manager/SKILL.md +1 -1
  430. package/src/skills/storyteller/SKILL.md +1 -1
  431. package/src/skills/testing-best-practices/SKILL.md +1 -1
  432. package/src/skills/testing-strategy/SKILL.md +1 -1
  433. package/src/skills/ui-ux-design/SKILL.md +1 -1
  434. package/src/skills/xray-orchestrator/index.ts +0 -1
  435. package/xray/agents_template.md +46 -0
  436. package/xray/codex.json +598 -0
  437. package/dist/nucleus/orchestrator.js +0 -479
@@ -5,16 +5,10 @@
5
5
  * and testing methodology recommendations
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 * as path from "path";
16
10
  import { frameworkLogger } from "../../core/framework-logger.js";
17
- import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
11
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
18
12
  import {
19
13
  detectProjectLanguage,
20
14
  LANGUAGE_CONFIGS,
@@ -129,160 +123,31 @@ interface BaseTestCounts {
129
123
  security: number;
130
124
  }
131
125
 
132
- class XrayTestingStrategyServer {
133
- private server: Server;
126
+ class XrayTestingStrategyServer extends XrayKnowledgeSkillBase {
134
127
 
135
128
  constructor() {
136
- this.server = new Server(
137
- {
138
- name: "testing-strategy", version: "1.22.67",
139
- },
140
- {
141
- capabilities: {
142
- tools: {},
143
- },
144
- },
145
- );
129
+ super("testing-strategy", "3.1.0");
130
+
131
+ this.tools = [
132
+ { name: "analyze-test-coverage", description: "Analyze current test coverage and identify gaps", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, includeBreakdown: { type: "boolean", default: true }, coverageThreshold: { type: "number", default: 80 } }, required: ["projectRoot"] } },
133
+ { name: "design-test-strategy", description: "Design comprehensive testing strategy for the project", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, projectType: { type: "string", enum: ["web", "api", "mobile", "desktop"] }, complexity: { type: "string", enum: ["simple", "medium", "complex"] }, timeline: { type: "string", enum: ["agile", "waterfall", "continuous"] } }, required: ["projectRoot"] } },
134
+ { name: "identify-test-gaps", description: "Identify untested code and recommend test cases", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, sourceFiles: { type: "array", items: { type: "string" } }, existingTests: { type: "array", items: { type: "string" } } }, required: ["projectRoot"] } },
135
+ { name: "optimize-test-coverage", description: "Analyze and optimize test coverage patterns", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, currentCoverage: { type: "number" }, targetCoverage: { type: "number", default: 85 }, focusAreas: { type: "array", items: { type: "string" } } }, required: ["projectRoot"] } },
136
+ { name: "generate-test-file", description: "Generate test file for a source file with exports", inputSchema: { type: "object", properties: { sourceFile: { type: "string", description: "Path to source file" }, sourceContent: { type: "string", description: "Source file content" }, exports: { type: "array", items: { type: "object", properties: { name: { type: "string" }, type: { type: "string" } } }, description: "Exported functions/classes to test" }, testFilePath: { type: "string", description: "Path for generated test file" }, directory: { type: "string", description: "Project directory" } }, required: ["sourceFile", "sourceContent", "exports", "testFilePath"] } },
137
+ ];
138
+
139
+ this.handlers = {
140
+ "analyze-test-coverage": async (args) => this.analyzeTestCoverage(args as AnalyzeTestCoverageArgs),
141
+ "design-test-strategy": async (args) => this.designTestStrategy(args as DesignTestStrategyArgs),
142
+ "identify-test-gaps": async (args) => this.identifyTestGaps(args as IdentifyTestGapsArgs),
143
+ "optimize-test-coverage": async (args) => this.optimizeTestCoverage(args as OptimizeTestCoverageArgs),
144
+ "generate-test-file": async (args) => this.generateTestFile(args as GenerateTestFileArgs),
145
+ };
146
146
 
147
147
  this.setupToolHandlers();
148
- // Server initialization - removed unnecessary startup logging
149
148
  }
150
149
 
151
- private setupToolHandlers() {
152
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
153
- return {
154
- tools: [
155
- {
156
- name: "analyze-test-coverage",
157
- description: "Analyze current test coverage and identify gaps",
158
- inputSchema: {
159
- type: "object",
160
- properties: {
161
- projectRoot: { type: "string" },
162
- includeBreakdown: { type: "boolean", default: true },
163
- coverageThreshold: { type: "number", default: 80 },
164
- },
165
- required: ["projectRoot"],
166
- },
167
- },
168
- {
169
- name: "design-test-strategy",
170
- description:
171
- "Design comprehensive testing strategy for the project",
172
- inputSchema: {
173
- type: "object",
174
- properties: {
175
- projectRoot: { type: "string" },
176
- projectType: {
177
- type: "string",
178
- enum: ["web", "api", "mobile", "desktop"],
179
- },
180
- complexity: {
181
- type: "string",
182
- enum: ["simple", "medium", "complex"],
183
- },
184
- timeline: {
185
- type: "string",
186
- enum: ["agile", "waterfall", "continuous"],
187
- },
188
- },
189
- required: ["projectRoot"],
190
- },
191
- },
192
- {
193
- name: "identify-test-gaps",
194
- description: "Identify untested code and recommend test cases",
195
- inputSchema: {
196
- type: "object",
197
- properties: {
198
- projectRoot: { type: "string" },
199
- sourceFiles: { type: "array", items: { type: "string" } },
200
- existingTests: { type: "array", items: { type: "string" } },
201
- },
202
- required: ["projectRoot"],
203
- },
204
- },
205
- {
206
- name: "optimize-test-coverage",
207
- description: "Analyze and optimize test coverage patterns",
208
- inputSchema: {
209
- type: "object",
210
- properties: {
211
- projectRoot: { type: "string" },
212
- currentCoverage: { type: "number" },
213
- targetCoverage: { type: "number", default: 85 },
214
- focusAreas: { type: "array", items: { type: "string" } },
215
- },
216
- required: ["projectRoot"],
217
- },
218
- },
219
- {
220
- name: "generate-test-file",
221
- description: "Generate test file for a source file with exports",
222
- inputSchema: {
223
- type: "object",
224
- properties: {
225
- sourceFile: {
226
- type: "string",
227
- description: "Path to source file",
228
- },
229
- sourceContent: {
230
- type: "string",
231
- description: "Source file content",
232
- },
233
- exports: {
234
- type: "array",
235
- items: {
236
- type: "object",
237
- properties: {
238
- name: { type: "string" },
239
- type: { type: "string" },
240
- },
241
- },
242
- description: "Exported functions/classes to test",
243
- },
244
- testFilePath: {
245
- type: "string",
246
- description: "Path for generated test file",
247
- },
248
- directory: { type: "string", description: "Project directory" },
249
- },
250
- required: [
251
- "sourceFile",
252
- "sourceContent",
253
- "exports",
254
- "testFilePath",
255
- ],
256
- },
257
- },
258
- ],
259
- };
260
- });
261
-
262
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
263
- const { name, arguments: args } = request.params;
264
-
265
- try {
266
- switch (name) {
267
- case "analyze-test-coverage":
268
- return await this.analyzeTestCoverage(args as unknown as AnalyzeTestCoverageArgs);
269
- case "design-test-strategy":
270
- return await this.designTestStrategy(args as unknown as DesignTestStrategyArgs);
271
- case "identify-test-gaps":
272
- return await this.identifyTestGaps(args as unknown as IdentifyTestGapsArgs);
273
- case "optimize-test-coverage":
274
- return await this.optimizeTestCoverage(args as unknown as OptimizeTestCoverageArgs);
275
- case "generate-test-file":
276
- return await this.generateTestFile(args as unknown as GenerateTestFileArgs);
277
- default:
278
- throw new Error(`Unknown tool: ${name}`);
279
- }
280
- } catch (error) {
281
- frameworkLogger.log("mcps/testing-strategy", "tool", "error", { tool: name, error: String(error) });
282
- throw error;
283
- }
284
- });
285
- }
150
+ // setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
286
151
 
287
152
  private async analyzeTestCoverage(args: AnalyzeTestCoverageArgs) {
288
153
  const {
@@ -1151,20 +1016,11 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
1151
1016
  return ignorePatterns.some((pattern) => pattern.test(filePath));
1152
1017
  }
1153
1018
 
1154
- async run(): Promise<void> {
1155
- const transport = new StdioServerTransport();
1156
- await this.server.connect(transport);
1157
-
1158
- // Use centralized shutdown handler
1159
- createGracefulShutdown({
1160
- serverName: "testing-strategy.server",
1161
- server: this.server,
1162
- });
1163
- }
1019
+ // run() removed — handled by XrayKnowledgeSkillBase
1164
1020
  }
1165
1021
 
1166
1022
  // Start the server if run directly
1167
- if (import.meta.url === `file://${process.argv[1]}`) {
1023
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
1168
1024
  const server = new XrayTestingStrategyServer();
1169
1025
  server.run().catch(() => {});
1170
1026
  }
@@ -5,14 +5,9 @@
5
5
  * component patterns, accessibility compliance, and design system guidance
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
- type CallToolResult,
14
- } from "@modelcontextprotocol/sdk/types.js";
8
+ import * as 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 UIDesignAnalysis {
18
13
  component: string;
@@ -186,262 +181,35 @@ interface ToolResponse {
186
181
  isError?: boolean;
187
182
  }
188
183
 
189
- class XrayUIUXDesignServer {
190
- private server: Server;
184
+ class XrayUIUXDesignServer extends XrayKnowledgeSkillBase {
191
185
 
192
186
  constructor() {
193
- this.server = new Server(
194
- {
195
- name: "ui-ux-design", version: "1.22.67",
196
- },
197
- {
198
- capabilities: {
199
- tools: {},
200
- },
201
- },
202
- );
187
+ super("ui-ux-design", "3.1.0");
188
+
189
+ this.tools = [
190
+ { name: "analyze_ui_component", description: "Analyze UI component for accessibility, usability, and design best practices", inputSchema: { type: "object", properties: { componentCode: { type: "string", description: "React/Vue/Angular component code to analyze" }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte"], description: "UI framework being used" }, checkAccessibility: { type: "boolean", description: "Include WCAG accessibility analysis", default: true }, checkResponsive: { type: "boolean", description: "Include responsive design analysis", default: true } }, required: ["componentCode", "framework"] } },
191
+ { name: "design_component", description: "Design a UI component with proper accessibility and UX patterns", inputSchema: { type: "object", properties: { componentType: { type: "string", enum: ["button", "input", "modal", "navigation", "card", "form"], description: "Type of component to design" }, requirements: { type: "string", description: "Functional requirements and use cases" }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte"], description: "Target UI framework" }, accessibility: { type: "boolean", description: "Include accessibility features", default: true } }, required: ["componentType", "requirements", "framework"] } },
192
+ { name: "audit_accessibility", description: "Perform comprehensive accessibility audit using WCAG guidelines", inputSchema: { type: "object", properties: { htmlContent: { type: "string", description: "HTML content to audit for accessibility" }, cssContent: { type: "string", description: "CSS styles to check for accessibility" }, wcagLevel: { type: "string", enum: ["A", "AA", "AAA"], description: "WCAG conformance level to check", default: "AA" } }, required: ["htmlContent"] } },
193
+ { name: "generate_design_system", description: "Generate a comprehensive design system with colors, typography, and components", inputSchema: { type: "object", properties: { brandGuidelines: { type: "string", description: "Brand colors, fonts, and style guidelines" }, targetAudience: { type: "string", description: "Target user demographics and preferences" }, platform: { type: "string", enum: ["web", "mobile", "desktop"], description: "Target platform" }, includeAccessibility: { type: "boolean", description: "Include accessibility-compliant design tokens", default: true } }, required: ["brandGuidelines", "platform"] } },
194
+ { name: "validate_mobile_design", description: "Validate mobile-first design principles including touch targets, responsive typography, and thumb zone optimization", inputSchema: { type: "object", properties: { componentCode: { type: "string", description: "Component code to validate for mobile" }, viewportWidth: { type: "number", description: "Minimum viewport width to validate (default: 320)", default: 320 }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte", "css"], description: "UI framework or CSS" } }, required: ["componentCode"] } },
195
+ { name: "analyze_visual_hierarchy", description: "Analyze visual hierarchy and cognitive load following 'Don't Make Me Think' principles", inputSchema: { type: "object", properties: { designCode: { type: "string", description: "HTML/CSS/React code of the design to analyze" }, pageType: { type: "string", enum: ["landing", "dashboard", "form", "content", "ecommerce"], description: "Type of page being analyzed" } }, required: ["designCode"] } },
196
+ { name: "recommend_images", description: "Recommend appropriate image libraries, styles, and optimization strategies for the design context", inputSchema: { type: "object", properties: { context: { type: "string", description: "Design context (e.g., 'hero section', 'product gallery', 'team portraits')" }, style: { type: "string", enum: ["photography", "illustration", "3d", "abstract", "minimal"], description: "Preferred visual style" }, budget: { type: "string", enum: ["free", "low", "premium"], description: "Budget constraint", default: "free" } }, required: ["context"] } },
197
+ ];
198
+
199
+ this.handlers = {
200
+ analyze_ui_component: async (args) => this.analyzeUIComponent(args as AnalyzeUIComponentArgs),
201
+ design_component: async (args) => this.designComponent(args as DesignComponentArgs),
202
+ audit_accessibility: async (args) => this.auditAccessibility(args as AuditAccessibilityArgs),
203
+ generate_design_system: async (args) => this.generateDesignSystem(args as GenerateDesignSystemArgs),
204
+ validate_mobile_design: async (args) => this.validateMobileDesign(args as ValidateMobileDesignArgs),
205
+ analyze_visual_hierarchy: async (args) => this.analyzeVisualHierarchy(args as AnalyzeVisualHierarchyArgs),
206
+ recommend_images: async (args) => this.recommendImages(args as RecommendImagesArgs),
207
+ };
203
208
 
204
209
  this.setupToolHandlers();
205
- // Server initialization - removed unnecessary startup logging
206
210
  }
207
211
 
208
- private setupToolHandlers() {
209
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
210
- return {
211
- tools: [
212
- {
213
- name: "analyze_ui_component",
214
- description:
215
- "Analyze UI component for accessibility, usability, and design best practices",
216
- inputSchema: {
217
- type: "object",
218
- properties: {
219
- componentCode: {
220
- type: "string",
221
- description: "React/Vue/Angular component code to analyze",
222
- },
223
- framework: {
224
- type: "string",
225
- enum: ["react", "vue", "angular", "svelte"],
226
- description: "UI framework being used",
227
- },
228
- checkAccessibility: {
229
- type: "boolean",
230
- description: "Include WCAG accessibility analysis",
231
- default: true,
232
- },
233
- checkResponsive: {
234
- type: "boolean",
235
- description: "Include responsive design analysis",
236
- default: true,
237
- },
238
- },
239
- required: ["componentCode", "framework"],
240
- },
241
- },
242
- {
243
- name: "design_component",
244
- description:
245
- "Design a UI component with proper accessibility and UX patterns",
246
- inputSchema: {
247
- type: "object",
248
- properties: {
249
- componentType: {
250
- type: "string",
251
- enum: [
252
- "button",
253
- "input",
254
- "modal",
255
- "navigation",
256
- "card",
257
- "form",
258
- ],
259
- description: "Type of component to design",
260
- },
261
- requirements: {
262
- type: "string",
263
- description: "Functional requirements and use cases",
264
- },
265
- framework: {
266
- type: "string",
267
- enum: ["react", "vue", "angular", "svelte"],
268
- description: "Target UI framework",
269
- },
270
- accessibility: {
271
- type: "boolean",
272
- description: "Include accessibility features",
273
- default: true,
274
- },
275
- },
276
- required: ["componentType", "requirements", "framework"],
277
- },
278
- },
279
- {
280
- name: "audit_accessibility",
281
- description:
282
- "Perform comprehensive accessibility audit using WCAG guidelines",
283
- inputSchema: {
284
- type: "object",
285
- properties: {
286
- htmlContent: {
287
- type: "string",
288
- description: "HTML content to audit for accessibility",
289
- },
290
- cssContent: {
291
- type: "string",
292
- description: "CSS styles to check for accessibility",
293
- },
294
- wcagLevel: {
295
- type: "string",
296
- enum: ["A", "AA", "AAA"],
297
- description: "WCAG conformance level to check",
298
- default: "AA",
299
- },
300
- },
301
- required: ["htmlContent"],
302
- },
303
- },
304
- {
305
- name: "generate_design_system",
306
- description:
307
- "Generate a comprehensive design system with colors, typography, and components",
308
- inputSchema: {
309
- type: "object",
310
- properties: {
311
- brandGuidelines: {
312
- type: "string",
313
- description: "Brand colors, fonts, and style guidelines",
314
- },
315
- targetAudience: {
316
- type: "string",
317
- description: "Target user demographics and preferences",
318
- },
319
- platform: {
320
- type: "string",
321
- enum: ["web", "mobile", "desktop"],
322
- description: "Target platform",
323
- },
324
- includeAccessibility: {
325
- type: "boolean",
326
- description: "Include accessibility-compliant design tokens",
327
- default: true,
328
- },
329
- },
330
- required: ["brandGuidelines", "platform"],
331
- },
332
- },
333
- {
334
- name: "validate_mobile_design",
335
- description:
336
- "Validate mobile-first design principles including touch targets, responsive typography, and thumb zone optimization",
337
- inputSchema: {
338
- type: "object",
339
- properties: {
340
- componentCode: {
341
- type: "string",
342
- description: "Component code to validate for mobile",
343
- },
344
- viewportWidth: {
345
- type: "number",
346
- description:
347
- "Minimum viewport width to validate (default: 320)",
348
- default: 320,
349
- },
350
- framework: {
351
- type: "string",
352
- enum: ["react", "vue", "angular", "svelte", "css"],
353
- description: "UI framework or CSS",
354
- },
355
- },
356
- required: ["componentCode"],
357
- },
358
- },
359
- {
360
- name: "analyze_visual_hierarchy",
361
- description:
362
- "Analyze visual hierarchy and cognitive load following 'Don't Make Me Think' principles",
363
- inputSchema: {
364
- type: "object",
365
- properties: {
366
- designCode: {
367
- type: "string",
368
- description: "HTML/CSS/React code of the design to analyze",
369
- },
370
- pageType: {
371
- type: "string",
372
- enum: [
373
- "landing",
374
- "dashboard",
375
- "form",
376
- "content",
377
- "ecommerce",
378
- ],
379
- description: "Type of page being analyzed",
380
- },
381
- },
382
- required: ["designCode"],
383
- },
384
- },
385
- {
386
- name: "recommend_images",
387
- description:
388
- "Recommend appropriate image libraries, styles, and optimization strategies for the design context",
389
- inputSchema: {
390
- type: "object",
391
- properties: {
392
- context: {
393
- type: "string",
394
- description:
395
- "Design context (e.g., 'hero section', 'product gallery', 'team portraits')",
396
- },
397
- style: {
398
- type: "string",
399
- enum: [
400
- "photography",
401
- "illustration",
402
- "3d",
403
- "abstract",
404
- "minimal",
405
- ],
406
- description: "Preferred visual style",
407
- },
408
- budget: {
409
- type: "string",
410
- enum: ["free", "low", "premium"],
411
- description: "Budget constraint",
412
- default: "free",
413
- },
414
- },
415
- required: ["context"],
416
- },
417
- },
418
- ],
419
- };
420
- });
421
-
422
- this.server.setRequestHandler(CallToolRequestSchema, async (request): Promise<CallToolResult> => {
423
- const { name, arguments: args } = request.params;
424
-
425
- switch (name) {
426
- case "analyze_ui_component":
427
- return await this.analyzeUIComponent(args as unknown as AnalyzeUIComponentArgs) as CallToolResult;
428
- case "design_component":
429
- return await this.designComponent(args as unknown as DesignComponentArgs) as CallToolResult;
430
- case "audit_accessibility":
431
- return await this.auditAccessibility(args as unknown as AuditAccessibilityArgs) as CallToolResult;
432
- case "generate_design_system":
433
- return await this.generateDesignSystem(args as unknown as GenerateDesignSystemArgs) as CallToolResult;
434
- case "validate_mobile_design":
435
- return await this.validateMobileDesign(args as unknown as ValidateMobileDesignArgs) as CallToolResult;
436
- case "analyze_visual_hierarchy":
437
- return await this.analyzeVisualHierarchy(args as unknown as AnalyzeVisualHierarchyArgs) as CallToolResult;
438
- case "recommend_images":
439
- return await this.recommendImages(args as unknown as RecommendImagesArgs) as CallToolResult;
440
- default:
441
- throw new Error(`Unknown tool: ${name}`);
442
- }
443
- });
444
- }
212
+ // setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
445
213
 
446
214
  private async analyzeUIComponent(args: AnalyzeUIComponentArgs): Promise<ToolResponse> {
447
215
  const {
@@ -1980,95 +1748,11 @@ Available: ${Object.keys(system.components).length} component types
1980
1748
  };
1981
1749
  }
1982
1750
 
1983
- async run(): Promise<void> {
1984
- const transport = new StdioServerTransport();
1985
- await this.server.connect(transport);
1986
- await frameworkLogger.log(
1987
- "ui-ux-design.server",
1988
- "-xray-ui-ux-design-mcp-server-running-",
1989
- "info",
1990
- { message: "xray UI/UX Design MCP Server running..." },
1991
- );
1992
-
1993
- const cleanup = async (signal: string) => {
1994
- await frameworkLogger.log(
1995
- "ui-ux-design.server",
1996
- "-received-signal-shutting-down-gracefully-",
1997
- "info",
1998
- { message: `Received ${signal}, shutting down gracefully...` },
1999
- );
2000
-
2001
- // Set a timeout to force exit if graceful shutdown fails
2002
- const timeout = setTimeout(() => {
2003
- frameworkLogger.log("mcps/ui-ux-design", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
2004
- process.exit(1);
2005
- }, 5000); // 5 second timeout
2006
-
2007
- try {
2008
- if (this.server && typeof this.server.close === "function") {
2009
- await this.server.close();
2010
- }
2011
- clearTimeout(timeout);
2012
- await frameworkLogger.log(
2013
- "ui-ux-design.server",
2014
- "-xray-mcp-server-shut-down-gracefully-",
2015
- "info",
2016
- { message: "xray MCP Server shut down gracefully" },
2017
- );
2018
- process.exit(0);
2019
- } catch (error) {
2020
- clearTimeout(timeout);
2021
- frameworkLogger.log("mcps/ui-ux-design", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
2022
- process.exit(1);
2023
- }
2024
- };
2025
-
2026
- // Handle multiple shutdown signals
2027
- process.on("SIGINT", () => cleanup("SIGINT"));
2028
- process.on("SIGTERM", () => cleanup("SIGTERM"));
2029
- process.on("SIGHUP", () => cleanup("SIGHUP"));
2030
-
2031
- // Monitor parent process (opencode) and shutdown if it dies
2032
- const checkParent = async () => {
2033
- try {
2034
- process.kill(process.ppid, 0); // Check if parent is alive
2035
- setTimeout(checkParent, 1000); // Check again in 1 second
2036
- } catch (error) {
2037
- // Parent process died, shut down gracefully
2038
- await frameworkLogger.log(
2039
- "ui-ux-design.server",
2040
- "-parent-process-opencode-died-shutting-down-mcp-se",
2041
- "info",
2042
- {
2043
- message:
2044
- "Parent process (opencode) died, shutting down MCP server...",
2045
- },
2046
- );
2047
- cleanup("parent-process-death");
2048
- }
2049
- };
2050
-
2051
- // Start monitoring parent process
2052
- setTimeout(checkParent, 2000); // Start checking after 2 seconds
2053
-
2054
- // Handle uncaught exceptions and unhandled rejections
2055
- process.on("uncaughtException", (error) => {
2056
- frameworkLogger.log("mcps/ui-ux-design", "uncaughtException", "error", { error: String(error) });
2057
- cleanup("uncaughtException");
2058
- });
2059
-
2060
- process.on("unhandledRejection", (reason, promise) => {
2061
- frameworkLogger.log("mcps/ui-ux-design", "unhandledRejection", "error", { error: String(reason) });
2062
- cleanup("unhandledRejection");
2063
- });
2064
-
2065
- process.on("SIGINT", cleanup);
2066
- process.on("SIGTERM", cleanup);
2067
- }
1751
+ // run() removed — handled by XrayKnowledgeSkillBase
2068
1752
  }
2069
1753
 
2070
1754
  // Run the server if this file is executed directly
2071
- if (import.meta.url === `file://${process.argv[1]}`) {
1755
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
2072
1756
  const server = new XrayUIUXDesignServer();
2073
1757
  server.run().catch((error) => frameworkLogger.log("mcps/ui-ux-design", "run", "error", { error: String(error) }));
2074
1758
  }