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
@@ -1,386 +1,56 @@
1
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
1
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
2
  import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
5
- import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from "@modelcontextprotocol/sdk/types.js";
3
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
6
4
  import * as fs from "fs";
7
5
  import { fileURLToPath } from "url";
8
6
  import { randomUUID } from "crypto";
9
7
  import { mcpClientManager } from "../mcp-client.js";
10
8
  import { frameworkLogger } from "../../core/framework-logger.js";
11
9
  import { skillInstallCommand, skillRegistryCommand } from "../../cli/commands/skill-install.js";
12
- class SkillInvocationServer {
13
- server;
10
+ class SkillInvocationServer extends XrayKnowledgeSkillBase {
14
11
  constructor() {
15
- this.server = new Server({
16
- name: "xray/skill-invocation", version: "3.1.0",
17
- }, {
18
- capabilities: {
19
- tools: {},
20
- },
21
- });
12
+ super("skill-invocation", "3.1.0");
13
+ this.tools = [
14
+ { name: "list-skills", description: "List all available skills with descriptions", inputSchema: { type: "object", properties: { category: { type: "string", enum: ["all", "core", "registry", "knowledge"], description: "Filter by category" } } } },
15
+ { name: "invoke-skill", description: "Generic skill invocation tool for calling any MCP skill server", inputSchema: { type: "object", properties: { skillName: { type: "string", description: "Name of the skill to invoke (use list-skills to see available)" }, toolName: { type: "string", description: "Name of the tool within the skill to execute" }, args: { type: "object", description: "Arguments to pass to the skill tool" } }, required: ["skillName", "toolName"] } },
16
+ { name: "skill-code-review", description: "Invoke code review skill for comprehensive code analysis", inputSchema: { type: "object", properties: { code: { type: "string", description: "Code to analyze" }, language: { type: "string", description: "Programming language" }, context: { type: "object", description: "Additional context" } }, required: ["code"] } },
17
+ { name: "skill-security-audit", description: "Invoke security audit skill for vulnerability scanning", inputSchema: { type: "object", properties: { files: { type: "array", items: { type: "string" }, description: "Files to audit" }, severity: { type: "string", enum: ["low", "medium", "high", "critical"], description: "Minimum severity level" } }, required: ["files"] } },
18
+ { name: "skill-performance-optimization", description: "Invoke performance optimization skill for bottleneck analysis", inputSchema: { type: "object", properties: { code: { type: "string", description: "Code to analyze" }, language: { type: "string", description: "Programming language" }, metrics: { type: "array", items: { type: "string" }, description: "Performance metrics to analyze" } }, required: ["code"] } },
19
+ { name: "skill-testing-strategy", description: "Invoke testing strategy skill for test planning", inputSchema: { type: "object", properties: { code: { type: "string", description: "Code to analyze for testing" }, existingTests: { type: "array", items: { type: "string" }, description: "Existing test files" }, requirements: { type: "object", description: "Testing requirements and constraints" } }, required: ["code"] } },
20
+ { name: "skill-project-analysis", description: "Invoke project analysis skill for codebase insights", inputSchema: { type: "object", properties: { scope: { type: "string", enum: ["full", "directory", "file"], description: "Analysis scope" }, analysis: { type: "array", items: { type: "string" }, description: "Types of analysis to perform" } } } },
21
+ { name: "skill-database-design", description: "Invoke database design skill for schema design and query optimization", inputSchema: { type: "object", properties: { schema: { type: "string", description: "Database schema or entities" }, databaseType: { type: "string", enum: ["postgresql", "mysql", "mongodb", "dynamodb"], description: "Target database type" } }, required: ["schema"] } },
22
+ { name: "skill-devops-deployment", description: "Invoke DevOps deployment skill for CI/CD and infrastructure", inputSchema: { type: "object", properties: { projectType: { type: "string", description: "Type of project" }, cloudProvider: { type: "string", enum: ["aws", "gcp", "azure"], description: "Target cloud provider" } }, required: ["projectType"] } },
23
+ { name: "skill-api-design", description: "Invoke API design skill for REST/GraphQL endpoints", inputSchema: { type: "object", properties: { resources: { type: "array", items: { type: "string" }, description: "API resources" }, style: { type: "string", enum: ["rest", "graphql"], description: "API style" } }, required: ["resources"] } },
24
+ { name: "skill-ui-ux-design", description: "Invoke UI/UX design skill for component design", inputSchema: { type: "object", properties: { component: { type: "string", description: "Component to design" }, framework: { type: "string", enum: ["react", "vue", "angular", "svelte"], description: "Target framework" } }, required: ["component"] } },
25
+ { name: "skill-documentation-generation", description: "Invoke documentation skill for API docs and README", inputSchema: { type: "object", properties: { type: { type: "string", enum: ["api", "readme", "guide"], description: "Documentation type" }, code: { type: "string", description: "Code to document" } }, required: ["type"] } },
26
+ { name: "skill-storyteller", description: "Invoke storyteller skill for writing reflections, sagas, and journeys", inputSchema: { type: "object", properties: { storyType: { type: "string", enum: ["reflection", "saga", "journey", "narrative"], description: "Type of story to write" }, title: { type: "string", description: "Title for the story" }, context: { type: "object", description: "Context including commits, changes, metadata" }, framework: { type: "string", enum: ["three_act_structure", "hero_journey", "spiral"], description: "Storytelling framework to use" } }, required: ["storyType"] } },
27
+ { name: "install-skill", description: "Install skills from the registry or any git repo", inputSchema: { type: "object", properties: { source: { type: "string", description: "Source name or git URL to install skills from" }, path: { type: "string", description: "Subdirectory in repo containing skills" }, force: { type: "boolean", description: "Reinstall even if already installed" } }, required: ["source"] } },
28
+ { name: "skill-registry-list", description: "List all available skill registry sources", inputSchema: { type: "object", properties: {} } },
29
+ { name: "skill-registry-add", description: "Add a new source to the skills registry", inputSchema: { type: "object", properties: { name: { type: "string", description: "Unique source name" }, url: { type: "string", description: "Repository URL" }, desc: { type: "string", description: "Short description" }, license: { type: "string", description: "License type" } }, required: ["name", "url"] } },
30
+ { name: "skill-registry-remove", description: "Remove a source from the skills registry", inputSchema: { type: "object", properties: { name: { type: "string", description: "Source name to remove" } }, required: ["name"] } },
31
+ ];
32
+ this.handlers = {
33
+ "list-skills": async (args) => this.handleListSkills(args),
34
+ "invoke-skill": async (args) => this.handleInvokeSkill(args),
35
+ "skill-code-review": async (args) => this.handleSkillCodeReview(args),
36
+ "skill-security-audit": async (args) => this.handleSkillSecurityAudit(args),
37
+ "skill-performance-optimization": async (args) => this.handleSkillPerformanceOptimization(args),
38
+ "skill-testing-strategy": async (args) => this.handleSkillTestingStrategy(args),
39
+ "skill-project-analysis": async (args) => this.handleSkillProjectAnalysis(args),
40
+ "skill-database-design": async (args) => this.handleSkillDatabaseDesign(args),
41
+ "skill-devops-deployment": async (args) => this.handleSkillDevopsDeployment(args),
42
+ "skill-api-design": async (args) => this.handleSkillApiDesign(args),
43
+ "skill-ui-ux-design": async (args) => this.handleSkillUiUxDesign(args),
44
+ "skill-documentation-generation": async (args) => this.handleSkillDocumentationGeneration(args),
45
+ "skill-storyteller": async (args) => this.handleSkillStoryteller(args),
46
+ "install-skill": async (args) => this.handleInstallSkill(args),
47
+ "skill-registry-list": async () => this.handleSkillRegistryList(),
48
+ "skill-registry-add": async (args) => this.handleSkillRegistryAdd(args),
49
+ "skill-registry-remove": async (args) => this.handleSkillRegistryRemove(args),
50
+ };
22
51
  this.setupToolHandlers();
23
52
  }
24
- setupToolHandlers() {
25
- // List available tools
26
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
27
- return {
28
- tools: [
29
- {
30
- name: "list-skills",
31
- description: "List all available skills with descriptions",
32
- inputSchema: {
33
- type: "object",
34
- properties: {
35
- category: {
36
- type: "string",
37
- enum: ["all", "core", "registry", "knowledge"],
38
- description: "Filter by category",
39
- },
40
- },
41
- },
42
- },
43
- {
44
- name: "invoke-skill",
45
- description: "Generic skill invocation tool for calling any MCP skill server",
46
- inputSchema: {
47
- type: "object",
48
- properties: {
49
- skillName: {
50
- type: "string",
51
- description: "Name of the skill to invoke (use list-skills to see available)",
52
- },
53
- toolName: {
54
- type: "string",
55
- description: "Name of the tool within the skill to execute",
56
- },
57
- args: {
58
- type: "object",
59
- description: "Arguments to pass to the skill tool",
60
- },
61
- },
62
- required: ["skillName", "toolName"],
63
- },
64
- },
65
- {
66
- name: "skill-code-review",
67
- description: "Invoke code review skill for comprehensive code analysis",
68
- inputSchema: {
69
- type: "object",
70
- properties: {
71
- code: { type: "string", description: "Code to analyze" },
72
- language: {
73
- type: "string",
74
- description: "Programming language",
75
- },
76
- context: { type: "object", description: "Additional context" },
77
- },
78
- required: ["code"],
79
- },
80
- },
81
- {
82
- name: "skill-security-audit",
83
- description: "Invoke security audit skill for vulnerability scanning",
84
- inputSchema: {
85
- type: "object",
86
- properties: {
87
- files: {
88
- type: "array",
89
- items: { type: "string" },
90
- description: "Files to audit",
91
- },
92
- severity: {
93
- type: "string",
94
- enum: ["low", "medium", "high", "critical"],
95
- description: "Minimum severity level",
96
- },
97
- },
98
- required: ["files"],
99
- },
100
- },
101
- {
102
- name: "skill-performance-optimization",
103
- description: "Invoke performance optimization skill for bottleneck analysis",
104
- inputSchema: {
105
- type: "object",
106
- properties: {
107
- code: { type: "string", description: "Code to analyze" },
108
- language: {
109
- type: "string",
110
- description: "Programming language",
111
- },
112
- metrics: {
113
- type: "array",
114
- items: { type: "string" },
115
- description: "Performance metrics to analyze",
116
- },
117
- },
118
- required: ["code"],
119
- },
120
- },
121
- {
122
- name: "skill-testing-strategy",
123
- description: "Invoke testing strategy skill for test planning",
124
- inputSchema: {
125
- type: "object",
126
- properties: {
127
- code: {
128
- type: "string",
129
- description: "Code to analyze for testing",
130
- },
131
- existingTests: {
132
- type: "array",
133
- items: { type: "string" },
134
- description: "Existing test files",
135
- },
136
- requirements: {
137
- type: "object",
138
- description: "Testing requirements and constraints",
139
- },
140
- },
141
- required: ["code"],
142
- },
143
- },
144
- {
145
- name: "skill-project-analysis",
146
- description: "Invoke project analysis skill for codebase insights",
147
- inputSchema: {
148
- type: "object",
149
- properties: {
150
- scope: {
151
- type: "string",
152
- enum: ["full", "directory", "file"],
153
- description: "Analysis scope",
154
- },
155
- analysis: {
156
- type: "array",
157
- items: { type: "string" },
158
- description: "Types of analysis to perform",
159
- },
160
- },
161
- },
162
- },
163
- {
164
- name: "skill-database-design",
165
- description: "Invoke database design skill for schema design and query optimization",
166
- inputSchema: {
167
- type: "object",
168
- properties: {
169
- schema: {
170
- type: "string",
171
- description: "Database schema or entities",
172
- },
173
- databaseType: {
174
- type: "string",
175
- enum: ["postgresql", "mysql", "mongodb", "dynamodb"],
176
- description: "Target database type",
177
- },
178
- },
179
- required: ["schema"],
180
- },
181
- },
182
- {
183
- name: "skill-devops-deployment",
184
- description: "Invoke DevOps deployment skill for CI/CD and infrastructure",
185
- inputSchema: {
186
- type: "object",
187
- properties: {
188
- projectType: { type: "string", description: "Type of project" },
189
- cloudProvider: {
190
- type: "string",
191
- enum: ["aws", "gcp", "azure"],
192
- description: "Target cloud provider",
193
- },
194
- },
195
- required: ["projectType"],
196
- },
197
- },
198
- {
199
- name: "skill-api-design",
200
- description: "Invoke API design skill for REST/GraphQL endpoints",
201
- inputSchema: {
202
- type: "object",
203
- properties: {
204
- resources: {
205
- type: "array",
206
- items: { type: "string" },
207
- description: "API resources",
208
- },
209
- style: {
210
- type: "string",
211
- enum: ["rest", "graphql"],
212
- description: "API style",
213
- },
214
- },
215
- required: ["resources"],
216
- },
217
- },
218
- {
219
- name: "skill-ui-ux-design",
220
- description: "Invoke UI/UX design skill for component design",
221
- inputSchema: {
222
- type: "object",
223
- properties: {
224
- component: {
225
- type: "string",
226
- description: "Component to design",
227
- },
228
- framework: {
229
- type: "string",
230
- enum: ["react", "vue", "angular", "svelte"],
231
- description: "Target framework",
232
- },
233
- },
234
- required: ["component"],
235
- },
236
- },
237
- {
238
- name: "skill-documentation-generation",
239
- description: "Invoke documentation skill for API docs and README",
240
- inputSchema: {
241
- type: "object",
242
- properties: {
243
- type: {
244
- type: "string",
245
- enum: ["api", "readme", "guide"],
246
- description: "Documentation type",
247
- },
248
- code: { type: "string", description: "Code to document" },
249
- },
250
- required: ["type"],
251
- },
252
- },
253
- {
254
- name: "skill-storyteller",
255
- description: "Invoke storyteller skill for writing reflections, sagas, and journeys",
256
- inputSchema: {
257
- type: "object",
258
- properties: {
259
- storyType: {
260
- type: "string",
261
- enum: ["reflection", "saga", "journey", "narrative"],
262
- description: "Type of story to write",
263
- },
264
- title: { type: "string", description: "Title for the story" },
265
- context: {
266
- type: "object",
267
- description: "Context including commits, changes, metadata",
268
- },
269
- framework: {
270
- type: "string",
271
- enum: ["three_act_structure", "hero_journey", "spiral"],
272
- description: "Storytelling framework to use",
273
- },
274
- },
275
- required: ["storyType"],
276
- },
277
- },
278
- {
279
- name: "install-skill",
280
- description: "Install skills from the registry or any git repo",
281
- inputSchema: {
282
- type: "object",
283
- properties: {
284
- source: {
285
- type: "string",
286
- description: "Source name or git URL to install skills from",
287
- },
288
- path: {
289
- type: "string",
290
- description: "Subdirectory in repo containing skills",
291
- },
292
- force: {
293
- type: "boolean",
294
- description: "Reinstall even if already installed",
295
- },
296
- },
297
- required: ["source"],
298
- },
299
- },
300
- {
301
- name: "skill-registry-list",
302
- description: "List all available skill registry sources",
303
- inputSchema: {
304
- type: "object",
305
- properties: {},
306
- },
307
- },
308
- {
309
- name: "skill-registry-add",
310
- description: "Add a new source to the skills registry",
311
- inputSchema: {
312
- type: "object",
313
- properties: {
314
- name: { type: "string", description: "Unique source name" },
315
- url: { type: "string", description: "Repository URL" },
316
- desc: { type: "string", description: "Short description" },
317
- license: { type: "string", description: "License type" },
318
- },
319
- required: ["name", "url"],
320
- },
321
- },
322
- {
323
- name: "skill-registry-remove",
324
- description: "Remove a source from the skills registry",
325
- inputSchema: {
326
- type: "object",
327
- properties: {
328
- name: { type: "string", description: "Source name to remove" },
329
- },
330
- required: ["name"],
331
- },
332
- },
333
- ],
334
- };
335
- });
336
- // Handle tool calls
337
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
338
- const { name, arguments: args } = request.params;
339
- try {
340
- switch (name) {
341
- case "list-skills":
342
- return await this.handleListSkills(args);
343
- case "invoke-skill":
344
- return await this.handleInvokeSkill(args);
345
- case "skill-code-review":
346
- return await this.handleSkillCodeReview(args);
347
- case "skill-security-audit":
348
- return await this.handleSkillSecurityAudit(args);
349
- case "skill-performance-optimization":
350
- return await this.handleSkillPerformanceOptimization(args);
351
- case "skill-testing-strategy":
352
- return await this.handleSkillTestingStrategy(args);
353
- case "skill-project-analysis":
354
- return await this.handleSkillProjectAnalysis(args);
355
- case "skill-database-design":
356
- return await this.handleSkillDatabaseDesign(args);
357
- case "skill-devops-deployment":
358
- return await this.handleSkillDevopsDeployment(args);
359
- case "skill-api-design":
360
- return await this.handleSkillApiDesign(args);
361
- case "skill-ui-ux-design":
362
- return await this.handleSkillUiUxDesign(args);
363
- case "skill-documentation-generation":
364
- return await this.handleSkillDocumentationGeneration(args);
365
- case "skill-storyteller":
366
- return await this.handleSkillStoryteller(args);
367
- case "install-skill":
368
- return await this.handleInstallSkill(args);
369
- case "skill-registry-list":
370
- return await this.handleSkillRegistryList();
371
- case "skill-registry-add":
372
- return await this.handleSkillRegistryAdd(args);
373
- case "skill-registry-remove":
374
- return await this.handleSkillRegistryRemove(args);
375
- default:
376
- throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
377
- }
378
- }
379
- catch (error) {
380
- throw new McpError(ErrorCode.InternalError, `Tool execution failed: ${error instanceof Error ? error.message : String(error)}`);
381
- }
382
- });
383
- }
53
+ // setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
384
54
  skillMetrics = new Map();
385
55
  /**
386
56
  * Record skill invocation outcome for adaptive learning
@@ -728,55 +398,7 @@ class SkillInvocationServer {
728
398
  const output = await this.captureConsole(() => skillRegistryCommand("remove", { name: args.name }));
729
399
  return { content: [{ type: "text", text: output || "Source removed." }] };
730
400
  }
731
- async run() {
732
- const transport = new StdioServerTransport();
733
- await this.server.connect(transport);
734
- let parentCheckTimer = null;
735
- const cleanup = async (signal) => {
736
- if (parentCheckTimer !== null) {
737
- clearTimeout(parentCheckTimer);
738
- parentCheckTimer = null;
739
- }
740
- const timeout = setTimeout(() => {
741
- frameworkLogger.log("mcps/skill-invocation", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
742
- process.exit(1);
743
- }, 5000);
744
- try {
745
- if (this.server && typeof this.server.close === "function") {
746
- await this.server.close();
747
- }
748
- clearTimeout(timeout);
749
- process.exit(0);
750
- }
751
- catch (error) {
752
- clearTimeout(timeout);
753
- frameworkLogger.log("mcps/skill-invocation", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
754
- process.exit(1);
755
- }
756
- };
757
- process.on("SIGINT", () => cleanup("SIGINT"));
758
- process.on("SIGTERM", () => cleanup("SIGTERM"));
759
- process.on("SIGHUP", () => cleanup("SIGHUP"));
760
- const checkParent = () => {
761
- try {
762
- process.kill(process.ppid, 0);
763
- parentCheckTimer = setTimeout(checkParent, 1000);
764
- }
765
- catch (error) {
766
- parentCheckTimer = null;
767
- cleanup("parent-process-death");
768
- }
769
- };
770
- parentCheckTimer = setTimeout(checkParent, 2000);
771
- process.on("uncaughtException", (error) => {
772
- frameworkLogger.log("mcps/skill-invocation", "uncaughtException", "error", { message: `Uncaught Exception: ${String(error)}` });
773
- cleanup("uncaughtException");
774
- });
775
- process.on("unhandledRejection", (reason) => {
776
- frameworkLogger.log("mcps/skill-invocation", "unhandledRejection", "error", { message: `Unhandled Rejection: ${String(reason)}` });
777
- cleanup("unhandledRejection");
778
- });
779
- }
401
+ // run() removed — handled by XrayKnowledgeSkillBase
780
402
  /**
781
403
  * Run as HTTP server using Streamable HTTP transport (for Grok CLI compatibility).
782
404
  */
@@ -4,14 +4,11 @@
4
4
  * Strategic guidance and complex problem-solving for architectural decisions.
5
5
  * Provides strategic planning, risk assessment, and technical strategy tools.
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 * as fs from "fs";
11
8
  import { fileURLToPath } from "url";
12
9
  import { frameworkLogger } from "../../core/framework-logger.js";
13
- class StrategistServer {
14
- server;
10
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
11
+ class StrategistServer extends XrayKnowledgeSkillBase {
15
12
  tools = [
16
13
  {
17
14
  name: "strategic_guidance",
@@ -77,52 +74,15 @@ class StrategistServer {
77
74
  },
78
75
  ];
79
76
  constructor() {
80
- this.server = new Server({
81
- name: "xray/strategist", version: "3.1.0",
82
- }, {
83
- capabilities: {
84
- tools: {},
85
- },
86
- });
77
+ super("strategist", "3.1.0");
78
+ this.handlers = {
79
+ strategic_guidance: async (args) => this.handleStrategicGuidance(args),
80
+ risk_assessment: async (args) => this.handleRiskAssessment(args),
81
+ architecture_review: async (args) => this.handleArchitectureReview(args),
82
+ };
87
83
  this.setupToolHandlers();
88
84
  }
89
- setupToolHandlers() {
90
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
91
- return {
92
- tools: this.tools.map((tool) => ({
93
- name: tool.name,
94
- description: tool.description,
95
- inputSchema: tool.inputSchema,
96
- })),
97
- };
98
- });
99
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
100
- const { name, arguments: args } = request.params;
101
- try {
102
- switch (name) {
103
- case "strategic_guidance":
104
- return await this.handleStrategicGuidance(args);
105
- case "risk_assessment":
106
- return await this.handleRiskAssessment(args);
107
- case "architecture_review":
108
- return await this.handleArchitectureReview(args);
109
- default:
110
- throw new Error(`Unknown tool: ${name}`);
111
- }
112
- }
113
- catch (error) {
114
- return {
115
- content: [
116
- {
117
- type: "text",
118
- text: `Error: ${error instanceof Error ? error.message : String(error)}`,
119
- },
120
- ],
121
- isError: true,
122
- };
123
- }
124
- });
125
- }
85
+ // setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
126
86
  async handleStrategicGuidance(args) {
127
87
  const { context, options = [], criteria = [] } = args;
128
88
  const analysis = [
@@ -203,15 +163,10 @@ class StrategistServer {
203
163
  content: [{ type: "text", text: analysis.join("\n") }],
204
164
  };
205
165
  }
206
- async start() {
207
- const transport = new StdioServerTransport();
208
- await this.server.connect(transport);
209
- await frameworkLogger.log("mcp-strategist", "server-started", "success");
210
- }
211
166
  }
212
167
  const entryPoint = fs.realpathSync(process.argv[1] ?? "");
213
168
  if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
214
169
  const server = new StrategistServer();
215
- server.start().catch((error) => frameworkLogger.log("mcps/strategist", "run", "error", { error: String(error) }));
170
+ server.run().catch((error) => frameworkLogger.log("mcps/strategist", "run", "error", { error: String(error) }));
216
171
  }
217
172
  export { StrategistServer };