@miller-tech/uap 1.64.3 → 1.65.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 (41) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/bin/cli.js +15 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/cli/design.d.ts +9 -0
  5. package/dist/cli/design.d.ts.map +1 -0
  6. package/dist/cli/design.js +187 -0
  7. package/dist/cli/design.js.map +1 -0
  8. package/dist/cli/react.d.ts.map +1 -1
  9. package/dist/cli/react.js +4 -0
  10. package/dist/cli/react.js.map +1 -1
  11. package/dist/cli/setup.d.ts.map +1 -1
  12. package/dist/cli/setup.js +36 -0
  13. package/dist/cli/setup.js.map +1 -1
  14. package/dist/coordination/reactor.d.ts.map +1 -1
  15. package/dist/coordination/reactor.js +25 -2
  16. package/dist/coordination/reactor.js.map +1 -1
  17. package/dist/design/gate.d.ts +16 -0
  18. package/dist/design/gate.d.ts.map +1 -0
  19. package/dist/design/gate.js +79 -0
  20. package/dist/design/gate.js.map +1 -0
  21. package/dist/design/interrogate.d.ts +17 -0
  22. package/dist/design/interrogate.d.ts.map +1 -0
  23. package/dist/design/interrogate.js +258 -0
  24. package/dist/design/interrogate.js.map +1 -0
  25. package/dist/design/reactor-inject.d.ts +8 -0
  26. package/dist/design/reactor-inject.d.ts.map +1 -0
  27. package/dist/design/reactor-inject.js +37 -0
  28. package/dist/design/reactor-inject.js.map +1 -0
  29. package/dist/design/tokens.d.ts +62 -0
  30. package/dist/design/tokens.d.ts.map +1 -0
  31. package/dist/design/tokens.js +185 -0
  32. package/dist/design/tokens.js.map +1 -0
  33. package/dist/mcp-router/tools/react.d.ts.map +1 -1
  34. package/dist/mcp-router/tools/react.js +2 -0
  35. package/dist/mcp-router/tools/react.js.map +1 -1
  36. package/package.json +1 -1
  37. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  38. package/src/policies/enforcers/design_token_gate.py +145 -0
  39. package/src/policies/schemas/policies/design-token-gate.md +38 -0
  40. package/tools/agents/scripts/anthropic_proxy.py +22 -6
  41. package/tools/agents/tests/test_turn_count_breaker_periodic.py +64 -0
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/coordination/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,aAAa,CAAC;AAE/G,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAcD,wBAAgB,OAAO,CACrB,GAAG,EAAE,cAAc,EACnB,IAAI,CAAC,EAAE,cAAc,EACrB,IAAI,CAAC,EAAE,WAAW,GACjB,aAAa,CA8If"}
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/coordination/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAGtE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,aAAa,CAAC;AAE/G,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAcD,wBAAgB,OAAO,CACrB,GAAG,EAAE,cAAc,EACnB,IAAI,CAAC,EAAE,cAAc,EACrB,IAAI,CAAC,EAAE,WAAW,GACjB,aAAa,CAqKf"}
@@ -1,5 +1,6 @@
1
1
  import { getCapabilityRouter } from './capability-router.js';
2
2
  import { getPatternRouter } from './pattern-router.js';
3
+ import { maybeDesignInjection } from '../design/reactor-inject.js';
3
4
  const DEFAULT_INJECT_THRESHOLD = 0.30;
4
5
  const DEFAULT_AUTO_SPAWN_THRESHOLD = 0.80;
5
6
  const DEFAULT_MAX_INJECT_CHARS = 1200;
@@ -33,7 +34,22 @@ export function resolve(ctx, opts, deps) {
33
34
  }, ctx.changedFiles ?? []);
34
35
  const confidence = routeResult.confidence;
35
36
  const matchedPatterns = patternRouter.matchPatterns(ctx.promptText);
37
+ // DESIGN.md "guide new": when this is UI/UX work and the project has a
38
+ // DESIGN.md, surface the design-system summary so new UI stays on-token. This
39
+ // can fire independently of routing confidence (it's keyed off file/prompt
40
+ // signals), and is deduped per session via the `design:system` surfaced key.
41
+ const designKey = 'design:system';
42
+ const designInject = ctx.cwd && !(ctx.surfaced ?? []).includes(designKey)
43
+ ? maybeDesignInjection(ctx.cwd, ctx.promptText, ctx.changedFiles)
44
+ : null;
36
45
  if (confidence < injectThreshold && (!matchedPatterns || matchedPatterns.length === 0)) {
46
+ // No experts/patterns — but still inject design guidance if this is UI work.
47
+ if (designInject) {
48
+ result.inject = `## Design system (DESIGN.md)\n${designInject}`;
49
+ result.reason = 'DESIGN.md design-system guidance for UI work';
50
+ result.surfacedKeys = [designKey];
51
+ result.confidence = confidence;
52
+ }
37
53
  return result;
38
54
  }
39
55
  const recommendedDroids = routeResult.recommendedDroids ?? [];
@@ -118,9 +134,16 @@ export function resolve(ctx, opts, deps) {
118
134
  });
119
135
  }
120
136
  }
121
- result.inject = inject;
137
+ // Prepend the DESIGN.md guidance (if UI work) ahead of expert/pattern items.
138
+ if (designInject) {
139
+ result.inject = `## Design system (DESIGN.md)\n${designInject}${inject ? '\n\n' + inject : ''}`;
140
+ surfacedKeys.push(designKey);
141
+ }
142
+ else {
143
+ result.inject = inject;
144
+ }
122
145
  result.block = false;
123
- result.reason = `Routing confidence ${confidence.toFixed(2)}${matchedPatterns && matchedPatterns.length > 0 ? ', patterns matched' : ''}`;
146
+ result.reason = `Routing confidence ${confidence.toFixed(2)}${matchedPatterns && matchedPatterns.length > 0 ? ', patterns matched' : ''}${designInject ? ', design-system surfaced' : ''}`;
124
147
  result.actions = actions;
125
148
  result.surfacedKeys = surfacedKeys;
126
149
  result.confidence = confidence;
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/coordination/reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/coordination/reactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { TokenAllowList } from './tokens.js';
2
+ export interface OffTokenFinding {
3
+ line: number;
4
+ value: string;
5
+ kind: 'color' | 'spacing';
6
+ }
7
+ export declare function isUiFile(path: string): boolean;
8
+ /**
9
+ * Scan `content` for off-token colors/spacing. Returns findings; empty = clean.
10
+ * Values that appear in the allow-list, inside `var(--…)`, or as `{token.ref}`
11
+ * are considered on-token.
12
+ */
13
+ export declare function scanOffToken(content: string, filePath: string, allow: TokenAllowList): OffTokenFinding[];
14
+ /** Human-readable block message for the gate. */
15
+ export declare function formatGateMessage(findings: OffTokenFinding[], allow: TokenAllowList): string;
16
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/design/gate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAYD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB,eAAe,EAAE,CAgCnB;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAuB5F"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Off-token scanner shared by `uap design check` and (mirrored in pure stdlib)
3
+ * the Python design-token gate. Detects hardcoded colors / spacing in UI files
4
+ * that are not part of the project's DESIGN.md token allow-list.
5
+ *
6
+ * Colors are gated strictly (highest signal). Spacing is gated with a small
7
+ * ignore set (0–4px borders/hairlines, token values) to avoid false blocks.
8
+ */
9
+ import { extname } from 'path';
10
+ import { normalizeColor } from './tokens.js';
11
+ const UI_EXT = new Set(['.css', '.scss', '.sass', '.less', '.tsx', '.jsx', '.vue', '.svelte', '.html', '.astro']);
12
+ /** Spacing px values that are structural, not design-scale (borders, hairlines). */
13
+ const SPACING_IGNORE = new Set(['0px', '1px', '2px', '3px', '4px']);
14
+ export function isUiFile(path) {
15
+ return UI_EXT.has(extname(path).toLowerCase());
16
+ }
17
+ const HEX_RE = /#[0-9a-fA-F]{3,8}\b/g;
18
+ const FUNC_COLOR_RE = /\b(?:rgba?|hsla?|hwb|oklch|oklab|lch|lab)\([^)]*\)/gi;
19
+ const PX_RE = /\b\d{1,4}px\b/g;
20
+ /** Lines that are pure comments or token/var references should be ignored. */
21
+ function isIgnorableLine(line) {
22
+ const t = line.trim();
23
+ return t.startsWith('//') || t.startsWith('*') || t.startsWith('/*');
24
+ }
25
+ /**
26
+ * Scan `content` for off-token colors/spacing. Returns findings; empty = clean.
27
+ * Values that appear in the allow-list, inside `var(--…)`, or as `{token.ref}`
28
+ * are considered on-token.
29
+ */
30
+ export function scanOffToken(content, filePath, allow) {
31
+ if (!isUiFile(filePath))
32
+ return [];
33
+ const allowColors = new Set(allow.colors.map(normalizeColor));
34
+ const allowSpacing = new Set([...allow.spacing, ...allow.radii, ...allow.fontSizes]);
35
+ const findings = [];
36
+ const lines = content.split('\n');
37
+ lines.forEach((raw, i) => {
38
+ if (isIgnorableLine(raw))
39
+ return;
40
+ // Strip var(--x) and {token.ref} usages so their inner text isn't matched.
41
+ // The ref pattern is a dotted path only — it must NOT match CSS `{...}`
42
+ // declaration blocks (those contain `:` / `;`), or whole rules vanish.
43
+ const line = raw.replace(/var\(--[^)]*\)/g, '').replace(/\{[\w.-]+\}/g, '');
44
+ for (const m of line.matchAll(HEX_RE)) {
45
+ const c = normalizeColor(m[0]);
46
+ if (!allowColors.has(c))
47
+ findings.push({ line: i + 1, value: m[0], kind: 'color' });
48
+ }
49
+ for (const m of line.matchAll(FUNC_COLOR_RE)) {
50
+ const c = m[0].replace(/\s+/g, '').toLowerCase();
51
+ if (!allowColors.has(c))
52
+ findings.push({ line: i + 1, value: m[0], kind: 'color' });
53
+ }
54
+ for (const m of line.matchAll(PX_RE)) {
55
+ const px = m[0];
56
+ if (!SPACING_IGNORE.has(px) && !allowSpacing.has(px)) {
57
+ findings.push({ line: i + 1, value: px, kind: 'spacing' });
58
+ }
59
+ }
60
+ });
61
+ return findings;
62
+ }
63
+ /** Human-readable block message for the gate. */
64
+ export function formatGateMessage(findings, allow) {
65
+ const colors = findings.filter((f) => f.kind === 'color');
66
+ const spacing = findings.filter((f) => f.kind === 'spacing');
67
+ const parts = [
68
+ `design-token gate: this UI edit introduces values not in the "${allow.name}" design system.`,
69
+ ];
70
+ if (colors.length) {
71
+ parts.push(` off-token colors: ${[...new Set(colors.map((c) => c.value))].slice(0, 6).join(', ')}`, ` → use a DESIGN.md color token (${allow.colors.slice(0, 5).join(', ')}${allow.colors.length > 5 ? ', …' : ''}) or a CSS var.`);
72
+ }
73
+ if (spacing.length) {
74
+ parts.push(` off-scale spacing: ${[...new Set(spacing.map((s) => s.value))].slice(0, 6).join(', ')}`, ` → use a spacing token (${allow.spacing.join(', ') || 'define spacing in DESIGN.md'}).`);
75
+ }
76
+ parts.push(' Add the value to DESIGN.md (then run `uap design sync`), reference an existing token,', ' or bypass once with UAP_DESIGN_GATE_OFF=1.');
77
+ return parts.join('\n');
78
+ }
79
+ //# sourceMappingURL=gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/design/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElH,oFAAoF;AACpF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAQpE,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,MAAM,GAAG,sBAAsB,CAAC;AACtC,MAAM,aAAa,GAAG,sDAAsD,CAAC;AAC7E,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAE/B,8EAA8E;AAC9E,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,QAAgB,EAChB,KAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACvB,IAAI,eAAe,CAAC,GAAG,CAAC;YAAE,OAAO;QACjC,2EAA2E;QAC3E,wEAAwE;QACxE,uEAAuE;QACvE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAE5E,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB,CAAC,QAA2B,EAAE,KAAqB;IAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAa;QACtB,iEAAiE,KAAK,CAAC,IAAI,kBAAkB;KAC9F,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,uBAAuB,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxF,oCAAoC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAChI,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CACR,wBAAwB,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1F,4BAA4B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,6BAA6B,IAAI,CAC1F,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CACR,yFAAyF,EACzF,8CAA8C,CAC/C,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type DesignTokens } from './tokens.js';
2
+ export interface InterrogationResult {
3
+ tokens: DesignTokens;
4
+ prose: string;
5
+ /** Diagnostic counts for the CLI summary. */
6
+ stats: {
7
+ filesScanned: number;
8
+ colorsFound: number;
9
+ fontsFound: number;
10
+ spacingFound: number;
11
+ source: string;
12
+ };
13
+ }
14
+ export declare function interrogate(projectDir: string): InterrogationResult;
15
+ /** Serialize an InterrogationResult to a full DESIGN.md string. */
16
+ export declare function renderDesignMd(result: InterrogationResult): string;
17
+ //# sourceMappingURL=interrogate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrogate.d.ts","sourceRoot":"","sources":["../../src/design/interrogate.ts"],"names":[],"mappings":"AAYA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAShE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAuED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CA+GnE;AAiDD,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGlE"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Auto-interrogation: reverse-engineer a DESIGN.md from an existing UI codebase.
3
+ *
4
+ * Scans the common sources of a project's visual identity — CSS custom
5
+ * properties, Tailwind theme config, theme/token modules, and raw color/spacing
6
+ * usage in components — then synthesizes a best-effort DESIGN.md (token front
7
+ * matter + prose scaffold) for the agent to refine. This is the "autointerrogate
8
+ * existing" half; Google's CLI only lints/diffs, it does not derive.
9
+ */
10
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
11
+ import { join, extname, basename } from 'path';
12
+ import yaml from 'js-yaml';
13
+ import { normalizeColor } from './tokens.js';
14
+ const UI_EXT = new Set(['.css', '.scss', '.sass', '.less', '.tsx', '.jsx', '.vue', '.svelte', '.html', '.ts', '.js']);
15
+ const SKIP_DIRS = new Set([
16
+ 'node_modules', '.git', 'dist', 'build', '.next', '.nuxt', 'coverage',
17
+ '.worktrees', 'vendor', '.cache', 'out', '.uap-backups',
18
+ ]);
19
+ const MAX_FILES = 4000;
20
+ function walk(dir, acc, depth = 0) {
21
+ if (acc.length >= MAX_FILES || depth > 12)
22
+ return;
23
+ let entries;
24
+ try {
25
+ entries = readdirSync(dir);
26
+ }
27
+ catch {
28
+ return;
29
+ }
30
+ for (const e of entries) {
31
+ if (acc.length >= MAX_FILES)
32
+ return;
33
+ if (e.startsWith('.') && e !== '.') {
34
+ if (SKIP_DIRS.has(e))
35
+ continue;
36
+ }
37
+ const full = join(dir, e);
38
+ let st;
39
+ try {
40
+ st = statSync(full);
41
+ }
42
+ catch {
43
+ continue;
44
+ }
45
+ if (st.isDirectory()) {
46
+ if (SKIP_DIRS.has(e))
47
+ continue;
48
+ walk(full, acc, depth + 1);
49
+ }
50
+ else if (UI_EXT.has(extname(e))) {
51
+ acc.push(full);
52
+ }
53
+ }
54
+ }
55
+ const HEX_RE = /#[0-9a-fA-F]{3,8}\b/g;
56
+ const RGB_RE = /\brgba?\([^)]*\)/g;
57
+ const PX_RE = /\b(\d{1,4})px\b/g;
58
+ const FONT_FAMILY_RE = /font-family\s*:\s*([^;{}\n]+)/gi;
59
+ /** Pull the Tailwind theme (colors/fontFamily/spacing/borderRadius) if present. */
60
+ function readTailwind(projectDir) {
61
+ for (const name of ['tailwind.config.js', 'tailwind.config.cjs', 'tailwind.config.ts', 'tailwind.config.mjs']) {
62
+ const p = join(projectDir, name);
63
+ if (!existsSync(p))
64
+ continue;
65
+ const src = readFileSync(p, 'utf-8');
66
+ const out = {};
67
+ // Colors: capture "key": "#hex" or key: '#hex' pairs anywhere in the theme.
68
+ const colors = {};
69
+ for (const m of src.matchAll(/['"]?([\w-]+)['"]?\s*:\s*['"](#[0-9a-fA-F]{3,8}|rgba?\([^)]*\))['"]/g)) {
70
+ colors[m[1]] = m[2];
71
+ }
72
+ if (Object.keys(colors).length)
73
+ out.colors = colors;
74
+ return out;
75
+ }
76
+ return null;
77
+ }
78
+ /** Parse `--name: value;` CSS custom properties into colors/spacing buckets. */
79
+ function readCssVars(text, colors, spacing) {
80
+ for (const m of text.matchAll(/--([\w-]+)\s*:\s*([^;}{]+);/g)) {
81
+ const name = m[1];
82
+ const val = m[2].trim();
83
+ if (/#[0-9a-fA-F]{3,8}\b/.test(val) || /\brgba?\(/.test(val)) {
84
+ colors[name] = val;
85
+ }
86
+ else if (/^\d{1,4}px$/.test(val) && /space|gap|size|pad|margin|spacing/i.test(name)) {
87
+ spacing[name] = val;
88
+ }
89
+ }
90
+ }
91
+ function topN(counts, n) {
92
+ return [...counts.entries()].sort((a, b) => b[1] - a[1]).slice(0, n).map((x) => x[0]);
93
+ }
94
+ export function interrogate(projectDir) {
95
+ const files = [];
96
+ walk(projectDir, files);
97
+ const colorCounts = new Map();
98
+ const fontCounts = new Map();
99
+ const spacingCounts = new Map();
100
+ const cssVarColors = {};
101
+ const cssVarSpacing = {};
102
+ for (const f of files) {
103
+ let text;
104
+ try {
105
+ text = readFileSync(f, 'utf-8');
106
+ }
107
+ catch {
108
+ continue;
109
+ }
110
+ if (text.length > 600_000)
111
+ continue;
112
+ if (extname(f) === '.css' || extname(f) === '.scss' || extname(f) === '.less' || extname(f) === '.sass') {
113
+ readCssVars(text, cssVarColors, cssVarSpacing);
114
+ }
115
+ for (const m of text.matchAll(HEX_RE))
116
+ colorCounts.set(normalizeColor(m[0]), (colorCounts.get(normalizeColor(m[0])) ?? 0) + 1);
117
+ for (const m of text.matchAll(RGB_RE)) {
118
+ const c = m[0].replace(/\s+/g, '').toLowerCase();
119
+ colorCounts.set(c, (colorCounts.get(c) ?? 0) + 1);
120
+ }
121
+ for (const m of text.matchAll(PX_RE)) {
122
+ const px = `${m[1]}px`;
123
+ spacingCounts.set(px, (spacingCounts.get(px) ?? 0) + 1);
124
+ }
125
+ for (const m of text.matchAll(FONT_FAMILY_RE)) {
126
+ const fam = m[1].split(',')[0].replace(/['"]/g, '').trim();
127
+ if (fam && !/^var\(|^inherit|^initial|^unset/.test(fam)) {
128
+ fontCounts.set(fam, (fontCounts.get(fam) ?? 0) + 1);
129
+ }
130
+ }
131
+ }
132
+ const tw = readTailwind(projectDir);
133
+ // ---- Assemble colors ----
134
+ const colors = {};
135
+ const roleNames = ['primary', 'secondary', 'tertiary', 'neutral', 'accent', 'surface'];
136
+ // Prefer named sources (tailwind, css vars) then fall back to frequency.
137
+ const named = { ...(tw?.colors ?? {}), ...cssVarColors };
138
+ for (const [k, v] of Object.entries(named))
139
+ colors[k] = v;
140
+ // Fill role slots from the most-used raw colors not already present.
141
+ const usedVals = new Set(Object.values(colors).map((v) => normalizeColor(v)));
142
+ const freqColors = topN(colorCounts, 12).filter((c) => !usedVals.has(c));
143
+ let roleIdx = 0;
144
+ for (const c of freqColors) {
145
+ if (roleIdx >= roleNames.length)
146
+ break;
147
+ while (roleIdx < roleNames.length && colors[roleNames[roleIdx]])
148
+ roleIdx++;
149
+ if (roleIdx < roleNames.length) {
150
+ colors[roleNames[roleIdx]] = c;
151
+ roleIdx++;
152
+ }
153
+ }
154
+ // ---- Typography ----
155
+ const fonts = topN(fontCounts, 2);
156
+ const typography = {};
157
+ if (fonts[0]) {
158
+ typography['h1'] = { fontFamily: fonts[0], fontSize: '32px', fontWeight: 700, lineHeight: 1.2 };
159
+ typography['body-md'] = { fontFamily: fonts[0], fontSize: '16px', fontWeight: 400, lineHeight: 1.5 };
160
+ }
161
+ if (fonts[1]) {
162
+ typography['label'] = { fontFamily: fonts[1], fontSize: '12px', fontWeight: 500 };
163
+ }
164
+ // ---- Spacing & radius ----
165
+ const spacing = {};
166
+ const scaleNames = ['xs', 'sm', 'md', 'lg', 'xl'];
167
+ const cssSpacingVals = Object.values(cssVarSpacing);
168
+ const freqSpacing = (cssSpacingVals.length ? cssSpacingVals : topN(spacingCounts, 6))
169
+ .map((s) => parseInt(String(s), 10))
170
+ .filter((n) => Number.isFinite(n) && n > 0 && n <= 128)
171
+ .sort((a, b) => a - b);
172
+ const uniqSpacing = [...new Set(freqSpacing)].slice(0, scaleNames.length);
173
+ uniqSpacing.forEach((n, i) => {
174
+ spacing[scaleNames[i]] = `${n}px`;
175
+ });
176
+ const tokens = {
177
+ version: 'alpha',
178
+ name: guessName(projectDir),
179
+ description: 'Auto-interrogated from existing UI. Refine the prose and token roles.',
180
+ };
181
+ if (Object.keys(colors).length)
182
+ tokens.colors = colors;
183
+ if (typography && Object.keys(typography).length)
184
+ tokens.typography = typography;
185
+ if (Object.keys(spacing).length)
186
+ tokens.spacing = spacing;
187
+ const source = tw?.colors
188
+ ? 'tailwind'
189
+ : Object.keys(cssVarColors).length
190
+ ? 'css-vars'
191
+ : colorCounts.size
192
+ ? 'usage'
193
+ : 'none';
194
+ return {
195
+ tokens,
196
+ prose: renderProse(tokens, source),
197
+ stats: {
198
+ filesScanned: files.length,
199
+ colorsFound: colorCounts.size,
200
+ fontsFound: fontCounts.size,
201
+ spacingFound: spacingCounts.size,
202
+ source,
203
+ },
204
+ };
205
+ }
206
+ function guessName(projectDir) {
207
+ try {
208
+ const pkg = join(projectDir, 'package.json');
209
+ if (existsSync(pkg)) {
210
+ const name = JSON.parse(readFileSync(pkg, 'utf-8')).name;
211
+ if (name)
212
+ return String(name).replace(/^@[^/]+\//, '').replace(/[-_]/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
213
+ }
214
+ }
215
+ catch {
216
+ /* ignore */
217
+ }
218
+ return basename(projectDir).replace(/[-_]/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
219
+ }
220
+ /** Render the DESIGN.md prose scaffold from the derived tokens. */
221
+ function renderProse(tokens, source) {
222
+ const colorLines = Object.entries(tokens.colors ?? {})
223
+ .map(([k, v]) => `- **${k} (${v}):** _describe the role of this color._`)
224
+ .join('\n');
225
+ const fontList = [...new Set(Object.values(tokens.typography ?? {}).map((t) => t.fontFamily).filter(Boolean))];
226
+ return [
227
+ '## Overview',
228
+ '',
229
+ `_Auto-interrogated from existing UI (source: ${source}). This is a starting point —`,
230
+ 'describe the brand personality, audience, and the feeling the UI should evoke, then',
231
+ 'correct any mis-assigned token roles above._',
232
+ '',
233
+ '## Colors',
234
+ '',
235
+ 'The palette below was derived from the most prevalent colors in the codebase.',
236
+ 'Re-map roles (primary/secondary/tertiary/neutral) to match the real design intent.',
237
+ '',
238
+ colorLines || '_No colors detected._',
239
+ '',
240
+ '## Typography',
241
+ '',
242
+ fontList.length
243
+ ? `Primary typeface: **${fontList[0]}**.${fontList[1] ? ` Secondary: **${fontList[1]}**.` : ''} Refine the type scale in the front matter.`
244
+ : '_No font families detected — set them in the front matter._',
245
+ '',
246
+ "## Do's and Don'ts",
247
+ '',
248
+ "- **Do** use the tokens above for all new UI.",
249
+ "- **Don't** hardcode off-token colors or spacing — the UAP design gate blocks them.",
250
+ '',
251
+ ].join('\n');
252
+ }
253
+ /** Serialize an InterrogationResult to a full DESIGN.md string. */
254
+ export function renderDesignMd(result) {
255
+ const fm = yaml.dump(result.tokens, { lineWidth: 100, quotingType: '"', forceQuotes: false }).trimEnd();
256
+ return `---\n${fm}\n---\n\n# ${result.tokens.name}\n\n${result.prose}`;
257
+ }
258
+ //# sourceMappingURL=interrogate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrogate.js","sourceRoot":"","sources":["../../src/design/interrogate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** True when the reactor context looks like UI/UX work. */
2
+ export declare function isUiWork(promptText?: string, changedFiles?: string[]): boolean;
3
+ /**
4
+ * Build the design-system injection string, or null if not applicable.
5
+ * `cwd` is the project root the reactor is operating in.
6
+ */
7
+ export declare function maybeDesignInjection(cwd: string, promptText?: string, changedFiles?: string[]): string | null;
8
+ //# sourceMappingURL=reactor-inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor-inject.d.ts","sourceRoot":"","sources":["../../src/design/reactor-inject.ts"],"names":[],"mappings":"AAcA,2DAA2D;AAC3D,wBAAgB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAI9E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,GAAG,IAAI,CAUf"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Reactor hook for DESIGN.md: when a prompt or changed-file set indicates UI/UX
3
+ * work, surface the project's design-system summary so new UI stays on-token
4
+ * ("guide new"). Returns null when it's not UI work or the project has no
5
+ * DESIGN.md — keeping the reactor silent for non-design tasks.
6
+ */
7
+ import { extname } from 'path';
8
+ import { loadDesign, summarizeForReactor } from './tokens.js';
9
+ const UI_EXT = new Set(['.css', '.scss', '.sass', '.less', '.tsx', '.jsx', '.vue', '.svelte', '.html', '.astro']);
10
+ const UI_PROMPT_RE = /\b(ui|ux|css|scss|style|styl(?:e|ing)|button|component|colou?r|palette|theme|theming|design|layout|font|typograph|spacing|tailwind|frontend|front-end|page|screen|view|modal|navbar|sidebar|header|footer|card|form|landing|hero|brand)\b/i;
11
+ /** True when the reactor context looks like UI/UX work. */
12
+ export function isUiWork(promptText, changedFiles) {
13
+ if (changedFiles?.some((f) => UI_EXT.has(extname(f).toLowerCase())))
14
+ return true;
15
+ if (promptText && UI_PROMPT_RE.test(promptText))
16
+ return true;
17
+ return false;
18
+ }
19
+ /**
20
+ * Build the design-system injection string, or null if not applicable.
21
+ * `cwd` is the project root the reactor is operating in.
22
+ */
23
+ export function maybeDesignInjection(cwd, promptText, changedFiles) {
24
+ if (!isUiWork(promptText, changedFiles))
25
+ return null;
26
+ let loaded;
27
+ try {
28
+ loaded = loadDesign(cwd);
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ if (!loaded)
34
+ return null;
35
+ return summarizeForReactor(loaded.parsed);
36
+ }
37
+ //# sourceMappingURL=reactor-inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor-inject.js","sourceRoot":"","sources":["../../src/design/reactor-inject.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElH,MAAM,YAAY,GAChB,4OAA4O,CAAC;AAE/O,2DAA2D;AAC3D,MAAM,UAAU,QAAQ,CAAC,UAAmB,EAAE,YAAuB;IACnE,IAAI,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjF,IAAI,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,UAAmB,EACnB,YAAuB;IAEvB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}