- Rebuild AIUI with guide page as default route (/ -> guide, /chat -> chat) - Content and context panels start empty - Fix App Store heading clipped by removing double md:-mt-4 negative margins Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 lines
7.5 KiB
JavaScript
2 lines
7.5 KiB
JavaScript
import{D as ae,E as oe,G as se,H as ie,I as k,J as re,r as g,A as x,_ as S,k as T}from"./index-xgP_Yxxn.js";const ce="aiui-store",ue=1,m="conversations";let C=null;function B(){return C||(C=new Promise((e,o)=>{const r=indexedDB.open(ce,ue);r.onupgradeneeded=()=>{const d=r.result;d.objectStoreNames.contains(m)||d.createObjectStore(m,{keyPath:"id"}).createIndex("updatedAt","updatedAt",{unique:!1})},r.onsuccess=()=>e(r.result),r.onerror=()=>{C=null,o(r.error)}}),C)}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 fe(e){return JSON.parse(JSON.stringify(ae(e)))}async function E(e){const o=await B(),r=fe(e),d=await de(r);return new Promise((u,l)=>{const f=o.transaction(m,"readwrite");f.objectStore(m).put(d),f.oncomplete=()=>u(),f.onerror=()=>l(f.error)})}async function ve(){const e=await B();return new Promise((o,r)=>{const u=e.transaction(m,"readonly").objectStore(m).index("updatedAt").getAll();u.onsuccess=async()=>{const l=new Map;for(const f of u.result){const v=await le(f);v&&l.set(v.id,v)}o(l)},u.onerror=()=>r(u.error)})}async function ge(e){const o=await B();return new Promise((r,d)=>{const u=o.transaction(m,"readwrite");u.objectStore(m).delete(e),u.oncomplete=()=>r(),u.onerror=()=>d(u.error)})}function me(){return typeof indexedDB<"u"}function b(){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 _=me();let R=!1;const w=new Map,y=new Map;function p(e){if(!_)return;y.set(e.id,e);const o=w.get(e.id);o&&clearTimeout(o),w.set(e.id,setTimeout(()=>{E(e).then(()=>{y.delete(e.id)}).catch(r=>{console.warn("[chat] IDB save failed:",r)}),w.delete(e.id)},800))}function h(e){if(!_)return;y.delete(e.id);const o=w.get(e.id);o&&clearTimeout(o),w.delete(e.id),E(e).catch(r=>{console.warn("[chat] IDB save failed:",r)})}function L(){for(const[e,o]of w)clearTimeout(o),w.delete(e);for(const[e,o]of y)E(o).catch(()=>{}),y.delete(e)}typeof window<"u"&&(window.addEventListener("beforeunload",L),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&L()}));const he=re("chat",()=>{const e=g(new Map),o=g(null),r=g(!1),d=g(!1),u=localStorage.getItem("aiui-panel-side"),l=g(u??"left"),f=g(localStorage.getItem("aiui-web-search")!=="false"),v=g(localStorage.getItem("aiui-chat-collapsed")!=="false"),A=g(!1);async function j(){if(_)try{const a=await ve();if(a.size>0){e.value=a;const n=localStorage.getItem("aiui-active-conversation");o.value=n&&a.has(n)?n:[...a.keys()].pop()??null,d.value=!0,R=!0;return}}catch(a){console.warn("[chat] IDB load failed, falling back:",a)}d.value=!0,R=!0}j().then(()=>{O()}),x(o,a=>{a?localStorage.setItem("aiui-active-conversation",a):localStorage.removeItem("aiui-active-conversation")}),x(l,a=>{localStorage.setItem("aiui-panel-side",a)}),x(f,a=>{localStorage.setItem("aiui-web-search",String(a))}),x(v,a=>{localStorage.setItem("aiui-chat-collapsed",String(a))}),x([e,o],([a,n])=>{},{deep:!0});const M=T(()=>o.value?e.value.get(o.value)??null:null),V=T(()=>M.value?.messages??[]),P=T(()=>Array.from(e.value.values()).sort((a,n)=>n.updatedAt-a.updatedAt));function J(a="New Chat",n){const t=b(),s={id:t,title:a,messages:[],createdAt:Date.now(),updatedAt:Date.now(),personaId:n};return e.value.set(t,s),o.value=t,h(s),t}function U(a,n){const t=e.value.get(a);if(!t)return;const s={...n,id:b(),timestamp:Date.now()};return t.messages.push(s),t.updatedAt=Date.now(),t.messages.length===1&&n.role==="user"&&(t.title=n.content.slice(0,60)+(n.content.length>60?"...":"")),p(t),s}function q(a,n){const t=e.value.get(a);if(!t||t.messages.length===0)return;const s=t.messages[t.messages.length-1];s.content+=n,p(t)}function F(a,n,t){const s=e.value.get(a);if(!s)return;const i=s.messages.find(c=>c.id===n);i&&(i.webResults=t,p(s))}function H(a,n,t){const s=e.value.get(a);if(!s)return;const i=s.messages.find(c=>c.id===n);i&&(i.feedback=t,p(s))}function $(){l.value=l.value==="right"?"left":"right"}function G(){v.value=!v.value}function z(){A.value=!A.value}function K(a){e.value.has(a)&&(o.value=a)}function W(a){if(e.value.delete(a),_&&ge(a).catch(()=>{}),y.delete(a),o.value===a){const n=P.value;o.value=n.length>0?n[0].id:null}}function Q(a,n,t){const s=e.value.get(a);if(!s)return;const i=s.messages.find(c=>c.id===n);i&&(i.content=t,i.editedAt=Date.now(),s.updatedAt=Date.now(),p(s))}function X(a,n){const t=e.value.get(a);t&&(t.messages.splice(n),t.updatedAt=Date.now(),p(t))}function Y(a,n){const t=e.value.get(a);if(!t)return null;const s=t.messages.findIndex(I=>I.id===n);if(s===-1)return null;const i=b(),c=t.messages.slice(0,s+1).map(I=>({...I,id:b(),timestamp:I.timestamp})),D=(t.childBranchIds??[]).length,N={id:i,title:`${t.title} (Branch ${D+2})`,messages:c,createdAt:Date.now(),updatedAt:Date.now(),model:t.model,systemPrompt:t.systemPrompt,parentConversationId:a,branchPoint:n};return e.value.set(i,N),h(N),t.childBranchIds||(t.childBranchIds=[]),t.childBranchIds.push(i),t.updatedAt=Date.now(),p(t),o.value=i,i}function Z(a){const n=e.value.get(a);if(!n)return[];const t=n.parentConversationId??a,s=e.value.get(t);if(!s)return[];const i=[{id:t,title:s.title,isCurrent:t===a}];for(const c of s.childBranchIds??[]){const D=e.value.get(c);D&&i.push({id:c,title:D.title,isCurrent:c===a})}return i}async function ee(){try{const{seedPromptsToConversation:a}=await S(async()=>{const{seedPromptsToConversation:s}=await import("./seedPrompts-CLWaUv28.js");return{seedPromptsToConversation:s}},[]),n=a();if(e.value.has(n.id))return o.value=n.id,0;const t=new Map(e.value);return t.set(n.id,n),e.value=t,o.value=n.id,h(n),n.messages.length/2}catch{return 0}}async function te(){try{const{nodeDemoToConversation:a}=await S(async()=>{const{nodeDemoToConversation:s}=await import("./nodeDemoPrompts-DjnuaxJP.js");return{nodeDemoToConversation:s}},[]),n=a();if(e.value.has(n.id))return o.value=n.id,0;const t=new Map(e.value);return t.set(n.id,n),e.value=t,o.value=n.id,h(n),n.messages.length/2}catch{return 0}}async function ne(){try{const{guideToConversation:a}=await S(async()=>{const{guideToConversation:s}=await import("./guideConversation-BYC5cBFP.js");return{guideToConversation:s}},[]),n=a();if(e.value.has(n.id)){o.value=n.id;return}const t=new Map(e.value);t.set(n.id,n),e.value=t,o.value=n.id,h(n)}catch{}}async function O(){if(!(e.value.has("aiui-guide")&&e.value.has("node-demo")))try{const{guideToConversation:a}=await S(async()=>{const{guideToConversation:c}=await import("./guideConversation-BYC5cBFP.js");return{guideToConversation:c}},[]),{nodeDemoToConversation:n}=await S(async()=>{const{nodeDemoToConversation:c}=await import("./nodeDemoPrompts-DjnuaxJP.js");return{nodeDemoToConversation:c}},[]),t=a(),s=n(),i=new Map(e.value);i.has(t.id)||(i.set(t.id,t),h(t)),i.has(s.id)||(i.set(s.id,s),h(s)),e.value=i}catch{}}return{conversations:e,activeConversationId:o,activeConversation:M,messages:V,conversationList:P,isStreaming:r,loaded:d,panelSide:l,webSearchEnabled:f,chatCollapsed:v,showHistory:A,createConversation:J,addMessage:U,appendToLastMessage:q,setMessageWebResults:F,setMessageFeedback:H,switchSide:$,toggleChatCollapse:G,toggleHistory:z,setActiveConversation:K,deleteConversation:W,updateMessageContent:Q,deleteMessagesAfter:X,branchFromMessage:Y,getSiblingBranches:Z,loadSeedChats:ee,loadNodeDemoChat:te,loadGuide:ne,seedDemoConversations:O}});export{he as u};
|