fix: bytes name shadowing in saveImage() — Buffer.toString instead of Number.toString

This commit is contained in:
hermes committed 2026-07-09 19:33:11 +02:00
1 parent 873dea0a7f
commit b10d3581aa
1 file changed
+8 -5
+8 -5
View File
@@ -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,
};
}