0xray 2.1.2 → 2.1.4

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 (250) 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 +2 -1
  5. package/README.md +12 -11
  6. package/dist/AGENTS.md +2 -1
  7. package/dist/CHANGELOG.md +38 -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 +13 -10
  168. package/scripts/node/universal-version-manager.js +11 -11
  169. package/src/mcps/architect-tools.server.ts +112 -215
  170. package/src/mcps/auto-format.server.ts +50 -110
  171. package/src/mcps/boot-orchestrator.server.ts +75 -121
  172. package/src/mcps/config/__tests__/server-config-registry.test.ts +21 -12
  173. package/src/mcps/config/server-config-registry.ts +3 -3
  174. package/src/mcps/enforcer-tools.server.ts +212 -310
  175. package/src/mcps/estimation.server.ts +62 -122
  176. package/src/mcps/framework-compliance-audit.server.ts +52 -97
  177. package/src/mcps/framework-help.server.ts +64 -114
  178. package/src/mcps/governance.server.ts +2 -2
  179. package/src/mcps/knowledge-skills/api-design.server.ts +32 -77
  180. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +31 -87
  181. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +165 -193
  182. package/src/mcps/knowledge-skills/code-analyzer.server.ts +20 -55
  183. package/src/mcps/knowledge-skills/code-review.server.ts +114 -161
  184. package/src/mcps/knowledge-skills/content-creator.server.ts +218 -255
  185. package/src/mcps/knowledge-skills/database-design.server.ts +118 -165
  186. package/src/mcps/knowledge-skills/devops-deployment.server.ts +67 -172
  187. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  188. package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -361
  189. package/src/mcps/knowledge-skills/log-monitor.server.ts +160 -187
  190. package/src/mcps/knowledge-skills/mobile-development.server.ts +89 -223
  191. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +128 -175
  192. package/src/mcps/knowledge-skills/performance-optimization.server.ts +156 -329
  193. package/src/mcps/knowledge-skills/project-analysis.server.ts +72 -248
  194. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +59 -171
  195. package/src/mcps/knowledge-skills/security-audit.server.ts +104 -151
  196. package/src/mcps/knowledge-skills/seo-consultant.server.ts +80 -220
  197. package/src/mcps/knowledge-skills/session-management.server.ts +51 -232
  198. package/src/mcps/knowledge-skills/skill-invocation.server.ts +165 -372
  199. package/src/mcps/knowledge-skills/strategist.server.ts +72 -143
  200. package/src/mcps/knowledge-skills/tech-writer.server.ts +85 -350
  201. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +146 -195
  202. package/src/mcps/knowledge-skills/testing-strategy.server.ts +75 -161
  203. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +93 -487
  204. package/src/mcps/lint.server.ts +53 -107
  205. package/src/mcps/mcp-client.ts +2 -2
  206. package/src/mcps/model-health-check.server.ts +34 -71
  207. package/src/mcps/performance-analysis.server.ts +60 -104
  208. package/src/mcps/processor-pipeline.server.ts +72 -110
  209. package/src/mcps/registry.json +1 -1
  210. package/src/mcps/researcher.server.ts +88 -177
  211. package/src/mcps/security-scan.server.ts +55 -104
  212. package/src/mcps/shared/knowledge-skill-base.ts +62 -0
  213. package/src/mcps/shared/prompt-security-validator.ts +199 -0
  214. package/src/mcps/shared/security-scanner.ts +599 -0
  215. package/src/mcps/state-manager.server.ts +117 -175
  216. package/src/opencode/codex.codex +1 -1
  217. package/src/opencode/commands/dependency-audit.md +3 -3
  218. package/src/opencode/enforcer-config.json +2 -2
  219. package/src/skills/registry.json +1 -1
  220. package/xray/codex.json +1 -1
  221. package/xray/config.json +1 -1
  222. package/xray/features.json +1 -1
  223. package/xray/integrations.json +3 -3
  224. package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
  225. package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
  226. package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
  227. package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
  228. package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
  229. package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
  230. package/dist/integrations/hermes-agent/conftest.py +0 -14
  231. package/dist/integrations/hermes-agent/test_plugin.py +0 -1103
  232. package/dist/processors/implementations/refactoring-logging-processor.d.ts +0 -31
  233. package/dist/processors/implementations/refactoring-logging-processor.js +0 -96
  234. package/dist/processors/implementations/session-capture-processor.d.ts +0 -14
  235. package/dist/processors/implementations/session-capture-processor.js +0 -37
  236. package/dist/scripts/activate-kernel-pipeline.d.ts +0 -7
  237. package/dist/scripts/activate-kernel-pipeline.js +0 -101
  238. package/dist/security/index.d.ts +0 -13
  239. package/dist/security/index.js +0 -13
  240. package/dist/security/security-agent-coordinator.d.ts +0 -72
  241. package/dist/security/security-agent-coordinator.js +0 -204
  242. package/dist/security/security-auditor.d.ts +0 -56
  243. package/dist/security/security-auditor.js +0 -584
  244. package/dist/security/security-hardening-system.d.ts +0 -239
  245. package/dist/security/security-hardening-system.js +0 -727
  246. package/dist/security/security-orchestration-layer.d.ts +0 -119
  247. package/dist/security/security-orchestration-layer.js +0 -496
  248. /package/dist/{security → mcps/shared}/prompt-security-validator.d.ts +0 -0
  249. /package/dist/{security → mcps/shared}/prompt-security-validator.js +0 -0
  250. /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.3",
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";