@teodorruskvi/chat-core 0.1.19 → 0.1.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.umd.js CHANGED
@@ -1,7 +1,7 @@
1
1
  (function(A,Y){typeof exports=="object"&&typeof module<"u"?Y(exports,require("react/jsx-runtime"),require("react"),require("axios")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","axios"],Y):(A=typeof globalThis<"u"?globalThis:A||self,Y(A.ChatCore={},A.jsxRuntime,A.React,A.axios))})(this,function(A,Y,i,ht){"use strict";var $s=Object.defineProperty;var Bs=(A,Y,i)=>Y in A?$s(A,Y,{enumerable:!0,configurable:!0,writable:!0,value:i}):A[Y]=i;var En=(A,Y,i)=>Bs(A,typeof Y!="symbol"?Y+"":Y,i);function Pn(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const zt=Pn(i);function Ut(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=Ut(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function _n(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=Ut(e))&&(r&&(r+=" "),r+=t);return r}const yt="-",Nn=e=>{const t=jn(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:a=>{const l=a.split(yt);return l[0]===""&&l.length!==1&&l.shift(),Ot(l,t)||Ln(a)},getConflictingClassGroupIds:(a,l)=>{const p=n[a]||[];return l&&r[a]?[...p,...r[a]]:p}}},Ot=(e,t)=>{var a;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),s=r?Ot(e.slice(1),r):void 0;if(s)return s;if(t.validators.length===0)return;const o=e.join(yt);return(a=t.validators.find(({validator:l})=>l(o)))==null?void 0:a.classGroupId},$t=/^\[(.+)\]$/,Ln=e=>{if($t.test(e)){const t=$t.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},jn=e=>{const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return zn(Object.entries(e.classGroups),n).forEach(([o,a])=>{bt(a,r,o,t)}),r},bt=(e,t,n,r)=>{e.forEach(s=>{if(typeof s=="string"){const o=s===""?t:Bt(t,s);o.classGroupId=n;return}if(typeof s=="function"){if(Fn(s)){bt(s(r),t,n,r);return}t.validators.push({validator:s,classGroupId:n});return}Object.entries(s).forEach(([o,a])=>{bt(a,Bt(t,o),n,r)})})},Bt=(e,t)=>{let n=e;return t.split(yt).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},Fn=e=>e.isThemeGetter,zn=(e,t)=>t?e.map(([n,r])=>{const s=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([a,l])=>[t+a,l])):o);return[n,s]}):e,Un=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;const s=(o,a)=>{n.set(o,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(o){let a=n.get(o);if(a!==void 0)return a;if((a=r.get(o))!==void 0)return s(o,a),a},set(o,a){n.has(o)?n.set(o,a):s(o,a)}}},Dt="!",On=e=>{const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,s=t[0],o=t.length,a=l=>{const p=[];let u=0,c=0,f;for(let w=0;w<l.length;w++){let I=l[w];if(u===0){if(I===s&&(r||l.slice(w,w+o)===t)){p.push(l.slice(c,w)),c=w+o;continue}if(I==="/"){f=w;continue}}I==="["?u++:I==="]"&&u--}const h=p.length===0?l:l.substring(c),b=h.startsWith(Dt),k=b?h.substring(1):h,m=f&&f>c?f-c:void 0;return{modifiers:p,hasImportantModifier:b,baseClassName:k,maybePostfixModifierPosition:m}};return n?l=>n({className:l,parseClassName:a}):a},$n=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t},Bn=e=>({cache:Un(e.cacheSize),parseClassName:On(e),...Nn(e)}),Dn=/\s+/,Vn=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s}=t,o=[],a=e.trim().split(Dn);let l="";for(let p=a.length-1;p>=0;p-=1){const u=a[p],{modifiers:c,hasImportantModifier:f,baseClassName:h,maybePostfixModifierPosition:b}=n(u);let k=!!b,m=r(k?h.substring(0,b):h);if(!m){if(!k){l=u+(l.length>0?" "+l:l);continue}if(m=r(h),!m){l=u+(l.length>0?" "+l:l);continue}k=!1}const w=$n(c).join(":"),I=f?w+Dt:w,x=I+m;if(o.includes(x))continue;o.push(x);const P=s(m,k);for(let N=0;N<P.length;++N){const L=P[N];o.push(I+L)}l=u+(l.length>0?" "+l:l)}return l};function Kn(){let e=0,t,n,r="";for(;e<arguments.length;)(t=arguments[e++])&&(n=Vt(t))&&(r&&(r+=" "),r+=n);return r}const Vt=e=>{if(typeof e=="string")return e;let t,n="";for(let r=0;r<e.length;r++)e[r]&&(t=Vt(e[r]))&&(n&&(n+=" "),n+=t);return n};function Hn(e,...t){let n,r,s,o=a;function a(p){const u=t.reduce((c,f)=>f(c),e());return n=Bn(u),r=n.cache.get,s=n.cache.set,o=l,l(p)}function l(p){const u=r(p);if(u)return u;const c=Vn(p,n);return s(p,c),c}return function(){return o(Kn.apply(null,arguments))}}const J=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},Kt=/^\[(?:([a-z-]+):)?(.+)\]$/i,Gn=/^\d+\/\d+$/,qn=new Set(["px","full","screen"]),Wn=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Jn=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Xn=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Qn=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Yn=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ce=e=>Ve(e)||qn.has(e)||Gn.test(e),Pe=e=>Ke(e,"length",or),Ve=e=>!!e&&!Number.isNaN(Number(e)),wt=e=>Ke(e,"number",Ve),We=e=>!!e&&Number.isInteger(Number(e)),Zn=e=>e.endsWith("%")&&Ve(e.slice(0,-1)),U=e=>Kt.test(e),_e=e=>Wn.test(e),Rn=new Set(["length","size","percentage"]),er=e=>Ke(e,Rn,Ht),tr=e=>Ke(e,"position",Ht),nr=new Set(["image","url"]),rr=e=>Ke(e,nr,ir),sr=e=>Ke(e,"",ar),Je=()=>!0,Ke=(e,t,n)=>{const r=Kt.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1},or=e=>Jn.test(e)&&!Xn.test(e),Ht=()=>!1,ar=e=>Qn.test(e),ir=e=>Yn.test(e),lr=Hn(()=>{const e=J("colors"),t=J("spacing"),n=J("blur"),r=J("brightness"),s=J("borderColor"),o=J("borderRadius"),a=J("borderSpacing"),l=J("borderWidth"),p=J("contrast"),u=J("grayscale"),c=J("hueRotate"),f=J("invert"),h=J("gap"),b=J("gradientColorStops"),k=J("gradientColorStopPositions"),m=J("inset"),w=J("margin"),I=J("opacity"),x=J("padding"),P=J("saturate"),N=J("scale"),L=J("sepia"),v=J("skew"),S=J("space"),F=J("translate"),O=()=>["auto","contain","none"],$=()=>["auto","hidden","clip","visible","scroll"],B=()=>["auto",U,t],_=()=>[U,t],q=()=>["",Ce,Pe],K=()=>["auto",Ve,U],W=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Z=()=>["solid","dashed","dotted","double","none"],R=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],C=()=>["start","end","center","between","around","evenly","stretch"],z=()=>["","0",U],G=()=>["auto","avoid","all","avoid-page","page","left","right","column"],D=()=>[Ve,U];return{cacheSize:500,separator:":",theme:{colors:[Je],spacing:[Ce,Pe],blur:["none","",_e,U],brightness:D(),borderColor:[e],borderRadius:["none","","full",_e,U],borderSpacing:_(),borderWidth:q(),contrast:D(),grayscale:z(),hueRotate:D(),invert:z(),gap:_(),gradientColorStops:[e],gradientColorStopPositions:[Zn,Pe],inset:B(),margin:B(),opacity:D(),padding:_(),saturate:D(),scale:D(),sepia:z(),skew:D(),space:_(),translate:_()},classGroups:{aspect:[{aspect:["auto","square","video",U]}],container:["container"],columns:[{columns:[_e]}],"break-after":[{"break-after":G()}],"break-before":[{"break-before":G()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...W(),U]}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:O()}],"overscroll-x":[{"overscroll-x":O()}],"overscroll-y":[{"overscroll-y":O()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[m]}],"inset-x":[{"inset-x":[m]}],"inset-y":[{"inset-y":[m]}],start:[{start:[m]}],end:[{end:[m]}],top:[{top:[m]}],right:[{right:[m]}],bottom:[{bottom:[m]}],left:[{left:[m]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",We,U]}],basis:[{basis:B()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",U]}],grow:[{grow:z()}],shrink:[{shrink:z()}],order:[{order:["first","last","none",We,U]}],"grid-cols":[{"grid-cols":[Je]}],"col-start-end":[{col:["auto",{span:["full",We,U]},U]}],"col-start":[{"col-start":K()}],"col-end":[{"col-end":K()}],"grid-rows":[{"grid-rows":[Je]}],"row-start-end":[{row:["auto",{span:[We,U]},U]}],"row-start":[{"row-start":K()}],"row-end":[{"row-end":K()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",U]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",U]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...C()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...C(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...C(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[x]}],px:[{px:[x]}],py:[{py:[x]}],ps:[{ps:[x]}],pe:[{pe:[x]}],pt:[{pt:[x]}],pr:[{pr:[x]}],pb:[{pb:[x]}],pl:[{pl:[x]}],m:[{m:[w]}],mx:[{mx:[w]}],my:[{my:[w]}],ms:[{ms:[w]}],me:[{me:[w]}],mt:[{mt:[w]}],mr:[{mr:[w]}],mb:[{mb:[w]}],ml:[{ml:[w]}],"space-x":[{"space-x":[S]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[S]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",U,t]}],"min-w":[{"min-w":[U,t,"min","max","fit"]}],"max-w":[{"max-w":[U,t,"none","full","min","max","fit","prose",{screen:[_e]},_e]}],h:[{h:[U,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[U,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[U,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[U,t,"auto","min","max","fit"]}],"font-size":[{text:["base",_e,Pe]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",wt]}],"font-family":[{font:[Je]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",U]}],"line-clamp":[{"line-clamp":["none",Ve,wt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Ce,U]}],"list-image":[{"list-image":["none",U]}],"list-style-type":[{list:["none","disc","decimal",U]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[I]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[I]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Z(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Ce,Pe]}],"underline-offset":[{"underline-offset":["auto",Ce,U]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:_()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[I]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...W(),tr]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",er]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},rr]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[k]}],"gradient-via-pos":[{via:[k]}],"gradient-to-pos":[{to:[k]}],"gradient-from":[{from:[b]}],"gradient-via":[{via:[b]}],"gradient-to":[{to:[b]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-y":[{"border-y":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-b":[{"border-b":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[I]}],"border-style":[{border:[...Z(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[l]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[I]}],"divide-style":[{divide:Z()}],"border-color":[{border:[s]}],"border-color-x":[{"border-x":[s]}],"border-color-y":[{"border-y":[s]}],"border-color-s":[{"border-s":[s]}],"border-color-e":[{"border-e":[s]}],"border-color-t":[{"border-t":[s]}],"border-color-r":[{"border-r":[s]}],"border-color-b":[{"border-b":[s]}],"border-color-l":[{"border-l":[s]}],"divide-color":[{divide:[s]}],"outline-style":[{outline:["",...Z()]}],"outline-offset":[{"outline-offset":[Ce,U]}],"outline-w":[{outline:[Ce,Pe]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[I]}],"ring-offset-w":[{"ring-offset":[Ce,Pe]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",_e,sr]}],"shadow-color":[{shadow:[Je]}],opacity:[{opacity:[I]}],"mix-blend":[{"mix-blend":[...R(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":R()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[p]}],"drop-shadow":[{"drop-shadow":["","none",_e,U]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[c]}],invert:[{invert:[f]}],saturate:[{saturate:[P]}],sepia:[{sepia:[L]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[p]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[c]}],"backdrop-invert":[{"backdrop-invert":[f]}],"backdrop-opacity":[{"backdrop-opacity":[I]}],"backdrop-saturate":[{"backdrop-saturate":[P]}],"backdrop-sepia":[{"backdrop-sepia":[L]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[a]}],"border-spacing-x":[{"border-spacing-x":[a]}],"border-spacing-y":[{"border-spacing-y":[a]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",U]}],duration:[{duration:D()}],ease:[{ease:["linear","in","out","in-out",U]}],delay:[{delay:D()}],animate:[{animate:["none","spin","ping","pulse","bounce",U]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[N]}],"scale-x":[{"scale-x":[N]}],"scale-y":[{"scale-y":[N]}],rotate:[{rotate:[We,U]}],"translate-x":[{"translate-x":[F]}],"translate-y":[{"translate-y":[F]}],"skew-x":[{"skew-x":[v]}],"skew-y":[{"skew-y":[v]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",U]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":_()}],"scroll-mx":[{"scroll-mx":_()}],"scroll-my":[{"scroll-my":_()}],"scroll-ms":[{"scroll-ms":_()}],"scroll-me":[{"scroll-me":_()}],"scroll-mt":[{"scroll-mt":_()}],"scroll-mr":[{"scroll-mr":_()}],"scroll-mb":[{"scroll-mb":_()}],"scroll-ml":[{"scroll-ml":_()}],"scroll-p":[{"scroll-p":_()}],"scroll-px":[{"scroll-px":_()}],"scroll-py":[{"scroll-py":_()}],"scroll-ps":[{"scroll-ps":_()}],"scroll-pe":[{"scroll-pe":_()}],"scroll-pt":[{"scroll-pt":_()}],"scroll-pr":[{"scroll-pr":_()}],"scroll-pb":[{"scroll-pb":_()}],"scroll-pl":[{"scroll-pl":_()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Ce,Pe,wt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}});function cr(...e){return lr(_n(e))}function ur(e){let t=!1,n="";for(const s of e){if(s==="\\"){n+=s,t=!t;continue}if(s==="'"&&!t){n+='"';continue}n+=s,t=!1}return n.replace(/\bTrue\b/g,"true").replace(/\bFalse\b/g,"false").replace(/\bNone\b/g,"null")}function nt(e){const t=e==null?void 0:e.trim();if(!t||!(t.startsWith("{")||t.startsWith("[")))return null;try{return JSON.parse(t)}catch{const n=ur(t);if(n)try{return JSON.parse(n)}catch{return null}return null}}function Gt(e){return typeof e!="string"?!1:/^[\s\n]*[-*]\s|^[\s\n]*#+\s|```|^\s*\[.*\]\(|^>\s/.test(e)}function dr(e){return e.type==="image_url"}function fr(e){return e.type==="file"}function pr(e){return Array.isArray(e.content)?e.content.filter(t=>t.type==="text").map(t=>t.text).join(`
2
2
  `).trim():typeof e.content=="string"?e.content:""}function gr(e){return e.content.filter(dr)}function mr(e){return e.content.filter(fr)}function qt(e){return Array.isArray(e.toolCalls)?e.toolCalls:[]}function hr(e){const t=[];return e.forEach(n=>{n.artifact&&t.push(n.artifact),Array.isArray(n.toolCalls)&&n.toolCalls.forEach(r=>{r!=null&&r.artifact&&t.push(r.artifact)})}),t}function kt(e){return!!(e&&typeof e=="object"&&(e.type==="file"||e.mimeType||e.filename||e.sourceType==="base64"))}function Xe(e){if(typeof e=="string")return e;if(e&&typeof e=="object"){if(Array.isArray(e)){const n=e.map(Xe).filter(r=>r!==void 0);if(!n.length){console.debug("[message-utils] sanitizeForDisplay - array emptied -> returning undefined",{originalLength:e.length});return}return n}if(kt(e)){try{console.debug("[message-utils] sanitizeForDisplay - dropping file-like object",{sampleFilename:e&&(e.filename||e.name)?e.filename||e.name:void 0,keys:Object.keys(e||{})})}catch(n){console.debug("[message-utils] sanitizeForDisplay - dropped file-like (unable to inspect)",{err:String(n)})}return}const t={};for(const n of Object.keys(e)){const r=e[n];if(n==="data"&&typeof r=="string"&&r.length>100)t[n]=`[base64 ${r.length} chars omitted]`;else{const s=Xe(r);s!==void 0&&(t[n]=s)}}if(Object.keys(t).length)return t;try{console.debug("[message-utils] sanitizeForDisplay - object emptied -> returning undefined",{originalKeys:Object.keys(e||{})})}catch(n){console.debug("[message-utils] sanitizeForDisplay - object emptied -> returning undefined (inspect failed)",{err:String(n)})}return}return e}function vt(e){if(typeof e=="string")return e;if(kt(e))return"";try{const t=Xe(e);return t===void 0?"":typeof t=="string"?t:JSON.stringify(t,null,2)}catch{return""}}function yr(e){const t=vt(e);return typeof e=="string"&&Gt(e)?{content:e,isMarkdown:!0}:{content:t,isMarkdown:!1}}function Wt(e){const t=r=>{try{const s=Xe(r);return typeof s=="string"?s:JSON.stringify(s??"")}catch{return""}},n=e.filter(r=>r.type==="text");return n.length?t(n.map(r=>r.text).join(`
3
3
  `)):t(e)}function br(e){return e.content.some(t=>t.type==="text"?t.text.trim().length>0:t.type==="image_url"||t.type==="file")}function ke(e){if(e==null)return e;if(typeof e=="string"){const t=e.trim();if(t.startsWith("{")||t.startsWith("[")){const n=nt(t);if(n!==null)return ke(n)}return e}if(typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0)return Array.isArray(e.content)?e.content.map(t=>ke(t)).filter(Boolean).join(`
4
- `):ke(e.content);if(e.value!==void 0)return ke(e.value)}return typeof e=="object"&&!Array.isArray(e)&&(e.type==="text"&&typeof e.text=="string"||typeof e.text=="string")?e.text:Array.isArray(e)&&e.length>0?ke(e[0]):e}function wr(e){return e.replace(/[_-](\w)/g,(t,n)=>n?n.toUpperCase():"").replace(/^\w/,t=>t.toLowerCase())}function ve(e){return!e||typeof e!="object"?e:Array.isArray(e)?e.map(ve):Object.fromEntries(Object.entries(e).map(([t,n])=>[wr(t),ve(n)]))}function rt(e){var w,I,x,P,N,L;if(!e||typeof e!="object")return null;const t=ve(e),n=Ir(t);if(!n)return null;const r=Array.isArray(t.toolCalls)?t.toolCalls.map(It):void 0,s=vr(t.content??t.parts,!!(r!=null&&r.length)),o=t.id??`msg-${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`,a=t.createdAt??((w=t.additionalKwargs)==null?void 0:w.createdAt)??new Date().toISOString(),l=t.name??((I=t.additionalKwargs)==null?void 0:I.agentName)??void 0,p=t.model??((x=t.additionalKwargs)==null?void 0:x.model)??void 0,u=t.toolCallId??void 0,c=t.additionalKwargs??void 0,f=t.responseMetadata??void 0,h=t.checkpointId??((P=t.additionalKwargs)==null?void 0:P.checkpointId)??void 0,b=t.checkpointNs??((N=t.additionalKwargs)==null?void 0:N.checkpointNs)??void 0,k=typeof t.toolStreaming=="boolean"?t.toolStreaming:!!((L=t.additionalKwargs)!=null&&L.toolStreaming);return{...t,id:o,role:n,content:s,createdAt:a,name:l,model:p,toolCallId:u,toolCalls:r,checkpointId:h,checkpointNs:b,toolStreaming:k,additionalKwargs:c,responseMetadata:f,artifact:t.artifact??void 0}}function kr(e){if(!e||typeof e!="object")return e;const t=ve(e);if(t.tool&&!t.name&&(t.name=t.tool),t.type==="artifact.update"&&t.artifact&&typeof t.artifact=="object"){const n=t.artifact;!n.id&&n.artifactId&&(n.id=n.artifactId),!n.type&&n.artifactType&&(n.type=n.artifactType)}return t}function It(e){const t=ve(e),n=t.content??t.output??void 0;return{...t,type:"tool_call",id:t.id??t.callId,name:t.name??t.tool??void 0,args:t.args??t.arguments??void 0,content:typeof n=="string"?n:n?JSON.stringify(n):void 0}}function vr(e,t){return Array.isArray(e)?e.map(n=>n.type==="tool_call"||n.type==="tool"?t?null:It(ve(n)):n).filter(n=>!!(n&&typeof n=="object"&&typeof n.type=="string")):[]}function Ir(e){const t=ve(e),n=t.role;if(n&&(n==="assistant"||n==="user"||n==="system"||n==="tool"||n==="interrupt"))return n;const r=t.type;return r==="human"?"user":r==="ai"?"assistant":r==="tool"?"tool":r==="system"?"system":null}function Jt(e){if(!e)return null;const t=String(e).toLowerCase();return t==="running"||t==="pending"?"pending":t==="completed"||t==="success"?"completed":t==="error"||t==="failed"||t==="failure"?"error":null}function Xt(e){return(Array.isArray(e.toolCalls)?e.toolCalls:qt(e)).map(It)}function St(e,t){return t.find(n=>n.role==="tool"&&(n.toolCallId===e||n.id===e))}function Sr(e,t){const n=t.response??t.content;if(!n)return;const r=typeof n=="string"?n:vt(n);if(!r.trim())return;const s=[{type:"text",text:r}];return{id:`tool-${t.id}`,role:"tool",content:s,name:t.name,toolCallId:t.id,artifact:t.artifact,createdAt:e.createdAt}}function Qt(e,t=[]){if(Array.isArray(e)){const s=e.filter(a=>a.role==="assistant").flatMap(a=>Xt(a)),o=new Map;return s.forEach(a=>o.set(a.id,a)),Array.from(o.values()).map(a=>{var f,h,b;const l=St(a.id,e)||St(a.id,t),p=Array.isArray((f=l==null?void 0:l.additionalKwargs)==null?void 0:f.toolProgress)?(h=l==null?void 0:l.additionalKwargs)==null?void 0:h.toolProgress:void 0,u=(l==null?void 0:l.artifact)??a.artifact,c=Jt(a.status)??((b=l==null?void 0:l.additionalKwargs)!=null&&b.toolStreaming?"pending":null)??(l?"completed":"pending");if(l&&!a.content&&c==="completed"){const k=ke(l);typeof k=="string"&&(a.content=k)}return{call:a,result:l,state:c,progress:p,artifact:u}})}if(e.role!=="assistant")return[];const n=Xt(e);return n.length===0?[]:n.map(r=>{var p,u,c;const s=St(r.id,t)??Sr(e,r),o=Array.isArray((p=s==null?void 0:s.additionalKwargs)==null?void 0:p.toolProgress)?(u=s==null?void 0:s.additionalKwargs)==null?void 0:u.toolProgress:void 0,a=(s==null?void 0:s.artifact)??r.artifact,l=Jt(r.status)??((c=s==null?void 0:s.additionalKwargs)!=null&&c.toolStreaming?"pending":null)??(s?"completed":"pending");if(s&&!r.content&&l==="completed"){const f=ke(s);typeof f=="string"&&(r.content=f)}return{call:r,result:s,state:l,progress:o,artifact:a}})}function Tr(e,t=[]){return Qt(e,t).map(n=>n.artifact).filter(n=>!!n)}const Qe={authToken:"authToken",authTokenExpiresAt:"authTokenExpiresAt",authSessionId:"authSessionId",chatSettings:"chat-settings",threadManagerView:"thread-manager-view",playgroundSettings:"new-chat-ui-chat-settings",debugLogs:"app:debugLogs"};function Tt(e){return`draft:${e}`}let st=null;const Ct=new Set;function At(){return st}function Ne(e){st=e,Ct.forEach(t=>t(e))}function xt(e){return Ct.add(e),()=>Ct.delete(e)}const Cr=3e4,Ar=9e4,fe=ht.create({timeout:Cr,withCredentials:!0});fe.interceptors.request.use(e=>(st&&(e.headers.Authorization=`Bearer ${st}`),e)),fe.interceptors.response.use(e=>{if(typeof window<"u"&&(e!=null&&e.data))try{const t=e.data,n=t.data||{},r=typeof t.token=="string"&&t.token||typeof n.token=="string"&&n.token||null,s=typeof t.expires_at=="number"&&t.expires_at||typeof n.expires_at=="number"&&n.expires_at||typeof t.expiresAt=="number"&&t.expiresAt||typeof n.expiresAt=="number"&&n.expiresAt||null;r&&(localStorage.setItem(Qe.authToken,r),Ne(r)),s&&localStorage.setItem(Qe.authTokenExpiresAt,s.toString()),(r||s)&&window.dispatchEvent(new CustomEvent("smartorg:chat-token-updated",{detail:{token:r,expiresAt:s}}))}catch(t){console.warn("[chat-api] Error storing token:",t)}return e},e=>Promise.reject(e));async function ge(e,t){return fe.defaults.baseURL?(await fe.get(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}async function ot(e,t,n){return fe.defaults.baseURL?(await fe.post(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function xr(e,t,n){return fe.defaults.baseURL?(await fe.put(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function Yt(e,t){return fe.defaults.baseURL?(await fe.delete(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}function pe(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class Mr{get baseUrl(){return fe.defaults.baseURL||""}updateConfig(t){if(t.chatBaseUrl)fe.defaults.baseURL=t.chatBaseUrl;else if(t.baseUrl){const n=t.baseUrl.replace(/\/+$/,"");n.endsWith("/chat")?fe.defaults.baseURL=n:fe.defaults.baseURL=`${n}/chat`}t.apiKey!==void 0?Ne(t.apiKey):t.getToken&&Ne(t.getToken())}getAuthToken(){return At()}setAuthToken(t){Ne(t)}onTokenChange(t){return xt(t)}async listThreads(){const t=await ge("/threads"),n=pe(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async listSharedThreads(){const t=await ge("/threads/shared"),n=pe(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t,n){const r={};t&&(r.title=t),n&&(r.project=n);const s=await ot("/threads",Object.keys(r).length?r:void 0);return pe(s)}async updateThread(t,n){const r=await xr(`/threads/${t}`,{title:n});return pe(r)}async deleteThread(t){const n=await Yt(`/threads/${t}`);return pe(n)}async shareThread(t,n){const r=await ot(`/threads/${t}/share`,{shared_with_user_id:n});return pe(r)}async threadInfo(t){const n=await ge(`/threads/${t}/info`);return pe(n)}async listAgents(){const t=await ge("/agents"),n=pe(t);return(n==null?void 0:n.items)??[]}async getAgent(t){const n=await ge(`/agents/${t}`);return pe(n)}async getAgentSchema(t){const n=await ge(`/agents/${t}/schema`);return pe(n)}async getState(t){const n=await ge(`/threads/${t.threadId}/state`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return pe(n)}async getStateHistory(t){const n=await ge(`/threads/${t.threadId}/state`,{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs},timeout:Ar,signal:t.signal}),r=pe(n);return r&&"checkpoints"in r?r:{version:"values@1",threadId:t.threadId,checkpoints:r?[r]:[]}}async cancelRun(t){const n=await ot("/stream/cancel",{threadId:t});return pe(n)}async unshareThread(t,n){const r=await Yt(`/threads/${t}/share/${n}`);return pe(r)}}const Zt=new Mr;class Er{async fetchFileBlob(t,n){return await ge(t,{responseType:"blob",onDownloadProgress:s=>{try{if(n&&s.lengthComputable){const o=s.loaded/s.total;n(o)}}catch{}},maxBodyLength:1/0})}async viewFileById(t,n){const r=await this.fetchFileBlob(`/files/${t}/view`,n),s=URL.createObjectURL(r);window.open(s,"_blank"),setTimeout(()=>URL.revokeObjectURL(s),6e4)}async getFileBlob(t,n){return await this.fetchFileBlob(`/files/${t}/view`,n)}async getFileContent(t,n){return await(await this.fetchFileBlob(`/files/${t}/view`,n)).text()}async downloadFileById(t,n){const r=await this.fetchFileBlob(`/files/${t}/download`,n),s=URL.createObjectURL(r);let o=`file_${t}`;try{const l=await ge(`/files/${t}`);o=(l==null?void 0:l.filename)??o}catch{}const a=document.createElement("a");a.href=s,a.download=o,document.body.appendChild(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(s),6e4)}async getFileInfo(t){return await ge(`/files/${t}`)}async listFiles(t,n=50,r=0){const s={limit:n,offset:r};return t&&(s.thread_id=t),await ge("/files",{params:s})}async uploadFile(t,n,r){const s=new FormData;return s.append("file",t),n&&s.append("thread_id",n),await ot("/files/upload-form",s,{onUploadProgress:o=>{try{if(r&&o.lengthComputable){const a=o.loaded/o.total;r(a)}}catch{}}})}}const Rt=new Er;class Pr{constructor(){En(this,"_authBaseUrl","")}get baseUrl(){return this._authBaseUrl}updateConfig(t){if(t.authBaseUrl)this._authBaseUrl=t.authBaseUrl;else if(t.baseUrl){const n=t.baseUrl.replace(/\/+$/,"");this._authBaseUrl=`${n}/auth`}t.apiKey!==void 0?Ne(t.apiKey):t.getToken&&Ne(t.getToken())}getAuthToken(){return At()}setAuthToken(t){Ne(t)}onTokenChange(t){return xt(t)}async listUsers(){const t=await ge("/users",{baseURL:this.baseUrl});return(t==null?void 0:t.users)??[]}}const _r=new Pr,en=i.createContext(null);function Nr({children:e,apiConfig:t}){const n=Zt,r=_r;if(t){const o=n.baseUrl,a=r.baseUrl,l=n.getAuthToken();(t.baseUrl||t.chatBaseUrl)&&(t.chatBaseUrl&&t.chatBaseUrl!==o||t.baseUrl&&!o.startsWith(t.baseUrl))&&n.updateConfig(t),(t.baseUrl||t.authBaseUrl)&&(t.authBaseUrl&&t.authBaseUrl!==a||t.baseUrl&&!a.startsWith(t.baseUrl))&&r.updateConfig(t),t.apiKey!==void 0&&t.apiKey!==l&&(n.updateConfig({apiKey:t.apiKey}),r.updateConfig({apiKey:t.apiKey}))}const s={token:n.getAuthToken(),setToken:o=>{n.setAuthToken(o),r.setAuthToken(o)},chatApi:n,authApi:r,fileApi:Rt,baseUrl:n.baseUrl};return Y.jsx(en.Provider,{value:s,children:e})}async function Lr(e){return await new Promise((t,n)=>{const r=new FileReader;r.onload=()=>{try{const s=r.result,o=new Uint8Array(s);let a="";const l=o.byteLength;for(let p=0;p<l;p++)a+=String.fromCharCode(o[p]);t(btoa(a))}catch(s){n(s)}},r.onerror=s=>n(s),r.readAsArrayBuffer(e)})}async function jr(e=[]){const t=[],n=[];for(const r of e)try{const s=await Lr(r),o=r.type||"application/octet-stream";n.push({filename:r.name,data:s,mime_type:o}),o.startsWith("image/")?t.push({type:"image_url",image_url:{url:`data:${o};base64,${s}`}}):t.push({type:"file",url:`data:${o};base64,${s}`,mimeType:o,name:r.name,size:r.size})}catch{}return{contentParts:t,filesInfo:n}}function tn(e){return e.filter(t=>t.type==="text").map(t=>t.text).join("")}function Fr(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function nn(e){const t=e.toolCallId??(e.role==="tool"?e.id:void 0);return e.role==="tool"&&!t&&console.error("[meta-utils] CRITICAL: Tool message missing toolCallId!",e),{toolCallId:t??void 0,name:e.name??void 0}}function zr(e){var n;if(e.name&&e.name.trim())return e.name;const t=(n=e.additionalKwargs)==null?void 0:n.agentName;return typeof t=="string"&&t.trim()?t:e.model&&e.model.includes("/")?e.model.split("/").pop()||null:e.model||null}function Ur(e){const t=e.updatedAt??e.createdAt??"",n=Array.isArray(e.content)?e.content.map(a=>{switch(a.type){case"text":return`t:${a.text.length}`;case"image_url":return"img";default:return a.type==="interrupt"?"interrupt":"unknown"}}).join("|"):"",r="checkpointId"in e&&e.checkpointId?`cp:${e.checkpointId}`:"",s="checkpointNs"in e&&e.checkpointNs?`ns:${e.checkpointNs}`:"",o=[r,s].filter(Boolean).join("|");return`${e.id}:${t}:${n}${o?`:${o}`:""}`}function Fe(){const e=i.useContext(en);if(!e)throw new Error("useApi must be used within ApiProvider");return e}function Or(e,t,n){const r=typeof t=="string"?[{type:"text",text:t}]:t;return{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,role:e,content:r,createdAt:new Date().toISOString(),...n}}function rn(e,t="user"){return typeof e=="string"?Or(t,e):e}function Ye(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.trim()}}function $r(e,t){if(!e)return null;for(const n of t){const r=e[n];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function sn(e){const t=Ye(e);if(t)return Ye(t.configurable)??t}async function it(e,t){var l,p;if(!e)return e??null;const n=ve(e),r=Array.isArray(n.checkpoints)?n.checkpoints:n.checkpoints?Object.values(n.checkpoints):[],s=new Set;for(const u of r){const c=(l=u==null?void 0:u.values)==null?void 0:l.messages;if(Array.isArray(c))for(const f of c){const h=f==null?void 0:f.content;if(Array.isArray(h))for(const b of h){if(!b||typeof b!="object"||b.type!=="image_url"&&b.type!=="file")continue;const k=b.fileId||b.file_id;typeof k=="string"&&k.trim()&&s.add(k)}}}if(s.size===0)return n;const o=await Promise.all(Array.from(s).map(async u=>{try{const c=await t.getFileInfo(u),f=ve(c);return[u,f]}catch{return[u,null]}})),a=new Map(o);for(const u of r){const c=(p=u==null?void 0:u.values)==null?void 0:p.messages;if(Array.isArray(c))for(const f of c){const h=f==null?void 0:f.content;if(Array.isArray(h))for(const b of h){if(!b||typeof b!="object"||b.type!=="image_url"&&b.type!=="file")continue;const k=b.fileId||b.file_id;if(!k)continue;const m=a.get(k),w=(m==null?void 0:m.contentUrl)||(m==null?void 0:m.content_url);w&&(b.type==="image_url"?(b.imageUrl=b.imageUrl||{},b.imageUrl.url=w):b.type==="file"&&(b.url=w,!b.name&&(m!=null&&m.filename||m!=null&&m.name)&&(b.name=(m==null?void 0:m.filename)||(m==null?void 0:m.name))))}}}return n}function He(e){const r=[...(Array.isArray(e==null?void 0:e.checkpoints)?(e==null?void 0:e.checkpoints)??[]:e!=null&&e.checkpoints?Object.values(e.checkpoints):[]).map((o,a)=>Br(ve(o),a)).filter(o=>!!o)].sort((o,a)=>on(a.createdAt)-on(o.createdAt)),s=r[0]??null;return{threadId:(e==null?void 0:e.threadId)??"",latest:s,checkpoints:r,interrupt:(s==null?void 0:s.interrupt)??null}}function Br(e,t){var L,v;if(!e)return null;const n=((L=e.values)==null?void 0:L.activeAgent)??null,r=(v=e.values)==null?void 0:v.messages,o=(Array.isArray(r)?r:[]).map(S=>Dr(S,n)).filter(S=>!!S),a=Ye(e.metadata)??{},l=sn(e.config),p=Ye(e.parentConfig),u=sn(p),c=at(l,["checkpointId"]),f=at(l,["checkpointNs"]),h=at(u,["checkpointId"]),b=Ye(e.config),k=Array.isArray(e.tasks)?e.tasks.map(S=>({...S})):e.tasks??null,m=Array.isArray(e.next)?[...e.next]:e.next??null,w=typeof e.createdAt=="string"&&e.createdAt.trim()?e.createdAt:new Date(Date.now()-t).toISOString(),I={...a,step:$r(a,["step"])??0,source:at(a,["source"])??null},x=o.map(S=>({...S,checkpointId:S.checkpointId??c??null,checkpointNs:S.checkpointNs??f??null})),P=e.values,N=Array.isArray(e.interrupts)?e.interrupts:Array.isArray(P==null?void 0:P.interrupts)?P.interrupts:[];return{checkpointId:c??null,checkpointNs:f??null,createdAt:w,parentId:h??null,messages:x,interrupt:Vr(N,t,c??null),metadata:I,config:b??null,parentConfig:p??null,next:m,tasks:k,values:e.values??{}}}function Dr(e,t){const n=rt(e);return n?(n.role==="assistant"&&!n.name&&t&&(n.name=t),n):null}function Vr(e,t,n){const r=e.length;for(let s=r-1;s>=0;s-=1){const o=e[s];if(!o||typeof o!="object")continue;const a=o,l=a.value??o;if(l==null)continue;return{id:typeof a.id=="string"&&a.id.trim()?a.id:`interrupt-${n??t}-${s}`,value:l}}return null}function on(e){if(!e)return 0;const t=Date.parse(e);return Number.isFinite(t)?t:0}function Kr(e){return!!e&&typeof e=="object"&&"data"in e}function an(e={}){const t=e.baseUrl||"",n=e.streamPath??"/stream",[r,s]=i.useState(e.token??null),o=i.useRef(e.headers??{}),a=e.credentials??"include",l=i.useRef(e);i.useEffect(()=>{l.current=e},[e]);const p=i.useCallback(g=>{var M,j,H,X,V,oe,ne,ce,Q,se;const y=l.current;if(!y)return;if(g.type==="thread_info"){(M=y.onThreadInfo)==null||M.call(y,g);return}if(g.type==="values"&&Array.isArray(g.checkpoints)){(j=y.handleValuesEvent)==null||j.call(y,g);return}if(g.type==="metadata"){(H=y.onMetadataEvent)==null||H.call(y,g);return}if(typeof g.type=="string"&&(g.type==="custom"||g.type.startsWith("custom."))){(X=y.onCustomEvent)==null||X.call(y,g);return}(V=y.onEvent)==null||V.call(y,g),g.type==="updates"&&((oe=y.onUpdateEvent)==null||oe.call(y,g)),g.type==="tool.end"?(ne=y.onToolEnd)==null||ne.call(y,g):g.type==="tool.start"&&((ce=y.onToolStart)==null||ce.call(y,g)),g.type==="heartbeat"&&((Q=y.onHeartbeat)==null||Q.call(y,g)),g.type==="token"&&((se=y.onToken)==null||se.call(y,g.token))},[]),[u,c]=i.useState(!1),[f,h]=i.useState(null),[b,k]=i.useState(""),[m,w]=i.useState(null),[I,x]=i.useState(0),[P,N]=i.useState(!1),[L,v]=i.useState({}),[S,F]=i.useState(null),[O,$]=i.useState({}),B=i.useRef(null),_=i.useRef(!0),q=i.useRef(0),K=i.useRef(null),W=i.useRef(null),Z=i.useRef(null),R=i.useRef(null),C=i.useRef({messageId:null,lastSeq:null,lastText:""}),z=i.useCallback(g=>{s(g)},[]),G=i.useCallback(()=>{k(""),w(null),h(null),W.current=null,Z.current=null,R.current=null,v({}),F(null),$({}),C.current={messageId:null,lastSeq:null,lastText:""}},[]),D=i.useCallback(()=>{var M;console.debug("[use-chat] stop() invoked - aborting stream");const g=(M=K.current)==null?void 0:M.threadId,y=()=>{var j;(j=B.current)==null||j.abort(),B.current=null,K.current=null,c(!1),N(!1),q.current=0,x(0)};(g?Zt.cancelRun(g).catch(j=>{console.warn("[use-chat] cancel run failed:",j)}):Promise.resolve()).finally(y)},[]),d=i.useCallback(g=>{B.current&&(B.current.abort(),B.current=null);const y={text:typeof g.content=="string"?g.content:g.text,threadId:g.threadId,attachments:g.attachments,payload:g.payload,config:g.config,checkpointId:g.checkpointId,checkpointNs:g.checkpointNs||void 0,edit:g.edit,command:g.command};c(!0),h(null),k(""),w(null),W.current=null,Z.current=null,R.current=null,v({}),F(null),$({}),C.current={messageId:null,lastSeq:null,lastText:""};const T=new AbortController;B.current=T;let M=null,j=!1;return K.current={threadId:y.threadId??null,headers:{},isStreaming:!0},(async()=>{var H,X,V,oe,ne,ce,Q,se,Le,je,ie,Ie;try{let me={};try{if(r)me={Authorization:`Bearer ${r}`};else if(typeof window<"u"){const ye=window.__AUTH_TOKEN__,Lt=((H=window.localStorage)==null?void 0:H.getItem(Qe.authToken))||null;let gt=null;try{const mt=(X=window.localStorage)==null?void 0:X.getItem(Qe.chatSettings);mt&&(gt=((V=JSON.parse(mt))==null?void 0:V.apiKey)||null)}catch{}const qe=ye||Lt||gt||null;qe&&(me={Authorization:`Bearer ${qe}`})}}catch{}console.debug("[use-chat] POST",t+n);let he={};if(typeof window<"u")try{const le=(oe=window.localStorage)==null?void 0:oe.getItem(Qe.authSessionId);le&&(he={"X-Session-Id":le})}catch{}const ze={...me,...he,...o.current},et={"Content-Type":"application/json",Accept:"text/event-stream",...ze},ue=await fetch(t+n,{method:"POST",headers:et,body:JSON.stringify(y),signal:T.signal,credentials:a});if(K.current&&(K.current.headers=ze),!ue.ok||!ue.body){const le=await ue.text().catch(()=>"");console.debug("[use-chat] non-OK response",ue.status,le==null?void 0:le.slice(0,500));const ye=`stream ${ue.status}${le?": "+le:""}`;throw ye&&(h(ye),M="error"),new Error(ye)}N(!0);const Ue=ue.body.getReader(),Ns=new TextDecoder;let Oe="",pt=[];q.current=0,x(0);let tt=0,$e=null;const Nt=()=>{if(pt.length){const le=pt.join("");pt=[],_.current&&k(ye=>ye+le)}$e=null},Ls=()=>{typeof window<"u"&&$e==null&&($e=requestAnimationFrame(Nt))};let An=Date.now();const js=setInterval(()=>{Date.now()-An>18e5&&(h("Stream idle timeout"),M="error",T.abort())},5e3),Fs=1024*1024;try{const ye=(ue.headers.get("X-Thread-Id")||ue.headers.get("x-thread-id"))??null;for(K.current&&!K.current.threadId&&(K.current={...K.current,threadId:ye});;){const{value:Lt,done:gt}=await Ue.read();if(gt)break;Oe+=Ns.decode(Lt,{stream:!0}),Oe.length>Fs&&(Oe="",console.warn("Stream buffer reset: exceeded 1MB"));let qe;for(;(qe=Oe.indexOf(`
4
+ `):ke(e.content);if(e.value!==void 0)return ke(e.value)}return typeof e=="object"&&!Array.isArray(e)&&(e.type==="text"&&typeof e.text=="string"||typeof e.text=="string")?e.text:Array.isArray(e)&&e.length>0?ke(e[0]):e}function wr(e){return e.replace(/[_-](\w)/g,(t,n)=>n?n.toUpperCase():"").replace(/^\w/,t=>t.toLowerCase())}function ve(e){return!e||typeof e!="object"?e:Array.isArray(e)?e.map(ve):Object.fromEntries(Object.entries(e).map(([t,n])=>[wr(t),ve(n)]))}function rt(e){var w,I,x,P,N,L;if(!e||typeof e!="object")return null;const t=ve(e),n=Ir(t);if(!n)return null;const r=Array.isArray(t.toolCalls)?t.toolCalls.map(It):void 0,s=vr(t.content??t.parts,!!(r!=null&&r.length)),o=t.id??`msg-${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`,a=t.createdAt??((w=t.additionalKwargs)==null?void 0:w.createdAt)??new Date().toISOString(),l=t.name??((I=t.additionalKwargs)==null?void 0:I.agentName)??void 0,p=t.model??((x=t.additionalKwargs)==null?void 0:x.model)??void 0,u=t.toolCallId??void 0,c=t.additionalKwargs??void 0,f=t.responseMetadata??void 0,h=t.checkpointId??((P=t.additionalKwargs)==null?void 0:P.checkpointId)??void 0,b=t.checkpointNs??((N=t.additionalKwargs)==null?void 0:N.checkpointNs)??void 0,k=typeof t.toolStreaming=="boolean"?t.toolStreaming:!!((L=t.additionalKwargs)!=null&&L.toolStreaming);return{...t,id:o,role:n,content:s,createdAt:a,name:l,model:p,toolCallId:u,toolCalls:r,checkpointId:h,checkpointNs:b,toolStreaming:k,additionalKwargs:c,responseMetadata:f,artifact:t.artifact??void 0}}function kr(e){if(!e||typeof e!="object")return e;const t=ve(e);if(t.tool&&!t.name&&(t.name=t.tool),t.type==="artifact.update"&&t.artifact&&typeof t.artifact=="object"){const n=t.artifact;!n.id&&n.artifactId&&(n.id=n.artifactId),!n.type&&n.artifactType&&(n.type=n.artifactType)}return t}function It(e){const t=ve(e),n=t.content??t.output??void 0;return{...t,type:"tool_call",id:t.id??t.callId,name:t.name??t.tool??void 0,args:t.args??t.arguments??void 0,content:typeof n=="string"?n:n?JSON.stringify(n):void 0}}function vr(e,t){return Array.isArray(e)?e.map(n=>n.type==="tool_call"||n.type==="tool"?t?null:It(ve(n)):n).filter(n=>!!(n&&typeof n=="object"&&typeof n.type=="string")):[]}function Ir(e){const t=ve(e),n=t.role;if(n&&(n==="assistant"||n==="user"||n==="system"||n==="tool"||n==="interrupt"))return n;const r=t.type;return r==="human"?"user":r==="ai"?"assistant":r==="tool"?"tool":r==="system"?"system":null}function Jt(e){if(!e)return null;const t=String(e).toLowerCase();return t==="running"||t==="pending"?"pending":t==="completed"||t==="success"?"completed":t==="error"||t==="failed"||t==="failure"?"error":null}function Xt(e){return(Array.isArray(e.toolCalls)?e.toolCalls:qt(e)).map(It)}function St(e,t){return t.find(n=>n.role==="tool"&&(n.toolCallId===e||n.id===e))}function Sr(e,t){const n=t.response??t.content;if(!n)return;const r=typeof n=="string"?n:vt(n);if(!r.trim())return;const s=[{type:"text",text:r}];return{id:`tool-${t.id}`,role:"tool",content:s,name:t.name,toolCallId:t.id,artifact:t.artifact,createdAt:e.createdAt}}function Qt(e,t=[]){if(Array.isArray(e)){const s=e.filter(a=>a.role==="assistant").flatMap(a=>Xt(a)),o=new Map;return s.forEach(a=>o.set(a.id,a)),Array.from(o.values()).map(a=>{var f,h,b;const l=St(a.id,e)||St(a.id,t),p=Array.isArray((f=l==null?void 0:l.additionalKwargs)==null?void 0:f.toolProgress)?(h=l==null?void 0:l.additionalKwargs)==null?void 0:h.toolProgress:void 0,u=(l==null?void 0:l.artifact)??a.artifact,c=Jt(a.status)??((b=l==null?void 0:l.additionalKwargs)!=null&&b.toolStreaming?"pending":null)??(l?"completed":"pending");if(l&&!a.content&&c==="completed"){const k=ke(l);typeof k=="string"&&(a.content=k)}return{call:a,result:l,state:c,progress:p,artifact:u}})}if(e.role!=="assistant")return[];const n=Xt(e);return n.length===0?[]:n.map(r=>{var p,u,c;const s=St(r.id,t)??Sr(e,r),o=Array.isArray((p=s==null?void 0:s.additionalKwargs)==null?void 0:p.toolProgress)?(u=s==null?void 0:s.additionalKwargs)==null?void 0:u.toolProgress:void 0,a=(s==null?void 0:s.artifact)??r.artifact,l=Jt(r.status)??((c=s==null?void 0:s.additionalKwargs)!=null&&c.toolStreaming?"pending":null)??(s?"completed":"pending");if(s&&!r.content&&l==="completed"){const f=ke(s);typeof f=="string"&&(r.content=f)}return{call:r,result:s,state:l,progress:o,artifact:a}})}function Tr(e,t=[]){return Qt(e,t).map(n=>n.artifact).filter(n=>!!n)}const Qe={authToken:"authToken",authTokenExpiresAt:"authTokenExpiresAt",authSessionId:"authSessionId",chatSettings:"chat-settings",threadManagerView:"thread-manager-view",playgroundSettings:"new-chat-ui-chat-settings",debugLogs:"app:debugLogs"};function Tt(e){return`draft:${e}`}let st=null;const Ct=new Set;function At(){return st}function Ne(e){st=e,Ct.forEach(t=>t(e))}function xt(e){return Ct.add(e),()=>Ct.delete(e)}const Cr=3e4,Ar=9e4,fe=ht.create({timeout:Cr,withCredentials:!0});fe.interceptors.request.use(e=>(st&&(e.headers.Authorization=`Bearer ${st}`),e)),fe.interceptors.response.use(e=>{if(typeof window<"u"&&(e!=null&&e.data))try{const t=e.data,n=t.data||{},r=typeof t.token=="string"&&t.token||typeof n.token=="string"&&n.token||null,s=typeof t.expires_at=="number"&&t.expires_at||typeof n.expires_at=="number"&&n.expires_at||typeof t.expiresAt=="number"&&t.expiresAt||typeof n.expiresAt=="number"&&n.expiresAt||null;r&&(localStorage.setItem(Qe.authToken,r),Ne(r)),s&&localStorage.setItem(Qe.authTokenExpiresAt,s.toString()),(r||s)&&window.dispatchEvent(new CustomEvent("smartorg:chat-token-updated",{detail:{token:r,expiresAt:s}}))}catch(t){console.warn("[chat-api] Error storing token:",t)}return e},e=>Promise.reject(e));async function ge(e,t){return fe.defaults.baseURL?(await fe.get(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}async function ot(e,t,n){return fe.defaults.baseURL?(await fe.post(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function xr(e,t,n){return fe.defaults.baseURL?(await fe.put(e,t,n)).data:Promise.reject(new Error("API base URL is not configured"))}async function Yt(e,t){return fe.defaults.baseURL?(await fe.delete(e,t)).data:Promise.reject(new Error("API base URL is not configured"))}function pe(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class Mr{get baseUrl(){return fe.defaults.baseURL||""}updateConfig(t){if(t.chatBaseUrl)fe.defaults.baseURL=t.chatBaseUrl;else if(t.baseUrl){const n=t.baseUrl.replace(/\/+$/,"");n.endsWith("/chat")?fe.defaults.baseURL=n:fe.defaults.baseURL=`${n}/chat`}t.apiKey!==void 0?Ne(t.apiKey):t.getToken&&Ne(t.getToken())}getAuthToken(){return At()}setAuthToken(t){Ne(t)}onTokenChange(t){return xt(t)}async listThreads(){const t=await ge("/threads"),n=pe(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async listSharedThreads(){const t=await ge("/threads/shared"),n=pe(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t,n){const r={};t&&(r.title=t),n&&(r.project=n);const s=await ot("/threads",Object.keys(r).length?r:void 0);return pe(s)}async updateThread(t,n){const r=await xr(`/threads/${t}`,{title:n});return pe(r)}async deleteThread(t){const n=await Yt(`/threads/${t}`);return pe(n)}async shareThread(t,n){const r=await ot(`/threads/${t}/share`,{shared_with_user_id:n});return pe(r)}async threadInfo(t){const n=await ge(`/threads/${t}/info`);return pe(n)}async listAgents(){const t=await ge("/agents"),n=pe(t);return(n==null?void 0:n.items)??[]}async getAgent(t){const n=await ge(`/agents/${t}`);return pe(n)}async getAgentSchema(t){const n=await ge(`/agents/${t}/schema`);return pe(n)}async getState(t){const n=await ge(`/threads/${t.threadId}/state`,{params:{checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return pe(n)}async getStateHistory(t){const n=await ge(`/threads/${t.threadId}/state`,{params:{checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs},timeout:Ar,signal:t.signal}),r=pe(n);return r&&"checkpoints"in r?r:{version:"values@1",threadId:t.threadId,checkpoints:r?[r]:[]}}async cancelRun(t){const n=await ot("/stream/cancel",{threadId:t});return pe(n)}async unshareThread(t,n){const r=await Yt(`/threads/${t}/share/${n}`);return pe(r)}}const Zt=new Mr;class Er{async fetchFileBlob(t,n){return await ge(t,{responseType:"blob",onDownloadProgress:s=>{try{if(n&&s.lengthComputable){const o=s.loaded/s.total;n(o)}}catch{}},maxBodyLength:1/0})}async viewFileById(t,n){const r=await this.fetchFileBlob(`/files/${t}/view`,n),s=URL.createObjectURL(r);window.open(s,"_blank"),setTimeout(()=>URL.revokeObjectURL(s),6e4)}async getFileBlob(t,n){return await this.fetchFileBlob(`/files/${t}/view`,n)}async getFileContent(t,n){return await(await this.fetchFileBlob(`/files/${t}/view`,n)).text()}async downloadFileById(t,n){const r=await this.fetchFileBlob(`/files/${t}/download`,n),s=URL.createObjectURL(r);let o=`file_${t}`;try{const l=await ge(`/files/${t}`);o=(l==null?void 0:l.filename)??o}catch{}const a=document.createElement("a");a.href=s,a.download=o,document.body.appendChild(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(s),6e4)}async getFileInfo(t){return await ge(`/files/${t}`)}async listFiles(t,n=50,r=0){const s={limit:n,offset:r};return t&&(s.thread_id=t),await ge("/files",{params:s})}async uploadFile(t,n,r){const s=new FormData;return s.append("file",t),n&&s.append("thread_id",n),await ot("/files/upload-form",s,{onUploadProgress:o=>{try{if(r&&o.lengthComputable){const a=o.loaded/o.total;r(a)}}catch{}}})}}const Rt=new Er;class Pr{constructor(){En(this,"_authBaseUrl","")}get baseUrl(){return this._authBaseUrl}updateConfig(t){if(t.authBaseUrl)this._authBaseUrl=t.authBaseUrl;else if(t.baseUrl){const n=t.baseUrl.replace(/\/+$/,"");this._authBaseUrl=`${n}/auth`}t.apiKey!==void 0?Ne(t.apiKey):t.getToken&&Ne(t.getToken())}getAuthToken(){return At()}setAuthToken(t){Ne(t)}onTokenChange(t){return xt(t)}async listUsers(){const t=await ge("/users",{baseURL:this.baseUrl});return(t==null?void 0:t.users)??[]}}const _r=new Pr,en=i.createContext(null);function Nr({children:e,apiConfig:t}){const n=Zt,r=_r;if(t){const o=n.baseUrl,a=r.baseUrl,l=n.getAuthToken();(t.baseUrl||t.chatBaseUrl)&&(t.chatBaseUrl&&t.chatBaseUrl!==o||t.baseUrl&&!o.startsWith(t.baseUrl))&&n.updateConfig(t),(t.baseUrl||t.authBaseUrl)&&(t.authBaseUrl&&t.authBaseUrl!==a||t.baseUrl&&!a.startsWith(t.baseUrl))&&r.updateConfig(t),t.apiKey!==void 0&&t.apiKey!==l&&(n.updateConfig({apiKey:t.apiKey}),r.updateConfig({apiKey:t.apiKey}))}const s={token:n.getAuthToken(),setToken:o=>{n.setAuthToken(o),r.setAuthToken(o)},chatApi:n,authApi:r,fileApi:Rt,baseUrl:n.baseUrl};return Y.jsx(en.Provider,{value:s,children:e})}async function Lr(e){return await new Promise((t,n)=>{const r=new FileReader;r.onload=()=>{try{const s=r.result,o=new Uint8Array(s);let a="";const l=o.byteLength;for(let p=0;p<l;p++)a+=String.fromCharCode(o[p]);t(btoa(a))}catch(s){n(s)}},r.onerror=s=>n(s),r.readAsArrayBuffer(e)})}async function jr(e=[]){const t=[],n=[];for(const r of e)try{const s=await Lr(r),o=r.type||"application/octet-stream";n.push({filename:r.name,data:s,mime_type:o}),o.startsWith("image/")?t.push({type:"image_url",image_url:{url:`data:${o};base64,${s}`}}):t.push({type:"file",url:`data:${o};base64,${s}`,mimeType:o,name:r.name,size:r.size})}catch{}return{contentParts:t,filesInfo:n}}function tn(e){return e.filter(t=>t.type==="text").map(t=>t.text).join("")}function Fr(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function nn(e){const t=e.toolCallId??(e.role==="tool"?e.id:void 0);return e.role==="tool"&&!t&&console.error("[meta-utils] CRITICAL: Tool message missing toolCallId!",e),{toolCallId:t??void 0,name:e.name??void 0}}function zr(e){var n;if(e.name&&e.name.trim())return e.name;const t=(n=e.additionalKwargs)==null?void 0:n.agentName;return typeof t=="string"&&t.trim()?t:e.model&&e.model.includes("/")?e.model.split("/").pop()||null:e.model||null}function Ur(e){const t=e.updatedAt??e.createdAt??"",n=Array.isArray(e.content)?e.content.map(a=>{switch(a.type){case"text":return`t:${a.text.length}`;case"image_url":return"img";default:return a.type==="interrupt"?"interrupt":"unknown"}}).join("|"):"",r="checkpointId"in e&&e.checkpointId?`cp:${e.checkpointId}`:"",s="checkpointNs"in e&&e.checkpointNs?`ns:${e.checkpointNs}`:"",o=[r,s].filter(Boolean).join("|");return`${e.id}:${t}:${n}${o?`:${o}`:""}`}function Fe(){const e=i.useContext(en);if(!e)throw new Error("useApi must be used within ApiProvider");return e}function Or(e,t,n){const r=typeof t=="string"?[{type:"text",text:t}]:t;return{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,role:e,content:r,createdAt:new Date().toISOString(),...n}}function rn(e,t="user"){return typeof e=="string"?Or(t,e):e}function Ye(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.trim()}}function $r(e,t){if(!e)return null;for(const n of t){const r=e[n];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function sn(e){const t=Ye(e);if(t)return Ye(t.configurable)??t}async function it(e,t){var l,p;if(!e)return e??null;const n=ve(e),r=Array.isArray(n.checkpoints)?n.checkpoints:n.checkpoints?Object.values(n.checkpoints):[],s=new Set;for(const u of r){const c=(l=u==null?void 0:u.values)==null?void 0:l.messages;if(Array.isArray(c))for(const f of c){const h=f==null?void 0:f.content;if(Array.isArray(h))for(const b of h){if(!b||typeof b!="object"||b.type!=="image_url"&&b.type!=="file")continue;const k=b.fileId||b.file_id;typeof k=="string"&&k.trim()&&s.add(k)}}}if(s.size===0)return n;const o=await Promise.all(Array.from(s).map(async u=>{try{const c=await t.getFileInfo(u),f=ve(c);return[u,f]}catch{return[u,null]}})),a=new Map(o);for(const u of r){const c=(p=u==null?void 0:u.values)==null?void 0:p.messages;if(Array.isArray(c))for(const f of c){const h=f==null?void 0:f.content;if(Array.isArray(h))for(const b of h){if(!b||typeof b!="object"||b.type!=="image_url"&&b.type!=="file")continue;const k=b.fileId||b.file_id;if(!k)continue;const m=a.get(k),w=(m==null?void 0:m.contentUrl)||(m==null?void 0:m.content_url);w&&(b.type==="image_url"?(b.imageUrl=b.imageUrl||{},b.imageUrl.url=w):b.type==="file"&&(b.url=w,!b.name&&(m!=null&&m.filename||m!=null&&m.name)&&(b.name=(m==null?void 0:m.filename)||(m==null?void 0:m.name))))}}}return n}function He(e){const r=[...(Array.isArray(e==null?void 0:e.checkpoints)?(e==null?void 0:e.checkpoints)??[]:e!=null&&e.checkpoints?Object.values(e.checkpoints):[]).map((o,a)=>Br(ve(o),a)).filter(o=>!!o)].sort((o,a)=>on(a.createdAt)-on(o.createdAt)),s=r[0]??null;return{threadId:(e==null?void 0:e.threadId)??"",latest:s,checkpoints:r,interrupt:(s==null?void 0:s.interrupt)??null}}function Br(e,t){var L,v;if(!e)return null;const n=((L=e.values)==null?void 0:L.activeAgent)??null,r=(v=e.values)==null?void 0:v.messages,o=(Array.isArray(r)?r:[]).map(S=>Dr(S,n)).filter(S=>!!S),a=Ye(e.metadata)??{},l=sn(e.config),p=Ye(e.parentConfig),u=sn(p),c=at(l,["checkpointId"]),f=at(l,["checkpointNs"]),h=at(u,["checkpointId"]),b=Ye(e.config),k=Array.isArray(e.tasks)?e.tasks.map(S=>({...S})):e.tasks??null,m=Array.isArray(e.next)?[...e.next]:e.next??null,w=typeof e.createdAt=="string"&&e.createdAt.trim()?e.createdAt:new Date(Date.now()-t).toISOString(),I={...a,step:$r(a,["step"])??0,source:at(a,["source"])??null},x=o.map(S=>({...S,checkpointId:S.checkpointId??c??null,checkpointNs:S.checkpointNs??f??null})),P=e.values,N=Array.isArray(e.interrupts)?e.interrupts:Array.isArray(P==null?void 0:P.interrupts)?P.interrupts:[];return{checkpointId:c??null,checkpointNs:f??null,createdAt:w,parentId:h??null,messages:x,interrupt:Vr(N,t,c??null),metadata:I,config:b??null,parentConfig:p??null,next:m,tasks:k,values:e.values??{}}}function Dr(e,t){const n=rt(e);return n?(n.role==="assistant"&&!n.name&&t&&(n.name=t),n):null}function Vr(e,t,n){const r=e.length;for(let s=r-1;s>=0;s-=1){const o=e[s];if(!o||typeof o!="object")continue;const a=o,l=a.value??o;if(l==null)continue;return{id:typeof a.id=="string"&&a.id.trim()?a.id:`interrupt-${n??t}-${s}`,value:l}}return null}function on(e){if(!e)return 0;const t=Date.parse(e);return Number.isFinite(t)?t:0}function Kr(e){return!!e&&typeof e=="object"&&"data"in e}function an(e={}){const t=e.baseUrl||"",n=e.streamPath??"/stream",[r,s]=i.useState(e.token??null),o=i.useRef(e.headers??{}),a=e.credentials??"include",l=i.useRef(e);i.useEffect(()=>{l.current=e},[e]);const p=i.useCallback(g=>{var M,j,H,X,V,oe,ne,ce,Q,se;const y=l.current;if(!y)return;if(g.type==="thread_info"){(M=y.onThreadInfo)==null||M.call(y,g);return}if(g.type==="values"&&Array.isArray(g.checkpoints)){(j=y.handleValuesEvent)==null||j.call(y,g);return}if(g.type==="metadata"){(H=y.onMetadataEvent)==null||H.call(y,g);return}if(typeof g.type=="string"&&(g.type==="custom"||g.type.startsWith("custom."))){(X=y.onCustomEvent)==null||X.call(y,g);return}(V=y.onEvent)==null||V.call(y,g),g.type==="updates"&&((oe=y.onUpdateEvent)==null||oe.call(y,g)),g.type==="tool.end"?(ne=y.onToolEnd)==null||ne.call(y,g):g.type==="tool.start"&&((ce=y.onToolStart)==null||ce.call(y,g)),g.type==="heartbeat"&&((Q=y.onHeartbeat)==null||Q.call(y,g)),g.type==="token"&&((se=y.onToken)==null||se.call(y,g.token))},[]),[u,c]=i.useState(!1),[f,h]=i.useState(null),[b,k]=i.useState(""),[m,w]=i.useState(null),[I,x]=i.useState(0),[P,N]=i.useState(!1),[L,v]=i.useState({}),[S,F]=i.useState(null),[O,$]=i.useState({}),B=i.useRef(null),_=i.useRef(!0),q=i.useRef(0),K=i.useRef(null),W=i.useRef(null),Z=i.useRef(null),R=i.useRef(null),C=i.useRef({messageId:null,lastSeq:null,lastText:""}),z=i.useCallback(g=>{s(g)},[]),G=i.useCallback(()=>{k(""),w(null),h(null),W.current=null,Z.current=null,R.current=null,v({}),F(null),$({}),C.current={messageId:null,lastSeq:null,lastText:""}},[]),D=i.useCallback(()=>{var M;console.debug("[use-chat] stop() invoked - aborting stream");const g=(M=K.current)==null?void 0:M.threadId,y=()=>{var j;(j=B.current)==null||j.abort(),B.current=null,K.current=null,c(!1),N(!1),q.current=0,x(0)};(g?Zt.cancelRun(g).catch(j=>{console.warn("[use-chat] cancel run failed:",j)}):Promise.resolve()).finally(y)},[]),d=i.useCallback(g=>{B.current&&(B.current.abort(),B.current=null);const y={text:typeof g.content=="string"?g.content:g.text,threadId:g.threadId,attachments:g.attachments,payload:g.payload,config:g.config,checkpointId:g.checkpointId,checkpointNs:g.checkpointNs||void 0,edit:g.edit,command:g.command};c(!0),h(null),k(""),w(null),W.current=null,Z.current=null,R.current=null,v({}),F(null),$({}),C.current={messageId:null,lastSeq:null,lastText:""};const T=new AbortController;B.current=T;let M=null,j=!1;return K.current={threadId:y.threadId??null,headers:{},isStreaming:!0},(async()=>{var H,X,V,oe,ne,ce,Q,se,Le,je,ie,Ie;try{let me={};try{if(r)me={Authorization:`Bearer ${r}`};else if(typeof window<"u"){const ye=window.__AUTH_TOKEN__,Lt=((H=window.localStorage)==null?void 0:H.getItem(Qe.authToken))||null;let gt=null;try{const mt=(X=window.localStorage)==null?void 0:X.getItem(Qe.chatSettings);mt&&(gt=((V=JSON.parse(mt))==null?void 0:V.apiKey)||null)}catch{}const qe=ye||Lt||gt||null;qe&&(me={Authorization:`Bearer ${qe}`})}}catch{}console.debug("[use-chat] POST",t+n);let he={};if(typeof window<"u")try{const le=(oe=window.localStorage)==null?void 0:oe.getItem(Qe.authSessionId);le&&(he={"X-Session-Id":le})}catch{}const ze={...me,...he,...o.current},et={"Content-Type":"application/json",Accept:"text/event-stream",...ze},ue=await fetch(t+n,{method:"POST",headers:et,body:JSON.stringify(y),signal:T.signal,credentials:a});if(K.current&&(K.current.headers=ze),!ue.ok||!ue.body){const le=await ue.text().catch(()=>"");console.debug("[use-chat] non-OK response",ue.status,le==null?void 0:le.slice(0,500));const ye=`stream ${ue.status}${le?": "+le:""}`;throw ye&&(h(ye),M="error"),new Error(ye)}N(!0);const Ue=ue.body.getReader(),Ns=new TextDecoder;let Oe="",pt=[];q.current=0,x(0);let tt=0,$e=null;const Nt=()=>{if(pt.length){const le=pt.join("");pt=[],_.current&&k(ye=>ye+le)}$e=null},Ls=()=>{typeof window<"u"&&$e==null&&($e=requestAnimationFrame(Nt))};let An=Date.now();const js=setInterval(()=>{Date.now()-An>18e5&&(h("Stream idle timeout"),M="error",T.abort())},5e3),Fs=1024*1024;try{const ye=(ue.headers.get("X-Thread-Id")||ue.headers.get("x-thread-id"))??null;for(K.current&&!K.current.threadId&&(K.current={...K.current,threadId:ye});;){const{value:Lt,done:gt}=await Ue.read();if(gt)break;Oe+=Ns.decode(Lt,{stream:!0}),Oe.length>Fs&&(Oe="",console.warn("Stream buffer reset: exceeded 1MB"));let qe;for(;(qe=Oe.indexOf(`
5
5
 
6
6
  `))>=0;){const mt=Oe.slice(0,qe);Oe=Oe.slice(qe+2);const zs=mt.split(/\r?\n/),xn=[];let jt=null;for(const E of zs){if(E.startsWith(":")){E.startsWith(": heartbeat")&&console.debug("[use-chat] SSE heartbeat comment received");continue}if(E){if(E.startsWith("event:")){const ee=E.slice(6).trim();ee&&(jt=ee);continue}if(E.startsWith("data:")){const ee=E.slice(5);xn.push(ee.startsWith(" ")?ee.slice(1):ee)}}}const Ft=xn.join(`
7
7
  `);if(!Ft)continue;let Me;try{Me=JSON.parse(Ft)}catch{console.debug("[use-chat] malformed SSE:",Ft.slice(0,200));continue}jt&&typeof Me=="object"&&Me!==null&&!("type"in Me)&&(Me.type=jt);const Mn=Kr(Me)?Me.data:Me;if(!Mn){console.warn("[use-chat] dropped envelope event without payload",Me);continue}const ae=kr(Mn);An=Date.now();const Be=ae.seq;if(Be!==void 0){if(Be<=tt){console.debug("[use-chat] drop duplicate/out-of-order event",{seq:Be,lastProcessedSeq:tt,type:ae.type});continue}tt>0&&Be>tt+1,tt=Be,q.current=Be,x(Be)}const Us=["messages/partial","metadata","checkpoint","values","heartbeat","token","status","error","interrupt","tool.start","tool.progress","tool.end"];let be=ae.type||"unknown";if(Us.includes(be)||(ae.messages||ae.content!==void 0&&ae.id)&&(be="messages/partial"),be==="checkpoint"){const E=ae;W.current=E.checkpointId??null,Z.current=E.checkpointNs??null,w(E.checkpointId??null)}else if(be==="values"){const E=ae;if(Array.isArray(E.checkpoints)){R.current=E;try{const re=He(E).latest;re&&(W.current=re.checkpointId??null,Z.current=re.checkpointNs??null,w(re.checkpointId??null),$(re.values??{})),v({}),F(null)}catch(ee){console.warn("[use-chat] Failed to hydrate values payload",ee)}}else if((ne=E.values)!=null&&ne.messages)v({}),F(null),$(E.values??{});else{const ee=E.values&&typeof E.values=="object"?E.values:E;$(ee??{})}}if(be==="tool.start"||be==="tool.progress"||be==="tool.end"){const E=ae,ee=E.id||E.callId;ee&&v(re=>{let Se=S;if(!Se){const te=Object.values(re).filter(de=>de.role==="assistant");te.length>0&&(Se=te[te.length-1].id)}if(Se&&re[Se]){const te=re[Se],de=[...te.toolCalls||[]],Te=de.findIndex(we=>we.id===ee);let Ee=E.content||E.status||"Processing...";return ae.type==="tool.start"?Ee=`Starting ${E.name||E.tool||"tool"}...`:ae.type==="tool.end"&&E.error&&(Ee=`Error: ${E.error}`),Te>=0?de[Te]={...de[Te],content:Ee,status:ae.type==="tool.start"?"running":ae.type==="tool.end"?E.error?"failed":"completed":de[Te].status,artifact:E.artifact||de[Te].artifact}:de.push({id:ee,name:E.name||E.tool||"tool",args:E.args||{},status:ae.type==="tool.end"?E.error?"failed":"completed":"running",content:Ee,artifact:E.artifact}),{...re,[Se]:{...te,toolCalls:de}}}return re})}else if(be==="messages/partial"){const E=ae,ee=E.messages||[E];if(Array.isArray(ee)&&ee.length>0){const re=ee.find(te=>te.type==="ai"),Se=ee.find(te=>te.type==="tool");if(re){const te=re.id,de=re.content??"",Te=!1,Ee=Te?(C.current.lastText||"")+de:de;if(C.current.messageId!==te){const we=re.name??re.agentName??"assistant";C.current={messageId:te,lastSeq:null,lastText:""};const De=rt({id:te,role:"assistant",name:we,model:we,createdAt:new Date().toISOString(),content:[{type:"text",text:Ee}]});v(Os=>({...Os,[te]:De})),F(te),C.current.lastText=Ee}else v(we=>{const De=we[te];return De?{...we,[te]:{...De,content:[{type:"text",text:Ee}],responseMetadata:re.responseMetadata??De.responseMetadata}}:we}),C.current.lastText=Ee;if(!Te){const we=C.current.lastText||"";if(de.length>we.length){const De=de.slice(we.length);pt.push(De),Ls()}}}if(Se){const te=Se.id||`tool-${Date.now()}`,de=rt({...Se,id:te,role:"tool",createdAt:new Date().toISOString()});v(Te=>({...Te,[te]:de}))}}}else if(be==="heartbeat"){console.debug("[use-chat] heartbeat received");try{}catch(E){console.warn("[use-chat] heartbeat callback failed",E)}}else if($e!==null&&cancelAnimationFrame($e),Nt(),be==="checkpoint")w(ae.checkpointId??null);else if(be==="error"){const E=ae;if(h(E.message),M="error",E.error_type==="auth_error"||E.code==="TOKEN_EXPIRED"||((ce=E.message)==null?void 0:ce.includes("token"))||((Q=E.message)==null?void 0:Q.includes("401"))||((se=E.message)==null?void 0:se.includes("unauthorized"))||((Le=E.message)==null?void 0:Le.includes("Unauthorized"))){console.error("[use-chat] Auth error detected:",E.message);try{(je=e.onAuthError)==null||je.call(e,E.message)}catch(re){console.warn("[use-chat] onAuthError handler failed",re)}T.abort()}}p(ae)}}Nt(),M===null&&!T.signal.aborted&&(M="complete")}catch(le){if(le.name==="AbortError")M=M??"aborted";else{const ye=le.message||String(le);M="error",h(ye)}}finally{try{await Ue.cancel()}catch{}finally{(ie=Ue.releaseLock)==null||ie.call(Ue)}$e!==null&&typeof window<"u"&&window.cancelAnimationFrame($e),clearInterval(js)}}catch(me){if(me.name==="AbortError")M=M??"aborted";else{const he=me.message||String(me);M="error",h(he),j||(j=!0,(Ie=e.onConnectionError)==null||Ie.call(e,he))}}finally{const me=q.current,he=W.current,ze=Z.current,et=R.current;try{if(e.onFinish){const ue={lastSeq:me,lastCheckpointId:he,lastCheckpointNs:ze,lastValues:et};e.onFinish(ue)}}catch(ue){console.warn("[use-chat] onClosed callback failed",ue)}c(!1),N(!1),B.current=null,q.current=0,x(0),K.current=null}})(),Promise.resolve()},[t,n,r,e]);return i.useEffect(()=>()=>{var g;_.current=!1,(g=B.current)==null||g.abort()},[]),{isStreaming:u,error:f,assistantText:b,activeMessageId:S,streamedMessages:L,lastCheckpointId:m,lastSeq:I,connected:P,stream:d,stop:D,clear:G,setToken:z,values:O,interrupt:()=>Promise.resolve(),resume:()=>Promise.resolve(),goto:()=>Promise.resolve(),connectionState:f?"error":u?P?"connected":"connecting":"idle",messages:[],submit:d}}const Hr=["detail","message","error","description","title"];function lt(e){if(!e)return null;if(typeof e=="string"){const t=e.trim();return t.length?t:null}if(Array.isArray(e)){for(const t of e){const n=lt(t);if(n)return n}return null}if(typeof e=="object"){const t=e;for(const n of Hr){const r=lt(t[n]);if(r)return r}if("errors"in t){const n=lt(t.errors);if(n)return n}}return null}function Gr(e){if(!e)return"Request failed";const t=e.response,n=lt(t==null?void 0:t.data);if(n)return n;if(t!=null&&t.statusText)return t.statusText;if(e instanceof Error&&e.message)return e.message;if(typeof e=="string"){const r=e.trim();if(r.length)return r}return t!=null&&t.status?`Request failed with status code ${t.status}`:"Request failed"}function ln({api:e,initialThreadId:t=null,onError:n,onThreadChange:r,onCurrentThreadDeleted:s}){const[o,a]=i.useState([]),[l,p]=i.useState(t),[u,c]=i.useState(!1),[f,h]=i.useState(null),[b,k]=i.useState([]),[m,w]=i.useState(!1),[,I]=i.useState(null),[x,P]=i.useState(null),[N,L]=i.useState(!1),v=i.useRef(l),S=i.useRef(new Map);i.useEffect(()=>{v.current=l},[l]),i.useEffect(()=>{t!==void 0&&t!==v.current&&p(t)},[t]);const F=i.useCallback(async()=>{c(!0),h(null);try{const C=await e.listThreads();a(C??[])}catch(C){const z=String(C);h(z),n==null||n(z)}finally{c(!1)}},[e,n]),O=i.useCallback(async()=>{w(!0),I(null);try{const C=await e.listSharedThreads();k(C??[])}catch(C){const z=String(C);I(z),n==null||n(z)}finally{w(!1)}},[e,n]);i.useEffect(()=>{F()},[F]),i.useEffect(()=>{O()},[O]),i.useEffect(()=>{r==null||r(l)},[l,r]);const $=i.useCallback(async(C,z)=>{try{const G=z&&typeof z=="object"?{id:z.id,name:z.name??""}:void 0,D=await e.createThread(C,G);return p(D.threadId),await F(),D.threadId}catch(G){const D=String(G);return n==null||n(D),null}},[e,n,F]),B=i.useCallback(async C=>{const z=o;a(D=>D.filter(d=>d.threadId!==C));const G=new AbortController;S.current.set(C,G);try{await e.deleteThread(C),v.current===C&&(p(null),s==null||s())}catch(D){a(z);const d=String(D);n==null||n(d)}finally{S.current.delete(C)}},[e,s,n,o]),_=i.useCallback(async(C,z)=>{try{await e.updateThread(C,z),await F()}catch(G){n==null||n(String(G))}},[e,n,F]),q=i.useCallback(async(C,z)=>{L(!0),P("Sharing thread…");try{await e.shareThread(C,z),await O(),P("Shared successfully")}catch(G){const D=Gr(G);throw n==null||n(D),P(`Failed to share: ${D}`),new Error(D)}finally{L(!1)}},[e,n,O]),K=i.useCallback(async(C,z)=>{try{await e.unshareThread(C,z),await O()}catch(G){const D=String(G);throw n==null||n(D),G}},[e,n,O]),W=i.useMemo(()=>({createThread:$,deleteThread:B,renameThread:_,refreshThreads:F,refreshSharedThreads:O,shareThread:q,unshareThread:K}),[$,B,_,F,O,q,K]),Z=i.useCallback(C=>{if(!(C!=null&&C.threadId))return;const z={threadId:C.threadId,title:C.title||`Thread ${C.threadId.slice(0,8)}`,project:C.project,createdAt:C.createdAt||new Date().toISOString(),updatedAt:C.updatedAt||new Date().toISOString(),messageCount:C.messageCount??1};a(G=>{let D=!1;const d=G.map(g=>g.threadId===z.threadId?(D=!0,console.debug("[useThreadsState] thread_info: updating existing thread",z.threadId),{...g,title:z.title??g.title,project:z.project??g.project,updatedAt:z.updatedAt??g.updatedAt,messageCount:z.messageCount??g.messageCount}):g);return D?d:(console.debug("[useThreadsState] thread_info: adding thread to list",z.threadId),[z,...G])})},[]),R=i.useCallback(()=>P(null),[]);return{threads:o,currentThreadId:l,currentThreadIdRef:v,setCurrentThreadId:p,isLoadingThreads:u,threadsError:f,sharedThreads:b,isLoadingSharedThreads:m,actions:W,addThreadFromEvent:Z,shareInFlight:N,shareStatus:x,clearShareStatus:R}}const cn=i.createContext(null);function un({children:e,initialThreadId:t=null,onError:n,onThreadChange:r}){const{chatApi:s}=Fe(),{threads:o,currentThreadId:a,setCurrentThreadId:l,currentThreadIdRef:p,isLoadingThreads:u,threadsError:c,sharedThreads:f,isLoadingSharedThreads:h,actions:b,addThreadFromEvent:k,shareInFlight:m,shareStatus:w,clearShareStatus:I}=ln({api:s,initialThreadId:t,onError:n,onThreadChange:r}),x=i.useMemo(()=>({threads:o,currentThreadId:a,setCurrentThreadId:l,currentThreadIdRef:p,isLoading:u,error:c,sharedThreads:f,isLoadingSharedThreads:h,actions:b,shareInFlight:m,shareStatus:w,clearShareStatus:I,addThreadFromEvent:k}),[o,a,l,p,u,c,f,h,b,m,w,I,k]);return Y.jsx(cn.Provider,{value:x,children:e})}function Ge(){const e=i.useContext(cn);if(!e)throw new Error("useThreads must be used within a ThreadsProvider");return e}function dn(e){const t=e.artifact;return!t||typeof t!="object"?null:"metadata"in t&&t.metadata?t.metadata:{id:t.id??e.id??`artifact-${Date.now()}`,type:t.type??"unknown",createdAt:e.createdAt??new Date().toISOString(),status:t.status??"completed",progress:t.progress??void 0}}function qr(e,t){const n=dn(e);if(!n)return e;const r={...n,...t,updatedAt:new Date().toISOString()};return{...e,artifact:{...typeof e.artifact=="object"&&e.artifact?e.artifact:{},metadata:r}}}function Wr(e,t,n){return e.find(r=>{const s=dn(r);return!!((s==null?void 0:s.id)===t||n&&r.toolCallId===n)})??null}function ct(e){return e.map(t=>rt(t)).filter(t=>!!t)}function Ze(e,t,n){return t<0||t>=e.length?e:[...e.slice(0,t),n,...e.slice(t+1)]}function Jr(e,t,n){for(let r=e.length-1;r>=0;r--)if(e[r].role==="assistant"){const o={...e[r],checkpointId:t,checkpointNs:n??void 0};return Ze(e,r,o)}return e}function Xr(e){const t=new Set;return e.map(n=>{var o;if(n.role!=="assistant"||!((o=n.toolCalls)!=null&&o.length))return n;const r=new Set,s=n.toolCalls.filter(a=>{const l=a==null?void 0:a.id;return l?r.has(l)?!1:(r.add(l),!0):!0});return s.length===n.toolCalls.length?n:{...n,toolCalls:s}}).filter(n=>{if(n.role!=="tool")return!0;const r=n,s=n.toolCallId||r.toolCallId||r.callId;return s?t.has(s)?!1:(t.add(s),!0):!0})}const Qr={messages:[],assemblingId:null,lastCheckpointId:null,lastCheckpointNs:null,messagesStreamMeta:{},pendingInterrupt:null,values:{}};function Yr(e,t){var n;switch(t.type){case"reset":return{messages:ct(((n=t.payload)==null?void 0:n.messages)??[]),assemblingId:null,lastCheckpointId:null,lastCheckpointNs:null,pendingInterrupt:null,messagesStreamMeta:{},values:{}};case"user_message":{const{message:r,editingMessageId:s}=t.payload;if(s){const o=e.messages.findIndex(a=>a.id===s);if(o>=0){const a=e.messages.slice(0,o);return{...e,messages:[...a,r],assemblingId:null}}}return{...e,messages:[...e.messages,r],assemblingId:null}}case"seed":{const r=ct(t.payload.messages),s={...e,messages:r,assemblingId:null,pendingInterrupt:t.payload.pendingInterrupt??null};return Object.prototype.hasOwnProperty.call(t.payload,"checkpointId")&&(s.lastCheckpointId=t.payload.checkpointId??null),Object.prototype.hasOwnProperty.call(t.payload,"checkpointNs")&&(s.lastCheckpointNs=t.payload.checkpointNs??null),Object.prototype.hasOwnProperty.call(t.payload,"values")&&(s.values=t.payload.values??{}),s}case"prepend":{const r=ct(t.payload.messages);if(!r.length)return e;const s=new Set(e.messages.map(l=>l.id)),o=r.filter(l=>!s.has(l.id));if(!o.length)return e;const a=[...o,...e.messages];return{...e,messages:a}}case"event":return fn(e,t.payload.ev);case"batch":{const{events:r}=t.payload;return r.length?r.reduce((s,o)=>fn(s,o),e):e}default:return e}}function Zr(e=[]){const[t,n]=i.useReducer(Yr,{...Qr,messages:e}),r=i.useRef([]),s=i.useRef(null),o=i.useRef(null),a=i.useCallback(()=>{s.current!==null&&typeof window<"u"&&window.cancelAnimationFrame(s.current),o.current!==null&&clearTimeout(o.current),s.current=null,o.current=null;const c=r.current;c.length&&(r.current=[],n({type:"batch",payload:{events:c}}))},[]),l=i.useCallback(()=>{typeof window<"u"&&typeof window.requestAnimationFrame=="function"?s.current===null&&(s.current=window.requestAnimationFrame(()=>a())):o.current===null&&(o.current=setTimeout(a,8))},[a]),p=i.useCallback(c=>{r.current.push(c),l()},[l]);i.useEffect(()=>()=>{s.current!==null&&typeof window<"u"&&window.cancelAnimationFrame(s.current),o.current!==null&&clearTimeout(o.current),r.current=[]},[]);const u=i.useMemo(()=>({reset:c=>n({type:"reset",payload:{messages:c}}),seed:(c,f)=>n({type:"seed",payload:{messages:c,...f??{}}}),prepend:c=>n({type:"prepend",payload:{messages:c}}),pushUser:(c,f)=>n({type:"user_message",payload:{message:c,editingMessageId:f}}),onEvent:p}),[p]);return{state:t,dispatch:n,...u}}function fn(e,t){var n;if(t.type==="tool.start")return ts(e,t);if(t.type==="tool.progress")return ns(e,t);if(t.type==="tool.end")return rs(e,t);if(t.type==="artifact.update")return ss(e,t);if(t.type==="checkpoint"){const r=t.checkpointNs??e.lastCheckpointNs??null,s=Jr(e.messages,t.checkpointId,r);return{...e,lastCheckpointId:t.checkpointId,lastCheckpointNs:r,messages:s}}if(t.type==="error"){const r={id:`err-${Date.now()}`,role:"system",content:[{type:"text",text:`Error: ${t.message}`}],createdAt:new Date().toISOString()};return{...e,messages:[...e.messages,r]}}if(t.type==="values"&&((n=t.values)!=null&&n.messages)){const r=t.values,s=Array.isArray(r.messages)?r.messages:[],o=Xr(ct(s)),{messages:a,...l}=r;return{...e,messages:o,assemblingId:null,messagesStreamMeta:{},pendingInterrupt:null,values:l}}return t.type==="thread_info",e}function pn(e){return e.id??void 0}function ut(e,t){var n;if(!t)return-1;for(let r=e.length-1;r>=0;r--){const s=e[r];if(s.role==="assistant"&&((n=s.toolCalls)!=null&&n.some(o=>o.id===t)))return r}return-1}function Rr(e){for(let t=e.length-1;t>=0;t--)if(e[t].role==="user")return t;return-1}function es(e,t,n){const r=ut(e,t);if(r===-1)return e;const s=e[r],o=(s.toolCalls??[]).map(a=>a.id===t?{...a,...n}:a);return Ze(e,r,{...s,toolCalls:o})}function ts(e,t){const n=t,r=n.id||n.callId,s=n.name??void 0,o=`Starting ${s??"tool"}...`;let a=e.messages;if(r){let l=ut(a,r);if(l===-1){const p=Rr(a);for(let u=a.length-1;u>p;u--)if(a[u].role==="assistant"){l=u;break}}if(l!==-1){const p=a[l],u=[...p.toolCalls??[]],c=u.findIndex(f=>f.id===r);c>=0?u[c]={...u[c],status:"running",content:o}:u.push({id:r,name:s||"tool",args:n.args||{},status:"running",content:o}),a=Ze(a,l,{...p,toolCalls:u})}else{const p=n.agentName??"assistant",u={id:`ai-${Date.now()}`,role:"assistant",name:p,content:[],toolCalls:[{id:r,name:s||"tool",args:n.args||{},status:"running",content:o}],createdAt:new Date().toISOString()};a=[...a,u]}}return{...e,messages:a}}function ns(e,t){const n=t.id??pn(t);if(!n)return e;const r=t.content??void 0;let s=e.messages;const o=ut(s,n);if(o!==-1){const a=s[o],l=r??null,p=typeof l=="string"?l:JSON.stringify(l),u=ke(l),c=typeof u=="string"?u:p,f=(a.toolCalls??[]).map(h=>h.id===n?{...h,content:c}:h);s=Ze(s,o,{...a,toolCalls:f})}return{...e,messages:s}}function rs(e,t){const n=pn(t);let r=e.messages;const s=t.content??t.error??null,o=typeof s=="string"?s:JSON.stringify(s),a=ke(s),l=typeof a=="string"?a:o;if(n)if(ut(r,n)!==-1)r=es(r,n,{status:"completed",content:l,artifact:t.artifact});else{const c=t.name??"assistant",f={id:`ai-${Date.now()}`,role:"assistant",name:c,content:[],toolCalls:[{id:n,name:t.name??"tool",args:t.args||{},status:"completed",content:l,artifact:t.artifact}],createdAt:new Date().toISOString()};r=[...r,f]}const p={id:`tool-${n||Date.now()}`,role:"tool",name:t.name??void 0,content:[{type:"text",text:l}],artifact:t.artifact,toolCallId:n??void 0,createdAt:new Date().toISOString()};return{...e,messages:[...r,p]}}function ss(e,t){const n=t.artifactId,r=t.callId,s=Wr(e.messages,n,r);if(!s){const l={id:`artifact-${n}`,role:"tool",name:"artifact_updater",content:[],createdAt:new Date().toISOString(),artifact:{type:"unknown",metadata:{id:n,type:"unknown",createdAt:new Date().toISOString(),status:t.status,progress:t.progress},...t.partial_data}};return{...e,messages:[...e.messages,l]}}const o=e.messages.indexOf(s),a=qr(s,{status:t.status,progress:t.progress,error:t.error});return t.partial_data&&a.artifact&&(a.artifact={...a.artifact,...t.partial_data}),{...e,messages:Ze(e.messages,o,a)}}const gn=120;function os(e){if(!Array.isArray(e))return"";const t=e.filter(r=>!!(r&&r.type==="text")).map(r=>(r.text??"").trim()).filter(Boolean);if(!t.length)return"";const n=t.join(" ").replace(/\s+/g," ").trim();return n?n.length>gn?`${n.slice(0,gn-3)}…`:n:""}function as(e){return os(e.content)||""}function is(e){const t=new Map,n=[],r=new Map,s=[];for(let u=0;u<e.length;u++){const c=e[u],f=c.checkpointId,h=f??`cp-${u}`,b=c.metadata??{},k=typeof b.step=="number"?b.step:null,m=typeof b.source=="string"?b.source:null;let w=null,I=null;const x=Array.isArray(c.messages)?c.messages:[];for(const v of x)v.role==="user"&&(I||(I=v),v.id&&(w=v.id));const P=c.next&&c.next.length>0?String(c.next[0]):null,N=c.parentConfig??null,L={id:h,step:k,source:m,createdAt:c.createdAt??null,namespace:c.checkpointNs??null,parentId:c.parentId??null,next:P,parentConfig:N,userMessageId:w};if(s.push(L),f&&t.set(f,L),f&&I){const v=as(I);v&&r.set(f,v)}n.push({id:h,messageId:w,step:k,source:m,createdAt:c.createdAt??null,next:P,parentConfig:N})}const o=new Map;for(const u of s){if(!u.userMessageId)continue;const c=o.get(u.userMessageId)??[];c.push(u),o.set(u.userMessageId,c)}for(const u of o.values()){if(!u.length)continue;u.sort((f,h)=>{const b=f.createdAt?Date.parse(f.createdAt):0;return(h.createdAt?Date.parse(h.createdAt):0)-b});const c=u.length;for(let f=0;f<u.length;f++){const h=u[f];h.attemptCount=c,h.attemptIndex=f,h.isLatestAttempt=f===0}}return{checkpoints:e,checkpointMetaByCheckpointId:t,timeline:n,messagePreviews:r,getLatest:()=>{const u=n[0];if(u)return t.get(u.id)},getCheckpoint:u=>t.get(u),getMessageAttempts:u=>{const c=[];for(const f of t.values())f.userMessageId===u&&c.push(f);return c.length?(c.sort((f,h)=>{const b=typeof f.attemptIndex=="number"?f.attemptIndex:Number.MAX_SAFE_INTEGER,k=typeof h.attemptIndex=="number"?h.attemptIndex:Number.MAX_SAFE_INTEGER;return b-k}),c):[]}}}function ls(e,t,n){if(!e)return{attemptCount:1,attemptIndex:0,attempts:[]};const r=n.getMessageAttempts(e);if(!r.length)return{attemptCount:1,attemptIndex:0,attempts:[]};let s=0;if(t){const o=r.findIndex(a=>a.id===t);o>=0&&(s=o)}return{attemptCount:r.length,attemptIndex:s,attempts:r}}function cs(e){return i.useMemo(()=>is(e),[e])}function mn(e,t){return{version:"values@1",threadId:e,checkpoints:t?[t]:[]}}function Mt({api:e,fileApi:t,seed:n,onError:r,currentThreadId:s,initialThreadId:o=null,initialCheckpointId:a=null,initialCheckpointNs:l=null,autoLoadInitial:p=!0,isStreaming:u,getMessages:c}){const[f,h]=i.useState(null),k=i.useMemo(()=>He(f),[f]).checkpoints,m=cs(k),w=m.timeline,[I,x]=i.useState(!1),[P,N]=i.useState(!1),[L,v]=i.useState(null),S=i.useRef(s),F=i.useRef(null),O=i.useRef(null),$=i.useRef(null),B=i.useRef(null),_=i.useRef(null),q=i.useRef(new Map),K=i.useRef(null);i.useEffect(()=>{S.current=s},[s]);const W=i.useCallback(async T=>{var j,H;if(!T.threadId)return;const M=T.threadId;(j=T.onStart)==null||j.call(T),T.setLoading(!0);try{await T.action(M)}catch(X){if(!ht.isCancel(X)&&S.current===M){const oe=String(X);(H=T.handleError)==null||H.call(T,oe),r==null||r(oe)}throw X}finally{T.setLoading(!1)}},[r]),Z=i.useCallback(async(T,M)=>{var oe;if(!T)return;const j=`${T}:${M??"latest"}`,H=q.current.get(j);if(H)return H;(oe=K.current)==null||oe.abort();const X=new AbortController;K.current=X;const V=W({threadId:T,setLoading:x,onStart:()=>v(null),handleError:ne=>v(ne),action:async ne=>{const ce=await e.getState({threadId:ne,checkpointId:M??void 0}),Q=mn(ne,ce),se=t?await it(Q,t):Q;if(S.current!==ne){console.log(`[useThreadHistoryState] Thread changed during load (was ${ne}, now ${S.current}), discarding stale data`);return}const{checkpoints:Le,latest:je}=He(se),ie=M?Le.find(Ie=>Ie.checkpointId===M)??je:je;n((ie==null?void 0:ie.messages)??[],{checkpointId:(ie==null?void 0:ie.checkpointId)??null,checkpointNs:(ie==null?void 0:ie.checkpointNs)??null,pendingInterrupt:(ie==null?void 0:ie.interrupt)??null}),h(se)}});q.current.set(j,V);try{await V}finally{q.current.delete(j),K.current===X&&(K.current=null)}return S.current===T&&(_.current=j),V},[e,n,W,t]),R=i.useCallback(async(T,M)=>{B.current=T;try{await Z(T,M)}catch(j){if(!ht.isCancel(j))throw j}finally{B.current===T&&(B.current=null)}},[Z]),C=i.useCallback(T=>{O.current=T},[]),z=i.useCallback(T=>{$.current=T},[]),G=i.useCallback(async T=>{const M=T.threadId??S.current;if(!M||S.current&&S.current!==M&&$.current!==M)return;const j=t?await it(T,t):T,{checkpoints:H,latest:X}=He(j);if(!H.length)return;const V=X;n((V==null?void 0:V.messages)??[],{checkpointId:(V==null?void 0:V.checkpointId)??null,checkpointNs:(V==null?void 0:V.checkpointNs)??null,pendingInterrupt:(V==null?void 0:V.interrupt)??null,values:V==null?void 0:V.values}),h(j),_.current=`${M}:latest`,O.current=null,$.current===M&&($.current=null)},[n,u,t]),D=i.useCallback(async(T,M)=>{const j=S.current;await W({threadId:j,setLoading:N,action:async H=>{const X=await e.getState({threadId:H,checkpointId:T,checkpointNs:M??void 0}),V=mn(H,X),oe=t?await it(V,t):V;if(S.current!==H)return;const{checkpoints:ne}=He(oe),ce=ne.find(Q=>Q.checkpointId===T&&(M?Q.checkpointNs===M:!0));if(!ce){console.warn("[useThreadHistoryState] Requested checkpoint not found:",{checkpointId:T,checkpointNs:M});return}h(oe),n(ce.messages??[],{checkpointId:ce.checkpointId??null,checkpointNs:ce.checkpointNs??null})}}).catch(()=>{})},[e,n,W,t]),d=i.useCallback((T,M)=>{n(c(),{checkpointId:T??null,checkpointNs:M??null})},[c,n]),g=i.useCallback(async()=>{S.current&&await R(S.current)},[R]);i.useEffect(()=>{if(!p||!s||I||u)return;if(O.current===s){O.current=null,F.current=s;return}if($.current===s){F.current=s;return}if(B.current===s){B.current=null,F.current=s;return}if(F.current===s)return;F.current=s;let T;const M=`${s}:latest`;_.current!==M&&R(s,T)},[p,s,a,l,o,I,u,R]);const y=i.useCallback(()=>{h(null),x(!1),N(!1),v(null),O.current=null,$.current=null,F.current=null,_.current=null,B.current=null},[]);return{threadCheckpoints:k,threadTimeline:w,checkpointIndex:m,isLoadingThread:I,isLoadingCheckpoint:P,threadStateError:L,loadThread:R,navigateToCheckpoint:D,setCurrentCheckpointId:d,returnToLatest:g,handleValuesEvent:G,markSkipNextLoad:C,markStreamPendingThread:z,resetHistoryState:y,clearState:y}}const hn=i.createContext(null),yn=i.createContext(null);function Et(e){const t=i.useContext(hn);if(!t&&!(e!=null&&e.optional))throw new Error("useThreadState must be used within a ThreadStateProvider");return t}function bn(){const e=i.useContext(yn);if(!e)throw new Error("useThreadStateUpdater must be used within a ThreadStateProvider");return e}function wn({children:e,initialThreadId:t=null,initialCheckpointId:n=null,initialCheckpointNs:r=null,autoLoadInitial:s=!0,isStreaming:o,onError:a}){const{chatApi:l,fileApi:p}=Fe(),{currentThreadId:u}=Ge(),{state:c,seed:f,onEvent:h,dispatch:b}=Zr(),{threadCheckpoints:k,threadTimeline:m,checkpointIndex:w,isLoadingThread:I,isLoadingCheckpoint:x,threadStateError:P,loadThread:N,navigateToCheckpoint:L,setCurrentCheckpointId:v,returnToLatest:S,handleValuesEvent:F,markSkipNextLoad:O,markStreamPendingThread:$,resetHistoryState:B}=Mt({api:l,fileApi:p,seed:f,onError:a,currentThreadId:u,initialThreadId:t,initialCheckpointId:n,initialCheckpointNs:r,autoLoadInitial:s,isStreaming:o,getMessages:i.useCallback(()=>c.messages,[c.messages])});i.useEffect(()=>{u||(f([],{}),B())},[u,f,B]);const _=i.useRef(null),q=i.useCallback(d=>{_.current=d},[]),K=i.useRef(null),W=i.useCallback(d=>{K.current=d},[]),Z=i.useMemo(()=>({assemblingMessageId:c.assemblingId??null}),[c.assemblingId]),R=i.useCallback((d,g)=>{const y=rn(d,"user");return b({type:"user_message",payload:{message:y,editingMessageId:g==null?void 0:g.editingMessageId}}),y},[b]),C=i.useCallback(async()=>{_.current?await _.current():(f([],{}),B())},[f,B]),z=i.useMemo(()=>hr(c.messages),[c.messages]),G=i.useMemo(()=>({threadId:u,messages:c.messages,interrupt:c.pendingInterrupt,checkpoint:{id:c.lastCheckpointId??null,namespace:c.lastCheckpointNs??null},checkpoints:k,checkpointIndex:w,timelineCheckpoints:m,metadata:Z,values:c.values??{},isLoading:I,isLoadingCheckpoint:x,error:P,loadOlder:async()=>{},seedFromSnapshot:d=>{f(d.messages,{checkpointId:d.checkpointId,checkpointNs:d.checkpointNs,pendingInterrupt:d.interrupt,values:d.values})},clearState:C,navigateToCheckpoint:L,setCurrentCheckpointId:v,returnToLatest:S,loadThread:async(d,g,y)=>{await N(d,g,{clearProgress:!1})},clearThread:C,respondToInterrupt:async(d,g,y)=>{K.current&&await K.current(d,g,y)},messagePreviews:w.messagePreviews,handleValuesEvent:F,markSkipNextLoad:O,markStreamPendingThread:$,resetHistoryState:B,pushUser:R,onEvent:h,artifacts:z}),[u,c.messages,c.pendingInterrupt,c.lastCheckpointId,c.lastCheckpointNs,c.values,k,m,w,Z,I,x,P,f,C,L,v,S,N,F,O,$,R,h,z]),D=i.useMemo(()=>({registerClearThread:q,registerRespondToInterrupt:W}),[q,W]);return Y.jsx(yn.Provider,{value:D,children:Y.jsx(hn.Provider,{value:G,children:e})})}const kn=i.createContext(null),us=i.createContext(!1);function ds({children:e,onError:t,onAuthError:n,onConnectionError:r,onToolEnd:s,onUpdateEvent:o,onCustomEvent:a,onMetadataEvent:l,onFinish:p,onStreamingChange:u}){const{chatApi:c,baseUrl:f}=Fe(),h=f,b=Ae(t),k=Ae(n),m=Ae(r),w=Ae(s),I=Ae(o),x=Ae(a),P=Ae(l),N=Ae(p),L=Ae(u),v=i.useMemo(()=>({onError:b,onAuthError:k,onConnectionError:m,onMetadataEvent:P,onCustomEvent:x,onUpdateEvent:I,onToolEnd:w,onFinish:N}),[b,k,m,P,x,I,w,N]);return Y.jsx(us.Provider,{value:!0,children:Y.jsx(fs,{api:c,streamBaseUrl:h,handlers:v,onStreamingChange:L,children:e})})}function fs({children:e,api:t,streamBaseUrl:n,handlers:r,onStreamingChange:s}){const{setCurrentThreadId:o,currentThreadIdRef:a,addThreadFromEvent:l,currentThreadId:p}=Ge(),{interrupt:u,checkpoint:c,timelineCheckpoints:f,handleValuesEvent:h,markSkipNextLoad:b,markStreamPendingThread:k,resetHistoryState:m,pushUser:w,onEvent:I,messages:x}=Et(),{registerClearThread:P,registerRespondToInterrupt:N}=bn(),L=i.useCallback(d=>{l(d),k(d.threadId),a.current!==d.threadId&&((d.created??!a.current)&&b(d.threadId),o(d.threadId))},[l,b,k,o,a]),v=an({baseUrl:n,onEvent:I,onError:d=>{var g;(g=r.onError)==null||g.call(r,(d==null?void 0:d.message)??String(d))},onAuthError:r.onAuthError,onConnectionError:r.onConnectionError,onFinish:r.onFinish,onThreadInfo:L,onMetadataEvent:r.onMetadataEvent,onCustomEvent:r.onCustomEvent,onUpdateEvent:r.onUpdateEvent,onToolEnd:r.onToolEnd,handleValuesEvent:h});i.useEffect(()=>{s==null||s(v.isStreaming)},[v.isStreaming,s]);const{stream:S,stop:F,clear:O,isStreaming:$,error:B,connected:_,streamedMessages:q,activeMessageId:K}=v;i.useEffect(()=>{p!==void 0&&O()},[p,O]);const W=i.useCallback(async(d,g)=>{await S(d,g)},[S]),Z=i.useRef(c);i.useEffect(()=>{Z.current=c},[c]);const R=i.useCallback(async(d,g,y)=>{const T=a.current;if(!T)throw new Error("No active thread to handle interrupt");const M=d?g??!0:!1,j=Z.current,H={threadId:T,checkpointId:j.id??void 0,checkpointNs:j.namespace??void 0,command:{kind:"resume",value:M},payload:y==null?void 0:y.payload};W(H)},[a,W]);i.useEffect(()=>{N(R)},[R,N]);const C=i.useCallback(async()=>{F(),O(),m(),o(null)},[O,m,o,F]);i.useEffect(()=>{P(C)},[C,P]);const z=i.useCallback(async(d,g)=>{$&&F();let y=a.current;const T=(d==null?void 0:d.text)??"",M=(d==null?void 0:d.attachments)??[],j=(T==null?void 0:T.trim())??"",H={...(d==null?void 0:d.payload)??{}},X=Array.isArray(H.messages)?H.messages:void 0;X&&delete H.messages;const V=!!(X&&X.length),oe=!!(d.contentParts&&d.contentParts.length>0);if(!y&&!j&&M.length===0&&!V&&!oe)return;if(!y){const ue=Math.floor(Date.now()/1e3).toString(16).padStart(8,"0"),Ue=Array.from({length:4},()=>Math.floor(Math.random()*4294967295).toString(16).padStart(8,"0")).join("").slice(0,16);y=`${ue}${Ue}`,b(y),o(y)}let ne=null;d.contentParts&&d.contentParts.length>0&&(ne=d.contentParts);const{contentParts:ce,filesInfo:Q}=ne?{contentParts:ne,filesInfo:[]}:await jr(M),se=[...ce];j&&se.push({type:"text",text:T});const Le=d==null?void 0:d.originalMessageId,je=!!(d!=null&&d.edit&&Le),ie=!V&&se.length>0;let Ie=null;if(ie){const ue=je?Le:`msg-${Date.now()}`;Ie=rn({id:ue,role:"user",content:se,createdAt:new Date().toISOString()},"user"),je?w(Ie,{editingMessageId:Le}):w(Ie)}const me=V?X:Ie?[Ie]:[],he={...H,...Q.length?{files_info:Q}:{}};me.length?he.messages=me:"messages"in he||(he.messages=[]);const ze=(d==null?void 0:d.checkpointId)??c.id??void 0;if(d!=null&&d.edit&&!ze)throw new Error(`[streaming] Missing checkpointId for edit submit. threadId=${y??"null"}`);const et={threadId:y,content:d==null?void 0:d.text,payload:he,config:d==null?void 0:d.config,checkpointId:ze,command:d==null?void 0:d.command,edit:d==null?void 0:d.edit};return W(et,g)},[c,a,$,b,w,W,F,f]),G=i.useMemo(()=>{const d=Object.keys(q).length>0;if(!$&&!d)return x;const g=new Map;return x.forEach(y=>g.set(y.id,y)),Object.values(q).forEach(y=>{g.set(y.id,y)}),Array.from(g.values())},[$,q,x]),D=i.useMemo(()=>({isStreaming:$,error:B,connectionState:B?"error":$?_?"connected":"connecting":"idle",messages:G,activeMessageId:K,submit:z,stop:F,interrupt:u,resume:()=>Promise.resolve(),goto:(d,g)=>Promise.resolve(),clearError:()=>{}}),[$,B,z,F,u,_,G]);return Y.jsx(kn.Provider,{value:D,children:e})}function Ae(e){const t=i.useRef(e);return i.useEffect(()=>{t.current=e},[e]),i.useCallback((...n)=>{const r=t.current;if(r)return r(...n)},[])}function ps(){const e=i.useContext(kn);if(!e)throw new Error("useStream must be used within StreamingProvider");return e}function vn(e){return typeof e=="object"&&e!==null}function gs(e,t){if(Object.is(e,t))return!0;if(!vn(e)||!vn(t))return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const s of n)if(!Object.prototype.hasOwnProperty.call(t,s)||!Object.is(e[s],t[s]))return!1;return!0}function ms(e){const t=i.useRef(e),n=i.useRef(e);return gs(t.current,e)||(t.current=e,n.current=e),n.current}function In(e){const t=e.artifact&&typeof e.artifact=="object"?e.artifact:null,n=!t&&e.content&&typeof e.content=="object"?e.content:null,r=t??n,s=(r==null?void 0:r.task_id)??(r==null?void 0:r.taskId)??null;return typeof s=="string"?s:null}function hs(e){const{setCurrentTaskId:t,getCurrentTaskId:n,onToolEnd:r}=e;return s=>{const o=In(s),a=(n==null?void 0:n())??null;o&&o!==a&&t(o),r==null||r(s)}}function ys({children:e,apiConfig:t,initialThreadId:n=null,initialCheckpointId:r=null,initialCheckpointNs:s=null,autoLoadInitial:o=!0,onConnectionError:a,onError:l,onAuthError:p,onThreadChange:u,onToolEnd:c,onUpdateEvent:f,onCustomEvent:h,onMetadataEvent:b,onFinish:k}){const m=ms(t),[w,I]=i.useState(!1),x=xe(l),P=xe(p),N=xe(a),L=xe(u),v=xe(c),S=xe(f),F=xe(h),O=xe(b),$=xe(k),B=i.useMemo(()=>({onError:x,onAuthError:P,onConnectionError:N,onToolEnd:v,onUpdateEvent:S,onCustomEvent:F,onMetadataEvent:O,onFinish:$}),[x,P,N,v,S,F,O,$]);return Y.jsx(Nr,{apiConfig:m,children:Y.jsx(un,{initialThreadId:n,onError:x,onThreadChange:L,children:Y.jsx(wn,{initialThreadId:n,initialCheckpointId:r,initialCheckpointNs:s,autoLoadInitial:o,onError:x,isStreaming:w,children:Y.jsx(ds,{...B,onStreamingChange:I,children:e})})})})}function xe(e){const t=i.useRef(e);return t.current=e,i.useCallback((...n)=>{const r=t.current;if(r)return r(...n)},[])}const bs=1,ws=1e6;let Pt=0;function ks(){return Pt=(Pt+1)%Number.MAX_SAFE_INTEGER,Pt.toString()}const _t=new Map,Sn=e=>{if(_t.has(e))return;const t=setTimeout(()=>{_t.delete(e),Re({type:"REMOVE_TOAST",toastId:e})},ws);_t.set(e,t)},vs=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,bs)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(n=>n.id===t.toast.id?{...n,...t.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=t;return n?Sn(n):e.toasts.forEach(r=>{Sn(r.id)}),{...e,toasts:e.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(n=>n.id!==t.toastId)}}},dt=[];let ft={toasts:[]};function Re(e){ft=vs(ft,e),dt.forEach(t=>{t(ft)})}function Is({...e}){const t=ks(),n=s=>Re({type:"UPDATE_TOAST",toast:{...s,id:t}}),r=()=>Re({type:"DISMISS_TOAST",toastId:t});return Re({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:s=>{s||r()}}}),{id:t,dismiss:r,update:n}}function Ss(){const[e,t]=zt.useState(ft);return zt.useEffect(()=>(dt.push(t),()=>{const n=dt.indexOf(t);n>-1&&dt.splice(n,1)}),[e]),{...e,toast:Is,dismiss:n=>Re({type:"DISMISS_TOAST",toastId:n})}}function Ts(e){const{allowFileOpen:t,currentThreadId:n}=e,{fileApi:r}=Fe(),{toast:s}=Ss(),[o,a]=i.useState({}),[l,p]=i.useState(null),[u,c]=i.useState(!1),f=i.useCallback(()=>{c(!1),p(null)},[]),h=i.useCallback(k=>{p(k),c(!0)},[]),b=i.useCallback(async(k,m,w)=>{var I,x;if(!t){k.preventDefault();return}if(o[w]){k.preventDefault();return}try{const P=String(m.url??""),N=P.match(/\/chat\/files\/([^/]+)(?:\/(view|download))?/);if(N){k.preventDefault();const L=N[1],v=m.name||`file_${L}`,S=m.mimeType||"application/octet-stream";h({id:L,name:v,mimeType:S});return}if(P.startsWith("data:")){k.preventDefault(),a(v=>({...v,[w]:!0}));const L=s({title:"Fetching file...",description:"",open:!0});try{const v=await r.listFiles(n??void 0);if(!v||!Array.isArray(v))throw new Error("Invalid file list response");const S=v.find(F=>!F||typeof F!="object"||!((F.filename??"")===(m.name??""))?!1:typeof m.size=="number"&&typeof F.size=="number"?F.size===m.size:!0);if(!(S!=null&&S.id))throw new Error(`File "${m.name}" is not yet available on the server`);if(!S.id||!S.filename)throw new Error("Invalid file data received from server");h({id:S.id,name:m.name||S.filename||`file_${S.id}`,mimeType:m.mimeType||S.mime_type||"application/octet-stream"}),(I=L.update)==null||I.call(L,{id:L.id,title:"Success",description:`Opened ${m.name}`,open:!0})}catch(v){console.error("Failed to fetch server file:",v);const S=v instanceof Error?v.message:"Unknown error occurred";(x=L.update)==null||x.call(L,{id:L.id,title:"Failed",description:S}),s({title:"Failed to fetch file",description:S,open:!0})}finally{a(v=>({...v,[w]:!1}))}}}catch(P){console.error("File click error:",P),a(N=>({...N,[w]:!1}))}},[t,o,s,n,h]);return{uploadingFiles:o,handleFileClick:b,fileViewerOpen:u,currentFileInfo:l,closeFileViewer:f}}function Cs(e){return i.useMemo(()=>{const t=e;let n=Array.isArray(t.content)?t.content:[];return typeof t.content=="string"&&(n=[{type:"text",text:t.content}]),{contentParts:n,textContent:tn(n),toolMeta:nn(t),imageParts:n.filter(r=>r.type==="image_url"),fileParts:n.filter(r=>r.type==="file"),toolRaw:Wt(n),isToolStreaming:!!t.toolStreaming}},[e])}const Tn="data:";function As(e){if(!e)return[];const t=[],n=e.split(/\r?\n/);for(const r of n){const s=r.trim();if(!s||!s.startsWith(Tn))continue;const o=s.slice(Tn.length).trim();if(!o||o.toLowerCase()==="[done]")continue;const a=nt(o);a&&typeof a=="object"&&t.push(a)}return t}function xs(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if(n&&typeof n=="object"&&n.type==="tool.end")return n}return null}function Ms(e){return i.useMemo(()=>{const t=e.content.filter(p=>p.type==="text");if(!t.length)return null;let r=t.flatMap(p=>As(p.text??""));if(!r.length){const p=t.map(c=>c.text??"").join(`