@pinepaper.studio/mcp-server 1.6.20 → 1.6.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.
- package/README.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.hi.md +1 -1
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +96 -5
- package/README.pt-BR.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/build-info.json +3 -3
- package/dist/ontology/upstream-vocabulary.d.ts +2 -2
- package/dist/ontology/upstream-vocabulary.js +3 -3
- package/dist/ontology/upstream-vocabulary.js.map +1 -1
- package/dist/ontology/vocabulary.js +1 -1
- package/dist/ontology/vocabulary.js.map +1 -1
- package/dist/tools/choreograph.d.ts.map +1 -1
- package/dist/tools/choreograph.js +10 -0
- package/dist/tools/choreograph.js.map +1 -1
- package/dist/tools/craft-tools.d.ts +55 -0
- package/dist/tools/craft-tools.d.ts.map +1 -0
- package/dist/tools/craft-tools.js +139 -0
- package/dist/tools/craft-tools.js.map +1 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +117 -7
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/effect-class.d.ts.map +1 -1
- package/dist/tools/effect-class.js +6 -0
- package/dist/tools/effect-class.js.map +1 -1
- package/dist/tools/engine-lists.d.ts +2 -2
- package/dist/tools/engine-lists.js +2 -2
- package/dist/tools/engine-methods.d.ts.map +1 -1
- package/dist/tools/engine-methods.js +4 -0
- package/dist/tools/engine-methods.js.map +1 -1
- package/dist/tools/engine-surface.d.ts +1 -1
- package/dist/tools/engine-surface.d.ts.map +1 -1
- package/dist/tools/engine-surface.js +55 -7
- package/dist/tools/engine-surface.js.map +1 -1
- package/dist/tools/handlers/brand-intake.d.ts.map +1 -1
- package/dist/tools/handlers/brand-intake.js +42 -1
- package/dist/tools/handlers/brand-intake.js.map +1 -1
- package/dist/tools/handlers/generate.d.ts +28 -28
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +161 -10
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/minimal-descriptions.d.ts.map +1 -1
- package/dist/tools/minimal-descriptions.js +7 -0
- package/dist/tools/minimal-descriptions.js.map +1 -1
- package/dist/tools/shape-params.d.ts +2 -2
- package/dist/tools/shape-params.d.ts.map +1 -1
- package/dist/tools/shape-params.js +9 -2
- package/dist/tools/shape-params.js.map +1 -1
- package/dist/tools/stick-vocabulary.d.ts +1 -1
- package/dist/tools/stick-vocabulary.js +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +9 -0
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +10 -1
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +605 -107
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +1745 -582
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +144 -4
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/asset-paths.d.ts +11 -0
- package/dist/utils/asset-paths.d.ts.map +1 -0
- package/dist/utils/asset-paths.js +67 -0
- package/dist/utils/asset-paths.js.map +1 -0
- package/dist/utils/safe-fetch.d.ts +28 -0
- package/dist/utils/safe-fetch.d.ts.map +1 -0
- package/dist/utils/safe-fetch.js +221 -0
- package/dist/utils/safe-fetch.js.map +1 -0
- package/dist/vendor/design/bauhaus-generator.d.ts.map +1 -1
- package/dist/vendor/design/bauhaus-generator.js +20 -5
- package/dist/vendor/design/bauhaus-generator.js.map +1 -1
- package/dist/vendor/design/design-style.d.ts +2 -2
- package/dist/vendor/design/design-style.d.ts.map +1 -1
- package/dist/vendor/design/design-style.js +7 -2
- package/dist/vendor/design/design-style.js.map +1 -1
- package/dist/vendor/design/subdivision-tool-schema.d.ts +16 -0
- package/dist/vendor/design/subdivision-tool-schema.d.ts.map +1 -0
- package/dist/vendor/design/subdivision-tool-schema.js +104 -0
- package/dist/vendor/design/subdivision-tool-schema.js.map +1 -0
- package/dist/vendor/design/textile-tool-schema.d.ts +14 -0
- package/dist/vendor/design/textile-tool-schema.d.ts.map +1 -0
- package/dist/vendor/design/textile-tool-schema.js +195 -0
- package/dist/vendor/design/textile-tool-schema.js.map +1 -0
- package/dist/vendor/design/ui-kit-runtime.d.ts +49 -0
- package/dist/vendor/design/ui-kit-runtime.d.ts.map +1 -0
- package/dist/vendor/design/ui-kit-runtime.js +761 -0
- package/dist/vendor/design/ui-kit-runtime.js.map +1 -0
- package/dist/vendor/design/ui-kit-tool-schema.d.ts +280 -0
- package/dist/vendor/design/ui-kit-tool-schema.d.ts.map +1 -0
- package/dist/vendor/design/ui-kit-tool-schema.js +209 -0
- package/dist/vendor/design/ui-kit-tool-schema.js.map +1 -0
- package/manifest.json +29 -1
- package/package.json +7 -4
- package/dist/assets/repositories/openclipart.d.ts +0 -41
- package/dist/assets/repositories/openclipart.d.ts.map +0 -1
- package/dist/assets/repositories/openclipart.js +0 -139
- package/dist/assets/repositories/openclipart.js.map +0 -1
- package/dist/assets/repositories/svgrepo.d.ts +0 -61
- package/dist/assets/repositories/svgrepo.d.ts.map +0 -1
- package/dist/assets/repositories/svgrepo.js +0 -276
- package/dist/assets/repositories/svgrepo.js.map +0 -1
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { COMPACT_DESCRIPTIONS } from './compact-descriptions.js';
|
|
11
11
|
import { MINIMAL_DESCRIPTIONS } from './minimal-descriptions.js';
|
|
12
|
+
import { craftToolDefinitions } from './craft-tools.js';
|
|
12
13
|
import { STICK_GAITS, STICK_POSES, STICK_SEQUENCES, STICK_EXPRESSIONS, STICK_PROPS } from './stick-vocabulary.js';
|
|
13
14
|
import { AgentBatchOperationTypeSchema, GeneratorNameSchema, ItemTypeSchema } from '../types/schemas.js';
|
|
14
15
|
import { DESIGN_MEDIA, DESIGN_MEDIA_APPLY, FILTER_TYPES, FILTER_DOCS, LINEAGE_KINDS, STYLED_SCENE_STYLES, STYLED_SCENE_STYLE_INFO } from './engine-lists.js';
|
|
@@ -143,7 +144,7 @@ Shapes: circle, rectangle, star, ellipse, triangle, polygon, line, arc, path, pe
|
|
|
143
144
|
Surfaces (render-time, evaluated per pixel — not shapes): shader, field
|
|
144
145
|
shader: a lit surface — water, liquid_metal, heatmap, gem_smoke. Set behind:true to put it UNDER the art, which is what scenery wants.
|
|
145
146
|
field: one expression, many marks — xExpr/yExpr/count, re-evaluated every frame against t.
|
|
146
|
-
Both draw
|
|
147
|
+
Both draw in the studio (live, stills, every export) and in a cloud render.
|
|
147
148
|
Text: text (content, fontSize, fontFamily, color, fontWeight)
|
|
148
149
|
Dynamic text: set contentType on text items → clock (live time), timer (elapsed), countdown (from N seconds), stopwatch (pauseable)
|
|
149
150
|
All items: opacity, shadowColor, shadowBlur, blendMode, strokeColor, strokeWidth
|
|
@@ -600,7 +601,7 @@ For glossy 3D spheres, use pinepaper_create_glossy_sphere instead. For diagonal
|
|
|
600
601
|
itemType: {
|
|
601
602
|
type: 'string',
|
|
602
603
|
enum: ['text', 'circle', 'star', 'rectangle', 'triangle', 'polygon', 'ellipse', 'path', 'line', 'arc', 'pentagon', 'hexagon', 'diamond', 'arrow', 'heart', 'disk', 'circle-outline', 'arrow-right', 'speech-bubble', 'speech-bubble-square', 'speech-bubble-pointed', 'thought-bubble', 'double-bubble', 'quote-bubble', 'comment-box', 'callout-box', 'shader', 'field'],
|
|
603
|
-
description: "Type of item to create. 'shader' and 'field' are RENDER-TIME SURFACES drawn per pixel
|
|
604
|
+
description: "Type of item to create. 'shader' and 'field' are RENDER-TIME SURFACES drawn per pixel, in the studio and in a cloud render. See the shader/field properties below.",
|
|
604
605
|
},
|
|
605
606
|
position: {
|
|
606
607
|
oneOf: [
|
|
@@ -627,14 +628,15 @@ For glossy 3D spheres, use pinepaper_create_glossy_sphere instead. For diagonal
|
|
|
627
628
|
|
|
628
629
|
LIFETIME — on ANY item, and the only way to build a piece that CUTS between shots:
|
|
629
630
|
- bornAt: seconds. The item does not exist before this instant.
|
|
630
|
-
- ttl: seconds it lives for. Omit for "until the end".
|
|
631
|
+
- ttl: seconds it lives for. Omit for "until the end". A numeric lifetime is
|
|
632
|
+
read as ttl, except on an emitter, where lifetime is each particle's life.
|
|
631
633
|
Without these every item is on screen for the whole render, which is what makes
|
|
632
634
|
a long piece read as one crowded frame instead of a sequence of shots.
|
|
633
635
|
They set the item's VISIBILITY for [bornAt, bornAt + ttl) — not its opacity —
|
|
634
636
|
so they compose with any keyframes, opacity fades included. Re-timing with
|
|
635
637
|
pinepaper_modify_item {bornAt, ttl} replaces the previous lifetime — pass both.
|
|
636
|
-
The result's lifetime field says whether it was applied
|
|
637
|
-
|
|
638
|
+
The result's lifetime field says whether it was applied, and persists: true
|
|
639
|
+
when it is saved with the scene; without that, re-time a reopened scene.
|
|
638
640
|
|
|
639
641
|
SHADER (itemType 'shader') — a lit surface, drawn per pixel:
|
|
640
642
|
- shader: 'water' (open sea, lit swell) | 'liquid_metal' (chrome) | 'heatmap' (thermal halo) | 'gem_smoke' (smoke) | 'electric_arc' (branching discharge, stepped flicker) | 'vortex' (hollow bright RING, sheared by differential rotation) | 'rain_veil' | 'caustics' | 'ink_bleed'
|
|
@@ -5927,6 +5929,109 @@ PHASES: sin, blink, linear, pingpong, once, elastic, heartbeat, stepped`,
|
|
|
5927
5929
|
required: ['action'],
|
|
5928
5930
|
},
|
|
5929
5931
|
},
|
|
5932
|
+
{
|
|
5933
|
+
name: 'pinepaper_hand_drawn',
|
|
5934
|
+
annotations: {
|
|
5935
|
+
title: 'Hand-Drawn Line',
|
|
5936
|
+
readOnlyHint: false,
|
|
5937
|
+
destructiveHint: false,
|
|
5938
|
+
idempotentHint: false,
|
|
5939
|
+
openWorldHint: false,
|
|
5940
|
+
},
|
|
5941
|
+
description: `Give a path a hand-drawn look: a rough, bowed outline (sketchy), or a stroke that draws itself on (reveal).
|
|
5942
|
+
|
|
5943
|
+
USE WHEN:
|
|
5944
|
+
- "give it a hand-drawn / sketchy / rough outline"
|
|
5945
|
+
- "draw the line on like ink" (reveal)
|
|
5946
|
+
|
|
5947
|
+
STYLES:
|
|
5948
|
+
- 'sketchy' (default): one-time seeded jitter of the path's points and curve handles. Saved with the scene; exports as drawn.
|
|
5949
|
+
- 'reveal' (alias 'ink_reveal'): keyframes the item's stroke trimEnd 0 -> 1 over duration seconds, merged with any keyframes it already has. Needs itemId.
|
|
5950
|
+
- 'wobble', 'stop_motion': refused, nothing changed. A line that boils frame to frame in exports is pinepaper_design_medium medium 'ink'; the refusal returns that call, with fps as the boil rate.
|
|
5951
|
+
|
|
5952
|
+
PARAMETERS:
|
|
5953
|
+
- itemId: target item registry id (sketchy falls back to the selection)
|
|
5954
|
+
- style / mode: 'sketchy' | 'reveal' | 'ink_reveal' | 'wobble' | 'stop_motion'
|
|
5955
|
+
- roughness: point jitter in px (default 2)
|
|
5956
|
+
- bowing: curve handle jitter factor (default 1)
|
|
5957
|
+
- seed: same seed, same jitter (default 1)
|
|
5958
|
+
- duration: reveal seconds (default 2)
|
|
5959
|
+
- fps / posterizeFps: boil rate passed on in the wobble/stop_motion refusal (default 12)`,
|
|
5960
|
+
inputSchema: {
|
|
5961
|
+
type: 'object',
|
|
5962
|
+
properties: {
|
|
5963
|
+
itemId: { type: 'string', description: 'Target item registry ID (or current selection if omitted)' },
|
|
5964
|
+
style: {
|
|
5965
|
+
type: 'string',
|
|
5966
|
+
enum: ['sketchy', 'reveal', 'ink_reveal', 'wobble', 'stop_motion'],
|
|
5967
|
+
description: "Hand-drawn style (default: sketchy). wobble and stop_motion are refused with the pinepaper_design_medium call that does it",
|
|
5968
|
+
},
|
|
5969
|
+
mode: {
|
|
5970
|
+
type: 'string',
|
|
5971
|
+
enum: ['sketchy', 'reveal', 'ink_reveal', 'wobble', 'stop_motion'],
|
|
5972
|
+
description: 'Alias for style',
|
|
5973
|
+
},
|
|
5974
|
+
roughness: { type: 'number', description: 'Noise magnitude in pixels (default: 2)' },
|
|
5975
|
+
bowing: { type: 'number', description: 'Line bowing curve handle factor (default: 1)' },
|
|
5976
|
+
fps: { type: 'number', description: 'wobble/stop_motion: the boil rate handed to pinepaper_design_medium (default: 12)' },
|
|
5977
|
+
posterizeFps: { type: 'number', description: 'Alias for fps' },
|
|
5978
|
+
seed: { type: 'number', description: 'Random seed for deterministic vertex displacement (default: 1)' },
|
|
5979
|
+
duration: { type: 'number', description: 'reveal: seconds to draw the stroke on (default: 2)' },
|
|
5980
|
+
},
|
|
5981
|
+
},
|
|
5982
|
+
},
|
|
5983
|
+
{
|
|
5984
|
+
name: 'pinepaper_pen_figure',
|
|
5985
|
+
annotations: {
|
|
5986
|
+
title: 'Pen Figure',
|
|
5987
|
+
readOnlyHint: false,
|
|
5988
|
+
destructiveHint: false,
|
|
5989
|
+
idempotentHint: false,
|
|
5990
|
+
openWorldHint: false,
|
|
5991
|
+
},
|
|
5992
|
+
description: `Draw a mathematical figure with a pen: the tip travels the figure and the ink appears behind it, in the editor and in every export.
|
|
5993
|
+
|
|
5994
|
+
USE WHEN:
|
|
5995
|
+
- "draw a Lorenz attractor / Lissajous / Hilbert curve being drawn"
|
|
5996
|
+
- "a pen plotting a curve", "a harmonograph drawing itself"
|
|
5997
|
+
|
|
5998
|
+
The figures are the studio's catalogue of declarative maths (parametric and polar curves, ODE attractors, iterated maps, L-systems). action 'list' returns it: id, title, kind. A figure is fitted into its box by one uniform scale, so it is the same figure on any canvas size.
|
|
5999
|
+
|
|
6000
|
+
ACTIONS:
|
|
6001
|
+
- create (default): { figure, box?, margin?, duration?, delay?, loop?, pen?, strokeColor?, penColor?, strokeWidth? } → { inkId, penId, title, strokes }. The ink is a group, one child per pen stroke; the pen is a circle joined to it by the draws_figure relation. pen: false draws the ink complete, with no pen and no animation. An unknown figure is refused with the catalogue's ids.
|
|
6002
|
+
- list: the catalogue.
|
|
6003
|
+
|
|
6004
|
+
To draw a static curve from your own equation, use pinepaper_equation_path.
|
|
6005
|
+
|
|
6006
|
+
EXAMPLES:
|
|
6007
|
+
- { figure: 'lorenz', duration: 8 }
|
|
6008
|
+
- { figure: 'hilbert', box: { x: 100, y: 100, width: 600, height: 600 }, strokeColor: '#0f766e' }
|
|
6009
|
+
- { figure: 'harmonograph', pen: false }`,
|
|
6010
|
+
inputSchema: {
|
|
6011
|
+
type: 'object',
|
|
6012
|
+
properties: {
|
|
6013
|
+
action: { type: 'string', enum: ['create', 'list'], description: "'create' (default) draws a figure; 'list' returns the catalogue." },
|
|
6014
|
+
figure: {
|
|
6015
|
+
anyOf: [{ type: 'string' }, { type: 'object' }],
|
|
6016
|
+
description: "create: a catalogue id from action 'list' (e.g. 'lorenz', 'lissajous', 'hilbert', 'harmonograph'), or an inline figure spec object.",
|
|
6017
|
+
},
|
|
6018
|
+
box: {
|
|
6019
|
+
type: 'object',
|
|
6020
|
+
properties: { x: { type: 'number' }, y: { type: 'number' }, width: { type: 'number' }, height: { type: 'number' } },
|
|
6021
|
+
required: ['x', 'y', 'width', 'height'],
|
|
6022
|
+
description: 'Where to draw, in canvas px (default: the whole canvas).',
|
|
6023
|
+
},
|
|
6024
|
+
margin: { type: 'number', description: 'Fraction of the box left clear (default 0.06).' },
|
|
6025
|
+
duration: { type: 'number', description: 'Seconds the pen takes for the whole figure, pen-up travel included (default 6).' },
|
|
6026
|
+
delay: { type: 'number', description: 'Seconds before the pen starts (default 0).' },
|
|
6027
|
+
loop: { type: 'boolean', description: 'Draw the figure again after it finishes (default false: it stays drawn).' },
|
|
6028
|
+
pen: { type: 'boolean', description: 'false: the ink only, fully drawn, no animation (default true).' },
|
|
6029
|
+
strokeColor: { type: 'string', description: "Ink colour (default '#1e293b')." },
|
|
6030
|
+
penColor: { type: 'string', description: "Pen tip colour (default '#e11d48')." },
|
|
6031
|
+
strokeWidth: { type: 'number', description: 'Ink width in px (default 2).' },
|
|
6032
|
+
},
|
|
6033
|
+
},
|
|
6034
|
+
},
|
|
5930
6035
|
{
|
|
5931
6036
|
name: 'pinepaper_sprite_sheet',
|
|
5932
6037
|
annotations: {
|
|
@@ -8557,7 +8662,7 @@ ITEMS:
|
|
|
8557
8662
|
ANIMATION:
|
|
8558
8663
|
animate — Loop animation: {itemId, animationType, animationOptions}
|
|
8559
8664
|
animationType: ${SIMPLE_ANIMATION_TYPES_LIST}
|
|
8560
|
-
keyframe_animate — Timed animation: {itemId, keyframes: [{time, properties, easing}], duration, loop}
|
|
8665
|
+
keyframe_animate — Timed animation: {itemId, keyframes: [{time, properties, easing}], duration, loop, append}. Replaces the item's track unless append: true; two ops on one item in a batch are merged into one.
|
|
8561
8666
|
Animatable properties: opacity, scale, scaleX, scaleY, x, y, rotation, fillColor, strokeColor, strokeWidth, width, height, radius, fontSize, trimStart/trimEnd/trimOffset (path draw-on)
|
|
8562
8667
|
Easing (on the keyframe being moved TO): ${KEYFRAME_EASINGS_LIST}
|
|
8563
8668
|
relation — Behavioral link: {sourceId, targetId, relationType, relationOptions}
|
|
@@ -8613,6 +8718,7 @@ EXAMPLE — Animated sky scene with timed reveals:
|
|
|
8613
8718
|
height: { type: 'number', description: 'Canvas height for set_canvas_size (100-16384)' },
|
|
8614
8719
|
preset: { type: 'string', description: 'Canvas preset for set_canvas_size' },
|
|
8615
8720
|
backgroundColor: { type: 'string', description: 'For set_background: hex color' },
|
|
8721
|
+
color: { type: 'string', description: 'For set_background: same as backgroundColor. For create: same as fillColor.' },
|
|
8616
8722
|
generatorName: {
|
|
8617
8723
|
type: 'string',
|
|
8618
8724
|
enum: [...GeneratorNameSchema.options],
|
|
@@ -8659,6 +8765,7 @@ EXAMPLE — Animated sky scene with timed reveals:
|
|
|
8659
8765
|
},
|
|
8660
8766
|
duration: { type: 'number', description: 'Duration in seconds for keyframe_animate or play_timeline' },
|
|
8661
8767
|
loop: { type: 'boolean', description: 'Loop for keyframe_animate or play_timeline' },
|
|
8768
|
+
append: { type: 'boolean', description: "For keyframe_animate: add these keys to the item's existing track instead of replacing it (a key at the same time merges, the new values win). Without it the op replaces the track; the op's result says which happened." },
|
|
8662
8769
|
// Relations
|
|
8663
8770
|
sourceId: { type: 'string', description: 'For relation: source item ID or $N' },
|
|
8664
8771
|
targetId: { type: 'string', description: 'For relation: target item ID or $N' },
|
|
@@ -9662,8 +9769,11 @@ ACTIONS:
|
|
|
9662
9769
|
},
|
|
9663
9770
|
},
|
|
9664
9771
|
// ---------------------------------------------------------------------------
|
|
9665
|
-
// STITCHCRAFT PROCEDURAL EMBROIDERY & THREAD
|
|
9772
|
+
// STITCHCRAFT PROCEDURAL EMBROIDERY & THREAD, SUBDIVISION, UI KIT
|
|
9773
|
+
// The cloud's craft tools, shared: schemas vendored from mcp-cloud, local
|
|
9774
|
+
// words and behaviour in craft-tools.ts.
|
|
9666
9775
|
// ---------------------------------------------------------------------------
|
|
9776
|
+
...craftToolDefinitions(),
|
|
9667
9777
|
];
|
|
9668
9778
|
/**
|
|
9669
9779
|
* Get a tool definition by name
|