@pinepaper.studio/mcp-server 1.6.23 → 1.6.24

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 (105) 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 +84 -5
  8. package/README.pt-BR.md +1 -1
  9. package/README.zh-CN.md +1 -1
  10. package/SECURITY.md +46 -0
  11. package/dist/agent/types.d.ts +114 -106
  12. package/dist/agent/types.d.ts.map +1 -1
  13. package/dist/agent/types.js +1 -1
  14. package/dist/agent/types.js.map +1 -1
  15. package/dist/browser/puppeteer-controller.js +2 -2
  16. package/dist/browser/puppeteer-controller.js.map +1 -1
  17. package/dist/build-info.json +2 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +13 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/ontology/hints.d.ts.map +1 -1
  22. package/dist/ontology/hints.js +5 -1
  23. package/dist/ontology/hints.js.map +1 -1
  24. package/dist/ontology/upstream-vocabulary.d.ts +1 -1
  25. package/dist/ontology/upstream-vocabulary.js +1 -1
  26. package/dist/ontology/vocabulary.d.ts.map +1 -1
  27. package/dist/ontology/vocabulary.js +1 -0
  28. package/dist/ontology/vocabulary.js.map +1 -1
  29. package/dist/tools/batch-macros.d.ts +27 -0
  30. package/dist/tools/batch-macros.d.ts.map +1 -0
  31. package/dist/tools/batch-macros.js +157 -0
  32. package/dist/tools/batch-macros.js.map +1 -0
  33. package/dist/tools/choreograph.d.ts.map +1 -1
  34. package/dist/tools/choreograph.js +2 -0
  35. package/dist/tools/choreograph.js.map +1 -1
  36. package/dist/tools/compact-descriptions.js +3 -3
  37. package/dist/tools/compact-descriptions.js.map +1 -1
  38. package/dist/tools/definitions.d.ts.map +1 -1
  39. package/dist/tools/definitions.js +87 -5
  40. package/dist/tools/definitions.js.map +1 -1
  41. package/dist/tools/engine-lists.d.ts +2 -2
  42. package/dist/tools/engine-lists.js +2 -2
  43. package/dist/tools/engine-methods.d.ts.map +1 -1
  44. package/dist/tools/engine-methods.js +1 -0
  45. package/dist/tools/engine-methods.js.map +1 -1
  46. package/dist/tools/engine-surface.d.ts +1 -1
  47. package/dist/tools/engine-surface.d.ts.map +1 -1
  48. package/dist/tools/engine-surface.js +52 -6
  49. package/dist/tools/engine-surface.js.map +1 -1
  50. package/dist/tools/export-file-check.d.ts +31 -0
  51. package/dist/tools/export-file-check.d.ts.map +1 -0
  52. package/dist/tools/export-file-check.js +103 -0
  53. package/dist/tools/export-file-check.js.map +1 -0
  54. package/dist/tools/export-file-receipt.d.ts +56 -0
  55. package/dist/tools/export-file-receipt.d.ts.map +1 -0
  56. package/dist/tools/export-file-receipt.js +151 -0
  57. package/dist/tools/export-file-receipt.js.map +1 -0
  58. package/dist/tools/handlers/beats.d.ts +7 -44
  59. package/dist/tools/handlers/beats.d.ts.map +1 -1
  60. package/dist/tools/handlers/export.d.ts.map +1 -1
  61. package/dist/tools/handlers/export.js +31 -6
  62. package/dist/tools/handlers/export.js.map +1 -1
  63. package/dist/tools/handlers/generate.d.ts +41 -270
  64. package/dist/tools/handlers/generate.d.ts.map +1 -1
  65. package/dist/tools/handlers.d.ts +67 -1
  66. package/dist/tools/handlers.d.ts.map +1 -1
  67. package/dist/tools/handlers.js +304 -67
  68. package/dist/tools/handlers.js.map +1 -1
  69. package/dist/tools/lane.d.ts +34 -0
  70. package/dist/tools/lane.d.ts.map +1 -0
  71. package/dist/tools/lane.js +210 -0
  72. package/dist/tools/lane.js.map +1 -0
  73. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  74. package/dist/tools/minimal-descriptions.js +3 -2
  75. package/dist/tools/minimal-descriptions.js.map +1 -1
  76. package/dist/tools/nested-ignored.d.ts +16 -0
  77. package/dist/tools/nested-ignored.d.ts.map +1 -0
  78. package/dist/tools/nested-ignored.js +83 -0
  79. package/dist/tools/nested-ignored.js.map +1 -0
  80. package/dist/tools/shape-params.d.ts +2 -2
  81. package/dist/tools/shape-params.d.ts.map +1 -1
  82. package/dist/tools/shape-params.js +9 -2
  83. package/dist/tools/shape-params.js.map +1 -1
  84. package/dist/tools/stick-vocabulary.d.ts +4 -4
  85. package/dist/tools/stick-vocabulary.d.ts.map +1 -1
  86. package/dist/tools/stick-vocabulary.js +8 -4
  87. package/dist/tools/stick-vocabulary.js.map +1 -1
  88. package/dist/tools/timeline.d.ts +136 -0
  89. package/dist/tools/timeline.d.ts.map +1 -0
  90. package/dist/tools/timeline.js +1036 -0
  91. package/dist/tools/timeline.js.map +1 -0
  92. package/dist/tools/toolkits.d.ts +1 -1
  93. package/dist/tools/toolkits.d.ts.map +1 -1
  94. package/dist/tools/toolkits.js +12 -2
  95. package/dist/tools/toolkits.js.map +1 -1
  96. package/dist/types/code-generator.d.ts +30 -2
  97. package/dist/types/code-generator.d.ts.map +1 -1
  98. package/dist/types/code-generator.js +277 -53
  99. package/dist/types/code-generator.js.map +1 -1
  100. package/dist/types/schemas.d.ts +5276 -25048
  101. package/dist/types/schemas.d.ts.map +1 -1
  102. package/dist/types/schemas.js +78 -40
  103. package/dist/types/schemas.js.map +1 -1
  104. package/manifest.json +5 -1
  105. package/package.json +8 -7
@@ -1 +1 @@
1
- {"version":3,"file":"stick-vocabulary.js","sourceRoot":"","sources":["../../src/tools/stick-vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,KAAK;IACL,OAAO;IACP,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,WAAW;CACZ,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,SAAS;IACT,UAAU;IACV,OAAO;IACP,cAAc;IACd,cAAc;IACd,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,iBAAiB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAChE,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,WAAW;IACX,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;IACR,aAAa;IACb,SAAS;IACT,UAAU;CACX,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;CACP,CAAC,CAAC"}
1
+ {"version":3,"file":"stick-vocabulary.js","sourceRoot":"","sources":["../../src/tools/stick-vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,KAAK;IACL,OAAO;IACP,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,WAAW;CACZ,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,SAAS;IACT,UAAU;IACV,OAAO;IACP,cAAc;IACd,cAAc;IACd,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,iBAAiB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAChE,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,WAAW;IACX,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;IACR,aAAa;IACb,SAAS;IACT,UAAU;CACX,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,MAAM;IACN,KAAK;IACL,KAAK;IACL,QAAQ;IACR,SAAS;IACT,KAAK;IACL,MAAM;CACP,CAAC,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * A TIMELINE OP: animation written the way an agent already knows it from GSAP, compiled onto the engine's own
3
+ * keyframe tracks.
4
+ *
5
+ * It is a JSON shape, never code: nothing here is evaluated. The compiler is pure (no studio, no I/O) and runs on the
6
+ * server before anything is sent, so a tween it cannot honour is refused by name with the reason, before the canvas is
7
+ * touched. What it produces is the same thing a keyframe_animate op produces: one track per item, written with
8
+ * app.addAnimation, so a timeline call is exported, saved and edited exactly as hand-written keys are.
9
+ *
10
+ * { "type": "timeline", "defaults": { "ease": "power2.out" }, "tweens": [
11
+ * { "to": "bar-*", "from": { "scaleY": 0 }, "vars": { "scaleY": 1 }, "duration": 0.8, "at": 0.5, "stagger": 0.15 },
12
+ * { "to": "ring", "vars": { "rotation": 480 }, "duration": 8, "ease": "none", "at": 0 } ] }
13
+ *
14
+ * SEMANTICS (GSAP's, where the engine can carry them):
15
+ * - to + vars (end values), from (start values), both = fromTo. A value missing on one side is the value the item has
16
+ * at the tween's start: the end of the previous tween on that property, else the item's rest value, read in the studio.
17
+ * - x and y are OFFSETS from where the item was created, as GSAP's x/y are offsets from layout (x: 0 is home).
18
+ * - at: absolute seconds, "<" / ">" (start / end of the previous tween, optionally "<0.2", ">-0.1"), "+=0.2" / "-=0.2"
19
+ * (from the timeline's end), a label, or "label+=0.2". Omitted: the timeline's end. delay adds to it.
20
+ * - stagger: seconds between targets, or { each | amount, from: start | end | center | edges | index }.
21
+ * - repeat / yoyo / repeatDelay: a repeat that never ends on an item with nothing else is the engine's loop; anything
22
+ * else is expanded into keys (repeat -1 up to the timeline's duration).
23
+ * - ease: GSAP names mapped onto the engine's easing table; a name with no equivalent is refused, never made linear.
24
+ * - Every compiled track is as long as the timeline (its end, or `duration`), so no key can outrun its clip.
25
+ *
26
+ * KNOWN GAPS (the engine cannot carry them, so they are refused rather than approximated): a scale pivot left or right
27
+ * of centre, a percentage x/y, stagger from "random" or a grid, eased parameters (back(3), elastic(1.2, 0.4)),
28
+ * elastic/bounce inOut, steps(), callbacks, and two tweens on one property that overlap in time.
29
+ */
30
+ /** What the batch knows about the items it creates, in create order: "$N" is creates[N]. */
31
+ export interface TimelineCreateInfo {
32
+ name?: string;
33
+ anchor?: string;
34
+ }
35
+ /** A value the studio fills in when the track is written: the item's rest value of `$rest`, plus offsets. */
36
+ export interface RestValue {
37
+ $rest: string;
38
+ add?: number;
39
+ /**
40
+ * Baseline pivot: +1 bottom, -1 top, 'anchor' = the item's own anchor (bottom-* / top-*), read in the studio.
41
+ * y = rest + add + pivot * (h / 2) * (restScaleY - s), with s the scale at this key (or restScaleY + sAdd).
42
+ */
43
+ pivot?: 1 | -1 | 'anchor';
44
+ s?: number;
45
+ sAdd?: number;
46
+ }
47
+ export type KeyValue = number | string | number[] | RestValue;
48
+ export interface CompiledKeyframe {
49
+ time: number;
50
+ properties: Record<string, KeyValue>;
51
+ easing: string;
52
+ }
53
+ export interface CompiledTrack {
54
+ /** "$N" (an item this batch creates) or the ref as given, resolved by the studio (id, then name). */
55
+ target: string;
56
+ /** What the caller wrote. */
57
+ ref: string;
58
+ keyframes: CompiledKeyframe[];
59
+ duration: number;
60
+ loop: boolean;
61
+ }
62
+ export interface TweenReceipt {
63
+ tween: number;
64
+ compiledTo: 'track';
65
+ targets: Array<{
66
+ ref: string;
67
+ item: string;
68
+ start: number;
69
+ end: number | 'forever';
70
+ }>;
71
+ start: number;
72
+ /** Seconds, or 'forever' for repeat -1. */
73
+ end: number | 'forever';
74
+ ease: {
75
+ asked: string;
76
+ engine: string;
77
+ };
78
+ properties: Array<{
79
+ asked: string;
80
+ engine: string;
81
+ from: string;
82
+ to: string;
83
+ }>;
84
+ converted: string[];
85
+ dropped: string[];
86
+ }
87
+ export interface TimelinePlan {
88
+ tracks: CompiledTrack[];
89
+ tweens: TweenReceipt[];
90
+ /** The clip every non-looping track is given: the timeline's end, or its declared duration. */
91
+ duration: number;
92
+ notes: string[];
93
+ }
94
+ export interface TimelineError {
95
+ path: string;
96
+ message: string;
97
+ }
98
+ export type TimelineResult = {
99
+ ok: true;
100
+ plan: TimelinePlan;
101
+ } | {
102
+ ok: false;
103
+ errors: TimelineError[];
104
+ };
105
+ /** GSAP's own default, used when neither the tween nor the timeline's defaults name one. */
106
+ export declare const GSAP_DEFAULT_EASE = "power1.out";
107
+ /** The names this op accepts, for the refusal message. */
108
+ export declare const GSAP_EASE_NAMES: readonly ["none", "linear", "power0", ...string[], "elastic.in", "elastic.out", "bounce.in", "bounce.out"];
109
+ /** A GSAP ease name → the engine's, or the reason it has none. Also takes the engine's own names. */
110
+ export declare function mapGsapEase(name: string): {
111
+ engine: string;
112
+ } | {
113
+ error: string;
114
+ };
115
+ export declare function compileTimeline(op: Record<string, unknown>, ctx?: {
116
+ creates: TimelineCreateInfo[];
117
+ }): TimelineResult;
118
+ /** What the batch creates, in create order, for name resolution and anchors. */
119
+ export declare function batchCreatesBefore(operations: ReadonlyArray<Record<string, unknown>>, index: number): TimelineCreateInfo[];
120
+ /**
121
+ * Compile every timeline op in a batch. Errors come back with batch paths (operations[i].tweens[j]…). Also refused: a
122
+ * timeline track and a keyframe_animate op on the same item in one batch, or two timelines on one item — each writes
123
+ * the item's whole track, so one would silently replace the other.
124
+ */
125
+ export declare function compileBatchTimelines(operations: ReadonlyArray<Record<string, unknown>>): {
126
+ plans: Map<number, TimelinePlan>;
127
+ errors: TimelineError[];
128
+ };
129
+ /**
130
+ * The body of a batch op (a function body that returns the op's result) that writes a compiled timeline: one
131
+ * app.addAnimation per item, the same call keyframe_animate makes. Values the compiler could not know (an item's rest
132
+ * position, rotation, opacity, colour) are read from the item here, from its rest state when it has one.
133
+ * `refExpr` turns a "$N" target into the batch's runtime reference.
134
+ */
135
+ export declare function emitTimelineOpBody(plan: TimelinePlan, refExpr: (target: string) => string): string;
136
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/tools/timeline.ts"],"names":[],"mappings":"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"}