django-agent-studio 0.1.9__py3-none-any.whl → 0.2.1__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 he=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var bt=Object.getOwnPropertyNames;var kt=Object.prototype.hasOwnProperty;var Ct=(e,t)=>{for(var n in t)he(e,n,{get:t[n],enumerable:!0})},St=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of bt(t))!kt.call(e,r)&&r!==n&&he(e,r,{get:()=>t[r],enumerable:!(s=$t(t,r))||s.enumerable});return e};var Tt=e=>St(he({},"__esModule",{value:!0}),e);var Qt={};Ct(Qt,{ChatWidget:()=>fe,default:()=>Xt});var ae,E,He,Mt,G,Ee,Ae,Re,Ne,ve,me,ge,xt,Z={},Oe=[],Et=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ie=Array.isArray;function z(e,t){for(var n in t)e[n]=t[n];return e}function we(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function le(e,t,n){var s,r,o,i={};for(o in t)o=="key"?s=t[o]:o=="ref"?r=t[o]:i[o]=t[o];if(arguments.length>2&&(i.children=arguments.length>3?ae.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)i[o]===void 0&&(i[o]=e.defaultProps[o]);return se(e,i,s,r,null)}function se(e,t,n,s,r){var o={type:e,props:t,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++He,__i:-1,__u:0};return r==null&&E.vnode!=null&&E.vnode(o),o}function ce(e){return e.children}function Y(e,t){this.props=e,this.context=t}function X(e,t){if(t==null)return e.__?X(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"?X(e):null}function Ue(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 Ue(e)}}function Ie(e){(!e.__d&&(e.__d=!0)&&G.push(e)&&!re.__r++||Ee!=E.debounceRendering)&&((Ee=E.debounceRendering)||Ae)(re)}function re(){for(var e,t,n,s,r,o,i,c=1;G.length;)G.length>c&&G.sort(Re),e=G.shift(),c=G.length,e.__d&&(n=void 0,s=void 0,r=(s=(t=e).__v).__e,o=[],i=[],t.__P&&((n=z({},s)).__v=s.__v+1,E.vnode&&E.vnode(n),$e(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[r]:null,o,r??X(s),!!(32&s.__u),i),n.__v=s.__v,n.__.__k[n.__i]=n,We(o,n,i),s.__e=s.__=null,n.__e!=r&&Ue(n)));re.__r=0}function Fe(e,t,n,s,r,o,i,c,_,l,u){var a,f,d,y,C,k,g,w=s&&s.__k||Oe,R=t.length;for(_=It(n,t,w,_,R),a=0;a<R;a++)(d=n.__k[a])!=null&&(f=d.__i==-1?Z:w[d.__i]||Z,d.__i=a,k=$e(e,d,f,r,o,i,c,_,l,u),y=d.__e,d.ref&&f.ref!=d.ref&&(f.ref&&be(f.ref,null,d),u.push(d.ref,d.__c||y,d)),C==null&&y!=null&&(C=y),(g=!!(4&d.__u))||f.__k===d.__k?_=Le(d,_,e,g):typeof d.type=="function"&&k!==void 0?_=k:y&&(_=y.nextSibling),d.__u&=-7);return n.__e=C,_}function It(e,t,n,s,r){var o,i,c,_,l,u=n.length,a=u,f=0;for(e.__k=new Array(r),o=0;o<r;o++)(i=t[o])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[o]=se(null,i,null,null,null):ie(i)?i=e.__k[o]=se(ce,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[o]=se(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[o]=i,_=o+f,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Pt(i,n,_,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?f--:r<u&&f++),typeof i.type!="function"&&(i.__u|=4)):l!=_&&(l==_-1?f--:l==_+1?f++:(l>_?f--:f++,i.__u|=4))):e.__k[o]=null;if(a)for(o=0;o<u;o++)(c=n[o])!=null&&!(2&c.__u)&&(c.__e==s&&(s=X(c)),Be(c,c));return s}function Le(e,t,n,s){var r,o;if(typeof e.type=="function"){for(r=e.__k,o=0;r&&o<r.length;o++)r[o]&&(r[o].__=e,t=Le(r[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=X(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Pt(e,t,n,s){var r,o,i,c=e.key,_=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&_==l.type)return n;if(s>(u?1:0)){for(r=n-1,o=n+1;r>=0||o<t.length;)if((l=t[i=r>=0?r--:o++])!=null&&!(2&l.__u)&&c==l.key&&_==l.type)return i}return-1}function Pe(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Et.test(t)?n:n+"px"}function oe(e,t,n,s,r){var o,i;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||Pe(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||Pe(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ne,"$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+o]=n,n?s?n.u=s.u:(n.u=ve,e.addEventListener(t,o?ge:me,o)):e.removeEventListener(t,o?ge:me,o);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 De(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=ve++;else if(t.t<n.u)return;return n(E.event?E.event(t):t)}}}function $e(e,t,n,s,r,o,i,c,_,l){var u,a,f,d,y,C,k,g,w,R,H,j,N,K,B,b,p,$=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(_=!!(32&n.__u),o=[c=t.__e=n.__e]),(u=E.__b)&&u(t);e:if(typeof $=="function")try{if(g=t.props,w="prototype"in $&&$.prototype.render,R=(u=$.contextType)&&s[u.__c],H=u?R?R.props.value:u.__:s,n.__c?k=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new $(g,H):(t.__c=a=new Y(g,H),a.constructor=$,a.render=Ht),R&&R.sub(a),a.state||(a.state={}),a.__n=s,f=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&$.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=z({},a.__s)),z(a.__s,$.getDerivedStateFromProps(g,a.__s))),d=a.props,y=a.state,a.__v=t,f)w&&$.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&$.getDerivedStateFromProps==null&&g!==d&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(g,H),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(g,a.__s,H)===!1){for(t.__v!=n.__v&&(a.props=g,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(S){S&&(S.__=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(g,a.__s,H),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(d,y,C)})}if(a.context=H,a.props=g,a.__P=e,a.__e=!1,N=E.__r,K=0,w){for(a.state=a.__s,a.__d=!1,N&&N(t),u=a.render(a.props,a.state,a.context),B=0;B<a._sb.length;B++)a.__h.push(a._sb[B]);a._sb=[]}else do a.__d=!1,N&&N(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++K<25);a.state=a.__s,a.getChildContext!=null&&(s=z(z({},s),a.getChildContext())),w&&!f&&a.getSnapshotBeforeUpdate!=null&&(C=a.getSnapshotBeforeUpdate(d,y)),b=u,u!=null&&u.type===ce&&u.key==null&&(b=Ke(u.props.children)),c=Fe(e,ie(b)?b:[b],t,n,s,r,o,i,c,_,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),k&&(a.__E=a.__=null)}catch(S){if(t.__v=null,_||o!=null)if(S.then){for(t.__u|=_?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,t.__e=c}else{for(p=o.length;p--;)we(o[p]);ye(t)}else t.__e=n.__e,t.__k=n.__k,S.then||ye(t);E.__e(S,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Dt(n.__e,t,n,s,r,o,i,_,l);return(u=E.diffed)&&u(t),128&t.__u?void 0:c}function ye(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(ye)}function We(e,t,n){for(var s=0;s<n.length;s++)be(n[s],n[++s],n[++s]);E.__c&&E.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(o){o.call(r)})}catch(o){E.__e(o,r.__v)}})}function Ke(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:ie(e)?e.map(Ke):z({},e)}function Dt(e,t,n,s,r,o,i,c,_){var l,u,a,f,d,y,C,k=n.props||Z,g=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"),o!=null){for(l=0;l<o.length;l++)if((d=o[l])&&"setAttribute"in d==!!w&&(w?d.localName==w:d.nodeType==3)){e=d,o[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(g);e=document.createElementNS(r,w,g.is&&g),c&&(E.__m&&E.__m(t,o),c=!1),o=null}if(w==null)k===g||c&&e.data==g||(e.data=g);else{if(o=o&&ae.call(e.childNodes),!c&&o!=null)for(k={},l=0;l<e.attributes.length;l++)k[(d=e.attributes[l]).name]=d.value;for(l in k)if(d=k[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=d;else if(!(l in g)){if(l=="value"&&"defaultValue"in g||l=="checked"&&"defaultChecked"in g)continue;oe(e,l,null,d,r)}}for(l in g)d=g[l],l=="children"?f=d:l=="dangerouslySetInnerHTML"?u=d:l=="value"?y=d:l=="checked"?C=d:c&&typeof d!="function"||k[l]===d||oe(e,l,d,k[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=""),Fe(t.type=="template"?e.content:e,ie(f)?f:[f],t,n,s,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,o,i,o?o[0]:n.__k&&X(n,0),c,_),o!=null)for(l=o.length;l--;)we(o[l]);c||(l="value",w=="progress"&&y==null?e.removeAttribute("value"):y!=null&&(y!==e[l]||w=="progress"&&!y||w=="option"&&y!=k[l])&&oe(e,l,y,k[l],r),l="checked",C!=null&&C!=e[l]&&oe(e,l,C,k[l],r))}return e}function be(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(r){E.__e(r,n)}}function Be(e,t,n){var s,r;if(E.unmount&&E.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||be(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){E.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(r=0;r<s.length;r++)s[r]&&Be(s[r],t,n||typeof e.type!="function");n||we(e.__e),e.__c=e.__=e.__e=void 0}function Ht(e,t,n){return this.constructor(e,n)}function ue(e,t,n){var s,r,o,i;t==document&&(t=document.documentElement),E.__&&E.__(e,t),r=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],i=[],$e(t,e=(!s&&n||t).__k=le(ce,null,[e]),r||Z,Z,t.namespaceURI,!s&&n?[n]:r?null:t.firstChild?ae.call(t.childNodes):null,o,!s&&n?n:r?r.__e:t.firstChild,s,i),We(o,e,i)}ae=Oe.slice,E={__e:function(e,t,n,s){for(var r,o,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((o=r.constructor)&&o.getDerivedStateFromError!=null&&(r.setState(o.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,s||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},He=0,Mt=function(e){return e!=null&&e.constructor===void 0},Y.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=z({},this.state),typeof e=="function"&&(e=e(z({},n),this.props)),e&&z(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ie(this))},Y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ie(this))},Y.prototype.render=ce,G=[],Ae=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Re=function(e,t){return e.__v.__b-t.__v.__b},re.__r=0,Ne=/(PointerCapture)$|Capture$/i,ve=0,me=De(!1),ge=De(!0),xt=0;var Ve=function(e,t,n,s){var r;t[0]=0;for(var o=1;o<t.length;o++){var i=t[o++],c=t[o]?(t[0]|=i?1:2,n[t[o++]]):t[++o];i===3?s[0]=c:i===4?s[1]=Object.assign(s[1]||{},c):i===5?(s[1]=s[1]||{})[t[++o]]=c:i===6?s[1][t[++o]]+=c+"":i?(r=e.apply(c,Ve(e,c,n,["",null])),s.push(r),c[0]?t[0]|=2:(t[o-2]=0,t[o]=r)):s.push(c)}return s},je=new Map;function Je(e){var t=je.get(this);return t||(t=new Map,je.set(this,t)),(t=Ve(this,t.get(e)||(t.set(e,t=function(n){for(var s,r,o=1,i="",c="",_=[0],l=function(f){o===1&&(f||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?_.push(0,f,i):o===3&&(f||i)?(_.push(3,f,i),o=2):o===2&&i==="..."&&f?_.push(4,f,0):o===2&&i&&!f?_.push(5,0,!0,i):o>=5&&((i||!f&&o===5)&&(_.push(o,0,i,r),o=6),f&&(_.push(o,f,0,r),o=6)),i=""},u=0;u<n.length;u++){u&&(o===1&&l(),l(u));for(var a=0;a<n[u].length;a++)s=n[u][a],o===1?s==="<"?(l(),_=[_],o=3):i+=s:o===4?i==="--"&&s===">"?(o=1,i=""):i=s+i[0]:c?s===c?c="":i+=s:s==='"'||s==="'"?c=s:s===">"?(l(),o=1):o&&(s==="="?(o=5,r=i,i=""):s==="/"&&(o<5||n[u][a+1]===">")?(l(),o===3&&(_=_[0]),o=_,(_=_[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
2
- `||s==="\r"?(l(),o=2):i+=s),o===3&&i==="!--"&&(o=4,_=_[0])}return l(),_}(e)),t),arguments,[])).length>1?t:t[0]}var m=Je.bind(le);var ee,D,ke,qe,te=0,tt=[],A=E,ze=A.__b,Ge=A.__r,Xe=A.diffed,Qe=A.__c,Ye=A.unmount,Ze=A.__;function Se(e,t){A.__h&&A.__h(D,e,te||t),te=0;var n=D.__H||(D.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function T(e){return te=1,At(ot,e)}function At(e,t,n){var s=Se(ee++,2);if(s.t=e,!s.__c&&(s.__=[n?n(t):ot(void 0,t),function(c){var _=s.__N?s.__N[0]:s.__[0],l=s.t(_,c);_!==l&&(s.__N=[l,s.__[1]],s.__c.setState({}))}],s.__c=D,!D.__f)){var r=function(c,_,l){if(!s.__c.__H)return!0;var u=s.__c.__H.__.filter(function(f){return!!f.__c});if(u.every(function(f){return!f.__N}))return!o||o.call(this,c,_,l);var a=s.__c.props!==c;return u.forEach(function(f){if(f.__N){var d=f.__[0];f.__=f.__N,f.__N=void 0,d!==f.__[0]&&(a=!0)}}),o&&o.call(this,c,_,l)||a};D.__f=!0;var o=D.shouldComponentUpdate,i=D.componentWillUpdate;D.componentWillUpdate=function(c,_,l){if(this.__e){var u=o;o=void 0,r(c,_,l),o=u}i&&i.call(this,c,_,l)},D.shouldComponentUpdate=r}return s.__N||s.__}function F(e,t){var n=Se(ee++,3);!A.__s&&nt(n.__H,t)&&(n.__=e,n.u=t,D.__H.__h.push(n))}function q(e){return te=5,ne(function(){return{current:e}},[])}function ne(e,t){var n=Se(ee++,7);return nt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function W(e,t){return te=8,ne(function(){return e},t)}function Rt(){for(var e;e=tt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(_e),e.__H.__h.forEach(Ce),e.__H.__h=[]}catch(t){e.__H.__h=[],A.__e(t,e.__v)}}A.__b=function(e){D=null,ze&&ze(e)},A.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ze&&Ze(e,t)},A.__r=function(e){Ge&&Ge(e),ee=0;var t=(D=e.__c).__H;t&&(ke===D?(t.__h=[],D.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(_e),t.__h.forEach(Ce),t.__h=[],ee=0)),ke=D},A.diffed=function(e){Xe&&Xe(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(tt.push(t)!==1&&qe===A.requestAnimationFrame||((qe=A.requestAnimationFrame)||Nt)(Rt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),ke=D=null},A.__c=function(e,t){t.some(function(n){try{n.__h.forEach(_e),n.__h=n.__h.filter(function(s){return!s.__||Ce(s)})}catch(s){t.some(function(r){r.__h&&(r.__h=[])}),t=[],A.__e(s,n.__v)}}),Qe&&Qe(e,t)},A.unmount=function(e){Ye&&Ye(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(s){try{_e(s)}catch(r){t=r}}),n.__H=void 0,t&&A.__e(t,n.__v))};var et=typeof requestAnimationFrame=="function";function Nt(e){var t,n=function(){clearTimeout(s),et&&cancelAnimationFrame(t),setTimeout(e)},s=setTimeout(n,35);et&&(t=requestAnimationFrame(n))}function _e(e){var t=D,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),D=t}function Ce(e){var t=D;e.__c=e.__(),D=t}function nt(e,t){return!e||e.length!==t.length||t.some(function(n,s){return n!==e[s]})}function ot(e,t){return typeof t=="function"?t(e):t}function de(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function U(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function st(e){if(!e)return"";try{let t=new Date(e),s=new Date-t,r=Math.floor(s/6e4),o=Math.floor(s/36e5),i=Math.floor(s/864e5);return r<1?"Just now":r<60?`${r}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function rt(e,t=null){if(t)return t(e);let n=U(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 at(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 r=t(n);s===null?localStorage.removeItem(r):localStorage.setItem(r,s)}catch{}}}}function it(e="csrftoken"){let t=document.cookie.split(";");for(let s of t){let[r,o]=s.trim().split("=");if(r===e)return decodeURIComponent(o)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function lt({config:e,debugMode:t,isExpanded:n,isSpeaking:s,messagesCount:r,isLoading:o,currentAgent:i,onClose:c,onToggleExpand:_,onToggleDebug:l,onToggleTTS:u,onClear:a,onToggleSidebar:f}){let{title:d,primaryColor:y,embedded:C,showConversationSidebar:k,showClearButton:g,showDebugButton:w,enableDebugMode:R,showTTSButton:H,showExpandButton:j,enableTTS:N,elevenLabsApiKey:K,ttsProxyUrl:B}=e,b=K||B;return m`
3
- <div class="cw-header" style=${{backgroundColor:y}}>
4
- ${k&&m`
1
+ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var Pt=Object.prototype.hasOwnProperty;var Ht=(e,t)=>{for(var n in t)Ce(e,n,{get:t[n],enumerable:!0})},Nt=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Dt(t))!Pt.call(e,r)&&r!==n&&Ce(e,r,{get:()=>t[r],enumerable:!(o=At(t,r))||o.enumerable});return e};var Ot=e=>Nt(Ce({},"__esModule",{value:!0}),e);var _n={};Ht(_n,{ChatWidget:()=>ke,default:()=>dn});var de,D,ze,Ft,Y,Ue,je,Je,Ve,xe,Se,Me,Wt,oe={},qe=[],Ut=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_e=Array.isArray;function Q(e,t){for(var n in t)e[n]=t[n];return e}function Ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function pe(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?de.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 ce(e,i,o,r,null)}function ce(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??++ze,__i:-1,__u:0};return r==null&&D.vnode!=null&&D.vnode(s),s}function fe(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 Ge(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 Ge(e)}}function Le(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!ue.__r++||Ue!=D.debounceRendering)&&((Ue=D.debounceRendering)||je)(ue)}function ue(){for(var e,t,n,o,r,s,i,c=1;Y.length;)Y.length>c&&Y.sort(Je),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=Q({},o)).__v=o.__v+1,D.vnode&&D.vnode(n),Ie(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,Ze(s,n,i),o.__e=o.__=null,n.__e!=r&&Ge(n)));ue.__r=0}function Xe(e,t,n,o,r,s,i,c,d,l,u){var a,_,p,$,C,g,y,w=o&&o.__k||qe,I=t.length;for(d=Lt(n,t,w,d,I),a=0;a<I;a++)(p=n.__k[a])!=null&&(_=p.__i==-1?oe:w[p.__i]||oe,p.__i=a,g=Ie(e,p,_,r,s,i,c,d,l,u),$=p.__e,p.ref&&_.ref!=p.ref&&(_.ref&&Re(_.ref,null,p),u.push(p.ref,p.__c||$,p)),C==null&&$!=null&&(C=$),(y=!!(4&p.__u))||_.__k===p.__k?d=Qe(p,d,e,y):typeof p.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),p.__u&=-7);return n.__e=C,d}function Lt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,_=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]=ce(null,i,null,null,null):_e(i)?i=e.__k[s]=ce(fe,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=ce(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+_,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Kt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?_--:r<u&&_++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?_--:l==d+1?_++:(l>d?_--:_++,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)),et(c,c));return o}function Qe(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=Qe(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 Kt(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 Ke(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Ut.test(t)?n:n+"px"}function le(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||Ke(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Ke(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(Ve,"$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=xe,e.addEventListener(t,s?Me:Se,s)):e.removeEventListener(t,s?Me:Se,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 Be(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=xe++;else if(t.t<n.u)return;return n(D.event?D.event(t):t)}}}function Ie(e,t,n,o,r,s,i,c,d,l){var u,a,_,p,$,C,g,y,w,I,N,V,O,j,J,K,k,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=D.__b)&&u(t);e:if(typeof H=="function")try{if(y=t.props,w="prototype"in H&&H.prototype.render,I=(u=H.contextType)&&o[u.__c],N=u?I?I.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new H(y,N):(t.__c=a=new ne(y,N),a.constructor=H,a.render=zt),I&&I.sub(a),a.state||(a.state={}),a.__n=o,_=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&H.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=Q({},a.__s)),Q(a.__s,H.getDerivedStateFromProps(y,a.__s))),p=a.props,$=a.state,a.__v=t,_)w&&H.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&H.getDerivedStateFromProps==null&&y!==p&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,N),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,N)===!1){for(t.__v!=n.__v&&(a.props=y,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(v){v&&(v.__=t)}),V=0;V<a._sb.length;V++)a.__h.push(a._sb[V]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(y,a.__s,N),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(p,$,C)})}if(a.context=N,a.props=y,a.__P=e,a.__e=!1,O=D.__r,j=0,w){for(a.state=a.__s,a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);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=Q(Q({},o),a.getChildContext())),w&&!_&&a.getSnapshotBeforeUpdate!=null&&(C=a.getSnapshotBeforeUpdate(p,$)),K=u,u!=null&&u.type===fe&&u.key==null&&(K=Ye(u.props.children)),c=Xe(e,_e(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(v){if(t.__v=null,d||s!=null)if(v.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(k=s.length;k--;)Ee(s[k]);Te(t)}else t.__e=n.__e,t.__k=n.__k,v.then||Te(t);D.__e(v,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Bt(n.__e,t,n,o,r,s,i,d,l);return(u=D.diffed)&&u(t),128&t.__u?void 0:c}function Te(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Te)}function Ze(e,t,n){for(var o=0;o<n.length;o++)Re(n[o],n[++o],n[++o]);D.__c&&D.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){D.__e(s,r.__v)}})}function Ye(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:_e(e)?e.map(Ye):Q({},e)}function Bt(e,t,n,o,r,s,i,c,d){var l,u,a,_,p,$,C,g=n.props||oe,y=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((p=s[l])&&"setAttribute"in p==!!w&&(w?p.localName==w:p.nodeType==3)){e=p,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(y);e=document.createElementNS(r,w,y.is&&y),c&&(D.__m&&D.__m(t,s),c=!1),s=null}if(w==null)g===y||c&&e.data==y||(e.data=y);else{if(s=s&&de.call(e.childNodes),!c&&s!=null)for(g={},l=0;l<e.attributes.length;l++)g[(p=e.attributes[l]).name]=p.value;for(l in g)if(p=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=p;else if(!(l in y)){if(l=="value"&&"defaultValue"in y||l=="checked"&&"defaultChecked"in y)continue;le(e,l,null,p,r)}}for(l in y)p=y[l],l=="children"?_=p:l=="dangerouslySetInnerHTML"?u=p:l=="value"?$=p:l=="checked"?C=p:c&&typeof p!="function"||g[l]===p||le(e,l,p,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=""),Xe(t.type=="template"?e.content:e,_e(_)?_:[_],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--;)Ee(s[l]);c||(l="value",w=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||w=="progress"&&!$||w=="option"&&$!=g[l])&&le(e,l,$,g[l],r),l="checked",C!=null&&C!=e[l]&&le(e,l,C,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){D.__e(r,n)}}function et(e,t,n){var o,r;if(D.unmount&&D.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){D.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&et(o[r],t,n||typeof e.type!="function");n||Ee(e.__e),e.__c=e.__=e.__e=void 0}function zt(e,t,n){return this.constructor(e,n)}function he(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),D.__&&D.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ie(t,e=(!o&&n||t).__k=pe(fe,null,[e]),r||oe,oe,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?de.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),Ze(s,e,i)}de=qe.slice,D={__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}},ze=0,Ft=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=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),Le(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Le(this))},ne.prototype.render=fe,Y=[],je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Je=function(e,t){return e.__v.__b-t.__v.__b},ue.__r=0,Ve=/(PointerCapture)$|Capture$/i,xe=0,Se=Be(!1),Me=Be(!0),Wt=0;var nt=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,nt(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},tt=new Map;function ot(e){var t=tt.get(this);return t||(t=new Map,tt.set(this,t)),(t=nt(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(_){s===1&&(_||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,_,i):s===3&&(_||i)?(d.push(3,_,i),s=2):s===2&&i==="..."&&_?d.push(4,_,0):s===2&&i&&!_?d.push(5,0,!0,i):s>=5&&((i||!_&&s===5)&&(d.push(s,0,i,r),s=6),_&&(d.push(s,_,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=ot.bind(pe);var se,W,Ae,st,re=0,_t=[],U=D,rt=U.__b,at=U.__r,it=U.diffed,lt=U.__c,ct=U.unmount,ut=U.__;function Pe(e,t){U.__h&&U.__h(W,e,re||t),re=0;var n=W.__H||(W.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function M(e){return re=1,jt(ft,e)}function jt(e,t,n){var o=Pe(se++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):ft(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=W,!W.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(_){return!!_.__c});if(u.every(function(_){return!_.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(_){if(_.__N){var p=_.__[0];_.__=_.__N,_.__N=void 0,p!==_.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};W.__f=!0;var s=W.shouldComponentUpdate,i=W.componentWillUpdate;W.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)},W.shouldComponentUpdate=r}return o.__N||o.__}function L(e,t){var n=Pe(se++,3);!U.__s&&pt(n.__H,t)&&(n.__=e,n.u=t,W.__H.__h.push(n))}function G(e){return re=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=Pe(se++,7);return pt(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 Jt(){for(var e;e=_t.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(me),e.__H.__h.forEach(De),e.__H.__h=[]}catch(t){e.__H.__h=[],U.__e(t,e.__v)}}U.__b=function(e){W=null,rt&&rt(e)},U.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ut&&ut(e,t)},U.__r=function(e){at&&at(e),se=0;var t=(W=e.__c).__H;t&&(Ae===W?(t.__h=[],W.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(me),t.__h.forEach(De),t.__h=[],se=0)),Ae=W},U.diffed=function(e){it&&it(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_t.push(t)!==1&&st===U.requestAnimationFrame||((st=U.requestAnimationFrame)||Vt)(Jt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Ae=W=null},U.__c=function(e,t){t.some(function(n){try{n.__h.forEach(me),n.__h=n.__h.filter(function(o){return!o.__||De(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],U.__e(o,n.__v)}}),lt&&lt(e,t)},U.unmount=function(e){ct&&ct(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{me(o)}catch(r){t=r}}),n.__H=void 0,t&&U.__e(t,n.__v))};var dt=typeof requestAnimationFrame=="function";function Vt(e){var t,n=function(){clearTimeout(o),dt&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);dt&&(t=requestAnimationFrame(n))}function me(e){var t=W,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),W=t}function De(e){var t=W;e.__c=e.__(),W=t}function pt(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function ft(e,t){return typeof t=="function"?t(e):t}function qt(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function He(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function ge(e){return Array.isArray(e)?e.map(ge):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[qt(t),ge(n)])):e}function ye(e){return Array.isArray(e)?e.map(ye):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[He(t),ye(n)])):e}function ve(){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 ht(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 mt(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 gt(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 yt(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 we(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 $e(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 vt({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:_}){let{title:p,primaryColor:$,embedded:C,showConversationSidebar:g,showClearButton:y,showDebugButton:w,enableDebugMode:I,showTTSButton:N,showExpandButton:V,enableTTS:O,elevenLabsApiKey:j,ttsProxyUrl:J}=e,K=j||J;return m`
3
+ <div class="cw-header" style=${{backgroundColor:$}}>
4
+ ${g&&m`
5
5
  <button
6
6
  class="cw-header-btn cw-hamburger"
7
- onClick=${f}
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,26 +16,26 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
16
16
  `}
17
17
 
18
18
  <div class="cw-title-container">
19
- <span class="cw-title">${U(d)}</span>
19
+ <span class="cw-title">${B(p)}</span>
20
20
  ${i&&m`
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">${U(i.name||i.key)}</span>
23
+ <span class="cw-agent-name">${B(i.name||i.key)}</span>
24
24
  </span>
25
25
  `}
26
26
  </div>
27
27
 
28
28
  <div class="cw-header-actions">
29
- ${g&&m`
29
+ ${y&&m`
30
30
  <button
31
31
  class="cw-header-btn"
32
32
  onClick=${a}
33
33
  title="Clear"
34
- disabled=${o||r===0}
34
+ disabled=${s||r===0}
35
35
  >🗑️</button>
36
36
  `}
37
37
 
38
- ${w&&R&&m`
38
+ ${w&&I&&m`
39
39
  <button
40
40
  class="cw-header-btn ${t?"cw-btn-active":""}"
41
41
  onClick=${l}
@@ -43,18 +43,18 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
43
43
  >🐛</button>
44
44
  `}
45
45
 
46
- ${H&&b&&m`
46
+ ${N&&K&&m`
47
47
  <button
48
- class="cw-header-btn ${N?"cw-btn-active":""}"
48
+ class="cw-header-btn ${O?"cw-btn-active":""}"
49
49
  onClick=${u}
50
50
  title="TTS"
51
- >${N?"\u{1F50A}":"\u{1F507}"}</button>
51
+ >${O?"\u{1F50A}":"\u{1F507}"}</button>
52
52
  `}
53
53
 
54
- ${j&&!C&&m`
54
+ ${V&&!C&&m`
55
55
  <button
56
56
  class="cw-header-btn"
57
- onClick=${_}
57
+ onClick=${d}
58
58
  title=${n?"Minimize":"Expand"}
59
59
  >${n?"\u2296":"\u2295"}</button>
60
60
  `}
@@ -68,7 +68,7 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
68
68
  `}
69
69
  </div>
70
70
  </div>
71
- `}function Te({msg:e,show:t,onToggle:n}){return t?m`
71
+ `}function Ne({msg:e,show:t,onToggle:n}){return t?m`
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>
@@ -79,55 +79,139 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
79
79
  onClick=${n}
80
80
  title="Show message payload"
81
81
  >{ }</button>
82
- `}function ct({msg:e,debugMode:t,markdownParser:n}){let[s,r]=T(!1),[o,i]=T(!1),c=e.role==="user",_=e.role==="system",l=e.type==="tool_call",u=e.type==="tool_result",a=e.type==="error",f=e.type==="sub_agent_start",d=e.type==="sub_agent_end",y=e.type==="agent_context";if(_&&!t)return null;if(f||d||y)return m`
83
- <div class="cw-agent-context ${f?"cw-agent-delegating":""} ${d?"cw-agent-returned":""}" style="position: relative;">
84
- <span class="cw-agent-context-icon">${f?"\u{1F517}":d?"\u2713":"\u{1F916}"}</span>
82
+ `}function Gt({onEdit:e,onRetry:t,isLoading:n}){return n?null:m`
83
+ <div class="cw-message-actions">
84
+ <button
85
+ class="cw-message-action-btn"
86
+ onClick=${e}
87
+ title="Edit message"
88
+ >
89
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
90
+ <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
91
+ <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
92
+ </svg>
93
+ </button>
94
+ <button
95
+ class="cw-message-action-btn"
96
+ onClick=${t}
97
+ title="Retry from here"
98
+ >
99
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
100
+ <polyline points="1 4 1 10 7 10"></polyline>
101
+ <path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path>
102
+ </svg>
103
+ </button>
104
+ </div>
105
+ `}function Xt({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`
106
+ <div class="cw-inline-edit">
107
+ <textarea
108
+ ref=${s}
109
+ class="cw-inline-edit-input"
110
+ value=${o}
111
+ onInput=${d=>{r(d.target.value),d.target.style.height="auto",d.target.style.height=d.target.scrollHeight+"px"}}
112
+ onKeyDown=${d=>{d.key==="Enter"&&!d.shiftKey?(d.preventDefault(),o.trim()&&t(o.trim())):d.key==="Escape"&&n()}}
113
+ rows="1"
114
+ />
115
+ <div class="cw-inline-edit-actions">
116
+ <button
117
+ class="cw-inline-edit-btn cw-inline-edit-cancel"
118
+ onClick=${n}
119
+ title="Cancel (Esc)"
120
+ >Cancel</button>
121
+ <button
122
+ class="cw-inline-edit-btn cw-inline-edit-save"
123
+ onClick=${()=>o.trim()&&t(o.trim())}
124
+ disabled=${!o.trim()}
125
+ title="Save & Resend (Enter)"
126
+ >Save & Send</button>
127
+ </div>
128
+ </div>
129
+ `}function wt({msg:e,debugMode:t,markdownParser:n,onEdit:o,onRetry:r,isLoading:s,messageIndex:i}){let[c,d]=M(!1),[l,u]=M(!1),[a,_]=M(!1),p=e.role==="user",$=e.role==="system",C=e.type==="tool_call",g=e.type==="tool_result",y=e.type==="error",w=e.type==="sub_agent_start",I=e.type==="sub_agent_end",N=e.type==="agent_context";if($&&!t)return null;if(w||I||N)return m`
130
+ <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${I?"cw-agent-returned":""}" style="position: relative;">
131
+ <span class="cw-agent-context-icon">${w?"\u{1F517}":I?"\u2713":"\u{1F916}"}</span>
85
132
  <span class="cw-agent-context-text">${e.content}</span>
86
133
  ${e.metadata?.agentName&&m`
87
134
  <span class="cw-agent-context-name">${e.metadata.agentName}</span>
88
135
  `}
89
- ${t&&m`<${Te} msg=${e} show=${o} onToggle=${()=>i(!o)} />`}
136
+ ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
90
137
  </div>
91
- `;if(l||u){let w=e.metadata?.arguments||e.metadata?.result,R=H=>{if(typeof H=="string")try{return JSON.stringify(JSON.parse(H),null,2)}catch{return H}return JSON.stringify(H,null,2)};return m`
92
- <div class="cw-tool-message ${u?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
93
- <span class="cw-tool-label" onClick=${()=>w&&r(!s)}>
138
+ `;if(C||g){let b=e.metadata?.arguments||e.metadata?.result,P=T=>{if(typeof T=="string")try{return JSON.stringify(JSON.parse(T),null,2)}catch{return T}return JSON.stringify(T,null,2)};return m`
139
+ <div class="cw-tool-message ${g?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
140
+ <span class="cw-tool-label" onClick=${()=>b&&d(!c)}>
94
141
  ${e.content}
95
- ${w&&m`<span class="cw-tool-expand">${s?"\u25BC":"\u25B6"}</span>`}
142
+ ${b&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
96
143
  </span>
97
- ${s&&w&&m`
98
- <pre class="cw-tool-details">${U(R(l?e.metadata.arguments:e.metadata.result))}</pre>
144
+ ${c&&b&&m`
145
+ <pre class="cw-tool-details">${B(P(C?e.metadata.arguments:e.metadata.result))}</pre>
99
146
  `}
100
- ${t&&m`<${Te} msg=${e} show=${o} onToggle=${()=>i(!o)} />`}
147
+ ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
148
+ </div>
149
+ `}let V=["cw-message",p&&"cw-message-user",y&&"cw-message-error"].filter(Boolean).join(" "),O=`cw-message-row ${p?"cw-message-row-user":""}`,j=e.role==="assistant"?mt(e.content,n):B(e.content),J=e.files&&e.files.length>0,K=()=>J?m`
150
+ <div class="cw-message-attachments">
151
+ ${e.files.map(b=>b.type&&b.type.startsWith("image/")?m`
152
+ <a class="cw-attachment-thumbnail" href=${b.url} target="_blank" title=${b.name}>
153
+ <img src=${b.url} alt=${b.name} />
154
+ </a>
155
+ `:m`
156
+ <a class="cw-attachment-file" href=${b.url} target="_blank" title=${b.name}>
157
+ <span class="cw-attachment-icon">${$e(b.type)}</span>
158
+ <span class="cw-attachment-info">
159
+ <span class="cw-attachment-name">${b.name}</span>
160
+ <span class="cw-attachment-size">${we(b.size)}</span>
161
+ </span>
162
+ </a>
163
+ `)}
164
+ </div>
165
+ `:null,k=b=>{_(!1),o&&b!==e.content&&o(i,b)},H=()=>{r&&r(i)};if(p&&a)return m`
166
+ <div class=${O} style="position: relative;">
167
+ ${K()}
168
+ <${Xt}
169
+ initialContent=${e.content}
170
+ onSave=${k}
171
+ onCancel=${()=>_(!1)}
172
+ />
101
173
  </div>
102
- `}let C=["cw-message",c&&"cw-message-user",a&&"cw-message-error"].filter(Boolean).join(" "),k=`cw-message-row ${c?"cw-message-row-user":""}`,g=e.role==="assistant"?rt(e.content,n):U(e.content);return m`
103
- <div class=${k} style="position: relative;">
104
- <div class=${C} dangerouslySetInnerHTML=${{__html:g}} />
105
- ${t&&m`<${Te} msg=${e} show=${o} onToggle=${()=>i(!o)} />`}
174
+ `;let v=p&&o&&r;return m`
175
+ <div class="${O} ${v?"cw-message-row-with-actions":""}" style="position: relative;">
176
+ ${K()}
177
+ <div class=${V} dangerouslySetInnerHTML=${{__html:j}} />
178
+ ${v&&m`
179
+ <${Gt}
180
+ onEdit=${()=>_(!0)}
181
+ onRetry=${H}
182
+ isLoading=${s}
183
+ />
184
+ `}
185
+ ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
106
186
  </div>
107
- `}function ut({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:r,debugMode:o,markdownParser:i,emptyStateTitle:c,emptyStateMessage:_}){let l=q(null),u=q(!0),a=d=>{let y=d.target,C=y.scrollHeight-y.scrollTop-y.clientHeight<100;if(u.current=C,y.scrollTop<50&&n&&!s){let k=y.scrollHeight;r().then(()=>{let g=y.scrollHeight;y.scrollTop=g-k+y.scrollTop})}};F(()=>{let d=l.current;d&&u.current&&requestAnimationFrame(()=>{d.scrollTop=d.scrollHeight})},[e,t]),F(()=>{let d=l.current;d&&e.length<=2&&(u.current=!0,requestAnimationFrame(()=>{d.scrollTop=d.scrollHeight}))},[e.length]);let f=e.length===0;return m`
108
- <div class="cw-messages" ref=${l} onScroll=${a}>
109
- ${f&&m`
187
+ `}function $t({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),_=G(!0),p=C=>{let g=C.target,y=g.scrollHeight-g.scrollTop-g.clientHeight<100;if(_.current=y,g.scrollTop<50&&n&&!o){let w=g.scrollHeight;r().then(()=>{let I=g.scrollHeight;g.scrollTop=I-w+g.scrollTop})}};L(()=>{let C=a.current;C&&_.current&&requestAnimationFrame(()=>{C.scrollTop=C.scrollHeight})},[e,t]),L(()=>{let C=a.current;C&&e.length<=2&&(_.current=!0,requestAnimationFrame(()=>{C.scrollTop=C.scrollHeight}))},[e.length]);let $=e.length===0;return m`
188
+ <div class="cw-messages" ref=${a} onScroll=${p}>
189
+ ${$&&m`
110
190
  <div class="cw-empty-state">
111
191
  <svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
112
192
  <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>
113
193
  </svg>
114
- <h3>${U(c)}</h3>
115
- <p>${U(_)}</p>
194
+ <h3>${B(l)}</h3>
195
+ <p>${B(u)}</p>
116
196
  </div>
117
197
  `}
118
198
 
119
- ${!f&&n&&m`
199
+ ${!$&&n&&m`
120
200
  <div class="cw-load-more" onClick=${r}>
121
- ${s?m`<span class="cw-spinner"></span><span>Loading...</span>`:m`<span>↑ Scroll up or click to load older messages</span>`}
201
+ ${o?m`<span class="cw-spinner"></span><span>Loading...</span>`:m`<span>↑ Scroll up or click to load older messages</span>`}
122
202
  </div>
123
203
  `}
124
204
 
125
- ${e.map(d=>m`
126
- <${ct}
127
- key=${d.id}
128
- msg=${d}
129
- debugMode=${o}
130
- markdownParser=${i}
205
+ ${e.map((C,g)=>m`
206
+ <${wt}
207
+ key=${C.id}
208
+ msg=${C}
209
+ messageIndex=${g}
210
+ debugMode=${c}
211
+ markdownParser=${d}
212
+ onEdit=${s}
213
+ onRetry=${i}
214
+ isLoading=${t}
131
215
  />
132
216
  `)}
133
217
 
@@ -140,60 +224,99 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
140
224
  </div>
141
225
  `}
142
226
  </div>
143
- `}var Me=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function _t({onSend:e,onCancel:t,isLoading:n,placeholder:s,primaryColor:r,enableVoice:o=!0}){let[i,c]=T(""),[_,l]=T(!1),[u,a]=T(!1),[f]=T(()=>!!Me),d=q(null),y=q(null),C=q(!1);F(()=>{!n&&d.current&&d.current.focus()},[n]),F(()=>{d.current&&(d.current.style.height="auto",d.current.style.height=Math.min(d.current.scrollHeight,150)+"px")},[i]),F(()=>()=>{C.current=!1,y.current&&y.current.abort()},[]);let k=b=>{b.preventDefault(),i.trim()&&!n&&(e(i),c(""),d.current&&(d.current.style.height="auto"))},g=b=>{b.key==="Enter"&&!b.shiftKey&&(b.preventDefault(),k(b))},w=b=>{n&&t&&(b.preventDefault(),t())},R=()=>{if(!Me||n)return;C.current=!0;let b=new Me;b.continuous=!0,b.interimResults=!0,b.lang=navigator.language||"en-US";let p=i,$="";b.onstart=()=>{a(!0)},b.onresult=S=>{$="";for(let I=S.resultIndex;I<S.results.length;I++){let O=S.results[I][0].transcript;S.results[I].isFinal?p+=(p?" ":"")+O:$+=O}c(p+($?" "+$:""))},b.onerror=S=>{if(S.error==="no-speech"||S.error==="aborted"){console.log("[ChatWidget] Speech recognition:",S.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",S.error),C.current=!1,a(!1),c(p||i)},b.onend=()=>{if(C.current){console.log("[ChatWidget] Recognition paused, restarting...");try{b.start();return}catch(S){console.warn("[ChatWidget] Could not restart recognition:",S)}}a(!1),p&&c(p),y.current=null},y.current=b,b.start()},H=()=>{C.current=!1,y.current&&y.current.stop()},j=b=>{b.preventDefault(),u?H():R()},N=m`
227
+ `}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function bt({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=M(""),[l,u]=M([]),[a,_]=M(!1),[p,$]=M(!1),[C]=M(()=>!!Oe),g=G(null),y=G(null),w=G(null),I=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(()=>()=>{I.current=!1,w.current&&w.current.abort()},[]);let N=f=>{f.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),d(""),u([]),g.current&&(g.current.style.height="auto"),y.current&&(y.current.value=""))},V=f=>{let x=Array.from(f.target.files||[]);x.length>0&&u(S=>[...S,...x])},O=f=>{u(x=>x.filter((S,h)=>h!==f))},j=f=>{f.preventDefault(),y.current&&!n&&y.current.click()},J=f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),N(f))},K=f=>{n&&t&&(f.preventDefault(),t())},k=()=>{if(!Oe||n)return;I.current=!0;let f=new Oe;f.continuous=!0,f.interimResults=!0,f.lang=navigator.language||"en-US";let x=c,S="";f.onstart=()=>{$(!0)},f.onresult=h=>{S="";for(let R=h.resultIndex;R<h.results.length;R++){let q=h.results[R][0].transcript;h.results[R].isFinal?x+=(x?" ":"")+q:S+=q}d(x+(S?" "+S:""))},f.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),I.current=!1,$(!1),d(x||c)},f.onend=()=>{if(I.current){console.log("[ChatWidget] Recognition paused, restarting...");try{f.start();return}catch(h){console.warn("[ChatWidget] Could not restart recognition:",h)}}$(!1),x&&d(x),w.current=null},w.current=f,f.start()},H=()=>{I.current=!1,w.current&&w.current.stop()},v=f=>{f.preventDefault(),p?H():k()},b=m`
144
228
  <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
145
229
  <rect x="2" y="2" width="10" height="10" rx="1" />
146
230
  </svg>
147
- `,K=m`
231
+ `,P=m`
148
232
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
149
233
  <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
150
234
  <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
151
235
  <line x1="12" y1="19" x2="12" y2="23"></line>
152
236
  <line x1="8" y1="23" x2="16" y2="23"></line>
153
237
  </svg>
154
- `,B=o&&f;return m`
155
- <form class="cw-input-form" onSubmit=${k}>
238
+ `,T=m`
239
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
240
+ <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>
241
+ </svg>
242
+ `,F=s&&C,E=i;return m`
243
+ <form class="cw-input-form" onSubmit=${N}>
244
+ <input
245
+ type="file"
246
+ ref=${y}
247
+ style="display: none"
248
+ multiple
249
+ onChange=${V}
250
+ />
251
+ ${l.length>0&&m`
252
+ <div class="cw-file-chips">
253
+ ${l.map((f,x)=>m`
254
+ <div class="cw-file-chip" key=${x}>
255
+ <span class="cw-file-chip-icon">${$e(f.type)}</span>
256
+ <span class="cw-file-chip-name" title=${f.name}>${f.name.length>20?f.name.substring(0,17)+"...":f.name}</span>
257
+ <span class="cw-file-chip-size">(${we(f.size)})</span>
258
+ <button
259
+ type="button"
260
+ class="cw-file-chip-remove"
261
+ onClick=${()=>O(x)}
262
+ title="Remove file"
263
+ >×</button>
264
+ </div>
265
+ `)}
266
+ </div>
267
+ `}
156
268
  <textarea
157
- ref=${d}
269
+ ref=${g}
158
270
  class="cw-input"
159
- placeholder=${U(s)}
160
- value=${i}
161
- onInput=${b=>c(b.target.value)}
162
- onKeyDown=${g}
271
+ placeholder=${B(o)}
272
+ value=${c}
273
+ onInput=${f=>d(f.target.value)}
274
+ onKeyDown=${J}
163
275
  disabled=${n}
164
276
  rows="1"
165
277
  />
166
- ${B&&m`
278
+ ${E&&m`
167
279
  <button
168
280
  type="button"
169
- class=${`cw-voice-btn ${u?"cw-voice-btn-recording":""}`}
281
+ class="cw-attach-btn"
170
282
  onClick=${j}
171
283
  disabled=${n}
172
- title=${u?"Stop recording":"Voice input"}
284
+ title="Attach files"
285
+ >
286
+ ${T}
287
+ </button>
288
+ `}
289
+ ${F&&m`
290
+ <button
291
+ type="button"
292
+ class=${`cw-voice-btn ${p?"cw-voice-btn-recording":""}`}
293
+ onClick=${v}
294
+ disabled=${n}
295
+ title=${p?"Stop recording":"Voice input"}
173
296
  >
174
- ${K}
297
+ ${P}
175
298
  </button>
176
299
  `}
177
300
  <button
178
301
  type=${n?"button":"submit"}
179
- class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&_?"cw-send-btn-stop":""}`}
180
- style=${{backgroundColor:n&&_?"#dc2626":r}}
181
- onClick=${w}
182
- onMouseEnter=${()=>l(!0)}
183
- onMouseLeave=${()=>l(!1)}
302
+ class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&a?"cw-send-btn-stop":""}`}
303
+ style=${{backgroundColor:n&&a?"#dc2626":r}}
304
+ onClick=${K}
305
+ onMouseEnter=${()=>_(!0)}
306
+ onMouseLeave=${()=>_(!1)}
184
307
  title=${n?"Stop":"Send"}
185
308
  >
186
- ${n?_?N:m`<span class="cw-spinner"></span>`:"\u27A4"}
309
+ ${n?a?b:m`<span class="cw-spinner"></span>`:"\u27A4"}
187
310
  </button>
188
311
  </form>
189
- `}function dt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:r,onNewConversation:o,onSwitchConversation:i}){return m`
312
+ `}function kt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
190
313
  <div class="cw-sidebar ${e?"cw-sidebar-open":""}">
191
314
  <div class="cw-sidebar-header">
192
315
  <span>Conversations</span>
193
316
  <button class="cw-sidebar-close" onClick=${r}>✕</button>
194
317
  </div>
195
318
 
196
- <button class="cw-new-conversation" onClick=${o}>
319
+ <button class="cw-new-conversation" onClick=${s}>
197
320
  <span>+ New Conversation</span>
198
321
  </button>
199
322
 
@@ -211,11 +334,11 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
211
334
  ${t.map(c=>m`
212
335
  <div
213
336
  key=${c.id}
214
- class="cw-conversation-item ${c.id===s?"cw-conversation-active":""}"
337
+ class="cw-conversation-item ${c.id===o?"cw-conversation-active":""}"
215
338
  onClick=${()=>i(c.id)}
216
339
  >
217
- <div class="cw-conversation-title">${U(c.title||"Untitled")}</div>
218
- <div class="cw-conversation-date">${st(c.updatedAt||c.createdAt)}</div>
340
+ <div class="cw-conversation-title">${B(c.title||"Untitled")}</div>
341
+ <div class="cw-conversation-date">${ht(c.updatedAt||c.createdAt)}</div>
219
342
  </div>
220
343
  `)}
221
344
  </div>
@@ -225,16 +348,16 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
225
348
  class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
226
349
  onClick=${r}
227
350
  />
228
- `}function pt({availableModels:e,selectedModel:t,onSelectModel:n,disabled:s}){let[r,o]=T(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",_=()=>{s||o(!r)},l=u=>{n(u),o(!1)};return m`
351
+ `}function Ct({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`
229
352
  <div class="cw-model-selector">
230
353
  <button
231
354
  class="cw-model-btn"
232
- onClick=${_}
233
- disabled=${s}
355
+ onClick=${d}
356
+ disabled=${o}
234
357
  title="Select Model"
235
358
  >
236
359
  <span class="cw-model-icon">🤖</span>
237
- <span class="cw-model-name">${U(c)}</span>
360
+ <span class="cw-model-name">${B(c)}</span>
238
361
  <span class="cw-model-chevron">${r?"\u25B2":"\u25BC"}</span>
239
362
  </button>
240
363
 
@@ -246,93 +369,95 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var $t=Object.getOwnProp
246
369
  class="cw-model-option ${u.id===t?"cw-model-option-selected":""}"
247
370
  onClick=${()=>l(u.id)}
248
371
  >
249
- <span class="cw-model-option-name">${U(u.name)}</span>
250
- <span class="cw-model-option-provider">${U(u.provider)}</span>
372
+ <span class="cw-model-option-name">${B(u.name)}</span>
373
+ <span class="cw-model-option-provider">${B(u.provider)}</span>
251
374
  ${u.description&&m`
252
- <span class="cw-model-option-desc">${U(u.description)}</span>
375
+ <span class="cw-model-option-desc">${B(u.description)}</span>
253
376
  `}
254
377
  </button>
255
378
  `)}
256
379
  </div>
257
380
  `}
258
381
  </div>
259
- `}function ft(e,t,n){let[s,r]=T([]),[o,i]=T(!1),[c,_]=T(null),[l,u]=T(()=>n?.get(e.conversationIdKey)||null),[a,f]=T(!1),[d,y]=T(!1),[C,k]=T(0),g=q(null),w=q(null);F(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let R=W(async(p,$,S)=>{g.current&&g.current.close();let I=e.apiPaths.runEvents.replace("{runId}",p),O=`${e.backendUrl}${I}`;$&&(O+=`?anonymous_token=${encodeURIComponent($)}`);let M=new EventSource(O);g.current=M;let L="";M.addEventListener("assistant.message",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let P=h.payload.content;P&&(L+=P,r(J=>{let Q=J[J.length-1];return Q?.role==="assistant"&&Q.id.startsWith("assistant-stream-")?[...J.slice(0,-1),{...Q,content:L}]:[...J,{id:"assistant-stream-"+Date.now(),role:"assistant",content:L,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),M.addEventListener("tool.call",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(P=>[...P,{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)}}),M.addEventListener("tool.result",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("tool.result",h.payload);let P=h.payload.result,J=P?.error;r(Q=>[...Q,{id:"tool-result-"+Date.now(),role:"system",content:J?`\u274C ${P.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:P,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),M.addEventListener("custom",v=>{try{let h=JSON.parse(v.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(P=>[...P,{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)}}),M.addEventListener("sub_agent.start",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(P=>[...P,{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)}}),M.addEventListener("sub_agent.end",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(P=>[...P,{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 V=v=>{try{let h=JSON.parse(v.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let P=h.payload.error||"Agent run failed";_(P),r(J=>[...J,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${P}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),M.close(),g.current=null,L&&S&&S(L)};M.addEventListener("run.succeeded",V),M.addEventListener("run.failed",V),M.addEventListener("run.cancelled",V),M.addEventListener("run.timed_out",V),M.onerror=()=>{i(!1),M.close(),g.current=null}},[e]),H=W(async(p,$={})=>{if(!p.trim()||o)return;let{model:S,onAssistantMessage:I}=typeof $=="function"?{onAssistantMessage:$}:$;i(!0),_(null);let O={id:de(),role:"user",content:p.trim(),timestamp:new Date,type:"message"};r(M=>[...M,O]);try{let M=await t.getOrCreateSession(),L={agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:p.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType}};S&&(L.model=S);let V=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(L)},M));if(!V.ok){let P=await V.json().catch(()=>({}));throw new Error(P.error||`HTTP ${V.status}`)}let v=await V.json();w.current=v.id;let h=v.conversationId||v.conversation_id;!l&&h&&u(h),await R(v.id,M,I)}catch(M){_(M.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,o,R]),j=W(async()=>{let p=w.current;if(!(!p||!o))try{let $=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",p):`${e.apiPaths.runs}${p}/cancel/`;(await fetch(`${e.backendUrl}${$}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(g.current&&(g.current.close(),g.current=null),i(!1),w.current=null,r(I=>[...I,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch($){console.error("[ChatWidget] Failed to cancel run:",$)}},[e,t,o]),N=W(()=>{r([]),u(null),_(null),f(!1),k(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),K=p=>{let $={id:de(),role:p.role,timestamp:p.timestamp?new Date(p.timestamp):new Date};if(p.role==="tool")return{...$,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:p.content,toolCallId:p.tool_call_id}};if(p.role==="assistant"&&p.tool_calls&&p.tool_calls.length>0)return p.tool_calls.map(I=>({id:de(),role:"assistant",content:`\u{1F527} ${I.function?.name||I.name||"tool"}`,timestamp:$.timestamp,type:"tool_call",metadata:{toolName:I.function?.name||I.name,arguments:I.function?.arguments||I.arguments,toolCallId:I.id}}));let S=typeof p.content=="string"?p.content:JSON.stringify(p.content);return p.role==="assistant"&&!S?.trim()?null:{...$,content:S,type:"message"}},B=W(async p=>{i(!0),r([]),u(p);try{let $=await t.getOrCreateSession(),I=`${e.backendUrl}${e.apiPaths.conversations}${p}/?limit=10&offset=0`,O=await fetch(I,t.getFetchOptions({method:"GET"},$));if(O.ok){let M=await O.json();M.messages&&r(M.messages.flatMap(K).filter(Boolean)),f(M.has_more||M.hasMore||!1),k(M.messages?.length||0)}else O.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch($){console.error("[ChatWidget] Failed to load conversation:",$)}finally{i(!1)}},[e,t,n]),b=W(async()=>{if(!(!l||d||!a)){y(!0);try{let p=await t.getOrCreateSession(),S=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${C}`,I=await fetch(S,t.getFetchOptions({method:"GET"},p));if(I.ok){let O=await I.json();if(O.messages?.length>0){let M=O.messages.flatMap(K).filter(Boolean);r(L=>[...M,...L]),k(L=>L+O.messages.length),f(O.has_more||O.hasMore||!1)}else f(!1)}}catch(p){console.error("[ChatWidget] Failed to load more messages:",p)}finally{y(!1)}}},[e,t,l,C,d,a]);return F(()=>()=>{g.current&&g.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:d,sendMessage:H,cancelRun:j,clearMessages:N,loadConversation:B,loadMoreMessages:b,setConversationId:u}}function ht(e,t,n){let[s,r]=T([]),[o,i]=T(null),[c,_]=T(null),[l,u]=T(!1);F(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let y=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(y.ok){let C=await y.json(),k=C.models||[];r(k),_(C.default);let g=n?.get(e.modelKey);g&&k.some(w=>w.id===g)?i(g):i(C.default)}}catch(y){console.warn("[ChatWidget] Failed to load models:",y)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=W(d=>{i(d),n?.set(e.modelKey,d)},[e.modelKey,n]),f=W(()=>s.find(d=>d.id===o)||null,[s,o]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:f}}function mt(e,t,n){let s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",r=(c=null)=>{let _=s(),l={},u=c||e.authToken||t().authToken;if(_==="token"&&u){let a=e.authHeader||"Authorization",f=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";l[a]=f?`${f} ${u}`:u}else if(_==="jwt"&&u){let a=e.authHeader||"Authorization",f=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";l[a]=f?`${f} ${u}`:u}else if(_==="anonymous"&&u){let a=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";l[a]=u}if(_==="session"){let a=it(e.csrfCookieName);a&&(l["X-CSRFToken"]=a)}return l};return{getAuthStrategy:s,getAuthHeaders:r,getFetchOptions:(c={},_=null)=>{let l=s(),u={...c};return u.headers={...u.headers,...r(_)},l==="session"&&(u.credentials="include"),u},getOrCreateSession:async()=>{let c=s(),_=t();if(c!=="anonymous")return e.authToken||_.authToken;if(_.authToken)return _.authToken;let l=e.anonymousTokenKey||e.sessionTokenKey,u=_.storage?.get(l);if(u)return n(a=>({...a,authToken:u})),u;try{let a=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,f=await fetch(`${e.backendUrl}${a}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(f.ok){let d=await f.json();return n(y=>({...y,authToken:d.token})),_.storage?.set(l,d.token),d.token}}catch(a){console.warn("[ChatWidget] Failed to create session:",a)}return null}}}function gt({config:e,onStateChange:t,markdownParser:n,apiRef:s}){let[r,o]=T(e.embedded||e.forceOpen===!0),[i,c]=T(!1),[_,l]=T(!1),[u,a]=T(!1),[f,d]=T([]),[y,C]=T(!1),[k,g]=T(e.enableTTS),[w,R]=T(!1),[H,j]=T(null);F(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let N=ne(()=>at(e.containerId),[e.containerId]),[K,B]=T(e.authToken||null),b=ne(()=>mt(e,()=>({authToken:K,storage:N}),P=>{let J=P({authToken:K,storage:N});J.authToken!==K&&B(J.authToken)}),[e,K,N]),p=ft(e,b,N),$=ht(e,b,N);F(()=>{for(let v=p.messages.length-1;v>=0;v--){let h=p.messages[v];if(h.type==="sub_agent_start"){j({key:h.metadata?.subAgentKey,name:h.metadata?.agentName});return}if(h.type==="sub_agent_end"){j(null);return}}},[p.messages]),F(()=>{let v=N.get(e.conversationIdKey);v&&p.loadConversation(v)},[]),F(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:_,messages:p.messages,conversationId:p.conversationId,isLoading:p.isLoading,error:p.error})},[r,i,_,p.messages,p.conversationId,p.isLoading,p.error]);let S=W(async()=>{if(e.showConversationSidebar){C(!0);try{let v=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,h=await fetch(v,b.getFetchOptions({method:"GET"}));if(h.ok){let P=await h.json();d(P.results||P)}}catch(v){console.error("[ChatWidget] Failed to load conversations:",v),d([])}finally{C(!1)}}},[e,b]),I=W(()=>{let v=!u;a(v),v&&S()},[u,S]),O=W(v=>{v!==p.conversationId&&p.loadConversation(v),a(!1)},[p]),M=W(()=>{p.clearMessages(),a(!1)},[p]),L=W(v=>{p.sendMessage(v,{model:$.selectedModel,onAssistantMessage:h=>{}})},[p,k,$.selectedModel]);if(F(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:v=>L(v),clearMessages:()=>p.clearMessages(),toggleTTS:()=>g(v=>!v),stopSpeech:()=>R(!1),setAuth:v=>{v.token!==void 0&&B(v.token)},clearAuth:()=>B(null)})},[p,s,L]),!e.embedded&&!r)return m`
382
+ `}function St(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,_]=M(!1),[p,$]=M(!1),[C,g]=M(0),y=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let I=z(async(v,b,P)=>{y.current&&y.current.close();let T=e.apiPaths.runEvents.replace("{runId}",v),F=`${e.backendUrl}${T}`;b&&(F+=`?anonymous_token=${encodeURIComponent(b)}`);let E=new EventSource(F);y.current=E;let f="";E.addEventListener("assistant.message",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let R=h.payload.content;R&&(f+=R,r(q=>{let X=q[q.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...X,content:f}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:f,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("tool.call",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(R=>[...R,{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)}}),E.addEventListener("tool.result",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.result",h.payload);let R=h.payload.result,q=R?.error;r(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:q?`\u274C ${R.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:R,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("custom",S=>{try{let h=JSON.parse(S.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(R=>[...R,{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)}}),E.addEventListener("sub_agent.start",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(R=>[...R,{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)}}),E.addEventListener("sub_agent.end",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(R=>[...R,{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 x=S=>{try{let h=JSON.parse(S.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let R=h.payload.error||"Agent run failed";d(R),r(q=>[...q,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${R}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),E.close(),y.current=null,f&&P&&P(f)};E.addEventListener("run.succeeded",x),E.addEventListener("run.failed",x),E.addEventListener("run.cancelled",x),E.addEventListener("run.timed_out",x),E.onerror=()=>{i(!1),E.close(),y.current=null}},[e]),N=z(async(v,b={},P={})=>{if(!v.trim()||s)return;let T=[],F={};typeof b=="function"?F={onAssistantMessage:b}:Array.isArray(b)?(T=b,F=P):F=b||{};let{model:E,onAssistantMessage:f}=F;i(!0),d(null);let x={id:ve(),role:"user",content:v.trim(),timestamp:new Date,type:"message",files:T.length>0?T.map(S=>({name:S.name,size:S.size,type:S.type})):void 0};r(S=>[...S,x]);try{let S=await t.getOrCreateSession(),h;if(T.length>0){let ee=e.apiCaseStyle!=="camel",We=ie=>ee?He(ie):ie,Z=new FormData;Z.append(We("agentKey"),e.agentKey),l&&Z.append(We("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:v.trim()}])),Z.append("metadata",JSON.stringify(ee?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),E&&Z.append("model",E),T.forEach(ie=>{Z.append("files",ie)}),h=t.getFetchOptions({method:"POST",body:Z},S)}else{let ee=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:v.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...E&&{model:E}});h=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},S)}let R=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,h);if(!R.ok){let ee=await R.json().catch(()=>({}));throw new Error(ee.error||`HTTP ${R.status}`)}let q=await R.json(),X=t.transformResponse(q);w.current=X.id,!l&&X.conversationId&&u(X.conversationId),await I(X.id,S,f)}catch(S){d(S.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,I]),V=z(async()=>{let v=w.current;if(!(!v||!s))try{let b=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",v):`${e.apiPaths.runs}${v}/cancel/`;(await fetch(`${e.backendUrl}${b}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(y.current&&(y.current.close(),y.current=null),i(!1),w.current=null,r(T=>[...T,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(b){console.error("[ChatWidget] Failed to cancel run:",b)}},[e,t,s]),O=z(()=>{r([]),u(null),d(null),_(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=v=>{let b={id:ve(),role:v.role,timestamp:v.timestamp?new Date(v.timestamp):new Date};if(v.role==="tool")return{...b,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:v.content,toolCallId:v.toolCallId}};if(v.role==="assistant"&&v.toolCalls&&v.toolCalls.length>0)return v.toolCalls.map(T=>({id:ve(),role:"assistant",content:`\u{1F527} ${T.function?.name||T.name||"tool"}`,timestamp:b.timestamp,type:"tool_call",metadata:{toolName:T.function?.name||T.name,arguments:T.function?.arguments||T.arguments,toolCallId:T.id}}));let P=typeof v.content=="string"?v.content:JSON.stringify(v.content);return v.role==="assistant"&&!P?.trim()?null:{...b,content:P,type:"message"}},J=z(async v=>{i(!0),r([]),u(v);try{let b=await t.getOrCreateSession(),T=`${e.backendUrl}${e.apiPaths.conversations}${v}/?limit=10&offset=0`,F=await fetch(T,t.getFetchOptions({method:"GET"},b));if(F.ok){let E=await F.json(),f=t.transformResponse(E);f.messages&&r(f.messages.flatMap(j).filter(Boolean)),_(f.hasMore||!1),g(f.messages?.length||0)}else F.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(b){console.error("[ChatWidget] Failed to load conversation:",b)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||p||!a)){$(!0);try{let v=await t.getOrCreateSession(),P=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${C}`,T=await fetch(P,t.getFetchOptions({method:"GET"},v));if(T.ok){let F=await T.json(),E=t.transformResponse(F);if(E.messages?.length>0){let f=E.messages.flatMap(j).filter(Boolean);r(x=>[...f,...x]),g(x=>x+E.messages.length),_(E.hasMore||!1)}else _(!1)}}catch(v){console.error("[ChatWidget] Failed to load more messages:",v)}finally{$(!1)}}},[e,t,l,C,p,a]),k=z(async(v,b,P={})=>{if(s)return;let T=o[v];if(!T||T.role!=="user")return;let F=o.slice(0,v);r(F),await N(b,P)},[o,s,N]),H=z(async(v,b={})=>{if(s)return;let P=o[v];if(!P||P.role!=="user")return;let T=o.slice(0,v);r(T),await N(P.content,b)},[o,s,N]);return L(()=>()=>{y.current&&y.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:p,sendMessage:N,cancelRun:V,clearMessages:O,loadConversation:J,loadMoreMessages:K,setConversationId:u,editMessage:k,retryMessage:H}}function Mt(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 C=await $.json(),g=C.models||[];r(g),d(C.default);let y=n?.get(e.modelKey);y&&g.some(w=>w.id===y)?i(y):i(C.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(p=>{i(p),n?.set(e.modelKey,p)},[e.modelKey,n]),_=z(()=>o.find(p=>p.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:_}}function Tt(e,t,n){let o=l=>!l||typeof l!="object"||e.apiCaseStyle==="camel"?l:ye(l),r=l=>!l||typeof l!="object"||e.apiCaseStyle==="snake"?l:ge(l),s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(l=null)=>{let u=s(),a={},_=l||e.authToken||t().authToken;if(u==="token"&&_){let p=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[p]=$?`${$} ${_}`:_}else if(u==="jwt"&&_){let p=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[p]=$?`${$} ${_}`:_}else if(u==="anonymous"&&_){let p=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[p]=_}if(u==="session"){let p=yt(e.csrfCookieName);p&&(a["X-CSRFToken"]=p)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),_={...l};return _.headers={..._.headers,...i(u)},a==="session"&&(_.credentials="include"),_},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,_=u.storage?.get(a);if(_)return n(p=>({...p,authToken:_})),_;try{let p=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${p}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let C=await $.json();return n(g=>({...g,authToken:C.token})),u.storage?.set(a,C.token),C.token}}catch(p){console.warn("[ChatWidget] Failed to create session:",p)}return null},transformRequest:o,transformResponse:r}}function xt({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]=M([]),[$,C]=M(!1),[g,y]=M(e.enableTTS),[w,I]=M(!1),[N,V]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let O=ae(()=>gt(e.containerId),[e.containerId]),[j,J]=M(e.authToken||null),K=ae(()=>Tt(e,()=>({authToken:j,storage:O}),S=>{let h=S({authToken:j,storage:O});h.authToken!==j&&J(h.authToken)}),[e,j,O]),k=St(e,K,O),H=Mt(e,K,O);L(()=>{for(let f=k.messages.length-1;f>=0;f--){let x=k.messages[f];if(x.type==="sub_agent_start"){V({key:x.metadata?.subAgentKey,name:x.metadata?.agentName});return}if(x.type==="sub_agent_end"){V(null);return}}},[k.messages]),L(()=>{let f=O.get(e.conversationIdKey);f&&k.loadConversation(f)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:k.messages,conversationId:k.conversationId,isLoading:k.isLoading,error:k.error})},[r,i,d,k.messages,k.conversationId,k.isLoading,k.error]);let v=z(async()=>{if(e.showConversationSidebar){C(!0);try{let f=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,x=await fetch(f,K.getFetchOptions({method:"GET"}));if(x.ok){let S=await x.json();p(S.results||S)}}catch(f){console.error("[ChatWidget] Failed to load conversations:",f),p([])}finally{C(!1)}}},[e,K]),b=z(()=>{let f=!u;a(f),f&&v()},[u,v]),P=z(f=>{f!==k.conversationId&&k.loadConversation(f),a(!1)},[k]),T=z(()=>{k.clearMessages(),a(!1)},[k]),F=z(f=>{k.sendMessage(f,{model:H.selectedModel,onAssistantMessage:x=>{}})},[k,g,H.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:f=>F(f),clearMessages:()=>k.clearMessages(),toggleTTS:()=>y(f=>!f),stopSpeech:()=>I(!1),setAuth:f=>{f.token!==void 0&&J(f.token)},clearAuth:()=>J(null)})},[k,o,F]),!e.embedded&&!r)return m`
260
383
  <button
261
384
  class="cw-fab"
262
385
  style=${{backgroundColor:e.primaryColor}}
263
- onClick=${()=>o(!0)}
386
+ onClick=${()=>s(!0)}
264
387
  >
265
388
  <svg class="cw-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
266
389
  <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>
267
390
  </svg>
268
391
  </button>
269
- `;let V=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
270
- <div class=${V} style=${{"--cw-primary":e.primaryColor}}>
392
+ `;let E=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
393
+ <div class=${E} style=${{"--cw-primary":e.primaryColor}}>
271
394
  ${e.showConversationSidebar&&m`
272
- <${dt}
395
+ <${kt}
273
396
  isOpen=${u}
274
- conversations=${f}
275
- conversationsLoading=${y}
276
- currentConversationId=${p.conversationId}
397
+ conversations=${_}
398
+ conversationsLoading=${$}
399
+ currentConversationId=${k.conversationId}
277
400
  onClose=${()=>a(!1)}
278
- onNewConversation=${M}
279
- onSwitchConversation=${O}
401
+ onNewConversation=${T}
402
+ onSwitchConversation=${P}
280
403
  />
281
404
  `}
282
405
 
283
- <${lt}
406
+ <${vt}
284
407
  config=${e}
285
- debugMode=${_}
408
+ debugMode=${d}
286
409
  isExpanded=${i}
287
410
  isSpeaking=${w}
288
- messagesCount=${p.messages.length}
289
- isLoading=${p.isLoading}
290
- currentAgent=${H}
291
- onClose=${()=>o(!1)}
411
+ messagesCount=${k.messages.length}
412
+ isLoading=${k.isLoading}
413
+ currentAgent=${N}
414
+ onClose=${()=>s(!1)}
292
415
  onToggleExpand=${()=>c(!i)}
293
- onToggleDebug=${()=>l(!_)}
294
- onToggleTTS=${()=>g(!k)}
295
- onClear=${p.clearMessages}
296
- onToggleSidebar=${I}
416
+ onToggleDebug=${()=>l(!d)}
417
+ onToggleTTS=${()=>y(!g)}
418
+ onClear=${k.clearMessages}
419
+ onToggleSidebar=${b}
297
420
  />
298
421
 
299
- ${_&&m`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
422
+ ${d&&m`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
300
423
 
301
- <${ut}
302
- messages=${p.messages}
303
- isLoading=${p.isLoading}
304
- hasMoreMessages=${p.hasMoreMessages}
305
- loadingMoreMessages=${p.loadingMoreMessages}
306
- onLoadMore=${p.loadMoreMessages}
307
- debugMode=${_}
424
+ <${$t}
425
+ messages=${k.messages}
426
+ isLoading=${k.isLoading}
427
+ hasMoreMessages=${k.hasMoreMessages}
428
+ loadingMoreMessages=${k.loadingMoreMessages}
429
+ onLoadMore=${k.loadMoreMessages}
430
+ onEditMessage=${k.editMessage}
431
+ onRetryMessage=${k.retryMessage}
432
+ debugMode=${d}
308
433
  markdownParser=${n}
309
434
  emptyStateTitle=${e.emptyStateTitle}
310
435
  emptyStateMessage=${e.emptyStateMessage}
311
436
  />
312
437
 
313
- ${p.error&&m`<div class="cw-error-bar">${p.error}</div>`}
438
+ ${k.error&&m`<div class="cw-error-bar">${k.error}</div>`}
314
439
 
315
- ${e.showModelSelector&&$.availableModels.length>0&&m`
316
- <${pt}
317
- availableModels=${$.availableModels}
318
- selectedModel=${$.selectedModel}
319
- onSelectModel=${$.selectModel}
320
- disabled=${p.isLoading}
440
+ ${e.showModelSelector&&H.availableModels.length>0&&m`
441
+ <${Ct}
442
+ availableModels=${H.availableModels}
443
+ selectedModel=${H.selectedModel}
444
+ onSelectModel=${H.selectModel}
445
+ disabled=${k.isLoading}
321
446
  />
322
447
  `}
323
448
 
324
- <${_t}
325
- onSend=${L}
326
- onCancel=${p.cancelRun}
327
- isLoading=${p.isLoading}
449
+ <${bt}
450
+ onSend=${F}
451
+ onCancel=${k.cancelRun}
452
+ isLoading=${k.isLoading}
328
453
  placeholder=${e.placeholder}
329
454
  primaryColor=${e.primaryColor}
330
455
  enableVoice=${e.enableVoice}
331
456
  />
332
457
  </div>
333
- `}var yt={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/"},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 vt(e){let t={...yt.apiPaths,...e.apiPaths||{}};return{...yt,...e,apiPaths:t}}var pe=new Map,Ot=0,x=null,xe=class{constructor(t={}){this.instanceId=`cw-${++Ot}`,this.config=vt(t),this.container=null,this._state={},this._apiRef={current:null},pe.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&&ue(m`<${gt}
458
+ `}var Et={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 It(e){let t={...Et.apiPaths,...e.apiPaths||{}};return{...Et,...e,apiPaths:t}}var be=new Map,Qt=0,A=null,Fe=class{constructor(t={}){this.instanceId=`cw-${++Qt}`,this.config=It(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&&he(m`<${xt}
334
459
  config=${{...this.config,...t}}
335
460
  onStateChange=${this._handleStateChange}
336
- markdownParser=${fe._enhancedMarkdownParser}
461
+ markdownParser=${ke._enhancedMarkdownParser}
337
462
  apiRef=${this._apiRef}
338
- />`,this.container)}destroy(){this.container&&(ue(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),pe.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}}};function wt(e={}){return new xe(e).init()}function Ut(e={}){return x&&x.destroy(),x=wt(e),x}function Ft(){x&&(x.destroy(),x=null)}function Lt(){x&&x.open()}function Wt(){x&&x.close()}function Kt(e){x&&x.send(e)}function Bt(){x&&x.clearMessages()}function jt(){x&&x.toggleTTS()}function Vt(){x&&x.stopSpeech()}function Jt(e){x&&x.setAuth(e)}function qt(){x&&x.clearAuth()}function zt(){return x?x.getState():null}function Gt(){return x?x.getConfig():null}var fe={createInstance:wt,getInstance:e=>pe.get(e),getAllInstances:()=>Array.from(pe.values()),init:Ut,destroy:Ft,open:Lt,close:Wt,send:Kt,clearMessages:Bt,toggleTTS:jt,stopSpeech:Vt,setAuth:Jt,clearAuth:qt,getState:zt,getConfig:Gt,_enhancedMarkdownParser:null};var Xt=fe;typeof window<"u"&&(window.ChatWidget=fe);return Tt(Qt);})();
463
+ />`,this.container)}destroy(){this.container&&(he(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 Rt(e={}){return new Fe(e).init()}function Zt(e={}){return A&&A.destroy(),A=Rt(e),A}function Yt(){A&&(A.destroy(),A=null)}function en(){A&&A.open()}function tn(){A&&A.close()}function nn(e){A&&A.send(e)}function on(){A&&A.clearMessages()}function sn(){A&&A.toggleTTS()}function rn(){A&&A.stopSpeech()}function an(e){A&&A.setAuth(e)}function ln(){A&&A.clearAuth()}function cn(){return A?A.getState():null}function un(){return A?A.getConfig():null}var ke={createInstance:Rt,getInstance:e=>be.get(e),getAllInstances:()=>Array.from(be.values()),init:Zt,destroy:Yt,open:en,close:tn,send:nn,clearMessages:on,toggleTTS:sn,stopSpeech:rn,setAuth:an,clearAuth:ln,getState:cn,getConfig:un,_enhancedMarkdownParser:null};var dn=ke;typeof window<"u"&&(window.ChatWidget=ke);return Ot(_n);})();