@cat-factory/integrations 0.134.1 → 0.136.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.
- package/dist/modules/documents/FigmaProvider.d.ts +28 -4
- package/dist/modules/documents/FigmaProvider.d.ts.map +1 -1
- package/dist/modules/documents/FigmaProvider.js +192 -34
- package/dist/modules/documents/FigmaProvider.js.map +1 -1
- package/dist/modules/documents/ZeplinProvider.d.ts +5 -0
- package/dist/modules/documents/ZeplinProvider.d.ts.map +1 -1
- package/dist/modules/documents/ZeplinProvider.js +14 -6
- package/dist/modules/documents/ZeplinProvider.js.map +1 -1
- package/dist/modules/documents/design.logic.d.ts +43 -4
- package/dist/modules/documents/design.logic.d.ts.map +1 -1
- package/dist/modules/documents/design.logic.js +0 -0
- package/dist/modules/documents/design.logic.js.map +1 -1
- package/dist/modules/documents/figma.logic.d.ts +143 -5
- package/dist/modules/documents/figma.logic.d.ts.map +1 -1
- package/dist/modules/documents/figma.logic.js +467 -49
- package/dist/modules/documents/figma.logic.js.map +1 -1
- package/dist/modules/documents/zeplin.logic.d.ts +15 -0
- package/dist/modules/documents/zeplin.logic.d.ts.map +1 -1
- package/dist/modules/documents/zeplin.logic.js +27 -0
- package/dist/modules/documents/zeplin.logic.js.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts +7 -1
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.js.map +1 -1
- package/dist/modules/kubernetes/KubernetesRunnerTransport.d.ts +12 -2
- package/dist/modules/kubernetes/KubernetesRunnerTransport.d.ts.map +1 -1
- package/dist/modules/kubernetes/KubernetesRunnerTransport.js +45 -1
- package/dist/modules/kubernetes/KubernetesRunnerTransport.js.map +1 -1
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.d.ts +12 -2
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.d.ts.map +1 -1
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.js +27 -1
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.js.map +1 -1
- package/dist/modules/runners/HttpRunnerPoolProvider.d.ts +3 -3
- package/dist/modules/runners/HttpRunnerPoolProvider.d.ts.map +1 -1
- package/dist/modules/runners/HttpRunnerPoolProvider.js +22 -3
- package/dist/modules/runners/HttpRunnerPoolProvider.js.map +1 -1
- package/dist/modules/runners/RunnerPoolTransport.d.ts +15 -2
- package/dist/modules/runners/RunnerPoolTransport.d.ts.map +1 -1
- package/dist/modules/runners/RunnerPoolTransport.js +22 -3
- package/dist/modules/runners/RunnerPoolTransport.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dimensionMeta, } from './design.logic.js';
|
|
1
|
+
import { capped, dimensionMeta, sortDesignTokens, } from './design.logic.js';
|
|
2
2
|
import { assertHostPinned } from './http.js';
|
|
3
3
|
// Figma-specific pure logic, kept out of the provider shell so it is unit-testable
|
|
4
4
|
// without a live workspace: parsing/canonicalising a file+node ref out of user input,
|
|
@@ -119,50 +119,208 @@ export function figmaUrlFor(externalId) {
|
|
|
119
119
|
return base;
|
|
120
120
|
return `${base}?node-id=${nodeId.replace(/:/g, '-')}`;
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
// Every cap below is sized against the ~256 KB linked-context corpus budget
|
|
123
|
+
// (`context_documents_over_budget`), which is what decides whether this document reaches the
|
|
124
|
+
// agent at all. Worst case, roughly: layout 1,500 lines × ~60 B ≈ 90 KB, text 600 × ~50 B
|
|
125
|
+
// ≈ 30 KB, tokens 250 × ~50 B ≈ 13 KB, components 150 × ~80 B ≈ 12 KB, so a maximal import
|
|
126
|
+
// lands near 145 KB and leaves headroom for the rest of the corpus. RAISING ONE MEANS
|
|
127
|
+
// REDOING THAT ARITHMETIC, not just picking a bigger number.
|
|
128
|
+
/**
|
|
129
|
+
* Levels of descendants rendered below a frame's own children. Exported because the provider
|
|
130
|
+
* derives the API `depth=` it requests from it: the two must not drift, or the tree is cut by
|
|
131
|
+
* the fetch at a depth the renderer never states.
|
|
132
|
+
*/
|
|
133
|
+
export const MAX_TREE_DEPTH = 6;
|
|
134
|
+
/** Nodes rendered for one frame. */
|
|
135
|
+
const MAX_FRAME_NODES = 400;
|
|
136
|
+
/** Nodes rendered across the WHOLE import: a whole-file import fans out over many frames. */
|
|
137
|
+
const MAX_IMPORT_NODES = 1500;
|
|
138
|
+
/** Text lines collected for one frame, and across the whole import. */
|
|
139
|
+
const MAX_FRAME_TEXT = 200;
|
|
140
|
+
const MAX_IMPORT_TEXT = 600;
|
|
141
|
+
/** Top-level frames a whole-file import fetches as subtrees. */
|
|
142
|
+
export const MAX_FILE_FRAMES = 12;
|
|
143
|
+
/** Distinct variants listed on one component's note before the rest are summarised away. */
|
|
144
|
+
const MAX_VARIANTS_PER_COMPONENT = 6;
|
|
145
|
+
/** Components listed, ranked by how often the design instantiates them. */
|
|
146
|
+
const MAX_COMPONENTS = 150;
|
|
147
|
+
/** Token lines listed, whichever source produced them. */
|
|
148
|
+
const MAX_TOKENS = 250;
|
|
149
|
+
/** Page children worth fetching as a frame subtree; a stray vector or sticky is not one. */
|
|
150
|
+
const FRAME_TYPES = new Set(['FRAME', 'COMPONENT', 'COMPONENT_SET', 'SECTION', 'GROUP']);
|
|
124
151
|
function dimensionLabel(node) {
|
|
125
152
|
return dimensionMeta(node.absoluteBoundingBox?.width, node.absoluteBoundingBox?.height) ?? '';
|
|
126
153
|
}
|
|
154
|
+
function round(value) {
|
|
155
|
+
return Math.round(value * 100) / 100;
|
|
156
|
+
}
|
|
157
|
+
// ---- Styling facts ---------------------------------------------------------
|
|
158
|
+
/** Figma's 0–1 colour channels → `#rrggbb`, with an alpha qualifier below full opacity. */
|
|
159
|
+
export function figmaColorHex(color, paintOpacity) {
|
|
160
|
+
if (!color)
|
|
161
|
+
return null;
|
|
162
|
+
const to2 = (n) => Math.max(0, Math.min(255, Math.round((n ?? 0) * 255)))
|
|
163
|
+
.toString(16)
|
|
164
|
+
.padStart(2, '0');
|
|
165
|
+
const hex = `#${to2(color.r)}${to2(color.g)}${to2(color.b)}`;
|
|
166
|
+
const alpha = (color.a ?? 1) * (paintOpacity ?? 1);
|
|
167
|
+
return alpha < 1 ? `${hex} (a=${alpha.toFixed(2)})` : hex;
|
|
168
|
+
}
|
|
169
|
+
/** The first visible SOLID paint's hex, or null when the node has none we can name. */
|
|
170
|
+
function firstSolidHex(paints) {
|
|
171
|
+
for (const paint of paints ?? []) {
|
|
172
|
+
if (paint.visible === false || paint.type !== 'SOLID')
|
|
173
|
+
continue;
|
|
174
|
+
const hex = figmaColorHex(paint.color, paint.opacity);
|
|
175
|
+
if (hex)
|
|
176
|
+
return hex;
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
/** `Inter 16/600 lh 24`: the typography an implementer would otherwise have to guess. */
|
|
181
|
+
function typographyLabel(style) {
|
|
182
|
+
if (!style)
|
|
183
|
+
return null;
|
|
184
|
+
const parts = [];
|
|
185
|
+
if (style.fontFamily?.trim())
|
|
186
|
+
parts.push(style.fontFamily.trim());
|
|
187
|
+
if (style.fontSize != null) {
|
|
188
|
+
parts.push(style.fontWeight != null
|
|
189
|
+
? `${round(style.fontSize)}/${style.fontWeight}`
|
|
190
|
+
: `${round(style.fontSize)}px`);
|
|
191
|
+
}
|
|
192
|
+
else if (style.fontWeight != null) {
|
|
193
|
+
parts.push(`w${style.fontWeight}`);
|
|
194
|
+
}
|
|
195
|
+
if (style.lineHeightPx != null)
|
|
196
|
+
parts.push(`lh ${round(style.lineHeightPx)}`);
|
|
197
|
+
return parts.length ? parts.join(' ') : null;
|
|
198
|
+
}
|
|
199
|
+
/** `padding 16` when uniform, else the CSS-ordered `padding 16/24/16/24` (top right bottom left). */
|
|
200
|
+
function paddingLabel(node) {
|
|
201
|
+
const sides = [node.paddingTop, node.paddingRight, node.paddingBottom, node.paddingLeft];
|
|
202
|
+
if (sides.every((s) => s == null))
|
|
203
|
+
return null;
|
|
204
|
+
const values = sides.map((s) => round(s ?? 0));
|
|
205
|
+
if (values.every((v) => v === values[0])) {
|
|
206
|
+
return values[0] === 0 ? null : `padding ${values[0]}`;
|
|
207
|
+
}
|
|
208
|
+
return `padding ${values.join('/')}`;
|
|
209
|
+
}
|
|
210
|
+
function cornerRadiusLabel(node) {
|
|
211
|
+
const corners = node.rectangleCornerRadii;
|
|
212
|
+
if (corners?.length === 4 && corners.some((c) => c !== corners[0])) {
|
|
213
|
+
return `radius ${corners.map((c) => round(c)).join('/')}`;
|
|
214
|
+
}
|
|
215
|
+
const radius = node.cornerRadius ?? corners?.[0];
|
|
216
|
+
return radius ? `radius ${round(radius)}` : null;
|
|
217
|
+
}
|
|
218
|
+
function autoLayoutLabel(node) {
|
|
219
|
+
const mode = node.layoutMode;
|
|
220
|
+
if (!mode || mode === 'NONE')
|
|
221
|
+
return null;
|
|
222
|
+
const parts = [`auto-layout ${mode.toLowerCase()}`];
|
|
223
|
+
if (node.itemSpacing)
|
|
224
|
+
parts.push(`gap ${round(node.itemSpacing)}`);
|
|
225
|
+
const padding = paddingLabel(node);
|
|
226
|
+
if (padding)
|
|
227
|
+
parts.push(padding);
|
|
228
|
+
return parts.join(' ');
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The styling clause appended to a node's layout line. Everything here is a fact the agent
|
|
232
|
+
* would otherwise invent: the colour, the type ramp, the radius, and the auto-layout that
|
|
233
|
+
* decides whether the implementation is a flex row or a stack.
|
|
234
|
+
*/
|
|
235
|
+
export function figmaStylingFacts(node) {
|
|
236
|
+
const facts = [];
|
|
237
|
+
const fill = firstSolidHex(node.fills);
|
|
238
|
+
if (fill)
|
|
239
|
+
facts.push(`fill ${fill}`);
|
|
240
|
+
const stroke = firstSolidHex(node.strokes);
|
|
241
|
+
if (stroke)
|
|
242
|
+
facts.push(`stroke ${stroke}`);
|
|
243
|
+
const typography = typographyLabel(node.style);
|
|
244
|
+
if (typography)
|
|
245
|
+
facts.push(typography);
|
|
246
|
+
const radius = cornerRadiusLabel(node);
|
|
247
|
+
if (radius)
|
|
248
|
+
facts.push(radius);
|
|
249
|
+
const layout = autoLayoutLabel(node);
|
|
250
|
+
if (layout)
|
|
251
|
+
facts.push(layout);
|
|
252
|
+
return facts;
|
|
253
|
+
}
|
|
127
254
|
/**
|
|
128
|
-
* Render a node and its descendants as an indented bullet tree (name
|
|
129
|
-
*
|
|
130
|
-
*
|
|
255
|
+
* Render a node and its descendants as an indented bullet tree (name, type, size, styling),
|
|
256
|
+
* bounded in depth and in nodes so a huge frame can't blow up the context file.
|
|
257
|
+
*
|
|
258
|
+
* Returns false only on EXHAUSTION (see {@link LayoutCut}), which the caller must propagate:
|
|
259
|
+
* a `true` return means siblings may still render, even when this branch was cut by depth.
|
|
260
|
+
* The `(truncated)` marker is pushed by the exhaustion guard itself, at the depth the walk
|
|
261
|
+
* actually ran out, so unwinding ancestors add nothing and one cut leaves ONE marker.
|
|
131
262
|
*/
|
|
132
|
-
function renderLayout(node, depth,
|
|
133
|
-
if (depth > MAX_TREE_DEPTH || counter.n >= MAX_TREE_NODES)
|
|
134
|
-
return;
|
|
135
|
-
counter.n++;
|
|
263
|
+
function renderLayout(node, depth, walk, lines) {
|
|
136
264
|
const indent = ' '.repeat(depth);
|
|
265
|
+
if (walk.budget.nodes <= 0) {
|
|
266
|
+
walk.cuts.add('import-nodes');
|
|
267
|
+
lines.push(`${indent}- … (truncated)`);
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
if (walk.frameNodes <= 0) {
|
|
271
|
+
walk.cuts.add('frame-nodes');
|
|
272
|
+
lines.push(`${indent}- … (truncated)`);
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
walk.frameNodes--;
|
|
276
|
+
walk.budget.nodes--;
|
|
137
277
|
const name = node.name?.trim() || '(unnamed)';
|
|
138
278
|
const type = node.type ? ` _${node.type}_` : '';
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
279
|
+
const facts = figmaStylingFacts(node);
|
|
280
|
+
const styling = facts.length ? ` [${facts.join('; ')}]` : '';
|
|
281
|
+
lines.push(`${indent}- ${name}${type}${dimensionLabel(node)}${styling}`);
|
|
282
|
+
const children = node.children ?? [];
|
|
283
|
+
if (!children.length)
|
|
284
|
+
return true;
|
|
285
|
+
if (depth >= MAX_TREE_DEPTH) {
|
|
286
|
+
// The design continues below what we render. Naming the count is what separates "the cap
|
|
287
|
+
// stopped here" from "this node is a leaf", which an omitted line renders identically.
|
|
288
|
+
walk.cuts.add('depth');
|
|
289
|
+
const label = children.length === 1 ? 'node' : 'nodes';
|
|
290
|
+
lines.push(`${indent} - … (${children.length} deeper ${label} not shown)`);
|
|
291
|
+
return true;
|
|
146
292
|
}
|
|
293
|
+
for (const child of children) {
|
|
294
|
+
if (!renderLayout(child, depth + 1, walk, lines))
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
return true;
|
|
147
298
|
}
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
299
|
+
/**
|
|
300
|
+
* Collect every TEXT node's `characters`, in document order, bounded per frame and import.
|
|
301
|
+
* Returns false when a cap stopped it, because an empty `Text content` section is DROPPED by
|
|
302
|
+
* the renderer: without this the frames whose text the import budget refused read exactly
|
|
303
|
+
* like frames that contain no text.
|
|
304
|
+
*/
|
|
305
|
+
function collectText(node, walk, out) {
|
|
306
|
+
if (walk.budget.text <= 0) {
|
|
307
|
+
walk.cut = 'import-text';
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
if (walk.frameLines <= 0) {
|
|
311
|
+
walk.cut = 'frame-text';
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
if (node.type === 'TEXT' && node.characters?.trim()) {
|
|
153
315
|
out.push(node.characters.trim());
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
/** Collect the distinct design-system components a node tree instantiates. */
|
|
158
|
-
function collectComponents(node, components, out) {
|
|
159
|
-
if (node.type === 'INSTANCE') {
|
|
160
|
-
const name = (node.componentId && components[node.componentId]?.name) || node.name?.trim();
|
|
161
|
-
if (name)
|
|
162
|
-
out.add(name);
|
|
316
|
+
walk.frameLines--;
|
|
317
|
+
walk.budget.text--;
|
|
163
318
|
}
|
|
164
|
-
for (const child of node.children ?? [])
|
|
165
|
-
|
|
319
|
+
for (const child of node.children ?? []) {
|
|
320
|
+
if (!collectText(child, walk, out))
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
return true;
|
|
166
324
|
}
|
|
167
325
|
/**
|
|
168
326
|
* Map the fetched Figma frames into the source-neutral {@link DesignBlock}s: one block
|
|
@@ -171,31 +329,191 @@ function collectComponents(node, components, out) {
|
|
|
171
329
|
* shared global `### Components` section rather than per-frame.
|
|
172
330
|
*/
|
|
173
331
|
export function figmaBlocks(roots) {
|
|
174
|
-
|
|
332
|
+
// One budget for the whole import: a whole-file import renders many frames, so a
|
|
333
|
+
// per-frame cap alone bounds nothing about the size of the context file it produces.
|
|
334
|
+
const budget = { nodes: MAX_IMPORT_NODES, text: MAX_IMPORT_TEXT };
|
|
335
|
+
// Frames counted per CAP, not one "was cut" tally: each cap is a different fact about the
|
|
336
|
+
// import and asks a different thing of the reader.
|
|
337
|
+
const cutFrames = new Map();
|
|
338
|
+
const count = (cut) => cutFrames.set(cut, (cutFrames.get(cut) ?? 0) + 1);
|
|
339
|
+
const blocks = roots.map((root) => {
|
|
340
|
+
// One frame counter shared across every top-level child, so the per-frame cap bounds the
|
|
341
|
+
// whole frame rather than each subtree: a wide frame can't pass it one branch at a time.
|
|
342
|
+
const walk = { frameNodes: MAX_FRAME_NODES, budget, cuts: new Set() };
|
|
175
343
|
const layout = [];
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
344
|
+
for (const child of root.children ?? []) {
|
|
345
|
+
if (!renderLayout(child, 0, walk, layout))
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
for (const cut of walk.cuts)
|
|
349
|
+
count(cut);
|
|
350
|
+
const textWalk = { frameLines: MAX_FRAME_TEXT, budget };
|
|
181
351
|
const text = [];
|
|
182
|
-
collectText(root, text);
|
|
352
|
+
collectText(root, textWalk, text);
|
|
353
|
+
const lines = text.map((t) => `- ${t.replace(/\s+/g, ' ')}`);
|
|
354
|
+
if (textWalk.cut) {
|
|
355
|
+
count(textWalk.cut);
|
|
356
|
+
// Keeps the section non-empty, so a refused budget can never render as "no text here".
|
|
357
|
+
lines.push('- … (text truncated)');
|
|
358
|
+
}
|
|
183
359
|
return {
|
|
184
360
|
title: root.name?.trim() || '(unnamed frame)',
|
|
185
361
|
meta: dimensionLabel(root),
|
|
186
362
|
sections: [
|
|
187
363
|
{ heading: 'Layout', lines: layout },
|
|
188
|
-
{ heading: 'Text content', lines
|
|
364
|
+
{ heading: 'Text content', lines },
|
|
189
365
|
],
|
|
190
366
|
};
|
|
191
367
|
});
|
|
368
|
+
return { blocks, notes: capNotes(cutFrames, roots.length) };
|
|
369
|
+
}
|
|
370
|
+
/** One note per cap that bit, each naming what the reader must do about that particular cap. */
|
|
371
|
+
function capNotes(cutFrames, total) {
|
|
372
|
+
const notes = [];
|
|
373
|
+
const of = (n) => `${n} of ${total} frames`;
|
|
374
|
+
const depth = cutFrames.get('depth');
|
|
375
|
+
if (depth) {
|
|
376
|
+
notes.push(`Layout is rendered ${MAX_TREE_DEPTH} levels deep below each frame's own children; in ` +
|
|
377
|
+
`${of(depth)} a branch continues past that and ends at a "(N deeper nodes not shown)" ` +
|
|
378
|
+
`marker. Link that sub-frame's own URL to import it at full depth.`);
|
|
379
|
+
}
|
|
380
|
+
const frameNodes = cutFrames.get('frame-nodes');
|
|
381
|
+
if (frameNodes) {
|
|
382
|
+
notes.push(`Layout is capped at ${MAX_FRAME_NODES} nodes per frame; ${of(frameNodes)} hit that cap ` +
|
|
383
|
+
`and stop at a "(truncated)" marker, so their later siblings are absent entirely.`);
|
|
384
|
+
}
|
|
385
|
+
const importNodes = cutFrames.get('import-nodes');
|
|
386
|
+
if (importNodes) {
|
|
387
|
+
notes.push(`The import-wide budget of ${MAX_IMPORT_NODES} layout nodes was spent; ${of(importNodes)} ` +
|
|
388
|
+
`are missing part or all of their layout. Link individual frame URLs to import fewer ` +
|
|
389
|
+
`frames at full fidelity.`);
|
|
390
|
+
}
|
|
391
|
+
const frameText = cutFrames.get('frame-text');
|
|
392
|
+
if (frameText) {
|
|
393
|
+
notes.push(`Text content is capped at ${MAX_FRAME_TEXT} lines per frame; ${of(frameText)} stop at a ` +
|
|
394
|
+
`"(text truncated)" marker.`);
|
|
395
|
+
}
|
|
396
|
+
const importText = cutFrames.get('import-text');
|
|
397
|
+
if (importText) {
|
|
398
|
+
notes.push(`The import-wide budget of ${MAX_IMPORT_TEXT} text lines was spent; ${of(importText)} are ` +
|
|
399
|
+
`missing part or all of their text. Link individual frame URLs to import fewer frames ` +
|
|
400
|
+
`at full fidelity.`);
|
|
401
|
+
}
|
|
402
|
+
return notes;
|
|
192
403
|
}
|
|
193
|
-
/**
|
|
194
|
-
|
|
195
|
-
|
|
404
|
+
/**
|
|
405
|
+
* The top-level frames of a whole file, in document order: the page children a
|
|
406
|
+
* {@link figmaBlocks} block is rendered from. The whole-file file read is shallow (it
|
|
407
|
+
* returns these with no grandchildren), so the caller fetches their subtrees separately.
|
|
408
|
+
*/
|
|
409
|
+
export function figmaTopLevelFrames(document) {
|
|
410
|
+
const frames = [];
|
|
411
|
+
for (const page of document?.children ?? []) {
|
|
412
|
+
for (const child of page.children ?? []) {
|
|
413
|
+
if (child.id && (!child.type || FRAME_TYPES.has(child.type)))
|
|
414
|
+
frames.push(child);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return frames;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* How many importable frames each page contributes, in the same document order
|
|
421
|
+
* {@link figmaTopLevelFrames} flattens. The frame cap counts frames, so on its own it cannot
|
|
422
|
+
* say whether it stopped mid-page or dropped a whole page of the design: this is what lets the
|
|
423
|
+
* cap note name the pages, which is the difference between "some frames are missing" and "you
|
|
424
|
+
* imported none of page 2".
|
|
425
|
+
*/
|
|
426
|
+
export function figmaPageSummary(document) {
|
|
427
|
+
const pages = [];
|
|
428
|
+
for (const [index, page] of (document?.children ?? []).entries()) {
|
|
429
|
+
const frames = (page.children ?? []).filter((child) => child.id && (!child.type || FRAME_TYPES.has(child.type))).length;
|
|
430
|
+
if (frames)
|
|
431
|
+
pages.push({ name: page.name?.trim() || `Page ${index + 1}`, frames });
|
|
432
|
+
}
|
|
433
|
+
return pages;
|
|
434
|
+
}
|
|
435
|
+
// ---- Components ------------------------------------------------------------
|
|
436
|
+
/** Strip Figma's `#1:0` disambiguation suffix off a component-property name. */
|
|
437
|
+
function cleanPropertyName(raw) {
|
|
438
|
+
return raw.split('#')[0].trim();
|
|
439
|
+
}
|
|
440
|
+
function renderPropertyValue(value) {
|
|
441
|
+
if (typeof value === 'string')
|
|
442
|
+
return value.trim() || null;
|
|
443
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
444
|
+
return String(value);
|
|
445
|
+
return null;
|
|
446
|
+
}
|
|
447
|
+
function readInstanceProperties(props, usage) {
|
|
448
|
+
for (const [rawName, entry] of Object.entries(props ?? {})) {
|
|
449
|
+
const name = cleanPropertyName(rawName);
|
|
450
|
+
if (!name)
|
|
451
|
+
continue;
|
|
452
|
+
const value = renderPropertyValue(entry?.value);
|
|
453
|
+
if (entry?.type === 'VARIANT') {
|
|
454
|
+
if (value)
|
|
455
|
+
usage.variants.add(`${name}=${value}`);
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
usage.props.add(value != null && entry?.type === 'BOOLEAN' ? `${name}=${value}` : name);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
function collectComponents(node, components, sets, out) {
|
|
463
|
+
if (node.type === 'INSTANCE') {
|
|
464
|
+
const definition = node.componentId ? components[node.componentId] : undefined;
|
|
465
|
+
const set = definition?.componentSetId ? sets[definition.componentSetId] : undefined;
|
|
466
|
+
// A variant's own component name IS its property assignment ("Size=Large, Type=Primary"),
|
|
467
|
+
// so it identifies the component only through its SET. Without a set, the component name
|
|
468
|
+
// is the identity and there is no variant to report.
|
|
469
|
+
const name = (set?.name || definition?.name || node.name)?.trim();
|
|
470
|
+
if (name) {
|
|
471
|
+
const usage = out.get(name) ?? {
|
|
472
|
+
variants: new Set(),
|
|
473
|
+
props: new Set(),
|
|
474
|
+
instances: 0,
|
|
475
|
+
};
|
|
476
|
+
usage.instances++;
|
|
477
|
+
if (set?.name && definition?.name?.includes('='))
|
|
478
|
+
usage.variants.add(definition.name.trim());
|
|
479
|
+
readInstanceProperties(node.componentProperties, usage);
|
|
480
|
+
usage.description ??= (definition?.description || set?.description)?.trim().split('\n')[0];
|
|
481
|
+
out.set(name, usage);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
for (const child of node.children ?? [])
|
|
485
|
+
collectComponents(child, components, sets, out);
|
|
486
|
+
}
|
|
487
|
+
function usageNote(usage) {
|
|
488
|
+
const parts = [];
|
|
489
|
+
const variants = capped([...usage.variants].sort(), MAX_VARIANTS_PER_COMPONENT);
|
|
490
|
+
if (variants.items.length) {
|
|
491
|
+
const shown = variants.items.join(' | ');
|
|
492
|
+
parts.push(`variants: ${shown}${variants.dropped ? ` (+${variants.dropped} more)` : ''}`);
|
|
493
|
+
}
|
|
494
|
+
const props = [...usage.props].sort();
|
|
495
|
+
if (props.length)
|
|
496
|
+
parts.push(`props: ${props.join(', ')}`);
|
|
497
|
+
if (usage.description)
|
|
498
|
+
parts.push(usage.description);
|
|
499
|
+
return parts.length ? parts.join('; ') : undefined;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Collect the distinct design-system components instantiated across the frames, each with
|
|
503
|
+
* the variants and properties the design actually uses. That signal is what lets an agent
|
|
504
|
+
* match "reuse the existing component" against a repo component rather than a bare name.
|
|
505
|
+
*
|
|
506
|
+
* Ordered by instance count (ties by name, so the result is deterministic) because that order
|
|
507
|
+
* is what the component cap slices: the components the design leans on survive it. The
|
|
508
|
+
* renderer sorts alphabetically for display, so the order here is a RANKING, not a layout.
|
|
509
|
+
*/
|
|
510
|
+
export function figmaComponents(roots, components = {}, componentSets = {}) {
|
|
511
|
+
const usages = new Map();
|
|
196
512
|
for (const root of roots)
|
|
197
|
-
collectComponents(root, components,
|
|
198
|
-
return [...
|
|
513
|
+
collectComponents(root, components, componentSets, usages);
|
|
514
|
+
return [...usages]
|
|
515
|
+
.sort(([aName, a], [bName, b]) => b.instances - a.instances || aName.localeCompare(bName))
|
|
516
|
+
.map(([name, usage]) => ({ name, note: usageNote(usage) }));
|
|
199
517
|
}
|
|
200
518
|
/** Render a single variable value (colour object → hex/rgba, else compact JSON). */
|
|
201
519
|
function renderVariableValue(value) {
|
|
@@ -246,19 +564,119 @@ export function figmaTokens(meta) {
|
|
|
246
564
|
}
|
|
247
565
|
return tokens;
|
|
248
566
|
}
|
|
567
|
+
// ---- Published styles → DesignToken[] --------------------------------------
|
|
568
|
+
/** How a published style's role maps to the token collection it belongs in. */
|
|
569
|
+
const STYLE_COLLECTIONS = {
|
|
570
|
+
fill: 'Colors',
|
|
571
|
+
fills: 'Colors',
|
|
572
|
+
stroke: 'Strokes',
|
|
573
|
+
strokes: 'Strokes',
|
|
574
|
+
text: 'Typography',
|
|
575
|
+
};
|
|
576
|
+
/** The value a styled node carries for the given role, or null when we can't name one. */
|
|
577
|
+
function styledValue(node, role) {
|
|
578
|
+
if (role === 'fill' || role === 'fills')
|
|
579
|
+
return firstSolidHex(node.fills);
|
|
580
|
+
if (role === 'stroke' || role === 'strokes')
|
|
581
|
+
return firstSolidHex(node.strokes);
|
|
582
|
+
if (role === 'text')
|
|
583
|
+
return typographyLabel(node.style);
|
|
584
|
+
return null;
|
|
585
|
+
}
|
|
586
|
+
function collectStyleTokens(node, styles, out) {
|
|
587
|
+
for (const [role, styleId] of Object.entries(node.styles ?? {})) {
|
|
588
|
+
const collection = STYLE_COLLECTIONS[role];
|
|
589
|
+
const name = styleId ? styles[styleId]?.name?.trim() : undefined;
|
|
590
|
+
if (!collection || !name)
|
|
591
|
+
continue;
|
|
592
|
+
const value = styledValue(node, role);
|
|
593
|
+
// A style with no resolvable value is a name and nothing else, which teaches an
|
|
594
|
+
// implementer nothing they can apply. Skip it rather than emit `name = ?`.
|
|
595
|
+
if (!value)
|
|
596
|
+
continue;
|
|
597
|
+
const key = `${collection}:${name}`;
|
|
598
|
+
if (!out.has(key))
|
|
599
|
+
out.set(key, { collection, name, value });
|
|
600
|
+
}
|
|
601
|
+
for (const child of node.children ?? [])
|
|
602
|
+
collectStyleTokens(child, styles, out);
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Derive tokens from the file's PUBLISHED STYLES, the token source every Figma plan
|
|
606
|
+
* serves: the `styles` map names each published style and the nodes referencing one carry
|
|
607
|
+
* the concrete value, so the join produces `name = value` without the Enterprise-gated
|
|
608
|
+
* variables API. Deliberately NOT merged with {@link figmaTokens}: the two are different
|
|
609
|
+
* sources with different coverage, and a merged section could not say which one it came
|
|
610
|
+
* from.
|
|
611
|
+
*/
|
|
612
|
+
export function figmaStyleTokens(roots, styles = {}) {
|
|
613
|
+
const tokens = new Map();
|
|
614
|
+
for (const root of roots)
|
|
615
|
+
collectStyleTokens(root, styles, tokens);
|
|
616
|
+
return [...tokens.values()];
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* State which token path produced the section. A 403 from the variables API is a PLAN
|
|
620
|
+
* GATE, not an error, and neither of those reads the same as a design that simply defines
|
|
621
|
+
* no tokens, so the three cases must not collapse into one silent omission.
|
|
622
|
+
*/
|
|
623
|
+
export function figmaTokenOrigin(input) {
|
|
624
|
+
if (input.variableTokens > 0)
|
|
625
|
+
return { label: 'Figma variables' };
|
|
626
|
+
const missing = input.status === 'gated'
|
|
627
|
+
? 'the Figma variables API is not available on this plan'
|
|
628
|
+
: input.status === 'failed'
|
|
629
|
+
? 'the Figma variables read failed'
|
|
630
|
+
: null;
|
|
631
|
+
if (input.styleTokens > 0) {
|
|
632
|
+
return {
|
|
633
|
+
label: 'published styles',
|
|
634
|
+
note: missing ? `Variable-defined tokens are absent: ${missing}.` : undefined,
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
if (!missing)
|
|
638
|
+
return undefined;
|
|
639
|
+
return {
|
|
640
|
+
note: `No design tokens: ${missing}, and this design's published styles resolved to no value.`,
|
|
641
|
+
};
|
|
642
|
+
}
|
|
249
643
|
/** Assemble the fetched Figma pieces into the shared {@link DesignContext}. */
|
|
250
644
|
export function buildFigmaDesignContext(input) {
|
|
251
645
|
const { fileKey } = splitFigmaExternalId(input.externalId);
|
|
252
646
|
const title = input.nodeId
|
|
253
647
|
? `${input.fileName || fileKey} — ${input.roots[0]?.name?.trim() || input.nodeId}`
|
|
254
648
|
: input.fileName || fileKey;
|
|
649
|
+
const { blocks, notes } = figmaBlocks(input.roots);
|
|
650
|
+
const variableTokens = figmaTokens(input.variablesMeta);
|
|
651
|
+
const styleTokens = figmaStyleTokens(input.roots, input.styles);
|
|
652
|
+
// Components and tokens are bounded too: both grow with the DESIGN SYSTEM rather than with
|
|
653
|
+
// the frames imported, so the layout/text budgets above say nothing about them, and a
|
|
654
|
+
// library file can carry hundreds of published styles.
|
|
655
|
+
const components = capped(figmaComponents(input.roots, input.components, input.componentSets), MAX_COMPONENTS);
|
|
656
|
+
const tokens = capped(sortDesignTokens(variableTokens.length ? variableTokens : styleTokens), MAX_TOKENS);
|
|
657
|
+
const capNotes = [];
|
|
658
|
+
if (components.dropped) {
|
|
659
|
+
capNotes.push(`${components.dropped} of ${components.dropped + components.items.length} components are ` +
|
|
660
|
+
`not listed: the ${MAX_COMPONENTS} instantiated most often were kept (the list itself is ` +
|
|
661
|
+
`alphabetical).`);
|
|
662
|
+
}
|
|
663
|
+
if (tokens.dropped) {
|
|
664
|
+
capNotes.push(`${tokens.dropped} of ${tokens.dropped + tokens.items.length} design tokens are not ` +
|
|
665
|
+
`listed; the list is capped at ${MAX_TOKENS} and is otherwise in full.`);
|
|
666
|
+
}
|
|
255
667
|
return {
|
|
256
668
|
title,
|
|
257
669
|
url: figmaUrlFor(input.externalId),
|
|
258
|
-
blocks
|
|
259
|
-
components:
|
|
260
|
-
tokens:
|
|
670
|
+
blocks,
|
|
671
|
+
components: components.items,
|
|
672
|
+
tokens: tokens.items,
|
|
673
|
+
tokenOrigin: figmaTokenOrigin({
|
|
674
|
+
status: input.variablesStatus ?? 'ok',
|
|
675
|
+
variableTokens: variableTokens.length,
|
|
676
|
+
styleTokens: styleTokens.length,
|
|
677
|
+
}),
|
|
261
678
|
references: input.previewUrl ? [{ label: 'Rendered preview', url: input.previewUrl }] : [],
|
|
679
|
+
notes: [...(input.fetchNotes ?? []), ...notes, ...capNotes],
|
|
262
680
|
};
|
|
263
681
|
}
|
|
264
682
|
//# sourceMappingURL=figma.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figma.logic.js","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"figma.logic.js","sourceRoot":"","sources":["../../../src/modules/documents/figma.logic.ts"],"names":[],"mappings":"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"}
|