0xray 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/codex.codex +1 -1
- package/.opencode/commands/auto-format.md +3 -3
- package/.opencode/commands/auto-summary-capture.md +2 -2
- package/.opencode/commands/enforcer-daily-scan.md +3 -3
- package/.opencode/commands/framework-compliance-audit.md +4 -4
- package/.opencode/commands/interactive-validator.md +2 -2
- package/.opencode/commands/job-summary-logger.md +2 -2
- package/.opencode/commands/mode-switch.md +1 -1
- package/.opencode/commands/model-health-check.md +2 -2
- package/.opencode/commands/performance-analysis.md +2 -2
- package/.opencode/commands/pre-commit-introspection.md +3 -3
- package/.opencode/commands/security-scan.md +3 -3
- package/.opencode/commands/sisyphus-validation.md +3 -3
- package/.opencode/commands/summary-logger.md +2 -2
- package/AGENTS.md +3 -13
- package/README.md +3 -3
- package/dist/AGENTS.md +3 -13
- package/dist/CHANGELOG.md +29 -0
- package/dist/README.md +3 -3
- package/dist/analytics/consent-manager.js +0 -1
- package/dist/analytics/emerging-pattern-detector.js +0 -1
- package/dist/analytics/pattern-learning-engine.js +0 -1
- package/dist/analytics/pattern-performance-tracker.js +0 -1
- package/dist/analytics/predictive-analytics.js +0 -1
- package/dist/analytics/prompt-pattern-analyzer.js +0 -1
- package/dist/analytics/routing-performance-analyzer.js +0 -1
- package/dist/analytics/routing-refiner.js +0 -1
- package/dist/analytics/simple-pattern-analyzer.js +0 -1
- package/dist/cli/commands/archive-logs.js +0 -1
- package/dist/cli/commands/opencode-install.js +13 -0
- package/dist/cli/commands/plugin-commands.js +0 -1
- package/dist/cli/commands/status.js +11 -13
- package/dist/cli/index.js +2 -7
- package/dist/core/activity-logger.js +0 -1
- package/dist/core/adaptive-kernel.js +0 -1
- package/dist/core/boot-orchestrator.js +2 -12
- package/dist/core/bridge.mjs +0 -1
- package/dist/core/codex-formatter.js +0 -1
- package/dist/core/codex-injector.js +0 -1
- package/dist/core/config-loader.js +36 -28
- package/dist/core/context-loader.js +0 -1
- package/dist/core/context-validator.js +0 -1
- package/dist/core/features-config.js +37 -1
- package/dist/core/kernel-patterns.js +0 -1
- package/dist/core/model-router.js +23 -64
- package/dist/core/system-prompt-generator.js +0 -1
- package/dist/delegation/agent-delegator.js +0 -1
- package/dist/delegation/agent-expertise.js +0 -1
- package/dist/delegation/analytics/index.js +0 -1
- package/dist/delegation/analytics/learning-engine.js +0 -1
- package/dist/delegation/analytics/outcome-tracker.js +0 -1
- package/dist/delegation/analytics/routing-analytics.js +0 -1
- package/dist/delegation/ast-code-parser.js +0 -1
- package/dist/delegation/complexity-analyzer.js +0 -1
- package/dist/delegation/dependency-graph-builder.js +0 -1
- package/dist/delegation/index.js +0 -1
- package/dist/delegation/metrics-aggregator.js +0 -1
- package/dist/delegation/session-coordinator.js +0 -1
- package/dist/delegation/strategy-selector.js +0 -1
- package/dist/delegation/voting-coordinator.js +0 -1
- package/dist/delegation/voting-types.js +0 -1
- package/dist/delegation/weighted-voting-aggregator.js +0 -1
- package/dist/enforcement/core/index.js +0 -1
- package/dist/enforcement/core/rule-executor.js +0 -1
- package/dist/enforcement/core/rule-hierarchy.js +0 -1
- package/dist/enforcement/core/rule-registry.js +0 -1
- package/dist/enforcement/core/violation-fixer.js +0 -1
- package/dist/enforcement/index.js +0 -1
- package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
- package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
- package/dist/enforcement/loaders/base-loader.js +0 -1
- package/dist/enforcement/loaders/codex-loader.js +0 -1
- package/dist/enforcement/loaders/index.js +0 -1
- package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
- package/dist/enforcement/loaders/processor-loader.js +0 -1
- package/dist/enforcement/types.js +0 -1
- package/dist/enforcement/validators/architecture-validators.js +0 -1
- package/dist/enforcement/validators/base-validator.js +0 -1
- package/dist/enforcement/validators/code-quality-validators.js +0 -1
- package/dist/enforcement/validators/index.js +0 -1
- package/dist/enforcement/validators/security-validators.js +0 -1
- package/dist/enforcement/validators/testing-validators.js +0 -1
- package/dist/enforcement/validators/validator-registry.js +0 -1
- package/dist/governance/codex-policy.service.js +0 -1
- package/dist/inference/inference-agent-invoker.js +67 -0
- package/dist/inference/inference-applier.js +178 -0
- package/dist/inference/inference-cycle.js +51 -827
- package/dist/inference/inference-proposal-generator.js +149 -0
- package/dist/infrastructure/iac-validator.js +465 -0
- package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
- package/dist/integrations/base/ExampleIntegration.js +0 -1
- package/dist/integrations/base/Integration.js +0 -1
- package/dist/integrations/base/index.js +0 -1
- package/dist/integrations/base/registry.js +0 -1
- package/dist/integrations/base/types.js +0 -1
- package/dist/integrations/enforcement-gate.js +3 -3
- package/dist/integrations/governance/governance-client.js +0 -1
- package/dist/integrations/governance/index.js +11 -19
- package/dist/integrations/governance/types.js +0 -1
- package/dist/integrations/hermes-agent/__init__.py +4 -0
- package/dist/integrations/hermes-agent/bridge.mjs +37 -0
- package/dist/integrations/openclaw/api-server.js +0 -1
- package/dist/integrations/openclaw/client.js +0 -1
- package/dist/integrations/openclaw/config.js +0 -1
- package/dist/integrations/openclaw/hooks/xray-hooks.js +0 -1
- package/dist/integrations/openclaw/index.js +0 -1
- package/dist/integrations/openclaw/types.js +0 -1
- package/dist/integrations/plugins/index.js +0 -1
- package/dist/integrations/plugins/plugin-integration.js +0 -1
- package/dist/integrations/plugins/plugin-registry.js +0 -1
- package/dist/mcps/agent-resolver.js +0 -1
- package/dist/mcps/architect-tools.server.js +119 -185
- package/dist/mcps/auto-format.server.js +56 -74
- package/dist/mcps/boot-orchestrator.server.js +67 -85
- package/dist/mcps/config/config-loader.js +6 -0
- package/dist/mcps/config/plugin-server-registry.js +0 -1
- package/dist/mcps/enforcer-tools.server.js +207 -273
- package/dist/mcps/estimation.server.js +63 -107
- package/dist/mcps/framework-compliance-audit.server.js +52 -81
- package/dist/mcps/framework-help.server.js +71 -89
- package/dist/mcps/governance.server.js +97 -149
- package/dist/mcps/knowledge-skills/api-design.server.js +33 -65
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +33 -65
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +123 -163
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +210 -237
- package/dist/mcps/knowledge-skills/code-review.server.js +108 -142
- package/dist/mcps/knowledge-skills/content-creator.server.js +203 -225
- package/dist/mcps/knowledge-skills/database-design.server.js +116 -150
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +123 -157
- package/dist/mcps/knowledge-skills/git-workflow.server.js +34 -67
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +301 -323
- package/dist/mcps/knowledge-skills/log-monitor.server.js +139 -159
- package/dist/mcps/knowledge-skills/mobile-development.server.js +170 -200
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +122 -158
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +88 -138
- package/dist/mcps/knowledge-skills/project-analysis.server.js +131 -218
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +115 -150
- package/dist/mcps/knowledge-skills/security-audit.server.js +16 -143
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +20 -213
- package/dist/mcps/knowledge-skills/session-management.server.js +13 -90
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +43 -421
- package/dist/mcps/knowledge-skills/strategist.server.js +10 -55
- package/dist/mcps/knowledge-skills/tech-writer.server.js +16 -191
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +18 -191
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +18 -156
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +22 -296
- package/dist/mcps/lint.server.js +50 -91
- package/dist/mcps/model-health-check.server.js +32 -60
- package/dist/mcps/orchestrator/aside-context.js +207 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
- package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
- package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
- package/dist/mcps/orchestrator/index.js +5 -0
- package/dist/mcps/orchestrator/server.js +63 -8
- package/dist/mcps/performance-analysis.server.js +56 -87
- package/dist/mcps/processor-pipeline.server.js +68 -99
- package/dist/mcps/researcher.server.js +80 -153
- package/dist/mcps/security-scan.server.js +56 -70
- package/dist/mcps/shared/knowledge-skill-base.js +11 -4
- package/dist/mcps/state-manager.server.js +124 -152
- package/dist/monitoring/nudge-watchdog.js +0 -1
- package/dist/nucleus/default-plugins.js +13 -19
- package/dist/nucleus/index.js +0 -1
- package/dist/orchestrator/agent-spawn-governor.js +0 -1
- package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
- package/dist/orchestrator/orchestrator.js +8 -18
- package/dist/orchestrator/self-direction-activation.js +0 -1
- package/dist/orchestrator/universal-registry-bridge.js +0 -1
- package/dist/performance/performance-budget-enforcer.js +0 -1
- package/dist/performance/performance-regression-tester.js +0 -1
- package/dist/plugin/plugin-codex-context.js +87 -0
- package/dist/plugin/plugin-helpers.js +155 -0
- package/dist/plugin/plugin-logger.js +46 -0
- package/dist/plugin/plugin-modules.js +144 -0
- package/dist/plugin/plugin-quality-gate.js +88 -0
- package/dist/plugin/plugin-types.js +1 -0
- package/dist/plugin/xray-codex-injection.js +338 -0
- package/dist/postprocessor/PostProcessor.js +3 -9
- package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
- package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
- package/dist/postprocessor/integration.js +194 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
- package/dist/postprocessor/metamorphosis/index.js +1 -0
- package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
- package/dist/postprocessor/triggers/APITrigger.js +0 -1
- package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
- package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
- package/dist/processors/implementations/async-pattern-processor.js +0 -1
- package/dist/processors/implementations/console-log-guard-processor.js +0 -1
- package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
- package/dist/processors/implementations/inference-improvement-processor.js +2 -9
- package/dist/processors/implementations/log-protection-processor.js +0 -1
- package/dist/processors/implementations/nudge-processor.js +0 -1
- package/dist/processors/implementations/performance-budget-processor.js +0 -1
- package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
- package/dist/processors/implementations/publish-preflight-processor.js +4 -12
- package/dist/processors/implementations/session-summary-processor.js +8 -16
- package/dist/processors/implementations/spawn-governance-processor.js +0 -1
- package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
- package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
- package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
- package/dist/processors/implementations/version-compliance-processor.js +0 -1
- package/dist/processors/processor-interfaces.js +0 -1
- package/dist/processors/processor-types.js +0 -1
- package/dist/scripts/integration.js +0 -1
- package/dist/security/comprehensive-security-audit.js +0 -1
- package/dist/security/security-agent-coordinator.js +0 -1
- package/dist/security/security-auditor.js +0 -1
- package/dist/security/security-hardener.js +0 -1
- package/dist/security/security-hardening-system.js +0 -1
- package/dist/security/security-headers.js +0 -1
- package/dist/security/security-orchestration-layer.js +0 -1
- package/dist/services/inference-tuner.js +0 -1
- package/dist/session/session-cleanup-manager.js +0 -1
- package/dist/session/session-monitor.js +0 -1
- package/dist/session/session-state-manager.js +0 -1
- package/dist/skills/xray-orchestrator/index.js +0 -1
- package/dist/utils/codex-parser.js +0 -1
- package/dist/utils/language-detector.js +0 -1
- package/dist/utils/shutdown-handler.js +0 -1
- package/dist/validation/agent-config-validator.js +280 -0
- package/dist/validation/orchestration-flow-validator.js +606 -0
- package/package.json +1 -1
- package/scripts/node/release.mjs +2 -2
- package/scripts/node/setup.cjs +28 -0
- package/scripts/node/universal-version-manager.js +1 -1
- package/src/mcps/agent-resolver.ts +0 -1
- package/src/mcps/architect-tools.server.ts +129 -211
- package/src/mcps/auto-format.server.ts +74 -103
- package/src/mcps/boot-orchestrator.server.ts +71 -96
- package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
- package/src/mcps/config/config-loader.ts +7 -0
- package/src/mcps/config/plugin-server-registry.ts +0 -1
- package/src/mcps/enforcer-tools.server.ts +217 -294
- package/src/mcps/estimation.server.ts +62 -122
- package/src/mcps/framework-compliance-audit.server.ts +53 -95
- package/src/mcps/framework-help.server.ts +74 -96
- package/src/mcps/governance.server.ts +97 -162
- package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
- package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
- package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
- package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
- package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
- package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
- package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
- package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
- package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
- package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
- package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
- package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
- package/src/mcps/lint.server.ts +52 -105
- package/src/mcps/model-health-check.server.ts +34 -70
- package/src/mcps/orchestrator/aside-context.ts +245 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
- package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
- package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
- package/src/mcps/orchestrator/index.ts +29 -0
- package/src/mcps/orchestrator/server.ts +79 -24
- package/src/mcps/orchestrator/types.ts +37 -0
- package/src/mcps/performance-analysis.server.ts +59 -102
- package/src/mcps/processor-pipeline.server.ts +70 -108
- package/src/mcps/researcher.server.ts +87 -175
- package/src/mcps/security-scan.server.ts +57 -76
- package/src/mcps/shared/knowledge-skill-base.ts +12 -4
- package/src/mcps/state-manager.server.ts +129 -169
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/auto-format.md +3 -3
- package/src/opencode/commands/auto-summary-capture.md +2 -2
- package/src/opencode/commands/enforcer-daily-scan.md +3 -3
- package/src/opencode/commands/framework-compliance-audit.md +4 -4
- package/src/opencode/commands/interactive-validator.md +2 -2
- package/src/opencode/commands/job-summary-logger.md +2 -2
- package/src/opencode/commands/mode-switch.md +1 -1
- package/src/opencode/commands/model-health-check.md +2 -2
- package/src/opencode/commands/performance-analysis.md +2 -2
- package/src/opencode/commands/pre-commit-introspection.md +3 -3
- package/src/opencode/commands/security-scan.md +3 -3
- package/src/opencode/commands/sisyphus-validation.md +3 -3
- package/src/opencode/commands/summary-logger.md +2 -2
- package/src/skills/xray-orchestrator/index.ts +0 -1
- package/dist/nucleus/orchestrator.js +0 -479
|
@@ -4,193 +4,27 @@
|
|
|
4
4
|
* Knowledge skill for automated documentation creation, API docs generation,
|
|
5
5
|
* code documentation maintenance, and technical writing assistance
|
|
6
6
|
*/
|
|
7
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
10
7
|
import * as fs from "fs";
|
|
11
8
|
import * as path from "path";
|
|
12
|
-
import {
|
|
13
|
-
class XrayDocumentationGenerationServer {
|
|
14
|
-
server;
|
|
9
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
10
|
+
class XrayDocumentationGenerationServer extends XrayKnowledgeSkillBase {
|
|
15
11
|
constructor() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
|
|
12
|
+
super("documentation-generation", "3.1.0");
|
|
13
|
+
this.tools = [
|
|
14
|
+
{ name: "analyze_documentation", description: "Analyze existing documentation for completeness, quality, and gaps", inputSchema: { type: "object", properties: { docsPath: { type: "string", description: "Path to documentation directory or files" }, codePath: { type: "string", description: "Path to corresponding code for comparison" }, docTypes: { type: "array", items: { type: "string", enum: ["readme", "api", "code", "architecture", "deployment", "user-guide"] }, description: "Types of documentation to analyze" } }, required: ["docsPath"] } },
|
|
15
|
+
{ name: "generate_api_docs", description: "Generate comprehensive API documentation from code analysis", inputSchema: { type: "object", properties: { codePath: { type: "string", description: "Path to API code files" }, framework: { type: "string", enum: ["express", "fastify", "koa", "nestjs", "spring", "django", "flask", "fastapi"], description: "API framework being used" }, format: { type: "string", enum: ["openapi", "markdown", "html", "postman"], description: "Output documentation format", default: "openapi" }, includeExamples: { type: "boolean", description: "Include request/response examples", default: true } }, required: ["codePath", "framework"] } },
|
|
16
|
+
{ name: "generate_code_documentation", description: "Generate inline code documentation and improve existing docs", inputSchema: { type: "object", properties: { codePath: { type: "string", description: "Path to code files to document" }, language: { type: "string", enum: ["typescript", "javascript", "python", "java", "csharp", "go", "rust"], description: "Programming language" }, style: { type: "string", enum: ["jsdoc", "docstring", "xml", "markdown"], description: "Documentation comment style", default: "jsdoc" }, includePrivate: { type: "boolean", description: "Include documentation for private members", default: false } }, required: ["codePath", "language"] } },
|
|
17
|
+
{ name: "generate_readme", description: "Generate or improve project README documentation", inputSchema: { type: "object", properties: { projectPath: { type: "string", description: "Path to project root directory" }, projectType: { type: "string", enum: ["library", "application", "api", "cli", "framework"], description: "Type of project" }, includeSections: { type: "array", items: { type: "string" }, description: "Specific sections to include", default: ["installation", "usage", "api", "contributing", "license"] }, existingReadme: { type: "string", description: "Path to existing README to improve" } }, required: ["projectPath", "projectType"] } },
|
|
18
|
+
];
|
|
19
|
+
this.handlers = {
|
|
20
|
+
analyze_documentation: async (args) => this.analyzeDocumentation(args),
|
|
21
|
+
generate_api_docs: async (args) => this.generateAPIDocs(args),
|
|
22
|
+
generate_code_documentation: async (args) => this.generateCodeDocumentation(args),
|
|
23
|
+
generate_readme: async (args) => this.generateReadme(args),
|
|
24
|
+
};
|
|
23
25
|
this.setupToolHandlers();
|
|
24
|
-
// Server initialization - removed unnecessary startup logging
|
|
25
|
-
}
|
|
26
|
-
setupToolHandlers() {
|
|
27
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
28
|
-
return {
|
|
29
|
-
tools: [
|
|
30
|
-
{
|
|
31
|
-
name: "analyze_documentation",
|
|
32
|
-
description: "Analyze existing documentation for completeness, quality, and gaps",
|
|
33
|
-
inputSchema: {
|
|
34
|
-
type: "object",
|
|
35
|
-
properties: {
|
|
36
|
-
docsPath: {
|
|
37
|
-
type: "string",
|
|
38
|
-
description: "Path to documentation directory or files",
|
|
39
|
-
},
|
|
40
|
-
codePath: {
|
|
41
|
-
type: "string",
|
|
42
|
-
description: "Path to corresponding code for comparison",
|
|
43
|
-
},
|
|
44
|
-
docTypes: {
|
|
45
|
-
type: "array",
|
|
46
|
-
items: {
|
|
47
|
-
type: "string",
|
|
48
|
-
enum: [
|
|
49
|
-
"readme",
|
|
50
|
-
"api",
|
|
51
|
-
"code",
|
|
52
|
-
"architecture",
|
|
53
|
-
"deployment",
|
|
54
|
-
"user-guide",
|
|
55
|
-
],
|
|
56
|
-
},
|
|
57
|
-
description: "Types of documentation to analyze",
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
required: ["docsPath"],
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: "generate_api_docs",
|
|
65
|
-
description: "Generate comprehensive API documentation from code analysis",
|
|
66
|
-
inputSchema: {
|
|
67
|
-
type: "object",
|
|
68
|
-
properties: {
|
|
69
|
-
codePath: {
|
|
70
|
-
type: "string",
|
|
71
|
-
description: "Path to API code files",
|
|
72
|
-
},
|
|
73
|
-
framework: {
|
|
74
|
-
type: "string",
|
|
75
|
-
enum: [
|
|
76
|
-
"express",
|
|
77
|
-
"fastify",
|
|
78
|
-
"koa",
|
|
79
|
-
"nestjs",
|
|
80
|
-
"spring",
|
|
81
|
-
"django",
|
|
82
|
-
"flask",
|
|
83
|
-
"fastapi",
|
|
84
|
-
],
|
|
85
|
-
description: "API framework being used",
|
|
86
|
-
},
|
|
87
|
-
format: {
|
|
88
|
-
type: "string",
|
|
89
|
-
enum: ["openapi", "markdown", "html", "postman"],
|
|
90
|
-
description: "Output documentation format",
|
|
91
|
-
default: "openapi",
|
|
92
|
-
},
|
|
93
|
-
includeExamples: {
|
|
94
|
-
type: "boolean",
|
|
95
|
-
description: "Include request/response examples",
|
|
96
|
-
default: true,
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
required: ["codePath", "framework"],
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: "generate_code_documentation",
|
|
104
|
-
description: "Generate inline code documentation and improve existing docs",
|
|
105
|
-
inputSchema: {
|
|
106
|
-
type: "object",
|
|
107
|
-
properties: {
|
|
108
|
-
codePath: {
|
|
109
|
-
type: "string",
|
|
110
|
-
description: "Path to code files to document",
|
|
111
|
-
},
|
|
112
|
-
language: {
|
|
113
|
-
type: "string",
|
|
114
|
-
enum: [
|
|
115
|
-
"typescript",
|
|
116
|
-
"javascript",
|
|
117
|
-
"python",
|
|
118
|
-
"java",
|
|
119
|
-
"csharp",
|
|
120
|
-
"go",
|
|
121
|
-
"rust",
|
|
122
|
-
],
|
|
123
|
-
description: "Programming language",
|
|
124
|
-
},
|
|
125
|
-
style: {
|
|
126
|
-
type: "string",
|
|
127
|
-
enum: ["jsdoc", "docstring", "xml", "markdown"],
|
|
128
|
-
description: "Documentation comment style",
|
|
129
|
-
default: "jsdoc",
|
|
130
|
-
},
|
|
131
|
-
includePrivate: {
|
|
132
|
-
type: "boolean",
|
|
133
|
-
description: "Include documentation for private members",
|
|
134
|
-
default: false,
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
required: ["codePath", "language"],
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
name: "generate_readme",
|
|
142
|
-
description: "Generate or improve project README documentation",
|
|
143
|
-
inputSchema: {
|
|
144
|
-
type: "object",
|
|
145
|
-
properties: {
|
|
146
|
-
projectPath: {
|
|
147
|
-
type: "string",
|
|
148
|
-
description: "Path to project root directory",
|
|
149
|
-
},
|
|
150
|
-
projectType: {
|
|
151
|
-
type: "string",
|
|
152
|
-
enum: ["library", "application", "api", "cli", "framework"],
|
|
153
|
-
description: "Type of project",
|
|
154
|
-
},
|
|
155
|
-
includeSections: {
|
|
156
|
-
type: "array",
|
|
157
|
-
items: { type: "string" },
|
|
158
|
-
description: "Specific sections to include",
|
|
159
|
-
default: [
|
|
160
|
-
"installation",
|
|
161
|
-
"usage",
|
|
162
|
-
"api",
|
|
163
|
-
"contributing",
|
|
164
|
-
"license",
|
|
165
|
-
],
|
|
166
|
-
},
|
|
167
|
-
existingReadme: {
|
|
168
|
-
type: "string",
|
|
169
|
-
description: "Path to existing README to improve",
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
required: ["projectPath", "projectType"],
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
],
|
|
176
|
-
};
|
|
177
|
-
});
|
|
178
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
179
|
-
const { name, arguments: args } = request.params;
|
|
180
|
-
switch (name) {
|
|
181
|
-
case "analyze_documentation":
|
|
182
|
-
return await this.analyzeDocumentation(args);
|
|
183
|
-
case "generate_api_docs":
|
|
184
|
-
return await this.generateAPIDocs(args);
|
|
185
|
-
case "generate_code_documentation":
|
|
186
|
-
return await this.generateCodeDocumentation(args);
|
|
187
|
-
case "generate_readme":
|
|
188
|
-
return await this.generateReadme(args);
|
|
189
|
-
default:
|
|
190
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
26
|
}
|
|
27
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
194
28
|
async analyzeDocumentation(args) {
|
|
195
29
|
const { docsPath, codePath, docTypes = ["readme", "api", "code"] } = args;
|
|
196
30
|
try {
|
|
@@ -1173,15 +1007,6 @@ class XrayDocumentationGenerationServer {
|
|
|
1173
1007
|
};
|
|
1174
1008
|
return icons[severity] || "❓";
|
|
1175
1009
|
}
|
|
1176
|
-
async run() {
|
|
1177
|
-
const transport = new StdioServerTransport();
|
|
1178
|
-
await this.server.connect(transport);
|
|
1179
|
-
// Use centralized shutdown handler
|
|
1180
|
-
createGracefulShutdown({
|
|
1181
|
-
serverName: "tech-writer.server",
|
|
1182
|
-
server: this.server,
|
|
1183
|
-
});
|
|
1184
|
-
}
|
|
1185
1010
|
}
|
|
1186
1011
|
// Run the server if this file is executed directly
|
|
1187
1012
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|
|
@@ -4,192 +4,28 @@
|
|
|
4
4
|
* Knowledge skill for comprehensive testing strategies, TDD/BDD implementation,
|
|
5
5
|
* test coverage optimization, and automated testing workflows
|
|
6
6
|
*/
|
|
7
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
7
|
import * as fs from "fs";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
class XrayTestingBestPracticesServer {
|
|
13
|
-
server;
|
|
8
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
9
|
+
class XrayTestingBestPracticesServer extends XrayKnowledgeSkillBase {
|
|
14
10
|
constructor() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
|
|
11
|
+
super("testing-best-practices", "3.1.0");
|
|
12
|
+
this.tools = [
|
|
13
|
+
{ name: "analyze_test_coverage", description: "Analyze current test coverage and identify gaps", inputSchema: { type: "object", properties: { codePath: { type: "string", description: "Path to codebase to analyze" }, testFramework: { type: "string", description: "Testing framework used (jest, vitest, mocha, etc.)", default: "auto-detect" }, coverageThreshold: { type: "number", description: "Minimum coverage threshold (0-100)", default: 80 } }, required: ["codePath"] } },
|
|
14
|
+
{ name: "design_test_strategy", description: "Design comprehensive testing strategy for a project", inputSchema: { type: "object", properties: { projectType: { type: "string", enum: ["web-app", "api", "library", "mobile", "desktop"], description: "Type of project" }, techStack: { type: "array", items: { type: "string" }, description: "Technologies used (react, node, typescript, etc.)" }, teamSize: { type: "string", enum: ["solo", "small", "medium", "large"], description: "Development team size" }, timeline: { type: "string", enum: ["rapid", "balanced", "thorough"], description: "Development timeline priority" } }, required: ["projectType"] } },
|
|
15
|
+
{ name: "implement_tdd_workflow", description: "Implement Test-Driven Development workflow and practices", inputSchema: { type: "object", properties: { language: { type: "string", description: "Programming language", default: "typescript" }, framework: { type: "string", description: "Preferred testing framework", default: "jest" }, existingTests: { type: "boolean", description: "Whether tests already exist", default: false } }, required: [] } },
|
|
16
|
+
{ name: "optimize_test_performance", description: "Analyze and optimize test execution performance", inputSchema: { type: "object", properties: { testResults: { type: "string", description: "Path to test results or current execution time" }, targetRuntime: { type: "number", description: "Target test execution time in seconds", default: 300 }, parallelExecution: { type: "boolean", description: "Whether parallel execution is supported", default: true } }, required: ["testResults"] } },
|
|
17
|
+
{ name: "setup_ci_cd_testing", description: "Set up comprehensive CI/CD testing pipeline", inputSchema: { type: "object", properties: { ciPlatform: { type: "string", enum: ["github-actions", "gitlab-ci", "jenkins", "circle-ci", "travis-ci"], description: "CI/CD platform" }, testTypes: { type: "array", items: { type: "string", enum: ["unit", "integration", "e2e", "performance", "security"] }, description: "Types of tests to include" }, coverageReporting: { type: "boolean", description: "Enable coverage reporting", default: true } }, required: ["ciPlatform", "testTypes"] } },
|
|
18
|
+
];
|
|
19
|
+
this.handlers = {
|
|
20
|
+
analyze_test_coverage: async (args) => this.analyzeTestCoverage(args),
|
|
21
|
+
design_test_strategy: async (args) => this.designTestStrategy(args),
|
|
22
|
+
implement_tdd_workflow: async (args) => this.implementTDDWorkflow(args),
|
|
23
|
+
optimize_test_performance: async (args) => this.optimizeTestPerformance(args),
|
|
24
|
+
setup_ci_cd_testing: async (args) => this.setupCICDTesting(args),
|
|
25
|
+
};
|
|
22
26
|
this.setupToolHandlers();
|
|
23
|
-
// Server initialization - removed unnecessary startup logging
|
|
24
|
-
}
|
|
25
|
-
setupToolHandlers() {
|
|
26
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
27
|
-
return {
|
|
28
|
-
tools: [
|
|
29
|
-
{
|
|
30
|
-
name: "analyze_test_coverage",
|
|
31
|
-
description: "Analyze current test coverage and identify gaps",
|
|
32
|
-
inputSchema: {
|
|
33
|
-
type: "object",
|
|
34
|
-
properties: {
|
|
35
|
-
codePath: {
|
|
36
|
-
type: "string",
|
|
37
|
-
description: "Path to codebase to analyze",
|
|
38
|
-
},
|
|
39
|
-
testFramework: {
|
|
40
|
-
type: "string",
|
|
41
|
-
description: "Testing framework used (jest, vitest, mocha, etc.)",
|
|
42
|
-
default: "auto-detect",
|
|
43
|
-
},
|
|
44
|
-
coverageThreshold: {
|
|
45
|
-
type: "number",
|
|
46
|
-
description: "Minimum coverage threshold (0-100)",
|
|
47
|
-
default: 80,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
required: ["codePath"],
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: "design_test_strategy",
|
|
55
|
-
description: "Design comprehensive testing strategy for a project",
|
|
56
|
-
inputSchema: {
|
|
57
|
-
type: "object",
|
|
58
|
-
properties: {
|
|
59
|
-
projectType: {
|
|
60
|
-
type: "string",
|
|
61
|
-
enum: ["web-app", "api", "library", "mobile", "desktop"],
|
|
62
|
-
description: "Type of project",
|
|
63
|
-
},
|
|
64
|
-
techStack: {
|
|
65
|
-
type: "array",
|
|
66
|
-
items: { type: "string" },
|
|
67
|
-
description: "Technologies used (react, node, typescript, etc.)",
|
|
68
|
-
},
|
|
69
|
-
teamSize: {
|
|
70
|
-
type: "string",
|
|
71
|
-
enum: ["solo", "small", "medium", "large"],
|
|
72
|
-
description: "Development team size",
|
|
73
|
-
},
|
|
74
|
-
timeline: {
|
|
75
|
-
type: "string",
|
|
76
|
-
enum: ["rapid", "balanced", "thorough"],
|
|
77
|
-
description: "Development timeline priority",
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
required: ["projectType"],
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: "implement_tdd_workflow",
|
|
85
|
-
description: "Implement Test-Driven Development workflow and practices",
|
|
86
|
-
inputSchema: {
|
|
87
|
-
type: "object",
|
|
88
|
-
properties: {
|
|
89
|
-
language: {
|
|
90
|
-
type: "string",
|
|
91
|
-
description: "Programming language",
|
|
92
|
-
default: "typescript",
|
|
93
|
-
},
|
|
94
|
-
framework: {
|
|
95
|
-
type: "string",
|
|
96
|
-
description: "Preferred testing framework",
|
|
97
|
-
default: "jest",
|
|
98
|
-
},
|
|
99
|
-
existingTests: {
|
|
100
|
-
type: "boolean",
|
|
101
|
-
description: "Whether tests already exist",
|
|
102
|
-
default: false,
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
required: [],
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: "optimize_test_performance",
|
|
110
|
-
description: "Analyze and optimize test execution performance",
|
|
111
|
-
inputSchema: {
|
|
112
|
-
type: "object",
|
|
113
|
-
properties: {
|
|
114
|
-
testResults: {
|
|
115
|
-
type: "string",
|
|
116
|
-
description: "Path to test results or current execution time",
|
|
117
|
-
},
|
|
118
|
-
targetRuntime: {
|
|
119
|
-
type: "number",
|
|
120
|
-
description: "Target test execution time in seconds",
|
|
121
|
-
default: 300,
|
|
122
|
-
},
|
|
123
|
-
parallelExecution: {
|
|
124
|
-
type: "boolean",
|
|
125
|
-
description: "Whether parallel execution is supported",
|
|
126
|
-
default: true,
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
required: ["testResults"],
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: "setup_ci_cd_testing",
|
|
134
|
-
description: "Set up comprehensive CI/CD testing pipeline",
|
|
135
|
-
inputSchema: {
|
|
136
|
-
type: "object",
|
|
137
|
-
properties: {
|
|
138
|
-
ciPlatform: {
|
|
139
|
-
type: "string",
|
|
140
|
-
enum: [
|
|
141
|
-
"github-actions",
|
|
142
|
-
"gitlab-ci",
|
|
143
|
-
"jenkins",
|
|
144
|
-
"circle-ci",
|
|
145
|
-
"travis-ci",
|
|
146
|
-
],
|
|
147
|
-
description: "CI/CD platform",
|
|
148
|
-
},
|
|
149
|
-
testTypes: {
|
|
150
|
-
type: "array",
|
|
151
|
-
items: {
|
|
152
|
-
type: "string",
|
|
153
|
-
enum: [
|
|
154
|
-
"unit",
|
|
155
|
-
"integration",
|
|
156
|
-
"e2e",
|
|
157
|
-
"performance",
|
|
158
|
-
"security",
|
|
159
|
-
],
|
|
160
|
-
},
|
|
161
|
-
description: "Types of tests to include",
|
|
162
|
-
},
|
|
163
|
-
coverageReporting: {
|
|
164
|
-
type: "boolean",
|
|
165
|
-
description: "Enable coverage reporting",
|
|
166
|
-
default: true,
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
required: ["ciPlatform", "testTypes"],
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
],
|
|
173
|
-
};
|
|
174
|
-
});
|
|
175
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
176
|
-
const { name, arguments: args } = request.params;
|
|
177
|
-
switch (name) {
|
|
178
|
-
case "analyze_test_coverage":
|
|
179
|
-
return await this.analyzeTestCoverage(args);
|
|
180
|
-
case "design_test_strategy":
|
|
181
|
-
return await this.designTestStrategy(args);
|
|
182
|
-
case "implement_tdd_workflow":
|
|
183
|
-
return await this.implementTDDWorkflow(args);
|
|
184
|
-
case "optimize_test_performance":
|
|
185
|
-
return await this.optimizeTestPerformance(args);
|
|
186
|
-
case "setup_ci_cd_testing":
|
|
187
|
-
return await this.setupCICDTesting(args);
|
|
188
|
-
default:
|
|
189
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
27
|
}
|
|
28
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
193
29
|
async analyzeTestCoverage(args) {
|
|
194
30
|
const { codePath, testFramework = "auto-detect", coverageThreshold = 80, } = args;
|
|
195
31
|
try {
|
|
@@ -849,15 +685,6 @@ class XrayTestingBestPracticesServer {
|
|
|
849
685
|
};
|
|
850
686
|
return icons[type] || "🧪";
|
|
851
687
|
}
|
|
852
|
-
async run() {
|
|
853
|
-
const transport = new StdioServerTransport();
|
|
854
|
-
await this.server.connect(transport);
|
|
855
|
-
// Use centralized shutdown handler
|
|
856
|
-
createGracefulShutdown({
|
|
857
|
-
serverName: "testing-best-practices.server",
|
|
858
|
-
server: this.server,
|
|
859
|
-
});
|
|
860
|
-
}
|
|
861
688
|
}
|
|
862
689
|
// Run the server if this file is executed directly
|
|
863
690
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|
|
@@ -4,160 +4,31 @@
|
|
|
4
4
|
* Knowledge skill for test planning, coverage optimization,
|
|
5
5
|
* and testing methodology recommendations
|
|
6
6
|
*/
|
|
7
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
10
7
|
import * as fs from "fs";
|
|
11
8
|
import * as path from "path";
|
|
12
9
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
-
import {
|
|
10
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.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
|
-
|
|
14
|
+
super("testing-strategy", "3.1.0");
|
|
15
|
+
this.tools = [
|
|
16
|
+
{ name: "analyze-test-coverage", description: "Analyze current test coverage and identify gaps", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, includeBreakdown: { type: "boolean", default: true }, coverageThreshold: { type: "number", default: 80 } }, required: ["projectRoot"] } },
|
|
17
|
+
{ name: "design-test-strategy", description: "Design comprehensive testing strategy for the project", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, projectType: { type: "string", enum: ["web", "api", "mobile", "desktop"] }, complexity: { type: "string", enum: ["simple", "medium", "complex"] }, timeline: { type: "string", enum: ["agile", "waterfall", "continuous"] } }, required: ["projectRoot"] } },
|
|
18
|
+
{ name: "identify-test-gaps", description: "Identify untested code and recommend test cases", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, sourceFiles: { type: "array", items: { type: "string" } }, existingTests: { type: "array", items: { type: "string" } } }, required: ["projectRoot"] } },
|
|
19
|
+
{ name: "optimize-test-coverage", description: "Analyze and optimize test coverage patterns", inputSchema: { type: "object", properties: { projectRoot: { type: "string" }, currentCoverage: { type: "number" }, targetCoverage: { type: "number", default: 85 }, focusAreas: { type: "array", items: { type: "string" } } }, required: ["projectRoot"] } },
|
|
20
|
+
{ name: "generate-test-file", description: "Generate test file for a source file with exports", inputSchema: { type: "object", properties: { sourceFile: { type: "string", description: "Path to source file" }, sourceContent: { type: "string", description: "Source file content" }, exports: { type: "array", items: { type: "object", properties: { name: { type: "string" }, type: { type: "string" } } }, description: "Exported functions/classes to test" }, testFilePath: { type: "string", description: "Path for generated test file" }, directory: { type: "string", description: "Project directory" } }, required: ["sourceFile", "sourceContent", "exports", "testFilePath"] } },
|
|
21
|
+
];
|
|
22
|
+
this.handlers = {
|
|
23
|
+
"analyze-test-coverage": async (args) => this.analyzeTestCoverage(args),
|
|
24
|
+
"design-test-strategy": async (args) => this.designTestStrategy(args),
|
|
25
|
+
"identify-test-gaps": async (args) => this.identifyTestGaps(args),
|
|
26
|
+
"optimize-test-coverage": async (args) => this.optimizeTestCoverage(args),
|
|
27
|
+
"generate-test-file": async (args) => this.generateTestFile(args),
|
|
28
|
+
};
|
|
25
29
|
this.setupToolHandlers();
|
|
26
|
-
// Server initialization - removed unnecessary startup logging
|
|
27
|
-
}
|
|
28
|
-
setupToolHandlers() {
|
|
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
|
-
},
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: "design-test-strategy",
|
|
47
|
-
description: "Design comprehensive testing strategy for the project",
|
|
48
|
-
inputSchema: {
|
|
49
|
-
type: "object",
|
|
50
|
-
properties: {
|
|
51
|
-
projectRoot: { type: "string" },
|
|
52
|
-
projectType: {
|
|
53
|
-
type: "string",
|
|
54
|
-
enum: ["web", "api", "mobile", "desktop"],
|
|
55
|
-
},
|
|
56
|
-
complexity: {
|
|
57
|
-
type: "string",
|
|
58
|
-
enum: ["simple", "medium", "complex"],
|
|
59
|
-
},
|
|
60
|
-
timeline: {
|
|
61
|
-
type: "string",
|
|
62
|
-
enum: ["agile", "waterfall", "continuous"],
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
required: ["projectRoot"],
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: "identify-test-gaps",
|
|
70
|
-
description: "Identify untested code and recommend test cases",
|
|
71
|
-
inputSchema: {
|
|
72
|
-
type: "object",
|
|
73
|
-
properties: {
|
|
74
|
-
projectRoot: { type: "string" },
|
|
75
|
-
sourceFiles: { type: "array", items: { type: "string" } },
|
|
76
|
-
existingTests: { type: "array", items: { type: "string" } },
|
|
77
|
-
},
|
|
78
|
-
required: ["projectRoot"],
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: "optimize-test-coverage",
|
|
83
|
-
description: "Analyze and optimize test coverage patterns",
|
|
84
|
-
inputSchema: {
|
|
85
|
-
type: "object",
|
|
86
|
-
properties: {
|
|
87
|
-
projectRoot: { type: "string" },
|
|
88
|
-
currentCoverage: { type: "number" },
|
|
89
|
-
targetCoverage: { type: "number", default: 85 },
|
|
90
|
-
focusAreas: { type: "array", items: { type: "string" } },
|
|
91
|
-
},
|
|
92
|
-
required: ["projectRoot"],
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: "generate-test-file",
|
|
97
|
-
description: "Generate test file for a source file with exports",
|
|
98
|
-
inputSchema: {
|
|
99
|
-
type: "object",
|
|
100
|
-
properties: {
|
|
101
|
-
sourceFile: {
|
|
102
|
-
type: "string",
|
|
103
|
-
description: "Path to source file",
|
|
104
|
-
},
|
|
105
|
-
sourceContent: {
|
|
106
|
-
type: "string",
|
|
107
|
-
description: "Source file content",
|
|
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
|
-
},
|
|
133
|
-
},
|
|
134
|
-
],
|
|
135
|
-
};
|
|
136
|
-
});
|
|
137
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
138
|
-
const { name, arguments: args } = request.params;
|
|
139
|
-
try {
|
|
140
|
-
switch (name) {
|
|
141
|
-
case "analyze-test-coverage":
|
|
142
|
-
return await this.analyzeTestCoverage(args);
|
|
143
|
-
case "design-test-strategy":
|
|
144
|
-
return await this.designTestStrategy(args);
|
|
145
|
-
case "identify-test-gaps":
|
|
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
|
-
});
|
|
160
30
|
}
|
|
31
|
+
// setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
|
|
161
32
|
async analyzeTestCoverage(args) {
|
|
162
33
|
const { projectRoot, includeBreakdown = true, coverageThreshold = 80, } = args;
|
|
163
34
|
const analysis = this.performTestCoverageAnalysis(projectRoot);
|
|
@@ -809,15 +680,6 @@ describe("${pathModule.basename(sourceFile, ".ts")}", () => {${testCases}
|
|
|
809
680
|
];
|
|
810
681
|
return ignorePatterns.some((pattern) => pattern.test(filePath));
|
|
811
682
|
}
|
|
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
683
|
}
|
|
822
684
|
// Start the server if run directly
|
|
823
685
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|