@calibrate-ds/core 0.1.67 → 0.1.68

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.
@@ -1 +1 @@
1
- {"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAcxF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAyBtE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAYxE"}
1
+ {"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAcxF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA6BtE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAYxE"}
@@ -38,7 +38,11 @@ export function calculateContextHash(context) {
38
38
  // The render trees (and their instance recipes) are the core source of truth for implementation.
39
39
  renderTree: context.renderTree,
40
40
  variantDiffs: context.variantDiffs,
41
- dependencyInstances: context.dependencyInstances
41
+ // NOTE: dependencyInstances is intentionally excluded — it is derived from renderTree
42
+ // (which is hashed above and structurally diffable by the reporter). Hashing it
43
+ // separately double-counts the same change and can flag nondeterministic reorder
44
+ // noise as staleness. The invariant: every field that feeds this hash must be
45
+ // describable by compareComponents (see diff/compare-components.ts).
42
46
  };
43
47
  return createHash("sha256").update(stableStringify(relevantData)).digest("hex");
44
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hashing.js","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,eAAe,CAAE,KAAiC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC1D,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,YAAY,GAAG;QACjB,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;QACrC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;QAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,2DAA2D;YAC3D,2EAA2E;SAC9E,CAAC,CAAC;QACH,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,iGAAiG;QACjG,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACnD,CAAC;IAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAwB;IAC5D,MAAM,QAAQ,GAAG;QACb,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK;QACrB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;KACjB,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"hashing.js","sourceRoot":"","sources":["../../src/context/hashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,eAAe,CAAE,KAAiC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC1D,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,YAAY,GAAG;QACjB,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;QACrC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;QAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,2DAA2D;YAC3D,2EAA2E;SAC9E,CAAC,CAAC;QACH,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,iGAAiG;QACjG,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,sFAAsF;QACtF,gFAAgF;QAChF,iFAAiF;QACjF,8EAA8E;QAC9E,qEAAqE;KACxE,CAAC;IAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAwB;IAC5D,MAAM,QAAQ,GAAG;QACb,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK;QACrB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;KACjB,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compare-components.d.ts","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAA8B,MAAM,4BAA4B,CAAC;AA6ThH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,YAAY,EAAE,CAmDjH"}
1
+ {"version":3,"file":"compare-components.d.ts","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAA8C,MAAM,4BAA4B,CAAC;AA8ehI,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,YAAY,EAAE,CA2DjH"}
@@ -73,6 +73,71 @@ function diffProperties(prev, curr, details) {
73
73
  }
74
74
  }
75
75
  }
76
+ /**
77
+ * Token-aware diff of a single DesignValue slot (gap, padding side, width, height).
78
+ * Distinguishes hardcode<->token refactors, binding swaps, alias retargets, and raw
79
+ * value/mode drift. Shared by layout and size diffing.
80
+ */
81
+ function diffDesignValue(p, c, name, details) {
82
+ if (!p && !c)
83
+ return;
84
+ const pBoundId = tokenId(p?.boundToken);
85
+ const cBoundId = tokenId(c?.boundToken);
86
+ const pResId = tokenId(p?.resolvedToken);
87
+ const cResId = tokenId(c?.resolvedToken);
88
+ const pVal = p?.rawValue;
89
+ const cVal = c?.rawValue;
90
+ const pMode = p?.mode;
91
+ const cMode = c?.mode;
92
+ const boundChanged = pBoundId !== cBoundId;
93
+ const resChanged = pResId !== cResId;
94
+ const valChanged = pVal !== cVal;
95
+ const modeChanged = pMode !== cMode;
96
+ if (!boundChanged && !resChanged && !valChanged && !modeChanged)
97
+ return;
98
+ // Hardcoded <-> token swap with the same resolved value: structural-only change.
99
+ // This is the silent-diff bug from PTB v0.1.5: a "wrap 8px in a spacing token"
100
+ // refactor MUST surface, even though no pixel changed.
101
+ if (boundChanged && !valChanged && (!pBoundId || !cBoundId)) {
102
+ if (!pBoundId && cBoundId) {
103
+ details.push(`${name}: hardcoded ${pVal} -> ${formatVar(c?.boundToken)} [resolved: ${cVal}, no visual change]`);
104
+ }
105
+ else {
106
+ details.push(`${name}: ${formatVar(p?.boundToken)} -> hardcoded ${cVal} [resolved: ${pVal}, no visual change]`);
107
+ }
108
+ return;
109
+ }
110
+ // Slot-level binding swap.
111
+ if (boundChanged && pBoundId && cBoundId) {
112
+ const lines = [
113
+ `${name}: token binding changed`,
114
+ ` was: ${formatVar(p?.boundToken)} -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
115
+ ` now: ${formatVar(c?.boundToken)} -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
116
+ ];
117
+ details.push(lines.join("\n"));
118
+ return;
119
+ }
120
+ // Same slot binding, alias resolves to a different leaf.
121
+ if (!boundChanged && pBoundId && resChanged) {
122
+ const lines = [
123
+ `${name}: alias target changed (${formatVar(c?.boundToken)} now resolves to a different token)`,
124
+ ` was: -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
125
+ ` now: -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
126
+ ];
127
+ details.push(lines.join("\n"));
128
+ return;
129
+ }
130
+ // Fallback: raw value or mode drift.
131
+ const formatSide = (v) => {
132
+ if (!v)
133
+ return "none";
134
+ const tok = v.boundToken ?? v.resolvedToken;
135
+ const tokTag = tok ? ` (${tok.name})` : "";
136
+ const modeTag = v.mode ? ` [${v.mode}]` : "";
137
+ return `${v.rawValue}${tokTag}${modeTag}`;
138
+ };
139
+ details.push(`${name} changed: ${formatSide(p)} -> ${formatSide(c)}`);
140
+ }
76
141
  function diffLayout(prev, curr, details) {
77
142
  const pLayout = prev.layout;
78
143
  const cLayout = curr.layout;
@@ -89,72 +154,12 @@ function diffLayout(prev, curr, details) {
89
154
  if (pLayout.direction !== cLayout.direction) {
90
155
  details.push(`layout direction changed: ${pLayout.direction} -> ${cLayout.direction}`);
91
156
  }
92
- const diffVal = (p, c, name) => {
93
- if (!p && !c)
94
- return;
95
- const pBoundId = tokenId(p?.boundToken);
96
- const cBoundId = tokenId(c?.boundToken);
97
- const pResId = tokenId(p?.resolvedToken);
98
- const cResId = tokenId(c?.resolvedToken);
99
- const pVal = p?.rawValue;
100
- const cVal = c?.rawValue;
101
- const pMode = p?.mode;
102
- const cMode = c?.mode;
103
- const boundChanged = pBoundId !== cBoundId;
104
- const resChanged = pResId !== cResId;
105
- const valChanged = pVal !== cVal;
106
- const modeChanged = pMode !== cMode;
107
- if (!boundChanged && !resChanged && !valChanged && !modeChanged)
108
- return;
109
- // Hardcoded <-> token swap with the same resolved value: structural-only change.
110
- // This is the silent-diff bug from PTB v0.1.5: a "wrap 8px in a spacing token"
111
- // refactor MUST surface, even though no pixel changed.
112
- if (boundChanged && !valChanged && (!pBoundId || !cBoundId)) {
113
- if (!pBoundId && cBoundId) {
114
- details.push(`${name}: hardcoded ${pVal} -> ${formatVar(c?.boundToken)} [resolved: ${cVal}, no visual change]`);
115
- }
116
- else {
117
- details.push(`${name}: ${formatVar(p?.boundToken)} -> hardcoded ${cVal} [resolved: ${pVal}, no visual change]`);
118
- }
119
- return;
120
- }
121
- // Slot-level binding swap.
122
- if (boundChanged && pBoundId && cBoundId) {
123
- const lines = [
124
- `${name}: token binding changed`,
125
- ` was: ${formatVar(p?.boundToken)} -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
126
- ` now: ${formatVar(c?.boundToken)} -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
127
- ];
128
- details.push(lines.join("\n"));
129
- return;
130
- }
131
- // Same slot binding, alias resolves to a different leaf.
132
- if (!boundChanged && pBoundId && resChanged) {
133
- const lines = [
134
- `${name}: alias target changed (${formatVar(c?.boundToken)} now resolves to a different token)`,
135
- ` was: -> ${p?.resolvedToken?.name ?? "?"} -> ${pVal}`,
136
- ` now: -> ${c?.resolvedToken?.name ?? "?"} -> ${cVal}`,
137
- ];
138
- details.push(lines.join("\n"));
139
- return;
140
- }
141
- // Fallback: raw value or mode drift.
142
- const formatSide = (v) => {
143
- if (!v)
144
- return "none";
145
- const tok = v.boundToken ?? v.resolvedToken;
146
- const tokTag = tok ? ` (${tok.name})` : "";
147
- const modeTag = v.mode ? ` [${v.mode}]` : "";
148
- return `${v.rawValue}${tokTag}${modeTag}`;
149
- };
150
- details.push(`${name} changed: ${formatSide(p)} -> ${formatSide(c)}`);
151
- };
152
- diffVal(pLayout.gap, cLayout.gap, "gap");
157
+ diffDesignValue(pLayout.gap, cLayout.gap, "gap", details);
153
158
  if (pLayout.padding || cLayout.padding) {
154
- diffVal(pLayout.padding?.top, cLayout.padding?.top, "paddingTop");
155
- diffVal(pLayout.padding?.right, cLayout.padding?.right, "paddingRight");
156
- diffVal(pLayout.padding?.bottom, cLayout.padding?.bottom, "paddingBottom");
157
- diffVal(pLayout.padding?.left, cLayout.padding?.left, "paddingLeft");
159
+ diffDesignValue(pLayout.padding?.top, cLayout.padding?.top, "paddingTop", details);
160
+ diffDesignValue(pLayout.padding?.right, cLayout.padding?.right, "paddingRight", details);
161
+ diffDesignValue(pLayout.padding?.bottom, cLayout.padding?.bottom, "paddingBottom", details);
162
+ diffDesignValue(pLayout.padding?.left, cLayout.padding?.left, "paddingLeft", details);
158
163
  }
159
164
  if (pLayout.mainAlignment !== cLayout.mainAlignment) {
160
165
  details.push(`main alignment changed: ${pLayout.mainAlignment ?? 'none'} -> ${cLayout.mainAlignment ?? 'none'}`);
@@ -297,10 +302,197 @@ function diffVariantAxes(prev, curr, details) {
297
302
  details.push(`variant axis removed: ${name}`);
298
303
  }
299
304
  }
305
+ /** Diffs the component's overall frame size (width/height, incl. hug/fill/fixed mode). */
306
+ function diffSize(prev, curr, details) {
307
+ const p = prev.size;
308
+ const c = curr.size;
309
+ if (!p && !c)
310
+ return;
311
+ if (!p && c) {
312
+ details.push(`size added: ${c.width?.rawValue} x ${c.height?.rawValue}`);
313
+ return;
314
+ }
315
+ if (p && !c) {
316
+ details.push(`size removed`);
317
+ return;
318
+ }
319
+ if (!p || !c)
320
+ return;
321
+ diffDesignValue(p.width, c.width, "width", details);
322
+ diffDesignValue(p.height, c.height, "height", details);
323
+ }
324
+ /** Human-readable label for a text style: the style name, else its resolved font size. */
325
+ function typographyLabel(t) {
326
+ if (!t)
327
+ return undefined;
328
+ const styleName = t.styleRef?.displayName || t.styleRef?.name;
329
+ if (styleName)
330
+ return styleName;
331
+ const fs = t.resolved?.fontSize?.cssValue;
332
+ return fs ? `${fs}` : undefined;
333
+ }
334
+ /** Compact "14px/500" metrics summary for a typography contract, for the parenthetical. */
335
+ function typographyMetrics(t) {
336
+ if (!t?.resolved)
337
+ return "";
338
+ const parts = [t.resolved.fontSize?.cssValue, t.resolved.fontWeight?.cssValue, t.resolved.lineHeight?.cssValue]
339
+ .filter(Boolean);
340
+ return parts.join("/");
341
+ }
342
+ /** Multiset of node names in a render tree (root excluded), for structure comparison. */
343
+ function nodeNameCounts(root) {
344
+ const counts = new Map();
345
+ const walk = (node, isRoot) => {
346
+ if (!isRoot)
347
+ counts.set(node.name, (counts.get(node.name) ?? 0) + 1);
348
+ for (const child of node.children ?? [])
349
+ walk(child, false);
350
+ };
351
+ walk(root, true);
352
+ return counts;
353
+ }
354
+ /** Ordered signature of the tree (names by positional path) — detects pure reorders. */
355
+ function treeShape(root) {
356
+ const parts = [];
357
+ const walk = (node, path) => {
358
+ parts.push(`${path}:${node.name}`);
359
+ const children = node.children ?? [];
360
+ for (let i = 0; i < children.length; i++)
361
+ walk(children[i], `${path}/${i}`);
362
+ };
363
+ walk(root, "0");
364
+ return parts.join("|");
365
+ }
366
+ /**
367
+ * Diffs two render trees for both structure and content:
368
+ * - structure: nodes added/removed (by name multiset) and pure reorders
369
+ * - content: text-content and typography edits on nodes that stayed in place
370
+ * (same positional path + same name), so a reorder never fabricates a content "change".
371
+ */
372
+ function diffRenderTree(prev, curr, details) {
373
+ const prevTree = prev.renderTree;
374
+ const currTree = curr.renderTree;
375
+ if (!prevTree && !currTree)
376
+ return;
377
+ if (!prevTree && currTree) {
378
+ details.push(`render tree added`);
379
+ return;
380
+ }
381
+ if (prevTree && !currTree) {
382
+ details.push(`render tree removed`);
383
+ return;
384
+ }
385
+ if (!prevTree || !currTree)
386
+ return;
387
+ // ── Structure: name-multiset delta (robust to positional shift) ──
388
+ const prevCounts = nodeNameCounts(prevTree);
389
+ const currCounts = nodeNameCounts(currTree);
390
+ const added = [];
391
+ const removed = [];
392
+ for (const [name, n] of currCounts) {
393
+ const delta = n - (prevCounts.get(name) ?? 0);
394
+ for (let i = 0; i < delta; i++)
395
+ added.push(name);
396
+ }
397
+ for (const [name, n] of prevCounts) {
398
+ const delta = n - (currCounts.get(name) ?? 0);
399
+ for (let i = 0; i < delta; i++)
400
+ removed.push(name);
401
+ }
402
+ const summarize = (names) => names.length <= 5 ? names.join(", ") : `${names.slice(0, 5).join(", ")}, +${names.length - 5} more`;
403
+ if (added.length > 0)
404
+ details.push(`node(s) added to render tree: ${summarize(added)}`);
405
+ if (removed.length > 0)
406
+ details.push(`node(s) removed from render tree: ${summarize(removed)}`);
407
+ if (added.length === 0 && removed.length === 0 && treeShape(prevTree) !== treeShape(currTree)) {
408
+ details.push(`render tree reordered (same nodes, new arrangement)`);
409
+ }
410
+ // ── Content: text + typography on in-place nodes ──
411
+ const index = (root) => {
412
+ const map = new Map();
413
+ const walk = (node, path) => {
414
+ map.set(path, node);
415
+ const children = node.children ?? [];
416
+ for (let i = 0; i < children.length; i++)
417
+ walk(children[i], `${path}/${i}`);
418
+ };
419
+ walk(root, "0");
420
+ return map;
421
+ };
422
+ const prevNodes = index(prevTree);
423
+ const currNodes = index(currTree);
424
+ for (const [path, cNode] of currNodes) {
425
+ const pNode = prevNodes.get(path);
426
+ if (!pNode || pNode.name !== cNode.name)
427
+ continue; // structure shifted — not an in-place edit
428
+ const where = cNode.name ? ` on "${cNode.name}"` : "";
429
+ // Text content edit (the most common minute change designers make).
430
+ if ((pNode.textContent ?? undefined) !== (cNode.textContent ?? undefined)
431
+ && (pNode.textContent !== undefined || cNode.textContent !== undefined)) {
432
+ details.push(`text content changed${where}: ${JSON.stringify(pNode.textContent ?? "")} -> ${JSON.stringify(cNode.textContent ?? "")}`);
433
+ }
434
+ // Typography (text style swap or font metric change).
435
+ const pLabel = typographyLabel(pNode.typographyContract);
436
+ const cLabel = typographyLabel(cNode.typographyContract);
437
+ const pMetrics = typographyMetrics(pNode.typographyContract);
438
+ const cMetrics = typographyMetrics(cNode.typographyContract);
439
+ if (pLabel !== cLabel || pMetrics !== cMetrics) {
440
+ if (pLabel || cLabel || pMetrics || cMetrics) {
441
+ const metricTag = pMetrics && cMetrics && pMetrics !== cMetrics ? ` (${pMetrics} -> ${cMetrics})` : "";
442
+ details.push(`text style changed${where}: ${pLabel ?? "?"} -> ${cLabel ?? "?"}${metricTag}`);
443
+ }
444
+ }
445
+ }
446
+ }
447
+ /** Diffs component identity — display name and kind. */
448
+ function diffIdentity(prev, curr, details) {
449
+ if (prev.name !== curr.name) {
450
+ details.push(`renamed: ${JSON.stringify(prev.name)} -> ${JSON.stringify(curr.name)}`);
451
+ }
452
+ const pKind = prev.kind?.value;
453
+ const cKind = curr.kind?.value;
454
+ if (pKind !== cKind) {
455
+ details.push(`kind changed: ${pKind ?? "?"} -> ${cKind ?? "?"}`);
456
+ }
457
+ }
458
+ /** Diffs the direct dependency set (nested component ids), resolving ids to names when known. */
459
+ function diffDependencies(prev, curr, nameById, details) {
460
+ const prevDeps = new Set(prev.dependencies ?? []);
461
+ const currDeps = new Set(curr.dependencies ?? []);
462
+ const label = (id) => nameById.get(id) ?? id;
463
+ for (const id of currDeps) {
464
+ if (!prevDeps.has(id))
465
+ details.push(`dependency added: ${label(id)}`);
466
+ }
467
+ for (const id of prevDeps) {
468
+ if (!currDeps.has(id))
469
+ details.push(`dependency removed: ${label(id)}`);
470
+ }
471
+ }
472
+ /**
473
+ * Coarse diff of per-variant styling deltas (variantDiffs). These capture changes that
474
+ * live only in a non-default variant (e.g. a hover-only color), so they're not covered by
475
+ * the default-variant render tree. A structural equality check keeps them from going
476
+ * silent; a full per-variant breakdown is future work.
477
+ */
478
+ function diffVariantBehavior(prev, curr, details) {
479
+ const p = prev.variantDiffs;
480
+ const c = curr.variantDiffs;
481
+ if (p === undefined && c === undefined)
482
+ return;
483
+ if (!deepEqual(p, c)) {
484
+ details.push(`variant-specific styling changed (per-variant overrides differ)`);
485
+ }
486
+ }
300
487
  export function compareComponents(previous, current) {
301
488
  const changes = [];
302
489
  const prevMap = new Map(previous.map(c => [c.id, c]));
303
490
  const currMap = new Map(current.map(c => [c.id, c]));
491
+ const nameById = new Map();
492
+ for (const c of previous)
493
+ nameById.set(c.id, c.name);
494
+ for (const c of current)
495
+ nameById.set(c.id, c.name);
304
496
  // Check for added or modified
305
497
  for (const curr of current) {
306
498
  const prev = prevMap.get(curr.id);
@@ -315,10 +507,15 @@ export function compareComponents(previous, current) {
315
507
  else {
316
508
  // Compute detailed granular structural diff dynamically!
317
509
  const details = [];
510
+ diffIdentity(prev, curr, details);
318
511
  diffVariantAxes(prev, curr, details);
319
512
  diffProperties(prev, curr, details);
513
+ diffDependencies(prev, curr, nameById, details);
320
514
  diffLayout(prev, curr, details);
321
515
  diffStyles(prev, curr, details);
516
+ diffSize(prev, curr, details);
517
+ diffRenderTree(prev, curr, details);
518
+ diffVariantBehavior(prev, curr, details);
322
519
  if (details.length > 0) {
323
520
  changes.push({
324
521
  entityId: curr.id,
@@ -1 +1 @@
1
- {"version":3,"file":"compare-components.js","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-components.js","sourceRoot":"","sources":["../../src/diff/compare-components.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
1
  import type { DiffSummary } from "@calibrate-ds/shared-types";
2
+ import type { BucketedDiffSummary } from "./resolve-design-diff.js";
2
3
  export declare function formatDiffSummary(summary: DiffSummary): string;
4
+ /**
5
+ * Formats a bucketed diff (from `resolveDesignDiff`) grouped by lifecycle bucket:
6
+ * - New first appearance, not yet in the lock
7
+ * - Not implemented in the lock, never stamped (shows drift so unbuilt changes aren't lost)
8
+ * - Drifted stamped, but the design moved since implementation
9
+ * The bucket tells the consumer what to *do*; every changed component still surfaces
10
+ * with full granular detail regardless of stamp state.
11
+ */
12
+ export declare function formatBucketedDiff(summary: BucketedDiffSummary): string;
3
13
  //# sourceMappingURL=format-diff-summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-diff-summary.d.ts","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAoB9D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAgE9D"}
1
+ {"version":3,"file":"format-diff-summary.d.ts","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAoBpF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAgE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAuEvE"}
@@ -72,4 +72,81 @@ export function formatDiffSummary(summary) {
72
72
  }
73
73
  return output.join("\n").trim();
74
74
  }
75
+ /**
76
+ * Formats a bucketed diff (from `resolveDesignDiff`) grouped by lifecycle bucket:
77
+ * - New first appearance, not yet in the lock
78
+ * - Not implemented in the lock, never stamped (shows drift so unbuilt changes aren't lost)
79
+ * - Drifted stamped, but the design moved since implementation
80
+ * The bucket tells the consumer what to *do*; every changed component still surfaces
81
+ * with full granular detail regardless of stamp state.
82
+ */
83
+ export function formatBucketedDiff(summary) {
84
+ if (summary.addedCount === 0 && summary.modifiedCount === 0 && summary.deletedCount === 0) {
85
+ return "No design system changes detected.";
86
+ }
87
+ const output = [];
88
+ output.push(`\x1b[1mDesign changes detected\x1b[0m\n`);
89
+ const compChanges = summary.changes.filter(c => c.entityType === "component");
90
+ const otherChanges = summary.changes.filter(c => c.entityType !== "component");
91
+ const nameOf = (c) => c.newValue?.name || c.previousValue?.name || c.entityId;
92
+ const renderModified = (c) => {
93
+ output.push(`~ ${nameOf(c)}`);
94
+ for (const detail of c.details ?? [])
95
+ pushDetail(output, detail);
96
+ };
97
+ // 1. New (added)
98
+ const added = compChanges.filter(c => c.changeType === "added");
99
+ if (added.length > 0) {
100
+ output.push(`\x1b[32mNew components:\x1b[0m`);
101
+ for (const c of added)
102
+ output.push(`+ ${nameOf(c)}`);
103
+ output.push("");
104
+ }
105
+ // 2. Not implemented (unbuilt) — surfaced even when unchanged so the backlog stays visible
106
+ const unbuilt = compChanges.filter(c => c.changeType === "modified" && c.bucket === "unbuilt");
107
+ if (unbuilt.length > 0) {
108
+ output.push(`\x1b[33mChanged (not implemented):\x1b[0m`);
109
+ for (const c of unbuilt)
110
+ renderModified(c);
111
+ output.push("");
112
+ }
113
+ // 3. Drifted — stamped, design moved since implementation
114
+ const drifted = compChanges.filter(c => c.changeType === "modified" && c.bucket === "drifted");
115
+ if (drifted.length > 0) {
116
+ output.push(`\x1b[34mDrifted (implemented — needs update):\x1b[0m`);
117
+ for (const c of drifted)
118
+ renderModified(c);
119
+ output.push("");
120
+ }
121
+ // Any modified component with no bucket (defensive) — render under a generic header
122
+ const unbucketed = compChanges.filter(c => c.changeType === "modified" && !c.bucket);
123
+ if (unbucketed.length > 0) {
124
+ output.push(`\x1b[34mUpdated components:\x1b[0m`);
125
+ for (const c of unbucketed)
126
+ renderModified(c);
127
+ output.push("");
128
+ }
129
+ // 4. Removed
130
+ const removed = compChanges.filter(c => c.changeType === "deleted");
131
+ if (removed.length > 0) {
132
+ output.push(`\x1b[31mRemoved components:\x1b[0m`);
133
+ for (const c of removed)
134
+ output.push(`- ${nameOf(c)}`);
135
+ output.push("");
136
+ }
137
+ // 5. Token & metadata changes
138
+ if (otherChanges.length > 0) {
139
+ output.push(`\x1b[1mToken & Metadata changes:\x1b[0m`);
140
+ for (const c of otherChanges) {
141
+ const symbol = c.changeType === "added" ? "+" : c.changeType === "deleted" ? "-" : "~";
142
+ const color = c.changeType === "added" ? "\x1b[32m" : c.changeType === "deleted" ? "\x1b[31m" : "\x1b[34m";
143
+ const name = c.newValue?.name || c.previousValue?.name || c.entityId;
144
+ output.push(`${color}${symbol} ${name}\x1b[0m`);
145
+ for (const detail of c.details ?? [])
146
+ pushDetail(output, detail);
147
+ }
148
+ output.push("");
149
+ }
150
+ return output.join("\n").trim();
151
+ }
75
152
  //# sourceMappingURL=format-diff-summary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-diff-summary.js","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-diff-summary.js","sourceRoot":"","sources":["../../src/diff/format-diff-summary.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export * from "./compare-dependencies.js";
3
3
  export * from "./compare-tokens.js";
4
4
  export * from "./compute-design-diff.js";
5
5
  export * from "./format-diff-summary.js";
6
+ export * from "./resolve-design-diff.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -3,4 +3,5 @@ export * from "./compare-dependencies.js";
3
3
  export * from "./compare-tokens.js";
4
4
  export * from "./compute-design-diff.js";
5
5
  export * from "./format-diff-summary.js";
6
+ export * from "./resolve-design-diff.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { ComponentDefinition, DesignSystemModel, DiffSummary, EntityChange } from "@calibrate-ds/shared-types";
2
+ import type { PTBLock, StampedContract } from "../context/export-context.js";
3
+ /**
4
+ * Which lifecycle bucket a component change belongs to. This decides how a change
5
+ * is *labeled* — never whether it is *shown*. Every changed component surfaces with
6
+ * full granular detail regardless of stamp state; the bucket only tells the consumer
7
+ * (or agent) what to *do* with it.
8
+ */
9
+ export type DiffBucket = "new" | "unbuilt" | "drifted";
10
+ /** A change tagged with its lifecycle bucket. */
11
+ export type BucketedChange = EntityChange & {
12
+ bucket?: DiffBucket;
13
+ };
14
+ export interface BucketedDiffSummary extends DiffSummary {
15
+ changes: BucketedChange[];
16
+ }
17
+ export interface ResolveDiffParams {
18
+ /** The current (freshly scanned) model. */
19
+ currentModel: DesignSystemModel;
20
+ /** Parsed ptb.lock, if present. Drives stamp/contract resolution. */
21
+ lock?: PTBLock;
22
+ /**
23
+ * Parsed `diff-baseline.json` (the durable acknowledgement point set by `ptb diff ack`).
24
+ * Takes precedence over history for unstamped/contractless components.
25
+ */
26
+ ackModel?: DesignSystemModel;
27
+ /**
28
+ * History model snapshots, newest-first. Used as the fallback anchor for unstamped
29
+ * or contractless components so a change stays visible across any number of scans
30
+ * until it is stamped or acknowledged (the anchor never advances on a mere scan).
31
+ */
32
+ historyNewestFirst?: DesignSystemModel[];
33
+ /**
34
+ * History snapshots keyed by filename. Lets a stamped component diff against its
35
+ * *pinned* stamp-time snapshot (`stampedSnapshotFile`) — the full model, so rich
36
+ * fields (size, typography, text content) the lean contract omits still surface.
37
+ * This is the "lean contract decides staleness, history supplies the values" split.
38
+ */
39
+ historyByFilename?: Map<string, DesignSystemModel>;
40
+ }
41
+ /**
42
+ * Reconstructs a minimal ComponentDefinition from a StampedContract for use as the
43
+ * "previous" side of a diff. Only the fields the reporter actually walks are populated.
44
+ */
45
+ export declare function contractToComponent(id: string, displayName: string, contract: StampedContract): ComponentDefinition;
46
+ /**
47
+ * Single source of truth for `ptb diff` / `run_diff`. Classifies every component into
48
+ * one lifecycle bucket, diffs each against the correct baseline, and returns a tagged
49
+ * summary. Both the CLI and the MCP server call this so the two surfaces can never
50
+ * disagree on the same repo.
51
+ */
52
+ export declare function resolveDesignDiff(params: ResolveDiffParams): BucketedDiffSummary;
53
+ //# sourceMappingURL=resolve-design-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-design-diff.d.ts","sourceRoot":"","sources":["../../src/diff/resolve-design-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI7E;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAChB,KAAK,GACL,SAAS,GACT,SAAS,CAAC;AAEhB,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACpD,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,2CAA2C;IAC3C,YAAY,EAAE,iBAAiB,CAAC;IAChC,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,eAAe,GAC1B,mBAAmB,CAkBrB;AA8ED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,CA4GhF"}
@@ -0,0 +1,195 @@
1
+ import { compareComponents } from "./compare-components.js";
2
+ import { compareTokens } from "./compare-tokens.js";
3
+ /**
4
+ * Reconstructs a minimal ComponentDefinition from a StampedContract for use as the
5
+ * "previous" side of a diff. Only the fields the reporter actually walks are populated.
6
+ */
7
+ export function contractToComponent(id, displayName, contract) {
8
+ return {
9
+ id,
10
+ name: displayName,
11
+ variantAxes: contract.variantAxes ?? [],
12
+ properties: contract.properties ?? [],
13
+ tokenBindings: contract.tokenBindings ?? [],
14
+ styleMetadata: contract.styleMetadata ?? {},
15
+ layout: contract.layout,
16
+ kind: { value: "unclassified", inferred: true },
17
+ categoryPath: "",
18
+ description: "",
19
+ slots: [],
20
+ compositeSlots: [],
21
+ dependencies: [],
22
+ variants: [],
23
+ renderTree: null,
24
+ };
25
+ }
26
+ /** Slugifies a display name the same way ptb.lock keys are generated. */
27
+ function slugify(name) {
28
+ return name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
29
+ }
30
+ /** Locates the current component matching a lock entry by display name or slug. */
31
+ function matchLockEntry(current, displayName, slug) {
32
+ const target = displayName.toLowerCase();
33
+ return current.find(c => c.name.toLowerCase() === target || slugify(c.name) === slug);
34
+ }
35
+ /**
36
+ * True iff the reporter would actually emit at least one detail line for prev -> curr.
37
+ * Anchoring on the *same* diff logic the reporter uses guarantees we never select a
38
+ * baseline the reporter then has nothing to say about (the "flips to changed with no
39
+ * explanation" class), and it auto-tracks any walker added later.
40
+ */
41
+ function componentDiffers(prev, curr) {
42
+ return compareComponents([prev], [curr]).some(c => c.changeType === "modified" && (c.details?.length ?? 0) > 0);
43
+ }
44
+ /**
45
+ * Resolves the baseline to diff an unstamped or contractless component against:
46
+ * 1. The acknowledgement point (`diff-baseline.json`) if the component existed then
47
+ * and has since changed — the durable anchor that survives history pruning.
48
+ * 2. Otherwise the most recent history snapshot in which the component *differs* from
49
+ * its current state (never merely the previous scan — that would let serial scans
50
+ * absorb the change).
51
+ * Returns null when no differing baseline is recoverable (genuinely unchanged, or the
52
+ * change predates the retained window).
53
+ */
54
+ function resolveAnchor(curr, ackModel, historyNewestFirst) {
55
+ if (ackModel) {
56
+ const acked = ackModel.components.find(c => c.id === curr.id);
57
+ if (acked)
58
+ return componentDiffers(acked, curr) ? acked : null;
59
+ // Not in the ack snapshot → created after acknowledgement; fall through to history.
60
+ }
61
+ for (const snapshot of historyNewestFirst) {
62
+ const prev = snapshot.components.find(c => c.id === curr.id);
63
+ if (!prev)
64
+ continue;
65
+ if (componentDiffers(prev, curr))
66
+ return prev;
67
+ // Equal to current in this snapshot — keep walking older ones for the change point.
68
+ }
69
+ return null;
70
+ }
71
+ /** True if the component appeared in the ack point or any retained history snapshot. */
72
+ function seenBefore(id, ackModel, historyNewestFirst) {
73
+ if (ackModel?.components.some(c => c.id === id))
74
+ return true;
75
+ return historyNewestFirst.some(s => s.components.some(c => c.id === id));
76
+ }
77
+ /** Runs compareComponents for one group and tags every emitted change with its bucket. */
78
+ function diffGroup(baselines, currents, bucket) {
79
+ return compareComponents(baselines, currents).map(c => ({ ...c, bucket }));
80
+ }
81
+ /**
82
+ * Single source of truth for `ptb diff` / `run_diff`. Classifies every component into
83
+ * one lifecycle bucket, diffs each against the correct baseline, and returns a tagged
84
+ * summary. Both the CLI and the MCP server call this so the two surfaces can never
85
+ * disagree on the same repo.
86
+ */
87
+ export function resolveDesignDiff(params) {
88
+ const { currentModel, lock, ackModel, historyNewestFirst = [], historyByFilename } = params;
89
+ /** The rich stamp-time baseline for a stamped component, from its pinned snapshot. */
90
+ const pinnedStampBaseline = (entry, currId) => {
91
+ if (!entry.stampedSnapshotFile || !historyByFilename)
92
+ return undefined;
93
+ const snapshot = historyByFilename.get(entry.stampedSnapshotFile);
94
+ return snapshot?.components.find(c => c.id === currId);
95
+ };
96
+ const driftBaselines = [];
97
+ const driftCurrents = [];
98
+ const unbuiltBaselines = [];
99
+ const unbuiltCurrents = [];
100
+ const newComponents = [];
101
+ const covered = new Set();
102
+ if (lock) {
103
+ for (const [slug, entry] of Object.entries(lock.components)) {
104
+ const curr = matchLockEntry(currentModel.components, entry.displayName, slug);
105
+ if (!curr)
106
+ continue;
107
+ covered.add(curr.id);
108
+ // Never stamped → not implemented. Show it with granular detail when it has
109
+ // drifted from its anchor; if it's a first appearance, show it as New; if it
110
+ // was seen before and is unchanged, it's backlog (ptb status), not a diff line.
111
+ if (!entry.stampedHash) {
112
+ const anchor = resolveAnchor(curr, ackModel, historyNewestFirst);
113
+ if (anchor) {
114
+ unbuiltBaselines.push(anchor);
115
+ unbuiltCurrents.push(curr);
116
+ }
117
+ else if (!seenBefore(curr.id, ackModel, historyNewestFirst))
118
+ newComponents.push(curr);
119
+ continue;
120
+ }
121
+ if (entry.stampedHash === entry.designHash)
122
+ continue; // in sync
123
+ // Stamped and drifted. Prefer the pinned stamp-time snapshot (full model — rich
124
+ // fields the contract omits still diff), then the lean contract (scan-timing-
125
+ // independent), then the history/ack anchor as a last resort.
126
+ const pinned = pinnedStampBaseline(entry, curr.id);
127
+ if (pinned) {
128
+ driftBaselines.push(pinned);
129
+ driftCurrents.push(curr);
130
+ }
131
+ else if (entry.stampedContract) {
132
+ driftBaselines.push(contractToComponent(curr.id, entry.displayName, entry.stampedContract));
133
+ driftCurrents.push(curr);
134
+ }
135
+ else {
136
+ const anchor = resolveAnchor(curr, ackModel, historyNewestFirst);
137
+ if (anchor) {
138
+ driftBaselines.push(anchor);
139
+ driftCurrents.push(curr);
140
+ }
141
+ }
142
+ }
143
+ }
144
+ // Components present in the model but absent from the lock entirely → first appearance.
145
+ for (const curr of currentModel.components) {
146
+ if (covered.has(curr.id))
147
+ continue;
148
+ newComponents.push(curr);
149
+ }
150
+ const changes = [
151
+ ...diffGroup(driftBaselines, driftCurrents, "drifted"),
152
+ ...diffGroup(unbuiltBaselines, unbuiltCurrents, "unbuilt"),
153
+ ...newComponents.map((c) => ({
154
+ entityId: c.id,
155
+ entityType: "component",
156
+ changeType: "added",
157
+ newValue: c,
158
+ bucket: "new",
159
+ })),
160
+ // Token changes are model-wide, not per-component — diff current tokens against
161
+ // the ack point when available, else the newest history snapshot.
162
+ ...compareTokens((ackModel ?? historyNewestFirst[0])?.tokens ?? currentModel.tokens, currentModel.tokens),
163
+ ];
164
+ // Deletions: components tracked in the lock that no longer appear in the model.
165
+ if (lock) {
166
+ for (const [slug, entry] of Object.entries(lock.components)) {
167
+ const stillPresent = matchLockEntry(currentModel.components, entry.displayName, slug);
168
+ if (!stillPresent) {
169
+ changes.push({
170
+ entityId: slug,
171
+ entityType: "component",
172
+ changeType: "deleted",
173
+ previousValue: { name: entry.displayName },
174
+ });
175
+ }
176
+ }
177
+ }
178
+ let addedCount = 0, modifiedCount = 0, deletedCount = 0;
179
+ for (const c of changes) {
180
+ if (c.changeType === "added")
181
+ addedCount++;
182
+ else if (c.changeType === "modified")
183
+ modifiedCount++;
184
+ else if (c.changeType === "deleted")
185
+ deletedCount++;
186
+ }
187
+ return {
188
+ timestamp: new Date().toISOString(),
189
+ changes,
190
+ addedCount,
191
+ modifiedCount,
192
+ deletedCount,
193
+ };
194
+ }
195
+ //# sourceMappingURL=resolve-design-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-design-diff.js","sourceRoot":"","sources":["../../src/diff/resolve-design-diff.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,15 @@ export type ClearDiffBaselineResult = {
4
4
  lockCleaned: boolean;
5
5
  };
6
6
  /**
7
- * Resets the diff baseline to the current snapshot state and clears stale
8
- * stamp entries from ptb.lock. Shared by `ptb diff clear` and the MCP `diff_clear` tool.
7
+ * Sets the diff acknowledgement point to the current snapshot state. After this,
8
+ * `ptb diff` / `run_diff` report only changes that occur *after* this moment (for
9
+ * unstamped and contractless components — stamped components keep diffing against
10
+ * their implementation contract).
11
+ *
12
+ * This is a pure *reporting* concern: it writes `diff-baseline.json` and never touches
13
+ * `ptb.lock`. The implementation record (stampedHash / stampedContract / verify state)
14
+ * that drives staleness, blockedBy, and the verify gate is left completely intact.
15
+ * Shared by `ptb diff ack` (aka `diff clear`) and the MCP `diff_clear` tool.
9
16
  */
10
17
  export declare function clearDiffBaseline(config: PTBConfig): Promise<ClearDiffBaselineResult>;
11
18
  //# sourceMappingURL=clear-diff-baseline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clear-diff-baseline.d.ts","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,MAAM,MAAM,uBAAuB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA6B3F"}
1
+ {"version":3,"file":"clear-diff-baseline.d.ts","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,MAAM,MAAM,uBAAuB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAU3F"}
@@ -2,36 +2,23 @@ import * as fs from "node:fs/promises";
2
2
  import * as path from "node:path";
3
3
  import { resolveDSPaths } from "../filesystem/resolve-ds-paths.js";
4
4
  /**
5
- * Resets the diff baseline to the current snapshot state and clears stale
6
- * stamp entries from ptb.lock. Shared by `ptb diff clear` and the MCP `diff_clear` tool.
5
+ * Sets the diff acknowledgement point to the current snapshot state. After this,
6
+ * `ptb diff` / `run_diff` report only changes that occur *after* this moment (for
7
+ * unstamped and contractless components — stamped components keep diffing against
8
+ * their implementation contract).
9
+ *
10
+ * This is a pure *reporting* concern: it writes `diff-baseline.json` and never touches
11
+ * `ptb.lock`. The implementation record (stampedHash / stampedContract / verify state)
12
+ * that drives staleness, blockedBy, and the verify gate is left completely intact.
13
+ * Shared by `ptb diff ack` (aka `diff clear`) and the MCP `diff_clear` tool.
7
14
  */
8
15
  export async function clearDiffBaseline(config) {
9
- const { metadataDir, workspaceRoot } = resolveDSPaths(config);
16
+ const { metadataDir } = resolveDSPaths(config);
10
17
  const latestPath = path.join(metadataDir, "latest.json");
11
18
  const baselinePath = path.join(metadataDir, "diff-baseline.json");
12
19
  const latestContent = await fs.readFile(latestPath, "utf-8");
13
20
  await fs.writeFile(baselinePath, latestContent, "utf-8");
14
- let lockCleaned = false;
15
- const lockPath = path.join(workspaceRoot, "ptb.lock");
16
- try {
17
- const lock = JSON.parse(await fs.readFile(lockPath, "utf-8"));
18
- for (const entry of Object.values(lock.components ?? {})) {
19
- if (entry.stampedSnapshotFile || entry.stampedHash) {
20
- delete entry.stampedSnapshotFile;
21
- delete entry.stampedHash;
22
- delete entry.stampedAt;
23
- delete entry.stampedMessage;
24
- lockCleaned = true;
25
- }
26
- }
27
- if (lockCleaned) {
28
- await fs.writeFile(lockPath, JSON.stringify(lock, null, 2) + "\n", "utf-8");
29
- }
30
- }
31
- catch (e) {
32
- if (e.code !== "ENOENT")
33
- throw new Error(`ptb.lock is corrupt or unreadable: ${e.message}`);
34
- }
35
- return { baselinePath, lockCleaned };
21
+ // Intentionally does NOT mutate ptb.lock — the ack point is reporting-only.
22
+ return { baselinePath, lockCleaned: false };
36
23
  }
37
24
  //# sourceMappingURL=clear-diff-baseline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clear-diff-baseline.js","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAiB;IACrD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAwB,CAAC;QACrF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,IAAK,KAAa,CAAC,mBAAmB,IAAK,KAAa,CAAC,WAAW,EAAE,CAAC;gBACnE,OAAQ,KAAa,CAAC,mBAAmB,CAAC;gBAC1C,OAAQ,KAAa,CAAC,WAAW,CAAC;gBAClC,OAAQ,KAAa,CAAC,SAAS,CAAC;gBAChC,OAAQ,KAAa,CAAC,cAAc,CAAC;gBACrC,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC;QACL,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"clear-diff-baseline.js","sourceRoot":"","sources":["../../src/snapshots/clear-diff-baseline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAiB;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEzD,4EAA4E;IAC5E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calibrate-ds/core",
3
- "version": "0.1.67",
3
+ "version": "0.1.68",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,8 +27,8 @@
27
27
  "pixelmatch": "^6.0.0",
28
28
  "pngjs": "^7.0.0",
29
29
  "zod": "^4.3.6",
30
- "@calibrate-ds/shared-types": "^0.1.67",
31
- "@calibrate-ds/figma-client": "^0.1.67"
30
+ "@calibrate-ds/shared-types": "^0.1.68",
31
+ "@calibrate-ds/figma-client": "^0.1.68"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "tsc -p tsconfig.json",