django-agent-studio 0.2.8__py3-none-any.whl → 0.2.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var Ht=Object.getOwnPropertyNames;var Ft=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var n in t)Se(e,n,{get:t[n],enumerable:!0})},Ot=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ht(t))!Ft.call(e,r)&&r!==n&&Se(e,r,{get:()=>t[r],enumerable:!(o=Pt(t,r))||o.enumerable});return e};var Ut=e=>Ot(Se({},"__esModule",{value:!0}),e);var pn={};Nt(pn,{ChatWidget:()=>Ce,default:()=>_n});var _e,P,je,Wt,Y,Le,Je,Ve,qe,Ee,Me,Te,Lt,oe={},Ge=[],Kt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,pe=Array.isArray;function X(e,t){for(var n in t)e[n]=t[n];return e}function Ie(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function fe(e,t,n){var o,r,s,i={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?_e.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)i[s]===void 0&&(i[s]=e.defaultProps[s]);return ue(e,i,o,r,null)}function ue(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++je,__i:-1,__u:0};return r==null&&P.vnode!=null&&P.vnode(s),s}function he(e){return e.children}function ne(e,t){this.props=e,this.context=t}function te(e,t){if(t==null)return e.__?te(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?te(e):null}function Xe(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return Xe(e)}}function Ke(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!de.__r++||Le!=P.debounceRendering)&&((Le=P.debounceRendering)||Je)(de)}function de(){for(var e,t,n,o,r,s,i,c=1;Y.length;)Y.length>c&&Y.sort(Ve),e=Y.shift(),c=Y.length,e.__d&&(n=void 0,o=void 0,r=(o=(t=e).__v).__e,s=[],i=[],t.__P&&((n=X({},o)).__v=o.__v+1,P.vnode&&P.vnode(n),Ae(t.__P,n,o,t.__n,t.__P.namespaceURI,32&o.__u?[r]:null,s,r??te(o),!!(32&o.__u),i),n.__v=o.__v,n.__.__k[n.__i]=n,Ye(s,n,i),o.__e=o.__=null,n.__e!=r&&Xe(n)));de.__r=0}function Qe(e,t,n,o,r,s,i,c,d,l,u){var a,p,f,$,k,g,v,w=o&&o.__k||Ge,A=t.length;for(d=Bt(n,t,w,d,A),a=0;a<A;a++)(f=n.__k[a])!=null&&(p=f.__i==-1?oe:w[f.__i]||oe,f.__i=a,g=Ae(e,f,p,r,s,i,c,d,l,u),$=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Re(p.ref,null,f),u.push(f.ref,f.__c||$,f)),k==null&&$!=null&&(k=$),(v=!!(4&f.__u))||p.__k===f.__k?d=Ze(f,d,e,v):typeof f.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),f.__u&=-7);return n.__e=k,d}function Bt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,p=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=ue(null,i,null,null,null):pe(i)?i=e.__k[s]=ue(he,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=ue(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+p,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=zt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?p--:r<u&&p++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?p--:l==d+1?p++:(l>d?p--:p++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=te(c)),tt(c,c));return o}function Ze(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=Ze(r[s],t,n,o));return t}e.__e!=t&&(o&&(t&&e.type&&!t.parentNode&&(t=te(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function zt(e,t,n,o){var r,s,i,c=e.key,d=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&d==l.type)return n;if(o>(u?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((l=t[i=r>=0?r--:s++])!=null&&!(2&l.__u)&&c==l.key&&d==l.type)return i}return-1}function Be(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Kt.test(t)?n:n+"px"}function ce(e,t,n,o,r){var s,i;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Be(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Be(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(qe,"$1")),i=t.toLowerCase(),t=i in e||t=="onFocusOut"||t=="onFocusIn"?i.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=Ee,e.addEventListener(t,s?Te:Me,s)):e.removeEventListener(t,s?Te:Me,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function ze(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Ee++;else if(t.t<n.u)return;return n(P.event?P.event(t):t)}}}function Ae(e,t,n,o,r,s,i,c,d,l){var u,a,p,f,$,k,g,v,w,A,N,J,O,j,V,K,b,F=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=P.__b)&&u(t);e:if(typeof F=="function")try{if(v=t.props,w="prototype"in F&&F.prototype.render,A=(u=F.contextType)&&o[u.__c],N=u?A?A.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new F(v,N):(t.__c=a=new ne(v,N),a.constructor=F,a.render=Jt),A&&A.sub(a),a.state||(a.state={}),a.__n=o,p=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&F.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=X({},a.__s)),X(a.__s,F.getDerivedStateFromProps(v,a.__s))),f=a.props,$=a.state,a.__v=t,p)w&&F.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&F.getDerivedStateFromProps==null&&v!==f&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(v,N),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(v,a.__s,N)===!1){for(t.__v!=n.__v&&(a.props=v,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(y){y&&(y.__=t)}),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(v,a.__s,N),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(f,$,k)})}if(a.context=N,a.props=v,a.__P=e,a.__e=!1,O=P.__r,j=0,w){for(a.state=a.__s,a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),V=0;V<a._sb.length;V++)a.__h.push(a._sb[V]);a._sb=[]}else do a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++j<25);a.state=a.__s,a.getChildContext!=null&&(o=X(X({},o),a.getChildContext())),w&&!p&&a.getSnapshotBeforeUpdate!=null&&(k=a.getSnapshotBeforeUpdate(f,$)),K=u,u!=null&&u.type===he&&u.key==null&&(K=et(u.props.children)),c=Qe(e,pe(K)?K:[K],t,n,o,r,s,i,c,d,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),g&&(a.__E=a.__=null)}catch(y){if(t.__v=null,d||s!=null)if(y.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(b=s.length;b--;)Ie(s[b]);xe(t)}else t.__e=n.__e,t.__k=n.__k,y.then||xe(t);P.__e(y,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=jt(n.__e,t,n,o,r,s,i,d,l);return(u=P.diffed)&&u(t),128&t.__u?void 0:c}function xe(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(xe)}function Ye(e,t,n){for(var o=0;o<n.length;o++)Re(n[o],n[++o],n[++o]);P.__c&&P.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){P.__e(s,r.__v)}})}function et(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:pe(e)?e.map(et):X({},e)}function jt(e,t,n,o,r,s,i,c,d){var l,u,a,p,f,$,k,g=n.props||oe,v=t.props,w=t.type;if(w=="svg"?r="http://www.w3.org/2000/svg":w=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(l=0;l<s.length;l++)if((f=s[l])&&"setAttribute"in f==!!w&&(w?f.localName==w:f.nodeType==3)){e=f,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(v);e=document.createElementNS(r,w,v.is&&v),c&&(P.__m&&P.__m(t,s),c=!1),s=null}if(w==null)g===v||c&&e.data==v||(e.data=v);else{if(s=s&&_e.call(e.childNodes),!c&&s!=null)for(g={},l=0;l<e.attributes.length;l++)g[(f=e.attributes[l]).name]=f.value;for(l in g)if(f=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=f;else if(!(l in v)){if(l=="value"&&"defaultValue"in v||l=="checked"&&"defaultChecked"in v)continue;ce(e,l,null,f,r)}}for(l in v)f=v[l],l=="children"?p=f:l=="dangerouslySetInnerHTML"?u=f:l=="value"?$=f:l=="checked"?k=f:c&&typeof f!="function"||g[l]===f||ce(e,l,f,g[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Qe(t.type=="template"?e.content:e,pe(p)?p:[p],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&te(n,0),c,d),s!=null)for(l=s.length;l--;)Ie(s[l]);c||(l="value",w=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||w=="progress"&&!$||w=="option"&&$!=g[l])&&ce(e,l,$,g[l],r),l="checked",k!=null&&k!=e[l]&&ce(e,l,k,g[l],r))}return e}function Re(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){P.__e(r,n)}}function tt(e,t,n){var o,r;if(P.unmount&&P.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Re(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){P.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&tt(o[r],t,n||typeof e.type!="function");n||Ie(e.__e),e.__c=e.__=e.__e=void 0}function Jt(e,t,n){return this.constructor(e,n)}function me(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),P.__&&P.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ae(t,e=(!o&&n||t).__k=fe(he,null,[e]),r||oe,oe,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?_e.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),Ye(s,e,i)}_e=Ge.slice,P={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},je=0,Wt=function(e){return e!=null&&e.constructor===void 0},ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=X({},this.state),typeof e=="function"&&(e=e(X({},n),this.props)),e&&X(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ke(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ke(this))},ne.prototype.render=he,Y=[],Je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ve=function(e,t){return e.__v.__b-t.__v.__b},de.__r=0,qe=/(PointerCapture)$|Capture$/i,Ee=0,Me=ze(!1),Te=ze(!0),Lt=0;var ot=function(e,t,n,o){var r;t[0]=0;for(var s=1;s<t.length;s++){var i=t[s++],c=t[s]?(t[0]|=i?1:2,n[t[s++]]):t[++s];i===3?o[0]=c:i===4?o[1]=Object.assign(o[1]||{},c):i===5?(o[1]=o[1]||{})[t[++s]]=c:i===6?o[1][t[++s]]+=c+"":i?(r=e.apply(c,ot(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},nt=new Map;function st(e){var t=nt.get(this);return t||(t=new Map,nt.set(this,t)),(t=ot(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(p){s===1&&(p||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,p,i):s===3&&(p||i)?(d.push(3,p,i),s=2):s===2&&i==="..."&&p?d.push(4,p,0):s===2&&i&&!p?d.push(5,0,!0,i):s>=5&&((i||!p&&s===5)&&(d.push(s,0,i,r),s=6),p&&(d.push(s,p,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
2
- `||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var m=st.bind(fe);var se,U,De,rt,re=0,pt=[],W=P,at=W.__b,it=W.__r,lt=W.diffed,ct=W.__c,ut=W.unmount,dt=W.__;function He(e,t){W.__h&&W.__h(U,e,re||t),re=0;var n=U.__H||(U.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function M(e){return re=1,Vt(ht,e)}function Vt(e,t,n){var o=He(se++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):ht(void 0,t),function(c){var d=o.__N?o.__N[0]:o.__[0],l=o.t(d,c);d!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=U,!U.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(p){return!!p.__c});if(u.every(function(p){return!p.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};U.__f=!0;var s=U.shouldComponentUpdate,i=U.componentWillUpdate;U.componentWillUpdate=function(c,d,l){if(this.__e){var u=s;s=void 0,r(c,d,l),s=u}i&&i.call(this,c,d,l)},U.shouldComponentUpdate=r}return o.__N||o.__}function L(e,t){var n=He(se++,3);!W.__s&&ft(n.__H,t)&&(n.__=e,n.u=t,U.__H.__h.push(n))}function G(e){return re=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=He(se++,7);return ft(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function z(e,t){return re=8,ae(function(){return e},t)}function qt(){for(var e;e=pt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ge),e.__H.__h.forEach(Pe),e.__H.__h=[]}catch(t){e.__H.__h=[],W.__e(t,e.__v)}}W.__b=function(e){U=null,at&&at(e)},W.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),dt&&dt(e,t)},W.__r=function(e){it&&it(e),se=0;var t=(U=e.__c).__H;t&&(De===U?(t.__h=[],U.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(ge),t.__h.forEach(Pe),t.__h=[],se=0)),De=U},W.diffed=function(e){lt&&lt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(pt.push(t)!==1&&rt===W.requestAnimationFrame||((rt=W.requestAnimationFrame)||Gt)(qt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),De=U=null},W.__c=function(e,t){t.some(function(n){try{n.__h.forEach(ge),n.__h=n.__h.filter(function(o){return!o.__||Pe(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],W.__e(o,n.__v)}}),ct&&ct(e,t)},W.unmount=function(e){ut&&ut(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{ge(o)}catch(r){t=r}}),n.__H=void 0,t&&W.__e(t,n.__v))};var _t=typeof requestAnimationFrame=="function";function Gt(e){var t,n=function(){clearTimeout(o),_t&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);_t&&(t=requestAnimationFrame(n))}function ge(e){var t=U,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),U=t}function Pe(e){var t=U;e.__c=e.__(),U=t}function ft(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function ht(e,t){return typeof t=="function"?t(e):t}function Xt(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function Fe(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function ye(e){return Array.isArray(e)?e.map(ye):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Xt(t),ye(n)])):e}function ve(e){return Array.isArray(e)?e.map(ve):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Fe(t),ve(n)])):e}function we(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function B(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function mt(e){if(!e)return"";try{let t=new Date(e),o=new Date-t,r=Math.floor(o/6e4),s=Math.floor(o/36e5),i=Math.floor(o/864e5);return r<1?"Just now":r<60?`${r}m ago`:s<24?`${s}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function gt(e,t=null){if(t)return t(e);let n=B(e);return n=n.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),n=n.replace(/__(.+?)__/g,"<strong>$1</strong>"),n=n.replace(/\*(.+?)\*/g,"<em>$1</em>"),n=n.replace(/_(.+?)_/g,"<em>$1</em>"),n=n.replace(/`(.+?)`/g,"<code>$1</code>"),n=n.replace(/\[(.+?)\]\((.+?)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'),n=n.replace(/\n/g,"<br>"),n}function yt(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,o){try{let r=t(n);o===null?localStorage.removeItem(r):localStorage.setItem(r,o)}catch{}}}}function vt(e="csrftoken"){let t=document.cookie.split(";");for(let o of t){let[r,s]=o.trim().split("=");if(r===e)return decodeURIComponent(s)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function $e(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,o)).toFixed(1))+" "+n[o]}function be(e){return e?e.startsWith("image/")?"\u{1F5BC}\uFE0F":e.startsWith("video/")?"\u{1F3AC}":e.startsWith("audio/")?"\u{1F3B5}":e.includes("pdf")?"\u{1F4D5}":e.includes("spreadsheet")||e.includes("excel")?"\u{1F4CA}":e.includes("document")||e.includes("word")?"\u{1F4DD}":e.includes("presentation")||e.includes("powerpoint")?"\u{1F4FD}\uFE0F":e.includes("zip")||e.includes("compressed")?"\u{1F5DC}\uFE0F":(e.includes("text/"),"\u{1F4C4}"):"\u{1F4C4}"}function wt({config:e,debugMode:t,isExpanded:n,isSpeaking:o,messagesCount:r,isLoading:s,currentAgent:i,onClose:c,onToggleExpand:d,onToggleDebug:l,onToggleTTS:u,onClear:a,onToggleSidebar:p}){let{title:f,primaryColor:$,embedded:k,showConversationSidebar:g,showClearButton:v,showDebugButton:w,enableDebugMode:A,showTTSButton:N,showExpandButton:J,enableTTS:O,elevenLabsApiKey:j,ttsProxyUrl:V}=e,K=j||V;return m`
3
- <div class="cw-header" style=${{backgroundColor:$}}>
4
- ${g&&m`
1
+ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Ot=Object.getOwnPropertyNames;var Nt=Object.prototype.hasOwnProperty;var Lt=(e,t)=>{for(var n in t)Se(e,n,{get:t[n],enumerable:!0})},Ut=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ot(t))!Nt.call(e,a)&&a!==n&&Se(e,a,{get:()=>t[a],enumerable:!(s=Ht(t,a))||s.enumerable});return e};var Wt=e=>Ut(Se({},"__esModule",{value:!0}),e);var yn={};Lt(yn,{ChatWidget:()=>Ce,default:()=>gn});var _e,H,ze,Kt,ee,We,Je,Ve,qe,Ee,Te,Me,Bt,oe={},Ge=[],jt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,pe=Array.isArray;function Q(e,t){for(var n in t)e[n]=t[n];return e}function Ie(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function fe(e,t,n){var s,a,o,l={};for(o in t)o=="key"?s=t[o]:o=="ref"?a=t[o]:l[o]=t[o];if(arguments.length>2&&(l.children=arguments.length>3?_e.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)l[o]===void 0&&(l[o]=e.defaultProps[o]);return ue(e,l,s,a,null)}function ue(e,t,n,s,a){var o={type:e,props:t,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++ze,__i:-1,__u:0};return a==null&&H.vnode!=null&&H.vnode(o),o}function he(e){return e.children}function se(e,t){this.props=e,this.context=t}function ne(e,t){if(t==null)return e.__?ne(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?ne(e):null}function Xe(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return Xe(e)}}function Ke(e){(!e.__d&&(e.__d=!0)&&ee.push(e)&&!de.__r++||We!=H.debounceRendering)&&((We=H.debounceRendering)||Je)(de)}function de(){for(var e,t,n,s,a,o,l,c=1;ee.length;)ee.length>c&&ee.sort(Ve),e=ee.shift(),c=ee.length,e.__d&&(n=void 0,s=void 0,a=(s=(t=e).__v).__e,o=[],l=[],t.__P&&((n=Q({},s)).__v=s.__v+1,H.vnode&&H.vnode(n),Ae(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[a]:null,o,a??ne(s),!!(32&s.__u),l),n.__v=s.__v,n.__.__k[n.__i]=n,Ye(o,n,l),s.__e=s.__=null,n.__e!=a&&Xe(n)));de.__r=0}function Qe(e,t,n,s,a,o,l,c,u,i,d){var r,_,p,k,w,y,g,$=s&&s.__k||Ge,I=t.length;for(u=zt(n,t,$,u,I),r=0;r<I;r++)(p=n.__k[r])!=null&&(_=p.__i==-1?oe:$[p.__i]||oe,p.__i=r,y=Ae(e,p,_,a,o,l,c,u,i,d),k=p.__e,p.ref&&_.ref!=p.ref&&(_.ref&&De(_.ref,null,p),d.push(p.ref,p.__c||k,p)),w==null&&k!=null&&(w=k),(g=!!(4&p.__u))||_.__k===p.__k?u=Ze(p,u,e,g):typeof p.type=="function"&&y!==void 0?u=y:k&&(u=k.nextSibling),p.__u&=-7);return n.__e=w,u}function zt(e,t,n,s,a){var o,l,c,u,i,d=n.length,r=d,_=0;for(e.__k=new Array(a),o=0;o<a;o++)(l=t[o])!=null&&typeof l!="boolean"&&typeof l!="function"?(typeof l=="string"||typeof l=="number"||typeof l=="bigint"||l.constructor==String?l=e.__k[o]=ue(null,l,null,null,null):pe(l)?l=e.__k[o]=ue(he,{children:l},null,null,null):l.constructor===void 0&&l.__b>0?l=e.__k[o]=ue(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):e.__k[o]=l,u=o+_,l.__=e,l.__b=e.__b+1,c=null,(i=l.__i=Jt(l,n,u,r))!=-1&&(r--,(c=n[i])&&(c.__u|=2)),c==null||c.__v==null?(i==-1&&(a>d?_--:a<d&&_++),typeof l.type!="function"&&(l.__u|=4)):i!=u&&(i==u-1?_--:i==u+1?_++:(i>u?_--:_++,l.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<d;o++)(c=n[o])!=null&&!(2&c.__u)&&(c.__e==s&&(s=ne(c)),tt(c,c));return s}function Ze(e,t,n,s){var a,o;if(typeof e.type=="function"){for(a=e.__k,o=0;a&&o<a.length;o++)a[o]&&(a[o].__=e,t=Ze(a[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=ne(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Jt(e,t,n,s){var a,o,l,c=e.key,u=e.type,i=t[n],d=i!=null&&(2&i.__u)==0;if(i===null&&c==null||d&&c==i.key&&u==i.type)return n;if(s>(d?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[l=a>=0?a--:o++])!=null&&!(2&i.__u)&&c==i.key&&u==i.type)return l}return-1}function Be(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||jt.test(t)?n:n+"px"}function ce(e,t,n,s,a){var o,l;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof s=="string"&&(e.style.cssText=s=""),s)for(t in s)n&&t in n||Be(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||Be(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(qe,"$1")),l=t.toLowerCase(),t=l in e||t=="onFocusOut"||t=="onFocusIn"?l.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?s?n.u=s.u:(n.u=Ee,e.addEventListener(t,o?Me:Te,o)):e.removeEventListener(t,o?Me:Te,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function je(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Ee++;else if(t.t<n.u)return;return n(H.event?H.event(t):t)}}}function Ae(e,t,n,s,a,o,l,c,u,i){var d,r,_,p,k,w,y,g,$,I,N,J,z,V,K,B,q,O=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(u=!!(32&n.__u),o=[c=t.__e=n.__e]),(d=H.__b)&&d(t);e:if(typeof O=="function")try{if(g=t.props,$="prototype"in O&&O.prototype.render,I=(d=O.contextType)&&s[d.__c],N=d?I?I.props.value:d.__:s,n.__c?y=(r=t.__c=n.__c).__=r.__E:($?t.__c=r=new O(g,N):(t.__c=r=new se(g,N),r.constructor=O,r.render=qt),I&&I.sub(r),r.state||(r.state={}),r.__n=s,_=r.__d=!0,r.__h=[],r._sb=[]),$&&r.__s==null&&(r.__s=r.state),$&&O.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=Q({},r.__s)),Q(r.__s,O.getDerivedStateFromProps(g,r.__s))),p=r.props,k=r.state,r.__v=t,_)$&&O.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),$&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if($&&O.getDerivedStateFromProps==null&&g!==p&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(g,N),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(g,r.__s,N)===!1){for(t.__v!=n.__v&&(r.props=g,r.state=r.__s,r.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(f){f&&(f.__=t)}),J=0;J<r._sb.length;J++)r.__h.push(r._sb[J]);r._sb=[],r.__h.length&&l.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(g,r.__s,N),$&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(p,k,w)})}if(r.context=N,r.props=g,r.__P=e,r.__e=!1,z=H.__r,V=0,$){for(r.state=r.__s,r.__d=!1,z&&z(t),d=r.render(r.props,r.state,r.context),K=0;K<r._sb.length;K++)r.__h.push(r._sb[K]);r._sb=[]}else do r.__d=!1,z&&z(t),d=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++V<25);r.state=r.__s,r.getChildContext!=null&&(s=Q(Q({},s),r.getChildContext())),$&&!_&&r.getSnapshotBeforeUpdate!=null&&(w=r.getSnapshotBeforeUpdate(p,k)),B=d,d!=null&&d.type===he&&d.key==null&&(B=et(d.props.children)),c=Qe(e,pe(B)?B:[B],t,n,s,a,o,l,c,u,i),r.base=t.__e,t.__u&=-161,r.__h.length&&l.push(r),y&&(r.__E=r.__=null)}catch(f){if(t.__v=null,u||o!=null)if(f.then){for(t.__u|=u?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,t.__e=c}else{for(q=o.length;q--;)Ie(o[q]);xe(t)}else t.__e=n.__e,t.__k=n.__k,f.then||xe(t);H.__e(f,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Vt(n.__e,t,n,s,a,o,l,u,i);return(d=H.diffed)&&d(t),128&t.__u?void 0:c}function xe(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(xe)}function Ye(e,t,n){for(var s=0;s<n.length;s++)De(n[s],n[++s],n[++s]);H.__c&&H.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){H.__e(o,a.__v)}})}function et(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:pe(e)?e.map(et):Q({},e)}function Vt(e,t,n,s,a,o,l,c,u){var i,d,r,_,p,k,w,y=n.props||oe,g=t.props,$=t.type;if($=="svg"?a="http://www.w3.org/2000/svg":$=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((p=o[i])&&"setAttribute"in p==!!$&&($?p.localName==$:p.nodeType==3)){e=p,o[i]=null;break}}if(e==null){if($==null)return document.createTextNode(g);e=document.createElementNS(a,$,g.is&&g),c&&(H.__m&&H.__m(t,o),c=!1),o=null}if($==null)y===g||c&&e.data==g||(e.data=g);else{if(o=o&&_e.call(e.childNodes),!c&&o!=null)for(y={},i=0;i<e.attributes.length;i++)y[(p=e.attributes[i]).name]=p.value;for(i in y)if(p=y[i],i!="children"){if(i=="dangerouslySetInnerHTML")r=p;else if(!(i in g)){if(i=="value"&&"defaultValue"in g||i=="checked"&&"defaultChecked"in g)continue;ce(e,i,null,p,a)}}for(i in g)p=g[i],i=="children"?_=p:i=="dangerouslySetInnerHTML"?d=p:i=="value"?k=p:i=="checked"?w=p:c&&typeof p!="function"||y[i]===p||ce(e,i,p,y[i],a);if(d)c||r&&(d.__html==r.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(r&&(e.innerHTML=""),Qe(t.type=="template"?e.content:e,pe(_)?_:[_],t,n,s,$=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,l,o?o[0]:n.__k&&ne(n,0),c,u),o!=null)for(i=o.length;i--;)Ie(o[i]);c||(i="value",$=="progress"&&k==null?e.removeAttribute("value"):k!=null&&(k!==e[i]||$=="progress"&&!k||$=="option"&&k!=y[i])&&ce(e,i,k,y[i],a),i="checked",w!=null&&w!=e[i]&&ce(e,i,w,y[i],a))}return e}function De(e,t,n){try{if(typeof e=="function"){var s=typeof e.__u=="function";s&&e.__u(),s&&t==null||(e.__u=e(t))}else e.current=t}catch(a){H.__e(a,n)}}function tt(e,t,n){var s,a;if(H.unmount&&H.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||De(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){H.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(a=0;a<s.length;a++)s[a]&&tt(s[a],t,n||typeof e.type!="function");n||Ie(e.__e),e.__c=e.__=e.__e=void 0}function qt(e,t,n){return this.constructor(e,n)}function me(e,t,n){var s,a,o,l;t==document&&(t=document.documentElement),H.__&&H.__(e,t),a=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],l=[],Ae(t,e=(!s&&n||t).__k=fe(he,null,[e]),a||oe,oe,t.namespaceURI,!s&&n?[n]:a?null:t.firstChild?_e.call(t.childNodes):null,o,!s&&n?n:a?a.__e:t.firstChild,s,l),Ye(o,e,l)}_e=Ge.slice,H={__e:function(e,t,n,s){for(var a,o,l;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),l=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,s||{}),l=a.__d),l)return a.__E=a}catch(c){e=c}throw e}},ze=0,Kt=function(e){return e!=null&&e.constructor===void 0},se.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Q({},this.state),typeof e=="function"&&(e=e(Q({},n),this.props)),e&&Q(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ke(this))},se.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ke(this))},se.prototype.render=he,ee=[],Je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ve=function(e,t){return e.__v.__b-t.__v.__b},de.__r=0,qe=/(PointerCapture)$|Capture$/i,Ee=0,Te=je(!1),Me=je(!0),Bt=0;var st=function(e,t,n,s){var a;t[0]=0;for(var o=1;o<t.length;o++){var l=t[o++],c=t[o]?(t[0]|=l?1:2,n[t[o++]]):t[++o];l===3?s[0]=c:l===4?s[1]=Object.assign(s[1]||{},c):l===5?(s[1]=s[1]||{})[t[++o]]=c:l===6?s[1][t[++o]]+=c+"":l?(a=e.apply(c,st(e,c,n,["",null])),s.push(a),c[0]?t[0]|=2:(t[o-2]=0,t[o]=a)):s.push(c)}return s},nt=new Map;function ot(e){var t=nt.get(this);return t||(t=new Map,nt.set(this,t)),(t=st(this,t.get(e)||(t.set(e,t=function(n){for(var s,a,o=1,l="",c="",u=[0],i=function(_){o===1&&(_||(l=l.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?u.push(0,_,l):o===3&&(_||l)?(u.push(3,_,l),o=2):o===2&&l==="..."&&_?u.push(4,_,0):o===2&&l&&!_?u.push(5,0,!0,l):o>=5&&((l||!_&&o===5)&&(u.push(o,0,l,a),o=6),_&&(u.push(o,_,0,a),o=6)),l=""},d=0;d<n.length;d++){d&&(o===1&&i(),i(d));for(var r=0;r<n[d].length;r++)s=n[d][r],o===1?s==="<"?(i(),u=[u],o=3):l+=s:o===4?l==="--"&&s===">"?(o=1,l=""):l=s+l[0]:c?s===c?c="":l+=s:s==='"'||s==="'"?c=s:s===">"?(i(),o=1):o&&(s==="="?(o=5,a=l,l=""):s==="/"&&(o<5||n[d][r+1]===">")?(i(),o===3&&(u=u[0]),o=u,(u=u[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
2
+ `||s==="\r"?(i(),o=2):l+=s),o===3&&l==="!--"&&(o=4,u=u[0])}return i(),u}(e)),t),arguments,[])).length>1?t:t[0]}var h=ot.bind(fe);var ae,L,Re,at,re=0,pt=[],U=H,rt=U.__b,it=U.__r,lt=U.diffed,ct=U.__c,ut=U.unmount,dt=U.__;function Fe(e,t){U.__h&&U.__h(L,e,re||t),re=0;var n=L.__H||(L.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function C(e){return re=1,Gt(ht,e)}function Gt(e,t,n){var s=Fe(ae++,2);if(s.t=e,!s.__c&&(s.__=[n?n(t):ht(void 0,t),function(c){var u=s.__N?s.__N[0]:s.__[0],i=s.t(u,c);u!==i&&(s.__N=[i,s.__[1]],s.__c.setState({}))}],s.__c=L,!L.__f)){var a=function(c,u,i){if(!s.__c.__H)return!0;var d=s.__c.__H.__.filter(function(_){return!!_.__c});if(d.every(function(_){return!_.__N}))return!o||o.call(this,c,u,i);var r=s.__c.props!==c;return d.forEach(function(_){if(_.__N){var p=_.__[0];_.__=_.__N,_.__N=void 0,p!==_.__[0]&&(r=!0)}}),o&&o.call(this,c,u,i)||r};L.__f=!0;var o=L.shouldComponentUpdate,l=L.componentWillUpdate;L.componentWillUpdate=function(c,u,i){if(this.__e){var d=o;o=void 0,a(c,u,i),o=d}l&&l.call(this,c,u,i)},L.shouldComponentUpdate=a}return s.__N||s.__}function W(e,t){var n=Fe(ae++,3);!U.__s&&ft(n.__H,t)&&(n.__=e,n.u=t,L.__H.__h.push(n))}function G(e){return re=5,ie(function(){return{current:e}},[])}function ie(e,t){var n=Fe(ae++,7);return ft(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function A(e,t){return re=8,ie(function(){return e},t)}function Xt(){for(var e;e=pt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ge),e.__H.__h.forEach(Pe),e.__H.__h=[]}catch(t){e.__H.__h=[],U.__e(t,e.__v)}}U.__b=function(e){L=null,rt&&rt(e)},U.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),dt&&dt(e,t)},U.__r=function(e){it&&it(e),ae=0;var t=(L=e.__c).__H;t&&(Re===L?(t.__h=[],L.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(ge),t.__h.forEach(Pe),t.__h=[],ae=0)),Re=L},U.diffed=function(e){lt&&lt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(pt.push(t)!==1&&at===U.requestAnimationFrame||((at=U.requestAnimationFrame)||Qt)(Xt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Re=L=null},U.__c=function(e,t){t.some(function(n){try{n.__h.forEach(ge),n.__h=n.__h.filter(function(s){return!s.__||Pe(s)})}catch(s){t.some(function(a){a.__h&&(a.__h=[])}),t=[],U.__e(s,n.__v)}}),ct&&ct(e,t)},U.unmount=function(e){ut&&ut(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(s){try{ge(s)}catch(a){t=a}}),n.__H=void 0,t&&U.__e(t,n.__v))};var _t=typeof requestAnimationFrame=="function";function Qt(e){var t,n=function(){clearTimeout(s),_t&&cancelAnimationFrame(t),setTimeout(e)},s=setTimeout(n,35);_t&&(t=requestAnimationFrame(n))}function ge(e){var t=L,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),L=t}function Pe(e){var t=L;e.__c=e.__(),L=t}function ft(e,t){return!e||e.length!==t.length||t.some(function(n,s){return n!==e[s]})}function ht(e,t){return typeof t=="function"?t(e):t}function Zt(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function He(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function ye(e){return Array.isArray(e)?e.map(ye):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Zt(t),ye(n)])):e}function ve(e){return Array.isArray(e)?e.map(ve):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[He(t),ve(n)])):e}function we(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function j(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function mt(e){if(!e)return"";try{let t=new Date(e),s=new Date-t,a=Math.floor(s/6e4),o=Math.floor(s/36e5),l=Math.floor(s/864e5);return a<1?"Just now":a<60?`${a}m ago`:o<24?`${o}h ago`:l<7?`${l}d ago`:t.toLocaleDateString()}catch{return""}}function gt(e,t=null){if(t)return t(e);let n=j(e);return n=n.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),n=n.replace(/__(.+?)__/g,"<strong>$1</strong>"),n=n.replace(/\*(.+?)\*/g,"<em>$1</em>"),n=n.replace(/_(.+?)_/g,"<em>$1</em>"),n=n.replace(/`(.+?)`/g,"<code>$1</code>"),n=n.replace(/\[(.+?)\]\((.+?)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'),n=n.replace(/\n/g,"<br>"),n}function yt(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,s){try{let a=t(n);s===null?localStorage.removeItem(a):localStorage.setItem(a,s)}catch{}}}}function vt(e="csrftoken"){let t=document.cookie.split(";");for(let s of t){let[a,o]=s.trim().split("=");if(a===e)return decodeURIComponent(o)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function $e(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],s=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,s)).toFixed(1))+" "+n[s]}function ke(e){return e?e.startsWith("image/")?"\u{1F5BC}\uFE0F":e.startsWith("video/")?"\u{1F3AC}":e.startsWith("audio/")?"\u{1F3B5}":e.includes("pdf")?"\u{1F4D5}":e.includes("spreadsheet")||e.includes("excel")?"\u{1F4CA}":e.includes("document")||e.includes("word")?"\u{1F4DD}":e.includes("presentation")||e.includes("powerpoint")?"\u{1F4FD}\uFE0F":e.includes("zip")||e.includes("compressed")?"\u{1F5DC}\uFE0F":(e.includes("text/"),"\u{1F4C4}"):"\u{1F4C4}"}function wt({config:e,debugMode:t,isExpanded:n,isSpeaking:s,messagesCount:a,isLoading:o,currentAgent:l,onClose:c,onToggleExpand:u,onToggleDebug:i,onToggleTTS:d,onClear:r,onToggleSidebar:_}){let{title:p,primaryColor:k,embedded:w,showConversationSidebar:y,showClearButton:g,showDebugButton:$,enableDebugMode:I,showTTSButton:N,showExpandButton:J,enableTTS:z,elevenLabsApiKey:V,ttsProxyUrl:K}=e,B=V||K;return h`
3
+ <div class="cw-header" style=${{backgroundColor:k}}>
4
+ ${y&&h`
5
5
  <button
6
6
  class="cw-header-btn cw-hamburger"
7
- onClick=${p}
7
+ onClick=${_}
8
8
  title="Conversations"
9
9
  >
10
10
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16">
@@ -16,50 +16,50 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
16
16
  `}
17
17
 
18
18
  <div class="cw-title-container">
19
- <span class="cw-title">${B(f)}</span>
20
- ${i&&m`
19
+ <span class="cw-title">${j(p)}</span>
20
+ ${l&&h`
21
21
  <span class="cw-current-agent" title="Currently active agent">
22
22
  <span class="cw-agent-indicator">🤖</span>
23
- <span class="cw-agent-name">${B(i.name||i.key)}</span>
23
+ <span class="cw-agent-name">${j(l.name||l.key)}</span>
24
24
  </span>
25
25
  `}
26
26
  </div>
27
27
 
28
28
  <div class="cw-header-actions">
29
- ${v&&m`
29
+ ${g&&h`
30
30
  <button
31
31
  class="cw-header-btn"
32
- onClick=${a}
32
+ onClick=${r}
33
33
  title="Clear"
34
- disabled=${s||r===0}
34
+ disabled=${o||a===0}
35
35
  >🗑️</button>
36
36
  `}
37
37
 
38
- ${w&&A&&m`
38
+ ${$&&I&&h`
39
39
  <button
40
40
  class="cw-header-btn ${t?"cw-btn-active":""}"
41
- onClick=${l}
41
+ onClick=${i}
42
42
  title="Debug"
43
43
  >🐛</button>
44
44
  `}
45
45
 
46
- ${N&&K&&m`
46
+ ${N&&B&&h`
47
47
  <button
48
- class="cw-header-btn ${O?"cw-btn-active":""}"
49
- onClick=${u}
48
+ class="cw-header-btn ${z?"cw-btn-active":""}"
49
+ onClick=${d}
50
50
  title="TTS"
51
- >${O?"\u{1F50A}":"\u{1F507}"}</button>
51
+ >${z?"\u{1F50A}":"\u{1F507}"}</button>
52
52
  `}
53
53
 
54
- ${J&&!k&&m`
54
+ ${J&&!w&&h`
55
55
  <button
56
56
  class="cw-header-btn"
57
- onClick=${d}
57
+ onClick=${u}
58
58
  title=${n?"Minimize":"Expand"}
59
59
  >${n?"\u2296":"\u2295"}</button>
60
60
  `}
61
61
 
62
- ${!k&&m`
62
+ ${!w&&h`
63
63
  <button
64
64
  class="cw-header-btn"
65
65
  onClick=${c}
@@ -68,20 +68,20 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
68
68
  `}
69
69
  </div>
70
70
  </div>
71
- `}function Ne({msg:e,show:t,onToggle:n}){return t?m`
71
+ `}function Oe({msg:e,show:t,onToggle:n}){return t?h`
72
72
  <div class="cw-debug-payload">
73
73
  <button class="cw-debug-payload-close" onClick=${n}>×</button>
74
74
  <pre class="cw-debug-payload-content">${JSON.stringify(e,null,2)}</pre>
75
75
  </div>
76
- `:m`
76
+ `:h`
77
77
  <button
78
78
  class="cw-debug-payload-btn"
79
79
  onClick=${n}
80
80
  title="Show message payload"
81
81
  >{ }</button>
82
- `}function $t({onEdit:e,onRetry:t,isLoading:n,position:o,showEdit:r=!0}){return n?null:m`
83
- <div class="cw-message-actions cw-message-actions-${o||"left"}">
84
- ${r&&m`
82
+ `}function $t({onEdit:e,onRetry:t,isLoading:n,position:s,showEdit:a=!0}){return n?null:h`
83
+ <div class="cw-message-actions cw-message-actions-${s||"left"}">
84
+ ${a&&h`
85
85
  <button
86
86
  class="cw-message-action-btn"
87
87
  onClick=${e}
@@ -105,14 +105,14 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
105
105
  </svg>
106
106
  </button>
107
107
  </div>
108
- `}function Qt({initialContent:e,onSave:t,onCancel:n}){let[o,r]=M(e),s=G(null);return L(()=>{s.current&&(s.current.focus(),s.current.setSelectionRange(o.length,o.length),s.current.style.height="auto",s.current.style.height=s.current.scrollHeight+"px")},[]),m`
108
+ `}function Yt({initialContent:e,onSave:t,onCancel:n}){let[s,a]=C(e),o=G(null);return W(()=>{o.current&&(o.current.focus(),o.current.setSelectionRange(s.length,s.length),o.current.style.height="auto",o.current.style.height=o.current.scrollHeight+"px")},[]),h`
109
109
  <div class="cw-inline-edit">
110
110
  <textarea
111
- ref=${s}
111
+ ref=${o}
112
112
  class="cw-inline-edit-input"
113
- value=${o}
114
- onInput=${d=>{r(d.target.value),d.target.style.height="auto",d.target.style.height=d.target.scrollHeight+"px"}}
115
- onKeyDown=${d=>{d.key==="Enter"&&!d.shiftKey?(d.preventDefault(),o.trim()&&t(o.trim())):d.key==="Escape"&&n()}}
113
+ value=${s}
114
+ onInput=${u=>{a(u.target.value),u.target.style.height="auto",u.target.style.height=u.target.scrollHeight+"px"}}
115
+ onKeyDown=${u=>{u.key==="Enter"&&!u.shiftKey?(u.preventDefault(),s.trim()&&t(s.trim())):u.key==="Escape"&&n()}}
116
116
  rows="1"
117
117
  />
118
118
  <div class="cw-inline-edit-actions">
@@ -123,117 +123,117 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
123
123
  >Cancel</button>
124
124
  <button
125
125
  class="cw-inline-edit-btn cw-inline-edit-save"
126
- onClick=${()=>o.trim()&&t(o.trim())}
127
- disabled=${!o.trim()}
126
+ onClick=${()=>s.trim()&&t(s.trim())}
127
+ disabled=${!s.trim()}
128
128
  title="Save & Resend (Enter)"
129
129
  >Save & Send</button>
130
130
  </div>
131
131
  </div>
132
- `}function bt({msg:e,debugMode:t,markdownParser:n,onEdit:o,onRetry:r,isLoading:s,messageIndex:i}){let[c,d]=M(!1),[l,u]=M(!1),[a,p]=M(!1),f=e.role==="user",$=e.role==="system",k=e.type==="tool_call",g=e.type==="tool_result",v=e.type==="error",w=e.type==="sub_agent_start",A=e.type==="sub_agent_end",N=e.type==="agent_context";if($&&!t)return null;if(w||A||N)return m`
133
- <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${A?"cw-agent-returned":""}" style="position: relative;">
134
- <span class="cw-agent-context-icon">${w?"\u{1F517}":A?"\u2713":"\u{1F916}"}</span>
132
+ `}function kt({msg:e,debugMode:t,markdownParser:n,onEdit:s,onRetry:a,isLoading:o,messageIndex:l}){let[c,u]=C(!1),[i,d]=C(!1),[r,_]=C(!1),p=e.role==="user",k=e.role==="system",w=e.type==="tool_call",y=e.type==="tool_result",g=e.type==="error",$=e.type==="sub_agent_start",I=e.type==="sub_agent_end",N=e.type==="agent_context";if(k&&!t)return null;if($||I||N)return h`
133
+ <div class="cw-agent-context ${$?"cw-agent-delegating":""} ${I?"cw-agent-returned":""}" style="position: relative;">
134
+ <span class="cw-agent-context-icon">${$?"\u{1F517}":I?"\u2713":"\u{1F916}"}</span>
135
135
  <span class="cw-agent-context-text">${e.content}</span>
136
- ${e.metadata?.agentName&&m`
136
+ ${e.metadata?.agentName&&h`
137
137
  <span class="cw-agent-context-name">${e.metadata.agentName}</span>
138
138
  `}
139
- ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
139
+ ${t&&h`<${Oe} msg=${e} show=${i} onToggle=${()=>d(!i)} />`}
140
140
  </div>
141
- `;if(k||g){let C=e.metadata?.arguments||e.metadata?.result,T=_=>{if(typeof _=="string")try{return JSON.stringify(JSON.parse(_),null,2)}catch{return _}return JSON.stringify(_,null,2)};return m`
142
- <div class="cw-tool-message ${g?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
143
- <span class="cw-tool-label" onClick=${()=>C&&d(!c)}>
141
+ `;if(w||y){let S=e.metadata?.arguments||e.metadata?.result,E=v=>{if(typeof v=="string")try{return JSON.stringify(JSON.parse(v),null,2)}catch{return v}return JSON.stringify(v,null,2)};return h`
142
+ <div class="cw-tool-message ${y?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
143
+ <span class="cw-tool-label" onClick=${()=>S&&u(!c)}>
144
144
  ${e.content}
145
- ${C&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
145
+ ${S&&h`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
146
146
  </span>
147
- ${c&&C&&m`
148
- <pre class="cw-tool-details">${B(T(k?e.metadata.arguments:e.metadata.result))}</pre>
147
+ ${c&&S&&h`
148
+ <pre class="cw-tool-details">${j(E(w?e.metadata.arguments:e.metadata.result))}</pre>
149
149
  `}
150
- ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
150
+ ${t&&h`<${Oe} msg=${e} show=${i} onToggle=${()=>d(!i)} />`}
151
151
  </div>
152
- `}let J=["cw-message",f&&"cw-message-user",v&&"cw-message-error"].filter(Boolean).join(" "),O=`cw-message-row ${f?"cw-message-row-user":""}`,j=e.role==="assistant"?gt(e.content,n):B(e.content),V=e.files&&e.files.length>0,K=()=>V?m`
152
+ `}let J=["cw-message",p&&"cw-message-user",g&&"cw-message-error"].filter(Boolean).join(" "),z=`cw-message-row ${p?"cw-message-row-user":""}`,V=e.role==="assistant"?gt(e.content,n):j(e.content),K=e.files&&e.files.length>0,B=()=>K?h`
153
153
  <div class="cw-message-attachments">
154
- ${e.files.map(C=>C.type&&C.type.startsWith("image/")?m`
155
- <a class="cw-attachment-thumbnail" href=${C.url} target="_blank" title=${C.name}>
156
- <img src=${C.url} alt=${C.name} />
154
+ ${e.files.map(S=>S.type&&S.type.startsWith("image/")?h`
155
+ <a class="cw-attachment-thumbnail" href=${S.url} target="_blank" title=${S.name}>
156
+ <img src=${S.url} alt=${S.name} />
157
157
  </a>
158
- `:m`
159
- <a class="cw-attachment-file" href=${C.url} target="_blank" title=${C.name}>
160
- <span class="cw-attachment-icon">${be(C.type)}</span>
158
+ `:h`
159
+ <a class="cw-attachment-file" href=${S.url} target="_blank" title=${S.name}>
160
+ <span class="cw-attachment-icon">${ke(S.type)}</span>
161
161
  <span class="cw-attachment-info">
162
- <span class="cw-attachment-name">${C.name}</span>
163
- <span class="cw-attachment-size">${$e(C.size)}</span>
162
+ <span class="cw-attachment-name">${S.name}</span>
163
+ <span class="cw-attachment-size">${$e(S.size)}</span>
164
164
  </span>
165
165
  </a>
166
166
  `)}
167
167
  </div>
168
- `:null,b=C=>{p(!1),o&&o(i,C)},F=()=>{r&&r(i)};if(f&&a)return m`
169
- <div class=${O} style="position: relative;">
170
- ${K()}
171
- <${Qt}
168
+ `:null,q=S=>{_(!1),s&&s(l,S)},O=()=>{a&&a(l)};if(p&&r)return h`
169
+ <div class=${z} style="position: relative;">
170
+ ${B()}
171
+ <${Yt}
172
172
  initialContent=${e.content}
173
- onSave=${b}
174
- onCancel=${()=>p(!1)}
173
+ onSave=${q}
174
+ onCancel=${()=>_(!1)}
175
175
  />
176
176
  </div>
177
- `;let y=f&&o&&r,H=e.role==="assistant"&&r&&!s;return m`
178
- <div class="${O} ${y||H?"cw-message-row-with-actions":""}">
179
- ${K()}
180
- ${y&&m`
177
+ `;let f=p&&s&&a,T=e.role==="assistant"&&a&&!o;return h`
178
+ <div class="${z} ${f||T?"cw-message-row-with-actions":""}">
179
+ ${B()}
180
+ ${f&&h`
181
181
  <div class="cw-user-actions-wrapper">
182
182
  <${$t}
183
- onEdit=${()=>p(!0)}
184
- onRetry=${F}
185
- isLoading=${s}
183
+ onEdit=${()=>_(!0)}
184
+ onRetry=${O}
185
+ isLoading=${o}
186
186
  position="left"
187
187
  showEdit=${!0}
188
188
  />
189
- <div class=${J} dangerouslySetInnerHTML=${{__html:j}} />
189
+ <div class=${J} dangerouslySetInnerHTML=${{__html:V}} />
190
190
  </div>
191
191
  `}
192
- ${!y&&m`
193
- <div class=${J} dangerouslySetInnerHTML=${{__html:j}} />
192
+ ${!f&&h`
193
+ <div class=${J} dangerouslySetInnerHTML=${{__html:V}} />
194
194
  `}
195
- ${H&&m`
195
+ ${T&&h`
196
196
  <${$t}
197
- onRetry=${F}
198
- isLoading=${s}
197
+ onRetry=${O}
198
+ isLoading=${o}
199
199
  position="right"
200
200
  showEdit=${!1}
201
201
  />
202
202
  `}
203
- ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
203
+ ${t&&h`<${Oe} msg=${e} show=${i} onToggle=${()=>d(!i)} />`}
204
204
  </div>
205
- `}function kt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:o,onLoadMore:r,onEditMessage:s,onRetryMessage:i,debugMode:c,markdownParser:d,emptyStateTitle:l,emptyStateMessage:u}){let a=G(null),p=G(!0),f=k=>{let g=k.target,v=g.scrollHeight-g.scrollTop-g.clientHeight<100;if(p.current=v,g.scrollTop<50&&n&&!o){let w=g.scrollHeight;r().then(()=>{let A=g.scrollHeight;g.scrollTop=A-w+g.scrollTop})}};L(()=>{let k=a.current;k&&p.current&&requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight})},[e,t]),L(()=>{let k=a.current;k&&e.length<=2&&(p.current=!0,requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight}))},[e.length]);let $=e.length===0;return m`
206
- <div class="cw-messages" ref=${a} onScroll=${f}>
207
- ${$&&m`
205
+ `}function bt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,onEditMessage:o,onRetryMessage:l,debugMode:c,markdownParser:u,emptyStateTitle:i,emptyStateMessage:d}){let r=G(null),_=G(!0),p=w=>{let y=w.target,g=y.scrollHeight-y.scrollTop-y.clientHeight<100;if(_.current=g,y.scrollTop<50&&n&&!s){let $=y.scrollHeight;a().then(()=>{let I=y.scrollHeight;y.scrollTop=I-$+y.scrollTop})}};W(()=>{let w=r.current;w&&_.current&&requestAnimationFrame(()=>{w.scrollTop=w.scrollHeight})},[e,t]),W(()=>{let w=r.current;w&&e.length<=2&&(_.current=!0,requestAnimationFrame(()=>{w.scrollTop=w.scrollHeight}))},[e.length]);let k=e.length===0;return h`
206
+ <div class="cw-messages" ref=${r} onScroll=${p}>
207
+ ${k&&h`
208
208
  <div class="cw-empty-state">
209
209
  <svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
210
210
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
211
211
  </svg>
212
- <h3>${B(l)}</h3>
213
- <p>${B(u)}</p>
212
+ <h3>${j(i)}</h3>
213
+ <p>${j(d)}</p>
214
214
  </div>
215
215
  `}
216
216
 
217
- ${!$&&n&&m`
218
- <div class="cw-load-more" onClick=${r}>
219
- ${o?m`<span class="cw-spinner"></span><span>Loading...</span>`:m`<span>↑ Scroll up or click to load older messages</span>`}
217
+ ${!k&&n&&h`
218
+ <div class="cw-load-more" onClick=${a}>
219
+ ${s?h`<span class="cw-spinner"></span><span>Loading...</span>`:h`<span>↑ Scroll up or click to load older messages</span>`}
220
220
  </div>
221
221
  `}
222
222
 
223
- ${e.map((k,g)=>m`
224
- <${bt}
225
- key=${k.id}
226
- msg=${k}
227
- messageIndex=${g}
223
+ ${e.map((w,y)=>h`
224
+ <${kt}
225
+ key=${w.id}
226
+ msg=${w}
227
+ messageIndex=${y}
228
228
  debugMode=${c}
229
- markdownParser=${d}
230
- onEdit=${s}
231
- onRetry=${i}
229
+ markdownParser=${u}
230
+ onEdit=${o}
231
+ onRetry=${l}
232
232
  isLoading=${t}
233
233
  />
234
234
  `)}
235
235
 
236
- ${t&&m`
236
+ ${t&&h`
237
237
  <div class="cw-message-row">
238
238
  <div class="cw-typing">
239
239
  <span class="cw-spinner"></span>
@@ -242,41 +242,41 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
242
242
  </div>
243
243
  `}
244
244
  </div>
245
- `}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function Ct({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=M(""),[l,u]=M([]),[a,p]=M(!1),[f,$]=M(!1),[k]=M(()=>!!Oe),g=G(null),v=G(null),w=G(null),A=G(!1);L(()=>{!n&&g.current&&g.current.focus()},[n]),L(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=Math.min(g.current.scrollHeight,150)+"px")},[c]),L(()=>()=>{A.current=!1,w.current&&w.current.abort()},[]);let N=_=>{_.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),d(""),u([]),g.current&&(g.current.style.height="auto"),v.current&&(v.current.value=""))},J=_=>{let S=Array.from(_.target.files||[]);S.length>0&&u(I=>[...I,...S])},O=_=>{u(S=>S.filter((I,h)=>h!==_))},j=_=>{_.preventDefault(),v.current&&!n&&v.current.click()},V=_=>{_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),N(_))},K=_=>{n&&t&&(_.preventDefault(),t())},b=()=>{if(!Oe||n)return;A.current=!0;let _=new Oe;_.continuous=!0,_.interimResults=!0,_.lang=navigator.language||"en-US";let S=c,I="";_.onstart=()=>{$(!0)},_.onresult=h=>{I="";for(let D=h.resultIndex;D<h.results.length;D++){let q=h.results[D][0].transcript;h.results[D].isFinal?S+=(S?" ":"")+q:I+=q}d(S+(I?" "+I:""))},_.onerror=h=>{if(h.error==="no-speech"||h.error==="aborted"){console.log("[ChatWidget] Speech recognition:",h.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",h.error),A.current=!1,$(!1),d(S||c)},_.onend=()=>{if(A.current){console.log("[ChatWidget] Recognition paused, restarting...");try{_.start();return}catch(h){console.warn("[ChatWidget] Could not restart recognition:",h)}}$(!1),S&&d(S),w.current=null},w.current=_,_.start()},F=()=>{A.current=!1,w.current&&w.current.stop()},y=_=>{_.preventDefault(),f?F():b()},E=m`
245
+ `}var Ne=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function Ct({onSend:e,onCancel:t,isLoading:n,placeholder:s,primaryColor:a,enableVoice:o=!0,enableFiles:l=!0}){let[c,u]=C(""),[i,d]=C([]),[r,_]=C(!1),[p,k]=C(!1),[w]=C(()=>!!Ne),y=G(null),g=G(null),$=G(null),I=G(!1);W(()=>{!n&&y.current&&y.current.focus()},[n]),W(()=>{y.current&&(y.current.style.height="auto",y.current.style.height=Math.min(y.current.scrollHeight,150)+"px")},[c]),W(()=>()=>{I.current=!1,$.current&&$.current.abort()},[]);let N=v=>{v.preventDefault(),(c.trim()||i.length>0)&&!n&&(e(c,i),u(""),d([]),y.current&&(y.current.style.height="auto"),g.current&&(g.current.value=""))},J=v=>{let D=Array.from(v.target.files||[]);D.length>0&&d(F=>[...F,...D])},z=v=>{d(D=>D.filter((F,m)=>m!==v))},V=v=>{v.preventDefault(),g.current&&!n&&g.current.click()},K=v=>{v.key==="Enter"&&!v.shiftKey&&(v.preventDefault(),N(v))},B=v=>{n&&t&&(v.preventDefault(),t())},q=()=>{if(!Ne||n)return;I.current=!0;let v=new Ne;v.continuous=!0,v.interimResults=!0,v.lang=navigator.language||"en-US";let D=c,F="";v.onstart=()=>{k(!0)},v.onresult=m=>{F="";for(let b=m.resultIndex;b<m.results.length;b++){let R=m.results[b][0].transcript;m.results[b].isFinal?D+=(D?" ":"")+R:F+=R}u(D+(F?" "+F:""))},v.onerror=m=>{if(m.error==="no-speech"||m.error==="aborted"){console.log("[ChatWidget] Speech recognition:",m.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",m.error),I.current=!1,k(!1),u(D||c)},v.onend=()=>{if(I.current){console.log("[ChatWidget] Recognition paused, restarting...");try{v.start();return}catch(m){console.warn("[ChatWidget] Could not restart recognition:",m)}}k(!1),D&&u(D),$.current=null},$.current=v,v.start()},O=()=>{I.current=!1,$.current&&$.current.stop()},f=v=>{v.preventDefault(),p?O():q()},M=h`
246
246
  <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
247
247
  <rect x="2" y="2" width="10" height="10" rx="1" />
248
248
  </svg>
249
- `,H=m`
249
+ `,T=h`
250
250
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
251
251
  <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
252
252
  <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
253
253
  <line x1="12" y1="19" x2="12" y2="23"></line>
254
254
  <line x1="8" y1="23" x2="16" y2="23"></line>
255
255
  </svg>
256
- `,x=m`
256
+ `,x=h`
257
257
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
258
258
  <path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>
259
259
  </svg>
260
- `,C=s&&k,T=i;return m`
260
+ `,S=o&&w,E=l;return h`
261
261
  <form class="cw-input-form" onSubmit=${N}>
262
262
  <input
263
263
  type="file"
264
- ref=${v}
264
+ ref=${g}
265
265
  style="display: none"
266
266
  multiple
267
267
  onChange=${J}
268
268
  />
269
- ${l.length>0&&m`
269
+ ${i.length>0&&h`
270
270
  <div class="cw-file-chips">
271
- ${l.map((_,S)=>m`
272
- <div class="cw-file-chip" key=${S}>
273
- <span class="cw-file-chip-icon">${be(_.type)}</span>
274
- <span class="cw-file-chip-name" title=${_.name}>${_.name.length>20?_.name.substring(0,17)+"...":_.name}</span>
275
- <span class="cw-file-chip-size">(${$e(_.size)})</span>
271
+ ${i.map((v,D)=>h`
272
+ <div class="cw-file-chip" key=${D}>
273
+ <span class="cw-file-chip-icon">${ke(v.type)}</span>
274
+ <span class="cw-file-chip-name" title=${v.name}>${v.name.length>20?v.name.substring(0,17)+"...":v.name}</span>
275
+ <span class="cw-file-chip-size">(${$e(v.size)})</span>
276
276
  <button
277
277
  type="button"
278
278
  class="cw-file-chip-remove"
279
- onClick=${()=>O(S)}
279
+ onClick=${()=>z(D)}
280
280
  title="Remove file"
281
281
  >×</button>
282
282
  </div>
@@ -284,78 +284,78 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
284
284
  </div>
285
285
  `}
286
286
  <textarea
287
- ref=${g}
287
+ ref=${y}
288
288
  class="cw-input"
289
- placeholder=${B(o)}
289
+ placeholder=${j(s)}
290
290
  value=${c}
291
- onInput=${_=>d(_.target.value)}
292
- onKeyDown=${V}
291
+ onInput=${v=>u(v.target.value)}
292
+ onKeyDown=${K}
293
293
  disabled=${n}
294
294
  rows="1"
295
295
  />
296
- ${T&&m`
296
+ ${E&&h`
297
297
  <button
298
298
  type="button"
299
299
  class="cw-attach-btn"
300
- onClick=${j}
300
+ onClick=${V}
301
301
  disabled=${n}
302
302
  title="Attach files"
303
303
  >
304
304
  ${x}
305
305
  </button>
306
306
  `}
307
- ${C&&m`
307
+ ${S&&h`
308
308
  <button
309
309
  type="button"
310
- class=${`cw-voice-btn ${f?"cw-voice-btn-recording":""}`}
311
- onClick=${y}
310
+ class=${`cw-voice-btn ${p?"cw-voice-btn-recording":""}`}
311
+ onClick=${f}
312
312
  disabled=${n}
313
- title=${f?"Stop recording":"Voice input"}
313
+ title=${p?"Stop recording":"Voice input"}
314
314
  >
315
- ${H}
315
+ ${T}
316
316
  </button>
317
317
  `}
318
318
  <button
319
319
  type=${n?"button":"submit"}
320
- class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&a?"cw-send-btn-stop":""}`}
321
- style=${{backgroundColor:n&&a?"#dc2626":r}}
322
- onClick=${K}
323
- onMouseEnter=${()=>p(!0)}
324
- onMouseLeave=${()=>p(!1)}
320
+ class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&r?"cw-send-btn-stop":""}`}
321
+ style=${{backgroundColor:n&&r?"#dc2626":a}}
322
+ onClick=${B}
323
+ onMouseEnter=${()=>_(!0)}
324
+ onMouseLeave=${()=>_(!1)}
325
325
  title=${n?"Stop":"Send"}
326
326
  >
327
- ${n?a?E:m`<span class="cw-spinner"></span>`:"\u27A4"}
327
+ ${n?r?M:h`<span class="cw-spinner"></span>`:"\u27A4"}
328
328
  </button>
329
329
  </form>
330
- `}function St({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
330
+ `}function St({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:l}){return h`
331
331
  <div class="cw-sidebar ${e?"cw-sidebar-open":""}">
332
332
  <div class="cw-sidebar-header">
333
333
  <span>Conversations</span>
334
- <button class="cw-sidebar-close" onClick=${r}>✕</button>
334
+ <button class="cw-sidebar-close" onClick=${a}>✕</button>
335
335
  </div>
336
336
 
337
- <button class="cw-new-conversation" onClick=${s}>
337
+ <button class="cw-new-conversation" onClick=${o}>
338
338
  <span>+ New Conversation</span>
339
339
  </button>
340
340
 
341
341
  <div class="cw-conversation-list">
342
- ${n&&m`
342
+ ${n&&h`
343
343
  <div class="cw-sidebar-loading">
344
344
  <span class="cw-spinner"></span>
345
345
  </div>
346
346
  `}
347
347
 
348
- ${!n&&t.length===0&&m`
348
+ ${!n&&t.length===0&&h`
349
349
  <div class="cw-sidebar-empty">No conversations yet</div>
350
350
  `}
351
351
 
352
- ${t.map(c=>m`
352
+ ${t.map(c=>h`
353
353
  <div
354
354
  key=${c.id}
355
- class="cw-conversation-item ${c.id===o?"cw-conversation-active":""}"
356
- onClick=${()=>i(c.id)}
355
+ class="cw-conversation-item ${c.id===s?"cw-conversation-active":""}"
356
+ onClick=${()=>l(c.id)}
357
357
  >
358
- <div class="cw-conversation-title">${B(c.title||"Untitled")}</div>
358
+ <div class="cw-conversation-title">${j(c.title||"Untitled")}</div>
359
359
  <div class="cw-conversation-date">${mt(c.updatedAt||c.createdAt)}</div>
360
360
  </div>
361
361
  `)}
@@ -364,118 +364,228 @@ var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnProp
364
364
 
365
365
  <div
366
366
  class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
367
- onClick=${r}
367
+ onClick=${a}
368
368
  />
369
- `}function Mt({availableModels:e,selectedModel:t,onSelectModel:n,disabled:o}){let[r,s]=M(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",d=()=>{o||s(!r)},l=u=>{n(u),s(!1)};return m`
369
+ `}function Tt({availableModels:e,selectedModel:t,onSelectModel:n,disabled:s}){let[a,o]=C(!1);if(!e||e.length===0)return null;let c=e.find(d=>d.id===t)?.name||"Select Model",u=()=>{s||o(!a)},i=d=>{n(d),o(!1)};return h`
370
370
  <div class="cw-model-selector">
371
371
  <button
372
372
  class="cw-model-btn"
373
- onClick=${d}
374
- disabled=${o}
373
+ onClick=${u}
374
+ disabled=${s}
375
375
  title="Select Model"
376
376
  >
377
377
  <span class="cw-model-icon">🤖</span>
378
- <span class="cw-model-name">${B(c)}</span>
379
- <span class="cw-model-chevron">${r?"\u25B2":"\u25BC"}</span>
378
+ <span class="cw-model-name">${j(c)}</span>
379
+ <span class="cw-model-chevron">${a?"\u25B2":"\u25BC"}</span>
380
380
  </button>
381
381
 
382
- ${r&&m`
382
+ ${a&&h`
383
383
  <div class="cw-model-dropdown">
384
- ${e.map(u=>m`
384
+ ${e.map(d=>h`
385
385
  <button
386
- key=${u.id}
387
- class="cw-model-option ${u.id===t?"cw-model-option-selected":""}"
388
- onClick=${()=>l(u.id)}
386
+ key=${d.id}
387
+ class="cw-model-option ${d.id===t?"cw-model-option-selected":""}"
388
+ onClick=${()=>i(d.id)}
389
389
  >
390
- <span class="cw-model-option-name">${B(u.name)}</span>
391
- <span class="cw-model-option-provider">${B(u.provider)}</span>
392
- ${u.description&&m`
393
- <span class="cw-model-option-desc">${B(u.description)}</span>
390
+ <span class="cw-model-option-name">${j(d.name)}</span>
391
+ <span class="cw-model-option-provider">${j(d.provider)}</span>
392
+ ${d.description&&h`
393
+ <span class="cw-model-option-desc">${j(d.description)}</span>
394
394
  `}
395
395
  </button>
396
396
  `)}
397
397
  </div>
398
398
  `}
399
399
  </div>
400
- `}function Tt(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,p]=M(!1),[f,$]=M(!1),[k,g]=M(0),v=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let A=z(async(y,E,H)=>{v.current&&v.current.close();let x=e.apiPaths.runEvents.replace("{runId}",y),C=`${e.backendUrl}${x}`;E&&(C+=`?anonymous_token=${encodeURIComponent(E)}`);let T=new EventSource(C);v.current=T;let _="";T.addEventListener("assistant.message",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let D=h.payload.content;D&&(_+=D,r(q=>{let Q=q[q.length-1];return Q?.role==="assistant"&&Q.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...Q,content:_}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:_,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("tool.call",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(D=>[...D,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${h.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:h.payload.name,arguments:h.payload.arguments,toolCallId:h.payload.id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("tool.result",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("tool.result",h.payload);let D=h.payload.result,q=D?.error;r(Q=>[...Q,{id:"tool-result-"+Date.now(),role:"system",content:q?`\u274C ${D.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:D,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("custom",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("custom",h.payload),h.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(h.payload),h.payload?.type==="agent_context"&&r(D=>[...D,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${h.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:h.payload.agent_key,agentName:h.payload.agent_name,action:h.payload.action}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("sub_agent.start",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(D=>[...D,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${h.payload.agent_name||h.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name,invocationMode:h.payload.invocation_mode}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("sub_agent.end",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(D=>[...D,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${h.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}});let S=I=>{try{let h=JSON.parse(I.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let D=h.payload.error||"Agent run failed";d(D),r(q=>[...q,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${D}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),T.close(),v.current=null,_&&H&&H(_)};T.addEventListener("run.succeeded",S),T.addEventListener("run.failed",S),T.addEventListener("run.cancelled",S),T.addEventListener("run.timed_out",S),T.onerror=()=>{i(!1),T.close(),v.current=null}},[e]),N=z(async(y,E={},H={})=>{if(!y.trim()||s)return;let x=[],C={};typeof E=="function"?C={onAssistantMessage:E}:Array.isArray(E)?(x=E,C=H):C=E||{};let{model:T,onAssistantMessage:_,supersedeFromMessageIndex:S}=C;i(!0),d(null);let I={id:we(),role:"user",content:y.trim(),timestamp:new Date,type:"message",files:x.length>0?x.map(h=>({name:h.name,size:h.size,type:h.type})):void 0};r(h=>[...h,I]);try{let h=await t.getOrCreateSession(),D;if(x.length>0){let ee=e.apiCaseStyle!=="camel",We=le=>ee?Fe(le):le,Z=new FormData;Z.append(We("agentKey"),e.agentKey),l&&Z.append(We("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:y.trim()}])),Z.append("metadata",JSON.stringify(ee?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),T&&Z.append("model",T),x.forEach(le=>{Z.append("files",le)}),D=t.getFetchOptions({method:"POST",body:Z},h)}else{let ee=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:y.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...T&&{model:T},...S!==void 0&&{supersedeFromMessageIndex:S}});D=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},h)}let q=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,D);if(!q.ok){let ee=await q.json().catch(()=>({}));throw new Error(ee.error||`HTTP ${q.status}`)}let Q=await q.json(),ie=t.transformResponse(Q);w.current=ie.id,!l&&ie.conversationId&&u(ie.conversationId),await A(ie.id,h,_)}catch(h){d(h.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,A]),J=z(async()=>{let y=w.current;if(!(!y||!s))try{let E=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",y):`${e.apiPaths.runs}${y}/cancel/`;(await fetch(`${e.backendUrl}${E}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(v.current&&(v.current.close(),v.current=null),i(!1),w.current=null,r(x=>[...x,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(E){console.error("[ChatWidget] Failed to cancel run:",E)}},[e,t,s]),O=z(()=>{r([]),u(null),d(null),p(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=y=>{let E={id:we(),role:y.role,timestamp:y.timestamp?new Date(y.timestamp):new Date};if(y.role==="tool")return{...E,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:y.content,toolCallId:y.toolCallId}};if(y.role==="assistant"&&y.toolCalls&&y.toolCalls.length>0)return y.toolCalls.map(x=>({id:we(),role:"assistant",content:`\u{1F527} ${x.function?.name||x.name||"tool"}`,timestamp:E.timestamp,type:"tool_call",metadata:{toolName:x.function?.name||x.name,arguments:x.function?.arguments||x.arguments,toolCallId:x.id}}));let H=typeof y.content=="string"?y.content:JSON.stringify(y.content);return y.role==="assistant"&&!H?.trim()?null:{...E,content:H,type:"message"}},V=z(async y=>{i(!0),r([]),u(y);try{let E=await t.getOrCreateSession(),x=`${e.backendUrl}${e.apiPaths.conversations}${y}/?limit=10&offset=0`,C=await fetch(x,t.getFetchOptions({method:"GET"},E));if(C.ok){let T=await C.json(),_=t.transformResponse(T);_.messages&&r(_.messages.flatMap(j).filter(Boolean)),p(_.hasMore||!1),g(_.messages?.length||0)}else C.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(E){console.error("[ChatWidget] Failed to load conversation:",E)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||f||!a)){$(!0);try{let y=await t.getOrCreateSession(),H=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${k}`,x=await fetch(H,t.getFetchOptions({method:"GET"},y));if(x.ok){let C=await x.json(),T=t.transformResponse(C);if(T.messages?.length>0){let _=T.messages.flatMap(j).filter(Boolean);r(S=>[..._,...S]),g(S=>S+T.messages.length),p(T.hasMore||!1)}else p(!1)}}catch(y){console.error("[ChatWidget] Failed to load more messages:",y)}finally{$(!1)}}},[e,t,l,k,f,a]),b=z(async(y,E,H={})=>{if(s)return;let x=o[y];if(!x||x.role!=="user")return;let C=o.slice(0,y);r(C),await N(E,{...H,supersedeFromMessageIndex:y})},[o,s,N]),F=z(async(y,E={})=>{if(s)return;let H=o[y];if(!H)return;let x=y,C=H;if(H.role==="assistant"){for(let _=y-1;_>=0;_--)if(o[_].role==="user"){x=_,C=o[_];break}if(C.role!=="user")return}else if(H.role!=="user")return;let T=o.slice(0,x);r(T),await N(C.content,{...E,supersedeFromMessageIndex:x})},[o,s,N]);return L(()=>()=>{v.current&&v.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:f,sendMessage:N,cancelRun:J,clearMessages:O,loadConversation:V,loadMoreMessages:K,setConversationId:u,editMessage:b,retryMessage:F}}function xt(e,t,n){let[o,r]=M([]),[s,i]=M(null),[c,d]=M(null),[l,u]=M(!1);L(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let $=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if($.ok){let k=await $.json(),g=k.models||[];r(g),d(k.default);let v=n?.get(e.modelKey);v&&g.some(w=>w.id===v)?i(v):i(k.default)}}catch($){console.warn("[ChatWidget] Failed to load models:",$)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=z(f=>{i(f),n?.set(e.modelKey,f)},[e.modelKey,n]),p=z(()=>o.find(f=>f.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:p}}function Et(e,t,n){let o=l=>!l||typeof l!="object"||e.apiCaseStyle==="camel"?l:ve(l),r=l=>!l||typeof l!="object"||e.apiCaseStyle==="snake"?l:ye(l),s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(l=null)=>{let u=s(),a={},p=l||e.authToken||t().authToken;if(u==="token"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[f]=$?`${$} ${p}`:p}else if(u==="jwt"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[f]=$?`${$} ${p}`:p}else if(u==="anonymous"&&p){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[f]=p}if(u==="session"){let f=vt(e.csrfCookieName);f&&(a["X-CSRFToken"]=f)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),p={...l};return p.headers={...p.headers,...i(u)},a==="session"&&(p.credentials="include"),p},getOrCreateSession:async()=>{let l=s(),u=t();if(l!=="anonymous")return e.authToken||u.authToken;if(u.authToken)return u.authToken;let a=e.anonymousTokenKey||e.sessionTokenKey,p=u.storage?.get(a);if(p)return n(f=>({...f,authToken:p})),p;try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let k=await $.json();return n(g=>({...g,authToken:k.token})),u.storage?.set(a,k.token),k.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},transformRequest:o,transformResponse:r}}function It({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=M(e.embedded||e.forceOpen===!0),[i,c]=M(!1),[d,l]=M(!1),[u,a]=M(!1),[p,f]=M([]),[$,k]=M(!1),[g,v]=M(e.enableTTS),[w,A]=M(!1),[N,J]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let O=ae(()=>yt(e.containerId),[e.containerId]),[j,V]=M(e.authToken||null),K=ae(()=>Et(e,()=>({authToken:j,storage:O}),I=>{let h=I({authToken:j,storage:O});h.authToken!==j&&V(h.authToken)}),[e,j,O]),b=Tt(e,K,O),F=xt(e,K,O);L(()=>{for(let _=b.messages.length-1;_>=0;_--){let S=b.messages[_];if(S.type==="sub_agent_start"){J({key:S.metadata?.subAgentKey,name:S.metadata?.agentName});return}if(S.type==="sub_agent_end"){J(null);return}}},[b.messages]),L(()=>{let _=O.get(e.conversationIdKey);_&&b.loadConversation(_)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:b.messages,conversationId:b.conversationId,isLoading:b.isLoading,error:b.error})},[r,i,d,b.messages,b.conversationId,b.isLoading,b.error]);let y=z(async()=>{if(e.showConversationSidebar){k(!0);try{let _=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,S=await fetch(_,K.getFetchOptions({method:"GET"}));if(S.ok){let I=await S.json();f(I.results||I)}}catch(_){console.error("[ChatWidget] Failed to load conversations:",_),f([])}finally{k(!1)}}},[e,K]),E=z(()=>{let _=!u;a(_),_&&y()},[u,y]),H=z(_=>{_!==b.conversationId&&b.loadConversation(_),a(!1)},[b]),x=z(()=>{b.clearMessages(),a(!1)},[b]),C=z(_=>{b.sendMessage(_,{model:F.selectedModel,onAssistantMessage:S=>{}})},[b,g,F.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:_=>C(_),clearMessages:()=>b.clearMessages(),toggleTTS:()=>v(_=>!_),stopSpeech:()=>A(!1),setAuth:_=>{_.token!==void 0&&V(_.token)},clearAuth:()=>V(null)})},[b,o,C]),!e.embedded&&!r)return m`
400
+ `}var en={not_started:"\u25CB",in_progress:"\u25D0",complete:"\u25CF",cancelled:"\u2298"},tn={not_started:"Not Started",in_progress:"In Progress",complete:"Complete",cancelled:"Cancelled"};function nn({task:e,onUpdate:t,onRemove:n,depth:s=0}){let[a,o]=C(!1),[l,c]=C(e.name),u=A(()=>{let _={not_started:"in_progress",in_progress:"complete",complete:"not_started",cancelled:"not_started"};t(e.id,{state:_[e.state]||"not_started"})},[e,t]),i=A(()=>{l.trim()&&l!==e.name&&t(e.id,{name:l.trim()}),o(!1)},[e,l,t]),d=A(_=>{_.key==="Enter"&&i(),_.key==="Escape"&&(c(e.name),o(!1))},[i,e.name]),r=`cw-task-state-${e.state.replace("_","-")}`;return h`
401
+ <div class="cw-task-item ${r}" style=${{paddingLeft:`${s*16+8}px`}}>
402
+ <button
403
+ class="cw-task-state-btn"
404
+ onClick=${u}
405
+ title=${tn[e.state]}
406
+ >
407
+ ${en[e.state]}
408
+ </button>
409
+
410
+ ${a?h`
411
+ <input
412
+ type="text"
413
+ class="cw-task-edit-input"
414
+ value=${l}
415
+ onInput=${_=>c(_.target.value)}
416
+ onBlur=${i}
417
+ onKeyDown=${d}
418
+ autoFocus
419
+ />
420
+ `:h`
421
+ <span
422
+ class="cw-task-name"
423
+ onClick=${()=>o(!0)}
424
+ title="Click to edit"
425
+ >
426
+ ${e.name}
427
+ </span>
428
+ `}
429
+
430
+ <button
431
+ class="cw-task-remove-btn"
432
+ onClick=${()=>n(e.id)}
433
+ title="Remove task"
434
+ >
435
+ ×
436
+ </button>
437
+ </div>
438
+ `}function Mt({tasks:e,progress:t,isLoading:n,error:s,onUpdate:a,onRemove:o,onClear:l,onRefresh:c}){let u=A(r=>{let _=new Map,p=[];return r.forEach(k=>{_.set(k.id,{...k,children:[]})}),r.forEach(k=>{let w=_.get(k.id);k.parent_id&&_.has(k.parent_id)?_.get(k.parent_id).children.push(w):p.push(w)}),p},[]),i=A((r,_=0)=>h`
439
+ <${nn}
440
+ key=${r.id}
441
+ task=${r}
442
+ depth=${_}
443
+ onUpdate=${a}
444
+ onRemove=${o}
445
+ />
446
+ ${r.children?.map(p=>i(p,_+1))}
447
+ `,[a,o]),d=u(e);return n&&e.length===0?h`<div class="cw-tasks-loading">Loading tasks...</div>`:h`
448
+ <div class="cw-tasks-container">
449
+ <div class="cw-tasks-header">
450
+ <div class="cw-tasks-progress">
451
+ <span class="cw-tasks-progress-text">
452
+ ${t.completed}/${t.total} complete
453
+ </span>
454
+ <div class="cw-tasks-progress-bar">
455
+ <div
456
+ class="cw-tasks-progress-fill"
457
+ style=${{width:`${t.percent_complete}%`}}
458
+ />
459
+ </div>
460
+ </div>
461
+ <div class="cw-tasks-actions">
462
+ <button class="cw-tasks-action-btn" onClick=${c} title="Refresh">↻</button>
463
+ ${e.length>0&&h`
464
+ <button class="cw-tasks-action-btn" onClick=${l} title="Clear all">🗑</button>
465
+ `}
466
+ </div>
467
+ </div>
468
+
469
+ ${s&&h`<div class="cw-tasks-error">${s}</div>`}
470
+
471
+ <div class="cw-tasks-list">
472
+ ${d.length===0?h`
473
+ <div class="cw-tasks-empty">
474
+ <p>No tasks yet</p>
475
+ <p class="cw-tasks-empty-hint">Tasks will appear here when the agent creates them</p>
476
+ </div>
477
+ `:d.map(r=>i(r))}
478
+ </div>
479
+ </div>
480
+ `}function xt(e,t,n){let[s,a]=C([]),[o,l]=C(!1),[c,u]=C(null),[i,d]=C(()=>n?.get(e.conversationIdKey)||null),[r,_]=C(!1),[p,k]=C(!1),[w,y]=C(0),g=G(null),$=G(null);W(()=>{i&&n?.set(e.conversationIdKey,i)},[i,e.conversationIdKey,n]);let I=A(async(f,M,T)=>{g.current&&g.current.close();let x=e.apiPaths.runEvents.replace("{runId}",f),S=`${e.backendUrl}${x}`;M&&(S+=`?anonymous_token=${encodeURIComponent(M)}`);let E=new EventSource(S);g.current=E;let v="";E.addEventListener("assistant.message",F=>{try{let m=JSON.parse(F.data);e.onEvent&&e.onEvent("assistant.message",m.payload);let b=m.payload.content;b&&(v+=b,a(R=>{let X=R[R.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...R.slice(0,-1),{...X,content:v}]:[...R,{id:"assistant-stream-"+Date.now(),role:"assistant",content:v,timestamp:new Date,type:"message"}]}))}catch(m){console.error("[ChatWidget] Parse error:",m)}}),E.addEventListener("tool.call",F=>{try{let m=JSON.parse(F.data);e.onEvent&&e.onEvent("tool.call",m.payload),a(b=>[...b,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${m.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:m.payload.name,arguments:m.payload.arguments,toolCallId:m.payload.id}}])}catch(m){console.error("[ChatWidget] Parse error:",m)}}),E.addEventListener("tool.result",F=>{try{let m=JSON.parse(F.data);e.onEvent&&e.onEvent("tool.result",m.payload);let b=m.payload.result,R=b?.error;a(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:R?`\u274C ${b.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:m.payload.name,result:b,toolCallId:m.payload.tool_call_id}}])}catch(m){console.error("[ChatWidget] Parse error:",m)}}),E.addEventListener("custom",F=>{try{let m=JSON.parse(F.data);e.onEvent&&e.onEvent("custom",m.payload),m.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(m.payload),m.payload?.type==="agent_context"&&a(b=>[...b,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${m.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:m.payload.agent_key,agentName:m.payload.agent_name,action:m.payload.action}}])}catch(m){console.error("[ChatWidget] Parse error:",m)}}),E.addEventListener("sub_agent.start",F=>{try{let m=JSON.parse(F.data);e.onEvent&&e.onEvent("sub_agent.start",m.payload),a(b=>[...b,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${m.payload.agent_name||m.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:m.payload.sub_agent_key,agentName:m.payload.agent_name,invocationMode:m.payload.invocation_mode}}])}catch(m){console.error("[ChatWidget] Parse error:",m)}}),E.addEventListener("sub_agent.end",F=>{try{let m=JSON.parse(F.data);e.onEvent&&e.onEvent("sub_agent.end",m.payload),a(b=>[...b,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${m.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:m.payload.sub_agent_key,agentName:m.payload.agent_name}}])}catch(m){console.error("[ChatWidget] Parse error:",m)}});let D=F=>{try{let m=JSON.parse(F.data);if(e.onEvent&&e.onEvent(m.type,m.payload),m.type==="run.failed"){let b=m.payload.error||"Agent run failed";u(b),a(R=>[...R,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${b}`,timestamp:new Date,type:"error"}])}}catch(m){console.error("[ChatWidget] Parse error:",m)}l(!1),E.close(),g.current=null,v&&T&&T(v)};E.addEventListener("run.succeeded",D),E.addEventListener("run.failed",D),E.addEventListener("run.cancelled",D),E.addEventListener("run.timed_out",D),E.onerror=()=>{l(!1),E.close(),g.current=null}},[e]),N=A(async(f,M={},T={})=>{if(!f.trim()||o)return;let x=[],S={};typeof M=="function"?S={onAssistantMessage:M}:Array.isArray(M)?(x=M,S=T):S=M||{};let{model:E,onAssistantMessage:v,supersedeFromMessageIndex:D}=S;l(!0),u(null);let F={id:we(),role:"user",content:f.trim(),timestamp:new Date,type:"message",files:x.length>0?x.map(m=>({name:m.name,size:m.size,type:m.type})):void 0};a(m=>[...m,F]);try{let m=await t.getOrCreateSession(),b;if(x.length>0){let te=e.apiCaseStyle!=="camel",Ue=le=>te?He(le):le,Y=new FormData;Y.append(Ue("agentKey"),e.agentKey),i&&Y.append(Ue("conversationId"),i),Y.append("messages",JSON.stringify([{role:"user",content:f.trim()}])),Y.append("metadata",JSON.stringify(te?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),E&&Y.append("model",E),x.forEach(le=>{Y.append("files",le)}),b=t.getFetchOptions({method:"POST",body:Y},m)}else{let te=t.transformRequest({agentKey:e.agentKey,conversationId:i,messages:[{role:"user",content:f.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...E&&{model:E},...D!==void 0&&{supersedeFromMessageIndex:D}});b=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te)},m)}let R=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,b);if(!R.ok){let te=await R.json().catch(()=>({}));throw new Error(te.error||`HTTP ${R.status}`)}let X=await R.json(),Z=t.transformResponse(X);$.current=Z.id,!i&&Z.conversationId&&d(Z.conversationId),await I(Z.id,m,v)}catch(m){u(m.message||"Failed to send message"),l(!1)}finally{$.current=null}},[e,t,i,o,I]),J=A(async()=>{let f=$.current;if(!(!f||!o))try{let M=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",f):`${e.apiPaths.runs}${f}/cancel/`;(await fetch(`${e.backendUrl}${M}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(g.current&&(g.current.close(),g.current=null),l(!1),$.current=null,a(x=>[...x,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(M){console.error("[ChatWidget] Failed to cancel run:",M)}},[e,t,o]),z=A(()=>{a([]),d(null),u(null),_(!1),y(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),V=f=>{let M={id:we(),role:f.role,timestamp:f.timestamp?new Date(f.timestamp):new Date};if(f.role==="tool")return{...M,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:f.content,toolCallId:f.toolCallId}};if(f.role==="assistant"&&f.toolCalls&&f.toolCalls.length>0)return f.toolCalls.map(x=>({id:we(),role:"assistant",content:`\u{1F527} ${x.function?.name||x.name||"tool"}`,timestamp:M.timestamp,type:"tool_call",metadata:{toolName:x.function?.name||x.name,arguments:x.function?.arguments||x.arguments,toolCallId:x.id}}));let T=typeof f.content=="string"?f.content:JSON.stringify(f.content);return f.role==="assistant"&&!T?.trim()?null:{...M,content:T,type:"message"}},K=A(async f=>{l(!0),a([]),d(f);try{let M=await t.getOrCreateSession(),x=`${e.backendUrl}${e.apiPaths.conversations}${f}/?limit=10&offset=0`,S=await fetch(x,t.getFetchOptions({method:"GET"},M));if(S.ok){let E=await S.json(),v=t.transformResponse(E);v.messages&&a(v.messages.flatMap(V).filter(Boolean)),_(v.hasMore||!1),y(v.messages?.length||0)}else S.status===404&&(d(null),n?.set(e.conversationIdKey,null))}catch(M){console.error("[ChatWidget] Failed to load conversation:",M)}finally{l(!1)}},[e,t,n]),B=A(async()=>{if(!(!i||p||!r)){k(!0);try{let f=await t.getOrCreateSession(),T=`${e.backendUrl}${e.apiPaths.conversations}${i}/?limit=10&offset=${w}`,x=await fetch(T,t.getFetchOptions({method:"GET"},f));if(x.ok){let S=await x.json(),E=t.transformResponse(S);if(E.messages?.length>0){let v=E.messages.flatMap(V).filter(Boolean);a(D=>[...v,...D]),y(D=>D+E.messages.length),_(E.hasMore||!1)}else _(!1)}}catch(f){console.error("[ChatWidget] Failed to load more messages:",f)}finally{k(!1)}}},[e,t,i,w,p,r]),q=A(async(f,M,T={})=>{if(o)return;let x=s[f];if(!x||x.role!=="user")return;let S=s.slice(0,f);a(S),await N(M,{...T,supersedeFromMessageIndex:f})},[s,o,N]),O=A(async(f,M={})=>{if(o)return;let T=s[f];if(!T)return;let x=f,S=T;if(T.role==="assistant"){for(let v=f-1;v>=0;v--)if(s[v].role==="user"){x=v,S=s[v];break}if(S.role!=="user")return}else if(T.role!=="user")return;let E=s.slice(0,x);a(E),await N(S.content,{...M,supersedeFromMessageIndex:x})},[s,o,N]);return W(()=>()=>{g.current&&g.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:i,hasMoreMessages:r,loadingMoreMessages:p,sendMessage:N,cancelRun:J,clearMessages:z,loadConversation:K,loadMoreMessages:B,setConversationId:d,editMessage:q,retryMessage:O}}function Et(e,t,n){let[s,a]=C([]),[o,l]=C(null),[c,u]=C(null),[i,d]=C(!1);W(()=>{(async()=>{if(e.showModelSelector){d(!0);try{let k=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(k.ok){let w=await k.json(),y=w.models||[];a(y),u(w.default);let g=n?.get(e.modelKey);g&&y.some($=>$.id===g)?l(g):l(w.default)}}catch(k){console.warn("[ChatWidget] Failed to load models:",k)}finally{d(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let r=A(p=>{l(p),n?.set(e.modelKey,p)},[e.modelKey,n]),_=A(()=>s.find(p=>p.id===o)||null,[s,o]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:i,selectModel:r,getSelectedModelInfo:_}}function It(e,t){let[n,s]=C(null),[a,o]=C(!1),[l,c]=C(null),u=e.apiPaths?.tasks||"/api/agent/tasks/",i=A(async()=>{o(!0),c(null);try{let w=`${e.backendUrl}${u}`,y=await fetch(w,t.getFetchOptions({method:"GET"}));if(y.ok){let g=await y.json();s(g)}else{let g=await y.json().catch(()=>({}));c(g.error||"Failed to load tasks")}}catch(w){console.error("[useTasks] Failed to load task list:",w),c("Failed to load tasks")}finally{o(!1)}},[e.backendUrl,u,t]),d=A(async w=>{if(!n)return null;try{let y=`${e.backendUrl}${u}${n.id}/add_task/`,g=await fetch(y,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(w)}));if(g.ok){let $=await g.json();return await i(),$}else{let $=await g.json().catch(()=>({}));return c($.error||"Failed to add task"),null}}catch(y){return console.error("[useTasks] Failed to add task:",y),c("Failed to add task"),null}},[e.backendUrl,u,n,t,i]),r=A(async(w,y)=>{if(!n)return null;try{let g=`${e.backendUrl}${u}${n.id}/update_task/${w}/`,$=await fetch(g,t.getFetchOptions({method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}));if($.ok){let I=await $.json();return await i(),I}else{let I=await $.json().catch(()=>({}));return c(I.error||"Failed to update task"),null}}catch(g){return console.error("[useTasks] Failed to update task:",g),c("Failed to update task"),null}},[e.backendUrl,u,n,t,i]),_=A(async w=>{if(!n)return!1;try{let y=`${e.backendUrl}${u}${n.id}/remove_task/${w}/`,g=await fetch(y,t.getFetchOptions({method:"DELETE"}));if(g.ok)return await i(),!0;{let $=await g.json().catch(()=>({}));return c($.error||"Failed to remove task"),!1}}catch(y){return console.error("[useTasks] Failed to remove task:",y),c("Failed to remove task"),!1}},[e.backendUrl,u,n,t,i]),p=A(async()=>{if(!n)return!1;try{let w=`${e.backendUrl}${u}${n.id}/clear/`,y=await fetch(w,t.getFetchOptions({method:"POST"}));if(y.ok)return await i(),!0;{let g=await y.json().catch(()=>({}));return c(g.error||"Failed to clear tasks"),!1}}catch(w){return console.error("[useTasks] Failed to clear tasks:",w),c("Failed to clear tasks"),!1}},[e.backendUrl,u,n,t,i]),k=A(()=>c(null),[]);return{taskList:n,tasks:n?.tasks||[],progress:n?.progress||{total:0,completed:0,percent_complete:0},isLoading:a,error:l,loadTaskList:i,addTask:d,updateTask:r,removeTask:_,clearTasks:p,clearError:k}}function At(e,t,n){let s=i=>!i||typeof i!="object"||e.apiCaseStyle==="camel"?i:ve(i),a=i=>!i||typeof i!="object"||e.apiCaseStyle==="snake"?i:ye(i),o=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",l=(i=null)=>{let d=o(),r={},_=i||e.authToken||t().authToken;if(d==="token"&&_){let p=e.authHeader||"Authorization",k=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";r[p]=k?`${k} ${_}`:_}else if(d==="jwt"&&_){let p=e.authHeader||"Authorization",k=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";r[p]=k?`${k} ${_}`:_}else if(d==="anonymous"&&_){let p=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";r[p]=_}if(d==="session"){let p=vt(e.csrfCookieName);p&&(r["X-CSRFToken"]=p)}return r};return{getAuthStrategy:o,getAuthHeaders:l,getFetchOptions:(i={},d=null)=>{let r=o(),_={...i};return _.headers={..._.headers,...l(d)},r==="session"&&(_.credentials="include"),_},getOrCreateSession:async()=>{let i=o(),d=t();if(i!=="anonymous")return e.authToken||d.authToken;if(d.authToken)return d.authToken;let r=e.anonymousTokenKey||e.sessionTokenKey,_=d.storage?.get(r);if(_)return n(p=>({...p,authToken:_})),_;try{let p=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,k=await fetch(`${e.backendUrl}${p}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(k.ok){let w=await k.json();return n(y=>({...y,authToken:w.token})),d.storage?.set(r,w.token),w.token}}catch(p){console.warn("[ChatWidget] Failed to create session:",p)}return null},transformRequest:s,transformResponse:a}}function Dt({config:e,onStateChange:t,markdownParser:n,apiRef:s}){let[a,o]=C(e.embedded||e.forceOpen===!0),[l,c]=C(!1),[u,i]=C(!1),[d,r]=C(!1),[_,p]=C([]),[k,w]=C("chat"),[y,g]=C(!1),[$,I]=C(e.enableTTS),[N,J]=C(!1),[z,V]=C(null);W(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let K=ie(()=>yt(e.containerId),[e.containerId]),[B,q]=C(e.authToken||null),O=ie(()=>At(e,()=>({authToken:B,storage:K}),X=>{let Z=X({authToken:B,storage:K});Z.authToken!==B&&q(Z.authToken)}),[e,B,K]),f=xt(e,O,K),M=Et(e,O,K),T=It(e,O);W(()=>{for(let b=f.messages.length-1;b>=0;b--){let R=f.messages[b];if(R.type==="sub_agent_start"){V({key:R.metadata?.subAgentKey,name:R.metadata?.agentName});return}if(R.type==="sub_agent_end"){V(null);return}}},[f.messages]),W(()=>{let b=K.get(e.conversationIdKey);b&&f.loadConversation(b)},[]),W(()=>{t&&t({isOpen:a,isExpanded:l,debugMode:u,messages:f.messages,conversationId:f.conversationId,isLoading:f.isLoading,error:f.error})},[a,l,u,f.messages,f.conversationId,f.isLoading,f.error]);let x=A(async()=>{if(e.showConversationSidebar){g(!0);try{let b=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,R=await fetch(b,O.getFetchOptions({method:"GET"}));if(R.ok){let X=await R.json();p(X.results||X)}}catch(b){console.error("[ChatWidget] Failed to load conversations:",b),p([])}finally{g(!1)}}},[e,O]),S=A(()=>{let b=!d;r(b),b&&x()},[d,x]),E=A(b=>{b!==f.conversationId&&f.loadConversation(b),r(!1)},[f]),v=A(()=>{f.clearMessages(),r(!1)},[f]),D=A(b=>{f.sendMessage(b,{model:M.selectedModel,onAssistantMessage:R=>{}})},[f,$,M.selectedModel]),F=A(b=>{w(b),b==="tasks"&&T.loadTaskList()},[T]);if(W(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:b=>D(b),clearMessages:()=>f.clearMessages(),toggleTTS:()=>I(b=>!b),stopSpeech:()=>J(!1),setAuth:b=>{b.token!==void 0&&q(b.token)},clearAuth:()=>q(null)})},[f,s,D]),!e.embedded&&!a)return h`
401
481
  <button
402
482
  class="cw-fab"
403
483
  style=${{backgroundColor:e.primaryColor}}
404
- onClick=${()=>s(!0)}
484
+ onClick=${()=>o(!0)}
405
485
  >
406
486
  <svg class="cw-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
407
487
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
408
488
  </svg>
409
489
  </button>
410
- `;let T=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
411
- <div class=${T} style=${{"--cw-primary":e.primaryColor}}>
412
- ${e.showConversationSidebar&&m`
490
+ `;let m=["cw-widget",l&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return h`
491
+ <div class=${m} style=${{"--cw-primary":e.primaryColor}}>
492
+ ${e.showConversationSidebar&&h`
413
493
  <${St}
414
- isOpen=${u}
415
- conversations=${p}
416
- conversationsLoading=${$}
417
- currentConversationId=${b.conversationId}
418
- onClose=${()=>a(!1)}
419
- onNewConversation=${x}
420
- onSwitchConversation=${H}
494
+ isOpen=${d}
495
+ conversations=${_}
496
+ conversationsLoading=${y}
497
+ currentConversationId=${f.conversationId}
498
+ onClose=${()=>r(!1)}
499
+ onNewConversation=${v}
500
+ onSwitchConversation=${E}
421
501
  />
422
502
  `}
423
503
 
424
504
  <${wt}
425
505
  config=${e}
426
- debugMode=${d}
427
- isExpanded=${i}
428
- isSpeaking=${w}
429
- messagesCount=${b.messages.length}
430
- isLoading=${b.isLoading}
431
- currentAgent=${N}
432
- onClose=${()=>s(!1)}
433
- onToggleExpand=${()=>c(!i)}
434
- onToggleDebug=${()=>l(!d)}
435
- onToggleTTS=${()=>v(!g)}
436
- onClear=${b.clearMessages}
437
- onToggleSidebar=${E}
506
+ debugMode=${u}
507
+ isExpanded=${l}
508
+ isSpeaking=${N}
509
+ messagesCount=${f.messages.length}
510
+ isLoading=${f.isLoading}
511
+ currentAgent=${z}
512
+ onClose=${()=>o(!1)}
513
+ onToggleExpand=${()=>c(!l)}
514
+ onToggleDebug=${()=>i(!u)}
515
+ onToggleTTS=${()=>I(!$)}
516
+ onClear=${f.clearMessages}
517
+ onToggleSidebar=${S}
438
518
  />
439
519
 
440
- ${d&&m`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
520
+ ${e.showTasksTab!==!1&&h`
521
+ <div class="cw-tabs">
522
+ <button
523
+ class=${`cw-tab ${k==="chat"?"cw-tab-active":""}`}
524
+ onClick=${()=>F("chat")}
525
+ >
526
+ Chat
527
+ </button>
528
+ <button
529
+ class=${`cw-tab ${k==="tasks"?"cw-tab-active":""}`}
530
+ onClick=${()=>F("tasks")}
531
+ >
532
+ Tasks ${T.progress.total>0?h`<span class="cw-tab-badge">${T.progress.completed}/${T.progress.total}</span>`:""}
533
+ </button>
534
+ </div>
535
+ `}
536
+
537
+ ${u&&h`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
441
538
 
442
- <${kt}
443
- messages=${b.messages}
444
- isLoading=${b.isLoading}
445
- hasMoreMessages=${b.hasMoreMessages}
446
- loadingMoreMessages=${b.loadingMoreMessages}
447
- onLoadMore=${b.loadMoreMessages}
448
- onEditMessage=${b.editMessage}
449
- onRetryMessage=${b.retryMessage}
450
- debugMode=${d}
451
- markdownParser=${n}
452
- emptyStateTitle=${e.emptyStateTitle}
453
- emptyStateMessage=${e.emptyStateMessage}
454
- />
539
+ ${k==="chat"?h`
540
+ <${bt}
541
+ messages=${f.messages}
542
+ isLoading=${f.isLoading}
543
+ hasMoreMessages=${f.hasMoreMessages}
544
+ loadingMoreMessages=${f.loadingMoreMessages}
545
+ onLoadMore=${f.loadMoreMessages}
546
+ onEditMessage=${f.editMessage}
547
+ onRetryMessage=${f.retryMessage}
548
+ debugMode=${u}
549
+ markdownParser=${n}
550
+ emptyStateTitle=${e.emptyStateTitle}
551
+ emptyStateMessage=${e.emptyStateMessage}
552
+ />
455
553
 
456
- ${b.error&&m`<div class="cw-error-bar">${b.error}</div>`}
554
+ ${f.error&&h`<div class="cw-error-bar">${f.error}</div>`}
457
555
 
458
- ${e.showModelSelector&&F.availableModels.length>0&&m`
556
+ ${e.showModelSelector&&M.availableModels.length>0&&h`
557
+ <${Tt}
558
+ availableModels=${M.availableModels}
559
+ selectedModel=${M.selectedModel}
560
+ onSelectModel=${M.selectModel}
561
+ disabled=${f.isLoading}
562
+ />
563
+ `}
564
+
565
+ <${Ct}
566
+ onSend=${D}
567
+ onCancel=${f.cancelRun}
568
+ isLoading=${f.isLoading}
569
+ placeholder=${e.placeholder}
570
+ primaryColor=${e.primaryColor}
571
+ enableVoice=${e.enableVoice}
572
+ />
573
+ `:h`
459
574
  <${Mt}
460
- availableModels=${F.availableModels}
461
- selectedModel=${F.selectedModel}
462
- onSelectModel=${F.selectModel}
463
- disabled=${b.isLoading}
575
+ tasks=${T.tasks}
576
+ progress=${T.progress}
577
+ isLoading=${T.isLoading}
578
+ error=${T.error}
579
+ onUpdate=${T.updateTask}
580
+ onRemove=${T.removeTask}
581
+ onClear=${T.clearTasks}
582
+ onRefresh=${T.loadTaskList}
464
583
  />
465
584
  `}
466
-
467
- <${Ct}
468
- onSend=${C}
469
- onCancel=${b.cancelRun}
470
- isLoading=${b.isLoading}
471
- placeholder=${e.placeholder}
472
- primaryColor=${e.primaryColor}
473
- enableVoice=${e.enableVoice}
474
- />
475
585
  </div>
476
- `}var At={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",position:"bottom-right",defaultJourneyType:"general",enableDebugMode:!0,enableAutoRun:!0,journeyTypes:{},customerPrompts:{},placeholder:"Type your message...",emptyStateTitle:"Start a Conversation",emptyStateMessage:"Send a message to get started.",authStrategy:null,authToken:null,authHeader:null,authTokenPrefix:null,anonymousSessionEndpoint:null,anonymousTokenKey:"chat_widget_anonymous_token",onAuthError:null,anonymousTokenHeader:"X-Anonymous-Token",conversationIdKey:"chat_widget_conversation_id",sessionTokenKey:"chat_widget_session_token",apiPaths:{anonymousSession:"/api/accounts/anonymous-session/",conversations:"/api/agent-runtime/conversations/",runs:"/api/agent-runtime/runs/",runEvents:"/api/agent-runtime/runs/{runId}/events/",simulateCustomer:"/api/agent-runtime/simulate-customer/",ttsVoices:"/api/tts/voices/",ttsSetVoice:"/api/tts/set-voice/",models:"/api/agent-runtime/models/"},apiCaseStyle:"auto",showConversationSidebar:!0,showClearButton:!0,showDebugButton:!0,showTTSButton:!0,showVoiceSettings:!0,showExpandButton:!0,showModelSelector:!1,enableVoice:!0,modelKey:"chat_widget_selected_model",autoRunDelay:1e3,autoRunMode:"automatic",enableTTS:!1,ttsProxyUrl:null,elevenLabsApiKey:null,ttsVoices:{assistant:null,user:null},ttsModel:"eleven_turbo_v2_5",ttsSettings:{stability:.5,similarity_boost:.75,style:0,use_speaker_boost:!0},availableVoices:[],onEvent:null,containerId:null,embedded:!1,metadata:{}};function Rt(e){let t={...At.apiPaths,...e.apiPaths||{}};return{...At,...e,apiPaths:t}}var ke=new Map,Zt=0,R=null,Ue=class{constructor(t={}){this.instanceId=`cw-${++Zt}`,this.config=Rt(t),this.container=null,this._state={},this._apiRef={current:null},ke.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&me(m`<${It}
586
+ `}var Rt={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",position:"bottom-right",defaultJourneyType:"general",enableDebugMode:!0,enableAutoRun:!0,journeyTypes:{},customerPrompts:{},placeholder:"Type your message...",emptyStateTitle:"Start a Conversation",emptyStateMessage:"Send a message to get started.",authStrategy:null,authToken:null,authHeader:null,authTokenPrefix:null,anonymousSessionEndpoint:null,anonymousTokenKey:"chat_widget_anonymous_token",onAuthError:null,anonymousTokenHeader:"X-Anonymous-Token",conversationIdKey:"chat_widget_conversation_id",sessionTokenKey:"chat_widget_session_token",apiPaths:{anonymousSession:"/api/accounts/anonymous-session/",conversations:"/api/agent-runtime/conversations/",runs:"/api/agent-runtime/runs/",runEvents:"/api/agent-runtime/runs/{runId}/events/",simulateCustomer:"/api/agent-runtime/simulate-customer/",ttsVoices:"/api/tts/voices/",ttsSetVoice:"/api/tts/set-voice/",models:"/api/agent-runtime/models/"},apiCaseStyle:"auto",showConversationSidebar:!0,showClearButton:!0,showDebugButton:!0,showTTSButton:!0,showVoiceSettings:!0,showExpandButton:!0,showModelSelector:!1,enableVoice:!0,modelKey:"chat_widget_selected_model",autoRunDelay:1e3,autoRunMode:"automatic",enableTTS:!1,ttsProxyUrl:null,elevenLabsApiKey:null,ttsVoices:{assistant:null,user:null},ttsModel:"eleven_turbo_v2_5",ttsSettings:{stability:.5,similarity_boost:.75,style:0,use_speaker_boost:!0},availableVoices:[],onEvent:null,containerId:null,embedded:!1,metadata:{}};function Pt(e){let t={...Rt.apiPaths,...e.apiPaths||{}};return{...Rt,...e,apiPaths:t}}var be=new Map,sn=0,P=null,Le=class{constructor(t={}){this.instanceId=`cw-${++sn}`,this.config=Pt(t),this.container=null,this._state={},this._apiRef={current:null},be.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&me(h`<${Dt}
477
587
  config=${{...this.config,...t}}
478
588
  onStateChange=${this._handleStateChange}
479
589
  markdownParser=${Ce._enhancedMarkdownParser}
480
590
  apiRef=${this._apiRef}
481
- />`,this.container)}destroy(){this.container&&(me(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),ke.delete(this.instanceId),console.log(`[ChatWidget] Instance ${this.instanceId} destroyed`)}open(){this._apiRef.current?this._apiRef.current.open():this._render({forceOpen:!0})}close(){this._apiRef.current?this._apiRef.current.close():this._render({forceOpen:!1})}send(t){this._apiRef.current&&this._apiRef.current.send(t)}clearMessages(){this._apiRef.current&&this._apiRef.current.clearMessages()}toggleTTS(){this._apiRef.current&&this._apiRef.current.toggleTTS()}stopSpeech(){this._apiRef.current&&this._apiRef.current.stopSpeech()}setAuth(t){this._apiRef.current&&this._apiRef.current.setAuth(t)}clearAuth(){this._apiRef.current&&this._apiRef.current.clearAuth()}getState(){return{...this._state}}getConfig(){return{...this.config}}updateMetadata(t){this.config.metadata={...this.config.metadata,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} metadata updated:`,t)}updateConfig(t){this.config={...this.config,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} config updated`)}};function Dt(e={}){return new Ue(e).init()}function Yt(e={}){return R&&R.destroy(),R=Dt(e),R}function en(){R&&(R.destroy(),R=null)}function tn(){R&&R.open()}function nn(){R&&R.close()}function on(e){R&&R.send(e)}function sn(){R&&R.clearMessages()}function rn(){R&&R.toggleTTS()}function an(){R&&R.stopSpeech()}function ln(e){R&&R.setAuth(e)}function cn(){R&&R.clearAuth()}function un(){return R?R.getState():null}function dn(){return R?R.getConfig():null}var Ce={createInstance:Dt,getInstance:e=>ke.get(e),getAllInstances:()=>Array.from(ke.values()),init:Yt,destroy:en,open:tn,close:nn,send:on,clearMessages:sn,toggleTTS:rn,stopSpeech:an,setAuth:ln,clearAuth:cn,getState:un,getConfig:dn,_enhancedMarkdownParser:null};var _n=Ce;typeof window<"u"&&(window.ChatWidget=Ce);return Ut(pn);})();
591
+ />`,this.container)}destroy(){this.container&&(me(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),be.delete(this.instanceId),console.log(`[ChatWidget] Instance ${this.instanceId} destroyed`)}open(){this._apiRef.current?this._apiRef.current.open():this._render({forceOpen:!0})}close(){this._apiRef.current?this._apiRef.current.close():this._render({forceOpen:!1})}send(t){this._apiRef.current&&this._apiRef.current.send(t)}clearMessages(){this._apiRef.current&&this._apiRef.current.clearMessages()}toggleTTS(){this._apiRef.current&&this._apiRef.current.toggleTTS()}stopSpeech(){this._apiRef.current&&this._apiRef.current.stopSpeech()}setAuth(t){this._apiRef.current&&this._apiRef.current.setAuth(t)}clearAuth(){this._apiRef.current&&this._apiRef.current.clearAuth()}getState(){return{...this._state}}getConfig(){return{...this.config}}updateMetadata(t){this.config.metadata={...this.config.metadata,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} metadata updated:`,t)}updateConfig(t){this.config={...this.config,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} config updated`)}};function Ft(e={}){return new Le(e).init()}function on(e={}){return P&&P.destroy(),P=Ft(e),P}function an(){P&&(P.destroy(),P=null)}function rn(){P&&P.open()}function ln(){P&&P.close()}function cn(e){P&&P.send(e)}function un(){P&&P.clearMessages()}function dn(){P&&P.toggleTTS()}function _n(){P&&P.stopSpeech()}function pn(e){P&&P.setAuth(e)}function fn(){P&&P.clearAuth()}function hn(){return P?P.getState():null}function mn(){return P?P.getConfig():null}var Ce={createInstance:Ft,getInstance:e=>be.get(e),getAllInstances:()=>Array.from(be.values()),init:on,destroy:an,open:rn,close:ln,send:cn,clearMessages:un,toggleTTS:dn,stopSpeech:_n,setAuth:pn,clearAuth:fn,getState:hn,getConfig:mn,_enhancedMarkdownParser:null};var gn=Ce;typeof window<"u"&&(window.ChatWidget=Ce);return Wt(yn);})();