shipshots-mcp 0.1.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/LICENSE +21 -0
- package/README.md +109 -0
- package/dist/api-client.d.ts +19 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +126 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +128 -0
- package/dist/cli.js.map +1 -0
- package/dist/defaults.d.ts +86 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +360 -0
- package/dist/defaults.js.map +1 -0
- package/dist/design.d.ts +26 -0
- package/dist/design.d.ts.map +1 -0
- package/dist/design.js +63 -0
- package/dist/design.js.map +1 -0
- package/dist/helpers.d.ts +12 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +22 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/batch.d.ts +4 -0
- package/dist/tools/batch.d.ts.map +1 -0
- package/dist/tools/batch.js +253 -0
- package/dist/tools/batch.js.map +1 -0
- package/dist/tools/duplicate.d.ts +4 -0
- package/dist/tools/duplicate.d.ts.map +1 -0
- package/dist/tools/duplicate.js +91 -0
- package/dist/tools/duplicate.js.map +1 -0
- package/dist/tools/export.d.ts +4 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +67 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/layers.d.ts +4 -0
- package/dist/tools/layers.d.ts.map +1 -0
- package/dist/tools/layers.js +493 -0
- package/dist/tools/layers.js.map +1 -0
- package/dist/tools/project.d.ts +4 -0
- package/dist/tools/project.d.ts.map +1 -0
- package/dist/tools/project.js +190 -0
- package/dist/tools/project.js.map +1 -0
- package/dist/tools/screen.d.ts +4 -0
- package/dist/tools/screen.d.ts.map +1 -0
- package/dist/tools/screen.js +295 -0
- package/dist/tools/screen.js.map +1 -0
- package/dist/tools/video.d.ts +4 -0
- package/dist/tools/video.d.ts.map +1 -0
- package/dist/tools/video.js +144 -0
- package/dist/tools/video.js.map +1 -0
- package/dist/types.d.ts +163 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createTextLayer, createDeviceLayer, createImageLayer, createShapeLayer, createBadgeLayer, createArrowLayer, autoPosition, } from "../defaults.js";
|
|
3
|
+
import { getProjectAndScreen, unescapeNewlines } from "../helpers.js";
|
|
4
|
+
export function registerLayerTools(server, api) {
|
|
5
|
+
server.tool("add_text_layer", `Add a text layer to a screen. Use \\n for line breaks. Auto-centered at top if no position given.
|
|
6
|
+
|
|
7
|
+
TYPOGRAPHY GUIDE:
|
|
8
|
+
- Headlines: 80-120px, fontWeight 800-900, letterSpacing -2 to -3, lineHeight 1.05
|
|
9
|
+
- Subtitles: 32-44px, fontWeight 400, letterSpacing 0 to 0.5, lineHeight 1.4, opacity 0.7-0.85
|
|
10
|
+
- Body/caption: 24-32px, fontWeight 400
|
|
11
|
+
- Badge/accent: 20-28px, fontWeight 600-700, often uppercase
|
|
12
|
+
Use fontWeight contrast (800 vs 400) within the same font family for hierarchy. Height auto-scales for multi-line text, but you can override it. In connected strips, text can span screens (x + width > 1260).`, {
|
|
13
|
+
project_id: z.string().describe("Project ID"),
|
|
14
|
+
screen_id: z.string().describe("Screen ID"),
|
|
15
|
+
text: z.string().describe("Text content to display"),
|
|
16
|
+
x: z.number().optional().describe("X position in pixels"),
|
|
17
|
+
y: z.number().optional().describe("Y position in pixels"),
|
|
18
|
+
width: z.number().optional().describe("Text box width"),
|
|
19
|
+
height: z.number().optional().describe("Text box height"),
|
|
20
|
+
fontSize: z.number().optional().describe("Font size in pixels (default: 64)"),
|
|
21
|
+
fontFamily: z.string().optional().describe('Font family (default: "Inter")'),
|
|
22
|
+
fontWeight: z.number().optional().describe("Font weight 100-900 (default: 700)"),
|
|
23
|
+
color: z.string().optional().describe('Text color hex (default: "#ffffff")'),
|
|
24
|
+
textAlign: z.enum(["left", "center", "right"]).optional().describe('Text alignment (default: "center")'),
|
|
25
|
+
letterSpacing: z.number().optional().describe("Letter spacing in pixels (default: -1)"),
|
|
26
|
+
lineHeight: z.number().optional().describe("Line height multiplier (default: 1.1)"),
|
|
27
|
+
fillType: z.enum(["solid", "gradient"]).optional().describe('Text fill type (default: "solid")'),
|
|
28
|
+
gradientColor2: z.string().optional().describe("Second gradient color hex"),
|
|
29
|
+
gradientDirection: z.number().optional().describe("Gradient angle in degrees 0-360 (default: 135)"),
|
|
30
|
+
strokeEnabled: z.boolean().optional().describe("Enable text stroke/outline (default: false)"),
|
|
31
|
+
strokeColor: z.string().optional().describe('Stroke color hex (default: "#000000")'),
|
|
32
|
+
strokeWidth: z.number().optional().describe("Stroke width in pixels 0-10 (default: 2)"),
|
|
33
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
34
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow (default: false)"),
|
|
35
|
+
shadowColor: z.string().optional().describe('Shadow color with alpha (default: "#00000040")'),
|
|
36
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels (default: 20)"),
|
|
37
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset (default: 0)"),
|
|
38
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset (default: 10)"),
|
|
39
|
+
}, async ({ project_id, screen_id, text, x, y, width, height, fontSize, fontFamily, fontWeight, color, textAlign, letterSpacing, lineHeight, fillType, gradientColor2, gradientDirection, strokeEnabled, strokeColor, strokeWidth, opacity, shadowEnabled, shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY }) => {
|
|
40
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
41
|
+
if ("error" in result) {
|
|
42
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
43
|
+
}
|
|
44
|
+
const { project, screenIndex } = result;
|
|
45
|
+
const screen = project.screens[screenIndex];
|
|
46
|
+
const pos = autoPosition(screen.layers, "text");
|
|
47
|
+
const layer = createTextLayer({
|
|
48
|
+
text: unescapeNewlines(text),
|
|
49
|
+
...(x !== undefined ? { x } : { x: pos.x }),
|
|
50
|
+
...(y !== undefined ? { y } : { y: pos.y }),
|
|
51
|
+
...(width !== undefined ? { width } : {}),
|
|
52
|
+
...(height !== undefined ? { height } : {}),
|
|
53
|
+
...(fontSize !== undefined ? { fontSize } : {}),
|
|
54
|
+
...(fontFamily !== undefined ? { fontFamily } : {}),
|
|
55
|
+
...(fontWeight !== undefined ? { fontWeight } : {}),
|
|
56
|
+
...(color !== undefined ? { color } : {}),
|
|
57
|
+
...(textAlign !== undefined ? { textAlign } : {}),
|
|
58
|
+
...(letterSpacing !== undefined ? { letterSpacing } : {}),
|
|
59
|
+
...(lineHeight !== undefined ? { lineHeight } : {}),
|
|
60
|
+
...(fillType !== undefined ? { fillType } : {}),
|
|
61
|
+
...(gradientColor2 !== undefined ? { gradientColor2 } : {}),
|
|
62
|
+
...(gradientDirection !== undefined ? { gradientDirection } : {}),
|
|
63
|
+
...(strokeEnabled !== undefined ? { strokeEnabled } : {}),
|
|
64
|
+
...(strokeColor !== undefined ? { strokeColor } : {}),
|
|
65
|
+
...(strokeWidth !== undefined ? { strokeWidth } : {}),
|
|
66
|
+
...(opacity !== undefined ? { opacity } : {}),
|
|
67
|
+
...(shadowEnabled !== undefined ? { shadowEnabled } : {}),
|
|
68
|
+
...(shadowColor !== undefined ? { shadowColor } : {}),
|
|
69
|
+
...(shadowBlur !== undefined ? { shadowBlur } : {}),
|
|
70
|
+
...(shadowOffsetX !== undefined ? { shadowOffsetX } : {}),
|
|
71
|
+
...(shadowOffsetY !== undefined ? { shadowOffsetY } : {}),
|
|
72
|
+
});
|
|
73
|
+
screen.layers.push(layer);
|
|
74
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
75
|
+
return {
|
|
76
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer.id, message: `Text layer "${text}" added.` }, null, 2) }],
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
server.tool("add_device_frame_layer", `Add a device frame layer to a screen. Height is auto-calculated from aspect ratio. Use upload_screenshot to set the device screenshot after adding.
|
|
80
|
+
|
|
81
|
+
DEVICE ASPECT RATIOS (width:height):
|
|
82
|
+
- iPhone: ~1:2.17 (width=500 → height≈1085)
|
|
83
|
+
- Android: ~1:2.22 (width=500 → height≈1111)
|
|
84
|
+
- iPad: ~1:1.39 (width=500 → height≈697)
|
|
85
|
+
- MacBook: ~1.6:1 (width=700 → height≈437)
|
|
86
|
+
- Frameless: same as iPhone ratio
|
|
87
|
+
|
|
88
|
+
COMPOSITION PATTERNS:
|
|
89
|
+
- Centered: text at y=100-200, device at y=550+, width ~77% (~994px), rotation 0°
|
|
90
|
+
- Side/diagonal: text upper-left (x=80, y=180), device lower-right (x=300+, y=650+), rotation -5° to -8°
|
|
91
|
+
- Connected strip: device at x=650+, width=950, rotation 3-7° to cross into next screen`, {
|
|
92
|
+
project_id: z.string().describe("Project ID"),
|
|
93
|
+
screen_id: z.string().describe("Screen ID"),
|
|
94
|
+
deviceType: z.enum(["iphone", "android", "ipad", "macbook", "frameless"]).describe("Device type"),
|
|
95
|
+
screenshotUrl: z.string().optional().describe("Screenshot image URL to show inside the device"),
|
|
96
|
+
x: z.number().optional().describe("X position"),
|
|
97
|
+
y: z.number().optional().describe("Y position"),
|
|
98
|
+
width: z.number().optional().describe("Device width (height auto-calculated)"),
|
|
99
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
100
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow (default: false)"),
|
|
101
|
+
shadowColor: z.string().optional().describe('Shadow color with alpha (default: "#00000040")'),
|
|
102
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels (default: 20)"),
|
|
103
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset (default: 0)"),
|
|
104
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset (default: 10)"),
|
|
105
|
+
}, async ({ project_id, screen_id, deviceType, screenshotUrl, x, y, width, opacity, shadowEnabled, shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY }) => {
|
|
106
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
107
|
+
if ("error" in result) {
|
|
108
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
109
|
+
}
|
|
110
|
+
const { project, screenIndex } = result;
|
|
111
|
+
const screen = project.screens[screenIndex];
|
|
112
|
+
const layer = createDeviceLayer({
|
|
113
|
+
deviceType: deviceType,
|
|
114
|
+
...(screenshotUrl ? { screenshotUrl } : {}),
|
|
115
|
+
...(x !== undefined ? { x } : {}),
|
|
116
|
+
...(y !== undefined ? { y } : {}),
|
|
117
|
+
...(width !== undefined ? { width } : {}),
|
|
118
|
+
...(opacity !== undefined ? { opacity } : {}),
|
|
119
|
+
...(shadowEnabled !== undefined ? { shadowEnabled } : {}),
|
|
120
|
+
...(shadowColor !== undefined ? { shadowColor } : {}),
|
|
121
|
+
...(shadowBlur !== undefined ? { shadowBlur } : {}),
|
|
122
|
+
...(shadowOffsetX !== undefined ? { shadowOffsetX } : {}),
|
|
123
|
+
...(shadowOffsetY !== undefined ? { shadowOffsetY } : {}),
|
|
124
|
+
});
|
|
125
|
+
screen.layers.push(layer);
|
|
126
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
127
|
+
return {
|
|
128
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer.id, message: `${deviceType} device frame added.` }, null, 2) }],
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
server.tool("add_image_layer", `Add an image layer to a screen. Displays an image from a URL.`, {
|
|
132
|
+
project_id: z.string().describe("Project ID"),
|
|
133
|
+
screen_id: z.string().describe("Screen ID"),
|
|
134
|
+
imageUrl: z.string().describe("Image URL"),
|
|
135
|
+
x: z.number().optional().describe("X position"),
|
|
136
|
+
y: z.number().optional().describe("Y position"),
|
|
137
|
+
width: z.number().optional().describe("Image width"),
|
|
138
|
+
height: z.number().optional().describe("Image height"),
|
|
139
|
+
objectFit: z.enum(["cover", "contain", "fill"]).optional().describe('Image fit mode (default: "cover")'),
|
|
140
|
+
borderRadius: z.number().optional().describe("Border radius in pixels"),
|
|
141
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
142
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow (default: false)"),
|
|
143
|
+
shadowColor: z.string().optional().describe('Shadow color with alpha (default: "#00000040")'),
|
|
144
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels (default: 20)"),
|
|
145
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset (default: 0)"),
|
|
146
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset (default: 10)"),
|
|
147
|
+
}, async ({ project_id, screen_id, imageUrl, x, y, width, height, objectFit, borderRadius, opacity, shadowEnabled, shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY }) => {
|
|
148
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
149
|
+
if ("error" in result) {
|
|
150
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
151
|
+
}
|
|
152
|
+
const { project, screenIndex } = result;
|
|
153
|
+
const screen = project.screens[screenIndex];
|
|
154
|
+
const layer = createImageLayer({
|
|
155
|
+
imageUrl,
|
|
156
|
+
...(x !== undefined ? { x } : {}),
|
|
157
|
+
...(y !== undefined ? { y } : {}),
|
|
158
|
+
...(width !== undefined ? { width } : {}),
|
|
159
|
+
...(height !== undefined ? { height } : {}),
|
|
160
|
+
...(objectFit !== undefined ? { objectFit } : {}),
|
|
161
|
+
...(borderRadius !== undefined ? { borderRadius } : {}),
|
|
162
|
+
...(opacity !== undefined ? { opacity } : {}),
|
|
163
|
+
...(shadowEnabled !== undefined ? { shadowEnabled } : {}),
|
|
164
|
+
...(shadowColor !== undefined ? { shadowColor } : {}),
|
|
165
|
+
...(shadowBlur !== undefined ? { shadowBlur } : {}),
|
|
166
|
+
...(shadowOffsetX !== undefined ? { shadowOffsetX } : {}),
|
|
167
|
+
...(shadowOffsetY !== undefined ? { shadowOffsetY } : {}),
|
|
168
|
+
});
|
|
169
|
+
screen.layers.push(layer);
|
|
170
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
171
|
+
return {
|
|
172
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer.id, message: "Image layer added." }, null, 2) }],
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
server.tool("add_shape_layer", `Add a shape layer (rectangle, circle, or rounded rectangle) to a screen.`, {
|
|
176
|
+
project_id: z.string().describe("Project ID"),
|
|
177
|
+
screen_id: z.string().describe("Screen ID"),
|
|
178
|
+
shapeType: z.enum(["rect", "circle", "rounded-rect"]).describe("Shape type"),
|
|
179
|
+
fill: z.string().optional().describe('Fill color hex (default: "#ffffff")'),
|
|
180
|
+
fillType: z.enum(["solid", "gradient", "image"]).optional().describe('Fill type (default: "solid")'),
|
|
181
|
+
gradientColor2: z.string().optional().describe('Second gradient color hex (default: "#000000")'),
|
|
182
|
+
gradientDirection: z.number().optional().describe("Gradient angle in degrees 0-360 (default: 135)"),
|
|
183
|
+
fillImageUrl: z.string().optional().describe("Image URL for image fill"),
|
|
184
|
+
fillImageSize: z.enum(["cover", "contain", "fill"]).optional().describe('Image fill size mode (default: "cover")'),
|
|
185
|
+
x: z.number().optional().describe("X position"),
|
|
186
|
+
y: z.number().optional().describe("Y position"),
|
|
187
|
+
width: z.number().optional().describe("Shape width"),
|
|
188
|
+
height: z.number().optional().describe("Shape height"),
|
|
189
|
+
borderRadius: z.number().optional().describe("Border radius"),
|
|
190
|
+
stroke: z.string().optional().describe("Stroke color"),
|
|
191
|
+
strokeWidth: z.number().optional().describe("Stroke width"),
|
|
192
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
193
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow (default: false)"),
|
|
194
|
+
shadowColor: z.string().optional().describe('Shadow color with alpha (default: "#00000040")'),
|
|
195
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels (default: 20)"),
|
|
196
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset (default: 0)"),
|
|
197
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset (default: 10)"),
|
|
198
|
+
}, async ({ project_id, screen_id, shapeType, fill, fillType, gradientColor2, gradientDirection, fillImageUrl, fillImageSize, x, y, width, height, borderRadius, stroke, strokeWidth, opacity, shadowEnabled, shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY }) => {
|
|
199
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
200
|
+
if ("error" in result) {
|
|
201
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
202
|
+
}
|
|
203
|
+
const { project, screenIndex } = result;
|
|
204
|
+
const screen = project.screens[screenIndex];
|
|
205
|
+
const layer = createShapeLayer({
|
|
206
|
+
shape: shapeType,
|
|
207
|
+
...(fill !== undefined ? { fill } : {}),
|
|
208
|
+
...(fillType !== undefined ? { fillType } : {}),
|
|
209
|
+
...(gradientColor2 !== undefined ? { gradientColor2 } : {}),
|
|
210
|
+
...(gradientDirection !== undefined ? { gradientDirection } : {}),
|
|
211
|
+
...(fillImageUrl !== undefined ? { fillImageUrl } : {}),
|
|
212
|
+
...(fillImageSize !== undefined ? { fillImageSize } : {}),
|
|
213
|
+
...(x !== undefined ? { x } : {}),
|
|
214
|
+
...(y !== undefined ? { y } : {}),
|
|
215
|
+
...(width !== undefined ? { width } : {}),
|
|
216
|
+
...(height !== undefined ? { height } : {}),
|
|
217
|
+
...(borderRadius !== undefined ? { borderRadius } : {}),
|
|
218
|
+
...(stroke !== undefined ? { stroke } : {}),
|
|
219
|
+
...(strokeWidth !== undefined ? { strokeWidth } : {}),
|
|
220
|
+
...(opacity !== undefined ? { opacity } : {}),
|
|
221
|
+
...(shadowEnabled !== undefined ? { shadowEnabled } : {}),
|
|
222
|
+
...(shadowColor !== undefined ? { shadowColor } : {}),
|
|
223
|
+
...(shadowBlur !== undefined ? { shadowBlur } : {}),
|
|
224
|
+
...(shadowOffsetX !== undefined ? { shadowOffsetX } : {}),
|
|
225
|
+
...(shadowOffsetY !== undefined ? { shadowOffsetY } : {}),
|
|
226
|
+
});
|
|
227
|
+
screen.layers.push(layer);
|
|
228
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
229
|
+
return {
|
|
230
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer.id, message: `${shapeType} shape added.` }, null, 2) }],
|
|
231
|
+
};
|
|
232
|
+
});
|
|
233
|
+
server.tool("add_badge_layer", `Add a badge layer — social proof pills like star ratings, labels, or download counts.
|
|
234
|
+
|
|
235
|
+
Badge styles:
|
|
236
|
+
- "rating": Rating number + star icons (e.g., "4.8 ★★★★★")
|
|
237
|
+
- "label": Text in a pill (e.g., "Editor's Choice")
|
|
238
|
+
- "count": Number + label (e.g., "1M+ Downloads")
|
|
239
|
+
- "custom": Any text in a pill`, {
|
|
240
|
+
project_id: z.string().describe("Project ID"),
|
|
241
|
+
screen_id: z.string().describe("Screen ID"),
|
|
242
|
+
badgeStyle: z.enum(["rating", "label", "count", "custom"]).optional().describe('Badge style (default: "label")'),
|
|
243
|
+
text: z.string().optional().describe('Badge text (default: "Editor\'s Choice")'),
|
|
244
|
+
x: z.number().optional().describe("X position"),
|
|
245
|
+
y: z.number().optional().describe("Y position"),
|
|
246
|
+
width: z.number().optional().describe("Badge width"),
|
|
247
|
+
height: z.number().optional().describe("Badge height"),
|
|
248
|
+
fontSize: z.number().optional().describe("Font size in pixels (default: 32)"),
|
|
249
|
+
fontFamily: z.string().optional().describe('Font family (default: "system-ui")'),
|
|
250
|
+
fontWeight: z.number().optional().describe("Font weight 100-900 (default: 700)"),
|
|
251
|
+
color: z.string().optional().describe('Text color hex (default: "#ffffff")'),
|
|
252
|
+
backgroundColor: z.string().optional().describe('Background color hex (default: "#000000")'),
|
|
253
|
+
backgroundOpacity: z.number().min(0).max(1).optional().describe("Background opacity 0-1 (default: 0.8)"),
|
|
254
|
+
borderRadius: z.number().optional().describe("Border radius (default: 100)"),
|
|
255
|
+
iconType: z.enum(["star", "download", "check", "none"]).optional().describe('Icon type (default: "none")'),
|
|
256
|
+
iconColor: z.string().optional().describe("Icon color hex"),
|
|
257
|
+
rating: z.number().min(1).max(5).optional().describe("Star rating 1-5 (rating style only)"),
|
|
258
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
259
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow (default: false)"),
|
|
260
|
+
shadowColor: z.string().optional().describe('Shadow color with alpha (default: "#00000040")'),
|
|
261
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels (default: 20)"),
|
|
262
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset (default: 0)"),
|
|
263
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset (default: 10)"),
|
|
264
|
+
}, async ({ project_id, screen_id, badgeStyle, text, x, y, width, height, fontSize, fontFamily, fontWeight, color, backgroundColor, backgroundOpacity, borderRadius, iconType, iconColor, rating, opacity, shadowEnabled, shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY }) => {
|
|
265
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
266
|
+
if ("error" in result) {
|
|
267
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
268
|
+
}
|
|
269
|
+
const { project, screenIndex } = result;
|
|
270
|
+
const screen = project.screens[screenIndex];
|
|
271
|
+
const pos = autoPosition(screen.layers, "badge");
|
|
272
|
+
const layer = createBadgeLayer({
|
|
273
|
+
...(badgeStyle !== undefined ? { badgeStyle } : {}),
|
|
274
|
+
...(text !== undefined ? { text: unescapeNewlines(text) } : {}),
|
|
275
|
+
...(x !== undefined ? { x } : { x: pos.x }),
|
|
276
|
+
...(y !== undefined ? { y } : { y: pos.y }),
|
|
277
|
+
...(width !== undefined ? { width } : {}),
|
|
278
|
+
...(height !== undefined ? { height } : {}),
|
|
279
|
+
...(fontSize !== undefined ? { fontSize } : {}),
|
|
280
|
+
...(fontFamily !== undefined ? { fontFamily } : {}),
|
|
281
|
+
...(fontWeight !== undefined ? { fontWeight } : {}),
|
|
282
|
+
...(color !== undefined ? { color } : {}),
|
|
283
|
+
...(backgroundColor !== undefined ? { backgroundColor } : {}),
|
|
284
|
+
...(backgroundOpacity !== undefined ? { backgroundOpacity } : {}),
|
|
285
|
+
...(borderRadius !== undefined ? { borderRadius } : {}),
|
|
286
|
+
...(iconType !== undefined ? { iconType } : {}),
|
|
287
|
+
...(iconColor !== undefined ? { iconColor } : {}),
|
|
288
|
+
...(rating !== undefined ? { rating } : {}),
|
|
289
|
+
...(opacity !== undefined ? { opacity } : {}),
|
|
290
|
+
...(shadowEnabled !== undefined ? { shadowEnabled } : {}),
|
|
291
|
+
...(shadowColor !== undefined ? { shadowColor } : {}),
|
|
292
|
+
...(shadowBlur !== undefined ? { shadowBlur } : {}),
|
|
293
|
+
...(shadowOffsetX !== undefined ? { shadowOffsetX } : {}),
|
|
294
|
+
...(shadowOffsetY !== undefined ? { shadowOffsetY } : {}),
|
|
295
|
+
});
|
|
296
|
+
screen.layers.push(layer);
|
|
297
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
298
|
+
return {
|
|
299
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer.id, message: `Badge layer "${layer.text}" added.` }, null, 2) }],
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
server.tool("add_arrow_layer", `Add an arrow/line layer to annotate screenshots. Use fromX/fromY/toX/toY — bounding box is auto-computed.
|
|
303
|
+
|
|
304
|
+
SIZING GUIDE:
|
|
305
|
+
- strokeWidth 5-8 for annotations on a 1260x2736 canvas
|
|
306
|
+
- curvature 20-40 for gentle curves, 0 for straight lines
|
|
307
|
+
- Arrow should span at least 150-200px
|
|
308
|
+
|
|
309
|
+
POSITIONING TIP:
|
|
310
|
+
- Text bounding boxes are wider than visible text. For left-aligned text, visible right edge ≈ x + width*0.7.
|
|
311
|
+
- Start point (fromX/fromY) can overlap other layers. End point (toX/toY) should target the edge of the target element, not inside it.`, {
|
|
312
|
+
project_id: z.string().describe("Project ID"),
|
|
313
|
+
screen_id: z.string().describe("Screen ID"),
|
|
314
|
+
fromX: z.number().optional().describe("Start point X coordinate"),
|
|
315
|
+
fromY: z.number().optional().describe("Start point Y coordinate"),
|
|
316
|
+
toX: z.number().optional().describe("End point X coordinate (where arrowhead points)"),
|
|
317
|
+
toY: z.number().optional().describe("End point Y coordinate"),
|
|
318
|
+
strokeColor: z.string().optional().describe('Arrow color hex (default: "#ffffff")'),
|
|
319
|
+
strokeWidth: z.number().min(1).max(20).optional().describe("Line width in pixels (default: 6)"),
|
|
320
|
+
headStyle: z.enum(["triangle", "circle", "none"]).optional().describe('Arrowhead style (default: "triangle")'),
|
|
321
|
+
curvature: z.number().min(-100).max(100).optional().describe("Curve amount -100 to 100. Positive curves one way, negative the other. 0 = straight (default: 30)"),
|
|
322
|
+
dashed: z.boolean().optional().describe("Dashed line (default: false)"),
|
|
323
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
324
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow (default: false)"),
|
|
325
|
+
shadowColor: z.string().optional().describe('Shadow color with alpha (default: "#00000040")'),
|
|
326
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels (default: 20)"),
|
|
327
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset (default: 0)"),
|
|
328
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset (default: 10)"),
|
|
329
|
+
}, async ({ project_id, screen_id, fromX, fromY, toX, toY, strokeColor, strokeWidth, headStyle, curvature, dashed, opacity, shadowEnabled, shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY }) => {
|
|
330
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
331
|
+
if ("error" in result) {
|
|
332
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
333
|
+
}
|
|
334
|
+
const { project, screenIndex } = result;
|
|
335
|
+
const screen = project.screens[screenIndex];
|
|
336
|
+
const layer = createArrowLayer({
|
|
337
|
+
...(fromX !== undefined ? { fromX } : {}),
|
|
338
|
+
...(fromY !== undefined ? { fromY } : {}),
|
|
339
|
+
...(toX !== undefined ? { toX } : {}),
|
|
340
|
+
...(toY !== undefined ? { toY } : {}),
|
|
341
|
+
...(strokeColor !== undefined ? { strokeColor } : {}),
|
|
342
|
+
...(strokeWidth !== undefined ? { strokeWidth } : {}),
|
|
343
|
+
...(headStyle !== undefined ? { headStyle } : {}),
|
|
344
|
+
...(curvature !== undefined ? { curvature } : {}),
|
|
345
|
+
...(dashed !== undefined ? { dashed } : {}),
|
|
346
|
+
...(opacity !== undefined ? { opacity } : {}),
|
|
347
|
+
...(shadowEnabled !== undefined ? { shadowEnabled } : {}),
|
|
348
|
+
...(shadowColor !== undefined ? { shadowColor } : {}),
|
|
349
|
+
...(shadowBlur !== undefined ? { shadowBlur } : {}),
|
|
350
|
+
...(shadowOffsetX !== undefined ? { shadowOffsetX } : {}),
|
|
351
|
+
...(shadowOffsetY !== undefined ? { shadowOffsetY } : {}),
|
|
352
|
+
});
|
|
353
|
+
screen.layers.push(layer);
|
|
354
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
355
|
+
return {
|
|
356
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer.id, message: "Arrow layer added." }, null, 2) }],
|
|
357
|
+
};
|
|
358
|
+
});
|
|
359
|
+
server.tool("update_layer", `Update properties of an existing layer (partial update — only specified properties change).
|
|
360
|
+
|
|
361
|
+
ANIMATION OVERRIDES: Set animation_entrance_type to override the preset's default entrance for this layer. Set to "" to clear.`, {
|
|
362
|
+
project_id: z.string().describe("Project ID"),
|
|
363
|
+
screen_id: z.string().describe("Screen ID"),
|
|
364
|
+
layer_id: z.string().describe("Layer ID to update"),
|
|
365
|
+
x: z.number().optional().describe("New X position"),
|
|
366
|
+
y: z.number().optional().describe("New Y position"),
|
|
367
|
+
width: z.number().optional().describe("New width"),
|
|
368
|
+
height: z.number().optional().describe("New height"),
|
|
369
|
+
rotation: z.number().optional().describe("Rotation in degrees"),
|
|
370
|
+
rotateX: z.number().optional().describe("3D tilt on X axis in degrees, -90 to 90 (default: 0)"),
|
|
371
|
+
rotateY: z.number().optional().describe("3D tilt on Y axis in degrees, -90 to 90 (default: 0)"),
|
|
372
|
+
visible: z.boolean().optional().describe("Layer visibility"),
|
|
373
|
+
locked: z.boolean().optional().describe("Layer locked state"),
|
|
374
|
+
opacity: z.number().min(0).max(1).optional().describe("Layer opacity 0-1 (default: 1)"),
|
|
375
|
+
text: z.string().optional().describe("Text content (text layers)"),
|
|
376
|
+
fontSize: z.number().optional().describe("Font size (text layers)"),
|
|
377
|
+
fontFamily: z.string().optional().describe("Font family (text layers)"),
|
|
378
|
+
fontWeight: z.number().optional().describe("Font weight (text layers)"),
|
|
379
|
+
color: z.string().optional().describe("Text color (text layers)"),
|
|
380
|
+
textAlign: z.enum(["left", "center", "right"]).optional().describe("Text alignment"),
|
|
381
|
+
letterSpacing: z.number().optional().describe("Letter spacing in pixels (default: -1)"),
|
|
382
|
+
lineHeight: z.number().optional().describe("Line height multiplier (default: 1.1)"),
|
|
383
|
+
fillType: z.enum(["solid", "gradient", "image"]).optional().describe('Fill type: "solid"|"gradient" for text layers, "solid"|"gradient"|"image" for shape layers'),
|
|
384
|
+
gradientColor2: z.string().optional().describe("Second gradient color (text and shape layers)"),
|
|
385
|
+
gradientDirection: z.number().optional().describe("Gradient angle 0-360 (text and shape layers)"),
|
|
386
|
+
strokeEnabled: z.boolean().optional().describe("Enable text stroke/outline (text layers)"),
|
|
387
|
+
strokeColor: z.string().optional().describe("Stroke color hex (text stroke and arrow layers)"),
|
|
388
|
+
fill: z.string().optional().describe("Fill color (shape layers)"),
|
|
389
|
+
fillImageUrl: z.string().optional().describe("Image URL for image fill (shape layers)"),
|
|
390
|
+
fillImageSize: z.enum(["cover", "contain", "fill"]).optional().describe("Image fill size mode (shape layers)"),
|
|
391
|
+
stroke: z.string().optional().describe("Stroke color (shape layers)"),
|
|
392
|
+
strokeWidth: z.number().optional().describe("Stroke width (shape and text layers)"),
|
|
393
|
+
borderRadius: z.number().optional().describe("Border radius"),
|
|
394
|
+
screenshotUrl: z.string().optional().describe("Screenshot URL (device layers)"),
|
|
395
|
+
imageUrl: z.string().optional().describe("Image URL (image layers)"),
|
|
396
|
+
badgeStyle: z.enum(["rating", "label", "count", "custom"]).optional().describe("Badge style (badge layers)"),
|
|
397
|
+
backgroundColor: z.string().optional().describe("Background color (badge layers)"),
|
|
398
|
+
backgroundOpacity: z.number().min(0).max(1).optional().describe("Background opacity (badge layers)"),
|
|
399
|
+
iconType: z.enum(["star", "download", "check", "none"]).optional().describe("Icon type (badge layers)"),
|
|
400
|
+
iconColor: z.string().optional().describe("Icon color (badge layers)"),
|
|
401
|
+
rating: z.number().min(1).max(5).optional().describe("Star rating 1-5 (badge layers)"),
|
|
402
|
+
headStyle: z.enum(["triangle", "circle", "none"]).optional().describe("Arrowhead style (arrow layers)"),
|
|
403
|
+
direction: z.enum(["right", "left", "up", "down", "auto"]).optional().describe("Arrow direction (arrow layers)"),
|
|
404
|
+
curvature: z.number().min(-100).max(100).optional().describe("Curve amount -100 to 100 (arrow layers)"),
|
|
405
|
+
dashed: z.boolean().optional().describe("Dashed line (arrow layers)"),
|
|
406
|
+
shadowEnabled: z.boolean().optional().describe("Enable drop shadow"),
|
|
407
|
+
shadowColor: z.string().optional().describe("Shadow color with alpha"),
|
|
408
|
+
shadowBlur: z.number().optional().describe("Shadow blur radius in pixels"),
|
|
409
|
+
shadowOffsetX: z.number().optional().describe("Shadow horizontal offset"),
|
|
410
|
+
shadowOffsetY: z.number().optional().describe("Shadow vertical offset"),
|
|
411
|
+
animation_entrance_type: z.string().optional().describe('Override entrance animation type (e.g. "fade-rise", "bounce", "flip"). Set to "" to clear.'),
|
|
412
|
+
animation_entrance_duration: z.number().optional().describe("Override entrance duration in frames"),
|
|
413
|
+
animation_entrance_delay: z.number().optional().describe("Override entrance delay in frames"),
|
|
414
|
+
}, async ({ project_id, screen_id, layer_id, animation_entrance_type, animation_entrance_duration, animation_entrance_delay, ...updates }) => {
|
|
415
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
416
|
+
if ("error" in result) {
|
|
417
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
418
|
+
}
|
|
419
|
+
const { project, screenIndex } = result;
|
|
420
|
+
const screen = project.screens[screenIndex];
|
|
421
|
+
const layerIndex = screen.layers.findIndex((l) => l.id === layer_id);
|
|
422
|
+
if (layerIndex === -1) {
|
|
423
|
+
return { content: [{ type: "text", text: `Error: Layer "${layer_id}" not found.` }], isError: true };
|
|
424
|
+
}
|
|
425
|
+
// Apply non-undefined updates
|
|
426
|
+
const filtered = {};
|
|
427
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
428
|
+
if (value !== undefined) {
|
|
429
|
+
filtered[key] = key === "text" && typeof value === "string" ? unescapeNewlines(value) : value;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
// Handle animation overrides
|
|
433
|
+
if (animation_entrance_type !== undefined || animation_entrance_duration !== undefined || animation_entrance_delay !== undefined) {
|
|
434
|
+
const existing = screen.layers[layerIndex].animation ?? {};
|
|
435
|
+
filtered.animation = {
|
|
436
|
+
...existing,
|
|
437
|
+
...(animation_entrance_type !== undefined ? { entranceType: animation_entrance_type || undefined } : {}),
|
|
438
|
+
...(animation_entrance_duration !== undefined ? { entranceDuration: animation_entrance_duration } : {}),
|
|
439
|
+
...(animation_entrance_delay !== undefined ? { entranceDelay: animation_entrance_delay } : {}),
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
screen.layers[layerIndex] = { ...screen.layers[layerIndex], ...filtered };
|
|
443
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
444
|
+
return {
|
|
445
|
+
content: [{ type: "text", text: JSON.stringify({ layerId: layer_id, message: "Layer updated.", updatedProps: Object.keys(filtered) }, null, 2) }],
|
|
446
|
+
};
|
|
447
|
+
});
|
|
448
|
+
server.tool("remove_layer", `Remove a layer from a screen.`, {
|
|
449
|
+
project_id: z.string().describe("Project ID"),
|
|
450
|
+
screen_id: z.string().describe("Screen ID"),
|
|
451
|
+
layer_id: z.string().describe("Layer ID to remove"),
|
|
452
|
+
}, async ({ project_id, screen_id, layer_id }) => {
|
|
453
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
454
|
+
if ("error" in result) {
|
|
455
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
456
|
+
}
|
|
457
|
+
const { project, screenIndex } = result;
|
|
458
|
+
const screen = project.screens[screenIndex];
|
|
459
|
+
const layerIndex = screen.layers.findIndex((l) => l.id === layer_id);
|
|
460
|
+
if (layerIndex === -1) {
|
|
461
|
+
return { content: [{ type: "text", text: `Error: Layer "${layer_id}" not found.` }], isError: true };
|
|
462
|
+
}
|
|
463
|
+
screen.layers.splice(layerIndex, 1);
|
|
464
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
465
|
+
return {
|
|
466
|
+
content: [{ type: "text", text: JSON.stringify({ message: "Layer removed." }, null, 2) }],
|
|
467
|
+
};
|
|
468
|
+
});
|
|
469
|
+
server.tool("reorder_layers", `Reorder layers on a screen. First ID in the array renders at the back (lowest z-index), last renders on top.`, {
|
|
470
|
+
project_id: z.string().describe("Project ID"),
|
|
471
|
+
screen_id: z.string().describe("Screen ID"),
|
|
472
|
+
layer_ids: z.array(z.string()).describe("Layer IDs in new back-to-front order"),
|
|
473
|
+
}, async ({ project_id, screen_id, layer_ids }) => {
|
|
474
|
+
const result = await getProjectAndScreen(api, project_id, screen_id);
|
|
475
|
+
if ("error" in result) {
|
|
476
|
+
return { content: [{ type: "text", text: result.error }], isError: true };
|
|
477
|
+
}
|
|
478
|
+
const { project, screenIndex } = result;
|
|
479
|
+
const screen = project.screens[screenIndex];
|
|
480
|
+
// Assign new zIndex values based on order
|
|
481
|
+
for (let i = 0; i < layer_ids.length; i++) {
|
|
482
|
+
const layer = screen.layers.find((l) => l.id === layer_ids[i]);
|
|
483
|
+
if (layer) {
|
|
484
|
+
layer.zIndex = i + 1;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
await api.updateProject(project_id, { ...project, screens: project.screens, updatedAt: new Date().toISOString() });
|
|
488
|
+
return {
|
|
489
|
+
content: [{ type: "text", text: JSON.stringify({ message: "Layers reordered.", order: layer_ids }, null, 2) }],
|
|
490
|
+
};
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
//# sourceMappingURL=layers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/tools/layers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqElD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CA8K5E"}
|