glyph-ai 0.3.66 → 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.
- package/bundled/server/context/prompt-builder.d.ts +11 -0
- package/bundled/server/context/prompt-builder.d.ts.map +1 -1
- package/bundled/server/context/prompt-builder.js +99 -0
- package/bundled/server/context/prompt-builder.js.map +1 -1
- package/bundled/server/mcp/tools/generate-design-system.d.ts.map +1 -1
- package/bundled/server/mcp/tools/generate-design-system.js +88 -82
- package/bundled/server/mcp/tools/generate-design-system.js.map +1 -1
- package/bundled/server/mcp/tools/generate-variations.d.ts.map +1 -1
- package/bundled/server/mcp/tools/generate-variations.js +35 -15
- package/bundled/server/mcp/tools/generate-variations.js.map +1 -1
- package/bundled/server/preview/html-builder.js +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +75 -56
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/inference/project-context.d.ts +13 -0
- package/dist/inference/project-context.d.ts.map +1 -0
- package/dist/inference/project-context.js +153 -0
- package/dist/inference/project-context.js.map +1 -0
- package/package.json +1 -1
|
@@ -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;
|
|
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 {
|
|
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
|
|
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
|
|
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
|
-
|
|
13
|
-
|
|
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', {
|
|
39
|
+
track('mcp:generate_design_system', { projectRoot: root, force });
|
|
20
40
|
try {
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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
|
-
//
|
|
91
|
-
|
|
92
|
-
//
|
|
93
|
-
const
|
|
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
|
|
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:
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,
|
|
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;
|
|
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 {
|
|
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',
|
|
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
|
-
|
|
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
|
|
29
|
-
|
|
40
|
+
// Check for direction
|
|
41
|
+
const direction = await loadDirection(projectRoot);
|
|
42
|
+
if (!direction) {
|
|
30
43
|
return {
|
|
31
|
-
content: [{
|
|
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
|
|
62
|
+
// non-fatal
|
|
44
63
|
}
|
|
45
|
-
|
|
64
|
+
// Build brief from direction
|
|
65
|
+
const brief = await buildDirectionBrief({
|
|
46
66
|
fileContent,
|
|
47
67
|
filePath: file,
|
|
48
|
-
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"generate-variations.js","sourceRoot":"","sources":["../../../src/mcp/tools/generate-variations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -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
|
// ---------------------------------------------------------------------------
|
|
@@ -210,35 +211,36 @@ const CLAUDE_MD_MARKER = '<!-- glyph-start -->';
|
|
|
210
211
|
const CLAUDE_MD_MARKER_END = '<!-- glyph-end -->';
|
|
211
212
|
function getGlyphClaudeMdSection() {
|
|
212
213
|
return `${CLAUDE_MD_MARKER}
|
|
213
|
-
## Glyph —
|
|
214
|
+
## Glyph — Design Intelligence
|
|
214
215
|
|
|
215
|
-
This project uses [Glyph](https://www.npmjs.com/package/glyph-ai) for
|
|
216
|
+
This project uses [Glyph](https://www.npmjs.com/package/glyph-ai) for design intelligence.
|
|
216
217
|
|
|
217
|
-
###
|
|
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.
|
|
218
223
|
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
- 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
|
|
224
228
|
|
|
225
|
-
|
|
229
|
+
This is Glyph's core value. The direction establishes the aesthetic DNA for the entire project.
|
|
226
230
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
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
|
|
233
236
|
|
|
234
|
-
###
|
|
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.
|
|
235
239
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
- \`d\` — Dashboard / Functional
|
|
241
|
-
- \`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
|
|
242
244
|
${CLAUDE_MD_MARKER_END}`;
|
|
243
245
|
}
|
|
244
246
|
async function writeClaudeMd(cwd) {
|
|
@@ -273,40 +275,41 @@ async function writeCursorRules(cwd) {
|
|
|
273
275
|
await ensureDir(rulesDir);
|
|
274
276
|
const rulePath = path.join(rulesDir, 'glyph.mdc');
|
|
275
277
|
const content = `---
|
|
276
|
-
description: Use Glyph MCP tools
|
|
278
|
+
description: Use Glyph MCP tools for design intelligence — creating visual directions and generating design variations
|
|
277
279
|
globs:
|
|
278
280
|
alwaysApply: true
|
|
279
281
|
---
|
|
280
282
|
|
|
281
|
-
# Glyph —
|
|
283
|
+
# Glyph — Design Intelligence
|
|
282
284
|
|
|
283
|
-
This project uses Glyph for
|
|
285
|
+
This project uses Glyph for design intelligence.
|
|
284
286
|
|
|
285
|
-
##
|
|
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.
|
|
286
292
|
|
|
287
|
-
|
|
288
|
-
-
|
|
289
|
-
-
|
|
290
|
-
-
|
|
291
|
-
- 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
|
|
292
297
|
|
|
293
|
-
|
|
298
|
+
This is Glyph's core value. The direction establishes the aesthetic DNA for the entire project.
|
|
294
299
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
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
|
|
301
305
|
|
|
302
|
-
##
|
|
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.
|
|
303
308
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
- \`d\` — Dashboard / Functional
|
|
309
|
-
- \`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
|
|
310
313
|
`;
|
|
311
314
|
await writeFile(rulePath, content, 'utf-8');
|
|
312
315
|
console.log(chalk.green(' Wrote .cursor/rules/glyph.mdc'));
|
|
@@ -397,29 +400,38 @@ export async function init() {
|
|
|
397
400
|
console.log(chalk.green(` Detected: ${frameworkLabels[framework]}`));
|
|
398
401
|
console.log();
|
|
399
402
|
// Step 2
|
|
400
|
-
console.log(chalk.bold('2.
|
|
401
|
-
const
|
|
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'}`));
|
|
402
409
|
console.log();
|
|
403
410
|
// Step 3
|
|
404
|
-
console.log(chalk.bold('3.
|
|
405
|
-
await
|
|
411
|
+
console.log(chalk.bold('3. Injecting overlay script...'));
|
|
412
|
+
const overlayInjected = await injectOverlay(cwd, framework);
|
|
406
413
|
console.log();
|
|
407
414
|
// Step 4
|
|
408
|
-
console.log(chalk.bold('4. Writing
|
|
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...'));
|
|
409
420
|
await writeClaudeMd(cwd);
|
|
410
421
|
await writeCursorRules(cwd);
|
|
411
422
|
console.log();
|
|
412
|
-
// Step
|
|
413
|
-
console.log(chalk.bold('
|
|
423
|
+
// Step 6
|
|
424
|
+
console.log(chalk.bold('6. Creating .glyph directory...'));
|
|
414
425
|
await createGlyphDir(cwd);
|
|
415
426
|
console.log();
|
|
416
|
-
// Step
|
|
417
|
-
console.log(chalk.bold('
|
|
427
|
+
// Step 7
|
|
428
|
+
console.log(chalk.bold('7. Starting Glyph server...'));
|
|
418
429
|
const serverStarted = await startServer(cwd);
|
|
419
430
|
console.log();
|
|
420
431
|
// Summary
|
|
421
432
|
console.log(chalk.bold('Setup complete!'));
|
|
422
433
|
console.log();
|
|
434
|
+
console.log(` Project: ${chalk.green(projectContext.projectName)} (${projectContext.appType}, ${projectContext.maturity})`);
|
|
423
435
|
console.log(` Framework: ${frameworkLabels[framework]}`);
|
|
424
436
|
console.log(` Overlay: ${overlayInjected ? chalk.green('injected') : chalk.yellow('skipped')}`);
|
|
425
437
|
console.log(` MCP configs: ${chalk.green('written')}`);
|
|
@@ -429,9 +441,16 @@ export async function init() {
|
|
|
429
441
|
console.log(chalk.bold('Next steps:'));
|
|
430
442
|
console.log(' 1. Start your dev server (npm run dev)');
|
|
431
443
|
console.log(' 2. Open your app in the browser');
|
|
432
|
-
|
|
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
|
+
}
|
|
433
452
|
console.log(' "give me 3 variations of the hero section in app/page.tsx"');
|
|
434
|
-
console.log('
|
|
453
|
+
console.log(' 5. Variations appear in a preview panel — click to preview, click Implement to keep');
|
|
435
454
|
console.log();
|
|
436
455
|
}
|
|
437
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
|
@@ -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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"}
|