devlens-mcp 0.3.2 → 0.4.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.
Files changed (121) hide show
  1. package/README.md +45 -37
  2. package/RELEASE_NOTES.md +249 -0
  3. package/dist/bin/cli.js +2 -0
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/src/figma/figma-properties.d.ts +88 -0
  6. package/dist/src/figma/figma-properties.d.ts.map +1 -0
  7. package/dist/src/figma/figma-properties.js +121 -0
  8. package/dist/src/figma/figma-properties.js.map +1 -0
  9. package/dist/src/figma/figma-structure.d.ts +43 -0
  10. package/dist/src/figma/figma-structure.d.ts.map +1 -0
  11. package/dist/src/figma/figma-structure.js +74 -0
  12. package/dist/src/figma/figma-structure.js.map +1 -0
  13. package/dist/src/figma/figma-url.d.ts +37 -0
  14. package/dist/src/figma/figma-url.d.ts.map +1 -0
  15. package/dist/src/figma/figma-url.js +68 -0
  16. package/dist/src/figma/figma-url.js.map +1 -0
  17. package/dist/src/jds-tokens/resolve-token.d.ts +2 -0
  18. package/dist/src/jds-tokens/resolve-token.d.ts.map +1 -0
  19. package/dist/src/jds-tokens/resolve-token.js +24 -0
  20. package/dist/src/jds-tokens/resolve-token.js.map +1 -0
  21. package/dist/src/jds-tokens/tokens.d.ts +2 -0
  22. package/dist/src/jds-tokens/tokens.d.ts.map +1 -0
  23. package/dist/src/jds-tokens/tokens.js +12 -0
  24. package/dist/src/jds-tokens/tokens.js.map +1 -0
  25. package/dist/src/platform/ios/ios-device.d.ts +2 -0
  26. package/dist/src/platform/ios/ios-device.d.ts.map +1 -1
  27. package/dist/src/platform/ios/ios-device.js +18 -8
  28. package/dist/src/platform/ios/ios-device.js.map +1 -1
  29. package/dist/src/platform/ios/scale-resolver.d.ts +29 -0
  30. package/dist/src/platform/ios/scale-resolver.d.ts.map +1 -0
  31. package/dist/src/platform/ios/scale-resolver.js +114 -0
  32. package/dist/src/platform/ios/scale-resolver.js.map +1 -0
  33. package/dist/src/platform/ios/simctl.d.ts +5 -0
  34. package/dist/src/platform/ios/simctl.d.ts.map +1 -1
  35. package/dist/src/platform/ios/simctl.js +4 -0
  36. package/dist/src/platform/ios/simctl.js.map +1 -1
  37. package/dist/src/server.d.ts.map +1 -1
  38. package/dist/src/server.js +9 -1
  39. package/dist/src/server.js.map +1 -1
  40. package/dist/src/setup/config-patcher.d.ts +2 -0
  41. package/dist/src/setup/config-patcher.d.ts.map +1 -0
  42. package/dist/src/setup/config-patcher.js +128 -0
  43. package/dist/src/setup/config-patcher.js.map +1 -0
  44. package/dist/src/setup/shell-detector.d.ts +10 -0
  45. package/dist/src/setup/shell-detector.d.ts.map +1 -0
  46. package/dist/src/setup/shell-detector.js +72 -0
  47. package/dist/src/setup/shell-detector.js.map +1 -0
  48. package/dist/src/snapshot/device-properties.d.ts +53 -0
  49. package/dist/src/snapshot/device-properties.d.ts.map +1 -0
  50. package/dist/src/snapshot/device-properties.js +94 -0
  51. package/dist/src/snapshot/device-properties.js.map +1 -0
  52. package/dist/src/snapshot/formatter.d.ts +13 -5
  53. package/dist/src/snapshot/formatter.d.ts.map +1 -1
  54. package/dist/src/snapshot/formatter.js +28 -19
  55. package/dist/src/snapshot/formatter.js.map +1 -1
  56. package/dist/src/snapshot/layout-inference.d.ts +44 -0
  57. package/dist/src/snapshot/layout-inference.d.ts.map +1 -0
  58. package/dist/src/snapshot/layout-inference.js +138 -0
  59. package/dist/src/snapshot/layout-inference.js.map +1 -0
  60. package/dist/src/tools/analyze-tools.d.ts +60 -0
  61. package/dist/src/tools/analyze-tools.d.ts.map +1 -0
  62. package/dist/src/tools/analyze-tools.js +196 -0
  63. package/dist/src/tools/analyze-tools.js.map +1 -0
  64. package/dist/src/tools/interaction-tools.d.ts +6 -6
  65. package/dist/src/tools/interaction-tools.d.ts.map +1 -1
  66. package/dist/src/tools/interaction-tools.js +12 -2
  67. package/dist/src/tools/interaction-tools.js.map +1 -1
  68. package/dist/src/tools/metro-tools.d.ts +2 -2
  69. package/dist/src/tools/navigation-tools.d.ts.map +1 -1
  70. package/dist/src/tools/navigation-tools.js +6 -1
  71. package/dist/src/tools/navigation-tools.js.map +1 -1
  72. package/dist/src/tools/screenshot-tools.d.ts +75 -0
  73. package/dist/src/tools/screenshot-tools.d.ts.map +1 -1
  74. package/dist/src/tools/screenshot-tools.js +238 -8
  75. package/dist/src/tools/screenshot-tools.js.map +1 -1
  76. package/dist/src/tools/snapshot-tools.d.ts +15 -0
  77. package/dist/src/tools/snapshot-tools.d.ts.map +1 -1
  78. package/dist/src/tools/snapshot-tools.js +32 -1
  79. package/dist/src/tools/snapshot-tools.js.map +1 -1
  80. package/dist/src/tools/vqa-tools.d.ts +62 -0
  81. package/dist/src/tools/vqa-tools.d.ts.map +1 -0
  82. package/dist/src/tools/vqa-tools.js +204 -0
  83. package/dist/src/tools/vqa-tools.js.map +1 -0
  84. package/dist/src/utils/image-preprocess.d.ts +1 -1
  85. package/dist/src/utils/image-preprocess.d.ts.map +1 -1
  86. package/dist/src/utils/image-preprocess.js +79 -0
  87. package/dist/src/utils/image-preprocess.js.map +1 -1
  88. package/dist/src/visual/color-extractor.d.ts +37 -0
  89. package/dist/src/visual/color-extractor.d.ts.map +1 -0
  90. package/dist/src/visual/color-extractor.js +116 -0
  91. package/dist/src/visual/color-extractor.js.map +1 -0
  92. package/dist/src/visual/comparator.d.ts +21 -0
  93. package/dist/src/visual/comparator.d.ts.map +1 -1
  94. package/dist/src/visual/comparator.js +110 -13
  95. package/dist/src/visual/comparator.js.map +1 -1
  96. package/dist/src/visual/layout-analyzer.d.ts.map +1 -1
  97. package/dist/src/visual/layout-analyzer.js +17 -7
  98. package/dist/src/visual/layout-analyzer.js.map +1 -1
  99. package/dist/src/visual/node-matcher.d.ts +43 -0
  100. package/dist/src/visual/node-matcher.d.ts.map +1 -0
  101. package/dist/src/visual/node-matcher.js +190 -0
  102. package/dist/src/visual/node-matcher.js.map +1 -0
  103. package/dist/src/visual/property-comparator.d.ts +49 -0
  104. package/dist/src/visual/property-comparator.d.ts.map +1 -0
  105. package/dist/src/visual/property-comparator.js +246 -0
  106. package/dist/src/visual/property-comparator.js.map +1 -0
  107. package/dist/src/visual/structural-comparator.d.ts +46 -0
  108. package/dist/src/visual/structural-comparator.d.ts.map +1 -0
  109. package/dist/src/visual/structural-comparator.js +293 -0
  110. package/dist/src/visual/structural-comparator.js.map +1 -0
  111. package/dist/src/visual/vqa-analyzer.d.ts +30 -0
  112. package/dist/src/visual/vqa-analyzer.d.ts.map +1 -0
  113. package/dist/src/visual/vqa-analyzer.js +271 -0
  114. package/dist/src/visual/vqa-analyzer.js.map +1 -0
  115. package/docs/figma-workflow.md +207 -40
  116. package/docs/setup-guide.md +221 -226
  117. package/docs/tool-reference.md +71 -0
  118. package/package.json +1 -1
  119. package/tsconfig.json +1 -1
  120. package/INSTALLATION_GUIDE.md +0 -354
  121. package/QUICK_START.md +0 -153
@@ -0,0 +1,44 @@
1
+ import type { SnapshotNode, Bounds } from "../platform/device.js";
2
+ /**
3
+ * Layout inference engine — pure geometry functions that analyze child
4
+ * positions to infer layout direction, spacing, padding, and sizing.
5
+ *
6
+ * These functions have no side effects and depend only on the SnapshotNode type.
7
+ * Used by the formatter to annotate the snapshot tree with spatial information
8
+ * the AI can reason about (row/column, gap, full-width, font-size).
9
+ */
10
+ export interface LayoutInfo {
11
+ direction: "row" | "column" | "stacked" | "wrap" | "unknown";
12
+ /** Average gap between children (px) in the inferred direction */
13
+ gap?: number;
14
+ /** Inferred padding from parent bounds vs children extent */
15
+ padding?: {
16
+ top: number;
17
+ right: number;
18
+ bottom: number;
19
+ left: number;
20
+ };
21
+ /** Whether element spans >=95% of screen width */
22
+ isFullWidth?: boolean;
23
+ /** Height-based font size estimate for text-only nodes */
24
+ estimatedFontSize?: number;
25
+ }
26
+ /**
27
+ * Infer layout direction from children bounds positions.
28
+ * Analyzes spatial arrangement of child elements to determine
29
+ * if they are laid out as row, column, stacked, or wrapped.
30
+ *
31
+ * Extracted from snapshot-tools.ts for reuse across formatter and element_info.
32
+ */
33
+ export declare function inferLayoutDirection(node: SnapshotNode): LayoutInfo["direction"];
34
+ /** Calculate average gap between consecutive children in the inferred direction */
35
+ export declare function measureAverageGap(children: SnapshotNode[], direction: "row" | "column"): number | undefined;
36
+ /** Infer padding from parent bounds vs children extent */
37
+ export declare function inferPadding(parent: Bounds, children: SnapshotNode[]): LayoutInfo["padding"] | undefined;
38
+ /** Check if element spans ~full screen width */
39
+ export declare function isFullWidth(bounds: Bounds, screenWidth: number): boolean;
40
+ /** Estimate font size from text node height (heuristic for single-line text) */
41
+ export declare function estimateFontSize(node: SnapshotNode): number | undefined;
42
+ /** Build full LayoutInfo for a node */
43
+ export declare function analyzeLayout(node: SnapshotNode, screenWidth: number): LayoutInfo;
44
+ //# sourceMappingURL=layout-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-inference.d.ts","sourceRoot":"","sources":["../../../src/snapshot/layout-inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAElE;;;;;;;GAOG;AAEH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,GACjB,UAAU,CAAC,WAAW,CAAC,CAoDzB;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAC1B,MAAM,GAAG,SAAS,CAiCpB;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EAAE,GACvB,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,CAqBnC;AAED,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAKvE;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,MAAM,GAClB,UAAU,CAaZ"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inferLayoutDirection = inferLayoutDirection;
4
+ exports.measureAverageGap = measureAverageGap;
5
+ exports.inferPadding = inferPadding;
6
+ exports.isFullWidth = isFullWidth;
7
+ exports.estimateFontSize = estimateFontSize;
8
+ exports.analyzeLayout = analyzeLayout;
9
+ /**
10
+ * Infer layout direction from children bounds positions.
11
+ * Analyzes spatial arrangement of child elements to determine
12
+ * if they are laid out as row, column, stacked, or wrapped.
13
+ *
14
+ * Extracted from snapshot-tools.ts for reuse across formatter and element_info.
15
+ */
16
+ function inferLayoutDirection(node) {
17
+ if (node.children.length <= 1)
18
+ return "unknown";
19
+ // Filter to children with non-zero bounds
20
+ const positioned = node.children.filter((c) => c.bounds.width > 0 && c.bounds.height > 0);
21
+ if (positioned.length <= 1)
22
+ return "unknown";
23
+ // Check for overlapping (absolute/stacked positioning)
24
+ let hasOverlap = false;
25
+ for (let i = 0; i < positioned.length && !hasOverlap; i++) {
26
+ for (let j = i + 1; j < positioned.length; j++) {
27
+ const a = positioned[i].bounds;
28
+ const b = positioned[j].bounds;
29
+ const overlapX = a.x < b.x + b.width && a.x + a.width > b.x;
30
+ const overlapY = a.y < b.y + b.height && a.y + a.height > b.y;
31
+ if (overlapX && overlapY) {
32
+ hasOverlap = true;
33
+ break;
34
+ }
35
+ }
36
+ }
37
+ if (hasOverlap)
38
+ return "stacked";
39
+ // Measure variance in X and Y positions
40
+ const xs = positioned.map((c) => c.bounds.x);
41
+ const ys = positioned.map((c) => c.bounds.y);
42
+ const xVariance = Math.max(...xs) - Math.min(...xs);
43
+ const ySpan = Math.max(...ys.map((y, i) => y + positioned[i].bounds.height)) -
44
+ Math.min(...ys);
45
+ const yVariance = Math.max(...ys) - Math.min(...ys);
46
+ const xSpan = Math.max(...xs.map((x, i) => x + positioned[i].bounds.width)) -
47
+ Math.min(...xs);
48
+ const containerWidth = node.bounds.width || 1;
49
+ const containerHeight = node.bounds.height || 1;
50
+ // Use relative thresholds: low X variance = vertical, low Y variance = horizontal
51
+ const isVertical = xVariance < containerWidth * 0.3 && ySpan > 0;
52
+ const isHorizontal = yVariance < containerHeight * 0.3 && xSpan > 0;
53
+ if (isVertical && !isHorizontal)
54
+ return "column";
55
+ if (isHorizontal && !isVertical)
56
+ return "row";
57
+ if (isVertical && isHorizontal)
58
+ return "wrap";
59
+ return "unknown";
60
+ }
61
+ /** Calculate average gap between consecutive children in the inferred direction */
62
+ function measureAverageGap(children, direction) {
63
+ const positioned = children.filter((c) => c.bounds.width > 0 && c.bounds.height > 0);
64
+ if (positioned.length < 2)
65
+ return undefined;
66
+ if (direction === "column") {
67
+ // Sort by Y, measure gap between bottom of one and top of next
68
+ const sorted = [...positioned].sort((a, b) => a.bounds.y - b.bounds.y);
69
+ const gaps = [];
70
+ for (let i = 1; i < sorted.length; i++) {
71
+ const prevBottom = sorted[i - 1].bounds.y + sorted[i - 1].bounds.height;
72
+ const gap = sorted[i].bounds.y - prevBottom;
73
+ if (gap >= 0)
74
+ gaps.push(gap);
75
+ }
76
+ if (gaps.length === 0)
77
+ return undefined;
78
+ const avg = gaps.reduce((s, g) => s + g, 0) / gaps.length;
79
+ return Math.round(avg);
80
+ }
81
+ else {
82
+ // Sort by X, measure gap between right of one and left of next
83
+ const sorted = [...positioned].sort((a, b) => a.bounds.x - b.bounds.x);
84
+ const gaps = [];
85
+ for (let i = 1; i < sorted.length; i++) {
86
+ const prevRight = sorted[i - 1].bounds.x + sorted[i - 1].bounds.width;
87
+ const gap = sorted[i].bounds.x - prevRight;
88
+ if (gap >= 0)
89
+ gaps.push(gap);
90
+ }
91
+ if (gaps.length === 0)
92
+ return undefined;
93
+ const avg = gaps.reduce((s, g) => s + g, 0) / gaps.length;
94
+ return Math.round(avg);
95
+ }
96
+ }
97
+ /** Infer padding from parent bounds vs children extent */
98
+ function inferPadding(parent, children) {
99
+ const positioned = children.filter((c) => c.bounds.width > 0 && c.bounds.height > 0);
100
+ if (positioned.length === 0)
101
+ return undefined;
102
+ const minX = Math.min(...positioned.map((c) => c.bounds.x));
103
+ const minY = Math.min(...positioned.map((c) => c.bounds.y));
104
+ const maxR = Math.max(...positioned.map((c) => c.bounds.x + c.bounds.width));
105
+ const maxB = Math.max(...positioned.map((c) => c.bounds.y + c.bounds.height));
106
+ return {
107
+ left: Math.max(0, minX - parent.x),
108
+ top: Math.max(0, minY - parent.y),
109
+ right: Math.max(0, parent.x + parent.width - maxR),
110
+ bottom: Math.max(0, parent.y + parent.height - maxB),
111
+ };
112
+ }
113
+ /** Check if element spans ~full screen width */
114
+ function isFullWidth(bounds, screenWidth) {
115
+ return screenWidth > 0 && bounds.width >= screenWidth * 0.95;
116
+ }
117
+ /** Estimate font size from text node height (heuristic for single-line text) */
118
+ function estimateFontSize(node) {
119
+ if (!node.text || node.children.length > 0)
120
+ return undefined;
121
+ if (node.bounds.height <= 0)
122
+ return undefined;
123
+ // Single-line text: font size ≈ 70-80% of bounding box height
124
+ return Math.round(node.bounds.height * 0.75);
125
+ }
126
+ /** Build full LayoutInfo for a node */
127
+ function analyzeLayout(node, screenWidth) {
128
+ const direction = inferLayoutDirection(node);
129
+ const info = { direction };
130
+ if (direction === "row" || direction === "column") {
131
+ info.gap = measureAverageGap(node.children, direction);
132
+ info.padding = inferPadding(node.bounds, node.children);
133
+ }
134
+ info.isFullWidth = isFullWidth(node.bounds, screenWidth);
135
+ info.estimatedFontSize = estimateFontSize(node);
136
+ return info;
137
+ }
138
+ //# sourceMappingURL=layout-inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-inference.js","sourceRoot":"","sources":["../../../src/snapshot/layout-inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { z } from "zod";
2
+ import type { DeviceManager } from "../platform/device-manager.js";
3
+ import type { RefRegistry } from "../snapshot/ref-registry.js";
4
+ export declare const analyzeToolSchemas: {
5
+ devlens_analyze: {
6
+ description: string;
7
+ parameters: z.ZodObject<{
8
+ scope: z.ZodDefault<z.ZodEnum<["minimal", "targeted", "full"]>>;
9
+ targetRefs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ referenceImagePath: z.ZodOptional<z.ZodString>;
11
+ referenceImageBase64: z.ZodOptional<z.ZodString>;
12
+ figmaUrl: z.ZodOptional<z.ZodString>;
13
+ threshold: z.ZodDefault<z.ZodNumber>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ scope: "full" | "minimal" | "targeted";
16
+ threshold: number;
17
+ referenceImagePath?: string | undefined;
18
+ referenceImageBase64?: string | undefined;
19
+ figmaUrl?: string | undefined;
20
+ targetRefs?: string[] | undefined;
21
+ }, {
22
+ scope?: "full" | "minimal" | "targeted" | undefined;
23
+ threshold?: number | undefined;
24
+ referenceImagePath?: string | undefined;
25
+ referenceImageBase64?: string | undefined;
26
+ figmaUrl?: string | undefined;
27
+ targetRefs?: string[] | undefined;
28
+ }>;
29
+ };
30
+ };
31
+ export declare function createAnalyzeToolHandlers(deviceManager: DeviceManager, refRegistry: RefRegistry, metroPort: number): {
32
+ devlens_analyze: (params: {
33
+ scope: "minimal" | "targeted" | "full";
34
+ targetRefs?: string[];
35
+ referenceImagePath?: string;
36
+ referenceImageBase64?: string;
37
+ figmaUrl?: string;
38
+ threshold: number;
39
+ }) => Promise<{
40
+ content: ({
41
+ type: "text";
42
+ text: string;
43
+ data?: undefined;
44
+ mimeType?: undefined;
45
+ } | {
46
+ type: "image";
47
+ data: string;
48
+ mimeType: string;
49
+ text?: undefined;
50
+ })[];
51
+ isError?: undefined;
52
+ } | {
53
+ content: {
54
+ type: "text";
55
+ text: string;
56
+ }[];
57
+ isError: boolean;
58
+ }>;
59
+ };
60
+ //# sourceMappingURL=analyze-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/analyze-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAU/D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC9B,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM;8BAGiB;QAC9B,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;QACvC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB;;;;;;;;;;;;;;;;;;;;EA+LJ"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzeToolSchemas = void 0;
4
+ exports.createAnalyzeToolHandlers = createAnalyzeToolHandlers;
5
+ const zod_1 = require("zod");
6
+ const screenshot_js_1 = require("../visual/screenshot.js");
7
+ const formatter_js_1 = require("../snapshot/formatter.js");
8
+ const comparator_js_1 = require("../visual/comparator.js");
9
+ const layout_analyzer_js_1 = require("../visual/layout-analyzer.js");
10
+ const image_preprocess_js_1 = require("../utils/image-preprocess.js");
11
+ exports.analyzeToolSchemas = {
12
+ devlens_analyze: {
13
+ description: 'Smart analysis tool with configurable depth. Use "minimal" for quick checks after small changes (avoids full snapshot + layout report). Use "targeted" to compare only specific elements/refs against the reference. Use "full" for comprehensive analysis. This tool respects the scope of the request — if a user asks for a minimal check, it will NOT perform full analysis.',
14
+ parameters: zod_1.z.object({
15
+ scope: zod_1.z
16
+ .enum(["minimal", "targeted", "full"])
17
+ .default("full")
18
+ .describe('"minimal": quick pixel diff, no layout report. "targeted": compare specific refs only. "full": complete snapshot + layout report + comparison.'),
19
+ targetRefs: zod_1.z
20
+ .array(zod_1.z.string())
21
+ .optional()
22
+ .describe('Element refs to focus on (for "targeted" scope). E.g., ["e1", "e5", "e12"].'),
23
+ referenceImagePath: zod_1.z
24
+ .string()
25
+ .optional()
26
+ .describe("Path or URL to reference image for comparison."),
27
+ referenceImageBase64: zod_1.z
28
+ .string()
29
+ .optional()
30
+ .describe("Base64-encoded reference image."),
31
+ figmaUrl: zod_1.z
32
+ .string()
33
+ .optional()
34
+ .describe("Figma URL for reference (fetches via Figma API)."),
35
+ threshold: zod_1.z
36
+ .number()
37
+ .default(0.1)
38
+ .describe("Color difference threshold (0-1). Default: 0.1"),
39
+ }),
40
+ },
41
+ };
42
+ function createAnalyzeToolHandlers(deviceManager, refRegistry, metroPort) {
43
+ return {
44
+ devlens_analyze: async (params) => {
45
+ const device = await deviceManager.getDevice();
46
+ const { buffer: screenshotBuffer } = await (0, screenshot_js_1.captureScreenshot)(device);
47
+ if (params.scope === "minimal") {
48
+ if (!params.referenceImagePath && !params.referenceImageBase64) {
49
+ return {
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: "Minimal analysis: screenshot captured. Provide a reference image for diff comparison.",
54
+ },
55
+ {
56
+ type: "image",
57
+ data: screenshotBuffer.toString("base64"),
58
+ mimeType: "image/png",
59
+ },
60
+ ],
61
+ };
62
+ }
63
+ let refBuffer;
64
+ if (params.referenceImageBase64) {
65
+ refBuffer = Buffer.from(params.referenceImageBase64, "base64");
66
+ }
67
+ else {
68
+ const { readFile } = await import("fs/promises");
69
+ refBuffer = await readFile(params.referenceImagePath);
70
+ }
71
+ const result = await (0, comparator_js_1.compareScreenshots)(screenshotBuffer, refBuffer, {
72
+ threshold: params.threshold,
73
+ resizeStrategy: "fit",
74
+ excludeSystemBars: "auto",
75
+ perceptual: true,
76
+ });
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: [
82
+ "--- Minimal Analysis ---",
83
+ `Similarity: ${(result.similarity * 100).toFixed(1)}%`,
84
+ result.summary,
85
+ "",
86
+ "Layout report skipped (minimal scope).",
87
+ "Use scope='full' for per-element breakdown.",
88
+ ].join("\n"),
89
+ },
90
+ ],
91
+ };
92
+ }
93
+ if (params.scope === "targeted") {
94
+ const targetRefs = params.targetRefs || [];
95
+ if (targetRefs.length === 0) {
96
+ return {
97
+ content: [
98
+ {
99
+ type: "text",
100
+ text: 'Targeted analysis requires targetRefs. Provide element refs like ["e1", "e5"].',
101
+ },
102
+ ],
103
+ isError: true,
104
+ };
105
+ }
106
+ const snapshot = await device.getSnapshot();
107
+ const nodeToRef = refRegistry.assignRefs(snapshot);
108
+ const formatted = (0, formatter_js_1.formatSnapshot)(snapshot, nodeToRef);
109
+ const allRefs = refRegistry.getAllRefs();
110
+ const filtered = allRefs.filter((r) => targetRefs.includes(r.ref));
111
+ const lines = [
112
+ "--- Targeted Analysis ---",
113
+ `Analyzing ${filtered.length} of ${allRefs.length} elements:`,
114
+ "",
115
+ ];
116
+ for (const entry of filtered) {
117
+ const label = entry.node.text
118
+ ? `"${entry.node.text}"`
119
+ : entry.node.label
120
+ ? `label="${entry.node.label}"`
121
+ : entry.node.type;
122
+ lines.push(` [${entry.ref}] ${label} — bounds: ${entry.node.bounds.width}x${entry.node.bounds.height} at (${entry.node.bounds.x}, ${entry.node.bounds.y})`);
123
+ }
124
+ const notFound = targetRefs.filter((r) => !filtered.find((f) => f.ref === r));
125
+ if (notFound.length > 0) {
126
+ lines.push("", `Refs not found: ${notFound.join(", ")}`);
127
+ }
128
+ return {
129
+ content: [
130
+ {
131
+ type: "text",
132
+ text: lines.join("\n"),
133
+ },
134
+ ],
135
+ };
136
+ }
137
+ // Full scope
138
+ const snapshot = await device.getSnapshot();
139
+ const nodeToRef = refRegistry.assignRefs(snapshot);
140
+ const formatted = (0, formatter_js_1.formatSnapshot)(snapshot, nodeToRef);
141
+ const contentParts = [
142
+ {
143
+ type: "text",
144
+ text: `--- Full Analysis ---\n\n${formatted}\n\n${refRegistry.size} elements with refs.`,
145
+ },
146
+ {
147
+ type: "image",
148
+ data: screenshotBuffer.toString("base64"),
149
+ mimeType: "image/png",
150
+ },
151
+ ];
152
+ if (params.referenceImageBase64 || params.referenceImagePath) {
153
+ let refBuffer;
154
+ if (params.referenceImageBase64) {
155
+ refBuffer = Buffer.from(params.referenceImageBase64, "base64");
156
+ }
157
+ else {
158
+ const { readFile } = await import("fs/promises");
159
+ refBuffer = await readFile(params.referenceImagePath);
160
+ }
161
+ const ppResult = await (0, image_preprocess_js_1.preprocessImage)(refBuffer, {
162
+ strategy: "smart",
163
+ });
164
+ const deviceInfo = await device.getInfo();
165
+ const refs = refRegistry.getAllRefs();
166
+ let layoutText = "";
167
+ if (refs.length > 0) {
168
+ try {
169
+ const report = await (0, layout_analyzer_js_1.buildLayoutReport)(screenshotBuffer, ppResult.buffer, refs, deviceInfo.screenWidth, deviceInfo.screenHeight);
170
+ layoutText = (0, layout_analyzer_js_1.formatLayoutReport)(report);
171
+ }
172
+ catch (err) {
173
+ layoutText = `Layout report failed: ${err.message}`;
174
+ }
175
+ }
176
+ const comparison = await (0, comparator_js_1.compareScreenshots)(screenshotBuffer, ppResult.buffer, {
177
+ threshold: params.threshold,
178
+ resizeStrategy: "fit",
179
+ excludeSystemBars: "auto",
180
+ });
181
+ contentParts.push({
182
+ type: "text",
183
+ text: [
184
+ "",
185
+ `Similarity: ${(comparison.similarity * 100).toFixed(1)}%`,
186
+ comparison.summary,
187
+ "",
188
+ layoutText,
189
+ ].join("\n"),
190
+ });
191
+ }
192
+ return { content: contentParts };
193
+ },
194
+ };
195
+ }
196
+ //# sourceMappingURL=analyze-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-tools.js","sourceRoot":"","sources":["../../../src/tools/analyze-tools.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
- ref: string;
57
56
  direction: "up" | "down";
58
- }, {
59
57
  ref: string;
58
+ }, {
60
59
  direction: "up" | "down";
60
+ ref: string;
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;
125
126
  label?: string | undefined;
126
127
  ref?: string | undefined;
127
128
  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;
133
134
  label?: string | undefined;
134
135
  ref?: string | undefined;
135
136
  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;
143
144
  label?: string | undefined;
144
145
  ref?: string | undefined;
145
146
  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;
153
154
  label?: string | undefined;
154
155
  ref?: string | undefined;
155
156
  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;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"}
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"}
@@ -140,7 +140,12 @@ function createInteractionToolHandlers(deviceManager, refRegistry, onNavigate) {
140
140
  await sleep(300);
141
141
  const snapshot = await device.getSnapshot();
142
142
  const nodeToRef = refRegistry.assignRefs(snapshot);
143
- return (0, formatter_js_1.formatSnapshot)(snapshot, nodeToRef);
143
+ const info = await device.getInfo();
144
+ const ctx = {
145
+ screenWidth: info.screenWidth,
146
+ screenHeight: info.screenHeight,
147
+ };
148
+ return (0, formatter_js_1.formatSnapshot)(snapshot, nodeToRef, ctx);
144
149
  }
145
150
  return {
146
151
  devlens_tap: async (params) => {
@@ -358,7 +363,12 @@ function createInteractionToolHandlers(deviceManager, refRegistry, onNavigate) {
358
363
  // Take final snapshot
359
364
  const finalSnapshot = await device.getSnapshot();
360
365
  const nodeToRef = refRegistry.assignRefs(finalSnapshot);
361
- const formattedSnapshot = (0, formatter_js_1.formatSnapshot)(finalSnapshot, nodeToRef);
366
+ const flowInfo = await device.getInfo();
367
+ const flowCtx = {
368
+ screenWidth: flowInfo.screenWidth,
369
+ screenHeight: flowInfo.screenHeight,
370
+ };
371
+ const formattedSnapshot = (0, formatter_js_1.formatSnapshot)(finalSnapshot, nodeToRef, flowCtx);
362
372
  // Build content blocks
363
373
  const content = [
364
374
  {
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-tools.js","sourceRoot":"","sources":["../../../src/tools/interaction-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interaction-tools.js","sourceRoot":"","sources":["../../../src/tools/interaction-tools.ts"],"names":[],"mappings":"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"}