django-agent-studio 0.2.2__py3-none-any.whl → 0.2.4__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.
@@ -1693,6 +1693,13 @@
1693
1693
  Edit/Retry Message Actions
1694
1694
  ========================================== */
1695
1695
 
1696
+ /* Wrapper for message bubble + action buttons */
1697
+ .cw-message-wrapper {
1698
+ position: relative;
1699
+ display: inline-block;
1700
+ max-width: 100%;
1701
+ }
1702
+
1696
1703
  /* Container for action buttons - appears on hover */
1697
1704
  .cw-message-actions {
1698
1705
  display: flex;
@@ -1702,6 +1709,7 @@
1702
1709
  position: absolute;
1703
1710
  top: 50%;
1704
1711
  transform: translateY(-50%);
1712
+ z-index: 1;
1705
1713
  }
1706
1714
 
1707
1715
  /* Position on left side (for user messages - they're on the right) */
@@ -1,10 +1,10 @@
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,Le,je,Je,Ve,xe,Se,Me,Wt,oe={},qe=[],Lt=/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 Ue(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!ue.__r++||Le!=D.debounceRendering)&&((Le=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=Ut(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 Ut(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"||Lt.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),Ue(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ue(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=[],L=D,rt=L.__b,at=L.__r,it=L.diffed,lt=L.__c,ct=L.unmount,ut=L.__;function Pe(e,t){L.__h&&L.__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 U(e,t){var n=Pe(se++,3);!L.__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=[],L.__e(t,e.__v)}}L.__b=function(e){W=null,rt&&rt(e)},L.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ut&&ut(e,t)},L.__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},L.diffed=function(e){it&&it(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_t.push(t)!==1&&st===L.requestAnimationFrame||((st=L.requestAnimationFrame)||Vt)(Jt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Ae=W=null},L.__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=[],L.__e(o,n.__v)}}),lt&&lt(e,t)},L.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&&L.__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`
1
+ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var Ht=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var n in t)Ce(e,n,{get:t[n],enumerable:!0})},Ot=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Pt(t))!Ht.call(e,r)&&r!==n&&Ce(e,r,{get:()=>t[r],enumerable:!(o=Dt(t,r))||o.enumerable});return e};var Ft=e=>Ot(Ce({},"__esModule",{value:!0}),e);var _n={};Nt(_n,{ChatWidget:()=>ke,default:()=>dn});var de,P,ze,Ut,Y,We,je,Je,Ve,xe,Se,Me,Wt,oe={},qe=[],Lt=/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&&P.vnode!=null&&P.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++||We!=P.debounceRendering)&&((We=P.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,P.vnode&&P.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,f,$,k,g,y,w=o&&o.__k||qe,A=t.length;for(d=Kt(n,t,w,d,A),a=0;a<A;a++)(f=n.__k[a])!=null&&(p=f.__i==-1?oe:w[f.__i]||oe,f.__i=a,g=Ie(e,f,p,r,s,i,c,d,l,u),$=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Ae(p.ref,null,f),u.push(f.ref,f.__c||$,f)),k==null&&$!=null&&(k=$),(y=!!(4&f.__u))||p.__k===f.__k?d=Qe(f,d,e,y):typeof f.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),f.__u&=-7);return n.__e=k,d}function Kt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,p=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=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+p,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Bt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?p--:r<u&&p++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?p--:l==d+1?p++:(l>d?p--:p++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=te(c)),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 Bt(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"||Lt.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(P.event?P.event(t):t)}}}function Ie(e,t,n,o,r,s,i,c,d,l){var u,a,p,f,$,k,g,y,w,A,O,V,F,j,J,K,b,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=P.__b)&&u(t);e:if(typeof N=="function")try{if(y=t.props,w="prototype"in N&&N.prototype.render,A=(u=N.contextType)&&o[u.__c],O=u?A?A.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new N(y,O):(t.__c=a=new ne(y,O),a.constructor=N,a.render=jt),A&&A.sub(a),a.state||(a.state={}),a.__n=o,p=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&N.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=Q({},a.__s)),Q(a.__s,N.getDerivedStateFromProps(y,a.__s))),f=a.props,$=a.state,a.__v=t,p)w&&N.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&N.getDerivedStateFromProps==null&&y!==f&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,O),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,O)===!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,O),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(f,$,k)})}if(a.context=O,a.props=y,a.__P=e,a.__e=!1,F=P.__r,j=0,w){for(a.state=a.__s,a.__d=!1,F&&F(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,F&&F(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&&!p&&a.getSnapshotBeforeUpdate!=null&&(k=a.getSnapshotBeforeUpdate(f,$)),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(b=s.length;b--;)Ee(s[b]);Te(t)}else t.__e=n.__e,t.__k=n.__k,v.then||Te(t);P.__e(v,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=zt(n.__e,t,n,o,r,s,i,d,l);return(u=P.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++)Ae(n[o],n[++o],n[++o]);P.__c&&P.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){P.__e(s,r.__v)}})}function Ye(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:_e(e)?e.map(Ye):Q({},e)}function zt(e,t,n,o,r,s,i,c,d){var l,u,a,p,f,$,k,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((f=s[l])&&"setAttribute"in f==!!w&&(w?f.localName==w:f.nodeType==3)){e=f,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(y);e=document.createElementNS(r,w,y.is&&y),c&&(P.__m&&P.__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[(f=e.attributes[l]).name]=f.value;for(l in g)if(f=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=f;else if(!(l in y)){if(l=="value"&&"defaultValue"in y||l=="checked"&&"defaultChecked"in y)continue;le(e,l,null,f,r)}}for(l in y)f=y[l],l=="children"?p=f:l=="dangerouslySetInnerHTML"?u=f:l=="value"?$=f:l=="checked"?k=f:c&&typeof f!="function"||g[l]===f||le(e,l,f,g[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Xe(t.type=="template"?e.content:e,_e(p)?p:[p],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&te(n,0),c,d),s!=null)for(l=s.length;l--;)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",k!=null&&k!=e[l]&&le(e,l,k,g[l],r))}return e}function Ae(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){P.__e(r,n)}}function et(e,t,n){var o,r;if(P.unmount&&P.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Ae(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){P.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&et(o[r],t,n||typeof e.type!="function");n||Ee(e.__e),e.__c=e.__=e.__e=void 0}function jt(e,t,n){return this.constructor(e,n)}function he(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),P.__&&P.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],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,P={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},ze=0,Ut=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(p){s===1&&(p||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,p,i):s===3&&(p||i)?(d.push(3,p,i),s=2):s===2&&i==="..."&&p?d.push(4,p,0):s===2&&i&&!p?d.push(5,0,!0,i):s>=5&&((i||!p&&s===5)&&(d.push(s,0,i,r),s=6),p&&(d.push(s,p,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
2
+ `||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var m=ot.bind(pe);var se,U,Re,st,re=0,_t=[],W=P,rt=W.__b,at=W.__r,it=W.diffed,lt=W.__c,ct=W.unmount,ut=W.__;function Pe(e,t){W.__h&&W.__h(U,e,re||t),re=0;var n=U.__H||(U.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function M(e){return re=1,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=U,!U.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(p){return!!p.__c});if(u.every(function(p){return!p.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};U.__f=!0;var s=U.shouldComponentUpdate,i=U.componentWillUpdate;U.componentWillUpdate=function(c,d,l){if(this.__e){var u=s;s=void 0,r(c,d,l),s=u}i&&i.call(this,c,d,l)},U.shouldComponentUpdate=r}return o.__N||o.__}function L(e,t){var n=Pe(se++,3);!W.__s&&pt(n.__H,t)&&(n.__=e,n.u=t,U.__H.__h.push(n))}function G(e){return re=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=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 Vt(){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=[],W.__e(t,e.__v)}}W.__b=function(e){U=null,rt&&rt(e)},W.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ut&&ut(e,t)},W.__r=function(e){at&&at(e),se=0;var t=(U=e.__c).__H;t&&(Re===U?(t.__h=[],U.__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)),Re=U},W.diffed=function(e){it&&it(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_t.push(t)!==1&&st===W.requestAnimationFrame||((st=W.requestAnimationFrame)||qt)(Vt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Re=U=null},W.__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=[],W.__e(o,n.__v)}}),lt&&lt(e,t)},W.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&&W.__e(t,n.__v))};var dt=typeof requestAnimationFrame=="function";function qt(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=U,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),U=t}function De(e){var t=U;e.__c=e.__(),U=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 Gt(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])=>[Gt(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:p}){let{title:f,primaryColor:$,embedded:k,showConversationSidebar:g,showClearButton:y,showDebugButton:w,enableDebugMode:A,showTTSButton:O,showExpandButton:V,enableTTS:F,elevenLabsApiKey:j,ttsProxyUrl:J}=e,K=j||J;return m`
3
3
  <div class="cw-header" style=${{backgroundColor:$}}>
4
4
  ${g&&m`
5
5
  <button
6
6
  class="cw-header-btn cw-hamburger"
7
- onClick=${_}
7
+ onClick=${p}
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,7 +16,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
16
16
  `}
17
17
 
18
18
  <div class="cw-title-container">
19
- <span class="cw-title">${B(p)}</span>
19
+ <span class="cw-title">${B(f)}</span>
20
20
  ${i&&m`
21
21
  <span class="cw-current-agent" title="Currently active agent">
22
22
  <span class="cw-agent-indicator">🤖</span>
@@ -35,7 +35,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
35
35
  >🗑️</button>
36
36
  `}
37
37
 
38
- ${w&&I&&m`
38
+ ${w&&A&&m`
39
39
  <button
40
40
  class="cw-header-btn ${t?"cw-btn-active":""}"
41
41
  onClick=${l}
@@ -43,15 +43,15 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
43
43
  >🐛</button>
44
44
  `}
45
45
 
46
- ${N&&K&&m`
46
+ ${O&&K&&m`
47
47
  <button
48
- class="cw-header-btn ${O?"cw-btn-active":""}"
48
+ class="cw-header-btn ${F?"cw-btn-active":""}"
49
49
  onClick=${u}
50
50
  title="TTS"
51
- >${O?"\u{1F50A}":"\u{1F507}"}</button>
51
+ >${F?"\u{1F50A}":"\u{1F507}"}</button>
52
52
  `}
53
53
 
54
- ${V&&!C&&m`
54
+ ${V&&!k&&m`
55
55
  <button
56
56
  class="cw-header-btn"
57
57
  onClick=${d}
@@ -59,7 +59,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
59
59
  >${n?"\u2296":"\u2295"}</button>
60
60
  `}
61
61
 
62
- ${!C&&m`
62
+ ${!k&&m`
63
63
  <button
64
64
  class="cw-header-btn"
65
65
  onClick=${c}
@@ -79,17 +79,19 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
79
79
  onClick=${n}
80
80
  title="Show message payload"
81
81
  >{ }</button>
82
- `}function Gt({onEdit:e,onRetry:t,isLoading:n,position:o}){return n?null:m`
82
+ `}function wt({onEdit:e,onRetry:t,isLoading:n,position:o,showEdit:r=!0}){return n?null:m`
83
83
  <div class="cw-message-actions cw-message-actions-${o||"left"}">
84
- <button
85
- class="cw-message-action-btn"
86
- onClick=${e}
87
- title="Edit message"
88
- >
89
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
90
- <path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>
91
- </svg>
92
- </button>
84
+ ${r&&m`
85
+ <button
86
+ class="cw-message-action-btn"
87
+ onClick=${e}
88
+ title="Edit message"
89
+ >
90
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
91
+ <path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>
92
+ </svg>
93
+ </button>
94
+ `}
93
95
  <button
94
96
  class="cw-message-action-btn"
95
97
  onClick=${t}
@@ -103,7 +105,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
103
105
  </svg>
104
106
  </button>
105
107
  </div>
106
- `}function Xt({initialContent:e,onSave:t,onCancel:n}){let[o,r]=M(e),s=G(null);return U(()=>{s.current&&(s.current.focus(),s.current.setSelectionRange(o.length,o.length),s.current.style.height="auto",s.current.style.height=s.current.scrollHeight+"px")},[]),m`
108
+ `}function 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`
107
109
  <div class="cw-inline-edit">
108
110
  <textarea
109
111
  ref=${s}
@@ -127,67 +129,78 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
127
129
  >Save & Send</button>
128
130
  </div>
129
131
  </div>
130
- `}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`
131
- <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${I?"cw-agent-returned":""}" style="position: relative;">
132
- <span class="cw-agent-context-icon">${w?"\u{1F517}":I?"\u2713":"\u{1F916}"}</span>
132
+ `}function $t({msg:e,debugMode:t,markdownParser:n,onEdit:o,onRetry:r,isLoading:s,messageIndex:i}){let[c,d]=M(!1),[l,u]=M(!1),[a,p]=M(!1),f=e.role==="user",$=e.role==="system",k=e.type==="tool_call",g=e.type==="tool_result",y=e.type==="error",w=e.type==="sub_agent_start",A=e.type==="sub_agent_end",O=e.type==="agent_context";if($&&!t)return null;if(w||A||O)return m`
133
+ <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${A?"cw-agent-returned":""}" style="position: relative;">
134
+ <span class="cw-agent-context-icon">${w?"\u{1F517}":A?"\u2713":"\u{1F916}"}</span>
133
135
  <span class="cw-agent-context-text">${e.content}</span>
134
136
  ${e.metadata?.agentName&&m`
135
137
  <span class="cw-agent-context-name">${e.metadata.agentName}</span>
136
138
  `}
137
139
  ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
138
140
  </div>
139
- `;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`
141
+ `;if(k||g){let C=e.metadata?.arguments||e.metadata?.result,x=_=>{if(typeof _=="string")try{return JSON.stringify(JSON.parse(_),null,2)}catch{return _}return JSON.stringify(_,null,2)};return m`
140
142
  <div class="cw-tool-message ${g?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
141
- <span class="cw-tool-label" onClick=${()=>b&&d(!c)}>
143
+ <span class="cw-tool-label" onClick=${()=>C&&d(!c)}>
142
144
  ${e.content}
143
- ${b&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
145
+ ${C&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
144
146
  </span>
145
- ${c&&b&&m`
146
- <pre class="cw-tool-details">${B(P(C?e.metadata.arguments:e.metadata.result))}</pre>
147
+ ${c&&C&&m`
148
+ <pre class="cw-tool-details">${B(x(k?e.metadata.arguments:e.metadata.result))}</pre>
147
149
  `}
148
150
  ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
149
151
  </div>
150
- `}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`
152
+ `}let V=["cw-message",f&&"cw-message-user",y&&"cw-message-error"].filter(Boolean).join(" "),F=`cw-message-row ${f?"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`
151
153
  <div class="cw-message-attachments">
152
- ${e.files.map(b=>b.type&&b.type.startsWith("image/")?m`
153
- <a class="cw-attachment-thumbnail" href=${b.url} target="_blank" title=${b.name}>
154
- <img src=${b.url} alt=${b.name} />
154
+ ${e.files.map(C=>C.type&&C.type.startsWith("image/")?m`
155
+ <a class="cw-attachment-thumbnail" href=${C.url} target="_blank" title=${C.name}>
156
+ <img src=${C.url} alt=${C.name} />
155
157
  </a>
156
158
  `:m`
157
- <a class="cw-attachment-file" href=${b.url} target="_blank" title=${b.name}>
158
- <span class="cw-attachment-icon">${$e(b.type)}</span>
159
+ <a class="cw-attachment-file" href=${C.url} target="_blank" title=${C.name}>
160
+ <span class="cw-attachment-icon">${$e(C.type)}</span>
159
161
  <span class="cw-attachment-info">
160
- <span class="cw-attachment-name">${b.name}</span>
161
- <span class="cw-attachment-size">${we(b.size)}</span>
162
+ <span class="cw-attachment-name">${C.name}</span>
163
+ <span class="cw-attachment-size">${we(C.size)}</span>
162
164
  </span>
163
165
  </a>
164
166
  `)}
165
167
  </div>
166
- `:null,k=b=>{_(!1),o&&b!==e.content&&o(i,b)},H=()=>{r&&r(i)};if(p&&a)return m`
167
- <div class=${O} style="position: relative;">
168
+ `:null,b=C=>{p(!1),o&&o(i,C)},N=()=>{r&&r(i)};if(f&&a)return m`
169
+ <div class=${F} style="position: relative;">
168
170
  ${K()}
169
171
  <${Xt}
170
172
  initialContent=${e.content}
171
- onSave=${k}
172
- onCancel=${()=>_(!1)}
173
+ onSave=${b}
174
+ onCancel=${()=>p(!1)}
173
175
  />
174
176
  </div>
175
- `;let v=p&&o&&r;return m`
176
- <div class="${O} ${v?"cw-message-row-with-actions":""}" style="position: relative;">
177
+ `;let v=f&&o&&r,H=e.role==="assistant"&&r&&!s;return m`
178
+ <div class="${F} ${v||H?"cw-message-row-with-actions":""}">
177
179
  ${K()}
178
- <div class=${V} dangerouslySetInnerHTML=${{__html:j}} />
179
- ${v&&m`
180
- <${Gt}
181
- onEdit=${()=>_(!0)}
182
- onRetry=${H}
183
- isLoading=${s}
184
- position="left"
185
- />
186
- `}
180
+ <div class="cw-message-wrapper" style="position: relative; display: inline-block;">
181
+ <div class=${V} dangerouslySetInnerHTML=${{__html:j}} />
182
+ ${v&&m`
183
+ <${wt}
184
+ onEdit=${()=>p(!0)}
185
+ onRetry=${N}
186
+ isLoading=${s}
187
+ position="left"
188
+ showEdit=${!0}
189
+ />
190
+ `}
191
+ ${H&&m`
192
+ <${wt}
193
+ onRetry=${N}
194
+ isLoading=${s}
195
+ position="right"
196
+ showEdit=${!1}
197
+ />
198
+ `}
199
+ </div>
187
200
  ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
188
201
  </div>
189
- `}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})}};U(()=>{let C=a.current;C&&_.current&&requestAnimationFrame(()=>{C.scrollTop=C.scrollHeight})},[e,t]),U(()=>{let C=a.current;C&&e.length<=2&&(_.current=!0,requestAnimationFrame(()=>{C.scrollTop=C.scrollHeight}))},[e.length]);let $=e.length===0;return m`
190
- <div class="cw-messages" ref=${a} onScroll=${p}>
202
+ `}function bt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:o,onLoadMore:r,onEditMessage:s,onRetryMessage:i,debugMode:c,markdownParser:d,emptyStateTitle:l,emptyStateMessage:u}){let a=G(null),p=G(!0),f=k=>{let g=k.target,y=g.scrollHeight-g.scrollTop-g.clientHeight<100;if(p.current=y,g.scrollTop<50&&n&&!o){let w=g.scrollHeight;r().then(()=>{let A=g.scrollHeight;g.scrollTop=A-w+g.scrollTop})}};L(()=>{let k=a.current;k&&p.current&&requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight})},[e,t]),L(()=>{let k=a.current;k&&e.length<=2&&(p.current=!0,requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight}))},[e.length]);let $=e.length===0;return m`
203
+ <div class="cw-messages" ref=${a} onScroll=${f}>
191
204
  ${$&&m`
192
205
  <div class="cw-empty-state">
193
206
  <svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -204,10 +217,10 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
204
217
  </div>
205
218
  `}
206
219
 
207
- ${e.map((C,g)=>m`
208
- <${wt}
209
- key=${C.id}
210
- msg=${C}
220
+ ${e.map((k,g)=>m`
221
+ <${$t}
222
+ key=${k.id}
223
+ msg=${k}
211
224
  messageIndex=${g}
212
225
  debugMode=${c}
213
226
  markdownParser=${d}
@@ -226,23 +239,23 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
226
239
  </div>
227
240
  `}
228
241
  </div>
229
- `}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);U(()=>{!n&&g.current&&g.current.focus()},[n]),U(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=Math.min(g.current.scrollHeight,150)+"px")},[c]),U(()=>()=>{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`
242
+ `}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function kt({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=M(""),[l,u]=M([]),[a,p]=M(!1),[f,$]=M(!1),[k]=M(()=>!!Oe),g=G(null),y=G(null),w=G(null),A=G(!1);L(()=>{!n&&g.current&&g.current.focus()},[n]),L(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=Math.min(g.current.scrollHeight,150)+"px")},[c]),L(()=>()=>{A.current=!1,w.current&&w.current.abort()},[]);let O=_=>{_.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=_=>{let T=Array.from(_.target.files||[]);T.length>0&&u(S=>[...S,...T])},F=_=>{u(T=>T.filter((S,h)=>h!==_))},j=_=>{_.preventDefault(),y.current&&!n&&y.current.click()},J=_=>{_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),O(_))},K=_=>{n&&t&&(_.preventDefault(),t())},b=()=>{if(!Oe||n)return;A.current=!0;let _=new Oe;_.continuous=!0,_.interimResults=!0,_.lang=navigator.language||"en-US";let T=c,S="";_.onstart=()=>{$(!0)},_.onresult=h=>{S="";for(let R=h.resultIndex;R<h.results.length;R++){let q=h.results[R][0].transcript;h.results[R].isFinal?T+=(T?" ":"")+q:S+=q}d(T+(S?" "+S:""))},_.onerror=h=>{if(h.error==="no-speech"||h.error==="aborted"){console.log("[ChatWidget] Speech recognition:",h.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",h.error),A.current=!1,$(!1),d(T||c)},_.onend=()=>{if(A.current){console.log("[ChatWidget] Recognition paused, restarting...");try{_.start();return}catch(h){console.warn("[ChatWidget] Could not restart recognition:",h)}}$(!1),T&&d(T),w.current=null},w.current=_,_.start()},N=()=>{A.current=!1,w.current&&w.current.stop()},v=_=>{_.preventDefault(),f?N():b()},I=m`
230
243
  <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
231
244
  <rect x="2" y="2" width="10" height="10" rx="1" />
232
245
  </svg>
233
- `,P=m`
246
+ `,H=m`
234
247
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
235
248
  <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
236
249
  <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
237
250
  <line x1="12" y1="19" x2="12" y2="23"></line>
238
251
  <line x1="8" y1="23" x2="16" y2="23"></line>
239
252
  </svg>
240
- `,T=m`
253
+ `,E=m`
241
254
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
242
255
  <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>
243
256
  </svg>
244
- `,F=s&&C,E=i;return m`
245
- <form class="cw-input-form" onSubmit=${N}>
257
+ `,C=s&&k,x=i;return m`
258
+ <form class="cw-input-form" onSubmit=${O}>
246
259
  <input
247
260
  type="file"
248
261
  ref=${y}
@@ -252,15 +265,15 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
252
265
  />
253
266
  ${l.length>0&&m`
254
267
  <div class="cw-file-chips">
255
- ${l.map((f,x)=>m`
256
- <div class="cw-file-chip" key=${x}>
257
- <span class="cw-file-chip-icon">${$e(f.type)}</span>
258
- <span class="cw-file-chip-name" title=${f.name}>${f.name.length>20?f.name.substring(0,17)+"...":f.name}</span>
259
- <span class="cw-file-chip-size">(${we(f.size)})</span>
268
+ ${l.map((_,T)=>m`
269
+ <div class="cw-file-chip" key=${T}>
270
+ <span class="cw-file-chip-icon">${$e(_.type)}</span>
271
+ <span class="cw-file-chip-name" title=${_.name}>${_.name.length>20?_.name.substring(0,17)+"...":_.name}</span>
272
+ <span class="cw-file-chip-size">(${we(_.size)})</span>
260
273
  <button
261
274
  type="button"
262
275
  class="cw-file-chip-remove"
263
- onClick=${()=>O(x)}
276
+ onClick=${()=>F(T)}
264
277
  title="Remove file"
265
278
  >×</button>
266
279
  </div>
@@ -272,12 +285,12 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
272
285
  class="cw-input"
273
286
  placeholder=${B(o)}
274
287
  value=${c}
275
- onInput=${f=>d(f.target.value)}
288
+ onInput=${_=>d(_.target.value)}
276
289
  onKeyDown=${J}
277
290
  disabled=${n}
278
291
  rows="1"
279
292
  />
280
- ${E&&m`
293
+ ${x&&m`
281
294
  <button
282
295
  type="button"
283
296
  class="cw-attach-btn"
@@ -285,18 +298,18 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
285
298
  disabled=${n}
286
299
  title="Attach files"
287
300
  >
288
- ${T}
301
+ ${E}
289
302
  </button>
290
303
  `}
291
- ${F&&m`
304
+ ${C&&m`
292
305
  <button
293
306
  type="button"
294
- class=${`cw-voice-btn ${p?"cw-voice-btn-recording":""}`}
307
+ class=${`cw-voice-btn ${f?"cw-voice-btn-recording":""}`}
295
308
  onClick=${v}
296
309
  disabled=${n}
297
- title=${p?"Stop recording":"Voice input"}
310
+ title=${f?"Stop recording":"Voice input"}
298
311
  >
299
- ${P}
312
+ ${H}
300
313
  </button>
301
314
  `}
302
315
  <button
@@ -304,14 +317,14 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
304
317
  class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&a?"cw-send-btn-stop":""}`}
305
318
  style=${{backgroundColor:n&&a?"#dc2626":r}}
306
319
  onClick=${K}
307
- onMouseEnter=${()=>_(!0)}
308
- onMouseLeave=${()=>_(!1)}
320
+ onMouseEnter=${()=>p(!0)}
321
+ onMouseLeave=${()=>p(!1)}
309
322
  title=${n?"Stop":"Send"}
310
323
  >
311
- ${n?a?b:m`<span class="cw-spinner"></span>`:"\u27A4"}
324
+ ${n?a?I:m`<span class="cw-spinner"></span>`:"\u27A4"}
312
325
  </button>
313
326
  </form>
314
- `}function kt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
327
+ `}function Ct({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
315
328
  <div class="cw-sidebar ${e?"cw-sidebar-open":""}">
316
329
  <div class="cw-sidebar-header">
317
330
  <span>Conversations</span>
@@ -350,7 +363,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
350
363
  class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
351
364
  onClick=${r}
352
365
  />
353
- `}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`
366
+ `}function St({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`
354
367
  <div class="cw-model-selector">
355
368
  <button
356
369
  class="cw-model-btn"
@@ -381,7 +394,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
381
394
  </div>
382
395
  `}
383
396
  </div>
384
- `}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);U(()=>{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 U(()=>()=>{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);U(()=>{(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);U(()=>{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);U(()=>{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]),U(()=>{let f=O.get(e.conversationIdKey);f&&k.loadConversation(f)},[]),U(()=>{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(U(()=>{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`
397
+ `}function Mt(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,p]=M(!1),[f,$]=M(!1),[k,g]=M(0),y=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let A=z(async(v,I,H)=>{y.current&&y.current.close();let E=e.apiPaths.runEvents.replace("{runId}",v),C=`${e.backendUrl}${E}`;I&&(C+=`?anonymous_token=${encodeURIComponent(I)}`);let x=new EventSource(C);y.current=x;let _="";x.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&&(_+=R,r(q=>{let X=q[q.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...X,content:_}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:_,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.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)}}),x.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)}}),x.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)}}),x.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)}}),x.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 T=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),x.close(),y.current=null,_&&H&&H(_)};x.addEventListener("run.succeeded",T),x.addEventListener("run.failed",T),x.addEventListener("run.cancelled",T),x.addEventListener("run.timed_out",T),x.onerror=()=>{i(!1),x.close(),y.current=null}},[e]),O=z(async(v,I={},H={})=>{if(!v.trim()||s)return;let E=[],C={};typeof I=="function"?C={onAssistantMessage:I}:Array.isArray(I)?(E=I,C=H):C=I||{};let{model:x,onAssistantMessage:_}=C;i(!0),d(null);let T={id:ve(),role:"user",content:v.trim(),timestamp:new Date,type:"message",files:E.length>0?E.map(S=>({name:S.name,size:S.size,type:S.type})):void 0};r(S=>[...S,T]);try{let S=await t.getOrCreateSession(),h;if(E.length>0){let ee=e.apiCaseStyle!=="camel",Ue=ie=>ee?He(ie):ie,Z=new FormData;Z.append(Ue("agentKey"),e.agentKey),l&&Z.append(Ue("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})),x&&Z.append("model",x),E.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},...x&&{model:x}});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 A(X.id,S,_)}catch(S){d(S.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,A]),V=z(async()=>{let v=w.current;if(!(!v||!s))try{let I=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",v):`${e.apiPaths.runs}${v}/cancel/`;(await fetch(`${e.backendUrl}${I}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(y.current&&(y.current.close(),y.current=null),i(!1),w.current=null,r(E=>[...E,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(I){console.error("[ChatWidget] Failed to cancel run:",I)}},[e,t,s]),F=z(()=>{r([]),u(null),d(null),p(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=v=>{let I={id:ve(),role:v.role,timestamp:v.timestamp?new Date(v.timestamp):new Date};if(v.role==="tool")return{...I,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(E=>({id:ve(),role:"assistant",content:`\u{1F527} ${E.function?.name||E.name||"tool"}`,timestamp:I.timestamp,type:"tool_call",metadata:{toolName:E.function?.name||E.name,arguments:E.function?.arguments||E.arguments,toolCallId:E.id}}));let H=typeof v.content=="string"?v.content:JSON.stringify(v.content);return v.role==="assistant"&&!H?.trim()?null:{...I,content:H,type:"message"}},J=z(async v=>{i(!0),r([]),u(v);try{let I=await t.getOrCreateSession(),E=`${e.backendUrl}${e.apiPaths.conversations}${v}/?limit=10&offset=0`,C=await fetch(E,t.getFetchOptions({method:"GET"},I));if(C.ok){let x=await C.json(),_=t.transformResponse(x);_.messages&&r(_.messages.flatMap(j).filter(Boolean)),p(_.hasMore||!1),g(_.messages?.length||0)}else C.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(I){console.error("[ChatWidget] Failed to load conversation:",I)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||f||!a)){$(!0);try{let v=await t.getOrCreateSession(),H=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${k}`,E=await fetch(H,t.getFetchOptions({method:"GET"},v));if(E.ok){let C=await E.json(),x=t.transformResponse(C);if(x.messages?.length>0){let _=x.messages.flatMap(j).filter(Boolean);r(T=>[..._,...T]),g(T=>T+x.messages.length),p(x.hasMore||!1)}else p(!1)}}catch(v){console.error("[ChatWidget] Failed to load more messages:",v)}finally{$(!1)}}},[e,t,l,k,f,a]),b=z(async(v,I,H={})=>{if(s)return;let E=o[v];if(!E||E.role!=="user")return;let C=o.slice(0,v);r(C),await O(I,H)},[o,s,O]),N=z(async(v,I={})=>{if(s)return;let H=o[v];if(!H)return;let E=v,C=H;if(H.role==="assistant"){for(let _=v-1;_>=0;_--)if(o[_].role==="user"){E=_,C=o[_];break}if(C.role!=="user")return}else if(H.role!=="user")return;let x=o.slice(0,E);r(x),await O(C.content,I)},[o,s,O]);return L(()=>()=>{y.current&&y.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:f,sendMessage:O,cancelRun:V,clearMessages:F,loadConversation:J,loadMoreMessages:K,setConversationId:u,editMessage:b,retryMessage:N}}function Tt(e,t,n){let[o,r]=M([]),[s,i]=M(null),[c,d]=M(null),[l,u]=M(!1);L(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let $=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if($.ok){let k=await $.json(),g=k.models||[];r(g),d(k.default);let y=n?.get(e.modelKey);y&&g.some(w=>w.id===y)?i(y):i(k.default)}}catch($){console.warn("[ChatWidget] Failed to load models:",$)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=z(f=>{i(f),n?.set(e.modelKey,f)},[e.modelKey,n]),p=z(()=>o.find(f=>f.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:p}}function xt(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={},p=l||e.authToken||t().authToken;if(u==="token"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[f]=$?`${$} ${p}`:p}else if(u==="jwt"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[f]=$?`${$} ${p}`:p}else if(u==="anonymous"&&p){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[f]=p}if(u==="session"){let f=yt(e.csrfCookieName);f&&(a["X-CSRFToken"]=f)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),p={...l};return p.headers={...p.headers,...i(u)},a==="session"&&(p.credentials="include"),p},getOrCreateSession:async()=>{let l=s(),u=t();if(l!=="anonymous")return e.authToken||u.authToken;if(u.authToken)return u.authToken;let a=e.anonymousTokenKey||e.sessionTokenKey,p=u.storage?.get(a);if(p)return n(f=>({...f,authToken:p})),p;try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let k=await $.json();return n(g=>({...g,authToken:k.token})),u.storage?.set(a,k.token),k.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},transformRequest:o,transformResponse:r}}function Et({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=M(e.embedded||e.forceOpen===!0),[i,c]=M(!1),[d,l]=M(!1),[u,a]=M(!1),[p,f]=M([]),[$,k]=M(!1),[g,y]=M(e.enableTTS),[w,A]=M(!1),[O,V]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let F=ae(()=>gt(e.containerId),[e.containerId]),[j,J]=M(e.authToken||null),K=ae(()=>xt(e,()=>({authToken:j,storage:F}),S=>{let h=S({authToken:j,storage:F});h.authToken!==j&&J(h.authToken)}),[e,j,F]),b=Mt(e,K,F),N=Tt(e,K,F);L(()=>{for(let _=b.messages.length-1;_>=0;_--){let T=b.messages[_];if(T.type==="sub_agent_start"){V({key:T.metadata?.subAgentKey,name:T.metadata?.agentName});return}if(T.type==="sub_agent_end"){V(null);return}}},[b.messages]),L(()=>{let _=F.get(e.conversationIdKey);_&&b.loadConversation(_)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:b.messages,conversationId:b.conversationId,isLoading:b.isLoading,error:b.error})},[r,i,d,b.messages,b.conversationId,b.isLoading,b.error]);let v=z(async()=>{if(e.showConversationSidebar){k(!0);try{let _=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,T=await fetch(_,K.getFetchOptions({method:"GET"}));if(T.ok){let S=await T.json();f(S.results||S)}}catch(_){console.error("[ChatWidget] Failed to load conversations:",_),f([])}finally{k(!1)}}},[e,K]),I=z(()=>{let _=!u;a(_),_&&v()},[u,v]),H=z(_=>{_!==b.conversationId&&b.loadConversation(_),a(!1)},[b]),E=z(()=>{b.clearMessages(),a(!1)},[b]),C=z(_=>{b.sendMessage(_,{model:N.selectedModel,onAssistantMessage:T=>{}})},[b,g,N.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:_=>C(_),clearMessages:()=>b.clearMessages(),toggleTTS:()=>y(_=>!_),stopSpeech:()=>A(!1),setAuth:_=>{_.token!==void 0&&J(_.token)},clearAuth:()=>J(null)})},[b,o,C]),!e.embedded&&!r)return m`
385
398
  <button
386
399
  class="cw-fab"
387
400
  style=${{backgroundColor:e.primaryColor}}
@@ -391,17 +404,17 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
391
404
  <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>
392
405
  </svg>
393
406
  </button>
394
- `;let E=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
395
- <div class=${E} style=${{"--cw-primary":e.primaryColor}}>
407
+ `;let x=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
408
+ <div class=${x} style=${{"--cw-primary":e.primaryColor}}>
396
409
  ${e.showConversationSidebar&&m`
397
- <${kt}
410
+ <${Ct}
398
411
  isOpen=${u}
399
- conversations=${_}
412
+ conversations=${p}
400
413
  conversationsLoading=${$}
401
- currentConversationId=${k.conversationId}
414
+ currentConversationId=${b.conversationId}
402
415
  onClose=${()=>a(!1)}
403
- onNewConversation=${T}
404
- onSwitchConversation=${P}
416
+ onNewConversation=${E}
417
+ onSwitchConversation=${H}
405
418
  />
406
419
  `}
407
420
 
@@ -410,56 +423,56 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
410
423
  debugMode=${d}
411
424
  isExpanded=${i}
412
425
  isSpeaking=${w}
413
- messagesCount=${k.messages.length}
414
- isLoading=${k.isLoading}
415
- currentAgent=${N}
426
+ messagesCount=${b.messages.length}
427
+ isLoading=${b.isLoading}
428
+ currentAgent=${O}
416
429
  onClose=${()=>s(!1)}
417
430
  onToggleExpand=${()=>c(!i)}
418
431
  onToggleDebug=${()=>l(!d)}
419
432
  onToggleTTS=${()=>y(!g)}
420
- onClear=${k.clearMessages}
421
- onToggleSidebar=${b}
433
+ onClear=${b.clearMessages}
434
+ onToggleSidebar=${I}
422
435
  />
423
436
 
424
437
  ${d&&m`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
425
438
 
426
- <${$t}
427
- messages=${k.messages}
428
- isLoading=${k.isLoading}
429
- hasMoreMessages=${k.hasMoreMessages}
430
- loadingMoreMessages=${k.loadingMoreMessages}
431
- onLoadMore=${k.loadMoreMessages}
432
- onEditMessage=${k.editMessage}
433
- onRetryMessage=${k.retryMessage}
439
+ <${bt}
440
+ messages=${b.messages}
441
+ isLoading=${b.isLoading}
442
+ hasMoreMessages=${b.hasMoreMessages}
443
+ loadingMoreMessages=${b.loadingMoreMessages}
444
+ onLoadMore=${b.loadMoreMessages}
445
+ onEditMessage=${b.editMessage}
446
+ onRetryMessage=${b.retryMessage}
434
447
  debugMode=${d}
435
448
  markdownParser=${n}
436
449
  emptyStateTitle=${e.emptyStateTitle}
437
450
  emptyStateMessage=${e.emptyStateMessage}
438
451
  />
439
452
 
440
- ${k.error&&m`<div class="cw-error-bar">${k.error}</div>`}
453
+ ${b.error&&m`<div class="cw-error-bar">${b.error}</div>`}
441
454
 
442
- ${e.showModelSelector&&H.availableModels.length>0&&m`
443
- <${Ct}
444
- availableModels=${H.availableModels}
445
- selectedModel=${H.selectedModel}
446
- onSelectModel=${H.selectModel}
447
- disabled=${k.isLoading}
455
+ ${e.showModelSelector&&N.availableModels.length>0&&m`
456
+ <${St}
457
+ availableModels=${N.availableModels}
458
+ selectedModel=${N.selectedModel}
459
+ onSelectModel=${N.selectModel}
460
+ disabled=${b.isLoading}
448
461
  />
449
462
  `}
450
463
 
451
- <${bt}
452
- onSend=${F}
453
- onCancel=${k.cancelRun}
454
- isLoading=${k.isLoading}
464
+ <${kt}
465
+ onSend=${C}
466
+ onCancel=${b.cancelRun}
467
+ isLoading=${b.isLoading}
455
468
  placeholder=${e.placeholder}
456
469
  primaryColor=${e.primaryColor}
457
470
  enableVoice=${e.enableVoice}
458
471
  />
459
472
  </div>
460
- `}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}
473
+ `}var It={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 At(e){let t={...It.apiPaths,...e.apiPaths||{}};return{...It,...e,apiPaths:t}}var be=new Map,Qt=0,D=null,Fe=class{constructor(t={}){this.instanceId=`cw-${++Qt}`,this.config=At(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`<${Et}
461
474
  config=${{...this.config,...t}}
462
475
  onStateChange=${this._handleStateChange}
463
476
  markdownParser=${ke._enhancedMarkdownParser}
464
477
  apiRef=${this._apiRef}
465
- />`,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);})();
478
+ />`,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 D&&D.destroy(),D=Rt(e),D}function Yt(){D&&(D.destroy(),D=null)}function en(){D&&D.open()}function tn(){D&&D.close()}function nn(e){D&&D.send(e)}function on(){D&&D.clearMessages()}function sn(){D&&D.toggleTTS()}function rn(){D&&D.stopSpeech()}function an(e){D&&D.setAuth(e)}function ln(){D&&D.clearAuth()}function cn(){return D?D.getState():null}function un(){return D?D.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 Ft(_n);})();
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-agent-studio
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Visual agent builder and management studio for Django - build custom GPTs with a two-pane interface
5
5
  Author: Chris Barry
6
6
  License: Business Source License 1.1
@@ -19,8 +19,8 @@ django_agent_studio/models/permissions.py,sha256=NepltvQzeehv5EwcOTqULj8n3N5XGVT
19
19
  django_agent_studio/services/__init__.py,sha256=06cc1eLnAbROTKFxBgvkeCpsYV5cQsyJVGXaE_rcp3M,244
20
20
  django_agent_studio/services/permissions.py,sha256=-cwe0YZCFBFYh_ScXKncsPwEkCfEyIrtOzp8Wt9GSco,7785
21
21
  django_agent_studio/static/agent-frontend/chat-widget-markdown.js,sha256=_TQCux4HPRynCiLKydITO-docIRoi454jLpX0fegAFM,3722
22
- django_agent_studio/static/agent-frontend/chat-widget.css,sha256=cN5mu5wOkTk-WnbCtffzEHbqst-Fya3KVh6Bq9BQtUw,33027
23
- django_agent_studio/static/agent-frontend/chat-widget.js,sha256=q8NylxtySvGx9b7sH3Qu0MzZUFkzGTjZnBsvbJsZ7uY,53415
22
+ django_agent_studio/static/agent-frontend/chat-widget.css,sha256=tGdeUUZGkhIY0XEN3A8kvrun45xs54FRKuXLq0cc32Y,33182
23
+ django_agent_studio/static/agent-frontend/chat-widget.js,sha256=QL8EPggrp6TVeSnmAFT417QD2Mvh5NHA9a7tx0KceV0,53913
24
24
  django_agent_studio/static/django_agent_studio/js/builder.js,sha256=eEUw2z-pNdoU3xv3NhLQ-uDZV7tsf8Bawseg7B7dpCo,413948
25
25
  django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=sVkeGyZsBWEr4MKhqAfd3B4JL5n7D6eKc_4ZYUsbKO8,1633363
26
26
  django_agent_studio/static/django_agent_studio/js/style.css,sha256=rigQJy_oHIhgb1_7DwAQ_8G002gQnT0AXUtwxImWj1o,1626515
@@ -29,8 +29,8 @@ django_agent_studio/templates/django_agent_studio/base.html,sha256=wSgwaqK1DAIIy
29
29
  django_agent_studio/templates/django_agent_studio/builder.html,sha256=05thhHGdHaytyD1c15s5SMMWeNVKE8ERLEUp8qdv7Mc,1524
30
30
  django_agent_studio/templates/django_agent_studio/home.html,sha256=pgwKPjiQe9UxYYLGSsKT-6erEPDUdW9MZ5D-MOjIxK4,4385
31
31
  django_agent_studio/templates/django_agent_studio/test.html,sha256=h9aTtTD1eYcgG-n410qMSryHdpXyKny0hjiKYAoGsic,3779
32
- django_agent_studio-0.2.2.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
33
- django_agent_studio-0.2.2.dist-info/METADATA,sha256=ZmrvWrZQy3r3Jjj_4SMLi7tFvjsAdhUqjBC9_tPFltE,16272
34
- django_agent_studio-0.2.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
35
- django_agent_studio-0.2.2.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
36
- django_agent_studio-0.2.2.dist-info/RECORD,,
32
+ django_agent_studio-0.2.4.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
33
+ django_agent_studio-0.2.4.dist-info/METADATA,sha256=0M6E0z6pGSAC3bEYtspZyNepIU8XX0xjlUzwxdi0kzs,16272
34
+ django_agent_studio-0.2.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
35
+ django_agent_studio-0.2.4.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
36
+ django_agent_studio-0.2.4.dist-info/RECORD,,