glyph-ai 0.3.65 → 0.4.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.
@@ -14,4 +14,15 @@ export interface DesignBriefParams {
14
14
  preset?: 'a' | 'b' | 'c' | 'd' | 'e';
15
15
  }
16
16
  export declare function buildDesignBrief(params: DesignBriefParams): Promise<string>;
17
+ export interface DirectionBriefParams {
18
+ fileContent: string;
19
+ filePath: string;
20
+ direction: string;
21
+ directionPath: string;
22
+ instruction?: string;
23
+ count: number;
24
+ designSystemContext?: string;
25
+ projectTokens?: ProjectTokens;
26
+ }
27
+ export declare function buildDirectionBrief(params: DirectionBriefParams): Promise<string>;
17
28
  //# sourceMappingURL=prompt-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/context/prompt-builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAI9E,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0JAA0J;IAC1J,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AA2KD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgEjF"}
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/context/prompt-builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAI9E,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0JAA0J;IAC1J,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AA2KD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgEjF;AAMD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgHvF"}
@@ -194,6 +194,105 @@ Return each variation in a labeled fenced code block:
194
194
 
195
195
  ${variationBlocks}
196
196
 
197
+ ### After Evaluating
198
+ Once all ${count} variations have passed visual self-evaluation (all dimensions 7+), call the \`submit_variations\` tool with:
199
+ - \`source_file\`: \`${filePath}\`
200
+ - \`variations\`: an array of objects, each with \`id\` (e.g. "variation-1") and \`code\` (the full file content)`);
201
+ return sections.join('\n\n');
202
+ }
203
+ export async function buildDirectionBrief(params) {
204
+ const { fileContent, filePath, direction, directionPath, instruction, count, designSystemContext, projectTokens } = params;
205
+ const sections = [];
206
+ // 0. Taste Layer
207
+ sections.push(renderTasteLayer());
208
+ // 1. Agent Identity
209
+ const agentIdentity = await renderAgentIdentity();
210
+ sections.push(agentIdentity);
211
+ // 2. Brief header
212
+ sections.push(`# Glyph Design Brief — Project Direction\n\n**Direction source:** \`${directionPath}\``);
213
+ // 3. Source file
214
+ sections.push(`## Source File\n**Path:** \`${filePath}\`\n\n\`\`\`tsx\n${fileContent}\n\`\`\``);
215
+ // 4. Design Philosophy (non-negotiable constraints)
216
+ const philosophy = await renderDesignPhilosophy();
217
+ sections.push(philosophy);
218
+ // 5. The project direction — this is the primary design authority
219
+ sections.push(`## Project Visual Direction\n\nThis is the established design direction for this project. All variations MUST follow it.\n\n${direction}`);
220
+ // 6. Project tokens (if available)
221
+ if (projectTokens) {
222
+ const rendered = renderProjectTokens(projectTokens);
223
+ if (!rendered.startsWith('No design system')) {
224
+ sections.push(rendered);
225
+ }
226
+ }
227
+ if (designSystemContext && !designSystemContext.startsWith('No design system')) {
228
+ sections.push(`## Raw Project Context\n${designSystemContext}`);
229
+ }
230
+ // 7. Workflow rules
231
+ sections.push(`## Workflow Rules
232
+ - **Adhere to the Design Philosophy above** — these are non-negotiable constraints.
233
+ - **Follow the Project Visual Direction** — this is the established aesthetic for this project. Do not deviate.
234
+ - If any generated code violates the anti-patterns table, fix it before outputting.
235
+ - **Hierarchy: Philosophy constraints > Project Direction > Project token values > Defaults.**
236
+ - Preserve the source file's structure and functionality — only transform the visual presentation.
237
+
238
+ ### Two-Pass Generation (Required)
239
+
240
+ For each variation, work in two explicit passes:
241
+
242
+ **Pass 1 — Structure:** Generate the component hierarchy and layout in semantic HTML. Use only structural utilities (flex, grid, gap, w-full, etc.). No colors, no typography classes, no shadows, no visual styling. Review the structure: does the hierarchy make sense? Is the information architecture clear? Are the right elements grouped together?
243
+
244
+ **Pass 2 — Style:** Apply the direction's design tokens over the confirmed structure. Typography scale, color roles, spacing values, shadows, border radii, interaction states — all applied in this pass. The structure is locked; do not reorganize components to accommodate styling.`);
245
+ if (instruction) {
246
+ sections.push(`## Additional Instructions\n${instruction}`);
247
+ }
248
+ // 8. Scoring rubric
249
+ const rubric = await renderScoringRubric();
250
+ // 9. Task
251
+ const variationBlocks = Array.from({ length: count }, (_, i) => {
252
+ return `\`\`\`glyph-variation-${i + 1}\n// Variation ${i + 1} code here\n\`\`\``;
253
+ }).join('\n\n');
254
+ sections.push(`## Your Task
255
+
256
+ Generate **${count} distinct variations** of the source file above, each following the **Project Visual Direction**.
257
+
258
+ ### Requirements
259
+ 1. Each variation must be a **complete, working replacement** for the source file.
260
+ 2. Preserve all functionality — only change visual presentation and styling.
261
+ 3. Each variation should explore a **different interpretation** of the direction:
262
+ - Variation 1: Faithful, close adaptation of the direction
263
+ - Variation 2: Bold, more expressive interpretation
264
+ - Variation 3: Minimal, stripped-back version
265
+ - Variation 4+: Creative explorations (different layouts, emphasis, density)
266
+ 4. Comply with Design Philosophy constraints. Use the direction's token values.
267
+ 5. Keep all imports and exports intact.
268
+ 6. Use inline styles or Tailwind classes as appropriate for the existing codebase.
269
+
270
+ ### Visual Self-Evaluation (Mandatory Gate)
271
+
272
+ After generating each variation (both passes complete), you **MUST** evaluate it visually before submitting:
273
+
274
+ 1. Call \`preview_draft\` with the variation code to get a rendered localhost URL
275
+ 2. Take a screenshot of the rendered output at that URL
276
+ 3. Score the screenshot on these dimensions (1-10 each):
277
+ - **Optical hierarchy clarity** — Can the eye find the primary action in under 1 second?
278
+ - **Typographic precision** — Is the type scale intentional? Are weights and sizes doing real work?
279
+ - **Color restraint and intentionality** — Is every color earning its place? No decorative noise?
280
+ - **Direction fidelity** — Does this unmistakably follow the established project direction?
281
+ - **Whitespace and composition** — Is spacing rhythmic and intentional, not just default gaps?
282
+ 4. If ANY dimension scores below 7: identify the single weakest element, propose a specific token-level fix, apply it, and re-evaluate
283
+ 5. Maximum 2 iteration rounds per variation
284
+ 6. **Do NOT call \`submit_variations\` until all variations score 7+ on all dimensions**
285
+ 7. If still below threshold after 2 iterations, submit with a note explaining what couldn't be resolved
286
+
287
+ ${rubric}
288
+
289
+ **If a variation looks like it could have been produced by a generic UI generator, it fails. Redesign it.**
290
+
291
+ ### Output Format
292
+ Return each variation in a labeled fenced code block:
293
+
294
+ ${variationBlocks}
295
+
197
296
  ### After Evaluating
198
297
  Once all ${count} variations have passed visual self-evaluation (all dimensions 7+), call the \`submit_variations\` tool with:
199
298
  - \`source_file\`: \`${filePath}\`
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/context/prompt-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/context/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -207,7 +207,7 @@ async function discardVariation() {
207
207
  // Routes
208
208
  // ---------------------------------------------------------------------------
209
209
  app.get('/health', (_req, res) => {
210
- res.json({ status: 'ok', version: '0.3.65' });
210
+ res.json({ status: 'ok', version: '0.3.66' });
211
211
  });
212
212
  app.get('/overlay.js', (_req, res) => {
213
213
  console.log('[Glyph] Serving overlay.js');
@@ -1 +1 @@
1
- {"version":3,"file":"generate-design-system.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/generate-design-system.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmIpE"}
1
+ {"version":3,"file":"generate-design-system.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/generate-design-system.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6CzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8GpE"}
@@ -2,110 +2,116 @@ import { z } from 'zod';
2
2
  import path from 'node:path';
3
3
  import fs from 'fs-extra';
4
4
  import { scanDesignSystemDetailed } from '../../context/design-system.js';
5
- import { getAvailableBrands, loadBrandDesignSystem } from '../../context/design-system-loader.js';
6
- import { generateDesignMd, buildBrandSummaries } from '../../context/design-md-generator.js';
5
+ import { generateDesignMd } from '../../context/design-md-generator.js';
7
6
  import { track } from '../../telemetry.js';
8
- import { renderTasteLayer, renderAnalyticalVoice } from '../../context/taste-layer.js';
7
+ import { renderTasteLayer } from '../../context/taste-layer.js';
8
+ // ---------------------------------------------------------------------------
9
+ // App-type to brand reference mapping
10
+ // ---------------------------------------------------------------------------
11
+ const APP_TYPE_BRANDS = {
12
+ dashboard: ['linear', 'vercel'],
13
+ saas: ['linear', 'stripe'],
14
+ 'e-commerce': ['stripe', 'apple'],
15
+ content: ['notion', 'arc'],
16
+ documentation: ['notion', 'stripe'],
17
+ messaging: ['claude', 'arc'],
18
+ marketing: ['apple', 'stripe'],
19
+ 'web-app': ['linear', 'elevenlabs'],
20
+ };
21
+ async function loadProjectContext(root) {
22
+ const contextPath = path.join(root, '.glyph', 'project-context.json');
23
+ if (await fs.pathExists(contextPath)) {
24
+ try {
25
+ return await fs.readJson(contextPath);
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ return null;
32
+ }
9
33
  export function registerGenerateDesignSystem(server) {
10
- server.tool('generate_design_system', "Generate a design.md design system for the user's project. Can extract from existing code, generate inspired by a reference brand, or create from scratch based on a description. Call without mode to see options.", {
34
+ server.tool('generate_design_system', "Generate a visual direction for the project. For new projects, creates design.md from industry best practices. For existing projects, scans the current design system and generates redesign.md with an improved visual direction. Checks for existing direction first — if one exists, returns it.", {
11
35
  project_root: z.string().optional(),
12
- mode: z.enum(['extract', 'brand-inspired', 'guided']).optional(),
13
- brand: z.string().optional(),
14
- description: z.string().optional(),
15
- suggest_improvements: z.boolean().optional(),
16
- output_path: z.string().optional(),
17
- }, async ({ project_root, mode, brand, description, suggest_improvements, output_path }) => {
36
+ force: z.boolean().optional().describe('Force regeneration even if a direction already exists'),
37
+ }, async ({ project_root, force }) => {
18
38
  const root = project_root || process.env.GLYPH_PROJECT_ROOT || process.cwd();
19
- track('mcp:generate_design_system', { mode, brand, hasDescription: !!description, projectRoot: root });
39
+ track('mcp:generate_design_system', { projectRoot: root, force });
20
40
  try {
21
- // Pre-scan: check for existing design.md and tokens
22
- const designMdPath = output_path || path.join(root, 'design.md');
23
- const hasExistingDesignMd = await fs.pathExists(designMdPath);
41
+ // ---------------------------------------------------------------
42
+ // 1. Check for existing direction
43
+ // ---------------------------------------------------------------
44
+ const designMdPath = path.join(root, 'design.md');
45
+ const redesignMdPath = path.join(root, 'redesign.md');
46
+ const hasDesignMd = await fs.pathExists(designMdPath);
47
+ const hasRedesignMd = await fs.pathExists(redesignMdPath);
48
+ if ((hasDesignMd || hasRedesignMd) && !force) {
49
+ const existingPath = hasRedesignMd ? redesignMdPath : designMdPath;
50
+ const existingContent = await fs.readFile(existingPath, 'utf-8');
51
+ return {
52
+ content: [{
53
+ type: 'text',
54
+ text: JSON.stringify({
55
+ status: 'direction_exists',
56
+ path: existingPath,
57
+ message: 'A Glyph direction already exists. Use it for all design work. Pass force: true to regenerate.',
58
+ direction: existingContent,
59
+ }, null, 2),
60
+ }],
61
+ };
62
+ }
63
+ // ---------------------------------------------------------------
64
+ // 2. Load project context
65
+ // ---------------------------------------------------------------
66
+ const context = await loadProjectContext(root);
67
+ const maturity = context?.maturity ?? 'existing';
68
+ const appType = context?.appType ?? 'web-app';
69
+ // ---------------------------------------------------------------
70
+ // 3. Select brand references based on app type
71
+ // ---------------------------------------------------------------
72
+ const brandCandidates = APP_TYPE_BRANDS[appType] || APP_TYPE_BRANDS['web-app'];
73
+ const primaryBrand = brandCandidates[0];
74
+ // ---------------------------------------------------------------
75
+ // 4. Scan existing design system (both paths need this)
76
+ // ---------------------------------------------------------------
24
77
  let existingScan;
25
- let hasExistingTokens = false;
26
- let tokenCount = 0;
27
78
  try {
28
79
  existingScan = await scanDesignSystemDetailed(root);
29
- tokenCount = existingScan.rawProperties.length;
30
- hasExistingTokens = tokenCount > 0;
31
80
  }
32
81
  catch {
33
- // Non-fatal — some modes don't need a scan
34
- }
35
- // State machine: route based on what's provided
36
- // Step 1: No mode — ask which mode
37
- if (!mode) {
38
- const result = {
39
- status: 'needs_input',
40
- question: 'mode_selection',
41
- options: {
42
- extract: 'Scan your codebase and document your existing design system as-is',
43
- 'brand-inspired': 'Start from a reference brand aesthetic and customize it for your project',
44
- guided: "Describe your brand and I'll generate a complete design system from scratch",
45
- },
46
- context: {
47
- has_existing_design_md: hasExistingDesignMd,
48
- has_existing_tokens: hasExistingTokens,
49
- token_count: tokenCount,
50
- },
51
- recommendation: hasExistingTokens ? 'extract' : 'guided',
52
- };
53
- if (hasExistingDesignMd) {
54
- result.existing_path = designMdPath;
55
- result.note = 'A design.md already exists at this path. Ask the user if they want to regenerate or update it.';
56
- }
57
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
58
- }
59
- // Step 2a: brand-inspired without brand — ask which brand
60
- if (mode === 'brand-inspired' && !brand) {
61
- const summaries = await buildBrandSummaries();
62
- const result = {
63
- status: 'needs_input',
64
- question: 'brand_selection',
65
- available_brands: getAvailableBrands(),
66
- brand_summaries: summaries,
67
- };
68
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
69
- }
70
- // Validate brand if provided
71
- if (mode === 'brand-inspired' && brand) {
72
- const brandData = await loadBrandDesignSystem(brand);
73
- if (!brandData) {
74
- const result = {
75
- status: 'error',
76
- message: `Unknown brand "${brand}". Available brands: ${getAvailableBrands().join(', ')}`,
77
- };
78
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
79
- }
80
- }
81
- // Step 2b: guided without description — ask for description
82
- if (mode === 'guided' && !description) {
83
- const result = {
84
- status: 'needs_input',
85
- question: 'description_needed',
86
- prompt: "Describe your product and the feeling you want the UI to have. Examples: 'B2B analytics dashboard, professional, dark mode, data-dense' or 'consumer mobile app, playful, bright, rounded'",
87
- };
88
- return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
82
+ // Non-fatal
89
83
  }
90
- // Step 3: All inputs present — generate
91
- const suggestImprovements = suggest_improvements ?? (mode === 'extract');
92
- // Select voice based on mode: analytical for extract, creative for brand-inspired/guided
93
- const voice = mode === 'extract' ? renderAnalyticalVoice() : renderTasteLayer();
84
+ // ---------------------------------------------------------------
85
+ // 5. Route: new design.md, existing → redesign.md
86
+ // ---------------------------------------------------------------
87
+ const isNew = maturity === 'new';
88
+ const outputPath = isNew ? designMdPath : redesignMdPath;
89
+ const mode = isNew ? 'brand-inspired' : 'brand-inspired';
90
+ // Both paths use brand-inspired mode — the difference is in the
91
+ // description we pass and whether we include existing scan context
92
+ const description = isNew
93
+ ? `New ${appType} project: ${context?.description || context?.projectName || 'web application'}. Create a complete design system from scratch using industry best practices.`
94
+ : `Existing ${appType} project: ${context?.description || context?.projectName || 'web application'}. Scan the current design system, identify what's working and what's not, then propose an improved visual direction. Acknowledge the current state but don't be constrained by it.`;
95
+ const voice = renderTasteLayer();
94
96
  const result = await generateDesignMd({
95
97
  root,
96
98
  mode,
97
- brand,
99
+ brand: primaryBrand,
98
100
  description,
99
- suggestImprovements,
100
- outputPath: designMdPath,
101
+ suggestImprovements: !isNew,
102
+ outputPath,
101
103
  existingScan,
102
104
  voice,
103
105
  });
104
106
  const response = {
105
107
  status: 'success',
108
+ type: isNew ? 'design' : 'redesign',
106
109
  design_md: result.designMd,
107
110
  summary: result.summary,
108
- output_path: designMdPath,
111
+ output_path: outputPath,
112
+ brand_references_used: brandCandidates,
113
+ app_type: appType,
114
+ maturity,
109
115
  };
110
116
  if (result.inconsistencies && result.inconsistencies.length > 0) {
111
117
  response.inconsistencies = result.inconsistencies;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-design-system.js","sourceRoot":"","sources":["../../../src/mcp/tools/generate-design-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-design-system.js","sourceRoot":"","sources":["../../../src/mcp/tools/generate-design-system.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-variations.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/generate-variations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2DlE"}
1
+ {"version":3,"file":"generate-variations.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/generate-variations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoElE"}
@@ -2,20 +2,32 @@ import fs from 'fs-extra';
2
2
  import path from 'node:path';
3
3
  import { z } from 'zod';
4
4
  import { track } from '../../telemetry.js';
5
- import { isValidBrand } from '../../context/brand-references.js';
6
- import { buildDesignBrief } from '../../context/prompt-builder.js';
5
+ import { buildDirectionBrief } from '../../context/prompt-builder.js';
7
6
  import { scanDesignSystem } from '../../context/design-system.js';
7
+ async function loadDirection(root) {
8
+ // Check redesign.md first (takes precedence for existing projects)
9
+ const redesignPath = path.join(root, 'redesign.md');
10
+ if (await fs.pathExists(redesignPath)) {
11
+ const content = await fs.readFile(redesignPath, 'utf-8');
12
+ return { path: redesignPath, content };
13
+ }
14
+ const designPath = path.join(root, 'design.md');
15
+ if (await fs.pathExists(designPath)) {
16
+ const content = await fs.readFile(designPath, 'utf-8');
17
+ return { path: designPath, content };
18
+ }
19
+ return null;
20
+ }
8
21
  export function registerGenerateVariations(server) {
9
- server.tool('generate_variations', 'Analyze a file and generate a design brief for creating UI variations with a specific brand aesthetic. Includes opinionated design philosophy, anti-pattern enforcement, and optional aesthetic presets (Surgical, Brutalist, Editorial, Dashboard/Functional, Consumer/Warm) with self-evaluation scoring.', {
22
+ server.tool('generate_variations', "Analyze a file and generate a design brief for creating UI variations. Uses the project's established design direction (design.md or redesign.md) as the constraint system. If no direction exists, tells the agent to create one first via generate_design_system.", {
10
23
  file: z.string(),
11
- brand: z.string().optional().default('elevenlabs'),
12
24
  instruction: z.string().optional(),
13
25
  count: z.number().optional().default(4),
14
- preset: z.enum(['a', 'b', 'c', 'd', 'e']).optional().describe('Aesthetic preset: a (Surgical/Minimal), b (Neo-Brutalist/Kinetic), c (Archival/Editorial), d (Dashboard/Functional), e (Consumer/Warm). Overrides general design rules where they conflict.'),
15
- }, async ({ file, brand, instruction, count, preset }) => {
16
- track('mcp:generate_variations', { file, brand, count });
26
+ }, async ({ file, instruction, count }) => {
17
27
  const projectRoot = process.env.GLYPH_PROJECT_ROOT || process.cwd();
18
28
  const filePath = path.resolve(projectRoot, file);
29
+ track('mcp:generate_variations', { file, count });
30
+ // Read source file
19
31
  let fileContent;
20
32
  try {
21
33
  fileContent = await fs.readFile(filePath, 'utf-8');
@@ -25,13 +37,20 @@ export function registerGenerateVariations(server) {
25
37
  content: [{ type: 'text', text: `Error: Could not read file at ${filePath}` }],
26
38
  };
27
39
  }
28
- // Check if brand reference exists
29
- if (!isValidBrand(brand)) {
40
+ // Check for direction
41
+ const direction = await loadDirection(projectRoot);
42
+ if (!direction) {
30
43
  return {
31
- content: [{ type: 'text', text: `Error: Unknown brand "${brand}". Available: ${['apple', 'arc', 'claude', 'elevenlabs', 'linear', 'notion', 'raycast', 'stripe', 'vercel'].join(', ')}` }],
44
+ content: [{
45
+ type: 'text',
46
+ text: JSON.stringify({
47
+ status: 'no_direction',
48
+ message: 'No Glyph direction found. Create one first by calling generate_design_system. This will generate a design.md or redesign.md that establishes the visual direction for the project. All variations must follow the established direction.',
49
+ }, null, 2),
50
+ }],
32
51
  };
33
52
  }
34
- // Scan design system for context
53
+ // Scan design system for additional context
35
54
  let designSystemContext;
36
55
  let projectTokens;
37
56
  try {
@@ -40,17 +59,18 @@ export function registerGenerateVariations(server) {
40
59
  designSystemContext = scanResult.raw;
41
60
  }
42
61
  catch {
43
- // non-fatal — proceed without design system context
62
+ // non-fatal
44
63
  }
45
- const brief = await buildDesignBrief({
64
+ // Build brief from direction
65
+ const brief = await buildDirectionBrief({
46
66
  fileContent,
47
67
  filePath: file,
48
- brand,
68
+ direction: direction.content,
69
+ directionPath: direction.path,
49
70
  instruction,
50
71
  count,
51
72
  designSystemContext,
52
73
  projectTokens,
53
- preset,
54
74
  });
55
75
  return {
56
76
  content: [{ type: 'text', text: brief }],
@@ -1 +1 @@
1
- {"version":3,"file":"generate-variations.js","sourceRoot":"","sources":["../../../src/mcp/tools/generate-variations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-variations.js","sourceRoot":"","sources":["../../../src/mcp/tools/generate-variations.ts"],"names":[],"mappings":"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"}
@@ -82,7 +82,7 @@ try {
82
82
  #__glyph_status.error { color:#f87171; }
83
83
  </style>
84
84
  </head>
85
- <body style="margin: 0; background: #0a0a0a;">
85
+ <body style="margin: 0;">
86
86
  <div id="root"></div>
87
87
  <div id="__glyph_status">Loading preview…</div>
88
88
  <script>
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmaA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6D1C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA+bA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6E1C"}
@@ -5,6 +5,7 @@ import { spawn } from 'child_process';
5
5
  import { fileURLToPath } from 'url';
6
6
  import fsExtra from 'fs-extra';
7
7
  const { pathExists, readFile, writeFile, readJson, writeJson, ensureDir } = fsExtra;
8
+ import { inferProjectContext } from '../inference/project-context.js';
8
9
  // ---------------------------------------------------------------------------
9
10
  // Helpers
10
11
  // ---------------------------------------------------------------------------
@@ -29,9 +30,20 @@ async function detectFramework(cwd) {
29
30
  return 'nextjs';
30
31
  }
31
32
  const viteConfigs = ['vite.config.js', 'vite.config.ts', 'vite.config.mjs', 'vite.config.cjs'];
33
+ let isVite = false;
32
34
  for (const name of viteConfigs) {
33
- if (await pathExists(path.join(cwd, name)))
35
+ if (await pathExists(path.join(cwd, name))) {
36
+ isVite = true;
37
+ break;
38
+ }
39
+ }
40
+ if (isVite) {
41
+ if (await hasReactDependency(cwd)) {
34
42
  return 'vite';
43
+ }
44
+ console.log(chalk.yellow(' Vite project detected but React not found in dependencies.'));
45
+ console.log(chalk.yellow(' Glyph currently supports React-based projects only.'));
46
+ return 'unknown';
35
47
  }
36
48
  if ((await pathExists(path.join(cwd, 'public', 'index.html'))) &&
37
49
  (await pathExists(path.join(cwd, 'src')))) {
@@ -39,6 +51,19 @@ async function detectFramework(cwd) {
39
51
  }
40
52
  return 'unknown';
41
53
  }
54
+ async function hasReactDependency(cwd) {
55
+ const pkgPath = path.join(cwd, 'package.json');
56
+ if (!(await pathExists(pkgPath)))
57
+ return false;
58
+ try {
59
+ const pkg = await readJson(pkgPath);
60
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
61
+ return !!(allDeps['react'] || allDeps['@vitejs/plugin-react'] || allDeps['@vitejs/plugin-react-swc']);
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ }
42
67
  // ---------------------------------------------------------------------------
43
68
  // Step 2 — Inject overlay script
44
69
  // ---------------------------------------------------------------------------
@@ -186,35 +211,36 @@ const CLAUDE_MD_MARKER = '<!-- glyph-start -->';
186
211
  const CLAUDE_MD_MARKER_END = '<!-- glyph-end -->';
187
212
  function getGlyphClaudeMdSection() {
188
213
  return `${CLAUDE_MD_MARKER}
189
- ## Glyph — UI Design Variations
214
+ ## Glyph — Design Intelligence
190
215
 
191
- This project uses [Glyph](https://www.npmjs.com/package/glyph-ai) for generating UI design variations. When the user asks for design variations, visual alternatives, redesigns, or to "make something look better" for any component, use the Glyph MCP tools instead of editing code directly.
216
+ This project uses [Glyph](https://www.npmjs.com/package/glyph-ai) for design intelligence.
192
217
 
193
- ### When to use Glyph
218
+ ### The Rule
219
+ Before designing anything, check for a Glyph direction:
220
+ - Look for \`design.md\` or \`redesign.md\` in the project root
221
+ - If none exists → create one first using \`generate_design_system\`
222
+ - If one exists → use it for ALL design work. Never deviate.
194
223
 
195
- - "generate variations of this component"
196
- - "give me 3 versions of this page"
197
- - "redesign this hero section"
198
- - "make this look better"
199
- - Any request for visual alternatives to a UI component
224
+ ### Creating a Direction (first time only)
225
+ Glyph auto-detects whether this is a new or existing project:
226
+ - **New projects** generates \`design.md\` from industry best practices
227
+ - **Existing projects** scans current design system, then generates \`redesign.md\` with a better visual direction
200
228
 
201
- ### Workflow
229
+ This is Glyph's core value. The direction establishes the aesthetic DNA for the entire project.
202
230
 
203
- 1. **generate_variations** Pass the file path to get a design brief with instructions for writing variations
204
- 2. **Write the variation code** Follow the brief to write N variations as complete component code
205
- 3. **preview_draft** (optional) Render a variation to a temporary URL and screenshot it to self-evaluate quality before submitting
206
- 4. **submit_variations** Submit all variations to the Glyph server; they appear in the user's browser overlay
207
- 5. **User picks a favorite** — The user previews and selects a variation in their browser
208
- 6. **apply_variation** — Writes the chosen variation to the source file (backup is created automatically)
231
+ ### Designing with the Direction
232
+ - Every page, feature, or component follows the established direction
233
+ - Use \`generate_variations\` with the file path and count
234
+ - The direction is automatically loaded as the constraint system
235
+ - Submit variations user previews in browser overlay picks one
209
236
 
210
- ### Aesthetic presets
237
+ ### Scope
238
+ Glyph is designed for pages, features, and full apps. You can use it for a single component, but it shines at page-level and above. Don't use Glyph to tweak a button color — that's just a code edit.
211
239
 
212
- You can pass a \`preset\` parameter to generate_variations:
213
- - \`a\` Surgical / Minimal
214
- - \`b\` Neo-Brutalist / Kinetic
215
- - \`c\` Archival / Editorial
216
- - \`d\` — Dashboard / Functional
217
- - \`e\` — Consumer / Warm
240
+ ### Workflow
241
+ 1. \`generate_design_system\` creates \`design.md\` or \`redesign.md\` (once per project)
242
+ 2. \`generate_variations\` write variation code → \`submit_variations\` (per design task)
243
+ 3. User previews in browser → \`apply_variation\` to finalize
218
244
  ${CLAUDE_MD_MARKER_END}`;
219
245
  }
220
246
  async function writeClaudeMd(cwd) {
@@ -249,40 +275,41 @@ async function writeCursorRules(cwd) {
249
275
  await ensureDir(rulesDir);
250
276
  const rulePath = path.join(rulesDir, 'glyph.mdc');
251
277
  const content = `---
252
- description: Use Glyph MCP tools when the user asks for UI design variations, visual alternatives, redesigns, or to make a component look better
278
+ description: Use Glyph MCP tools for design intelligence creating visual directions and generating design variations
253
279
  globs:
254
280
  alwaysApply: true
255
281
  ---
256
282
 
257
- # Glyph — UI Design Variations
283
+ # Glyph — Design Intelligence
258
284
 
259
- This project uses Glyph for generating UI design variations. When the user asks for design variations, visual alternatives, redesigns, or to "make something look better" for any component, use the Glyph MCP tools instead of editing code directly.
285
+ This project uses Glyph for design intelligence.
260
286
 
261
- ## When to use Glyph
287
+ ## The Rule
288
+ Before designing anything, check for a Glyph direction:
289
+ - Look for \`design.md\` or \`redesign.md\` in the project root
290
+ - If none exists → create one first using \`generate_design_system\`
291
+ - If one exists → use it for ALL design work. Never deviate.
262
292
 
263
- - "generate variations of this component"
264
- - "give me 3 versions of this page"
265
- - "redesign this hero section"
266
- - "make this look better"
267
- - Any request for visual alternatives to a UI component
293
+ ## Creating a Direction (first time only)
294
+ Glyph auto-detects whether this is a new or existing project:
295
+ - **New projects** generates \`design.md\` from industry best practices
296
+ - **Existing projects** scans current design system, then generates \`redesign.md\` with a better visual direction
268
297
 
269
- ## Workflow
298
+ This is Glyph's core value. The direction establishes the aesthetic DNA for the entire project.
270
299
 
271
- 1. **generate_variations** Pass the file path to get a design brief with instructions for writing variations
272
- 2. **Write the variation code** Follow the brief to write N variations as complete component code
273
- 3. **preview_draft** (optional) Render a variation to a temporary URL and screenshot it to self-evaluate quality before submitting
274
- 4. **submit_variations** Submit all variations to the Glyph server; they appear in the user's browser overlay
275
- 5. **User picks a favorite** — The user previews and selects a variation in their browser
276
- 6. **apply_variation** — Writes the chosen variation to the source file (backup is created automatically)
300
+ ## Designing with the Direction
301
+ - Every page, feature, or component follows the established direction
302
+ - Use \`generate_variations\` with the file path and count
303
+ - The direction is automatically loaded as the constraint system
304
+ - Submit variations user previews in browser overlay picks one
277
305
 
278
- ## Aesthetic presets
306
+ ## Scope
307
+ Glyph is designed for pages, features, and full apps. You can use it for a single component, but it shines at page-level and above. Don't use Glyph to tweak a button color — that's just a code edit.
279
308
 
280
- You can pass a \`preset\` parameter to generate_variations:
281
- - \`a\` Surgical / Minimal
282
- - \`b\` Neo-Brutalist / Kinetic
283
- - \`c\` Archival / Editorial
284
- - \`d\` — Dashboard / Functional
285
- - \`e\` — Consumer / Warm
309
+ ## Workflow
310
+ 1. \`generate_design_system\` creates \`design.md\` or \`redesign.md\` (once per project)
311
+ 2. \`generate_variations\` write variation code → \`submit_variations\` (per design task)
312
+ 3. User previews in browser → \`apply_variation\` to finalize
286
313
  `;
287
314
  await writeFile(rulePath, content, 'utf-8');
288
315
  console.log(chalk.green(' Wrote .cursor/rules/glyph.mdc'));
@@ -366,36 +393,45 @@ export async function init() {
366
393
  const framework = await detectFramework(cwd);
367
394
  const frameworkLabels = {
368
395
  nextjs: 'Next.js',
369
- vite: 'Vite',
396
+ vite: 'Vite + React',
370
397
  cra: 'Create React App',
371
398
  unknown: 'Unknown',
372
399
  };
373
400
  console.log(chalk.green(` Detected: ${frameworkLabels[framework]}`));
374
401
  console.log();
375
402
  // Step 2
376
- console.log(chalk.bold('2. Injecting overlay script...'));
377
- const overlayInjected = await injectOverlay(cwd, framework);
403
+ console.log(chalk.bold('2. Scanning project context...'));
404
+ const projectContext = await inferProjectContext(cwd, framework);
405
+ await ensureDir(path.join(cwd, '.glyph'));
406
+ await writeJson(path.join(cwd, '.glyph', 'project-context.json'), projectContext, { spaces: 2 });
407
+ console.log(chalk.green(` Project: ${projectContext.projectName} (${projectContext.appType}, ${projectContext.maturity})`));
408
+ console.log(chalk.green(` Direction: ${projectContext.hasGlyphDirection ? 'found' : 'none yet'}`));
378
409
  console.log();
379
410
  // Step 3
380
- console.log(chalk.bold('3. Writing MCP config files...'));
381
- await writeMcpConfigs(cwd);
411
+ console.log(chalk.bold('3. Injecting overlay script...'));
412
+ const overlayInjected = await injectOverlay(cwd, framework);
382
413
  console.log();
383
414
  // Step 4
384
- console.log(chalk.bold('4. Writing AI assistant rules...'));
415
+ console.log(chalk.bold('4. Writing MCP config files...'));
416
+ await writeMcpConfigs(cwd);
417
+ console.log();
418
+ // Step 5
419
+ console.log(chalk.bold('5. Writing AI assistant rules...'));
385
420
  await writeClaudeMd(cwd);
386
421
  await writeCursorRules(cwd);
387
422
  console.log();
388
- // Step 5
389
- console.log(chalk.bold('5. Creating .glyph directory...'));
423
+ // Step 6
424
+ console.log(chalk.bold('6. Creating .glyph directory...'));
390
425
  await createGlyphDir(cwd);
391
426
  console.log();
392
- // Step 6
393
- console.log(chalk.bold('6. Starting Glyph server...'));
427
+ // Step 7
428
+ console.log(chalk.bold('7. Starting Glyph server...'));
394
429
  const serverStarted = await startServer(cwd);
395
430
  console.log();
396
431
  // Summary
397
432
  console.log(chalk.bold('Setup complete!'));
398
433
  console.log();
434
+ console.log(` Project: ${chalk.green(projectContext.projectName)} (${projectContext.appType}, ${projectContext.maturity})`);
399
435
  console.log(` Framework: ${frameworkLabels[framework]}`);
400
436
  console.log(` Overlay: ${overlayInjected ? chalk.green('injected') : chalk.yellow('skipped')}`);
401
437
  console.log(` MCP configs: ${chalk.green('written')}`);
@@ -405,9 +441,16 @@ export async function init() {
405
441
  console.log(chalk.bold('Next steps:'));
406
442
  console.log(' 1. Start your dev server (npm run dev)');
407
443
  console.log(' 2. Open your app in the browser');
408
- console.log(' 3. In Claude Code, ask for design variations:');
444
+ if (!projectContext.hasGlyphDirection) {
445
+ console.log(' 3. Ask your AI agent to create a design direction:');
446
+ console.log(' "create a design direction for this project"');
447
+ console.log(' 4. Then ask for variations of any page:');
448
+ }
449
+ else {
450
+ console.log(' 3. Ask your AI agent for design variations:');
451
+ }
409
452
  console.log(' "give me 3 variations of the hero section in app/page.tsx"');
410
- console.log(' 4. Variations appear in a preview panel — click to preview, click Implement to keep');
453
+ console.log(' 5. Variations appear in a preview panel — click to preview, click Implement to keep');
411
454
  console.log();
412
455
  }
413
456
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { stop } from './commands/stop.js';
5
5
  const program = new Command();
6
6
  program
7
7
  .name('glyph')
8
- .version('0.1.0')
8
+ .version('0.4.0')
9
9
  .description('Design intelligence for the vibe coding era');
10
10
  program
11
11
  .command('init')
@@ -0,0 +1,13 @@
1
+ export interface ProjectContext {
2
+ projectName: string;
3
+ description: string;
4
+ framework: string;
5
+ appType: string;
6
+ maturity: 'new' | 'existing';
7
+ hasDesignSystem: boolean;
8
+ hasGlyphDirection: boolean;
9
+ routes: string[];
10
+ inferredAt: string;
11
+ }
12
+ export declare function inferProjectContext(cwd: string, framework: string): Promise<ProjectContext>;
13
+ //# sourceMappingURL=project-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/inference/project-context.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,GAAG,UAAU,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAyBjG"}
@@ -0,0 +1,153 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import fsExtra from 'fs-extra';
4
+ const { pathExists, readJson, readFile } = fsExtra;
5
+ export async function inferProjectContext(cwd, framework) {
6
+ const [pkgInfo, routes, gitDepth, componentCount, hasDesignSystem, hasGlyphDirection] = await Promise.all([
7
+ readPackageInfo(cwd),
8
+ scanRoutes(cwd),
9
+ getGitDepth(cwd),
10
+ countComponents(cwd),
11
+ checkDesignSystem(cwd),
12
+ checkGlyphDirection(cwd),
13
+ ]);
14
+ const appType = inferAppType(routes, pkgInfo.description);
15
+ const maturity = inferMaturity(gitDepth, componentCount, hasDesignSystem);
16
+ return {
17
+ projectName: pkgInfo.name,
18
+ description: pkgInfo.description,
19
+ framework,
20
+ appType,
21
+ maturity,
22
+ hasDesignSystem,
23
+ hasGlyphDirection,
24
+ routes,
25
+ inferredAt: new Date().toISOString(),
26
+ };
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // Signal readers
30
+ // ---------------------------------------------------------------------------
31
+ async function readPackageInfo(cwd) {
32
+ const pkgPath = path.join(cwd, 'package.json');
33
+ if (!(await pathExists(pkgPath)))
34
+ return { name: path.basename(cwd), description: '' };
35
+ try {
36
+ const pkg = await readJson(pkgPath);
37
+ return {
38
+ name: pkg.name || path.basename(cwd),
39
+ description: pkg.description || '',
40
+ };
41
+ }
42
+ catch {
43
+ return { name: path.basename(cwd), description: '' };
44
+ }
45
+ }
46
+ async function scanRoutes(cwd) {
47
+ const routes = [];
48
+ // Next.js app router
49
+ const appDir = [path.join(cwd, 'app'), path.join(cwd, 'src', 'app')];
50
+ // Next.js pages router
51
+ const pagesDir = [path.join(cwd, 'pages'), path.join(cwd, 'src', 'pages')];
52
+ // Generic routes
53
+ const routesDir = [path.join(cwd, 'src', 'routes')];
54
+ for (const dir of [...appDir, ...pagesDir, ...routesDir]) {
55
+ if (await pathExists(dir)) {
56
+ try {
57
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
58
+ for (const entry of entries) {
59
+ if (entry.isDirectory() && !entry.name.startsWith('_') && !entry.name.startsWith('.')) {
60
+ routes.push(entry.name);
61
+ }
62
+ }
63
+ }
64
+ catch {
65
+ // non-fatal
66
+ }
67
+ }
68
+ }
69
+ return [...new Set(routes)];
70
+ }
71
+ async function getGitDepth(cwd) {
72
+ try {
73
+ const { execSync } = await import('child_process');
74
+ const output = execSync('git rev-list --count HEAD', { cwd, timeout: 5000, encoding: 'utf-8' });
75
+ return parseInt(output.trim(), 10) || 0;
76
+ }
77
+ catch {
78
+ return 0;
79
+ }
80
+ }
81
+ async function countComponents(cwd) {
82
+ const srcDir = path.join(cwd, 'src');
83
+ if (!(await pathExists(srcDir)))
84
+ return 0;
85
+ let count = 0;
86
+ function walk(dir) {
87
+ try {
88
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
89
+ for (const entry of entries) {
90
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
91
+ walk(path.join(dir, entry.name));
92
+ }
93
+ else if (entry.isFile() && /\.(tsx|jsx)$/.test(entry.name)) {
94
+ count++;
95
+ }
96
+ }
97
+ }
98
+ catch {
99
+ // non-fatal
100
+ }
101
+ }
102
+ walk(srcDir);
103
+ // Also check app/ for Next.js
104
+ const appDir = path.join(cwd, 'app');
105
+ if (await pathExists(appDir))
106
+ walk(appDir);
107
+ return count;
108
+ }
109
+ async function checkDesignSystem(cwd) {
110
+ const indicators = [
111
+ 'tailwind.config.js', 'tailwind.config.ts', 'tailwind.config.mjs', 'tailwind.config.cjs',
112
+ 'tokens.json', 'theme.ts', 'theme.js',
113
+ ];
114
+ for (const file of indicators) {
115
+ if (await pathExists(path.join(cwd, file)))
116
+ return true;
117
+ if (await pathExists(path.join(cwd, 'src', file)))
118
+ return true;
119
+ }
120
+ return false;
121
+ }
122
+ async function checkGlyphDirection(cwd) {
123
+ return ((await pathExists(path.join(cwd, 'design.md'))) ||
124
+ (await pathExists(path.join(cwd, 'redesign.md'))));
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // Inference logic
128
+ // ---------------------------------------------------------------------------
129
+ function inferAppType(routes, description) {
130
+ const combined = [...routes, description.toLowerCase()].join(' ');
131
+ if (/dashboard|analytics|admin|metrics/.test(combined))
132
+ return 'dashboard';
133
+ if (/shop|store|cart|product|checkout|e-?commerce/.test(combined))
134
+ return 'e-commerce';
135
+ if (/blog|post|article|content/.test(combined))
136
+ return 'content';
137
+ if (/docs|documentation|guide/.test(combined))
138
+ return 'documentation';
139
+ if (/chat|message|conversation/.test(combined))
140
+ return 'messaging';
141
+ if (/landing|home|pricing|features/.test(combined))
142
+ return 'marketing';
143
+ if (/settings|profile|account|billing|team/.test(combined))
144
+ return 'saas';
145
+ return 'web-app';
146
+ }
147
+ function inferMaturity(gitDepth, componentCount, hasDesignSystem) {
148
+ // New: very few commits, few components, no custom tokens
149
+ if (gitDepth < 10 && componentCount < 5 && !hasDesignSystem)
150
+ return 'new';
151
+ return 'existing';
152
+ }
153
+ //# sourceMappingURL=project-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/inference/project-context.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AAcnD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,SAAiB;IACtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,CAAC,GACnF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,eAAe,CAAC,GAAG,CAAC;QACpB,UAAU,CAAC,GAAG,CAAC;QACf,WAAW,CAAC,GAAG,CAAC;QAChB,eAAe,CAAC,GAAG,CAAC;QACpB,iBAAiB,CAAC,GAAG,CAAC;QACtB,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IAE1E,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS;QACT,OAAO;QACP,QAAQ;QACR,eAAe;QACf,iBAAiB;QACjB,MAAM;QACN,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACvF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACpC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;SACnC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,qBAAqB;IACrB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,uBAAuB;IACvB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,iBAAiB;IACjB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpD,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAE1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,SAAS,IAAI,CAAC,GAAW;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACxF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnC,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7D,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEb,8BAA8B;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,MAAM,UAAU,GAAG;QACjB,oBAAoB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB;QACxF,aAAa,EAAE,UAAU,EAAE,UAAU;KACtC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAC5C,OAAO,CACL,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/C,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,SAAS,YAAY,CAAC,MAAgB,EAAE,WAAmB;IACzD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElE,IAAI,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC;IAC3E,IAAI,8CAA8C,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC;IACvF,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IACtE,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC;IACnE,IAAI,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC;IACvE,IAAI,uCAAuC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IAE1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,cAAsB,EAAE,eAAwB;IACvF,0DAA0D;IAC1D,IAAI,QAAQ,GAAG,EAAE,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,UAAU,CAAC;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glyph-ai",
3
- "version": "0.3.65",
3
+ "version": "0.4.0",
4
4
  "license": "FSL-1.1-Apache-2.0",
5
5
  "type": "module",
6
6
  "bin": {