@pinepaper.studio/mcp-server 1.5.3 → 1.5.5
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/README.md +6 -4
- package/dist/agent/types.d.ts +16 -16
- package/dist/browser/url-target.d.ts +26 -0
- package/dist/browser/url-target.d.ts.map +1 -0
- package/dist/browser/url-target.js +50 -0
- package/dist/browser/url-target.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -4
- package/dist/index.js.map +1 -1
- package/dist/ontology/hints.d.ts +71 -0
- package/dist/ontology/hints.d.ts.map +1 -0
- package/dist/ontology/hints.js +189 -0
- package/dist/ontology/hints.js.map +1 -0
- package/dist/ontology/vocabulary.d.ts.map +1 -1
- package/dist/ontology/vocabulary.js +34 -0
- package/dist/ontology/vocabulary.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +146 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/tools/compact-descriptions.d.ts +3 -0
- package/dist/tools/compact-descriptions.d.ts.map +1 -1
- package/dist/tools/compact-descriptions.js +17 -9
- package/dist/tools/compact-descriptions.js.map +1 -1
- package/dist/tools/definitions.d.ts +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +1251 -2327
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers/camera.d.ts +19 -0
- package/dist/tools/handlers/camera.d.ts.map +1 -0
- package/dist/tools/handlers/camera.js +100 -0
- package/dist/tools/handlers/camera.js.map +1 -0
- package/dist/tools/handlers/export.d.ts +12 -0
- package/dist/tools/handlers/export.d.ts.map +1 -0
- package/dist/tools/handlers/export.js +30 -0
- package/dist/tools/handlers/export.js.map +1 -0
- package/dist/tools/handlers/font.d.ts +12 -0
- package/dist/tools/handlers/font.d.ts.map +1 -0
- package/dist/tools/handlers/font.js +135 -0
- package/dist/tools/handlers/font.js.map +1 -0
- package/dist/tools/handlers/maps.d.ts +19 -0
- package/dist/tools/handlers/maps.d.ts.map +1 -0
- package/dist/tools/handlers/maps.js +184 -0
- package/dist/tools/handlers/maps.js.map +1 -0
- package/dist/tools/handlers/ontology.d.ts +20 -0
- package/dist/tools/handlers/ontology.d.ts.map +1 -0
- package/dist/tools/handlers/ontology.js +185 -0
- package/dist/tools/handlers/ontology.js.map +1 -0
- package/dist/tools/handlers/tool-guide.d.ts +14 -0
- package/dist/tools/handlers/tool-guide.d.ts.map +1 -0
- package/dist/tools/handlers/tool-guide.js +52 -0
- package/dist/tools/handlers/tool-guide.js.map +1 -0
- package/dist/tools/handlers.d.ts +18 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +213 -695
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/minimal-descriptions.d.ts +4 -0
- package/dist/tools/minimal-descriptions.d.ts.map +1 -1
- package/dist/tools/minimal-descriptions.js +45 -66
- package/dist/tools/minimal-descriptions.js.map +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +36 -62
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +35 -34
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +869 -474
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +1047 -988
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +282 -84
- package/dist/types/schemas.js.map +1 -1
- package/dist/version.d.ts +11 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +18 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
package/dist/types/schemas.js
CHANGED
|
@@ -11,10 +11,19 @@ import { z } from 'zod';
|
|
|
11
11
|
// =============================================================================
|
|
12
12
|
// COMMON SCHEMAS
|
|
13
13
|
// =============================================================================
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
14
|
+
/**
|
|
15
|
+
* Position on canvas. Accepts either the object form {x, y} or the array
|
|
16
|
+
* form [x, y] (matches FxTool's PinePaper.create() normalization, fix
|
|
17
|
+
* 3574992). Both forms normalize to {x, y} after parse, so downstream code
|
|
18
|
+
* that reads position.x / position.y is unaffected.
|
|
19
|
+
*/
|
|
20
|
+
export const PositionSchema = z.union([
|
|
21
|
+
z.object({
|
|
22
|
+
x: z.number().describe('X coordinate on canvas'),
|
|
23
|
+
y: z.number().describe('Y coordinate on canvas'),
|
|
24
|
+
}),
|
|
25
|
+
z.tuple([z.number(), z.number()]).transform(([x, y]) => ({ x, y })),
|
|
26
|
+
]);
|
|
18
27
|
export const PointArraySchema = z.tuple([z.number(), z.number()]);
|
|
19
28
|
// =============================================================================
|
|
20
29
|
// GRADIENT SCHEMAS
|
|
@@ -91,6 +100,10 @@ export const TextPropertiesSchema = z.object({
|
|
|
91
100
|
fontFamily: z.string().optional().default('Arial, sans-serif').describe('Font family'),
|
|
92
101
|
color: ColorSchema.optional().default('#ffffff').describe('Text color'),
|
|
93
102
|
fontWeight: z.string().optional().describe('Font weight (normal, bold, etc.)'),
|
|
103
|
+
contentType: z.enum(['clock', 'timer', 'countdown', 'stopwatch']).optional().describe('Dynamic content type — makes text auto-update. clock: current time, timer: elapsed time, countdown: counts down from countdownTarget, stopwatch: pauseable timer'),
|
|
104
|
+
contentFormat: z.string().optional().describe('Time format for dynamic content (HH:MM:SS, MM:SS, SS, SS.ms). Default: HH:MM:SS'),
|
|
105
|
+
countdownTarget: z.number().optional().describe('Countdown duration in seconds (countdown contentType only). Default: 60'),
|
|
106
|
+
countdownEndText: z.string().optional().describe('Text shown when countdown reaches zero. Default: 00:00'),
|
|
94
107
|
});
|
|
95
108
|
// Base visual properties shared by all shapes (shadow, blend mode, opacity)
|
|
96
109
|
export const BaseVisualPropertiesSchema = z.object({
|
|
@@ -200,6 +213,10 @@ export const RelationTypeSchema = z.enum([
|
|
|
200
213
|
'camera_follows',
|
|
201
214
|
'camera_animates',
|
|
202
215
|
'morphs_to',
|
|
216
|
+
// Pair-by-index group morph; same call shape works for any two paper.Groups
|
|
217
|
+
'group_morphs_to',
|
|
218
|
+
// Self-relation; item moves along a custom-drawn path stored in params
|
|
219
|
+
'moves_along_path',
|
|
203
220
|
]).describe('Type of relationship between items');
|
|
204
221
|
// Relation parameter schemas
|
|
205
222
|
export const OrbitsParamsSchema = z.object({
|
|
@@ -288,6 +305,20 @@ export const CameraFollowsParamsSchema = z.object({
|
|
|
288
305
|
maxY: z.number().optional(),
|
|
289
306
|
}).optional().describe('Camera bounds'),
|
|
290
307
|
});
|
|
308
|
+
export const CameraAnimatesParamsSchema = z.object({
|
|
309
|
+
keyframes: z.array(z.object({
|
|
310
|
+
time: z.number().describe('Time in seconds'),
|
|
311
|
+
zoom: z.number().optional().describe('Zoom level (1=normal)'),
|
|
312
|
+
center: PointArraySchema.optional().describe('View center [x, y]'),
|
|
313
|
+
pitch: z.number().optional().describe('3D tilt in degrees (0=flat, positive=forward tilt)'),
|
|
314
|
+
yaw: z.number().optional().describe('3D rotation in degrees'),
|
|
315
|
+
easing: z.string().optional().describe('Easing function'),
|
|
316
|
+
})).optional().describe('Camera keyframes'),
|
|
317
|
+
duration: z.number().optional().default(2).describe('Total animation duration in seconds'),
|
|
318
|
+
loop: z.boolean().optional().default(false).describe('Loop animation'),
|
|
319
|
+
delay: z.number().optional().default(0).describe('Delay before starting'),
|
|
320
|
+
fov: z.number().optional().default(60).describe('Field of view in degrees for 3D perspective'),
|
|
321
|
+
});
|
|
291
322
|
export const MorphsToParamsSchema = z.object({
|
|
292
323
|
duration: z.number().optional().default(1.5).describe('Morph duration in seconds'),
|
|
293
324
|
delay: z.number().optional().default(0).describe('Delay before starting'),
|
|
@@ -295,6 +326,30 @@ export const MorphsToParamsSchema = z.object({
|
|
|
295
326
|
morphColor: z.boolean().optional().default(true).describe('Also morph color'),
|
|
296
327
|
morphSize: z.boolean().optional().default(true).describe('Also morph size'),
|
|
297
328
|
});
|
|
329
|
+
// Pair-by-index group morph. Source paper.Group's children migrate into target
|
|
330
|
+
// Group's children's positions; Path.Line endpoints deform; excess children fade.
|
|
331
|
+
// Generic — any two groups (graph vertices+edges, letter collages, dashboard
|
|
332
|
+
// clusters, etc.) work with the same call shape.
|
|
333
|
+
export const GroupMorphsToParamsSchema = z.object({
|
|
334
|
+
duration: z.number().optional().default(1.5).describe('Morph duration each direction (seconds)'),
|
|
335
|
+
hold: z.number().optional().default(1.0).describe('Hold time on each end before reversing (seconds)'),
|
|
336
|
+
loop: z.boolean().optional().default(true).describe('Cycle source ↔ target indefinitely'),
|
|
337
|
+
easing: z.enum(['linear', 'easeIn', 'easeOut', 'easeInOut']).optional().default('easeInOut').describe('Easing for the position interpolation'),
|
|
338
|
+
deformLines: z.boolean().optional().default(true).describe('Path.Line children deform via segment endpoints instead of rigid translation'),
|
|
339
|
+
});
|
|
340
|
+
// Self-relation: item is driven along a custom-drawn path stored in params.
|
|
341
|
+
// In the editor the Relations picker offers a drag-to-draw capture mode; via
|
|
342
|
+
// MCP / agent code, pass the points array explicitly.
|
|
343
|
+
export const MovesAlongPathParamsSchema = z.object({
|
|
344
|
+
path: z.array(z.union([
|
|
345
|
+
z.object({ x: z.number(), y: z.number() }),
|
|
346
|
+
z.tuple([z.number(), z.number()]),
|
|
347
|
+
])).describe('Path points: array of {x,y} objects or [x,y] tuples'),
|
|
348
|
+
speed: z.number().optional().default(1).describe('Speed multiplier (1 ≈ 150 px/s)'),
|
|
349
|
+
closed: z.boolean().optional().default(true).describe('Loop back to start at end of path'),
|
|
350
|
+
phase: z.number().optional().default(0).describe('Starting position along path (0–1)'),
|
|
351
|
+
easing: z.enum(['linear', 'easeIn', 'easeOut', 'easeInOut', 'sine', 'bounce', 'pingpong']).optional().default('linear').describe('Motion curve mapping normalized time → progress along path'),
|
|
352
|
+
});
|
|
298
353
|
// =============================================================================
|
|
299
354
|
// CUSTOM RELATION REGISTRATION
|
|
300
355
|
// =============================================================================
|
|
@@ -327,7 +382,7 @@ export const ExecuteCustomCodeInputSchema = z.object({
|
|
|
327
382
|
// GENERATOR TYPES
|
|
328
383
|
// =============================================================================
|
|
329
384
|
export const GeneratorNameSchema = z.enum([
|
|
330
|
-
//
|
|
385
|
+
// Classic generators
|
|
331
386
|
'drawSunburst',
|
|
332
387
|
'drawSunsetScene',
|
|
333
388
|
'drawGrid',
|
|
@@ -335,7 +390,7 @@ export const GeneratorNameSchema = z.enum([
|
|
|
335
390
|
'drawCircuit',
|
|
336
391
|
'drawWaves',
|
|
337
392
|
'drawPattern',
|
|
338
|
-
//
|
|
393
|
+
// Visual generators
|
|
339
394
|
'drawBokeh',
|
|
340
395
|
'drawGradientMesh',
|
|
341
396
|
'drawGeometricAbstract',
|
|
@@ -344,6 +399,46 @@ export const GeneratorNameSchema = z.enum([
|
|
|
344
399
|
'drawOrganicFlow',
|
|
345
400
|
'drawNoiseTexture',
|
|
346
401
|
'drawGlobeWireframe',
|
|
402
|
+
// Scene generators
|
|
403
|
+
'drawPerspectiveGrid',
|
|
404
|
+
'drawPoissonDisk',
|
|
405
|
+
'drawPoissonShapesAsync',
|
|
406
|
+
'drawGoldenSpiral',
|
|
407
|
+
'drawFibonacci',
|
|
408
|
+
'createShape',
|
|
409
|
+
'createGradientCircle',
|
|
410
|
+
'drawStarfield',
|
|
411
|
+
'drawSolarSystem',
|
|
412
|
+
'drawDayNightCycle',
|
|
413
|
+
'drawCosmosSpace',
|
|
414
|
+
'drawTadpoles',
|
|
415
|
+
'drawMetaballs',
|
|
416
|
+
'drawKaleidoscope',
|
|
417
|
+
'drawFlowField',
|
|
418
|
+
'drawNeonGrid',
|
|
419
|
+
'drawConstellation',
|
|
420
|
+
'drawTessellation',
|
|
421
|
+
// Decorative generators
|
|
422
|
+
'drawSunburstLines',
|
|
423
|
+
'drawGlowOrbs',
|
|
424
|
+
'drawConcentricRings',
|
|
425
|
+
'drawCornerAccents',
|
|
426
|
+
'drawFlowCurves',
|
|
427
|
+
'drawFallingPetals',
|
|
428
|
+
'drawFireflies',
|
|
429
|
+
'drawFloatingLeaves',
|
|
430
|
+
'drawVoronoi',
|
|
431
|
+
// Map generators
|
|
432
|
+
'drawWorldMap',
|
|
433
|
+
'drawUSAMap',
|
|
434
|
+
'drawCountryMap',
|
|
435
|
+
'drawChoroplethMap',
|
|
436
|
+
// PineMath generators
|
|
437
|
+
'drawFunctionPlot',
|
|
438
|
+
'drawParametricCurve',
|
|
439
|
+
'drawSimulation',
|
|
440
|
+
'drawSpectrumAnalyzer',
|
|
441
|
+
'draw3DSurface',
|
|
347
442
|
]).describe('Background generator name');
|
|
348
443
|
// ---------------------------------------------------------------------------
|
|
349
444
|
// Generator parameter schemas — Phase 1 (enhanced existing)
|
|
@@ -351,7 +446,7 @@ export const GeneratorNameSchema = z.enum([
|
|
|
351
446
|
export const SunburstParamsSchema = z.object({
|
|
352
447
|
rayCount: z.number().optional().default(16).describe('Number of rays'),
|
|
353
448
|
colors: z.array(ColorSchema).optional().default(['#FF6B6B', '#4ECDC4']).describe('Ray colors'),
|
|
354
|
-
bgColor: ColorSchema.optional().default('#1a1a2e').describe('Background color'),
|
|
449
|
+
bgColor: ColorSchema.optional().default('#1a1a2e').describe('Background color (use "none" or "transparent" for no background)'),
|
|
355
450
|
animated: z.boolean().optional().default(true).describe('Enable rotation animation'),
|
|
356
451
|
opacity: z.number().min(0).max(1).optional().describe('Overall opacity'),
|
|
357
452
|
rayGap: z.number().optional().describe('Gap between rays in degrees'),
|
|
@@ -361,7 +456,7 @@ export const GridParamsSchema = z.object({
|
|
|
361
456
|
gridType: z.enum(['lines', 'dots', 'squares']).optional().default('lines'),
|
|
362
457
|
spacing: z.number().optional().default(40).describe('Grid cell size'),
|
|
363
458
|
lineColor: ColorSchema.optional().default('#374151').describe('Line/dot color'),
|
|
364
|
-
bgColor: ColorSchema.optional().default('#1f2937').describe('Background color'),
|
|
459
|
+
bgColor: ColorSchema.optional().default('#1f2937').describe('Background color (use "none" or "transparent" for no background)'),
|
|
365
460
|
lineWidth: z.number().optional().default(1).describe('Line thickness'),
|
|
366
461
|
opacity: z.number().min(0).max(1).optional().describe('Overall opacity'),
|
|
367
462
|
gap: z.number().optional().describe('Pixel gap between cells'),
|
|
@@ -375,7 +470,7 @@ export const WavesParamsSchema = z.object({
|
|
|
375
470
|
colors: z.array(ColorSchema).optional().describe('Wave colors'),
|
|
376
471
|
amplitude: z.number().optional().default(50).describe('Wave height'),
|
|
377
472
|
frequency: z.number().optional().default(2).describe('Wave frequency'),
|
|
378
|
-
bgColor: ColorSchema.optional().default('#0f172a').describe('Background color'),
|
|
473
|
+
bgColor: ColorSchema.optional().default('#0f172a').describe('Background color (use "none" or "transparent" for no background)'),
|
|
379
474
|
animated: z.boolean().optional().default(true).describe('Animate waves'),
|
|
380
475
|
opacity: z.number().min(0).max(1).optional().describe('Overall opacity'),
|
|
381
476
|
fill: z.boolean().optional().describe('Fill between adjacent waves'),
|
|
@@ -386,7 +481,7 @@ export const WavesParamsSchema = z.object({
|
|
|
386
481
|
export const CircuitParamsSchema = z.object({
|
|
387
482
|
lineColor: ColorSchema.optional().default('#60a5fa').describe('Circuit line color'),
|
|
388
483
|
nodeColor: ColorSchema.optional().default('#3b82f6').describe('Node/junction color'),
|
|
389
|
-
bgColor: ColorSchema.optional().default('#0f172a').describe('Background color'),
|
|
484
|
+
bgColor: ColorSchema.optional().default('#0f172a').describe('Background color (use "none" or "transparent" for no background)'),
|
|
390
485
|
density: z.number().min(0).max(1).optional().default(0.5).describe('Circuit complexity'),
|
|
391
486
|
animated: z.boolean().optional().default(true).describe('Enable bolt animation'),
|
|
392
487
|
boltColor: ColorSchema.optional().default('#fbbf24').describe('Animated bolt color'),
|
|
@@ -421,7 +516,7 @@ export const PatternParamsSchema = z.object({
|
|
|
421
516
|
patternType: z.string().optional().describe('Pattern type (e.g. hexagon)'),
|
|
422
517
|
size: z.number().optional().describe('Pattern element size'),
|
|
423
518
|
color: ColorSchema.optional().describe('Pattern color'),
|
|
424
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
519
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
425
520
|
opacity: z.number().min(0).max(1).optional().describe('Overall opacity'),
|
|
426
521
|
blendMode: z.string().optional().describe('CSS blend mode'),
|
|
427
522
|
layers: z.number().min(1).max(5).optional().describe('Concentric orbit ring count (1-5)'),
|
|
@@ -433,7 +528,7 @@ export const PatternParamsSchema = z.object({
|
|
|
433
528
|
export const BokehParamsSchema = z.object({
|
|
434
529
|
count: z.number().optional().describe('Number of bokeh circles'),
|
|
435
530
|
colors: z.array(ColorSchema).optional().describe('Circle colors'),
|
|
436
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
531
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
437
532
|
minRadius: z.number().optional().describe('Minimum circle radius'),
|
|
438
533
|
maxRadius: z.number().optional().describe('Maximum circle radius'),
|
|
439
534
|
shadowBlur: z.number().optional().describe('Soft-focus blur amount'),
|
|
@@ -443,7 +538,7 @@ export const BokehParamsSchema = z.object({
|
|
|
443
538
|
});
|
|
444
539
|
export const GradientMeshParamsSchema = z.object({
|
|
445
540
|
colors: z.array(ColorSchema).optional().describe('Gradient blob colors'),
|
|
446
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
541
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
447
542
|
blobCount: z.number().optional().describe('Number of gradient blobs'),
|
|
448
543
|
blendMode: z.string().optional().describe('CSS blend mode (default: screen)'),
|
|
449
544
|
drift: z.boolean().optional().describe('Enable slow drift animation'),
|
|
@@ -451,7 +546,7 @@ export const GradientMeshParamsSchema = z.object({
|
|
|
451
546
|
});
|
|
452
547
|
export const GeometricAbstractParamsSchema = z.object({
|
|
453
548
|
colors: z.array(ColorSchema).optional().describe('Shape colors'),
|
|
454
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
549
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
455
550
|
shapeCount: z.number().optional().describe('Number of shapes'),
|
|
456
551
|
blendMode: z.string().optional().describe('CSS blend mode'),
|
|
457
552
|
rotation: z.boolean().optional().describe('Enable rotation animation'),
|
|
@@ -460,7 +555,7 @@ export const GeometricAbstractParamsSchema = z.object({
|
|
|
460
555
|
export const WindFieldParamsSchema = z.object({
|
|
461
556
|
particleCount: z.number().optional().describe('Number of wind particles'),
|
|
462
557
|
colors: z.array(ColorSchema).optional().describe('Particle colors'),
|
|
463
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
558
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
464
559
|
direction: z.number().optional().describe('Wind direction in degrees'),
|
|
465
560
|
turbulence: z.number().optional().describe('Noise turbulence amount'),
|
|
466
561
|
trailLength: z.number().optional().describe('Particle trail length'),
|
|
@@ -470,7 +565,7 @@ export const WindFieldParamsSchema = z.object({
|
|
|
470
565
|
export const FluidFlowParamsSchema = z.object({
|
|
471
566
|
streamCount: z.number().optional().describe('Number of fluid streams'),
|
|
472
567
|
colors: z.array(ColorSchema).optional().describe('Stream colors'),
|
|
473
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
568
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
474
569
|
depthLayers: z.number().optional().describe('Number of depth layers'),
|
|
475
570
|
speed: z.number().optional().describe('Flow animation speed'),
|
|
476
571
|
opacity: z.number().min(0).max(1).optional().describe('Overall opacity'),
|
|
@@ -478,7 +573,7 @@ export const FluidFlowParamsSchema = z.object({
|
|
|
478
573
|
export const OrganicFlowParamsSchema = z.object({
|
|
479
574
|
layerCount: z.number().optional().describe('Number of aurora/silk layers'),
|
|
480
575
|
colors: z.array(ColorSchema).optional().describe('Layer colors'),
|
|
481
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
576
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
482
577
|
blendMode: z.string().optional().describe('CSS blend mode (default: screen)'),
|
|
483
578
|
fillToBottom: z.boolean().optional().describe('Fill layers to bottom edge'),
|
|
484
579
|
animated: z.boolean().optional().describe('Enable flow animation'),
|
|
@@ -487,7 +582,7 @@ export const OrganicFlowParamsSchema = z.object({
|
|
|
487
582
|
export const NoiseTextureParamsSchema = z.object({
|
|
488
583
|
noiseType: z.enum(['perlin', 'grain', 'stipple']).optional().describe('Noise algorithm'),
|
|
489
584
|
colors: z.array(ColorSchema).optional().describe('Noise colors'),
|
|
490
|
-
bgColor: ColorSchema.optional().describe('Background color'),
|
|
585
|
+
bgColor: ColorSchema.optional().describe('Background color (use "none" or "transparent" for no background)'),
|
|
491
586
|
scale: z.number().optional().describe('Noise scale'),
|
|
492
587
|
density: z.number().optional().describe('Noise density'),
|
|
493
588
|
animated: z.boolean().optional().describe('Enable animated opacity shift'),
|
|
@@ -507,6 +602,11 @@ export const EffectTypeSchema = z.enum([
|
|
|
507
602
|
'ripple',
|
|
508
603
|
'glow',
|
|
509
604
|
'electric',
|
|
605
|
+
'bubbles',
|
|
606
|
+
'dust',
|
|
607
|
+
'fireflies',
|
|
608
|
+
'shockwave',
|
|
609
|
+
'trail',
|
|
510
610
|
]).describe('Visual effect type');
|
|
511
611
|
export const SparkleParamsSchema = z.object({
|
|
512
612
|
color: ColorSchema.optional().default('#fbbf24').describe('Sparkle color'),
|
|
@@ -547,6 +647,21 @@ export const ImportSVGInputSchema = z.object({
|
|
|
547
647
|
position: PositionSchema.optional().default({ x: 400, y: 300 }),
|
|
548
648
|
scale: z.number().optional().default(1.0).describe('Scale factor'),
|
|
549
649
|
});
|
|
650
|
+
// Import Mermaid (flowchart, stateDiagram, sequenceDiagram, erDiagram, classDiagram)
|
|
651
|
+
export const ImportMermaidInputSchema = z.object({
|
|
652
|
+
mermaidText: z.string().min(1).describe('Mermaid diagram source. First line determines type: "flowchart"/"graph", "stateDiagram(-v2)", "sequenceDiagram", "erDiagram", "classDiagram".'),
|
|
653
|
+
autoLayout: z.boolean().optional().default(true).describe('Run auto-layout after import (default: true). Disable to keep nodes at parsed coordinates only.'),
|
|
654
|
+
clearExisting: z.boolean().optional().default(false).describe('Remove existing canvas items before importing (default: false — additive).'),
|
|
655
|
+
});
|
|
656
|
+
// Capture current canvas as pp: ontology — wraps FxTool's
|
|
657
|
+
// app.exportCanvasOntology() (PinePaper.js, post-promotion) so an LLM can
|
|
658
|
+
// reason about composition from a compact triples block + structured items
|
|
659
|
+
// list rather than a raw paper.js dump.
|
|
660
|
+
export const GetCanvasOntologyInputSchema = z.object({
|
|
661
|
+
maxItems: z.number().int().positive().max(500).optional().default(50).describe('Cap on item summaries (default 50). Larger scenes are truncated, not paginated.'),
|
|
662
|
+
maxChildren: z.number().int().positive().max(50).optional().default(10).describe('Cap on per-group child summaries (default 10).'),
|
|
663
|
+
includeViewport: z.boolean().optional().default(false).describe('Include current view zoom/center + camera-animation flag (default false).'),
|
|
664
|
+
});
|
|
550
665
|
// Add Filter
|
|
551
666
|
export const AddFilterInputSchema = z.object({
|
|
552
667
|
filterType: FilterTypeSchema,
|
|
@@ -557,6 +672,9 @@ export const CreateItemInputSchema = z.object({
|
|
|
557
672
|
itemType: ItemTypeSchema,
|
|
558
673
|
position: PositionSchema.optional().default({ x: 400, y: 300 }),
|
|
559
674
|
properties: z.record(z.unknown()).optional().default({}),
|
|
675
|
+
animationType: z.string().optional().describe('Inline animation to apply on creation. Loop presets (pulse, rotate, bounce, fade, wobble, slide, typewriter) or "keyframe" with keyframes array. Equivalent to a follow-up pinepaper_animate / pinepaper_keyframe_animate call.'),
|
|
676
|
+
animationSpeed: z.number().optional().describe('Speed multiplier for loop animations (default: 1.0). Ignored when animationType is "keyframe".'),
|
|
677
|
+
keyframes: z.array(KeyframeSchema).optional().describe('Required when animationType is "keyframe". Inline keyframe array attached at creation.'),
|
|
560
678
|
});
|
|
561
679
|
// Light direction for 3D effects
|
|
562
680
|
export const LightDirectionSchema = z.enum([
|
|
@@ -629,6 +747,9 @@ export const KeyframeAnimateInputSchema = z.object({
|
|
|
629
747
|
keyframes: z.array(KeyframeSchema),
|
|
630
748
|
duration: z.number().optional().describe('Total animation duration'),
|
|
631
749
|
loop: z.boolean().optional().default(false),
|
|
750
|
+
timeOffset: z.number().optional().describe('Shift the whole clip in canvas time (seconds). The animation only runs while canvas time is in [timeOffset, timeOffset + (clipOutPoint - clipInPoint)].'),
|
|
751
|
+
clipInPoint: z.number().optional().describe('Skip the first N seconds of keyframe data — clip head trim.'),
|
|
752
|
+
clipOutPoint: z.number().optional().describe('Stop at N seconds into the keyframe data — clip tail trim. Default: lastKeyframeTime.'),
|
|
632
753
|
});
|
|
633
754
|
// Execute Generator
|
|
634
755
|
export const ExecuteGeneratorInputSchema = z.object({
|
|
@@ -1069,12 +1190,18 @@ export const ErrorCodes = {
|
|
|
1069
1190
|
ITEM_NOT_FOUND: 'ITEM_NOT_FOUND',
|
|
1070
1191
|
INVALID_RELATION: 'INVALID_RELATION',
|
|
1071
1192
|
INVALID_PARAMS: 'INVALID_PARAMS',
|
|
1193
|
+
INVALID_INPUT: 'INVALID_INPUT',
|
|
1194
|
+
INVALID_PROPERTIES: 'INVALID_PROPERTIES',
|
|
1072
1195
|
GENERATOR_NOT_FOUND: 'GENERATOR_NOT_FOUND',
|
|
1073
1196
|
EXPORT_FAILED: 'EXPORT_FAILED',
|
|
1074
1197
|
EXECUTION_ERROR: 'EXECUTION_ERROR',
|
|
1075
1198
|
VALIDATION_ERROR: 'VALIDATION_ERROR',
|
|
1076
1199
|
AGENT_JOB_ERROR: 'AGENT_JOB_ERROR',
|
|
1077
1200
|
BATCH_EXECUTION_ERROR: 'BATCH_EXECUTION_ERROR',
|
|
1201
|
+
UNKNOWN_TOOL: 'UNKNOWN_TOOL',
|
|
1202
|
+
BROWSER_NOT_CONNECTED: 'BROWSER_NOT_CONNECTED',
|
|
1203
|
+
REFRESH_FAILED: 'REFRESH_FAILED',
|
|
1204
|
+
SCREENSHOT_FAILED: 'SCREENSHOT_FAILED',
|
|
1078
1205
|
};
|
|
1079
1206
|
// =============================================================================
|
|
1080
1207
|
// MASK TOOL SCHEMAS
|
|
@@ -1183,6 +1310,7 @@ export const AgentStartJobInputSchema = z.object({
|
|
|
1183
1310
|
}).optional().describe('Custom canvas dimensions'),
|
|
1184
1311
|
backgroundColor: z.string().optional().describe('Background color to set'),
|
|
1185
1312
|
clearCanvas: z.boolean().optional().default(true).describe('Clear canvas when starting job'),
|
|
1313
|
+
includeOntology: z.boolean().optional().default(true).describe('Include canvas ontology snapshot in the result. Tiny payload when clearCanvas is true (empty canvas) — captures existing state when clearCanvas is false. Set false to skip; reset to true if rerunning against an older FxTool that lacks exportCanvasOntology.'),
|
|
1186
1314
|
}).describe('Options for starting an agent job');
|
|
1187
1315
|
/**
|
|
1188
1316
|
* End job input schema
|
|
@@ -1266,6 +1394,7 @@ export const AgentBatchOperationSchema = z.object({
|
|
|
1266
1394
|
export const AgentBatchExecuteInputSchema = z.object({
|
|
1267
1395
|
operations: z.array(AgentBatchOperationSchema).min(1).describe('Array of operations to execute'),
|
|
1268
1396
|
atomic: z.boolean().optional().default(true).describe('Rollback all operations on any failure'),
|
|
1397
|
+
skipValidation: z.boolean().optional().default(false).describe('Skip the ontology preflight that catches typos in itemType/relationType/effectType/generatorName before browser execution. Use only when intentionally passing experimental vocabulary values.'),
|
|
1269
1398
|
}).describe('Batch execution input');
|
|
1270
1399
|
/**
|
|
1271
1400
|
* Smart export input schema
|
|
@@ -1275,6 +1404,8 @@ export const AgentExportInputSchema = z.object({
|
|
|
1275
1404
|
format: z.union([AgentExportFormatSchema, z.literal('auto')]).optional().default('auto').describe('Export format'),
|
|
1276
1405
|
quality: z.enum(['draft', 'standard', 'high']).optional().default('standard').describe('Export quality level'),
|
|
1277
1406
|
includeRecommendations: z.boolean().optional().default(true).describe('Include alternative format recommendations'),
|
|
1407
|
+
framing: z.enum(['canvas', 'camera']).optional().default('canvas').describe('Output framing: "canvas" (full canvas, default) or "camera" (camera_animates first-keyframe viewport — fails if no walkthrough exists). Camera animation still drives motion within the fixed output frame.'),
|
|
1408
|
+
duration: z.number().min(0.5).max(60).optional().default(5).describe('Video duration in seconds for animated formats (mp4/webm/gif). Default 5. Max 60. Static formats (png/svg/pdf) ignore this.'),
|
|
1278
1409
|
}).describe('Smart export options');
|
|
1279
1410
|
/**
|
|
1280
1411
|
* Analyze content input schema
|
|
@@ -1347,35 +1478,6 @@ export const TriggerActionSchema = z.object({
|
|
|
1347
1478
|
points: z.number().optional().describe('Points to add'),
|
|
1348
1479
|
delay: z.number().optional().default(0).describe('Delay before action in ms'),
|
|
1349
1480
|
}).describe('Action to execute');
|
|
1350
|
-
/**
|
|
1351
|
-
* Add trigger input
|
|
1352
|
-
*/
|
|
1353
|
-
export const AddTriggerInputSchema = z.object({
|
|
1354
|
-
itemId: z.string().describe('Registry ID of the item'),
|
|
1355
|
-
event: TriggerEventSchema,
|
|
1356
|
-
time: z.number().optional().describe('Time in seconds for timeline triggers'),
|
|
1357
|
-
timelineOffset: z.number().optional().describe('Time offset in ms for timeline triggers'),
|
|
1358
|
-
conditions: z.array(TriggerConditionSchema).optional().describe('Conditions that must be met'),
|
|
1359
|
-
condition: z.string().optional().describe('Optional condition expression (e.g., "$score > 10")'),
|
|
1360
|
-
actions: z.array(TriggerActionSchema).min(1).describe('Actions to execute'),
|
|
1361
|
-
once: z.boolean().optional().default(false).describe('Fire only once'),
|
|
1362
|
-
}).describe('Add trigger to item');
|
|
1363
|
-
/**
|
|
1364
|
-
* Remove trigger input
|
|
1365
|
-
*/
|
|
1366
|
-
export const RemoveTriggerInputSchema = z.object({
|
|
1367
|
-
itemId: z.string().describe('Registry ID of the item'),
|
|
1368
|
-
triggerId: z.string().optional().describe('Specific trigger ID to remove'),
|
|
1369
|
-
event: TriggerEventSchema.optional().describe('Remove all triggers of this event type'),
|
|
1370
|
-
removeAll: z.boolean().optional().describe('Remove all triggers from item'),
|
|
1371
|
-
}).describe('Remove triggers from item');
|
|
1372
|
-
/**
|
|
1373
|
-
* Query triggers input
|
|
1374
|
-
*/
|
|
1375
|
-
export const QueryTriggersInputSchema = z.object({
|
|
1376
|
-
itemId: z.string().optional().describe('Filter by item ID'),
|
|
1377
|
-
event: TriggerEventSchema.optional().describe('Filter by event type'),
|
|
1378
|
-
}).describe('Query triggers');
|
|
1379
1481
|
// =============================================================================
|
|
1380
1482
|
// QUIZ / LMS SCHEMAS
|
|
1381
1483
|
// =============================================================================
|
|
@@ -1433,33 +1535,6 @@ export const QuizQuestionSchema = z.object({
|
|
|
1433
1535
|
onCorrectActions: z.array(TriggerActionSchema).optional(),
|
|
1434
1536
|
onIncorrectActions: z.array(TriggerActionSchema).optional(),
|
|
1435
1537
|
}).describe('Quiz question');
|
|
1436
|
-
/**
|
|
1437
|
-
* Create quiz input
|
|
1438
|
-
*/
|
|
1439
|
-
export const CreateQuizInputSchema = z.object({
|
|
1440
|
-
id: z.string().optional().describe('Quiz ID'),
|
|
1441
|
-
title: z.string().optional().describe('Quiz title'),
|
|
1442
|
-
questions: z.array(QuizQuestionSchema).min(1),
|
|
1443
|
-
shuffleQuestions: z.boolean().optional().default(false),
|
|
1444
|
-
shuffleOptions: z.boolean().optional().default(false),
|
|
1445
|
-
showFeedback: z.enum(['immediate', 'after-submit', 'never']).optional().default('immediate'),
|
|
1446
|
-
showScore: z.boolean().optional().default(true).describe('Display score during quiz'),
|
|
1447
|
-
passingScore: z.number().optional().describe('Minimum score to pass (percentage)'),
|
|
1448
|
-
allowRetry: z.boolean().optional().default(true),
|
|
1449
|
-
trackProgress: z.boolean().optional().default(true),
|
|
1450
|
-
}).describe('Create quiz input');
|
|
1451
|
-
/**
|
|
1452
|
-
* Get quiz state input
|
|
1453
|
-
*/
|
|
1454
|
-
export const GetQuizStateInputSchema = z.object({
|
|
1455
|
-
quizId: z.string().optional().describe('Quiz ID (uses active quiz if not specified)'),
|
|
1456
|
-
}).describe('Get quiz state');
|
|
1457
|
-
/**
|
|
1458
|
-
* Reset quiz input
|
|
1459
|
-
*/
|
|
1460
|
-
export const ResetQuizInputSchema = z.object({
|
|
1461
|
-
quizId: z.string().optional().describe('Quiz ID to reset (uses active quiz if not specified)'),
|
|
1462
|
-
}).describe('Reset quiz');
|
|
1463
1538
|
// =============================================================================
|
|
1464
1539
|
// LETTER COLLAGE SCHEMAS
|
|
1465
1540
|
// =============================================================================
|
|
@@ -1517,11 +1592,6 @@ export const AnimateLetterCollageInputSchema = z.object({
|
|
|
1517
1592
|
staggerDelay: z.number().optional().default(0.1).describe('Delay between each letter animation start (seconds)'),
|
|
1518
1593
|
animationSpeed: z.number().optional().default(1).describe('Animation speed multiplier'),
|
|
1519
1594
|
}).describe('Animate letter collage input');
|
|
1520
|
-
export const GetLetterCollageOptionsInputSchema = z.object({}).describe('Get letter collage options input (no parameters)');
|
|
1521
|
-
// =============================================================================
|
|
1522
|
-
// CANVAS PRESETS SCHEMA
|
|
1523
|
-
// =============================================================================
|
|
1524
|
-
export const GetCanvasPresetsInputSchema = z.object({}).describe('Get canvas presets input (no parameters)');
|
|
1525
1595
|
// =============================================================================
|
|
1526
1596
|
// MAP SCHEMAS
|
|
1527
1597
|
// =============================================================================
|
|
@@ -1794,11 +1864,6 @@ export const PrecompInputSchema = z.object({
|
|
|
1794
1864
|
precompId: z.string().optional(),
|
|
1795
1865
|
itemId: z.string().optional(),
|
|
1796
1866
|
});
|
|
1797
|
-
export const ViewInputSchema = z.object({
|
|
1798
|
-
action: z.enum(['fit', 'get_state']),
|
|
1799
|
-
mode: z.enum(['content', 'canvas']).optional(),
|
|
1800
|
-
padding: z.number().optional(),
|
|
1801
|
-
});
|
|
1802
1867
|
export const BackgroundInputSchema = z.object({
|
|
1803
1868
|
action: z.enum(['set', 'clear', 'get']),
|
|
1804
1869
|
mode: z.enum(['color', 'pattern', 'generator']).optional(),
|
|
@@ -1818,4 +1883,137 @@ export const QueryInputSchema = z.object({
|
|
|
1818
1883
|
all: z.boolean().optional(),
|
|
1819
1884
|
tolerance: z.number().optional(),
|
|
1820
1885
|
});
|
|
1886
|
+
// =============================================================================
|
|
1887
|
+
// DEFORMATION TOOLS
|
|
1888
|
+
// =============================================================================
|
|
1889
|
+
export const DeformInputSchema = z.object({
|
|
1890
|
+
action: z.enum(['apply', 'trigger', 'remove']),
|
|
1891
|
+
itemId: z.string().optional(),
|
|
1892
|
+
preset: z.enum([
|
|
1893
|
+
'fold', 'squeeze', 'squash', 'pinch', 'bulge', 'twist',
|
|
1894
|
+
'ripple', 'wave', 'breathe', 'melt', 'shear', 'inflate', 'wobble',
|
|
1895
|
+
]).optional(),
|
|
1896
|
+
frequency: z.number().optional(),
|
|
1897
|
+
amplitude: z.number().min(0).max(1).optional(),
|
|
1898
|
+
phase: z.enum(['sin', 'blink', 'linear', 'pingpong', 'once', 'elastic', 'heartbeat', 'stepped']).optional(),
|
|
1899
|
+
loop: z.boolean().optional(),
|
|
1900
|
+
axis: z.enum(['horizontal', 'vertical']).optional(),
|
|
1901
|
+
turns: z.number().optional(),
|
|
1902
|
+
waves: z.number().optional(),
|
|
1903
|
+
maxDisplacement: z.number().optional(),
|
|
1904
|
+
speed: z.number().optional(),
|
|
1905
|
+
steps: z.number().optional(),
|
|
1906
|
+
});
|
|
1907
|
+
// =============================================================================
|
|
1908
|
+
// SPRITE SHEET TOOLS
|
|
1909
|
+
// =============================================================================
|
|
1910
|
+
export const SpriteSheetInputSchema = z.object({
|
|
1911
|
+
action: z.enum(['generate', 'play', 'export']),
|
|
1912
|
+
skeletonId: z.string().optional(),
|
|
1913
|
+
spriteSheetId: z.string().optional(),
|
|
1914
|
+
name: z.string().optional(),
|
|
1915
|
+
poses: z.array(z.object({ name: z.string(), poseId: z.string() })).optional(),
|
|
1916
|
+
transition: z.object({
|
|
1917
|
+
poseIdA: z.string(),
|
|
1918
|
+
poseIdB: z.string(),
|
|
1919
|
+
frameCount: z.number(),
|
|
1920
|
+
name: z.string().optional(),
|
|
1921
|
+
}).optional(),
|
|
1922
|
+
bakedAnimation: z.object({
|
|
1923
|
+
duration: z.number(),
|
|
1924
|
+
fps: z.number().optional(),
|
|
1925
|
+
name: z.string().optional(),
|
|
1926
|
+
}).optional(),
|
|
1927
|
+
animations: z.record(z.object({
|
|
1928
|
+
frames: z.array(z.string()),
|
|
1929
|
+
fps: z.number().optional(),
|
|
1930
|
+
loop: z.boolean().optional(),
|
|
1931
|
+
})).optional(),
|
|
1932
|
+
padding: z.number().optional(),
|
|
1933
|
+
x: z.number().optional(),
|
|
1934
|
+
y: z.number().optional(),
|
|
1935
|
+
animation: z.string().optional(),
|
|
1936
|
+
fps: z.number().optional(),
|
|
1937
|
+
scale: z.number().optional(),
|
|
1938
|
+
format: z.enum(['png', 'webp']).optional(),
|
|
1939
|
+
});
|
|
1940
|
+
// =============================================================================
|
|
1941
|
+
// INTERACTION TOOLS
|
|
1942
|
+
// =============================================================================
|
|
1943
|
+
export const InteractionInputSchema = z.object({
|
|
1944
|
+
action: z.enum(['add_behavior', 'remove_behavior', 'trigger_action', 'get_state']),
|
|
1945
|
+
itemId: z.string().optional(),
|
|
1946
|
+
behaviorType: z.enum([
|
|
1947
|
+
'repel', 'attract', 'follow', 'orbit',
|
|
1948
|
+
'slingshot', 'physics_body', 'draggable_constrained',
|
|
1949
|
+
]).optional(),
|
|
1950
|
+
behaviorId: z.string().optional(),
|
|
1951
|
+
actionType: z.enum([
|
|
1952
|
+
'navigate', 'show', 'hide', 'animate', 'stopAnimation',
|
|
1953
|
+
'setState', 'incrementScore', 'playTimeline', 'pauseTimeline',
|
|
1954
|
+
'seekTimeline', 'showFeedback', 'complete',
|
|
1955
|
+
]).optional(),
|
|
1956
|
+
params: z.record(z.unknown()).optional(),
|
|
1957
|
+
});
|
|
1958
|
+
// =============================================================================
|
|
1959
|
+
// WIDGET EXPORT TOOLS
|
|
1960
|
+
// =============================================================================
|
|
1961
|
+
export const ExportWidgetInputSchema = z.object({
|
|
1962
|
+
download: z.boolean().optional(),
|
|
1963
|
+
filename: z.string().optional(),
|
|
1964
|
+
includeInteractions: z.boolean().optional(),
|
|
1965
|
+
minify: z.boolean().optional(),
|
|
1966
|
+
});
|
|
1967
|
+
export const ExportWidgetHtmlInputSchema = z.object({
|
|
1968
|
+
title: z.string().optional(),
|
|
1969
|
+
download: z.boolean().optional(),
|
|
1970
|
+
});
|
|
1971
|
+
// =============================================================================
|
|
1972
|
+
// DATA VISUALIZATION (CHARTS)
|
|
1973
|
+
// =============================================================================
|
|
1974
|
+
export const CreateChartInputSchema = z.object({
|
|
1975
|
+
action: z.enum(['create', 'update', 'reconfigure', 'remove']),
|
|
1976
|
+
chartType: z.enum(['bar', 'line', 'scatter', 'area']).optional(),
|
|
1977
|
+
chartId: z.string().optional(),
|
|
1978
|
+
data: z.array(z.record(z.unknown())).optional(),
|
|
1979
|
+
options: z.record(z.unknown()).optional(),
|
|
1980
|
+
});
|
|
1981
|
+
// =============================================================================
|
|
1982
|
+
// MAGIC SYSTEM (AUTO-ANIMATE + REMIX)
|
|
1983
|
+
// =============================================================================
|
|
1984
|
+
export const MagicInputSchema = z.object({
|
|
1985
|
+
action: z.enum(['animate', 'remix']),
|
|
1986
|
+
mood: z.enum(['calm', 'professional', 'energetic', 'dramatic', 'whimsical']).optional(),
|
|
1987
|
+
selectionOnly: z.boolean().optional(),
|
|
1988
|
+
});
|
|
1989
|
+
// =============================================================================
|
|
1990
|
+
// PHYSICS (RIGID BODY SIMULATION)
|
|
1991
|
+
// =============================================================================
|
|
1992
|
+
export const PhysicsInputSchema = z.object({
|
|
1993
|
+
action: z.enum(['init', 'add_body', 'remove_body', 'apply_force', 'apply_impulse', 'set_velocity', 'get_state', 'create_ground', 'create_joint']),
|
|
1994
|
+
itemId: z.string().optional(),
|
|
1995
|
+
gravity: z.object({ x: z.number(), y: z.number() }).optional(),
|
|
1996
|
+
bodyType: z.enum(['static', 'dynamic', 'kinematic']).optional(),
|
|
1997
|
+
mass: z.number().optional(),
|
|
1998
|
+
friction: z.number().optional(),
|
|
1999
|
+
restitution: z.number().optional(),
|
|
2000
|
+
fixedRotation: z.boolean().optional(),
|
|
2001
|
+
shape: z.enum(['auto', 'circle', 'rect']).optional(),
|
|
2002
|
+
force: z.object({ x: z.number(), y: z.number() }).optional(),
|
|
2003
|
+
impulse: z.object({ x: z.number(), y: z.number() }).optional(),
|
|
2004
|
+
velocity: z.object({ x: z.number(), y: z.number() }).optional(),
|
|
2005
|
+
y: z.number().optional(),
|
|
2006
|
+
width: z.number().optional(),
|
|
2007
|
+
targetItemId: z.string().optional(),
|
|
2008
|
+
jointType: z.enum(['revolute', 'distance', 'weld', 'prismatic']).optional(),
|
|
2009
|
+
jointParams: z.record(z.unknown()).optional(),
|
|
2010
|
+
});
|
|
2011
|
+
// =============================================================================
|
|
2012
|
+
// MEASUREMENT SYSTEM (RULERS, GRID, DIMENSIONS)
|
|
2013
|
+
// =============================================================================
|
|
2014
|
+
export const MeasurementInputSchema = z.object({
|
|
2015
|
+
action: z.enum(['set_rulers', 'set_grid', 'get_dimensions', 'set_snap']),
|
|
2016
|
+
enabled: z.boolean().optional(),
|
|
2017
|
+
itemId: z.string().optional(),
|
|
2018
|
+
});
|
|
1821
2019
|
//# sourceMappingURL=schemas.js.map
|