@mcp-consultant-tools/figma 20.0.0 → 23.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 (34) hide show
  1. package/build/FigmaService.d.ts +18 -1
  2. package/build/FigmaService.d.ts.map +1 -1
  3. package/build/FigmaService.js +58 -4
  4. package/build/FigmaService.js.map +1 -1
  5. package/build/figma/extractors/built-in.d.ts +2 -1
  6. package/build/figma/extractors/built-in.d.ts.map +1 -1
  7. package/build/figma/extractors/built-in.js +4 -1
  8. package/build/figma/extractors/built-in.js.map +1 -1
  9. package/build/figma/extractors/connector-extractor.d.ts +34 -0
  10. package/build/figma/extractors/connector-extractor.d.ts.map +1 -0
  11. package/build/figma/extractors/connector-extractor.js +111 -0
  12. package/build/figma/extractors/connector-extractor.js.map +1 -0
  13. package/build/figma/extractors/node-walker.d.ts.map +1 -1
  14. package/build/figma/extractors/node-walker.js +10 -0
  15. package/build/figma/extractors/node-walker.js.map +1 -1
  16. package/build/figma/extractors/types.d.ts +33 -0
  17. package/build/figma/extractors/types.d.ts.map +1 -1
  18. package/build/figma/transformers/component-simplifier.d.ts +43 -0
  19. package/build/figma/transformers/component-simplifier.d.ts.map +1 -0
  20. package/build/figma/transformers/component-simplifier.js +127 -0
  21. package/build/figma/transformers/component-simplifier.js.map +1 -0
  22. package/build/figma/transformers/style-stripper.d.ts +33 -0
  23. package/build/figma/transformers/style-stripper.d.ts.map +1 -0
  24. package/build/figma/transformers/style-stripper.js +94 -0
  25. package/build/figma/transformers/style-stripper.js.map +1 -0
  26. package/build/figma/transformers/table-to-markdown.d.ts +27 -0
  27. package/build/figma/transformers/table-to-markdown.d.ts.map +1 -0
  28. package/build/figma/transformers/table-to-markdown.js +123 -0
  29. package/build/figma/transformers/table-to-markdown.js.map +1 -0
  30. package/build/index.d.ts +1 -1
  31. package/build/index.d.ts.map +1 -1
  32. package/build/index.js +17 -3
  33. package/build/index.js.map +1 -1
  34. package/package.json +1 -1
@@ -4,6 +4,22 @@ export interface FigmaConfig {
4
4
  oauthToken?: string;
5
5
  useOAuth: boolean;
6
6
  }
7
+ /**
8
+ * Options for controlling what data is extracted and how it's formatted.
9
+ * All options default to false to preserve backward compatibility.
10
+ */
11
+ export interface FigmaDataOptions {
12
+ /** Remove all styling info (fills, strokes, effects, textStyle, opacity, borderRadius) */
13
+ excludeStyles?: boolean;
14
+ /** Convert TABLE nodes to markdown format */
15
+ tablesToMarkdown?: boolean;
16
+ /** Simplify CONNECTOR nodes to just endpoints (startNodeId, endNodeId) */
17
+ simplifyConnectors?: boolean;
18
+ /** Keep componentId and componentProperties but remove visual styling from INSTANCE nodes */
19
+ simplifyComponentInstances?: boolean;
20
+ /** Override which extractors to use: "layout", "text", "visuals", "component" */
21
+ extractors?: ("layout" | "text" | "visuals" | "component")[];
22
+ }
7
23
  /**
8
24
  * Service for interacting with the Figma API
9
25
  * Follows the service pattern established by PowerPlatformService
@@ -40,8 +56,9 @@ export declare class FigmaService {
40
56
  * @param fileKey - The Figma file key from the URL
41
57
  * @param nodeId - Optional specific node ID(s) to fetch (format: "1:10" or "1:10;2:20")
42
58
  * @param depth - Optional tree traversal depth limit
59
+ * @param dataOptions - Optional optimization options for reducing output size
43
60
  * @returns Simplified design data ready for AI consumption
44
61
  */
45
- getFigmaData(fileKey: string, nodeId?: string, depth?: number): Promise<SimplifiedDesign>;
62
+ getFigmaData(fileKey: string, nodeId?: string, depth?: number, dataOptions?: FigmaDataOptions): Promise<SimplifiedDesign>;
46
63
  }
47
64
  //# sourceMappingURL=FigmaService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FigmaService.d.ts","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,6BAA6B,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;gBAE1C,MAAM,EAAE,WAAW;IAiB/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;YACW,OAAO;IAgBrB;;;;OAIG;YACW,YAAY;IAQ1B;;;;;OAKG;YACW,aAAa;IAc3B;;;;;;;;OAQG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;CA8B7B"}
1
+ {"version":3,"file":"FigmaService.d.ts","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,6BAA6B,CAAC;AAInG,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6FAA6F;IAC7F,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,iFAAiF;IACjF,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC;CAC9D;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;gBAE1C,MAAM,EAAE,WAAW;IAiB/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;YACW,OAAO;IAgBrB;;;;OAIG;YACW,YAAY;IAQ1B;;;;;OAKG;YACW,aAAa;IAc3B;;;;;;;;;OASG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;CAyF7B"}
@@ -1,6 +1,8 @@
1
1
  import { fetchWithRetry } from "./figma/utils/fetch-with-retry.js";
2
2
  import { simplifyRawFigmaObject } from "./figma/extractors/design-extractor.js";
3
- import { allExtractors } from "./figma/extractors/built-in.js";
3
+ import { allExtractors, layoutExtractor, textExtractor, visualsExtractor, componentExtractor, connectorExtractor, simplifyAllConnectors, } from "./figma/extractors/built-in.js";
4
+ import { stripStylesFromDesign } from "./figma/transformers/style-stripper.js";
5
+ import { simplifyAllComponentInstances } from "./figma/transformers/component-simplifier.js";
4
6
  /**
5
7
  * Service for interacting with the Figma API
6
8
  * Follows the service pattern established by PowerPlatformService
@@ -78,10 +80,19 @@ export class FigmaService {
78
80
  * @param fileKey - The Figma file key from the URL
79
81
  * @param nodeId - Optional specific node ID(s) to fetch (format: "1:10" or "1:10;2:20")
80
82
  * @param depth - Optional tree traversal depth limit
83
+ * @param dataOptions - Optional optimization options for reducing output size
81
84
  * @returns Simplified design data ready for AI consumption
82
85
  */
83
- async getFigmaData(fileKey, nodeId, depth) {
86
+ async getFigmaData(fileKey, nodeId, depth, dataOptions) {
84
87
  try {
88
+ // Apply defaults - optimizations ON by default for reduced context usage
89
+ const effectiveOptions = {
90
+ excludeStyles: dataOptions?.excludeStyles ?? true,
91
+ tablesToMarkdown: dataOptions?.tablesToMarkdown ?? true,
92
+ simplifyConnectors: dataOptions?.simplifyConnectors ?? true,
93
+ simplifyComponentInstances: dataOptions?.simplifyComponentInstances ?? true,
94
+ extractors: dataOptions?.extractors,
95
+ };
85
96
  // Fetch raw data from Figma API
86
97
  let rawData;
87
98
  if (nodeId) {
@@ -92,11 +103,54 @@ export class FigmaService {
92
103
  else {
93
104
  rawData = await this.getFigmaFile(fileKey, depth);
94
105
  }
106
+ // Build extractor array based on options
107
+ let extractorList = [...allExtractors];
108
+ if (effectiveOptions.extractors) {
109
+ // Use custom extractor selection
110
+ extractorList = [];
111
+ if (effectiveOptions.extractors.includes("layout")) {
112
+ extractorList.push(layoutExtractor);
113
+ }
114
+ if (effectiveOptions.extractors.includes("text")) {
115
+ extractorList.push(textExtractor);
116
+ }
117
+ if (effectiveOptions.extractors.includes("visuals")) {
118
+ extractorList.push(visualsExtractor);
119
+ }
120
+ if (effectiveOptions.extractors.includes("component")) {
121
+ extractorList.push(componentExtractor);
122
+ }
123
+ }
124
+ // Always add connector extractor for relationship data
125
+ extractorList.push(connectorExtractor);
95
126
  // Transform raw Figma data into simplified format using extractors
96
- const options = {
127
+ const traversalOptions = {
97
128
  maxDepth: depth,
129
+ optimization: {
130
+ tablesToMarkdown: effectiveOptions.tablesToMarkdown,
131
+ // Note: simplifyConnectors and simplifyComponentInstances are applied post-processing
132
+ },
98
133
  };
99
- const simplifiedData = simplifyRawFigmaObject(rawData, allExtractors, options);
134
+ let simplifiedData = simplifyRawFigmaObject(rawData, extractorList, traversalOptions);
135
+ // Apply post-processing transformations
136
+ // Order matters: apply connector simplification before style stripping
137
+ // so connector endpoints are preserved
138
+ if (effectiveOptions.simplifyConnectors) {
139
+ simplifiedData = {
140
+ ...simplifiedData,
141
+ nodes: simplifyAllConnectors(simplifiedData.nodes),
142
+ };
143
+ }
144
+ if (effectiveOptions.simplifyComponentInstances) {
145
+ simplifiedData = {
146
+ ...simplifiedData,
147
+ nodes: simplifyAllComponentInstances(simplifiedData.nodes),
148
+ };
149
+ }
150
+ // Apply style stripping last - it removes styling from all nodes
151
+ if (effectiveOptions.excludeStyles) {
152
+ simplifiedData = stripStylesFromDesign(simplifiedData);
153
+ }
100
154
  return simplifiedData;
101
155
  }
102
156
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"FigmaService.js","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FigmaService.js","sourceRoot":"","sources":["../src/FigmaService.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,9 @@ export declare const visualsExtractor: ExtractorFn;
16
16
  * Extracts component-related properties from INSTANCE nodes.
17
17
  */
18
18
  export declare const componentExtractor: ExtractorFn;
19
+ export { connectorExtractor, simplifiedConnectorExtractor, simplifyConnectorNode, simplifyAllConnectors, } from "./connector-extractor.js";
19
20
  /**
20
- * All extractors - replicates the current parseNode behavior.
21
+ * All extractors - includes connector extraction for relationship data.
21
22
  */
22
23
  export declare const allExtractors: ExtractorFn[];
23
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAIX,cAAc,EACf,MAAM,YAAY,CAAC;AAYpB,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBtE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,WAK7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAoB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WA0D9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,aAAa,eAAyE,CAAC;AAEpG;;GAEG;AACH,eAAO,MAAM,aAAa,eAAmC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,WAAW,eAAkB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,eAAqB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,UAAU,eAAoB,CAAC;AAI5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAO7B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,EAAE,CAgBlB"}
1
+ {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAIX,cAAc,EACf,MAAM,YAAY,CAAC;AAYpB,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsBtE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,WAK7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAoB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WA0D9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;AAuBF,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAIlC;;GAEG;AACH,eAAO,MAAM,aAAa,eAAyE,CAAC;AAEpG;;GAEG;AACH,eAAO,MAAM,aAAa,eAAmC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,WAAW,eAAkB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,eAAqB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,UAAU,eAAoB,CAAC;AAI5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAO7B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,EAAE,CAgBlB"}
@@ -146,9 +146,12 @@ function getStyleName(node, context, keys) {
146
146
  }
147
147
  return undefined;
148
148
  }
149
+ // -------------------- CONNECTOR EXTRACTOR --------------------
150
+ // Re-export connector extractors from dedicated module
151
+ export { connectorExtractor, simplifiedConnectorExtractor, simplifyConnectorNode, simplifyAllConnectors, } from "./connector-extractor.js";
149
152
  // -------------------- CONVENIENCE COMBINATIONS --------------------
150
153
  /**
151
- * All extractors - replicates the current parseNode behavior.
154
+ * All extractors - includes connector extraction for relationship data.
152
155
  */
153
156
  export const allExtractors = [layoutExtractor, textExtractor, visualsExtractor, componentExtractor];
154
157
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/figma/extractors/built-in.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { ExtractorFn, SimplifiedNode } from "./types.js";
2
+ /**
3
+ * Extracts connector-related properties from CONNECTOR nodes.
4
+ * Preserves connection endpoints which are critical for understanding relationships.
5
+ *
6
+ * This is the full connector extractor - it includes visual properties.
7
+ */
8
+ export declare const connectorExtractor: ExtractorFn;
9
+ /**
10
+ * Simplified connector extractor for optimization mode.
11
+ * Only extracts connection endpoints and text labels, ignoring all visual properties.
12
+ *
13
+ * Use this when simplifyConnectors is true to reduce token usage while
14
+ * preserving the essential relationship data.
15
+ *
16
+ * Output: { id, name, type: "CONNECTOR", startNodeId?, endNodeId?, text? }
17
+ */
18
+ export declare const simplifiedConnectorExtractor: ExtractorFn;
19
+ /**
20
+ * Post-processor to simplify connector nodes in the final output.
21
+ * This is an alternative approach that runs after all extraction is complete.
22
+ *
23
+ * @param node - The SimplifiedNode to process
24
+ * @returns Simplified connector or original node
25
+ */
26
+ export declare function simplifyConnectorNode(node: SimplifiedNode): SimplifiedNode;
27
+ /**
28
+ * Apply connector simplification to all nodes in an array.
29
+ *
30
+ * @param nodes - Array of SimplifiedNodes to process
31
+ * @returns Array with simplified connector nodes
32
+ */
33
+ export declare function simplifyAllConnectors(nodes: SimplifiedNode[]): SimplifiedNode[];
34
+ //# sourceMappingURL=connector-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-extractor.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/connector-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAY9D;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAiC1C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAiC1E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAE/E"}
@@ -0,0 +1,111 @@
1
+ import { hasValue } from "../utils/identity.js";
2
+ /**
3
+ * Extracts connector-related properties from CONNECTOR nodes.
4
+ * Preserves connection endpoints which are critical for understanding relationships.
5
+ *
6
+ * This is the full connector extractor - it includes visual properties.
7
+ */
8
+ export const connectorExtractor = (node, result, _context) => {
9
+ if (node.type !== "CONNECTOR")
10
+ return;
11
+ // Extract connection endpoints - these contain the connected node IDs
12
+ if (hasValue("connectorStart", node)) {
13
+ const start = node.connectorStart;
14
+ if (start.endpointNodeId) {
15
+ result.startNodeId = start.endpointNodeId;
16
+ }
17
+ }
18
+ if (hasValue("connectorEnd", node)) {
19
+ const end = node.connectorEnd;
20
+ if (end.endpointNodeId) {
21
+ result.endNodeId = end.endpointNodeId;
22
+ }
23
+ }
24
+ };
25
+ /**
26
+ * Simplified connector extractor for optimization mode.
27
+ * Only extracts connection endpoints and text labels, ignoring all visual properties.
28
+ *
29
+ * Use this when simplifyConnectors is true to reduce token usage while
30
+ * preserving the essential relationship data.
31
+ *
32
+ * Output: { id, name, type: "CONNECTOR", startNodeId?, endNodeId?, text? }
33
+ */
34
+ export const simplifiedConnectorExtractor = (node, result, _context) => {
35
+ if (node.type !== "CONNECTOR")
36
+ return;
37
+ // Clear any visual properties that may have been added by other extractors
38
+ // This ensures the simplified output is clean
39
+ delete result.fills;
40
+ delete result.strokes;
41
+ delete result.strokeWeight;
42
+ delete result.strokeDashes;
43
+ delete result.strokeWeights;
44
+ delete result.effects;
45
+ delete result.layout;
46
+ delete result.opacity;
47
+ delete result.borderRadius;
48
+ delete result.textStyle;
49
+ // Extract only connection endpoints
50
+ if (hasValue("connectorStart", node)) {
51
+ const start = node.connectorStart;
52
+ if (start.endpointNodeId) {
53
+ result.startNodeId = start.endpointNodeId;
54
+ }
55
+ }
56
+ if (hasValue("connectorEnd", node)) {
57
+ const end = node.connectorEnd;
58
+ if (end.endpointNodeId) {
59
+ result.endNodeId = end.endpointNodeId;
60
+ }
61
+ }
62
+ // Keep text label if present (extracted by textExtractor)
63
+ // result.text is preserved as it's critical for understanding the connector's purpose
64
+ };
65
+ /**
66
+ * Post-processor to simplify connector nodes in the final output.
67
+ * This is an alternative approach that runs after all extraction is complete.
68
+ *
69
+ * @param node - The SimplifiedNode to process
70
+ * @returns Simplified connector or original node
71
+ */
72
+ export function simplifyConnectorNode(node) {
73
+ if (node.type !== "CONNECTOR") {
74
+ // Recursively process children
75
+ if (node.children) {
76
+ return {
77
+ ...node,
78
+ children: node.children.map(simplifyConnectorNode),
79
+ };
80
+ }
81
+ return node;
82
+ }
83
+ // For CONNECTOR nodes, keep only essential properties
84
+ const simplified = {
85
+ id: node.id,
86
+ name: node.name,
87
+ type: node.type,
88
+ };
89
+ // Preserve connection endpoints
90
+ if (node.startNodeId) {
91
+ simplified.startNodeId = node.startNodeId;
92
+ }
93
+ if (node.endNodeId) {
94
+ simplified.endNodeId = node.endNodeId;
95
+ }
96
+ // Preserve text label if present
97
+ if (node.text) {
98
+ simplified.text = node.text;
99
+ }
100
+ return simplified;
101
+ }
102
+ /**
103
+ * Apply connector simplification to all nodes in an array.
104
+ *
105
+ * @param nodes - Array of SimplifiedNodes to process
106
+ * @returns Array with simplified connector nodes
107
+ */
108
+ export function simplifyAllConnectors(nodes) {
109
+ return nodes.map(simplifyConnectorNode);
110
+ }
111
+ //# sourceMappingURL=connector-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-extractor.js","sourceRoot":"","sources":["../../../src/figma/extractors/connector-extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-walker.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAChB,UAAU,EACV,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,WAAW,EAAE,EACzB,OAAO,GAAE,gBAAqB,EAC9B,UAAU,GAAE,UAA2B,GACtC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAerD"}
1
+ {"version":3,"file":"node-walker.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAChB,UAAU,EACV,cAAc,EAEf,MAAM,YAAY,CAAC;AAGpB;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,WAAW,EAAE,EACzB,OAAO,GAAE,gBAAqB,EAC9B,UAAU,GAAE,UAA2B,GACtC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAerD"}
@@ -1,5 +1,6 @@
1
1
  import { isVisible } from "../utils/common.js";
2
2
  import { hasValue } from "../utils/identity.js";
3
+ import { isTableNode, convertTableToMarkdown } from "../transformers/table-to-markdown.js";
3
4
  /**
4
5
  * Extract data from Figma nodes using a flexible, single-pass approach.
5
6
  *
@@ -30,6 +31,15 @@ function processNodeWithExtractors(node, extractors, context, options) {
30
31
  if (!shouldProcessNode(node, options)) {
31
32
  return null;
32
33
  }
34
+ // Handle TABLE nodes with markdown conversion if enabled
35
+ if (options.optimization?.tablesToMarkdown && isTableNode(node)) {
36
+ const markdownTable = convertTableToMarkdown(node);
37
+ if (markdownTable) {
38
+ // Return the markdown representation instead of the full node tree
39
+ return markdownTable;
40
+ }
41
+ // If conversion fails, fall through to normal processing
42
+ }
33
43
  // Always include base metadata
34
44
  const result = {
35
45
  id: node.id,
@@ -1 +1 @@
1
- {"version":3,"file":"node-walker.js","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAShD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA0B,EAC1B,UAAyB,EACzB,UAA4B,EAAE,EAC9B,aAAyB,EAAE,MAAM,EAAE,EAAE,EAAE;IAEvC,MAAM,OAAO,GAAqB;QAChC,UAAU;QACV,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK;SACzB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC5E,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE3D,OAAO;QACL,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,IAAuB,EACvB,UAAyB,EACzB,OAAyB,EACzB,OAAyB;IAEzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAmB;QAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;KACvD,CAAC;IAEF,qDAAqD;IACrD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,8BAA8B;IAC9B,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,YAAY,GAAqB;YACrC,GAAG,OAAO;YACV,YAAY,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC;YACtC,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,0DAA0D;QAC1D,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;iBAC3B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;iBACpD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;iBACnF,MAAM,CAAC,CAAC,KAAK,EAA2B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;YAE9D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,4EAA4E;gBAC5E,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa;oBAC7C,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;oBAC/C,CAAC,CAAC,QAAQ,CAAC;gBAEb,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAuB,EAAE,OAAyB;IAC3E,uBAAuB;IACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,IAAuB,EACvB,OAAyB,EACzB,OAAyB;IAEzB,oBAAoB;IACpB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"node-walker.js","sourceRoot":"","sources":["../../../src/figma/extractors/node-walker.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,20 @@ export type StyleTypes = SimplifiedTextStyle | SimplifiedFill[] | SimplifiedLayo
8
8
  export type GlobalVars = {
9
9
  styles: Record<string, StyleTypes>;
10
10
  };
11
+ /**
12
+ * Optimization options for reducing output size and context window usage.
13
+ * All options default to false to preserve backward compatibility.
14
+ */
15
+ export interface OptimizationOptions {
16
+ /** Remove all styling info (fills, strokes, effects, textStyle, opacity, borderRadius) */
17
+ excludeStyles?: boolean;
18
+ /** Convert TABLE nodes to markdown format */
19
+ tablesToMarkdown?: boolean;
20
+ /** Simplify CONNECTOR nodes to just endpoints (startNodeId, endNodeId) */
21
+ simplifyConnectors?: boolean;
22
+ /** Keep componentId and componentProperties but remove visual styling from INSTANCE nodes */
23
+ simplifyComponentInstances?: boolean;
24
+ }
11
25
  export interface TraversalContext {
12
26
  globalVars: GlobalVars & {
13
27
  extraStyles?: Record<string, Style>;
@@ -28,6 +42,8 @@ export interface TraversalOptions {
28
42
  * @returns Children to include (return empty array to omit children)
29
43
  */
30
44
  afterChildren?: (node: FigmaDocumentNode, result: SimplifiedNode, children: SimplifiedNode[]) => SimplifiedNode[];
45
+ /** Optimization options for reducing output size */
46
+ optimization?: OptimizationOptions;
31
47
  }
32
48
  /**
33
49
  * An extractor function that can modify a SimplifiedNode during traversal.
@@ -62,8 +78,25 @@ export interface SimplifiedNode {
62
78
  layout?: string;
63
79
  componentId?: string;
64
80
  componentProperties?: ComponentProperties[];
81
+ startNodeId?: string;
82
+ endNodeId?: string;
65
83
  children?: SimplifiedNode[];
66
84
  }
85
+ /**
86
+ * Simplified representation of a markdown table (used when tablesToMarkdown is true).
87
+ * Replaces the nested TABLE node structure with a compact markdown string.
88
+ */
89
+ export interface MarkdownTableNode {
90
+ id: string;
91
+ name: string;
92
+ type: "TABLE_MARKDOWN";
93
+ /** Markdown representation of the table */
94
+ markdown: string;
95
+ /** Original row count for reference */
96
+ rowCount: number;
97
+ /** Original column count for reference */
98
+ columnCount: number;
99
+ }
67
100
  export interface BoundingBox {
68
101
  x: number;
69
102
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/figma/extractors/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { SimplifiedNode } from "../extractors/types.js";
2
+ /**
3
+ * Simplify an INSTANCE node to keep only semantic data.
4
+ * Preserves componentId, componentProperties, and text content.
5
+ * Removes all visual styling properties.
6
+ *
7
+ * This is specifically designed for ADO User Story components where:
8
+ * - componentProperties contains the ADO links and implementation details
9
+ * - Text content may contain important labels or descriptions
10
+ * - Visual styling is not relevant for understanding the architecture
11
+ *
12
+ * Non-INSTANCE nodes are passed through with recursive child processing.
13
+ *
14
+ * @param node - The node to simplify
15
+ * @returns Simplified node for INSTANCE, or original with processed children
16
+ */
17
+ export declare function simplifyComponentInstance(node: SimplifiedNode): SimplifiedNode;
18
+ /**
19
+ * Apply component instance simplification to all nodes in an array.
20
+ *
21
+ * @param nodes - Array of SimplifiedNodes to process
22
+ * @returns Array with simplified component instances
23
+ */
24
+ export declare function simplifyAllComponentInstances(nodes: SimplifiedNode[]): SimplifiedNode[];
25
+ /**
26
+ * Extract all text content from an INSTANCE node and its children.
27
+ * Useful for getting a flat text representation of a component.
28
+ *
29
+ * @param node - The node to extract text from
30
+ * @returns All text content concatenated
31
+ */
32
+ export declare function extractAllTextFromInstance(node: SimplifiedNode): string;
33
+ /**
34
+ * Create an ultra-simplified version of an INSTANCE node.
35
+ * Returns just the componentProperties and flattened text content.
36
+ * Use this for maximum context window savings when you only need
37
+ * the ADO links and text content.
38
+ *
39
+ * @param node - The INSTANCE node to flatten
40
+ * @returns Ultra-simplified node
41
+ */
42
+ export declare function flattenComponentInstance(node: SimplifiedNode): SimplifiedNode;
43
+ //# sourceMappingURL=component-simplifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-simplifier.d.ts","sourceRoot":"","sources":["../../../src/figma/transformers/component-simplifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CA+C9E;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAiBvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAmC7E"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Simplify an INSTANCE node to keep only semantic data.
3
+ * Preserves componentId, componentProperties, and text content.
4
+ * Removes all visual styling properties.
5
+ *
6
+ * This is specifically designed for ADO User Story components where:
7
+ * - componentProperties contains the ADO links and implementation details
8
+ * - Text content may contain important labels or descriptions
9
+ * - Visual styling is not relevant for understanding the architecture
10
+ *
11
+ * Non-INSTANCE nodes are passed through with recursive child processing.
12
+ *
13
+ * @param node - The node to simplify
14
+ * @returns Simplified node for INSTANCE, or original with processed children
15
+ */
16
+ export function simplifyComponentInstance(node) {
17
+ if (node.type !== "INSTANCE") {
18
+ // For non-INSTANCE nodes, just recursively process children
19
+ if (node.children) {
20
+ return {
21
+ ...node,
22
+ children: node.children.map(simplifyComponentInstance),
23
+ };
24
+ }
25
+ return node;
26
+ }
27
+ // For INSTANCE nodes, keep only essential properties
28
+ const simplified = {
29
+ id: node.id,
30
+ name: node.name,
31
+ type: node.type,
32
+ };
33
+ // Always preserve componentId - this links to the component definition
34
+ if (node.componentId !== undefined) {
35
+ simplified.componentId = node.componentId;
36
+ }
37
+ // Always preserve componentProperties - this is where ADO links and other
38
+ // critical data lives
39
+ if (node.componentProperties !== undefined) {
40
+ simplified.componentProperties = node.componentProperties;
41
+ }
42
+ // Preserve text content if present
43
+ if (node.text !== undefined) {
44
+ simplified.text = node.text;
45
+ }
46
+ // Recursively simplify children - they may contain nested text or instances
47
+ if (node.children) {
48
+ // For INSTANCE children, we extract text content but simplify structure
49
+ const simplifiedChildren = node.children.map(simplifyComponentInstance);
50
+ // Only include children if there are any after simplification
51
+ if (simplifiedChildren.length > 0) {
52
+ simplified.children = simplifiedChildren;
53
+ }
54
+ }
55
+ return simplified;
56
+ }
57
+ /**
58
+ * Apply component instance simplification to all nodes in an array.
59
+ *
60
+ * @param nodes - Array of SimplifiedNodes to process
61
+ * @returns Array with simplified component instances
62
+ */
63
+ export function simplifyAllComponentInstances(nodes) {
64
+ return nodes.map(simplifyComponentInstance);
65
+ }
66
+ /**
67
+ * Extract all text content from an INSTANCE node and its children.
68
+ * Useful for getting a flat text representation of a component.
69
+ *
70
+ * @param node - The node to extract text from
71
+ * @returns All text content concatenated
72
+ */
73
+ export function extractAllTextFromInstance(node) {
74
+ const texts = [];
75
+ if (node.text) {
76
+ texts.push(node.text);
77
+ }
78
+ if (node.children) {
79
+ for (const child of node.children) {
80
+ const childText = extractAllTextFromInstance(child);
81
+ if (childText) {
82
+ texts.push(childText);
83
+ }
84
+ }
85
+ }
86
+ return texts.join(" ").trim();
87
+ }
88
+ /**
89
+ * Create an ultra-simplified version of an INSTANCE node.
90
+ * Returns just the componentProperties and flattened text content.
91
+ * Use this for maximum context window savings when you only need
92
+ * the ADO links and text content.
93
+ *
94
+ * @param node - The INSTANCE node to flatten
95
+ * @returns Ultra-simplified node
96
+ */
97
+ export function flattenComponentInstance(node) {
98
+ if (node.type !== "INSTANCE") {
99
+ // Recursively process children for non-INSTANCE nodes
100
+ if (node.children) {
101
+ return {
102
+ ...node,
103
+ children: node.children.map(flattenComponentInstance),
104
+ };
105
+ }
106
+ return node;
107
+ }
108
+ const flattened = {
109
+ id: node.id,
110
+ name: node.name,
111
+ type: node.type,
112
+ };
113
+ if (node.componentId !== undefined) {
114
+ flattened.componentId = node.componentId;
115
+ }
116
+ if (node.componentProperties !== undefined) {
117
+ flattened.componentProperties = node.componentProperties;
118
+ }
119
+ // Flatten all nested text into a single text field
120
+ const allText = extractAllTextFromInstance(node);
121
+ if (allText) {
122
+ flattened.text = allText;
123
+ }
124
+ // No children - text is flattened into the text field
125
+ return flattened;
126
+ }
127
+ //# sourceMappingURL=component-simplifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-simplifier.js","sourceRoot":"","sources":["../../../src/figma/transformers/component-simplifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { SimplifiedNode, SimplifiedDesign } from "../extractors/types.js";
2
+ /**
3
+ * Remove all style-related properties from a single node.
4
+ * Recursively processes children.
5
+ *
6
+ * This preserves:
7
+ * - Node identity (id, name, type)
8
+ * - Text content (text)
9
+ * - Component data (componentId, componentProperties)
10
+ * - Connector endpoints (startNodeId, endNodeId)
11
+ * - Hierarchy (children)
12
+ *
13
+ * @param node - The node to strip styles from
14
+ * @returns A new node without style properties
15
+ */
16
+ export declare function stripStylesFromNode(node: SimplifiedNode): SimplifiedNode;
17
+ /**
18
+ * Remove all style-related data from the entire design.
19
+ * Clears globalVars.styles and strips styles from all nodes.
20
+ *
21
+ * @param design - The full SimplifiedDesign to process
22
+ * @returns A new design without style data
23
+ */
24
+ export declare function stripStylesFromDesign(design: SimplifiedDesign): SimplifiedDesign;
25
+ /**
26
+ * Check if a node has any style properties.
27
+ * Useful for debugging or selective processing.
28
+ *
29
+ * @param node - The node to check
30
+ * @returns true if the node has any style properties
31
+ */
32
+ export declare function hasStyleProperties(node: SimplifiedNode): boolean;
33
+ //# sourceMappingURL=style-stripper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-stripper.d.ts","sourceRoot":"","sources":["../../../src/figma/transformers/style-stripper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA2B/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAmCxE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAMhF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEhE"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Properties to remove when excludeStyles is true.
3
+ * These are all visual styling properties that don't affect the semantic structure.
4
+ *
5
+ * Note: We preserve the following critical properties:
6
+ * - id, name, type (node identity)
7
+ * - text (content)
8
+ * - componentId, componentProperties (component relationships)
9
+ * - startNodeId, endNodeId (connector relationships)
10
+ * - children (hierarchy)
11
+ */
12
+ const STYLE_PROPERTIES = [
13
+ "fills",
14
+ "strokes",
15
+ "strokeWeight",
16
+ "strokeDashes",
17
+ "strokeWeights",
18
+ "effects",
19
+ "textStyle",
20
+ "opacity",
21
+ "borderRadius",
22
+ "layout",
23
+ "styles", // Named style references
24
+ ];
25
+ /**
26
+ * Remove all style-related properties from a single node.
27
+ * Recursively processes children.
28
+ *
29
+ * This preserves:
30
+ * - Node identity (id, name, type)
31
+ * - Text content (text)
32
+ * - Component data (componentId, componentProperties)
33
+ * - Connector endpoints (startNodeId, endNodeId)
34
+ * - Hierarchy (children)
35
+ *
36
+ * @param node - The node to strip styles from
37
+ * @returns A new node without style properties
38
+ */
39
+ export function stripStylesFromNode(node) {
40
+ // Create a shallow copy
41
+ const stripped = {
42
+ id: node.id,
43
+ name: node.name,
44
+ type: node.type,
45
+ };
46
+ // Preserve text content
47
+ if (node.text !== undefined) {
48
+ stripped.text = node.text;
49
+ }
50
+ // Preserve component data (critical for ADO User Story components)
51
+ if (node.componentId !== undefined) {
52
+ stripped.componentId = node.componentId;
53
+ }
54
+ if (node.componentProperties !== undefined) {
55
+ stripped.componentProperties = node.componentProperties;
56
+ }
57
+ // Preserve connector endpoints
58
+ if (node.startNodeId !== undefined) {
59
+ stripped.startNodeId = node.startNodeId;
60
+ }
61
+ if (node.endNodeId !== undefined) {
62
+ stripped.endNodeId = node.endNodeId;
63
+ }
64
+ // Recursively strip children
65
+ if (node.children) {
66
+ stripped.children = node.children.map(stripStylesFromNode);
67
+ }
68
+ return stripped;
69
+ }
70
+ /**
71
+ * Remove all style-related data from the entire design.
72
+ * Clears globalVars.styles and strips styles from all nodes.
73
+ *
74
+ * @param design - The full SimplifiedDesign to process
75
+ * @returns A new design without style data
76
+ */
77
+ export function stripStylesFromDesign(design) {
78
+ return {
79
+ ...design,
80
+ nodes: design.nodes.map(stripStylesFromNode),
81
+ globalVars: { styles: {} }, // Empty styles object
82
+ };
83
+ }
84
+ /**
85
+ * Check if a node has any style properties.
86
+ * Useful for debugging or selective processing.
87
+ *
88
+ * @param node - The node to check
89
+ * @returns true if the node has any style properties
90
+ */
91
+ export function hasStyleProperties(node) {
92
+ return STYLE_PROPERTIES.some((prop) => node[prop] !== undefined);
93
+ }
94
+ //# sourceMappingURL=style-stripper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-stripper.js","sourceRoot":"","sources":["../../../src/figma/transformers/style-stripper.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAA6B;IACjD,OAAO;IACP,SAAS;IACT,cAAc;IACd,cAAc;IACd,eAAe;IACf,SAAS;IACT,WAAW;IACX,SAAS;IACT,cAAc;IACd,QAAQ;IACR,QAAQ,EAAE,yBAAyB;CACpC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,wBAAwB;IACxB,MAAM,QAAQ,GAAmB;QAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IAEF,wBAAwB;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,mEAAmE;IACnE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC3C,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAC1D,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACtC,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,OAAO;QACL,GAAG,MAAM;QACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC5C,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,sBAAsB;KACnD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Node as FigmaDocumentNode } from "@figma/rest-api-spec";
2
+ import type { MarkdownTableNode } from "../extractors/types.js";
3
+ /**
4
+ * Detect if a node is a native Figma TABLE node.
5
+ * TABLE nodes have a specific type and contain TABLE_CELL children.
6
+ */
7
+ export declare function isTableNode(node: FigmaDocumentNode): boolean;
8
+ /**
9
+ * Convert a Figma TABLE node to a markdown table.
10
+ *
11
+ * TABLE nodes in Figma have a flat list of TABLE_CELL children.
12
+ * We reconstruct the grid by grouping cells by their Y position (rows)
13
+ * and sorting within each row by X position (columns).
14
+ *
15
+ * @param node - The TABLE node to convert
16
+ * @returns MarkdownTableNode or null if conversion fails
17
+ */
18
+ export declare function convertTableToMarkdown(node: FigmaDocumentNode): MarkdownTableNode | null;
19
+ /**
20
+ * Check if a node should be converted to markdown table.
21
+ * Currently only handles native TABLE nodes.
22
+ *
23
+ * Note: We intentionally don't detect "table-like" FRAME structures
24
+ * to avoid false positives. Only native TABLE nodes are converted.
25
+ */
26
+ export declare function shouldConvertToMarkdown(node: FigmaDocumentNode): boolean;
27
+ //# sourceMappingURL=table-to-markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-to-markdown.d.ts","sourceRoot":"","sources":["../../../src/figma/transformers/table-to-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAE5D;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,IAAI,CA6FxF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAExE"}
@@ -0,0 +1,123 @@
1
+ import { hasValue } from "../utils/identity.js";
2
+ /**
3
+ * Detect if a node is a native Figma TABLE node.
4
+ * TABLE nodes have a specific type and contain TABLE_CELL children.
5
+ */
6
+ export function isTableNode(node) {
7
+ return node.type === "TABLE";
8
+ }
9
+ /**
10
+ * Recursively extract text content from a node tree.
11
+ * Searches through children to find all TEXT nodes and concatenates their content.
12
+ */
13
+ function extractTextFromNode(node) {
14
+ // Direct text node
15
+ if (node.type === "TEXT" && hasValue("characters", node)) {
16
+ return node.characters || "";
17
+ }
18
+ // Search children recursively
19
+ if (hasValue("children", node) && Array.isArray(node.children)) {
20
+ const texts = node.children.map((child) => extractTextFromNode(child));
21
+ return texts.filter((t) => t.length > 0).join(" ").trim();
22
+ }
23
+ return "";
24
+ }
25
+ /**
26
+ * Convert a Figma TABLE node to a markdown table.
27
+ *
28
+ * TABLE nodes in Figma have a flat list of TABLE_CELL children.
29
+ * We reconstruct the grid by grouping cells by their Y position (rows)
30
+ * and sorting within each row by X position (columns).
31
+ *
32
+ * @param node - The TABLE node to convert
33
+ * @returns MarkdownTableNode or null if conversion fails
34
+ */
35
+ export function convertTableToMarkdown(node) {
36
+ if (!hasValue("children", node) || !Array.isArray(node.children)) {
37
+ return null;
38
+ }
39
+ // Filter to TABLE_CELL nodes only
40
+ const cells = node.children.filter((c) => c.type === "TABLE_CELL");
41
+ if (cells.length === 0) {
42
+ return null;
43
+ }
44
+ // Extract positioned cells with their bounding boxes
45
+ const positionedCells = [];
46
+ for (const cell of cells) {
47
+ if (!hasValue("absoluteBoundingBox", cell)) {
48
+ continue;
49
+ }
50
+ const bbox = cell.absoluteBoundingBox;
51
+ const text = extractTextFromNode(cell);
52
+ positionedCells.push({
53
+ x: bbox.x,
54
+ y: Math.round(bbox.y), // Round Y to handle small floating point differences
55
+ text,
56
+ });
57
+ }
58
+ if (positionedCells.length === 0) {
59
+ return null;
60
+ }
61
+ // Group cells by Y position to form rows
62
+ const cellsByRow = new Map();
63
+ for (const cell of positionedCells) {
64
+ if (!cellsByRow.has(cell.y)) {
65
+ cellsByRow.set(cell.y, []);
66
+ }
67
+ cellsByRow.get(cell.y).push(cell);
68
+ }
69
+ // Sort rows by Y position, then cells within each row by X position
70
+ const sortedYs = Array.from(cellsByRow.keys()).sort((a, b) => a - b);
71
+ const rows = [];
72
+ for (const y of sortedYs) {
73
+ const rowCells = cellsByRow.get(y).sort((a, b) => a.x - b.x);
74
+ rows.push(rowCells.map((c) => c.text));
75
+ }
76
+ if (rows.length === 0) {
77
+ return null;
78
+ }
79
+ // Build markdown table
80
+ const columnCount = Math.max(...rows.map((r) => r.length));
81
+ const lines = [];
82
+ // Helper to escape pipe characters and format cell content
83
+ const formatCell = (text) => {
84
+ return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
85
+ };
86
+ // Header row (first row)
87
+ const headerRow = rows[0] || [];
88
+ // Pad to column count
89
+ while (headerRow.length < columnCount) {
90
+ headerRow.push("");
91
+ }
92
+ lines.push("| " + headerRow.map(formatCell).join(" | ") + " |");
93
+ // Separator row
94
+ lines.push("| " + Array(columnCount).fill("---").join(" | ") + " |");
95
+ // Data rows
96
+ for (let i = 1; i < rows.length; i++) {
97
+ const row = [...rows[i]];
98
+ // Pad row to match column count
99
+ while (row.length < columnCount) {
100
+ row.push("");
101
+ }
102
+ lines.push("| " + row.map(formatCell).join(" | ") + " |");
103
+ }
104
+ return {
105
+ id: node.id,
106
+ name: node.name,
107
+ type: "TABLE_MARKDOWN",
108
+ markdown: lines.join("\n"),
109
+ rowCount: rows.length,
110
+ columnCount,
111
+ };
112
+ }
113
+ /**
114
+ * Check if a node should be converted to markdown table.
115
+ * Currently only handles native TABLE nodes.
116
+ *
117
+ * Note: We intentionally don't detect "table-like" FRAME structures
118
+ * to avoid false positives. Only native TABLE nodes are converted.
119
+ */
120
+ export function shouldConvertToMarkdown(node) {
121
+ return isTableNode(node);
122
+ }
123
+ //# sourceMappingURL=table-to-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-to-markdown.js","sourceRoot":"","sources":["../../../src/figma/transformers/table-to-markdown.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -16,5 +16,5 @@ export declare function registerFigmaTools(server: any, figmaService?: FigmaServ
16
16
  * Export service class for direct usage
17
17
  */
18
18
  export { FigmaService } from "./FigmaService.js";
19
- export type { FigmaConfig } from "./FigmaService.js";
19
+ export type { FigmaConfig, FigmaDataOptions } from "./FigmaService.js";
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,QAmE1E;AAED;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,QAqG1E;AAED;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
package/build/index.js CHANGED
@@ -39,14 +39,28 @@ export function registerFigmaTools(server, figmaService) {
39
39
  return service;
40
40
  }
41
41
  // Tool: get-figma-data
42
- server.tool("get-figma-data", "Get comprehensive Figma design data including layout, text, styles, and components. Fetches from Figma API and transforms into simplified, AI-friendly format. Can fetch entire files or specific nodes. Automatically deduplicates styles.", {
42
+ server.tool("get-figma-data", "Get comprehensive Figma design data including layout, text, styles, and components. Fetches from Figma API and transforms into simplified, AI-friendly format. Can fetch entire files or specific nodes. Automatically deduplicates styles. Supports optimization options to reduce context window usage.", {
43
43
  fileKey: z.string().describe("Figma file key (alphanumeric string from URL). Example: From 'https://figma.com/file/ABC123/MyFile', use 'ABC123'"),
44
44
  nodeId: z.string().optional().describe("Optional specific node ID(s) to fetch. Format: '1234:5678' or multiple '1:10;2:20'. If omitted, fetches entire file."),
45
45
  depth: z.number().optional().describe("Optional tree traversal depth limit. Useful for large files. Example: depth=3 stops after 3 levels of children."),
46
- }, async ({ fileKey, nodeId, depth }) => {
46
+ // Optimization options for reducing context window usage
47
+ excludeStyles: z.boolean().optional().describe("Remove all styling info (fills, strokes, effects, textStyle, opacity, borderRadius) and globalVars.styles. Useful for understanding architecture without visual details. Default: true. Set to false for full styling data."),
48
+ tablesToMarkdown: z.boolean().optional().describe("Convert TABLE nodes to markdown table format instead of nested node structures. Significantly reduces token usage for tables. Default: true. Set to false for full node tree."),
49
+ simplifyConnectors: z.boolean().optional().describe("Simplify CONNECTOR nodes to just connection endpoints (startNodeId, endNodeId, text). Preserves relationship data while removing visual properties. Default: true. Set to false for full connector data."),
50
+ simplifyComponentInstances: z.boolean().optional().describe("Keep componentId and componentProperties on INSTANCE nodes but remove visual styling. Ideal for ADO User Story components. Default: true. Set to false for full instance data."),
51
+ extractors: z.array(z.enum(["layout", "text", "visuals", "component"])).optional().describe("Override which extractors to use. Options: layout, text, visuals, component. Default uses all. Example: ['text', 'component'] for content-focused extraction."),
52
+ }, async ({ fileKey, nodeId, depth, excludeStyles, tablesToMarkdown, simplifyConnectors, simplifyComponentInstances, extractors }) => {
47
53
  try {
48
54
  const figmaService = getFigmaService();
49
- const result = await figmaService.getFigmaData(fileKey, nodeId, depth);
55
+ // Build data options from parameters
56
+ const dataOptions = {
57
+ excludeStyles,
58
+ tablesToMarkdown,
59
+ simplifyConnectors,
60
+ simplifyComponentInstances,
61
+ extractors,
62
+ };
63
+ const result = await figmaService.getFigmaData(fileKey, nodeId, depth, dataOptions);
50
64
  return createSuccessResponse(result);
51
65
  }
52
66
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-consultant-tools/figma",
3
- "version": "20.0.0",
3
+ "version": "23.0.0",
4
4
  "description": "MCP server for Figma integration - design data extraction and transformation",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",