@bilalba/fig-mcp 1.0.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 (186) hide show
  1. package/README.md +112 -0
  2. package/dist/compare-get-vector.d.ts +2 -0
  3. package/dist/compare-get-vector.d.ts.map +1 -0
  4. package/dist/compare-get-vector.js +124 -0
  5. package/dist/compare-get-vector.js.map +1 -0
  6. package/dist/compare-mcp-vs-direct.d.ts +2 -0
  7. package/dist/compare-mcp-vs-direct.d.ts.map +1 -0
  8. package/dist/compare-mcp-vs-direct.js +173 -0
  9. package/dist/compare-mcp-vs-direct.js.map +1 -0
  10. package/dist/compare-renderers.d.ts +2 -0
  11. package/dist/compare-renderers.d.ts.map +1 -0
  12. package/dist/compare-renderers.js +110 -0
  13. package/dist/compare-renderers.js.map +1 -0
  14. package/dist/debug/debug-stroke-geom.d.ts +2 -0
  15. package/dist/debug/debug-stroke-geom.d.ts.map +1 -0
  16. package/dist/debug/debug-stroke-geom.js +67 -0
  17. package/dist/debug/debug-stroke-geom.js.map +1 -0
  18. package/dist/debug/debug-transforms.d.ts +2 -0
  19. package/dist/debug/debug-transforms.d.ts.map +1 -0
  20. package/dist/debug/debug-transforms.js +97 -0
  21. package/dist/debug/debug-transforms.js.map +1 -0
  22. package/dist/debug/debug-vertex.d.ts +2 -0
  23. package/dist/debug/debug-vertex.d.ts.map +1 -0
  24. package/dist/debug/debug-vertex.js +72 -0
  25. package/dist/debug/debug-vertex.js.map +1 -0
  26. package/dist/debug-group.d.ts +5 -0
  27. package/dist/debug-group.d.ts.map +1 -0
  28. package/dist/debug-group.js +44 -0
  29. package/dist/debug-group.js.map +1 -0
  30. package/dist/debug-stroke-geom.d.ts +2 -0
  31. package/dist/debug-stroke-geom.d.ts.map +1 -0
  32. package/dist/debug-stroke-geom.js +67 -0
  33. package/dist/debug-stroke-geom.js.map +1 -0
  34. package/dist/debug-transforms.d.ts +2 -0
  35. package/dist/debug-transforms.d.ts.map +1 -0
  36. package/dist/debug-transforms.js +97 -0
  37. package/dist/debug-transforms.js.map +1 -0
  38. package/dist/debug-vertex.d.ts +2 -0
  39. package/dist/debug-vertex.d.ts.map +1 -0
  40. package/dist/debug-vertex.js +72 -0
  41. package/dist/debug-vertex.js.map +1 -0
  42. package/dist/decode-vector-network.d.ts +5 -0
  43. package/dist/decode-vector-network.d.ts.map +1 -0
  44. package/dist/decode-vector-network.js +160 -0
  45. package/dist/decode-vector-network.js.map +1 -0
  46. package/dist/experimental/paint-utils.d.ts +35 -0
  47. package/dist/experimental/paint-utils.d.ts.map +1 -0
  48. package/dist/experimental/paint-utils.js +105 -0
  49. package/dist/experimental/paint-utils.js.map +1 -0
  50. package/dist/experimental/render-screen-v2.d.ts +32 -0
  51. package/dist/experimental/render-screen-v2.d.ts.map +1 -0
  52. package/dist/experimental/render-screen-v2.js +366 -0
  53. package/dist/experimental/render-screen-v2.js.map +1 -0
  54. package/dist/experimental/render-screen.d.ts +26 -0
  55. package/dist/experimental/render-screen.d.ts.map +1 -0
  56. package/dist/experimental/render-screen.js +547 -0
  57. package/dist/experimental/render-screen.js.map +1 -0
  58. package/dist/experimental/render-types.d.ts +43 -0
  59. package/dist/experimental/render-types.d.ts.map +1 -0
  60. package/dist/experimental/render-types.js +22 -0
  61. package/dist/experimental/render-types.js.map +1 -0
  62. package/dist/experimental/render-utils.d.ts +38 -0
  63. package/dist/experimental/render-utils.d.ts.map +1 -0
  64. package/dist/experimental/render-utils.js +126 -0
  65. package/dist/experimental/render-utils.js.map +1 -0
  66. package/dist/experimental/screenshot.d.ts +11 -0
  67. package/dist/experimental/screenshot.d.ts.map +1 -0
  68. package/dist/experimental/screenshot.js +26 -0
  69. package/dist/experimental/screenshot.js.map +1 -0
  70. package/dist/experimental/vector-renderer.d.ts +31 -0
  71. package/dist/experimental/vector-renderer.d.ts.map +1 -0
  72. package/dist/experimental/vector-renderer.js +427 -0
  73. package/dist/experimental/vector-renderer.js.map +1 -0
  74. package/dist/explore-images.d.ts +9 -0
  75. package/dist/explore-images.d.ts.map +1 -0
  76. package/dist/explore-images.js +307 -0
  77. package/dist/explore-images.js.map +1 -0
  78. package/dist/http-server.d.ts +8 -0
  79. package/dist/http-server.d.ts.map +1 -0
  80. package/dist/http-server.js +95 -0
  81. package/dist/http-server.js.map +1 -0
  82. package/dist/index.d.ts +9 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +34 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/inspect-fig.d.ts +16 -0
  87. package/dist/inspect-fig.d.ts.map +1 -0
  88. package/dist/inspect-fig.js +134 -0
  89. package/dist/inspect-fig.js.map +1 -0
  90. package/dist/inspect-frame.d.ts +2 -0
  91. package/dist/inspect-frame.d.ts.map +1 -0
  92. package/dist/inspect-frame.js +90 -0
  93. package/dist/inspect-frame.js.map +1 -0
  94. package/dist/inspect-nodes.d.ts +5 -0
  95. package/dist/inspect-nodes.d.ts.map +1 -0
  96. package/dist/inspect-nodes.js +193 -0
  97. package/dist/inspect-nodes.js.map +1 -0
  98. package/dist/mcp/server.d.ts +38 -0
  99. package/dist/mcp/server.d.ts.map +1 -0
  100. package/dist/mcp/server.js +1524 -0
  101. package/dist/mcp/server.js.map +1 -0
  102. package/dist/parser/fig-reader.d.ts +29 -0
  103. package/dist/parser/fig-reader.d.ts.map +1 -0
  104. package/dist/parser/fig-reader.js +182 -0
  105. package/dist/parser/fig-reader.js.map +1 -0
  106. package/dist/parser/index.d.ts +48 -0
  107. package/dist/parser/index.d.ts.map +1 -0
  108. package/dist/parser/index.js +106 -0
  109. package/dist/parser/index.js.map +1 -0
  110. package/dist/parser/kiwi-parser.d.ts +66 -0
  111. package/dist/parser/kiwi-parser.d.ts.map +1 -0
  112. package/dist/parser/kiwi-parser.js +491 -0
  113. package/dist/parser/kiwi-parser.js.map +1 -0
  114. package/dist/parser/layout-inference.d.ts +63 -0
  115. package/dist/parser/layout-inference.d.ts.map +1 -0
  116. package/dist/parser/layout-inference.js +446 -0
  117. package/dist/parser/layout-inference.js.map +1 -0
  118. package/dist/parser/types.d.ts +286 -0
  119. package/dist/parser/types.d.ts.map +1 -0
  120. package/dist/parser/types.js +6 -0
  121. package/dist/parser/types.js.map +1 -0
  122. package/dist/render-single.d.ts +2 -0
  123. package/dist/render-single.d.ts.map +1 -0
  124. package/dist/render-single.js +53 -0
  125. package/dist/render-single.js.map +1 -0
  126. package/dist/renderer/index.d.ts +16 -0
  127. package/dist/renderer/index.d.ts.map +1 -0
  128. package/dist/renderer/index.js +18 -0
  129. package/dist/renderer/index.js.map +1 -0
  130. package/dist/renderer/paint-utils.d.ts +35 -0
  131. package/dist/renderer/paint-utils.d.ts.map +1 -0
  132. package/dist/renderer/paint-utils.js +105 -0
  133. package/dist/renderer/paint-utils.js.map +1 -0
  134. package/dist/renderer/render-screen.d.ts +26 -0
  135. package/dist/renderer/render-screen.d.ts.map +1 -0
  136. package/dist/renderer/render-screen.js +547 -0
  137. package/dist/renderer/render-screen.js.map +1 -0
  138. package/dist/renderer/render-types.d.ts +43 -0
  139. package/dist/renderer/render-types.d.ts.map +1 -0
  140. package/dist/renderer/render-types.js +22 -0
  141. package/dist/renderer/render-types.js.map +1 -0
  142. package/dist/renderer/render-utils.d.ts +38 -0
  143. package/dist/renderer/render-utils.d.ts.map +1 -0
  144. package/dist/renderer/render-utils.js +126 -0
  145. package/dist/renderer/render-utils.js.map +1 -0
  146. package/dist/renderer/screenshot.d.ts +11 -0
  147. package/dist/renderer/screenshot.d.ts.map +1 -0
  148. package/dist/renderer/screenshot.js +26 -0
  149. package/dist/renderer/screenshot.js.map +1 -0
  150. package/dist/renderer/vector-renderer.d.ts +31 -0
  151. package/dist/renderer/vector-renderer.d.ts.map +1 -0
  152. package/dist/renderer/vector-renderer.js +427 -0
  153. package/dist/renderer/vector-renderer.js.map +1 -0
  154. package/dist/shared-config.d.ts +9 -0
  155. package/dist/shared-config.d.ts.map +1 -0
  156. package/dist/shared-config.js +9 -0
  157. package/dist/shared-config.js.map +1 -0
  158. package/dist/test-parser.d.ts +3 -0
  159. package/dist/test-parser.d.ts.map +1 -0
  160. package/dist/test-parser.js +74 -0
  161. package/dist/test-parser.js.map +1 -0
  162. package/dist/test-render-v2.d.ts +5 -0
  163. package/dist/test-render-v2.d.ts.map +1 -0
  164. package/dist/test-render-v2.js +76 -0
  165. package/dist/test-render-v2.js.map +1 -0
  166. package/dist/test-render.d.ts +5 -0
  167. package/dist/test-render.d.ts.map +1 -0
  168. package/dist/test-render.js +76 -0
  169. package/dist/test-render.js.map +1 -0
  170. package/dist/vector-export.d.ts +52 -0
  171. package/dist/vector-export.d.ts.map +1 -0
  172. package/dist/vector-export.js +628 -0
  173. package/dist/vector-export.js.map +1 -0
  174. package/dist/web-viewer/build-client.d.ts +6 -0
  175. package/dist/web-viewer/build-client.d.ts.map +1 -0
  176. package/dist/web-viewer/build-client.js +36 -0
  177. package/dist/web-viewer/build-client.js.map +1 -0
  178. package/dist/web-viewer/client/viewer.d.ts +7 -0
  179. package/dist/web-viewer/client/viewer.d.ts.map +1 -0
  180. package/dist/web-viewer/client/viewer.js +873 -0
  181. package/dist/web-viewer/client/viewer.js.map +1 -0
  182. package/dist/web-viewer/server.d.ts +16 -0
  183. package/dist/web-viewer/server.d.ts.map +1 -0
  184. package/dist/web-viewer/server.js +420 -0
  185. package/dist/web-viewer/server.js.map +1 -0
  186. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-fig.js","sourceRoot":"","sources":["../src/inspect-fig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inspect-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-frame.d.ts","sourceRoot":"","sources":["../src/inspect-frame.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Inspect frame 457:1694 and its vector children
3
+ */
4
+ import { readFigFile } from "./parser/index.js";
5
+ import { parseCanvasFig, formatGUID, extractDocumentTree } from "./parser/kiwi-parser.js";
6
+ const FILE_PATH = "/Users/billy/Downloads/AutoDevice (Copy).fig";
7
+ async function inspect() {
8
+ const archive = await readFigFile(FILE_PATH);
9
+ const parsed = parseCanvasFig(archive.canvasFig);
10
+ const doc = extractDocumentTree(parsed.message);
11
+ if (!doc) {
12
+ console.log("Failed to extract document tree");
13
+ return;
14
+ }
15
+ // Build node index
16
+ const nodeIndex = new Map();
17
+ function indexNode(node) {
18
+ nodeIndex.set(formatGUID(node.guid), node);
19
+ if (node.children) {
20
+ for (const child of node.children) {
21
+ indexNode(child);
22
+ }
23
+ }
24
+ }
25
+ indexNode(doc);
26
+ // Get frame 457:1694 and its children
27
+ const rawFrame = nodeIndex.get("457:1694");
28
+ if (!rawFrame) {
29
+ console.log("Frame not found");
30
+ return;
31
+ }
32
+ const frame = rawFrame;
33
+ console.log("Frame 457:1694:", frame.name);
34
+ console.log("Children:", frame.children?.length);
35
+ const blobs = parsed.message["blobs"];
36
+ for (const child of frame.children || []) {
37
+ const raw = child;
38
+ const id = formatGUID(child.guid);
39
+ console.log("\n" + "=".repeat(60));
40
+ console.log("Child:", id, "| Name:", child.name, "| Type:", child.type);
41
+ console.log("Size:", raw.size);
42
+ console.log("Transform:", raw.transform);
43
+ console.log("strokeWeight:", raw.strokeWeight);
44
+ console.log("strokeCap:", raw.strokeCap);
45
+ console.log("strokeJoin:", raw.strokeJoin);
46
+ const vectorData = raw.vectorData;
47
+ if (vectorData) {
48
+ console.log("\nvectorData.normalizedSize:", vectorData.normalizedSize);
49
+ console.log("vectorData.vectorNetworkBlob:", vectorData.vectorNetworkBlob);
50
+ // Decode the vector network blob
51
+ if (typeof vectorData.vectorNetworkBlob === "number" && blobs) {
52
+ const blobIndex = vectorData.vectorNetworkBlob;
53
+ const bytes = blobs[blobIndex]?.bytes;
54
+ if (bytes) {
55
+ console.log("\n Blob bytes length:", bytes.length);
56
+ console.log(" Full blob (hex):", Buffer.from(bytes).toString("hex"));
57
+ // Parse header
58
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.length);
59
+ const vertexCount = view.getUint32(0, true);
60
+ const segmentCount = view.getUint32(4, true);
61
+ const regionCount = view.getUint32(8, true);
62
+ console.log(` Header: vertices=${vertexCount}, segments=${segmentCount}, regions=${regionCount}`);
63
+ // Parse vertices (16 bytes each)
64
+ console.log("\n Vertices:");
65
+ const VERTEX_STRIDE = 16;
66
+ let offset = 12;
67
+ for (let i = 0; i < vertexCount && offset + 16 <= bytes.length; i++) {
68
+ const x = view.getFloat32(offset, true);
69
+ const y = view.getFloat32(offset + 4, true);
70
+ const flags = view.getUint32(offset + 8, true);
71
+ const extra = view.getUint32(offset + 12, true);
72
+ console.log(` [${i}] x=${x.toFixed(4)}, y=${y.toFixed(4)}, flags=${flags}, extra=${extra}`);
73
+ offset += VERTEX_STRIDE;
74
+ }
75
+ // Parse segments (24 bytes each: startIdx(4), cp1 data(12), endIdx(4), cp2 data(4))
76
+ console.log("\n Segments (end at offset +16):");
77
+ const SEGMENT_STRIDE = 24;
78
+ for (let i = 0; i < segmentCount && offset + SEGMENT_STRIDE <= bytes.length; i++) {
79
+ const start = view.getUint32(offset, true);
80
+ const end = view.getUint32(offset + 16, true);
81
+ console.log(` [${i}] ${start} -> ${end}`);
82
+ offset += SEGMENT_STRIDE;
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ inspect().catch(console.error);
90
+ //# sourceMappingURL=inspect-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-frame.js","sourceRoot":"","sources":["../src/inspect-frame.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG1F,MAAM,SAAS,GAAG,8CAA8C,CAAC;AAEjE,KAAK,UAAU,OAAO;IACpB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC7C,SAAS,SAAS,CAAC,IAAa;QAC9B,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAqB,EAAE,CAAC;gBAC/C,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,CAAC;IAEf,sCAAsC;IACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,QAA8C,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAG,KAAK,CAAC,QAAsB,EAAE,MAAM,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAA6C,CAAC;IAElF,KAAK,MAAM,KAAK,IAAK,KAAK,CAAC,QAAsB,IAAI,EAAE,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,KAA2C,CAAC;QACxD,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAiD,CAAC;QACzE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAE3E,iCAAiC;YACjC,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,CAAC;gBAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBAEtE,eAAe;oBACf,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,sBAAsB,WAAW,cAAc,YAAY,aAAa,WAAW,EAAE,CAAC,CAAC;oBAEnG,iCAAiC;oBACjC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC7B,MAAM,aAAa,GAAG,EAAE,CAAC;oBACzB,IAAI,MAAM,GAAG,EAAE,CAAC;oBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,IAAI,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpE,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;wBAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,KAAK,EAAE,CAAC,CAAC;wBAC/F,MAAM,IAAI,aAAa,CAAC;oBAC1B,CAAC;oBAED,oFAAoF;oBACpF,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;oBACjD,MAAM,cAAc,GAAG,EAAE,CAAC;oBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,IAAI,MAAM,GAAG,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACjF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;wBAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,OAAO,GAAG,EAAE,CAAC,CAAC;wBAC7C,MAAM,IAAI,cAAc,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Inspect specific nodes from a .fig file to understand vector data structure
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=inspect-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-nodes.d.ts","sourceRoot":"","sources":["../src/inspect-nodes.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Inspect specific nodes from a .fig file to understand vector data structure
3
+ */
4
+ import { readFigFile } from "./parser/index.js";
5
+ import { parseCanvasFig, formatGUID } from "./parser/kiwi-parser.js";
6
+ const FILE_PATH = "/Users/billy/Downloads/AutoDevice (Copy).fig";
7
+ // Original frames and their vector children
8
+ const NODE_IDS = [
9
+ "457:1694", // Frame containing vectors
10
+ "457:1695", // Vector child
11
+ "457:1696", // Vector child
12
+ "457:1697", // Vector child
13
+ "457:1610", // Frame containing vectors
14
+ "457:1611", // Vector child
15
+ "457:1612", // Vector child
16
+ "457:1681", // Logo frame
17
+ "457:1682", // Vector child (rotated)
18
+ "457:1683", // Vector child (rotated)
19
+ "457:1684", // Vector child (rotated)
20
+ ];
21
+ async function inspectNodes() {
22
+ console.log("Reading .fig file...");
23
+ const archive = await readFigFile(FILE_PATH);
24
+ console.log("Parsing canvas.fig...");
25
+ const canvasData = archive.canvasFig;
26
+ if (!canvasData) {
27
+ throw new Error("No canvas.fig found");
28
+ }
29
+ const parsed = parseCanvasFig(canvasData);
30
+ const nodeChanges = parsed.message["nodeChanges"];
31
+ const blobs = parsed.message["blobs"];
32
+ console.log(`Found ${nodeChanges?.length ?? 0} nodeChanges`);
33
+ console.log(`Found ${blobs?.length ?? 0} blobs\n`);
34
+ // Build a map of nodes by GUID
35
+ const nodeMap = new Map();
36
+ for (const change of nodeChanges) {
37
+ if (!change || typeof change !== "object")
38
+ continue;
39
+ const obj = change;
40
+ const guid = obj["guid"];
41
+ if (guid) {
42
+ const key = `${guid.sessionID}:${guid.localID}`;
43
+ nodeMap.set(key, obj);
44
+ }
45
+ }
46
+ // Inspect each requested node
47
+ for (const nodeId of NODE_IDS) {
48
+ console.log("=".repeat(80));
49
+ console.log(`NODE: ${nodeId}`);
50
+ console.log("=".repeat(80));
51
+ const node = nodeMap.get(nodeId);
52
+ if (!node) {
53
+ console.log("NOT FOUND\n");
54
+ continue;
55
+ }
56
+ // Basic info
57
+ console.log(`Type: ${node["type"]}`);
58
+ console.log(`Name: ${node["name"]}`);
59
+ console.log(`Visible: ${node["visible"]}`);
60
+ // Size and transform
61
+ const size = node["size"];
62
+ console.log(`\nSize: ${size ? `${size.x} x ${size.y}` : "N/A"}`);
63
+ const transform = node["transform"];
64
+ if (transform) {
65
+ console.log(`Transform:`);
66
+ console.log(` m00=${transform.m00?.toFixed(4)}, m01=${transform.m01?.toFixed(4)}, m02=${transform.m02?.toFixed(4)}`);
67
+ console.log(` m10=${transform.m10?.toFixed(4)}, m11=${transform.m11?.toFixed(4)}, m12=${transform.m12?.toFixed(4)}`);
68
+ }
69
+ // Fills and strokes
70
+ const fillPaints = node["fillPaints"];
71
+ const strokePaints = node["strokePaints"];
72
+ console.log(`\nFillPaints: ${fillPaints?.length ?? 0}`);
73
+ if (fillPaints && fillPaints.length > 0) {
74
+ for (let i = 0; i < Math.min(fillPaints.length, 3); i++) {
75
+ const paint = fillPaints[i];
76
+ console.log(` [${i}] type=${paint?.type}, visible=${paint?.visible}, blendMode=${paint?.blendMode}`);
77
+ if (paint?.color) {
78
+ const c = paint.color;
79
+ console.log(` color: rgba(${(c.r ?? 0) * 255}, ${(c.g ?? 0) * 255}, ${(c.b ?? 0) * 255}, ${c.a ?? 1})`);
80
+ }
81
+ }
82
+ }
83
+ console.log(`StrokePaints: ${strokePaints?.length ?? 0}`);
84
+ if (strokePaints && strokePaints.length > 0) {
85
+ for (let i = 0; i < Math.min(strokePaints.length, 3); i++) {
86
+ const paint = strokePaints[i];
87
+ console.log(` [${i}] type=${paint?.type}, visible=${paint?.visible}, blendMode=${paint?.blendMode}`);
88
+ if (paint?.color) {
89
+ const c = paint.color;
90
+ console.log(` color: rgba(${(c.r ?? 0) * 255}, ${(c.g ?? 0) * 255}, ${(c.b ?? 0) * 255}, ${c.a ?? 1})`);
91
+ }
92
+ }
93
+ }
94
+ // Stroke properties
95
+ console.log(`\nStroke Properties:`);
96
+ console.log(` strokeWeight: ${node["strokeWeight"]}`);
97
+ console.log(` strokeCap: ${node["strokeCap"]}`);
98
+ console.log(` strokeJoin: ${node["strokeJoin"]}`);
99
+ console.log(` strokeAlign: ${node["strokeAlign"]}`);
100
+ console.log(` miterLimit: ${node["miterLimit"]}`);
101
+ console.log(` strokeDashes: ${JSON.stringify(node["strokeDashes"])}`);
102
+ // Vector geometry
103
+ const fillGeometry = node["fillGeometry"];
104
+ const strokeGeometry = node["strokeGeometry"];
105
+ console.log(`\nFillGeometry: ${fillGeometry?.length ?? 0} paths`);
106
+ if (fillGeometry && fillGeometry.length > 0) {
107
+ for (let i = 0; i < Math.min(fillGeometry.length, 3); i++) {
108
+ const path = fillGeometry[i];
109
+ console.log(` [${i}] commandsBlob=${path?.commandsBlob}, windingRule=${path?.windingRule}`);
110
+ if (path?.commands) {
111
+ const cmds = path.commands;
112
+ console.log(` commands array: ${cmds.length} entries`);
113
+ console.log(` first few: ${JSON.stringify(cmds.slice(0, 10))}`);
114
+ }
115
+ if (typeof path?.commandsBlob === "number" && blobs) {
116
+ const blobData = blobs[path.commandsBlob];
117
+ console.log(` blob size: ${blobData?.bytes?.length ?? 0} bytes`);
118
+ }
119
+ }
120
+ }
121
+ console.log(`StrokeGeometry: ${strokeGeometry?.length ?? 0} paths`);
122
+ if (strokeGeometry && strokeGeometry.length > 0) {
123
+ for (let i = 0; i < Math.min(strokeGeometry.length, 3); i++) {
124
+ const path = strokeGeometry[i];
125
+ console.log(` [${i}] commandsBlob=${path?.commandsBlob}, windingRule=${path?.windingRule}`);
126
+ if (path?.commands) {
127
+ const cmds = path.commands;
128
+ console.log(` commands array: ${cmds.length} entries`);
129
+ console.log(` first few: ${JSON.stringify(cmds.slice(0, 10))}`);
130
+ }
131
+ if (typeof path?.commandsBlob === "number" && blobs) {
132
+ const blobData = blobs[path.commandsBlob];
133
+ console.log(` blob size: ${blobData?.bytes?.length ?? 0} bytes`);
134
+ }
135
+ }
136
+ }
137
+ // Vector data
138
+ const vectorData = node["vectorData"];
139
+ console.log(`\nVectorData:`);
140
+ if (vectorData) {
141
+ console.log(` vectorNetworkBlob: ${vectorData.vectorNetworkBlob}`);
142
+ console.log(` normalizedSize: ${JSON.stringify(vectorData.normalizedSize)}`);
143
+ if (typeof vectorData.vectorNetworkBlob === "number" && blobs) {
144
+ const blobData = blobs[vectorData.vectorNetworkBlob];
145
+ console.log(` blob size: ${blobData?.bytes?.length ?? 0} bytes`);
146
+ // Show first few bytes
147
+ if (blobData?.bytes) {
148
+ const first20 = Array.from(blobData.bytes.slice(0, 20));
149
+ console.log(` first 20 bytes: [${first20.join(", ")}]`);
150
+ }
151
+ }
152
+ }
153
+ else {
154
+ console.log(" N/A");
155
+ }
156
+ // Children
157
+ const parentIndex = node["parentIndex"];
158
+ console.log(`\nParent: ${parentIndex?.guid ? formatGUID(parentIndex.guid) : "N/A"}`);
159
+ // Find children
160
+ const children = [];
161
+ for (const [key, n] of nodeMap) {
162
+ const pi = n["parentIndex"];
163
+ if (pi?.guid) {
164
+ const parentKey = `${pi.guid.sessionID}:${pi.guid.localID}`;
165
+ if (parentKey === nodeId) {
166
+ children.push(key);
167
+ }
168
+ }
169
+ }
170
+ console.log(`Children: ${children.length}`);
171
+ if (children.length > 0 && children.length <= 10) {
172
+ for (const childId of children) {
173
+ const child = nodeMap.get(childId);
174
+ console.log(` ${childId}: ${child?.["type"]} - "${child?.["name"]}"`);
175
+ }
176
+ }
177
+ // Other interesting fields
178
+ console.log(`\nOther Fields:`);
179
+ const interestingFields = [
180
+ "opacity", "blendMode", "isMask", "clipsContent",
181
+ "cornerRadius", "rectangleCornerRadii",
182
+ "handleMirroring", "rotation"
183
+ ];
184
+ for (const field of interestingFields) {
185
+ if (node[field] !== undefined) {
186
+ console.log(` ${field}: ${JSON.stringify(node[field])}`);
187
+ }
188
+ }
189
+ console.log("\n");
190
+ }
191
+ }
192
+ inspectNodes().catch(console.error);
193
+ //# sourceMappingURL=inspect-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-nodes.js","sourceRoot":"","sources":["../src/inspect-nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * MCP Server for .fig file parsing
3
+ *
4
+ * Provides tools for:
5
+ * - Parsing .fig files
6
+ * - Extracting document structure
7
+ * - Finding nodes by type/name
8
+ * - Getting layout information
9
+ * - Inspecting schema/raw data
10
+ */
11
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
12
+ import type { FigNode } from "../parser/types.js";
13
+ export declare function normalizeImageHash(value: unknown): string | null;
14
+ export declare function detectImageFormat(data: Uint8Array): string;
15
+ /**
16
+ * Get or parse a fig file with caching
17
+ */
18
+ export declare function getOrParseFigFile(filePath: string): Promise<{
19
+ document: FigNode;
20
+ meta: Record<string, unknown>;
21
+ images: Map<string, Uint8Array>;
22
+ thumbnail?: Uint8Array;
23
+ version: number;
24
+ nodeIdIndex: Map<string, FigNode>;
25
+ nodePathIndex: Map<string, string>;
26
+ blobs?: Array<{
27
+ bytes: Uint8Array;
28
+ }>;
29
+ }>;
30
+ /**
31
+ * Create and configure the MCP server
32
+ */
33
+ export declare function createServer(): Server;
34
+ /**
35
+ * Start the MCP server
36
+ */
37
+ export declare function startServer(): Promise<void>;
38
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA0BnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAoDlD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA0BhE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAU1D;AAkJD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;cArO1C,OAAO;UACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;YACrB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;gBACnB,UAAU;aACb,MAAM;iBACF,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;mBAClB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;YAC1B,KAAK,CAAC;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;GA+OvC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA+kDrC;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjD"}