0xray 2.1.2 → 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.
- 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 +26 -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
|
@@ -4,190 +4,164 @@
|
|
|
4
4
|
* Knowledge skill for comprehensive testing strategies, TDD/BDD implementation,
|
|
5
5
|
* test coverage optimization, and automated testing workflows
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
11
|
-
class XrayTestingBestPracticesServer {
|
|
12
|
-
server;
|
|
7
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
8
|
+
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
9
|
+
class XrayTestingBestPracticesServer extends XrayKnowledgeSkillBase {
|
|
13
10
|
constructor() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
type: "
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
type: "string",
|
|
36
|
-
description: "Path to codebase to analyze",
|
|
37
|
-
},
|
|
38
|
-
testFramework: {
|
|
39
|
-
type: "string",
|
|
40
|
-
description: "Testing framework used (jest, vitest, mocha, etc.)",
|
|
41
|
-
default: "auto-detect",
|
|
42
|
-
},
|
|
43
|
-
coverageThreshold: {
|
|
44
|
-
type: "number",
|
|
45
|
-
description: "Minimum coverage threshold (0-100)",
|
|
46
|
-
default: 80,
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
required: ["codePath"],
|
|
11
|
+
super("testing-best-practices", "2.0.1");
|
|
12
|
+
this.tools = [
|
|
13
|
+
{
|
|
14
|
+
name: "analyze_test_coverage",
|
|
15
|
+
description: "Analyze current test coverage and identify gaps",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
codePath: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Path to codebase to analyze",
|
|
22
|
+
},
|
|
23
|
+
testFramework: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "Testing framework used (jest, vitest, mocha, etc.)",
|
|
26
|
+
default: "auto-detect",
|
|
27
|
+
},
|
|
28
|
+
coverageThreshold: {
|
|
29
|
+
type: "number",
|
|
30
|
+
description: "Minimum coverage threshold (0-100)",
|
|
31
|
+
default: 80,
|
|
50
32
|
},
|
|
51
33
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
34
|
+
required: ["codePath"],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "design_test_strategy",
|
|
39
|
+
description: "Design comprehensive testing strategy for a project",
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
projectType: {
|
|
44
|
+
type: "string",
|
|
45
|
+
enum: ["web-app", "api", "library", "mobile", "desktop"],
|
|
46
|
+
description: "Type of project",
|
|
47
|
+
},
|
|
48
|
+
techStack: {
|
|
49
|
+
type: "array",
|
|
50
|
+
items: { type: "string" },
|
|
51
|
+
description: "Technologies used (react, node, typescript, etc.)",
|
|
52
|
+
},
|
|
53
|
+
teamSize: {
|
|
54
|
+
type: "string",
|
|
55
|
+
enum: ["solo", "small", "medium", "large"],
|
|
56
|
+
description: "Development team size",
|
|
57
|
+
},
|
|
58
|
+
timeline: {
|
|
59
|
+
type: "string",
|
|
60
|
+
enum: ["rapid", "balanced", "thorough"],
|
|
61
|
+
description: "Development timeline priority",
|
|
80
62
|
},
|
|
81
63
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
64
|
+
required: ["projectType"],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "implement_tdd_workflow",
|
|
69
|
+
description: "Implement Test-Driven Development workflow and practices",
|
|
70
|
+
inputSchema: {
|
|
71
|
+
type: "object",
|
|
72
|
+
properties: {
|
|
73
|
+
language: {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "Programming language",
|
|
76
|
+
default: "typescript",
|
|
77
|
+
},
|
|
78
|
+
framework: {
|
|
79
|
+
type: "string",
|
|
80
|
+
description: "Preferred testing framework",
|
|
81
|
+
default: "jest",
|
|
82
|
+
},
|
|
83
|
+
existingTests: {
|
|
84
|
+
type: "boolean",
|
|
85
|
+
description: "Whether tests already exist",
|
|
86
|
+
default: false,
|
|
105
87
|
},
|
|
106
88
|
},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
89
|
+
required: [],
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "optimize_test_performance",
|
|
94
|
+
description: "Analyze and optimize test execution performance",
|
|
95
|
+
inputSchema: {
|
|
96
|
+
type: "object",
|
|
97
|
+
properties: {
|
|
98
|
+
testResults: {
|
|
99
|
+
type: "string",
|
|
100
|
+
description: "Path to test results or current execution time",
|
|
101
|
+
},
|
|
102
|
+
targetRuntime: {
|
|
103
|
+
type: "number",
|
|
104
|
+
description: "Target test execution time in seconds",
|
|
105
|
+
default: 300,
|
|
106
|
+
},
|
|
107
|
+
parallelExecution: {
|
|
108
|
+
type: "boolean",
|
|
109
|
+
description: "Whether parallel execution is supported",
|
|
110
|
+
default: true,
|
|
129
111
|
},
|
|
130
112
|
},
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
coverageReporting: {
|
|
163
|
-
type: "boolean",
|
|
164
|
-
description: "Enable coverage reporting",
|
|
165
|
-
default: true,
|
|
166
|
-
},
|
|
113
|
+
required: ["testResults"],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "setup_ci_cd_testing",
|
|
118
|
+
description: "Set up comprehensive CI/CD testing pipeline",
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: "object",
|
|
121
|
+
properties: {
|
|
122
|
+
ciPlatform: {
|
|
123
|
+
type: "string",
|
|
124
|
+
enum: [
|
|
125
|
+
"github-actions",
|
|
126
|
+
"gitlab-ci",
|
|
127
|
+
"jenkins",
|
|
128
|
+
"circle-ci",
|
|
129
|
+
"travis-ci",
|
|
130
|
+
],
|
|
131
|
+
description: "CI/CD platform",
|
|
132
|
+
},
|
|
133
|
+
testTypes: {
|
|
134
|
+
type: "array",
|
|
135
|
+
items: {
|
|
136
|
+
type: "string",
|
|
137
|
+
enum: [
|
|
138
|
+
"unit",
|
|
139
|
+
"integration",
|
|
140
|
+
"e2e",
|
|
141
|
+
"performance",
|
|
142
|
+
"security",
|
|
143
|
+
],
|
|
167
144
|
},
|
|
168
|
-
|
|
145
|
+
description: "Types of tests to include",
|
|
146
|
+
},
|
|
147
|
+
coverageReporting: {
|
|
148
|
+
type: "boolean",
|
|
149
|
+
description: "Enable coverage reporting",
|
|
150
|
+
default: true,
|
|
169
151
|
},
|
|
170
152
|
},
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
case "optimize_test_performance":
|
|
184
|
-
return await this.optimizeTestPerformance(args);
|
|
185
|
-
case "setup_ci_cd_testing":
|
|
186
|
-
return await this.setupCICDTesting(args);
|
|
187
|
-
default:
|
|
188
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
189
|
-
}
|
|
190
|
-
});
|
|
153
|
+
required: ["ciPlatform", "testTypes"],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
this.handlers = {
|
|
158
|
+
"analyze_test_coverage": async (args) => this.analyzeTestCoverage(args),
|
|
159
|
+
"design_test_strategy": async (args) => this.designTestStrategy(args),
|
|
160
|
+
"implement_tdd_workflow": async (args) => this.implementTDDWorkflow(args),
|
|
161
|
+
"optimize_test_performance": async (args) => this.optimizeTestPerformance(args),
|
|
162
|
+
"setup_ci_cd_testing": async (args) => this.setupCICDTesting(args),
|
|
163
|
+
};
|
|
164
|
+
this.setupToolHandlers();
|
|
191
165
|
}
|
|
192
166
|
async analyzeTestCoverage(args) {
|
|
193
167
|
const { codePath, testFramework = "auto-detect", coverageThreshold = 80, } = args;
|
|
@@ -848,19 +822,10 @@ class XrayTestingBestPracticesServer {
|
|
|
848
822
|
};
|
|
849
823
|
return icons[type] || "🧪";
|
|
850
824
|
}
|
|
851
|
-
async run() {
|
|
852
|
-
const transport = new StdioServerTransport();
|
|
853
|
-
await this.server.connect(transport);
|
|
854
|
-
// Use centralized shutdown handler
|
|
855
|
-
createGracefulShutdown({
|
|
856
|
-
serverName: "testing-best-practices.server",
|
|
857
|
-
server: this.server,
|
|
858
|
-
});
|
|
859
|
-
}
|
|
860
825
|
}
|
|
861
826
|
// Run the server if this file is executed directly
|
|
862
827
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
863
828
|
const server = new XrayTestingBestPracticesServer();
|
|
864
|
-
server.run().catch(() => { });
|
|
829
|
+
server.run("testing-best-practices").catch((err) => { frameworkLogger.log("testing-best-practices", "run", "error", { error: err instanceof Error ? err.message : String(err) }); });
|
|
865
830
|
}
|
|
866
831
|
export { XrayTestingBestPracticesServer };
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* Knowledge skill for test planning, coverage optimization,
|
|
5
5
|
* and testing methodology recommendations
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
8
|
+
declare class XrayTestingStrategyServer extends XrayKnowledgeSkillBase {
|
|
9
9
|
constructor();
|
|
10
|
-
private setupToolHandlers;
|
|
11
10
|
private analyzeTestCoverage;
|
|
12
11
|
private designTestStrategy;
|
|
13
12
|
private identifyTestGaps;
|
|
@@ -42,6 +41,5 @@ declare class XrayTestingStrategyServer {
|
|
|
42
41
|
private calculateOptimizationROI;
|
|
43
42
|
private generateMilestones;
|
|
44
43
|
private shouldIgnorePath;
|
|
45
|
-
run(): Promise<void>;
|
|
46
44
|
}
|
|
47
45
|
export default XrayTestingStrategyServer;
|
|
@@ -4,159 +4,93 @@
|
|
|
4
4
|
* Knowledge skill for test planning, coverage optimization,
|
|
5
5
|
* and testing methodology recommendations
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
10
8
|
import * as fs from "fs";
|
|
11
9
|
import * as path from "path";
|
|
12
10
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
-
import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
|
|
14
11
|
import { detectProjectLanguage, LANGUAGE_CONFIGS, } from "../../utils/language-detector.js";
|
|
15
|
-
class XrayTestingStrategyServer {
|
|
16
|
-
server;
|
|
12
|
+
class XrayTestingStrategyServer extends XrayKnowledgeSkillBase {
|
|
17
13
|
constructor() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
30
|
-
return {
|
|
31
|
-
tools: [
|
|
32
|
-
{
|
|
33
|
-
name: "analyze-test-coverage",
|
|
34
|
-
description: "Analyze current test coverage and identify gaps",
|
|
35
|
-
inputSchema: {
|
|
36
|
-
type: "object",
|
|
37
|
-
properties: {
|
|
38
|
-
projectRoot: { type: "string" },
|
|
39
|
-
includeBreakdown: { type: "boolean", default: true },
|
|
40
|
-
coverageThreshold: { type: "number", default: 80 },
|
|
41
|
-
},
|
|
42
|
-
required: ["projectRoot"],
|
|
43
|
-
},
|
|
14
|
+
super("testing-strategy", "2.0.1");
|
|
15
|
+
this.tools = [
|
|
16
|
+
{
|
|
17
|
+
name: "analyze-test-coverage",
|
|
18
|
+
description: "Analyze current test coverage and identify gaps",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
projectRoot: { type: "string" },
|
|
23
|
+
includeBreakdown: { type: "boolean", default: true },
|
|
24
|
+
coverageThreshold: { type: "number", default: 80 },
|
|
44
25
|
},
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
enum: ["simple", "medium", "complex"],
|
|
59
|
-
},
|
|
60
|
-
timeline: {
|
|
61
|
-
type: "string",
|
|
62
|
-
enum: ["agile", "waterfall", "continuous"],
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
required: ["projectRoot"],
|
|
66
|
-
},
|
|
26
|
+
required: ["projectRoot"],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "design-test-strategy",
|
|
31
|
+
description: "Design comprehensive testing strategy for the project",
|
|
32
|
+
inputSchema: {
|
|
33
|
+
type: "object",
|
|
34
|
+
properties: {
|
|
35
|
+
projectRoot: { type: "string" },
|
|
36
|
+
projectType: { type: "string", enum: ["web", "api", "mobile", "desktop"] },
|
|
37
|
+
complexity: { type: "string", enum: ["simple", "medium", "complex"] },
|
|
38
|
+
timeline: { type: "string", enum: ["agile", "waterfall", "continuous"] },
|
|
67
39
|
},
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
40
|
+
required: ["projectRoot"],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "identify-test-gaps",
|
|
45
|
+
description: "Identify untested code and recommend test cases",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
projectRoot: { type: "string" },
|
|
50
|
+
sourceFiles: { type: "array", items: { type: "string" } },
|
|
51
|
+
existingTests: { type: "array", items: { type: "string" } },
|
|
80
52
|
},
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
},
|
|
53
|
+
required: ["projectRoot"],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "optimize-test-coverage",
|
|
58
|
+
description: "Analyze and optimize test coverage patterns",
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
projectRoot: { type: "string" },
|
|
63
|
+
currentCoverage: { type: "number" },
|
|
64
|
+
targetCoverage: { type: "number", default: 85 },
|
|
65
|
+
focusAreas: { type: "array", items: { type: "string" } },
|
|
94
66
|
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
exports: {
|
|
110
|
-
type: "array",
|
|
111
|
-
items: {
|
|
112
|
-
type: "object",
|
|
113
|
-
properties: {
|
|
114
|
-
name: { type: "string" },
|
|
115
|
-
type: { type: "string" },
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
description: "Exported functions/classes to test",
|
|
119
|
-
},
|
|
120
|
-
testFilePath: {
|
|
121
|
-
type: "string",
|
|
122
|
-
description: "Path for generated test file",
|
|
123
|
-
},
|
|
124
|
-
directory: { type: "string", description: "Project directory" },
|
|
125
|
-
},
|
|
126
|
-
required: [
|
|
127
|
-
"sourceFile",
|
|
128
|
-
"sourceContent",
|
|
129
|
-
"exports",
|
|
130
|
-
"testFilePath",
|
|
131
|
-
],
|
|
132
|
-
},
|
|
67
|
+
required: ["projectRoot"],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "generate-test-file",
|
|
72
|
+
description: "Generate test file for a source file with exports",
|
|
73
|
+
inputSchema: {
|
|
74
|
+
type: "object",
|
|
75
|
+
properties: {
|
|
76
|
+
sourceFile: { type: "string", description: "Path to source file" },
|
|
77
|
+
sourceContent: { type: "string", description: "Source file content" },
|
|
78
|
+
exports: { type: "array", items: { type: "object", properties: { name: { type: "string" }, type: { type: "string" } } }, description: "Exported functions/classes to test" },
|
|
79
|
+
testFilePath: { type: "string", description: "Path for generated test file" },
|
|
80
|
+
directory: { type: "string", description: "Project directory" },
|
|
133
81
|
},
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return await this.identifyTestGaps(args);
|
|
147
|
-
case "optimize-test-coverage":
|
|
148
|
-
return await this.optimizeTestCoverage(args);
|
|
149
|
-
case "generate-test-file":
|
|
150
|
-
return await this.generateTestFile(args);
|
|
151
|
-
default:
|
|
152
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
frameworkLogger.log("mcps/testing-strategy", "tool", "error", { tool: name, error: String(error) });
|
|
157
|
-
throw error;
|
|
158
|
-
}
|
|
159
|
-
});
|
|
82
|
+
required: ["sourceFile", "sourceContent", "exports", "testFilePath"],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
this.handlers = {
|
|
87
|
+
"analyze-test-coverage": async (args) => this.analyzeTestCoverage(args),
|
|
88
|
+
"design-test-strategy": async (args) => this.designTestStrategy(args),
|
|
89
|
+
"identify-test-gaps": async (args) => this.identifyTestGaps(args),
|
|
90
|
+
"optimize-test-coverage": async (args) => this.optimizeTestCoverage(args),
|
|
91
|
+
"generate-test-file": async (args) => this.generateTestFile(args),
|
|
92
|
+
};
|
|
93
|
+
this.setupToolHandlers();
|
|
160
94
|
}
|
|
161
95
|
async analyzeTestCoverage(args) {
|
|
162
96
|
const { projectRoot, includeBreakdown = true, coverageThreshold = 80, } = args;
|
|
@@ -809,19 +743,10 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
|
|
|
809
743
|
];
|
|
810
744
|
return ignorePatterns.some((pattern) => pattern.test(filePath));
|
|
811
745
|
}
|
|
812
|
-
async run() {
|
|
813
|
-
const transport = new StdioServerTransport();
|
|
814
|
-
await this.server.connect(transport);
|
|
815
|
-
// Use centralized shutdown handler
|
|
816
|
-
createGracefulShutdown({
|
|
817
|
-
serverName: "testing-strategy.server",
|
|
818
|
-
server: this.server,
|
|
819
|
-
});
|
|
820
|
-
}
|
|
821
746
|
}
|
|
822
747
|
// Start the server if run directly
|
|
823
748
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
824
749
|
const server = new XrayTestingStrategyServer();
|
|
825
|
-
server.run().catch(() => { });
|
|
750
|
+
server.run("testing-strategy").catch((err) => { frameworkLogger.log("testing-strategy", "run", "error", { error: err instanceof Error ? err.message : String(err) }); });
|
|
826
751
|
}
|
|
827
752
|
export default XrayTestingStrategyServer;
|