@pinepaper.studio/mcp-server 1.6.19 → 1.6.21

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.
Files changed (113) hide show
  1. package/README.de.md +1 -1
  2. package/README.es.md +1 -1
  3. package/README.fr.md +1 -1
  4. package/README.hi.md +1 -1
  5. package/README.ja.md +1 -1
  6. package/README.ko.md +1 -1
  7. package/README.md +161 -5
  8. package/README.pt-BR.md +1 -1
  9. package/README.zh-CN.md +1 -1
  10. package/dist/build-info.json +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -4
  13. package/dist/index.js.map +1 -1
  14. package/dist/ontology/upstream-vocabulary.d.ts +2 -2
  15. package/dist/ontology/upstream-vocabulary.js +3 -3
  16. package/dist/ontology/upstream-vocabulary.js.map +1 -1
  17. package/dist/ontology/vocabulary.d.ts.map +1 -1
  18. package/dist/ontology/vocabulary.js +9 -1
  19. package/dist/ontology/vocabulary.js.map +1 -1
  20. package/dist/tools/choreograph.d.ts +64 -0
  21. package/dist/tools/choreograph.d.ts.map +1 -0
  22. package/dist/tools/choreograph.js +346 -0
  23. package/dist/tools/choreograph.js.map +1 -0
  24. package/dist/tools/compact-descriptions.js +1 -1
  25. package/dist/tools/craft-tools.d.ts +55 -0
  26. package/dist/tools/craft-tools.d.ts.map +1 -0
  27. package/dist/tools/craft-tools.js +139 -0
  28. package/dist/tools/craft-tools.js.map +1 -0
  29. package/dist/tools/definitions.d.ts +10 -1
  30. package/dist/tools/definitions.d.ts.map +1 -1
  31. package/dist/tools/definitions.js +401 -32
  32. package/dist/tools/definitions.js.map +1 -1
  33. package/dist/tools/effect-check.d.ts +26 -0
  34. package/dist/tools/effect-check.d.ts.map +1 -0
  35. package/dist/tools/effect-check.js +129 -0
  36. package/dist/tools/effect-check.js.map +1 -0
  37. package/dist/tools/effect-class.d.ts +31 -0
  38. package/dist/tools/effect-class.d.ts.map +1 -0
  39. package/dist/tools/effect-class.js +176 -0
  40. package/dist/tools/effect-class.js.map +1 -0
  41. package/dist/tools/engine-lists.d.ts +6 -6
  42. package/dist/tools/engine-lists.d.ts.map +1 -1
  43. package/dist/tools/engine-lists.js +11 -9
  44. package/dist/tools/engine-lists.js.map +1 -1
  45. package/dist/tools/engine-methods.d.ts.map +1 -1
  46. package/dist/tools/engine-methods.js +12 -0
  47. package/dist/tools/engine-methods.js.map +1 -1
  48. package/dist/tools/engine-surface.d.ts +1 -1
  49. package/dist/tools/engine-surface.d.ts.map +1 -1
  50. package/dist/tools/engine-surface.js +221 -10
  51. package/dist/tools/engine-surface.js.map +1 -1
  52. package/dist/tools/handlers/export.d.ts.map +1 -1
  53. package/dist/tools/handlers/export.js +8 -1
  54. package/dist/tools/handlers/export.js.map +1 -1
  55. package/dist/tools/handlers/generate.d.ts +28 -28
  56. package/dist/tools/handlers.d.ts +23 -0
  57. package/dist/tools/handlers.d.ts.map +1 -1
  58. package/dist/tools/handlers.js +301 -6
  59. package/dist/tools/handlers.js.map +1 -1
  60. package/dist/tools/index.d.ts +2 -2
  61. package/dist/tools/index.d.ts.map +1 -1
  62. package/dist/tools/index.js +2 -2
  63. package/dist/tools/index.js.map +1 -1
  64. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  65. package/dist/tools/minimal-descriptions.js +16 -3
  66. package/dist/tools/minimal-descriptions.js.map +1 -1
  67. package/dist/tools/shape-params.d.ts +2 -2
  68. package/dist/tools/shape-params.d.ts.map +1 -1
  69. package/dist/tools/shape-params.js +25 -2
  70. package/dist/tools/shape-params.js.map +1 -1
  71. package/dist/tools/stick-vocabulary.d.ts +1 -1
  72. package/dist/tools/stick-vocabulary.js +1 -1
  73. package/dist/tools/toolkits.d.ts.map +1 -1
  74. package/dist/tools/toolkits.js +15 -0
  75. package/dist/tools/toolkits.js.map +1 -1
  76. package/dist/types/code-generator.d.ts +44 -1
  77. package/dist/types/code-generator.d.ts.map +1 -1
  78. package/dist/types/code-generator.js +1140 -128
  79. package/dist/types/code-generator.js.map +1 -1
  80. package/dist/types/schemas.d.ts +3091 -584
  81. package/dist/types/schemas.d.ts.map +1 -1
  82. package/dist/types/schemas.js +308 -6
  83. package/dist/types/schemas.js.map +1 -1
  84. package/dist/vendor/design/design-style.d.ts +2 -2
  85. package/dist/vendor/design/design-style.d.ts.map +1 -1
  86. package/dist/vendor/design/design-style.js +7 -2
  87. package/dist/vendor/design/design-style.js.map +1 -1
  88. package/dist/vendor/design/subdivision-tool-schema.d.ts +16 -0
  89. package/dist/vendor/design/subdivision-tool-schema.d.ts.map +1 -0
  90. package/dist/vendor/design/subdivision-tool-schema.js +104 -0
  91. package/dist/vendor/design/subdivision-tool-schema.js.map +1 -0
  92. package/dist/vendor/design/textile-tool-schema.d.ts +14 -0
  93. package/dist/vendor/design/textile-tool-schema.d.ts.map +1 -0
  94. package/dist/vendor/design/textile-tool-schema.js +195 -0
  95. package/dist/vendor/design/textile-tool-schema.js.map +1 -0
  96. package/dist/vendor/design/ui-kit-runtime.d.ts +49 -0
  97. package/dist/vendor/design/ui-kit-runtime.d.ts.map +1 -0
  98. package/dist/vendor/design/ui-kit-runtime.js +761 -0
  99. package/dist/vendor/design/ui-kit-runtime.js.map +1 -0
  100. package/dist/vendor/design/ui-kit-tool-schema.d.ts +280 -0
  101. package/dist/vendor/design/ui-kit-tool-schema.d.ts.map +1 -0
  102. package/dist/vendor/design/ui-kit-tool-schema.js +209 -0
  103. package/dist/vendor/design/ui-kit-tool-schema.js.map +1 -0
  104. package/manifest.json +53 -1
  105. package/package.json +5 -4
  106. package/dist/assets/repositories/openclipart.d.ts +0 -41
  107. package/dist/assets/repositories/openclipart.d.ts.map +0 -1
  108. package/dist/assets/repositories/openclipart.js +0 -139
  109. package/dist/assets/repositories/openclipart.js.map +0 -1
  110. package/dist/assets/repositories/svgrepo.d.ts +0 -61
  111. package/dist/assets/repositories/svgrepo.d.ts.map +0 -1
  112. package/dist/assets/repositories/svgrepo.js +0 -276
  113. package/dist/assets/repositories/svgrepo.js.map +0 -1
@@ -0,0 +1,346 @@
1
+ /**
2
+ * Beat verbs (tracker D67): an actor's acting as a list of beats — pop, hop,
3
+ * bounce, roll, fly, drop, peek, shake, squash, enter, exit — compiled to one
4
+ * keyframe track with squash and stretch.
5
+ *
6
+ * The primitives existed (keyframes, scale, rotation); what a model could not
7
+ * do from a one-line brief was the CHOREOGRAPHY: anticipation, stretch on the
8
+ * way up, squash on contact, a settle, a bottom that stays on the ground while
9
+ * the body squashes. A bounce was six hand-timed keyframe calls, and a model
10
+ * wrote a pulse instead.
11
+ *
12
+ * THIS FUNCTION IS SERIALISED INTO THE EMITTED CODE (Function#toString) and
13
+ * runs in the studio, where it reads the actor's live size, scale and frame.
14
+ * So it must stay CLOSED: no imports, no module constants, no helpers outside
15
+ * its body, no `this`. A captured name would be a ReferenceError in the
16
+ * browser that no typecheck sees; choreograph.test.ts runs the emitted code
17
+ * to catch it.
18
+ *
19
+ * ENGINE SEMANTICS it is written against (FxTool js/KeyframeEngine.js):
20
+ * x / y set item.position, the CENTRE; scaleX / scaleY are ABSOLUTE
21
+ * (item.scaling = …), applied about that centre; rotation is an absolute
22
+ * authored angle in degrees. So every scale is base × factor, every rotation
23
+ * base + delta, and a squash moves the centre down by h/2·(1 − sy) to keep the
24
+ * bottom on the ground.
25
+ */
26
+ export function compileChoreography(actor, frame, beats) {
27
+ const VERBS = ['pop', 'drop', 'hop', 'bounce', 'roll', 'fly', 'peek', 'shake', 'squash', 'enter', 'exit'];
28
+ const h = actor.h, w = actor.w;
29
+ const warnings = [];
30
+ const keys = [];
31
+ const events = [];
32
+ const ev = (time, kind, strength) => { events.push({ time: Math.round(time * 1000) / 1000, kind, strength: Math.round(Math.max(0.05, Math.min(1, strength)) * 100) / 100 }); };
33
+ const r3 = (v) => Math.round(v * 1000) / 1000;
34
+ // Live state: centre, scale factors, rotation delta, opacity.
35
+ const s = { x: actor.x, y: actor.y, fx: 1, fy: 1, rot: 0, op: 1 };
36
+ const key = (t, easing) => {
37
+ keys.push({
38
+ time: r3(t),
39
+ easing,
40
+ properties: {
41
+ x: r3(s.x),
42
+ // Keep the BOTTOM where it is while the body squashes or stretches.
43
+ y: r3(s.y + (h / 2) * (1 - s.fy)),
44
+ scaleX: r3(actor.sx * s.fx),
45
+ scaleY: r3(actor.sy * s.fy),
46
+ rotation: r3(actor.rot + s.rot),
47
+ opacity: r3(s.op),
48
+ },
49
+ });
50
+ };
51
+ const pt = (v, name) => {
52
+ if (v === undefined || v === null)
53
+ return null;
54
+ if (Array.isArray(v) && v.length >= 2 && isFinite(v[0]) && isFinite(v[1]))
55
+ return { x: +v[0], y: +v[1] };
56
+ if (typeof v === 'object' && isFinite(v.x) && isFinite(v.y))
57
+ return { x: +v.x, y: +v.y };
58
+ throw new Error(name + ' must be [x, y] or {x, y}');
59
+ };
60
+ const offEdge = (edge, at) => {
61
+ if (edge === 'left')
62
+ return { x: frame.x - w / 2 - 2, y: at.y };
63
+ if (edge === 'right')
64
+ return { x: frame.x + frame.width + w / 2 + 2, y: at.y };
65
+ if (edge === 'top')
66
+ return { x: at.x, y: frame.y - h / 2 - 2 };
67
+ if (edge === 'bottom')
68
+ return { x: at.x, y: frame.y + frame.height + h / 2 + 2 };
69
+ throw new Error('edge must be left, right, top or bottom (got ' + JSON.stringify(edge) + ')');
70
+ };
71
+ const squashTo = (fy) => { s.fy = fy; s.fx = 1 / Math.sqrt(Math.max(fy, 0.05)); };
72
+ const sorted = beats.map((b, i) => ({ b, i })).sort((a, z) => (+a.b.at || 0) - (+z.b.at || 0));
73
+ let t = 0;
74
+ let started = false;
75
+ if (sorted.length > 0) {
76
+ const firstAt = +sorted[0].b.at || 0;
77
+ if (firstAt > 0) {
78
+ const firstVerb = sorted[0].b.verb;
79
+ const isEntrance = firstVerb === 'enter' || firstVerb === 'pop' || firstVerb === 'peek';
80
+ if (!isEntrance) {
81
+ key(0, 'linear');
82
+ }
83
+ }
84
+ }
85
+ try {
86
+ for (const { b, i } of sorted) {
87
+ const at = +b.at || 0;
88
+ const verb = b.verb;
89
+ if (VERBS.indexOf(verb) < 0)
90
+ throw new Error('beat ' + i + ': unknown verb ' + JSON.stringify(verb) + ' — one of ' + VERBS.join(', '));
91
+ if (started && at < t - 1e-6)
92
+ throw new Error('beat ' + i + ' (' + verb + ' at ' + at + ' s) starts before the previous beat ends at ' + r3(t) + ' s; beats run one after another');
93
+ const to = pt(b.to, 'beat ' + i + ' to');
94
+ if (to && (to.x < frame.x || to.x > frame.x + frame.width || to.y < frame.y || to.y > frame.y + frame.height)) {
95
+ warnings.push('beat ' + i + ' (' + verb + '): to [' + to.x + ', ' + to.y + '] is outside the frame, so the actor ends off screen there');
96
+ }
97
+ t = at;
98
+ started = true;
99
+ if (verb === 'pop') {
100
+ const d = +b.duration || 0.5;
101
+ squashTo(1);
102
+ s.fx = 0;
103
+ s.fy = 0;
104
+ s.op = 0;
105
+ key(t, 'linear');
106
+ ev(t, 'pop', 0.8);
107
+ s.fx = 1.15;
108
+ s.fy = 1.15;
109
+ s.op = 1;
110
+ key(t + d * 0.6, 'easeOut');
111
+ s.fx = 1;
112
+ s.fy = 1;
113
+ key(t + d, 'easeInOut');
114
+ t += d;
115
+ }
116
+ else if (verb === 'drop') {
117
+ const d = +b.duration || 0.7;
118
+ const land = to || { x: s.x, y: s.y };
119
+ // ALREADY IN THE AIR (after a fly, say): fall from where it is. Only an
120
+ // actor at or below its landing line comes in from above the frame —
121
+ // snapping an airborne actor up and off screen first was a visible jump
122
+ // (prod retest, fly → drop).
123
+ const airborne = s.y < land.y - h / 4;
124
+ if (!airborne) {
125
+ s.x = land.x;
126
+ s.y = frame.y - h;
127
+ }
128
+ squashTo(airborne ? 1 : 1.15);
129
+ s.op = 1;
130
+ key(t, 'linear');
131
+ s.x = land.x;
132
+ s.y = land.y;
133
+ squashTo(1.15);
134
+ key(t + d * 0.7, 'easeIn');
135
+ ev(t + d * 0.72, 'contact', 1);
136
+ squashTo(0.7);
137
+ key(t + d * 0.78, 'easeOut');
138
+ squashTo(1.08);
139
+ key(t + d * 0.9, 'easeOut');
140
+ squashTo(1);
141
+ key(t + d, 'easeInOut');
142
+ t += d;
143
+ }
144
+ else if (verb === 'hop') {
145
+ const d = +b.duration || 0.7;
146
+ const from = { x: s.x, y: s.y };
147
+ const dest = to || from;
148
+ const height = b.height !== undefined ? +b.height : h * 1.2;
149
+ squashTo(1);
150
+ key(t, 'linear');
151
+ squashTo(0.8);
152
+ key(t + d * 0.15, 'easeOut'); // anticipation
153
+ ev(t + d * 0.2, 'whoosh', 0.35);
154
+ s.x = from.x + (dest.x - from.x) * 0.2;
155
+ s.y = from.y - height * 0.45;
156
+ squashTo(1.15);
157
+ key(t + d * 0.3, 'easeOut'); // launch
158
+ s.x = (from.x + dest.x) / 2;
159
+ s.y = Math.min(from.y, dest.y) - height;
160
+ squashTo(1);
161
+ key(t + d * 0.5, 'easeOut'); // apex
162
+ s.x = from.x + (dest.x - from.x) * 0.8;
163
+ s.y = dest.y - height * 0.45;
164
+ squashTo(1.12);
165
+ key(t + d * 0.7, 'easeIn');
166
+ s.x = dest.x;
167
+ s.y = dest.y;
168
+ squashTo(0.75);
169
+ key(t + d * 0.82, 'easeIn'); // contact
170
+ ev(t + d * 0.82, 'contact', Math.min(1, height / Math.max(1, h * 1.5)));
171
+ squashTo(1.06);
172
+ key(t + d * 0.92, 'easeOut');
173
+ squashTo(1);
174
+ key(t + d, 'easeInOut'); // settle
175
+ t += d;
176
+ }
177
+ else if (verb === 'bounce') {
178
+ const times = Math.max(1, Math.round(+b.times || 3));
179
+ const decay = b.decay !== undefined ? Math.min(0.95, Math.max(0.1, +b.decay)) : 0.6;
180
+ let height = b.height !== undefined ? +b.height : h * 1.5;
181
+ const per = (+b.duration || times * 0.5) / times;
182
+ const from = { x: s.x, y: s.y };
183
+ const dest = to || from;
184
+ squashTo(1);
185
+ key(t, 'linear');
186
+ for (let k = 0; k < times; k++) {
187
+ const f0 = k / times, f1 = (k + 1) / times;
188
+ const gx = (f) => from.x + (dest.x - from.x) * f;
189
+ const gy = (f) => from.y + (dest.y - from.y) * f;
190
+ s.x = gx(f0);
191
+ s.y = gy(f0);
192
+ squashTo(0.78);
193
+ key(t + per * 0.08, 'easeOut');
194
+ s.x = gx((f0 + f1) / 2);
195
+ s.y = gy((f0 + f1) / 2) - height;
196
+ squashTo(1.08);
197
+ key(t + per * 0.5, 'easeOut');
198
+ s.x = gx(f1);
199
+ s.y = gy(f1);
200
+ squashTo(1.1);
201
+ key(t + per * 0.95, 'easeIn');
202
+ ev(t + per * 0.95, 'contact', Math.min(1, height / Math.max(1, h * 1.5)));
203
+ t += per;
204
+ height *= decay;
205
+ }
206
+ squashTo(0.82);
207
+ key(t + 0.06, 'easeOut');
208
+ squashTo(1);
209
+ key(t + 0.22, 'easeInOut');
210
+ t += 0.22;
211
+ }
212
+ else if (verb === 'roll') {
213
+ const d = +b.duration || 1;
214
+ if (!to)
215
+ throw new Error('beat ' + i + ': roll needs to: [x, y]');
216
+ const dist = to.x - s.x;
217
+ squashTo(1);
218
+ key(t, 'linear');
219
+ s.x = to.x;
220
+ s.y = to.y;
221
+ // Rolling without slipping: angle = distance / radius; y-down, so rolling right turns clockwise (+).
222
+ s.rot += (dist / Math.max(1, h / 2)) * (180 / Math.PI);
223
+ key(t + d, 'easeInOut');
224
+ t += d;
225
+ }
226
+ else if (verb === 'fly') {
227
+ const d = +b.duration || 1.2;
228
+ if (!to)
229
+ throw new Error('beat ' + i + ': fly needs to: [x, y]');
230
+ const from = { x: s.x, y: s.y };
231
+ const arc = b.arc !== undefined ? +b.arc : h * 2;
232
+ const cx = (from.x + to.x) / 2, cy = Math.min(from.y, to.y) - arc;
233
+ const tilt = Math.max(-18, Math.min(18, (to.x - from.x) / Math.max(1, frame.width) * 40));
234
+ const r0 = s.rot;
235
+ squashTo(1);
236
+ key(t, 'linear');
237
+ squashTo(0.85);
238
+ key(t + d * 0.08, 'easeOut');
239
+ ev(t + d * 0.08, 'whoosh', 0.8);
240
+ const N = 6;
241
+ for (let k = 1; k <= N; k++) {
242
+ const u = k / N;
243
+ s.x = (1 - u) * (1 - u) * from.x + 2 * (1 - u) * u * cx + u * u * to.x;
244
+ s.y = (1 - u) * (1 - u) * from.y + 2 * (1 - u) * u * cy + u * u * to.y;
245
+ s.rot = r0 + (k < N ? tilt * (1 - 2 * u) : 0); // nose up on the rise, down on the fall
246
+ squashTo(k < N ? 1.1 : 1);
247
+ key(t + d * (0.08 + 0.92 * u), k === N ? 'easeOut' : 'linear');
248
+ }
249
+ t += d;
250
+ }
251
+ else if (verb === 'peek') {
252
+ const edge = b.edge || 'left';
253
+ const amount = b.amount !== undefined ? Math.min(1, Math.max(0.1, +b.amount)) : 0.5;
254
+ const hold = b.hold !== undefined ? +b.hold : 1;
255
+ const d = +b.duration || 0.5;
256
+ const anchor = to || { x: s.x, y: s.y };
257
+ const off = offEdge(edge, anchor);
258
+ const showX = edge === 'left' ? off.x + w * amount : edge === 'right' ? off.x - w * amount : off.x;
259
+ const showY = edge === 'top' ? off.y + h * amount : edge === 'bottom' ? off.y - h * amount : off.y;
260
+ s.x = off.x;
261
+ s.y = off.y;
262
+ squashTo(1);
263
+ s.op = 1;
264
+ key(t, 'linear');
265
+ s.x = showX;
266
+ s.y = showY;
267
+ key(t + d, 'easeOut');
268
+ key(t + d + hold, 'linear');
269
+ s.x = off.x;
270
+ s.y = off.y;
271
+ key(t + d * 2 + hold, 'easeIn');
272
+ t += d * 2 + hold;
273
+ }
274
+ else if (verb === 'shake') {
275
+ const d = +b.duration || 0.4;
276
+ const amp = b.intensity !== undefined ? +b.intensity : Math.max(2, w * 0.08);
277
+ const x0 = s.x;
278
+ key(t, 'linear');
279
+ ev(t, 'shake', 0.6);
280
+ for (let k = 1; k <= 6; k++) {
281
+ s.x = x0 + amp * (k % 2 ? 1 : -1) * (1 - k / 7);
282
+ key(t + d * k / 7, 'easeInOut');
283
+ }
284
+ s.x = x0;
285
+ key(t + d, 'easeOut');
286
+ t += d;
287
+ }
288
+ else if (verb === 'squash') {
289
+ const d = +b.duration || 0.3;
290
+ const a = b.amount !== undefined ? Math.min(0.8, Math.max(0.05, +b.amount)) : 0.25;
291
+ key(t, 'linear');
292
+ squashTo(1 - a);
293
+ key(t + d * 0.35, 'easeOut');
294
+ ev(t + d * 0.3, 'contact', a * 2);
295
+ squashTo(1 + a * 0.3);
296
+ key(t + d * 0.7, 'easeOut');
297
+ squashTo(1);
298
+ key(t + d, 'easeInOut');
299
+ t += d;
300
+ }
301
+ else if (verb === 'enter') {
302
+ const d = +b.duration || 0.8;
303
+ const dest = to || { x: s.x, y: s.y };
304
+ const off = offEdge(b.from || 'left', dest);
305
+ s.x = off.x;
306
+ s.y = off.y;
307
+ squashTo(1);
308
+ s.op = 1;
309
+ key(t, 'linear');
310
+ ev(t, 'whoosh', 0.6);
311
+ const ox = (dest.x - off.x) * 0.06, oy = (dest.y - off.y) * 0.06;
312
+ s.x = dest.x + ox;
313
+ s.y = dest.y + oy;
314
+ key(t + d * 0.75, 'easeOut'); // overshoot
315
+ s.x = dest.x;
316
+ s.y = dest.y;
317
+ key(t + d, 'easeInOut');
318
+ t += d;
319
+ }
320
+ else if (verb === 'exit') {
321
+ const d = +b.duration || 0.6;
322
+ const off = offEdge(b.edge || 'right', { x: s.x, y: s.y });
323
+ const ax = (s.x - off.x) * 0.04, ay = (s.y - off.y) * 0.04;
324
+ key(t, 'linear');
325
+ s.x += ax;
326
+ s.y += ay;
327
+ squashTo(0.9);
328
+ key(t + d * 0.2, 'easeOut'); // anticipation
329
+ ev(t + d * 0.2, 'whoosh', 0.6);
330
+ s.x = off.x;
331
+ s.y = off.y;
332
+ squashTo(1);
333
+ key(t + d, 'easeIn');
334
+ t += d;
335
+ }
336
+ }
337
+ }
338
+ catch (e) {
339
+ return { error: String(e && e.message || e) };
340
+ }
341
+ if (!keys.length)
342
+ return { error: 'no beats' };
343
+ const onScreen = s.x >= frame.x && s.x <= frame.x + frame.width && s.y >= frame.y && s.y <= frame.y + frame.height;
344
+ return { keyframes: keys, events: events, end: r3(t), final: { x: r3(s.x), y: r3(s.y), onScreen }, warnings };
345
+ }
346
+ //# sourceMappingURL=choreograph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choreograph.js","sourceRoot":"","sources":["../../src/tools/choreograph.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ Pass description for creative direction and canvasPreset for platform sizing. WO
39
39
  // -------------------------------------------------------------------------
40
40
  // batch_execute
41
41
  // -------------------------------------------------------------------------
42
- pinepaper_agent_batch_execute: `Execute multiple operations in a single call — canvas setup, items, animations, effects, playback. Call ONCE per pipeline — calling twice doubles all items.
42
+ pinepaper_agent_batch_execute: `Execute multiple operations in a single call — canvas setup, items, animations, effects, playback. Call ONCE per pipeline — calling twice doubles all items. This is the GLUE: a styled scene, a character, a story or a crafted title has its own tool (styled_scene, character, story, text_style), called first; shapes over a generator backdrop is the stock look.
43
43
 
44
44
  OPERATION TYPES (${AgentBatchOperationTypeSchema.options.length}): ${AgentBatchOperationTypeSchema.options.join(', ')}. create takes position {x, y} or [x, y].
45
45
 
@@ -0,0 +1,55 @@
1
+ /**
2
+ * THE CLOUD'S CRAFT TOOLS, LOCALLY (1.6.21): pinepaper_draw_weave, _draw_knots,
3
+ * _draw_sashiko, _draw_subdivision and pinepaper_ui_kit.
4
+ *
5
+ * mcp-cloud authors them and this package does not fork them: the generators,
6
+ * the public JSON schemas and the UI kit runtime are vendored whole by
7
+ * scripts/sync-design-systems.mjs (src/vendor/design/, check:design fails on a
8
+ * drift). What lives here is only what differs between the two doors:
9
+ *
10
+ * - THE WORDS. Upstream descriptions say the call is recorded on a cloud
11
+ * canvas, costs $0.001 and is drawn by pinepaper_render. Locally the call
12
+ * draws on the studio canvas at once and is free, so those clauses go.
13
+ * - THE FRAME. The generators default to a 1280x720 rectangle. The handler
14
+ * asks the studio for its canvas first and passes it as bounds.
15
+ * - THE IDS. The generators name items `${prefix}_warp_0`…; a second weave
16
+ * with the same prefix would re-register the first one's ids. Each call
17
+ * gets its own prefix.
18
+ * - THE TYPE. The kit sets type in Geist. The studio registers only Inter
19
+ * (prod probe 2026-10-13), so the call loads Geist and Geist Mono first, as
20
+ * brand_kit loads a brand's faces (emitEnsureFont: the studio, then Google
21
+ * Fonts). If that fails the kit draws in Inter, the studio's own face, and
22
+ * the result says which face it used.
23
+ * - THE BRAND. The engine's applyBrandKit recolours what is on the canvas and
24
+ * keeps nothing. pinepaper_brand_kit set leaves the active brand on
25
+ * window.__ppActiveBrand, and the UI kit draws in it when the call names no
26
+ * brand of its own — the cloud does the same from the scene's brand_kit op
27
+ * (ui-kit-attach.ts).
28
+ */
29
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
30
+ import type { DrawWeaveInput, DrawKnotsInput, DrawSashikoInput, DrawSubdivisionInput, UiKitInput } from '../types/schemas.js';
31
+ export declare const CRAFT_TOOL_NAMES: readonly ["pinepaper_draw_weave", "pinepaper_draw_knots", "pinepaper_draw_sashiko", "pinepaper_draw_subdivision", "pinepaper_ui_kit"];
32
+ export interface CraftBounds {
33
+ x: number;
34
+ y: number;
35
+ width: number;
36
+ height: number;
37
+ }
38
+ /** The five tool definitions: upstream schemas, local words. */
39
+ export declare function craftToolDefinitions(): Tool[];
40
+ /** JS that answers the canvas rectangle the craft tools fill by default. */
41
+ export declare const CRAFT_FRAME_JS: string;
42
+ /** A prefix no earlier call used: the generators register items by prefix + index. */
43
+ export declare function craftPrefix(base: string): string;
44
+ export declare function generateDrawWeave(input: DrawWeaveInput, frame?: CraftBounds): string;
45
+ export declare function generateDrawKnots(input: DrawKnotsInput): string;
46
+ export declare function generateDrawSashiko(input: DrawSashikoInput, frame?: CraftBounds): string;
47
+ export declare function generateDrawSubdivision(input: DrawSubdivisionInput, frame?: CraftBounds): string;
48
+ /** Problems with a ui_kit call, in the kit's own words. Empty when it draws. */
49
+ export declare function uiKitCallProblems(input: UiKitInput): string[];
50
+ /**
51
+ * The kit, its faces loaded, the canvas brand when the call names none, then the
52
+ * call. Null when the call cannot draw (see uiKitCallProblems).
53
+ */
54
+ export declare function generateUiKit(input: UiKitInput): string | null;
55
+ //# sourceMappingURL=craft-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-tools.d.ts","sourceRoot":"","sources":["../../src/tools/craft-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAQ/D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,gBAAgB,uIAMnB,CAAC;AAEX,MAAM,WAAW,WAAW;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAoCpF,gEAAgE;AAChE,wBAAgB,oBAAoB,IAAI,IAAI,EAAE,CAsB7C;AAED,4EAA4E;AAC5E,eAAO,MAAM,cAAc,QAEiF,CAAC;AAE7G,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAGpF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAE/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAGxF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAGhG;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,CAE7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CA8B9D"}
@@ -0,0 +1,139 @@
1
+ import { generateTextileCode } from '../vendor/design/textile-weave-generator.js';
2
+ import { generateRecursiveSubdivisionCode } from '../vendor/design/recursive-subdivision-generator.js';
3
+ import { textileTools } from '../vendor/design/textile-tool-schema.js';
4
+ import { subdivisionTools } from '../vendor/design/subdivision-tool-schema.js';
5
+ import { UI_KIT_RUNTIME } from '../vendor/design/ui-kit-runtime.js';
6
+ import { UI_KIT_ACTIONS, uiKitTools, uiKitProblems, generateUiKitCode } from '../vendor/design/ui-kit-tool-schema.js';
7
+ import { emitEnsureFont } from '../types/code-generator.js';
8
+ export const CRAFT_TOOL_NAMES = [
9
+ 'pinepaper_draw_weave',
10
+ 'pinepaper_draw_knots',
11
+ 'pinepaper_draw_sashiko',
12
+ 'pinepaper_draw_subdivision',
13
+ 'pinepaper_ui_kit',
14
+ ];
15
+ /** Where the kit declares its default faces; replaced by the faces this studio actually loaded. */
16
+ const KIT_DEFAULT_FONTS = "fonts: { heading: 'Geist', body: 'Geist', mono: 'Geist Mono' }";
17
+ const KIT_LOADED_FONTS = 'fonts: { heading: __kitFace, body: __kitFace, mono: __kitMono }';
18
+ /** Cloud-only clauses in the upstream words, and what they say locally. */
19
+ function localWords(text) {
20
+ return text
21
+ .replace(/\s*\[Cost: [^\]]*\]/g, '')
22
+ .replace(/\s*Appends to canvas state[^.]*\./g, ' Draws on the canvas as ordinary items you can select and edit.')
23
+ .replace(/\s*Recorded on your cloud canvas and drawn by pinepaper_render\./g, ' Draws on the canvas at once.')
24
+ .replace(/\(default: full canvas 1280x720 or 1080x1350\)/g, '(default: the canvas)')
25
+ .replace(/\(default Geist\)/g, '(default Inter)')
26
+ .trim();
27
+ }
28
+ function localise(value) {
29
+ if (typeof value === 'string')
30
+ return localWords(value);
31
+ if (Array.isArray(value))
32
+ return value.map(localise);
33
+ if (value && typeof value === 'object') {
34
+ const out = {};
35
+ for (const [k, v] of Object.entries(value))
36
+ out[k] = k === 'description' || typeof v === 'object' ? localise(v) : v;
37
+ return out;
38
+ }
39
+ return value;
40
+ }
41
+ const TITLES = {
42
+ pinepaper_draw_weave: 'Draw Weave',
43
+ pinepaper_draw_knots: 'Draw Knots',
44
+ pinepaper_draw_sashiko: 'Draw Sashiko',
45
+ pinepaper_draw_subdivision: 'Draw Subdivision',
46
+ pinepaper_ui_kit: 'UI Kit',
47
+ };
48
+ /** The five tool definitions: upstream schemas, local words. */
49
+ export function craftToolDefinitions() {
50
+ return [...textileTools(), ...subdivisionTools(), ...uiKitTools()].map((t) => {
51
+ const def = localise(t);
52
+ if (def.name === 'pinepaper_draw_knots') {
53
+ def.description += ' Needs points: the knots go exactly where you put them.';
54
+ }
55
+ if (def.name === 'pinepaper_ui_kit') {
56
+ def.description += ` Actions: ${UI_KIT_ACTIONS.join(', ')}.`;
57
+ }
58
+ return {
59
+ name: def.name,
60
+ annotations: {
61
+ title: TITLES[def.name] ?? def.name,
62
+ readOnlyHint: false,
63
+ destructiveHint: false,
64
+ idempotentHint: false,
65
+ openWorldHint: false,
66
+ },
67
+ description: def.description,
68
+ inputSchema: def.inputSchema,
69
+ };
70
+ });
71
+ }
72
+ /** JS that answers the canvas rectangle the craft tools fill by default. */
73
+ export const CRAFT_FRAME_JS = '(function(){ var c = app.getCanvasSize ? app.getCanvasSize() : null;' +
74
+ ' return c && c.width > 0 && c.height > 0 ? { x: 0, y: 0, width: c.width, height: c.height } : null; })()';
75
+ /** A prefix no earlier call used: the generators register items by prefix + index. */
76
+ export function craftPrefix(base) {
77
+ return `${base}_${Date.now().toString(36)}${Math.random().toString(36).slice(2, 6)}`;
78
+ }
79
+ /** The generator's value is a Group; the result reports how many items the call registered instead. */
80
+ function reported(code, tool) {
81
+ return `var __before = app.itemRegistry ? app.itemRegistry.getAll().length : 0;
82
+ ${code}
83
+ ({ success: true, tool: ${JSON.stringify(tool)}, itemCount: app.itemRegistry ? app.itemRegistry.getAll().length - __before : null });`;
84
+ }
85
+ export function generateDrawWeave(input, frame) {
86
+ const bounds = input.bounds ? { ...frame, ...input.bounds } : frame;
87
+ return reported(generateTextileCode({ ...input, type: input.weave ?? 'plain', bounds, idPrefix: craftPrefix(`${input.weave ?? 'plain'}_weave`) }), 'pinepaper_draw_weave');
88
+ }
89
+ export function generateDrawKnots(input) {
90
+ return reported(generateTextileCode({ ...input, type: 'knots', idPrefix: craftPrefix('embroidery_knot') }), 'pinepaper_draw_knots');
91
+ }
92
+ export function generateDrawSashiko(input, frame) {
93
+ const bounds = input.bounds ? { ...frame, ...input.bounds } : frame;
94
+ return reported(generateTextileCode({ ...input, type: 'sashiko', bounds, idPrefix: craftPrefix(`sashiko_${input.pattern ?? 'seigaiha'}`) }), 'pinepaper_draw_sashiko');
95
+ }
96
+ export function generateDrawSubdivision(input, frame) {
97
+ const bounds = input.bounds ? { ...frame, ...input.bounds } : frame;
98
+ return reported(generateRecursiveSubdivisionCode({ ...input, bounds, idPrefix: input.idPrefix ?? craftPrefix('subdiv') }), 'pinepaper_draw_subdivision');
99
+ }
100
+ /** Problems with a ui_kit call, in the kit's own words. Empty when it draws. */
101
+ export function uiKitCallProblems(input) {
102
+ return uiKitProblems(input);
103
+ }
104
+ /**
105
+ * The kit, its faces loaded, the canvas brand when the call names none, then the
106
+ * call. Null when the call cannot draw (see uiKitCallProblems).
107
+ */
108
+ export function generateUiKit(input) {
109
+ const call = generateUiKitCode(input);
110
+ if (!call)
111
+ return null;
112
+ if (!UI_KIT_RUNTIME.includes(KIT_DEFAULT_FONTS)) {
113
+ // The kit's defaults moved upstream; craft-tools.test.ts fails on this too.
114
+ throw new Error('ui_kit: the vendored kit no longer declares its default fonts where this package expects them');
115
+ }
116
+ const brand = input.brand;
117
+ const brandFaces = [brand?.headingFont, brand?.bodyFont].filter((f) => typeof f === 'string' && /^[\w \-]{1,60}$/.test(f.trim()));
118
+ const ensure = (family, slot) => ` ${slot} = await (async function() {${emitEnsureFont(family).replace(/\n/g, '\n ')}\n return __font;\n })();\n if (${slot}) __fonts.push(${slot});`;
119
+ const runtime = UI_KIT_RUNTIME.replace(KIT_DEFAULT_FONTS, KIT_LOADED_FONTS);
120
+ return `// UI kit: ${input.action}
121
+ (async function() {
122
+ const __fonts = [];
123
+ let __geist, __geistMono, __b;
124
+ ${ensure('Geist', '__geist')}
125
+ ${ensure('Geist Mono', '__geistMono')}
126
+ ${[...new Set(brandFaces.map((f) => f.trim()))].map((f) => ensure(f, '__b')).join('\n')}
127
+ // Geist is the kit's face; a studio that cannot load it draws in Inter, its own face, not a browser substitute.
128
+ var __kitFace = (__geist && __geist.available === false) ? 'Inter' : 'Geist';
129
+ var __kitMono = (__geistMono && __geistMono.available === false) ? 'monospace' : 'Geist Mono';
130
+ ${runtime}
131
+ ${brand ? '' : " if (typeof window !== 'undefined' && window.__ppActiveBrand) UIKit.brand(window.__ppActiveBrand);\n"} var __before = app.itemRegistry ? app.itemRegistry.getAll().length : 0;
132
+ ${call}
133
+ return { success: true, tool: 'pinepaper_ui_kit', action: ${JSON.stringify(input.action)},
134
+ itemCount: app.itemRegistry ? app.itemRegistry.getAll().length - __before : null,
135
+ face: __kitFace, brand: ${brand ? "'call'" : "(typeof window !== 'undefined' && window.__ppActiveBrand) ? 'active brand kit' : 'kit defaults'"},
136
+ ...(__fonts.length ? { fonts: __fonts } : {}) };
137
+ })();`;
138
+ }
139
+ //# sourceMappingURL=craft-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-tools.js","sourceRoot":"","sources":["../../src/tools/craft-tools.ts"],"names":[],"mappings":"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"}