chainlit 1.0.502__py3-none-any.whl → 1.0.504__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of chainlit might be problematic. Click here for more details.

chainlit/cli/__init__.py CHANGED
@@ -175,7 +175,7 @@ def chainlit_create_secret(args=None, **kwargs):
175
175
  trace_event("chainlit secret")
176
176
 
177
177
  print(
178
- f"Copy the following secret into your .env file. Once it is set, changing it will logout all users with active sessions.\nCHAINLIT_AUTH_SECRET={random_secret()}"
178
+ f'Copy the following secret into your .env file. Once it is set, changing it will logout all users with active sessions.\nCHAINLIT_AUTH_SECRET="{random_secret()}"'
179
179
  )
180
180
 
181
181
 
@@ -75,7 +75,7 @@ function print() { __p += __j.call(arguments, '') }
75
75
  *
76
76
  * This source code is licensed under the MIT license found in the
77
77
  * LICENSE file in the root directory of this source tree.
78
- */var fE=_t;function GPe(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var VPe=typeof Object.is=="function"?Object.is:GPe,YPe=fE.useState,WPe=fE.useEffect,jPe=fE.useLayoutEffect,KPe=fE.useDebugValue;function XPe(e,t){var r=t(),n=YPe({inst:{value:r,getSnapshot:t}}),i=n[0].inst,v=n[1];return jPe(function(){i.value=r,i.getSnapshot=t,jk(i)&&v({inst:i})},[e,r,t]),WPe(function(){return jk(i)&&v({inst:i}),e(function(){jk(i)&&v({inst:i})})},[e]),KPe(r),r}function jk(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!VPe(e,r)}catch{return!0}}function QPe(e,t){return t()}var ZPe=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?QPe:XPe;Yae.useSyncExternalStore=fE.useSyncExternalStore!==void 0?fE.useSyncExternalStore:ZPe,Vae.exports=Yae;var JPe=Vae.exports;const Cy=()=>{},xh=Cy(),Kk=Object,Hs=e=>e===xh,i1=e=>typeof e=="function",Ry=(e,t)=>({...e,...t}),qPe=e=>i1(e.then),L6=new WeakMap;let e7e=0;const vw=e=>{const t=typeof e,r=e&&e.constructor,n=r==Date;let i,v;if(Kk(e)===e&&!n&&r!=RegExp){if(i=L6.get(e),i)return i;if(i=++e7e+"~",L6.set(e,i),r==Array){for(i="@",v=0;v<e.length;v++)i+=vw(e[v])+",";L6.set(e,i)}if(r==Kk){i="#";const s=Kk.keys(e).sort();for(;!Hs(v=s.pop());)Hs(e[v])||(i+=v+":"+vw(e[v])+",");L6.set(e,i)}}else i=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return i},o1=new WeakMap,Xk={},P6={},Qk="undefined",k6=typeof window!=Qk,Zk=typeof document!=Qk,t7e=()=>k6&&typeof window.requestAnimationFrame!=Qk,Wae=(e,t)=>{const r=o1.get(e);return[()=>!Hs(t)&&e.get(t)||Xk,n=>{if(!Hs(t)){const i=e.get(t);t in P6||(P6[t]=i),r[5](t,Ry(i,n),i||Xk)}},r[6],()=>!Hs(t)&&t in P6?P6[t]:!Hs(t)&&e.get(t)||Xk]};let Jk=!0;const r7e=()=>Jk,[qk,e9]=k6&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Cy,Cy],n7e=()=>{const e=Zk&&document.visibilityState;return Hs(e)||e!=="hidden"},a7e=e=>(Zk&&document.addEventListener("visibilitychange",e),qk("focus",e),()=>{Zk&&document.removeEventListener("visibilitychange",e),e9("focus",e)}),i7e=e=>{const t=()=>{Jk=!0,e()},r=()=>{Jk=!1};return qk("online",t),qk("offline",r),()=>{e9("online",t),e9("offline",r)}},o7e={isOnline:r7e,isVisible:n7e},s7e={initFocus:a7e,initReconnect:i7e},jae=!fa.useId,gw=!k6||"Deno"in window,l7e=e=>t7e()?window.requestAnimationFrame(e):setTimeout(e,1),t9=gw?_t.useEffect:_t.useLayoutEffect,r9=typeof navigator<"u"&&navigator.connection,Kae=!gw&&r9&&(["slow-2g","2g"].includes(r9.effectiveType)||r9.saveData),n9=e=>{if(i1(e))try{e=e()}catch{e=""}const t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?vw(e):"",[e,t]};let u7e=0;const a9=()=>++u7e,Xae=0,Qae=1,Zae=2;var mw={__proto__:null,ERROR_REVALIDATE_EVENT:3,FOCUS_EVENT:Xae,MUTATE_EVENT:Zae,RECONNECT_EVENT:Qae};async function Jae(...e){const[t,r,n,i]=e,v=Ry({populateCache:!0,throwOnError:!0},typeof i=="boolean"?{revalidate:i}:i||{});let s=v.populateCache;const h=v.rollbackOnError;let a=v.optimisticData;const u=v.revalidate!==!1,g=b=>typeof h=="function"?h(b):h!==!1,o=v.throwOnError;if(i1(r)){const b=r,p=[],x=t.keys();for(const c of x)!/^\$(inf|sub)\$/.test(c)&&b(t.get(c)._k)&&p.push(c);return Promise.all(p.map(E))}return E(r);async function E(b){const[p]=n9(b);if(!p)return;const[x,c]=Wae(t,p),[l,d,f,m]=o1.get(t),_=()=>{const O=l[p];return u&&(delete f[p],delete m[p],O&&O[0])?O[0](Zae).then(()=>x().data):x().data};if(e.length<3)return _();let y=n,C;const A=a9();d[p]=[A,0];const N=!Hs(a),w=x(),S=w.data,R=w._c,M=Hs(R)?S:R;if(N&&(a=i1(a)?a(M,S):a,c({data:a,_c:M})),i1(y))try{y=y(M)}catch(O){C=O}if(y&&qPe(y))if(y=await y.catch(O=>{C=O}),A!==d[p][0]){if(C)throw C;return y}else C&&N&&g(C)&&(s=!0,c({data:M,_c:xh}));if(s&&!C)if(i1(s)){const O=s(y,M);c({data:O,error:xh,_c:xh})}else c({data:y,error:xh,_c:xh});if(d[p][1]=a9(),Promise.resolve(_()).then(()=>{c({_c:xh})}),C){if(o)throw C;return}return y}}const qae=(e,t)=>{for(const r in e)e[r][0]&&e[r][0](t)},c7e=(e,t)=>{if(!o1.has(e)){const r=Ry(s7e,t),n={},i=Jae.bind(xh,e);let v=Cy;const s={},h=(g,o)=>{const E=s[g]||[];return s[g]=E,E.push(o),()=>E.splice(E.indexOf(o),1)},a=(g,o,E)=>{e.set(g,o);const b=s[g];if(b)for(const p of b)p(o,E)},u=()=>{if(!o1.has(e)&&(o1.set(e,[n,{},{},{},i,a,h]),!gw)){const g=r.initFocus(setTimeout.bind(xh,qae.bind(xh,n,Xae))),o=r.initReconnect(setTimeout.bind(xh,qae.bind(xh,n,Qae)));v=()=>{g&&g(),o&&o(),o1.delete(e)}}};return u(),[e,i,u,v]}return[e,o1.get(e)[4]]},f7e=(e,t,r,n,i)=>{const v=r.errorRetryCount,s=i.retryCount,h=~~((Math.random()+.5)*(1<<(s<8?s:8)))*r.errorRetryInterval;!Hs(v)&&s>v||setTimeout(n,h,i)},d7e=(e,t)=>vw(e)==vw(t),[eie,h7e]=c7e(new Map),p7e=Ry({onLoadingSlow:Cy,onSuccess:Cy,onError:Cy,onErrorRetry:f7e,onDiscarded:Cy,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Kae?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Kae?5e3:3e3,compare:d7e,isPaused:()=>!1,cache:eie,mutate:h7e,fallback:{}},o7e),v7e=(e,t)=>{const r=Ry(e,t);if(t){const{use:n,fallback:i}=e,{use:v,fallback:s}=t;n&&v&&(r.use=n.concat(v)),i&&s&&(r.fallback=Ry(i,s))}return r},g7e=_t.createContext({}),m7e="$inf$",tie=k6&&window.__SWR_DEVTOOLS_USE__,y7e=tie?window.__SWR_DEVTOOLS_USE__:[],b7e=()=>{tie&&(window.__SWR_DEVTOOLS_REACT__=fa)},_7e=e=>i1(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],x7e=()=>Ry(p7e,_t.useContext(g7e)),E7e=e=>(t,r,n)=>e(t,r&&((...v)=>{const[s]=n9(t),[,,,h]=o1.get(eie);if(s.startsWith(m7e))return r(...v);const a=h[s];return Hs(a)?r(...v):(delete h[s],a)}),n),S7e=y7e.concat(E7e),T7e=e=>function(...r){const n=x7e(),[i,v,s]=_7e(r),h=v7e(n,s);let a=e;const{use:u}=h,g=(u||[]).concat(S7e);for(let o=g.length;o--;)a=g[o](a);return a(i,v||h.fetcher||null,h)},w7e=(e,t,r)=>{const n=t[e]||(t[e]=[]);return n.push(r),()=>{const i=n.indexOf(r);i>=0&&(n[i]=n[n.length-1],n.pop())}};b7e();const rie=fa.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e)}),i9={dedupe:!0},A7e=T7e((e,t,r)=>{const{cache:n,compare:i,suspense:v,fallbackData:s,revalidateOnMount:h,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:g,refreshWhenOffline:o,keepPreviousData:E}=r,[b,p,x,c]=o1.get(n),[l,d]=n9(e),f=_t.useRef(!1),m=_t.useRef(!1),_=_t.useRef(l),y=_t.useRef(t),C=_t.useRef(r),A=()=>C.current,N=()=>A().isVisible()&&A().isOnline(),[w,S,R,M]=Wae(n,l),O=_t.useRef({}).current,F=Hs(s)?r.fallback[l]:s,D=(ae,oe)=>{for(const he in O){const q=he;if(q==="data"){if(!i(ae[q],oe[q])&&(!Hs(ae[q])||!i(H,oe[q])))return!1}else if(oe[q]!==ae[q])return!1}return!0},k=_t.useMemo(()=>{const ae=(()=>!l||!t?!1:Hs(h)?A().isPaused()||v?!1:Hs(a)?!0:a:h)(),oe=re=>{const fe=Ry(re);return delete fe._k,ae?{isValidating:!0,isLoading:!0,...fe}:fe},he=w(),q=M(),J=oe(he),le=he===q?J:oe(q);let Z=J;return[()=>{const re=oe(w());return D(re,Z)?(Z.data=re.data,Z.isLoading=re.isLoading,Z.isValidating=re.isValidating,Z.error=re.error,Z):(Z=re,re)},()=>le]},[n,l]),I=JPe.useSyncExternalStore(_t.useCallback(ae=>R(l,(oe,he)=>{D(he,oe)||ae()}),[n,l]),k[0],k[1]),T=!f.current,P=b[l]&&b[l].length>0,L=I.data,z=Hs(L)?F:L,B=I.error,Y=_t.useRef(z),H=E?Hs(L)?Y.current:L:z,G=(()=>P&&!Hs(B)?!1:T&&!Hs(h)?h:A().isPaused()?!1:v?Hs(z)?!1:a:Hs(z)||a)(),W=!!(l&&t&&T&&G),V=Hs(I.isValidating)?W:I.isValidating,j=Hs(I.isLoading)?W:I.isLoading,X=_t.useCallback(async ae=>{const oe=y.current;if(!l||!oe||m.current||A().isPaused())return!1;let he,q,J=!0;const le=ae||{},Z=!x[l]||!le.dedupe,re=()=>jae?!m.current&&l===_.current&&f.current:l===_.current,fe={isValidating:!1,isLoading:!1},ne=()=>{S(fe)},Q=()=>{const ie=x[l];ie&&ie[1]===q&&delete x[l]},de={isValidating:!0};Hs(w().data)&&(de.isLoading=!0);try{if(Z&&(S(de),r.loadingTimeout&&Hs(w().data)&&setTimeout(()=>{J&&re()&&A().onLoadingSlow(l,r)},r.loadingTimeout),x[l]=[oe(d),a9()]),[he,q]=x[l],he=await he,Z&&setTimeout(Q,r.dedupingInterval),!x[l]||x[l][1]!==q)return Z&&re()&&A().onDiscarded(l),!1;fe.error=xh;const ie=p[l];if(!Hs(ie)&&(q<=ie[0]||q<=ie[1]||ie[1]===0))return ne(),Z&&re()&&A().onDiscarded(l),!1;const ce=w().data;fe.data=i(ce,he)?ce:he,Z&&re()&&A().onSuccess(he,l,r)}catch(ie){Q();const ce=A(),{shouldRetryOnError:ge}=ce;ce.isPaused()||(fe.error=ie,Z&&re()&&(ce.onError(ie,l,ce),(ge===!0||i1(ge)&&ge(ie))&&N()&&ce.onErrorRetry(ie,l,ce,Ee=>{const Se=b[l];Se&&Se[0]&&Se[0](mw.ERROR_REVALIDATE_EVENT,Ee)},{retryCount:(le.retryCount||0)+1,dedupe:!0})))}return J=!1,ne(),!0},[l,n]),ee=_t.useCallback((...ae)=>Jae(n,_.current,...ae),[]);if(t9(()=>{y.current=t,C.current=r,Hs(L)||(Y.current=L)}),t9(()=>{if(!l)return;const ae=X.bind(xh,i9);let oe=0;const q=w7e(l,b,(J,le={})=>{if(J==mw.FOCUS_EVENT){const Z=Date.now();A().revalidateOnFocus&&Z>oe&&N()&&(oe=Z+A().focusThrottleInterval,ae())}else if(J==mw.RECONNECT_EVENT)A().revalidateOnReconnect&&N()&&ae();else{if(J==mw.MUTATE_EVENT)return X();if(J==mw.ERROR_REVALIDATE_EVENT)return X(le)}});return m.current=!1,_.current=l,f.current=!0,S({_k:d}),G&&(Hs(z)||gw?ae():l7e(ae)),()=>{m.current=!0,q()}},[l]),t9(()=>{let ae;function oe(){const q=i1(u)?u(w().data):u;q&&ae!==-1&&(ae=setTimeout(he,q))}function he(){!w().error&&(g||A().isVisible())&&(o||A().isOnline())?X(i9).then(oe):oe()}return oe(),()=>{ae&&(clearTimeout(ae),ae=-1)}},[u,g,o,l]),_t.useDebugValue(H),v&&Hs(z)&&l){if(!jae&&gw)throw new Error("Fallback data is required when using suspense in SSR.");y.current=t,C.current=r,m.current=!1;const ae=c[l];if(!Hs(ae)){const oe=ee(ae);rie(oe)}if(Hs(B)){const oe=X(i9);Hs(H)||(oe.status="fulfilled",oe.value=!0),rie(oe)}else throw B}return{mutate:ee,get data(){return O.data=!0,H},get error(){return O.error=!0,B},get isValidating(){return O.isValidating=!0,V},get isLoading(){return O.isLoading=!0,j}}});var C7e=e=>{let t={},r=new Date,n=new Date;n.setDate(r.getDate()-1);let i=new Date;i.setDate(r.getDate()-7);let v=new Date;return v.setDate(r.getDate()-30),e.forEach(s=>{let h=new Date(s.createdAt),a=h.toDateString()===r.toDateString(),u=h.toDateString()===n.toDateString(),g=h>=i,o=h>=v,E;a?E="Today":u?E="Yesterday":g?E="Previous 7 days":o?E="Previous 30 days":E=h.toLocaleString("default",{month:"long",year:"numeric"}).split(" ").slice(0,1).join(" "),t[E]||(t[E]=[]),t[E].push(s)}),t},nie=Ls({key:"ThreadIdToResume",default:void 0}),R7e=Ls({key:"ChatProfile",default:void 0}),aie=Ls({key:"SessionId",default:yae()}),o9=gae({key:"SessionIdSelector",get:({get:e})=>e(aie),set:({set:e},t)=>e(aie,t instanceof jLe?yae():t)}),s9=Ls({key:"Session",dangerouslyAllowMutability:!0,default:void 0}),l9=Ls({key:"Actions",default:[]}),yw=Ls({key:"Messages",dangerouslyAllowMutability:!0,default:[]}),iie=Ls({key:"TokenCount",default:0}),u9=Ls({key:"Loading",default:!1}),c9=Ls({key:"AskUser",default:void 0}),M7e=Ls({key:"CallFn",default:void 0}),F6=Ls({key:"ChatSettings",default:[]}),oie=gae({key:"ChatSettingsValue/Default",get:({get:e})=>e(F6).reduce((t,r)=>(t[r.id]=r.initial,t),{})}),f9=Ls({key:"ChatSettingsValue",default:oie}),d9=Ls({key:"DisplayElements",default:[]}),h9=Ls({key:"AvatarElements",default:[]}),p9=Ls({key:"TasklistElements",default:[]}),B6=Ls({key:"FirstUserInteraction",default:void 0}),Mb=Ls({key:"AccessToken",default:void 0}),I7e=Ls({key:"User",default:null}),bw=Ls({key:"ThreadHistory",default:{threads:void 0,currentThreadId:void 0,timeGroupedThreads:void 0,pageInfo:void 0},effects:[({setSelf:e,onSet:t})=>{t((r,n)=>{let i=r==null?void 0:r.timeGroupedThreads;r!=null&&r.threads&&!lE.isEqual(r.threads,n==null?void 0:n.timeGroupedThreads)&&(i=C7e(r.threads)),e({...r,timeGroupedThreads:i})})}]}),dE=Ls({key:"SideView",default:void 0}),Gg=()=>{let e=uo(u9),t=uo(d9),r=uo(h9),n=uo(p9),i=uo(l9),v=uo(s9),s=uo(c9),h=uo(F6),a=uo(f9),u=uo(oie),g=(v==null?void 0:v.socket.connected)&&!(v!=null&&v.error),o=!g||e||(s==null?void 0:s.spec.type)==="file"||(s==null?void 0:s.spec.type)==="action";return{actions:i,askUser:s,avatars:r,chatSettingsDefaultValue:u,chatSettingsInputs:h,chatSettingsValue:a,connected:g,disabled:o,elements:t,error:v==null?void 0:v.error,loading:e,tasklists:n}},O7e=e=>{let t=[];for(let r of e)t=Ib(t,r);return t},Ib=(e,t)=>_w(e,t.id)?Ob(e,t.id,t):"parentId"in t&&t.parentId?lie(e,t.parentId,t):"indent"in t&&t.indent&&t.indent>0?sie(e,t.indent,t):[...e,t],sie=(e,t,r,n=0)=>{let i=[...e];if(i.length===0)return[...i,r];{let v=i.length-1,s=i[v];return s.steps=s.steps||[],n+1===t?(s.steps=[...s.steps,r],i[v]={...s},i):(s.steps=sie(s.steps,t,r,n+1),i[v]={...s},i)}},lie=(e,t,r)=>{let n=[...e];for(let i=0;i<n.length;i++){let v=n[i];lE.isEqual(v.id,t)?(v.steps=v.steps?[...v.steps,r]:[r],n[i]={...v}):_w(n,t)&&v.steps&&(v.steps=lie(v.steps,t,r),n[i]={...v})}return n},_w=(e,t)=>{for(let r of e)if(lE.isEqual(r.id,t)||r.steps&&r.steps.length>0&&_w(r.steps,t))return!0;return!1},Ob=(e,t,r)=>{let n=[...e];for(let i=0;i<n.length;i++){let v=n[i];lE.isEqual(v.id,t)?n[i]={steps:v.steps,...r}:_w(n,t)&&v.steps&&(v.steps=Ob(v.steps,t,r),n[i]={...v})}return n},uie=(e,t)=>{let r=[...e];for(let n=0;n<r.length;n++){let i=r[n];i.id===t?r=[...r.slice(0,n),...r.slice(n+1)]:_w(r,t)&&i.steps&&(i.steps=uie(i.steps,t),r[n]={...i})}return r},cie=(e,t,r,n)=>{let i=[...e];for(let v=0;v<i.length;v++){let s=i[v];lE.isEqual(s.id,t)?("content"in s&&s.content!==void 0?n?s.content=r:s.content+=r:"output"in s&&s.output!==void 0&&(n?s.output=r:s.output+=r),i[v]={...s}):s.steps&&(s.steps=cie(s.steps,t,r,n),i[v]={...s})}return i},nd=()=>{let e=uo(Mb),t=uo(s9),r=uo(c9),n=uo(o9),i=E6(F6),v=E6(o9),s=E6(f9),h=as(B6),a=as(u9),u=as(yw),g=as(d9),o=as(h9),E=as(p9),b=as(l9),p=as(iie),x=as(nie),c=as(dE),l=_t.useCallback(()=>{t==null||t.socket.emit("clear_session"),t==null||t.socket.disconnect(),x(void 0),v(),h(void 0),u([]),g([]),o([]),E([]),b([]),p(0),i(),s(),c(void 0)},[t]),d=_t.useCallback((C,A)=>{u(N=>Ib(N,C)),t==null||t.socket.emit("ui_message",{message:C,fileReferences:A})},[t==null?void 0:t.socket]),f=_t.useCallback(C=>{r&&(u(A=>Ib(A,C)),r.callback(C))},[r]),m=_t.useCallback(C=>{t==null||t.socket.emit("chat_settings_change",C)},[t==null?void 0:t.socket]),_=_t.useCallback(()=>{a(!1),t==null||t.socket.emit("stop")},[t==null?void 0:t.socket]),y=_t.useCallback(C=>{let A=t==null?void 0:t.socket;if(!A)return;let N=new Promise((w,S)=>{A.once("action_response",R=>{R.status?w(R):S(R)})});return A.emit("action_call",C),N},[t==null?void 0:t.socket]);return{uploadFile:_t.useCallback((C,A,N)=>C.uploadFile(A,N,n,e),[n,e]),callAction:y,clear:l,replyMessage:f,sendMessage:d,stopTask:_,setIdToResume:x,updateChatSettings:m}},z6=()=>{let e=uo(yw),t=uo(B6);return{messages:e,firstInteraction:t}},My=()=>{let e=uo(o9),[t,r]=tc(s9),n=E6(f9),i=as(B6),v=as(u9),s=as(yw),h=as(c9),a=as(M7e),u=as(d9),g=as(h9),o=as(p9),E=as(l9),b=as(F6),p=as(iie),[x,c]=tc(R7e),l=uo(nie),d=_t.useCallback(({client:_,userEnv:y,accessToken:C})=>{let A=new URL(_.httpEndpoint).pathname,N=A.endsWith("/")?"ws/socket.io":"/ws/socket.io",w=D6(_.httpEndpoint,{path:`${A}${N}`,extraHeaders:{Authorization:C||"","X-Chainlit-Client-Type":_.type,"X-Chainlit-Session-Id":e,"X-Chainlit-Thread-Id":l||"","user-env":JSON.stringify(y),"X-Chainlit-Chat-Profile":x||""}});r(S=>{var R,M;return(R=S==null?void 0:S.socket)==null||R.removeAllListeners(),(M=S==null?void 0:S.socket)==null||M.close(),{socket:w}}),w.on("connect",()=>{w.emit("connection_successful"),r(S=>({...S,error:!1}))}),w.on("connect_error",S=>{r(R=>({...R,error:!0}))}),w.on("task_start",()=>{v(!0)}),w.on("task_end",()=>{v(!1)}),w.on("reload",()=>{w.emit("clear_session"),window.location.reload()}),w.on("resume_thread",S=>{var O,F;let R=[];for(let D of S.steps)R=Ib(R,D);(O=S.metadata)!=null&&O.chat_profile&&c((F=S.metadata)==null?void 0:F.chat_profile),s(R);let M=S.elements||[];g(M.filter(D=>D.type==="avatar")),o(M.filter(D=>D.type==="tasklist")),u(M.filter(D=>["avatar","tasklist"].indexOf(D.type)===-1))}),w.on("new_message",S=>{s(R=>Ib(R,S))}),w.on("first_interaction",S=>{i(S)}),w.on("update_message",S=>{s(R=>Ob(R,S.id,S))}),w.on("delete_message",S=>{s(R=>uie(R,S.id))}),w.on("stream_start",S=>{s(R=>Ib(R,S))}),w.on("stream_token",({id:S,token:R,isSequence:M})=>{s(O=>cie(O,S,R,M))}),w.on("ask",({msg:S,spec:R},M)=>{h({spec:R,callback:M}),s(O=>Ib(O,S)),v(!1)}),w.on("ask_timeout",()=>{h(void 0),v(!1)}),w.on("clear_ask",()=>{h(void 0)}),w.on("call_fn",({name:S,args:R},M)=>{let O=new CustomEvent("chainlit-call-fn",{detail:{name:S,args:R,callback:M}});window.dispatchEvent(O),a({name:S,args:R,callback:M})}),w.on("clear_call_fn",()=>{a(void 0)}),w.on("call_fn_timeout",()=>{a(void 0)}),w.on("chat_settings",S=>{b(S),n()}),w.on("element",S=>{!S.url&&S.chainlitKey&&(S.url=_.getElementUrl(S.chainlitKey,e)),S.type==="avatar"?g(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?[...R,S]:[...R.slice(0,M),S,...R.slice(M+1)]}):S.type==="tasklist"?o(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?[...R,S]:[...R.slice(0,M),S,...R.slice(M+1)]}):u(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?[...R,S]:[...R.slice(0,M),S,...R.slice(M+1)]})}),w.on("remove_element",S=>{u(R=>R.filter(M=>M.id!==S.id)),o(R=>R.filter(M=>M.id!==S.id)),g(R=>R.filter(M=>M.id!==S.id))}),w.on("action",S=>{E(R=>[...R,S])}),w.on("remove_action",S=>{E(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?R:[...R.slice(0,M),...R.slice(M+1)]})}),w.on("token_usage",S=>{p(R=>R+S)})},[r,e,x]),f=_t.useCallback(lE.debounce(d,200),[d]),m=_t.useCallback(()=>{t!=null&&t.socket&&(t.socket.removeAllListeners(),t.socket.close())},[t]);return{connect:f,disconnect:m,session:t,chatProfile:x,idToResume:l,setChatProfile:c}},v9="token";function fie(){try{return localStorage.getItem(v9)}catch{return}}function D7e(e){try{return localStorage.setItem(v9,e)}catch{return}}function die(){try{return localStorage.removeItem(v9)}catch{return}}var N7e=async(e,t,r)=>{var n;return(n=await e.get(t,r))==null?void 0:n.json()};function U6(e,t,r){let n=uo(Mb);return A7e(t?[t,n]:null,([i,v])=>N7e(e,i,v),r)}var hie=e=>{let{data:t,isLoading:r}=U6(e,"/auth/config"),[n,i]=tc(Mb),v=as(bw),[s,h]=tc(I7e),a=!!(!r&&t),u=async()=>{await e.logout(),h(null),die(),i(""),v(void 0)},g=E=>{if(!E){u();return}try{let{exp:b,...p}=HPe(E);D7e(E),i(`Bearer ${E}`),h(p)}catch(b){console.error("Invalid token, clearing token from local storage","error:",b),u()}};_t.useEffect(()=>{if(!s&&fie()){g(fie());return}},[]);let o=!!n;return t&&!t.requireLogin?{data:t,user:null,isReady:a,isAuthenticated:!0,accessToken:"",logout:()=>{},setAccessToken:()=>{}}:{data:t,user:s,isAuthenticated:o,isReady:a,accessToken:n,logout:u,setAccessToken:g}},g9=class extends Error{constructor(t,r){super(t),this.detail=r}toString(){return this.detail?`${this.message}: ${this.detail}`:this.message}},L7e=class{constructor(e,t,r,n){this.httpEndpoint=e,this.type=t,this.on401=r,this.onError=n}buildEndpoint(e){return this.httpEndpoint.endsWith("/")?`${this.httpEndpoint.slice(0,-1)}${e}`:`${this.httpEndpoint}${e}`}checkToken(e){let t="Bearer ";return e.startsWith(t)?e:t+e}async fetch(e,t,r,n,i){try{let v={};r&&(v.Authorization=this.checkToken(r));let s;n instanceof FormData?s=n:(v["Content-Type"]="application/json",s=n?JSON.stringify(n):null);let h=await fetch(this.buildEndpoint(t),{method:e,headers:v,signal:i,body:s});if(!h.ok){let a=await h.json();throw h.status===401&&this.on401&&(die(),this.on401()),new g9(h.statusText,a.detail)}return h}catch(v){throw v instanceof g9&&this.onError&&this.onError(v),console.error(v),v}}async get(e,t){return await this.fetch("GET",e,t)}async post(e,t,r,n){return await this.fetch("POST",e,r,t,n)}async put(e,t,r){return await this.fetch("PUT",e,r,t)}async patch(e,t,r){return await this.fetch("PATCH",e,r,t)}async delete(e,t,r){return await this.fetch("DELETE",e,r,t)}},m9=class extends L7e{async headerAuth(){return(await this.post("/auth/header",{})).json()}async passwordAuth(t){return(await this.post("/login",t)).json()}async logout(){return(await this.post("/logout",{})).json()}async getGeneration(t,r={},n,i,v){var a,u;let s={userEnv:r};t.type==="CHAT"?s.chatGeneration=t:s.completionGeneration=t;let h=(u=(a=await this.post("/generation",s,i,n.signal))==null?void 0:a.body)==null?void 0:u.getReader();return new ReadableStream({start(g){function o(){h.read().then(({done:E,value:b})=>{if(E){g.close(),v&&v(E,"");return}let p=new TextDecoder("utf-8").decode(b);v&&v(E,p),g.enqueue(b),o()}).catch(E=>{g.close(),v&&v(!0,""),console.error(E)})}o()}})}async setFeedback(t,r){return(await this.put("/feedback",{feedback:t},r)).json()}async deleteFeedback(t,r){return(await this.delete("/feedback",{feedbackId:t},r)).json()}async listThreads(t,r,n){return(await this.post("/project/threads",{pagination:t,filter:r},n)).json()}async deleteThread(t,r){return(await this.delete("/project/thread",{threadId:t},r)).json()}uploadFile(t,r,n,i){let v=new XMLHttpRequest,s=new Promise((h,a)=>{let u=new FormData;u.append("file",t),v.open("POST",this.buildEndpoint(`/project/file?session_id=${n}`),!0),i&&v.setRequestHeader("Authorization",this.checkToken(i)),v.upload.onprogress=function(g){if(g.lengthComputable){let o=g.loaded/g.total*100;r(o)}},v.onload=function(){if(v.status===200){let g=JSON.parse(v.responseText);h(g)}else a("Upload failed")},v.onerror=function(){a("Upload error")},v.send(u)});return{xhr:v,promise:s}}getElementUrl(t,r){let n=`?session_id=${r}`;return this.buildEndpoint(`/project/file/${t}${n}`)}getLogoEndpoint(t){return this.buildEndpoint(`/logo?theme=${t}`)}getOAuthEndpoint(t){return this.buildEndpoint(`/auth/oauth/${t}`)}};function P7e(e){const t=new URL(e),r=`${t.protocol}//${t.host}`,n=()=>{O0.error("Unauthorized")},i=v=>{O0.error(v.toString())};return new m9(r,"copilot",n,i)}const k7e={accessToken:void 0,apiClient:new m9("","copilot")},hE=_t.createContext(k7e);let $6;const F7e=new Uint8Array(16);function B7e(){if(!$6&&($6=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$6))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $6(F7e)}const If=[];for(let e=0;e<256;++e)If.push((e+256).toString(16).slice(1));function z7e(e,t=0){return(If[e[t+0]]+If[e[t+1]]+If[e[t+2]]+If[e[t+3]]+"-"+If[e[t+4]]+If[e[t+5]]+"-"+If[e[t+6]]+If[e[t+7]]+"-"+If[e[t+8]]+If[e[t+9]]+"-"+If[e[t+10]]+If[e[t+11]]+If[e[t+12]]+If[e[t+13]]+If[e[t+14]]+If[e[t+15]]).toLowerCase()}const pie={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function y9(e,t,r){if(pie.randomUUID&&!t&&!e)return pie.randomUUID();e=e||{};const n=e.random||(e.rng||B7e)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){r=r||0;for(let i=0;i<16;++i)t[r+i]=n[i];return t}return z7e(n)}const xw={black:"#000",white:"#fff"},pE={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},vE={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},gE={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},mE={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},yE={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},Ew={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},vie={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function lr(){return lr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},lr.apply(this,arguments)}function s1(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function gie(e){if(!s1(e))return e;const t={};return Object.keys(e).forEach(r=>{t[r]=gie(e[r])}),t}function ad(e,t,r={clone:!0}){const n=r.clone?lr({},e):e;return s1(e)&&s1(t)&&Object.keys(t).forEach(i=>{i!=="__proto__"&&(s1(t[i])&&i in e&&s1(e[i])?n[i]=ad(e[i],t[i],r):r.clone?n[i]=s1(t[i])?gie(t[i]):t[i]:n[i]=t[i])}),n}function Iy(e){let t="https://mui.com/production-error/?code="+e;for(let r=1;r<arguments.length;r+=1)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}var pl={};/**
78
+ */var fE=_t;function GPe(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var VPe=typeof Object.is=="function"?Object.is:GPe,YPe=fE.useState,WPe=fE.useEffect,jPe=fE.useLayoutEffect,KPe=fE.useDebugValue;function XPe(e,t){var r=t(),n=YPe({inst:{value:r,getSnapshot:t}}),i=n[0].inst,v=n[1];return jPe(function(){i.value=r,i.getSnapshot=t,jk(i)&&v({inst:i})},[e,r,t]),WPe(function(){return jk(i)&&v({inst:i}),e(function(){jk(i)&&v({inst:i})})},[e]),KPe(r),r}function jk(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!VPe(e,r)}catch{return!0}}function QPe(e,t){return t()}var ZPe=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?QPe:XPe;Yae.useSyncExternalStore=fE.useSyncExternalStore!==void 0?fE.useSyncExternalStore:ZPe,Vae.exports=Yae;var JPe=Vae.exports;const Cy=()=>{},xh=Cy(),Kk=Object,Hs=e=>e===xh,i1=e=>typeof e=="function",Ry=(e,t)=>({...e,...t}),qPe=e=>i1(e.then),L6=new WeakMap;let e7e=0;const vw=e=>{const t=typeof e,r=e&&e.constructor,n=r==Date;let i,v;if(Kk(e)===e&&!n&&r!=RegExp){if(i=L6.get(e),i)return i;if(i=++e7e+"~",L6.set(e,i),r==Array){for(i="@",v=0;v<e.length;v++)i+=vw(e[v])+",";L6.set(e,i)}if(r==Kk){i="#";const s=Kk.keys(e).sort();for(;!Hs(v=s.pop());)Hs(e[v])||(i+=v+":"+vw(e[v])+",");L6.set(e,i)}}else i=n?e.toJSON():t=="symbol"?e.toString():t=="string"?JSON.stringify(e):""+e;return i},o1=new WeakMap,Xk={},P6={},Qk="undefined",k6=typeof window!=Qk,Zk=typeof document!=Qk,t7e=()=>k6&&typeof window.requestAnimationFrame!=Qk,Wae=(e,t)=>{const r=o1.get(e);return[()=>!Hs(t)&&e.get(t)||Xk,n=>{if(!Hs(t)){const i=e.get(t);t in P6||(P6[t]=i),r[5](t,Ry(i,n),i||Xk)}},r[6],()=>!Hs(t)&&t in P6?P6[t]:!Hs(t)&&e.get(t)||Xk]};let Jk=!0;const r7e=()=>Jk,[qk,e9]=k6&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Cy,Cy],n7e=()=>{const e=Zk&&document.visibilityState;return Hs(e)||e!=="hidden"},a7e=e=>(Zk&&document.addEventListener("visibilitychange",e),qk("focus",e),()=>{Zk&&document.removeEventListener("visibilitychange",e),e9("focus",e)}),i7e=e=>{const t=()=>{Jk=!0,e()},r=()=>{Jk=!1};return qk("online",t),qk("offline",r),()=>{e9("online",t),e9("offline",r)}},o7e={isOnline:r7e,isVisible:n7e},s7e={initFocus:a7e,initReconnect:i7e},jae=!fa.useId,gw=!k6||"Deno"in window,l7e=e=>t7e()?window.requestAnimationFrame(e):setTimeout(e,1),t9=gw?_t.useEffect:_t.useLayoutEffect,r9=typeof navigator<"u"&&navigator.connection,Kae=!gw&&r9&&(["slow-2g","2g"].includes(r9.effectiveType)||r9.saveData),n9=e=>{if(i1(e))try{e=e()}catch{e=""}const t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?vw(e):"",[e,t]};let u7e=0;const a9=()=>++u7e,Xae=0,Qae=1,Zae=2;var mw={__proto__:null,ERROR_REVALIDATE_EVENT:3,FOCUS_EVENT:Xae,MUTATE_EVENT:Zae,RECONNECT_EVENT:Qae};async function Jae(...e){const[t,r,n,i]=e,v=Ry({populateCache:!0,throwOnError:!0},typeof i=="boolean"?{revalidate:i}:i||{});let s=v.populateCache;const h=v.rollbackOnError;let a=v.optimisticData;const u=v.revalidate!==!1,g=b=>typeof h=="function"?h(b):h!==!1,o=v.throwOnError;if(i1(r)){const b=r,p=[],x=t.keys();for(const c of x)!/^\$(inf|sub)\$/.test(c)&&b(t.get(c)._k)&&p.push(c);return Promise.all(p.map(E))}return E(r);async function E(b){const[p]=n9(b);if(!p)return;const[x,c]=Wae(t,p),[l,d,f,m]=o1.get(t),_=()=>{const O=l[p];return u&&(delete f[p],delete m[p],O&&O[0])?O[0](Zae).then(()=>x().data):x().data};if(e.length<3)return _();let y=n,C;const A=a9();d[p]=[A,0];const N=!Hs(a),w=x(),S=w.data,R=w._c,M=Hs(R)?S:R;if(N&&(a=i1(a)?a(M,S):a,c({data:a,_c:M})),i1(y))try{y=y(M)}catch(O){C=O}if(y&&qPe(y))if(y=await y.catch(O=>{C=O}),A!==d[p][0]){if(C)throw C;return y}else C&&N&&g(C)&&(s=!0,c({data:M,_c:xh}));if(s&&!C)if(i1(s)){const O=s(y,M);c({data:O,error:xh,_c:xh})}else c({data:y,error:xh,_c:xh});if(d[p][1]=a9(),Promise.resolve(_()).then(()=>{c({_c:xh})}),C){if(o)throw C;return}return y}}const qae=(e,t)=>{for(const r in e)e[r][0]&&e[r][0](t)},c7e=(e,t)=>{if(!o1.has(e)){const r=Ry(s7e,t),n={},i=Jae.bind(xh,e);let v=Cy;const s={},h=(g,o)=>{const E=s[g]||[];return s[g]=E,E.push(o),()=>E.splice(E.indexOf(o),1)},a=(g,o,E)=>{e.set(g,o);const b=s[g];if(b)for(const p of b)p(o,E)},u=()=>{if(!o1.has(e)&&(o1.set(e,[n,{},{},{},i,a,h]),!gw)){const g=r.initFocus(setTimeout.bind(xh,qae.bind(xh,n,Xae))),o=r.initReconnect(setTimeout.bind(xh,qae.bind(xh,n,Qae)));v=()=>{g&&g(),o&&o(),o1.delete(e)}}};return u(),[e,i,u,v]}return[e,o1.get(e)[4]]},f7e=(e,t,r,n,i)=>{const v=r.errorRetryCount,s=i.retryCount,h=~~((Math.random()+.5)*(1<<(s<8?s:8)))*r.errorRetryInterval;!Hs(v)&&s>v||setTimeout(n,h,i)},d7e=(e,t)=>vw(e)==vw(t),[eie,h7e]=c7e(new Map),p7e=Ry({onLoadingSlow:Cy,onSuccess:Cy,onError:Cy,onErrorRetry:f7e,onDiscarded:Cy,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Kae?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Kae?5e3:3e3,compare:d7e,isPaused:()=>!1,cache:eie,mutate:h7e,fallback:{}},o7e),v7e=(e,t)=>{const r=Ry(e,t);if(t){const{use:n,fallback:i}=e,{use:v,fallback:s}=t;n&&v&&(r.use=n.concat(v)),i&&s&&(r.fallback=Ry(i,s))}return r},g7e=_t.createContext({}),m7e="$inf$",tie=k6&&window.__SWR_DEVTOOLS_USE__,y7e=tie?window.__SWR_DEVTOOLS_USE__:[],b7e=()=>{tie&&(window.__SWR_DEVTOOLS_REACT__=fa)},_7e=e=>i1(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],x7e=()=>Ry(p7e,_t.useContext(g7e)),E7e=e=>(t,r,n)=>e(t,r&&((...v)=>{const[s]=n9(t),[,,,h]=o1.get(eie);if(s.startsWith(m7e))return r(...v);const a=h[s];return Hs(a)?r(...v):(delete h[s],a)}),n),S7e=y7e.concat(E7e),T7e=e=>function(...r){const n=x7e(),[i,v,s]=_7e(r),h=v7e(n,s);let a=e;const{use:u}=h,g=(u||[]).concat(S7e);for(let o=g.length;o--;)a=g[o](a);return a(i,v||h.fetcher||null,h)},w7e=(e,t,r)=>{const n=t[e]||(t[e]=[]);return n.push(r),()=>{const i=n.indexOf(r);i>=0&&(n[i]=n[n.length-1],n.pop())}};b7e();const rie=fa.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e)}),i9={dedupe:!0},A7e=T7e((e,t,r)=>{const{cache:n,compare:i,suspense:v,fallbackData:s,revalidateOnMount:h,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:g,refreshWhenOffline:o,keepPreviousData:E}=r,[b,p,x,c]=o1.get(n),[l,d]=n9(e),f=_t.useRef(!1),m=_t.useRef(!1),_=_t.useRef(l),y=_t.useRef(t),C=_t.useRef(r),A=()=>C.current,N=()=>A().isVisible()&&A().isOnline(),[w,S,R,M]=Wae(n,l),O=_t.useRef({}).current,F=Hs(s)?r.fallback[l]:s,D=(ae,oe)=>{for(const he in O){const q=he;if(q==="data"){if(!i(ae[q],oe[q])&&(!Hs(ae[q])||!i(H,oe[q])))return!1}else if(oe[q]!==ae[q])return!1}return!0},k=_t.useMemo(()=>{const ae=(()=>!l||!t?!1:Hs(h)?A().isPaused()||v?!1:Hs(a)?!0:a:h)(),oe=re=>{const fe=Ry(re);return delete fe._k,ae?{isValidating:!0,isLoading:!0,...fe}:fe},he=w(),q=M(),J=oe(he),le=he===q?J:oe(q);let Z=J;return[()=>{const re=oe(w());return D(re,Z)?(Z.data=re.data,Z.isLoading=re.isLoading,Z.isValidating=re.isValidating,Z.error=re.error,Z):(Z=re,re)},()=>le]},[n,l]),I=JPe.useSyncExternalStore(_t.useCallback(ae=>R(l,(oe,he)=>{D(he,oe)||ae()}),[n,l]),k[0],k[1]),T=!f.current,P=b[l]&&b[l].length>0,L=I.data,z=Hs(L)?F:L,B=I.error,Y=_t.useRef(z),H=E?Hs(L)?Y.current:L:z,G=(()=>P&&!Hs(B)?!1:T&&!Hs(h)?h:A().isPaused()?!1:v?Hs(z)?!1:a:Hs(z)||a)(),W=!!(l&&t&&T&&G),V=Hs(I.isValidating)?W:I.isValidating,j=Hs(I.isLoading)?W:I.isLoading,X=_t.useCallback(async ae=>{const oe=y.current;if(!l||!oe||m.current||A().isPaused())return!1;let he,q,J=!0;const le=ae||{},Z=!x[l]||!le.dedupe,re=()=>jae?!m.current&&l===_.current&&f.current:l===_.current,fe={isValidating:!1,isLoading:!1},ne=()=>{S(fe)},Q=()=>{const ie=x[l];ie&&ie[1]===q&&delete x[l]},de={isValidating:!0};Hs(w().data)&&(de.isLoading=!0);try{if(Z&&(S(de),r.loadingTimeout&&Hs(w().data)&&setTimeout(()=>{J&&re()&&A().onLoadingSlow(l,r)},r.loadingTimeout),x[l]=[oe(d),a9()]),[he,q]=x[l],he=await he,Z&&setTimeout(Q,r.dedupingInterval),!x[l]||x[l][1]!==q)return Z&&re()&&A().onDiscarded(l),!1;fe.error=xh;const ie=p[l];if(!Hs(ie)&&(q<=ie[0]||q<=ie[1]||ie[1]===0))return ne(),Z&&re()&&A().onDiscarded(l),!1;const ce=w().data;fe.data=i(ce,he)?ce:he,Z&&re()&&A().onSuccess(he,l,r)}catch(ie){Q();const ce=A(),{shouldRetryOnError:ge}=ce;ce.isPaused()||(fe.error=ie,Z&&re()&&(ce.onError(ie,l,ce),(ge===!0||i1(ge)&&ge(ie))&&N()&&ce.onErrorRetry(ie,l,ce,Ee=>{const Se=b[l];Se&&Se[0]&&Se[0](mw.ERROR_REVALIDATE_EVENT,Ee)},{retryCount:(le.retryCount||0)+1,dedupe:!0})))}return J=!1,ne(),!0},[l,n]),ee=_t.useCallback((...ae)=>Jae(n,_.current,...ae),[]);if(t9(()=>{y.current=t,C.current=r,Hs(L)||(Y.current=L)}),t9(()=>{if(!l)return;const ae=X.bind(xh,i9);let oe=0;const q=w7e(l,b,(J,le={})=>{if(J==mw.FOCUS_EVENT){const Z=Date.now();A().revalidateOnFocus&&Z>oe&&N()&&(oe=Z+A().focusThrottleInterval,ae())}else if(J==mw.RECONNECT_EVENT)A().revalidateOnReconnect&&N()&&ae();else{if(J==mw.MUTATE_EVENT)return X();if(J==mw.ERROR_REVALIDATE_EVENT)return X(le)}});return m.current=!1,_.current=l,f.current=!0,S({_k:d}),G&&(Hs(z)||gw?ae():l7e(ae)),()=>{m.current=!0,q()}},[l]),t9(()=>{let ae;function oe(){const q=i1(u)?u(w().data):u;q&&ae!==-1&&(ae=setTimeout(he,q))}function he(){!w().error&&(g||A().isVisible())&&(o||A().isOnline())?X(i9).then(oe):oe()}return oe(),()=>{ae&&(clearTimeout(ae),ae=-1)}},[u,g,o,l]),_t.useDebugValue(H),v&&Hs(z)&&l){if(!jae&&gw)throw new Error("Fallback data is required when using suspense in SSR.");y.current=t,C.current=r,m.current=!1;const ae=c[l];if(!Hs(ae)){const oe=ee(ae);rie(oe)}if(Hs(B)){const oe=X(i9);Hs(H)||(oe.status="fulfilled",oe.value=!0),rie(oe)}else throw B}return{mutate:ee,get data(){return O.data=!0,H},get error(){return O.error=!0,B},get isValidating(){return O.isValidating=!0,V},get isLoading(){return O.isLoading=!0,j}}});var C7e=e=>{let t={},r=new Date,n=new Date;n.setDate(r.getDate()-1);let i=new Date;i.setDate(r.getDate()-7);let v=new Date;return v.setDate(r.getDate()-30),e.forEach(s=>{let h=new Date(s.createdAt),a=h.toDateString()===r.toDateString(),u=h.toDateString()===n.toDateString(),g=h>=i,o=h>=v,E;a?E="Today":u?E="Yesterday":g?E="Previous 7 days":o?E="Previous 30 days":E=h.toLocaleString("default",{month:"long",year:"numeric"}).split(" ").slice(0,1).join(" "),t[E]||(t[E]=[]),t[E].push(s)}),t},nie=Ls({key:"ThreadIdToResume",default:void 0}),R7e=Ls({key:"ChatProfile",default:void 0}),aie=Ls({key:"SessionId",default:yae()}),o9=gae({key:"SessionIdSelector",get:({get:e})=>e(aie),set:({set:e},t)=>e(aie,t instanceof jLe?yae():t)}),s9=Ls({key:"Session",dangerouslyAllowMutability:!0,default:void 0}),l9=Ls({key:"Actions",default:[]}),yw=Ls({key:"Messages",dangerouslyAllowMutability:!0,default:[]}),iie=Ls({key:"TokenCount",default:0}),u9=Ls({key:"Loading",default:!1}),c9=Ls({key:"AskUser",default:void 0}),M7e=Ls({key:"CallFn",default:void 0}),F6=Ls({key:"ChatSettings",default:[]}),oie=gae({key:"ChatSettingsValue/Default",get:({get:e})=>e(F6).reduce((t,r)=>(t[r.id]=r.initial,t),{})}),f9=Ls({key:"ChatSettingsValue",default:oie}),d9=Ls({key:"DisplayElements",default:[]}),h9=Ls({key:"AvatarElements",default:[]}),p9=Ls({key:"TasklistElements",default:[]}),B6=Ls({key:"FirstUserInteraction",default:void 0}),Mb=Ls({key:"AccessToken",default:void 0}),I7e=Ls({key:"User",default:null}),bw=Ls({key:"ThreadHistory",default:{threads:void 0,currentThreadId:void 0,timeGroupedThreads:void 0,pageInfo:void 0},effects:[({setSelf:e,onSet:t})=>{t((r,n)=>{let i=r==null?void 0:r.timeGroupedThreads;r!=null&&r.threads&&!lE.isEqual(r.threads,n==null?void 0:n.timeGroupedThreads)&&(i=C7e(r.threads)),e({...r,timeGroupedThreads:i})})}]}),dE=Ls({key:"SideView",default:void 0}),Gg=()=>{let e=uo(u9),t=uo(d9),r=uo(h9),n=uo(p9),i=uo(l9),v=uo(s9),s=uo(c9),h=uo(F6),a=uo(f9),u=uo(oie),g=(v==null?void 0:v.socket.connected)&&!(v!=null&&v.error),o=!g||e||(s==null?void 0:s.spec.type)==="file"||(s==null?void 0:s.spec.type)==="action";return{actions:i,askUser:s,avatars:r,chatSettingsDefaultValue:u,chatSettingsInputs:h,chatSettingsValue:a,connected:g,disabled:o,elements:t,error:v==null?void 0:v.error,loading:e,tasklists:n}},O7e=e=>{let t=[];for(let r of e)t=Ib(t,r);return t},Ib=(e,t)=>_w(e,t.id)?Ob(e,t.id,t):"parentId"in t&&t.parentId?lie(e,t.parentId,t):"indent"in t&&t.indent&&t.indent>0?sie(e,t.indent,t):[...e,t],sie=(e,t,r,n=0)=>{let i=[...e];if(i.length===0)return[...i,r];{let v=i.length-1,s=i[v];return s.steps=s.steps||[],n+1===t?(s.steps=[...s.steps,r],i[v]={...s},i):(s.steps=sie(s.steps,t,r,n+1),i[v]={...s},i)}},lie=(e,t,r)=>{let n=[...e];for(let i=0;i<n.length;i++){let v=n[i];lE.isEqual(v.id,t)?(v.steps=v.steps?[...v.steps,r]:[r],n[i]={...v}):_w(n,t)&&v.steps&&(v.steps=lie(v.steps,t,r),n[i]={...v})}return n},_w=(e,t)=>{for(let r of e)if(lE.isEqual(r.id,t)||r.steps&&r.steps.length>0&&_w(r.steps,t))return!0;return!1},Ob=(e,t,r)=>{let n=[...e];for(let i=0;i<n.length;i++){let v=n[i];lE.isEqual(v.id,t)?n[i]={steps:v.steps,...r}:_w(n,t)&&v.steps&&(v.steps=Ob(v.steps,t,r),n[i]={...v})}return n},uie=(e,t)=>{let r=[...e];for(let n=0;n<r.length;n++){let i=r[n];i.id===t?r=[...r.slice(0,n),...r.slice(n+1)]:_w(r,t)&&i.steps&&(i.steps=uie(i.steps,t),r[n]={...i})}return r},cie=(e,t,r,n)=>{let i=[...e];for(let v=0;v<i.length;v++){let s=i[v];lE.isEqual(s.id,t)?("content"in s&&s.content!==void 0?n?s.content=r:s.content+=r:"output"in s&&s.output!==void 0&&(n?s.output=r:s.output+=r),i[v]={...s}):s.steps&&(s.steps=cie(s.steps,t,r,n),i[v]={...s})}return i},nd=()=>{let e=uo(Mb),t=uo(s9),r=uo(c9),n=uo(o9),i=E6(F6),v=E6(o9),s=E6(f9),h=as(B6),a=as(u9),u=as(yw),g=as(d9),o=as(h9),E=as(p9),b=as(l9),p=as(iie),x=as(nie),c=as(dE),l=_t.useCallback(()=>{t==null||t.socket.emit("clear_session"),t==null||t.socket.disconnect(),x(void 0),v(),h(void 0),u([]),g([]),o([]),E([]),b([]),p(0),i(),s(),c(void 0)},[t]),d=_t.useCallback((C,A)=>{u(N=>Ib(N,C)),t==null||t.socket.emit("ui_message",{message:C,fileReferences:A})},[t==null?void 0:t.socket]),f=_t.useCallback(C=>{r&&(u(A=>Ib(A,C)),r.callback(C))},[r]),m=_t.useCallback(C=>{t==null||t.socket.emit("chat_settings_change",C)},[t==null?void 0:t.socket]),_=_t.useCallback(()=>{a(!1),t==null||t.socket.emit("stop")},[t==null?void 0:t.socket]),y=_t.useCallback(C=>{let A=t==null?void 0:t.socket;if(!A)return;let N=new Promise((w,S)=>{A.once("action_response",R=>{R.status?w(R):S(R)})});return A.emit("action_call",C),N},[t==null?void 0:t.socket]);return{uploadFile:_t.useCallback((C,A,N)=>C.uploadFile(A,N,n,e),[n,e]),callAction:y,clear:l,replyMessage:f,sendMessage:d,stopTask:_,setIdToResume:x,updateChatSettings:m}},z6=()=>{let e=uo(yw),t=uo(B6);return{messages:e,firstInteraction:t}},My=()=>{let e=uo(o9),[t,r]=tc(s9),n=E6(f9),i=as(B6),v=as(u9),s=as(yw),h=as(c9),a=as(M7e),u=as(d9),g=as(h9),o=as(p9),E=as(l9),b=as(F6),p=as(iie),[x,c]=tc(R7e),l=uo(nie),d=_t.useCallback(({client:_,userEnv:y,accessToken:C})=>{let A=new URL(_.httpEndpoint).pathname,N=A.endsWith("/")?"ws/socket.io":"/ws/socket.io",w=D6(_.httpEndpoint,{path:`${A}${N}`,extraHeaders:{Authorization:C||"","X-Chainlit-Client-Type":_.type,"X-Chainlit-Session-Id":e,"X-Chainlit-Thread-Id":l||"","user-env":JSON.stringify(y),"X-Chainlit-Chat-Profile":x||""}});r(S=>{var R,M;return(R=S==null?void 0:S.socket)==null||R.removeAllListeners(),(M=S==null?void 0:S.socket)==null||M.close(),{socket:w}}),w.on("connect",()=>{w.emit("connection_successful"),r(S=>({...S,error:!1}))}),w.on("connect_error",S=>{r(R=>({...R,error:!0}))}),w.on("task_start",()=>{v(!0)}),w.on("task_end",()=>{v(!1)}),w.on("reload",()=>{w.emit("clear_session"),window.location.reload()}),w.on("resume_thread",S=>{var O,F;let R=[];for(let D of S.steps)R=Ib(R,D);(O=S.metadata)!=null&&O.chat_profile&&c((F=S.metadata)==null?void 0:F.chat_profile),s(R);let M=S.elements||[];g(M.filter(D=>D.type==="avatar")),o(M.filter(D=>D.type==="tasklist")),u(M.filter(D=>["avatar","tasklist"].indexOf(D.type)===-1))}),w.on("new_message",S=>{s(R=>Ib(R,S))}),w.on("first_interaction",S=>{i(S)}),w.on("update_message",S=>{s(R=>Ob(R,S.id,S))}),w.on("delete_message",S=>{s(R=>uie(R,S.id))}),w.on("stream_start",S=>{s(R=>Ib(R,S))}),w.on("stream_token",({id:S,token:R,isSequence:M})=>{s(O=>cie(O,S,R,M))}),w.on("ask",({msg:S,spec:R},M)=>{h({spec:R,callback:M}),s(O=>Ib(O,S)),v(!1)}),w.on("ask_timeout",()=>{h(void 0),v(!1)}),w.on("clear_ask",()=>{h(void 0)}),w.on("call_fn",({name:S,args:R},M)=>{let O=new CustomEvent("chainlit-call-fn",{detail:{name:S,args:R,callback:M}});window.dispatchEvent(O),a({name:S,args:R,callback:M})}),w.on("clear_call_fn",()=>{a(void 0)}),w.on("call_fn_timeout",()=>{a(void 0)}),w.on("chat_settings",S=>{b(S),n()}),w.on("element",S=>{!S.url&&S.chainlitKey&&(S.url=_.getElementUrl(S.chainlitKey,e)),S.type==="avatar"?g(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?[...R,S]:[...R.slice(0,M),S,...R.slice(M+1)]}):S.type==="tasklist"?o(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?[...R,S]:[...R.slice(0,M),S,...R.slice(M+1)]}):u(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?[...R,S]:[...R.slice(0,M),S,...R.slice(M+1)]})}),w.on("remove_element",S=>{u(R=>R.filter(M=>M.id!==S.id)),o(R=>R.filter(M=>M.id!==S.id)),g(R=>R.filter(M=>M.id!==S.id))}),w.on("action",S=>{E(R=>[...R,S])}),w.on("remove_action",S=>{E(R=>{let M=R.findIndex(O=>O.id===S.id);return M===-1?R:[...R.slice(0,M),...R.slice(M+1)]})}),w.on("token_usage",S=>{p(R=>R+S)})},[r,e,x]),f=_t.useCallback(lE.debounce(d,200),[d]),m=_t.useCallback(()=>{t!=null&&t.socket&&(t.socket.removeAllListeners(),t.socket.close())},[t]);return{connect:f,disconnect:m,session:t,sessionId:e,chatProfile:x,idToResume:l,setChatProfile:c}},v9="token";function fie(){try{return localStorage.getItem(v9)}catch{return}}function D7e(e){try{return localStorage.setItem(v9,e)}catch{return}}function die(){try{return localStorage.removeItem(v9)}catch{return}}var N7e=async(e,t,r)=>{var n;return(n=await e.get(t,r))==null?void 0:n.json()};function U6(e,t,r){let n=uo(Mb);return A7e(t?[t,n]:null,([i,v])=>N7e(e,i,v),r)}var hie=e=>{let{data:t,isLoading:r}=U6(e,"/auth/config"),[n,i]=tc(Mb),v=as(bw),[s,h]=tc(I7e),a=!!(!r&&t),u=async()=>{await e.logout(),h(null),die(),i(""),v(void 0)},g=E=>{if(!E){u();return}try{let{exp:b,...p}=HPe(E);D7e(E),i(`Bearer ${E}`),h(p)}catch(b){console.error("Invalid token, clearing token from local storage","error:",b),u()}};_t.useEffect(()=>{if(!s&&fie()){g(fie());return}},[]);let o=!!n;return t&&!t.requireLogin?{data:t,user:null,isReady:a,isAuthenticated:!0,accessToken:"",logout:()=>{},setAccessToken:()=>{}}:{data:t,user:s,isAuthenticated:o,isReady:a,accessToken:n,logout:u,setAccessToken:g}},g9=class extends Error{constructor(t,r){super(t),this.detail=r}toString(){return this.detail?`${this.message}: ${this.detail}`:this.message}},L7e=class{constructor(e,t,r,n){this.httpEndpoint=e,this.type=t,this.on401=r,this.onError=n}buildEndpoint(e){return this.httpEndpoint.endsWith("/")?`${this.httpEndpoint.slice(0,-1)}${e}`:`${this.httpEndpoint}${e}`}checkToken(e){let t="Bearer ";return e.startsWith(t)?e:t+e}async fetch(e,t,r,n,i){try{let v={};r&&(v.Authorization=this.checkToken(r));let s;n instanceof FormData?s=n:(v["Content-Type"]="application/json",s=n?JSON.stringify(n):null);let h=await fetch(this.buildEndpoint(t),{method:e,headers:v,signal:i,body:s});if(!h.ok){let a=await h.json();throw h.status===401&&this.on401&&(die(),this.on401()),new g9(h.statusText,a.detail)}return h}catch(v){throw v instanceof g9&&this.onError&&this.onError(v),console.error(v),v}}async get(e,t){return await this.fetch("GET",e,t)}async post(e,t,r,n){return await this.fetch("POST",e,r,t,n)}async put(e,t,r){return await this.fetch("PUT",e,r,t)}async patch(e,t,r){return await this.fetch("PATCH",e,r,t)}async delete(e,t,r){return await this.fetch("DELETE",e,r,t)}},m9=class extends L7e{async headerAuth(){return(await this.post("/auth/header",{})).json()}async passwordAuth(t){return(await this.post("/login",t)).json()}async logout(){return(await this.post("/logout",{})).json()}async getGeneration(t,r={},n,i,v){var a,u;let s={userEnv:r};t.type==="CHAT"?s.chatGeneration=t:s.completionGeneration=t;let h=(u=(a=await this.post("/generation",s,i,n.signal))==null?void 0:a.body)==null?void 0:u.getReader();return new ReadableStream({start(g){function o(){h.read().then(({done:E,value:b})=>{if(E){g.close(),v&&v(E,"");return}let p=new TextDecoder("utf-8").decode(b);v&&v(E,p),g.enqueue(b),o()}).catch(E=>{g.close(),v&&v(!0,""),console.error(E)})}o()}})}async setFeedback(t,r){return(await this.put("/feedback",{feedback:t},r)).json()}async deleteFeedback(t,r){return(await this.delete("/feedback",{feedbackId:t},r)).json()}async listThreads(t,r,n){return(await this.post("/project/threads",{pagination:t,filter:r},n)).json()}async deleteThread(t,r){return(await this.delete("/project/thread",{threadId:t},r)).json()}uploadFile(t,r,n,i){let v=new XMLHttpRequest,s=new Promise((h,a)=>{let u=new FormData;u.append("file",t),v.open("POST",this.buildEndpoint(`/project/file?session_id=${n}`),!0),i&&v.setRequestHeader("Authorization",this.checkToken(i)),v.upload.onprogress=function(g){if(g.lengthComputable){let o=g.loaded/g.total*100;r(o)}},v.onload=function(){if(v.status===200){let g=JSON.parse(v.responseText);h(g)}else a("Upload failed")},v.onerror=function(){a("Upload error")},v.send(u)});return{xhr:v,promise:s}}getElementUrl(t,r){let n=`?session_id=${r}`;return this.buildEndpoint(`/project/file/${t}${n}`)}getLogoEndpoint(t){return this.buildEndpoint(`/logo?theme=${t}`)}getOAuthEndpoint(t){return this.buildEndpoint(`/auth/oauth/${t}`)}};function P7e(e){const t=new URL(e),r=`${t.protocol}//${t.host}`,n=()=>{O0.error("Unauthorized")},i=v=>{O0.error(v.toString())};return new m9(r,"copilot",n,i)}const k7e={accessToken:void 0,apiClient:new m9("","copilot")},hE=_t.createContext(k7e);let $6;const F7e=new Uint8Array(16);function B7e(){if(!$6&&($6=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$6))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $6(F7e)}const If=[];for(let e=0;e<256;++e)If.push((e+256).toString(16).slice(1));function z7e(e,t=0){return(If[e[t+0]]+If[e[t+1]]+If[e[t+2]]+If[e[t+3]]+"-"+If[e[t+4]]+If[e[t+5]]+"-"+If[e[t+6]]+If[e[t+7]]+"-"+If[e[t+8]]+If[e[t+9]]+"-"+If[e[t+10]]+If[e[t+11]]+If[e[t+12]]+If[e[t+13]]+If[e[t+14]]+If[e[t+15]]).toLowerCase()}const pie={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function y9(e,t,r){if(pie.randomUUID&&!t&&!e)return pie.randomUUID();e=e||{};const n=e.random||(e.rng||B7e)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){r=r||0;for(let i=0;i<16;++i)t[r+i]=n[i];return t}return z7e(n)}const xw={black:"#000",white:"#fff"},pE={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},vE={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},gE={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},mE={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},yE={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},Ew={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},vie={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function lr(){return lr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},lr.apply(this,arguments)}function s1(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function gie(e){if(!s1(e))return e;const t={};return Object.keys(e).forEach(r=>{t[r]=gie(e[r])}),t}function ad(e,t,r={clone:!0}){const n=r.clone?lr({},e):e;return s1(e)&&s1(t)&&Object.keys(t).forEach(i=>{i!=="__proto__"&&(s1(t[i])&&i in e&&s1(e[i])?n[i]=ad(e[i],t[i],r):r.clone?n[i]=s1(t[i])?gie(t[i]):t[i]:n[i]=t[i])}),n}function Iy(e){let t="https://mui.com/production-error/?code="+e;for(let r=1;r<arguments.length;r+=1)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}var pl={};/**
79
79
  * @license React
80
80
  * react-is.production.min.js
81
81
  *
chainlit/data/__init__.py CHANGED
@@ -2,16 +2,16 @@ import functools
2
2
  import json
3
3
  import os
4
4
  from collections import deque
5
- from typing import TYPE_CHECKING, Dict, List, Literal, Optional, Union, cast
5
+ from typing import TYPE_CHECKING, Dict, List, Literal, Optional, Union, cast, Protocol, Any
6
6
 
7
7
  import aiofiles
8
8
  from chainlit.config import config
9
9
  from chainlit.context import context
10
10
  from chainlit.logger import logger
11
11
  from chainlit.session import WebsocketSession
12
- from chainlit.types import Feedback, Pagination, ThreadDict, ThreadFilter
12
+ from chainlit.types import Feedback, Pagination, ThreadDict, ThreadFilter, PageInfo, PaginatedResponse
13
13
  from chainlit.user import PersistedUser, User
14
- from literalai import Attachment, PageInfo, PaginatedResponse, Score as LiteralScore, Step as LiteralStep
14
+ from literalai import Attachment, PaginatedResponse as LiteralPaginatedResponse, Score as LiteralScore, Step as LiteralStep
15
15
  from literalai.filter import threads_filters as LiteralThreadsFilters
16
16
  from literalai.step import StepDict as LiteralStepDict
17
17
 
@@ -411,12 +411,20 @@ class ChainlitDataLayer(BaseDataLayer):
411
411
  }
412
412
  )
413
413
 
414
- return await self.client.api.list_threads(
414
+ literal_response: LiteralPaginatedResponse = await self.client.api.list_threads(
415
415
  first=pagination.first,
416
416
  after=pagination.cursor,
417
417
  filters=literal_filters,
418
418
  order_by={"column": "createdAt", "direction": "DESC"},
419
419
  )
420
+ return PaginatedResponse(
421
+ pageInfo=PageInfo(
422
+ hasNextPage=literal_response.pageInfo.hasNextPage,
423
+ startCursor=literal_response.pageInfo.startCursor,
424
+ endCursor=literal_response.pageInfo.endCursor
425
+ ),
426
+ data=literal_response.data,
427
+ )
420
428
 
421
429
  async def get_thread(self, thread_id: str) -> "Optional[ThreadDict]":
422
430
  thread = await self.client.api.get_thread(id=thread_id)
@@ -462,10 +470,14 @@ class ChainlitDataLayer(BaseDataLayer):
462
470
  tags=tags,
463
471
  )
464
472
 
473
+ class BaseStorageClient(Protocol):
474
+ """Base class for non-text data persistence like Azure Data Lake, S3, Google Storage, etc."""
475
+ async def upload_file(self, object_key: str, data: Union[bytes, str], mime: str = 'application/octet-stream', overwrite: bool = True) -> Dict[str, Any]:
476
+ pass
465
477
 
466
478
  if api_key := os.environ.get("LITERAL_API_KEY"):
467
479
  # support legacy LITERAL_SERVER variable as fallback
468
- server = os.environ.get("LITERAL_API_URL", os.environ.get("LITERAL_SERVER"))
480
+ server = os.environ.get("LITERAL_API_URL") or os.environ.get("LITERAL_SERVER")
469
481
  _data_layer = ChainlitDataLayer(api_key=api_key, server=server)
470
482
 
471
483