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
|
@@ -7,179 +7,150 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Production-ready implementation with real analysis logic.
|
|
9
9
|
*/
|
|
10
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
11
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
12
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
13
10
|
import * as fs from "fs";
|
|
14
11
|
import { fileURLToPath } from "url";
|
|
15
12
|
import { frameworkLogger } from "../../core/framework-logger.js";
|
|
13
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
16
14
|
/* ============================================================================
|
|
17
15
|
* Analysis Engine
|
|
18
16
|
* ============================================================================ */
|
|
19
|
-
class MultimodalLookerServer {
|
|
20
|
-
server;
|
|
17
|
+
class MultimodalLookerServer extends XrayKnowledgeSkillBase {
|
|
21
18
|
constructor() {
|
|
22
|
-
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
default: true,
|
|
49
|
-
description: "Check for accessibility issues",
|
|
50
|
-
},
|
|
51
|
-
analyzeLayout: {
|
|
52
|
-
type: "boolean",
|
|
53
|
-
default: true,
|
|
54
|
-
description: "Analyze layout structure and grid",
|
|
55
|
-
},
|
|
19
|
+
super("multimodal-looker", "3.1.0");
|
|
20
|
+
this.tools = [
|
|
21
|
+
{
|
|
22
|
+
name: "analyze-screenshot",
|
|
23
|
+
description: "Extract UI elements from screenshots. Identifies components, layout structure, and provides detailed element analysis for code generation.",
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
imageData: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "Base64 encoded image or detailed visual description",
|
|
30
|
+
},
|
|
31
|
+
extractComponents: {
|
|
32
|
+
type: "boolean",
|
|
33
|
+
default: true,
|
|
34
|
+
description: "Extract individual UI components",
|
|
35
|
+
},
|
|
36
|
+
checkAccessibility: {
|
|
37
|
+
type: "boolean",
|
|
38
|
+
default: true,
|
|
39
|
+
description: "Check for accessibility issues",
|
|
40
|
+
},
|
|
41
|
+
analyzeLayout: {
|
|
42
|
+
type: "boolean",
|
|
43
|
+
default: true,
|
|
44
|
+
description: "Analyze layout structure and grid",
|
|
56
45
|
},
|
|
57
|
-
required: ["imageData"],
|
|
58
46
|
},
|
|
47
|
+
required: ["imageData"],
|
|
59
48
|
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "describe-diagram",
|
|
52
|
+
description: "Parse architecture and flow diagrams. Extracts nodes, edges, relationships for understanding system design.",
|
|
53
|
+
inputSchema: {
|
|
54
|
+
type: "object",
|
|
55
|
+
properties: {
|
|
56
|
+
imageData: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: "Diagram image or description",
|
|
59
|
+
},
|
|
60
|
+
diagramType: {
|
|
61
|
+
type: "string",
|
|
62
|
+
enum: ["auto", "flowchart", "sequence", "class", "architecture", "erd", "state"],
|
|
63
|
+
default: "auto",
|
|
64
|
+
},
|
|
65
|
+
extractMetadata: {
|
|
66
|
+
type: "boolean",
|
|
67
|
+
default: true,
|
|
68
|
+
description: "Extract additional metadata about the diagram",
|
|
80
69
|
},
|
|
81
|
-
required: ["imageData"],
|
|
82
70
|
},
|
|
71
|
+
required: ["imageData"],
|
|
83
72
|
},
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "review-ui-mockup",
|
|
76
|
+
description: "Evaluate UI mockups against best practices. Checks consistency, accessibility, and provides improvement suggestions.",
|
|
77
|
+
inputSchema: {
|
|
78
|
+
type: "object",
|
|
79
|
+
properties: {
|
|
80
|
+
imageData: {
|
|
81
|
+
type: "string",
|
|
82
|
+
description: "UI mockup image or description",
|
|
83
|
+
},
|
|
84
|
+
framework: {
|
|
85
|
+
type: "string",
|
|
86
|
+
enum: ["react", "vue", "angular", "svelte", "html"],
|
|
87
|
+
default: "react",
|
|
88
|
+
},
|
|
89
|
+
checkResponsive: {
|
|
90
|
+
type: "boolean",
|
|
91
|
+
default: true,
|
|
92
|
+
description: "Check for responsive design patterns",
|
|
104
93
|
},
|
|
105
|
-
required: ["imageData"],
|
|
106
94
|
},
|
|
95
|
+
required: ["imageData"],
|
|
107
96
|
},
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "extract-visual-specs",
|
|
100
|
+
description: "Convert visual content to design specifications. Extracts colors, spacing, typography, and other design tokens.",
|
|
101
|
+
inputSchema: {
|
|
102
|
+
type: "object",
|
|
103
|
+
properties: {
|
|
104
|
+
imageData: {
|
|
105
|
+
type: "string",
|
|
106
|
+
description: "Visual content to analyze",
|
|
107
|
+
},
|
|
108
|
+
includeValues: {
|
|
109
|
+
type: "boolean",
|
|
110
|
+
default: true,
|
|
111
|
+
description: "Include actual CSS values",
|
|
112
|
+
},
|
|
113
|
+
format: {
|
|
114
|
+
type: "string",
|
|
115
|
+
enum: ["css", "tailwind", "json"],
|
|
116
|
+
default: "css",
|
|
128
117
|
},
|
|
129
|
-
required: ["imageData"],
|
|
130
118
|
},
|
|
119
|
+
required: ["imageData"],
|
|
131
120
|
},
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "compare-designs",
|
|
124
|
+
description: "Compare two designs for consistency. Identifies differences in colors, layout, typography, and components.",
|
|
125
|
+
inputSchema: {
|
|
126
|
+
type: "object",
|
|
127
|
+
properties: {
|
|
128
|
+
imageA: {
|
|
129
|
+
type: "string",
|
|
130
|
+
description: "Reference design",
|
|
131
|
+
},
|
|
132
|
+
imageB: {
|
|
133
|
+
type: "string",
|
|
134
|
+
description: "Design to compare",
|
|
135
|
+
},
|
|
136
|
+
tolerance: {
|
|
137
|
+
type: "number",
|
|
138
|
+
default: 5,
|
|
139
|
+
description: "Difference tolerance threshold (0-100)",
|
|
151
140
|
},
|
|
152
|
-
required: ["imageA", "imageB"],
|
|
153
141
|
},
|
|
142
|
+
required: ["imageA", "imageB"],
|
|
154
143
|
},
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
this.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
return this.handleDescribeDiagram(params);
|
|
166
|
-
case "review-ui-mockup":
|
|
167
|
-
return this.handleReviewUIMockup(params);
|
|
168
|
-
case "extract-visual-specs":
|
|
169
|
-
return this.handleExtractVisualSpecs(params);
|
|
170
|
-
case "compare-designs":
|
|
171
|
-
return this.handleCompareDesigns(params);
|
|
172
|
-
default:
|
|
173
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
return {
|
|
178
|
-
content: [{ type: "text", text: `Error: ${error}` }],
|
|
179
|
-
isError: true,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
});
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
this.handlers = {
|
|
147
|
+
"analyze-screenshot": async (args) => this.handleAnalyzeScreenshot(args),
|
|
148
|
+
"describe-diagram": async (args) => this.handleDescribeDiagram(args),
|
|
149
|
+
"review-ui-mockup": async (args) => this.handleReviewUIMockup(args),
|
|
150
|
+
"extract-visual-specs": async (args) => this.handleExtractVisualSpecs(args),
|
|
151
|
+
"compare-designs": async (args) => this.handleCompareDesigns(args),
|
|
152
|
+
};
|
|
153
|
+
this.setupToolHandlers();
|
|
183
154
|
}
|
|
184
155
|
/* --------------------------------------------------------------------------
|
|
185
156
|
* Tool Handlers
|
|
@@ -1048,13 +1019,6 @@ class MultimodalLookerServer {
|
|
|
1048
1019
|
}
|
|
1049
1020
|
return recommendations;
|
|
1050
1021
|
}
|
|
1051
|
-
/* --------------------------------------------------------------------------
|
|
1052
|
-
* Server Lifecycle
|
|
1053
|
-
* -------------------------------------------------------------------------- */
|
|
1054
|
-
async run() {
|
|
1055
|
-
const transport = new StdioServerTransport();
|
|
1056
|
-
await this.server.connect(transport);
|
|
1057
|
-
}
|
|
1058
1022
|
}
|
|
1059
1023
|
const entryPoint = fs.realpathSync(process.argv[1] ?? "");
|
|
1060
1024
|
if (entryPoint && fileURLToPath(import.meta.url) === entryPoint) {
|
|
@@ -4,144 +4,105 @@
|
|
|
4
4
|
* Knowledge skill for performance analysis, optimization recommendations,
|
|
5
5
|
* profiling, benchmarking, memory analysis, and Core Web Vitals measurement
|
|
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 { frameworkLogger, generateJobId } from "../../core/framework-logger.js";
|
|
11
|
-
import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
|
|
12
8
|
import fs from "fs";
|
|
13
9
|
import path from "path";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
startTime;
|
|
10
|
+
import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
|
|
11
|
+
class XrayPerformanceOptimizationServer extends XrayKnowledgeSkillBase {
|
|
17
12
|
constructor() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
super("performance-optimization", "3.1.0");
|
|
14
|
+
this.tools = [
|
|
15
|
+
{
|
|
16
|
+
name: "profile-application",
|
|
17
|
+
description: "Run comprehensive performance profiling on the codebase to identify bottlenecks and hot paths",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
22
|
+
scope: {
|
|
23
|
+
type: "string",
|
|
24
|
+
enum: ["full", "runtime", "build", "memory"],
|
|
25
|
+
default: "full",
|
|
26
|
+
description: "Scope of profiling analysis"
|
|
27
|
+
},
|
|
28
|
+
duration: { type: "number", default: 30, description: "Profiling duration in seconds" },
|
|
29
|
+
includeHotPaths: { type: "boolean", default: true, description: "Include hot path analysis" }
|
|
30
|
+
},
|
|
31
|
+
required: ["projectRoot"]
|
|
32
|
+
}
|
|
23
33
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
description: "Run comprehensive performance profiling on the codebase to identify bottlenecks and hot paths",
|
|
35
|
-
inputSchema: {
|
|
36
|
-
type: "object",
|
|
37
|
-
properties: {
|
|
38
|
-
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
39
|
-
scope: {
|
|
40
|
-
type: "string",
|
|
41
|
-
enum: ["full", "runtime", "build", "memory"],
|
|
42
|
-
default: "full",
|
|
43
|
-
description: "Scope of profiling analysis"
|
|
44
|
-
},
|
|
45
|
-
duration: { type: "number", default: 30, description: "Profiling duration in seconds" },
|
|
46
|
-
includeHotPaths: { type: "boolean", default: true, description: "Include hot path analysis" }
|
|
47
|
-
},
|
|
48
|
-
required: ["projectRoot"]
|
|
49
|
-
}
|
|
34
|
+
{
|
|
35
|
+
name: "analyze-memory",
|
|
36
|
+
description: "Perform memory leak detection and heap analysis to identify memory issues",
|
|
37
|
+
inputSchema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
41
|
+
heapSnapshot: { type: "boolean", default: true, description: "Generate heap snapshot analysis" },
|
|
42
|
+
gcAnalysis: { type: "boolean", default: true, description: "Analyze garbage collection patterns" },
|
|
43
|
+
leakDetection: { type: "boolean", default: true, description: "Detect potential memory leaks" }
|
|
50
44
|
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
45
|
+
required: ["projectRoot"]
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "benchmark-code",
|
|
50
|
+
description: "Execute and compare benchmark results for code performance measurement",
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: "object",
|
|
53
|
+
properties: {
|
|
54
|
+
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
55
|
+
testFile: { type: "string", description: "Specific benchmark test file to run" },
|
|
56
|
+
iterations: { type: "number", default: 100, description: "Number of benchmark iterations" },
|
|
57
|
+
warmupRuns: { type: "number", default: 10, description: "Number of warmup runs" },
|
|
58
|
+
compareBaseline: { type: "boolean", default: false, description: "Compare results against baseline" }
|
|
64
59
|
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
60
|
+
required: ["projectRoot"]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "suggest-optimizations",
|
|
65
|
+
description: "Generate specific, actionable optimization suggestions based on code analysis",
|
|
66
|
+
inputSchema: {
|
|
67
|
+
type: "object",
|
|
68
|
+
properties: {
|
|
69
|
+
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
70
|
+
focus: {
|
|
71
|
+
type: "string",
|
|
72
|
+
enum: ["cpu", "memory", "network", "io", "all"],
|
|
73
|
+
default: "all",
|
|
74
|
+
description: "Focus area for optimizations"
|
|
75
|
+
},
|
|
76
|
+
threshold: { type: "number", default: 100, description: "Performance threshold in ms" }
|
|
79
77
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
required: ["projectRoot"]
|
|
96
|
-
}
|
|
78
|
+
required: ["projectRoot"]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "measure-core-web-vitals",
|
|
83
|
+
description: "Analyze Core Web Vitals metrics (LCP, INP, CLS) for web application performance",
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: {
|
|
87
|
+
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
88
|
+
analyzeBundle: { type: "boolean", default: true, description: "Analyze JavaScript bundle" },
|
|
89
|
+
checkAccessibility: { type: "boolean", default: true, description: "Check accessibility factors affecting CLS" },
|
|
90
|
+
measureLCP: { type: "boolean", default: true, description: "Measure Largest Contentful Paint" },
|
|
91
|
+
measureINP: { type: "boolean", default: true, description: "Measure Interaction to Next Paint" },
|
|
92
|
+
measureCLS: { type: "boolean", default: true, description: "Measure Cumulative Layout Shift" }
|
|
97
93
|
},
|
|
98
|
-
|
|
99
|
-
name: "measure-core-web-vitals",
|
|
100
|
-
description: "Analyze Core Web Vitals metrics (LCP, INP, CLS) for web application performance",
|
|
101
|
-
inputSchema: {
|
|
102
|
-
type: "object",
|
|
103
|
-
properties: {
|
|
104
|
-
projectRoot: { type: "string", description: "Path to the project root directory" },
|
|
105
|
-
analyzeBundle: { type: "boolean", default: true, description: "Analyze JavaScript bundle" },
|
|
106
|
-
checkAccessibility: { type: "boolean", default: true, description: "Check accessibility factors affecting CLS" },
|
|
107
|
-
measureLCP: { type: "boolean", default: true, description: "Measure Largest Contentful Paint" },
|
|
108
|
-
measureINP: { type: "boolean", default: true, description: "Measure Interaction to Next Paint" },
|
|
109
|
-
measureCLS: { type: "boolean", default: true, description: "Measure Cumulative Layout Shift" }
|
|
110
|
-
},
|
|
111
|
-
required: ["projectRoot"]
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
};
|
|
116
|
-
});
|
|
117
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
118
|
-
const { name, arguments: args } = request.params;
|
|
119
|
-
try {
|
|
120
|
-
switch (name) {
|
|
121
|
-
case "profile-application":
|
|
122
|
-
return await this.handleProfileApplication(args);
|
|
123
|
-
case "analyze-memory":
|
|
124
|
-
return await this.handleAnalyzeMemory(args);
|
|
125
|
-
case "benchmark-code":
|
|
126
|
-
return await this.handleBenchmarkCode(args);
|
|
127
|
-
case "suggest-optimizations":
|
|
128
|
-
return await this.handleSuggestOptimizations(args);
|
|
129
|
-
case "measure-core-web-vitals":
|
|
130
|
-
return await this.handleMeasureCoreWebVitals(args);
|
|
131
|
-
default:
|
|
132
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
94
|
+
required: ["projectRoot"]
|
|
133
95
|
}
|
|
134
96
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
});
|
|
97
|
+
];
|
|
98
|
+
this.handlers = {
|
|
99
|
+
"profile-application": async (args) => this.handleProfileApplication(args),
|
|
100
|
+
"analyze-memory": async (args) => this.handleAnalyzeMemory(args),
|
|
101
|
+
"benchmark-code": async (args) => this.handleBenchmarkCode(args),
|
|
102
|
+
"suggest-optimizations": async (args) => this.handleSuggestOptimizations(args),
|
|
103
|
+
"measure-core-web-vitals": async (args) => this.handleMeasureCoreWebVitals(args),
|
|
104
|
+
};
|
|
105
|
+
this.setupToolHandlers();
|
|
145
106
|
}
|
|
146
107
|
async handleProfileApplication(args) {
|
|
147
108
|
const { projectRoot, scope = "full", duration = 30, includeHotPaths = true } = args;
|
|
@@ -1566,17 +1527,6 @@ ${result.recommendations.slice(0, 5).map((r, i) => `${i + 1}. ${r}`).join("\n")
|
|
|
1566
1527
|
}
|
|
1567
1528
|
return files.slice(0, 100);
|
|
1568
1529
|
}
|
|
1569
|
-
async run() {
|
|
1570
|
-
const transport = new StdioServerTransport();
|
|
1571
|
-
await this.server.connect(transport);
|
|
1572
|
-
createGracefulShutdown({
|
|
1573
|
-
serverName: "performance-optimization.server",
|
|
1574
|
-
server: this.server,
|
|
1575
|
-
});
|
|
1576
|
-
frameworkLogger.log("mcp/performance-optimization", "server-started", "info", {
|
|
1577
|
-
uptime: Date.now() - this.startTime
|
|
1578
|
-
});
|
|
1579
|
-
}
|
|
1580
1530
|
}
|
|
1581
1531
|
if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
|
|
1582
1532
|
const server = new XrayPerformanceOptimizationServer();
|