@forgespace/branding-mcp 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/.env.example +3 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +22 -0
- package/.github/workflows/ci.yml +73 -0
- package/.github/workflows/release-automation.yml +56 -0
- package/.github/workflows/security-scan.yml +37 -0
- package/.gitleaks.toml +14 -0
- package/.prettierrc.json +10 -0
- package/CHANGELOG.md +66 -0
- package/CONTRIBUTING.md +203 -0
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/data/README.md +13 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/branding-core/ai/brand-interpreter.d.ts +5 -0
- package/dist/lib/branding-core/ai/brand-interpreter.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/brand-interpreter.js +16 -0
- package/dist/lib/branding-core/ai/brand-interpreter.js.map +1 -0
- package/dist/lib/branding-core/ai/claude-interpreter.d.ts +5 -0
- package/dist/lib/branding-core/ai/claude-interpreter.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/claude-interpreter.js +55 -0
- package/dist/lib/branding-core/ai/claude-interpreter.js.map +1 -0
- package/dist/lib/branding-core/ai/intent-applier.d.ts +4 -0
- package/dist/lib/branding-core/ai/intent-applier.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/intent-applier.js +29 -0
- package/dist/lib/branding-core/ai/intent-applier.js.map +1 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.d.ts +4 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.js +85 -0
- package/dist/lib/branding-core/ai/keyword-interpreter.js.map +1 -0
- package/dist/lib/branding-core/ai/prompts.d.ts +4 -0
- package/dist/lib/branding-core/ai/prompts.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/prompts.js +79 -0
- package/dist/lib/branding-core/ai/prompts.js.map +1 -0
- package/dist/lib/branding-core/ai/types.d.ts +27 -0
- package/dist/lib/branding-core/ai/types.d.ts.map +1 -0
- package/dist/lib/branding-core/ai/types.js +2 -0
- package/dist/lib/branding-core/ai/types.js.map +1 -0
- package/dist/lib/branding-core/documents/html-generator.d.ts +3 -0
- package/dist/lib/branding-core/documents/html-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/documents/html-generator.js +31 -0
- package/dist/lib/branding-core/documents/html-generator.js.map +1 -0
- package/dist/lib/branding-core/documents/pdf-generator.d.ts +3 -0
- package/dist/lib/branding-core/documents/pdf-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/documents/pdf-generator.js +20 -0
- package/dist/lib/branding-core/documents/pdf-generator.js.map +1 -0
- package/dist/lib/branding-core/exporters/css-variables.d.ts +3 -0
- package/dist/lib/branding-core/exporters/css-variables.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/css-variables.js +62 -0
- package/dist/lib/branding-core/exporters/css-variables.js.map +1 -0
- package/dist/lib/branding-core/exporters/design-tokens.d.ts +3 -0
- package/dist/lib/branding-core/exporters/design-tokens.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/design-tokens.js +75 -0
- package/dist/lib/branding-core/exporters/design-tokens.js.map +1 -0
- package/dist/lib/branding-core/exporters/figma-tokens.d.ts +9 -0
- package/dist/lib/branding-core/exporters/figma-tokens.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/figma-tokens.js +69 -0
- package/dist/lib/branding-core/exporters/figma-tokens.js.map +1 -0
- package/dist/lib/branding-core/exporters/react-theme.d.ts +3 -0
- package/dist/lib/branding-core/exporters/react-theme.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/react-theme.js +61 -0
- package/dist/lib/branding-core/exporters/react-theme.js.map +1 -0
- package/dist/lib/branding-core/exporters/sass-variables.d.ts +3 -0
- package/dist/lib/branding-core/exporters/sass-variables.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/sass-variables.js +65 -0
- package/dist/lib/branding-core/exporters/sass-variables.js.map +1 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.d.ts +3 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.d.ts.map +1 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.js +55 -0
- package/dist/lib/branding-core/exporters/tailwind-preset.js.map +1 -0
- package/dist/lib/branding-core/generators/border-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/border-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/border-system.js +37 -0
- package/dist/lib/branding-core/generators/border-system.js.map +1 -0
- package/dist/lib/branding-core/generators/color-palette.d.ts +7 -0
- package/dist/lib/branding-core/generators/color-palette.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/color-palette.js +117 -0
- package/dist/lib/branding-core/generators/color-palette.js.map +1 -0
- package/dist/lib/branding-core/generators/favicon-generator.d.ts +3 -0
- package/dist/lib/branding-core/generators/favicon-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/favicon-generator.js +23 -0
- package/dist/lib/branding-core/generators/favicon-generator.js.map +1 -0
- package/dist/lib/branding-core/generators/gradient-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/gradient-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/gradient-system.js +74 -0
- package/dist/lib/branding-core/generators/gradient-system.js.map +1 -0
- package/dist/lib/branding-core/generators/logo-generator.d.ts +4 -0
- package/dist/lib/branding-core/generators/logo-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/logo-generator.js +130 -0
- package/dist/lib/branding-core/generators/logo-generator.js.map +1 -0
- package/dist/lib/branding-core/generators/motion-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/motion-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/motion-system.js +91 -0
- package/dist/lib/branding-core/generators/motion-system.js.map +1 -0
- package/dist/lib/branding-core/generators/og-image-generator.d.ts +3 -0
- package/dist/lib/branding-core/generators/og-image-generator.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/og-image-generator.js +72 -0
- package/dist/lib/branding-core/generators/og-image-generator.js.map +1 -0
- package/dist/lib/branding-core/generators/shadow-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/shadow-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/shadow-system.js +44 -0
- package/dist/lib/branding-core/generators/shadow-system.js.map +1 -0
- package/dist/lib/branding-core/generators/spacing-scale.d.ts +3 -0
- package/dist/lib/branding-core/generators/spacing-scale.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/spacing-scale.js +27 -0
- package/dist/lib/branding-core/generators/spacing-scale.js.map +1 -0
- package/dist/lib/branding-core/generators/typography-system.d.ts +3 -0
- package/dist/lib/branding-core/generators/typography-system.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/typography-system.js +121 -0
- package/dist/lib/branding-core/generators/typography-system.js.map +1 -0
- package/dist/lib/branding-core/index.d.ts +24 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -0
- package/dist/lib/branding-core/index.js +22 -0
- package/dist/lib/branding-core/index.js.map +1 -0
- package/dist/lib/branding-core/validators/brand-consistency.d.ts +3 -0
- package/dist/lib/branding-core/validators/brand-consistency.d.ts.map +1 -0
- package/dist/lib/branding-core/validators/brand-consistency.js +70 -0
- package/dist/lib/branding-core/validators/brand-consistency.js.map +1 -0
- package/dist/lib/branding-core/validators/contrast-checker.d.ts +3 -0
- package/dist/lib/branding-core/validators/contrast-checker.d.ts.map +1 -0
- package/dist/lib/branding-core/validators/contrast-checker.js +33 -0
- package/dist/lib/branding-core/validators/contrast-checker.js.map +1 -0
- package/dist/lib/branding-core/validators/token-schema.d.ts +10 -0
- package/dist/lib/branding-core/validators/token-schema.d.ts.map +1 -0
- package/dist/lib/branding-core/validators/token-schema.js +43 -0
- package/dist/lib/branding-core/validators/token-schema.js.map +1 -0
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +8 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/logger.d.ts +3 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +10 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/types.d.ts +208 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/resources/brand-knowledge.d.ts +3 -0
- package/dist/resources/brand-knowledge.d.ts.map +1 -0
- package/dist/resources/brand-knowledge.js +53 -0
- package/dist/resources/brand-knowledge.js.map +1 -0
- package/dist/resources/brand-templates.d.ts +3 -0
- package/dist/resources/brand-templates.d.ts.map +1 -0
- package/dist/resources/brand-templates.js +68 -0
- package/dist/resources/brand-templates.js.map +1 -0
- package/dist/tools/create-brand-guidelines.d.ts +3 -0
- package/dist/tools/create-brand-guidelines.d.ts.map +1 -0
- package/dist/tools/create-brand-guidelines.js +85 -0
- package/dist/tools/create-brand-guidelines.js.map +1 -0
- package/dist/tools/export-design-tokens.d.ts +3 -0
- package/dist/tools/export-design-tokens.d.ts.map +1 -0
- package/dist/tools/export-design-tokens.js +37 -0
- package/dist/tools/export-design-tokens.js.map +1 -0
- package/dist/tools/generate-brand-assets.d.ts +3 -0
- package/dist/tools/generate-brand-assets.d.ts.map +1 -0
- package/dist/tools/generate-brand-assets.js +37 -0
- package/dist/tools/generate-brand-assets.js.map +1 -0
- package/dist/tools/generate-brand-identity.d.ts +3 -0
- package/dist/tools/generate-brand-identity.d.ts.map +1 -0
- package/dist/tools/generate-brand-identity.js +73 -0
- package/dist/tools/generate-brand-identity.js.map +1 -0
- package/dist/tools/generate-color-palette.d.ts +3 -0
- package/dist/tools/generate-color-palette.d.ts.map +1 -0
- package/dist/tools/generate-color-palette.js +33 -0
- package/dist/tools/generate-color-palette.js.map +1 -0
- package/dist/tools/generate-typography-system.d.ts +3 -0
- package/dist/tools/generate-typography-system.d.ts.map +1 -0
- package/dist/tools/generate-typography-system.js +28 -0
- package/dist/tools/generate-typography-system.js.map +1 -0
- package/dist/tools/refine-brand-element.d.ts +3 -0
- package/dist/tools/refine-brand-element.d.ts.map +1 -0
- package/dist/tools/refine-brand-element.js +41 -0
- package/dist/tools/refine-brand-element.js.map +1 -0
- package/dist/tools/validate-brand-consistency.d.ts +3 -0
- package/dist/tools/validate-brand-consistency.d.ts.map +1 -0
- package/dist/tools/validate-brand-consistency.js +25 -0
- package/dist/tools/validate-brand-consistency.js.map +1 -0
- package/docs/API.md +110 -0
- package/docs/DATA_SOURCES.md +69 -0
- package/docs/INTEGRATION.md +58 -0
- package/eslint.config.js +52 -0
- package/jest.config.js +40 -0
- package/package.json +78 -0
- package/src/__tests__/integration/brand-generation.test.ts +84 -0
- package/src/__tests__/integration/mcp-server.test.ts +18 -0
- package/src/__tests__/unit/ai-interpreter.test.ts +172 -0
- package/src/__tests__/unit/border-system.test.ts +77 -0
- package/src/__tests__/unit/color-palette.test.ts +161 -0
- package/src/__tests__/unit/contrast-checker.test.ts +124 -0
- package/src/__tests__/unit/design-tokens.test.ts +184 -0
- package/src/__tests__/unit/favicon-generator.test.ts +80 -0
- package/src/__tests__/unit/gradient-system.test.ts +122 -0
- package/src/__tests__/unit/logo-generator.test.ts +146 -0
- package/src/__tests__/unit/motion-system.test.ts +91 -0
- package/src/__tests__/unit/og-image-generator.test.ts +115 -0
- package/src/__tests__/unit/shadow-system.test.ts +63 -0
- package/src/__tests__/unit/spacing-scale.test.ts +60 -0
- package/src/__tests__/unit/typography-system.test.ts +71 -0
- package/src/index.ts +59 -0
- package/src/lib/branding-core/ai/brand-interpreter.ts +30 -0
- package/src/lib/branding-core/ai/claude-interpreter.ts +76 -0
- package/src/lib/branding-core/ai/intent-applier.ts +59 -0
- package/src/lib/branding-core/ai/keyword-interpreter.ts +95 -0
- package/src/lib/branding-core/ai/prompts.ts +93 -0
- package/src/lib/branding-core/ai/types.ts +36 -0
- package/src/lib/branding-core/documents/html-generator.ts +32 -0
- package/src/lib/branding-core/documents/pdf-generator.ts +21 -0
- package/src/lib/branding-core/exporters/css-variables.ts +71 -0
- package/src/lib/branding-core/exporters/design-tokens.ts +86 -0
- package/src/lib/branding-core/exporters/figma-tokens.ts +87 -0
- package/src/lib/branding-core/exporters/react-theme.ts +69 -0
- package/src/lib/branding-core/exporters/sass-variables.ts +74 -0
- package/src/lib/branding-core/exporters/tailwind-preset.ts +67 -0
- package/src/lib/branding-core/generators/border-system.ts +41 -0
- package/src/lib/branding-core/generators/color-palette.ts +147 -0
- package/src/lib/branding-core/generators/favicon-generator.ts +33 -0
- package/src/lib/branding-core/generators/gradient-system.ts +120 -0
- package/src/lib/branding-core/generators/logo-generator.ts +152 -0
- package/src/lib/branding-core/generators/motion-system.ts +98 -0
- package/src/lib/branding-core/generators/og-image-generator.ts +97 -0
- package/src/lib/branding-core/generators/shadow-system.ts +66 -0
- package/src/lib/branding-core/generators/spacing-scale.ts +29 -0
- package/src/lib/branding-core/generators/typography-system.ts +128 -0
- package/src/lib/branding-core/index.ts +28 -0
- package/src/lib/branding-core/validators/brand-consistency.ts +79 -0
- package/src/lib/branding-core/validators/contrast-checker.ts +37 -0
- package/src/lib/branding-core/validators/token-schema.ts +50 -0
- package/src/lib/config.ts +13 -0
- package/src/lib/logger.ts +12 -0
- package/src/lib/types.ts +236 -0
- package/src/resources/brand-knowledge.ts +60 -0
- package/src/resources/brand-templates.ts +70 -0
- package/src/tools/create-brand-guidelines.ts +94 -0
- package/src/tools/export-design-tokens.ts +52 -0
- package/src/tools/generate-brand-assets.ts +48 -0
- package/src/tools/generate-brand-identity.ts +115 -0
- package/src/tools/generate-color-palette.ts +43 -0
- package/src/tools/generate-typography-system.ts +42 -0
- package/src/tools/refine-brand-element.ts +65 -0
- package/src/tools/validate-brand-consistency.ts +32 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-knowledge.d.ts","sourceRoot":"","sources":["../../src/resources/brand-knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6CzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAc9D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const COLOR_THEORY = {
|
|
2
|
+
harmonies: {
|
|
3
|
+
complementary: 'Colors opposite on the color wheel. High contrast, vibrant.',
|
|
4
|
+
analogous: 'Colors adjacent on the wheel. Harmonious, low contrast.',
|
|
5
|
+
triadic: 'Three colors equally spaced (120 degrees). Balanced and colorful.',
|
|
6
|
+
'split-complementary': 'Base + two colors adjacent to its complement. Softer contrast.',
|
|
7
|
+
tetradic: 'Four colors forming a rectangle. Rich palette, needs balance.',
|
|
8
|
+
monochromatic: 'Single hue with varied lightness/saturation. Cohesive and elegant.',
|
|
9
|
+
},
|
|
10
|
+
psychology: {
|
|
11
|
+
red: 'Energy, passion, urgency. Use for CTAs and alerts.',
|
|
12
|
+
blue: 'Trust, stability, professionalism. Common in tech and finance.',
|
|
13
|
+
green: 'Growth, health, nature. Used in wellness and sustainability.',
|
|
14
|
+
purple: 'Creativity, luxury, wisdom. Premium and creative brands.',
|
|
15
|
+
orange: 'Enthusiasm, confidence, warmth. Energetic and approachable.',
|
|
16
|
+
yellow: 'Optimism, clarity, warmth. Attention-grabbing accents.',
|
|
17
|
+
black: 'Sophistication, power, elegance. Luxury and editorial.',
|
|
18
|
+
white: 'Simplicity, cleanliness, space. Minimalist design.',
|
|
19
|
+
},
|
|
20
|
+
accessibility: {
|
|
21
|
+
wcagAA: 'Minimum 4.5:1 contrast ratio for normal text',
|
|
22
|
+
wcagAALarge: 'Minimum 3:1 for large text (18px+ or 14px+ bold)',
|
|
23
|
+
wcagAAA: 'Enhanced 7:1 contrast ratio for normal text',
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const TYPOGRAPHY_RULES = {
|
|
27
|
+
scales: {
|
|
28
|
+
'minor-second': { ratio: 1.067, use: 'Very tight, dense interfaces' },
|
|
29
|
+
'major-second': { ratio: 1.125, use: 'Compact, functional UIs' },
|
|
30
|
+
'minor-third': { ratio: 1.2, use: 'General purpose, most common' },
|
|
31
|
+
'major-third': { ratio: 1.25, use: 'Marketing, editorial content' },
|
|
32
|
+
'perfect-fourth': { ratio: 1.333, use: 'Bold hierarchies, headlines' },
|
|
33
|
+
'golden-ratio': { ratio: 1.618, use: 'Dramatic, artistic layouts' },
|
|
34
|
+
},
|
|
35
|
+
pairingPrinciples: [
|
|
36
|
+
'Contrast serif/sans-serif for heading/body distinction',
|
|
37
|
+
'Limit to 2-3 fonts maximum per project',
|
|
38
|
+
'Ensure x-height similarity for optical consistency',
|
|
39
|
+
'Match historical period and cultural context',
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
export function registerBrandKnowledge(server) {
|
|
43
|
+
server.resource('brand-knowledge', 'brand://knowledge', async () => ({
|
|
44
|
+
contents: [
|
|
45
|
+
{
|
|
46
|
+
uri: 'brand://knowledge',
|
|
47
|
+
text: JSON.stringify({ colorTheory: COLOR_THEORY, typographyRules: TYPOGRAPHY_RULES }, null, 2),
|
|
48
|
+
mimeType: 'application/json',
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=brand-knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-knowledge.js","sourceRoot":"","sources":["../../src/resources/brand-knowledge.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG;IACnB,SAAS,EAAE;QACT,aAAa,EAAE,6DAA6D;QAC5E,SAAS,EAAE,yDAAyD;QACpE,OAAO,EAAE,mEAAmE;QAC5E,qBAAqB,EAAE,gEAAgE;QACvF,QAAQ,EAAE,+DAA+D;QACzE,aAAa,EAAE,oEAAoE;KACpF;IACD,UAAU,EAAE;QACV,GAAG,EAAE,oDAAoD;QACzD,IAAI,EAAE,gEAAgE;QACtE,KAAK,EAAE,8DAA8D;QACrE,MAAM,EAAE,0DAA0D;QAClE,MAAM,EAAE,6DAA6D;QACrE,MAAM,EAAE,wDAAwD;QAChE,KAAK,EAAE,wDAAwD;QAC/D,KAAK,EAAE,oDAAoD;KAC5D;IACD,aAAa,EAAE;QACb,MAAM,EAAE,8CAA8C;QACtD,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,6CAA6C;KACvD;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE;QACN,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,8BAA8B,EAAE;QACrE,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,yBAAyB,EAAE;QAChE,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,8BAA8B,EAAE;QAClE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,8BAA8B,EAAE;QACnE,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,6BAA6B,EAAE;QACtE,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,4BAA4B,EAAE;KACpE;IACD,iBAAiB,EAAE;QACjB,wDAAwD;QACxD,wCAAwC;QACxC,oDAAoD;QACpD,8CAA8C;KAC/C;CACF,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACnE,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,mBAAmB;gBACxB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,EAChE,IAAI,EACJ,CAAC,CACF;gBACD,QAAQ,EAAE,kBAAkB;aAC7B;SACF;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-templates.d.ts","sourceRoot":"","sources":["../../src/resources/brand-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2DzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAU9D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const TEMPLATES = [
|
|
2
|
+
{
|
|
3
|
+
id: 'tech-startup',
|
|
4
|
+
name: 'Tech Startup',
|
|
5
|
+
style: 'tech',
|
|
6
|
+
baseColor: '#6B4CE6',
|
|
7
|
+
harmony: 'complementary',
|
|
8
|
+
headingCategory: 'sans-serif',
|
|
9
|
+
bodyCategory: 'sans-serif',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 'luxury-brand',
|
|
13
|
+
name: 'Luxury Brand',
|
|
14
|
+
style: 'elegant',
|
|
15
|
+
baseColor: '#1A1A2E',
|
|
16
|
+
harmony: 'analogous',
|
|
17
|
+
headingCategory: 'serif',
|
|
18
|
+
bodyCategory: 'serif',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'health-wellness',
|
|
22
|
+
name: 'Health & Wellness',
|
|
23
|
+
style: 'organic',
|
|
24
|
+
baseColor: '#2D6A4F',
|
|
25
|
+
harmony: 'analogous',
|
|
26
|
+
headingCategory: 'serif',
|
|
27
|
+
bodyCategory: 'sans-serif',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: 'creative-agency',
|
|
31
|
+
name: 'Creative Agency',
|
|
32
|
+
style: 'bold',
|
|
33
|
+
baseColor: '#FF6B35',
|
|
34
|
+
harmony: 'triadic',
|
|
35
|
+
headingCategory: 'display',
|
|
36
|
+
bodyCategory: 'sans-serif',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'fintech',
|
|
40
|
+
name: 'Fintech',
|
|
41
|
+
style: 'corporate',
|
|
42
|
+
baseColor: '#0052CC',
|
|
43
|
+
harmony: 'complementary',
|
|
44
|
+
headingCategory: 'sans-serif',
|
|
45
|
+
bodyCategory: 'sans-serif',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: 'education',
|
|
49
|
+
name: 'Education',
|
|
50
|
+
style: 'playful',
|
|
51
|
+
baseColor: '#7C3AED',
|
|
52
|
+
harmony: 'split-complementary',
|
|
53
|
+
headingCategory: 'display',
|
|
54
|
+
bodyCategory: 'sans-serif',
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
export function registerBrandTemplates(server) {
|
|
58
|
+
server.resource('brand-templates', 'brand://templates', async () => ({
|
|
59
|
+
contents: [
|
|
60
|
+
{
|
|
61
|
+
uri: 'brand://templates',
|
|
62
|
+
text: JSON.stringify(TEMPLATES, null, 2),
|
|
63
|
+
mimeType: 'application/json',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=brand-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-templates.js","sourceRoot":"","sources":["../../src/resources/brand-templates.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG;IAChB;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,eAAe;QACxB,eAAe,EAAE,YAAY;QAC7B,YAAY,EAAE,YAAY;KAC3B;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,WAAW;QACpB,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE,OAAO;KACtB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,WAAW;QACpB,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE,YAAY;KAC3B;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,YAAY;KAC3B;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,WAAW;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,eAAe;QACxB,eAAe,EAAE,YAAY;QAC7B,YAAY,EAAE,YAAY;KAC3B;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,qBAAqB;QAC9B,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,YAAY;KAC3B;CACF,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACnE,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,mBAAmB;gBACxB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,QAAQ,EAAE,kBAAkB;aAC7B;SACF;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-brand-guidelines.d.ts","sourceRoot":"","sources":["../../src/tools/create-brand-guidelines.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuDzE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqCrE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { brandDocFormatSchema } from '../lib/branding-core/validators/token-schema.js';
|
|
3
|
+
import { logger } from '../lib/logger.js';
|
|
4
|
+
function generateHtmlGuidelines(brand) {
|
|
5
|
+
const { colors, typography } = brand;
|
|
6
|
+
return `<!DOCTYPE html>
|
|
7
|
+
<html lang="en">
|
|
8
|
+
<head>
|
|
9
|
+
<meta charset="UTF-8">
|
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
11
|
+
<title>${brand.name} - Brand Guidelines</title>
|
|
12
|
+
<style>
|
|
13
|
+
body { font-family: '${typography.bodyFont}', sans-serif; max-width: 960px; margin: 0 auto; padding: 2rem; color: #1a1a1a; }
|
|
14
|
+
h1, h2, h3 { font-family: '${typography.headingFont}', sans-serif; }
|
|
15
|
+
.swatch { display: inline-block; width: 80px; height: 80px; border-radius: 8px; margin: 4px; }
|
|
16
|
+
.color-label { font-size: 12px; text-align: center; margin-top: 4px; }
|
|
17
|
+
.section { margin: 2rem 0; padding: 1.5rem; border: 1px solid #e0e0e0; border-radius: 8px; }
|
|
18
|
+
</style>
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<h1>${brand.name} Brand Guidelines</h1>
|
|
22
|
+
${brand.tagline ? `<p><em>${brand.tagline}</em></p>` : ''}
|
|
23
|
+
|
|
24
|
+
<div class="section">
|
|
25
|
+
<h2>Color Palette</h2>
|
|
26
|
+
<div>
|
|
27
|
+
<div><div class="swatch" style="background:${colors.primary.hex}"></div><div class="color-label">Primary<br>${colors.primary.hex}</div></div>
|
|
28
|
+
<div><div class="swatch" style="background:${colors.secondary.hex}"></div><div class="color-label">Secondary<br>${colors.secondary.hex}</div></div>
|
|
29
|
+
<div><div class="swatch" style="background:${colors.accent.hex}"></div><div class="color-label">Accent<br>${colors.accent.hex}</div></div>
|
|
30
|
+
</div>
|
|
31
|
+
<h3>Neutrals</h3>
|
|
32
|
+
<div>${colors.neutral.map((n) => `<div style="display:inline-block"><div class="swatch" style="background:${n.hex}"></div><div class="color-label">${n.name}<br>${n.hex}</div></div>`).join('')}</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div class="section">
|
|
36
|
+
<h2>Typography</h2>
|
|
37
|
+
<p><strong>Heading:</strong> ${typography.headingFont}</p>
|
|
38
|
+
<p><strong>Body:</strong> ${typography.bodyFont}</p>
|
|
39
|
+
<p><strong>Mono:</strong> ${typography.monoFont}</p>
|
|
40
|
+
<h3>Type Scale</h3>
|
|
41
|
+
${typography.steps.map((s) => `<p style="font-size:${s.size};line-height:${s.lineHeight};font-weight:${s.weight}">${s.name} — ${s.size}</p>`).join('\n ')}
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div class="section">
|
|
45
|
+
<h2>Logo</h2>
|
|
46
|
+
${brand.logo?.svg ? brand.logo.svg : '<p>Logo not generated</p>'}
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<footer><p>Generated by @forgespace/branding-mcp</p></footer>
|
|
50
|
+
</body>
|
|
51
|
+
</html>`;
|
|
52
|
+
}
|
|
53
|
+
export function registerCreateBrandGuidelines(server) {
|
|
54
|
+
server.tool('create_brand_guidelines', 'Generate a brand guidelines document (HTML brand book) from a brand identity. Includes color swatches, typography samples, logo, and usage rules.', {
|
|
55
|
+
brand: z.string().describe('Full BrandIdentity JSON'),
|
|
56
|
+
format: brandDocFormatSchema.optional().describe('Output format (html supported)'),
|
|
57
|
+
}, async ({ brand, format }) => {
|
|
58
|
+
try {
|
|
59
|
+
logger.info({ format }, 'Creating brand guidelines');
|
|
60
|
+
const brandData = JSON.parse(brand);
|
|
61
|
+
if (format === 'pdf') {
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: 'PDF generation requires pdfkit. Use HTML format or install optional dependencies.',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const html = generateHtmlGuidelines(brandData);
|
|
72
|
+
return {
|
|
73
|
+
content: [{ type: 'text', text: html }],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
78
|
+
return {
|
|
79
|
+
content: [{ type: 'text', text: `Error creating guidelines: ${message}` }],
|
|
80
|
+
isError: true,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=create-brand-guidelines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-brand-guidelines.js","sourceRoot":"","sources":["../../src/tools/create-brand-guidelines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-design-tokens.d.ts","sourceRoot":"","sources":["../../src/tools/export-design-tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4BlE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { exportDesignTokens, exportCssVariables, exportTailwindPreset, exportFigmaTokens, exportReactTheme, exportSassVariables, } from '../lib/branding-core/index.js';
|
|
3
|
+
import { exportFormatSchema } from '../lib/branding-core/validators/token-schema.js';
|
|
4
|
+
import { logger } from '../lib/logger.js';
|
|
5
|
+
const EXPORTERS = {
|
|
6
|
+
json: exportDesignTokens,
|
|
7
|
+
css: exportCssVariables,
|
|
8
|
+
tailwind: exportTailwindPreset,
|
|
9
|
+
figma: exportFigmaTokens,
|
|
10
|
+
react: exportReactTheme,
|
|
11
|
+
sass: exportSassVariables,
|
|
12
|
+
};
|
|
13
|
+
export function registerExportDesignTokens(server) {
|
|
14
|
+
server.tool('export_design_tokens', 'Export a brand identity as design tokens in various formats: W3C JSON, CSS custom properties, Tailwind preset, Figma tokens, React theme, or Sass variables.', {
|
|
15
|
+
brand: z.string().describe('Full BrandIdentity JSON (from generate_brand_identity output)'),
|
|
16
|
+
format: exportFormatSchema.describe('Export format'),
|
|
17
|
+
}, async ({ brand, format }) => {
|
|
18
|
+
try {
|
|
19
|
+
logger.info({ format }, 'Exporting design tokens');
|
|
20
|
+
const brandData = JSON.parse(brand);
|
|
21
|
+
const exporter = EXPORTERS[format];
|
|
22
|
+
const result = exporter(brandData);
|
|
23
|
+
const output = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
|
|
24
|
+
return {
|
|
25
|
+
content: [{ type: 'text', text: output }],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: 'text', text: `Error exporting tokens: ${message}` }],
|
|
32
|
+
isError: true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=export-design-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-design-tokens.js","sourceRoot":"","sources":["../../src/tools/export-design-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,SAAS,GAAoE;IACjF,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,kBAAkB;IACvB,QAAQ,EAAE,oBAAoB;IAC9B,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,mBAAmB;CAC1B,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8JAA8J,EAC9J;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QAC3F,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC;KACrD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACnD,MAAM,SAAS,GAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAErF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;gBACvE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-brand-assets.d.ts","sourceRoot":"","sources":["../../src/tools/generate-brand-assets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuCnE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { generateFavicons, generateOgImage } from '../lib/branding-core/index.js';
|
|
3
|
+
import { logger } from '../lib/logger.js';
|
|
4
|
+
const ogTemplateSchema = z.enum(['default', 'article', 'social']);
|
|
5
|
+
export function registerGenerateBrandAssets(server) {
|
|
6
|
+
server.tool('generate_brand_assets', 'Generate brand assets (favicons, OG images) from an existing brand identity JSON.', {
|
|
7
|
+
brand: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.describe('JSON string of BrandIdentity from generate_brand_identity'),
|
|
11
|
+
ogTemplate: ogTemplateSchema
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('OG image template: default, article, or social'),
|
|
14
|
+
ogTitle: z.string().max(200).optional().describe('Custom OG image title'),
|
|
15
|
+
ogSubtitle: z.string().max(200).optional().describe('Custom OG image subtitle'),
|
|
16
|
+
}, async ({ brand: brandJson, ogTemplate, ogTitle, ogSubtitle }) => {
|
|
17
|
+
try {
|
|
18
|
+
const brand = JSON.parse(brandJson);
|
|
19
|
+
logger.info({ brandName: brand.name }, 'Generating brand assets');
|
|
20
|
+
const iconSvg = brand.logo?.variants?.icon ?? brand.logo?.svg ?? '';
|
|
21
|
+
const favicons = iconSvg ? generateFavicons(iconSvg, brand.colors.primary.hex) : null;
|
|
22
|
+
const ogImage = generateOgImage(brand, ogTemplate ?? 'default', ogTitle, ogSubtitle);
|
|
23
|
+
const result = { favicons, ogImage };
|
|
24
|
+
return {
|
|
25
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: 'text', text: `Error generating assets: ${message}` }],
|
|
32
|
+
isError: true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=generate-brand-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-brand-assets.js","sourceRoot":"","sources":["../../src/tools/generate-brand-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,mFAAmF,EACnF;QACE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,2DAA2D,CAAC;QACxE,UAAU,EAAE,gBAAgB;aACzB,QAAQ,EAAE;aACV,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACzE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAChF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,MAAM,KAAK,GAAkB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAElE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEtF,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,UAAU,IAAI,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAErC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,OAAO,EAAE,EAAE,CAAC;gBACxE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-brand-identity.d.ts","sourceRoot":"","sources":["../../src/tools/generate-brand-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkCzE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+ErE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { generateColorPalette, generateTypographySystem, generateSpacingScale, generateShadowSystem, generateBorderSystem, generateMotionSystem, generateGradientSystem, generateSvgLogo, defaultLogoConfig, } from '../lib/branding-core/index.js';
|
|
3
|
+
import { brandStyleSchema, colorHarmonySchema, colorThemeSchema, fontCategorySchema, hexColorSchema, typeScaleRatioSchema, } from '../lib/branding-core/validators/token-schema.js';
|
|
4
|
+
import { logger } from '../lib/logger.js';
|
|
5
|
+
const STYLE_DEFAULTS = {
|
|
6
|
+
minimal: { heading: 'sans-serif', body: 'sans-serif' },
|
|
7
|
+
bold: { heading: 'display', body: 'sans-serif' },
|
|
8
|
+
elegant: { heading: 'serif', body: 'serif' },
|
|
9
|
+
playful: { heading: 'display', body: 'sans-serif' },
|
|
10
|
+
corporate: { heading: 'sans-serif', body: 'sans-serif' },
|
|
11
|
+
tech: { heading: 'sans-serif', body: 'monospace' },
|
|
12
|
+
organic: { heading: 'serif', body: 'sans-serif' },
|
|
13
|
+
retro: { heading: 'display', body: 'serif' },
|
|
14
|
+
};
|
|
15
|
+
export function registerGenerateBrandIdentity(server) {
|
|
16
|
+
server.tool('generate_brand_identity', 'Generate a complete brand identity including colors, typography, spacing, and logo. Provide a brand name and style preferences to get a cohesive identity system.', {
|
|
17
|
+
brandName: z.string().min(1).max(100).describe('Brand name'),
|
|
18
|
+
industry: z.string().min(1).max(100).describe('Industry or sector (e.g. "tech", "health")'),
|
|
19
|
+
style: brandStyleSchema.describe('Visual style direction'),
|
|
20
|
+
tagline: z.string().max(200).optional().describe('Brand tagline'),
|
|
21
|
+
baseColor: hexColorSchema.optional().describe('Base color preference'),
|
|
22
|
+
harmony: colorHarmonySchema.optional().describe('Color harmony type'),
|
|
23
|
+
theme: colorThemeSchema.optional().describe('Light/dark/both'),
|
|
24
|
+
headingCategory: fontCategorySchema.optional().describe('Heading font category'),
|
|
25
|
+
bodyCategory: fontCategorySchema.optional().describe('Body font category'),
|
|
26
|
+
scaleRatio: typeScaleRatioSchema.optional().describe('Typography scale ratio'),
|
|
27
|
+
}, async ({ brandName, industry, style, tagline, baseColor, harmony, theme, headingCategory, bodyCategory, scaleRatio, }) => {
|
|
28
|
+
try {
|
|
29
|
+
logger.info({ brandName, industry, style }, 'Generating brand identity');
|
|
30
|
+
const defaults = STYLE_DEFAULTS[style];
|
|
31
|
+
const colors = generateColorPalette(baseColor, harmony ?? 'complementary', theme);
|
|
32
|
+
const typography = generateTypographySystem(headingCategory ?? defaults.heading, bodyCategory ?? defaults.body, scaleRatio ?? 'major-third');
|
|
33
|
+
const spacing = generateSpacingScale();
|
|
34
|
+
const shadows = generateShadowSystem(colors.primary.hex, theme);
|
|
35
|
+
const borders = generateBorderSystem(style);
|
|
36
|
+
const motion = generateMotionSystem(style);
|
|
37
|
+
const gradients = generateGradientSystem(colors, style);
|
|
38
|
+
const logoConfig = {
|
|
39
|
+
...defaultLogoConfig(brandName, colors.primary.hex),
|
|
40
|
+
font: typography.headingFont,
|
|
41
|
+
style,
|
|
42
|
+
};
|
|
43
|
+
const logo = generateSvgLogo(logoConfig);
|
|
44
|
+
const identity = {
|
|
45
|
+
id: `brand_${Date.now().toString(36)}`,
|
|
46
|
+
name: brandName,
|
|
47
|
+
tagline,
|
|
48
|
+
industry,
|
|
49
|
+
style,
|
|
50
|
+
colors,
|
|
51
|
+
typography,
|
|
52
|
+
spacing,
|
|
53
|
+
shadows,
|
|
54
|
+
borders,
|
|
55
|
+
motion,
|
|
56
|
+
gradients,
|
|
57
|
+
logo,
|
|
58
|
+
createdAt: new Date().toISOString(),
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
content: [{ type: 'text', text: JSON.stringify(identity, null, 2) }],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: 'text', text: `Error generating brand: ${message}` }],
|
|
68
|
+
isError: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=generate-brand-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-brand-identity.js","sourceRoot":"","sources":["../../src/tools/generate-brand-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-color-palette.d.ts","sourceRoot":"","sources":["../../src/tools/generate-color-palette.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiCpE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { generateColorPalette } from '../lib/branding-core/index.js';
|
|
2
|
+
import { colorHarmonySchema, colorThemeSchema, hexColorSchema, } from '../lib/branding-core/validators/token-schema.js';
|
|
3
|
+
import { logger } from '../lib/logger.js';
|
|
4
|
+
export function registerGenerateColorPalette(server) {
|
|
5
|
+
server.tool('generate_color_palette', 'Generate a harmonious color palette with WCAG contrast validation. Supports complementary, analogous, triadic, split-complementary, tetradic, and monochromatic harmonies.', {
|
|
6
|
+
baseColor: hexColorSchema
|
|
7
|
+
.optional()
|
|
8
|
+
.describe('Base hex color to build palette from (e.g. #6B4CE6)'),
|
|
9
|
+
harmony: colorHarmonySchema.optional().describe('Color harmony type'),
|
|
10
|
+
theme: colorThemeSchema.optional().describe('Light, dark, or both neutral scales'),
|
|
11
|
+
}, async ({ baseColor, harmony, theme }) => {
|
|
12
|
+
try {
|
|
13
|
+
logger.info({ baseColor, harmony, theme }, 'Generating color palette');
|
|
14
|
+
const palette = generateColorPalette(baseColor, harmony, theme);
|
|
15
|
+
return {
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: 'text',
|
|
19
|
+
text: JSON.stringify(palette, null, 2),
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
26
|
+
return {
|
|
27
|
+
content: [{ type: 'text', text: `Error generating palette: ${message}` }],
|
|
28
|
+
isError: true,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=generate-color-palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-color-palette.js","sourceRoot":"","sources":["../../src/tools/generate-color-palette.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,4KAA4K,EAC5K;QACE,SAAS,EAAE,cAAc;aACtB,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;QAClE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACrE,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACnF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;qBACvC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,OAAO,EAAE,EAAE,CAAC;gBACzE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-typography-system.d.ts","sourceRoot":"","sources":["../../src/tools/generate-typography-system.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgCxE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { generateTypographySystem } from '../lib/branding-core/index.js';
|
|
3
|
+
import { fontCategorySchema, typeScaleRatioSchema, } from '../lib/branding-core/validators/token-schema.js';
|
|
4
|
+
import { logger } from '../lib/logger.js';
|
|
5
|
+
export function registerGenerateTypographySystem(server) {
|
|
6
|
+
server.tool('generate_typography_system', 'Generate a typography system with font pairing, modular type scale, and line heights. Uses curated font pairings for visual harmony.', {
|
|
7
|
+
headingCategory: fontCategorySchema.optional().describe('Font category for headings'),
|
|
8
|
+
bodyCategory: fontCategorySchema.optional().describe('Font category for body text'),
|
|
9
|
+
scaleRatio: typeScaleRatioSchema.optional().describe('Modular scale ratio'),
|
|
10
|
+
baseSize: z.number().min(12).max(24).optional().describe('Base font size in pixels'),
|
|
11
|
+
}, async ({ headingCategory, bodyCategory, scaleRatio, baseSize }) => {
|
|
12
|
+
try {
|
|
13
|
+
logger.info({ headingCategory, bodyCategory, scaleRatio }, 'Generating typography system');
|
|
14
|
+
const system = generateTypographySystem(headingCategory, bodyCategory, scaleRatio, baseSize);
|
|
15
|
+
return {
|
|
16
|
+
content: [{ type: 'text', text: JSON.stringify(system, null, 2) }],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
21
|
+
return {
|
|
22
|
+
content: [{ type: 'text', text: `Error generating typography: ${message}` }],
|
|
23
|
+
isError: true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=generate-typography-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-typography-system.js","sourceRoot":"","sources":["../../src/tools/generate-typography-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,sIAAsI,EACtI;QACE,eAAe,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrF,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACnF,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACrF,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,wBAAwB,CACrC,eAAe,EACf,YAAY,EACZ,UAAU,EACV,QAAQ,CACT,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,OAAO,EAAE,EAAE,CAAC;gBAC5E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refine-brand-element.d.ts","sourceRoot":"","sources":["../../src/tools/refine-brand-element.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwDlE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { interpretFeedback, applyIntent } from '../lib/branding-core/index.js';
|
|
3
|
+
import { loadConfig } from '../lib/config.js';
|
|
4
|
+
import { logger } from '../lib/logger.js';
|
|
5
|
+
export function registerRefineBrandElement(server) {
|
|
6
|
+
server.tool('refine_brand_element', 'Refine a specific element of an existing brand identity using natural language feedback. Uses AI interpretation when available, keyword matching as fallback.', {
|
|
7
|
+
brand: z.string().describe('Full BrandIdentity JSON'),
|
|
8
|
+
element: z.enum(['colors', 'typography', 'spacing']).describe('Element to refine'),
|
|
9
|
+
feedback: z
|
|
10
|
+
.string()
|
|
11
|
+
.describe('Natural language feedback (e.g. "make it feel more premium and understated", "use serif headings with dramatic scale")'),
|
|
12
|
+
strategy: z
|
|
13
|
+
.enum(['keyword', 'ai', 'auto'])
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Interpretation strategy: keyword (fast), ai (Claude API), auto (ai if key available)'),
|
|
16
|
+
}, async ({ brand, element, feedback, strategy }) => {
|
|
17
|
+
try {
|
|
18
|
+
logger.info({ element, feedback, strategy }, 'Refining brand element');
|
|
19
|
+
const brandData = JSON.parse(brand);
|
|
20
|
+
const config = loadConfig();
|
|
21
|
+
const intent = await interpretFeedback(feedback, element, brandData, strategy ?? 'auto', { anthropicApiKey: config.anthropicApiKey });
|
|
22
|
+
const refined = applyIntent(brandData, intent);
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: JSON.stringify({ ...refined, _interpretation: { strategy: strategy ?? 'auto', ...intent } }, null, 2),
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: 'text', text: `Error refining element: ${message}` }],
|
|
36
|
+
isError: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=refine-brand-element.js.map
|