/**
* 智能体头像批量生成(DiceBear bottts 机器人风)
* 从资源库 js/data/sources/dicebear-bottts.js 读取风格定义,
* 用确定性 seed 生成 10 套头像 SVG,输出到 output/agent-avatars/,
* 同时生成 preview.html 便于浏览器预览。
*
* 用法:node scripts/gen-agent-avatars.js
*/
'use strict';
const fs = require('fs');
const path = require('path');
const vm = require('vm');
const ROOT = path.resolve(__dirname, '..');
const OUT_DIR = path.join(ROOT, 'output', 'agent-avatars');
// —— 模拟浏览器全局:DiceBear 风格文件写入 window.HGB_Dicebear_* ——
global.window = global;
// 1) 加载 29 种 DiceBear 风格定义中的 bottts(机器人)
const styleFile = path.join(ROOT, 'js', 'data', 'sources', 'dicebear-bottts.js');
const styleSrc = fs.readFileSync(styleFile, 'utf8');
vm.runInThisContext(styleSrc, { filename: styleFile }); // 定义 window.HGB_Dicebear_bottts
// 2) 加载 DiceBear 渲染引擎(const 声明经 vm 进入全局词法绑定,与 scripts/avatar-ai-smoke.js 一致)
const engineSrc = fs.readFileSync(path.join(ROOT, 'js', 'core', 'dicebear.js'), 'utf8');
vm.runInThisContext(engineSrc, { filename: 'js/core/dicebear.js' }); // 定义 HGB_Dicebear
// 3) 从资源库 tabler 源提取「房子属性」图标(smart-home 智能家居)用于叠加徽章
const tablerFile = path.join(ROOT, 'js', 'data', 'sources', 'tabler.js');
vm.runInThisContext(fs.readFileSync(tablerFile, 'utf8'), { filename: 'tabler.js' }); // 定义 window.HGB_Source_tabler
const tablerIcons = window['HGB_Source_tabler'].icons;
const houseIcon = tablerIcons.find(x => x.id === 'tabler:smart-home') || tablerIcons.find(x => x.id === 'tabler:home');
if (!houseIcon) { console.error('❌ 资源库未找到 smart-home/home 图标'); process.exit(1); }
const houseBody = houseIcon.svg; // 形如