@efectoapp/mcp-server 0.1.4 → 0.1.6

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/dist/cli.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Efecto MCP CLI
4
+ *
5
+ * Simple commands for designers:
6
+ * npx @efectoapp/mcp-server install - Add Efecto to Claude Code
7
+ * npx @efectoapp/mcp-server uninstall - Remove Efecto from Claude Code
8
+ */
9
+ export declare function runCLI(): boolean;
10
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAuMH,wBAAgB,MAAM,IAAI,OAAO,CAqBhC"}
package/dist/cli.js ADDED
@@ -0,0 +1,236 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Efecto MCP CLI
5
+ *
6
+ * Simple commands for designers:
7
+ * npx @efectoapp/mcp-server install - Add Efecto to Claude Code
8
+ * npx @efectoapp/mcp-server uninstall - Remove Efecto from Claude Code
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.runCLI = runCLI;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const os = __importStar(require("os"));
48
+ // ANSI colors for pretty output
49
+ const green = (s) => `\x1b[32m${s}\x1b[0m`;
50
+ const red = (s) => `\x1b[31m${s}\x1b[0m`;
51
+ const cyan = (s) => `\x1b[36m${s}\x1b[0m`;
52
+ const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
53
+ const bold = (s) => `\x1b[1m${s}\x1b[0m`;
54
+ const dim = (s) => `\x1b[2m${s}\x1b[0m`;
55
+ // The MCP server config we add to Claude Code
56
+ const EFECTO_CONFIG = {
57
+ command: 'npx',
58
+ args: ['-y', '@efectoapp/mcp-server'],
59
+ };
60
+ // Find Claude Code settings file
61
+ function findSettingsFile() {
62
+ const claudeDir = path.join(os.homedir(), '.claude');
63
+ // Check if .claude directory exists
64
+ if (!fs.existsSync(claudeDir)) {
65
+ return null;
66
+ }
67
+ // Prefer settings.local.json (user overrides), fall back to settings.json
68
+ const localSettings = path.join(claudeDir, 'settings.local.json');
69
+ const mainSettings = path.join(claudeDir, 'settings.json');
70
+ if (fs.existsSync(localSettings)) {
71
+ return localSettings;
72
+ }
73
+ if (fs.existsSync(mainSettings)) {
74
+ return mainSettings;
75
+ }
76
+ // Create settings.local.json if neither exists
77
+ return localSettings;
78
+ }
79
+ // Read settings file, return empty object if doesn't exist
80
+ function readSettings(filePath) {
81
+ try {
82
+ if (fs.existsSync(filePath)) {
83
+ const content = fs.readFileSync(filePath, 'utf-8');
84
+ return JSON.parse(content);
85
+ }
86
+ }
87
+ catch {
88
+ // Invalid JSON, start fresh
89
+ }
90
+ return {};
91
+ }
92
+ // Write settings file with pretty formatting
93
+ function writeSettings(filePath, settings) {
94
+ const dir = path.dirname(filePath);
95
+ if (!fs.existsSync(dir)) {
96
+ fs.mkdirSync(dir, { recursive: true });
97
+ }
98
+ fs.writeFileSync(filePath, JSON.stringify(settings, null, 2) + '\n');
99
+ }
100
+ // Install Efecto MCP server
101
+ function install() {
102
+ console.log('');
103
+ console.log(bold(' 🎨 Efecto MCP Installer'));
104
+ console.log(dim(' ─────────────────────────'));
105
+ console.log('');
106
+ const settingsPath = findSettingsFile();
107
+ if (!settingsPath) {
108
+ console.log(red(' ✗ Claude Code not found'));
109
+ console.log('');
110
+ console.log(' Make sure Claude Code is installed:');
111
+ console.log(cyan(' https://claude.ai/code'));
112
+ console.log('');
113
+ process.exit(1);
114
+ }
115
+ const settings = readSettings(settingsPath);
116
+ // Initialize mcpServers if it doesn't exist
117
+ if (!settings.mcpServers || typeof settings.mcpServers !== 'object') {
118
+ settings.mcpServers = {};
119
+ }
120
+ const mcpServers = settings.mcpServers;
121
+ // Check if already installed
122
+ if (mcpServers.efecto) {
123
+ console.log(yellow(' ⚠ Efecto is already installed'));
124
+ console.log('');
125
+ console.log(dim(` Settings: ${settingsPath}`));
126
+ console.log('');
127
+ console.log(' To reinstall, run:');
128
+ console.log(cyan(' npx @efectoapp/mcp-server uninstall'));
129
+ console.log(cyan(' npx @efectoapp/mcp-server install'));
130
+ console.log('');
131
+ process.exit(0);
132
+ }
133
+ // Add Efecto
134
+ mcpServers.efecto = EFECTO_CONFIG;
135
+ writeSettings(settingsPath, settings);
136
+ console.log(green(' ✓ Efecto installed successfully!'));
137
+ console.log('');
138
+ console.log(dim(` Settings: ${settingsPath}`));
139
+ console.log('');
140
+ console.log(bold(' Next steps:'));
141
+ console.log('');
142
+ console.log(' 1. Restart Claude Code');
143
+ console.log('');
144
+ console.log(' 2. Try it out! Just ask Claude:');
145
+ console.log(cyan(' "Create a cyberpunk poster with ASCII art"'));
146
+ console.log(cyan(' "Make a retro dithered image with the gameboy palette"'));
147
+ console.log(cyan(' "Design a halftone print-style graphic"'));
148
+ console.log('');
149
+ console.log(dim(' Learn more: https://efecto.app/docs/mcp'));
150
+ console.log('');
151
+ }
152
+ // Uninstall Efecto MCP server
153
+ function uninstall() {
154
+ console.log('');
155
+ console.log(bold(' 🎨 Efecto MCP Uninstaller'));
156
+ console.log(dim(' ─────────────────────────'));
157
+ console.log('');
158
+ const settingsPath = findSettingsFile();
159
+ if (!settingsPath || !fs.existsSync(settingsPath)) {
160
+ console.log(yellow(' ⚠ No Claude Code settings found'));
161
+ console.log('');
162
+ console.log(' Nothing to uninstall.');
163
+ console.log('');
164
+ process.exit(0);
165
+ }
166
+ const settings = readSettings(settingsPath);
167
+ const mcpServers = settings.mcpServers;
168
+ if (!mcpServers || !mcpServers.efecto) {
169
+ console.log(yellow(' ⚠ Efecto is not installed'));
170
+ console.log('');
171
+ console.log(' Nothing to uninstall.');
172
+ console.log('');
173
+ process.exit(0);
174
+ }
175
+ // Remove Efecto
176
+ delete mcpServers.efecto;
177
+ writeSettings(settingsPath, settings);
178
+ console.log(green(' ✓ Efecto uninstalled'));
179
+ console.log('');
180
+ console.log(dim(` Settings: ${settingsPath}`));
181
+ console.log('');
182
+ console.log(' Restart Claude Code to apply changes.');
183
+ console.log('');
184
+ console.log(' To reinstall later:');
185
+ console.log(cyan(' npx @efectoapp/mcp-server install'));
186
+ console.log('');
187
+ }
188
+ // Show help
189
+ function showHelp() {
190
+ console.log('');
191
+ console.log(bold(' 🎨 Efecto MCP'));
192
+ console.log(dim(' ─────────────'));
193
+ console.log('');
194
+ console.log(' Create stunning visuals with AI. ASCII art, glitch effects,');
195
+ console.log(' halftones, dithering, and more — right from Claude Code.');
196
+ console.log('');
197
+ console.log(bold(' Commands:'));
198
+ console.log('');
199
+ console.log(` ${cyan('npx @efectoapp/mcp-server install')}`);
200
+ console.log(' Add Efecto to Claude Code');
201
+ console.log('');
202
+ console.log(` ${cyan('npx @efectoapp/mcp-server uninstall')}`);
203
+ console.log(' Remove Efecto from Claude Code');
204
+ console.log('');
205
+ console.log(bold(' After installing:'));
206
+ console.log('');
207
+ console.log(' 1. Restart Claude Code');
208
+ console.log(' 2. Ask Claude to create something:');
209
+ console.log(cyan(' "Create a poster with ASCII art"'));
210
+ console.log('');
211
+ console.log(dim(' Docs: https://efecto.app/docs/mcp'));
212
+ console.log('');
213
+ }
214
+ // Main CLI entry point
215
+ function runCLI() {
216
+ const args = process.argv.slice(2);
217
+ const command = args[0]?.toLowerCase();
218
+ switch (command) {
219
+ case 'install':
220
+ install();
221
+ return true;
222
+ case 'uninstall':
223
+ case 'remove':
224
+ uninstall();
225
+ return true;
226
+ case 'help':
227
+ case '--help':
228
+ case '-h':
229
+ showHelp();
230
+ return true;
231
+ default:
232
+ // Not a CLI command, run as MCP server
233
+ return false;
234
+ }
235
+ }
236
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,9 +2,18 @@
2
2
  /**
3
3
  * Efecto MCP Server
4
4
  *
5
- * Provides tools for programmatic poster creation via the Model Context Protocol.
5
+ * For designers: Create stunning visuals with AI.
6
6
  *
7
- * Tools:
7
+ * INSTALL:
8
+ * npx @efectoapp/mcp-server install
9
+ *
10
+ * UNINSTALL:
11
+ * npx @efectoapp/mcp-server uninstall
12
+ *
13
+ * Then restart Claude Code and ask:
14
+ * "Create a cyberpunk poster with ASCII art"
15
+ *
16
+ * Tools available:
8
17
  * - list_effects: List available effects
9
18
  * - list_fonts: List available fonts
10
19
  * - list_palettes: List color palettes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
package/dist/index.js CHANGED
@@ -3,9 +3,18 @@
3
3
  /**
4
4
  * Efecto MCP Server
5
5
  *
6
- * Provides tools for programmatic poster creation via the Model Context Protocol.
6
+ * For designers: Create stunning visuals with AI.
7
7
  *
8
- * Tools:
8
+ * INSTALL:
9
+ * npx @efectoapp/mcp-server install
10
+ *
11
+ * UNINSTALL:
12
+ * npx @efectoapp/mcp-server uninstall
13
+ *
14
+ * Then restart Claude Code and ask:
15
+ * "Create a cyberpunk poster with ASCII art"
16
+ *
17
+ * Tools available:
9
18
  * - list_effects: List available effects
10
19
  * - list_fonts: List available fonts
11
20
  * - list_palettes: List color palettes
@@ -21,6 +30,13 @@
21
30
  * - render_image: Render poster to image
22
31
  */
23
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
+ const cli_js_1 = require("./cli.js");
34
+ // Check if this is a CLI command (install, uninstall, help)
35
+ // If so, handle it and exit
36
+ if ((0, cli_js_1.runCLI)()) {
37
+ process.exit(0);
38
+ }
39
+ // Otherwise, run as MCP server
24
40
  const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
25
41
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
26
42
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;GAmBG;;AAEH,wEAAkE;AAClE,wEAAgF;AAChF,iEAI2C;AAE3C,uDAA0E;AAC1E,+CAA0E;AAC1E,iDAAiE;AACjE,iDAA+D;AAE/D,oBAAoB;AACpB,MAAM,QAAQ,GAAW,CAAC,GAAG,6BAAc,EAAE,GAAG,sBAAU,EAAE,GAAG,qBAAU,EAAE,GAAG,uBAAW,CAAC,CAAA;AAE1F,yBAAyB;AACzB,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB;IACE,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAA;AAED,sBAAsB;AACtB,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;IAEhD,IAAI,CAAC;QACH,kBAAkB;QAClB,IAAI,6BAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,MAAM,IAAA,kCAAmB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC;QAED,cAAc;QACd,IAAI,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,MAAM,IAAA,2BAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,cAAc;QACd,IAAI,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,MAAM,IAAA,0BAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,eAAe;QACf,IAAI,uBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;YAC1D,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;iBAC3E;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAA;AAG9D,eAAO,MAAM,cAAc,EAAE,IAAI,EAqChC,CAAA;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACzC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAwG7D"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAA;AAM9D,eAAO,MAAM,cAAc,EAAE,IAAI,EA8ChC,CAAA;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACzC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAiH7D"}
@@ -11,11 +11,13 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.discoveryTools = void 0;
13
13
  exports.handleDiscoveryTool = handleDiscoveryTool;
14
+ // Base URL for Efecto API
15
+ const API_BASE = 'https://efecto.app/api/v1';
14
16
  // Tool definitions for discovery
15
17
  exports.discoveryTools = [
16
18
  {
17
19
  name: 'list_effects',
18
- description: 'List all available post-processing effects that can be applied to posters',
20
+ description: 'List all available visual effects that can be applied to posters (ASCII, dither, glitch, halftone, art)',
19
21
  inputSchema: {
20
22
  type: 'object',
21
23
  properties: {},
@@ -24,7 +26,7 @@ exports.discoveryTools = [
24
26
  },
25
27
  {
26
28
  name: 'list_fonts',
27
- description: 'List all available fonts for text layers',
29
+ description: 'List all available fonts for text layers with their available weights',
28
30
  inputSchema: {
29
31
  type: 'object',
30
32
  properties: {},
@@ -33,7 +35,7 @@ exports.discoveryTools = [
33
35
  },
34
36
  {
35
37
  name: 'list_palettes',
36
- description: 'List all available color palettes',
38
+ description: 'List all available color palettes for dither effects',
37
39
  inputSchema: {
38
40
  type: 'object',
39
41
  properties: {},
@@ -49,89 +51,125 @@ exports.discoveryTools = [
49
51
  required: [],
50
52
  },
51
53
  },
54
+ {
55
+ name: 'list_postprocess',
56
+ description: 'List all available post-processing effects that can be stacked',
57
+ inputSchema: {
58
+ type: 'object',
59
+ properties: {},
60
+ required: [],
61
+ },
62
+ },
52
63
  ];
53
64
  /**
54
65
  * Handle discovery tool calls
55
66
  */
56
67
  async function handleDiscoveryTool(name, _args) {
57
68
  switch (name) {
58
- case 'list_effects':
59
- return {
60
- content: [
61
- {
62
- type: 'text',
63
- text: JSON.stringify({
64
- effects: [
65
- { id: 'ascii', name: 'ASCII', description: 'Convert to ASCII art characters' },
66
- { id: 'dither', name: 'Dither', description: 'Apply dithering patterns' },
67
- { id: 'halftone', name: 'Halftone', description: 'Apply halftone dot patterns' },
68
- { id: 'pixelate', name: 'Pixelate', description: 'Pixelate the image' },
69
- { id: 'noise', name: 'Noise', description: 'Add noise effects' },
70
- { id: 'glitch', name: 'Glitch', description: 'Apply glitch effects' },
71
- { id: 'rgbShift', name: 'RGB Shift', description: 'Shift RGB color channels' },
72
- { id: 'scanlines', name: 'Scanlines', description: 'Add CRT scanlines' },
73
- { id: 'vignette', name: 'Vignette', description: 'Add vignette effect' },
74
- { id: 'bloom', name: 'Bloom', description: 'Add glow/bloom effect' },
75
- ],
76
- }, null, 2),
77
- },
78
- ],
79
- };
80
- case 'list_fonts':
81
- return {
82
- content: [
83
- {
84
- type: 'text',
85
- text: JSON.stringify({
86
- fonts: [
87
- { id: 'inter', name: 'Inter', category: 'sans-serif' },
88
- { id: 'roboto', name: 'Roboto', category: 'sans-serif' },
89
- { id: 'roboto-mono', name: 'Roboto Mono', category: 'monospace' },
90
- { id: 'playfair', name: 'Playfair Display', category: 'serif' },
91
- { id: 'space-grotesk', name: 'Space Grotesk', category: 'sans-serif' },
92
- { id: 'geist', name: 'Geist', category: 'sans-serif' },
93
- { id: 'geist-mono', name: 'Geist Mono', category: 'monospace' },
94
- ],
95
- }, null, 2),
96
- },
97
- ],
98
- };
99
- case 'list_palettes':
100
- return {
101
- content: [
102
- {
103
- type: 'text',
104
- text: JSON.stringify({
105
- palettes: [
106
- { id: 'monochrome', name: 'Monochrome', colors: ['#000000', '#FFFFFF'] },
107
- { id: 'warm', name: 'Warm', colors: ['#FF6B6B', '#FFA500', '#FFD93D'] },
108
- { id: 'cool', name: 'Cool', colors: ['#4ECDC4', '#45B7D1', '#96CEB4'] },
109
- { id: 'neon', name: 'Neon', colors: ['#FF00FF', '#00FFFF', '#FFFF00'] },
110
- { id: 'pastel', name: 'Pastel', colors: ['#FFB5E8', '#B5DEFF', '#E7FFAC'] },
111
- { id: 'vintage', name: 'Vintage', colors: ['#8B4513', '#DAA520', '#CD853F'] },
112
- ],
113
- }, null, 2),
114
- },
115
- ],
116
- };
117
- case 'list_materials':
118
- return {
119
- content: [
120
- {
121
- type: 'text',
122
- text: JSON.stringify({
123
- materials: [
124
- { id: 'standard', name: 'Standard', description: 'Basic material with color' },
125
- { id: 'metallic', name: 'Metallic', description: 'Metallic reflective surface' },
126
- { id: 'glass', name: 'Glass', description: 'Transparent glass material' },
127
- { id: 'plastic', name: 'Plastic', description: 'Shiny plastic surface' },
128
- { id: 'matte', name: 'Matte', description: 'Non-reflective matte surface' },
129
- { id: 'holographic', name: 'Holographic', description: 'Rainbow holographic effect' },
130
- ],
131
- }, null, 2),
132
- },
133
- ],
134
- };
69
+ case 'list_effects': {
70
+ try {
71
+ const response = await fetch(`${API_BASE}/effects`);
72
+ if (!response.ok)
73
+ throw new Error(`API error: ${response.status}`);
74
+ const data = await response.json();
75
+ // Format for AI consumption - group by category with clear effect IDs
76
+ const formatted = {
77
+ total: data.total,
78
+ categories: data.categories,
79
+ effects: data.effects.map((e) => ({
80
+ effectId: e.id,
81
+ name: e.name,
82
+ category: e.categoryLabel,
83
+ description: e.description,
84
+ pro: e.pro,
85
+ })),
86
+ };
87
+ return {
88
+ content: [{ type: 'text', text: JSON.stringify(formatted, null, 2) }],
89
+ };
90
+ }
91
+ catch (error) {
92
+ return {
93
+ content: [{ type: 'text', text: `Error fetching effects: ${error}` }],
94
+ };
95
+ }
96
+ }
97
+ case 'list_fonts': {
98
+ try {
99
+ const response = await fetch(`${API_BASE}/fonts`);
100
+ if (!response.ok)
101
+ throw new Error(`API error: ${response.status}`);
102
+ const data = await response.json();
103
+ // Format for AI consumption with clear font family values
104
+ const formatted = {
105
+ total: data.total,
106
+ categories: data.categories,
107
+ fonts: data.fonts.map((f) => ({
108
+ fontFamily: f.family,
109
+ name: f.name,
110
+ category: f.category,
111
+ weights: f.weights,
112
+ })),
113
+ note: 'Use the fontFamily value (e.g., \'"Inter", sans-serif\') when adding text layers. Weights are CSS numeric values (100-900). If a weight is not available, the browser will use the closest available weight.',
114
+ };
115
+ return {
116
+ content: [{ type: 'text', text: JSON.stringify(formatted, null, 2) }],
117
+ };
118
+ }
119
+ catch (error) {
120
+ return {
121
+ content: [{ type: 'text', text: `Error fetching fonts: ${error}` }],
122
+ };
123
+ }
124
+ }
125
+ case 'list_palettes': {
126
+ try {
127
+ const response = await fetch(`${API_BASE}/palettes`);
128
+ if (!response.ok)
129
+ throw new Error(`API error: ${response.status}`);
130
+ const data = await response.json();
131
+ return {
132
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
133
+ };
134
+ }
135
+ catch (error) {
136
+ return {
137
+ content: [{ type: 'text', text: `Error fetching palettes: ${error}` }],
138
+ };
139
+ }
140
+ }
141
+ case 'list_materials': {
142
+ try {
143
+ const response = await fetch(`${API_BASE}/materials`);
144
+ if (!response.ok)
145
+ throw new Error(`API error: ${response.status}`);
146
+ const data = await response.json();
147
+ return {
148
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
149
+ };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ content: [{ type: 'text', text: `Error fetching materials: ${error}` }],
154
+ };
155
+ }
156
+ }
157
+ case 'list_postprocess': {
158
+ try {
159
+ const response = await fetch(`${API_BASE}/postprocess`);
160
+ if (!response.ok)
161
+ throw new Error(`API error: ${response.status}`);
162
+ const data = await response.json();
163
+ return {
164
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
165
+ };
166
+ }
167
+ catch (error) {
168
+ return {
169
+ content: [{ type: 'text', text: `Error fetching post-process effects: ${error}` }],
170
+ };
171
+ }
172
+ }
135
173
  default:
136
174
  return {
137
175
  content: [{ type: 'text', text: `Unknown discovery tool: ${name}` }],
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA2DH,kDAoHC;AA3KD,0BAA0B;AAC1B,MAAM,QAAQ,GAAG,2BAA2B,CAAA;AAE5C,iCAAiC;AACpB,QAAA,cAAc,GAAW;IACpC;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yGAAyG;QACtH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAA;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,KAA0C;IAE1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAA;gBACnD,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAsJ,CAAA;gBAEtL,sEAAsE;gBACtE,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAChC,QAAQ,EAAE,CAAC,CAAC,EAAE;wBACd,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,QAAQ,EAAE,CAAC,CAAC,aAAa;wBACzB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,GAAG,EAAE,CAAC,CAAC,GAAG;qBACX,CAAC,CAAC;iBACJ,CAAA;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACtE,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,KAAK,EAAE,EAAE,CAAC;iBACtE,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAA;gBACjD,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAkI,CAAA;gBAElK,0DAA0D;gBAC1D,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC5B,UAAU,EAAE,CAAC,CAAC,MAAM;wBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;qBACnB,CAAC,CAAC;oBACH,IAAI,EAAE,8MAA8M;iBACrN,CAAA;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACtE,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,KAAK,EAAE,EAAE,CAAC;iBACpE,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,WAAW,CAAC,CAAA;gBACpD,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAElC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACjE,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,KAAK,EAAE,EAAE,CAAC;iBACvE,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,YAAY,CAAC,CAAA;gBACrD,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAElC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACjE,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,EAAE,EAAE,CAAC;iBACxE,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,cAAc,CAAC,CAAA;gBACvD,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAElC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACjE,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,KAAK,EAAE,EAAE,CAAC;iBACnF,CAAA;YACH,CAAC;QACH,CAAC;QAED;YACE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,IAAI,EAAE,EAAE,CAAC;aACrE,CAAA;IACL,CAAC;AACH,CAAC"}