@cyanheads/pixoo-mcp-server 1.0.0 → 1.1.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 (55) hide show
  1. package/AGENTS.md +51 -25
  2. package/CLAUDE.md +51 -25
  3. package/Dockerfile +16 -7
  4. package/LICENSE +1 -1
  5. package/README.md +3 -2
  6. package/changelog/1.1.x/1.1.0.md +37 -0
  7. package/changelog/template.md +60 -19
  8. package/dist/index.js +11 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.d.ts.map +1 -1
  11. package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js +2 -0
  12. package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js.map +1 -1
  13. package/dist/mcp-server/resources/definitions/pixoo-device-status.resource.d.ts +9 -1
  14. package/dist/mcp-server/resources/definitions/pixoo-device-status.resource.d.ts.map +1 -1
  15. package/dist/mcp-server/resources/definitions/pixoo-device-status.resource.js +25 -0
  16. package/dist/mcp-server/resources/definitions/pixoo-device-status.resource.js.map +1 -1
  17. package/dist/mcp-server/resources/definitions/pixoo-icons.resource.d.ts +9 -1
  18. package/dist/mcp-server/resources/definitions/pixoo-icons.resource.d.ts.map +1 -1
  19. package/dist/mcp-server/resources/definitions/pixoo-icons.resource.js +17 -0
  20. package/dist/mcp-server/resources/definitions/pixoo-icons.resource.js.map +1 -1
  21. package/dist/mcp-server/resources/definitions/pixoo-themes.resource.d.ts +23 -1
  22. package/dist/mcp-server/resources/definitions/pixoo-themes.resource.d.ts.map +1 -1
  23. package/dist/mcp-server/resources/definitions/pixoo-themes.resource.js +57 -0
  24. package/dist/mcp-server/resources/definitions/pixoo-themes.resource.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts +77 -76
  26. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js +29 -27
  28. package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js.map +1 -1
  29. package/dist/mcp-server/tools/definitions/pixoo-control-device.tool.d.ts +2 -2
  30. package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.d.ts +3 -3
  31. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts +17 -21
  32. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js +5 -14
  34. package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.d.ts +2 -2
  36. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts +2 -6
  37. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js +13 -42
  39. package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js.map +1 -1
  40. package/dist/renderer/keyframes.js.map +1 -1
  41. package/dist/renderer/remote-image.d.ts +21 -0
  42. package/dist/renderer/remote-image.d.ts.map +1 -0
  43. package/dist/renderer/remote-image.js +64 -0
  44. package/dist/renderer/remote-image.js.map +1 -0
  45. package/dist/renderer/scene-renderer.d.ts +9 -3
  46. package/dist/renderer/scene-renderer.d.ts.map +1 -1
  47. package/dist/renderer/scene-renderer.js +16 -33
  48. package/dist/renderer/scene-renderer.js.map +1 -1
  49. package/dist/renderer/text-engine.js.map +1 -1
  50. package/dist/services/pixoo/pixoo-service.d.ts.map +1 -1
  51. package/dist/services/pixoo/pixoo-service.js +2 -2
  52. package/dist/services/pixoo/pixoo-service.js.map +1 -1
  53. package/package.json +14 -12
  54. package/server.json +3 -3
  55. package/dist/pixoo-mcp-server.mcpb +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-device-status.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-device-status.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAIrD,eAAO,MAAM,yBAAyB,2GAiCpC,CAAC"}
1
+ {"version":3,"file":"pixoo-device-status.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-device-status.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAIrD,eAAO,MAAM,yBAAyB;;;;;;;;6BA2DpC,CAAC"}
@@ -11,6 +11,31 @@ export const pixooDeviceStatusResource = resource('pixoo://device/status', {
11
11
  description: 'Live snapshot of the connected Pixoo display: reachable, channel, brightness, screen state, and display size. Degrades gracefully when the device is unreachable — returns reachable: false instead of an error.',
12
12
  mimeType: 'application/json',
13
13
  params: z.object({}),
14
+ // No cacheHint: this is live device state, so every read must reach the device.
15
+ output: z.object({
16
+ reachable: z.boolean().describe('True when the device answered the status read.'),
17
+ channel: z
18
+ .string()
19
+ .optional()
20
+ .describe('Current channel name. Absent when the device is unreachable.'),
21
+ brightness: z
22
+ .number()
23
+ .optional()
24
+ .describe('Current brightness level (0–100). Absent when the device is unreachable.'),
25
+ screenOn: z
26
+ .boolean()
27
+ .optional()
28
+ .describe('True when the screen is on. Absent when the device is unreachable.'),
29
+ clockId: z
30
+ .number()
31
+ .optional()
32
+ .describe('Current clock face ID (faces channel only). Absent on other channels.'),
33
+ displaySize: z.number().describe('Configured display size in pixels (16, 32, or 64).'),
34
+ configuredIp: z
35
+ .string()
36
+ .nullable()
37
+ .describe('Configured PIXOO_IP value, or null when the server has no device configured.'),
38
+ }),
14
39
  async handler(_params, ctx) {
15
40
  const cfg = getServerConfig();
16
41
  const svc = getPixooService();
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-device-status.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-device-status.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC,uBAAuB,EAAE;IACzE,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,kNAAkN;IACpN,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAEpB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG;QACxB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,GAAG,CAAC,SAAS;YAC1B,YAAY,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;SAClC,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,uBAAuB;gBAC5B,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE,qEAAqE;aACnF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"pixoo-device-status.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-device-status.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC,uBAAuB,EAAE;IACzE,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,kNAAkN;IACpN,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,gFAAgF;IAEhF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACjF,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0EAA0E,CAAC;QACvF,QAAQ,EAAE,CAAC;aACR,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,oEAAoE,CAAC;QACjF,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;QACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACtF,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;KAC5F,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG;QACxB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,GAAG,CAAC,SAAS;YAC1B,YAAY,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;SAClC,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,uBAAuB;gBAC5B,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE,qEAAqE;aACnF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
@@ -3,5 +3,13 @@
3
3
  * @module mcp-server/resources/definitions/pixoo-icons.resource
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
- export declare const pixooIconsResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<z.ZodObject<{}, z.core.$strip>, undefined, undefined>;
6
+ export declare const pixooIconsResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
7
+ categories: z.ZodArray<z.ZodString>;
8
+ byCategory: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
9
+ icons: z.ZodArray<z.ZodObject<{
10
+ name: z.ZodString;
11
+ category: z.ZodString;
12
+ viewBox: z.ZodString;
13
+ }, z.core.$strip>>;
14
+ }, z.core.$strip>, undefined>;
7
15
  //# sourceMappingURL=pixoo-icons.resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-icons.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-icons.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGrD,eAAO,MAAM,kBAAkB,2GAoC7B,CAAC"}
1
+ {"version":3,"file":"pixoo-icons.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-icons.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGrD,eAAO,MAAM,kBAAkB;;;;;;;;6BAwD7B,CAAC"}
@@ -10,6 +10,23 @@ export const pixooIconsResource = resource('pixoo://reference/icons', {
10
10
  description: 'Built-in icon names organized by category (weather, arrows, status, media). Use icon names in pixoo_compose_scene elements with type "icon". Pass name to the icon element, or browse this resource to discover available names.',
11
11
  mimeType: 'application/json',
12
12
  params: z.object({}),
13
+ // Compile-time constants — safe for a shared cache to hold for a day.
14
+ cacheHint: { ttlMs: 86_400_000, cacheScope: 'public' },
15
+ output: z.object({
16
+ categories: z.array(z.string()).describe('Distinct icon category names.'),
17
+ byCategory: z
18
+ .record(z.string(), z.array(z.string()))
19
+ .describe('Icon names grouped by category.'),
20
+ icons: z
21
+ .array(z
22
+ .object({
23
+ name: z.string().describe('Icon name, usable as the icon element `name` argument.'),
24
+ category: z.string().describe('Category this icon belongs to.'),
25
+ viewBox: z.string().describe('SVG viewBox the icon path is drawn against.'),
26
+ })
27
+ .describe('A single registered icon.'))
28
+ .describe('Every registered icon in registry order.'),
29
+ }),
13
30
  handler(_params, _ctx) {
14
31
  const byCategory = getIconsByCategory();
15
32
  const iconList = ICON_NAMES.map((name) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-icons.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-icons.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,yBAAyB,EAAE;IACpE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,kOAAkO;IACpO,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAEpB,OAAO,CAAC,OAAO,EAAE,IAAI;QACnB,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,SAAS;gBACtC,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,WAAW;aACvC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,eAAe;YAC3B,UAAU;YACV,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,yBAAyB;gBAC9B,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE,kEAAkE;aAChF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"pixoo-icons.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-icons.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,yBAAyB,EAAE;IACpE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,kOAAkO;IACpO,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,sEAAsE;IACtE,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;IAEtD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACzE,UAAU,EAAE,CAAC;aACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACvC,QAAQ,CAAC,iCAAiC,CAAC;QAC9C,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;YACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;SAC5E,CAAC;aACD,QAAQ,CAAC,2BAA2B,CAAC,CACzC;aACA,QAAQ,CAAC,0CAA0C,CAAC;KACxD,CAAC;IAEF,OAAO,CAAC,OAAO,EAAE,IAAI;QACnB,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,SAAS;gBACtC,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,WAAW;aACvC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,eAAe;YAC3B,UAAU;YACV,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,yBAAyB;gBAC9B,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE,kEAAkE;aAChF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
@@ -3,5 +3,27 @@
3
3
  * @module mcp-server/resources/definitions/pixoo-themes.resource
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
- export declare const pixooThemesResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<z.ZodObject<{}, z.core.$strip>, undefined, undefined>;
6
+ export declare const pixooThemesResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
7
+ themes: z.ZodArray<z.ZodObject<{
8
+ name: z.ZodString;
9
+ background: z.ZodDiscriminatedUnion<[z.ZodObject<{
10
+ type: z.ZodLiteral<"gradient-v">;
11
+ from: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>]>;
12
+ to: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>]>;
13
+ }, z.core.$strip>, z.ZodObject<{
14
+ type: z.ZodLiteral<"solid">;
15
+ color: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>]>;
16
+ }, z.core.$strip>], "type">;
17
+ textPalette: z.ZodString;
18
+ accent: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>]>;
19
+ shadow: z.ZodBoolean;
20
+ }, z.core.$strip>>;
21
+ palettes: z.ZodArray<z.ZodObject<{
22
+ name: z.ZodString;
23
+ from: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>]>;
24
+ to: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodReadonly<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>]>;
25
+ }, z.core.$strip>>;
26
+ themeNames: z.ZodArray<z.ZodString>;
27
+ paletteNames: z.ZodArray<z.ZodString>;
28
+ }, z.core.$strip>, undefined>;
7
29
  //# sourceMappingURL=pixoo-themes.resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-themes.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-themes.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGrD,eAAO,MAAM,mBAAmB,2GA0C9B,CAAC"}
1
+ {"version":3,"file":"pixoo-themes.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-themes.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAmBrD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;6BAyF9B,CAAC"}
@@ -4,12 +4,69 @@
4
4
  */
5
5
  import { resource, z } from '@cyanheads/mcp-ts-core';
6
6
  import { PALETTE_NAMES, PALETTES, THEME_NAMES, THEMES } from '../../../renderer/themes.js';
7
+ /** Mirrors the toolkit's `ColorLike` union: hex/named string, packed integer, or RGB triple. */
8
+ const ColorValueSchema = z
9
+ .union([
10
+ z.string().describe('CSS hex string (#RRGGBB) or a named color.'),
11
+ z.number().describe('Packed 24-bit RGB integer.'),
12
+ z
13
+ .tuple([
14
+ z.number().describe('Red channel 0–255.'),
15
+ z.number().describe('Green channel 0–255.'),
16
+ z.number().describe('Blue channel 0–255.'),
17
+ ])
18
+ .readonly()
19
+ .describe('Explicit RGB channel triple.'),
20
+ ])
21
+ .describe('A resolvable color value.');
7
22
  export const pixooThemesResource = resource('pixoo://reference/themes', {
8
23
  name: 'themes',
9
24
  title: 'Pixoo Themes & Palettes',
10
25
  description: 'Theme and palette registry with background gradients, default text palettes, accent colors, and swatch values. Use theme names in pixoo_display_text and pixoo_compose_scene.',
11
26
  mimeType: 'application/json',
12
27
  params: z.object({}),
28
+ // Compile-time constants — safe for a shared cache to hold for a day.
29
+ cacheHint: { ttlMs: 86_400_000, cacheScope: 'public' },
30
+ output: z.object({
31
+ themes: z
32
+ .array(z
33
+ .object({
34
+ name: z.string().describe('Theme name, usable as the `theme` argument.'),
35
+ background: z
36
+ .discriminatedUnion('type', [
37
+ z
38
+ .object({
39
+ type: z.literal('gradient-v').describe('Vertical gradient background.'),
40
+ from: ColorValueSchema.describe('Gradient start color (top).'),
41
+ to: ColorValueSchema.describe('Gradient end color (bottom).'),
42
+ })
43
+ .describe('Vertical gradient background.'),
44
+ z
45
+ .object({
46
+ type: z.literal('solid').describe('Solid fill background.'),
47
+ color: ColorValueSchema.describe('Fill color.'),
48
+ })
49
+ .describe('Solid background.'),
50
+ ])
51
+ .describe('Background fill applied by the theme.'),
52
+ textPalette: z.string().describe('Default text palette name for this theme.'),
53
+ accent: ColorValueSchema.describe('Accent color for icons and highlights.'),
54
+ shadow: z.boolean().describe('True when the theme enables a text drop shadow.'),
55
+ })
56
+ .describe('A named scene theme.'))
57
+ .describe('All registered themes with background, palette, and accent settings.'),
58
+ palettes: z
59
+ .array(z
60
+ .object({
61
+ name: z.string().describe('Palette name, usable as the `palette` argument.'),
62
+ from: ColorValueSchema.describe('Ramp start color (top).'),
63
+ to: ColorValueSchema.describe('Ramp end color (bottom).'),
64
+ })
65
+ .describe('A named vertical color ramp.'))
66
+ .describe('All registered palettes as gradient stop pairs.'),
67
+ themeNames: z.array(z.string()).describe('Theme names in registry order.'),
68
+ paletteNames: z.array(z.string()).describe('Palette names in registry order.'),
69
+ }),
13
70
  handler(_params, _ctx) {
14
71
  const themes = Object.entries(THEMES).map(([name, def]) => ({
15
72
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-themes.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-themes.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,0BAA0B,EAAE;IACtE,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,+KAA+K;IACjL,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAEpB,OAAO,CAAC,OAAO,EAAE,IAAI;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,IAAI;YACJ,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,MAAM;YACN,QAAQ;YACR,UAAU,EAAE,WAAW;YACvB,YAAY,EAAE,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EACT,iFAAiF;aACpF;SACF;KACF,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"pixoo-themes.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pixoo-themes.resource.ts"],"names":[],"mappings":"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"}
@@ -8,22 +8,22 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
8
8
  background: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
9
9
  gradient: z.ZodObject<{
10
10
  type: z.ZodEnum<{
11
- v: "v";
12
11
  h: "h";
13
12
  r: "r";
13
+ v: "v";
14
14
  }>;
15
15
  from: z.ZodString;
16
16
  to: z.ZodString;
17
17
  }, z.core.$strip>;
18
18
  }, z.core.$strip>, z.ZodObject<{
19
19
  theme: z.ZodEnum<{
20
+ claude: "claude";
20
21
  ember: "ember";
22
+ forest: "forest";
21
23
  ice: "ice";
22
- neon: "neon";
23
- claude: "claude";
24
- mono: "mono";
25
24
  midnight: "midnight";
26
- forest: "forest";
25
+ mono: "mono";
26
+ neon: "neon";
27
27
  }>;
28
28
  }, z.core.$strip>]>;
29
29
  elements: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -34,14 +34,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
34
34
  effect: z.ZodOptional<z.ZodObject<{
35
35
  name: z.ZodEnum<{
36
36
  blink: "blink";
37
+ drift: "drift";
38
+ "fade-in": "fade-in";
39
+ "fade-out": "fade-out";
37
40
  float: "float";
41
+ pulse: "pulse";
38
42
  "scroll-left": "scroll-left";
39
43
  "scroll-right": "scroll-right";
40
- pulse: "pulse";
41
44
  twinkle: "twinkle";
42
- drift: "drift";
43
- "fade-in": "fade-in";
44
- "fade-out": "fade-out";
45
45
  }>;
46
46
  amplitude: z.ZodOptional<z.ZodNumber>;
47
47
  period: z.ZodOptional<z.ZodNumber>;
@@ -51,29 +51,29 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
51
51
  type: z.ZodLiteral<"text">;
52
52
  text: z.ZodString;
53
53
  x: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
54
- left: "left";
55
54
  center: "center";
55
+ left: "left";
56
56
  right: "right";
57
57
  }>]>>;
58
58
  y: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
59
+ bottom: "bottom";
59
60
  center: "center";
60
61
  top: "top";
61
- bottom: "bottom";
62
62
  }>]>>;
63
63
  color: z.ZodOptional<z.ZodString>;
64
64
  font: z.ZodOptional<z.ZodEnum<{
65
- standard: "standard";
66
65
  compact: "compact";
66
+ standard: "standard";
67
67
  }>>;
68
68
  style: z.ZodOptional<z.ZodObject<{
69
69
  palette: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
70
+ claude: "claude";
70
71
  ember: "ember";
71
- ice: "ice";
72
- neon: "neon";
73
72
  fire: "fire";
73
+ ice: "ice";
74
74
  lavender: "lavender";
75
- claude: "claude";
76
75
  mono: "mono";
76
+ neon: "neon";
77
77
  }>, z.ZodObject<{
78
78
  from: z.ZodString;
79
79
  to: z.ZodString;
@@ -91,14 +91,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
91
91
  effect: z.ZodOptional<z.ZodObject<{
92
92
  name: z.ZodEnum<{
93
93
  blink: "blink";
94
+ drift: "drift";
95
+ "fade-in": "fade-in";
96
+ "fade-out": "fade-out";
94
97
  float: "float";
98
+ pulse: "pulse";
95
99
  "scroll-left": "scroll-left";
96
100
  "scroll-right": "scroll-right";
97
- pulse: "pulse";
98
101
  twinkle: "twinkle";
99
- drift: "drift";
100
- "fade-in": "fade-in";
101
- "fade-out": "fade-out";
102
102
  }>;
103
103
  amplitude: z.ZodOptional<z.ZodNumber>;
104
104
  period: z.ZodOptional<z.ZodNumber>;
@@ -110,26 +110,26 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
110
110
  d: z.ZodOptional<z.ZodString>;
111
111
  viewBox: z.ZodOptional<z.ZodString>;
112
112
  x: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
113
- left: "left";
114
113
  center: "center";
114
+ left: "left";
115
115
  right: "right";
116
116
  }>]>>;
117
117
  y: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
118
+ bottom: "bottom";
118
119
  center: "center";
119
120
  top: "top";
120
- bottom: "bottom";
121
121
  }>]>>;
122
122
  w: z.ZodOptional<z.ZodNumber>;
123
123
  h: z.ZodOptional<z.ZodNumber>;
124
124
  color: z.ZodOptional<z.ZodString>;
125
125
  palette: z.ZodOptional<z.ZodEnum<{
126
+ claude: "claude";
126
127
  ember: "ember";
127
- ice: "ice";
128
- neon: "neon";
129
128
  fire: "fire";
129
+ ice: "ice";
130
130
  lavender: "lavender";
131
- claude: "claude";
132
131
  mono: "mono";
132
+ neon: "neon";
133
133
  }>>;
134
134
  }, z.core.$strip>, z.ZodObject<{
135
135
  visible: z.ZodOptional<z.ZodBoolean>;
@@ -139,14 +139,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
139
139
  effect: z.ZodOptional<z.ZodObject<{
140
140
  name: z.ZodEnum<{
141
141
  blink: "blink";
142
+ drift: "drift";
143
+ "fade-in": "fade-in";
144
+ "fade-out": "fade-out";
142
145
  float: "float";
146
+ pulse: "pulse";
143
147
  "scroll-left": "scroll-left";
144
148
  "scroll-right": "scroll-right";
145
- pulse: "pulse";
146
149
  twinkle: "twinkle";
147
- drift: "drift";
148
- "fade-in": "fade-in";
149
- "fade-out": "fade-out";
150
150
  }>;
151
151
  amplitude: z.ZodOptional<z.ZodNumber>;
152
152
  period: z.ZodOptional<z.ZodNumber>;
@@ -161,8 +161,8 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
161
161
  color: z.ZodOptional<z.ZodString>;
162
162
  gradient: z.ZodOptional<z.ZodObject<{
163
163
  type: z.ZodEnum<{
164
- v: "v";
165
164
  h: "h";
165
+ v: "v";
166
166
  }>;
167
167
  from: z.ZodString;
168
168
  to: z.ZodString;
@@ -176,14 +176,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
176
176
  effect: z.ZodOptional<z.ZodObject<{
177
177
  name: z.ZodEnum<{
178
178
  blink: "blink";
179
+ drift: "drift";
180
+ "fade-in": "fade-in";
181
+ "fade-out": "fade-out";
179
182
  float: "float";
183
+ pulse: "pulse";
180
184
  "scroll-left": "scroll-left";
181
185
  "scroll-right": "scroll-right";
182
- pulse: "pulse";
183
186
  twinkle: "twinkle";
184
- drift: "drift";
185
- "fade-in": "fade-in";
186
- "fade-out": "fade-out";
187
187
  }>;
188
188
  amplitude: z.ZodOptional<z.ZodNumber>;
189
189
  period: z.ZodOptional<z.ZodNumber>;
@@ -204,14 +204,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
204
204
  effect: z.ZodOptional<z.ZodObject<{
205
205
  name: z.ZodEnum<{
206
206
  blink: "blink";
207
+ drift: "drift";
208
+ "fade-in": "fade-in";
209
+ "fade-out": "fade-out";
207
210
  float: "float";
211
+ pulse: "pulse";
208
212
  "scroll-left": "scroll-left";
209
213
  "scroll-right": "scroll-right";
210
- pulse: "pulse";
211
214
  twinkle: "twinkle";
212
- drift: "drift";
213
- "fade-in": "fade-in";
214
- "fade-out": "fade-out";
215
215
  }>;
216
216
  amplitude: z.ZodOptional<z.ZodNumber>;
217
217
  period: z.ZodOptional<z.ZodNumber>;
@@ -232,14 +232,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
232
232
  effect: z.ZodOptional<z.ZodObject<{
233
233
  name: z.ZodEnum<{
234
234
  blink: "blink";
235
+ drift: "drift";
236
+ "fade-in": "fade-in";
237
+ "fade-out": "fade-out";
235
238
  float: "float";
239
+ pulse: "pulse";
236
240
  "scroll-left": "scroll-left";
237
241
  "scroll-right": "scroll-right";
238
- pulse: "pulse";
239
242
  twinkle: "twinkle";
240
- drift: "drift";
241
- "fade-in": "fade-in";
242
- "fade-out": "fade-out";
243
243
  }>;
244
244
  amplitude: z.ZodOptional<z.ZodNumber>;
245
245
  period: z.ZodOptional<z.ZodNumber>;
@@ -254,13 +254,13 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
254
254
  value: z.ZodNumber;
255
255
  max: z.ZodNumber;
256
256
  palette: z.ZodOptional<z.ZodEnum<{
257
+ claude: "claude";
257
258
  ember: "ember";
258
- ice: "ice";
259
- neon: "neon";
260
259
  fire: "fire";
260
+ ice: "ice";
261
261
  lavender: "lavender";
262
- claude: "claude";
263
262
  mono: "mono";
263
+ neon: "neon";
264
264
  }>>;
265
265
  trackColor: z.ZodOptional<z.ZodString>;
266
266
  label: z.ZodOptional<z.ZodString>;
@@ -272,14 +272,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
272
272
  effect: z.ZodOptional<z.ZodObject<{
273
273
  name: z.ZodEnum<{
274
274
  blink: "blink";
275
+ drift: "drift";
276
+ "fade-in": "fade-in";
277
+ "fade-out": "fade-out";
275
278
  float: "float";
279
+ pulse: "pulse";
276
280
  "scroll-left": "scroll-left";
277
281
  "scroll-right": "scroll-right";
278
- pulse: "pulse";
279
282
  twinkle: "twinkle";
280
- drift: "drift";
281
- "fade-in": "fade-in";
282
- "fade-out": "fade-out";
283
283
  }>;
284
284
  amplitude: z.ZodOptional<z.ZodNumber>;
285
285
  period: z.ZodOptional<z.ZodNumber>;
@@ -294,8 +294,8 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
294
294
  data: z.ZodArray<z.ZodNumber>;
295
295
  color: z.ZodOptional<z.ZodString>;
296
296
  kind: z.ZodOptional<z.ZodEnum<{
297
- line: "line";
298
297
  bar: "bar";
298
+ line: "line";
299
299
  }>>;
300
300
  }, z.core.$strip>, z.ZodObject<{
301
301
  visible: z.ZodOptional<z.ZodBoolean>;
@@ -305,14 +305,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
305
305
  effect: z.ZodOptional<z.ZodObject<{
306
306
  name: z.ZodEnum<{
307
307
  blink: "blink";
308
+ drift: "drift";
309
+ "fade-in": "fade-in";
310
+ "fade-out": "fade-out";
308
311
  float: "float";
312
+ pulse: "pulse";
309
313
  "scroll-left": "scroll-left";
310
314
  "scroll-right": "scroll-right";
311
- pulse: "pulse";
312
315
  twinkle: "twinkle";
313
- drift: "drift";
314
- "fade-in": "fade-in";
315
- "fade-out": "fade-out";
316
316
  }>;
317
317
  amplitude: z.ZodOptional<z.ZodNumber>;
318
318
  period: z.ZodOptional<z.ZodNumber>;
@@ -332,14 +332,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
332
332
  effect: z.ZodOptional<z.ZodObject<{
333
333
  name: z.ZodEnum<{
334
334
  blink: "blink";
335
+ drift: "drift";
336
+ "fade-in": "fade-in";
337
+ "fade-out": "fade-out";
335
338
  float: "float";
339
+ pulse: "pulse";
336
340
  "scroll-left": "scroll-left";
337
341
  "scroll-right": "scroll-right";
338
- pulse: "pulse";
339
342
  twinkle: "twinkle";
340
- drift: "drift";
341
- "fade-in": "fade-in";
342
- "fade-out": "fade-out";
343
343
  }>;
344
344
  amplitude: z.ZodOptional<z.ZodNumber>;
345
345
  period: z.ZodOptional<z.ZodNumber>;
@@ -360,14 +360,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
360
360
  effect: z.ZodOptional<z.ZodObject<{
361
361
  name: z.ZodEnum<{
362
362
  blink: "blink";
363
+ drift: "drift";
364
+ "fade-in": "fade-in";
365
+ "fade-out": "fade-out";
363
366
  float: "float";
367
+ pulse: "pulse";
364
368
  "scroll-left": "scroll-left";
365
369
  "scroll-right": "scroll-right";
366
- pulse: "pulse";
367
370
  twinkle: "twinkle";
368
- drift: "drift";
369
- "fade-in": "fade-in";
370
- "fade-out": "fade-out";
371
371
  }>;
372
372
  amplitude: z.ZodOptional<z.ZodNumber>;
373
373
  period: z.ZodOptional<z.ZodNumber>;
@@ -381,14 +381,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
381
381
  w: z.ZodOptional<z.ZodNumber>;
382
382
  h: z.ZodOptional<z.ZodNumber>;
383
383
  fit: z.ZodOptional<z.ZodEnum<{
384
- fill: "fill";
385
384
  contain: "contain";
386
385
  cover: "cover";
386
+ fill: "fill";
387
387
  }>>;
388
388
  kernel: z.ZodOptional<z.ZodEnum<{
389
- nearest: "nearest";
390
389
  lanczos3: "lanczos3";
391
390
  mitchell: "mitchell";
391
+ nearest: "nearest";
392
392
  }>>;
393
393
  }, z.core.$strip>, z.ZodObject<{
394
394
  visible: z.ZodOptional<z.ZodBoolean>;
@@ -398,14 +398,14 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
398
398
  effect: z.ZodOptional<z.ZodObject<{
399
399
  name: z.ZodEnum<{
400
400
  blink: "blink";
401
+ drift: "drift";
402
+ "fade-in": "fade-in";
403
+ "fade-out": "fade-out";
401
404
  float: "float";
405
+ pulse: "pulse";
402
406
  "scroll-left": "scroll-left";
403
407
  "scroll-right": "scroll-right";
404
- pulse: "pulse";
405
408
  twinkle: "twinkle";
406
- drift: "drift";
407
- "fade-in": "fade-in";
408
- "fade-out": "fade-out";
409
409
  }>;
410
410
  amplitude: z.ZodOptional<z.ZodNumber>;
411
411
  period: z.ZodOptional<z.ZodNumber>;
@@ -417,8 +417,8 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
417
417
  cols: z.ZodNumber;
418
418
  rows: z.ZodNumber;
419
419
  x: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
420
- left: "left";
421
420
  center: "center";
421
+ left: "left";
422
422
  right: "right";
423
423
  }>]>>;
424
424
  y: z.ZodOptional<z.ZodNumber>;
@@ -432,10 +432,6 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
432
432
  output: z.ZodOptional<z.ZodString>;
433
433
  }, z.core.$strip>, z.ZodObject<{
434
434
  pushed: z.ZodBoolean;
435
- previewData: z.ZodOptional<z.ZodString>;
436
- previewMimeType: z.ZodOptional<z.ZodEnum<{
437
- "image/png": "image/png";
438
- }>>;
439
435
  frames: z.ZodNumber;
440
436
  layout: z.ZodArray<z.ZodObject<{
441
437
  element: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"background">]>;
@@ -448,16 +444,16 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
448
444
  }, z.core.$strip>;
449
445
  fits: z.ZodBoolean;
450
446
  action: z.ZodEnum<{
447
+ clipped: "clipped";
451
448
  none: "none";
452
- "shrunk-to-compact": "shrunk-to-compact";
453
449
  scrolling: "scrolling";
454
- wrapped: "wrapped";
450
+ "shrunk-to-compact": "shrunk-to-compact";
455
451
  truncated: "truncated";
456
- clipped: "clipped";
452
+ wrapped: "wrapped";
457
453
  }>;
458
454
  font: z.ZodOptional<z.ZodEnum<{
459
- standard: "standard";
460
455
  compact: "compact";
456
+ standard: "standard";
461
457
  }>>;
462
458
  scale: z.ZodOptional<z.ZodNumber>;
463
459
  }, z.core.$strip>>;
@@ -500,6 +496,11 @@ export declare const pixooComposeScene: import("@cyanheads/mcp-ts-core").ToolDef
500
496
  readonly code: JsonRpcErrorCode.InvalidParams;
501
497
  readonly when: "Icon name not found in the registry.";
502
498
  readonly recovery: "Check pixoo://reference/icons for available icon names and categories.";
499
+ }, {
500
+ readonly reason: "invalid_output_path";
501
+ readonly code: JsonRpcErrorCode.InvalidParams;
502
+ readonly when: "The output path is relative or contains traversal segments.";
503
+ readonly recovery: "Pass an absolute, already-normalized path (for example /tmp/scene.png), or omit output to use PIXOO_OUTPUT_DIR.";
503
504
  }], {
504
505
  readonly notice: z.ZodOptional<z.ZodString>;
505
506
  }>;
@@ -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,EAAiB,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAmT1F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwS5B,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;AAmT3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiT5B,CAAC"}