@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.
- package/AGENTS.md +17 -10
- package/CLAUDE.md +17 -10
- package/Dockerfile +63 -46
- package/README.md +16 -12
- package/changelog/1.2.x/1.2.2.md +40 -0
- package/changelog/1.3.x/1.3.0.md +35 -0
- package/dist/config/server-config.d.ts +1 -1
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +6 -1
- package/dist/config/server-config.js.map +1 -1
- package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js +4 -1
- package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js.map +1 -1
- package/dist/mcp-server/tools/asset-source-schema.d.ts +13 -0
- package/dist/mcp-server/tools/asset-source-schema.d.ts.map +1 -0
- package/dist/mcp-server/tools/asset-source-schema.js +25 -0
- package/dist/mcp-server/tools/asset-source-schema.js.map +1 -0
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts +139 -55
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js +182 -79
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.js +14 -6
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-discover-devices.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-discover-devices.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-discover-devices.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts +8 -9
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js +50 -29
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.js +1 -3
- package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts +30 -1
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js +106 -28
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js.map +1 -1
- package/dist/mcp-server/tools/finish-schema.d.ts +28 -0
- package/dist/mcp-server/tools/finish-schema.d.ts.map +1 -0
- package/dist/mcp-server/tools/finish-schema.js +42 -0
- package/dist/mcp-server/tools/finish-schema.js.map +1 -0
- package/dist/renderer/finish.d.ts +34 -0
- package/dist/renderer/finish.d.ts.map +1 -0
- package/dist/renderer/finish.js +62 -0
- package/dist/renderer/finish.js.map +1 -0
- package/dist/renderer/keyframes.d.ts +5 -1
- package/dist/renderer/keyframes.d.ts.map +1 -1
- package/dist/renderer/keyframes.js +16 -2
- package/dist/renderer/keyframes.js.map +1 -1
- package/dist/renderer/remote-image.d.ts +9 -7
- package/dist/renderer/remote-image.d.ts.map +1 -1
- package/dist/renderer/remote-image.js +15 -23
- package/dist/renderer/remote-image.js.map +1 -1
- package/dist/renderer/scene-renderer.d.ts +59 -14
- package/dist/renderer/scene-renderer.d.ts.map +1 -1
- package/dist/renderer/scene-renderer.js +204 -66
- package/dist/renderer/scene-renderer.js.map +1 -1
- package/dist/renderer/text-engine.d.ts +40 -11
- package/dist/renderer/text-engine.d.ts.map +1 -1
- package/dist/renderer/text-engine.js +75 -40
- package/dist/renderer/text-engine.js.map +1 -1
- package/dist/services/pixoo/pixoo-service.d.ts.map +1 -1
- package/dist/services/pixoo/pixoo-service.js +9 -33
- package/dist/services/pixoo/pixoo-service.js.map +1 -1
- package/package.json +3 -3
- package/server.json +3 -3
|
@@ -2,8 +2,64 @@
|
|
|
2
2
|
* @fileoverview Styled text engine: gradient ramps, shadow, outline, scale, overflow handling.
|
|
3
3
|
* @module renderer/text-engine
|
|
4
4
|
*/
|
|
5
|
-
import { Canvas, drawText, FONT_3x5, FONT_5x7, lerpColor, measureText, resolveColor, } from '@cyanheads/pixoo-toolkit';
|
|
5
|
+
import { Canvas, drawText, FONT_3x5, FONT_5x7, FONT_DIGITS_11x18, lerpColor, measureText, resolveColor, } from '@cyanheads/pixoo-toolkit';
|
|
6
6
|
import { PALETTES } from './themes.js';
|
|
7
|
+
/** Font variants a text surface accepts. */
|
|
8
|
+
export const FONT_VARIANTS = ['standard', 'compact', 'numerals'];
|
|
9
|
+
/**
|
|
10
|
+
* The toolkit face each variant draws with. `standard` (5×7) and `compact` (3×5) hold
|
|
11
|
+
* printable ASCII plus `° ← ↑ → ↓ ▲ ▼ ♥ · …`; `numerals` holds 11×18 digits on one
|
|
12
|
+
* 13-pixel advance plus space and `: . - + / % ° ?`.
|
|
13
|
+
*/
|
|
14
|
+
export const FONT_FACES = {
|
|
15
|
+
standard: FONT_5x7,
|
|
16
|
+
compact: FONT_3x5,
|
|
17
|
+
numerals: FONT_DIGITS_11x18,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* The characters of `text` that `face` has no glyph for, each once, in order of first
|
|
21
|
+
* appearance. The face draws every one of them as its `?`.
|
|
22
|
+
*/
|
|
23
|
+
export function missingGlyphs(text, face) {
|
|
24
|
+
const missing = new Set();
|
|
25
|
+
for (const ch of text) {
|
|
26
|
+
if (!Object.hasOwn(face.glyphs, ch))
|
|
27
|
+
missing.add(ch);
|
|
28
|
+
}
|
|
29
|
+
return [...missing];
|
|
30
|
+
}
|
|
31
|
+
/** Names the `missing` characters and the characters the numerals face does draw. */
|
|
32
|
+
export function describeMissingNumerals(missing) {
|
|
33
|
+
const named = missing.map((ch) => JSON.stringify(ch)).join(', ');
|
|
34
|
+
return `Characters not in the numerals font: ${named}. It draws 0–9, space, and : . - + / % ° ? only.`;
|
|
35
|
+
}
|
|
36
|
+
/** One character quoted, then its code point — `"€" (U+20AC)` — so an invisible one is identifiable. */
|
|
37
|
+
function nameCharacter(ch) {
|
|
38
|
+
const codePoint = ch.codePointAt(0).toString(16).toUpperCase().padStart(4, '0');
|
|
39
|
+
return `${JSON.stringify(ch)} (U+${codePoint})`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The notice naming the characters in `texts` that the standard and compact faces draw
|
|
43
|
+
* as `?`, grouped by element index, each once per element in order of first appearance;
|
|
44
|
+
* undefined when every character has a glyph. The two faces share one glyph set, so one
|
|
45
|
+
* check covers both. Numerals text never reaches here with a character outside its face,
|
|
46
|
+
* and every numerals glyph is also in that set.
|
|
47
|
+
*/
|
|
48
|
+
export function fallbackGlyphNotice(texts) {
|
|
49
|
+
const groups = texts.flatMap(({ element, text }) => {
|
|
50
|
+
const missing = missingGlyphs(text, FONT_FACES.standard);
|
|
51
|
+
return missing.length > 0
|
|
52
|
+
? [`element ${element} ${missing.map(nameCharacter).join(', ')}`]
|
|
53
|
+
: [];
|
|
54
|
+
});
|
|
55
|
+
if (groups.length === 0)
|
|
56
|
+
return;
|
|
57
|
+
return `Not in the standard and compact fonts, so drawn as "?": ${groups.join('; ')}. Those fonts draw printable ASCII plus ° ← ↑ → ↓ ▲ ▼ ♥ · … only.`;
|
|
58
|
+
}
|
|
59
|
+
/** Whether `box` lies wholly on a `width` × `height` canvas, clear of all four edges. */
|
|
60
|
+
export function boxFits(box, width, height) {
|
|
61
|
+
return box.x >= 0 && box.y >= 0 && box.x + box.w <= width && box.y + box.h <= height;
|
|
62
|
+
}
|
|
7
63
|
/** Resolve semantic x to a pixel coordinate. */
|
|
8
64
|
export function resolveX(x, contentWidth, canvasWidth, dx = 0) {
|
|
9
65
|
let px;
|
|
@@ -67,7 +123,7 @@ function getPaletteColors(palette, color, rows) {
|
|
|
67
123
|
* Returns the bounding box of the rendered text.
|
|
68
124
|
*/
|
|
69
125
|
export function drawStyledText(canvas, text, x, y, style, fontVariant = 'standard') {
|
|
70
|
-
const font = fontVariant
|
|
126
|
+
const font = FONT_FACES[fontVariant];
|
|
71
127
|
const scale = style.scale ?? 1;
|
|
72
128
|
const textOpts = { font, scale };
|
|
73
129
|
const w = measureText(text, textOpts);
|
|
@@ -125,57 +181,36 @@ export function drawStyledText(canvas, text, x, y, style, fontVariant = 'standar
|
|
|
125
181
|
return { x, y, w, h };
|
|
126
182
|
}
|
|
127
183
|
/**
|
|
128
|
-
* Render text with auto-fit logic:
|
|
184
|
+
* Render text with auto-fit logic: text too wide in the standard font falls back to
|
|
185
|
+
* compact when compact fits. Auto-fit never picks `numerals`; only a `fixedFont` does.
|
|
129
186
|
* A `fixedFont` pins the variant: the compact fallback is skipped, so text that
|
|
130
|
-
* overflows in it
|
|
131
|
-
*
|
|
187
|
+
* overflows in it overflows in that font. Scrolling is the caller's decision, so the
|
|
188
|
+
* entry's `action` is `none` or `shrunk-to-compact`.
|
|
189
|
+
* Returns the layout entry describing what was done: `fits` holds when the placed box
|
|
190
|
+
* lies wholly on the canvas.
|
|
132
191
|
*/
|
|
133
|
-
export function renderAutoFitText(canvas, text, px, py, dx, dy, style,
|
|
192
|
+
export function renderAutoFitText(canvas, text, px, py, dx, dy, style, elementIdx, fixedFont) {
|
|
134
193
|
const size = canvas.width;
|
|
135
194
|
const scale = style.scale ?? 1;
|
|
136
195
|
let fontVariant = fixedFont ?? 'standard';
|
|
137
196
|
let action = 'none';
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
let fits = textWidth <= size;
|
|
143
|
-
if (!fits && !fixedFont && (overflow === 'auto' || overflow === 'shrink')) {
|
|
144
|
-
// Try compact font
|
|
145
|
-
const compactOpts = { font: compactFont, scale };
|
|
146
|
-
const compactWidth = measureText(text, compactOpts);
|
|
147
|
-
if (compactWidth <= size) {
|
|
148
|
-
fontVariant = 'compact';
|
|
149
|
-
action = 'shrunk-to-compact';
|
|
150
|
-
fits = true;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (!fits && (overflow === 'auto' || overflow === 'scroll')) {
|
|
154
|
-
action = 'scrolling';
|
|
155
|
-
fits = false; // will scroll
|
|
197
|
+
const fitsWidth = measureText(text, { font: FONT_FACES[fontVariant], scale }) <= size;
|
|
198
|
+
if (!fitsWidth && !fixedFont && measureText(text, { font: FONT_FACES.compact, scale }) <= size) {
|
|
199
|
+
fontVariant = 'compact';
|
|
200
|
+
action = 'shrunk-to-compact';
|
|
156
201
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
fits = false;
|
|
160
|
-
}
|
|
161
|
-
const usedFont = fontVariant === 'compact' ? compactFont : font;
|
|
162
|
-
const usedOpts = { font: usedFont, scale };
|
|
163
|
-
const finalWidth = measureText(text, usedOpts);
|
|
202
|
+
const usedFont = FONT_FACES[fontVariant];
|
|
203
|
+
const finalWidth = measureText(text, { font: usedFont, scale });
|
|
164
204
|
const finalHeight = usedFont.height * scale;
|
|
165
205
|
const resolvedX = resolveX(px, finalWidth, size, dx);
|
|
166
206
|
const resolvedY = resolveY(py, finalHeight, size, dy);
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (action === 'scrolling') {
|
|
170
|
-
const scrollSpeed = 2;
|
|
171
|
-
renderX = size - ((frameIdx * scrollSpeed) % (finalWidth + size));
|
|
172
|
-
}
|
|
173
|
-
drawStyledText(canvas, text, renderX, resolvedY, style, fontVariant);
|
|
207
|
+
drawStyledText(canvas, text, resolvedX, resolvedY, style, fontVariant);
|
|
208
|
+
const box = { x: resolvedX, y: resolvedY, w: finalWidth, h: finalHeight };
|
|
174
209
|
return {
|
|
175
210
|
element: elementIdx,
|
|
176
211
|
type: 'text',
|
|
177
|
-
box
|
|
178
|
-
fits:
|
|
212
|
+
box,
|
|
213
|
+
fits: boxFits(box, size, size),
|
|
179
214
|
action,
|
|
180
215
|
font: fontVariant,
|
|
181
216
|
scale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-engine.js","sourceRoot":"","sources":["../../src/renderer/text-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"text-engine.js","sourceRoot":"","sources":["../../src/renderer/text-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixoo-service.d.ts","sourceRoot":"","sources":["../../../src/services/pixoo/pixoo-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,gBAAgB,EACrB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,0BAA0B,CAAC;AAGlC,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiBD,2DAA2D;AAC3D,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAKjG;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG;IACzD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAYA;
|
|
1
|
+
{"version":3,"file":"pixoo-service.d.ts","sourceRoot":"","sources":["../../../src/services/pixoo/pixoo-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,32 +40,19 @@ export function classifyDeviceFailure(fail) {
|
|
|
40
40
|
return { reason: 'device_unreachable', retryable: true };
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Map a PixooResult failure to the appropriate MCP error. The throw carries the reason
|
|
45
|
+
* and retryability; the framework fills in the calling tool's declared recovery.
|
|
46
|
+
*/
|
|
44
47
|
function mapFailure(fail) {
|
|
45
48
|
const { reason, retryable } = classifyDeviceFailure(fail);
|
|
46
49
|
switch (reason) {
|
|
47
50
|
case 'device_unreachable':
|
|
48
|
-
throw serviceUnavailable(`Device unreachable: ${fail.message}`, {
|
|
49
|
-
reason,
|
|
50
|
-
retryable,
|
|
51
|
-
recovery: {
|
|
52
|
-
hint: 'Check the device is powered on and on the same network. Retry in a few seconds.',
|
|
53
|
-
},
|
|
54
|
-
});
|
|
51
|
+
throw serviceUnavailable(`Device unreachable: ${fail.message}`, { reason, retryable });
|
|
55
52
|
case 'device_http_error':
|
|
56
|
-
throw serviceUnavailable(`Device HTTP error: ${fail.message}`, {
|
|
57
|
-
reason,
|
|
58
|
-
retryable,
|
|
59
|
-
recovery: {
|
|
60
|
-
hint: 'The device may be busy or rebooting; wait a few seconds and retry. If it persists, run pixoo_discover_devices to confirm PIXOO_IP points at the Pixoo.',
|
|
61
|
-
},
|
|
62
|
-
});
|
|
53
|
+
throw serviceUnavailable(`Device HTTP error: ${fail.message}`, { reason, retryable });
|
|
63
54
|
case 'device_rejected':
|
|
64
|
-
throw serviceUnavailable(`Device rejected command (error_code ${fail.deviceCode ?? '?'}): ${fail.message}`, {
|
|
65
|
-
reason,
|
|
66
|
-
deviceCode: fail.deviceCode,
|
|
67
|
-
recovery: { hint: 'Note the device error code and check the Pixoo documentation.' },
|
|
68
|
-
});
|
|
55
|
+
throw serviceUnavailable(`Device rejected command (error_code ${fail.deviceCode ?? '?'}): ${fail.message}`, { reason, deviceCode: fail.deviceCode });
|
|
69
56
|
}
|
|
70
57
|
}
|
|
71
58
|
export class PixooService {
|
|
@@ -77,12 +64,7 @@ export class PixooService {
|
|
|
77
64
|
if (!this.client) {
|
|
78
65
|
const cfg = getServerConfig();
|
|
79
66
|
if (!cfg.pixooIp) {
|
|
80
|
-
throw invalidParams('No device configured — PIXOO_IP is not set. Run pixoo_discover_devices to find your device IP.', {
|
|
81
|
-
reason: 'no_device_configured',
|
|
82
|
-
recovery: {
|
|
83
|
-
hint: 'Run pixoo_discover_devices to find the device IP, then set PIXOO_IP.',
|
|
84
|
-
},
|
|
85
|
-
});
|
|
67
|
+
throw invalidParams('No device configured — PIXOO_IP is not set. Run pixoo_discover_devices to find your device IP.', { reason: 'no_device_configured' });
|
|
86
68
|
}
|
|
87
69
|
this.client = new PixooClient(cfg.pixooIp, {
|
|
88
70
|
size: cfg.pixooSize,
|
|
@@ -240,13 +222,7 @@ export class PixooService {
|
|
|
240
222
|
return await PixooClient.discover(timeoutMs);
|
|
241
223
|
}
|
|
242
224
|
catch {
|
|
243
|
-
throw serviceUnavailable('Divoom cloud discovery endpoint unreachable — check internet connectivity.', {
|
|
244
|
-
reason: 'discovery_failed',
|
|
245
|
-
retryable: true,
|
|
246
|
-
recovery: {
|
|
247
|
-
hint: 'Ensure this server has internet access for the Divoom discovery endpoint, or set PIXOO_IP manually.',
|
|
248
|
-
},
|
|
249
|
-
});
|
|
225
|
+
throw serviceUnavailable('Divoom cloud discovery endpoint unreachable — check internet connectivity.', { reason: 'discovery_failed', retryable: true });
|
|
250
226
|
}
|
|
251
227
|
}
|
|
252
228
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixoo-service.js","sourceRoot":"","sources":["../../../src/services/pixoo/pixoo-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,EAEL,OAAO,EAEP,WAAW,GAIZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAW5D,mCAAmC;AACnC,MAAM,aAAa,GAA4B;IAC7C,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC;AAEF,MAAM,oBAAoB,GAA2B;IACnD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO;IACxB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO;IACxB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY;IAClC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;CAC3B,CAAC;AAKF,8FAA8F;AAC9F,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IAItD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO;gBACL,MAAM,EAAE,mBAAmB;gBAC3B,SAAS,EAAE,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;aACzD,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QACvC;YACE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"pixoo-service.js","sourceRoot":"","sources":["../../../src/services/pixoo/pixoo-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,EAEL,OAAO,EAEP,WAAW,GAIZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAW5D,mCAAmC;AACnC,MAAM,aAAa,GAA4B;IAC7C,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC;AAEF,MAAM,oBAAoB,GAA2B;IACnD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO;IACxB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO;IACxB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY;IAClC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;CAC3B,CAAC;AAKF,8FAA8F;AAC9F,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IAItD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO;gBACL,MAAM,EAAE,mBAAmB;gBAC3B,SAAS,EAAE,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;aACzD,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QACvC;YACE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,IAAkB;IACpC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB;YACvB,MAAM,kBAAkB,CAAC,uBAAuB,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,KAAK,mBAAmB;YACtB,MAAM,kBAAkB,CAAC,sBAAsB,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,KAAK,iBAAiB;YACpB,MAAM,kBAAkB,CACtB,uCAAuC,IAAI,CAAC,UAAU,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EACjF,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CACxC,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,OAAO,YAAY;IACf,MAAM,CAA0B;IAChC,YAAY,GAAG,CAAC,CAAC;IACjB,SAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAErD,+FAA+F;IACvF,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,aAAa,CACjB,gGAAgG,EAChG,EAAE,MAAM,EAAE,sBAAsB,EAAE,CACnC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;gBACzC,IAAI,EAAE,GAAG,CAAC,SAAsB;gBAChC,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC;aACX,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,SAAS,CAAC,GAAY;QAC1B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM,WAAW,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;YAEnF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YACnD,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;YAC5B,MAAM,QAAQ,GAAwB,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YAChF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACzE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;YAC/E,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;YACtE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,GAAY;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,aAAa,CAAC,MAAgB,EAAE,KAAa,EAAE,GAAY;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qEAAqE;IAC7D,KAAK,CAAC,SAAS,CACrB,EAA8B,EAC9B,GAAY;QAEZ,mCAAmC;QACnC,IAAI,OAAoB,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC;YAEX,2BAA2B;YAC3B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,GAAG,CAAC,sBAAsB,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/C,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;YACjE,CAAC;YAED,wBAAwB;YACxB,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAEpC,mBAAmB;YACnB,MAAM,UAAU,GAAG,MAAM,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,UAAU,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE/B,yDAAyD;YACzD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,mBAAmB,CAAC,GAAY;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,wDAAwD,EAAE;gBACxE,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,gEAAgE,EAAE;oBAChF,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,SAAS;gBACT,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBAClE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,aAAa,CAAC,UAAkB,EAAE,GAAY;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,yBAAyB;IACzB,SAAS,CAAC,EAAW,EAAE,GAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,mBAAmB;IACnB,UAAU,CAAC,WAAmB,EAAE,GAAY;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,aAAa,CACjB,oBAAoB,WAAW,oDAAoD,CACpF,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,sBAAsB;IACtB,QAAQ,CAAC,WAAmB,EAAE,GAAY;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,2BAA2B;IAC3B,QAAQ,CAAC,IAA4C,EAAE,GAAY;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,4BAA4B;IAC5B,SAAS,CAAC,EAAU,EAAE,GAAY;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,GAAY;QACnD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,kBAAkB,CACtB,4EAA4E,EAC5E,EAAE,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,gCAAgC;AAEhC,IAAI,QAAkC,CAAC;AAEvC,MAAM,UAAU,gBAAgB,CAAC,OAAkB,EAAE,QAAwB;IAC3E,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/pixoo-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"mcpName": "io.github.cyanheads/pixoo-mcp-server",
|
|
5
5
|
"description": "Render and push styled pixel art, text, dashboards, and animations to Divoom Pixoo LED displays on your local network via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"access": "public"
|
|
89
89
|
},
|
|
90
90
|
"dependencies": {
|
|
91
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
92
|
-
"@cyanheads/pixoo-toolkit": "^0.
|
|
91
|
+
"@cyanheads/mcp-ts-core": "^0.13.10",
|
|
92
|
+
"@cyanheads/pixoo-toolkit": "^0.10.0",
|
|
93
93
|
"pino-pretty": "^13.1.3",
|
|
94
94
|
"sharp": "^0.35.4",
|
|
95
95
|
"zod": "^4.6.5"
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/pixoo-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.3.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/pixoo-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "1.
|
|
16
|
+
"version": "1.3.0",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
69
69
|
"identifier": "@cyanheads/pixoo-mcp-server",
|
|
70
70
|
"runtimeHint": "bun",
|
|
71
|
-
"version": "1.
|
|
71
|
+
"version": "1.3.0",
|
|
72
72
|
"packageArguments": [
|
|
73
73
|
{
|
|
74
74
|
"type": "positional",
|