teodor-new-chat-ui 4.2.4 → 4.2.5
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 +1237 -1235
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -32,7 +32,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
32
32
|
`)}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[Nl]=this[Nl]={accessors:{}}).accessors,o=this.prototype;function s(i){const a=Ur(i);r[a]||(lg(o,i),r[a]=!0)}return R.isArray(t)?t.forEach(s):s(t),this}};Ot.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),R.reduceDescriptors(Ot.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}}),R.freezeMethods(Ot);function ai(e,t){const n=this||Hr,r=t||n,o=Ot.from(r.headers);let s=r.data;return R.forEach(e,function(a){s=a.call(n,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function Al(e){return!!(e&&e.__CANCEL__)}function gr(e,t,n){Me.call(this,e??"canceled",Me.ERR_CANCELED,t,n),this.name="CanceledError"}R.inherits(gr,Me,{__CANCEL__:!0});function _l(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new Me("Request failed with status code "+n.status,[Me.ERR_BAD_REQUEST,Me.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function cg(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function ug(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o=0,s=0,i;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),d=r[s];i||(i=u),n[o]=l,r[o]=u;let f=s,h=0;for(;f!==o;)h+=n[f++],f=f%e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),u-i<t)return;const p=d&&u-d;return p?Math.round(h*1e3/p):void 0}}function dg(e,t){let n=0,r=1e3/t,o,s;const i=(u,d=Date.now())=>{n=d,o=null,s&&(clearTimeout(s),s=null),e(...u)};return[(...u)=>{const d=Date.now(),f=d-n;f>=r?i(u,d):(o=u,s||(s=setTimeout(()=>{s=null,i(o)},r-f)))},()=>o&&i(o)]}const ko=(e,t,n=3)=>{let r=0;const o=ug(50,250);return dg(s=>{const i=s.loaded,a=s.lengthComputable?s.total:void 0,l=i-r,u=o(l),d=i<=a;r=i;const f={loaded:i,total:a,progress:a?i/a:void 0,bytes:l,rate:u||void 0,estimated:u&&a&&d?(a-i)/u:void 0,event:s,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},jl=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Rl=e=>(...t)=>R.asap(()=>e(...t)),fg=Tt.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Tt.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Tt.origin),Tt.navigator&&/(msie|trident)/i.test(Tt.navigator.userAgent)):()=>!0,hg=Tt.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const i=[e+"="+encodeURIComponent(t)];R.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),R.isString(r)&&i.push("path="+r),R.isString(o)&&i.push("domain="+o),s===!0&&i.push("secure"),document.cookie=i.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 pg(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function mg(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Pl(e,t,n){let r=!pg(t);return e&&(r||n==!1)?mg(e,t):t}const Ol=e=>e instanceof Ot?{...e}:e;function qn(e,t){t=t||{};const n={};function r(u,d,f,h){return R.isPlainObject(u)&&R.isPlainObject(d)?R.merge.call({caseless:h},u,d):R.isPlainObject(d)?R.merge({},d):R.isArray(d)?d.slice():d}function o(u,d,f,h){if(R.isUndefined(d)){if(!R.isUndefined(u))return r(void 0,u,f,h)}else return r(u,d,f,h)}function s(u,d){if(!R.isUndefined(d))return r(void 0,d)}function i(u,d){if(R.isUndefined(d)){if(!R.isUndefined(u))return r(void 0,u)}else return r(void 0,d)}function a(u,d,f){if(f in t)return r(u,d);if(f in e)return r(void 0,u)}const l={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,d,f)=>o(Ol(u),Ol(d),f,!0)};return R.forEach(Object.keys({...e,...t}),function(d){const f=l[d]||o,h=f(e[d],t[d],d);R.isUndefined(h)&&f!==a||(n[d]=h)}),n}const Ml=e=>{const t=qn({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:s,headers:i,auth:a}=t;if(t.headers=i=Ot.from(i),t.url=Tl(Pl(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):""))),R.isFormData(n)){if(Tt.hasStandardBrowserEnv||Tt.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(R.isFunction(n.getHeaders)){const l=n.getHeaders(),u=["content-type","content-length"];Object.entries(l).forEach(([d,f])=>{u.includes(d.toLowerCase())&&i.set(d,f)})}}if(Tt.hasStandardBrowserEnv&&(r&&R.isFunction(r)&&(r=r(t)),r||r!==!1&&fg(t.url))){const l=o&&s&&hg.read(s);l&&i.set(o,l)}return t},gg=typeof XMLHttpRequest<"u"&&function(e){return new Promise(function(n,r){const o=Ml(e);let s=o.data;const i=Ot.from(o.headers).normalize();let{responseType:a,onUploadProgress:l,onDownloadProgress:u}=o,d,f,h,p,x;function w(){p&&p(),x&&x(),o.cancelToken&&o.cancelToken.unsubscribe(d),o.signal&&o.signal.removeEventListener("abort",d)}let g=new XMLHttpRequest;g.open(o.method.toUpperCase(),o.url,!0),g.timeout=o.timeout;function v(){if(!g)return;const S=Ot.from("getAllResponseHeaders"in g&&g.getAllResponseHeaders()),C={data:!a||a==="text"||a==="json"?g.responseText:g.response,status:g.status,statusText:g.statusText,headers:S,config:e,request:g};_l(function(E){n(E),w()},function(E){r(E),w()},C),g=null}"onloadend"in g?g.onloadend=v:g.onreadystatechange=function(){!g||g.readyState!==4||g.status===0&&!(g.responseURL&&g.responseURL.indexOf("file:")===0)||setTimeout(v)},g.onabort=function(){g&&(r(new Me("Request aborted",Me.ECONNABORTED,e,g)),g=null)},g.onerror=function(N){const C=N&&N.message?N.message:"Network Error",k=new Me(C,Me.ERR_NETWORK,e,g);k.event=N||null,r(k),g=null},g.ontimeout=function(){let N=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const C=o.transitional||Il;o.timeoutErrorMessage&&(N=o.timeoutErrorMessage),r(new Me(N,C.clarifyTimeoutError?Me.ETIMEDOUT:Me.ECONNABORTED,e,g)),g=null},s===void 0&&i.setContentType(null),"setRequestHeader"in g&&R.forEach(i.toJSON(),function(N,C){g.setRequestHeader(C,N)}),R.isUndefined(o.withCredentials)||(g.withCredentials=!!o.withCredentials),a&&a!=="json"&&(g.responseType=o.responseType),u&&([h,x]=ko(u,!0),g.addEventListener("progress",h)),l&&g.upload&&([f,p]=ko(l),g.upload.addEventListener("progress",f),g.upload.addEventListener("loadend",p)),(o.cancelToken||o.signal)&&(d=S=>{g&&(r(!S||S.type?new gr(null,e,g):S),g.abort(),g=null)},o.cancelToken&&o.cancelToken.subscribe(d),o.signal&&(o.signal.aborted?d():o.signal.addEventListener("abort",d)));const b=cg(o.url);if(b&&Tt.protocols.indexOf(b)===-1){r(new Me("Unsupported protocol "+b+":",Me.ERR_BAD_REQUEST,e));return}g.send(s||null)})},xg=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,o;const s=function(u){if(!o){o=!0,a();const d=u instanceof Error?u:this.reason;r.abort(d instanceof Me?d:new gr(d instanceof Error?d.message:d))}};let i=t&&setTimeout(()=>{i=null,s(new Me(`timeout ${t} of ms exceeded`,Me.ETIMEDOUT))},t);const a=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),e=null)};e.forEach(u=>u.addEventListener("abort",s));const{signal:l}=r;return l.unsubscribe=()=>R.asap(a),l}},vg=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},wg=async function*(e,t){for await(const n of bg(e))yield*vg(n,t)},bg=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()}},Dl=(e,t,n,r)=>{const o=wg(e,t);let s=0,i,a=l=>{i||(i=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:u,value:d}=await o.next();if(u){a(),l.close();return}let f=d.byteLength;if(n){let h=s+=f;n(h)}l.enqueue(new Uint8Array(d))}catch(u){throw a(u),u}},cancel(l){return a(l),o.return()}},{highWaterMark:2})},Ll=64*1024,{isFunction:Io}=R,yg=(({Request:e,Response:t})=>({Request:e,Response:t}))(R.global),{ReadableStream:Fl,TextEncoder:$l}=R.global,zl=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Sg=e=>{e=R.merge.call({skipUndefined:!0},yg,e);const{fetch:t,Request:n,Response:r}=e,o=t?Io(t):typeof fetch=="function",s=Io(n),i=Io(r);if(!o)return!1;const a=o&&Io(Fl),l=o&&(typeof $l=="function"?(x=>w=>x.encode(w))(new $l):async x=>new Uint8Array(await new n(x).arrayBuffer())),u=s&&a&&zl(()=>{let x=!1;const w=new n(Tt.origin,{body:new Fl,method:"POST",get duplex(){return x=!0,"half"}}).headers.has("Content-Type");return x&&!w}),d=i&&a&&zl(()=>R.isReadableStream(new r("").body)),f={stream:d&&(x=>x.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(x=>{!f[x]&&(f[x]=(w,g)=>{let v=w&&w[x];if(v)return v.call(w);throw new Me(`Response type '${x}' is not supported`,Me.ERR_NOT_SUPPORT,g)})});const h=async x=>{if(x==null)return 0;if(R.isBlob(x))return x.size;if(R.isSpecCompliantForm(x))return(await new n(Tt.origin,{method:"POST",body:x}).arrayBuffer()).byteLength;if(R.isArrayBufferView(x)||R.isArrayBuffer(x))return x.byteLength;if(R.isURLSearchParams(x)&&(x=x+""),R.isString(x))return(await l(x)).byteLength},p=async(x,w)=>{const g=R.toFiniteNumber(x.getContentLength());return g??h(w)};return async x=>{let{url:w,method:g,data:v,signal:b,cancelToken:S,timeout:N,onDownloadProgress:C,onUploadProgress:k,responseType:E,headers:A,withCredentials:j="same-origin",fetchOptions:P}=Ml(x),L=t||fetch;E=E?(E+"").toLowerCase():"text";let F=xg([b,S&&S.toAbortSignal()],N),V=null;const M=F&&F.unsubscribe&&(()=>{F.unsubscribe()});let Y;try{if(k&&u&&g!=="get"&&g!=="head"&&(Y=await p(A,v))!==0){let D=new n(w,{method:"POST",body:v,duplex:"half"}),ee;if(R.isFormData(v)&&(ee=D.headers.get("content-type"))&&A.setContentType(ee),D.body){const[fe,ve]=jl(Y,ko(Rl(k)));v=Dl(D.body,Ll,fe,ve)}}R.isString(j)||(j=j?"include":"omit");const q=s&&"credentials"in n.prototype,W={...P,signal:F,method:g.toUpperCase(),headers:A.normalize().toJSON(),body:v,duplex:"half",credentials:q?j:void 0};V=s&&new n(w,W);let z=await(s?L(V,P):L(w,W));const $=d&&(E==="stream"||E==="response");if(d&&(C||$&&M)){const D={};["status","statusText","headers"].forEach(be=>{D[be]=z[be]});const ee=R.toFiniteNumber(z.headers.get("content-length")),[fe,ve]=C&&jl(ee,ko(Rl(C),!0))||[];z=new r(Dl(z.body,Ll,fe,()=>{ve&&ve(),M&&M()}),D)}E=E||"text";let ue=await f[R.findKey(f,E)||"text"](z,x);return!$&&M&&M(),await new Promise((D,ee)=>{_l(D,ee,{data:ue,headers:Ot.from(z.headers),status:z.status,statusText:z.statusText,config:x,request:V})})}catch(q){throw M&&M(),q&&q.name==="TypeError"&&/Load failed|fetch/i.test(q.message)?Object.assign(new Me("Network Error",Me.ERR_NETWORK,x,V),{cause:q.cause||q}):Me.from(q,q&&q.code,x,V)}}},Cg=new Map,Bl=e=>{let t=e?e.env:{};const{fetch:n,Request:r,Response:o}=t,s=[r,o,n];let i=s.length,a=i,l,u,d=Cg;for(;a--;)l=s[a],u=d.get(l),u===void 0&&d.set(l,u=a?new Map:Sg(t)),d=u;return u};Bl();const li={http:Vm,xhr:gg,fetch:{get:Bl}};R.forEach(li,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Hl=e=>`- ${e}`,Tg=e=>R.isFunction(e)||e===null||e===!1,Ul={getAdapter:(e,t)=>{e=R.isArray(e)?e:[e];const{length:n}=e;let r,o;const s={};for(let i=0;i<n;i++){r=e[i];let a;if(o=r,!Tg(r)&&(o=li[(a=String(r)).toLowerCase()],o===void 0))throw new Me(`Unknown adapter '${a}'`);if(o&&(R.isFunction(o)||(o=o.get(t))))break;s[a||"#"+i]=o}if(!o){const i=Object.entries(s).map(([l,u])=>`adapter ${l} `+(u===!1?"is not supported by the environment":"is not available in the build"));let a=n?i.length>1?`since :
|
|
33
33
|
`+i.map(Hl).join(`
|
|
34
34
|
`):" "+Hl(i[0]):"as no adapter specified";throw new Me("There is no suitable adapter to dispatch the request "+a,"ERR_NOT_SUPPORT")}return o},adapters:li};function ci(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new gr(null,e)}function Wl(e){return ci(e),e.headers=Ot.from(e.headers),e.data=ai.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ul.getAdapter(e.adapter||Hr.adapter,e)(e).then(function(r){return ci(e),r.data=ai.call(e,e.transformResponse,r),r.headers=Ot.from(r.headers),r},function(r){return Al(r)||(ci(e),r&&r.response&&(r.response.data=ai.call(e,e.transformResponse,r.response),r.response.headers=Ot.from(r.response.headers))),Promise.reject(r)})}const Vl="1.12.2",Eo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Eo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const ql={};Eo.transitional=function(t,n,r){function o(s,i){return"[Axios v"+Vl+"] Transitional option '"+s+"'"+i+(r?". "+r:"")}return(s,i,a)=>{if(t===!1)throw new Me(o(i," has been removed"+(n?" in "+n:"")),Me.ERR_DEPRECATED);return n&&!ql[i]&&(ql[i]=!0,console.warn(o(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(s,i,a):!0}},Eo.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function kg(e,t,n){if(typeof e!="object")throw new Me("options must be an object",Me.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=t[s];if(i){const a=e[s],l=a===void 0||i(a,s,e);if(l!==!0)throw new Me("option "+s+" must be "+l,Me.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Me("Unknown option "+s,Me.ERR_BAD_OPTION)}}const No={assertOptions:kg,validators:Eo},un=No.validators;let Kn=class{constructor(t){this.defaults=t||{},this.interceptors={request:new kl,response:new kl}}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+=`
|
|
35
|
-
`+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=qn(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&No.assertOptions(r,{silentJSONParsing:un.transitional(un.boolean),forcedJSONParsing:un.transitional(un.boolean),clarifyTimeoutError:un.transitional(un.boolean)},!1),o!=null&&(R.isFunction(o)?n.paramsSerializer={serialize:o}:No.assertOptions(o,{encode:un.function,serialize:un.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),No.assertOptions(n,{baseUrl:un.spelling("baseURL"),withXsrfToken:un.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=s&&R.merge(s.common,s[n.method]);s&&R.forEach(["delete","get","head","post","put","patch","common"],x=>{delete s[x]}),n.headers=Ot.concat(i,s);const a=[];let l=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(l=l&&w.synchronous,a.unshift(w.fulfilled,w.rejected))});const u=[];this.interceptors.response.forEach(function(w){u.push(w.fulfilled,w.rejected)});let d,f=0,h;if(!l){const x=[Wl.bind(this),void 0];for(x.unshift(...a),x.push(...u),h=x.length,d=Promise.resolve(n);f<h;)d=d.then(x[f++],x[f++]);return d}h=a.length;let p=n;for(;f<h;){const x=a[f++],w=a[f++];try{p=x(p)}catch(g){w.call(this,g);break}}try{d=Wl.call(this,p)}catch(x){return Promise.reject(x)}for(f=0,h=u.length;f<h;)d=d.then(u[f++],u[f++]);return d}getUri(t){t=qn(this.defaults,t);const n=Pl(t.baseURL,t.url,t.allowAbsoluteUrls);return Tl(n,t.params,t.paramsSerializer)}};R.forEach(["delete","get","head","options"],function(t){Kn.prototype[t]=function(n,r){return this.request(qn(r||{},{method:t,url:n,data:(r||{}).data}))}}),R.forEach(["post","put","patch"],function(t){function n(r){return function(s,i,a){return this.request(qn(a||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:s,data:i}))}}Kn.prototype[t]=n(),Kn.prototype[t+"Form"]=n(!0)});let Ig=class nm{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 i=new Promise(a=>{r.subscribe(a),s=a}).then(o);return i.cancel=function(){r.unsubscribe(s)},i},t(function(s,i,a){r.reason||(r.reason=new gr(s,i,a),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 nm(function(o){t=o}),cancel:t}}};function Eg(e){return function(n){return e.apply(null,n)}}function Ng(e){return R.isObject(e)&&e.isAxiosError===!0}const ui={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(ui).forEach(([e,t])=>{ui[t]=e});function Kl(e){const t=new Kn(e),n=cl(Kn.prototype.request,t);return R.extend(n,Kn.prototype,t,{allOwnKeys:!0}),R.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return Kl(qn(e,o))},n}const dt=Kl(Hr);dt.Axios=Kn,dt.CanceledError=gr,dt.CancelToken=Ig,dt.isCancel=Al,dt.VERSION=Vl,dt.toFormData=Co,dt.AxiosError=Me,dt.Cancel=dt.CanceledError,dt.all=function(t){return Promise.all(t)},dt.spread=Eg,dt.isAxiosError=Ng,dt.mergeConfig=qn,dt.AxiosHeaders=Ot,dt.formToJSON=e=>El(R.isHTMLForm(e)?new FormData(e):e),dt.getAdapter=Ul.getAdapter,dt.HttpStatusCode=ui,dt.default=dt;const{Axios:dT,AxiosError:fT,CanceledError:hT,isCancel:pT,CancelToken:mT,VERSION:gT,all:xT,Cancel:vT,isAxiosError:wT,spread:bT,toFormData:yT,AxiosHeaders:ST,HttpStatusCode:CT,formToJSON:TT,getAdapter:kT,mergeConfig:IT}=dt,Gl=typeof window<"u"?window.__API_BASE_URL__:void 0,Yl=Gl?Tn(Gl):void 0;function Tn(e){const n=(e!=null&&e.trim()?e.trim():"/api/chat").replace(/\/+$/,"");return n?n.endsWith("/chat")?n:`${n}/chat`:"/api/chat"}let Ao=null;const di=new Set;function Xl(){return Ao}function fi(e){Ao=e,di.forEach(t=>t(e))}function Jl(e){return di.add(e),()=>di.delete(e)}const Wt=dt.create({...Yl?{baseURL:Yl}:{},timeout:3e4,withCredentials:!0});Wt.interceptors.request.use(e=>(Ao&&(e.headers.Authorization=`Bearer ${Ao}`),e)),Wt.interceptors.response.use(e=>e,e=>Promise.reject(e));async function Dt(e,t){return Wt.defaults.baseURL?(await Wt.get(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}async function hi(e,t,n){return Wt.defaults.baseURL?(await Wt.post(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function Zl(e,t,n){return Wt.defaults.baseURL?(await Wt.put(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function Ql(e,t){return Wt.defaults.baseURL?(await Wt.delete(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}function Lt(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class ec{get baseUrl(){const t=Wt.defaults.baseURL;return t?Tn(String(t)):""}updateConfig(t){t.baseUrl&&(Wt.defaults.baseURL=Tn(String(t.baseUrl))),t.authToken!==void 0&&fi(t.authToken)}getAuthToken(){return Xl()}setAuthToken(t){fi(t)}onTokenChange(t){return Jl(t)}async listThreads(){const t=await Dt("/threads"),n=Lt(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t){const r=await hi("/threads",t?{title:t}:void 0);return Lt(r)}async updateThread(t,n){const r=await Zl(`/threads/${t}`,{title:n});return Lt(r)}async deleteThread(t){const n=await Ql(`/threads/${t}`);return Lt(n)}async threadInfo(t){const n=await Dt(`/threads/${t}/info`);return Lt(n)}async listAgents(){const t=await Dt("/agents"),n=Lt(t);return(n==null?void 0:n.items)??[]}async getAgent(t){const n=await Dt(`/agents/${t}`);return Lt(n)}async getAgentSchema(t){const n=await Dt(`/agents/${t}/schema`);return Lt(n)}async getMessages(t){const n=await Dt(`/threads/${t.threadId}/messages`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs,limit:t.limit,before_id:t.beforeId??void 0}});return Lt(n)}async getState(t){const n=await Dt(`/threads/${t.threadId}/state`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Lt(n)}async getStateHistory(t){const n=await Dt(`/threads/${t.threadId}/state/history`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Lt(n)}async listCheckpoints(t){const n=await Dt(`/threads/${t}/checkpoints`,{params:{thread_id:t}});return Lt(n)}resumeStream(t){}async resume(t){const n=await hi("/runs/resume",{thread_id:t.threadId,value:t.value});return Lt(n)}}const jn=new ec,tc=y.createContext(null);function Ag({children:e,apiConfig:t}){const n=jn;if(t){const o=n.baseUrl,s=n.getAuthToken();t.baseUrl&&t.baseUrl!==o&&n.updateConfig({baseUrl:t.baseUrl}),t.apiKey!==void 0&&t.apiKey!==s&&n.updateConfig({authToken:t.apiKey})}const r={token:n.getAuthToken(),setToken:o=>n.setAuthToken(o),api:n,baseUrl:n.baseUrl};return c.jsx(tc.Provider,{value:r,children:e})}function pi(){const e=y.useContext(tc);if(!e)throw new Error("useApi must be used within ApiProvider");return e}function _g(e,t){const n=e==null?void 0:e.checkpoints,r=Array.isArray(n)?n.slice():n?Object.values(n):[],o=i=>i&&typeof i=="object"&&i!==null&&"checkpointId"in i&&"createdAt"in i&&typeof i.checkpointId=="string"&&typeof i.createdAt=="string",s=r.filter(o).map(i=>{const a=i;return{checkpointId:a.checkpointId,checkpointNs:a.checkpointNs??"",createdAt:a.createdAt,messagesLen:a.messagesLen??0,preview:a.preview??"",role:a.role??null,parentId:a.parentId??null,editedMessageId:a.editedMessageId??null,branchLabel:a.branchLabel??null,lastMessageId:a.lastMessageId??null,hasMessages:typeof a.hasMessages=="boolean"?a.hasMessages:void 0}});return{threadId:(e==null?void 0:e.threadId)??t??null,checkpoints:s}}async function jg(e){return await new Promise((t,n)=>{const r=new FileReader;r.onload=()=>{try{const o=r.result,s=new Uint8Array(o);let i="";const a=s.byteLength;for(let l=0;l<a;l++)i+=String.fromCharCode(s[l]);t(btoa(i))}catch(o){n(o)}},r.onerror=o=>n(o),r.readAsArrayBuffer(e)})}async function Rg(e,t=[],n,r,o,s){const i=[],a=[];for(const l of t)try{const u=await jg(l);a.push({filename:l.name,data:u,mime_type:l.type||"application/octet-stream"})}catch{}return{contentParts:i,filesInfo:a}}const Pg={human:"user",user:"user",ai:"assistant",assistant:"assistant",tool:"tool",function:"tool",system:"system"};function Og(e){return e!==null&&typeof e=="object"&&"values"in e&&"config"in e}function nc(e){var u;const n=(Array.isArray(e==null?void 0:e.checkpoints)?(e==null?void 0:e.checkpoints)??[]:e!=null&&e.checkpoints?Object.values(e.checkpoints):[])[0];if(!Og(n))return{threadId:(e==null?void 0:e.threadId)??"",checkpointId:void 0,checkpointNs:void 0,messages:[],hasMore:!1,nextCursor:null};const r=n.values??{},s=(Array.isArray(r==null?void 0:r.messages)?r.messages:[]).map((d,f)=>Mg(d,f)).filter(d=>!!d),i=Wr((u=n.config)==null?void 0:u.configurable),a=At(i,["checkpoint_id","checkpointId"]),l=At(i,["checkpoint_ns","checkpointNs"]);return{threadId:(e==null?void 0:e.threadId)??"",checkpointId:a??void 0,checkpointNs:l??void 0,messages:s,hasMore:!1,nextCursor:null}}function Mg(e,t){if(!e||typeof e!="object")return null;const n=e,r=Wr(n.data)??{},o=String(n.type??r.type??"").toLowerCase(),s=Pg[o];if(!s)return null;const i=r.id??r.message_id??r.run_id??null,a=typeof i=="string"&&i.trim()?i:`history-${s}-${t}`,l=Wr(r.additional_kwargs),u=Wr(r.response_metadata),d=At(l,["createdAt","created_at"])??At(r,["created_at","createdAt"]),f=At(l,["checkpointId","checkpoint_id"]),h=At(l,["checkpointNs","checkpoint_ns"]),p=Dg(r.content),x={id:a,role:s,content:p};d&&(x.createdAt=d),typeof r.name=="string"&&r.name.trim()&&(x.name=r.name),typeof(u==null?void 0:u.model_name)=="string"&&(x.model=String(u.model_name)),f&&(x.checkpointId=f),h&&(x.checkpointNs=h);const w=Bg(l,["createdAt","created_at","checkpointId","checkpoint_id","checkpointNs","checkpoint_ns","tool_calls"]),g=u?{...u}:void 0;w&&Object.keys(w).length&&(x.additionalKwargs=w),g&&Object.keys(g).length&&(x.responseMetadata=g);const v=Lg((l==null?void 0:l.tool_calls)??r.tool_calls);if(v.length&&(x.content=[...x.content,...v]),s==="tool"){const b=$g(r,x.content);b&&(x.content=b)}return x}function Dg(e){if(!e)return[];if(Array.isArray(e))return e.map(t=>rc(t)).filter(t=>!!t);if(typeof e=="string")return e.trim()?[{type:"text",text:e.trim()}]:[];if(typeof e=="object"){const t=rc(e);return t?[t]:[]}return[]}function rc(e){if(!e||typeof e!="object")return typeof e=="string"&&e.trim()?{type:"text",text:e}:null;const t=e,n=String(t.type??"").toLowerCase();if(!n||n==="text"){const o=typeof t.text=="string"?t.text:typeof t.value=="string"?t.value:"";return o.trim()?{type:"text",text:o}:null}if(n==="image"||n==="image_url"){const o=At(t,["url","src"]);if(!o)return null;const s={type:"image_url",url:o};return typeof t.mimeType=="string"&&(s.mimeType=t.mimeType),typeof t.alt=="string"&&(s.alt=t.alt),s}if(n==="file"){const o=At(t,["url"]);if(!o)return null;const s={type:"file",url:o};return typeof t.mimeType=="string"&&(s.mimeType=t.mimeType),typeof t.name=="string"&&(s.name=t.name),typeof t.size=="number"&&(s.size=t.size),typeof t.sourceType=="string"&&(s.sourceType=t.sourceType),s}if(n==="tool_call")return Fg(t)??null;if(n==="tool_end"){const o=At(t,["tool_call_id","toolCallId","id"]);if(!o)return null;const s={type:"tool_end",toolCallId:o,output:"output"in t?t.output:t.content};return typeof t.error=="string"&&(s.error=t.error),s}if(n==="interrupt")return{type:"interrupt",value:t.value,...t};if(n==="tool"){const o=At(t,["text","content"]);if(o)return{type:"text",text:o}}const r=typeof t.content=="string"?t.content:typeof t.value=="string"?t.value:JSON.stringify(t);return r?{type:"text",text:r}:null}function Lg(e){return Array.isArray(e)?e.map((t,n)=>{if(!t||typeof t!="object")return null;const r=t,o=At(r,["id","call_id"]),s=Wr(r.function),i=At(s,["name"])??"tool",a=s==null?void 0:s.arguments,l=oc(a);return{type:"tool_call",id:o??`tool_call_${n}`,name:i,args:l}}).filter(t=>!!t):[]}function Fg(e){const t=At(e,["id","call_id"]),n=At(e,["name"]);if(!t||!n)return null;const r=oc(e.args??e.arguments);return{type:"tool_call",id:t,name:n,args:r}}function $g(e,t){const n=At(e,["tool_call_id","toolCallId","id"]);if(!n)return t;const r=e.content??e.output,o=typeof r=="string"?zg(r):r,s={type:"tool_end",toolCallId:n,output:o};return typeof e.error=="string"&&(s.error=e.error),[s]}function oc(e){if(!e)return{};if(typeof e=="string")try{const t=JSON.parse(e);return typeof t=="object"&&t!==null?t:{raw:e}}catch{return{raw:e}}return typeof e=="object"&&!Array.isArray(e)?{...e}:{}}function zg(e){try{return JSON.parse(e)}catch{return e}}function Wr(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return{...e}}function At(e,t){if(e)for(const n of t){const r=e[n];if(typeof r=="string"&&r.trim())return r}}function Bg(e,t){if(!e)return;const n={};let r=!1;for(const[o,s]of Object.entries(e)){if(t.includes(o)){r=!0;continue}s!==void 0&&(n[o]=s)}return r?Object.keys(n).length?n:void 0:e}function Hg(e){return e.type!=="thread_info"&&e.type!=="token"}const Ug={messages:[],assemblingId:null,lastCheckpointId:null,lastCheckpointNs:null,toolIndex:{},lastBranch:null,messagesStreamMeta:{}};function Wg(e,t){var n;switch(t.type){case"reset":{console.log("[MessageReducer] 🔄 RESET action received"),console.log("[MessageReducer] 📊 Before reset - messages count:",e.messages.length);const r={messages:mi(((n=t.payload)==null?void 0:n.messages)??[]),assemblingId:null,lastCheckpointId:null,lastCheckpointNs:null,toolIndex:{},lastBranch:null};return console.log("[MessageReducer] 📊 After reset - messages count:",r.messages.length),r}case"seed":{const r=mi(t.payload.messages),o={...e,messages:r,assemblingId:null};return Object.prototype.hasOwnProperty.call(t.payload,"checkpointId")&&(o.lastCheckpointId=t.payload.checkpointId??null),Object.prototype.hasOwnProperty.call(t.payload,"checkpointNs")&&(o.lastCheckpointNs=t.payload.checkpointNs??null),console.log("[MessageReducer] seed action (REPLACE mode):",{incomingCount:t.payload.messages.length,sanitizedCount:r.length,previousCount:e.messages.length,checkpointId:o.lastCheckpointId}),o}case"prepend":{const r=mi(t.payload.messages);if(!r.length)return console.log("[MessageReducer] No incoming messages after sanitize - skipping"),e;const o=new Set(e.messages.map(i=>i.id)),s=r.filter(i=>!o.has(i.id));return console.log("[MessageReducer] After dedup:",{uniqueCount:s.length,duplicates:r.length-s.length,finalTotal:s.length+e.messages.length}),s.length?{...e,messages:[...s,...e.messages]}:(console.log("[MessageReducer] All messages were duplicates - skipping"),e)}case"user_message":{const r=t.payload.message;return e.messages.some(o=>o.id===r.id)?e:{...e,messages:[...e.messages,r]}}case"event":return ic(e,t.payload.ev);case"batch":{const{events:r}=t.payload;return r.length?r.reduce((o,s)=>ic(o,s),e):e}case"interrupt_response":{const{interruptId:r}=t.payload,o=e.messages.map(s=>({...s,content:s.content.filter(i=>i.type!=="interrupt")}));return{...e,messages:o,pendingInterrupt:null}}default:return e}}function sc(e=[]){const[t,n]=y.useReducer(Wg,{...Ug,messages:e}),r=y.useRef([]),o=y.useRef(null),s=y.useRef(null),i=y.useCallback(()=>{o.current!==null&&typeof window<"u"&&window.cancelAnimationFrame(o.current),s.current!==null&&clearTimeout(s.current),o.current=null,s.current=null;const d=r.current;d.length&&(r.current=[],n({type:"batch",payload:{events:d}}))},[]),a=y.useCallback(()=>{typeof window<"u"&&typeof window.requestAnimationFrame=="function"?o.current===null&&(o.current=window.requestAnimationFrame(()=>i())):s.current===null&&(s.current=setTimeout(i,8))},[i]),l=y.useCallback(d=>{r.current.push(d),a()},[a]);y.useEffect(()=>()=>{o.current!==null&&typeof window<"u"&&window.cancelAnimationFrame(o.current),s.current!==null&&clearTimeout(s.current),r.current=[]},[]);const u=y.useMemo(()=>({reset:d=>n({type:"reset",payload:{messages:d}}),seed:(d,f)=>n({type:"seed",payload:{messages:d,...f??{}}}),prepend:d=>n({type:"prepend",payload:{messages:d}}),pushUser:d=>n({type:"user_message",payload:{message:d}}),onEvent:l}),[l]);return{state:t,dispatch:n,...u}}function ic(e,t){var n,r,o,s;if(t.type==="message_start"&&t.role==="assistant"){const i=t.id,a=Kg(t.model);if(e.messages.some(d=>d.id===i)){const d=e.messagesStreamMeta??{},f={...d,[i]:d[i]??{lastSeq:t.seq??null,lastText:""}};return{...e,assemblingId:i,messagesStreamMeta:f}}const u={id:i,role:"assistant",name:a||void 0,model:t.model,createdAt:new Date().toISOString(),content:[]};return{...e,assemblingId:i,messages:[...e.messages,u]}}if(t.type==="message_delta"){const i=e.assemblingId??gi(e.messages);if(!i)return e;const a=e.messages,l=a.findIndex(S=>S.id===i&&S.role==="assistant");if(l===-1)return e;const u=a[l],d=e.messagesStreamMeta??{},f=d[i]??{lastSeq:null,lastText:dc(u.content)},h=t.seq??null;if(h!==null&&typeof h=="number"&&typeof f.lastSeq=="number"&&h<=f.lastSeq)return console.debug("[MessageReducer] skipping delta - seq <= lastSeq",{seq:h,lastSeq:f.lastSeq}),e;const{newParts:p,newMeta:x,changed:w}=Vg(u.content,t.delta,f,h);if(!w)return e;const g={...u,content:p},v=ac(a,l,g),b={...d,[i]:x};return{...e,messages:v,messagesStreamMeta:b}}if(t.type==="message_end"){const i=e.assemblingId??gi(e.messages);if(!i)return{...e,assemblingId:null};const a=e.messages,l=a.findIndex(u=>u.id===i&&u.role==="assistant");if(l>=0){const u=a[l];if(!((n=u.content)==null?void 0:n.some(f=>{var h;return(f==null?void 0:f.type)==="text"&&((h=f.text)==null?void 0:h.trim())}))){console.debug("[MessageReducer] pruning assistant message with no visible text",{id:u.id,contentTypes:(r=u.content)==null?void 0:r.map(h=>h==null?void 0:h.type),contentPreview:(o=u.content)==null?void 0:o.map(h=>(h==null?void 0:h.type)==="text"?String(h.text).slice(0,100):h==null?void 0:h.type)});const f=[...a.slice(0,l),...a.slice(l+1)];return{...e,assemblingId:null,messages:f}}}return e}if(t.type==="tool_start"){const i=t.id??t.call_id,a=t.name??t.tool??"tool";if(!i)return e;const l=`tool-${i}`,u={type:"tool_call",id:i,name:a,args:t.args};if(e.messages.find(h=>h.id===l))return{...e,toolIndex:{...e.toolIndex,[i]:l}};const f={id:l,role:"tool",name:a,createdAt:new Date().toISOString(),content:[u]};return{...e,messages:[...e.messages,f],toolIndex:{...e.toolIndex,[i]:l}}}if(t.type==="tool_end"){const i=t.id??t.call_id;if(!i)return e;const a=e.toolIndex[i]??`tool-${i}`,l={type:"tool_end",toolCallId:i,output:t.output,error:t.error},u=e.messages.find(h=>h.id===a),d={id:a,role:"tool",name:t.name??((s=e.messages.find(h=>h.id===a))==null?void 0:s.name),content:[l],createdAt:new Date().toISOString()},f=u?cc(e.messages,a,[l]):[...e.messages,d];return{...e,messages:f,toolIndex:{...e.toolIndex,[i]:a}}}if(t.type==="checkpoint"){const i=t.checkpointNs??e.lastCheckpointNs??null,a=qg(e.messages,t.checkpointId,i);return{...e,lastCheckpointId:t.checkpointId,lastCheckpointNs:i,messages:a}}if(t.type==="branch"){const i=t.checkpointId??e.lastCheckpointId,a=t.checkpointNs??e.lastCheckpointNs;return{...e,lastBranch:t,lastCheckpointId:i??null,lastCheckpointNs:a??null}}if(t.type==="error"){const i={id:`err-${Date.now()}`,role:"system",content:[{type:"text",text:`Error: ${t.message}`}],createdAt:new Date().toISOString()};return{...e,messages:[...e.messages,i]}}if(t.type==="interrupt"){const i=e.assemblingId??gi(e.messages),a={type:"interrupt",value:t.value,id:t.id};if(i)return{...e,assemblingId:null,messages:cc(e.messages,i,[a]),pendingInterrupt:{id:t.id,value:t.value}};const l=`interrupt-${t.id}`;if(e.messages.findIndex(f=>f.id===l)!==-1)return{...e,assemblingId:null,messages:lc(e.messages,l,f=>({...f,content:uc(f.content??[],[a])})),pendingInterrupt:{id:t.id,value:t.value}};const d={id:l,role:"system",createdAt:new Date().toISOString(),content:[a]};return{...e,messages:[...e.messages,d],pendingInterrupt:{id:t.id,value:t.value}}}return e}function mi(e){return e.filter(t=>{if(t.role!=="assistant")return!0;const n=(t.content||[]).some(o=>{var s;return o&&o.type==="text"&&((s=o.text)==null?void 0:s.trim())}),r=(t.content||[]).some(o=>o&&o.type==="image_url");return!!(n||r)})}function ac(e,t,n){return t<0||t>=e.length?e:[...e.slice(0,t),n,...e.slice(t+1)]}function gi(e){for(let t=e.length-1;t>=0;t--)if(e[t].role==="assistant")return e[t].id;return null}function lc(e,t,n){const r=e.findIndex(i=>i.id===t);if(r===-1)return e;const o=e[r],s=n(o);return s===o?e:[...e.slice(0,r),s,...e.slice(r+1)]}function cc(e,t,n){return lc(e,t,r=>({...r,content:uc(r.content,n)}))}function uc(e,t){const n=e.slice();for(const r of t)if(r.type==="text"){const o=n[n.length-1],s=r.text??"";if(!s)continue;if((o==null?void 0:o.type)==="text"){let i=function(p){return p.replace(/\s+/g," ").trim()};const a=o,l=a.text??"";if(console.debug("[MessageReducer] mergeParts",{incomingLength:s.length,previousLength:l.length,incomingSnippet:s.slice(0,100),previousSnippet:l.slice(-100)}),!l){a.text=s;continue}const u=i(s),d=i(l);if(u.startsWith(d)||s.startsWith(l)){console.debug("[MessageReducer] incoming startsWith previous (norm/raw) - replacing",{incomingLength:s.length,previousLength:l.length}),a.text=s;continue}if(u.includes(d)){console.debug("[MessageReducer] incoming includes previous (normalized) - replacing",{incomingLength:s.length,previousLength:l.length}),a.text=s;continue}if(d.includes(u)&&u.length<=3){console.debug("[MessageReducer] previous includes incoming (normalized) - skipping trivial incoming",{incomingLength:s.length,previousLength:l.length});continue}const h=hc(l,s);h?(console.debug("[MessageReducer] suffix computed",{suffixLength:h.length}),a.text=l+h):(console.debug("[MessageReducer] no overlap detected - appending incoming",{incomingLength:s.length}),a.text=l+s)}else n.push({type:"text",text:s})}else n.push(r);return n}function dc(e){return!e||!e.length?"":e.filter(t=>t.type==="text").map(t=>t.text??"").join("")}function Vg(e,t,n,r){const o={...n};if(r!==null&&typeof r=="number"){if(typeof o.lastSeq=="number"&&r<=o.lastSeq)return{newParts:e,newMeta:o,changed:!1};o.lastSeq=r}const s=t.filter(f=>f.type==="text").map(f=>f.text??"").join(""),i=t.filter(f=>f.type!=="text"),a=o.lastText??dc(e);let l="",u=e.slice();if(s){const f=hc(a,s);if(f===""?l="":f===s?l=s:l=f,l){const h=u[u.length-1];if((h==null?void 0:h.type)==="text"){const p=h.text??"",x={...h,text:p+l};u=[...u.slice(0,u.length-1),x]}else u=[...u,{type:"text",text:l}];o.lastText=a+l}else o.lastText=a}i.length&&(u=[...u,...i]);const d=!!(l||i.length);return{newParts:u,newMeta:o,changed:d}}function fc(e){return e.replace(/\s+/g," ").trim()}function hc(e,t){if(!t)return"";if(!e)return t;if(e===t)return"";const n=Math.min(e.length,t.length);for(let i=n;i>0;i--)if(e.slice(-i)===t.slice(0,i))return t.slice(i);const r=fc(e),o=fc(t);if(r===o)return"";const s=Math.min(r.length,o.length);for(let i=s;i>0;i--)if(r.slice(-i)===o.slice(0,i))return t;return t}function qg(e,t,n){for(let r=e.length-1;r>=0;r--)if(e[r].role==="assistant"){const s={...e[r],checkpointId:t,checkpointNs:n??void 0};return ac(e,r,s)}return e}function Kg(e){if(!e)return null;const t=e.split("/");return t[t.length-1]||null}function pc(e={}){const t=y.useMemo(()=>Tn(e.baseUrl),[e.baseUrl]),n=e.streamPath??"/runs/stream",[r,o]=y.useState(e.token??null),s=y.useRef(e.headers??{}),i=e.credentials??"include",[a,l]=y.useState(!1),[u,d]=y.useState(null),[f,h]=y.useState(""),[p,x]=y.useState(null),[w,g]=y.useState(0),[v,b]=y.useState(!1),S=y.useRef(null),N=y.useRef(!0),C=y.useRef(0),k=y.useCallback(P=>{o(P)},[]),E=y.useCallback(()=>{var P;(P=S.current)==null||P.abort(),S.current=null,l(!1),b(!1),C.current=0,g(0)},[]),A=y.useCallback(()=>{h(""),x(null),d(null)},[]),j=y.useCallback((P,L,F)=>{S.current&&(S.current.abort(),S.current=null),l(!0),d(null),e.autoAppendAssistant!==!1&&h("");const V=new AbortController;return S.current=V,(async()=>{var Y,q,W,z,$,ue,D,ee;const M=fe=>{var ve;try{const be=JSON.parse(JSON.stringify(fe));return(ve=be==null?void 0:be.payload)!=null&&ve.files_info&&Array.isArray(be.payload.files_info)&&(be.payload.files_info=be.payload.files_info.map(ye=>({...ye,data:ye!=null&&ye.data?`<base64 ${String(ye.data).length} chars>`:ye==null?void 0:ye.data}))),be}catch{return fe}};try{let fe={};try{if(r)fe={Authorization:`Bearer ${r}`};else if(typeof window<"u"){const Be=window.__AUTH_TOKEN__,Ee=((Y=window.localStorage)==null?void 0:Y.getItem("authToken"))||null;let Ze=null;try{const ht=(q=window.localStorage)==null?void 0:q.getItem("chat-settings");ht&&(Ze=((W=JSON.parse(ht))==null?void 0:W.apiKey)||null)}catch{}const wt=Be||Ee||Ze||null;wt&&(fe={Authorization:`Bearer ${wt}`})}}catch{}console.debug("[use-chat] POST",t+n,M(P));const ve=await fetch(t+n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",...fe,...s.current},body:JSON.stringify(P),signal:V.signal,credentials:i});if(!ve.ok||!ve.body){const De=await ve.text().catch(()=>"");throw console.debug("[use-chat] non-OK response",ve.status,De==null?void 0:De.slice(0,500)),new Error(`stream ${ve.status}${De?": "+De:""}`)}b(!0);const be=ve.body.getReader(),ye=new TextDecoder;let K="",O=[];C.current=0,g(0);let J=0,te=null;const G=()=>{if(O.length){const De=O.join("");O=[],N.current&&h(Be=>Be+De)}te=null},se=()=>{typeof window<"u"&&te==null&&(te=requestAnimationFrame(G))};let Ve=Date.now();const Je=setInterval(()=>{var De;if(Date.now()-Ve>6e4){const Be="Stream idle timeout";d(Be),V.abort(),(De=F==null?void 0:F.onError)==null||De.call(F,Be)}},5e3),nt=1024*1024;try{const De=ve.headers.get("X-Thread-Id")||ve.headers.get("x-thread-id"),Be=ve.headers.get("X-Thread-Created")||ve.headers.get("x-thread-created"),Ee=De??null,Ze=String(Be??"").toLowerCase()==="true";for((z=F==null?void 0:F.onOpen)==null||z.call(F,{threadId:Ee,created:Ze});;){const{value:wt,done:ht}=await be.read();if(ht)break;K+=ye.decode(wt,{stream:!0}),K.length>nt&&(K="",console.warn("Stream buffer reset: exceeded 1MB"));let Z;for(;(Z=K.indexOf(`
|
|
35
|
+
`+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=qn(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&No.assertOptions(r,{silentJSONParsing:un.transitional(un.boolean),forcedJSONParsing:un.transitional(un.boolean),clarifyTimeoutError:un.transitional(un.boolean)},!1),o!=null&&(R.isFunction(o)?n.paramsSerializer={serialize:o}:No.assertOptions(o,{encode:un.function,serialize:un.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),No.assertOptions(n,{baseUrl:un.spelling("baseURL"),withXsrfToken:un.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=s&&R.merge(s.common,s[n.method]);s&&R.forEach(["delete","get","head","post","put","patch","common"],x=>{delete s[x]}),n.headers=Ot.concat(i,s);const a=[];let l=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(l=l&&w.synchronous,a.unshift(w.fulfilled,w.rejected))});const u=[];this.interceptors.response.forEach(function(w){u.push(w.fulfilled,w.rejected)});let d,f=0,h;if(!l){const x=[Wl.bind(this),void 0];for(x.unshift(...a),x.push(...u),h=x.length,d=Promise.resolve(n);f<h;)d=d.then(x[f++],x[f++]);return d}h=a.length;let p=n;for(;f<h;){const x=a[f++],w=a[f++];try{p=x(p)}catch(g){w.call(this,g);break}}try{d=Wl.call(this,p)}catch(x){return Promise.reject(x)}for(f=0,h=u.length;f<h;)d=d.then(u[f++],u[f++]);return d}getUri(t){t=qn(this.defaults,t);const n=Pl(t.baseURL,t.url,t.allowAbsoluteUrls);return Tl(n,t.params,t.paramsSerializer)}};R.forEach(["delete","get","head","options"],function(t){Kn.prototype[t]=function(n,r){return this.request(qn(r||{},{method:t,url:n,data:(r||{}).data}))}}),R.forEach(["post","put","patch"],function(t){function n(r){return function(s,i,a){return this.request(qn(a||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:s,data:i}))}}Kn.prototype[t]=n(),Kn.prototype[t+"Form"]=n(!0)});let Ig=class nm{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 i=new Promise(a=>{r.subscribe(a),s=a}).then(o);return i.cancel=function(){r.unsubscribe(s)},i},t(function(s,i,a){r.reason||(r.reason=new gr(s,i,a),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 nm(function(o){t=o}),cancel:t}}};function Eg(e){return function(n){return e.apply(null,n)}}function Ng(e){return R.isObject(e)&&e.isAxiosError===!0}const ui={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(ui).forEach(([e,t])=>{ui[t]=e});function Kl(e){const t=new Kn(e),n=cl(Kn.prototype.request,t);return R.extend(n,Kn.prototype,t,{allOwnKeys:!0}),R.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return Kl(qn(e,o))},n}const dt=Kl(Hr);dt.Axios=Kn,dt.CanceledError=gr,dt.CancelToken=Ig,dt.isCancel=Al,dt.VERSION=Vl,dt.toFormData=Co,dt.AxiosError=Me,dt.Cancel=dt.CanceledError,dt.all=function(t){return Promise.all(t)},dt.spread=Eg,dt.isAxiosError=Ng,dt.mergeConfig=qn,dt.AxiosHeaders=Ot,dt.formToJSON=e=>El(R.isHTMLForm(e)?new FormData(e):e),dt.getAdapter=Ul.getAdapter,dt.HttpStatusCode=ui,dt.default=dt;const{Axios:dT,AxiosError:fT,CanceledError:hT,isCancel:pT,CancelToken:mT,VERSION:gT,all:xT,Cancel:vT,isAxiosError:wT,spread:bT,toFormData:yT,AxiosHeaders:ST,HttpStatusCode:CT,formToJSON:TT,getAdapter:kT,mergeConfig:IT}=dt,Gl=typeof window<"u"?window.__API_BASE_URL__:void 0,Yl=Gl?Tn(Gl):void 0;function Tn(e){const n=(e!=null&&e.trim()?e.trim():"/api/chat").replace(/\/+$/,"");return n?n.endsWith("/chat")?n:`${n}/chat`:"/api/chat"}let Ao=null;const di=new Set;function Xl(){return Ao}function fi(e){Ao=e,di.forEach(t=>t(e))}function Jl(e){return di.add(e),()=>di.delete(e)}const Wt=dt.create({...Yl?{baseURL:Yl}:{},timeout:3e4,withCredentials:!0});Wt.interceptors.request.use(e=>(Ao&&(e.headers.Authorization=`Bearer ${Ao}`),e)),Wt.interceptors.response.use(e=>e,e=>Promise.reject(e));async function Dt(e,t){return Wt.defaults.baseURL?(await Wt.get(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}async function hi(e,t,n){return Wt.defaults.baseURL?(await Wt.post(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function Zl(e,t,n){return Wt.defaults.baseURL?(await Wt.put(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function Ql(e,t){return Wt.defaults.baseURL?(await Wt.delete(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}function Lt(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class ec{get baseUrl(){const t=Wt.defaults.baseURL;return t?Tn(String(t)):""}updateConfig(t){t.baseUrl&&(Wt.defaults.baseURL=Tn(String(t.baseUrl))),t.authToken!==void 0&&fi(t.authToken)}getAuthToken(){return Xl()}setAuthToken(t){fi(t)}onTokenChange(t){return Jl(t)}async listThreads(){const t=await Dt("/threads"),n=Lt(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t){const r=await hi("/threads",t?{title:t}:void 0);return Lt(r)}async updateThread(t,n){const r=await Zl(`/threads/${t}`,{title:n});return Lt(r)}async deleteThread(t){const n=await Ql(`/threads/${t}`);return Lt(n)}async threadInfo(t){const n=await Dt(`/threads/${t}/info`);return Lt(n)}async listAgents(){const t=await Dt("/agents"),n=Lt(t);return(n==null?void 0:n.items)??[]}async getAgent(t){const n=await Dt(`/agents/${t}`);return Lt(n)}async getAgentSchema(t){const n=await Dt(`/agents/${t}/schema`);return Lt(n)}async getMessages(t){const n=await Dt(`/threads/${t.threadId}/messages`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs,limit:t.limit,before_id:t.beforeId??void 0}});return Lt(n)}async getState(t){const n=await Dt(`/threads/${t.threadId}/state`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Lt(n)}async getStateHistory(t){const n=await Dt(`/threads/${t.threadId}/state/history`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Lt(n)}async listCheckpoints(t){const n=await Dt(`/threads/${t}/checkpoints`,{params:{thread_id:t}});return Lt(n)}resumeStream(t){}async resume(t){const n=await hi("/runs/resume",{thread_id:t.threadId,value:t.value});return Lt(n)}}const jn=new ec,tc=y.createContext(null);function Ag({children:e,apiConfig:t}){const n=jn;if(t){const o=n.baseUrl,s=n.getAuthToken();t.baseUrl&&t.baseUrl!==o&&n.updateConfig({baseUrl:t.baseUrl}),t.apiKey!==void 0&&t.apiKey!==s&&n.updateConfig({authToken:t.apiKey})}const r={token:n.getAuthToken(),setToken:o=>n.setAuthToken(o),api:n,baseUrl:n.baseUrl};return c.jsx(tc.Provider,{value:r,children:e})}function pi(){const e=y.useContext(tc);if(!e)throw new Error("useApi must be used within ApiProvider");return e}function _g(e,t){const n=e==null?void 0:e.checkpoints,r=Array.isArray(n)?n.slice():n?Object.values(n):[],o=i=>i&&typeof i=="object"&&i!==null&&"checkpointId"in i&&"createdAt"in i&&typeof i.checkpointId=="string"&&typeof i.createdAt=="string",s=r.filter(o).map(i=>{const a=i;return{checkpointId:a.checkpointId,checkpointNs:a.checkpointNs??"",createdAt:a.createdAt,messagesLen:a.messagesLen??0,preview:a.preview??"",role:a.role??null,parentId:a.parentId??null,editedMessageId:a.editedMessageId??null,branchLabel:a.branchLabel??null,lastMessageId:a.lastMessageId??null,hasMessages:typeof a.hasMessages=="boolean"?a.hasMessages:void 0}});return{threadId:(e==null?void 0:e.threadId)??t??null,checkpoints:s}}async function jg(e){return await new Promise((t,n)=>{const r=new FileReader;r.onload=()=>{try{const o=r.result,s=new Uint8Array(o);let i="";const a=s.byteLength;for(let l=0;l<a;l++)i+=String.fromCharCode(s[l]);t(btoa(i))}catch(o){n(o)}},r.onerror=o=>n(o),r.readAsArrayBuffer(e)})}async function Rg(e,t=[],n,r,o,s){const i=[],a=[];for(const l of t)try{const u=await jg(l);a.push({filename:l.name,data:u,mime_type:l.type||"application/octet-stream"})}catch{}return{contentParts:i,filesInfo:a}}const Pg={human:"user",user:"user",ai:"assistant",assistant:"assistant",tool:"tool",function:"tool",system:"system"};function Og(e){if(!e||typeof e!="object")return!1;const t=e;return"values"in t&&"config"in t&&typeof t.values=="object"&&t.values!==null&&typeof t.config=="object"&&t.config!==null}function nc(e){var d;const t=Array.isArray(e==null?void 0:e.checkpoints)?(e==null?void 0:e.checkpoints)??[]:e!=null&&e.checkpoints?Object.values(e.checkpoints):[],n=(e==null?void 0:e.threadId)??"",r=t[0];if(!Og(r))return{threadId:n,checkpointId:void 0,checkpointNs:void 0,messages:[],hasMore:!1,nextCursor:null};const o=r.values??{},i=(Array.isArray(o==null?void 0:o.messages)?o.messages:[]).map((f,h)=>Mg(f,h)).filter(f=>!!f),a=Wr((d=r.config)==null?void 0:d.configurable),l=At(a,["checkpoint_id","checkpointId"]),u=At(a,["checkpoint_ns","checkpointNs"]);return{threadId:n,checkpointId:l??void 0,checkpointNs:u??void 0,messages:i,hasMore:!1,nextCursor:null}}function Mg(e,t){if(!e||typeof e!="object")return null;const n=e,r=Wr(n.data)??{},o=String(n.type??r.type??"").toLowerCase(),s=Pg[o];if(!s)return null;const i=r.id??r.message_id??r.run_id??null,a=typeof i=="string"&&i.trim()?i:`history-${s}-${t}`,l=Wr(r.additional_kwargs),u=Wr(r.response_metadata),d=At(l,["createdAt","created_at"])??At(r,["created_at","createdAt"]),f=At(l,["checkpointId","checkpoint_id"]),h=At(l,["checkpointNs","checkpoint_ns"]),p=Dg(r.content),x={id:a,role:s,content:p};d&&(x.createdAt=d),typeof r.name=="string"&&r.name.trim()&&(x.name=r.name),typeof(u==null?void 0:u.model_name)=="string"&&(x.model=String(u.model_name)),f&&(x.checkpointId=f),h&&(x.checkpointNs=h);const w=Bg(l,["createdAt","created_at","checkpointId","checkpoint_id","checkpointNs","checkpoint_ns","tool_calls"]),g=u?{...u}:void 0;w&&Object.keys(w).length&&(x.additionalKwargs=w),g&&Object.keys(g).length&&(x.responseMetadata=g);const v=Lg((l==null?void 0:l.tool_calls)??r.tool_calls);if(v.length&&(x.content=[...x.content,...v]),s==="tool"){const b=$g(r,x.content);b&&(x.content=b)}return x}function Dg(e){if(!e)return[];if(Array.isArray(e))return e.map(t=>rc(t)).filter(t=>!!t);if(typeof e=="string")return e.trim()?[{type:"text",text:e.trim()}]:[];if(typeof e=="object"){const t=rc(e);return t?[t]:[]}return[]}function rc(e){if(!e||typeof e!="object")return typeof e=="string"&&e.trim()?{type:"text",text:e}:null;const t=e,n=String(t.type??"").toLowerCase();if(!n||n==="text"){const o=typeof t.text=="string"?t.text:typeof t.value=="string"?t.value:"";return o.trim()?{type:"text",text:o}:null}if(n==="image"||n==="image_url"){const o=At(t,["url","src"]);if(!o)return null;const s={type:"image_url",url:o};return typeof t.mimeType=="string"&&(s.mimeType=t.mimeType),typeof t.alt=="string"&&(s.alt=t.alt),s}if(n==="file"){const o=At(t,["url"]);if(!o)return null;const s={type:"file",url:o};return typeof t.mimeType=="string"&&(s.mimeType=t.mimeType),typeof t.name=="string"&&(s.name=t.name),typeof t.size=="number"&&(s.size=t.size),typeof t.sourceType=="string"&&(s.sourceType=t.sourceType),s}if(n==="tool_call")return Fg(t)??null;if(n==="tool_end"){const o=At(t,["tool_call_id","toolCallId","id"]);if(!o)return null;const s={type:"tool_end",toolCallId:o,output:"output"in t?t.output:t.content};return typeof t.error=="string"&&(s.error=t.error),s}if(n==="interrupt")return{type:"interrupt",value:t.value,...t};if(n==="tool"){const o=At(t,["text","content"]);if(o)return{type:"text",text:o}}const r=typeof t.content=="string"?t.content:typeof t.value=="string"?t.value:JSON.stringify(t);return r?{type:"text",text:r}:null}function Lg(e){return Array.isArray(e)?e.map((t,n)=>{if(!t||typeof t!="object")return null;const r=t,o=At(r,["id","call_id"]),s=Wr(r.function),i=At(s,["name"])??"tool",a=s==null?void 0:s.arguments,l=oc(a);return{type:"tool_call",id:o??`tool_call_${n}`,name:i,args:l}}).filter(t=>!!t):[]}function Fg(e){const t=At(e,["id","call_id"]),n=At(e,["name"]);if(!t||!n)return null;const r=oc(e.args??e.arguments);return{type:"tool_call",id:t,name:n,args:r}}function $g(e,t){const n=At(e,["tool_call_id","toolCallId","id"]);if(!n)return t;const r=e.content??e.output,o=typeof r=="string"?zg(r):r,s={type:"tool_end",toolCallId:n,output:o};return typeof e.error=="string"&&(s.error=e.error),[s]}function oc(e){if(!e)return{};if(typeof e=="string")try{const t=JSON.parse(e);return typeof t=="object"&&t!==null?t:{raw:e}}catch{return{raw:e}}return typeof e=="object"&&!Array.isArray(e)?{...e}:{}}function zg(e){try{return JSON.parse(e)}catch{return e}}function Wr(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return{...e}}function At(e,t){if(e)for(const n of t){const r=e[n];if(typeof r=="string"&&r.trim())return r}}function Bg(e,t){if(!e)return;const n={};let r=!1;for(const[o,s]of Object.entries(e)){if(t.includes(o)){r=!0;continue}s!==void 0&&(n[o]=s)}return r?Object.keys(n).length?n:void 0:e}function Hg(e){return e.type!=="thread_info"&&e.type!=="token"}const Ug={messages:[],assemblingId:null,lastCheckpointId:null,lastCheckpointNs:null,toolIndex:{},lastBranch:null,messagesStreamMeta:{}};function Wg(e,t){var n;switch(t.type){case"reset":{console.log("[MessageReducer] 🔄 RESET action received"),console.log("[MessageReducer] 📊 Before reset - messages count:",e.messages.length);const r={messages:mi(((n=t.payload)==null?void 0:n.messages)??[]),assemblingId:null,lastCheckpointId:null,lastCheckpointNs:null,toolIndex:{},lastBranch:null};return console.log("[MessageReducer] 📊 After reset - messages count:",r.messages.length),r}case"seed":{const r=mi(t.payload.messages),o={...e,messages:r,assemblingId:null};return Object.prototype.hasOwnProperty.call(t.payload,"checkpointId")&&(o.lastCheckpointId=t.payload.checkpointId??null),Object.prototype.hasOwnProperty.call(t.payload,"checkpointNs")&&(o.lastCheckpointNs=t.payload.checkpointNs??null),console.log("[MessageReducer] seed action (REPLACE mode):",{incomingCount:t.payload.messages.length,sanitizedCount:r.length,previousCount:e.messages.length,checkpointId:o.lastCheckpointId}),o}case"prepend":{const r=mi(t.payload.messages);if(!r.length)return console.log("[MessageReducer] No incoming messages after sanitize - skipping"),e;const o=new Set(e.messages.map(i=>i.id)),s=r.filter(i=>!o.has(i.id));return console.log("[MessageReducer] After dedup:",{uniqueCount:s.length,duplicates:r.length-s.length,finalTotal:s.length+e.messages.length}),s.length?{...e,messages:[...s,...e.messages]}:(console.log("[MessageReducer] All messages were duplicates - skipping"),e)}case"user_message":{const r=t.payload.message;return e.messages.some(o=>o.id===r.id)?e:{...e,messages:[...e.messages,r]}}case"event":return ic(e,t.payload.ev);case"batch":{const{events:r}=t.payload;return r.length?r.reduce((o,s)=>ic(o,s),e):e}case"interrupt_response":{const{interruptId:r}=t.payload,o=e.messages.map(s=>({...s,content:s.content.filter(i=>i.type!=="interrupt")}));return{...e,messages:o,pendingInterrupt:null}}default:return e}}function sc(e=[]){const[t,n]=y.useReducer(Wg,{...Ug,messages:e}),r=y.useRef([]),o=y.useRef(null),s=y.useRef(null),i=y.useCallback(()=>{o.current!==null&&typeof window<"u"&&window.cancelAnimationFrame(o.current),s.current!==null&&clearTimeout(s.current),o.current=null,s.current=null;const d=r.current;d.length&&(r.current=[],n({type:"batch",payload:{events:d}}))},[]),a=y.useCallback(()=>{typeof window<"u"&&typeof window.requestAnimationFrame=="function"?o.current===null&&(o.current=window.requestAnimationFrame(()=>i())):s.current===null&&(s.current=setTimeout(i,8))},[i]),l=y.useCallback(d=>{r.current.push(d),a()},[a]);y.useEffect(()=>()=>{o.current!==null&&typeof window<"u"&&window.cancelAnimationFrame(o.current),s.current!==null&&clearTimeout(s.current),r.current=[]},[]);const u=y.useMemo(()=>({reset:d=>n({type:"reset",payload:{messages:d}}),seed:(d,f)=>n({type:"seed",payload:{messages:d,...f??{}}}),prepend:d=>n({type:"prepend",payload:{messages:d}}),pushUser:d=>n({type:"user_message",payload:{message:d}}),onEvent:l}),[l]);return{state:t,dispatch:n,...u}}function ic(e,t){var n,r,o,s;if(t.type==="message_start"&&t.role==="assistant"){const i=t.id,a=Kg(t.model);if(e.messages.some(d=>d.id===i)){const d=e.messagesStreamMeta??{},f={...d,[i]:d[i]??{lastSeq:t.seq??null,lastText:""}};return{...e,assemblingId:i,messagesStreamMeta:f}}const u={id:i,role:"assistant",name:a||void 0,model:t.model,createdAt:new Date().toISOString(),content:[]};return{...e,assemblingId:i,messages:[...e.messages,u]}}if(t.type==="message_delta"){const i=e.assemblingId??gi(e.messages);if(!i)return e;const a=e.messages,l=a.findIndex(S=>S.id===i&&S.role==="assistant");if(l===-1)return e;const u=a[l],d=e.messagesStreamMeta??{},f=d[i]??{lastSeq:null,lastText:dc(u.content)},h=t.seq??null;if(h!==null&&typeof h=="number"&&typeof f.lastSeq=="number"&&h<=f.lastSeq)return console.debug("[MessageReducer] skipping delta - seq <= lastSeq",{seq:h,lastSeq:f.lastSeq}),e;const{newParts:p,newMeta:x,changed:w}=Vg(u.content,t.delta,f,h);if(!w)return e;const g={...u,content:p},v=ac(a,l,g),b={...d,[i]:x};return{...e,messages:v,messagesStreamMeta:b}}if(t.type==="message_end"){const i=e.assemblingId??gi(e.messages);if(!i)return{...e,assemblingId:null};const a=e.messages,l=a.findIndex(u=>u.id===i&&u.role==="assistant");if(l>=0){const u=a[l];if(!((n=u.content)==null?void 0:n.some(f=>{var h;return(f==null?void 0:f.type)==="text"&&((h=f.text)==null?void 0:h.trim())}))){console.debug("[MessageReducer] pruning assistant message with no visible text",{id:u.id,contentTypes:(r=u.content)==null?void 0:r.map(h=>h==null?void 0:h.type),contentPreview:(o=u.content)==null?void 0:o.map(h=>(h==null?void 0:h.type)==="text"?String(h.text).slice(0,100):h==null?void 0:h.type)});const f=[...a.slice(0,l),...a.slice(l+1)];return{...e,assemblingId:null,messages:f}}}return e}if(t.type==="tool_start"){const i=t.id??t.call_id,a=t.name??t.tool??"tool";if(!i)return e;const l=`tool-${i}`,u={type:"tool_call",id:i,name:a,args:t.args};if(e.messages.find(h=>h.id===l))return{...e,toolIndex:{...e.toolIndex,[i]:l}};const f={id:l,role:"tool",name:a,createdAt:new Date().toISOString(),content:[u]};return{...e,messages:[...e.messages,f],toolIndex:{...e.toolIndex,[i]:l}}}if(t.type==="tool_end"){const i=t.id??t.call_id;if(!i)return e;const a=e.toolIndex[i]??`tool-${i}`,l={type:"tool_end",toolCallId:i,output:t.output,error:t.error},u=e.messages.find(h=>h.id===a),d={id:a,role:"tool",name:t.name??((s=e.messages.find(h=>h.id===a))==null?void 0:s.name),content:[l],createdAt:new Date().toISOString()},f=u?cc(e.messages,a,[l]):[...e.messages,d];return{...e,messages:f,toolIndex:{...e.toolIndex,[i]:a}}}if(t.type==="checkpoint"){const i=t.checkpointNs??e.lastCheckpointNs??null,a=qg(e.messages,t.checkpointId,i);return{...e,lastCheckpointId:t.checkpointId,lastCheckpointNs:i,messages:a}}if(t.type==="branch"){const i=t.checkpointId??e.lastCheckpointId,a=t.checkpointNs??e.lastCheckpointNs;return{...e,lastBranch:t,lastCheckpointId:i??null,lastCheckpointNs:a??null}}if(t.type==="error"){const i={id:`err-${Date.now()}`,role:"system",content:[{type:"text",text:`Error: ${t.message}`}],createdAt:new Date().toISOString()};return{...e,messages:[...e.messages,i]}}if(t.type==="interrupt"){const i=e.assemblingId??gi(e.messages),a={type:"interrupt",value:t.value,id:t.id};if(i)return{...e,assemblingId:null,messages:cc(e.messages,i,[a]),pendingInterrupt:{id:t.id,value:t.value}};const l=`interrupt-${t.id}`;if(e.messages.findIndex(f=>f.id===l)!==-1)return{...e,assemblingId:null,messages:lc(e.messages,l,f=>({...f,content:uc(f.content??[],[a])})),pendingInterrupt:{id:t.id,value:t.value}};const d={id:l,role:"system",createdAt:new Date().toISOString(),content:[a]};return{...e,messages:[...e.messages,d],pendingInterrupt:{id:t.id,value:t.value}}}return e}function mi(e){return e.filter(t=>{if(t.role!=="assistant")return!0;const n=(t.content||[]).some(o=>{var s;return o&&o.type==="text"&&((s=o.text)==null?void 0:s.trim())}),r=(t.content||[]).some(o=>o&&o.type==="image_url");return!!(n||r)})}function ac(e,t,n){return t<0||t>=e.length?e:[...e.slice(0,t),n,...e.slice(t+1)]}function gi(e){for(let t=e.length-1;t>=0;t--)if(e[t].role==="assistant")return e[t].id;return null}function lc(e,t,n){const r=e.findIndex(i=>i.id===t);if(r===-1)return e;const o=e[r],s=n(o);return s===o?e:[...e.slice(0,r),s,...e.slice(r+1)]}function cc(e,t,n){return lc(e,t,r=>({...r,content:uc(r.content,n)}))}function uc(e,t){const n=e.slice();for(const r of t)if(r.type==="text"){const o=n[n.length-1],s=r.text??"";if(!s)continue;if((o==null?void 0:o.type)==="text"){let i=function(p){return p.replace(/\s+/g," ").trim()};const a=o,l=a.text??"";if(console.debug("[MessageReducer] mergeParts",{incomingLength:s.length,previousLength:l.length,incomingSnippet:s.slice(0,100),previousSnippet:l.slice(-100)}),!l){a.text=s;continue}const u=i(s),d=i(l);if(u.startsWith(d)||s.startsWith(l)){console.debug("[MessageReducer] incoming startsWith previous (norm/raw) - replacing",{incomingLength:s.length,previousLength:l.length}),a.text=s;continue}if(u.includes(d)){console.debug("[MessageReducer] incoming includes previous (normalized) - replacing",{incomingLength:s.length,previousLength:l.length}),a.text=s;continue}if(d.includes(u)&&u.length<=3){console.debug("[MessageReducer] previous includes incoming (normalized) - skipping trivial incoming",{incomingLength:s.length,previousLength:l.length});continue}const h=hc(l,s);h?(console.debug("[MessageReducer] suffix computed",{suffixLength:h.length}),a.text=l+h):(console.debug("[MessageReducer] no overlap detected - appending incoming",{incomingLength:s.length}),a.text=l+s)}else n.push({type:"text",text:s})}else n.push(r);return n}function dc(e){return!e||!e.length?"":e.filter(t=>t.type==="text").map(t=>t.text??"").join("")}function Vg(e,t,n,r){const o={...n};if(r!==null&&typeof r=="number"){if(typeof o.lastSeq=="number"&&r<=o.lastSeq)return{newParts:e,newMeta:o,changed:!1};o.lastSeq=r}const s=t.filter(f=>f.type==="text").map(f=>f.text??"").join(""),i=t.filter(f=>f.type!=="text"),a=o.lastText??dc(e);let l="",u=e.slice();if(s){const f=hc(a,s);if(f===""?l="":f===s?l=s:l=f,l){const h=u[u.length-1];if((h==null?void 0:h.type)==="text"){const p=h.text??"",x={...h,text:p+l};u=[...u.slice(0,u.length-1),x]}else u=[...u,{type:"text",text:l}];o.lastText=a+l}else o.lastText=a}i.length&&(u=[...u,...i]);const d=!!(l||i.length);return{newParts:u,newMeta:o,changed:d}}function fc(e){return e.replace(/\s+/g," ").trim()}function hc(e,t){if(!t)return"";if(!e)return t;if(e===t)return"";const n=Math.min(e.length,t.length);for(let i=n;i>0;i--)if(e.slice(-i)===t.slice(0,i))return t.slice(i);const r=fc(e),o=fc(t);if(r===o)return"";const s=Math.min(r.length,o.length);for(let i=s;i>0;i--)if(r.slice(-i)===o.slice(0,i))return t;return t}function qg(e,t,n){for(let r=e.length-1;r>=0;r--)if(e[r].role==="assistant"){const s={...e[r],checkpointId:t,checkpointNs:n??void 0};return ac(e,r,s)}return e}function Kg(e){if(!e)return null;const t=e.split("/");return t[t.length-1]||null}function pc(e={}){const t=y.useMemo(()=>Tn(e.baseUrl),[e.baseUrl]),n=e.streamPath??"/runs/stream",[r,o]=y.useState(e.token??null),s=y.useRef(e.headers??{}),i=e.credentials??"include",[a,l]=y.useState(!1),[u,d]=y.useState(null),[f,h]=y.useState(""),[p,x]=y.useState(null),[w,g]=y.useState(0),[v,b]=y.useState(!1),S=y.useRef(null),N=y.useRef(!0),C=y.useRef(0),k=y.useCallback(P=>{o(P)},[]),E=y.useCallback(()=>{var P;(P=S.current)==null||P.abort(),S.current=null,l(!1),b(!1),C.current=0,g(0)},[]),A=y.useCallback(()=>{h(""),x(null),d(null)},[]),j=y.useCallback((P,L,F)=>{S.current&&(S.current.abort(),S.current=null),l(!0),d(null),e.autoAppendAssistant!==!1&&h("");const V=new AbortController;return S.current=V,(async()=>{var Y,q,W,z,$,ue,D,ee;const M=fe=>{var ve;try{const be=JSON.parse(JSON.stringify(fe));return(ve=be==null?void 0:be.payload)!=null&&ve.files_info&&Array.isArray(be.payload.files_info)&&(be.payload.files_info=be.payload.files_info.map(ye=>({...ye,data:ye!=null&&ye.data?`<base64 ${String(ye.data).length} chars>`:ye==null?void 0:ye.data}))),be}catch{return fe}};try{let fe={};try{if(r)fe={Authorization:`Bearer ${r}`};else if(typeof window<"u"){const Be=window.__AUTH_TOKEN__,Ee=((Y=window.localStorage)==null?void 0:Y.getItem("authToken"))||null;let Ze=null;try{const ht=(q=window.localStorage)==null?void 0:q.getItem("chat-settings");ht&&(Ze=((W=JSON.parse(ht))==null?void 0:W.apiKey)||null)}catch{}const wt=Be||Ee||Ze||null;wt&&(fe={Authorization:`Bearer ${wt}`})}}catch{}console.debug("[use-chat] POST",t+n,M(P));const ve=await fetch(t+n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",...fe,...s.current},body:JSON.stringify(P),signal:V.signal,credentials:i});if(!ve.ok||!ve.body){const De=await ve.text().catch(()=>"");throw console.debug("[use-chat] non-OK response",ve.status,De==null?void 0:De.slice(0,500)),new Error(`stream ${ve.status}${De?": "+De:""}`)}b(!0);const be=ve.body.getReader(),ye=new TextDecoder;let K="",O=[];C.current=0,g(0);let J=0,te=null;const G=()=>{if(O.length){const De=O.join("");O=[],N.current&&h(Be=>Be+De)}te=null},se=()=>{typeof window<"u"&&te==null&&(te=requestAnimationFrame(G))};let Ve=Date.now();const Je=setInterval(()=>{var De;if(Date.now()-Ve>6e4){const Be="Stream idle timeout";d(Be),V.abort(),(De=F==null?void 0:F.onError)==null||De.call(F,Be)}},5e3),nt=1024*1024;try{const De=ve.headers.get("X-Thread-Id")||ve.headers.get("x-thread-id"),Be=ve.headers.get("X-Thread-Created")||ve.headers.get("x-thread-created"),Ee=De??null,Ze=String(Be??"").toLowerCase()==="true";for((z=F==null?void 0:F.onOpen)==null||z.call(F,{threadId:Ee,created:Ze});;){const{value:wt,done:ht}=await be.read();if(ht)break;K+=ye.decode(wt,{stream:!0}),K.length>nt&&(K="",console.warn("Stream buffer reset: exceeded 1MB"));let Z;for(;(Z=K.indexOf(`
|
|
36
36
|
|
|
37
37
|
`))>=0;){const re=K.slice(0,Z);K=K.slice(Z+2);const pe=Yg(re);if(!pe)continue;let Ne;try{Ne=JSON.parse(pe)}catch{console.debug("[use-chat] malformed SSE:",pe.slice(0,200));continue}const we=Gg(Ne)?Ne.data:Ne;Ve=Date.now();const Ae=we.seq;if(Ae!==void 0){if(Ae<=J){console.debug("[use-chat] drop duplicate/out-of-order event",{seq:Ae,lastProcessedSeq:J,type:we.type});continue}J>0&&Ae>J+1&&(($=F==null?void 0:F.onGap)==null||$.call(F,{from:J,to:Ae})),J=Ae,C.current=Ae,g(Ae)}if(console.debug("[use-chat] received event",{seq:we.seq,type:we.type,preview:(()=>{var Qe;try{return we.type==="message_delta"?{deltaTypes:(Qe=we.delta)==null?void 0:Qe.map(ze=>ze.type),textLen:(we.delta||[]).filter(ze=>ze.type==="text").map(ze=>String(ze.text||"").length)}:we.content||we.delta?{hasContent:!0}:{}}catch(ze){return{err:String(ze)}}})()}),L==null||L(we),we.type==="token"&&e.autoAppendAssistant!==!1)O.push(we.content),se();else if(we.type==="message_delta"){const Qe=we.delta.filter(ze=>ze.type==="text").map(ze=>ze.text).join("");Qe&&e.autoAppendAssistant!==!1&&(O.push(Qe),se())}else we.type==="heartbeat"?console.debug("[use-chat] heartbeat received"):(te!==null&&cancelAnimationFrame(te),G(),we.type==="checkpoint"?x(we.checkpointId):we.type==="error"&&d(we.message))}}G()}catch(De){if(De.name!=="AbortError"){const Be=De.message||String(De);d(Be),(ue=F==null?void 0:F.onError)==null||ue.call(F,Be)}}finally{try{await be.cancel()}catch{}finally{(D=be.releaseLock)==null||D.call(be)}te!==null&&typeof window<"u"&&window.cancelAnimationFrame(te),clearInterval(Je),l(!1),b(!1),S.current=null,C.current=0,g(0)}}catch(fe){if(fe.name!=="AbortError"){const ve=fe.message||String(fe);d(ve),(ee=F==null?void 0:F.onError)==null||ee.call(F,ve)}}finally{l(!1),b(!1),S.current=null,C.current=0,g(0)}})(),{close:()=>V.abort()}},[t,n,r,e.autoAppendAssistant]);return y.useEffect(()=>()=>{var P;N.current=!1,(P=S.current)==null||P.abort()},[]),{isStreaming:a,error:u,assistantText:f,lastCheckpointId:p,lastSeq:w,connected:v,stream:j,stop:E,clear:A,setToken:k}}function Gg(e){return!!e&&typeof e=="object"&&e.protocolVersion==="v1"&&"data"in e}function Yg(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(`
|
|
38
38
|
`)}function Xg({baseUrl:e,onThreadInfo:t,onMessageEvent:n,onUnhandledEvent:r,onSequenceGap:o}){const s=y.useRef(null),i=y.useCallback(p=>{const x=p.seq??null;if(x!==null){const w=s.current;if(w!==null){if(x<=w)return;x>w+1&&(o==null||o({from:w,to:x}))}s.current=x}if(p.type==="thread_info"){console.log("[useChatStreamingService] 🎯 Received thread_info event:",p),t(p);return}if(Hg(p)){n(p);return}r==null||r(p)},[n,o,t,r]),{stream:a,stop:l,isStreaming:u,error:d,setToken:f}=pc({baseUrl:e,token:null}),h=y.useCallback((p,x)=>{s.current=null,a(p,i,{onOpen:x==null?void 0:x.onOpen,onError:w=>{var g;(g=x==null?void 0:x.onError)==null||g.call(x,w)},onGap:(x==null?void 0:x.onGap)??o})},[i,o,a]);return y.useMemo(()=>({startStream:h,stop:l,isStreaming:u,error:d,setAuthToken:f}),[h,l,u,d,f])}const mc=y.createContext(null),gc=y.createContext(null),xc=y.createContext(null),Jg=y.createContext(!1),Zg="cachedThreads",Qg="v1",_o=300,xi=200;function vc(e,t){if(!e&&!t)return!0;if(!e||!t||e.id!==t.id)return!1;try{return JSON.stringify(e.value)===JSON.stringify(t.value)}catch{return e.value===t.value}}function ex(e){var t;for(let n=e.length-1;n>=0;n--){const r=((t=e[n])==null?void 0:t.content)??[];for(let o=r.length-1;o>=0;o--){const s=r[o];if((s==null?void 0:s.type)==="interrupt"){const i=s.id;return{id:(typeof i=="string"?i:null)??`interrupt-${e[n].id??o}`,value:s.value}}}}return null}function tx(e){if(!e||typeof e!="object")return null;const t=e.tasks;if(!Array.isArray(t))return null;for(const n of t){if(!n||typeof n!="object")continue;const r=n.interrupts;if(!Array.isArray(r)||r.length===0)continue;const o=r[0];if(!o)continue;return{id:(typeof(o==null?void 0:o.id)=="string"?o.id:typeof n.id=="string"?n.id:null)??"interrupt-task",value:o==null?void 0:o.value}}return null}function wc(e){if(typeof window<"u"&&"requestIdleCallback"in window)try{window.requestIdleCallback(e,{timeout:1e3});return}catch{}window.setTimeout(e,_o)}function xr(){return typeof window<"u"&&typeof window.localStorage<"u"}function vi(e){if(!xr())return null;try{return window.localStorage.getItem(e)}catch{return null}}function bc(e,t){if(xr())try{window.localStorage.setItem(e,t)}catch{}}function wi(e){if(xr())try{window.localStorage.removeItem(e)}catch{}}function nx(){const e=vi(Zg);if(!e)return[];try{const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>{if(!n||typeof n!="object")return!1;const r=n;return typeof r.threadId=="string"&&typeof r.title=="string"}):[]}catch{return[]}}function rx(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t^e.charCodeAt(n);return(t>>>0).toString(36)}function bi(e,t){return`cachedThreads:v1:${e}:${rx(t||"anon")}`}function ox(e){const t=vi(e);if(!t)return[];try{const n=JSON.parse(t);return Array.isArray(n)?n.filter(r=>{if(!r||typeof r!="object")return!1;const o=r;return typeof o.threadId=="string"&&typeof o.title=="string"}):[]}catch{return[]}}function yi(e,t){try{bc(e,JSON.stringify(t))}catch{}}function Si(e){const t=ox(e);if(t.length>0)return t;const n=nx();if(n.length>0)try{yi(e,n.slice(0,xi))}catch{}return n}function jo(e){const t={},n=[];for(const r of e)!r||typeof r.threadId!="string"||t[r.threadId]||(t[r.threadId]=r,n.push(r.threadId));return{byId:t,order:n}}function Ci(e){return e.order.map(t=>e.byId[t]).filter(Boolean)}function sx({children:e,initialThreadId:t=null,autoLoadInitial:n=!0,disableAutoRestore:r=!1,enableFileAgentRouting:o=!1,fileAgentId:s="invoice_reader",onError:i,onThreadChange:a}){const{api:l,baseUrl:u}=pi(),d=y.useMemo(()=>Tn(u),[u]),f=y.useMemo(()=>{try{return new URL(u).host}catch{return"unknown"}},[u]),h=y.useMemo(()=>`threadPayload:${Qg}:${f}:`,[f]),p=y.useCallback(T=>`${h}${T}`,[h]),x=y.useCallback(T=>{if(!T||typeof T!="object")return null;const _=T;return typeof _.threadId!="string"||!Array.isArray(_.messages)?null:{threadId:_.threadId,messages:_.messages,hasMore:!!_.hasMore,nextCursor:_.nextCursor??null,checkpointId:_.checkpointId??null,checkpointNs:_.checkpointNs??null}},[]),w=y.useCallback(T=>{const _=vi(p(T));if(!_)return null;try{const U=JSON.parse(_);return x(U)}catch{return null}},[p,x]),g=y.useCallback((T,_=100)=>{const U={...T,messages:Array.isArray(T.messages)?T.messages.slice(-_):[]};try{bc(p(T.threadId),JSON.stringify(U))}catch{}},[p]),v=y.useCallback(T=>{wi(p(T))},[p]),b=y.useCallback(()=>{if(xr())try{const T=h;for(let _=0;_<window.localStorage.length;_++){const U=window.localStorage.key(_);U&&U.startsWith(T)&&window.localStorage.removeItem(U)}}catch{}},[h]),[S,N]=y.useState(()=>{var T;return bi(f,(T=l.getAuthToken)==null?void 0:T.call(l))}),[C,k]=y.useState(()=>{var _;const T=Si(bi(f,(_=l.getAuthToken)==null?void 0:_.call(l)));return jo(T)}),E=y.useMemo(()=>Ci(C),[C]),[A,j]=y.useState(t),[P,L]=y.useState(!1),[F,V]=y.useState(!1),[M,Y]=y.useState(null),[q,W]=y.useState(null),[z,$]=y.useState(null),ue=y.useCallback(()=>{const T=Si(S);y.startTransition(()=>{k(jo(T))})},[S]),[D,ee]=y.useState(!1),[fe,ve]=y.useState(!1),[be,ye]=y.useState(null),[K,O]=y.useState(void 0),[J,te]=y.useState(void 0),{state:G,dispatch:se,seed:Ve,prepend:Je,pushUser:nt,onEvent:De,reset:Be}=sc(),Ee=y.useRef(A);y.useEffect(()=>{Ee.current=A},[A]);const Ze=y.useRef(!1),wt=y.useRef([]),ht=y.useRef(null),Z=y.useRef(null),re=y.useRef(new Map),pe=y.useRef(A),Ne=y.useRef(!1),we=y.useRef(null),Ae=y.useRef({threadId:null,checkpointId:null,checkpointNs:null}),Qe=y.useCallback((T,_)=>new Promise((U,he)=>{const ne=async()=>{Ze.current=!0;try{await T(),U()}catch(xe){he(xe)}finally{Ze.current=!1;const xe=wt.current.shift();xe&&xe().catch(()=>{})}};Ze.current?wt.current.push(ne):ne().catch(xe=>{he(xe)})}),[]),ze=y.useRef(E.length),[lt,St]=y.useState(!1),Ut=y.useRef(!1);y.useEffect(()=>{ze.current=E.length},[E.length]),y.useEffect(()=>{const T=Ee.current;if(!T){z!==null&&$(null),Ae.current={threadId:null,checkpointId:null,checkpointNs:null};return}const _=G.pendingInterrupt??ex(G.messages);if(_){vc(z,_)||$(_),Ae.current={threadId:T,checkpointId:G.lastCheckpointId??null,checkpointNs:G.lastCheckpointNs??null};return}const U={threadId:T,checkpointId:G.lastCheckpointId??null,checkpointNs:G.lastCheckpointNs??null},he=Ae.current.threadId===U.threadId&&Ae.current.checkpointId===U.checkpointId&&Ae.current.checkpointNs===U.checkpointNs;if(!(l!=null&&l.getState)){z!==null&&$(null),Ae.current=U;return}if(he&&z===null)return;let ne=!1;return Ae.current=U,l.getState({threadId:T,checkpointId:U.checkpointId??void 0,checkpointNs:U.checkpointNs??void 0}).then(xe=>{if(ne)return;const me=tx(xe==null?void 0:xe.state);vc(z,me??null)||$(me??null)}).catch(xe=>{ne||(console.warn("[ChatSessionProvider] Failed to inspect thread state for interrupts:",xe),z!==null&&$(null))}),()=>{ne=!0}},[l,z,G.lastCheckpointId,G.lastCheckpointNs,G.messages,G.pendingInterrupt]);const gt=y.useCallback(async()=>{const T=ze.current>0;T||L(!0);try{const _=await l.listThreads();y.startTransition(()=>{k(U=>{const he=me=>me.map(xt=>`${xt.threadId}:${xt.updatedAt??""}:${xt.messageCount??""}`).join("|"),ne=Ci(U);return he(ne)===he(_)||_.length===0&&ne.length>0&&!Ut.current?U:jo(_)})}),Y(null),Ut.current||(Ut.current=!0,St(!0))}catch(_){i==null||i(String(_)),console.error("[ChatSessionProvider] Failed to refresh threads:",_),Y(String(_))}finally{T||L(!1)}},[l,i]),Rr=y.useRef(!1),cr=y.useRef(null),bt=y.useRef(null),Sn=y.useRef(""),an=y.useCallback((T,_)=>{if(!xr())return;bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null);const U=T.map(ne=>`${ne.threadId}:${ne.updatedAt??""}:${ne.messageCount??""}`).join("|");if(T.length===0){try{wi(S)}catch{}Sn.current="";return}if(U===Sn.current)return;const he=()=>{try{const ne=T.slice(0,xi);yi(S,ne),Sn.current=U}catch{}finally{bt.current=null}};if(_!=null&&_.immediate){he();return}bt.current=window.setTimeout(()=>{wc(he)},_o)},[S]),ur=y.useCallback(()=>{an(E,{immediate:!0})},[an,E]),Nt=y.useCallback((T,_,U)=>{const he=Array.isArray(T==null?void 0:T.messages)?T.messages:[],ne=U??(T==null?void 0:T.threadId)??Ee.current,xe=ne!=null&&ne===Ee.current;if(_==="replace"){if(ne){const me={threadId:ne,messages:he.slice(),hasMore:!!(T!=null&&T.hasMore),nextCursor:(T==null?void 0:T.nextCursor)??null,checkpointId:(T==null?void 0:T.checkpointId)??null,checkpointNs:(T==null?void 0:T.checkpointNs)??null};re.current.set(ne,me),pe.current=ne}if(!xe)return;Ve(he,{checkpointId:(T==null?void 0:T.checkpointId)??null,checkpointNs:(T==null?void 0:T.checkpointNs)??null})}else if(_==="prepend"&&he.length&&ne){const me=re.current.get(ne),xt=(me==null?void 0:me.messages)??[],it=new Set,ut=[...he,...xt].filter(Cn=>{const Zt=Cn==null?void 0:Cn.id;return Zt?it.has(Zt)?!1:(it.add(Zt),!0):!0}),Jt={threadId:ne,messages:ut,hasMore:(T==null?void 0:T.hasMore)??(me==null?void 0:me.hasMore)??!1,nextCursor:(T==null?void 0:T.nextCursor)??(me==null?void 0:me.nextCursor)??null,checkpointId:(me==null?void 0:me.checkpointId)??(T==null?void 0:T.checkpointId)??null,checkpointNs:(me==null?void 0:me.checkpointNs)??(T==null?void 0:T.checkpointNs)??null};if(re.current.set(ne,Jt),!xe)return;Je(he)}else _==="prepend"&&he.length&&Je(he);xe&&(_==="replace"?(ye((T==null?void 0:T.nextCursor)??null),ee(!!(T!=null&&T.hasMore)),O((T==null?void 0:T.checkpointId)??void 0),te((T==null?void 0:T.checkpointNs)??void 0)):(ye(me=>(T==null?void 0:T.nextCursor)??me??null),ee(me=>(T==null?void 0:T.hasMore)!==void 0?!!(T!=null&&T.hasMore):me),O(me=>(T==null?void 0:T.checkpointId)??me??void 0),te(me=>(T==null?void 0:T.checkpointNs)??me??void 0)))},[Je,Ve]),ln=y.useCallback(T=>{T.threadId!=null&&T.threadId!==Ee.current||(Ve(T.messages,{checkpointId:T.checkpointId,checkpointNs:T.checkpointNs}),ye(T.nextCursor),ee(T.hasMore),O(T.checkpointId??void 0),te(T.checkpointNs??void 0),pe.current=T.threadId)},[Ve]),Xt=y.useCallback(T=>{T&&(re.current.delete(T),v(T),pe.current===T&&(pe.current=null))},[v]),cn=y.useCallback(()=>{const T=Ee.current;T&&Xt(T),Be([]),ee(!1),ve(!1),ye(null),O(void 0),te(void 0)},[Xt,Be]),dr=y.useCallback(({from:T,to:_})=>{const U=Ee.current;U&&console.warn(`[ChatSessionProvider] Stream sequence gap detected (${T} -> ${_}) for thread ${U}`)},[]),Pr=y.useCallback(T=>{const _=T.threadId;console.log("[ChatSessionProvider] 📥 Handling thread_info event:",{threadId:_,title:T.title,created:T.created,currentThreads:E.length});const U={threadId:_,title:T.title||`Thread ${_.slice(0,8)}`,createdAt:T.createdAt||new Date().toISOString(),updatedAt:T.updatedAt||new Date().toISOString(),messageCount:T.messageCount||0};Ee.current!==_&&(!Ee.current&&G.messages.length<=1&&(Z.current=_),j(_)),y.startTransition(()=>{k(he=>{const ne=he.byId[_];return ne?ne.title===U.title&&ne.updatedAt===U.updatedAt&&ne.messageCount===U.messageCount?he:{byId:{...he.byId,[_]:U},order:he.order}:{byId:{...he.byId,[_]:U},order:[_,...he.order]}})})},[G.messages.length]),{startStream:Or,stop:fr,isStreaming:Nn,error:Mr,setAuthToken:An}=Xg({baseUrl:d,onThreadInfo:Pr,onMessageEvent:De,onUnhandledEvent:T=>{console.warn(`[ChatSessionProvider] Unhandled stream event: ${T.type}`,T)},onSequenceGap:dr});y.useEffect(()=>{Rr.current=Nn},[Nn]),y.useEffect(()=>{if(!xr())return;bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null);const T=E.map(U=>`${U.threadId}:${U.updatedAt??""}:${U.messageCount??""}`).join("|");if(E.length===0){try{wi(S)}catch{}Sn.current="";return}if(T===Sn.current)return;const _=()=>{try{const U=E.slice(0,xi);yi(S,U),Sn.current=T}catch{}finally{bt.current=null}};return bt.current=window.setTimeout(()=>{wc(_),bt.current=null},_o),()=>{bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null)}},[E,an]),y.useEffect(()=>{var he;const T=l.getAuthToken();An(T);const _=ne=>{const xe=bi(f,ne);we.current!==xe&&(we.current=xe,Ne.current=!1),N(xe);const me=Si(xe);y.startTransition(()=>{k(jo(me))}),Ne.current||(Ne.current=!0,gt().catch(()=>{}))};_(T);const U=(he=l.onTokenChange)==null?void 0:he.call(l,ne=>{An(ne),b(),_(ne)});return()=>{U==null||U()}},[l,f,An,b,gt]);const hr=y.useCallback(async T=>{var he;const _=`Thread ${(he=crypto.randomUUID)==null?void 0:he.call(crypto)}`,U={threadId:_,title:T||"New Chat",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messageCount:0};k(ne=>({byId:{...ne.byId,[_]:U},order:[_,...ne.order]})),j(_);try{const ne=await l.createThread(T),xe=typeof ne=="string"?ne:ne.threadId;return k(me=>{const xt=me.byId[_];if(!xt)return me;const it={...me.byId};delete it[_],it[xe]={...xt,threadId:xe};const ut=me.order.map(Jt=>Jt===_?xe:Jt);return{byId:it,order:ut}}),j(xe),setTimeout(()=>gt(),10),Y(null),xe}catch(ne){throw k(xe=>{if(!xe.byId[_])return xe;const me={...xe.byId};delete me[_];const xt=xe.order.filter(it=>it!==_);return{byId:me,order:xt}}),j(null),Y(String(ne)),ne}},[l,gt]),ae=y.useCallback(async T=>{try{await l.deleteThread(T);let _=null;k(U=>{if(!U.byId[T])return U;const he={...U.byId};delete he[T];const ne=U.order.filter(me=>me!==T),xe={byId:he,order:ne};return _=Ci(xe),xe}),_&&an(_,{immediate:!0}),Xt(T),Ee.current===T&&(Z.current=T,j(null),Ee.current=null,pe.current=null,cn()),await gt(),Y(null)}catch(_){throw Y(String(_)),_}},[l,cn,Xt,gt,an]),Te=y.useCallback(async(T,_)=>{try{await l.updateThread(T,_),k(U=>{const he=U.byId[T];return he?{byId:{...U.byId,[T]:{...he,title:_}},order:U.order}:U}),Y(null)}catch(U){throw await gt(),Y(String(U)),U}},[l,gt]),Oe=y.useCallback(async(T,_,U,he=!1)=>{await Qe(async()=>{if(Z.current===T&&!he){Z.current=null;return}if(ht.current===T&&!he)return;j(it=>it===T?it:T),Ee.current=T;const ne=!he&&!_&&!U;let xe=!1;if(ne){const it=re.current.get(T);if(it)ln(it),xe=!0;else{const ut=w(T);ut&&(re.current.set(T,ut),ln(ut),xe=!0)}}const me=he||!xe||!!_||!!U,xt=async it=>{it&&V(!0),ht.current=T;try{const ut=await l.getStateHistory({threadId:T,checkpointId:_,checkpointNs:U}),Jt=nc(ut);Nt(Jt,"replace",T),W(null)}catch(ut){throw(!xe||he||it)&&(i==null||i(String(ut))),W(String(ut)),ut}finally{ht.current=null,it&&V(!1)}};me?await xt(!0):ne&&xe&&xt(!1).catch(it=>{console.warn("[ChatSessionProvider] Background refresh failed:",it)})},`loadThread-${T}`)},[l,ln,Nt,Qe,i]),rt=y.useCallback(async()=>{await Qe(async()=>{const T=Ee.current;T&&Xt(T),Z.current=null,j(null),Ee.current=null,pe.current=null,cn(),O(void 0),te(void 0);try{localStorage.removeItem("lastThreadId")}catch(_){console.warn("[ChatSessionProvider] Failed to clear lastThreadId:",_)}},"clearCurrentThread")},[cn,Xt,Qe]),Rt=y.useCallback(async T=>{const _=await l.listCheckpoints(T);return _g(_,T)},[l]),I=y.useCallback(async(T,_)=>{if(!Ee.current)throw new Error("No active thread");await Oe(Ee.current,T,_??void 0,!0)},[Oe]),B=y.useCallback(async()=>{if(!Ee.current)throw new Error("No active thread");await Oe(Ee.current,void 0,void 0,!0)},[Oe]),oe=y.useCallback(async()=>{if(!Ee.current)throw new Error("No active thread");if(fe||!D)return;const T=be;if(T){ve(!0);try{const _=Ee.current,U=await l.getStateHistory({threadId:_,checkpointId:T??K,checkpointNs:J}),he=nc(U);Nt(he,"prepend",_??void 0),W(null)}catch(_){throw W(String(_)),_}finally{ve(!1)}}},[l,Nt,D,K,J,be,fe]),ke=y.useCallback(T=>{if(!(T!=null&&T.threadId))return;const _={threadId:T.threadId,checkpointId:T.checkpointId??void 0,checkpointNs:T.checkpointNs??void 0,messages:T.messages??[],hasMore:T.hasMore,nextCursor:T.nextCursor??null};Nt(_,"replace",T.threadId)},[Nt]),Fe=y.useCallback(async(T,_)=>{var Js;const U=Ee.current,he=(T==null?void 0:T.text)??"",ne=(T==null?void 0:T.attachments)??[],xe=ne.length?ne:(_==null?void 0:_.attachments)??[],me={...(_==null?void 0:_.payloadExtras)??{},...(T==null?void 0:T.payload)??{}};if(!U&&!Object.keys(me).length&&xe.length===0&&!he.trim()){console.warn("[ChatSessionProvider] Nothing to submit - skipping");return}!U&&!me.messages&&console.warn("[ChatSessionProvider] No thread ID - message will create new thread");const{contentParts:xt,filesInfo:it}=await Rg(l,xe),ut=[...xt];he&&he.trim()&&ut.push({type:"text",text:he.trim()});const Jt=!!U,Cn=Jt?(_==null?void 0:_.checkpointId)??G.lastCheckpointId??void 0:void 0,Zt=Jt?(_==null?void 0:_.checkpointNs)??G.lastCheckpointNs??void 0:void 0,Dr={id:((Js=crypto.randomUUID)==null?void 0:Js.call(crypto))||`user-${Date.now()}`,role:"user",content:ut,createdAt:new Date().toISOString(),...Cn!=null?{checkpointId:Cn}:{},...Zt!=null?{checkpointNs:Zt}:{}};ut.length>0&&nt(Dr);const sl={...Dr,content:ut},Ys=xe.length>0,Xs={...U?{threadId:U}:{},payload:{messages:ut.length>0?[sl]:[],files_info:it,...o&&Ys&&s?{active_agent:s}:{},...me},...Cn!=null?{checkpointId:Cn}:{},...Zt!=null?{checkpointNs:Zt}:{},nodeFilter:_==null?void 0:_.nodeFilter,config:_==null?void 0:_.config};Or(Xs,{onError:_n=>{console.warn("[ChatSessionProvider] Stream error:",_n)},onOpen:({threadId:_n})=>{!Ee.current&&_n&&(G.messages.length<=1&&(Z.current=_n),j(_n))},onGap:dr})},[l,o,s,dr,G.lastCheckpointId,G.lastCheckpointNs,G.messages.length,nt,Or]),qe=y.useCallback(async(T,_,U)=>{var ne,xe;const he=Ee.current;if(!he)throw new Error("No active thread to handle interrupt");try{const me=_?U??!0:!1;try{se({type:"interrupt_response",payload:{interruptId:T}})}catch(Dr){console.warn("[ChatSessionProvider] optimistic interrupt_response dispatch failed:",Dr)}const xt=`${d}/runs/resume`,it=(ne=l.getAuthToken)==null?void 0:ne.call(l),ut=await fetch(xt,{method:"POST",headers:{"Content-Type":"application/json",...it?{Authorization:`Bearer ${it}`}:{}},body:JSON.stringify({thread_id:he,value:me})});if(!ut.ok)throw new Error(`Resume failed with status ${ut.status}`);const Jt=(xe=ut.body)==null?void 0:xe.getReader();if(!Jt)throw new Error("No response body for resume stream");const Cn=new TextDecoder;let Zt="";for(;;){const{done:Dr,value:sl}=await Jt.read();if(Dr)break;Zt+=Cn.decode(sl,{stream:!0});const Ys=Zt.split(`
|
package/package.json
CHANGED