mycontext-cli 4.2.10 â 4.2.11
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/README.md +13 -4
- package/dist/README.md +13 -4
- package/dist/agents/implementations/ArchitectAgent.js.map +1 -1
- package/dist/agents/implementations/BuildStrategyAgent.js.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DemoRecorderAgent.d.ts +73 -0
- package/dist/agents/implementations/DemoRecorderAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DemoRecorderAgent.js +485 -0
- package/dist/agents/implementations/DemoRecorderAgent.js.map +1 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts +4 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -1
- package/dist/agents/implementations/DesignPipelineAgent.js +82 -10
- package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -1
- package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
- package/dist/agents/implementations/FeaturePlannerAgent.d.ts +10 -0
- package/dist/agents/implementations/FeaturePlannerAgent.d.ts.map +1 -0
- package/dist/agents/implementations/FeaturePlannerAgent.js +35 -0
- package/dist/agents/implementations/FeaturePlannerAgent.js.map +1 -0
- package/dist/agents/implementations/QASubAgent.js.map +1 -1
- package/dist/agents/implementations/SecurityAgent.js.map +1 -1
- package/dist/agents/implementations/VOScriptExtractorAgent.d.ts +84 -0
- package/dist/agents/implementations/VOScriptExtractorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/VOScriptExtractorAgent.js +414 -0
- package/dist/agents/implementations/VOScriptExtractorAgent.js.map +1 -0
- package/dist/agents/implementations/VisionNavigatorAgent.d.ts +52 -0
- package/dist/agents/implementations/VisionNavigatorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/VisionNavigatorAgent.js +313 -0
- package/dist/agents/implementations/VisionNavigatorAgent.js.map +1 -0
- package/dist/agents/implementations/VisionTestCoordinator.d.ts +51 -0
- package/dist/agents/implementations/VisionTestCoordinator.d.ts.map +1 -0
- package/dist/agents/implementations/VisionTestCoordinator.js +348 -0
- package/dist/agents/implementations/VisionTestCoordinator.js.map +1 -0
- package/dist/agents/implementations/VisualValidatorAgent.d.ts +83 -0
- package/dist/agents/implementations/VisualValidatorAgent.d.ts.map +1 -0
- package/dist/agents/implementations/VisualValidatorAgent.js +472 -0
- package/dist/agents/implementations/VisualValidatorAgent.js.map +1 -0
- package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/clients/ClaudeSDKClient.d.ts +4 -0
- package/dist/clients/ClaudeSDKClient.d.ts.map +1 -1
- package/dist/clients/ClaudeSDKClient.js +8 -0
- package/dist/clients/ClaudeSDKClient.js.map +1 -1
- package/dist/clients/MyContextAIClient.d.ts +4 -0
- package/dist/clients/MyContextAIClient.d.ts.map +1 -1
- package/dist/clients/MyContextAIClient.js +69 -0
- package/dist/clients/MyContextAIClient.js.map +1 -1
- package/dist/clients/ProviderChain.d.ts +1 -0
- package/dist/clients/ProviderChain.d.ts.map +1 -1
- package/dist/clients/ProviderChain.js +3 -0
- package/dist/clients/ProviderChain.js.map +1 -1
- package/dist/clients/XAIClient.d.ts +4 -0
- package/dist/clients/XAIClient.d.ts.map +1 -1
- package/dist/clients/XAIClient.js +8 -0
- package/dist/clients/XAIClient.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +110 -204
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan-feature.d.ts +3 -0
- package/dist/commands/plan-feature.d.ts.map +1 -0
- package/dist/commands/plan-feature.js +57 -0
- package/dist/commands/plan-feature.js.map +1 -0
- package/dist/commands/sanitize.d.ts.map +1 -1
- package/dist/commands/sanitize.js +95 -7
- package/dist/commands/sanitize.js.map +1 -1
- package/dist/commands/vision-test.d.ts +67 -0
- package/dist/commands/vision-test.d.ts.map +1 -0
- package/dist/commands/vision-test.js +347 -0
- package/dist/commands/vision-test.js.map +1 -0
- package/dist/core/ai/AICore.d.ts +13 -0
- package/dist/core/ai/AICore.d.ts.map +1 -1
- package/dist/core/ai/AICore.js +65 -0
- package/dist/core/ai/AICore.js.map +1 -1
- package/dist/doctor/rules/node-rules.d.ts.map +1 -1
- package/dist/doctor/rules/node-rules.js +41 -0
- package/dist/doctor/rules/node-rules.js.map +1 -1
- package/dist/interfaces/AIClient.d.ts +1 -0
- package/dist/interfaces/AIClient.d.ts.map +1 -1
- package/dist/interfaces/AIClient.js.map +1 -1
- package/dist/mcp/vision-test-runner.d.ts +57 -0
- package/dist/mcp/vision-test-runner.d.ts.map +1 -0
- package/dist/mcp/vision-test-runner.js +337 -0
- package/dist/mcp/vision-test-runner.js.map +1 -0
- package/dist/mcp/vision-testing-server.d.ts +38 -0
- package/dist/mcp/vision-testing-server.d.ts.map +1 -0
- package/dist/mcp/vision-testing-server.js +637 -0
- package/dist/mcp/vision-testing-server.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/services/gemini-vision.d.ts +3 -11
- package/dist/services/gemini-vision.d.ts.map +1 -1
- package/dist/services/gemini-vision.js +13 -132
- package/dist/services/gemini-vision.js.map +1 -1
- package/dist/services/llmClarifier.d.ts +9 -0
- package/dist/services/llmClarifier.d.ts.map +1 -0
- package/dist/services/llmClarifier.js +22 -0
- package/dist/services/llmClarifier.js.map +1 -0
- package/dist/services/vision-element-finder.d.ts +64 -0
- package/dist/services/vision-element-finder.d.ts.map +1 -0
- package/dist/services/vision-element-finder.js +446 -0
- package/dist/services/vision-element-finder.js.map +1 -0
- package/dist/types/flow-testing.d.ts +1 -1
- package/dist/types/flow-testing.d.ts.map +1 -1
- package/dist/types/vision-testing.d.ts +382 -0
- package/dist/types/vision-testing.d.ts.map +1 -0
- package/dist/types/vision-testing.js +9 -0
- package/dist/types/vision-testing.js.map +1 -0
- package/dist/utils/claudeAgentClient.d.ts +4 -0
- package/dist/utils/claudeAgentClient.d.ts.map +1 -1
- package/dist/utils/claudeAgentClient.js +8 -0
- package/dist/utils/claudeAgentClient.js.map +1 -1
- package/dist/utils/geminiClient.d.ts +41 -6
- package/dist/utils/geminiClient.d.ts.map +1 -1
- package/dist/utils/geminiClient.js +124 -18
- package/dist/utils/geminiClient.js.map +1 -1
- package/dist/utils/githubModelsClient.d.ts +19 -6
- package/dist/utils/githubModelsClient.d.ts.map +1 -1
- package/dist/utils/githubModelsClient.js +94 -7
- package/dist/utils/githubModelsClient.js.map +1 -1
- package/dist/utils/openRouterClient.d.ts +12 -3
- package/dist/utils/openRouterClient.d.ts.map +1 -1
- package/dist/utils/openRouterClient.js +91 -2
- package/dist/utils/openRouterClient.js.map +1 -1
- package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -1
- package/dist/utils/unifiedDesignContextLoader.js +15 -0
- package/dist/utils/unifiedDesignContextLoader.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,637 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Vision Testing MCP Server
|
|
5
|
+
*
|
|
6
|
+
* A Model Context Protocol server for vision-based UI testing.
|
|
7
|
+
* Provides AI-powered autonomous navigation, visual validation,
|
|
8
|
+
* and professional demo generation.
|
|
9
|
+
*
|
|
10
|
+
* REPLACES: testing-server.ts (old selector-based testing)
|
|
11
|
+
*
|
|
12
|
+
* MCP Tools:
|
|
13
|
+
* - create_vision_test: Create a vision test mission
|
|
14
|
+
* - run_vision_test: Execute a vision test
|
|
15
|
+
* - generate_demo: Record and generate demo artifacts
|
|
16
|
+
* - visual_regression: Run visual regression tests
|
|
17
|
+
* - extract_vo_script: Generate voice-over script from test
|
|
18
|
+
* - list_vision_tests: List all vision test missions
|
|
19
|
+
* - get_vision_test_report: Get detailed test report
|
|
20
|
+
*/
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.VisionTestingMCPServer = void 0;
|
|
26
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
27
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
28
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
29
|
+
const vision_test_runner_1 = require("./vision-test-runner");
|
|
30
|
+
const test_mission_manager_1 = require("./test-mission-manager");
|
|
31
|
+
const ContextService_1 = require("../services/ContextService");
|
|
32
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
33
|
+
class VisionTestingMCPServer {
|
|
34
|
+
constructor(projectPath) {
|
|
35
|
+
this.projectPath = projectPath || process.cwd();
|
|
36
|
+
this.server = new index_js_1.Server({
|
|
37
|
+
name: "vision-testing-server",
|
|
38
|
+
version: "1.0.0",
|
|
39
|
+
}, {
|
|
40
|
+
capabilities: {
|
|
41
|
+
tools: {},
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
// Initialize managers
|
|
45
|
+
this.testRunner = new vision_test_runner_1.VisionTestRunner(this.projectPath);
|
|
46
|
+
this.missionManager = new test_mission_manager_1.TestMissionManager(this.projectPath);
|
|
47
|
+
this.contextService = new ContextService_1.ContextService(this.projectPath);
|
|
48
|
+
this.setupToolHandlers();
|
|
49
|
+
}
|
|
50
|
+
setupToolHandlers() {
|
|
51
|
+
// List available tools
|
|
52
|
+
this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
53
|
+
return {
|
|
54
|
+
tools: this.getAvailableTools(),
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
// Handle tool calls
|
|
58
|
+
this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
59
|
+
const { name, arguments: args } = request.params;
|
|
60
|
+
try {
|
|
61
|
+
switch (name) {
|
|
62
|
+
case "create_vision_test":
|
|
63
|
+
return await this.handleCreateVisionTest(args);
|
|
64
|
+
case "run_vision_test":
|
|
65
|
+
return await this.handleRunVisionTest(args);
|
|
66
|
+
case "generate_demo":
|
|
67
|
+
return await this.handleGenerateDemo(args);
|
|
68
|
+
case "visual_regression":
|
|
69
|
+
return await this.handleVisualRegression(args);
|
|
70
|
+
case "extract_vo_script":
|
|
71
|
+
return await this.handleExtractVOScript(args);
|
|
72
|
+
case "list_vision_tests":
|
|
73
|
+
return await this.handleListVisionTests(args);
|
|
74
|
+
case "get_vision_test_report":
|
|
75
|
+
return await this.handleGetTestReport(args);
|
|
76
|
+
default:
|
|
77
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
return {
|
|
82
|
+
content: [
|
|
83
|
+
{
|
|
84
|
+
type: "text",
|
|
85
|
+
text: `â Error executing ${name}: ${error.message}\n\n${error.stack || ""}`,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
isError: true,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
getAvailableTools() {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
name: "create_vision_test",
|
|
97
|
+
description: "Create a new vision-based UI test mission. The AI will autonomously navigate and validate the UI using visual understanding.",
|
|
98
|
+
inputSchema: {
|
|
99
|
+
type: "object",
|
|
100
|
+
properties: {
|
|
101
|
+
name: {
|
|
102
|
+
type: "string",
|
|
103
|
+
description: "Name for the test mission",
|
|
104
|
+
},
|
|
105
|
+
mission: {
|
|
106
|
+
type: "string",
|
|
107
|
+
description: "Natural language description of what to test (e.g., 'User should be able to login and view dashboard')",
|
|
108
|
+
},
|
|
109
|
+
expectedOutcome: {
|
|
110
|
+
type: "string",
|
|
111
|
+
description: "Expected result after completing the mission",
|
|
112
|
+
},
|
|
113
|
+
startUrl: {
|
|
114
|
+
type: "string",
|
|
115
|
+
description: "Starting URL for the test (default: http://localhost:3000)",
|
|
116
|
+
},
|
|
117
|
+
recordDemo: {
|
|
118
|
+
type: "boolean",
|
|
119
|
+
description: "Whether to record demo artifacts (default: false)",
|
|
120
|
+
},
|
|
121
|
+
demoConfig: {
|
|
122
|
+
type: "object",
|
|
123
|
+
description: "Demo recording configuration",
|
|
124
|
+
properties: {
|
|
125
|
+
outputFormats: {
|
|
126
|
+
type: "array",
|
|
127
|
+
items: {
|
|
128
|
+
type: "string",
|
|
129
|
+
enum: ["video", "screenshots", "html-replay", "markdown-script"],
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
videoQuality: {
|
|
133
|
+
type: "string",
|
|
134
|
+
enum: ["720p", "1080p", "4K"],
|
|
135
|
+
},
|
|
136
|
+
includeVoiceOver: {
|
|
137
|
+
type: "boolean",
|
|
138
|
+
},
|
|
139
|
+
narrationStyle: {
|
|
140
|
+
type: "string",
|
|
141
|
+
enum: ["technical", "casual", "marketing", "educational"],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
visualExpectations: {
|
|
146
|
+
type: "array",
|
|
147
|
+
description: "Visual expectations to validate",
|
|
148
|
+
items: {
|
|
149
|
+
type: "object",
|
|
150
|
+
properties: {
|
|
151
|
+
name: { type: "string" },
|
|
152
|
+
description: { type: "string" },
|
|
153
|
+
screenshot: { type: "string" },
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
required: ["name", "mission", "expectedOutcome"],
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: "run_vision_test",
|
|
163
|
+
description: "Execute a vision test with autonomous AI navigation. The AI will see the UI and make intelligent decisions about interactions.",
|
|
164
|
+
inputSchema: {
|
|
165
|
+
type: "object",
|
|
166
|
+
properties: {
|
|
167
|
+
missionId: {
|
|
168
|
+
type: "string",
|
|
169
|
+
description: "ID of the test mission to run",
|
|
170
|
+
},
|
|
171
|
+
headless: {
|
|
172
|
+
type: "boolean",
|
|
173
|
+
description: "Run browser in headless mode (default: true)",
|
|
174
|
+
},
|
|
175
|
+
baseUrl: {
|
|
176
|
+
type: "string",
|
|
177
|
+
description: "Base URL to use if different from mission config",
|
|
178
|
+
},
|
|
179
|
+
recordVideo: {
|
|
180
|
+
type: "boolean",
|
|
181
|
+
description: "Record video of test execution (default: false)",
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
required: ["missionId"],
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: "generate_demo",
|
|
189
|
+
description: "Record a UI flow and generate professional demo artifacts in multiple formats (video, HTML replay, screenshots, VO script)",
|
|
190
|
+
inputSchema: {
|
|
191
|
+
type: "object",
|
|
192
|
+
properties: {
|
|
193
|
+
flow: {
|
|
194
|
+
type: "string",
|
|
195
|
+
description: "Natural language description of the flow to demonstrate",
|
|
196
|
+
},
|
|
197
|
+
startUrl: {
|
|
198
|
+
type: "string",
|
|
199
|
+
description: "URL to start the demo from",
|
|
200
|
+
},
|
|
201
|
+
outputFormats: {
|
|
202
|
+
type: "array",
|
|
203
|
+
description: "Output formats to generate",
|
|
204
|
+
items: {
|
|
205
|
+
type: "string",
|
|
206
|
+
enum: ["video", "screenshots", "html-replay", "markdown-script"],
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
videoQuality: {
|
|
210
|
+
type: "string",
|
|
211
|
+
enum: ["720p", "1080p", "4K"],
|
|
212
|
+
description: "Video quality (default: 1080p)",
|
|
213
|
+
},
|
|
214
|
+
includeVoiceOver: {
|
|
215
|
+
type: "boolean",
|
|
216
|
+
description: "Generate voice-over script (default: false)",
|
|
217
|
+
},
|
|
218
|
+
narrationStyle: {
|
|
219
|
+
type: "string",
|
|
220
|
+
enum: ["technical", "casual", "marketing", "educational"],
|
|
221
|
+
description: "Narration style (default: technical)",
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
required: ["flow", "startUrl", "outputFormats"],
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: "visual_regression",
|
|
229
|
+
description: "Run visual regression tests by comparing current UI against baseline screenshots",
|
|
230
|
+
inputSchema: {
|
|
231
|
+
type: "object",
|
|
232
|
+
properties: {
|
|
233
|
+
missionId: {
|
|
234
|
+
type: "string",
|
|
235
|
+
description: "ID of the test mission with baseline screenshots",
|
|
236
|
+
},
|
|
237
|
+
threshold: {
|
|
238
|
+
type: "number",
|
|
239
|
+
description: "Acceptable difference percentage (0-100, default: 5)",
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
required: ["missionId"],
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: "extract_vo_script",
|
|
247
|
+
description: "Extract voice-over narration script from an existing test execution",
|
|
248
|
+
inputSchema: {
|
|
249
|
+
type: "object",
|
|
250
|
+
properties: {
|
|
251
|
+
executionId: {
|
|
252
|
+
type: "string",
|
|
253
|
+
description: "ID of the test execution",
|
|
254
|
+
},
|
|
255
|
+
narrationStyle: {
|
|
256
|
+
type: "string",
|
|
257
|
+
enum: ["technical", "casual", "marketing", "educational"],
|
|
258
|
+
description: "Narration style (default: technical)",
|
|
259
|
+
},
|
|
260
|
+
generateAudio: {
|
|
261
|
+
type: "boolean",
|
|
262
|
+
description: "Generate audio using TTS (default: false)",
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
required: ["executionId"],
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: "list_vision_tests",
|
|
270
|
+
description: "List all vision test missions",
|
|
271
|
+
inputSchema: {
|
|
272
|
+
type: "object",
|
|
273
|
+
properties: {
|
|
274
|
+
status: {
|
|
275
|
+
type: "string",
|
|
276
|
+
enum: ["all", "passing", "failing"],
|
|
277
|
+
description: "Filter by status (default: all)",
|
|
278
|
+
},
|
|
279
|
+
tag: {
|
|
280
|
+
type: "string",
|
|
281
|
+
description: "Filter by tag",
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
name: "get_vision_test_report",
|
|
288
|
+
description: "Get detailed report from a vision test execution with screenshots and visual analysis",
|
|
289
|
+
inputSchema: {
|
|
290
|
+
type: "object",
|
|
291
|
+
properties: {
|
|
292
|
+
executionId: {
|
|
293
|
+
type: "string",
|
|
294
|
+
description: "ID of the test execution",
|
|
295
|
+
},
|
|
296
|
+
includeScreenshots: {
|
|
297
|
+
type: "boolean",
|
|
298
|
+
description: "Include screenshot paths in report (default: true)",
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
required: ["executionId"],
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
];
|
|
305
|
+
}
|
|
306
|
+
async handleCreateVisionTest(args) {
|
|
307
|
+
const { name, mission, expectedOutcome, startUrl, recordDemo = false, demoConfig, visualExpectations = [], } = args;
|
|
308
|
+
// Validate against Prime Objective if available
|
|
309
|
+
await this.contextService.initialize();
|
|
310
|
+
const manifest = this.contextService.getManifest();
|
|
311
|
+
if (manifest) {
|
|
312
|
+
const grounding = await this.contextService.validateIntent(mission);
|
|
313
|
+
if (!grounding.valid) {
|
|
314
|
+
return {
|
|
315
|
+
content: [
|
|
316
|
+
{
|
|
317
|
+
type: "text",
|
|
318
|
+
text: `â ī¸ MISSION REJECTED: Your mission "${mission}" may deviate from the Project's Prime Objective.\n\n**Prime Objective**: "${manifest.phases.functional_summary.core_purpose}"\n\n**Reason**: ${grounding.reason}\n\nPlease revise your mission to align with the project's core purpose.`,
|
|
319
|
+
},
|
|
320
|
+
],
|
|
321
|
+
isError: true,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
const visionMission = {
|
|
326
|
+
id: `vision-${Date.now()}`,
|
|
327
|
+
name,
|
|
328
|
+
description: mission,
|
|
329
|
+
mission,
|
|
330
|
+
expectedOutcome,
|
|
331
|
+
tags: ["vision-test"],
|
|
332
|
+
createdAt: new Date().toISOString(),
|
|
333
|
+
updatedAt: new Date().toISOString(),
|
|
334
|
+
sourceFlow: startUrl,
|
|
335
|
+
recordDemo,
|
|
336
|
+
demoConfig,
|
|
337
|
+
visualExpectations,
|
|
338
|
+
};
|
|
339
|
+
// Save mission
|
|
340
|
+
const saved = await this.missionManager.createMission(visionMission);
|
|
341
|
+
return {
|
|
342
|
+
content: [
|
|
343
|
+
{
|
|
344
|
+
type: "text",
|
|
345
|
+
text: `â
Vision test mission created successfully!
|
|
346
|
+
|
|
347
|
+
**Mission ID**: ${saved.id}
|
|
348
|
+
**Name**: ${saved.name}
|
|
349
|
+
**Mission**: ${saved.mission}
|
|
350
|
+
**Expected Outcome**: ${saved.expectedOutcome}
|
|
351
|
+
**Record Demo**: ${recordDemo ? "Yes" : "No"}
|
|
352
|
+
${startUrl ? `**Start URL**: ${startUrl}` : ""}
|
|
353
|
+
|
|
354
|
+
You can now run this mission with:
|
|
355
|
+
\`\`\`
|
|
356
|
+
run_vision_test(missionId: "${saved.id}")
|
|
357
|
+
\`\`\`
|
|
358
|
+
|
|
359
|
+
Or from CLI:
|
|
360
|
+
\`\`\`bash
|
|
361
|
+
mycontext test:vision ${saved.id}
|
|
362
|
+
\`\`\`
|
|
363
|
+
`,
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
async handleRunVisionTest(args) {
|
|
369
|
+
const { missionId, headless = true, baseUrl, recordVideo = false } = args;
|
|
370
|
+
const mission = await this.missionManager.getMission(missionId);
|
|
371
|
+
if (!mission) {
|
|
372
|
+
throw new Error(`Mission not found: ${missionId}`);
|
|
373
|
+
}
|
|
374
|
+
// Pre-flight checks
|
|
375
|
+
await this.contextService.initialize();
|
|
376
|
+
const manifest = this.contextService.getManifest();
|
|
377
|
+
if (manifest) {
|
|
378
|
+
console.log(chalk_1.default.blue(`đ°ī¸ Pre-flight: Anchoring to "${manifest.project_name}"`));
|
|
379
|
+
}
|
|
380
|
+
// Execute the test
|
|
381
|
+
const config = {
|
|
382
|
+
headless,
|
|
383
|
+
baseUrl,
|
|
384
|
+
recordVideo,
|
|
385
|
+
};
|
|
386
|
+
const result = await this.testRunner.runTest(mission, config);
|
|
387
|
+
// Save execution result
|
|
388
|
+
await this.missionManager.saveExecution(result);
|
|
389
|
+
const statusEmoji = result.status === "passed" ? "â
" : "â";
|
|
390
|
+
let output = `${statusEmoji} Test execution ${result.status.toUpperCase()}
|
|
391
|
+
|
|
392
|
+
**Mission**: ${mission.name}
|
|
393
|
+
**Execution ID**: ${result.executionId}
|
|
394
|
+
**Duration**: ${((result.duration || 0) / 1000).toFixed(1)}s
|
|
395
|
+
**Steps Executed**: ${result.steps.length} (${result.steps.filter((s) => s.success).length} successful)
|
|
396
|
+
**Validations**: ${result.validationResults.length} (${result.validationResults.filter((v) => v.passed).length} passed)
|
|
397
|
+
|
|
398
|
+
${result.status === "failed" || result.status === "error" ? `**Error**: ${result.error?.message}\n` : ""}
|
|
399
|
+
|
|
400
|
+
**Final State**:
|
|
401
|
+
- URL: ${result.finalState.url}
|
|
402
|
+
- Screenshot: ${result.finalState.screenshot || "N/A"}
|
|
403
|
+
`;
|
|
404
|
+
if (result.visualSummary) {
|
|
405
|
+
output += `
|
|
406
|
+
**Visual Summary**:
|
|
407
|
+
- Screenshots: ${result.visualSummary.totalScreenshots}
|
|
408
|
+
- Visual Regressions: ${result.visualSummary.visualRegressionsDetected}
|
|
409
|
+
- Color Scheme Match: ${result.visualSummary.colorSchemeMatches ? "â" : "â"}
|
|
410
|
+
- Layout Match: ${result.visualSummary.layoutMatches ? "â" : "â"}
|
|
411
|
+
`;
|
|
412
|
+
}
|
|
413
|
+
if (result.demoArtifacts) {
|
|
414
|
+
output += `
|
|
415
|
+
**Demo Artifacts**:
|
|
416
|
+
- Formats: ${Object.keys(result.demoArtifacts.formats).join(", ")}
|
|
417
|
+
`;
|
|
418
|
+
if (result.demoArtifacts.formats.video) {
|
|
419
|
+
output += `- Video: ${result.demoArtifacts.formats.video.path}\n`;
|
|
420
|
+
}
|
|
421
|
+
if (result.demoArtifacts.formats.htmlReplay) {
|
|
422
|
+
output += `- HTML Replay: ${result.demoArtifacts.formats.htmlReplay.path}\n`;
|
|
423
|
+
}
|
|
424
|
+
if (result.demoArtifacts.voiceOver) {
|
|
425
|
+
output += `- VO Script: ${result.demoArtifacts.voiceOver.script.segments.length} segments\n`;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
output += `
|
|
429
|
+
View full report:
|
|
430
|
+
\`\`\`
|
|
431
|
+
get_vision_test_report(executionId: "${result.executionId}")
|
|
432
|
+
\`\`\`
|
|
433
|
+
`;
|
|
434
|
+
return {
|
|
435
|
+
content: [
|
|
436
|
+
{
|
|
437
|
+
type: "text",
|
|
438
|
+
text: output,
|
|
439
|
+
},
|
|
440
|
+
],
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
async handleGenerateDemo(args) {
|
|
444
|
+
const { flow, startUrl, outputFormats, videoQuality = "1080p", includeVoiceOver = false, narrationStyle = "technical", } = args;
|
|
445
|
+
const request = {
|
|
446
|
+
missionId: `demo-${Date.now()}`,
|
|
447
|
+
config: {
|
|
448
|
+
outputFormats,
|
|
449
|
+
videoQuality,
|
|
450
|
+
includeVoiceOver,
|
|
451
|
+
narrationStyle,
|
|
452
|
+
generateAudio: false,
|
|
453
|
+
},
|
|
454
|
+
startUrl,
|
|
455
|
+
flow,
|
|
456
|
+
metadata: {
|
|
457
|
+
title: "Demo Recording",
|
|
458
|
+
description: flow,
|
|
459
|
+
},
|
|
460
|
+
};
|
|
461
|
+
const result = await this.testRunner.generateDemo(request);
|
|
462
|
+
if (result.status === "failed") {
|
|
463
|
+
return {
|
|
464
|
+
content: [
|
|
465
|
+
{
|
|
466
|
+
type: "text",
|
|
467
|
+
text: `â Demo generation failed: ${result.error}`,
|
|
468
|
+
},
|
|
469
|
+
],
|
|
470
|
+
isError: true,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
let output = `â
Demo generated successfully!
|
|
474
|
+
|
|
475
|
+
**Request ID**: ${result.requestId}
|
|
476
|
+
**Duration**: ${(result.duration / 1000).toFixed(1)}s
|
|
477
|
+
|
|
478
|
+
**Artifacts**:
|
|
479
|
+
`;
|
|
480
|
+
const formats = result.artifacts.formats;
|
|
481
|
+
if (formats.video) {
|
|
482
|
+
output += `
|
|
483
|
+
đš **Video**
|
|
484
|
+
- Path: ${formats.video.path}
|
|
485
|
+
- Duration: ${formats.video.duration}s
|
|
486
|
+
- Size: ${(formats.video.size / 1024 / 1024).toFixed(2)}MB
|
|
487
|
+
- Resolution: ${formats.video.resolution}
|
|
488
|
+
`;
|
|
489
|
+
}
|
|
490
|
+
if (formats.screenshots) {
|
|
491
|
+
output += `
|
|
492
|
+
đ¸ **Screenshots**
|
|
493
|
+
- Count: ${formats.screenshots.count}
|
|
494
|
+
- Format: ${formats.screenshots.format}
|
|
495
|
+
`;
|
|
496
|
+
}
|
|
497
|
+
if (formats.htmlReplay) {
|
|
498
|
+
output += `
|
|
499
|
+
đ **HTML Replay**
|
|
500
|
+
- Path: ${formats.htmlReplay.path}
|
|
501
|
+
- Interactive: ${formats.htmlReplay.interactive ? "Yes" : "No"}
|
|
502
|
+
`;
|
|
503
|
+
}
|
|
504
|
+
if (formats.markdownScript) {
|
|
505
|
+
output += `
|
|
506
|
+
đ **Markdown Script**
|
|
507
|
+
- Path: ${formats.markdownScript.path}
|
|
508
|
+
- Word Count: ${formats.markdownScript.wordCount}
|
|
509
|
+
`;
|
|
510
|
+
}
|
|
511
|
+
if (result.artifacts.voiceOver) {
|
|
512
|
+
output += `
|
|
513
|
+
đī¸ **Voice-Over Script**
|
|
514
|
+
- Segments: ${result.artifacts.voiceOver.script.segments.length}
|
|
515
|
+
- Duration: ${result.artifacts.voiceOver.script.totalDuration.toFixed(1)}s
|
|
516
|
+
`;
|
|
517
|
+
}
|
|
518
|
+
return {
|
|
519
|
+
content: [
|
|
520
|
+
{
|
|
521
|
+
type: "text",
|
|
522
|
+
text: output,
|
|
523
|
+
},
|
|
524
|
+
],
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
async handleVisualRegression(args) {
|
|
528
|
+
const { missionId, threshold = 5 } = args;
|
|
529
|
+
// Placeholder - in production would run visual regression tests
|
|
530
|
+
return {
|
|
531
|
+
content: [
|
|
532
|
+
{
|
|
533
|
+
type: "text",
|
|
534
|
+
text: `đ Visual regression testing for mission: ${missionId}
|
|
535
|
+
|
|
536
|
+
Threshold: ${threshold}%
|
|
537
|
+
|
|
538
|
+
âšī¸ Visual regression testing is currently in development.
|
|
539
|
+
This feature will compare current UI against baseline screenshots and detect:
|
|
540
|
+
- Layout changes
|
|
541
|
+
- Color scheme drift
|
|
542
|
+
- Component positioning
|
|
543
|
+
- Text content differences
|
|
544
|
+
|
|
545
|
+
Stay tuned!`,
|
|
546
|
+
},
|
|
547
|
+
],
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
async handleExtractVOScript(args) {
|
|
551
|
+
const { executionId, narrationStyle = "technical", generateAudio = false, } = args;
|
|
552
|
+
// Placeholder - would extract VO from saved execution
|
|
553
|
+
return {
|
|
554
|
+
content: [
|
|
555
|
+
{
|
|
556
|
+
type: "text",
|
|
557
|
+
text: `đī¸ Extracting voice-over script for execution: ${executionId}
|
|
558
|
+
|
|
559
|
+
Narration Style: ${narrationStyle}
|
|
560
|
+
Generate Audio: ${generateAudio ? "Yes" : "No"}
|
|
561
|
+
|
|
562
|
+
âšī¸ VO script extraction is currently in development.
|
|
563
|
+
This will analyze test execution screenshots and generate:
|
|
564
|
+
- Natural language narration
|
|
565
|
+
- Timestamped script segments
|
|
566
|
+
- Optional TTS audio
|
|
567
|
+
|
|
568
|
+
Stay tuned!`,
|
|
569
|
+
},
|
|
570
|
+
],
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
async handleListVisionTests(args) {
|
|
574
|
+
const { status = "all", tag } = args;
|
|
575
|
+
const missions = await this.missionManager.listMissions({ status, tag });
|
|
576
|
+
const visionMissions = missions.filter((m) => m.visualExpectations !== undefined ||
|
|
577
|
+
m.tags?.includes("vision-test"));
|
|
578
|
+
const output = [
|
|
579
|
+
`# Vision Test Missions (${visionMissions.length})`,
|
|
580
|
+
"",
|
|
581
|
+
...visionMissions.map((m, index) => {
|
|
582
|
+
const vm = m;
|
|
583
|
+
return `${index + 1}. **${m.name}** (${m.id})
|
|
584
|
+
- Mission: ${m.mission}
|
|
585
|
+
- Expected: ${m.expectedOutcome}
|
|
586
|
+
- Record Demo: ${vm.recordDemo ? "Yes" : "No"}
|
|
587
|
+
- Visual Expectations: ${vm.visualExpectations?.length || 0}
|
|
588
|
+
- Created: ${new Date(m.createdAt).toLocaleString()}`;
|
|
589
|
+
}),
|
|
590
|
+
];
|
|
591
|
+
return {
|
|
592
|
+
content: [
|
|
593
|
+
{
|
|
594
|
+
type: "text",
|
|
595
|
+
text: output.join("\n"),
|
|
596
|
+
},
|
|
597
|
+
],
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
async handleGetTestReport(args) {
|
|
601
|
+
const { executionId, includeScreenshots = true } = args;
|
|
602
|
+
// Placeholder - would retrieve detailed report
|
|
603
|
+
return {
|
|
604
|
+
content: [
|
|
605
|
+
{
|
|
606
|
+
type: "text",
|
|
607
|
+
text: `đ Test Report for execution: ${executionId}
|
|
608
|
+
|
|
609
|
+
Include Screenshots: ${includeScreenshots ? "Yes" : "No"}
|
|
610
|
+
|
|
611
|
+
âšī¸ Detailed reporting is currently in development.
|
|
612
|
+
The full report will include:
|
|
613
|
+
- Step-by-step breakdown with screenshots
|
|
614
|
+
- Visual analysis at each step
|
|
615
|
+
- Validation results with diffs
|
|
616
|
+
- Performance metrics
|
|
617
|
+
- AI decision reasoning
|
|
618
|
+
|
|
619
|
+
Stay tuned!`,
|
|
620
|
+
},
|
|
621
|
+
],
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
async start() {
|
|
625
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
626
|
+
await this.server.connect(transport);
|
|
627
|
+
console.error("Vision Testing MCP Server running on stdio");
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
exports.VisionTestingMCPServer = VisionTestingMCPServer;
|
|
631
|
+
// Start server if run directly
|
|
632
|
+
if (require.main === module) {
|
|
633
|
+
const projectPath = process.argv[2] || process.cwd();
|
|
634
|
+
const server = new VisionTestingMCPServer(projectPath);
|
|
635
|
+
server.start().catch(console.error);
|
|
636
|
+
}
|
|
637
|
+
//# sourceMappingURL=vision-testing-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision-testing-server.js","sourceRoot":"","sources":["../../src/mcp/vision-testing-server.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED