fix: bytes name shadowing in saveImage() — Buffer.toString instead of Number.toString
This commit is contained in:
1 parent
873dea0a7f
commit
b10d3581aa
1 file changed
+8
-5
+8
-5
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user