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
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-tools.js","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":";;;AAwBA,oEAmDC;AA3ED,6BAAwB;AAGxB,2DAA8E;AAEjE,QAAA,qBAAqB,GAAG;IACnC,gBAAgB,EAAE;QAChB,WAAW,EACT,2GAA2G;QAC7G,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CACP,uEAAuE,CACxE;SACJ,CAAC;KACH;IACD,eAAe,EAAE;QACf,WAAW,EACT,iHAAiH;QACnH,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KACzB;CACF,CAAC;AAEF,SAAgB,4BAA4B,CAC1C,aAA4B,EAC5B,WAAwB,EACxB,UAAuB;IAEvB,KAAK,UAAU,kBAAkB;QAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAkB;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;QACF,OAAO,IAAA,6BAAc,EAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjC,UAAU,EAAE,EAAE,CAAC;YAEf,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,eAAe,MAAM,CAAC,GAAG,OAAO,QAAQ,EAAE;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,UAAU,EAAE,EAAE,CAAC;YAEf,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qBAAqB,QAAQ,EAAE;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"navigation-tools.js","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":";;;AAwBA,oEA8CC;AAtED,6BAAwB;AAGxB,2DAA0D;AAE7C,QAAA,qBAAqB,GAAG;IACnC,gBAAgB,EAAE;QAChB,WAAW,EACT,2GAA2G;QAC7G,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CACP,uEAAuE,CACxE;SACJ,CAAC;KACH;IACD,eAAe,EAAE;QACf,WAAW,EACT,iHAAiH;QACnH,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KACzB;CACF,CAAC;AAEF,SAAgB,4BAA4B,CAC1C,aAA4B,EAC5B,WAAwB,EACxB,UAAuB;IAEvB,KAAK,UAAU,kBAAkB;QAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAA,6BAAc,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjC,UAAU,EAAE,EAAE,CAAC;YAEf,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,eAAe,MAAM,CAAC,GAAG,OAAO,QAAQ,EAAE;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,UAAU,EAAE,EAAE,CAAC;YAEf,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qBAAqB,QAAQ,EAAE;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { z } from "zod";
2
+ export declare const prototypeToolSchemas: {
3
+ devlens_check_prototype: {
4
+ description: string;
5
+ parameters: z.ZodObject<{
6
+ url: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ url: string;
9
+ }, {
10
+ url: string;
11
+ }>;
12
+ };
13
+ devlens_explore_prototype: {
14
+ description: string;
15
+ parameters: z.ZodObject<{
16
+ prototypeUrl: z.ZodString;
17
+ figmaUrl: z.ZodOptional<z.ZodString>;
18
+ maxScreens: z.ZodDefault<z.ZodNumber>;
19
+ captureDelay: z.ZodDefault<z.ZodNumber>;
20
+ viewportWidth: z.ZodDefault<z.ZodNumber>;
21
+ viewportHeight: z.ZodDefault<z.ZodNumber>;
22
+ scrollCapture: z.ZodDefault<z.ZodBoolean>;
23
+ extractDesignTokens: z.ZodDefault<z.ZodBoolean>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ viewportWidth: number;
26
+ viewportHeight: number;
27
+ prototypeUrl: string;
28
+ maxScreens: number;
29
+ captureDelay: number;
30
+ scrollCapture: boolean;
31
+ extractDesignTokens: boolean;
32
+ figmaUrl?: string | undefined;
33
+ }, {
34
+ prototypeUrl: string;
35
+ figmaUrl?: string | undefined;
36
+ viewportWidth?: number | undefined;
37
+ viewportHeight?: number | undefined;
38
+ maxScreens?: number | undefined;
39
+ captureDelay?: number | undefined;
40
+ scrollCapture?: boolean | undefined;
41
+ extractDesignTokens?: boolean | undefined;
42
+ }>;
43
+ };
44
+ devlens_prototype_screen: {
45
+ description: string;
46
+ parameters: z.ZodObject<{
47
+ url: z.ZodString;
48
+ figmaUrl: z.ZodOptional<z.ZodString>;
49
+ viewportWidth: z.ZodDefault<z.ZodNumber>;
50
+ viewportHeight: z.ZodDefault<z.ZodNumber>;
51
+ scrollDepth: z.ZodDefault<z.ZodNumber>;
52
+ }, "strip", z.ZodTypeAny, {
53
+ url: string;
54
+ viewportWidth: number;
55
+ viewportHeight: number;
56
+ scrollDepth: number;
57
+ figmaUrl?: string | undefined;
58
+ }, {
59
+ url: string;
60
+ figmaUrl?: string | undefined;
61
+ viewportWidth?: number | undefined;
62
+ viewportHeight?: number | undefined;
63
+ scrollDepth?: number | undefined;
64
+ }>;
65
+ };
66
+ };
67
+ type ContentBlock = {
68
+ type: "text";
69
+ text: string;
70
+ } | {
71
+ type: "image";
72
+ data: string;
73
+ mimeType: string;
74
+ };
75
+ type ToolResult = {
76
+ content: ContentBlock[];
77
+ isError?: boolean;
78
+ };
79
+ export declare function createPrototypeToolHandlers(): {
80
+ devlens_check_prototype: (params: {
81
+ url: string;
82
+ }) => Promise<ToolResult>;
83
+ devlens_explore_prototype: (params: {
84
+ prototypeUrl: string;
85
+ figmaUrl?: string;
86
+ maxScreens: number;
87
+ captureDelay: number;
88
+ viewportWidth: number;
89
+ viewportHeight: number;
90
+ scrollCapture: boolean;
91
+ extractDesignTokens: boolean;
92
+ }) => Promise<ToolResult>;
93
+ devlens_prototype_screen: (params: {
94
+ url: string;
95
+ figmaUrl?: string;
96
+ viewportWidth: number;
97
+ viewportHeight: number;
98
+ scrollDepth: number;
99
+ }) => Promise<ToolResult>;
100
+ };
101
+ export {};
102
+ //# sourceMappingURL=prototype-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/prototype-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFhC,CAAC;AAEF,KAAK,YAAY,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjE,wBAAgB,2BAA2B;sCAKC;QACtC,GAAG,EAAE,MAAM,CAAC;KACb,KAAG,OAAO,CAAC,UAAU,CAAC;wCAiBmB;QACxC,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,OAAO,CAAC;QACvB,mBAAmB,EAAE,OAAO,CAAC;KAC9B,KAAG,OAAO,CAAC,UAAU,CAAC;uCAakB;QACvC,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,KAAG,OAAO,CAAC,UAAU,CAAC;EAgF1B"}
@@ -0,0 +1,391 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prototypeToolSchemas = void 0;
4
+ exports.createPrototypeToolHandlers = createPrototypeToolHandlers;
5
+ const zod_1 = require("zod");
6
+ const url_parser_js_1 = require("../figma/url-parser.js");
7
+ const figma_api_js_1 = require("../figma/figma-api.js");
8
+ const figma_client_js_1 = require("../figma/figma-client.js");
9
+ const browser_engine_js_1 = require("../prototype/browser-engine.js");
10
+ const web_crawler_js_1 = require("../prototype/web-crawler.js");
11
+ const figma_navigator_js_1 = require("../prototype/figma-navigator.js");
12
+ const screen_analyzer_js_1 = require("../prototype/screen-analyzer.js");
13
+ const flow_reporter_js_1 = require("../prototype/flow-reporter.js");
14
+ exports.prototypeToolSchemas = {
15
+ devlens_check_prototype: {
16
+ description: "Smart prototype detection with bidirectional prompting. Give it ANY URL " +
17
+ "(Figma design, Figma prototype, or web prototype/mock) and it will: " +
18
+ "(1) detect the type, (2) summarise screens/flow, and " +
19
+ "(3) ask for the COMPLEMENTARY link. " +
20
+ "If given a Figma link it asks for the prototype/mock URL. " +
21
+ "If given a prototype URL it asks for the Figma design link. " +
22
+ "Having BOTH links enables near-100% build accuracy.",
23
+ parameters: zod_1.z.object({
24
+ url: zod_1.z
25
+ .string()
26
+ .describe("Any URL — Figma design link, Figma prototype link, or web prototype/mock URL"),
27
+ }),
28
+ },
29
+ devlens_explore_prototype: {
30
+ description: "Open a prototype in a headless browser, crawl every screen, " +
31
+ "capture high-res screenshots, extract colours/typography/components, " +
32
+ "and return a comprehensive flow report. Supports web-hosted prototypes " +
33
+ "(Vercel, Netlify, etc.) AND Figma prototypes. Optionally provide a Figma " +
34
+ "design URL alongside the prototype for enriched design-token extraction " +
35
+ "and near-100% build accuracy.",
36
+ parameters: zod_1.z.object({
37
+ prototypeUrl: zod_1.z
38
+ .string()
39
+ .describe("Prototype URL (web URL or Figma /proto/ link)"),
40
+ figmaUrl: zod_1.z
41
+ .string()
42
+ .optional()
43
+ .describe("Figma design URL for exact design specs. Strongly recommended for near-100% accuracy."),
44
+ maxScreens: zod_1.z
45
+ .number()
46
+ .default(15)
47
+ .describe("Maximum screens to explore (default: 15)"),
48
+ captureDelay: zod_1.z
49
+ .number()
50
+ .default(1500)
51
+ .describe("Wait ms after each navigation for transitions (default: 1500)"),
52
+ viewportWidth: zod_1.z
53
+ .number()
54
+ .default(390)
55
+ .describe("Viewport width in px (default: 390 — iPhone 14)"),
56
+ viewportHeight: zod_1.z
57
+ .number()
58
+ .default(844)
59
+ .describe("Viewport height in px (default: 844)"),
60
+ scrollCapture: zod_1.z
61
+ .boolean()
62
+ .default(true)
63
+ .describe("Capture additional scroll-position screenshots on long pages"),
64
+ extractDesignTokens: zod_1.z
65
+ .boolean()
66
+ .default(true)
67
+ .describe("Extract colour palette, typography, spacing patterns"),
68
+ }),
69
+ },
70
+ devlens_prototype_screen: {
71
+ description: "Deep-analyse a single prototype screen. Opens the URL in a headless " +
72
+ "browser at the specified viewport, scrolls to the given depth, and " +
73
+ "returns element-level detail (bounds, colours, text, nesting) for " +
74
+ "pixel-perfect implementation.",
75
+ parameters: zod_1.z.object({
76
+ url: zod_1.z
77
+ .string()
78
+ .describe("URL of the specific screen/route to analyse"),
79
+ figmaUrl: zod_1.z
80
+ .string()
81
+ .optional()
82
+ .describe("Figma design URL for exact specs of this screen"),
83
+ viewportWidth: zod_1.z.number().default(390),
84
+ viewportHeight: zod_1.z.number().default(844),
85
+ scrollDepth: zod_1.z
86
+ .number()
87
+ .default(5000)
88
+ .describe("How far to scroll in pixels (default: 5000)"),
89
+ }),
90
+ },
91
+ };
92
+ function createPrototypeToolHandlers() {
93
+ return {
94
+ /* ------------------------------------------------------------------ */
95
+ /* devlens_check_prototype */
96
+ /* ------------------------------------------------------------------ */
97
+ devlens_check_prototype: async (params) => {
98
+ const parsed = (0, url_parser_js_1.parsePrototypeUrl)(params.url);
99
+ if (parsed.type === "figma-design") {
100
+ return handleFigmaDesignCheck(params.url, parsed.fileKey);
101
+ }
102
+ if (parsed.type === "figma-proto") {
103
+ return handleFigmaProtoCheck(params.url, parsed.fileKey);
104
+ }
105
+ return handleWebPrototypeCheck(params.url);
106
+ },
107
+ /* ------------------------------------------------------------------ */
108
+ /* devlens_explore_prototype */
109
+ /* ------------------------------------------------------------------ */
110
+ devlens_explore_prototype: async (params) => {
111
+ const parsed = (0, url_parser_js_1.parsePrototypeUrl)(params.prototypeUrl);
112
+ if (parsed.type === "figma-proto") {
113
+ return exploreFigmaPrototype(params);
114
+ }
115
+ return exploreWebPrototype(params);
116
+ },
117
+ /* ------------------------------------------------------------------ */
118
+ /* devlens_prototype_screen */
119
+ /* ------------------------------------------------------------------ */
120
+ devlens_prototype_screen: async (params) => {
121
+ const engine = new browser_engine_js_1.BrowserEngine({
122
+ viewportWidth: params.viewportWidth,
123
+ viewportHeight: params.viewportHeight,
124
+ });
125
+ try {
126
+ await engine.launch();
127
+ await engine.navigate(params.url);
128
+ await engine.waitMs(1500);
129
+ const screenshot = await engine.screenshot();
130
+ const domMeta = await engine.extractDomMetadata();
131
+ const scrollHeight = await engine.getScrollHeight();
132
+ const analysis = await (0, screen_analyzer_js_1.analyzeScreen)(screenshot, domMeta, scrollHeight);
133
+ const scrollCaptures = [];
134
+ let scrolled = 0;
135
+ while (scrolled < params.scrollDepth) {
136
+ await engine.scrollPage("down", 600);
137
+ await engine.waitMs(300);
138
+ scrolled = await engine.getScrollPosition();
139
+ scrollCaptures.push(await engine.viewportScreenshot());
140
+ if (scrollCaptures.length >= 8)
141
+ break;
142
+ }
143
+ const content = [];
144
+ const lines = [
145
+ `# Deep Screen Analysis: ${params.url}`,
146
+ ``,
147
+ `## Colours`,
148
+ ...analysis.colorPalette.slice(0, 8).map((c) => ` ${c.hex} (${c.percentage.toFixed(1)}%)`),
149
+ ``,
150
+ `## Typography`,
151
+ ...analysis.typography.map((t) => ` <${t.tag}> ${t.text}`),
152
+ ``,
153
+ `## Interactive Elements (${analysis.interactiveElements.length})`,
154
+ ...analysis.interactiveElements.slice(0, 20).map((el) => ` [${el.tag}] "${el.text}" at (${el.bounds.x},${el.bounds.y}) ${el.bounds.width}x${el.bounds.height}${el.href ? ` -> ${el.href}` : ""}`),
155
+ ``,
156
+ `## Components`,
157
+ ...analysis.components.map((c) => ` ${c.type} (${c.count}x): ${c.examples.join(", ")}`),
158
+ ``,
159
+ `## Navigation`,
160
+ ...analysis.navigationElements.map((n) => ` ${n.text}${n.href ? ` -> ${n.href}` : ""}`),
161
+ ``,
162
+ `Scroll depth: ${scrollHeight}px`,
163
+ `Sections: ${analysis.sectionCount}`,
164
+ ];
165
+ content.push({ type: "text", text: lines.join("\n") });
166
+ content.push({
167
+ type: "image",
168
+ data: screenshot.toString("base64"),
169
+ mimeType: "image/png",
170
+ });
171
+ for (const cap of scrollCaptures.slice(0, 4)) {
172
+ content.push({
173
+ type: "image",
174
+ data: cap.toString("base64"),
175
+ mimeType: "image/png",
176
+ });
177
+ }
178
+ return { content };
179
+ }
180
+ finally {
181
+ await engine.close();
182
+ }
183
+ },
184
+ };
185
+ }
186
+ /* ====================================================================== */
187
+ /* check_prototype handlers */
188
+ /* ====================================================================== */
189
+ async function handleFigmaDesignCheck(url, fileKey) {
190
+ if (!fileKey) {
191
+ return errorResult("Could not extract Figma file key from URL.");
192
+ }
193
+ const token = process.env.FIGMA_TOKEN;
194
+ if (!token) {
195
+ return errorResult("FIGMA_TOKEN not set. Cannot check Figma file for prototype connections.");
196
+ }
197
+ try {
198
+ const fileData = await (0, figma_api_js_1.fetchFileDataFull)(fileKey, token, (0, figma_client_js_1.getFigmaClient)());
199
+ const flow = (0, figma_api_js_1.extractPrototypeFlows)(fileData);
200
+ const lines = [
201
+ `Figma design detected! File: ${fileData.name}`,
202
+ ``,
203
+ ];
204
+ if (flow.hasPrototype) {
205
+ lines.push(`PROTOTYPE CHECK: This file has prototype connections!`, ` - ${flow.screenCount} screens in the prototype flow`, ` - Starting frame: ${flow.startingNodeName || "unknown"}`, ` - Interactions: ${flow.connections.length} connections`, ``);
206
+ const triggers = new Map();
207
+ for (const c of flow.connections) {
208
+ triggers.set(c.trigger, (triggers.get(c.trigger) || 0) + 1);
209
+ }
210
+ const triggerSummary = [...triggers.entries()]
211
+ .map(([t, n]) => `${n} ${t.toLowerCase().replace("_", " ")}`)
212
+ .join(", ");
213
+ if (triggerSummary) {
214
+ lines.push(` - Trigger types: ${triggerSummary}`, ``);
215
+ }
216
+ }
217
+ else {
218
+ lines.push(`PROTOTYPE CHECK: No prototype connections found in this file.`, ``);
219
+ }
220
+ lines.push(`ACTION NEEDED: Provide the prototype sharing link so I can explore`, `the full user flow. Ask the developer:`, `'Is there a prototype link for this design? (figma.com/proto/... or a web URL like Vercel/Netlify)'`, ``, `Without prototype: I can still extract static design specs.`, `With prototype: I'll understand the complete interaction flow for near-100% accuracy.`);
221
+ return { content: [{ type: "text", text: lines.join("\n") }] };
222
+ }
223
+ catch (err) {
224
+ const msg = err instanceof Error ? err.message : String(err);
225
+ return errorResult(`Failed to check Figma file: ${msg}`);
226
+ }
227
+ }
228
+ async function handleFigmaProtoCheck(url, fileKey) {
229
+ const lines = [`Figma prototype detected!`, ``];
230
+ if (fileKey && process.env.FIGMA_TOKEN) {
231
+ try {
232
+ const fileData = await (0, figma_api_js_1.fetchFileDataFull)(fileKey, process.env.FIGMA_TOKEN, (0, figma_client_js_1.getFigmaClient)());
233
+ const flow = (0, figma_api_js_1.extractPrototypeFlows)(fileData);
234
+ lines.push(`File: ${fileData.name}`, `Screens in flow: ${flow.screenCount}`, `Starting frame: ${flow.startingNodeName || "unknown"}`, `Connections: ${flow.connections.length}`, ``);
235
+ }
236
+ catch {
237
+ lines.push(`Could not fetch file details (token issue or permissions).`, ``);
238
+ }
239
+ }
240
+ lines.push(`ACTION NEEDED: Also provide the Figma DESIGN link (figma.com/design/...)`, `so I can extract exact design specs alongside the prototype flow.`, ``, `With design link: exact colours, spacing, typography, component structure.`, `Without: I'll explore the prototype visually but specs will be approximate.`);
241
+ return { content: [{ type: "text", text: lines.join("\n") }] };
242
+ }
243
+ async function handleWebPrototypeCheck(url) {
244
+ const engine = new browser_engine_js_1.BrowserEngine();
245
+ try {
246
+ await engine.launch();
247
+ await engine.navigate(url);
248
+ await engine.waitMs(1500);
249
+ const domMeta = await engine.extractDomMetadata();
250
+ const links = await engine.extractLinks();
251
+ const uniquePaths = new Set(links.map((l) => {
252
+ try {
253
+ return new URL(l.href).pathname.replace(/\/+$/, "") || "/";
254
+ }
255
+ catch {
256
+ return "/";
257
+ }
258
+ }));
259
+ const lines = [
260
+ `Web prototype detected!`,
261
+ `URL: ${url}`,
262
+ `Title: ${domMeta.title || "(no title)"}`,
263
+ ``,
264
+ `Discovered ${uniquePaths.size} screens/routes:`,
265
+ ...[...uniquePaths].slice(0, 20).map((p) => ` - ${p}`),
266
+ ``,
267
+ `Page structure:`,
268
+ ` - Headings: ${domMeta.headings.length}`,
269
+ ` - Links: ${domMeta.links.length}`,
270
+ ` - Images: ${domMeta.images.length}`,
271
+ ` - Interactive elements: ${domMeta.interactiveElements.length}`,
272
+ ``,
273
+ `ACTION NEEDED: Provide the Figma design link so I can extract exact`,
274
+ `design specs. Ask the developer:`,
275
+ `'Is there a Figma file for this prototype? I need it for pixel-perfect specs`,
276
+ `(colors, spacing, typography, component structure).'`,
277
+ ``,
278
+ `Without Figma: I can explore the prototype and extract visual patterns.`,
279
+ `With Figma: I'll have exact design tokens + flow understanding = near-100% accuracy.`,
280
+ ];
281
+ return { content: [{ type: "text", text: lines.join("\n") }] };
282
+ }
283
+ catch (err) {
284
+ const msg = err instanceof Error ? err.message : String(err);
285
+ return errorResult(`Failed to probe web prototype: ${msg}`);
286
+ }
287
+ finally {
288
+ await engine.close();
289
+ }
290
+ }
291
+ /* ====================================================================== */
292
+ /* explore_prototype handlers */
293
+ /* ====================================================================== */
294
+ async function exploreWebPrototype(params) {
295
+ const engine = new browser_engine_js_1.BrowserEngine({
296
+ viewportWidth: params.viewportWidth,
297
+ viewportHeight: params.viewportHeight,
298
+ });
299
+ try {
300
+ await engine.launch();
301
+ const crawler = new web_crawler_js_1.WebCrawler(engine, {
302
+ maxPages: params.maxScreens,
303
+ scrollCapture: params.scrollCapture,
304
+ captureDelay: params.captureDelay,
305
+ viewportWidth: params.viewportWidth,
306
+ viewportHeight: params.viewportHeight,
307
+ });
308
+ const crawlResults = await crawler.crawl(params.prototypeUrl);
309
+ const analyses = [];
310
+ for (const result of crawlResults) {
311
+ const scrollHeight = result.scrollCaptures.length > 0
312
+ ? result.scrollCaptures[result.scrollCaptures.length - 1].scrollY
313
+ : 0;
314
+ const analysis = await (0, screen_analyzer_js_1.analyzeScreen)(result.screenshot, result.domMetadata, scrollHeight);
315
+ analyses.push(analysis);
316
+ }
317
+ const report = (0, flow_reporter_js_1.buildWebFlowReport)(crawlResults, analyses, !params.figmaUrl);
318
+ const content = (0, flow_reporter_js_1.formatFlowReportContent)(report);
319
+ return { content };
320
+ }
321
+ catch (err) {
322
+ const msg = err instanceof Error ? err.message : String(err);
323
+ return errorResult(`Web prototype exploration failed: ${msg}`);
324
+ }
325
+ finally {
326
+ await engine.close();
327
+ }
328
+ }
329
+ async function exploreFigmaPrototype(params) {
330
+ const parsed = (0, url_parser_js_1.parseFigmaUrl)(params.prototypeUrl);
331
+ if (!parsed?.fileKey) {
332
+ return errorResult("Could not extract file key from Figma prototype URL.");
333
+ }
334
+ const token = process.env.FIGMA_TOKEN;
335
+ if (!token) {
336
+ return errorResult("FIGMA_TOKEN not set. Required for Figma prototype exploration.");
337
+ }
338
+ const engine = new browser_engine_js_1.BrowserEngine({
339
+ viewportWidth: params.viewportWidth,
340
+ viewportHeight: params.viewportHeight,
341
+ });
342
+ try {
343
+ const fileData = await (0, figma_api_js_1.fetchFileDataFull)(parsed.fileKey, token, (0, figma_client_js_1.getFigmaClient)());
344
+ const flow = (0, figma_api_js_1.extractPrototypeFlows)(fileData);
345
+ if (!flow.hasPrototype) {
346
+ return {
347
+ content: [{
348
+ type: "text",
349
+ text: "No prototype connections found in this Figma file. " +
350
+ "Check that the file has prototype interactions set up.",
351
+ }],
352
+ };
353
+ }
354
+ await engine.launch();
355
+ const navigator = new figma_navigator_js_1.FigmaNavigator(engine, {
356
+ maxScreens: params.maxScreens,
357
+ captureDelay: params.captureDelay,
358
+ });
359
+ const steps = await navigator.navigatePrototype(params.prototypeUrl, flow);
360
+ const analyses = [];
361
+ for (const step of steps) {
362
+ const emptyDom = {
363
+ title: step.screenName,
364
+ headings: [],
365
+ links: [],
366
+ images: [],
367
+ interactiveElements: [],
368
+ textContent: "",
369
+ };
370
+ const analysis = await (0, screen_analyzer_js_1.analyzeScreen)(step.screenshot, emptyDom, 0);
371
+ analyses.push(analysis);
372
+ }
373
+ const report = (0, flow_reporter_js_1.buildFigmaFlowReport)(steps, analyses, !params.figmaUrl);
374
+ const content = (0, flow_reporter_js_1.formatFlowReportContent)(report);
375
+ return { content };
376
+ }
377
+ catch (err) {
378
+ const msg = err instanceof Error ? err.message : String(err);
379
+ return errorResult(`Figma prototype exploration failed: ${msg}`);
380
+ }
381
+ finally {
382
+ await engine.close();
383
+ }
384
+ }
385
+ function errorResult(message) {
386
+ return {
387
+ content: [{ type: "text", text: message }],
388
+ isError: true,
389
+ };
390
+ }
391
+ //# sourceMappingURL=prototype-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype-tools.js","sourceRoot":"","sources":["../../../src/tools/prototype-tools.ts"],"names":[],"mappings":";;;AAgHA,kEAoIC;AApPD,6BAAwB;AACxB,0DAA0E;AAC1E,wDAI+B;AAC/B,8DAA0D;AAC1D,sEAA+D;AAC/D,gEAAyD;AACzD,wEAAiE;AACjE,wEAAgE;AAChE,oEAIuC;AAE1B,QAAA,oBAAoB,GAAG;IAClC,uBAAuB,EAAE;QACvB,WAAW,EACT,0EAA0E;YAC1E,sEAAsE;YACtE,uDAAuD;YACvD,sCAAsC;YACtC,4DAA4D;YAC5D,8DAA8D;YAC9D,qDAAqD;QACvD,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CACP,8EAA8E,CAC/E;SACJ,CAAC;KACH;IAED,yBAAyB,EAAE;QACzB,WAAW,EACT,8DAA8D;YAC9D,uEAAuE;YACvE,yEAAyE;YACzE,2EAA2E;YAC3E,0EAA0E;YAC1E,+BAA+B;QACjC,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,YAAY,EAAE,OAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,QAAQ,EAAE,OAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,uFAAuF,CACxF;YACH,UAAU,EAAE,OAAC;iBACV,MAAM,EAAE;iBACR,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,0CAA0C,CAAC;YACvD,YAAY,EAAE,OAAC;iBACZ,MAAM,EAAE;iBACR,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,aAAa,EAAE,OAAC;iBACb,MAAM,EAAE;iBACR,OAAO,CAAC,GAAG,CAAC;iBACZ,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,cAAc,EAAE,OAAC;iBACd,MAAM,EAAE;iBACR,OAAO,CAAC,GAAG,CAAC;iBACZ,QAAQ,CAAC,sCAAsC,CAAC;YACnD,aAAa,EAAE,OAAC;iBACb,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,mBAAmB,EAAE,OAAC;iBACnB,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,sDAAsD,CAAC;SACpE,CAAC;KACH;IAED,wBAAwB,EAAE;QACxB,WAAW,EACT,sEAAsE;YACtE,qEAAqE;YACrE,oEAAoE;YACpE,+BAA+B;QACjC,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,QAAQ,EAAE,OAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;YACtC,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;YACvC,WAAW,EAAE,OAAC;iBACX,MAAM,EAAE;iBACR,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,6CAA6C,CAAC;SAC3D,CAAC;KACH;CACF,CAAC;AAQF,SAAgB,2BAA2B;IACzC,OAAO;QACL,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,uBAAuB,EAAE,KAAK,EAAE,MAE/B,EAAuB,EAAE;YACxB,MAAM,MAAM,GAAG,IAAA,iCAAiB,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE7C,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnC,OAAO,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAClC,OAAO,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,yBAAyB,EAAE,KAAK,EAAE,MASjC,EAAuB,EAAE;YACxB,MAAM,MAAM,GAAG,IAAA,iCAAiB,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAEtD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAClC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wBAAwB,EAAE,KAAK,EAAE,MAMhC,EAAuB,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,iCAAa,CAAC;gBAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE1B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAClD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAa,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;gBAExE,MAAM,cAAc,GAAa,EAAE,CAAC;gBACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,OAAO,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;oBACrC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACrC,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACzB,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC5C,cAAc,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;oBACvD,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC;wBAAE,MAAM;gBACxC,CAAC;gBAED,MAAM,OAAO,GAAmB,EAAE,CAAC;gBAEnC,MAAM,KAAK,GAAG;oBACZ,2BAA2B,MAAM,CAAC,GAAG,EAAE;oBACvC,EAAE;oBACF,YAAY;oBACZ,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAClD;oBACD,EAAE;oBACF,eAAe;oBACf,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC3D,EAAE;oBACF,4BAA4B,QAAQ,CAAC,mBAAmB,CAAC,MAAM,GAAG;oBAClE,GAAG,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAC9C,CAAC,EAAE,EAAE,EAAE,CACL,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3I;oBACD,EAAE;oBACF,eAAe;oBACf,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7D;oBACD,EAAE;oBACF,eAAe;oBACf,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD;oBACD,EAAE;oBACF,iBAAiB,YAAY,IAAI;oBACjC,aAAa,QAAQ,CAAC,YAAY,EAAE;iBACrC,CAAC;gBAEF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAgB;oBACtB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACnC,QAAQ,EAAE,WAAW;iBACtB,CAAC,CAAC;gBAEH,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,OAAgB;wBACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC5B,QAAQ,EAAE,WAAW;qBACtB,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,KAAK,UAAU,sBAAsB,CACnC,GAAW,EACX,OAAgB;IAEhB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,4CAA4C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,WAAW,CAChB,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAiB,EAAC,OAAO,EAAE,KAAK,EAAE,IAAA,gCAAc,GAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAA,oCAAqB,EAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,KAAK,GAAa;YACtB,gCAAgC,QAAQ,CAAC,IAAI,EAAE;YAC/C,EAAE;SACH,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CACR,uDAAuD,EACvD,OAAO,IAAI,CAAC,WAAW,gCAAgC,EACvD,uBAAuB,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE,EAC3D,qBAAqB,IAAI,CAAC,WAAW,CAAC,MAAM,cAAc,EAC1D,EAAE,CACH,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;iBAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,sBAAsB,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,+DAA+D,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,KAAK,CAAC,IAAI,CACR,oEAAoE,EACpE,wCAAwC,EACxC,qGAAqG,EACrG,EAAE,EACF,6DAA6D,EAC7D,uFAAuF,CACxF,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAW,EACX,OAAgB;IAEhB,MAAM,KAAK,GAAa,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAE1D,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAiB,EAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAA,gCAAc,GAAE,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,IAAA,oCAAqB,EAAC,QAAQ,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CACR,SAAS,QAAQ,CAAC,IAAI,EAAE,EACxB,oBAAoB,IAAI,CAAC,WAAW,EAAE,EACtC,mBAAmB,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE,EACvD,gBAAgB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EACzC,EAAE,CACH,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,0EAA0E,EAC1E,mEAAmE,EACnE,EAAE,EACF,4EAA4E,EAC5E,6EAA6E,CAC9E,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,GAAW;IAChD,MAAM,MAAM,GAAG,IAAI,iCAAa,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAE1C,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,IAAI,CAAC;gBACH,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,KAAK,GAAa;YACtB,yBAAyB;YACzB,QAAQ,GAAG,EAAE;YACb,UAAU,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE;YACzC,EAAE;YACF,cAAc,WAAW,CAAC,IAAI,kBAAkB;YAChD,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,EAAE;YACF,iBAAiB;YACjB,iBAAiB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC1C,cAAc,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;YACpC,eAAe,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;YACtC,6BAA6B,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE;YACjE,EAAE;YACF,qEAAqE;YACrE,kCAAkC;YAClC,8EAA8E;YAC9E,sDAAsD;YACtD,EAAE;YACF,yEAAyE;YACzE,sFAAsF;SACvF,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,KAAK,UAAU,mBAAmB,CAAC,MASlC;IACC,MAAM,MAAM,GAAG,IAAI,iCAAa,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAI,2BAAU,CAAC,MAAM,EAAE;YACrC,QAAQ,EAAE,MAAM,CAAC,UAAU;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBACnD,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO;gBACjE,CAAC,CAAC,CAAC,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAa,EAClC,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,EAClB,YAAY,CACb,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,qCAAkB,EAC/B,YAAY,EACZ,QAAQ,EACR,CAAC,MAAM,CAAC,QAAQ,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,IAAA,0CAAuB,EAAC,MAAM,CAAC,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MASpC;IACC,MAAM,MAAM,GAAG,IAAA,6BAAa,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC,sDAAsD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,WAAW,CAChB,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,iCAAa,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAiB,EAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAA,gCAAc,GAAE,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,IAAA,oCAAqB,EAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qDAAqD;4BACzD,wDAAwD;qBAC3D,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtB,MAAM,SAAS,GAAG,IAAI,mCAAc,CAAC,MAAM,EAAE;YAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,mBAAmB,EAAE,EAAE;gBACvB,WAAW,EAAE,EAAE;aAChB,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAa,EAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,uCAAoB,EAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAA,0CAAuB,EAAC,MAAM,CAAC,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import type { DeviceManager } from "../platform/device-manager.js";
3
3
  import type { RefRegistry } from "../snapshot/ref-registry.js";
4
- import { type Tolerances } from "../visual/property-comparator.js";
5
4
  export declare const screenshotToolSchemas: {
6
5
  devlens_screenshot: {
7
6
  description: string;
@@ -101,53 +100,6 @@ export declare const screenshotToolSchemas: {
101
100
  preprocessImageB?: boolean | undefined;
102
101
  }>;
103
102
  };
104
- devlens_compare_properties: {
105
- description: string;
106
- parameters: z.ZodObject<{
107
- figmaUrl: z.ZodOptional<z.ZodString>;
108
- fileKey: z.ZodOptional<z.ZodString>;
109
- nodeId: z.ZodOptional<z.ZodString>;
110
- includeColors: z.ZodDefault<z.ZodBoolean>;
111
- tolerances: z.ZodOptional<z.ZodObject<{
112
- dimensions: z.ZodDefault<z.ZodNumber>;
113
- fontSize: z.ZodDefault<z.ZodNumber>;
114
- color: z.ZodDefault<z.ZodNumber>;
115
- spacing: z.ZodDefault<z.ZodNumber>;
116
- }, "strip", z.ZodTypeAny, {
117
- color: number;
118
- spacing: number;
119
- dimensions: number;
120
- fontSize: number;
121
- }, {
122
- color?: number | undefined;
123
- spacing?: number | undefined;
124
- dimensions?: number | undefined;
125
- fontSize?: number | undefined;
126
- }>>;
127
- }, "strip", z.ZodTypeAny, {
128
- includeColors: boolean;
129
- figmaUrl?: string | undefined;
130
- fileKey?: string | undefined;
131
- nodeId?: string | undefined;
132
- tolerances?: {
133
- color: number;
134
- spacing: number;
135
- dimensions: number;
136
- fontSize: number;
137
- } | undefined;
138
- }, {
139
- figmaUrl?: string | undefined;
140
- fileKey?: string | undefined;
141
- nodeId?: string | undefined;
142
- includeColors?: boolean | undefined;
143
- tolerances?: {
144
- color?: number | undefined;
145
- spacing?: number | undefined;
146
- dimensions?: number | undefined;
147
- fontSize?: number | undefined;
148
- } | undefined;
149
- }>;
150
- };
151
103
  devlens_compare_with_figma: {
152
104
  description: string;
153
105
  parameters: z.ZodObject<{
@@ -183,9 +135,11 @@ export declare const screenshotToolSchemas: {
183
135
  scale: number;
184
136
  resizeStrategy: "fit" | "scale" | "crop";
185
137
  preprocessReference: boolean;
186
- excludeSystemBars: "ios" | "android" | "auto" | "none";
138
+ excludeSystemBars: "ios" | "android" | "none" | "auto";
187
139
  layoutReport: boolean;
188
140
  depth: "quick" | "standard" | "thorough";
141
+ fileKey?: string | undefined;
142
+ nodeId?: string | undefined;
189
143
  cropRef?: string | undefined;
190
144
  region?: {
191
145
  width: number;
@@ -194,14 +148,14 @@ export declare const screenshotToolSchemas: {
194
148
  y: number;
195
149
  } | undefined;
196
150
  figmaUrl?: string | undefined;
197
- fileKey?: string | undefined;
198
- nodeId?: string | undefined;
199
151
  }, {
200
152
  threshold?: number | undefined;
201
153
  scale?: number | undefined;
202
154
  resizeStrategy?: "fit" | "scale" | "crop" | undefined;
203
155
  preprocessReference?: boolean | undefined;
204
- excludeSystemBars?: "ios" | "android" | "auto" | "none" | undefined;
156
+ excludeSystemBars?: "ios" | "android" | "none" | "auto" | undefined;
157
+ fileKey?: string | undefined;
158
+ nodeId?: string | undefined;
205
159
  cropRef?: string | undefined;
206
160
  region?: {
207
161
  width: number;
@@ -210,8 +164,6 @@ export declare const screenshotToolSchemas: {
210
164
  y: number;
211
165
  } | undefined;
212
166
  figmaUrl?: string | undefined;
213
- fileKey?: string | undefined;
214
- nodeId?: string | undefined;
215
167
  layoutReport?: boolean | undefined;
216
168
  depth?: "quick" | "standard" | "thorough" | undefined;
217
169
  }>;
@@ -313,25 +265,6 @@ export declare function createScreenshotToolHandlers(deviceManager: DeviceManage
313
265
  }[];
314
266
  isError: boolean;
315
267
  }>;
316
- devlens_compare_properties: (params: {
317
- figmaUrl?: string;
318
- fileKey?: string;
319
- nodeId?: string;
320
- includeColors: boolean;
321
- tolerances?: Partial<Tolerances>;
322
- }) => Promise<{
323
- content: {
324
- type: "text";
325
- text: string;
326
- }[];
327
- isError: boolean;
328
- } | {
329
- content: {
330
- type: "text";
331
- text: string;
332
- }[];
333
- isError?: undefined;
334
- }>;
335
268
  devlens_compare_with_figma: (params: {
336
269
  figmaUrl?: string;
337
270
  fileKey?: string;
@@ -365,7 +298,7 @@ export declare function createScreenshotToolHandlers(deviceManager: DeviceManage
365
298
  } | {
366
299
  content: {
367
300
  type: "text";
368
- text: string;
301
+ text: string | undefined;
369
302
  }[];
370
303
  isError: boolean;
371
304
  }>;