devlens-mcp 0.4.1 → 0.5.2

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.
Files changed (131) hide show
  1. package/README.md +211 -35
  2. package/RELEASE_NOTES.md +3 -7
  3. package/dist/bin/cli.js +47 -13
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/bin/setup.d.ts +14 -0
  6. package/dist/bin/setup.d.ts.map +1 -0
  7. package/dist/bin/setup.js +272 -0
  8. package/dist/bin/setup.js.map +1 -0
  9. package/dist/src/figma/figma-api.d.ts +108 -0
  10. package/dist/src/figma/figma-api.d.ts.map +1 -0
  11. package/dist/src/figma/figma-api.js +284 -0
  12. package/dist/src/figma/figma-api.js.map +1 -0
  13. package/dist/src/figma/figma-cache.d.ts +57 -0
  14. package/dist/src/figma/figma-cache.d.ts.map +1 -0
  15. package/dist/src/figma/figma-cache.js +266 -0
  16. package/dist/src/figma/figma-cache.js.map +1 -0
  17. package/dist/src/figma/figma-client.d.ts +62 -0
  18. package/dist/src/figma/figma-client.d.ts.map +1 -0
  19. package/dist/src/figma/figma-client.js +224 -0
  20. package/dist/src/figma/figma-client.js.map +1 -0
  21. package/dist/src/figma/figma-rate-limiter.d.ts +46 -0
  22. package/dist/src/figma/figma-rate-limiter.d.ts.map +1 -0
  23. package/dist/src/figma/figma-rate-limiter.js +153 -0
  24. package/dist/src/figma/figma-rate-limiter.js.map +1 -0
  25. package/dist/src/figma/figma-retry.d.ts +19 -0
  26. package/dist/src/figma/figma-retry.d.ts.map +1 -0
  27. package/dist/src/figma/figma-retry.js +57 -0
  28. package/dist/src/figma/figma-retry.js.map +1 -0
  29. package/dist/src/figma/figma-structure.d.ts +1 -1
  30. package/dist/src/figma/figma-structure.d.ts.map +1 -1
  31. package/dist/src/figma/figma-structure.js +11 -1
  32. package/dist/src/figma/figma-structure.js.map +1 -1
  33. package/dist/src/figma/figma-types.d.ts +54 -0
  34. package/dist/src/figma/figma-types.d.ts.map +1 -0
  35. package/dist/src/figma/figma-types.js +33 -0
  36. package/dist/src/figma/figma-types.js.map +1 -0
  37. package/dist/src/figma/url-parser.d.ts +40 -0
  38. package/dist/src/figma/url-parser.d.ts.map +1 -0
  39. package/dist/src/figma/url-parser.js +107 -0
  40. package/dist/src/figma/url-parser.js.map +1 -0
  41. package/dist/src/platform/device-manager.d.ts +5 -0
  42. package/dist/src/platform/device-manager.d.ts.map +1 -1
  43. package/dist/src/platform/device-manager.js +18 -0
  44. package/dist/src/platform/device-manager.js.map +1 -1
  45. package/dist/src/platform/device-pool.d.ts +105 -0
  46. package/dist/src/platform/device-pool.d.ts.map +1 -0
  47. package/dist/src/platform/device-pool.js +328 -0
  48. package/dist/src/platform/device-pool.js.map +1 -0
  49. package/dist/src/platform/device-profiles.d.ts +50 -0
  50. package/dist/src/platform/device-profiles.d.ts.map +1 -0
  51. package/dist/src/platform/device-profiles.js +155 -0
  52. package/dist/src/platform/device-profiles.js.map +1 -0
  53. package/dist/src/platform/ios/ios-device.d.ts +0 -2
  54. package/dist/src/platform/ios/ios-device.d.ts.map +1 -1
  55. package/dist/src/platform/ios/ios-device.js +8 -18
  56. package/dist/src/platform/ios/ios-device.js.map +1 -1
  57. package/dist/src/platform/ios/simctl.d.ts +0 -5
  58. package/dist/src/platform/ios/simctl.d.ts.map +1 -1
  59. package/dist/src/platform/ios/simctl.js +0 -4
  60. package/dist/src/platform/ios/simctl.js.map +1 -1
  61. package/dist/src/platform/simulator-factory.d.ts +85 -0
  62. package/dist/src/platform/simulator-factory.d.ts.map +1 -0
  63. package/dist/src/platform/simulator-factory.js +396 -0
  64. package/dist/src/platform/simulator-factory.js.map +1 -0
  65. package/dist/src/platform/system-resources.d.ts +44 -0
  66. package/dist/src/platform/system-resources.d.ts.map +1 -0
  67. package/dist/src/platform/system-resources.js +103 -0
  68. package/dist/src/platform/system-resources.js.map +1 -0
  69. package/dist/src/prototype/browser-engine.d.ts +62 -0
  70. package/dist/src/prototype/browser-engine.d.ts.map +1 -0
  71. package/dist/src/prototype/browser-engine.js +199 -0
  72. package/dist/src/prototype/browser-engine.js.map +1 -0
  73. package/dist/src/prototype/figma-navigator.d.ts +40 -0
  74. package/dist/src/prototype/figma-navigator.d.ts.map +1 -0
  75. package/dist/src/prototype/figma-navigator.js +95 -0
  76. package/dist/src/prototype/figma-navigator.js.map +1 -0
  77. package/dist/src/prototype/flow-reporter.d.ts +47 -0
  78. package/dist/src/prototype/flow-reporter.d.ts.map +1 -0
  79. package/dist/src/prototype/flow-reporter.js +255 -0
  80. package/dist/src/prototype/flow-reporter.js.map +1 -0
  81. package/dist/src/prototype/screen-analyzer.d.ts +31 -0
  82. package/dist/src/prototype/screen-analyzer.d.ts.map +1 -0
  83. package/dist/src/prototype/screen-analyzer.js +114 -0
  84. package/dist/src/prototype/screen-analyzer.js.map +1 -0
  85. package/dist/src/prototype/web-crawler.d.ts +31 -0
  86. package/dist/src/prototype/web-crawler.d.ts.map +1 -0
  87. package/dist/src/prototype/web-crawler.js +88 -0
  88. package/dist/src/prototype/web-crawler.js.map +1 -0
  89. package/dist/src/reports/cross-device-report.d.ts +84 -0
  90. package/dist/src/reports/cross-device-report.d.ts.map +1 -0
  91. package/dist/src/reports/cross-device-report.js +342 -0
  92. package/dist/src/reports/cross-device-report.js.map +1 -0
  93. package/dist/src/server.d.ts.map +1 -1
  94. package/dist/src/server.js +9 -1
  95. package/dist/src/server.js.map +1 -1
  96. package/dist/src/snapshot/formatter.d.ts +5 -13
  97. package/dist/src/snapshot/formatter.d.ts.map +1 -1
  98. package/dist/src/snapshot/formatter.js +19 -28
  99. package/dist/src/snapshot/formatter.js.map +1 -1
  100. package/dist/src/tools/interaction-tools.d.ts +6 -6
  101. package/dist/src/tools/interaction-tools.d.ts.map +1 -1
  102. package/dist/src/tools/interaction-tools.js +2 -12
  103. package/dist/src/tools/interaction-tools.js.map +1 -1
  104. package/dist/src/tools/metro-tools.d.ts +2 -2
  105. package/dist/src/tools/multi-device-tools.d.ts +133 -0
  106. package/dist/src/tools/multi-device-tools.d.ts.map +1 -0
  107. package/dist/src/tools/multi-device-tools.js +365 -0
  108. package/dist/src/tools/multi-device-tools.js.map +1 -0
  109. package/dist/src/tools/navigation-tools.d.ts.map +1 -1
  110. package/dist/src/tools/navigation-tools.js +1 -6
  111. package/dist/src/tools/navigation-tools.js.map +1 -1
  112. package/dist/src/tools/prototype-tools.d.ts +102 -0
  113. package/dist/src/tools/prototype-tools.d.ts.map +1 -0
  114. package/dist/src/tools/prototype-tools.js +391 -0
  115. package/dist/src/tools/prototype-tools.js.map +1 -0
  116. package/dist/src/tools/screenshot-tools.d.ts +7 -74
  117. package/dist/src/tools/screenshot-tools.d.ts.map +1 -1
  118. package/dist/src/tools/screenshot-tools.js +19 -286
  119. package/dist/src/tools/screenshot-tools.js.map +1 -1
  120. package/dist/src/tools/vqa-tools.d.ts +2 -2
  121. package/dist/src/tools/vqa-tools.d.ts.map +1 -1
  122. package/dist/src/tools/vqa-tools.js +4 -69
  123. package/dist/src/tools/vqa-tools.js.map +1 -1
  124. package/docs/figma-workflow.md +58 -6
  125. package/docs/installation-guide.md +302 -0
  126. package/docs/setup-guide.md +77 -79
  127. package/docs/tool-reference.md +152 -69
  128. package/install.sh +119 -0
  129. package/package.json +5 -2
  130. package/setup.sh +320 -0
  131. package/tsconfig.json +1 -1
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ /**
3
+ * Cross-device comparison report generator.
4
+ *
5
+ * Takes captured data from multiple devices and produces:
6
+ * - Pairwise pixel similarity matrix
7
+ * - Layout consistency analysis (missing elements per device)
8
+ * - Responsive issue detection
9
+ * - Optional per-device Figma comparison
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.generateCrossDeviceReport = generateCrossDeviceReport;
13
+ exports.formatCrossDeviceReport = formatCrossDeviceReport;
14
+ const comparator_js_1 = require("../visual/comparator.js");
15
+ // ─── Report Generation ────────────────────────────────────────────────────
16
+ /**
17
+ * Generate a full cross-device comparison report from captured data.
18
+ */
19
+ async function generateCrossDeviceReport(captures, options = {}) {
20
+ const { figmaScreenshot, pixelThreshold = 0.1, strategy = "auto", totalTimeMs = 0, totalRAM = "unknown", } = options;
21
+ // Build device list
22
+ const devices = captures.map((c) => ({
23
+ id: c.id,
24
+ name: c.profile.name,
25
+ category: c.profile.category,
26
+ platform: c.profile.platform,
27
+ resolution: `${c.profile.logicalWidth}x${c.profile.logicalHeight} @${c.profile.scaleFactor}x`,
28
+ }));
29
+ // Pairwise pixel comparison
30
+ const pixelMatrix = await computePixelMatrix(captures, pixelThreshold);
31
+ // Layout consistency analysis
32
+ const layoutConsistency = compareElementPresence(captures);
33
+ // Responsive issue detection
34
+ const responsiveIssues = detectResponsiveIssues(captures, layoutConsistency);
35
+ // Optional Figma comparison
36
+ let figmaComparison;
37
+ if (figmaScreenshot) {
38
+ figmaComparison = await compareFigmaPerDevice(captures, figmaScreenshot, pixelThreshold);
39
+ }
40
+ // Build summary
41
+ const criticalCount = layoutConsistency.missingElements.filter((e) => e.severity === "critical").length +
42
+ layoutConsistency.structureDifferences.filter((d) => d.severity === "critical").length +
43
+ responsiveIssues.filter((i) => i.severity === "critical").length;
44
+ const warningCount = layoutConsistency.missingElements.filter((e) => e.severity === "warning").length +
45
+ layoutConsistency.structureDifferences.filter((d) => d.severity === "warning").length +
46
+ responsiveIssues.filter((i) => i.severity === "warning").length;
47
+ const summary = `${criticalCount} critical, ${warningCount} warnings across ${captures.length} devices`;
48
+ return {
49
+ devices,
50
+ pixelMatrix,
51
+ layoutConsistency,
52
+ figmaComparison,
53
+ responsiveIssues,
54
+ systemInfo: { totalRAM, strategy, totalTimeMs },
55
+ summary,
56
+ };
57
+ }
58
+ // ─── Pixel Matrix ─────────────────────────────────────────────────────────
59
+ async function computePixelMatrix(captures, threshold) {
60
+ const matrix = [];
61
+ for (let i = 0; i < captures.length; i++) {
62
+ for (let j = i + 1; j < captures.length; j++) {
63
+ try {
64
+ const result = await (0, comparator_js_1.compareScreenshots)(captures[i].screenshot, captures[j].screenshot, { threshold, resizeStrategy: "fit" });
65
+ matrix.push({
66
+ deviceA: captures[i].profile.name,
67
+ deviceB: captures[j].profile.name,
68
+ similarity: result.similarity,
69
+ });
70
+ }
71
+ catch {
72
+ matrix.push({
73
+ deviceA: captures[i].profile.name,
74
+ deviceB: captures[j].profile.name,
75
+ similarity: 0,
76
+ });
77
+ }
78
+ }
79
+ }
80
+ return matrix;
81
+ }
82
+ /**
83
+ * Compare which elements are present on each device.
84
+ * An element is identified by its text content and type.
85
+ */
86
+ function compareElementPresence(captures) {
87
+ // Extract text elements from each device
88
+ const deviceElements = new Map();
89
+ const elementDetails = new Map();
90
+ for (const capture of captures) {
91
+ const elements = new Set();
92
+ walkTree(capture.snapshot, (node) => {
93
+ const text = node.text || node.label;
94
+ if (text && text.trim().length > 0) {
95
+ const key = `${node.type}::${text.trim()}`;
96
+ elements.add(key);
97
+ if (!elementDetails.has(key)) {
98
+ elementDetails.set(key, {
99
+ text: text.trim(),
100
+ type: node.type,
101
+ bounds: node.bounds,
102
+ });
103
+ }
104
+ }
105
+ });
106
+ deviceElements.set(capture.profile.name, elements);
107
+ }
108
+ // Find all unique elements
109
+ const allElements = new Set();
110
+ for (const elements of deviceElements.values()) {
111
+ for (const el of elements)
112
+ allElements.add(el);
113
+ }
114
+ // Find elements present on all vs missing on some
115
+ const deviceNames = captures.map((c) => c.profile.name);
116
+ const missingElements = [];
117
+ let commonCount = 0;
118
+ for (const elementKey of allElements) {
119
+ const presentOn = deviceNames.filter((name) => deviceElements.get(name)?.has(elementKey));
120
+ const missingOn = deviceNames.filter((name) => !deviceElements.get(name)?.has(elementKey));
121
+ if (missingOn.length === 0) {
122
+ commonCount++;
123
+ }
124
+ else {
125
+ const detail = elementDetails.get(elementKey);
126
+ const missingCaptures = captures.filter((c) => missingOn.includes(c.profile.name));
127
+ const likelyCause = inferMissingCause(detail, missingCaptures);
128
+ const severity = presentOn.length <= missingOn.length ? "critical" : "warning";
129
+ missingElements.push({
130
+ text: detail.text,
131
+ type: detail.type,
132
+ presentOn,
133
+ missingOn,
134
+ severity,
135
+ likelyCause,
136
+ });
137
+ }
138
+ }
139
+ return {
140
+ commonElements: commonCount,
141
+ totalUniqueElements: allElements.size,
142
+ missingElements,
143
+ structureDifferences: [], // Populated by responsive issue detection
144
+ };
145
+ }
146
+ // ─── Responsive Issue Detection ───────────────────────────────────────────
147
+ function detectResponsiveIssues(captures, consistency) {
148
+ const issues = [];
149
+ // 1. Text truncation detection — look for similar but truncated text
150
+ const textsByDevice = new Map();
151
+ for (const capture of captures) {
152
+ const texts = [];
153
+ walkTree(capture.snapshot, (node) => {
154
+ if (node.text && node.text.trim().length > 0) {
155
+ texts.push(node.text.trim());
156
+ }
157
+ });
158
+ textsByDevice.set(capture.profile.name, texts);
159
+ }
160
+ // Check for truncated versions across devices
161
+ const allTexts = Array.from(textsByDevice.values()).flat();
162
+ for (const capture of captures) {
163
+ const deviceTexts = textsByDevice.get(capture.profile.name) ?? [];
164
+ for (const fullText of allTexts) {
165
+ if (fullText.length > 15 && fullText.endsWith("...")) {
166
+ // Truncated text — find which devices have the full version
167
+ const withoutEllipsis = fullText.replace(/\.{3}$/, "");
168
+ const devicesWithFull = Array.from(textsByDevice.entries())
169
+ .filter(([, texts]) => texts.some((t) => t.startsWith(withoutEllipsis) &&
170
+ t.length > fullText.length &&
171
+ !t.endsWith("...")))
172
+ .map(([name]) => name);
173
+ if (devicesWithFull.length > 0) {
174
+ issues.push({
175
+ issue: `Text truncation: "${fullText}" on ${capture.profile.name}`,
176
+ affectedDevices: [capture.profile.name],
177
+ severity: "warning",
178
+ suggestion: "Consider reducing font size or using adaptive text",
179
+ });
180
+ break; // One truncation issue per device is enough
181
+ }
182
+ }
183
+ }
184
+ }
185
+ // 2. Missing elements → responsive issue
186
+ for (const missing of consistency.missingElements) {
187
+ if (missing.severity === "critical") {
188
+ issues.push({
189
+ issue: `"${missing.text}" missing on ${missing.missingOn.join(", ")}`,
190
+ affectedDevices: missing.missingOn,
191
+ severity: "critical",
192
+ suggestion: `${missing.likelyCause}. Check responsive layout breakpoints.`,
193
+ });
194
+ }
195
+ }
196
+ return issues;
197
+ }
198
+ // ─── Helpers ──────────────────────────────────────────────────────────────
199
+ function walkTree(node, callback) {
200
+ callback(node);
201
+ for (const child of node.children) {
202
+ walkTree(child, callback);
203
+ }
204
+ }
205
+ /**
206
+ * Infer why an element might be missing on a device.
207
+ */
208
+ function inferMissingCause(element, missingCaptures) {
209
+ if (missingCaptures.length === 0)
210
+ return "Unknown cause";
211
+ // Check if element would be clipped by screen width on missing devices
212
+ const narrowest = missingCaptures.reduce((min, c) => c.deviceInfo.screenWidth < min.deviceInfo.screenWidth ? c : min);
213
+ if (element.bounds.x + element.bounds.width >
214
+ narrowest.deviceInfo.screenWidth) {
215
+ return `Clipped by screen width (element needs ${Math.round(element.bounds.x + element.bounds.width)}px, screen is ${narrowest.deviceInfo.screenWidth}px)`;
216
+ }
217
+ // Check if element is below the fold
218
+ const shortest = missingCaptures.reduce((min, c) => c.deviceInfo.screenHeight < min.deviceInfo.screenHeight ? c : min);
219
+ if (element.bounds.y > shortest.deviceInfo.screenHeight) {
220
+ return `Below fold (element at y=${Math.round(element.bounds.y)}px, screen height is ${shortest.deviceInfo.screenHeight}px)`;
221
+ }
222
+ // Check if it's a tablet-only element
223
+ const allTablets = missingCaptures.every((c) => c.profile.category !== "tablet");
224
+ if (allTablets) {
225
+ return "Only visible on tablet layout";
226
+ }
227
+ return "Element not found in accessibility tree — may be hidden or rendered differently";
228
+ }
229
+ /**
230
+ * Compare each device's screenshot against Figma.
231
+ */
232
+ async function compareFigmaPerDevice(captures, figmaScreenshot, threshold) {
233
+ const results = [];
234
+ for (const capture of captures) {
235
+ try {
236
+ const result = await (0, comparator_js_1.compareScreenshots)(capture.screenshot, figmaScreenshot, { threshold, resizeStrategy: "fit" });
237
+ results.push({
238
+ deviceId: capture.id,
239
+ deviceName: capture.profile.name,
240
+ pixelMatch: result.similarity,
241
+ bestMatch: false, // Set below
242
+ });
243
+ }
244
+ catch {
245
+ results.push({
246
+ deviceId: capture.id,
247
+ deviceName: capture.profile.name,
248
+ pixelMatch: 0,
249
+ bestMatch: false,
250
+ });
251
+ }
252
+ }
253
+ // Mark the best match
254
+ if (results.length > 0) {
255
+ const best = results.reduce((max, r) => r.pixelMatch > max.pixelMatch ? r : max);
256
+ best.bestMatch = true;
257
+ }
258
+ return results;
259
+ }
260
+ // ─── Report Formatting ────────────────────────────────────────────────────
261
+ /**
262
+ * Format the cross-device report as human-readable text.
263
+ */
264
+ function formatCrossDeviceReport(report) {
265
+ const lines = [];
266
+ // Header
267
+ lines.push("=== CROSS-DEVICE UI COMPARISON ===");
268
+ lines.push(`System: ${report.systemInfo.totalRAM} | ` +
269
+ `Strategy: ${report.systemInfo.strategy} | ` +
270
+ `Time: ${(report.systemInfo.totalTimeMs / 1000).toFixed(1)}s`);
271
+ lines.push(`Devices: ${report.devices.length} tested`);
272
+ lines.push("");
273
+ // Device matrix
274
+ lines.push("DEVICE MATRIX:");
275
+ for (let i = 0; i < report.devices.length; i++) {
276
+ const d = report.devices[i];
277
+ lines.push(` #${i + 1} ${d.name.padEnd(28)} ${d.resolution.padEnd(16)} ${d.category}`);
278
+ }
279
+ lines.push("");
280
+ // Pixel similarity matrix
281
+ if (report.pixelMatrix.length > 0) {
282
+ lines.push("PIXEL SIMILARITY:");
283
+ const names = report.devices.map((d) => d.name);
284
+ const shortNames = names.map((n) => n.length > 8 ? n.substring(0, 8) : n);
285
+ // Header row
286
+ lines.push(" " + "".padEnd(12) + shortNames.map((n) => n.padEnd(10)).join(""));
287
+ // Matrix rows
288
+ for (let i = 0; i < names.length; i++) {
289
+ let row = " " + shortNames[i].padEnd(12);
290
+ for (let j = 0; j < names.length; j++) {
291
+ if (i === j) {
292
+ row += " —".padEnd(10);
293
+ }
294
+ else {
295
+ const pair = report.pixelMatrix.find((p) => (p.deviceA === names[i] && p.deviceB === names[j]) ||
296
+ (p.deviceA === names[j] && p.deviceB === names[i]));
297
+ const pct = pair ? `${(pair.similarity * 100).toFixed(1)}%` : "N/A";
298
+ row += pct.padEnd(10);
299
+ }
300
+ }
301
+ lines.push(row);
302
+ }
303
+ lines.push("");
304
+ }
305
+ // Layout consistency
306
+ const lc = report.layoutConsistency;
307
+ const pct = lc.totalUniqueElements > 0
308
+ ? Math.round((lc.commonElements / lc.totalUniqueElements) * 100)
309
+ : 100;
310
+ lines.push(`LAYOUT CONSISTENCY: ${lc.commonElements}/${lc.totalUniqueElements} elements on all devices (${pct}%)`);
311
+ if (lc.missingElements.length > 0) {
312
+ lines.push(" MISSING:");
313
+ for (const m of lc.missingElements) {
314
+ lines.push(` [${m.severity}] "${m.text}" — missing on ${m.missingOn.join(", ")}`);
315
+ lines.push(` → ${m.likelyCause}`);
316
+ }
317
+ }
318
+ lines.push("");
319
+ // Figma comparison
320
+ if (report.figmaComparison && report.figmaComparison.length > 0) {
321
+ lines.push("FIGMA COMPARISON:");
322
+ for (const f of report.figmaComparison) {
323
+ const marker = f.bestMatch ? " ← Best match" : "";
324
+ lines.push(` ${f.deviceName.padEnd(28)} ${(f.pixelMatch * 100).toFixed(0)}% pixel match${marker}`);
325
+ }
326
+ lines.push("");
327
+ }
328
+ // Responsive issues
329
+ if (report.responsiveIssues.length > 0) {
330
+ lines.push("RESPONSIVE ISSUES:");
331
+ for (let i = 0; i < report.responsiveIssues.length; i++) {
332
+ const ri = report.responsiveIssues[i];
333
+ lines.push(` ${i + 1}. [${ri.severity}] ${ri.issue}`);
334
+ lines.push(` → ${ri.suggestion}`);
335
+ }
336
+ lines.push("");
337
+ }
338
+ // Summary
339
+ lines.push(`Summary: ${report.summary}`);
340
+ return lines.join("\n");
341
+ }
342
+ //# sourceMappingURL=cross-device-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-device-report.js","sourceRoot":"","sources":["../../../src/reports/cross-device-report.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA+CnE,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAgInD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAuDnE,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAsInD"}
@@ -17,10 +17,12 @@ const metro_tools_js_1 = require("./tools/metro-tools.js");
17
17
  const navigation_tools_js_1 = require("./tools/navigation-tools.js");
18
18
  const analyze_tools_js_1 = require("./tools/analyze-tools.js");
19
19
  const vqa_tools_js_1 = require("./tools/vqa-tools.js");
20
+ const prototype_tools_js_1 = require("./tools/prototype-tools.js");
21
+ const multi_device_tools_js_1 = require("./tools/multi-device-tools.js");
20
22
  async function startServer() {
21
23
  const server = new index_js_1.Server({
22
24
  name: "devlens-mcp",
23
- version: "0.4.0",
25
+ version: "0.5.0",
24
26
  }, {
25
27
  capabilities: {
26
28
  tools: {},
@@ -43,6 +45,8 @@ async function startServer() {
43
45
  const navigationHandlers = (0, navigation_tools_js_1.createNavigationToolHandlers)(deviceManager, refRegistry, resetPreviousSnapshot);
44
46
  const analyzeHandlers = (0, analyze_tools_js_1.createAnalyzeToolHandlers)(deviceManager, refRegistry, metroPort);
45
47
  const vqaHandlers = (0, vqa_tools_js_1.createVqaToolHandlers)(deviceManager, refRegistry);
48
+ const prototypeHandlers = (0, prototype_tools_js_1.createPrototypeToolHandlers)();
49
+ const multiDeviceHandlers = (0, multi_device_tools_js_1.createMultiDeviceToolHandlers)(deviceManager);
46
50
  // Merge all tool schemas
47
51
  const allSchemas = {
48
52
  ...ds_tools_js_1.dsToolSchemas,
@@ -55,6 +59,8 @@ async function startServer() {
55
59
  ...navigation_tools_js_1.navigationToolSchemas,
56
60
  ...analyze_tools_js_1.analyzeToolSchemas,
57
61
  ...vqa_tools_js_1.vqaToolSchemas,
62
+ ...prototype_tools_js_1.prototypeToolSchemas,
63
+ ...multi_device_tools_js_1.multiDeviceToolSchemas,
58
64
  };
59
65
  // Merge all handlers
60
66
  const allHandlers = {
@@ -68,6 +74,8 @@ async function startServer() {
68
74
  ...navigationHandlers,
69
75
  ...analyzeHandlers,
70
76
  ...vqaHandlers,
77
+ ...prototypeHandlers,
78
+ ...multiDeviceHandlers,
71
79
  };
72
80
  // Register tools/list handler
73
81
  server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -6,21 +6,13 @@ import type { SnapshotNode } from "../platform/device.js";
6
6
  * Output format (inspired by Playwright MCP):
7
7
  *
8
8
  * - FrameLayout
9
- * - LinearLayout [390x200] [column gap=8] [full-width]
10
- * - TextView "Hello World" [ref=e1] [~14px]
11
- * - Button "Submit" [ref=e2] [350x44]
9
+ * - LinearLayout
10
+ * - TextView "Hello World" [ref=e1]
11
+ * - Button "Submit" [ref=e2]
12
12
  * - EditText "Email" [ref=e3] [focused]
13
13
  * - RecyclerView [ref=e4]
14
14
  * - CardView
15
- * - TextView "Item 1" [ref=e5] [~12px]
16
- *
17
- * When FormatContext is provided, layout annotations (size, direction,
18
- * gap, full-width, font-size) are added to help the AI reason about
19
- * spatial relationships.
15
+ * - TextView "Item 1" [ref=e5]
20
16
  */
21
- export interface FormatContext {
22
- screenWidth: number;
23
- screenHeight: number;
24
- }
25
- export declare function formatSnapshot(root: SnapshotNode, nodeToRef: Map<SnapshotNode, string>, context?: FormatContext): string;
17
+ export declare function formatSnapshot(root: SnapshotNode, nodeToRef: Map<SnapshotNode, string>): string;
26
18
  //# sourceMappingURL=formatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/snapshot/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EACpC,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAIR"}
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/snapshot/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,GACnC,MAAM,CAIR"}
@@ -1,13 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatSnapshot = formatSnapshot;
4
- const layout_inference_js_1 = require("./layout-inference.js");
5
- function formatSnapshot(root, nodeToRef, context) {
4
+ /**
5
+ * Formats a SnapshotNode tree into a YAML-like text representation
6
+ * that LLMs can easily parse and reason about.
7
+ *
8
+ * Output format (inspired by Playwright MCP):
9
+ *
10
+ * - FrameLayout
11
+ * - LinearLayout
12
+ * - TextView "Hello World" [ref=e1]
13
+ * - Button "Submit" [ref=e2]
14
+ * - EditText "Email" [ref=e3] [focused]
15
+ * - RecyclerView [ref=e4]
16
+ * - CardView
17
+ * - TextView "Item 1" [ref=e5]
18
+ */
19
+ function formatSnapshot(root, nodeToRef) {
6
20
  const lines = [];
7
- formatNode(root, nodeToRef, 0, lines, context);
21
+ formatNode(root, nodeToRef, 0, lines);
8
22
  return lines.join("\n");
9
23
  }
10
- function formatNode(node, nodeToRef, depth, lines, context) {
24
+ function formatNode(node, nodeToRef, depth, lines) {
11
25
  const indent = " ".repeat(depth);
12
26
  const parts = [];
13
27
  // Type
@@ -40,29 +54,6 @@ function formatNode(node, nodeToRef, depth, lines, context) {
40
54
  : node.resourceId;
41
55
  annotations.push(`id="${shortId}"`);
42
56
  }
43
- // Layout annotations (only when context is provided and node has visible bounds)
44
- if (context && node.bounds.width > 0 && node.bounds.height > 0) {
45
- const layout = (0, layout_inference_js_1.analyzeLayout)(node, context.screenWidth);
46
- // Size annotation for containers and interactive elements
47
- if (node.children.length > 0 || node.interactive) {
48
- annotations.push(`${node.bounds.width}x${node.bounds.height}`);
49
- }
50
- // Direction + gap for containers with multiple children
51
- if (layout.direction !== "unknown" && node.children.length > 1) {
52
- const dirStr = layout.gap != null
53
- ? `${layout.direction} gap=${layout.gap}`
54
- : layout.direction;
55
- annotations.push(dirStr);
56
- }
57
- // Full-width flag
58
- if (layout.isFullWidth) {
59
- annotations.push("full-width");
60
- }
61
- // Font size estimate for text nodes
62
- if (layout.estimatedFontSize && node.text) {
63
- annotations.push(`~${layout.estimatedFontSize}px`);
64
- }
65
- }
66
57
  if (annotations.length > 0) {
67
58
  parts.push(`[${annotations.join("] [")}]`);
68
59
  }
@@ -74,7 +65,7 @@ function formatNode(node, nodeToRef, depth, lines, context) {
74
65
  }
75
66
  // Recurse into children
76
67
  for (const child of node.children) {
77
- formatNode(child, nodeToRef, depth + 1, lines, context);
68
+ formatNode(child, nodeToRef, depth + 1, lines);
78
69
  }
79
70
  }
80
71
  /** Check if any descendant has a ref assigned */
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/snapshot/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/snapshot/formatter.ts"],"names":[],"mappings":"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"}
@@ -53,11 +53,11 @@ export declare const interactionToolSchemas: {
53
53
  ref: z.ZodString;
54
54
  direction: z.ZodEnum<["up", "down"]>;
55
55
  }, "strip", z.ZodTypeAny, {
56
- direction: "up" | "down";
57
56
  ref: string;
58
- }, {
59
57
  direction: "up" | "down";
58
+ }, {
60
59
  ref: string;
60
+ direction: "up" | "down";
61
61
  }>;
62
62
  };
63
63
  devlens_long_press: {
@@ -122,38 +122,38 @@ export declare const interactionToolSchemas: {
122
122
  }, "strip", z.ZodTypeAny, {
123
123
  action: "screenshot" | "tap" | "swipe" | "go_back" | "wait" | "press_button";
124
124
  button?: "home" | "back" | "enter" | undefined;
125
- direction?: "up" | "down" | "left" | "right" | undefined;
126
125
  label?: string | undefined;
127
126
  ref?: string | undefined;
128
127
  element?: string | undefined;
128
+ direction?: "up" | "down" | "left" | "right" | undefined;
129
129
  ms?: number | undefined;
130
130
  }, {
131
131
  action: "screenshot" | "tap" | "swipe" | "go_back" | "wait" | "press_button";
132
132
  button?: "home" | "back" | "enter" | undefined;
133
- direction?: "up" | "down" | "left" | "right" | undefined;
134
133
  label?: string | undefined;
135
134
  ref?: string | undefined;
136
135
  element?: string | undefined;
136
+ direction?: "up" | "down" | "left" | "right" | undefined;
137
137
  ms?: number | undefined;
138
138
  }>, "many">;
139
139
  }, "strip", z.ZodTypeAny, {
140
140
  steps: {
141
141
  action: "screenshot" | "tap" | "swipe" | "go_back" | "wait" | "press_button";
142
142
  button?: "home" | "back" | "enter" | undefined;
143
- direction?: "up" | "down" | "left" | "right" | undefined;
144
143
  label?: string | undefined;
145
144
  ref?: string | undefined;
146
145
  element?: string | undefined;
146
+ direction?: "up" | "down" | "left" | "right" | undefined;
147
147
  ms?: number | undefined;
148
148
  }[];
149
149
  }, {
150
150
  steps: {
151
151
  action: "screenshot" | "tap" | "swipe" | "go_back" | "wait" | "press_button";
152
152
  button?: "home" | "back" | "enter" | undefined;
153
- direction?: "up" | "down" | "left" | "right" | undefined;
154
153
  label?: string | undefined;
155
154
  ref?: string | undefined;
156
155
  element?: string | undefined;
156
+ direction?: "up" | "down" | "left" | "right" | undefined;
157
157
  ms?: number | undefined;
158
158
  }[];
159
159
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/interaction-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIlC,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,MAAM,IAAI;0BA6BO;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;2BAiB/B;QAC3B,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;KACjB;;;;;;4BA0B6B;QAC5B,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB;;;;;;6BAqC8B;QAC7B,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;KAC1B;;;;;;iCAsBkC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;;;;;;mCAgB/B;QACnC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KACnC;;;;;;gCAgBiC;QAChC,MAAM,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C;;;;;;mCAsBoC;QACnC,KAAK,EAAE,KAAK,CAAC;YACX,MAAM,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;YAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;YAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;YACnC,EAAE,CAAC,EAAE,MAAM,CAAC;SACb,CAAC,CAAC;KACJ;;kBA4F8B,MAAM,GAAG,OAAO;mBAAS,MAAM;mBAAS,MAAM;uBAAa,MAAM;;;EA2BnG"}
1
+ {"version":3,"file":"interaction-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/interaction-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIlC,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,MAAM,IAAI;0BAwBO;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;2BAiB/B;QAC3B,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;KACjB;;;;;;4BA0B6B;QAC5B,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB;;;;;;6BAqC8B;QAC7B,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;KAC1B;;;;;;iCAsBkC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;;;;;;mCAgB/B;QACnC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KACnC;;;;;;gCAgBiC;QAChC,MAAM,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C;;;;;;mCAsBoC;QACnC,KAAK,EAAE,KAAK,CAAC;YACX,MAAM,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;YAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;YAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;YACnC,EAAE,CAAC,EAAE,MAAM,CAAC;SACb,CAAC,CAAC;KACJ;;kBAuF8B,MAAM,GAAG,OAAO;mBAAS,MAAM;mBAAS,MAAM;uBAAa,MAAM;;;EA2BnG"}