0xray 2.1.1 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/.opencode/codex.codex +1 -1
  2. package/.opencode/commands/dependency-audit.md +3 -3
  3. package/.opencode/enforcer-config.json +2 -2
  4. package/AGENTS.md +3 -2
  5. package/README.md +12 -11
  6. package/dist/AGENTS.md +3 -2
  7. package/dist/CHANGELOG.md +26 -0
  8. package/dist/README.md +12 -11
  9. package/dist/agents/code-reviewer.js +1 -1
  10. package/dist/analytics/routing-refiner.js +1 -1
  11. package/dist/cli/index.js +11 -1
  12. package/dist/cli/server.js +3 -3
  13. package/dist/core/activity-logger.d.ts +2 -2
  14. package/dist/core/activity-logger.js +4 -4
  15. package/dist/core/boot-orchestrator.d.ts +1 -1
  16. package/dist/core/boot-orchestrator.js +13 -28
  17. package/dist/core/bridge.mjs +3 -3
  18. package/dist/core/codex-formatter.js +2 -2
  19. package/dist/core/codex-injector.d.ts +0 -1
  20. package/dist/core/codex-injector.js +2 -3
  21. package/dist/core/config-loader.d.ts +1 -1
  22. package/dist/core/config-loader.js +1 -1
  23. package/dist/core/config-paths.d.ts +0 -2
  24. package/dist/core/config-paths.js +7 -8
  25. package/dist/core/context-loader.d.ts +1 -1
  26. package/dist/core/context-loader.js +1 -1
  27. package/dist/core/errors.d.ts +3 -0
  28. package/dist/core/errors.js +10 -0
  29. package/dist/core/features-config.js +1 -1
  30. package/dist/core/framework-logger.d.ts +3 -3
  31. package/dist/core/framework-logger.js +17 -9
  32. package/dist/core/index.d.ts +2 -2
  33. package/dist/core/index.js +4 -2
  34. package/dist/core/logging-config.d.ts +2 -1
  35. package/dist/core/logging-config.js +7 -7
  36. package/dist/enforcement/loaders/codex-loader.js +1 -1
  37. package/dist/execution/opencode-cli-invoker.js +5 -5
  38. package/dist/governance/governance-service.js +1 -1
  39. package/dist/index.d.ts +3 -3
  40. package/dist/index.js +3 -3
  41. package/dist/inference/inference-cycle.d.ts +1 -1
  42. package/dist/inference/inference-cycle.js +10 -10
  43. package/dist/integrations/base/Integration.js +1 -1
  44. package/dist/integrations/base/registry.js +19 -19
  45. package/dist/integrations/grok/grok-cli.js +17 -17
  46. package/dist/integrations/grok/hooks/pre-tool-use.js +1 -1
  47. package/dist/integrations/hermes-agent/bridge.mjs +1 -1
  48. package/dist/integrations/openclaw/api-server.d.ts +0 -1
  49. package/dist/integrations/openclaw/api-server.js +7 -10
  50. package/dist/integrations/openclaw/client.d.ts +0 -1
  51. package/dist/integrations/openclaw/client.js +22 -24
  52. package/dist/integrations/openclaw/hooks/xray-hooks.d.ts +0 -1
  53. package/dist/integrations/openclaw/hooks/xray-hooks.js +17 -18
  54. package/dist/integrations/plugins/plugin-registry.js +5 -5
  55. package/dist/mcps/architect-tools.server.d.ts +2 -4
  56. package/dist/mcps/architect-tools.server.js +112 -195
  57. package/dist/mcps/auto-format.server.d.ts +2 -4
  58. package/dist/mcps/auto-format.server.js +49 -95
  59. package/dist/mcps/boot-orchestrator.server.d.ts +2 -4
  60. package/dist/mcps/boot-orchestrator.server.js +73 -105
  61. package/dist/mcps/config/server-config-registry.js +3 -3
  62. package/dist/mcps/enforcer-tools.server.d.ts +2 -4
  63. package/dist/mcps/enforcer-tools.server.js +202 -285
  64. package/dist/mcps/estimation.server.d.ts +2 -4
  65. package/dist/mcps/estimation.server.js +63 -107
  66. package/dist/mcps/framework-compliance-audit.server.d.ts +2 -4
  67. package/dist/mcps/framework-compliance-audit.server.js +53 -82
  68. package/dist/mcps/framework-help.server.d.ts +2 -4
  69. package/dist/mcps/framework-help.server.js +63 -101
  70. package/dist/mcps/governance.server.js +2 -2
  71. package/dist/mcps/knowledge-skills/api-design.server.d.ts +2 -4
  72. package/dist/mcps/knowledge-skills/api-design.server.js +35 -67
  73. package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +2 -10
  74. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +35 -74
  75. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.d.ts +2 -4
  76. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +143 -162
  77. package/dist/mcps/knowledge-skills/code-analyzer.server.d.ts +3 -4
  78. package/dist/mcps/knowledge-skills/code-analyzer.server.js +20 -45
  79. package/dist/mcps/knowledge-skills/code-review.server.d.ts +2 -4
  80. package/dist/mcps/knowledge-skills/code-review.server.js +109 -143
  81. package/dist/mcps/knowledge-skills/content-creator.server.d.ts +2 -4
  82. package/dist/mcps/knowledge-skills/content-creator.server.js +205 -226
  83. package/dist/mcps/knowledge-skills/database-design.server.d.ts +2 -4
  84. package/dist/mcps/knowledge-skills/database-design.server.js +117 -151
  85. package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +2 -4
  86. package/dist/mcps/knowledge-skills/devops-deployment.server.js +71 -160
  87. package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +2 -4
  88. package/dist/mcps/knowledge-skills/git-workflow.server.js +36 -68
  89. package/dist/mcps/knowledge-skills/growth-strategist.server.d.ts +2 -4
  90. package/dist/mcps/knowledge-skills/growth-strategist.server.js +303 -324
  91. package/dist/mcps/knowledge-skills/log-monitor.server.d.ts +2 -4
  92. package/dist/mcps/knowledge-skills/log-monitor.server.js +141 -160
  93. package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +2 -4
  94. package/dist/mcps/knowledge-skills/mobile-development.server.js +92 -209
  95. package/dist/mcps/knowledge-skills/multimodal-looker.server.d.ts +2 -4
  96. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +123 -159
  97. package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +2 -5
  98. package/dist/mcps/knowledge-skills/performance-optimization.server.js +155 -296
  99. package/dist/mcps/knowledge-skills/project-analysis.server.d.ts +2 -4
  100. package/dist/mcps/knowledge-skills/project-analysis.server.js +75 -226
  101. package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +2 -4
  102. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +63 -156
  103. package/dist/mcps/knowledge-skills/security-audit.server.d.ts +2 -4
  104. package/dist/mcps/knowledge-skills/security-audit.server.js +102 -136
  105. package/dist/mcps/knowledge-skills/seo-consultant.server.d.ts +2 -4
  106. package/dist/mcps/knowledge-skills/seo-consultant.server.js +80 -203
  107. package/dist/mcps/knowledge-skills/session-management.server.d.ts +2 -4
  108. package/dist/mcps/knowledge-skills/session-management.server.js +50 -203
  109. package/dist/mcps/knowledge-skills/skill-invocation.server.d.ts +2 -4
  110. package/dist/mcps/knowledge-skills/skill-invocation.server.js +168 -347
  111. package/dist/mcps/knowledge-skills/strategist.server.d.ts +2 -11
  112. package/dist/mcps/knowledge-skills/strategist.server.js +72 -122
  113. package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +2 -4
  114. package/dist/mcps/knowledge-skills/tech-writer.server.js +87 -300
  115. package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +2 -4
  116. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +147 -182
  117. package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +2 -4
  118. package/dist/mcps/knowledge-skills/testing-strategy.server.js +78 -153
  119. package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +2 -5
  120. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +90 -399
  121. package/dist/mcps/lint.server.d.ts +2 -4
  122. package/dist/mcps/lint.server.js +51 -92
  123. package/dist/mcps/mcp-client.js +2 -2
  124. package/dist/mcps/model-health-check.server.d.ts +2 -4
  125. package/dist/mcps/model-health-check.server.js +32 -60
  126. package/dist/mcps/performance-analysis.server.d.ts +2 -4
  127. package/dist/mcps/performance-analysis.server.js +57 -88
  128. package/dist/mcps/processor-pipeline.server.d.ts +2 -4
  129. package/dist/mcps/processor-pipeline.server.js +69 -100
  130. package/dist/mcps/registry.json +1 -1
  131. package/dist/mcps/researcher.server.d.ts +3 -5
  132. package/dist/mcps/researcher.server.js +81 -154
  133. package/dist/mcps/security-scan.server.d.ts +2 -4
  134. package/dist/mcps/security-scan.server.js +54 -96
  135. package/dist/mcps/shared/knowledge-skill-base.d.ts +14 -0
  136. package/dist/mcps/shared/knowledge-skill-base.js +45 -0
  137. package/dist/{security → mcps/shared}/security-scanner.js +1 -1
  138. package/dist/mcps/state-manager.server.d.ts +2 -4
  139. package/dist/mcps/state-manager.server.js +115 -160
  140. package/dist/orchestrator/orchestrator.d.ts +1 -1
  141. package/dist/orchestrator/orchestrator.js +1 -1
  142. package/dist/orchestrator/universal-registry-bridge.js +1 -1
  143. package/dist/plugin/xray-codex-injection.d.ts +1 -1
  144. package/dist/plugin/xray-codex-injection.js +1 -1
  145. package/dist/postprocessor/PostProcessor.d.ts +4 -44
  146. package/dist/postprocessor/PostProcessor.js +39 -553
  147. package/dist/postprocessor/analysis/CodeChangeAnalyzer.d.ts +11 -0
  148. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  149. package/dist/postprocessor/compliance/ArchitecturalComplianceChecker.d.ts +11 -0
  150. package/dist/postprocessor/compliance/ArchitecturalComplianceChecker.js +356 -0
  151. package/dist/postprocessor/config/ProcessorConfigLoader.d.ts +44 -0
  152. package/dist/postprocessor/config/ProcessorConfigLoader.js +21 -0
  153. package/dist/postprocessor/reporting/PostProcessorReporter.d.ts +19 -0
  154. package/dist/postprocessor/reporting/PostProcessorReporter.js +96 -0
  155. package/dist/postprocessor/triggers/GitHookTrigger.js +11 -11
  156. package/dist/processors/implementations/refactoring-logging-processor-wrapper.d.ts +32 -0
  157. package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +95 -1
  158. package/dist/processors/processor-manager.js +346 -314
  159. package/dist/reporting/report-formatter.js +1 -1
  160. package/dist/security/security-hardener.d.ts +69 -2
  161. package/dist/security/security-hardener.js +129 -1
  162. package/dist/skills/registry.json +1 -1
  163. package/dist/state/index.d.ts +3 -5
  164. package/dist/state/index.js +1 -7
  165. package/dist/state/state-manager.d.ts +1 -1
  166. package/dist/state/state-manager.js +2 -3
  167. package/package.json +14 -10
  168. package/scripts/node/setup.cjs +32 -0
  169. package/scripts/node/universal-version-manager.js +11 -11
  170. package/src/mcps/architect-tools.server.ts +112 -215
  171. package/src/mcps/auto-format.server.ts +50 -110
  172. package/src/mcps/boot-orchestrator.server.ts +75 -121
  173. package/src/mcps/config/__tests__/server-config-registry.test.ts +21 -12
  174. package/src/mcps/config/server-config-registry.ts +3 -3
  175. package/src/mcps/enforcer-tools.server.ts +212 -310
  176. package/src/mcps/estimation.server.ts +62 -122
  177. package/src/mcps/framework-compliance-audit.server.ts +52 -97
  178. package/src/mcps/framework-help.server.ts +64 -114
  179. package/src/mcps/governance.server.ts +2 -2
  180. package/src/mcps/knowledge-skills/api-design.server.ts +32 -77
  181. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +31 -87
  182. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +165 -193
  183. package/src/mcps/knowledge-skills/code-analyzer.server.ts +20 -55
  184. package/src/mcps/knowledge-skills/code-review.server.ts +114 -161
  185. package/src/mcps/knowledge-skills/content-creator.server.ts +218 -255
  186. package/src/mcps/knowledge-skills/database-design.server.ts +118 -165
  187. package/src/mcps/knowledge-skills/devops-deployment.server.ts +67 -172
  188. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  189. package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -361
  190. package/src/mcps/knowledge-skills/log-monitor.server.ts +160 -187
  191. package/src/mcps/knowledge-skills/mobile-development.server.ts +89 -223
  192. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +128 -175
  193. package/src/mcps/knowledge-skills/performance-optimization.server.ts +156 -329
  194. package/src/mcps/knowledge-skills/project-analysis.server.ts +72 -248
  195. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +59 -171
  196. package/src/mcps/knowledge-skills/security-audit.server.ts +104 -151
  197. package/src/mcps/knowledge-skills/seo-consultant.server.ts +80 -220
  198. package/src/mcps/knowledge-skills/session-management.server.ts +51 -232
  199. package/src/mcps/knowledge-skills/skill-invocation.server.ts +165 -372
  200. package/src/mcps/knowledge-skills/strategist.server.ts +72 -143
  201. package/src/mcps/knowledge-skills/tech-writer.server.ts +85 -350
  202. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +146 -195
  203. package/src/mcps/knowledge-skills/testing-strategy.server.ts +75 -161
  204. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +93 -487
  205. package/src/mcps/lint.server.ts +53 -107
  206. package/src/mcps/mcp-client.ts +2 -2
  207. package/src/mcps/model-health-check.server.ts +34 -71
  208. package/src/mcps/performance-analysis.server.ts +60 -104
  209. package/src/mcps/processor-pipeline.server.ts +72 -110
  210. package/src/mcps/registry.json +1 -1
  211. package/src/mcps/researcher.server.ts +88 -177
  212. package/src/mcps/security-scan.server.ts +55 -104
  213. package/src/mcps/shared/knowledge-skill-base.ts +62 -0
  214. package/src/mcps/shared/prompt-security-validator.ts +199 -0
  215. package/src/mcps/shared/security-scanner.ts +599 -0
  216. package/src/mcps/state-manager.server.ts +117 -175
  217. package/src/opencode/codex.codex +1 -1
  218. package/src/opencode/commands/dependency-audit.md +3 -3
  219. package/src/opencode/enforcer-config.json +2 -2
  220. package/src/skills/registry.json +1 -1
  221. package/xray/agents_template.md +109 -0
  222. package/xray/codex.json +598 -0
  223. package/xray/config.json +26 -0
  224. package/xray/features.json +132 -0
  225. package/xray/integrations.json +23 -0
  226. package/xray/routing-mappings.json +752 -0
  227. package/xray/workflow_state.json +28 -0
  228. package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
  229. package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
  230. package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
  231. package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
  232. package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
  233. package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
  234. package/dist/integrations/hermes-agent/conftest.py +0 -14
  235. package/dist/integrations/hermes-agent/test_plugin.py +0 -1103
  236. package/dist/processors/implementations/refactoring-logging-processor.d.ts +0 -31
  237. package/dist/processors/implementations/refactoring-logging-processor.js +0 -96
  238. package/dist/processors/implementations/session-capture-processor.d.ts +0 -14
  239. package/dist/processors/implementations/session-capture-processor.js +0 -37
  240. package/dist/scripts/activate-kernel-pipeline.d.ts +0 -7
  241. package/dist/scripts/activate-kernel-pipeline.js +0 -101
  242. package/dist/security/index.d.ts +0 -13
  243. package/dist/security/index.js +0 -13
  244. package/dist/security/security-agent-coordinator.d.ts +0 -72
  245. package/dist/security/security-agent-coordinator.js +0 -204
  246. package/dist/security/security-auditor.d.ts +0 -56
  247. package/dist/security/security-auditor.js +0 -584
  248. package/dist/security/security-hardening-system.d.ts +0 -239
  249. package/dist/security/security-hardening-system.js +0 -727
  250. package/dist/security/security-orchestration-layer.d.ts +0 -119
  251. package/dist/security/security-orchestration-layer.js +0 -496
  252. /package/dist/{security → mcps/shared}/prompt-security-validator.d.ts +0 -0
  253. /package/dist/{security → mcps/shared}/prompt-security-validator.js +0 -0
  254. /package/dist/{security → mcps/shared}/security-scanner.d.ts +0 -0
@@ -3,106 +3,69 @@
3
3
  *
4
4
  * Automated security vulnerability scanning with dependency and code analysis
5
5
  */
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
6
  import { execFileSync } from "child_process";
10
7
  import fs from "fs";
11
8
  import path from "path";
12
9
  import { detectProjectLanguage, LANGUAGE_CONFIGS, } from "../utils/language-detector.js";
13
10
  import { frameworkLogger } from "../core/framework-logger.js";
14
- class XraySecurityScanServer {
15
- server;
11
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
12
+ class XraySecurityScanServer extends XrayKnowledgeSkillBase {
16
13
  constructor() {
17
- this.server = new Server({
18
- name: "security-scan", version: "2.0.1",
19
- }, {
20
- capabilities: {
21
- tools: {},
22
- },
23
- });
24
- this.setupToolHandlers();
25
- frameworkLogger.log("mcps/security-scan", "initialize", "info");
26
- }
27
- setupToolHandlers() {
28
- // List available tools
29
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
30
- return {
31
- tools: [
32
- {
33
- name: "security-scan",
34
- description: "Comprehensive security vulnerability scanning with dependency and code analysis",
35
- inputSchema: {
36
- type: "object",
37
- properties: {
38
- scope: {
39
- type: "string",
40
- enum: ["dependencies", "code", "full"],
41
- default: "full",
42
- description: "Scope of security scan",
43
- },
44
- auditLevel: {
45
- type: "string",
46
- enum: ["info", "low", "moderate", "high", "critical"],
47
- default: "moderate",
48
- description: "Audit level for vulnerability detection",
49
- },
50
- includeOutdated: {
51
- type: "boolean",
52
- default: true,
53
- description: "Include outdated package analysis",
54
- },
55
- },
14
+ super("security-scan", "2.0.1");
15
+ this.tools = [
16
+ {
17
+ name: "security-scan",
18
+ description: "Comprehensive security vulnerability scanning with dependency and code analysis",
19
+ inputSchema: {
20
+ type: "object",
21
+ properties: {
22
+ scope: {
23
+ type: "string",
24
+ enum: ["dependencies", "code", "full"],
25
+ default: "full",
26
+ description: "Scope of security scan",
56
27
  },
57
- },
58
- {
59
- name: "dependency-audit",
60
- description: "Audit third-party dependencies for security vulnerabilities",
61
- inputSchema: {
62
- type: "object",
63
- properties: {
64
- packageManager: {
65
- type: "string",
66
- enum: ["npm", "yarn", "pnpm", "auto"],
67
- default: "auto",
68
- description: "Package manager to use",
69
- },
70
- auditLevel: {
71
- type: "string",
72
- enum: ["info", "low", "moderate", "high", "critical"],
73
- default: "moderate",
74
- },
75
- },
28
+ auditLevel: {
29
+ type: "string",
30
+ enum: ["info", "low", "moderate", "high", "critical"],
31
+ default: "moderate",
32
+ description: "Audit level for vulnerability detection",
33
+ },
34
+ includeOutdated: {
35
+ type: "boolean",
36
+ default: true,
37
+ description: "Include outdated package analysis",
76
38
  },
77
39
  },
78
- ],
79
- };
80
- });
81
- // Handle tool calls
82
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
83
- const { name, arguments: args } = request.params;
84
- try {
85
- switch (name) {
86
- case "security-scan":
87
- return await this.handleSecurityScan(args);
88
- case "dependency-audit":
89
- return await this.handleDependencyAudit(args);
90
- default:
91
- throw new Error(`Unknown tool: ${name}`);
92
- }
93
- }
94
- catch (error) {
95
- frameworkLogger.log("mcps/security-scan", "tool-handler", "error", { tool: name, error: String(error) });
96
- return {
97
- content: [
98
- {
99
- type: "text",
100
- text: `Error executing tool "${name}": ${error instanceof Error ? error.message : String(error)}`,
40
+ },
41
+ },
42
+ {
43
+ name: "dependency-audit",
44
+ description: "Audit third-party dependencies for security vulnerabilities",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ packageManager: {
49
+ type: "string",
50
+ enum: ["npm", "yarn", "pnpm", "auto"],
51
+ default: "auto",
52
+ description: "Package manager to use",
101
53
  },
102
- ],
103
- };
104
- }
105
- });
54
+ auditLevel: {
55
+ type: "string",
56
+ enum: ["info", "low", "moderate", "high", "critical"],
57
+ default: "moderate",
58
+ },
59
+ },
60
+ },
61
+ },
62
+ ];
63
+ this.handlers = {
64
+ "security-scan": async (args) => this.handleSecurityScan(args),
65
+ "dependency-audit": async (args) => this.handleDependencyAudit(args),
66
+ };
67
+ this.setupToolHandlers();
68
+ frameworkLogger.log("mcps/security-scan", "initialize", "info");
106
69
  }
107
70
  async handleSecurityScan(args) {
108
71
  const { scope, auditLevel, includeOutdated } = args;
@@ -517,15 +480,10 @@ ${results.recommendations.map((r) => `• ${r}`).join("\n") || "No recommendatio
517
480
  - Threats: ${threatCount}
518
481
  - Recommendations: ${recCount}`;
519
482
  }
520
- async run() {
521
- const transport = new StdioServerTransport();
522
- await this.server.connect(transport);
523
- frameworkLogger.log("mcps/security-scan", "start", "info");
524
- }
525
483
  }
526
484
  // Start the server if run directly
527
485
  if (import.meta.url === `file://${process.argv[1]}`) {
528
486
  const server = new XraySecurityScanServer();
529
- server.run().catch((error) => frameworkLogger.log("mcps/security-scan", "run", "error", { error: String(error) }));
487
+ server.run("security-scan").catch((error) => frameworkLogger.log("mcps/security-scan", "run", "error", { error: String(error) }));
530
488
  }
531
489
  export { XraySecurityScanServer };
@@ -0,0 +1,14 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ export interface ToolDefinition {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: object;
6
+ }
7
+ export declare class XrayKnowledgeSkillBase {
8
+ protected tools: ToolDefinition[];
9
+ protected handlers: Record<string, (args: unknown) => Promise<any>>;
10
+ protected server: Server;
11
+ constructor(serverName: string, version?: string);
12
+ protected setupToolHandlers(): void;
13
+ run(serverName: string): Promise<void>;
14
+ }
@@ -0,0 +1,45 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
4
+ import { frameworkLogger } from "../../core/framework-logger.js";
5
+ import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
6
+ export class XrayKnowledgeSkillBase {
7
+ tools = [];
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ handlers = {};
10
+ server;
11
+ constructor(serverName, version = "2.0.1") {
12
+ this.server = new Server({ name: serverName, version }, { capabilities: { tools: {} } });
13
+ }
14
+ setupToolHandlers() {
15
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
16
+ tools: this.tools.map((t) => ({
17
+ name: t.name,
18
+ description: t.description,
19
+ inputSchema: t.inputSchema,
20
+ })),
21
+ }));
22
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
23
+ const { name, arguments: args } = request.params;
24
+ const handler = this.handlers[name];
25
+ if (!handler) {
26
+ throw new Error(`Unknown tool: ${name}`);
27
+ }
28
+ try {
29
+ return await handler(args);
30
+ }
31
+ catch (error) {
32
+ return {
33
+ content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
34
+ isError: true,
35
+ };
36
+ }
37
+ });
38
+ }
39
+ async run(serverName) {
40
+ const transport = new StdioServerTransport();
41
+ await this.server.connect(transport);
42
+ createGracefulShutdown({ serverName, server: this.server });
43
+ await frameworkLogger.log(serverName, "server-started", "success");
44
+ }
45
+ }
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { exec } from "child_process";
8
8
  import { promises as fs } from "fs";
9
- import { frameworkLogger } from "../core/framework-logger.js";
9
+ import { frameworkLogger } from "../../core/framework-logger.js";
10
10
  import { promisify } from "util";
11
11
  import { promptSecurityValidator, } from "./prompt-security-validator.js";
12
12
  const execAsync = promisify(exec);
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * Advanced state management with persistence, synchronization, and conflict resolution
5
5
  */
6
- declare class StrRayStateManagerServer {
7
- private server;
6
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
7
+ declare class StrRayStateManagerServer extends XrayKnowledgeSkillBase {
8
8
  private state;
9
9
  private stateFile;
10
10
  private backups;
@@ -12,7 +12,6 @@ declare class StrRayStateManagerServer {
12
12
  private ensureStateDirectory;
13
13
  private loadState;
14
14
  private saveState;
15
- private setupToolHandlers;
16
15
  private handleGetState;
17
16
  private handleSetState;
18
17
  private handleDeleteState;
@@ -23,6 +22,5 @@ declare class StrRayStateManagerServer {
23
22
  private validateStateValue;
24
23
  private repairStateValue;
25
24
  private findDependentKeys;
26
- run(): Promise<void>;
27
25
  }
28
26
  export { StrRayStateManagerServer };
@@ -3,25 +3,128 @@
3
3
  *
4
4
  * Advanced state management with persistence, synchronization, and conflict resolution
5
5
  */
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
6
  import fs from "fs";
10
7
  import path from "path";
11
8
  import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
12
- class StrRayStateManagerServer {
13
- server;
9
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
10
+ class StrRayStateManagerServer extends XrayKnowledgeSkillBase {
14
11
  state = new Map();
15
12
  stateFile;
16
13
  backups = new Map();
17
14
  constructor() {
18
- this.server = new Server({
19
- name: "state-manager", version: "2.0.1",
20
- }, {
21
- capabilities: {
22
- tools: {},
15
+ super("state-manager", "2.0.1");
16
+ this.tools = [
17
+ {
18
+ name: "get-state",
19
+ description: "Get state value by key with type safety and validation",
20
+ inputSchema: {
21
+ type: "object",
22
+ properties: {
23
+ key: { type: "string" },
24
+ defaultValue: {
25
+ oneOf: [
26
+ { type: "string" },
27
+ { type: "number" },
28
+ { type: "boolean" },
29
+ { type: "object" },
30
+ { type: "array" },
31
+ ],
32
+ },
33
+ validate: { type: "boolean", default: true },
34
+ },
35
+ required: ["key"],
36
+ },
37
+ },
38
+ {
39
+ name: "set-state",
40
+ description: "Set state value by key with conflict resolution and persistence",
41
+ inputSchema: {
42
+ type: "object",
43
+ properties: {
44
+ key: { type: "string" },
45
+ value: {
46
+ oneOf: [
47
+ { type: "string" },
48
+ { type: "number" },
49
+ { type: "boolean" },
50
+ { type: "object" },
51
+ { type: "array" },
52
+ ],
53
+ },
54
+ persist: { type: "boolean", default: true },
55
+ backup: { type: "boolean", default: false },
56
+ },
57
+ required: ["key", "value"],
58
+ },
59
+ },
60
+ {
61
+ name: "delete-state",
62
+ description: "Delete state value by key with cleanup and validation",
63
+ inputSchema: {
64
+ type: "object",
65
+ properties: {
66
+ key: { type: "string" },
67
+ force: { type: "boolean", default: false },
68
+ },
69
+ required: ["key"],
70
+ },
71
+ },
72
+ {
73
+ name: "list-state",
74
+ description: "List all state keys with filtering and metadata",
75
+ inputSchema: {
76
+ type: "object",
77
+ properties: {
78
+ prefix: { type: "string" },
79
+ includeValues: { type: "boolean", default: false },
80
+ limit: { type: "number", default: 100 },
81
+ },
82
+ },
83
+ },
84
+ {
85
+ name: "backup-state",
86
+ description: "Create backup of current state or specific keys",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ keys: { type: "array", items: { type: "string" } },
91
+ name: { type: "string" },
92
+ },
93
+ },
94
+ },
95
+ {
96
+ name: "restore-state",
97
+ description: "Restore state from backup",
98
+ inputSchema: {
99
+ type: "object",
100
+ properties: {
101
+ name: { type: "string" },
102
+ keys: { type: "array", items: { type: "string" } },
103
+ },
104
+ required: ["name"],
105
+ },
23
106
  },
24
- });
107
+ {
108
+ name: "validate-state",
109
+ description: "Validate state integrity and consistency",
110
+ inputSchema: {
111
+ type: "object",
112
+ properties: {
113
+ deep: { type: "boolean", default: false },
114
+ repair: { type: "boolean", default: false },
115
+ },
116
+ },
117
+ },
118
+ ];
119
+ this.handlers = {
120
+ "get-state": async (args) => this.handleGetState(args),
121
+ "set-state": async (args) => this.handleSetState(args),
122
+ "delete-state": async (args) => this.handleDeleteState(args),
123
+ "list-state": async (args) => this.handleListState(args),
124
+ "backup-state": async (args) => this.handleBackupState(args),
125
+ "restore-state": async (args) => this.handleRestoreState(args),
126
+ "validate-state": async (args) => this.handleValidateState(args),
127
+ };
25
128
  this.stateFile = path.join(process.cwd(), ".opencode", "state", "mcp-state.json");
26
129
  this.ensureStateDirectory();
27
130
  this.loadState();
@@ -61,148 +164,6 @@ class StrRayStateManagerServer {
61
164
  throw error;
62
165
  }
63
166
  }
64
- setupToolHandlers() {
65
- // List available tools
66
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
67
- return {
68
- tools: [
69
- {
70
- name: "get-state",
71
- description: "Get state value by key with type safety and validation",
72
- inputSchema: {
73
- type: "object",
74
- properties: {
75
- key: { type: "string" },
76
- defaultValue: {
77
- oneOf: [
78
- { type: "string" },
79
- { type: "number" },
80
- { type: "boolean" },
81
- { type: "object" },
82
- { type: "array" },
83
- ],
84
- },
85
- validate: { type: "boolean", default: true },
86
- },
87
- required: ["key"],
88
- },
89
- },
90
- {
91
- name: "set-state",
92
- description: "Set state value by key with conflict resolution and persistence",
93
- inputSchema: {
94
- type: "object",
95
- properties: {
96
- key: { type: "string" },
97
- value: {
98
- oneOf: [
99
- { type: "string" },
100
- { type: "number" },
101
- { type: "boolean" },
102
- { type: "object" },
103
- { type: "array" },
104
- ],
105
- },
106
- persist: { type: "boolean", default: true },
107
- backup: { type: "boolean", default: false },
108
- },
109
- required: ["key", "value"],
110
- },
111
- },
112
- {
113
- name: "delete-state",
114
- description: "Delete state value by key with cleanup and validation",
115
- inputSchema: {
116
- type: "object",
117
- properties: {
118
- key: { type: "string" },
119
- force: { type: "boolean", default: false },
120
- },
121
- required: ["key"],
122
- },
123
- },
124
- {
125
- name: "list-state",
126
- description: "List all state keys with filtering and metadata",
127
- inputSchema: {
128
- type: "object",
129
- properties: {
130
- prefix: { type: "string" },
131
- includeValues: { type: "boolean", default: false },
132
- limit: { type: "number", default: 100 },
133
- },
134
- },
135
- },
136
- {
137
- name: "backup-state",
138
- description: "Create backup of current state or specific keys",
139
- inputSchema: {
140
- type: "object",
141
- properties: {
142
- keys: { type: "array", items: { type: "string" } },
143
- name: { type: "string" },
144
- },
145
- },
146
- },
147
- {
148
- name: "restore-state",
149
- description: "Restore state from backup",
150
- inputSchema: {
151
- type: "object",
152
- properties: {
153
- name: { type: "string" },
154
- keys: { type: "array", items: { type: "string" } },
155
- },
156
- required: ["name"],
157
- },
158
- },
159
- {
160
- name: "validate-state",
161
- description: "Validate state integrity and consistency",
162
- inputSchema: {
163
- type: "object",
164
- properties: {
165
- deep: { type: "boolean", default: false },
166
- repair: { type: "boolean", default: false },
167
- },
168
- },
169
- },
170
- ],
171
- };
172
- });
173
- // Handle tool calls
174
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
175
- try {
176
- const { name, arguments: args } = request.params;
177
- switch (name) {
178
- case "get-state":
179
- return await this.handleGetState(args);
180
- case "set-state":
181
- return await this.handleSetState(args);
182
- case "delete-state":
183
- return await this.handleDeleteState(args);
184
- case "list-state":
185
- return await this.handleListState(args);
186
- case "backup-state":
187
- return await this.handleBackupState(args);
188
- case "restore-state":
189
- return await this.handleRestoreState(args);
190
- case "validate-state":
191
- return await this.handleValidateState(args);
192
- default:
193
- throw new Error(`Unknown tool: ${name}`);
194
- }
195
- }
196
- catch (error) {
197
- return {
198
- content: [{
199
- type: "text",
200
- text: `Error handling tool '${request.params.name}': ${error instanceof Error ? error.message : String(error)}`,
201
- }],
202
- };
203
- }
204
- });
205
- }
206
167
  async handleGetState(args) {
207
168
  const key = args.key;
208
169
  const defaultValue = args.defaultValue;
@@ -622,16 +583,10 @@ ${results.repairedKeys.length > 0 ? `**Repaired Keys:**\n${results.repairedKeys.
622
583
  }
623
584
  return dependents;
624
585
  }
625
- async run() {
626
- const transport = new StdioServerTransport();
627
- await this.server.connect(transport);
628
- const jobId = generateJobId("mcp-state-manager-start");
629
- frameworkLogger.log("mcps/state-manager", "start", "success", {}, undefined, jobId);
630
- }
631
586
  }
632
587
  // Start the server if run directly
633
588
  if (import.meta.url === `file://${process.argv[1]}`) {
634
589
  const server = new StrRayStateManagerServer();
635
- server.run().catch((error) => frameworkLogger.log("mcps/state-manager", "run", "error", { error: String(error) }));
590
+ server.run("state-manager").catch((error) => frameworkLogger.log("mcps/state-manager", "run", "error", { error: String(error) }));
636
591
  }
637
592
  export { StrRayStateManagerServer };
@@ -140,4 +140,4 @@ export declare class XrayOrchestrator {
140
140
  };
141
141
  }
142
142
  export declare const xrayOrchestrator: XrayOrchestrator;
143
- export { xrayOrchestrator as strRayOrchestrator, XrayOrchestrator as StringRayOrchestrator };
143
+ export { xrayOrchestrator as strRayOrchestrator };
@@ -656,4 +656,4 @@ export class XrayOrchestrator {
656
656
  // Export singleton instance
657
657
  export const xrayOrchestrator = new XrayOrchestrator();
658
658
  // Backward compat alias
659
- export { xrayOrchestrator as strRayOrchestrator, XrayOrchestrator as StringRayOrchestrator };
659
+ export { xrayOrchestrator as strRayOrchestrator };
@@ -114,7 +114,7 @@ export class UniversalRegistryBridge {
114
114
  currentAgent = {
115
115
  name: nameMatch[1].trim(),
116
116
  description: "",
117
- version: "2.0.1",
117
+ version: "2.1.1",
118
118
  };
119
119
  inAgent = true;
120
120
  continue;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Consumer runtime compat shim from prior StringRay releases (1-line min per Scope Rule; xray codex injection + XRAY_||STRRAY_ env + .xray fallbacks).
2
+ * Consumer runtime compat (xray codex injection + XRAY_ env + .xray fallbacks).
3
3
  */
4
4
  interface ToolExecuteAfterInput {
5
5
  tool: string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Consumer runtime compat shim from prior StringRay releases (1-line min per Scope Rule; xray codex injection + XRAY_||STRRAY_ env + .xray fallbacks).
2
+ * Consumer runtime compat (xray codex injection + XRAY_ env + .xray fallbacks).
3
3
  */
4
4
  import * as fs from "fs";
5
5
  import * as path from "path";