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.
- package/.opencode/codex.codex +1 -1
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/enforcer-config.json +2 -2
- package/AGENTS.md +2 -1
- package/README.md +12 -11
- package/dist/AGENTS.md +2 -1
- package/dist/CHANGELOG.md +38 -0
- package/dist/README.md +12 -11
- package/dist/agents/code-reviewer.js +1 -1
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/cli/index.js +11 -1
- package/dist/cli/server.js +3 -3
- package/dist/core/activity-logger.d.ts +2 -2
- package/dist/core/activity-logger.js +4 -4
- package/dist/core/boot-orchestrator.d.ts +1 -1
- package/dist/core/boot-orchestrator.js +13 -28
- package/dist/core/bridge.mjs +3 -3
- package/dist/core/codex-formatter.js +2 -2
- package/dist/core/codex-injector.d.ts +0 -1
- package/dist/core/codex-injector.js +2 -3
- package/dist/core/config-loader.d.ts +1 -1
- package/dist/core/config-loader.js +1 -1
- package/dist/core/config-paths.d.ts +0 -2
- package/dist/core/config-paths.js +7 -8
- package/dist/core/context-loader.d.ts +1 -1
- package/dist/core/context-loader.js +1 -1
- package/dist/core/errors.d.ts +3 -0
- package/dist/core/errors.js +10 -0
- package/dist/core/features-config.js +1 -1
- package/dist/core/framework-logger.d.ts +3 -3
- package/dist/core/framework-logger.js +17 -9
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +4 -2
- package/dist/core/logging-config.d.ts +2 -1
- package/dist/core/logging-config.js +7 -7
- package/dist/enforcement/loaders/codex-loader.js +1 -1
- package/dist/execution/opencode-cli-invoker.js +5 -5
- package/dist/governance/governance-service.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/inference/inference-cycle.d.ts +1 -1
- package/dist/inference/inference-cycle.js +10 -10
- package/dist/integrations/base/Integration.js +1 -1
- package/dist/integrations/base/registry.js +19 -19
- package/dist/integrations/grok/grok-cli.js +17 -17
- package/dist/integrations/grok/hooks/pre-tool-use.js +1 -1
- package/dist/integrations/hermes-agent/bridge.mjs +1 -1
- package/dist/integrations/openclaw/api-server.d.ts +0 -1
- package/dist/integrations/openclaw/api-server.js +7 -10
- package/dist/integrations/openclaw/client.d.ts +0 -1
- package/dist/integrations/openclaw/client.js +22 -24
- package/dist/integrations/openclaw/hooks/xray-hooks.d.ts +0 -1
- package/dist/integrations/openclaw/hooks/xray-hooks.js +17 -18
- package/dist/integrations/plugins/plugin-registry.js +5 -5
- package/dist/mcps/architect-tools.server.d.ts +2 -4
- package/dist/mcps/architect-tools.server.js +112 -195
- package/dist/mcps/auto-format.server.d.ts +2 -4
- package/dist/mcps/auto-format.server.js +49 -95
- package/dist/mcps/boot-orchestrator.server.d.ts +2 -4
- package/dist/mcps/boot-orchestrator.server.js +73 -105
- package/dist/mcps/config/server-config-registry.js +3 -3
- package/dist/mcps/enforcer-tools.server.d.ts +2 -4
- package/dist/mcps/enforcer-tools.server.js +202 -285
- package/dist/mcps/estimation.server.d.ts +2 -4
- package/dist/mcps/estimation.server.js +63 -107
- package/dist/mcps/framework-compliance-audit.server.d.ts +2 -4
- package/dist/mcps/framework-compliance-audit.server.js +53 -82
- package/dist/mcps/framework-help.server.d.ts +2 -4
- package/dist/mcps/framework-help.server.js +63 -101
- package/dist/mcps/governance.server.js +2 -2
- package/dist/mcps/knowledge-skills/api-design.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/api-design.server.js +35 -67
- package/dist/mcps/knowledge-skills/architecture-patterns.server.d.ts +2 -10
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +35 -74
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +143 -162
- package/dist/mcps/knowledge-skills/code-analyzer.server.d.ts +3 -4
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +20 -45
- package/dist/mcps/knowledge-skills/code-review.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/code-review.server.js +109 -143
- package/dist/mcps/knowledge-skills/content-creator.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/content-creator.server.js +205 -226
- package/dist/mcps/knowledge-skills/database-design.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/database-design.server.js +117 -151
- package/dist/mcps/knowledge-skills/devops-deployment.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +71 -160
- package/dist/mcps/knowledge-skills/git-workflow.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/git-workflow.server.js +36 -68
- package/dist/mcps/knowledge-skills/growth-strategist.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +303 -324
- package/dist/mcps/knowledge-skills/log-monitor.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/log-monitor.server.js +141 -160
- package/dist/mcps/knowledge-skills/mobile-development.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/mobile-development.server.js +92 -209
- package/dist/mcps/knowledge-skills/multimodal-looker.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +123 -159
- package/dist/mcps/knowledge-skills/performance-optimization.server.d.ts +2 -5
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +155 -296
- package/dist/mcps/knowledge-skills/project-analysis.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/project-analysis.server.js +75 -226
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +63 -156
- package/dist/mcps/knowledge-skills/security-audit.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/security-audit.server.js +102 -136
- package/dist/mcps/knowledge-skills/seo-consultant.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +80 -203
- package/dist/mcps/knowledge-skills/session-management.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/session-management.server.js +50 -203
- package/dist/mcps/knowledge-skills/skill-invocation.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +168 -347
- package/dist/mcps/knowledge-skills/strategist.server.d.ts +2 -11
- package/dist/mcps/knowledge-skills/strategist.server.js +72 -122
- package/dist/mcps/knowledge-skills/tech-writer.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/tech-writer.server.js +87 -300
- package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +147 -182
- package/dist/mcps/knowledge-skills/testing-strategy.server.d.ts +2 -4
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +78 -153
- package/dist/mcps/knowledge-skills/ui-ux-design.server.d.ts +2 -5
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +90 -399
- package/dist/mcps/lint.server.d.ts +2 -4
- package/dist/mcps/lint.server.js +51 -92
- package/dist/mcps/mcp-client.js +2 -2
- package/dist/mcps/model-health-check.server.d.ts +2 -4
- package/dist/mcps/model-health-check.server.js +32 -60
- package/dist/mcps/performance-analysis.server.d.ts +2 -4
- package/dist/mcps/performance-analysis.server.js +57 -88
- package/dist/mcps/processor-pipeline.server.d.ts +2 -4
- package/dist/mcps/processor-pipeline.server.js +69 -100
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.d.ts +3 -5
- package/dist/mcps/researcher.server.js +81 -154
- package/dist/mcps/security-scan.server.d.ts +2 -4
- package/dist/mcps/security-scan.server.js +54 -96
- package/dist/mcps/shared/knowledge-skill-base.d.ts +14 -0
- package/dist/mcps/shared/knowledge-skill-base.js +45 -0
- package/dist/{security → mcps/shared}/security-scanner.js +1 -1
- package/dist/mcps/state-manager.server.d.ts +2 -4
- package/dist/mcps/state-manager.server.js +115 -160
- package/dist/orchestrator/orchestrator.d.ts +1 -1
- package/dist/orchestrator/orchestrator.js +1 -1
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/plugin/xray-codex-injection.d.ts +1 -1
- package/dist/plugin/xray-codex-injection.js +1 -1
- package/dist/postprocessor/PostProcessor.d.ts +4 -44
- package/dist/postprocessor/PostProcessor.js +39 -553
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.d.ts +11 -0
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
- package/dist/postprocessor/compliance/ArchitecturalComplianceChecker.d.ts +11 -0
- package/dist/postprocessor/compliance/ArchitecturalComplianceChecker.js +356 -0
- package/dist/postprocessor/config/ProcessorConfigLoader.d.ts +44 -0
- package/dist/postprocessor/config/ProcessorConfigLoader.js +21 -0
- package/dist/postprocessor/reporting/PostProcessorReporter.d.ts +19 -0
- package/dist/postprocessor/reporting/PostProcessorReporter.js +96 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +11 -11
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.d.ts +32 -0
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +95 -1
- package/dist/processors/processor-manager.js +346 -314
- package/dist/reporting/report-formatter.js +1 -1
- package/dist/security/security-hardener.d.ts +69 -2
- package/dist/security/security-hardener.js +129 -1
- package/dist/skills/registry.json +1 -1
- package/dist/state/index.d.ts +3 -5
- package/dist/state/index.js +1 -7
- package/dist/state/state-manager.d.ts +1 -1
- package/dist/state/state-manager.js +2 -3
- package/package.json +13 -10
- package/scripts/node/universal-version-manager.js +11 -11
- package/src/mcps/architect-tools.server.ts +112 -215
- package/src/mcps/auto-format.server.ts +50 -110
- package/src/mcps/boot-orchestrator.server.ts +75 -121
- package/src/mcps/config/__tests__/server-config-registry.test.ts +21 -12
- package/src/mcps/config/server-config-registry.ts +3 -3
- package/src/mcps/enforcer-tools.server.ts +212 -310
- package/src/mcps/estimation.server.ts +62 -122
- package/src/mcps/framework-compliance-audit.server.ts +52 -97
- package/src/mcps/framework-help.server.ts +64 -114
- package/src/mcps/governance.server.ts +2 -2
- package/src/mcps/knowledge-skills/api-design.server.ts +32 -77
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +31 -87
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +165 -193
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +20 -55
- package/src/mcps/knowledge-skills/code-review.server.ts +114 -161
- package/src/mcps/knowledge-skills/content-creator.server.ts +218 -255
- package/src/mcps/knowledge-skills/database-design.server.ts +118 -165
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +67 -172
- package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -361
- package/src/mcps/knowledge-skills/log-monitor.server.ts +160 -187
- package/src/mcps/knowledge-skills/mobile-development.server.ts +89 -223
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +128 -175
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +156 -329
- package/src/mcps/knowledge-skills/project-analysis.server.ts +72 -248
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +59 -171
- package/src/mcps/knowledge-skills/security-audit.server.ts +104 -151
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +80 -220
- package/src/mcps/knowledge-skills/session-management.server.ts +51 -232
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +165 -372
- package/src/mcps/knowledge-skills/strategist.server.ts +72 -143
- package/src/mcps/knowledge-skills/tech-writer.server.ts +85 -350
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +146 -195
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +75 -161
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +93 -487
- package/src/mcps/lint.server.ts +53 -107
- package/src/mcps/mcp-client.ts +2 -2
- package/src/mcps/model-health-check.server.ts +34 -71
- package/src/mcps/performance-analysis.server.ts +60 -104
- package/src/mcps/processor-pipeline.server.ts +72 -110
- package/src/mcps/registry.json +1 -1
- package/src/mcps/researcher.server.ts +88 -177
- package/src/mcps/security-scan.server.ts +55 -104
- package/src/mcps/shared/knowledge-skill-base.ts +62 -0
- package/src/mcps/shared/prompt-security-validator.ts +199 -0
- package/src/mcps/shared/security-scanner.ts +599 -0
- package/src/mcps/state-manager.server.ts +117 -175
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/registry.json +1 -1
- package/xray/codex.json +1 -1
- package/xray/config.json +1 -1
- package/xray/features.json +1 -1
- package/xray/integrations.json +3 -3
- package/dist/integrations/hermes-agent/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/schemas.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313-pytest-9.0.2.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/test_plugin.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/__pycache__/tools.cpython-313.pyc +0 -0
- package/dist/integrations/hermes-agent/conftest.py +0 -14
- package/dist/integrations/hermes-agent/test_plugin.py +0 -1103
- package/dist/processors/implementations/refactoring-logging-processor.d.ts +0 -31
- package/dist/processors/implementations/refactoring-logging-processor.js +0 -96
- package/dist/processors/implementations/session-capture-processor.d.ts +0 -14
- package/dist/processors/implementations/session-capture-processor.js +0 -37
- package/dist/scripts/activate-kernel-pipeline.d.ts +0 -7
- package/dist/scripts/activate-kernel-pipeline.js +0 -101
- package/dist/security/index.d.ts +0 -13
- package/dist/security/index.js +0 -13
- package/dist/security/security-agent-coordinator.d.ts +0 -72
- package/dist/security/security-agent-coordinator.js +0 -204
- package/dist/security/security-auditor.d.ts +0 -56
- package/dist/security/security-auditor.js +0 -584
- package/dist/security/security-hardening-system.d.ts +0 -239
- package/dist/security/security-hardening-system.js +0 -727
- package/dist/security/security-orchestration-layer.d.ts +0 -119
- package/dist/security/security-orchestration-layer.js +0 -496
- /package/dist/{security → mcps/shared}/prompt-security-validator.d.ts +0 -0
- /package/dist/{security → mcps/shared}/prompt-security-validator.js +0 -0
- /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
|
-
|
|
15
|
-
|
|
11
|
+
import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
|
|
12
|
+
class XraySecurityScanServer extends XrayKnowledgeSkillBase {
|
|
16
13
|
constructor() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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 "
|
|
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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
|
659
|
+
export { xrayOrchestrator as strRayOrchestrator };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Consumer runtime compat
|
|
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
|
|
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";
|