@efectoapp/mcp-server 0.1.19 → 0.1.22

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.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Local Poster Rendering
3
+ *
4
+ * Uses Puppeteer to render posters locally via headless Chrome.
5
+ * This allows the MCP server to return actual images that agents can see.
6
+ */
7
+ export interface RenderOptions {
8
+ width?: number;
9
+ height?: number;
10
+ format?: string;
11
+ quality?: number;
12
+ }
13
+ export interface RenderResult {
14
+ base64: string;
15
+ mimeType: string;
16
+ }
17
+ /**
18
+ * Render a poster by navigating to its URL in headless Chrome.
19
+ * The URL should already include `_render=1` for clean rendering.
20
+ */
21
+ export declare function renderPoster(url: string, options?: RenderOptions): Promise<RenderResult>;
22
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/tools/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6FH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA2DvB"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * Local Poster Rendering
4
+ *
5
+ * Uses Puppeteer to render posters locally via headless Chrome.
6
+ * This allows the MCP server to return actual images that agents can see.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.renderPoster = renderPoster;
13
+ const puppeteer_1 = __importDefault(require("puppeteer"));
14
+ const fs_1 = require("fs");
15
+ // Common Chrome/Chromium paths by platform
16
+ const CHROME_PATHS = {
17
+ darwin: [
18
+ '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
19
+ '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary',
20
+ '/Applications/Chromium.app/Contents/MacOS/Chromium',
21
+ ],
22
+ linux: [
23
+ '/usr/bin/google-chrome',
24
+ '/usr/bin/google-chrome-stable',
25
+ '/usr/bin/chromium-browser',
26
+ '/usr/bin/chromium',
27
+ ],
28
+ win32: [
29
+ 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
30
+ 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
31
+ ],
32
+ };
33
+ /**
34
+ * Find a Chrome/Chromium executable on the system.
35
+ * Falls back to puppeteer's bundled Chromium.
36
+ */
37
+ function findChrome() {
38
+ const platform = process.platform;
39
+ const paths = CHROME_PATHS[platform] || [];
40
+ for (const p of paths) {
41
+ if ((0, fs_1.existsSync)(p)) {
42
+ return p;
43
+ }
44
+ }
45
+ // Fall back to puppeteer's bundled Chromium
46
+ return undefined; // puppeteer will use its bundled browser
47
+ }
48
+ // Reusable browser instance with launch guard to prevent concurrent launches
49
+ let browserInstance = null;
50
+ let launchPromise = null;
51
+ async function getBrowser() {
52
+ if (browserInstance?.connected) {
53
+ return browserInstance;
54
+ }
55
+ // Prevent concurrent launches — reuse in-flight promise
56
+ if (launchPromise) {
57
+ return launchPromise;
58
+ }
59
+ const executablePath = findChrome();
60
+ launchPromise = puppeteer_1.default.launch({
61
+ headless: true,
62
+ ...(executablePath ? { executablePath } : {}),
63
+ // --no-sandbox is required for headless environments without a display server
64
+ args: [
65
+ '--no-sandbox',
66
+ '--disable-setuid-sandbox',
67
+ '--disable-dev-shm-usage',
68
+ '--disable-gpu',
69
+ '--disable-extensions',
70
+ '--no-first-run',
71
+ ],
72
+ }).then(browser => {
73
+ browserInstance = browser;
74
+ launchPromise = null;
75
+ return browser;
76
+ }).catch(err => {
77
+ launchPromise = null;
78
+ throw err;
79
+ });
80
+ return launchPromise;
81
+ }
82
+ // Clean up browser on process exit
83
+ function cleanupBrowser() {
84
+ if (browserInstance) {
85
+ browserInstance.close().catch(() => { });
86
+ browserInstance = null;
87
+ }
88
+ }
89
+ process.on('exit', cleanupBrowser);
90
+ process.on('SIGINT', () => { cleanupBrowser(); process.exit(0); });
91
+ process.on('SIGTERM', () => { cleanupBrowser(); process.exit(0); });
92
+ /**
93
+ * Render a poster by navigating to its URL in headless Chrome.
94
+ * The URL should already include `_render=1` for clean rendering.
95
+ */
96
+ async function renderPoster(url, options = {}) {
97
+ const { width = 1080, height = 1920, format = 'png', quality = 90 } = options;
98
+ const mimeType = format === 'jpeg' ? 'image/jpeg' : format === 'webp' ? 'image/webp' : 'image/png';
99
+ const browser = await getBrowser();
100
+ const page = await browser.newPage();
101
+ page.setDefaultTimeout(30000);
102
+ try {
103
+ // Set viewport to requested dimensions
104
+ await page.setViewport({ width, height, deviceScaleFactor: 1 });
105
+ // Navigate to the poster URL
106
+ await page.goto(url, { waitUntil: 'networkidle2', timeout: 60000 });
107
+ // Wait for the render-ready signal from SceneRenderer
108
+ try {
109
+ await page.waitForSelector('[data-render-ready="true"]', { timeout: 30000 });
110
+ }
111
+ catch {
112
+ // If no render-ready signal, wait a bit for rendering
113
+ console.error('Warning: render-ready signal not found, waiting 3s...');
114
+ await new Promise(r => setTimeout(r, 3000));
115
+ }
116
+ // Extra wait for fonts/images to settle
117
+ await new Promise(r => setTimeout(r, 1500));
118
+ // Primary: extract canvas content via toDataURL
119
+ // Uses string evaluation because this runs in browser context (no DOM types in Node tsconfig)
120
+ // Select the LAST canvas: when dither effects are active, a WebGPU overlay canvas is
121
+ // appended after the Three.js canvas and contains the final composited output.
122
+ const evalScript = `(() => {
123
+ const canvases = document.querySelectorAll('canvas');
124
+ const c = canvases[canvases.length - 1];
125
+ if (!c) return null;
126
+ try { return c.toDataURL(${JSON.stringify(mimeType)}); } catch { return null; }
127
+ })()`;
128
+ const dataUrl = await page.evaluate(evalScript);
129
+ if (dataUrl) {
130
+ // Strip the data URL prefix to get raw base64
131
+ const base64 = dataUrl.replace(/^data:image\/[^;]+;base64,/, '');
132
+ return { base64, mimeType };
133
+ }
134
+ // Fallback: take a screenshot
135
+ console.error('Canvas toDataURL failed, falling back to screenshot');
136
+ const screenshotBuffer = await page.screenshot({
137
+ type: format === 'jpeg' ? 'jpeg' : format === 'webp' ? 'webp' : 'png',
138
+ ...(format !== 'png' ? { quality } : {}),
139
+ fullPage: false,
140
+ });
141
+ const base64 = Buffer.from(screenshotBuffer).toString('base64');
142
+ return { base64, mimeType };
143
+ }
144
+ finally {
145
+ await page.close();
146
+ }
147
+ }
148
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/tools/render.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,18 @@
12
12
  * All state follows the LayerShareState contract for API compatibility.
13
13
  */
14
14
  import type { Tool } from '@modelcontextprotocol/sdk/types.js';
15
- type AspectRatio = '16:9' | '9:16' | '1:1' | '4:3' | 'full';
15
+ type AspectRatio = '16:9' | '9:16' | '1:1' | '4:3' | '3:4' | 'full';
16
+ type LayoutMode = 'absolute' | 'row' | 'column';
17
+ type JustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';
18
+ type AlignItems = 'start' | 'center' | 'end';
19
+ interface LayoutPadding {
20
+ top: number;
21
+ right: number;
22
+ bottom: number;
23
+ left: number;
24
+ }
16
25
  type EffectId = 'none' | 'ascii-standard' | 'ascii-blocks' | 'ascii-braille' | 'ascii-hatching' | 'ascii-matrix' | 'ascii-technical' | 'ascii-dense' | 'ascii-minimal' | 'dither-floyd-steinberg' | 'dither-atkinson' | 'dither-jarvis-judice-ninke' | 'dither-stucki' | 'dither-burkes' | 'dither-sierra' | 'dither-two-row-sierra' | 'dither-sierra-lite' | 'halftone-mono' | 'halftone-cmyk' | 'glitch-chromatic' | 'glitch-digital' | 'glitch-vhs' | 'glitch-weird' | 'art-kuwahara' | 'art-crosshatch' | 'art-lineart' | 'art-engraving' | 'art-stipple';
17
- type PostProcessType = 'scanlines' | 'vignette' | 'chromatic-aberration' | 'curvature' | 'grain' | 'noise' | 'pixelate' | 'wave' | 'rgb-glitch' | 'brightness-contrast' | 'color-tint' | 'palette' | 'jitter' | 'bloom' | 'dot-screen' | 'sepia' | 'grid' | 'light-beams' | 'motion-blur';
26
+ type PostProcessType = 'scanlines' | 'vignette' | 'chromatic-aberration' | 'curvature' | 'grain' | 'noise' | 'pixelate' | 'wave' | 'rgb-glitch' | 'brightness-contrast' | 'color-tint' | 'palette' | 'jitter' | 'bloom' | 'dot-screen' | 'sepia' | 'grid' | 'light-beams' | 'motion-blur' | 'blob-tracking';
18
27
  type TextAnimationType = 'wave' | 'rotate' | 'scale' | 'orbit' | 'bounce' | 'shake' | 'spiral' | 'typewriter' | 'glitch' | 'elastic' | 'cascade' | 'neon';
19
28
  type StaggerMode = 'sequential' | 'random' | 'center-out' | 'edges-in';
20
29
  interface TextAnimationSettings {
@@ -31,6 +40,9 @@ interface BaseAnimationParams {
31
40
  loop: boolean;
32
41
  }
33
42
  type TextAnimationParams = BaseAnimationParams & Record<string, unknown>;
43
+ type FlexChildPositioning = 'flow' | 'absolute';
44
+ type FlexChildSizeMode = 'hug' | 'fixed' | 'fill';
45
+ type FlexChildAlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch';
34
46
  interface LayerTransform {
35
47
  x: number;
36
48
  y: number;
@@ -38,6 +50,8 @@ interface LayerTransform {
38
50
  height: number;
39
51
  rotation: number;
40
52
  opacity: number;
53
+ originX?: number;
54
+ originY?: number;
41
55
  }
42
56
  interface BaseLayer {
43
57
  id: string;
@@ -45,18 +59,54 @@ interface BaseLayer {
45
59
  type: string;
46
60
  visible: boolean;
47
61
  locked: boolean;
62
+ positioning?: FlexChildPositioning;
63
+ flexSizeMode?: FlexChildSizeMode;
64
+ flexWidthMode?: FlexChildSizeMode;
65
+ flexHeightMode?: FlexChildSizeMode;
66
+ alignSelf?: FlexChildAlignSelf;
67
+ flexGrow?: number;
48
68
  transform: LayerTransform;
69
+ shadow?: {
70
+ offsetX: number;
71
+ offsetY: number;
72
+ blur: number;
73
+ color: string;
74
+ opacity: number;
75
+ };
76
+ blendMode?: string;
77
+ margin?: {
78
+ top: number;
79
+ right: number;
80
+ bottom: number;
81
+ left: number;
82
+ };
83
+ minWidth?: number;
84
+ maxWidth?: number;
85
+ minHeight?: number;
86
+ maxHeight?: number;
49
87
  }
50
88
  interface TextLayer extends BaseLayer {
51
89
  type: 'text';
90
+ textType?: 'point' | 'frame';
52
91
  content: string;
53
92
  fontFamily: string;
54
93
  fontSize: number;
55
94
  fontWeight: string;
56
95
  color: string;
57
96
  textAlign: 'left' | 'center' | 'right';
97
+ verticalAlign?: 'top' | 'middle' | 'bottom';
58
98
  letterSpacing: number;
59
99
  lineHeight: number;
100
+ textTransformMode?: 'scale' | 'box';
101
+ textBoxWidth?: number;
102
+ frameWidthPx?: number;
103
+ frameHeightPx?: number;
104
+ autoSize?: 'none' | 'height' | 'widthAndHeight';
105
+ clipContent?: boolean;
106
+ textTransform?: 'uppercase' | 'lowercase' | 'capitalize';
107
+ textDecoration?: 'underline' | 'line-through' | 'overline';
108
+ textDecorationColor?: string;
109
+ textDecorationThickness?: number;
60
110
  animation?: TextAnimationSettings;
61
111
  }
62
112
  interface ImageLayer extends BaseLayer {
@@ -78,10 +128,36 @@ interface VideoLayer extends BaseLayer {
78
128
  playbackSpeed: number;
79
129
  }
80
130
  type BackgroundContentType = 'solid' | 'image' | 'video' | '3d' | 'shader';
131
+ interface GradientStop {
132
+ color: string;
133
+ opacity: number;
134
+ position: number;
135
+ }
136
+ interface SolidFill {
137
+ type: 'solid';
138
+ color: string;
139
+ opacity: number;
140
+ }
141
+ interface LinearGradientFill {
142
+ type: 'linear';
143
+ angle: number;
144
+ stops: GradientStop[];
145
+ }
146
+ interface RadialGradientFill {
147
+ type: 'radial';
148
+ center: {
149
+ x: number;
150
+ y: number;
151
+ };
152
+ radius: number;
153
+ stops: GradientStop[];
154
+ }
155
+ type Fill = SolidFill | LinearGradientFill | RadialGradientFill;
81
156
  interface BackgroundLayer extends BaseLayer {
82
157
  type: 'background';
83
158
  contentType: BackgroundContentType;
84
159
  solidColor: string;
160
+ fill?: Fill;
85
161
  inputMedia?: {
86
162
  mediaUrl: string;
87
163
  mediaType: 'image' | 'video';
@@ -102,6 +178,14 @@ interface PosterState {
102
178
  canvas: {
103
179
  aspectRatio: AspectRatio;
104
180
  backgroundColor: string;
181
+ canvasColor?: string;
182
+ overflow?: 'visible' | 'hidden' | 'translucent';
183
+ layoutMode?: LayoutMode;
184
+ justifyContent?: JustifyContent;
185
+ alignItems?: AlignItems;
186
+ wrap?: boolean;
187
+ gap?: number;
188
+ padding?: LayoutPadding;
105
189
  };
106
190
  layers: Layer[];
107
191
  effect?: {
@@ -123,6 +207,11 @@ interface PosterState {
123
207
  };
124
208
  postProcesses: PostProcessInstance[];
125
209
  }
210
+ /**
211
+ * Ensure a poster exists. Restores from persisted file if needed,
212
+ * or auto-creates a default poster as a last resort.
213
+ */
214
+ export declare function ensurePoster(): PosterState;
126
215
  export declare function resetState(): void;
127
216
  export declare function getCurrentState(): PosterState | null;
128
217
  export declare const stateTools: Tool[];
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/tools/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/tools/state.ts"],"names":[],"mappings":"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"}