1let K=0,Y=[];function se(){return K+=1,()=>{if(K-=1,K===0){let e=Y;Y=[];for(let t of e)t()}}}const oe=5,D=6,U=10;let re=(e,t,n,s)=>(e.events=e.events||{},e.events[n+U]||(e.events[n+U]=s(o=>{e.events[n].reduceRight((r,a)=>(a(r),r),{shared:{},...o})})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let o=e.events[n],r=o.indexOf(t);o.splice(r,1),o.length||(delete e.events[n],e.events[n+U](),delete e.events[n+U])}),ae=1e3,ie=(e,t)=>re(e,s=>{let o=t(s);o&&e.events[D].push(o)},oe,s=>{let o=e.listen;e.listen=(...a)=>(!e.lc&&!e.active&&(e.active=!0,s()),o(...a));let r=e.off;return e.events[D]=[],e.off=()=>{r(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let a of e.events[D])a();e.events[D]=[]}},ae)},()=>{e.listen=o,e.off=r}}),$=Symbol(),le=(e,t,n,s)=>{let o={...e};o.set=(...a)=>{e[$]=t,e.set(...a),delete e[$]},e.setKey&&(o.setKey=(...a)=>{e[$]=t,e.setKey(...a),delete e[$]});let r=n(o,...s);if(r instanceof Promise){let a=se();return r.finally(a)}return r},w=(e,t,n)=>(...s)=>le(e,t,n,s),c=[],R=0,I=(e,t)=>{let n,s=[],o={lc:0,l:t||0,value:e,set(r){o.value=r,o.notify()},get(){return o.lc||o.listen(()=>{})(),o.value},notify(r){n=s;let a=!c.length;for(let i=0;i<n.length;i+=2)c.push(n[i],o.value,r,n[i+1]);if(a){R++;for(let i=0;i<c.length;i+=4){let d=!1;for(let p=i+7;p<c.length;p+=4)if(c[p]<c[i+3]){d=!0;break}d?c.push(c[i],c[i+1],c[i+2],c[i+3]):c[i](c[i+1],c[i+2])}c.length=0}},listen(r,a){return s===n&&(s=s.slice()),o.lc=s.push(r,a||o.l)/2,()=>{s===n&&(s=s.slice());let i=s.indexOf(r);~i&&(s.splice(i,2),o.lc--,o.lc||o.off())}},subscribe(r,a){let i=o.listen(r,a);return r(o.value),i},off(){}};return o},_=(e={})=>{let t=I(e);return t.setKey=function(n,s){typeof s>"u"?n in t.value&&(t.value={...t.value},delete t.value[n],t.notify(n)):t.value[n]!==s&&(t.value={...t.value,[n]:s},t.notify(n))},t},ce=(e,t)=>{Array.isArray(e)||(e=[e]);let n,s=[],o=()=>{let a=e.map(i=>i.get());(n!==R||a.some((i,d)=>i!==s[d]))&&(n=R,s=a,r.set(t(...a)))},r=I(void 0,Math.max(...e.map(a=>a.l))+1);return ie(r,()=>{let a=e.map(i=>i.listen(o,r.l));return o(),()=>{for(let i of a)i()}}),r};const ue=async e=>{const t={headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},method:"POST",body:JSON.stringify(e.body)};return fetch(`${e.baseUrl}/v1/chat/completions`,t)},de=async e=>{const t={headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},method:"POST",body:JSON.stringify(e.body)};return fetch(`${e.baseUrl}/v1/images/generations`,t)};function pe(e){let t,n,s,o,r,a,i;return d(),{feed:p,reset:d};function d(){t=!0,n="",s=0,o=-1,r=void 0,a=void 0,i=""}function p(g){n=n?n+g:g,t&&fe(n)&&(n=n.slice(q.length)),t=!1;const u=n.length;let l=0,h=!1;for(;l<u;){h&&(n[l]===` 2`&&++l,h=!1);let m=-1,y=o,f;for(let v=s;m<0&&v<u;++v)f=n[v],f===":"&&y<0?y=v-l:f==="\r"?(h=!0,m=v-l):f===` 3`&&(m=v-l);if(m<0){s=u-l,o=y;break}else s=0,o=-1;S(n,l,y,m),l+=m+1}l===u?n="":l>0&&(n=n.slice(l))}function S(g,u,l,h){if(h===0){i.length>0&&(e({type:"event",id:r,event:a||void 0,data:i.slice(0,-1)}),i="",r=void 0),a=void 0;return}const m=l<0,y=g.slice(u,u+(m?h:l));let f=0;m?f=h:g[u+l+1]===" "?f=l+2:f=l+1;const v=u+f,ne=h-f,k=g.slice(v,v+ne).toString();if(y==="data")i+=k?"".concat(k,` 4`):` 5`;else if(y==="event")a=k;else if(y==="id"&&!k.includes("\0"))r=k;else if(y==="retry"){const H=parseInt(k,10);Number.isNaN(H)||e({type:"reconnect-interval",value:H})}}}const q=[239,187,191];function fe(e){return q.every((t,n)=>e.charCodeAt(n)===t)}const ge=e=>{const t=new TextEncoder,n=new TextDecoder,s=e.body;return new ReadableStream({async start(o){const r=p=>{if(p.type==="event"){const S=p.data;if(S==="[DONE]"){o.close();return}try{const u=JSON.parse(S).choices[0].delta?.content||"",l=t.encode(u);o.enqueue(l)}catch(g){o.error(g)}}},a=s.getReader(),i=pe(r);let d=!1;for(;!d;){const{done:p,value:S}=await a.read();if(p){d=!0,o.close();return}i.feed(n.decode(S))}}})},me=async(e,t)=>X([{role:"user",content:e}],t),ye=async(e,t)=>X(e,t),ve=async(e,t)=>{const n=await de({apiKey:t.globalSettings.apiKey,baseUrl:t.globalSettings.baseUrl.trim().replace(/\/$/,""),body:{prompt:e,n:1,size:"512x512",response_format:"url"}});if(!n.ok){const r=(await n.json()).error?.message||n.statusText||"Unknown error";throw new Error(r)}return(await n.json()).data[0].url},X=async(e,t)=>{const n=await ue({apiKey:t.globalSettings.apiKey,baseUrl:t.globalSettings.baseUrl.trim().replace(/\/$/,""),body:{model:t.globalSettings.model,messages:e,temperature:t.globalSettings.temperature,max_tokens:t.globalSettings.maxTokens,top_p:t.globalSettings.topP,stream
5:!0}});if(!n.ok){const o=await n.json();console.log("responseJson",o);const r=o.error?.message||n.statusText||"Unknown error";throw new Error(r,{cause:o.error})}return n.headers.get("content-type")?.includes("text/event-stream")?ge(n):(await n.json()).choices[0].message.content},he=()=>({id:"provider-openai",icon:"i-simple-icons-openai",name:"OpenAI",globalSettings:[{key:"apiKey",name:"API Key",type:"api-key"},{key:"baseUrl",name:"Base URL",description:"Custom base url for OpenAI API.",type:"input",default:"https://api.openai.com"},{key:"model",name:"OpenAI model",description:"Custom gpt model for OpenAI API.",type:"select",options:[{value:"gpt-3.5-turbo",label:"gpt-3.5-turbo"},{value:"gpt-4",label:"gpt-4"}],default:"gpt-3.5-turbo"},{key:"maxTokens",name:"Max Tokens",description:"The maximum number of tokens to generate in the completion.",type:"slider",min:0,max:4096,default:2048,step:1},{key:"temperature",name:"Temperature",type:"slider",description:"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.",min:0,max:2,default:.7,step:.01},{key:"top_p",name:"Top P",description:"An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.",type:"slider",min:0,max:1,default:1,step:.01}],conversationSettings:[],supportConversationType:["continuous","single","image"],handleSinglePrompt:me,handleContinuousPrompt:ye,handleImagePrompt:ve}),Z=async e=>{const t={headers:{"Content-Type":"application/json",Authorization:`Token ${e.token}`},method:e.method||"GET",body:e.method==="POST"?JSON.stringify(e.body||{}):void 0};let n="https://api.replicate.com/v1/predictions";return e.predictionId&&(n+=`/${e.predictionId}`),fetch(n,t)},be=async(e,t)=>{const n=await Z({token:t.globalSettings.token,method:"POST",body:{version:t.globalSettings.version,input:{prompt:e}}});if(!n.ok){const r=(await n.json()).detail||n.statusText||"Unknown error";throw new Error(r,{cause:{code:n.status,message:r}})}const s=await n.json();return Ie(s,t.globalSettings.token)},we=e=>new Promise(t=>setTimeout(t,e)),Ie=async(e,t)=>{let n=e;for(;n.status!=="succeeded"&&n.status!=="failed";){await we(1e3);const s=await Z({predictionId:n.id,token:t});if(!s.ok){const r=(await s.json()).error?.message||"Unknown error";throw new Error(r)}e=await s.json(),n=e}if(!n.output||n.output.length===0)throw new Error("No output");return n.output[0]},Se=()=>({id:"provider-stable-diffusion",icon:"i-carbon-paint-brush",name:"Stable Diffusion",globalSettings:[{key:"token",name:"Replicate API token",type:"api-key"},{key:"version",name:"Model Version",description:"Version hash for Stable Diffusion.",type:"input",default:"db21e45d3f7023abc2a46ee38a23973f6dce16bb082a930b0c49861f96d1e5bf"}],conversationSettings:[],supportConversationType:["image"],supportCallMethod:"backend",handleImagePrompt:be}),L=[he(),Se()],B=L.map(e=>({id:e.id,name:e.name,icon:e.icon,supportConversationType:e.supportConversationType})),Ve=L.map(e=>({id:e.id,icon:e.icon,name:e.name,settingsUI:e.globalSettings})),ke=e=>L.find(t=>t.id===e);function b(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function E(e,t){const n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);const s=b(n);return(o,r)=>s.then(a=>r(a.transaction(t,o).objectStore(t)))}let j;function x(){return j||(j=E("keyval-store","keyval")),j}function G(e,t=x()){return t("readonly",n=>b(n.get(e)))}function z(e,t,n=x()){return n("readwrite",s=>(s.put(t,e),b(s.transaction)))}function F(e,t,n=x()){return n("readwrite",s=>new Promise((o,r)=>{s.get(e).onsuccess=function(){try{s.put(t(this.result),e),o(b(s.transaction))}catch(a){r(a)}}}))}function Q(e,t=x()){return t("readwrite",n=>(n.delete(e),b(n.transaction)))}function Te(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},b(e.transaction)}function V(e=x()){return e("readonly",t=>{if(t.getAll&&t.getAllKeys)return Promise.all([b(t.getAllKeys()),b(t.getAll())]).then(([s,o])=>s.map((r,a)=>[r,o[a]]));const n=[];return e("readonly",s=>Te(s,o=>n.push([o.key,o.value])).then(()=>n))})}const Ce=async(e,t)=>{const n=O.get();n&&await z(e,t,n)},Oe=async e=>{const t=O.get();return t?G(e,t):null},xe=async(e,t)=>{const n=O.get();n&&await F(e,()=>t,n)},Me=async e=>{const t=O.get();t&&await Q(e,t)},Pe=async()=>{const e=O.get();if(e){const t=await V(e);return Object.fromEntries(t)}return null},W={setItem:Ce,getItem:Oe,updateItem:xe,deleteItem:Me,exportData:Pe},M=_({}),Ae=async()=>
5{const e=await W.exportData(),t=De(),n={};B.forEach(s=>{n[s.id]={...t[s.id]||{},...e?.[s.id]||{}}}),n.general=e?.general||{},M.set(n)},We=e=>M.get()[e]||{},He=w(M,"setSettingsByProviderId",(e,t,n)=>{const s={...ee(t),...n};e.setKey(t,s),W.setItem(t,s)}),Ye=()=>M.get().general||{},qe=w(M,"setSettingsByProviderId",(e,t)=>{const n={...e.get().general||{},...t};e.setKey("general",n),W.setItem("general",n)}),De=()=>{const e={};return B.forEach(t=>{e[t.id]=ee(t.id)}),e},ee=e=>{const t=ke(e);if(!t||!t.globalSettings)return{};const n=t.globalSettings,s={};return n.forEach(o=>{o.default&&(s[o.key]=o.default)}),s},T=I(null),C=I(null),O=I(null),Xe=()=>{T.set(E("conversations","keyval")),C.set(E("messages","keyval")),O.set(E("settings","keyval"))},Ze=async()=>{await Qe(),await Ne(),await Ae()},Ue=async(e,t)=>{const n=C.get();n&&await z(e,t,n)},$e=async e=>{const t=C.get();return t?G(e,t):null},Ee=async(e,t)=>{const n=C.get();n&&await F(e,()=>t,n)},Be=async e=>{const t=C.get();t&&await Q(e,t)},Je=async()=>{const e=C.get();if(e){const t=await V(e);return Object.fromEntries(t)}return null},J={setItem:Ue,getItem:$e,updateItem:Ee,deleteItem:Be,exportData:Je},P=_({}),Ne=async()=>{const e=await J.exportData()||{};P.set(e)},et=e=>P.get()[e]||[],tt=w(P,"updateMessage",(e,t,n,s)=>{const r=(e.get()[t]||[]).map(a=>a.id===n?{...a,...s}:a);e.setKey(t,r),J.setItem(t,r)}),nt=w(P,"pushMessageByConversationId",(e,t,n)=>{const s=e.get()[t]||[];s[s.length-1]?.id!==n.id&&(e.setKey(t,[...s,n]),J.setItem(t,[...s,n]),te(t,{lastUseTime:Date.now()}))}),Ke=w(P,"clearMessagesByConversationId",(e,t,n)=>{e.setKey(t,[]),J.deleteItem(t),!n&&te(t,{lastUseTime:Date.now()})}),je=async(e,t)=>{const n=T.get();n&&await z(e,t,n)},Re=async e=>{const t=T.get();return t?G(e,t):null},_e=async(e,t)=>{const n=T.get();n&&await F(e,()=>t,n)},Le=async e=>{const t=T.get();t&&await Q(e,t)},Ge=async()=>{const e=T.get();if(e){const t=await V(e);return Object.fromEntries(t)}return null},N={setItem:je,getItem:Re,updateItem:_e,deleteItem:Le,exportData:Ge},A=_({}),ze=I(""),Fe=I(""),st=ce(Fe,e=>e?A.get()[e]:null),Qe=async()=>{const e=await N.exportData()||{};A.set(e)},ot=w(A,"addConversation",(e,t)=>{const n=t?.id||`id_${Date.now()}`,s={id:n,providerId:t?.providerId||B[0]?.id,conversationType:t?.conversationType||B[0]?.supportConversationType?.[0],name:t?.name||"",icon:t?.icon||"i-carbon-chat",lastUseTime:Date.now()};e.setKey(n,s),N.setItem(n,s),ze.set(n)}),te=w(A,"updateConversationById",(e,t,n)=>{const s={...e.get()[t],...n};e.setKey(t,s),N.updateItem(t,s)}),rt=w(A,"deleteConversationById",(e,t)=>{e.set(Object.fromEntries(Object.entries(e.get()).filter(([n])=>n!==t))),N.deleteItem(t),Ke(t,!0)});export{ze as a,Ke as b,A as c,ke as d,et as e,We as f,Ye as g,ot as h,st as i,B as j,rt as k,Fe as l,M as m,qe as n,Ve as o,nt as p,Xe as q,Ze as r,He as s,tt as t,te as u,P as v,_ as w,w as x,I as y};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.