import fs from 'node:fs'; import {request} from '../server/scripts/platform-client.mjs'; const schemas=(await request('GET','/schemas')).results; const names=schemas.map(x=>x.className).filter(x=>/user|agent|employee|session|member/i.test(x)); const inspect=['_User','KfSession','KfArtifact','KfProject','KfOpportunity']; const rows=await Promise.allSettled(inspect.map(async className=>{ const schema=schemas.find(x=>x.className===className); const keys=['objectId','username','name','nickname','displayName','studentName','ownerName','ownerSession','uploadedBy','uploadedByKey','agentId','agentName','sourceSession','uploadMethod','uploadedAt','stage','stageCode','projectId','projectRef','sessionRef','userRef','groupId','workshopKey','externalKey','dataMode','reportType','artifactType','meta'].filter(x=>schema?.fields[x]); const result=await request('GET','/classes/'+className+'?'+new URLSearchParams({keys:keys.join(','),limit:'1000'})); const safe=(result.results||[]).map(({meta,...x})=>({...x,...(meta?.attribution?{attribution:meta.attribution}:{})})); return{className,fields:Object.keys(schema?.fields||{}),returnedRows:safe.length,examples:safe.slice(0,className==='_User'?20:4),agents:[...new Set(safe.map(x=>x.agentName).filter(Boolean))],owners:[...new Set(safe.map(x=>x.ownerName||x.studentName).filter(Boolean))]}; })); const out={at:new Date().toISOString(),businessWrites:0,identityRelatedClasses:names,classes:rows.map((r,i)=>r.status==='fulfilled'?r.value:{className:inspect[i],error:'READ_FAILED'})}; fs.mkdirSync('work',{recursive:true});fs.writeFileSync('work/workshop-data-before.json',JSON.stringify(out,null,2)); console.log(JSON.stringify(out,null,2));