glyph-ai 0.1.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 (106) hide show
  1. package/README.md +69 -0
  2. package/bundled/overlay/overlay.js +63 -0
  3. package/bundled/server/context/brand-references.d.ts +7 -0
  4. package/bundled/server/context/brand-references.d.ts.map +1 -0
  5. package/bundled/server/context/brand-references.js +20 -0
  6. package/bundled/server/context/brand-references.js.map +1 -0
  7. package/bundled/server/context/design-philosophy.d.ts +6 -0
  8. package/bundled/server/context/design-philosophy.d.ts.map +1 -0
  9. package/bundled/server/context/design-philosophy.js +82 -0
  10. package/bundled/server/context/design-philosophy.js.map +1 -0
  11. package/bundled/server/context/design-system-loader.d.ts +11 -0
  12. package/bundled/server/context/design-system-loader.d.ts.map +1 -0
  13. package/bundled/server/context/design-system-loader.js +169 -0
  14. package/bundled/server/context/design-system-loader.js.map +1 -0
  15. package/bundled/server/context/design-system.d.ts +7 -0
  16. package/bundled/server/context/design-system.d.ts.map +1 -0
  17. package/bundled/server/context/design-system.js +75 -0
  18. package/bundled/server/context/design-system.js.map +1 -0
  19. package/bundled/server/context/prompt-builder.d.ts +15 -0
  20. package/bundled/server/context/prompt-builder.d.ts.map +1 -0
  21. package/bundled/server/context/prompt-builder.js +123 -0
  22. package/bundled/server/context/prompt-builder.js.map +1 -0
  23. package/bundled/server/context/token-template.d.ts +36 -0
  24. package/bundled/server/context/token-template.d.ts.map +1 -0
  25. package/bundled/server/context/token-template.js +226 -0
  26. package/bundled/server/context/token-template.js.map +1 -0
  27. package/bundled/server/data/design-systems/apple-design-system.md +474 -0
  28. package/bundled/server/data/design-systems/arc-design-system.md +922 -0
  29. package/bundled/server/data/design-systems/claude-ai-design-system.md +1443 -0
  30. package/bundled/server/data/design-systems/elevenlabs-design-system.md +669 -0
  31. package/bundled/server/data/design-systems/generating_design.md +9 -0
  32. package/bundled/server/data/design-systems/linear-design-system.md +607 -0
  33. package/bundled/server/data/design-systems/notion-design-system.md +866 -0
  34. package/bundled/server/data/design-systems/raycast-design-system.md +709 -0
  35. package/bundled/server/data/design-systems/stripe-design-system.md +592 -0
  36. package/bundled/server/data/design-systems/vercel-design-system.md +824 -0
  37. package/bundled/server/data/design.md +971 -0
  38. package/bundled/server/index.d.ts +2 -0
  39. package/bundled/server/index.d.ts.map +1 -0
  40. package/bundled/server/index.js +310 -0
  41. package/bundled/server/index.js.map +1 -0
  42. package/bundled/server/mcp/tools/apply-variation.d.ts +3 -0
  43. package/bundled/server/mcp/tools/apply-variation.d.ts.map +1 -0
  44. package/bundled/server/mcp/tools/apply-variation.js +43 -0
  45. package/bundled/server/mcp/tools/apply-variation.js.map +1 -0
  46. package/bundled/server/mcp/tools/generate-variations.d.ts +3 -0
  47. package/bundled/server/mcp/tools/generate-variations.d.ts.map +1 -0
  48. package/bundled/server/mcp/tools/generate-variations.js +58 -0
  49. package/bundled/server/mcp/tools/generate-variations.js.map +1 -0
  50. package/bundled/server/mcp/tools/index.d.ts +3 -0
  51. package/bundled/server/mcp/tools/index.d.ts.map +1 -0
  52. package/bundled/server/mcp/tools/index.js +11 -0
  53. package/bundled/server/mcp/tools/index.js.map +1 -0
  54. package/bundled/server/mcp/tools/scan-design-system.d.ts +3 -0
  55. package/bundled/server/mcp/tools/scan-design-system.d.ts.map +1 -0
  56. package/bundled/server/mcp/tools/scan-design-system.js +27 -0
  57. package/bundled/server/mcp/tools/scan-design-system.js.map +1 -0
  58. package/bundled/server/mcp/tools/submit-variations.d.ts +3 -0
  59. package/bundled/server/mcp/tools/submit-variations.d.ts.map +1 -0
  60. package/bundled/server/mcp/tools/submit-variations.js +50 -0
  61. package/bundled/server/mcp/tools/submit-variations.js.map +1 -0
  62. package/bundled/server/mcp-entry.d.ts +2 -0
  63. package/bundled/server/mcp-entry.d.ts.map +1 -0
  64. package/bundled/server/mcp-entry.js +56 -0
  65. package/bundled/server/mcp-entry.js.map +1 -0
  66. package/bundled/server/preview/css-resolver.d.ts +6 -0
  67. package/bundled/server/preview/css-resolver.d.ts.map +1 -0
  68. package/bundled/server/preview/css-resolver.js +57 -0
  69. package/bundled/server/preview/css-resolver.js.map +1 -0
  70. package/bundled/server/preview/html-builder.d.ts +6 -0
  71. package/bundled/server/preview/html-builder.d.ts.map +1 -0
  72. package/bundled/server/preview/html-builder.js +85 -0
  73. package/bundled/server/preview/html-builder.js.map +1 -0
  74. package/bundled/server/telemetry.d.ts +4 -0
  75. package/bundled/server/telemetry.d.ts.map +1 -0
  76. package/bundled/server/telemetry.js +71 -0
  77. package/bundled/server/telemetry.js.map +1 -0
  78. package/bundled/server/types.d.ts +69 -0
  79. package/bundled/server/types.d.ts.map +1 -0
  80. package/bundled/server/types.js +2 -0
  81. package/bundled/server/types.js.map +1 -0
  82. package/bundled/server/variations/file-writer.d.ts +5 -0
  83. package/bundled/server/variations/file-writer.d.ts.map +1 -0
  84. package/bundled/server/variations/file-writer.js +29 -0
  85. package/bundled/server/variations/file-writer.js.map +1 -0
  86. package/bundled/server/variations/git-utils.d.ts +3 -0
  87. package/bundled/server/variations/git-utils.d.ts.map +1 -0
  88. package/bundled/server/variations/git-utils.js +23 -0
  89. package/bundled/server/variations/git-utils.js.map +1 -0
  90. package/bundled/server/variations/store.d.ts +11 -0
  91. package/bundled/server/variations/store.d.ts.map +1 -0
  92. package/bundled/server/variations/store.js +52 -0
  93. package/bundled/server/variations/store.js.map +1 -0
  94. package/dist/commands/init.d.ts +2 -0
  95. package/dist/commands/init.d.ts.map +1 -0
  96. package/dist/commands/init.js +299 -0
  97. package/dist/commands/init.js.map +1 -0
  98. package/dist/commands/stop.d.ts +2 -0
  99. package/dist/commands/stop.d.ts.map +1 -0
  100. package/dist/commands/stop.js +32 -0
  101. package/dist/commands/stop.js.map +1 -0
  102. package/dist/index.d.ts +3 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +35 -0
  105. package/dist/index.js.map +1 -0
  106. package/package.json +35 -0
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Structured token representation aligned with design.md Section 15.
3
+ * Used to produce clean, semantically-organized design system context
4
+ * instead of raw config/CSS dumps.
5
+ */
6
+ // ---------------------------------------------------------------------------
7
+ // Heuristic classification — maps CSS custom property names to semantic roles
8
+ // ---------------------------------------------------------------------------
9
+ const COLOR_PATTERNS = [
10
+ ['background', [/background/, /bg-base/, /bg$/]],
11
+ ['surface', [/surface/, /card-bg/, /panel-bg/]],
12
+ ['surface-raised', [/surface-raised/, /elevated/, /hover-bg/]],
13
+ ['border', [/(?<!radius)border(?!-radius)/, /divider/, /separator/]],
14
+ ['border-strong', [/border-strong/, /border-emphasis/]],
15
+ ['text-primary', [/text-primary/, /foreground$/, /(?<!\w)text$/]],
16
+ ['text-secondary', [/text-secondary/, /text-muted/, /text-subtle/]],
17
+ ['text-disabled', [/text-disabled/, /text-placeholder/]],
18
+ ['accent', [/accent(?!-)/, /primary(?!.*text)/, /brand(?!-)/, /interactive/]],
19
+ ['accent-hover', [/accent-hover/, /primary-hover/]],
20
+ ['accent-subtle', [/accent-subtle/, /primary-subtle/]],
21
+ ['destructive', [/destructive/, /error(?!-)/, /danger/, /(?<!\w)red$/]],
22
+ ['success', [/success/, /(?<!\w)green$/]],
23
+ ];
24
+ const TYPOGRAPHY_FAMILY_PATTERNS = [
25
+ ['display', [/font-display/, /font-heading/]],
26
+ ['body', [/font-body/, /font-sans/, /font-base/]],
27
+ ['mono', [/font-mono/, /font-code/]],
28
+ ];
29
+ const TYPOGRAPHY_SCALE_PATTERNS = [
30
+ ['text-xs', [/text-xs/, /font-size-xs/]],
31
+ ['text-sm', [/text-sm/, /font-size-sm/]],
32
+ ['text-base', [/text-base/, /font-size-base/]],
33
+ ['text-lg', [/text-lg/, /font-size-lg/]],
34
+ ['text-xl', [/text-xl/, /font-size-xl/]],
35
+ ['text-2xl', [/text-2xl/, /font-size-2xl/]],
36
+ ['text-3xl', [/text-3xl/, /font-size-3xl/]],
37
+ ['text-4xl', [/text-4xl/, /font-size-4xl/]],
38
+ ];
39
+ const SPACING_PATTERNS = [
40
+ ['base', [/space-base/, /spacing-base/, /spacing-unit/]],
41
+ ['space-1', [/space-1(?!\d)/, /spacing-1(?!\d)/]],
42
+ ['space-2', [/space-2(?!\d)/, /spacing-2(?!\d)/]],
43
+ ['space-3', [/space-3(?!\d)/, /spacing-3(?!\d)/]],
44
+ ['space-4', [/space-4(?!\d)/, /spacing-4(?!\d)/]],
45
+ ['space-6', [/space-6/, /spacing-6/]],
46
+ ['space-8', [/space-8/, /spacing-8/]],
47
+ ['space-12', [/space-12/, /spacing-12/]],
48
+ ['space-16', [/space-16/, /spacing-16/]],
49
+ ['space-24', [/space-24/, /spacing-24/]],
50
+ ];
51
+ const RADIUS_PATTERNS = [
52
+ ['radius-sm', [/radius-sm/, /rounded-sm/]],
53
+ ['radius-md', [/radius-md/, /rounded-md/, /radius$/]],
54
+ ['radius-lg', [/radius-lg/, /rounded-lg/]],
55
+ ['radius-xl', [/radius-xl/, /rounded-xl/]],
56
+ ['radius-full', [/radius-full/, /rounded-full/]],
57
+ ];
58
+ const SHADOW_PATTERNS = [
59
+ ['shadow-sm', [/shadow-sm/]],
60
+ ['shadow-md', [/shadow-md/, /shadow$/]],
61
+ ['shadow-lg', [/shadow-lg/]],
62
+ ];
63
+ const BREAKPOINT_PATTERNS = [
64
+ ['sm', [/breakpoint-sm/, /screen-sm/]],
65
+ ['md', [/breakpoint-md/, /screen-md/]],
66
+ ['lg', [/breakpoint-lg/, /screen-lg/]],
67
+ ['xl', [/breakpoint-xl/, /screen-xl/]],
68
+ ['2xl', [/breakpoint-2xl/, /screen-2xl/]],
69
+ ];
70
+ function matchPattern(name, patterns) {
71
+ const normalized = name.toLowerCase().replace(/^--/, '');
72
+ for (const [role, regexps] of patterns) {
73
+ for (const re of regexps) {
74
+ if (re.test(normalized))
75
+ return role;
76
+ }
77
+ }
78
+ return null;
79
+ }
80
+ /**
81
+ * Classifies raw CSS custom properties into design.md's semantic role system.
82
+ */
83
+ export function classifyTokens(rawProperties) {
84
+ const tokens = {
85
+ colors: {},
86
+ typography: { families: {}, weights: [], scale: {} },
87
+ spacing: { scale: {} },
88
+ radii: {},
89
+ shadows: {},
90
+ breakpoints: {},
91
+ unclassified: [],
92
+ };
93
+ for (const { name, value } of rawProperties) {
94
+ const normalized = name.toLowerCase().replace(/^--/, '');
95
+ // Font weight
96
+ if (/font-weight/.test(normalized)) {
97
+ if (!tokens.typography.weights.includes(value.trim())) {
98
+ tokens.typography.weights.push(value.trim());
99
+ }
100
+ continue;
101
+ }
102
+ // Typography families
103
+ const familyRole = matchPattern(name, TYPOGRAPHY_FAMILY_PATTERNS);
104
+ if (familyRole) {
105
+ tokens.typography.families[familyRole] = value.trim();
106
+ continue;
107
+ }
108
+ // Typography scale
109
+ const scaleRole = matchPattern(name, TYPOGRAPHY_SCALE_PATTERNS);
110
+ if (scaleRole) {
111
+ tokens.typography.scale[scaleRole] = value.trim();
112
+ continue;
113
+ }
114
+ // Colors — check before spacing since some names overlap
115
+ const colorRole = matchPattern(name, COLOR_PATTERNS);
116
+ if (colorRole) {
117
+ tokens.colors[colorRole] = value.trim();
118
+ continue;
119
+ }
120
+ // Spacing
121
+ const spacingRole = matchPattern(name, SPACING_PATTERNS);
122
+ if (spacingRole) {
123
+ if (spacingRole === 'base') {
124
+ tokens.spacing.base = value.trim();
125
+ }
126
+ else {
127
+ tokens.spacing.scale[spacingRole] = value.trim();
128
+ }
129
+ continue;
130
+ }
131
+ // Radius
132
+ const radiusRole = matchPattern(name, RADIUS_PATTERNS);
133
+ if (radiusRole) {
134
+ tokens.radii[radiusRole] = value.trim();
135
+ continue;
136
+ }
137
+ // Shadows
138
+ const shadowRole = matchPattern(name, SHADOW_PATTERNS);
139
+ if (shadowRole) {
140
+ tokens.shadows[shadowRole] = value.trim();
141
+ continue;
142
+ }
143
+ // Breakpoints
144
+ const bpRole = matchPattern(name, BREAKPOINT_PATTERNS);
145
+ if (bpRole) {
146
+ tokens.breakpoints[bpRole] = value.trim();
147
+ continue;
148
+ }
149
+ // Unclassified
150
+ tokens.unclassified.push({ name, value: value.trim() });
151
+ }
152
+ return tokens;
153
+ }
154
+ /**
155
+ * Renders structured tokens as markdown in design.md Section 15 format.
156
+ */
157
+ export function renderProjectTokens(tokens) {
158
+ const sections = [];
159
+ // Colors
160
+ if (Object.keys(tokens.colors).length > 0) {
161
+ const colorLines = Object.entries(tokens.colors)
162
+ .map(([role, val]) => ` --color-${role}: ${val};`)
163
+ .join('\n');
164
+ sections.push(`### Colors\n\`\`\`css\n:root {\n${colorLines}\n}\n\`\`\``);
165
+ }
166
+ // Typography
167
+ const typo = tokens.typography;
168
+ const hasTypo = Object.keys(typo.families).length > 0 || typo.weights.length > 0 || Object.keys(typo.scale).length > 0;
169
+ if (hasTypo) {
170
+ const lines = [];
171
+ for (const [role, val] of Object.entries(typo.families)) {
172
+ lines.push(` --font-${role}: ${val};`);
173
+ }
174
+ for (const w of typo.weights) {
175
+ lines.push(` --font-weight: ${w};`);
176
+ }
177
+ for (const [step, val] of Object.entries(typo.scale)) {
178
+ lines.push(` --${step}: ${val};`);
179
+ }
180
+ sections.push(`### Typography\n\`\`\`css\n:root {\n${lines.join('\n')}\n}\n\`\`\``);
181
+ }
182
+ // Spacing
183
+ const hasSpacing = tokens.spacing.base || Object.keys(tokens.spacing.scale).length > 0;
184
+ if (hasSpacing) {
185
+ const lines = [];
186
+ if (tokens.spacing.base)
187
+ lines.push(` --space-base: ${tokens.spacing.base};`);
188
+ for (const [step, val] of Object.entries(tokens.spacing.scale)) {
189
+ lines.push(` --${step}: ${val};`);
190
+ }
191
+ sections.push(`### Spacing\n\`\`\`css\n:root {\n${lines.join('\n')}\n}\n\`\`\``);
192
+ }
193
+ // Radius
194
+ if (Object.keys(tokens.radii).length > 0) {
195
+ const lines = Object.entries(tokens.radii)
196
+ .map(([role, val]) => ` --${role}: ${val};`)
197
+ .join('\n');
198
+ sections.push(`### Radius\n\`\`\`css\n:root {\n${lines}\n}\n\`\`\``);
199
+ }
200
+ // Shadows
201
+ if (Object.keys(tokens.shadows).length > 0) {
202
+ const lines = Object.entries(tokens.shadows)
203
+ .map(([role, val]) => ` --${role}: ${val};`)
204
+ .join('\n');
205
+ sections.push(`### Shadows\n\`\`\`css\n:root {\n${lines}\n}\n\`\`\``);
206
+ }
207
+ // Breakpoints
208
+ if (Object.keys(tokens.breakpoints).length > 0) {
209
+ const lines = Object.entries(tokens.breakpoints)
210
+ .map(([name, val]) => ` --breakpoint-${name}: ${val};`)
211
+ .join('\n');
212
+ sections.push(`### Breakpoints\n\`\`\`css\n:root {\n${lines}\n}\n\`\`\``);
213
+ }
214
+ // Unclassified
215
+ if (tokens.unclassified.length > 0) {
216
+ const lines = tokens.unclassified
217
+ .map(({ name, value }) => ` ${name}: ${value};`)
218
+ .join('\n');
219
+ sections.push(`### Other Tokens\n\`\`\`css\n:root {\n${lines}\n}\n\`\`\``);
220
+ }
221
+ if (sections.length === 0) {
222
+ return 'No design system tokens found in this project.';
223
+ }
224
+ return `## Project Design Tokens\n\n${sections.join('\n\n')}`;
225
+ }
226
+ //# sourceMappingURL=token-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-template.js","sourceRoot":"","sources":["../../src/context/token-template.ts"],"names":[],"mappings":"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"}