let db; export async function database(){if(db)return db;db=await new Promise((resolve,reject)=>{const r=indexedDB.open('minicpm5-studio',1);r.onupgradeneeded=()=>r.result.createObjectStore('sessions',{keyPath:'id'});r.onsuccess=()=>resolve(r.result);r.onerror=()=>reject(r.error);});return db;} export async function saveSession(session){const d=await database();const clean={...session,messages:session.messages.map(m=>({...m,artifacts:m.artifacts?.map(a=>({...a,url:undefined}))})),updatedAt:Date.now()};await new Promise((res,rej)=>{const tx=d.transaction('sessions','readwrite');tx.objectStore('sessions').put(clean);tx.oncomplete=res;tx.onerror=()=>rej(tx.error);});} export async function loadSessions(){const d=await database();return new Promise((res,rej)=>{const r=d.transaction('sessions').objectStore('sessions').getAll();r.onsuccess=()=>res(r.result.sort((a,b)=>b.updatedAt-a.updatedAt));r.onerror=()=>rej(r.error);});} export function hydrate(session){session.messages.forEach(m=>m.artifacts?.forEach(a=>{a.url=URL.createObjectURL(a.blob);}));return session;}