// Reconstruct an inert SVG from saved REA exports; never accesses WorkBuddy. import fs from 'node:fs/promises' import crypto from 'node:crypto' const exportData = JSON.parse(await fs.readFile('.tmp/rea-runtime-scripts.json', 'utf8')) const evidenceId = 'ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb' if (exportData.evidence_id !== evidenceId) throw new Error('REA runtime evidence changed') function source(file, expected) { const item = exportData.items.find(i => i.file_path?.replaceAll('\\', '/').endsWith('/' + file)) const text = item?.source?.artifact?.text if (!text || crypto.createHash('sha256').update(text).digest('hex') !== expected || item.source.artifact.sha256 !== expected) throw new Error(`REA source digest mismatch: ${file}`) return text } const contextsHash = '5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b' const iconHash = '747e41d215375e1214c366213aea7e077d85421923029c61cbb6e9562be58de0' const contexts = source('contexts-BMeWSUHk.js', contextsHash) const icons = source('src-DPDj7_qD.js', iconHash) if (!contexts.includes('pl as yo') || !contexts.includes('(yo,{className:`conversation-high-credit-approval__option-arrow`}')) throw new Error('Approval icon binding changed') if (!icons.includes('uc as pl') || !icons.includes('uc=createIcon(lc)') || !icons.includes('yn={sm:14,md:16,lg:20,xl:24}')) throw new Error('Approval icon export or wrapper default changed') const start = icons.indexOf('lc=(0,sc.forwardRef)') const end = icons.indexOf(')),lc.displayName=', start) + 2 if (start < 0 || end < start) throw new Error('Approval SVG definition is missing') const definition = icons.slice(start, end) function literal(key) { const match = definition.match(new RegExp(`${key}:\x60([^\x60]+)\x60`)) if (!match) throw new Error(`Approval SVG attribute missing: ${key}`) return JSON.stringify(match[1]) } const output = `// Generated from REA ${evidenceId}. // contexts-BMeWSUHk.js sha256 ${contextsHash}: yo -> pl -> uc -> lc. // src-DPDj7_qD.js sha256 ${iconHash}; UTF-16 [${start}, ${end}). // createIcon defaults to md=16; original approval supplies only className. export function ApprovalChevronIcon({ className }: { className?: string }) { return } ` await fs.writeFile('src/renderer/src/workbuddy/conversation/ApprovalSourceIcon.tsx', output) console.log(JSON.stringify({ evidenceId, icon: 'ApprovalChevronIcon', utf16Range: [start, end], sources: [contextsHash, iconHash] }))