@cyanheads/pixoo-mcp-server 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/AGENTS.md +17 -10
  2. package/CLAUDE.md +17 -10
  3. package/Dockerfile +63 -46
  4. package/README.md +16 -12
  5. package/changelog/1.2.x/1.2.2.md +40 -0
  6. package/changelog/1.3.x/1.3.0.md +35 -0
  7. package/dist/config/server-config.d.ts +1 -1
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +6 -1
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.d.ts.map +1 -1
  12. package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js +4 -1
  13. package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js.map +1 -1
  14. package/dist/mcp-server/tools/asset-source-schema.d.ts +13 -0
  15. package/dist/mcp-server/tools/asset-source-schema.d.ts.map +1 -0
  16. package/dist/mcp-server/tools/asset-source-schema.js +25 -0
  17. package/dist/mcp-server/tools/asset-source-schema.js.map +1 -0
  18. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts +139 -55
  19. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts.map +1 -1
  20. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js +182 -79
  21. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js.map +1 -1
  22. package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.js +14 -6
  24. package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/pixoo-discover-devices.tool.d.ts +1 -1
  26. package/dist/mcp-server/tools/definitions/pixoo-discover-devices.tool.js +1 -1
  27. package/dist/mcp-server/tools/definitions/pixoo-discover-devices.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts +8 -9
  29. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js +50 -29
  31. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js.map +1 -1
  32. package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.js +1 -3
  34. package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts +30 -1
  36. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js +106 -28
  38. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js.map +1 -1
  39. package/dist/mcp-server/tools/finish-schema.d.ts +28 -0
  40. package/dist/mcp-server/tools/finish-schema.d.ts.map +1 -0
  41. package/dist/mcp-server/tools/finish-schema.js +42 -0
  42. package/dist/mcp-server/tools/finish-schema.js.map +1 -0
  43. package/dist/renderer/finish.d.ts +34 -0
  44. package/dist/renderer/finish.d.ts.map +1 -0
  45. package/dist/renderer/finish.js +62 -0
  46. package/dist/renderer/finish.js.map +1 -0
  47. package/dist/renderer/keyframes.d.ts +5 -1
  48. package/dist/renderer/keyframes.d.ts.map +1 -1
  49. package/dist/renderer/keyframes.js +16 -2
  50. package/dist/renderer/keyframes.js.map +1 -1
  51. package/dist/renderer/remote-image.d.ts +9 -7
  52. package/dist/renderer/remote-image.d.ts.map +1 -1
  53. package/dist/renderer/remote-image.js +15 -23
  54. package/dist/renderer/remote-image.js.map +1 -1
  55. package/dist/renderer/scene-renderer.d.ts +59 -14
  56. package/dist/renderer/scene-renderer.d.ts.map +1 -1
  57. package/dist/renderer/scene-renderer.js +204 -66
  58. package/dist/renderer/scene-renderer.js.map +1 -1
  59. package/dist/renderer/text-engine.d.ts +40 -11
  60. package/dist/renderer/text-engine.d.ts.map +1 -1
  61. package/dist/renderer/text-engine.js +75 -40
  62. package/dist/renderer/text-engine.js.map +1 -1
  63. package/dist/services/pixoo/pixoo-service.d.ts.map +1 -1
  64. package/dist/services/pixoo/pixoo-service.js +9 -33
  65. package/dist/services/pixoo/pixoo-service.js.map +1 -1
  66. package/package.json +3 -3
  67. package/server.json +3 -3
@@ -13,8 +13,10 @@ At typical viewing distance for a 64×64 LED display:
13
13
  - **Minimum eye size:** 1–2px across; 2×2 fills are more reliable than single pixels
14
14
  - **Minimum limb gap:** 2 rows between horizontal elements prevents blur
15
15
  - **Font choices:**
16
- - Standard (5×7): default for all text. Readable at 1× scale. Excellent at 2× (10px tall = chunky block letters)
16
+ - Standard (5×7): default for all text. Readable at 1× scale. Excellent at 2× (14px tall = chunky block letters)
17
17
  - Compact (3×5): secondary text, captions, labels when space is tight
18
+ - Standard and compact both draw printable ASCII plus \`° ← ↑ → ↓ ▲ ▼ ♥ · …\` for units, trends, and separators. Any other character (\`€\`, \`×\`, \`’\`, \`—\`, a newline inside one string, the invisible U+FE0F after \`♥\`) draws as \`?\`, and the response notice names it with its code point and element index
19
+ - Numerals (11×18): clocks and hero readouts. Draws 0–9, space, and \`: . - + / % ° ?\` only, each digit on one 13px advance so a changing value keeps its width. Auto-fit never picks it; text holding any other character is rejected, so units and labels go in their own standard or compact text element
18
20
  - Scale ≥2: decorative or hero use only — verify fit before pushing
19
21
 
20
22
  ## Palette Discipline
@@ -103,6 +105,7 @@ At typical viewing distance for a 64×64 LED display:
103
105
  - **getConfig() omits SelectIndex** on current Pixoo-64 firmware — use getChannel() for reliable channel reads
104
106
  - **Text overlays (pixoo_overlay_text)** persist across channel switches until explicitly cleared
105
107
  - **Discovery requires internet** — Divoom cloud endpoint even for local device control
108
+ - **Dark and mid levels render darker than on a monitor** — on a Pixoo-64 at brightness 100, channel levels 0–4 stay dark, and mid-levels render darker than on an sRGB monitor, shifting muted warm colors toward red (\`#D97757\` reads red). Previews show the sRGB values pushed, not the panel's response.
106
109
  `;
107
110
  export const pixooDesignGuideResource = resource('pixoo://reference/design-guide', {
108
111
  name: 'design-guide',
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-design-guide.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-design-guide.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoGpB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,gCAAgC,EAAE;IACjF,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,uNAAuN;IACzN,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,qEAAqE;IACrE,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;IAEtD,OAAO,CAAC,OAAO,EAAE,IAAI;QACnB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,gCAAgC;gBACrC,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,eAAe;gBACzB,WAAW,EACT,iFAAiF;aACpF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"pixoo-design-guide.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-design-guide.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGpB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,gCAAgC,EAAE;IACjF,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,uNAAuN;IACzN,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,qEAAqE;IACrE,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;IAEtD,OAAO,CAAC,OAAO,EAAE,IAAI;QACnB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,gCAAgC;gBACrC,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,eAAe;gBACzB,WAAW,EACT,iFAAiF;aACpF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview Inputs that name an image asset: the image `source` of pixoo_push_image
3
+ * and of a scene `image` element, and a scene `sprite` element's `path`. Each must be a
4
+ * URL or an absolute local path — a relative path would resolve against the server's
5
+ * working directory, which a caller cannot see.
6
+ * @module mcp-server/tools/asset-source-schema
7
+ */
8
+ import { z } from '@cyanheads/mcp-ts-core';
9
+ /** An image source: an absolute local path or an https URL. */
10
+ export declare const ImageSourceSchema: z.ZodString;
11
+ /** A sprite sheet path: an absolute local path. */
12
+ export declare const SpritePathSchema: z.ZodString;
13
+ //# sourceMappingURL=asset-source-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-source-schema.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/asset-source-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAW3C,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,aAG5B,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,aAE3B,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Inputs that name an image asset: the image `source` of pixoo_push_image
3
+ * and of a scene `image` element, and a scene `sprite` element's `path`. Each must be a
4
+ * URL or an absolute local path — a relative path would resolve against the server's
5
+ * working directory, which a caller cannot see.
6
+ * @module mcp-server/tools/asset-source-schema
7
+ */
8
+ import * as path from 'node:path';
9
+ import { z } from '@cyanheads/mcp-ts-core';
10
+ import { isRemoteSource } from '../../renderer/remote-image.js';
11
+ /**
12
+ * True for a value that names the same asset whatever the server's working directory.
13
+ * An http URL passes: the loaders refuse it as `asset_not_found` with a message naming
14
+ * the https requirement, as they refuse a sprite path given as any URL.
15
+ */
16
+ const namesAssetAbsolutely = (value) => isRemoteSource(value) || path.isAbsolute(value);
17
+ /** An image source: an absolute local path or an https URL. */
18
+ export const ImageSourceSchema = z.string().refine(namesAssetAbsolutely, {
19
+ error: 'Must be an absolute local path or an https URL, not a relative path, a ~ path, or a file:// URL.',
20
+ });
21
+ /** A sprite sheet path: an absolute local path. */
22
+ export const SpritePathSchema = z.string().refine(namesAssetAbsolutely, {
23
+ error: 'Must be an absolute local path, not a relative path, a ~ path, or a file:// URL.',
24
+ });
25
+ //# sourceMappingURL=asset-source-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-source-schema.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/asset-source-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAW,EAAE,CACtD,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAElD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE;IACvE,KAAK,EACH,kGAAkG;CACrG,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE;IACtE,KAAK,EAAE,kFAAkF;CAC1F,CAAC,CAAC"}
@@ -6,7 +6,7 @@ import { z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
7
  export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
8
  background: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
9
- gradient: z.ZodObject<{
9
+ gradient: z.ZodOptional<z.ZodObject<{
10
10
  type: z.ZodEnum<{
11
11
  h: "h";
12
12
  r: "r";
@@ -14,9 +14,8 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
14
14
  }>;
15
15
  from: z.ZodString;
16
16
  to: z.ZodString;
17
- }, z.core.$strip>;
18
- }, z.core.$strip>, z.ZodObject<{
19
- theme: z.ZodEnum<{
17
+ }, z.core.$strict>>;
18
+ theme: z.ZodOptional<z.ZodEnum<{
20
19
  claude: "claude";
21
20
  ember: "ember";
22
21
  forest: "forest";
@@ -24,11 +23,17 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
24
23
  midnight: "midnight";
25
24
  mono: "mono";
26
25
  neon: "neon";
27
- }>;
28
- }, z.core.$strip>]>;
26
+ }>>;
27
+ }, z.core.$strict>]>;
29
28
  elements: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
30
29
  visible: z.ZodOptional<z.ZodBoolean>;
31
30
  opacity: z.ZodOptional<z.ZodNumber>;
31
+ blend: z.ZodOptional<z.ZodEnum<{
32
+ add: "add";
33
+ multiply: "multiply";
34
+ normal: "normal";
35
+ screen: "screen";
36
+ }>>;
32
37
  dx: z.ZodOptional<z.ZodNumber>;
33
38
  dy: z.ZodOptional<z.ZodNumber>;
34
39
  effect: z.ZodOptional<z.ZodObject<{
@@ -46,14 +51,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
46
51
  amplitude: z.ZodOptional<z.ZodNumber>;
47
52
  period: z.ZodOptional<z.ZodNumber>;
48
53
  phase: z.ZodOptional<z.ZodNumber>;
49
- }, z.core.$strip>>;
54
+ }, z.core.$strict>>;
50
55
  animate: z.ZodOptional<z.ZodObject<{
51
56
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
52
57
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
53
58
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
54
59
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
55
60
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
56
- }, z.core.$strip>>;
61
+ }, z.core.$strict>>;
57
62
  type: z.ZodLiteral<"text">;
58
63
  text: z.ZodString;
59
64
  x: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
@@ -69,6 +74,7 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
69
74
  color: z.ZodOptional<z.ZodString>;
70
75
  font: z.ZodOptional<z.ZodEnum<{
71
76
  compact: "compact";
77
+ numerals: "numerals";
72
78
  standard: "standard";
73
79
  }>>;
74
80
  style: z.ZodOptional<z.ZodObject<{
@@ -83,15 +89,21 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
83
89
  }>, z.ZodObject<{
84
90
  from: z.ZodString;
85
91
  to: z.ZodString;
86
- }, z.core.$strip>]>>;
92
+ }, z.core.$strict>]>>;
87
93
  shadow: z.ZodOptional<z.ZodBoolean>;
88
94
  outline: z.ZodOptional<z.ZodBoolean>;
89
95
  scale: z.ZodOptional<z.ZodNumber>;
90
96
  color: z.ZodOptional<z.ZodString>;
91
- }, z.core.$strip>>;
92
- }, z.core.$strip>, z.ZodObject<{
97
+ }, z.core.$strict>>;
98
+ }, z.core.$strict>, z.ZodObject<{
93
99
  visible: z.ZodOptional<z.ZodBoolean>;
94
100
  opacity: z.ZodOptional<z.ZodNumber>;
101
+ blend: z.ZodOptional<z.ZodEnum<{
102
+ add: "add";
103
+ multiply: "multiply";
104
+ normal: "normal";
105
+ screen: "screen";
106
+ }>>;
95
107
  dx: z.ZodOptional<z.ZodNumber>;
96
108
  dy: z.ZodOptional<z.ZodNumber>;
97
109
  effect: z.ZodOptional<z.ZodObject<{
@@ -109,14 +121,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
109
121
  amplitude: z.ZodOptional<z.ZodNumber>;
110
122
  period: z.ZodOptional<z.ZodNumber>;
111
123
  phase: z.ZodOptional<z.ZodNumber>;
112
- }, z.core.$strip>>;
124
+ }, z.core.$strict>>;
113
125
  animate: z.ZodOptional<z.ZodObject<{
114
126
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
115
127
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
116
128
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
117
129
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
118
130
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
119
- }, z.core.$strip>>;
131
+ }, z.core.$strict>>;
120
132
  type: z.ZodLiteral<"icon">;
121
133
  name: z.ZodOptional<z.ZodString>;
122
134
  d: z.ZodOptional<z.ZodString>;
@@ -143,9 +155,15 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
143
155
  mono: "mono";
144
156
  neon: "neon";
145
157
  }>>;
146
- }, z.core.$strip>, z.ZodObject<{
158
+ }, z.core.$strict>, z.ZodObject<{
147
159
  visible: z.ZodOptional<z.ZodBoolean>;
148
160
  opacity: z.ZodOptional<z.ZodNumber>;
161
+ blend: z.ZodOptional<z.ZodEnum<{
162
+ add: "add";
163
+ multiply: "multiply";
164
+ normal: "normal";
165
+ screen: "screen";
166
+ }>>;
149
167
  dx: z.ZodOptional<z.ZodNumber>;
150
168
  dy: z.ZodOptional<z.ZodNumber>;
151
169
  effect: z.ZodOptional<z.ZodObject<{
@@ -163,14 +181,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
163
181
  amplitude: z.ZodOptional<z.ZodNumber>;
164
182
  period: z.ZodOptional<z.ZodNumber>;
165
183
  phase: z.ZodOptional<z.ZodNumber>;
166
- }, z.core.$strip>>;
184
+ }, z.core.$strict>>;
167
185
  animate: z.ZodOptional<z.ZodObject<{
168
186
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
169
187
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
170
188
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
171
189
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
172
190
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
173
- }, z.core.$strip>>;
191
+ }, z.core.$strict>>;
174
192
  type: z.ZodLiteral<"rect">;
175
193
  x: z.ZodNumber;
176
194
  y: z.ZodNumber;
@@ -184,11 +202,18 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
184
202
  }>;
185
203
  from: z.ZodString;
186
204
  to: z.ZodString;
187
- }, z.core.$strip>>;
205
+ }, z.core.$strict>>;
188
206
  borderColor: z.ZodOptional<z.ZodString>;
189
- }, z.core.$strip>, z.ZodObject<{
207
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
208
+ }, z.core.$strict>, z.ZodObject<{
190
209
  visible: z.ZodOptional<z.ZodBoolean>;
191
210
  opacity: z.ZodOptional<z.ZodNumber>;
211
+ blend: z.ZodOptional<z.ZodEnum<{
212
+ add: "add";
213
+ multiply: "multiply";
214
+ normal: "normal";
215
+ screen: "screen";
216
+ }>>;
192
217
  dx: z.ZodOptional<z.ZodNumber>;
193
218
  dy: z.ZodOptional<z.ZodNumber>;
194
219
  effect: z.ZodOptional<z.ZodObject<{
@@ -206,23 +231,31 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
206
231
  amplitude: z.ZodOptional<z.ZodNumber>;
207
232
  period: z.ZodOptional<z.ZodNumber>;
208
233
  phase: z.ZodOptional<z.ZodNumber>;
209
- }, z.core.$strip>>;
234
+ }, z.core.$strict>>;
210
235
  animate: z.ZodOptional<z.ZodObject<{
211
236
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
212
237
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
213
238
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
214
239
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
215
240
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
216
- }, z.core.$strip>>;
241
+ }, z.core.$strict>>;
217
242
  type: z.ZodLiteral<"circle">;
218
243
  cx: z.ZodNumber;
219
244
  cy: z.ZodNumber;
220
245
  radius: z.ZodNumber;
221
246
  color: z.ZodOptional<z.ZodString>;
222
247
  fill: z.ZodOptional<z.ZodBoolean>;
223
- }, z.core.$strip>, z.ZodObject<{
248
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
249
+ antialias: z.ZodOptional<z.ZodBoolean>;
250
+ }, z.core.$strict>, z.ZodObject<{
224
251
  visible: z.ZodOptional<z.ZodBoolean>;
225
252
  opacity: z.ZodOptional<z.ZodNumber>;
253
+ blend: z.ZodOptional<z.ZodEnum<{
254
+ add: "add";
255
+ multiply: "multiply";
256
+ normal: "normal";
257
+ screen: "screen";
258
+ }>>;
226
259
  dx: z.ZodOptional<z.ZodNumber>;
227
260
  dy: z.ZodOptional<z.ZodNumber>;
228
261
  effect: z.ZodOptional<z.ZodObject<{
@@ -240,23 +273,31 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
240
273
  amplitude: z.ZodOptional<z.ZodNumber>;
241
274
  period: z.ZodOptional<z.ZodNumber>;
242
275
  phase: z.ZodOptional<z.ZodNumber>;
243
- }, z.core.$strip>>;
276
+ }, z.core.$strict>>;
244
277
  animate: z.ZodOptional<z.ZodObject<{
245
278
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
246
279
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
247
280
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
248
281
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
249
282
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
250
- }, z.core.$strip>>;
283
+ }, z.core.$strict>>;
251
284
  type: z.ZodLiteral<"line">;
252
285
  x0: z.ZodNumber;
253
286
  y0: z.ZodNumber;
254
287
  x1: z.ZodNumber;
255
288
  y1: z.ZodNumber;
256
289
  color: z.ZodOptional<z.ZodString>;
257
- }, z.core.$strip>, z.ZodObject<{
290
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
291
+ antialias: z.ZodOptional<z.ZodBoolean>;
292
+ }, z.core.$strict>, z.ZodObject<{
258
293
  visible: z.ZodOptional<z.ZodBoolean>;
259
294
  opacity: z.ZodOptional<z.ZodNumber>;
295
+ blend: z.ZodOptional<z.ZodEnum<{
296
+ add: "add";
297
+ multiply: "multiply";
298
+ normal: "normal";
299
+ screen: "screen";
300
+ }>>;
260
301
  dx: z.ZodOptional<z.ZodNumber>;
261
302
  dy: z.ZodOptional<z.ZodNumber>;
262
303
  effect: z.ZodOptional<z.ZodObject<{
@@ -274,14 +315,13 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
274
315
  amplitude: z.ZodOptional<z.ZodNumber>;
275
316
  period: z.ZodOptional<z.ZodNumber>;
276
317
  phase: z.ZodOptional<z.ZodNumber>;
277
- }, z.core.$strip>>;
318
+ }, z.core.$strict>>;
278
319
  animate: z.ZodOptional<z.ZodObject<{
279
320
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
280
321
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
281
322
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
282
323
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
283
- color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
284
- }, z.core.$strip>>;
324
+ }, z.core.$strict>>;
285
325
  type: z.ZodLiteral<"progress">;
286
326
  x: z.ZodNumber;
287
327
  y: z.ZodNumber;
@@ -300,9 +340,15 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
300
340
  }>>;
301
341
  trackColor: z.ZodOptional<z.ZodString>;
302
342
  label: z.ZodOptional<z.ZodString>;
303
- }, z.core.$strip>, z.ZodObject<{
343
+ }, z.core.$strict>, z.ZodObject<{
304
344
  visible: z.ZodOptional<z.ZodBoolean>;
305
345
  opacity: z.ZodOptional<z.ZodNumber>;
346
+ blend: z.ZodOptional<z.ZodEnum<{
347
+ add: "add";
348
+ multiply: "multiply";
349
+ normal: "normal";
350
+ screen: "screen";
351
+ }>>;
306
352
  dx: z.ZodOptional<z.ZodNumber>;
307
353
  dy: z.ZodOptional<z.ZodNumber>;
308
354
  effect: z.ZodOptional<z.ZodObject<{
@@ -320,14 +366,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
320
366
  amplitude: z.ZodOptional<z.ZodNumber>;
321
367
  period: z.ZodOptional<z.ZodNumber>;
322
368
  phase: z.ZodOptional<z.ZodNumber>;
323
- }, z.core.$strip>>;
369
+ }, z.core.$strict>>;
324
370
  animate: z.ZodOptional<z.ZodObject<{
325
371
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
326
372
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
327
373
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
328
374
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
329
375
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
330
- }, z.core.$strip>>;
376
+ }, z.core.$strict>>;
331
377
  type: z.ZodLiteral<"sparkline">;
332
378
  x: z.ZodNumber;
333
379
  y: z.ZodNumber;
@@ -339,9 +385,15 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
339
385
  bar: "bar";
340
386
  line: "line";
341
387
  }>>;
342
- }, z.core.$strip>, z.ZodObject<{
388
+ }, z.core.$strict>, z.ZodObject<{
343
389
  visible: z.ZodOptional<z.ZodBoolean>;
344
390
  opacity: z.ZodOptional<z.ZodNumber>;
391
+ blend: z.ZodOptional<z.ZodEnum<{
392
+ add: "add";
393
+ multiply: "multiply";
394
+ normal: "normal";
395
+ screen: "screen";
396
+ }>>;
345
397
  dx: z.ZodOptional<z.ZodNumber>;
346
398
  dy: z.ZodOptional<z.ZodNumber>;
347
399
  effect: z.ZodOptional<z.ZodObject<{
@@ -359,22 +411,27 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
359
411
  amplitude: z.ZodOptional<z.ZodNumber>;
360
412
  period: z.ZodOptional<z.ZodNumber>;
361
413
  phase: z.ZodOptional<z.ZodNumber>;
362
- }, z.core.$strip>>;
414
+ }, z.core.$strict>>;
363
415
  animate: z.ZodOptional<z.ZodObject<{
364
416
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
365
417
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
366
418
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
367
419
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
368
- color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
369
- }, z.core.$strip>>;
420
+ }, z.core.$strict>>;
370
421
  type: z.ZodLiteral<"bitmap">;
371
422
  x: z.ZodNumber;
372
423
  y: z.ZodNumber;
373
424
  rows: z.ZodArray<z.ZodString>;
374
425
  palette: z.ZodArray<z.ZodString>;
375
- }, z.core.$strip>, z.ZodObject<{
426
+ }, z.core.$strict>, z.ZodObject<{
376
427
  visible: z.ZodOptional<z.ZodBoolean>;
377
428
  opacity: z.ZodOptional<z.ZodNumber>;
429
+ blend: z.ZodOptional<z.ZodEnum<{
430
+ add: "add";
431
+ multiply: "multiply";
432
+ normal: "normal";
433
+ screen: "screen";
434
+ }>>;
378
435
  dx: z.ZodOptional<z.ZodNumber>;
379
436
  dy: z.ZodOptional<z.ZodNumber>;
380
437
  effect: z.ZodOptional<z.ZodObject<{
@@ -392,23 +449,29 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
392
449
  amplitude: z.ZodOptional<z.ZodNumber>;
393
450
  period: z.ZodOptional<z.ZodNumber>;
394
451
  phase: z.ZodOptional<z.ZodNumber>;
395
- }, z.core.$strip>>;
452
+ }, z.core.$strict>>;
396
453
  animate: z.ZodOptional<z.ZodObject<{
397
454
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
398
455
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
399
456
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
400
457
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
401
458
  color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
402
- }, z.core.$strip>>;
459
+ }, z.core.$strict>>;
403
460
  type: z.ZodLiteral<"pixels">;
404
461
  data: z.ZodArray<z.ZodObject<{
405
462
  x: z.ZodNumber;
406
463
  y: z.ZodNumber;
407
464
  color: z.ZodString;
408
- }, z.core.$strip>>;
409
- }, z.core.$strip>, z.ZodObject<{
465
+ }, z.core.$strict>>;
466
+ }, z.core.$strict>, z.ZodObject<{
410
467
  visible: z.ZodOptional<z.ZodBoolean>;
411
468
  opacity: z.ZodOptional<z.ZodNumber>;
469
+ blend: z.ZodOptional<z.ZodEnum<{
470
+ add: "add";
471
+ multiply: "multiply";
472
+ normal: "normal";
473
+ screen: "screen";
474
+ }>>;
412
475
  dx: z.ZodOptional<z.ZodNumber>;
413
476
  dy: z.ZodOptional<z.ZodNumber>;
414
477
  effect: z.ZodOptional<z.ZodObject<{
@@ -426,14 +489,13 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
426
489
  amplitude: z.ZodOptional<z.ZodNumber>;
427
490
  period: z.ZodOptional<z.ZodNumber>;
428
491
  phase: z.ZodOptional<z.ZodNumber>;
429
- }, z.core.$strip>>;
492
+ }, z.core.$strict>>;
430
493
  animate: z.ZodOptional<z.ZodObject<{
431
494
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
432
495
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
433
496
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
434
497
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
435
- color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
436
- }, z.core.$strip>>;
498
+ }, z.core.$strict>>;
437
499
  type: z.ZodLiteral<"image">;
438
500
  source: z.ZodString;
439
501
  x: z.ZodOptional<z.ZodNumber>;
@@ -450,9 +512,30 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
450
512
  mitchell: "mitchell";
451
513
  nearest: "nearest";
452
514
  }>>;
453
- }, z.core.$strip>, z.ZodObject<{
515
+ finish: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
516
+ colors: z.ZodNumber;
517
+ dither: z.ZodDefault<z.ZodEnum<{
518
+ bayer4: "bayer4";
519
+ "floyd-steinberg": "floyd-steinberg";
520
+ none: "none";
521
+ }>>;
522
+ }, z.core.$strict>, z.ZodObject<{
523
+ palette: z.ZodArray<z.ZodString>;
524
+ dither: z.ZodDefault<z.ZodEnum<{
525
+ bayer4: "bayer4";
526
+ "floyd-steinberg": "floyd-steinberg";
527
+ none: "none";
528
+ }>>;
529
+ }, z.core.$strict>]>>;
530
+ }, z.core.$strict>, z.ZodObject<{
454
531
  visible: z.ZodOptional<z.ZodBoolean>;
455
532
  opacity: z.ZodOptional<z.ZodNumber>;
533
+ blend: z.ZodOptional<z.ZodEnum<{
534
+ add: "add";
535
+ multiply: "multiply";
536
+ normal: "normal";
537
+ screen: "screen";
538
+ }>>;
456
539
  dx: z.ZodOptional<z.ZodNumber>;
457
540
  dy: z.ZodOptional<z.ZodNumber>;
458
541
  effect: z.ZodOptional<z.ZodObject<{
@@ -470,14 +553,13 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
470
553
  amplitude: z.ZodOptional<z.ZodNumber>;
471
554
  period: z.ZodOptional<z.ZodNumber>;
472
555
  phase: z.ZodOptional<z.ZodNumber>;
473
- }, z.core.$strip>>;
556
+ }, z.core.$strict>>;
474
557
  animate: z.ZodOptional<z.ZodObject<{
475
558
  dx: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
476
559
  dy: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
477
560
  opacity: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>], null>>>;
478
561
  visible: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodBoolean], null>>>;
479
- color: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>], null>>>;
480
- }, z.core.$strip>>;
562
+ }, z.core.$strict>>;
481
563
  type: z.ZodLiteral<"sprite">;
482
564
  path: z.ZodString;
483
565
  cols: z.ZodNumber;
@@ -491,7 +573,7 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
491
573
  scale: z.ZodOptional<z.ZodNumber>;
492
574
  bodyColor: z.ZodOptional<z.ZodString>;
493
575
  darkColor: z.ZodOptional<z.ZodString>;
494
- }, z.core.$strip>], "type">>;
576
+ }, z.core.$strict>], "type">>;
495
577
  frames: z.ZodDefault<z.ZodNumber>;
496
578
  speed: z.ZodDefault<z.ZodNumber>;
497
579
  push: z.ZodDefault<z.ZodBoolean>;
@@ -500,7 +582,7 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
500
582
  pushed: z.ZodBoolean;
501
583
  frames: z.ZodNumber;
502
584
  layout: z.ZodArray<z.ZodObject<{
503
- element: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"background">]>;
585
+ element: z.ZodNumber;
504
586
  type: z.ZodString;
505
587
  box: z.ZodObject<{
506
588
  x: z.ZodNumber;
@@ -510,15 +592,11 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
510
592
  }, z.core.$strip>;
511
593
  fits: z.ZodBoolean;
512
594
  action: z.ZodEnum<{
513
- clipped: "clipped";
514
595
  none: "none";
515
- scrolling: "scrolling";
516
- "shrunk-to-compact": "shrunk-to-compact";
517
- truncated: "truncated";
518
- wrapped: "wrapped";
519
596
  }>;
520
597
  font: z.ZodOptional<z.ZodEnum<{
521
598
  compact: "compact";
599
+ numerals: "numerals";
522
600
  standard: "standard";
523
601
  }>>;
524
602
  scale: z.ZodOptional<z.ZodNumber>;
@@ -559,8 +637,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
559
637
  }, {
560
638
  readonly reason: "asset_not_found";
561
639
  readonly code: JsonRpcErrorCode.NotFound;
562
- readonly when: "An image or sprite path could not be read.";
563
- readonly recovery: "Verify the file path exists and is readable, or check the URL is reachable.";
640
+ readonly when: "An image source or sprite path could not be read, a sprite path was a URL, or an image URL could not be fetched.";
641
+ readonly recovery: "Pass an absolute path to an existing, readable image file, or for an image source a reachable https URL serving 10 MiB or less; sprite sheets take an absolute local path.";
642
+ readonly thrownBy: "service";
643
+ }, {
644
+ readonly reason: "invalid_image";
645
+ readonly code: JsonRpcErrorCode.InvalidParams;
646
+ readonly when: "An image source or sprite path was read but did not decode as an image.";
647
+ readonly recovery: "Each image source and sprite path must be a complete PNG, JPEG, GIF, WebP, AVIF, TIFF, or SVG image; a text file, an HTML page, or a truncated download will not decode.";
564
648
  readonly thrownBy: "service";
565
649
  }, {
566
650
  readonly reason: "invalid_color";
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-compose-scene.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-compose-scene.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAmW3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqT5B,CAAC"}
1
+ {"version":3,"file":"pixoo-compose-scene.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-compose-scene.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAie3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6T5B,CAAC"}