teodor-new-chat-ui 1.5.21 → 1.5.22
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.
- package/dist/index.esm.js +5 -5
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1808,7 +1808,7 @@ async function Hf() {
|
|
|
1808
1808
|
_r = !0;
|
|
1809
1809
|
try {
|
|
1810
1810
|
const { data: e } = await ke.post(
|
|
1811
|
-
"/
|
|
1811
|
+
"/auth/refresh",
|
|
1812
1812
|
{},
|
|
1813
1813
|
{ timeout: 3e4 }
|
|
1814
1814
|
), t = (e == null ? void 0 : e.accessToken) ?? null;
|
|
@@ -1907,19 +1907,19 @@ class Co {
|
|
|
1907
1907
|
}
|
|
1908
1908
|
// ---- Auth API Methods ----
|
|
1909
1909
|
async login(t) {
|
|
1910
|
-
const n = await jt("/
|
|
1910
|
+
const n = await jt("/auth/login", t);
|
|
1911
1911
|
return Ne(n);
|
|
1912
1912
|
}
|
|
1913
1913
|
async logout(t) {
|
|
1914
|
-
const n = await jt("/
|
|
1914
|
+
const n = await jt("/auth/logout", t ? { refresh_token: t } : {});
|
|
1915
1915
|
Ne(n);
|
|
1916
1916
|
}
|
|
1917
1917
|
async devLogin(t) {
|
|
1918
|
-
const r = await jt("/
|
|
1918
|
+
const r = await jt("/auth/dev-login", t ? { email: t } : {});
|
|
1919
1919
|
return Ne(r);
|
|
1920
1920
|
}
|
|
1921
1921
|
async getProfile() {
|
|
1922
|
-
const t = await lt("/
|
|
1922
|
+
const t = await lt("/auth/me");
|
|
1923
1923
|
return Ne(t);
|
|
1924
1924
|
}
|
|
1925
1925
|
// ---- Thread Management ----
|
package/dist/index.umd.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(o=>r.set(o)),r}static accessor(t){const r=(this[ys]=this[ys]={accessors:{}}).accessors,o=this.prototype;function s(a){const c=Wt(a);r[c]||(Lu(o,a),r[c]=!0)}return S.isArray(t)?t.forEach(s):s(t),this}};Ee.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),S.reduceDescriptors(Ee.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}}),S.freezeMethods(Ee);function _r(e,t){const n=this||Ht,r=t||n,o=Ee.from(r.headers);let s=r.data;return S.forEach(e,function(c){s=c.call(n,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function xs(e){return!!(e&&e.__CANCEL__)}function yt(e,t,n){ne.call(this,e??"canceled",ne.ERR_CANCELED,t,n),this.name="CanceledError"}S.inherits(yt,ne,{__CANCEL__:!0});function Ss(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ne("Request failed with status code "+n.status,[ne.ERR_BAD_REQUEST,ne.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Fu(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function $u(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o=0,s=0,a;return t=t!==void 0?t:1e3,function(d){const f=Date.now(),u=r[s];a||(a=f),n[o]=d,r[o]=f;let p=s,g=0;for(;p!==o;)g+=n[p++],p=p%e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),f-a<t)return;const v=u&&f-u;return v?Math.round(g*1e3/v):void 0}}function Bu(e,t){let n=0,r=1e3/t,o,s;const a=(f,u=Date.now())=>{n=u,o=null,s&&(clearTimeout(s),s=null),e(...f)};return[(...f)=>{const u=Date.now(),p=u-n;p>=r?a(f,u):(o=f,s||(s=setTimeout(()=>{s=null,a(o)},r-p)))},()=>o&&a(o)]}const vn=(e,t,n=3)=>{let r=0;const o=$u(50,250);return Bu(s=>{const a=s.loaded,c=s.lengthComputable?s.total:void 0,d=a-r,f=o(d),u=a<=c;r=a;const p={loaded:a,total:c,progress:c?a/c:void 0,bytes:d,rate:f||void 0,estimated:f&&c&&u?(c-a)/f:void 0,event:s,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(p)},n)},Cs=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Es=e=>(...t)=>S.asap(()=>e(...t)),Uu=ye.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,ye.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(ye.origin),ye.navigator&&/(msie|trident)/i.test(ye.navigator.userAgent)):()=>!0,zu=ye.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const a=[e+"="+encodeURIComponent(t)];S.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),S.isString(r)&&a.push("path="+r),S.isString(o)&&a.push("domain="+o),s===!0&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Hu(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Wu(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Ns(e,t,n){let r=!Hu(t);return e&&(r||n==!1)?Wu(e,t):t}const Ts=e=>e instanceof Ee?{...e}:e;function ct(e,t){t=t||{};const n={};function r(f,u,p,g){return S.isPlainObject(f)&&S.isPlainObject(u)?S.merge.call({caseless:g},f,u):S.isPlainObject(u)?S.merge({},u):S.isArray(u)?u.slice():u}function o(f,u,p,g){if(S.isUndefined(u)){if(!S.isUndefined(f))return r(void 0,f,p,g)}else return r(f,u,p,g)}function s(f,u){if(!S.isUndefined(u))return r(void 0,u)}function a(f,u){if(S.isUndefined(u)){if(!S.isUndefined(f))return r(void 0,f)}else return r(void 0,u)}function c(f,u,p){if(p in t)return r(f,u);if(p in e)return r(void 0,f)}const d={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:c,headers:(f,u,p)=>o(Ts(f),Ts(u),p,!0)};return S.forEach(Object.keys({...e,...t}),function(u){const p=d[u]||o,g=p(e[u],t[u],u);S.isUndefined(g)&&p!==c||(n[u]=g)}),n}const As=e=>{const t=ct({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:s,headers:a,auth:c}=t;if(t.headers=a=Ee.from(a),t.url=ms(Ns(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),S.isFormData(n)){if(ye.hasStandardBrowserEnv||ye.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(S.isFunction(n.getHeaders)){const d=n.getHeaders(),f=["content-type","content-length"];Object.entries(d).forEach(([u,p])=>{f.includes(u.toLowerCase())&&a.set(u,p)})}}if(ye.hasStandardBrowserEnv&&(r&&S.isFunction(r)&&(r=r(t)),r||r!==!1&&Uu(t.url))){const d=o&&s&&zu.read(s);d&&a.set(o,d)}return t},Vu=typeof XMLHttpRequest<"u"&&function(e){return new Promise(function(n,r){const o=As(e);let s=o.data;const a=Ee.from(o.headers).normalize();let{responseType:c,onUploadProgress:d,onDownloadProgress:f}=o,u,p,g,v,h;function m(){v&&v(),h&&h(),o.cancelToken&&o.cancelToken.unsubscribe(u),o.signal&&o.signal.removeEventListener("abort",u)}let b=new XMLHttpRequest;b.open(o.method.toUpperCase(),o.url,!0),b.timeout=o.timeout;function w(){if(!b)return;const x=Ee.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders()),C={data:!c||c==="text"||c==="json"?b.responseText:b.response,status:b.status,statusText:b.statusText,headers:x,config:e,request:b};Ss(function(N){n(N),m()},function(N){r(N),m()},C),b=null}"onloadend"in b?b.onloadend=w:b.onreadystatechange=function(){!b||b.readyState!==4||b.status===0&&!(b.responseURL&&b.responseURL.indexOf("file:")===0)||setTimeout(w)},b.onabort=function(){b&&(r(new ne("Request aborted",ne.ECONNABORTED,e,b)),b=null)},b.onerror=function(E){const C=E&&E.message?E.message:"Network Error",O=new ne(C,ne.ERR_NETWORK,e,b);O.event=E||null,r(O),b=null},b.ontimeout=function(){let E=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const C=o.transitional||vs;o.timeoutErrorMessage&&(E=o.timeoutErrorMessage),r(new ne(E,C.clarifyTimeoutError?ne.ETIMEDOUT:ne.ECONNABORTED,e,b)),b=null},s===void 0&&a.setContentType(null),"setRequestHeader"in b&&S.forEach(a.toJSON(),function(E,C){b.setRequestHeader(C,E)}),S.isUndefined(o.withCredentials)||(b.withCredentials=!!o.withCredentials),c&&c!=="json"&&(b.responseType=o.responseType),f&&([g,h]=vn(f,!0),b.addEventListener("progress",g)),d&&b.upload&&([p,v]=vn(d),b.upload.addEventListener("progress",p),b.upload.addEventListener("loadend",v)),(o.cancelToken||o.signal)&&(u=x=>{b&&(r(!x||x.type?new yt(null,e,b):x),b.abort(),b=null)},o.cancelToken&&o.cancelToken.subscribe(u),o.signal&&(o.signal.aborted?u():o.signal.addEventListener("abort",u)));const y=Fu(o.url);if(y&&ye.protocols.indexOf(y)===-1){r(new ne("Unsupported protocol "+y+":",ne.ERR_BAD_REQUEST,e));return}b.send(s||null)})},Ru=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,o;const s=function(f){if(!o){o=!0,c();const u=f instanceof Error?f:this.reason;r.abort(u instanceof ne?u:new yt(u instanceof Error?u.message:u))}};let a=t&&setTimeout(()=>{a=null,s(new ne(`timeout ${t} of ms exceeded`,ne.ETIMEDOUT))},t);const c=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(s):f.removeEventListener("abort",s)}),e=null)};e.forEach(f=>f.addEventListener("abort",s));const{signal:d}=r;return d.unsubscribe=()=>S.asap(c),d}},ju=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let r=0,o;for(;r<n;)o=r+t,yield e.slice(r,o),r=o},Ku=async function*(e,t){for await(const n of Gu(e))yield*ju(n,t)},Gu=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},Ps=(e,t,n,r)=>{const o=Ku(e,t);let s=0,a,c=d=>{a||(a=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:f,value:u}=await o.next();if(f){c(),d.close();return}let p=u.byteLength;if(n){let g=s+=p;n(g)}d.enqueue(new Uint8Array(u))}catch(f){throw c(f),f}},cancel(d){return c(d),o.return()}},{highWaterMark:2})},_s=64*1024,{isFunction:wn}=S,qu=(({Request:e,Response:t})=>({Request:e,Response:t}))(S.global),{ReadableStream:Is,TextEncoder:Os}=S.global,ks=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Xu=e=>{e=S.merge.call({skipUndefined:!0},qu,e);const{fetch:t,Request:n,Response:r}=e,o=t?wn(t):typeof fetch=="function",s=wn(n),a=wn(r);if(!o)return!1;const c=o&&wn(Is),d=o&&(typeof Os=="function"?(h=>m=>h.encode(m))(new Os):async h=>new Uint8Array(await new n(h).arrayBuffer())),f=s&&c&&ks(()=>{let h=!1;const m=new n(ye.origin,{body:new Is,method:"POST",get duplex(){return h=!0,"half"}}).headers.has("Content-Type");return h&&!m}),u=a&&c&&ks(()=>S.isReadableStream(new r("").body)),p={stream:u&&(h=>h.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(h=>{!p[h]&&(p[h]=(m,b)=>{let w=m&&m[h];if(w)return w.call(m);throw new ne(`Response type '${h}' is not supported`,ne.ERR_NOT_SUPPORT,b)})});const g=async h=>{if(h==null)return 0;if(S.isBlob(h))return h.size;if(S.isSpecCompliantForm(h))return(await new n(ye.origin,{method:"POST",body:h}).arrayBuffer()).byteLength;if(S.isArrayBufferView(h)||S.isArrayBuffer(h))return h.byteLength;if(S.isURLSearchParams(h)&&(h=h+""),S.isString(h))return(await d(h)).byteLength},v=async(h,m)=>{const b=S.toFiniteNumber(h.getContentLength());return b??g(m)};return async h=>{let{url:m,method:b,data:w,signal:y,cancelToken:x,timeout:E,onDownloadProgress:C,onUploadProgress:O,responseType:N,headers:L,withCredentials:M="same-origin",fetchOptions:D}=As(h),j=t||fetch;N=N?(N+"").toLowerCase():"text";let G=Ru([y,x&&x.toAbortSignal()],E),V=null;const z=G&&G.unsubscribe&&(()=>{G.unsubscribe()});let X;try{if(O&&f&&b!=="get"&&b!=="head"&&(X=await v(L,w))!==0){let k=new n(m,{method:"POST",body:w,duplex:"half"}),Y;if(S.isFormData(w)&&(Y=k.headers.get("content-type"))&&L.setContentType(Y),k.body){const[B,H]=Cs(X,vn(Es(O)));w=Ps(k.body,_s,B,H)}}S.isString(M)||(M=M?"include":"omit");const F=s&&"credentials"in n.prototype,q={...D,signal:G,method:b.toUpperCase(),headers:L.normalize().toJSON(),body:w,duplex:"half",credentials:F?M:void 0};V=s&&new n(m,q);let T=await(s?j(V,D):j(m,q));const _=u&&(N==="stream"||N==="response");if(u&&(C||_&&z)){const k={};["status","statusText","headers"].forEach(de=>{k[de]=T[de]});const Y=S.toFiniteNumber(T.headers.get("content-length")),[B,H]=C&&Cs(Y,vn(Es(C),!0))||[];T=new r(Ps(T.body,_s,B,()=>{H&&H(),z&&z()}),k)}N=N||"text";let I=await p[S.findKey(p,N)||"text"](T,h);return!_&&z&&z(),await new Promise((k,Y)=>{Ss(k,Y,{data:I,headers:Ee.from(T.headers),status:T.status,statusText:T.statusText,config:h,request:V})})}catch(F){throw z&&z(),F&&F.name==="TypeError"&&/Load failed|fetch/i.test(F.message)?Object.assign(new ne("Network Error",ne.ERR_NETWORK,h,V),{cause:F.cause||F}):ne.from(F,F&&F.code,h,V)}}},Yu=new Map,Ms=e=>{let t=e?e.env:{};const{fetch:n,Request:r,Response:o}=t,s=[r,o,n];let a=s.length,c=a,d,f,u=Yu;for(;c--;)d=s[c],f=u.get(d),f===void 0&&u.set(d,f=c?new Map:Xu(t)),u=f;return f};Ms();const Ir={http:vu,xhr:Vu,fetch:{get:Ms}};S.forEach(Ir,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ds=e=>`- ${e}`,Ju=e=>S.isFunction(e)||e===null||e===!1,Ls={getAdapter:(e,t)=>{e=S.isArray(e)?e:[e];const{length:n}=e;let r,o;const s={};for(let a=0;a<n;a++){r=e[a];let c;if(o=r,!Ju(r)&&(o=Ir[(c=String(r)).toLowerCase()],o===void 0))throw new ne(`Unknown adapter '${c}'`);if(o&&(S.isFunction(o)||(o=o.get(t))))break;s[c||"#"+a]=o}if(!o){const a=Object.entries(s).map(([d,f])=>`adapter ${d} `+(f===!1?"is not supported by the environment":"is not available in the build"));let c=n?a.length>1?`since :
|
|
4
4
|
`+a.map(Ds).join(`
|
|
5
5
|
`):" "+Ds(a[0]):"as no adapter specified";throw new ne("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return o},adapters:Ir};function Or(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new yt(null,e)}function Fs(e){return Or(e),e.headers=Ee.from(e.headers),e.data=_r.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ls.getAdapter(e.adapter||Ht.adapter,e)(e).then(function(r){return Or(e),r.data=_r.call(e,e.transformResponse,r),r.headers=Ee.from(r.headers),r},function(r){return xs(r)||(Or(e),r&&r.response&&(r.response.data=_r.call(e,e.transformResponse,r.response),r.response.headers=Ee.from(r.response.headers))),Promise.reject(r)})}const $s="1.12.2",yn={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{yn[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Bs={};yn.transitional=function(t,n,r){function o(s,a){return"[Axios v"+$s+"] Transitional option '"+s+"'"+a+(r?". "+r:"")}return(s,a,c)=>{if(t===!1)throw new ne(o(a," has been removed"+(n?" in "+n:"")),ne.ERR_DEPRECATED);return n&&!Bs[a]&&(Bs[a]=!0,console.warn(o(a," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(s,a,c):!0}},yn.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Zu(e,t,n){if(typeof e!="object")throw new ne("options must be an object",ne.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],a=t[s];if(a){const c=e[s],d=c===void 0||a(c,s,e);if(d!==!0)throw new ne("option "+s+" must be "+d,ne.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ne("Unknown option "+s,ne.ERR_BAD_OPTION)}}const xn={assertOptions:Zu,validators:yn},Ve=xn.validators;let lt=class{constructor(t){this.defaults=t||{},this.interceptors={request:new bs,response:new bs}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const s=o.stack?o.stack.replace(/^.+\n/,""):"";try{r.stack?s&&!String(r.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(r.stack+=`
|
|
6
|
-
`+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=ct(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&xn.assertOptions(r,{silentJSONParsing:Ve.transitional(Ve.boolean),forcedJSONParsing:Ve.transitional(Ve.boolean),clarifyTimeoutError:Ve.transitional(Ve.boolean)},!1),o!=null&&(S.isFunction(o)?n.paramsSerializer={serialize:o}:xn.assertOptions(o,{encode:Ve.function,serialize:Ve.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),xn.assertOptions(n,{baseUrl:Ve.spelling("baseURL"),withXsrfToken:Ve.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=s&&S.merge(s.common,s[n.method]);s&&S.forEach(["delete","get","head","post","put","patch","common"],h=>{delete s[h]}),n.headers=Ee.concat(a,s);const c=[];let d=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(n)===!1||(d=d&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const f=[];this.interceptors.response.forEach(function(m){f.push(m.fulfilled,m.rejected)});let u,p=0,g;if(!d){const h=[Fs.bind(this),void 0];for(h.unshift(...c),h.push(...f),g=h.length,u=Promise.resolve(n);p<g;)u=u.then(h[p++],h[p++]);return u}g=c.length;let v=n;for(;p<g;){const h=c[p++],m=c[p++];try{v=h(v)}catch(b){m.call(this,b);break}}try{u=Fs.call(this,v)}catch(h){return Promise.reject(h)}for(p=0,g=f.length;p<g;)u=u.then(f[p++],f[p++]);return u}getUri(t){t=ct(this.defaults,t);const n=Ns(t.baseURL,t.url,t.allowAbsoluteUrls);return ms(n,t.params,t.paramsSerializer)}};S.forEach(["delete","get","head","options"],function(t){lt.prototype[t]=function(n,r){return this.request(ct(r||{},{method:t,url:n,data:(r||{}).data}))}}),S.forEach(["post","put","patch"],function(t){function n(r){return function(s,a,c){return this.request(ct(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:s,data:a}))}}lt.prototype[t]=n(),lt.prototype[t+"Form"]=n(!0)});let Qu=class _d{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(s){n=s});const r=this;this.promise.then(o=>{if(!r._listeners)return;let s=r._listeners.length;for(;s-- >0;)r._listeners[s](o);r._listeners=null}),this.promise.then=o=>{let s;const a=new Promise(c=>{r.subscribe(c),s=c}).then(o);return a.cancel=function(){r.unsubscribe(s)},a},t(function(s,a,c){r.reason||(r.reason=new yt(s,a,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new _d(function(o){t=o}),cancel:t}}};function ef(e){return function(n){return e.apply(null,n)}}function tf(e){return S.isObject(e)&&e.isAxiosError===!0}const kr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(kr).forEach(([e,t])=>{kr[t]=e});function Us(e){const t=new lt(e),n=ts(lt.prototype.request,t);return S.extend(n,lt.prototype,t,{allOwnKeys:!0}),S.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return Us(ct(e,o))},n}const ge=Us(Ht);ge.Axios=lt,ge.CanceledError=yt,ge.CancelToken=Qu,ge.isCancel=xs,ge.VERSION=$s,ge.toFormData=mn,ge.AxiosError=ne,ge.Cancel=ge.CanceledError,ge.all=function(t){return Promise.all(t)},ge.spread=ef,ge.isAxiosError=tf,ge.mergeConfig=ct,ge.AxiosHeaders=Ee,ge.formToJSON=e=>ws(S.isHTMLForm(e)?new FormData(e):e),ge.getAdapter=Ls.getAdapter,ge.HttpStatusCode=kr,ge.default=ge;const{Axios:bw,AxiosError:vw,CanceledError:ww,isCancel:yw,CancelToken:xw,VERSION:Sw,all:Cw,Cancel:Ew,isAxiosError:Nw,spread:Tw,toFormData:Aw,AxiosHeaders:Pw,HttpStatusCode:_w,formToJSON:Iw,getAdapter:Ow,mergeConfig:kw}=ge,xt={};function dt(){var e;try{return typeof window<"u"&&((e=window.localStorage)==null?void 0:e.getItem("chat-debug"))==="1"}catch{return!1}}const zs=xt==null?void 0:xt.VITE_API_BASE_URL,Hs=zs?zs.replace(/\/+$/,""):void 0,Ws=xt==null?void 0:xt.VITE_AUTH_TOKEN;!Hs&&typeof window<"u"&&console.warn("VITE_API_BASE_URL is not set. The API client will need to be configured via apiConfig prop.");const Mr="auth_token";let Sn=(()=>{try{return(typeof localStorage<"u"?localStorage.getItem(Mr):null)||Ws||null}catch{return Ws||null}})();const Dr=new Set;function Lr(){return Sn}function Cn(e){Sn=e;try{typeof localStorage<"u"&&(e?localStorage.setItem(Mr,e):localStorage.removeItem(Mr))}catch{}Dr.forEach(t=>t(e))}function Vs(e){return Dr.add(e),()=>Dr.delete(e)}const ke=ge.create({baseURL:Hs||"http://localhost:8000",timeout:3e4,withCredentials:!0});ke.interceptors.request.use(e=>(Sn&&(e.headers.Authorization=`Bearer ${Sn}`),e));let Fr=!1,Vt=[];async function nf(){if(Fr)return new Promise(e=>Vt.push(e));Fr=!0;try{const{data:e}=await ke.post("/chat/auth/refresh",{},{timeout:3e4}),t=(e==null?void 0:e.accessToken)??null;return Cn(t),Vt.forEach(n=>n(t)),Vt=[],t}catch{return Cn(null),Vt.forEach(t=>t(null)),Vt=[],null}finally{Fr=!1}}ke.interceptors.response.use(e=>e,async e=>{var n;const t=e.config;if(((n=e.response)==null?void 0:n.status)===401&&!(t!=null&&t._retry)){t._retry=!0;const r=await nf();if(r&&t)return t.headers.Authorization=`Bearer ${r}`,ke(t)}return Promise.reject(e)});async function Ze(e,t){return(await ke.get(e,t)).data}async function St(e,t,n){return(await ke.post(e,t,n)).data}async function Rs(e,t,n){return(await ke.put(e,t,n)).data}async function js(e,t){return(await ke.delete(e,t)).data}async function Ks(e,t){var p;const{method:n="POST",body:r,headers:o={},onChunk:s,signal:a}=t,c=Lr();if(dt()){let g=r;try{const v=JSON.parse(JSON.stringify(r));(p=v==null?void 0:v.payload)!=null&&p.files_info&&Array.isArray(v.payload.files_info)&&(v.payload.files_info=v.payload.files_info.map(h=>({...h,data:h!=null&&h.data?`<base64 ${String(h.data).length} chars>`:h==null?void 0:h.data}))),g=v}catch{}console.debug("[api.stream]",n,`${ke.defaults.baseURL}${e}`,g)}const d=await fetch(`${ke.defaults.baseURL}${e.startsWith("/")?"":"/"}${e}`,{method:n,headers:{"Content-Type":"application/json",...c?{Authorization:`Bearer ${c}`}:{},...o},body:r!==void 0?JSON.stringify(r):void 0,credentials:"include",signal:a});if(!d.ok||!d.body){const g=await d.text().catch(()=>"");throw dt()&&console.debug("[api.stream] non-OK",d.status,g==null?void 0:g.slice(0,500)),new Error(`Stream failed: ${d.status} ${d.statusText}${g?": "+g:""}`)}const f=d.body.getReader(),u=new TextDecoder;for(;;){const{done:g,value:v}=await f.read();if(g)break;const h=u.decode(v,{stream:!0});dt()&&console.debug("[api.stream] chunk",h.slice(0,200)),s(h)}}function Ne(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class En{get baseUrl(){return ke.defaults.baseURL||""}updateConfig(t){t.baseUrl&&(ke.defaults.baseURL=t.baseUrl),t.authToken!==void 0&&this.setAuthToken(t.authToken)}getAuthToken(){return Lr()}setAuthToken(t){Cn(t)}onTokenChange(t){return Vs(t)}setTokenProvider(t){this.setAuthToken(t)}async login(t){const n=await St("/chat/auth/login",t);return Ne(n)}async logout(t){const n=await St("/chat/auth/logout",t?{refresh_token:t}:{});Ne(n)}async devLogin(t){const r=await St("/chat/auth/dev-login",t?{email:t}:{});return Ne(r)}async getProfile(){const t=await Ze("/chat/auth/me");return Ne(t)}async listThreads(){const t=await Ze("/chat/threads"),n=Ne(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t){const r=await St("/chat/threads",t?{title:t}:void 0);return Ne(r)}async updateThread(t,n){const r=await Rs(`/chat/threads/${t}`,{title:n});return Ne(r)}async deleteThread(t){const n=await js(`/chat/threads/${t}`);return Ne(n)}async threadInfo(t){const n=await Ze(`/chat/threads/${t}/info`);return Ne(n)}async getMessages(t){const n=await Ze("/chat/messages",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ne(n)}async getState(t){const n=await Ze("/chat/state",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ne(n)}async getStateHistory(t){const n=await Ze("/chat/state/history",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ne(n)}async listCheckpoints(t){const n=await Ze("/chat/checkpoints",{params:{thread_id:t}});return Ne(n)}async uploadImage(t,n="/upload"){const r=new FormData;r.append("file",t,t.name),dt()&&console.debug("[api.uploadImage] ->",n,{name:t.name,type:t.type,size:t.size});const o=await St(n,r,{headers:{Accept:"application/json"},maxBodyLength:1/0}),s=Ne(o);if(dt()&&console.debug("[api.uploadImage] <-",s),!(s!=null&&s.url))throw new Error("Invalid upload response: missing url");return{url:s.url,mimeType:s.mimeType??t.type,name:s.name??t.name,size:s.size??t.size}}async streamChat(t,n,r){var o;try{await Ks("/chat/stream",{method:"POST",body:t,onChunk:s=>{const a=s.split(`
|
|
6
|
+
`+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=ct(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&xn.assertOptions(r,{silentJSONParsing:Ve.transitional(Ve.boolean),forcedJSONParsing:Ve.transitional(Ve.boolean),clarifyTimeoutError:Ve.transitional(Ve.boolean)},!1),o!=null&&(S.isFunction(o)?n.paramsSerializer={serialize:o}:xn.assertOptions(o,{encode:Ve.function,serialize:Ve.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),xn.assertOptions(n,{baseUrl:Ve.spelling("baseURL"),withXsrfToken:Ve.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=s&&S.merge(s.common,s[n.method]);s&&S.forEach(["delete","get","head","post","put","patch","common"],h=>{delete s[h]}),n.headers=Ee.concat(a,s);const c=[];let d=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(n)===!1||(d=d&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const f=[];this.interceptors.response.forEach(function(m){f.push(m.fulfilled,m.rejected)});let u,p=0,g;if(!d){const h=[Fs.bind(this),void 0];for(h.unshift(...c),h.push(...f),g=h.length,u=Promise.resolve(n);p<g;)u=u.then(h[p++],h[p++]);return u}g=c.length;let v=n;for(;p<g;){const h=c[p++],m=c[p++];try{v=h(v)}catch(b){m.call(this,b);break}}try{u=Fs.call(this,v)}catch(h){return Promise.reject(h)}for(p=0,g=f.length;p<g;)u=u.then(f[p++],f[p++]);return u}getUri(t){t=ct(this.defaults,t);const n=Ns(t.baseURL,t.url,t.allowAbsoluteUrls);return ms(n,t.params,t.paramsSerializer)}};S.forEach(["delete","get","head","options"],function(t){lt.prototype[t]=function(n,r){return this.request(ct(r||{},{method:t,url:n,data:(r||{}).data}))}}),S.forEach(["post","put","patch"],function(t){function n(r){return function(s,a,c){return this.request(ct(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:s,data:a}))}}lt.prototype[t]=n(),lt.prototype[t+"Form"]=n(!0)});let Qu=class _d{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(s){n=s});const r=this;this.promise.then(o=>{if(!r._listeners)return;let s=r._listeners.length;for(;s-- >0;)r._listeners[s](o);r._listeners=null}),this.promise.then=o=>{let s;const a=new Promise(c=>{r.subscribe(c),s=c}).then(o);return a.cancel=function(){r.unsubscribe(s)},a},t(function(s,a,c){r.reason||(r.reason=new yt(s,a,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new _d(function(o){t=o}),cancel:t}}};function ef(e){return function(n){return e.apply(null,n)}}function tf(e){return S.isObject(e)&&e.isAxiosError===!0}const kr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(kr).forEach(([e,t])=>{kr[t]=e});function Us(e){const t=new lt(e),n=ts(lt.prototype.request,t);return S.extend(n,lt.prototype,t,{allOwnKeys:!0}),S.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return Us(ct(e,o))},n}const ge=Us(Ht);ge.Axios=lt,ge.CanceledError=yt,ge.CancelToken=Qu,ge.isCancel=xs,ge.VERSION=$s,ge.toFormData=mn,ge.AxiosError=ne,ge.Cancel=ge.CanceledError,ge.all=function(t){return Promise.all(t)},ge.spread=ef,ge.isAxiosError=tf,ge.mergeConfig=ct,ge.AxiosHeaders=Ee,ge.formToJSON=e=>ws(S.isHTMLForm(e)?new FormData(e):e),ge.getAdapter=Ls.getAdapter,ge.HttpStatusCode=kr,ge.default=ge;const{Axios:bw,AxiosError:vw,CanceledError:ww,isCancel:yw,CancelToken:xw,VERSION:Sw,all:Cw,Cancel:Ew,isAxiosError:Nw,spread:Tw,toFormData:Aw,AxiosHeaders:Pw,HttpStatusCode:_w,formToJSON:Iw,getAdapter:Ow,mergeConfig:kw}=ge,xt={};function dt(){var e;try{return typeof window<"u"&&((e=window.localStorage)==null?void 0:e.getItem("chat-debug"))==="1"}catch{return!1}}const zs=xt==null?void 0:xt.VITE_API_BASE_URL,Hs=zs?zs.replace(/\/+$/,""):void 0,Ws=xt==null?void 0:xt.VITE_AUTH_TOKEN;!Hs&&typeof window<"u"&&console.warn("VITE_API_BASE_URL is not set. The API client will need to be configured via apiConfig prop.");const Mr="auth_token";let Sn=(()=>{try{return(typeof localStorage<"u"?localStorage.getItem(Mr):null)||Ws||null}catch{return Ws||null}})();const Dr=new Set;function Lr(){return Sn}function Cn(e){Sn=e;try{typeof localStorage<"u"&&(e?localStorage.setItem(Mr,e):localStorage.removeItem(Mr))}catch{}Dr.forEach(t=>t(e))}function Vs(e){return Dr.add(e),()=>Dr.delete(e)}const ke=ge.create({baseURL:Hs||"http://localhost:8000",timeout:3e4,withCredentials:!0});ke.interceptors.request.use(e=>(Sn&&(e.headers.Authorization=`Bearer ${Sn}`),e));let Fr=!1,Vt=[];async function nf(){if(Fr)return new Promise(e=>Vt.push(e));Fr=!0;try{const{data:e}=await ke.post("/auth/refresh",{},{timeout:3e4}),t=(e==null?void 0:e.accessToken)??null;return Cn(t),Vt.forEach(n=>n(t)),Vt=[],t}catch{return Cn(null),Vt.forEach(t=>t(null)),Vt=[],null}finally{Fr=!1}}ke.interceptors.response.use(e=>e,async e=>{var n;const t=e.config;if(((n=e.response)==null?void 0:n.status)===401&&!(t!=null&&t._retry)){t._retry=!0;const r=await nf();if(r&&t)return t.headers.Authorization=`Bearer ${r}`,ke(t)}return Promise.reject(e)});async function Ze(e,t){return(await ke.get(e,t)).data}async function St(e,t,n){return(await ke.post(e,t,n)).data}async function Rs(e,t,n){return(await ke.put(e,t,n)).data}async function js(e,t){return(await ke.delete(e,t)).data}async function Ks(e,t){var p;const{method:n="POST",body:r,headers:o={},onChunk:s,signal:a}=t,c=Lr();if(dt()){let g=r;try{const v=JSON.parse(JSON.stringify(r));(p=v==null?void 0:v.payload)!=null&&p.files_info&&Array.isArray(v.payload.files_info)&&(v.payload.files_info=v.payload.files_info.map(h=>({...h,data:h!=null&&h.data?`<base64 ${String(h.data).length} chars>`:h==null?void 0:h.data}))),g=v}catch{}console.debug("[api.stream]",n,`${ke.defaults.baseURL}${e}`,g)}const d=await fetch(`${ke.defaults.baseURL}${e.startsWith("/")?"":"/"}${e}`,{method:n,headers:{"Content-Type":"application/json",...c?{Authorization:`Bearer ${c}`}:{},...o},body:r!==void 0?JSON.stringify(r):void 0,credentials:"include",signal:a});if(!d.ok||!d.body){const g=await d.text().catch(()=>"");throw dt()&&console.debug("[api.stream] non-OK",d.status,g==null?void 0:g.slice(0,500)),new Error(`Stream failed: ${d.status} ${d.statusText}${g?": "+g:""}`)}const f=d.body.getReader(),u=new TextDecoder;for(;;){const{done:g,value:v}=await f.read();if(g)break;const h=u.decode(v,{stream:!0});dt()&&console.debug("[api.stream] chunk",h.slice(0,200)),s(h)}}function Ne(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class En{get baseUrl(){return ke.defaults.baseURL||""}updateConfig(t){t.baseUrl&&(ke.defaults.baseURL=t.baseUrl),t.authToken!==void 0&&this.setAuthToken(t.authToken)}getAuthToken(){return Lr()}setAuthToken(t){Cn(t)}onTokenChange(t){return Vs(t)}setTokenProvider(t){this.setAuthToken(t)}async login(t){const n=await St("/auth/login",t);return Ne(n)}async logout(t){const n=await St("/auth/logout",t?{refresh_token:t}:{});Ne(n)}async devLogin(t){const r=await St("/auth/dev-login",t?{email:t}:{});return Ne(r)}async getProfile(){const t=await Ze("/auth/me");return Ne(t)}async listThreads(){const t=await Ze("/chat/threads"),n=Ne(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t){const r=await St("/chat/threads",t?{title:t}:void 0);return Ne(r)}async updateThread(t,n){const r=await Rs(`/chat/threads/${t}`,{title:n});return Ne(r)}async deleteThread(t){const n=await js(`/chat/threads/${t}`);return Ne(n)}async threadInfo(t){const n=await Ze(`/chat/threads/${t}/info`);return Ne(n)}async getMessages(t){const n=await Ze("/chat/messages",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ne(n)}async getState(t){const n=await Ze("/chat/state",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ne(n)}async getStateHistory(t){const n=await Ze("/chat/state/history",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ne(n)}async listCheckpoints(t){const n=await Ze("/chat/checkpoints",{params:{thread_id:t}});return Ne(n)}async uploadImage(t,n="/upload"){const r=new FormData;r.append("file",t,t.name),dt()&&console.debug("[api.uploadImage] ->",n,{name:t.name,type:t.type,size:t.size});const o=await St(n,r,{headers:{Accept:"application/json"},maxBodyLength:1/0}),s=Ne(o);if(dt()&&console.debug("[api.uploadImage] <-",s),!(s!=null&&s.url))throw new Error("Invalid upload response: missing url");return{url:s.url,mimeType:s.mimeType??t.type,name:s.name??t.name,size:s.size??t.size}}async streamChat(t,n,r){var o;try{await Ks("/chat/stream",{method:"POST",body:t,onChunk:s=>{const a=s.split(`
|
|
7
7
|
`);for(const c of a)if(c.startsWith("data: "))try{const d=c.slice(6);if(d==="[DONE]")return;const f=JSON.parse(d);dt()&&console.debug("[api.streamChat] event",f==null?void 0:f.type,f),n(f)}catch(d){dt()&&console.debug("[api.streamChat] parse error",c,d)}},signal:r==null?void 0:r.signal})}catch(s){throw(o=r==null?void 0:r.onError)==null||o.call(r,s),s}}}const Qe=new En,rf=En,of=En;function Gs(e={}){const t=e.baseUrl??"/api",n=e.streamPath??"/stream",[r,o]=P.useState(e.token??null),s=P.useRef(e.headers??{}),[a,c]=P.useState(!1),[d,f]=P.useState(null),[u,p]=P.useState(""),[g,v]=P.useState(null),h=P.useRef(null),m=P.useCallback(x=>{o(x)},[]),b=P.useCallback(()=>{var x;(x=h.current)==null||x.abort(),h.current=null,c(!1)},[]),w=P.useCallback(()=>{p(""),v(null),f(null)},[]),y=P.useCallback((x,E,C)=>{h.current&&(h.current.abort(),h.current=null),c(!0),f(null),e.autoAppendAssistant!==!1&&p("");const O=new AbortController;return h.current=O,(async()=>{var M,D,j,G;const N=(()=>{var V;try{return typeof window<"u"&&((V=window.localStorage)==null?void 0:V.getItem("chat-debug"))==="1"}catch{return!1}})(),L=V=>{var z;try{const X=JSON.parse(JSON.stringify(V));return(z=X==null?void 0:X.payload)!=null&&z.files_info&&Array.isArray(X.payload.files_info)&&(X.payload.files_info=X.payload.files_info.map(F=>({...F,data:F!=null&&F.data?`<base64 ${String(F.data).length} chars>`:F==null?void 0:F.data}))),X}catch{return V}};try{let V={};try{if(r)V={Authorization:`Bearer ${r}`};else if(typeof window<"u"){const _=window.__AUTH_TOKEN__,I=((M=window.localStorage)==null?void 0:M.getItem("authToken"))||null;let k=null;try{const B=(D=window.localStorage)==null?void 0:D.getItem("chat-settings");B&&(k=((j=JSON.parse(B))==null?void 0:j.apiKey)||null)}catch{}const Y=_||I||k||null;Y&&(V={Authorization:`Bearer ${Y}`})}}catch{}N&&console.debug("[use-chat] POST",t+n,L(x));const z=await fetch(t+n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",...V,...s.current},body:JSON.stringify(x),signal:O.signal});if(!z.ok||!z.body){const T=await z.text().catch(()=>"");throw N&&console.debug("[use-chat] non-OK response",z.status,T==null?void 0:T.slice(0,500)),new Error(`stream ${z.status}${T?": "+T:""}`)}const X=z.body.getReader(),F=new TextDecoder;let q="";for(;;){const{value:T,done:_}=await X.read();if(_)break;q+=F.decode(T,{stream:!0});let I;for(;(I=q.indexOf(`
|
|
8
8
|
|
|
9
9
|
`))>=0;){const k=q.slice(0,I);q=q.slice(I+2);const Y=af(k);if(!Y)continue;let B;try{B=JSON.parse(Y)}catch{N&&console.debug("[use-chat] skip malformed SSE data:",Y==null?void 0:Y.slice(0,200));continue}const H=sf(B)?B.data:B;if(N&&console.debug("[use-chat] event:",H==null?void 0:H.type,H),E==null||E(H),H.type==="token")e.autoAppendAssistant!==!1&&p(de=>de+H.content);else if(H.type==="message_delta"){const de=H.delta.filter(ie=>ie.type==="text").map(ie=>ie.text).join("");de&&e.autoAppendAssistant!==!1&&p(ie=>ie+de)}else H.type==="checkpoint"?v(H.checkpointId):H.type==="error"&&f(H.message)}}}catch(V){if((V==null?void 0:V.name)==="AbortError")return;const z=(V==null?void 0:V.message)||String(V);N&&console.debug("[use-chat] error:",z),f(z),(G=C==null?void 0:C.onError)==null||G.call(C,z)}finally{c(!1),h.current=null}})(),{close:()=>O.abort()}},[t,r,e.autoAppendAssistant]);return P.useEffect(()=>()=>{var x;return(x=h.current)==null?void 0:x.abort()},[]),{isStreaming:a,error:d,assistantText:u,lastCheckpointId:g,stream:y,stop:b,clear:w,setToken:m}}function sf(e){return!!e&&typeof e=="object"&&e.protocolVersion==="v1"&&"data"in e}function af(e){const t=e.split(/\r?\n/),n=[];for(const r of t)if(r&&!r.startsWith(":")&&r.startsWith("data:")){const o=r.slice(5);n.push(o.startsWith(" ")?o.slice(1):o)}return n.length===0?null:n.join(`
|
package/package.json
CHANGED