Files
archy-demo/demo/aiui/assets/chat-CR1al33K.js
2026-03-17 02:14:04 +00:00

2 lines
7.6 KiB
JavaScript

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&&(i.webResults=a,h(s))}function G(n,t,a){const s=e.value.get(n);if(!s)return;const i=s.messages.find(c=>c.id===t);i&&(i.feedback=a,h(s))}function H(){v.value=v.value==="right"?"left":"right"}function $(){g.value=!g.value}function z(){T.value=!T.value}function K(n){e.value.has(n)&&(o.value=n)}function W(n){if(e.value.delete(n),A&&ge(n).catch(()=>{}),S.delete(n),o.value===n){const t=O.value;o.value=t.length>0?t[0].id:null}}function Q(n,t,a){const s=e.value.get(n);if(!s)return;const i=s.messages.find(c=>c.id===t);i&&(i.content=a,i.editedAt=Date.now(),s.updatedAt=Date.now(),h(s))}function X(n,t){const a=e.value.get(n);a&&(a.messages.splice(t),a.updatedAt=Date.now(),h(a))}function Y(n,t){const a=e.value.get(n);if(!a)return null;const s=a.messages.findIndex(b=>b.id===t);if(s===-1)return null;const i=_(),c=a.messages.slice(0,s+1).map(b=>({...b,id:_(),timestamp:b.timestamp})),l=(a.childBranchIds??[]).length,x={id:i,title:`${a.title} (Branch ${l+2})`,messages:c,createdAt:Date.now(),updatedAt:Date.now(),model:a.model,systemPrompt:a.systemPrompt,parentConversationId:n,branchPoint:t};return e.value.set(i,x),w(x),a.childBranchIds||(a.childBranchIds=[]),a.childBranchIds.push(i),a.updatedAt=Date.now(),h(a),o.value=i,i}function Z(n){const t=e.value.get(n);if(!t)return[];const a=t.parentConversationId??n,s=e.value.get(a);if(!s)return[];const i=[{id:a,title:s.title,isCurrent:a===n}];for(const c of s.childBranchIds??[]){const l=e.value.get(c);l&&i.push({id:c,title:l.title,isCurrent:c===n})}return i}async function ee(){try{const{seedPromptsToConversation:n}=await D(async()=>{const{seedPromptsToConversation:s}=await import("./seedPrompts-CLWaUv28.js");return{seedPromptsToConversation:s}},[]),t=n();if(e.value.has(t.id))return o.value=t.id,0;const a=new Map(e.value);return a.set(t.id,t),e.value=a,o.value=t.id,w(t),t.messages.length/2}catch{return 0}}async function te(){try{const{nodeDemoToConversation:n}=await D(async()=>{const{nodeDemoToConversation:s}=await import("./nodeDemoPrompts-DjnuaxJP.js");return{nodeDemoToConversation:s}},[]),t=n();if(e.value.has(t.id))return o.value=t.id,0;const a=new Map(e.value);return a.set(t.id,t),e.value=a,o.value=t.id,w(t),t.messages.length/2}catch{return 0}}async function ne(){try{const{guideToConversation:n}=await D(async()=>{const{guideToConversation:s}=await import("./guideConversation-BYC5cBFP.js");return{guideToConversation:s}},[]),t=n();if(e.value.has(t.id)){o.value=t.id;return}const a=new Map(e.value);a.set(t.id,t),e.value=a,o.value=t.id,w(t)}catch{}}async function N(){const n=e.value.has("aiui-guide"),t=e.value.has("node-demo");if(n&&t){o.value||(o.value="aiui-guide");return}try{const{guideToConversation:a}=await D(async()=>{const{guideToConversation:x}=await import("./guideConversation-BYC5cBFP.js");return{guideToConversation:x}},[]),{nodeDemoToConversation:s}=await D(async()=>{const{nodeDemoToConversation:x}=await import("./nodeDemoPrompts-DjnuaxJP.js");return{nodeDemoToConversation:x}},[]),i=a(),c=s(),l=new Map(e.value);l.has(i.id)||(l.set(i.id,i),w(i)),l.has(c.id)||(l.set(c.id,c),w(c)),e.value=l,o.value||(o.value=i.id)}catch{}}return{conversations:e,activeConversationId:o,activeConversation:P,messages:V,conversationList:O,isStreaming:r,loaded:d,panelSide:v,webSearchEnabled:f,chatCollapsed:g,showHistory:T,createConversation:J,addMessage:U,appendToLastMessage:q,setMessageWebResults:F,setMessageFeedback:G,switchSide:H,toggleChatCollapse:$,toggleHistory:z,setActiveConversation:K,deleteConversation:W,updateMessageContent:Q,deleteMessagesAfter:X,branchFromMessage:Y,getSiblingBranches:Z,loadSeedChats:ee,loadNodeDemoChat:te,loadGuide:ne,seedDemoConversations:N}});export{he as u};