import fs from'node:fs';import assert from'node:assert/strict';import{pathToFileURL}from'node:url';import{transformWithOxc}from'vite';let slots=[],cursor=0;const R={createElement:(type,props,...children)=>({type,props:props??{},children}),Fragment:Symbol('fragment'),useState:initial=>{const i=cursor++;return[slots[i]===undefined?initial:slots[i],()=>{}];},useEffect(){},useRef:value=>({current:value}),useMemo:fn=>fn()};globalThis.__finalPersonnel=R;const stub='const r=globalThis.__finalPersonnel;export default r;export const useState=r.useState,useEffect=r.useEffect,useRef=r.useRef,useMemo=r.useMemo;',u='data:text/javascript;base64,'+Buffer.from(stub).toString('base64');let s=fs.readFileSync('resources/js/PersonnelWorkspace.jsx','utf8').replace(/from\s*['"]react['"]/, 'from '+JSON.stringify(u));for(const f of['workshop-stock-operation.js','statement-download.js'])s=s.replace(new RegExp('from\\s*[\'"]\\./'+f.replaceAll('.','\\.')+'[\'"]'),'from '+JSON.stringify(pathToFileURL(process.cwd()+'/resources/js/'+f).href));const c=await transformWithOxc(s,'PersonnelWorkspace.jsx',{jsx:{runtime:'classic'}}),{default:Workspace,PersonnelResult}=await import('data:text/javascript;base64,'+Buffer.from(c.code).toString('base64')),text=n=>Array.isArray(n)?n.map(text).join(''):n&&typeof n==='object'?text(n.children):String(n??''),checks=[];const worker={record_key:'QA-W',version:2,data:{input:{code:'QA-W'}}},row={id:1,record_key:'QA-E',version:2,kind:'entitlement',state:'approved',actor_id:19,created_at:'QA',reason:'Fixture',data:{input:{worker_key:'QA-W',valid_from:'2026-11-01',valid_to:'2026-12-31',minutes:960,evidence:'Fixture'},status:'active',dependencies:{worker:{code:'QA-W'}},result:{available_minutes:960,reserved_minutes:0,taken_minutes:0}},current_balance:{available_minutes:480,reserved_minutes:0,taken_minutes:480},impact:{before:{version:1,state:'prepared'},after:{version:2,state:'approved'}}};row.effective={version:2,data:row.data};slots=[worker,{kind:'entitlement',worker_key:'QA-W',page:1,per_page:25},{search:'',period:'',state:''},{records:{data:[row],current_page:1,last_page:1,total:1},capabilities:{prepare:false,review:false}},row,null,null,false,'','','',null]; const bytes=Buffer.from('\uFEFFResumo QA;8h 00min\r\n'.replace('\\uFEFF','\uFEFF')),sha=(await import('node:crypto')).createHash('sha256').update(bytes).digest('hex'),source='a'.repeat(64);row.data.artifact_sha256=source;let request,clicked=false,anchor,blob;globalThis.fetch=async(path,options)=>{request={path,options};return new Response(bytes,{headers:{'Content-Type':'text/csv; charset=utf-8','X-Content-SHA256':sha,'X-Source-SHA256':source,'X-SGF-Read-Format':'SGF-HR-READABLE-CSV-v1'}});};globalThis.document={createElement:()=>anchor={click(){clicked=true;}}};const old=URL.createObjectURL;URL.createObjectURL=value=>{blob=value;return old(value);};const tree=Workspace({api:()=>{throw Error('No business API expected');},context:{token:'fixed'}}),walk=n=>Array.isArray(n)?n.flatMap(walk):n&&typeof n==='object'?[n,...walk(n.children)]:[],button=walk(tree).find(n=>n.type==='button'&&text(n).includes('Descarregar resumo legível desta versão'));assert(button&&!button.props.disabled);checks.push('approved selected version offers readable download');await button.props.onClick();assert(clicked&&request.path==='/api/hr-personnel/readable/1'&&request.options.headers['X-SGF-Context']==='fixed'&&!request.path.includes('fixed'));checks.push('actual UI handler fetches exact version with context only in header');assert(Buffer.from(await blob.arrayBuffer()).equals(bytes)&&anchor.download==='sgf-rh-resumo-legivel-entitlement-v2.csv');checks.push('actual UI saves verified derived bytes under distinct readable filename');URL.createObjectURL=old;const root=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json')).root+'/private/receipt-composition-cc50a276c10c',file=root+'/hp-readable-ui-20261111.json';fs.writeFileSync(file,JSON.stringify({passed:true,checks,react_hooks_simulated:true,fetch_mocked:true,business_commands:0,browser_visual_review:false},null,2));console.log(JSON.stringify({passed:true,checks:checks.length,proof:file}));