@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 +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +236 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +118 -80
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/state.d.ts +2 -3
- package/dist/tools/state.d.ts.map +1 -1
- package/dist/tools/state.js +210 -77
- package/dist/tools/state.js.map +1 -1
- package/package.json +1 -1
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
|
package/dist/cli.js.map
ADDED
|
@@ -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
|
-
*
|
|
5
|
+
* For designers: Create stunning visuals with AI.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
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
|
-
*
|
|
6
|
+
* For designers: Create stunning visuals with AI.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AAEH,qCAAiC;AAEjC,4DAA4D;AAC5D,4BAA4B;AAC5B,IAAI,IAAA,eAAM,GAAE,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,+BAA+B;AAC/B,wEAAkE;AAClE,wEAAgF;AAChF,iEAI2C;AAE3C,uDAA0E;AAC1E,+CAA8D;AAC9D,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 +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;
|
|
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"}
|
package/dist/tools/discovery.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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":";AAAA;;;;;;;;GAQG;;;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}
|