From b10d3581aa8f653f70d700f42bd7c2d14c4343aa Mon Sep 17 00:00:00 2001 From: hermes Date: Thu, 9 Jul 2026 19:33:11 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20bytes=20name=20shadowing=20in=20saveImag?= =?UTF-8?q?e()=20=E2=80=94=20Buffer.toString=20instead=20of=20Number.toStr?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.mjs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/server.mjs b/server.mjs index c9472eb..9631ede 100644 --- a/server.mjs +++ b/server.mjs @@ -343,7 +343,10 @@ async function saveImage({ dataUrl, model, prefix }) { const filename = `${prefix}-${safeModel}-${Date.now()}.png`; const filepath = path.join(OUTPUT_DIR, filename); await fs.writeFile(filepath, bytes); - return { filepath, filename, bytes: bytes.length }; + // Return Buffer under `bytes` (NOT Buffer.length) — the caller's + // `bytes.toString('base64')` in the inline image block needs a real Buffer, + // not a Number. `size` holds the byte length for metadata/logging. + return { filepath, filename, bytes, size: bytes.length }; } // ---------- MCP server ---------- @@ -507,11 +510,11 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => { const { dataUrl, provider, mime } = await callOpenRouter({ prompt, model, aspect, transparent, imageUrls, }); - const { filepath, filename, bytes } = await saveImage({ + const { filepath, filename, bytes, size } = await saveImage({ dataUrl, model, prefix: transparent ? 'transparent' : 'opaque', }); process.stderr.write( - `[gen] OK provider=${provider} mime=${mime} ${Date.now() - t0}ms ${filepath} ${bytes}b\n`, + `[gen] OK provider=${provider} mime=${mime} ${Date.now() - t0}ms ${filepath} ${size}b\n`, ); // Return multipart content: image inline (base64) + text metadata. // The image block lets MCP clients (Cursor, Claude Desktop, Figma) render @@ -527,7 +530,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => { refs_used: imageUrls.length, filepath, filename, - bytes, + bytes: size, latency_ms: Date.now() - t0, }; return { @@ -580,7 +583,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => { } catch (e) { process.stderr.write(`[gen-ERR] ${e.stack || e}\n`); return { - content: [{ type: 'text', text: `Error: ${e.message}\n\nStack: ${(e.stack||'').toString().slice(0, 1000)}` }], + content: [{ type: 'text', text: `Error: ${e.message}` }], isError: true, }; }