2026-03-09 21:20:57 +00:00
|
|
|
import{D as ae,E as oe,G as se,H as ie,I as k,J as re,r as m,A as C,_ as D,k as B}from"./index-BzKy-nNf.js";const ce="aiui-store",ue=1,p="conversations";let I=null;function E(){return I||(I=new Promise((e,o)=>{const r=indexedDB.open(ce,ue);r.onupgradeneeded=()=>{const d=r.result;d.objectStoreNames.contains(p)||d.createObjectStore(p,{keyPath:"id"}).createIndex("updatedAt","updatedAt",{unique:!1})},r.onsuccess=()=>e(r.result),r.onerror=()=>{I=null,o(r.error)}}),I)}async function de(e){const o=k();if(!oe()||!o)return e;const r=await se(JSON.stringify(e),o);return{id:e.id,updatedAt:e.updatedAt,encrypted:r}}async function le(e){if(!("encrypted"in e))return e;const o=k();if(!o)return null;try{const r=await ie(e.encrypted,o);return JSON.parse(r)}catch{return null}}function ve(e){return JSON.parse(JSON.stringify(ae(e)))}async function M(e){const o=await E(),r=ve(e),d=await de(r);return new Promise((u,v)=>{const f=o.transaction(p,"readwrite");f.objectStore(p).put(d),f.oncomplete=()=>u(),f.onerror=()=>v(f.error)})}async function fe(){const e=await E();return new Promise((o,r)=>{const u=e.transaction(p,"readonly").objectStore(p).index("updatedAt").getAll();u.onsuccess=async()=>{const v=new Map;for(const f of u.result){const g=await le(f);g&&v.set(g.id,g)}o(v)},u.onerror=()=>r(u.error)})}async function ge(e){const o=await E();return new Promise((r,d)=>{const u=o.transaction(p,"readwrite");u.objectStore(p).delete(e),u.oncomplete=()=>r(),u.onerror=()=>d(u.error)})}function me(){return typeof indexedDB<"u"}function _(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const o=Math.random()*16|0;return(e==="x"?o:o&3|8).toString(16)})}const A=me();let R=!1;const y=new Map,S=new Map;function h(e){if(!A)return;S.set(e.id,e);const o=y.get(e.id);o&&clearTimeout(o),y.set(e.id,setTimeout(()=>{M(e).then(()=>{S.delete(e.id)}).catch(r=>{console.warn("[chat] IDB save failed:",r)}),y.delete(e.id)},800))}function w(e){if(!A)return;S.delete(e.id);const o=y.get(e.id);o&&clearTimeout(o),y.delete(e.id),M(e).catch(r=>{console.warn("[chat] IDB save failed:",r)})}function L(){for(const[e,o]of y)clearTimeout(o),y.delete(e);for(const[e,o]of S)M(o).catch(()=>{}),S.delete(e)}typeof window<"u"&&(window.addEventListener("beforeunload",L),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&L()}));const he=re("chat",()=>{const e=m(new Map),o=m(null),r=m(!1),d=m(!1),u=localStorage.getItem("aiui-panel-side"),v=m(u??"left"),f=m(localStorage.getItem("aiui-web-search")!=="false"),g=m(localStorage.getItem("aiui-chat-collapsed")!=="false"),T=m(!1);async function j(){if(A)try{const n=await fe();if(n.size>0){e.value=n;const t=localStorage.getItem("aiui-active-conversation");o.value=t&&n.has(t)?t:[...n.keys()].pop()??null,d.value=!0,R=!0;return}}catch(n){console.warn("[chat] IDB load failed, falling back:",n)}d.value=!0,R=!0}j().then(()=>{N()}),C(o,n=>{n?localStorage.setItem("aiui-active-conversation",n):localStorage.removeItem("aiui-active-conversation")}),C(v,n=>{localStorage.setItem("aiui-panel-side",n)}),C(f,n=>{localStorage.setItem("aiui-web-search",String(n))}),C(g,n=>{localStorage.setItem("aiui-chat-collapsed",String(n))}),C([e,o],([n,t])=>{},{deep:!0});const P=B(()=>o.value?e.value.get(o.value)??null:null),V=B(()=>P.value?.messages??[]),O=B(()=>Array.from(e.value.values()).sort((n,t)=>t.updatedAt-n.updatedAt));function J(n="New Chat",t){const a=_(),s={id:a,title:n,messages:[],createdAt:Date.now(),updatedAt:Date.now(),personaId:t};return e.value.set(a,s),o.value=a,w(s),a}function U(n,t){const a=e.value.get(n);if(!a)return;const s={...t,id:_(),timestamp:Date.now()};return a.messages.push(s),a.updatedAt=Date.now(),a.messages.length===1&&t.role==="user"&&(a.title=t.content.slice(0,60)+(t.content.length>60?"...":"")),h(a),s}function q(n,t){const a=e.value.get(n);if(!a||a.messages.length===0)return;const s=a.messages[a.messages.length-1];s.content+=t,h(a)}function F(n,t,a){const s=e.value.get(n);if(!s)return;const i=s.messages.find(c=>c.id===t);i
|