glyph-ai 0.3.66 → 0.4.1

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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"}
@@ -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":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,mEAAmE;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,qQAAqQ,EACrQ;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACxC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEjD,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAElD,mBAAmB;QACnB,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iCAAiC,QAAQ,EAAE,EAAE,CAAC;aACxF,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,cAAc;4BACtB,OAAO,EAAE,0OAA0O;yBACpP,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IAAI,mBAAuC,CAAC;QAC5C,IAAI,aAAkF,CAAC;QACvF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACvD,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC;YACtC,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QAED,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;YACtC,WAAW;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,SAAS,CAAC,OAAO;YAC5B,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,WAAW;YACX,KAAK;YACL,mBAAmB;YACnB,aAAa;SACd,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAClD,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -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":"AA4bA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6D1C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAseA,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
  // ---------------------------------------------------------------------------
@@ -175,10 +176,19 @@ async function writeMcpConfigs(cwd) {
175
176
  GLYPH_TELEMETRY_URL: 'https://rlvschfrrpzxqkwwwdfh.supabase.co/functions/v1/glyph-ingest',
176
177
  },
177
178
  };
178
- // Claude Code — .mcp.json at project root
179
- const claudeConfigPath = path.join(cwd, '.mcp.json');
180
- await mergeMcpConfig(claudeConfigPath, glyphEntry);
181
- console.log(chalk.green(' Wrote .mcp.json (Claude Code)'));
179
+ // Claude Code — try `claude mcp add` first (auto-trusts, no approval dialog)
180
+ // Falls back to .mcp.json if `claude` CLI isn't available
181
+ const claudeAdded = await tryClaudeMcpAdd(cwd, mcpEntryPath);
182
+ if (claudeAdded) {
183
+ console.log(chalk.green(' Registered Glyph MCP server via Claude Code CLI (auto-trusted)'));
184
+ }
185
+ else {
186
+ // Fallback: write .mcp.json (will require manual approval on first use)
187
+ const claudeConfigPath = path.join(cwd, '.mcp.json');
188
+ await mergeMcpConfig(claudeConfigPath, glyphEntry);
189
+ console.log(chalk.green(' Wrote .mcp.json (Claude Code)'));
190
+ console.log(chalk.yellow(' Note: Claude Code will ask you to approve the Glyph MCP server on first use.'));
191
+ }
182
192
  // Cursor — .cursor/mcp.json
183
193
  const cursorDir = path.join(cwd, '.cursor');
184
194
  await ensureDir(cursorDir);
@@ -186,6 +196,33 @@ async function writeMcpConfigs(cwd) {
186
196
  await mergeMcpConfig(cursorConfigPath, glyphEntry);
187
197
  console.log(chalk.green(' Wrote .cursor/mcp.json (Cursor)'));
188
198
  }
199
+ async function tryClaudeMcpAdd(cwd, mcpEntryPath) {
200
+ try {
201
+ const { execSync } = await import('child_process');
202
+ // Check if claude CLI exists
203
+ execSync('which claude', { timeout: 3000, stdio: 'ignore' });
204
+ // Remove existing glyph server if present (idempotent)
205
+ try {
206
+ execSync('claude mcp remove glyph -s project', { cwd, timeout: 5000, stdio: 'ignore' });
207
+ }
208
+ catch {
209
+ // Not present, that's fine
210
+ }
211
+ // Add with project scope — name comes before -e flags
212
+ const cmd = [
213
+ 'claude mcp add -s project glyph',
214
+ `-e GLYPH_PROJECT_ROOT=${cwd}`,
215
+ `-e GLYPH_PORT=${GLYPH_PORT}`,
216
+ `-e GLYPH_TELEMETRY_URL=https://rlvschfrrpzxqkwwwdfh.supabase.co/functions/v1/glyph-ingest`,
217
+ `-- node ${mcpEntryPath}`,
218
+ ].join(' ');
219
+ execSync(cmd, { cwd, timeout: 10000, stdio: 'ignore' });
220
+ return true;
221
+ }
222
+ catch {
223
+ return false;
224
+ }
225
+ }
189
226
  async function mergeMcpConfig(filePath, entry) {
190
227
  let config = {};
191
228
  if (await pathExists(filePath)) {
@@ -210,35 +247,36 @@ const CLAUDE_MD_MARKER = '<!-- glyph-start -->';
210
247
  const CLAUDE_MD_MARKER_END = '<!-- glyph-end -->';
211
248
  function getGlyphClaudeMdSection() {
212
249
  return `${CLAUDE_MD_MARKER}
213
- ## Glyph — UI Design Variations
250
+ ## Glyph — Design Intelligence
214
251
 
215
- 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.
252
+ This project uses [Glyph](https://www.npmjs.com/package/glyph-ai) for design intelligence.
216
253
 
217
- ### When to use Glyph
254
+ ### The Rule
255
+ Before designing anything, check for a Glyph direction:
256
+ - Look for \`design.md\` or \`redesign.md\` in the project root
257
+ - If none exists → create one first using \`generate_design_system\`
258
+ - If one exists → use it for ALL design work. Never deviate.
218
259
 
219
- - "generate variations of this component"
220
- - "give me 3 versions of this page"
221
- - "redesign this hero section"
222
- - "make this look better"
223
- - Any request for visual alternatives to a UI component
260
+ ### Creating a Direction (first time only)
261
+ Glyph auto-detects whether this is a new or existing project:
262
+ - **New projects** generates \`design.md\` from industry best practices
263
+ - **Existing projects** scans current design system, then generates \`redesign.md\` with a better visual direction
224
264
 
225
- ### Workflow
265
+ This is Glyph's core value. The direction establishes the aesthetic DNA for the entire project.
226
266
 
227
- 1. **generate_variations** Pass the file path to get a design brief with instructions for writing variations
228
- 2. **Write the variation code** Follow the brief to write N variations as complete component code
229
- 3. **preview_draft** (optional) Render a variation to a temporary URL and screenshot it to self-evaluate quality before submitting
230
- 4. **submit_variations** Submit all variations to the Glyph server; they appear in the user's browser overlay
231
- 5. **User picks a favorite** — The user previews and selects a variation in their browser
232
- 6. **apply_variation** — Writes the chosen variation to the source file (backup is created automatically)
267
+ ### Designing with the Direction
268
+ - Every page, feature, or component follows the established direction
269
+ - Use \`generate_variations\` with the file path and count
270
+ - The direction is automatically loaded as the constraint system
271
+ - Submit variations user previews in browser overlay picks one
233
272
 
234
- ### Aesthetic presets
273
+ ### Scope
274
+ 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.
235
275
 
236
- You can pass a \`preset\` parameter to generate_variations:
237
- - \`a\` Surgical / Minimal
238
- - \`b\` Neo-Brutalist / Kinetic
239
- - \`c\` Archival / Editorial
240
- - \`d\` — Dashboard / Functional
241
- - \`e\` — Consumer / Warm
276
+ ### Workflow
277
+ 1. \`generate_design_system\` creates \`design.md\` or \`redesign.md\` (once per project)
278
+ 2. \`generate_variations\` write variation code → \`submit_variations\` (per design task)
279
+ 3. User previews in browser → \`apply_variation\` to finalize
242
280
  ${CLAUDE_MD_MARKER_END}`;
243
281
  }
244
282
  async function writeClaudeMd(cwd) {
@@ -273,40 +311,41 @@ async function writeCursorRules(cwd) {
273
311
  await ensureDir(rulesDir);
274
312
  const rulePath = path.join(rulesDir, 'glyph.mdc');
275
313
  const content = `---
276
- description: Use Glyph MCP tools when the user asks for UI design variations, visual alternatives, redesigns, or to make a component look better
314
+ description: Use Glyph MCP tools for design intelligence creating visual directions and generating design variations
277
315
  globs:
278
316
  alwaysApply: true
279
317
  ---
280
318
 
281
- # Glyph — UI Design Variations
319
+ # Glyph — Design Intelligence
282
320
 
283
- 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.
321
+ This project uses Glyph for design intelligence.
284
322
 
285
- ## When to use Glyph
323
+ ## The Rule
324
+ Before designing anything, check for a Glyph direction:
325
+ - Look for \`design.md\` or \`redesign.md\` in the project root
326
+ - If none exists → create one first using \`generate_design_system\`
327
+ - If one exists → use it for ALL design work. Never deviate.
286
328
 
287
- - "generate variations of this component"
288
- - "give me 3 versions of this page"
289
- - "redesign this hero section"
290
- - "make this look better"
291
- - Any request for visual alternatives to a UI component
329
+ ## Creating a Direction (first time only)
330
+ Glyph auto-detects whether this is a new or existing project:
331
+ - **New projects** generates \`design.md\` from industry best practices
332
+ - **Existing projects** scans current design system, then generates \`redesign.md\` with a better visual direction
292
333
 
293
- ## Workflow
334
+ This is Glyph's core value. The direction establishes the aesthetic DNA for the entire project.
294
335
 
295
- 1. **generate_variations** Pass the file path to get a design brief with instructions for writing variations
296
- 2. **Write the variation code** Follow the brief to write N variations as complete component code
297
- 3. **preview_draft** (optional) Render a variation to a temporary URL and screenshot it to self-evaluate quality before submitting
298
- 4. **submit_variations** Submit all variations to the Glyph server; they appear in the user's browser overlay
299
- 5. **User picks a favorite** — The user previews and selects a variation in their browser
300
- 6. **apply_variation** — Writes the chosen variation to the source file (backup is created automatically)
336
+ ## Designing with the Direction
337
+ - Every page, feature, or component follows the established direction
338
+ - Use \`generate_variations\` with the file path and count
339
+ - The direction is automatically loaded as the constraint system
340
+ - Submit variations user previews in browser overlay picks one
301
341
 
302
- ## Aesthetic presets
342
+ ## Scope
343
+ 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.
303
344
 
304
- You can pass a \`preset\` parameter to generate_variations:
305
- - \`a\` Surgical / Minimal
306
- - \`b\` Neo-Brutalist / Kinetic
307
- - \`c\` Archival / Editorial
308
- - \`d\` — Dashboard / Functional
309
- - \`e\` — Consumer / Warm
345
+ ## Workflow
346
+ 1. \`generate_design_system\` creates \`design.md\` or \`redesign.md\` (once per project)
347
+ 2. \`generate_variations\` write variation code → \`submit_variations\` (per design task)
348
+ 3. User previews in browser → \`apply_variation\` to finalize
310
349
  `;
311
350
  await writeFile(rulePath, content, 'utf-8');
312
351
  console.log(chalk.green(' Wrote .cursor/rules/glyph.mdc'));
@@ -397,29 +436,38 @@ export async function init() {
397
436
  console.log(chalk.green(` Detected: ${frameworkLabels[framework]}`));
398
437
  console.log();
399
438
  // Step 2
400
- console.log(chalk.bold('2. Injecting overlay script...'));
401
- const overlayInjected = await injectOverlay(cwd, framework);
439
+ console.log(chalk.bold('2. Scanning project context...'));
440
+ const projectContext = await inferProjectContext(cwd, framework);
441
+ await ensureDir(path.join(cwd, '.glyph'));
442
+ await writeJson(path.join(cwd, '.glyph', 'project-context.json'), projectContext, { spaces: 2 });
443
+ console.log(chalk.green(` Project: ${projectContext.projectName} (${projectContext.appType}, ${projectContext.maturity})`));
444
+ console.log(chalk.green(` Direction: ${projectContext.hasGlyphDirection ? 'found' : 'none yet'}`));
402
445
  console.log();
403
446
  // Step 3
404
- console.log(chalk.bold('3. Writing MCP config files...'));
405
- await writeMcpConfigs(cwd);
447
+ console.log(chalk.bold('3. Injecting overlay script...'));
448
+ const overlayInjected = await injectOverlay(cwd, framework);
406
449
  console.log();
407
450
  // Step 4
408
- console.log(chalk.bold('4. Writing AI assistant rules...'));
451
+ console.log(chalk.bold('4. Writing MCP config files...'));
452
+ await writeMcpConfigs(cwd);
453
+ console.log();
454
+ // Step 5
455
+ console.log(chalk.bold('5. Writing AI assistant rules...'));
409
456
  await writeClaudeMd(cwd);
410
457
  await writeCursorRules(cwd);
411
458
  console.log();
412
- // Step 5
413
- console.log(chalk.bold('5. Creating .glyph directory...'));
459
+ // Step 6
460
+ console.log(chalk.bold('6. Creating .glyph directory...'));
414
461
  await createGlyphDir(cwd);
415
462
  console.log();
416
- // Step 6
417
- console.log(chalk.bold('6. Starting Glyph server...'));
463
+ // Step 7
464
+ console.log(chalk.bold('7. Starting Glyph server...'));
418
465
  const serverStarted = await startServer(cwd);
419
466
  console.log();
420
467
  // Summary
421
468
  console.log(chalk.bold('Setup complete!'));
422
469
  console.log();
470
+ console.log(` Project: ${chalk.green(projectContext.projectName)} (${projectContext.appType}, ${projectContext.maturity})`);
423
471
  console.log(` Framework: ${frameworkLabels[framework]}`);
424
472
  console.log(` Overlay: ${overlayInjected ? chalk.green('injected') : chalk.yellow('skipped')}`);
425
473
  console.log(` MCP configs: ${chalk.green('written')}`);
@@ -429,9 +477,16 @@ export async function init() {
429
477
  console.log(chalk.bold('Next steps:'));
430
478
  console.log(' 1. Start your dev server (npm run dev)');
431
479
  console.log(' 2. Open your app in the browser');
432
- console.log(' 3. In Claude Code, ask for design variations:');
480
+ if (!projectContext.hasGlyphDirection) {
481
+ console.log(' 3. Ask your AI agent to create a design direction:');
482
+ console.log(' "create a design direction for this project"');
483
+ console.log(' 4. Then ask for variations of any page:');
484
+ }
485
+ else {
486
+ console.log(' 3. Ask your AI agent for design variations:');
487
+ }
433
488
  console.log(' "give me 3 variations of the hero section in app/page.tsx"');
434
- console.log(' 4. Variations appear in a preview panel — click to preview, click Implement to keep');
489
+ console.log(' 5. Variations appear in a preview panel — click to preview, click Implement to keep');
435
490
  console.log();
436
491
  }
437
492
  //# 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.1')
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glyph-ai",
3
- "version": "0.3.66",
3
+ "version": "0.4.1",
4
4
  "license": "FSL-1.1-Apache-2.0",
5
5
  "type": "module",
6
6
  "bin": {