@makemore/agent-frontend 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-widget.cjs.js +322 -226
- package/dist/chat-widget.css +323 -1
- package/dist/chat-widget.esm.js +316 -220
- package/dist/chat-widget.js +282 -186
- package/dist/react.cjs.js +308 -212
- package/dist/react.esm.js +299 -203
- package/package.json +1 -1
- package/src/components/ContentBlocks.js +203 -0
- package/src/components/Message.js +23 -0
- package/src/hooks/useChat.js +20 -0
package/dist/chat-widget.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var qt=Object.getOwnPropertyNames;var Gt=Object.prototype.hasOwnProperty;var Yt=(e,t,n)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Xt=(e,t)=>{for(var n in t)de(e,n,{get:t[n],enumerable:!0})},Qt=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of qt(t))!Gt.call(e,a)&&a!==n&&de(e,a,{get:()=>t[a],enumerable:!(s=Jt(t,a))||s.enumerable});return e};var Zt=e=>Qt(de({},"__esModule",{value:!0}),e);var je=(e,t,n)=>(Yt(e,typeof t!="symbol"?t+"":t,n),n);var An={};Xt(An,{ChatWidget:()=>Ee,default:()=>In});var fe,W,Ye,en,se,ze,Xe,Qe,Ze,De,xe,Ie,tn,le={},et=[],nn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,me=Array.isArray;function te(e,t){for(var n in t)e[n]=t[n];return e}function Pe(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ge(e,t,n){var s,a,o,l={};for(o in t)o=="key"?s=t[o]:o=="ref"?a=t[o]:l[o]=t[o];if(arguments.length>2&&(l.children=arguments.length>3?fe.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)l[o]===void 0&&(l[o]=e.defaultProps[o]);return _e(e,l,s,a,null)}function _e(e,t,n,s,a){var o={type:e,props:t,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++Ye,__i:-1,__u:0};return a==null&&W.vnode!=null&&W.vnode(o),o}function ye(e){return e.children}function re(e,t){this.props=e,this.context=t}function oe(e,t){if(t==null)return e.__?oe(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"?oe(e):null}function tt(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 tt(e)}}function Je(e){(!e.__d&&(e.__d=!0)&&se.push(e)&&!he.__r++||ze!=W.debounceRendering)&&((ze=W.debounceRendering)||Xe)(he)}function he(){for(var e,t,n,s,a,o,l,i=1;se.length;)se.length>i&&se.sort(Qe),e=se.shift(),i=se.length,e.__d&&(n=void 0,s=void 0,a=(s=(t=e).__v).__e,o=[],l=[],t.__P&&((n=te({},s)).__v=s.__v+1,W.vnode&&W.vnode(n),Fe(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[a]:null,o,a??oe(s),!!(32&s.__u),l),n.__v=s.__v,n.__.__k[n.__i]=n,ot(o,n,l),s.__e=s.__=null,n.__e!=a&&tt(n)));he.__r=0}function nt(e,t,n,s,a,o,l,i,u,c,p){var r,d,h,f,y,g,m,k=s&&s.__k||et,$=t.length;for(u=sn(n,t,k,u,$),r=0;r<$;r++)(h=n.__k[r])!=null&&(d=h.__i==-1?le:k[h.__i]||le,h.__i=r,g=Fe(e,h,d,a,o,l,i,u,c,p),f=h.__e,h.ref&&d.ref!=h.ref&&(d.ref&&Re(d.ref,null,h),p.push(h.ref,h.__c||f,h)),y==null&&f!=null&&(y=f),(m=!!(4&h.__u))||d.__k===h.__k?u=st(h,u,e,m):typeof h.type=="function"&&g!==void 0?u=g:f&&(u=f.nextSibling),h.__u&=-7);return n.__e=y,u}function sn(e,t,n,s,a){var o,l,i,u,c,p=n.length,r=p,d=0;for(e.__k=new Array(a),o=0;o<a;o++)(l=t[o])!=null&&typeof l!="boolean"&&typeof l!="function"?(typeof l=="string"||typeof l=="number"||typeof l=="bigint"||l.constructor==String?l=e.__k[o]=_e(null,l,null,null,null):me(l)?l=e.__k[o]=_e(ye,{children:l},null,null,null):l.constructor===void 0&&l.__b>0?l=e.__k[o]=_e(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):e.__k[o]=l,u=o+d,l.__=e,l.__b=e.__b+1,i=null,(c=l.__i=on(l,n,u,r))!=-1&&(r--,(i=n[c])&&(i.__u|=2)),i==null||i.__v==null?(c==-1&&(a>p?d--:a<p&&d++),typeof l.type!="function"&&(l.__u|=4)):c!=u&&(c==u-1?d--:c==u+1?d++:(c>u?d--:d++,l.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<p;o++)(i=n[o])!=null&&!(2&i.__u)&&(i.__e==s&&(s=oe(i)),rt(i,i));return s}function st(e,t,n,s){var a,o;if(typeof e.type=="function"){for(a=e.__k,o=0;a&&o<a.length;o++)a[o]&&(a[o].__=e,t=st(a[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=oe(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function on(e,t,n,s){var a,o,l,i=e.key,u=e.type,c=t[n],p=c!=null&&(2&c.__u)==0;if(c===null&&i==null||p&&i==c.key&&u==c.type)return n;if(s>(p?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((c=t[l=a>=0?a--:o++])!=null&&!(2&c.__u)&&i==c.key&&u==c.type)return l}return-1}function qe(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||nn.test(t)?n:n+"px"}function pe(e,t,n,s,a){var o,l;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof s=="string"&&(e.style.cssText=s=""),s)for(t in s)n&&t in n||qe(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||qe(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ze,"$1")),l=t.toLowerCase(),t=l in e||t=="onFocusOut"||t=="onFocusIn"?l.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?s?n.u=s.u:(n.u=De,e.addEventListener(t,o?Ie:xe,o)):e.removeEventListener(t,o?Ie:xe,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Ge(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=De++;else if(t.t<n.u)return;return n(W.event?W.event(t):t)}}}function Fe(e,t,n,s,a,o,l,i,u,c){var p,r,d,h,f,y,g,m,k,$,N,j,I,H,F,R,J,O=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(u=!!(32&n.__u),o=[i=t.__e=n.__e]),(p=W.__b)&&p(t);e:if(typeof O=="function")try{if(m=t.props,k="prototype"in O&&O.prototype.render,$=(p=O.contextType)&&s[p.__c],N=p?$?$.props.value:p.__:s,n.__c?g=(r=t.__c=n.__c).__=r.__E:(k?t.__c=r=new O(m,N):(t.__c=r=new re(m,N),r.constructor=O,r.render=rn),$&&$.sub(r),r.state||(r.state={}),r.__n=s,d=r.__d=!0,r.__h=[],r._sb=[]),k&&r.__s==null&&(r.__s=r.state),k&&O.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=te({},r.__s)),te(r.__s,O.getDerivedStateFromProps(m,r.__s))),h=r.props,f=r.state,r.__v=t,d)k&&O.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),k&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(k&&O.getDerivedStateFromProps==null&&m!==h&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(m,N),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(m,r.__s,N)===!1){for(t.__v!=n.__v&&(r.props=m,r.state=r.__s,r.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(w){w&&(w.__=t)}),j=0;j<r._sb.length;j++)r.__h.push(r._sb[j]);r._sb=[],r.__h.length&&l.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(m,r.__s,N),k&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(h,f,y)})}if(r.context=N,r.props=m,r.__P=e,r.__e=!1,I=W.__r,H=0,k){for(r.state=r.__s,r.__d=!1,I&&I(t),p=r.render(r.props,r.state,r.context),F=0;F<r._sb.length;F++)r.__h.push(r._sb[F]);r._sb=[]}else do r.__d=!1,I&&I(t),p=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++H<25);r.state=r.__s,r.getChildContext!=null&&(s=te(te({},s),r.getChildContext())),k&&!d&&r.getSnapshotBeforeUpdate!=null&&(y=r.getSnapshotBeforeUpdate(h,f)),R=p,p!=null&&p.type===ye&&p.key==null&&(R=at(p.props.children)),i=nt(e,me(R)?R:[R],t,n,s,a,o,l,i,u,c),r.base=t.__e,t.__u&=-161,r.__h.length&&l.push(r),g&&(r.__E=r.__=null)}catch(w){if(t.__v=null,u||o!=null)if(w.then){for(t.__u|=u?160:128;i&&i.nodeType==8&&i.nextSibling;)i=i.nextSibling;o[o.indexOf(i)]=null,t.__e=i}else{for(J=o.length;J--;)Pe(o[J]);Ae(t)}else t.__e=n.__e,t.__k=n.__k,w.then||Ae(t);W.__e(w,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):i=t.__e=an(n.__e,t,n,s,a,o,l,u,c);return(p=W.diffed)&&p(t),128&t.__u?void 0:i}function Ae(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Ae)}function ot(e,t,n){for(var s=0;s<n.length;s++)Re(n[s],n[++s],n[++s]);W.__c&&W.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){W.__e(o,a.__v)}})}function at(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:me(e)?e.map(at):te({},e)}function an(e,t,n,s,a,o,l,i,u){var c,p,r,d,h,f,y,g=n.props||le,m=t.props,k=t.type;if(k=="svg"?a="http://www.w3.org/2000/svg":k=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(c=0;c<o.length;c++)if((h=o[c])&&"setAttribute"in h==!!k&&(k?h.localName==k:h.nodeType==3)){e=h,o[c]=null;break}}if(e==null){if(k==null)return document.createTextNode(m);e=document.createElementNS(a,k,m.is&&m),i&&(W.__m&&W.__m(t,o),i=!1),o=null}if(k==null)g===m||i&&e.data==m||(e.data=m);else{if(o=o&&fe.call(e.childNodes),!i&&o!=null)for(g={},c=0;c<e.attributes.length;c++)g[(h=e.attributes[c]).name]=h.value;for(c in g)if(h=g[c],c!="children"){if(c=="dangerouslySetInnerHTML")r=h;else if(!(c in m)){if(c=="value"&&"defaultValue"in m||c=="checked"&&"defaultChecked"in m)continue;pe(e,c,null,h,a)}}for(c in m)h=m[c],c=="children"?d=h:c=="dangerouslySetInnerHTML"?p=h:c=="value"?f=h:c=="checked"?y=h:i&&typeof h!="function"||g[c]===h||pe(e,c,h,g[c],a);if(p)i||r&&(p.__html==r.__html||p.__html==e.innerHTML)||(e.innerHTML=p.__html),t.__k=[];else if(r&&(e.innerHTML=""),nt(t.type=="template"?e.content:e,me(d)?d:[d],t,n,s,k=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,l,o?o[0]:n.__k&&oe(n,0),i,u),o!=null)for(c=o.length;c--;)Pe(o[c]);i||(c="value",k=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[c]||k=="progress"&&!f||k=="option"&&f!=g[c])&&pe(e,c,f,g[c],a),c="checked",y!=null&&y!=e[c]&&pe(e,c,y,g[c],a))}return e}function Re(e,t,n){try{if(typeof e=="function"){var s=typeof e.__u=="function";s&&e.__u(),s&&t==null||(e.__u=e(t))}else e.current=t}catch(a){W.__e(a,n)}}function rt(e,t,n){var s,a;if(W.unmount&&W.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||Re(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){W.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(a=0;a<s.length;a++)s[a]&&rt(s[a],t,n||typeof e.type!="function");n||Pe(e.__e),e.__c=e.__=e.__e=void 0}function rn(e,t,n){return this.constructor(e,n)}function ve(e,t,n){var s,a,o,l;t==document&&(t=document.documentElement),W.__&&W.__(e,t),a=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],l=[],Fe(t,e=(!s&&n||t).__k=ge(ye,null,[e]),a||le,le,t.namespaceURI,!s&&n?[n]:a?null:t.firstChild?fe.call(t.childNodes):null,o,!s&&n?n:a?a.__e:t.firstChild,s,l),ot(o,e,l)}fe=et.slice,W={__e:function(e,t,n,s){for(var a,o,l;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),l=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,s||{}),l=a.__d),l)return a.__E=a}catch(i){e=i}throw e}},Ye=0,en=function(e){return e!=null&&e.constructor===void 0},re.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=te({},this.state),typeof e=="function"&&(e=e(te({},n),this.props)),e&&te(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Je(this))},re.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Je(this))},re.prototype.render=ye,se=[],Xe=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Qe=function(e,t){return e.__v.__b-t.__v.__b},he.__r=0,Ze=/(PointerCapture)$|Capture$/i,De=0,xe=Ge(!1),Ie=Ge(!0),tn=0;var it=function(e,t,n,s){var a;t[0]=0;for(var o=1;o<t.length;o++){var l=t[o++],i=t[o]?(t[0]|=l?1:2,n[t[o++]]):t[++o];l===3?s[0]=i:l===4?s[1]=Object.assign(s[1]||{},i):l===5?(s[1]=s[1]||{})[t[++o]]=i:l===6?s[1][t[++o]]+=i+"":l?(a=e.apply(i,it(e,i,n,["",null])),s.push(a),i[0]?t[0]|=2:(t[o-2]=0,t[o]=a)):s.push(i)}return s},lt=new Map;function ct(e){var t=lt.get(this);return t||(t=new Map,lt.set(this,t)),(t=it(this,t.get(e)||(t.set(e,t=function(n){for(var s,a,o=1,l="",i="",u=[0],c=function(d){o===1&&(d||(l=l.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?u.push(0,d,l):o===3&&(d||l)?(u.push(3,d,l),o=2):o===2&&l==="..."&&d?u.push(4,d,0):o===2&&l&&!d?u.push(5,0,!0,l):o>=5&&((l||!d&&o===5)&&(u.push(o,0,l,a),o=6),d&&(u.push(o,d,0,a),o=6)),l=""},p=0;p<n.length;p++){p&&(o===1&&c(),c(p));for(var r=0;r<n[p].length;r++)s=n[p][r],o===1?s==="<"?(c(),u=[u],o=3):l+=s:o===4?l==="--"&&s===">"?(o=1,l=""):l=s+l[0]:i?s===i?i="":l+=s:s==='"'||s==="'"?i=s:s===">"?(c(),o=1):o&&(s==="="?(o=5,a=l,l=""):s==="/"&&(o<5||n[p][r+1]===">")?(c(),o===3&&(u=u[0]),o=u,(u=u[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
|
|
2
|
-
`||s==="\r"?(
|
|
1
|
+
var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Qt=Object.prototype.hasOwnProperty;var Zt=(e,t,n)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var en=(e,t)=>{for(var n in t)de(e,n,{get:t[n],enumerable:!0})},tn=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Xt(t))!Qt.call(e,a)&&a!==n&&de(e,a,{get:()=>t[a],enumerable:!(s=Yt(t,a))||s.enumerable});return e};var nn=e=>tn(de({},"__esModule",{value:!0}),e);var je=(e,t,n)=>(Zt(e,typeof t!="symbol"?t+"":t,n),n);var Vn={};en(Vn,{ChatWidget:()=>xe,default:()=>Bn});var fe,U,Ye,sn,se,Je,Xe,Qe,Ze,Pe,Ae,Ie,on,le={},et=[],an=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,me=Array.isArray;function te(e,t){for(var n in t)e[n]=t[n];return e}function Re(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ge(e,t,n){var s,a,o,l={};for(o in t)o=="key"?s=t[o]:o=="ref"?a=t[o]:l[o]=t[o];if(arguments.length>2&&(l.children=arguments.length>3?fe.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)l[o]===void 0&&(l[o]=e.defaultProps[o]);return _e(e,l,s,a,null)}function _e(e,t,n,s,a){var o={type:e,props:t,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++Ye,__i:-1,__u:0};return a==null&&U.vnode!=null&&U.vnode(o),o}function ve(e){return e.children}function re(e,t){this.props=e,this.context=t}function oe(e,t){if(t==null)return e.__?oe(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"?oe(e):null}function tt(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 tt(e)}}function ze(e){(!e.__d&&(e.__d=!0)&&se.push(e)&&!he.__r++||Je!=U.debounceRendering)&&((Je=U.debounceRendering)||Xe)(he)}function he(){for(var e,t,n,s,a,o,l,c=1;se.length;)se.length>c&&se.sort(Qe),e=se.shift(),c=se.length,e.__d&&(n=void 0,s=void 0,a=(s=(t=e).__v).__e,o=[],l=[],t.__P&&((n=te({},s)).__v=s.__v+1,U.vnode&&U.vnode(n),Fe(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[a]:null,o,a??oe(s),!!(32&s.__u),l),n.__v=s.__v,n.__.__k[n.__i]=n,ot(o,n,l),s.__e=s.__=null,n.__e!=a&&tt(n)));he.__r=0}function nt(e,t,n,s,a,o,l,c,d,i,_){var r,p,h,f,y,v,m,k=s&&s.__k||et,$=t.length;for(d=rn(n,t,k,d,$),r=0;r<$;r++)(h=n.__k[r])!=null&&(p=h.__i==-1?le:k[h.__i]||le,h.__i=r,v=Fe(e,h,p,a,o,l,c,d,i,_),f=h.__e,h.ref&&p.ref!=h.ref&&(p.ref&&Oe(p.ref,null,h),_.push(h.ref,h.__c||f,h)),y==null&&f!=null&&(y=f),(m=!!(4&h.__u))||p.__k===h.__k?d=st(h,d,e,m):typeof h.type=="function"&&v!==void 0?d=v:f&&(d=f.nextSibling),h.__u&=-7);return n.__e=y,d}function rn(e,t,n,s,a){var o,l,c,d,i,_=n.length,r=_,p=0;for(e.__k=new Array(a),o=0;o<a;o++)(l=t[o])!=null&&typeof l!="boolean"&&typeof l!="function"?(typeof l=="string"||typeof l=="number"||typeof l=="bigint"||l.constructor==String?l=e.__k[o]=_e(null,l,null,null,null):me(l)?l=e.__k[o]=_e(ve,{children:l},null,null,null):l.constructor===void 0&&l.__b>0?l=e.__k[o]=_e(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):e.__k[o]=l,d=o+p,l.__=e,l.__b=e.__b+1,c=null,(i=l.__i=ln(l,n,d,r))!=-1&&(r--,(c=n[i])&&(c.__u|=2)),c==null||c.__v==null?(i==-1&&(a>_?p--:a<_&&p++),typeof l.type!="function"&&(l.__u|=4)):i!=d&&(i==d-1?p--:i==d+1?p++:(i>d?p--:p++,l.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<_;o++)(c=n[o])!=null&&!(2&c.__u)&&(c.__e==s&&(s=oe(c)),rt(c,c));return s}function st(e,t,n,s){var a,o;if(typeof e.type=="function"){for(a=e.__k,o=0;a&&o<a.length;o++)a[o]&&(a[o].__=e,t=st(a[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=oe(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ln(e,t,n,s){var a,o,l,c=e.key,d=e.type,i=t[n],_=i!=null&&(2&i.__u)==0;if(i===null&&c==null||_&&c==i.key&&d==i.type)return n;if(s>(_?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[l=a>=0?a--:o++])!=null&&!(2&i.__u)&&c==i.key&&d==i.type)return l}return-1}function qe(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||an.test(t)?n:n+"px"}function pe(e,t,n,s,a){var o,l;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof s=="string"&&(e.style.cssText=s=""),s)for(t in s)n&&t in n||qe(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||qe(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ze,"$1")),l=t.toLowerCase(),t=l in e||t=="onFocusOut"||t=="onFocusIn"?l.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?s?n.u=s.u:(n.u=Pe,e.addEventListener(t,o?Ie:Ae,o)):e.removeEventListener(t,o?Ie:Ae,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Ge(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Pe++;else if(t.t<n.u)return;return n(U.event?U.event(t):t)}}}function Fe(e,t,n,s,a,o,l,c,d,i){var _,r,p,h,f,y,v,m,k,$,K,j,D,O,R,F,q,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),o=[c=t.__e=n.__e]),(_=U.__b)&&_(t);e:if(typeof H=="function")try{if(m=t.props,k="prototype"in H&&H.prototype.render,$=(_=H.contextType)&&s[_.__c],K=_?$?$.props.value:_.__:s,n.__c?v=(r=t.__c=n.__c).__=r.__E:(k?t.__c=r=new H(m,K):(t.__c=r=new re(m,K),r.constructor=H,r.render=un),$&&$.sub(r),r.state||(r.state={}),r.__n=s,p=r.__d=!0,r.__h=[],r._sb=[]),k&&r.__s==null&&(r.__s=r.state),k&&H.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=te({},r.__s)),te(r.__s,H.getDerivedStateFromProps(m,r.__s))),h=r.props,f=r.state,r.__v=t,p)k&&H.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),k&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(k&&H.getDerivedStateFromProps==null&&m!==h&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(m,K),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(m,r.__s,K)===!1){for(t.__v!=n.__v&&(r.props=m,r.state=r.__s,r.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(w){w&&(w.__=t)}),j=0;j<r._sb.length;j++)r.__h.push(r._sb[j]);r._sb=[],r.__h.length&&l.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(m,r.__s,K),k&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(h,f,y)})}if(r.context=K,r.props=m,r.__P=e,r.__e=!1,D=U.__r,O=0,k){for(r.state=r.__s,r.__d=!1,D&&D(t),_=r.render(r.props,r.state,r.context),R=0;R<r._sb.length;R++)r.__h.push(r._sb[R]);r._sb=[]}else do r.__d=!1,D&&D(t),_=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++O<25);r.state=r.__s,r.getChildContext!=null&&(s=te(te({},s),r.getChildContext())),k&&!p&&r.getSnapshotBeforeUpdate!=null&&(y=r.getSnapshotBeforeUpdate(h,f)),F=_,_!=null&&_.type===ve&&_.key==null&&(F=at(_.props.children)),c=nt(e,me(F)?F:[F],t,n,s,a,o,l,c,d,i),r.base=t.__e,t.__u&=-161,r.__h.length&&l.push(r),v&&(r.__E=r.__=null)}catch(w){if(t.__v=null,d||o!=null)if(w.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,t.__e=c}else{for(q=o.length;q--;)Re(o[q]);De(t)}else t.__e=n.__e,t.__k=n.__k,w.then||De(t);U.__e(w,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=cn(n.__e,t,n,s,a,o,l,d,i);return(_=U.diffed)&&_(t),128&t.__u?void 0:c}function De(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(De)}function ot(e,t,n){for(var s=0;s<n.length;s++)Oe(n[s],n[++s],n[++s]);U.__c&&U.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){U.__e(o,a.__v)}})}function at(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:me(e)?e.map(at):te({},e)}function cn(e,t,n,s,a,o,l,c,d){var i,_,r,p,h,f,y,v=n.props||le,m=t.props,k=t.type;if(k=="svg"?a="http://www.w3.org/2000/svg":k=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((h=o[i])&&"setAttribute"in h==!!k&&(k?h.localName==k:h.nodeType==3)){e=h,o[i]=null;break}}if(e==null){if(k==null)return document.createTextNode(m);e=document.createElementNS(a,k,m.is&&m),c&&(U.__m&&U.__m(t,o),c=!1),o=null}if(k==null)v===m||c&&e.data==m||(e.data=m);else{if(o=o&&fe.call(e.childNodes),!c&&o!=null)for(v={},i=0;i<e.attributes.length;i++)v[(h=e.attributes[i]).name]=h.value;for(i in v)if(h=v[i],i!="children"){if(i=="dangerouslySetInnerHTML")r=h;else if(!(i in m)){if(i=="value"&&"defaultValue"in m||i=="checked"&&"defaultChecked"in m)continue;pe(e,i,null,h,a)}}for(i in m)h=m[i],i=="children"?p=h:i=="dangerouslySetInnerHTML"?_=h:i=="value"?f=h:i=="checked"?y=h:c&&typeof h!="function"||v[i]===h||pe(e,i,h,v[i],a);if(_)c||r&&(_.__html==r.__html||_.__html==e.innerHTML)||(e.innerHTML=_.__html),t.__k=[];else if(r&&(e.innerHTML=""),nt(t.type=="template"?e.content:e,me(p)?p:[p],t,n,s,k=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,l,o?o[0]:n.__k&&oe(n,0),c,d),o!=null)for(i=o.length;i--;)Re(o[i]);c||(i="value",k=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[i]||k=="progress"&&!f||k=="option"&&f!=v[i])&&pe(e,i,f,v[i],a),i="checked",y!=null&&y!=e[i]&&pe(e,i,y,v[i],a))}return e}function Oe(e,t,n){try{if(typeof e=="function"){var s=typeof e.__u=="function";s&&e.__u(),s&&t==null||(e.__u=e(t))}else e.current=t}catch(a){U.__e(a,n)}}function rt(e,t,n){var s,a;if(U.unmount&&U.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||Oe(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){U.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(a=0;a<s.length;a++)s[a]&&rt(s[a],t,n||typeof e.type!="function");n||Re(e.__e),e.__c=e.__=e.__e=void 0}function un(e,t,n){return this.constructor(e,n)}function ye(e,t,n){var s,a,o,l;t==document&&(t=document.documentElement),U.__&&U.__(e,t),a=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],l=[],Fe(t,e=(!s&&n||t).__k=ge(ve,null,[e]),a||le,le,t.namespaceURI,!s&&n?[n]:a?null:t.firstChild?fe.call(t.childNodes):null,o,!s&&n?n:a?a.__e:t.firstChild,s,l),ot(o,e,l)}fe=et.slice,U={__e:function(e,t,n,s){for(var a,o,l;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),l=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,s||{}),l=a.__d),l)return a.__E=a}catch(c){e=c}throw e}},Ye=0,sn=function(e){return e!=null&&e.constructor===void 0},re.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=te({},this.state),typeof e=="function"&&(e=e(te({},n),this.props)),e&&te(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),ze(this))},re.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),ze(this))},re.prototype.render=ve,se=[],Xe=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Qe=function(e,t){return e.__v.__b-t.__v.__b},he.__r=0,Ze=/(PointerCapture)$|Capture$/i,Pe=0,Ae=Ge(!1),Ie=Ge(!0),on=0;var it=function(e,t,n,s){var a;t[0]=0;for(var o=1;o<t.length;o++){var l=t[o++],c=t[o]?(t[0]|=l?1:2,n[t[o++]]):t[++o];l===3?s[0]=c:l===4?s[1]=Object.assign(s[1]||{},c):l===5?(s[1]=s[1]||{})[t[++o]]=c:l===6?s[1][t[++o]]+=c+"":l?(a=e.apply(c,it(e,c,n,["",null])),s.push(a),c[0]?t[0]|=2:(t[o-2]=0,t[o]=a)):s.push(c)}return s},lt=new Map;function ct(e){var t=lt.get(this);return t||(t=new Map,lt.set(this,t)),(t=it(this,t.get(e)||(t.set(e,t=function(n){for(var s,a,o=1,l="",c="",d=[0],i=function(p){o===1&&(p||(l=l.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,p,l):o===3&&(p||l)?(d.push(3,p,l),o=2):o===2&&l==="..."&&p?d.push(4,p,0):o===2&&l&&!p?d.push(5,0,!0,l):o>=5&&((l||!p&&o===5)&&(d.push(o,0,l,a),o=6),p&&(d.push(o,p,0,a),o=6)),l=""},_=0;_<n.length;_++){_&&(o===1&&i(),i(_));for(var r=0;r<n[_].length;r++)s=n[_][r],o===1?s==="<"?(i(),d=[d],o=3):l+=s:o===4?l==="--"&&s===">"?(o=1,l=""):l=s+l[0]:c?s===c?c="":l+=s:s==='"'||s==="'"?c=s:s===">"?(i(),o=1):o&&(s==="="?(o=5,a=l,l=""):s==="/"&&(o<5||n[_][r+1]===">")?(i(),o===3&&(d=d[0]),o=d,(d=d[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
|
|
2
|
+
`||s==="\r"?(i(),o=2):l+=s),o===3&&l==="!--"&&(o=4,d=d[0])}return i(),d}(e)),t),arguments,[])).length>1?t:t[0]}var u=ct.bind(ge);var ie,J,He,ut,ce=0,vt=[],G=U,dt=G.__b,pt=G.__r,_t=G.diffed,ht=G.__c,ft=G.unmount,mt=G.__;function Ne(e,t){G.__h&&G.__h(J,e,ce||t),ce=0;var n=J.__H||(J.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function T(e){return ce=1,dn($t,e)}function dn(e,t,n){var s=Ne(ie++,2);if(s.t=e,!s.__c&&(s.__=[n?n(t):$t(void 0,t),function(c){var d=s.__N?s.__N[0]:s.__[0],i=s.t(d,c);d!==i&&(s.__N=[i,s.__[1]],s.__c.setState({}))}],s.__c=J,!J.__f)){var a=function(c,d,i){if(!s.__c.__H)return!0;var _=s.__c.__H.__.filter(function(p){return!!p.__c});if(_.every(function(p){return!p.__N}))return!o||o.call(this,c,d,i);var r=s.__c.props!==c;return _.forEach(function(p){if(p.__N){var h=p.__[0];p.__=p.__N,p.__N=void 0,h!==p.__[0]&&(r=!0)}}),o&&o.call(this,c,d,i)||r};J.__f=!0;var o=J.shouldComponentUpdate,l=J.componentWillUpdate;J.componentWillUpdate=function(c,d,i){if(this.__e){var _=o;o=void 0,a(c,d,i),o=_}l&&l.call(this,c,d,i)},J.shouldComponentUpdate=a}return s.__N||s.__}function B(e,t){var n=Ne(ie++,3);!G.__s&&yt(n.__H,t)&&(n.__=e,n.u=t,J.__H.__h.push(n))}function Q(e){return ce=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=Ne(ie++,7);return yt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function x(e,t){return ce=8,ae(function(){return e},t)}function pn(){for(var e;e=vt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach($e),e.__H.__h.forEach(Le),e.__H.__h=[]}catch(t){e.__H.__h=[],G.__e(t,e.__v)}}G.__b=function(e){J=null,dt&&dt(e)},G.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),mt&&mt(e,t)},G.__r=function(e){pt&&pt(e),ie=0;var t=(J=e.__c).__H;t&&(He===J?(t.__h=[],J.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach($e),t.__h.forEach(Le),t.__h=[],ie=0)),He=J},G.diffed=function(e){_t&&_t(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(vt.push(t)!==1&&ut===G.requestAnimationFrame||((ut=G.requestAnimationFrame)||_n)(pn)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),He=J=null},G.__c=function(e,t){t.some(function(n){try{n.__h.forEach($e),n.__h=n.__h.filter(function(s){return!s.__||Le(s)})}catch(s){t.some(function(a){a.__h&&(a.__h=[])}),t=[],G.__e(s,n.__v)}}),ht&&ht(e,t)},G.unmount=function(e){ft&&ft(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(s){try{$e(s)}catch(a){t=a}}),n.__H=void 0,t&&G.__e(t,n.__v))};var gt=typeof requestAnimationFrame=="function";function _n(e){var t,n=function(){clearTimeout(s),gt&&cancelAnimationFrame(t),setTimeout(e)},s=setTimeout(n,35);gt&&(t=requestAnimationFrame(n))}function $e(e){var t=J,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),J=t}function Le(e){var t=J;e.__c=e.__(),J=t}function yt(e,t){return!e||e.length!==t.length||t.some(function(n,s){return n!==e[s]})}function $t(e,t){return typeof t=="function"?t(e):t}function hn(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function Ke(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function we(e){return Array.isArray(e)?e.map(we):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[hn(t),we(n)])):e}function ke(e){return Array.isArray(e)?e.map(ke):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Ke(t),ke(n)])):e}function be(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function z(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function wt(e){if(!e)return"";try{let t=new Date(e),s=new Date-t,a=Math.floor(s/6e4),o=Math.floor(s/36e5),l=Math.floor(s/864e5);return a<1?"Just now":a<60?`${a}m ago`:o<24?`${o}h ago`:l<7?`${l}d ago`:t.toLocaleDateString()}catch{return""}}function kt(e,t=null){if(t)return t(e);let n=z(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 bt(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,s){try{let a=t(n);s===null?localStorage.removeItem(a):localStorage.setItem(a,s)}catch{}}}}function Ct(e="csrftoken"){let t=document.cookie.split(";");for(let s of t){let[a,o]=s.trim().split("=");if(a===e)return decodeURIComponent(o)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function Ce(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],s=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,s)).toFixed(1))+" "+n[s]}function Se(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 fn(e){if(!e||typeof e!="string")return 0;let t=e.replace("#","");if(t.length!==6&&t.length!==3)return 0;let n=t.length===3?t.split("").map(c=>c+c).join(""):t,s=parseInt(n.substr(0,2),16)/255,a=parseInt(n.substr(2,2),16)/255,o=parseInt(n.substr(4,2),16)/255,l=c=>c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return .2126*l(s)+.7152*l(a)+.0722*l(o)}function St(e){return fn(e)>.179?"#000000":"#ffffff"}function Tt({config:e,debugMode:t,isExpanded:n,isSpeaking:s,messagesCount:a,isLoading:o,currentAgent:l,onClose:c,onToggleExpand:d,onToggleDebug:i,onToggleTTS:_,onClear:r,onToggleSidebar:p}){let{title:h,primaryColor:f,embedded:y,showConversationSidebar:v,showClearButton:m,showDebugButton:k,enableDebugMode:$,showTTSButton:K,showExpandButton:j,enableTTS:D,elevenLabsApiKey:O,ttsProxyUrl:R}=e,F=O||R;return u`
|
|
3
3
|
<div class="cw-header" style=${{backgroundColor:f}}>
|
|
4
|
-
${
|
|
4
|
+
${v&&u`
|
|
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,17 +16,17 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
16
16
|
`}
|
|
17
17
|
|
|
18
18
|
<div class="cw-title-container">
|
|
19
|
-
<span class="cw-title">${
|
|
20
|
-
${l&&
|
|
19
|
+
<span class="cw-title">${z(h)}</span>
|
|
20
|
+
${l&&u`
|
|
21
21
|
<span class="cw-current-agent" title="Currently active agent">
|
|
22
22
|
<span class="cw-agent-indicator">🤖</span>
|
|
23
|
-
<span class="cw-agent-name">${
|
|
23
|
+
<span class="cw-agent-name">${z(l.name||l.key)}</span>
|
|
24
24
|
</span>
|
|
25
25
|
`}
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="cw-header-actions">
|
|
29
|
-
${m&&
|
|
29
|
+
${m&&u`
|
|
30
30
|
<button
|
|
31
31
|
class="cw-header-btn"
|
|
32
32
|
onClick=${r}
|
|
@@ -35,53 +35,140 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
35
35
|
>🗑️</button>
|
|
36
36
|
`}
|
|
37
37
|
|
|
38
|
-
${k&&$&&
|
|
38
|
+
${k&&$&&u`
|
|
39
39
|
<button
|
|
40
40
|
class="cw-header-btn ${t?"cw-btn-active":""}"
|
|
41
|
-
onClick=${
|
|
41
|
+
onClick=${i}
|
|
42
42
|
title="Debug"
|
|
43
43
|
>🐛</button>
|
|
44
44
|
`}
|
|
45
45
|
|
|
46
|
-
${
|
|
46
|
+
${K&&F&&u`
|
|
47
47
|
<button
|
|
48
|
-
class="cw-header-btn ${
|
|
49
|
-
onClick=${
|
|
48
|
+
class="cw-header-btn ${D?"cw-btn-active":""}"
|
|
49
|
+
onClick=${_}
|
|
50
50
|
title="TTS"
|
|
51
|
-
>${
|
|
51
|
+
>${D?"\u{1F50A}":"\u{1F507}"}</button>
|
|
52
52
|
`}
|
|
53
53
|
|
|
54
|
-
${j&&!y&&
|
|
54
|
+
${j&&!y&&u`
|
|
55
55
|
<button
|
|
56
56
|
class="cw-header-btn"
|
|
57
|
-
onClick=${
|
|
57
|
+
onClick=${d}
|
|
58
58
|
title=${n?"Minimize":"Expand"}
|
|
59
59
|
>${n?"\u2296":"\u2295"}</button>
|
|
60
60
|
`}
|
|
61
61
|
|
|
62
|
-
${!y&&
|
|
62
|
+
${!y&&u`
|
|
63
63
|
<button
|
|
64
64
|
class="cw-header-btn"
|
|
65
|
-
onClick=${
|
|
65
|
+
onClick=${c}
|
|
66
66
|
title="Close"
|
|
67
67
|
>✕</button>
|
|
68
68
|
`}
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
71
|
-
`}function
|
|
71
|
+
`}function Mt({block:e,onAction:t,markdownParser:n}){return u`
|
|
72
|
+
<div class="cw-block-card">
|
|
73
|
+
${e.image&&u`<img class="cw-block-card-image" src=${e.image} alt=${e.title||""} />`}
|
|
74
|
+
<div class="cw-block-card-body">
|
|
75
|
+
${e.badge&&u`<span class="cw-block-card-badge">${e.badge}</span>`}
|
|
76
|
+
${e.title&&u`<div class="cw-block-card-title">${e.title}</div>`}
|
|
77
|
+
${e.subtitle&&u`<div class="cw-block-card-subtitle">${e.subtitle}</div>`}
|
|
78
|
+
${e.metadata&&e.metadata.length>0&&u`
|
|
79
|
+
<div class="cw-block-card-meta">
|
|
80
|
+
${e.metadata.map(s=>u`
|
|
81
|
+
<span class="cw-block-meta-pair">
|
|
82
|
+
<span class="cw-block-meta-label">${s.label}:</span> ${s.value}
|
|
83
|
+
</span>
|
|
84
|
+
`)}
|
|
85
|
+
</div>
|
|
86
|
+
`}
|
|
87
|
+
${e.actions&&e.actions.length>0&&u`
|
|
88
|
+
<div class="cw-block-card-actions">
|
|
89
|
+
${e.actions.map(s=>u`<${Et} action=${s} onAction=${t} />`)}
|
|
90
|
+
</div>
|
|
91
|
+
`}
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
`}function mn({block:e,onAction:t,markdownParser:n}){let s=e.layout||"vertical";return u`
|
|
95
|
+
<div class="cw-block-card-list cw-block-card-list-${s}">
|
|
96
|
+
${(e.items||[]).map(a=>u`
|
|
97
|
+
<${Mt} block=${{type:"card",...a}} onAction=${t} markdownParser=${n} />
|
|
98
|
+
`)}
|
|
99
|
+
</div>
|
|
100
|
+
`}function Et({action:e,onAction:t}){let n=e.style||"primary",s=()=>{t&&t(e)};return e.type==="link"?u`<a class="cw-block-btn cw-block-btn-${n}" href=${e.url} target="_blank" rel="noopener">${e.label}</a>`:u`<button class="cw-block-btn cw-block-btn-${n}" onClick=${s}>${e.label}</button>`}function gn({block:e,onAction:t}){return u`
|
|
101
|
+
<div class="cw-block-action-buttons">
|
|
102
|
+
${(e.buttons||[]).map(n=>u`<${Et} action=${n} onAction=${t} />`)}
|
|
103
|
+
</div>
|
|
104
|
+
`}function vn({block:e}){let t=e.style||"info";return u`
|
|
105
|
+
<div class="cw-block-callout cw-block-callout-${t}">
|
|
106
|
+
<span class="cw-block-callout-icon">${{info:"\u2139\uFE0F",success:"\u2705",warning:"\u26A0\uFE0F"}[t]||"\u2139\uFE0F"}</span>
|
|
107
|
+
<div class="cw-block-callout-content">
|
|
108
|
+
${e.title&&u`<strong>${e.title}</strong>`}
|
|
109
|
+
${e.body&&u`<span>${e.body}</span>`}
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
`}function yn({block:e}){return u`
|
|
113
|
+
<figure class="cw-block-image">
|
|
114
|
+
<img src=${e.url} alt=${e.alt||""} />
|
|
115
|
+
${e.caption&&u`<figcaption>${e.caption}</figcaption>`}
|
|
116
|
+
</figure>
|
|
117
|
+
`}function $n(){return u`<hr class="cw-block-divider" />`}function wn({block:e}){return u`
|
|
118
|
+
<div class="cw-block-table-wrapper">
|
|
119
|
+
<table class="cw-block-table">
|
|
120
|
+
${e.headers&&e.headers.length>0&&u`
|
|
121
|
+
<thead><tr>${e.headers.map(t=>u`<th>${t}</th>`)}</tr></thead>
|
|
122
|
+
`}
|
|
123
|
+
<tbody>
|
|
124
|
+
${(e.rows||[]).map(t=>u`
|
|
125
|
+
<tr>${t.map(n=>u`<td>${n}</td>`)}</tr>
|
|
126
|
+
`)}
|
|
127
|
+
</tbody>
|
|
128
|
+
</table>
|
|
129
|
+
</div>
|
|
130
|
+
`}function kn({block:e}){let[t,n]=T(!1),s=()=>{navigator.clipboard.writeText(e.code).then(()=>{n(!0),setTimeout(()=>n(!1),1500)})};return u`
|
|
131
|
+
<div class="cw-block-code">
|
|
132
|
+
${e.filename&&u`<div class="cw-block-code-filename">${e.filename}</div>`}
|
|
133
|
+
<pre><code>${z(e.code)}</code></pre>
|
|
134
|
+
${e.copyable!==!1&&u`
|
|
135
|
+
<button class="cw-block-code-copy" onClick=${s}>${t?"\u2713":"\u2398"}</button>
|
|
136
|
+
`}
|
|
137
|
+
</div>
|
|
138
|
+
`}function bn({block:e}){let[t,n]=T(e.defaultOpen||!1);return u`
|
|
139
|
+
<details class="cw-block-collapsible" open=${t} onClick=${s=>{s.preventDefault(),n(!t)}}>
|
|
140
|
+
<summary>${e.title}</summary>
|
|
141
|
+
<div class="cw-block-collapsible-body">${e.body}</div>
|
|
142
|
+
</details>
|
|
143
|
+
`}function Cn({block:e}){let t={loading:"\u23F3",success:"\u2705",error:"\u274C",warning:"\u26A0\uFE0F",info:"\u2139\uFE0F"};return u`
|
|
144
|
+
<div class="cw-block-status cw-block-status-${e.state||"info"}">
|
|
145
|
+
<span class="cw-block-status-icon">${t[e.state]||"\u2139\uFE0F"}</span>
|
|
146
|
+
<div>
|
|
147
|
+
<strong>${e.title}</strong>
|
|
148
|
+
${e.body&&u`<div>${e.body}</div>`}
|
|
149
|
+
${e.progress!=null&&u`
|
|
150
|
+
<div class="cw-block-progress"><div class="cw-block-progress-bar" style=${{width:`${e.progress*100}%`}}></div></div>
|
|
151
|
+
`}
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
`}var Sn={card:Mt,cardList:mn,actionButtons:gn,callout:vn,image:yn,divider:$n,table:wn,code:kn,collapsible:bn,status:Cn};function xt({blocks:e,onAction:t,markdownParser:n}){return!e||e.length===0?null:u`
|
|
155
|
+
<div class="cw-content-blocks">
|
|
156
|
+
${e.map((s,a)=>{let o=Sn[s.type];return o?u`<${o} key=${a} block=${s} onAction=${t} markdownParser=${n} />`:null})}
|
|
157
|
+
</div>
|
|
158
|
+
`}function Te({msg:e,show:t,onToggle:n}){return t?u`
|
|
72
159
|
<div class="cw-debug-payload">
|
|
73
160
|
<button class="cw-debug-payload-close" onClick=${n}>×</button>
|
|
74
161
|
<pre class="cw-debug-payload-content">${JSON.stringify(e,null,2)}</pre>
|
|
75
162
|
</div>
|
|
76
|
-
`:
|
|
163
|
+
`:u`
|
|
77
164
|
<button
|
|
78
165
|
class="cw-debug-payload-btn"
|
|
79
166
|
onClick=${n}
|
|
80
167
|
title="Show message payload"
|
|
81
168
|
>{ }</button>
|
|
82
|
-
`}function
|
|
169
|
+
`}function At({onEdit:e,onRetry:t,isLoading:n,position:s,showEdit:a=!0}){return n?null:u`
|
|
83
170
|
<div class="cw-message-actions cw-message-actions-${s||"left"}">
|
|
84
|
-
${a&&
|
|
171
|
+
${a&&u`
|
|
85
172
|
<button
|
|
86
173
|
class="cw-message-action-btn"
|
|
87
174
|
onClick=${e}
|
|
@@ -105,14 +192,14 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
105
192
|
</svg>
|
|
106
193
|
</button>
|
|
107
194
|
</div>
|
|
108
|
-
`}function
|
|
195
|
+
`}function Tn({initialContent:e,onSave:t,onCancel:n}){let[s,a]=T(e),o=Q(null);return B(()=>{o.current&&(o.current.focus(),o.current.setSelectionRange(s.length,s.length),o.current.style.height="auto",o.current.style.height=o.current.scrollHeight+"px")},[]),u`
|
|
109
196
|
<div class="cw-inline-edit">
|
|
110
197
|
<textarea
|
|
111
198
|
ref=${o}
|
|
112
199
|
class="cw-inline-edit-input"
|
|
113
200
|
value=${s}
|
|
114
|
-
onInput=${
|
|
115
|
-
onKeyDown=${
|
|
201
|
+
onInput=${d=>{a(d.target.value),d.target.style.height="auto",d.target.style.height=d.target.scrollHeight+"px"}}
|
|
202
|
+
onKeyDown=${d=>{d.key==="Enter"&&!d.shiftKey?(d.preventDefault(),s.trim()&&t(s.trim())):d.key==="Escape"&&n()}}
|
|
116
203
|
rows="1"
|
|
117
204
|
/>
|
|
118
205
|
<div class="cw-inline-edit-actions">
|
|
@@ -129,33 +216,42 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
129
216
|
>Save & Send</button>
|
|
130
217
|
</div>
|
|
131
218
|
</div>
|
|
132
|
-
`}function
|
|
219
|
+
`}function It({msg:e,debugMode:t,markdownParser:n,onEdit:s,onRetry:a,isLoading:o,messageIndex:l}){let[c,d]=T(!1),[i,_]=T(!1),[r,p]=T(!1),h=e.role==="user",f=e.role==="system",y=e.type==="tool_call",v=e.type==="tool_result",m=e.type==="error",k=e.type==="sub_agent_start",$=e.type==="sub_agent_end",K=e.type==="agent_context";if(f&&!t)return null;if(k||$||K)return u`
|
|
133
220
|
<div class="cw-agent-context ${k?"cw-agent-delegating":""} ${$?"cw-agent-returned":""}" style="position: relative;">
|
|
134
221
|
<span class="cw-agent-context-icon">${k?"\u{1F517}":$?"\u2713":"\u{1F916}"}</span>
|
|
135
222
|
<span class="cw-agent-context-text">${e.content}</span>
|
|
136
|
-
${e.metadata?.agentName&&
|
|
223
|
+
${e.metadata?.agentName&&u`
|
|
137
224
|
<span class="cw-agent-context-name">${e.metadata.agentName}</span>
|
|
138
225
|
`}
|
|
139
|
-
${t&&
|
|
226
|
+
${t&&u`<${Te} msg=${e} show=${i} onToggle=${()=>_(!i)} />`}
|
|
227
|
+
</div>
|
|
228
|
+
`;if(e.type==="content_blocks"&&e.metadata?.blocks){let S=E=>{E.type==="message"&&e._onSendMessage&&e._onSendMessage(E.message),E.type==="callback"&&e._onCallback&&e._onCallback(E.callbackId)};return u`
|
|
229
|
+
<div class="cw-message-row" style="position: relative;">
|
|
230
|
+
<${xt}
|
|
231
|
+
blocks=${e.metadata.blocks}
|
|
232
|
+
onAction=${S}
|
|
233
|
+
markdownParser=${n}
|
|
234
|
+
/>
|
|
235
|
+
${t&&u`<${Te} msg=${e} show=${i} onToggle=${()=>_(!i)} />`}
|
|
140
236
|
</div>
|
|
141
|
-
|
|
142
|
-
<div class="cw-tool-message ${
|
|
143
|
-
<span class="cw-tool-label" onClick=${()=>S&&
|
|
237
|
+
`}if(y||v){let S=e.metadata?.arguments||e.metadata?.result,E=b=>{if(typeof b=="string")try{return JSON.stringify(JSON.parse(b),null,2)}catch{return b}return JSON.stringify(b,null,2)};return u`
|
|
238
|
+
<div class="cw-tool-message ${v?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
|
|
239
|
+
<span class="cw-tool-label" onClick=${()=>S&&d(!c)}>
|
|
144
240
|
${e.content}
|
|
145
|
-
${S&&
|
|
241
|
+
${S&&u`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
|
|
146
242
|
</span>
|
|
147
|
-
${
|
|
148
|
-
<pre class="cw-tool-details">${
|
|
243
|
+
${c&&S&&u`
|
|
244
|
+
<pre class="cw-tool-details">${z(E(y?e.metadata.arguments:e.metadata.result))}</pre>
|
|
149
245
|
`}
|
|
150
|
-
${t&&
|
|
246
|
+
${t&&u`<${Te} msg=${e} show=${i} onToggle=${()=>_(!i)} />`}
|
|
151
247
|
</div>
|
|
152
|
-
`}let j=["cw-message",h&&"cw-message-user",m&&"cw-message-error"].filter(Boolean).join(" "),
|
|
248
|
+
`}let j=["cw-message",h&&"cw-message-user",m&&"cw-message-error"].filter(Boolean).join(" "),D=`cw-message-row ${h?"cw-message-row-user":""}`,O=e.role==="assistant"?kt(e.content,n):z(e.content),R=e.files&&e.files.length>0,F=()=>R?u`
|
|
153
249
|
<div class="cw-message-attachments">
|
|
154
|
-
${e.files.map(S=>S.type&&S.type.startsWith("image/")?
|
|
250
|
+
${e.files.map(S=>S.type&&S.type.startsWith("image/")?u`
|
|
155
251
|
<a class="cw-attachment-thumbnail" href=${S.url} target="_blank" title=${S.name}>
|
|
156
252
|
<img src=${S.url} alt=${S.name} />
|
|
157
253
|
</a>
|
|
158
|
-
`:
|
|
254
|
+
`:u`
|
|
159
255
|
<a class="cw-attachment-file" href=${S.url} target="_blank" title=${S.name}>
|
|
160
256
|
<span class="cw-attachment-icon">${Se(S.type)}</span>
|
|
161
257
|
<span class="cw-attachment-info">
|
|
@@ -165,75 +261,75 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
165
261
|
</a>
|
|
166
262
|
`)}
|
|
167
263
|
</div>
|
|
168
|
-
`:null,
|
|
169
|
-
<div class=${
|
|
170
|
-
${
|
|
171
|
-
<${
|
|
264
|
+
`:null,q=S=>{p(!1),s&&s(l,S)},H=()=>{a&&a(l)};if(h&&r)return u`
|
|
265
|
+
<div class=${D} style="position: relative;">
|
|
266
|
+
${F()}
|
|
267
|
+
<${Tn}
|
|
172
268
|
initialContent=${e.content}
|
|
173
|
-
onSave=${
|
|
174
|
-
onCancel=${()=>
|
|
269
|
+
onSave=${q}
|
|
270
|
+
onCancel=${()=>p(!1)}
|
|
175
271
|
/>
|
|
176
272
|
</div>
|
|
177
|
-
`;let w=h&&s&&a,C=e.role==="assistant"&&a&&!o;return
|
|
178
|
-
<div class="${
|
|
179
|
-
${
|
|
180
|
-
${w&&
|
|
273
|
+
`;let w=h&&s&&a,C=e.role==="assistant"&&a&&!o;return u`
|
|
274
|
+
<div class="${D} ${w||C?"cw-message-row-with-actions":""}">
|
|
275
|
+
${F()}
|
|
276
|
+
${w&&u`
|
|
181
277
|
<div class="cw-user-actions-wrapper">
|
|
182
|
-
<${
|
|
183
|
-
onEdit=${()=>
|
|
184
|
-
onRetry=${
|
|
278
|
+
<${At}
|
|
279
|
+
onEdit=${()=>p(!0)}
|
|
280
|
+
onRetry=${H}
|
|
185
281
|
isLoading=${o}
|
|
186
282
|
position="left"
|
|
187
283
|
showEdit=${!0}
|
|
188
284
|
/>
|
|
189
|
-
<div class=${j} dangerouslySetInnerHTML=${{__html:
|
|
285
|
+
<div class=${j} dangerouslySetInnerHTML=${{__html:O}} />
|
|
190
286
|
</div>
|
|
191
287
|
`}
|
|
192
|
-
${!w&&
|
|
193
|
-
<div class=${j} dangerouslySetInnerHTML=${{__html:
|
|
288
|
+
${!w&&u`
|
|
289
|
+
<div class=${j} dangerouslySetInnerHTML=${{__html:O}} />
|
|
194
290
|
`}
|
|
195
|
-
${C&&
|
|
196
|
-
<${
|
|
197
|
-
onRetry=${
|
|
291
|
+
${C&&u`
|
|
292
|
+
<${At}
|
|
293
|
+
onRetry=${H}
|
|
198
294
|
isLoading=${o}
|
|
199
295
|
position="right"
|
|
200
296
|
showEdit=${!1}
|
|
201
297
|
/>
|
|
202
298
|
`}
|
|
203
|
-
${t&&
|
|
299
|
+
${t&&u`<${Te} msg=${e} show=${i} onToggle=${()=>_(!i)} />`}
|
|
204
300
|
</div>
|
|
205
|
-
`}function
|
|
301
|
+
`}function Dt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,onEditMessage:o,onRetryMessage:l,debugMode:c,markdownParser:d,emptyStateTitle:i,emptyStateMessage:_}){let r=Q(null),p=Q(!0),h=y=>{let v=y.target,m=v.scrollHeight-v.scrollTop-v.clientHeight<100;if(p.current=m,v.scrollTop<50&&n&&!s){let k=v.scrollHeight;a().then(()=>{let $=v.scrollHeight;v.scrollTop=$-k+v.scrollTop})}};B(()=>{let y=r.current;y&&p.current&&requestAnimationFrame(()=>{y.scrollTop=y.scrollHeight})},[e,t]),B(()=>{let y=r.current;y&&e.length<=2&&(p.current=!0,requestAnimationFrame(()=>{y.scrollTop=y.scrollHeight}))},[e.length]);let f=e.length===0;return u`
|
|
206
302
|
<div class="cw-messages" ref=${r} onScroll=${h}>
|
|
207
|
-
${f&&
|
|
303
|
+
${f&&u`
|
|
208
304
|
<div class="cw-empty-state">
|
|
209
305
|
<svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
210
306
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
|
|
211
307
|
</svg>
|
|
212
|
-
<h3>${
|
|
213
|
-
<p>${
|
|
308
|
+
<h3>${z(i)}</h3>
|
|
309
|
+
<p>${z(_)}</p>
|
|
214
310
|
</div>
|
|
215
311
|
`}
|
|
216
312
|
|
|
217
|
-
${!f&&n&&
|
|
313
|
+
${!f&&n&&u`
|
|
218
314
|
<div class="cw-load-more" onClick=${a}>
|
|
219
|
-
${s?
|
|
315
|
+
${s?u`<span class="cw-spinner"></span><span>Loading...</span>`:u`<span>↑ Scroll up or click to load older messages</span>`}
|
|
220
316
|
</div>
|
|
221
317
|
`}
|
|
222
318
|
|
|
223
|
-
${e.map((y,
|
|
224
|
-
<${
|
|
319
|
+
${e.map((y,v)=>u`
|
|
320
|
+
<${It}
|
|
225
321
|
key=${y.id}
|
|
226
322
|
msg=${y}
|
|
227
|
-
messageIndex=${
|
|
228
|
-
debugMode=${
|
|
229
|
-
markdownParser=${
|
|
323
|
+
messageIndex=${v}
|
|
324
|
+
debugMode=${c}
|
|
325
|
+
markdownParser=${d}
|
|
230
326
|
onEdit=${o}
|
|
231
327
|
onRetry=${l}
|
|
232
328
|
isLoading=${t}
|
|
233
329
|
/>
|
|
234
330
|
`)}
|
|
235
331
|
|
|
236
|
-
${t&&
|
|
332
|
+
${t&&u`
|
|
237
333
|
<div class="cw-message-row">
|
|
238
334
|
<div class="cw-typing">
|
|
239
335
|
<span class="cw-spinner"></span>
|
|
@@ -242,23 +338,23 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
242
338
|
</div>
|
|
243
339
|
`}
|
|
244
340
|
</div>
|
|
245
|
-
`}var
|
|
341
|
+
`}var We=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function Pt({onSend:e,onCancel:t,isLoading:n,placeholder:s,primaryColor:a,enableVoice:o=!0,enableFiles:l=!0}){let[c,d]=T(""),[i,_]=T([]),[r,p]=T(!1),[h,f]=T(!1),[y]=T(()=>!!We),v=Q(null),m=Q(null),k=Q(null),$=Q(!1);B(()=>{!n&&v.current&&v.current.focus()},[n]),B(()=>{v.current&&(v.current.style.height="auto",v.current.style.height=Math.min(v.current.scrollHeight,150)+"px")},[c]),B(()=>()=>{$.current=!1,k.current&&k.current.abort()},[]);let K=b=>{b.preventDefault(),(c.trim()||i.length>0)&&!n&&(e(c,i),d(""),_([]),v.current&&(v.current.style.height="auto"),m.current&&(m.current.value=""))},j=b=>{let L=Array.from(b.target.files||[]);L.length>0&&_(N=>[...N,...L])},D=b=>{_(L=>L.filter((N,g)=>g!==b))},O=b=>{b.preventDefault(),m.current&&!n&&m.current.click()},R=b=>{b.key==="Enter"&&!b.shiftKey&&(b.preventDefault(),K(b))},F=b=>{n&&t&&(b.preventDefault(),t())},q=()=>{if(!We||n)return;$.current=!0;let b=new We;b.continuous=!0,b.interimResults=!0,b.lang=navigator.language||"en-US";let L=c,N="";b.onstart=()=>{f(!0)},b.onresult=g=>{N="";for(let A=g.resultIndex;A<g.results.length;A++){let V=g.results[A][0].transcript;g.results[A].isFinal?L+=(L?" ":"")+V:N+=V}d(L+(N?" "+N:""))},b.onerror=g=>{if(g.error==="no-speech"||g.error==="aborted"){console.log("[ChatWidget] Speech recognition:",g.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",g.error),$.current=!1,f(!1),d(L||c)},b.onend=()=>{if($.current){console.log("[ChatWidget] Recognition paused, restarting...");try{b.start();return}catch(g){console.warn("[ChatWidget] Could not restart recognition:",g)}}f(!1),L&&d(L),k.current=null},k.current=b,b.start()},H=()=>{$.current=!1,k.current&&k.current.stop()},w=b=>{b.preventDefault(),h?H():q()},P=u`
|
|
246
342
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
|
|
247
343
|
<rect x="2" y="2" width="10" height="10" rx="1" />
|
|
248
344
|
</svg>
|
|
249
|
-
`,C=
|
|
345
|
+
`,C=u`
|
|
250
346
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
251
347
|
<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
|
|
252
348
|
<path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
|
|
253
349
|
<line x1="12" y1="19" x2="12" y2="23"></line>
|
|
254
350
|
<line x1="8" y1="23" x2="16" y2="23"></line>
|
|
255
351
|
</svg>
|
|
256
|
-
`,M=
|
|
352
|
+
`,M=u`
|
|
257
353
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
258
354
|
<path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>
|
|
259
355
|
</svg>
|
|
260
|
-
`,S=o&&y,
|
|
261
|
-
<form class="cw-input-form" onSubmit=${
|
|
356
|
+
`,S=o&&y,E=l;return u`
|
|
357
|
+
<form class="cw-input-form" onSubmit=${K}>
|
|
262
358
|
<input
|
|
263
359
|
type="file"
|
|
264
360
|
ref=${m}
|
|
@@ -266,9 +362,9 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
266
362
|
multiple
|
|
267
363
|
onChange=${j}
|
|
268
364
|
/>
|
|
269
|
-
${
|
|
365
|
+
${i.length>0&&u`
|
|
270
366
|
<div class="cw-file-chips">
|
|
271
|
-
${
|
|
367
|
+
${i.map((b,L)=>u`
|
|
272
368
|
<div class="cw-file-chip" key=${L}>
|
|
273
369
|
<span class="cw-file-chip-icon">${Se(b.type)}</span>
|
|
274
370
|
<span class="cw-file-chip-name" title=${b.name}>${b.name.length>20?b.name.substring(0,17)+"...":b.name}</span>
|
|
@@ -276,7 +372,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
276
372
|
<button
|
|
277
373
|
type="button"
|
|
278
374
|
class="cw-file-chip-remove"
|
|
279
|
-
onClick=${()=>
|
|
375
|
+
onClick=${()=>D(L)}
|
|
280
376
|
title="Remove file"
|
|
281
377
|
>×</button>
|
|
282
378
|
</div>
|
|
@@ -284,27 +380,27 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
284
380
|
</div>
|
|
285
381
|
`}
|
|
286
382
|
<textarea
|
|
287
|
-
ref=${
|
|
383
|
+
ref=${v}
|
|
288
384
|
class="cw-input"
|
|
289
|
-
placeholder=${
|
|
290
|
-
value=${
|
|
291
|
-
onInput=${b=>
|
|
292
|
-
onKeyDown=${
|
|
385
|
+
placeholder=${z(s)}
|
|
386
|
+
value=${c}
|
|
387
|
+
onInput=${b=>d(b.target.value)}
|
|
388
|
+
onKeyDown=${R}
|
|
293
389
|
disabled=${n}
|
|
294
390
|
rows="1"
|
|
295
391
|
/>
|
|
296
|
-
${
|
|
392
|
+
${E&&u`
|
|
297
393
|
<button
|
|
298
394
|
type="button"
|
|
299
395
|
class="cw-attach-btn"
|
|
300
|
-
onClick=${
|
|
396
|
+
onClick=${O}
|
|
301
397
|
disabled=${n}
|
|
302
398
|
title="Attach files"
|
|
303
399
|
>
|
|
304
400
|
${M}
|
|
305
401
|
</button>
|
|
306
402
|
`}
|
|
307
|
-
${S&&
|
|
403
|
+
${S&&u`
|
|
308
404
|
<button
|
|
309
405
|
type="button"
|
|
310
406
|
class=${`cw-voice-btn ${h?"cw-voice-btn-recording":""}`}
|
|
@@ -319,15 +415,15 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
319
415
|
type=${n?"button":"submit"}
|
|
320
416
|
class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&r?"cw-send-btn-stop":""}`}
|
|
321
417
|
style=${{backgroundColor:n&&r?"#dc2626":a}}
|
|
322
|
-
onClick=${
|
|
323
|
-
onMouseEnter=${()=>
|
|
324
|
-
onMouseLeave=${()=>
|
|
418
|
+
onClick=${F}
|
|
419
|
+
onMouseEnter=${()=>p(!0)}
|
|
420
|
+
onMouseLeave=${()=>p(!1)}
|
|
325
421
|
title=${n?"Stop":"Send"}
|
|
326
422
|
>
|
|
327
|
-
${n?r?
|
|
423
|
+
${n?r?P:u`<span class="cw-spinner"></span>`:"\u27A4"}
|
|
328
424
|
</button>
|
|
329
425
|
</form>
|
|
330
|
-
`}function
|
|
426
|
+
`}function Rt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:l}){return u`
|
|
331
427
|
<div class="cw-sidebar ${e?"cw-sidebar-open":""}">
|
|
332
428
|
<div class="cw-sidebar-header">
|
|
333
429
|
<span>Conversations</span>
|
|
@@ -339,24 +435,24 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
339
435
|
</button>
|
|
340
436
|
|
|
341
437
|
<div class="cw-conversation-list">
|
|
342
|
-
${n&&
|
|
438
|
+
${n&&u`
|
|
343
439
|
<div class="cw-sidebar-loading">
|
|
344
440
|
<span class="cw-spinner"></span>
|
|
345
441
|
</div>
|
|
346
442
|
`}
|
|
347
443
|
|
|
348
|
-
${!n&&t.length===0&&
|
|
444
|
+
${!n&&t.length===0&&u`
|
|
349
445
|
<div class="cw-sidebar-empty">No conversations yet</div>
|
|
350
446
|
`}
|
|
351
447
|
|
|
352
|
-
${t.map(
|
|
448
|
+
${t.map(c=>u`
|
|
353
449
|
<div
|
|
354
|
-
key=${
|
|
355
|
-
class="cw-conversation-item ${
|
|
356
|
-
onClick=${()=>l(
|
|
450
|
+
key=${c.id}
|
|
451
|
+
class="cw-conversation-item ${c.id===s?"cw-conversation-active":""}"
|
|
452
|
+
onClick=${()=>l(c.id)}
|
|
357
453
|
>
|
|
358
|
-
<div class="cw-conversation-title">${
|
|
359
|
-
<div class="cw-conversation-date">${wt(
|
|
454
|
+
<div class="cw-conversation-title">${z(c.title||"Untitled")}</div>
|
|
455
|
+
<div class="cw-conversation-date">${wt(c.updatedAt||c.createdAt)}</div>
|
|
360
456
|
</div>
|
|
361
457
|
`)}
|
|
362
458
|
</div>
|
|
@@ -366,7 +462,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
366
462
|
class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
|
|
367
463
|
onClick=${a}
|
|
368
464
|
/>
|
|
369
|
-
`}function
|
|
465
|
+
`}function Ft({availableModels:e,selectedModel:t,onSelectModel:n,thinkingEnabled:s,onToggleThinking:a,disabled:o}){let[l,c]=T(!1);if(!e||e.length===0)return null;let d=e.find(f=>f.id===t),i=d?.name||"Select Model",_=d?.supports_thinking||!1,r=()=>{o||c(!l)},p=f=>{n(f),c(!1)},h=f=>{f.stopPropagation(),a&&_&&a(!s)};return u`
|
|
370
466
|
<div class="cw-model-selector">
|
|
371
467
|
<button
|
|
372
468
|
class="cw-model-btn"
|
|
@@ -375,11 +471,11 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
375
471
|
title="Select Model"
|
|
376
472
|
>
|
|
377
473
|
<span class="cw-model-icon">🤖</span>
|
|
378
|
-
<span class="cw-model-name">${
|
|
474
|
+
<span class="cw-model-name">${z(i)}</span>
|
|
379
475
|
<span class="cw-model-chevron">${l?"\u25B2":"\u25BC"}</span>
|
|
380
476
|
</button>
|
|
381
477
|
|
|
382
|
-
${
|
|
478
|
+
${_&&a&&u`
|
|
383
479
|
<button
|
|
384
480
|
class="cw-thinking-toggle ${s?"cw-thinking-enabled":""}"
|
|
385
481
|
onClick=${h}
|
|
@@ -390,48 +486,48 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
390
486
|
</button>
|
|
391
487
|
`}
|
|
392
488
|
|
|
393
|
-
${l&&
|
|
489
|
+
${l&&u`
|
|
394
490
|
<div class="cw-model-dropdown">
|
|
395
|
-
${e.map(f=>
|
|
491
|
+
${e.map(f=>u`
|
|
396
492
|
<button
|
|
397
493
|
key=${f.id}
|
|
398
494
|
class="cw-model-option ${f.id===t?"cw-model-option-selected":""}"
|
|
399
|
-
onClick=${()=>
|
|
495
|
+
onClick=${()=>p(f.id)}
|
|
400
496
|
>
|
|
401
497
|
<span class="cw-model-option-name">
|
|
402
|
-
${
|
|
403
|
-
${f.supports_thinking&&
|
|
498
|
+
${z(f.name)}
|
|
499
|
+
${f.supports_thinking&&u`<span class="cw-thinking-badge" title="Supports extended thinking">🧠</span>`}
|
|
404
500
|
</span>
|
|
405
|
-
<span class="cw-model-option-provider">${
|
|
406
|
-
${f.description&&
|
|
407
|
-
<span class="cw-model-option-desc">${
|
|
501
|
+
<span class="cw-model-option-provider">${z(f.provider)}</span>
|
|
502
|
+
${f.description&&u`
|
|
503
|
+
<span class="cw-model-option-desc">${z(f.description)}</span>
|
|
408
504
|
`}
|
|
409
505
|
</button>
|
|
410
506
|
`)}
|
|
411
507
|
</div>
|
|
412
508
|
`}
|
|
413
509
|
</div>
|
|
414
|
-
`}var
|
|
510
|
+
`}var Mn={not_started:"\u25CB",in_progress:"\u25D0",complete:"\u25CF",cancelled:"\u2298"},En={not_started:"Not Started",in_progress:"In Progress",complete:"Complete",cancelled:"Cancelled"};function xn({task:e,onUpdate:t,onRemove:n,depth:s=0}){let[a,o]=T(!1),[l,c]=T(e.name),d=x(()=>{let p={not_started:"in_progress",in_progress:"complete",complete:"not_started",cancelled:"not_started"};t(e.id,{state:p[e.state]||"not_started"})},[e,t]),i=x(()=>{l.trim()&&l!==e.name&&t(e.id,{name:l.trim()}),o(!1)},[e,l,t]),_=x(p=>{p.key==="Enter"&&i(),p.key==="Escape"&&(c(e.name),o(!1))},[i,e.name]),r=`cw-task-state-${e.state.replace("_","-")}`;return u`
|
|
415
511
|
<div class="cw-task-item ${r}" style=${{paddingLeft:`${s*16+8}px`}}>
|
|
416
512
|
<button
|
|
417
513
|
class="cw-task-state-btn"
|
|
418
|
-
onClick=${
|
|
419
|
-
title=${
|
|
514
|
+
onClick=${d}
|
|
515
|
+
title=${En[e.state]}
|
|
420
516
|
>
|
|
421
|
-
${
|
|
517
|
+
${Mn[e.state]}
|
|
422
518
|
</button>
|
|
423
519
|
|
|
424
|
-
${a?
|
|
520
|
+
${a?u`
|
|
425
521
|
<input
|
|
426
522
|
type="text"
|
|
427
523
|
class="cw-task-edit-input"
|
|
428
524
|
value=${l}
|
|
429
|
-
onInput=${
|
|
430
|
-
onBlur=${
|
|
431
|
-
onKeyDown=${
|
|
525
|
+
onInput=${p=>c(p.target.value)}
|
|
526
|
+
onBlur=${i}
|
|
527
|
+
onKeyDown=${_}
|
|
432
528
|
autoFocus
|
|
433
529
|
/>
|
|
434
|
-
`:
|
|
530
|
+
`:u`
|
|
435
531
|
<span
|
|
436
532
|
class="cw-task-name"
|
|
437
533
|
onClick=${()=>o(!0)}
|
|
@@ -449,16 +545,16 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
449
545
|
×
|
|
450
546
|
</button>
|
|
451
547
|
</div>
|
|
452
|
-
`}function
|
|
453
|
-
<${
|
|
548
|
+
`}function Ot({tasks:e,progress:t,isLoading:n,error:s,onUpdate:a,onRemove:o,onClear:l,onRefresh:c}){let d=x(r=>{let p=new Map,h=[];return r.forEach(f=>{p.set(f.id,{...f,children:[]})}),r.forEach(f=>{let y=p.get(f.id);f.parent_id&&p.has(f.parent_id)?p.get(f.parent_id).children.push(y):h.push(y)}),h},[]),i=x((r,p=0)=>u`
|
|
549
|
+
<${xn}
|
|
454
550
|
key=${r.id}
|
|
455
551
|
task=${r}
|
|
456
|
-
depth=${
|
|
552
|
+
depth=${p}
|
|
457
553
|
onUpdate=${a}
|
|
458
554
|
onRemove=${o}
|
|
459
555
|
/>
|
|
460
|
-
${r.children?.map(h=>
|
|
461
|
-
`,[a,o]),
|
|
556
|
+
${r.children?.map(h=>i(h,p+1))}
|
|
557
|
+
`,[a,o]),_=d(e);return n&&e.length===0?u`<div class="cw-tasks-loading">Loading tasks...</div>`:u`
|
|
462
558
|
<div class="cw-tasks-container">
|
|
463
559
|
<div class="cw-tasks-header">
|
|
464
560
|
<div class="cw-tasks-progress">
|
|
@@ -473,25 +569,25 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
473
569
|
</div>
|
|
474
570
|
</div>
|
|
475
571
|
<div class="cw-tasks-actions">
|
|
476
|
-
<button class="cw-tasks-action-btn" onClick=${
|
|
477
|
-
${e.length>0&&
|
|
572
|
+
<button class="cw-tasks-action-btn" onClick=${c} title="Refresh">↻</button>
|
|
573
|
+
${e.length>0&&u`
|
|
478
574
|
<button class="cw-tasks-action-btn" onClick=${l} title="Clear all">🗑</button>
|
|
479
575
|
`}
|
|
480
576
|
</div>
|
|
481
577
|
</div>
|
|
482
578
|
|
|
483
|
-
${s&&
|
|
579
|
+
${s&&u`<div class="cw-tasks-error">${s}</div>`}
|
|
484
580
|
|
|
485
581
|
<div class="cw-tasks-list">
|
|
486
|
-
${
|
|
582
|
+
${_.length===0?u`
|
|
487
583
|
<div class="cw-tasks-empty">
|
|
488
584
|
<p>No tasks yet</p>
|
|
489
585
|
<p class="cw-tasks-empty-hint">Tasks will appear here when the agent creates them</p>
|
|
490
586
|
</div>
|
|
491
|
-
`:
|
|
587
|
+
`:_.map(r=>i(r))}
|
|
492
588
|
</div>
|
|
493
589
|
</div>
|
|
494
|
-
`}function
|
|
590
|
+
`}function Ht({systems:e,agents:t,selectedSystem:n,selectedAgent:s,selectedSystemVersion:a,selectedAgentVersion:o,onSelectSystem:l,onSelectAgent:c,onSelectSystemVersion:d,onSelectAgentVersion:i,disabled:_}){let r=e.find($=>$.slug===n),p=t.find($=>$.slug===s),h=r?.versions||[],f=p?.versions||[];if(e.length===0&&t.length===0)return null;let y=e.length>1,v=t.length>1,m=h.length>1,k=f.length>1;return u`
|
|
495
591
|
<div class="cw-dev-toolbar">
|
|
496
592
|
<div class="cw-dev-toolbar-label">
|
|
497
593
|
<span class="cw-dev-toolbar-icon">🛠️</span>
|
|
@@ -502,20 +598,20 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
502
598
|
<!-- System -->
|
|
503
599
|
<div class="cw-dev-select-group">
|
|
504
600
|
<label class="cw-dev-label">System</label>
|
|
505
|
-
${y?
|
|
601
|
+
${y?u`
|
|
506
602
|
<select
|
|
507
603
|
class="cw-dev-select"
|
|
508
604
|
value=${n||""}
|
|
509
605
|
onChange=${$=>l($.target.value)}
|
|
510
|
-
disabled=${
|
|
606
|
+
disabled=${_}
|
|
511
607
|
>
|
|
512
|
-
${e.map($=>
|
|
608
|
+
${e.map($=>u`
|
|
513
609
|
<option key=${$.slug} value=${$.slug}>
|
|
514
610
|
${$.name}
|
|
515
611
|
</option>
|
|
516
612
|
`)}
|
|
517
613
|
</select>
|
|
518
|
-
`:
|
|
614
|
+
`:u`
|
|
519
615
|
<span class="cw-dev-badge">${r?.name||"\u2014"}</span>
|
|
520
616
|
`}
|
|
521
617
|
</div>
|
|
@@ -523,20 +619,20 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
523
619
|
<!-- System Version -->
|
|
524
620
|
<div class="cw-dev-select-group">
|
|
525
621
|
<label class="cw-dev-label">Sys Ver</label>
|
|
526
|
-
${m?
|
|
622
|
+
${m?u`
|
|
527
623
|
<select
|
|
528
624
|
class="cw-dev-select"
|
|
529
625
|
value=${a||""}
|
|
530
|
-
onChange=${$=>
|
|
531
|
-
disabled=${
|
|
626
|
+
onChange=${$=>d($.target.value||null)}
|
|
627
|
+
disabled=${_}
|
|
532
628
|
>
|
|
533
|
-
${h.map($=>
|
|
629
|
+
${h.map($=>u`
|
|
534
630
|
<option key=${$.version} value=${$.version}>
|
|
535
631
|
${$.version}${$.is_active?" \u2713":""}${$.is_draft?" (draft)":""}
|
|
536
632
|
</option>
|
|
537
633
|
`)}
|
|
538
634
|
</select>
|
|
539
|
-
`:
|
|
635
|
+
`:u`
|
|
540
636
|
<span class="cw-dev-badge">${h.length===1?h[0].version:"none"}</span>
|
|
541
637
|
`}
|
|
542
638
|
</div>
|
|
@@ -544,47 +640,47 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
544
640
|
<!-- Agent -->
|
|
545
641
|
<div class="cw-dev-select-group">
|
|
546
642
|
<label class="cw-dev-label">Agent</label>
|
|
547
|
-
${
|
|
643
|
+
${v?u`
|
|
548
644
|
<select
|
|
549
645
|
class="cw-dev-select"
|
|
550
646
|
value=${s||""}
|
|
551
|
-
onChange=${$=>
|
|
552
|
-
disabled=${
|
|
647
|
+
onChange=${$=>c($.target.value)}
|
|
648
|
+
disabled=${_}
|
|
553
649
|
>
|
|
554
|
-
${t.map($=>
|
|
650
|
+
${t.map($=>u`
|
|
555
651
|
<option key=${$.slug} value=${$.slug}>
|
|
556
652
|
${$.name}${r?.entry_agent?.slug===$.slug?" \u2605":""}
|
|
557
653
|
</option>
|
|
558
654
|
`)}
|
|
559
655
|
</select>
|
|
560
|
-
`:
|
|
561
|
-
<span class="cw-dev-badge">${
|
|
656
|
+
`:u`
|
|
657
|
+
<span class="cw-dev-badge">${p?.name||t[0]?.name||"\u2014"}${r?.entry_agent?.slug===(p?.slug||t[0]?.slug)?" \u2605":""}</span>
|
|
562
658
|
`}
|
|
563
659
|
</div>
|
|
564
660
|
|
|
565
661
|
<!-- Agent Version -->
|
|
566
662
|
<div class="cw-dev-select-group">
|
|
567
663
|
<label class="cw-dev-label">Agent Ver</label>
|
|
568
|
-
${k?
|
|
664
|
+
${k?u`
|
|
569
665
|
<select
|
|
570
666
|
class="cw-dev-select"
|
|
571
667
|
value=${o||""}
|
|
572
|
-
onChange=${$=>
|
|
573
|
-
disabled=${
|
|
668
|
+
onChange=${$=>i($.target.value||null)}
|
|
669
|
+
disabled=${_}
|
|
574
670
|
>
|
|
575
|
-
${f.map($=>
|
|
671
|
+
${f.map($=>u`
|
|
576
672
|
<option key=${$.version} value=${$.version}>
|
|
577
673
|
${$.version}${$.is_active?" \u2713":""}${$.is_draft?" (draft)":""}
|
|
578
674
|
</option>
|
|
579
675
|
`)}
|
|
580
676
|
</select>
|
|
581
|
-
`:
|
|
582
|
-
<span class="cw-dev-badge">${f.length===1?f[0].version:
|
|
677
|
+
`:u`
|
|
678
|
+
<span class="cw-dev-badge">${f.length===1?f[0].version:p?.active_version||"\u2014"}</span>
|
|
583
679
|
`}
|
|
584
680
|
</div>
|
|
585
681
|
</div>
|
|
586
682
|
</div>
|
|
587
|
-
`}function Rt(e,t,n){let[s,a]=T([]),[o,l]=T(!1),[i,u]=T(null),[c,p]=T(()=>n?.get(e.conversationIdKey)||null),[r,d]=T(!1),[h,f]=T(!1),[y,g]=T(0),m=Q(null),k=Q(null);V(()=>{c&&n?.set(e.conversationIdKey,c)},[c,e.conversationIdKey,n]);let $=E(async(w,A,C)=>{m.current&&m.current.close();let M=e.apiPaths.runEvents.replace("{runId}",w),S=`${e.backendUrl}${M}`;A&&(S+=`?anonymous_token=${encodeURIComponent(A)}`);let D=new EventSource(S);m.current=D;let b="";D.addEventListener("assistant.message",U=>{try{let v=JSON.parse(U.data);e.onEvent&&e.onEvent("assistant.message",v.payload);let P=v.payload.content;P&&(b+=P,a(B=>{let X=B[B.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...B.slice(0,-1),{...X,content:b}]:[...B,{id:"assistant-stream-"+Date.now(),role:"assistant",content:b,timestamp:new Date,type:"message"}]}))}catch(v){console.error("[ChatWidget] Parse error:",v)}}),D.addEventListener("tool.call",U=>{try{let v=JSON.parse(U.data);e.onEvent&&e.onEvent("tool.call",v.payload),a(P=>[...P,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${v.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:v.payload.name,arguments:v.payload.arguments,toolCallId:v.payload.id}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),D.addEventListener("tool.result",U=>{try{let v=JSON.parse(U.data);e.onEvent&&e.onEvent("tool.result",v.payload);let P=v.payload.result,B=P?.error;a(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:B?`\u274C ${P.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:v.payload.name,result:P,toolCallId:v.payload.tool_call_id}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),D.addEventListener("custom",U=>{try{let v=JSON.parse(U.data);e.onEvent&&e.onEvent("custom",v.payload),v.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(v.payload),v.payload?.type==="agent_context"&&a(P=>[...P,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${v.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:v.payload.agent_key,agentName:v.payload.agent_name,action:v.payload.action}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),D.addEventListener("sub_agent.start",U=>{try{let v=JSON.parse(U.data);e.onEvent&&e.onEvent("sub_agent.start",v.payload),a(P=>[...P,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${v.payload.agent_name||v.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:v.payload.sub_agent_key,agentName:v.payload.agent_name,invocationMode:v.payload.invocation_mode}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),D.addEventListener("sub_agent.end",U=>{try{let v=JSON.parse(U.data);e.onEvent&&e.onEvent("sub_agent.end",v.payload),a(P=>[...P,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${v.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:v.payload.sub_agent_key,agentName:v.payload.agent_name}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}});let L=U=>{try{let v=JSON.parse(U.data);if(e.onEvent&&e.onEvent(v.type,v.payload),v.type==="run.failed"){let P=v.payload.error||"Agent run failed";u(P),a(B=>[...B,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${P}`,timestamp:new Date,type:"error"}])}}catch(v){console.error("[ChatWidget] Parse error:",v)}l(!1),D.close(),m.current=null,b&&C&&C(b)};D.addEventListener("run.succeeded",L),D.addEventListener("run.failed",L),D.addEventListener("run.cancelled",L),D.addEventListener("run.timed_out",L),D.onerror=()=>{l(!1),D.close(),m.current=null}},[e]),N=E(async(w,A={},C={})=>{if(!w.trim()||o)return;let M=[],S={};typeof A=="function"?S={onAssistantMessage:A}:Array.isArray(A)?(M=A,S=C):S=A||{};let{model:D,thinking:b,onAssistantMessage:L,supersedeFromMessageIndex:U}=S;l(!0),u(null);let v={id:be(),role:"user",content:w.trim(),timestamp:new Date,type:"message",files:M.length>0?M.map(P=>({name:P.name,size:P.size,type:P.type})):void 0};a(P=>[...P,v]);try{let P=await t.getOrCreateSession(),B;if(M.length>0){let Y=e.apiCaseStyle!=="camel",Be=ue=>Y?Ne(ue):ue,ne=new FormData;ne.append(Be("agentKey"),e.agentKey),c&&ne.append(Be("conversationId"),c),ne.append("messages",JSON.stringify([{role:"user",content:w.trim()}])),ne.append("metadata",JSON.stringify(Y?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),D&&ne.append("model",D),b&&ne.append("thinking","true"),M.forEach(ue=>{ne.append("files",ue)}),B=t.getFetchOptions({method:"POST",body:ne},P)}else{let Y=t.transformRequest({agentKey:e.agentKey,conversationId:c,messages:[{role:"user",content:w.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...D&&{model:D},...b&&{thinking:!0},...U!==void 0&&{supersedeFromMessageIndex:U}});B=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Y)},P)}let X=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,B),x=P;if(X.status===401){t.clearSession();let Y=await t.getOrCreateSession(!0);Y&&(x=Y,M.length>0?B=t.getFetchOptions({method:"POST",body:B.body},Y):B=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:B.body},Y),X=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,B))}if(!X.ok){let Y=await X.json().catch(()=>({}));throw new Error(Y.error||Y.detail||`HTTP ${X.status}`)}let Z=await X.json(),ee=t.transformResponse(Z);k.current=ee.id,!c&&ee.conversationId&&p(ee.conversationId),await $(ee.id,x,L)}catch(P){u(P.message||"Failed to send message"),l(!1)}finally{k.current=null}},[e,t,c,o,$]),j=E(async()=>{let w=k.current;if(!(!w||!o))try{let A=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",w):`${e.apiPaths.runs}${w}/cancel/`;(await fetch(`${e.backendUrl}${A}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(m.current&&(m.current.close(),m.current=null),l(!1),k.current=null,a(M=>[...M,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(A){console.error("[ChatWidget] Failed to cancel run:",A)}},[e,t,o]),I=E(()=>{a([]),p(null),u(null),d(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),H=w=>{let A={id:be(),role:w.role,timestamp:w.timestamp?new Date(w.timestamp):new Date};if(w.role==="tool")return{...A,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:w.content,toolCallId:w.toolCallId}};if(w.role==="assistant"&&w.toolCalls&&w.toolCalls.length>0)return w.toolCalls.map(M=>({id:be(),role:"assistant",content:`\u{1F527} ${M.function?.name||M.name||"tool"}`,timestamp:A.timestamp,type:"tool_call",metadata:{toolName:M.function?.name||M.name,arguments:M.function?.arguments||M.arguments,toolCallId:M.id}}));let C=typeof w.content=="string"?w.content:JSON.stringify(w.content);return w.role==="assistant"&&!C?.trim()?null:{...A,content:C,type:"message"}},F=E(async w=>{console.log("[ChatWidget] loadConversation called with:",w),l(!0),a([]),p(w);try{let A=await t.getOrCreateSession(),M=`${e.backendUrl}${e.apiPaths.conversations}${w}/?limit=10&offset=0`;console.log("[ChatWidget] Fetching conversation from:",M);let S=await fetch(M,t.getFetchOptions({method:"GET"},A));if(console.log("[ChatWidget] Response status:",S.status),S.ok){let D=await S.json();console.log("[ChatWidget] Raw conversation:",D);let b=t.transformResponse(D);if(console.log("[ChatWidget] Transformed conversation:",b),b.messages){let L=b.messages.flatMap(H).filter(Boolean);console.log("[ChatWidget] Mapped messages:",L),a(L)}d(b.hasMore||!1),g(b.messages?.length||0)}else S.status===404?(console.log("[ChatWidget] Conversation not found, clearing"),p(null),n?.set(e.conversationIdKey,null)):console.error("[ChatWidget] Unexpected response status:",S.status)}catch(A){console.error("[ChatWidget] Failed to load conversation:",A)}finally{l(!1)}},[e,t,n]),R=E(async()=>{if(!(!c||h||!r)){f(!0);try{let w=await t.getOrCreateSession(),C=`${e.backendUrl}${e.apiPaths.conversations}${c}/?limit=10&offset=${y}`,M=await fetch(C,t.getFetchOptions({method:"GET"},w));if(M.ok){let S=await M.json(),D=t.transformResponse(S);if(D.messages?.length>0){let b=D.messages.flatMap(H).filter(Boolean);a(L=>[...b,...L]),g(L=>L+D.messages.length),d(D.hasMore||!1)}else d(!1)}}catch(w){console.error("[ChatWidget] Failed to load more messages:",w)}finally{f(!1)}}},[e,t,c,y,h,r]),J=E(async(w,A,C={})=>{if(o)return;let M=s[w];if(!M||M.role!=="user")return;let S=s.slice(0,w);a(S),await N(A,{...C,supersedeFromMessageIndex:w})},[s,o,N]),O=E(async(w,A={})=>{if(o)return;let C=s[w];if(!C)return;let M=w,S=C;if(C.role==="assistant"){for(let b=w-1;b>=0;b--)if(s[b].role==="user"){M=b,S=s[b];break}if(S.role!=="user")return}else if(C.role!=="user")return;let D=s.slice(0,M);a(D),await N(S.content,{...A,supersedeFromMessageIndex:M})},[s,o,N]);return V(()=>()=>{m.current&&m.current.close()},[]),{messages:s,isLoading:o,error:i,conversationId:c,hasMoreMessages:r,loadingMoreMessages:h,sendMessage:N,cancelRun:j,clearMessages:I,loadConversation:F,loadMoreMessages:R,setConversationId:p,editMessage:J,retryMessage:O}}var Ht="cw_thinking_enabled";function Ot(e,t,n){let[s,a]=T([]),[o,l]=T(null),[i,u]=T(null),[c,p]=T(!1),[r,d]=T(!1);V(()=>{(async()=>{if(e.showModelSelector){p(!0);try{let k=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(k.ok){let $=await k.json(),N=$.models||[];a(N),u($.default);let j=n?.get(e.modelKey);j&&N.some(H=>H.id===j)?l(j):l($.default),n?.get(Ht)==="true"&&d(!0)}}catch(k){console.warn("[ChatWidget] Failed to load models:",k)}finally{p(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let h=E(m=>{l(m),n?.set(e.modelKey,m)},[e.modelKey,n]),f=E(m=>{d(m),n?.set(Ht,m?"true":"false")},[n]),y=E(()=>s.find(m=>m.id===o)||null,[s,o]),g=E(()=>y()?.supports_thinking||!1,[y]);return{availableModels:s,selectedModel:o,defaultModel:i,isLoading:c,selectModel:h,getSelectedModelInfo:y,thinkingEnabled:r,toggleThinking:f,supportsThinking:g}}function Lt(e,t){let[n,s]=T(null),[a,o]=T(!1),[l,i]=T(null),u=e.apiPaths?.tasks||"/api/agent/tasks/",c=E(async()=>{o(!0),i(null);try{let y=`${e.backendUrl}${u}`,g=await fetch(y,t.getFetchOptions({method:"GET"}));if(g.ok){let m=await g.json();s(m)}else{let m=await g.json().catch(()=>({}));i(m.error||"Failed to load tasks")}}catch(y){console.error("[useTasks] Failed to load task list:",y),i("Failed to load tasks")}finally{o(!1)}},[e.backendUrl,u,t]),p=E(async y=>{if(!n)return null;try{let g=`${e.backendUrl}${u}${n.id}/add_task/`,m=await fetch(g,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}));if(m.ok){let k=await m.json();return await c(),k}else{let k=await m.json().catch(()=>({}));return i(k.error||"Failed to add task"),null}}catch(g){return console.error("[useTasks] Failed to add task:",g),i("Failed to add task"),null}},[e.backendUrl,u,n,t,c]),r=E(async(y,g)=>{if(!n)return null;try{let m=`${e.backendUrl}${u}${n.id}/update_task/${y}/`,k=await fetch(m,t.getFetchOptions({method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)}));if(k.ok){let $=await k.json();return await c(),$}else{let $=await k.json().catch(()=>({}));return i($.error||"Failed to update task"),null}}catch(m){return console.error("[useTasks] Failed to update task:",m),i("Failed to update task"),null}},[e.backendUrl,u,n,t,c]),d=E(async y=>{if(!n)return!1;try{let g=`${e.backendUrl}${u}${n.id}/remove_task/${y}/`,m=await fetch(g,t.getFetchOptions({method:"DELETE"}));if(m.ok)return await c(),!0;{let k=await m.json().catch(()=>({}));return i(k.error||"Failed to remove task"),!1}}catch(g){return console.error("[useTasks] Failed to remove task:",g),i("Failed to remove task"),!1}},[e.backendUrl,u,n,t,c]),h=E(async()=>{if(!n)return!1;try{let y=`${e.backendUrl}${u}${n.id}/clear/`,g=await fetch(y,t.getFetchOptions({method:"POST"}));if(g.ok)return await c(),!0;{let m=await g.json().catch(()=>({}));return i(m.error||"Failed to clear tasks"),!1}}catch(y){return console.error("[useTasks] Failed to clear tasks:",y),i("Failed to clear tasks"),!1}},[e.backendUrl,u,n,t,c]),f=E(()=>i(null),[]);return{taskList:n,tasks:n?.tasks||[],progress:n?.progress||{total:0,completed:0,percent_complete:0},isLoading:a,error:l,loadTaskList:c,addTask:p,updateTask:r,removeTask:d,clearTasks:h,clearError:f}}var Nt="cw_selected_system",We="cw_selected_agent",Kt="cw_selected_system_version",Te="cw_selected_agent_version";function Ut(e,t,n){let[s,a]=T([]),[o,l]=T([]),[i,u]=T(null),[c,p]=T(null),[r,d]=T(null),[h,f]=T(null),[y,g]=T(!1),m=E(()=>{if(c)return c;if(i){let I=s.find(H=>H.slug===i);if(I?.entry_agent)return I.entry_agent.slug}return e.agentKey},[c,i,s,e.agentKey]);V(()=>{if(!e.showDevTools)return;(async()=>{g(!0);try{let H=await fetch(`${e.backendUrl}${e.apiPaths.systems}`,t.getFetchOptions({method:"GET"}));if(H.ok){let F=await H.json(),R=F.results||F;a(R);let J=n?.get(Nt);J&&R.some(O=>O.slug===J)?u(J):R.length===1&&u(R[0].slug)}}catch(H){console.warn("[ChatWidget] Failed to load systems:",H)}finally{g(!1)}})()},[e.backendUrl,e.apiPaths.systems,e.showDevTools,t,n]),V(()=>{if(!e.showDevTools)return;(async()=>{try{let H=i?`?system=${encodeURIComponent(i)}`:"",F=await fetch(`${e.backendUrl}${e.apiPaths.agents}${H}`,t.getFetchOptions({method:"GET"}));if(F.ok){let R=await F.json(),J=R.results||R;l(J);let O=n?.get(We);if(O&&J.some(A=>A.slug===O))p(O);else if(i){let A=s.find(C=>C.slug===i);A?.entry_agent&&p(A.entry_agent.slug)}let w=n?.get(Te);w&&f(w)}}catch(H){console.warn("[ChatWidget] Failed to load agents:",H)}})()},[e.backendUrl,e.apiPaths.agents,e.showDevTools,i,t,n,s]);let k=E(I=>{u(I),n?.set(Nt,I),p(null),f(null),n?.set(We,null),n?.set(Te,null);let F=s.find(R=>R.slug===I)?.active_version||null;d(F),n?.set(Kt,F)},[n,s]),$=E(I=>{p(I),n?.set(We,I);let F=o.find(R=>R.slug===I)?.active_version||null;f(F),n?.set(Te,F)},[n,o]),N=E(I=>{d(I),n?.set(Kt,I)},[n]),j=E(I=>{f(I),n?.set(Te,I)},[n]);return{systems:s,agents:o,selectedSystem:i,selectedAgent:c,selectedSystemVersion:r,selectedAgentVersion:h,isLoading:y,selectSystem:k,selectAgent:$,selectSystemVersion:N,selectAgentVersion:j,getEffectiveAgentKey:m}}function Wt(e,t,n){let s=p=>!p||typeof p!="object"||e.apiCaseStyle==="camel"?p:ke(p),a=p=>!p||typeof p!="object"||e.apiCaseStyle==="snake"?p:we(p),o=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",l=(p=null)=>{let r=o(),d={},h=p||e.authToken||t().authToken;if(r==="token"&&h){let f=e.authHeader||"Authorization",y=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";d[f]=y?`${y} ${h}`:h}else if(r==="jwt"&&h){let f=e.authHeader||"Authorization",y=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";d[f]=y?`${y} ${h}`:h}else if(r==="anonymous"&&h){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";d[f]=h}if(r==="session"){let f=Ct(e.csrfCookieName);f&&(d["X-CSRFToken"]=f)}return d};return{getAuthStrategy:o,getAuthHeaders:l,getFetchOptions:(p={},r=null)=>{let d=o(),h={...p},f=l(r);return console.log("[ChatWidget] getFetchOptions - strategy:",d,"overrideToken:",r,"authHeaders:",f),h.headers={...h.headers,...f},d==="session"&&(h.credentials="include"),h},getOrCreateSession:async(p=!1)=>{let r=o(),d=t(),h=e.anonymousTokenKey||e.sessionTokenKey;if(r!=="anonymous")return e.authToken||d.authToken;if(!p){if(d.authToken)return d.authToken;let f=d.storage?.get(h);if(f)return n(y=>({...y,authToken:f})),f}try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,y=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(y.ok){let g=await y.json();return n(m=>({...m,authToken:g.token})),d.storage?.set(h,g.token),g.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},clearSession:()=>{let p=e.anonymousTokenKey||e.sessionTokenKey,r=t();n(d=>({...d,authToken:null})),r.storage?.set(p,null)},transformRequest:s,transformResponse:a}}function Vt({config:e,onStateChange:t,markdownParser:n,apiRef:s}){console.log("[ChatWidget] Config:",{showConversationSidebar:e.showConversationSidebar,apiPaths:e.apiPaths});let[a,o]=T(e.embedded||e.forceOpen===!0),[l,i]=T(!1),[u,c]=T(!1),[p,r]=T(!1),[d,h]=T([]),[f,y]=T("chat"),[g,m]=T(!1),[k,$]=T(e.enableTTS),[N,j]=T(!1),[I,H]=T(null);V(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let F=ae(()=>bt(e.containerId),[e.containerId]),[R,J]=T(e.authToken||null),O=ae(()=>Wt(e,()=>({authToken:R,storage:F}),ee=>{let Y=ee({authToken:R,storage:F});Y.authToken!==R&&J(Y.authToken)}),[e,R,F]),w=Ut(e,O,F),A=ae(()=>{if(!e.showDevTools)return e;let x=w.getEffectiveAgentKey();return x&&x!==e.agentKey?{...e,agentKey:x}:e},[e,w.getEffectiveAgentKey]),C=Rt(A,O,F),M=Ot(e,O,F),S=Lt(e,O);V(()=>{for(let x=C.messages.length-1;x>=0;x--){let Z=C.messages[x];if(Z.type==="sub_agent_start"){H({key:Z.metadata?.subAgentKey,name:Z.metadata?.agentName});return}if(Z.type==="sub_agent_end"){H(null);return}}},[C.messages]),V(()=>{let x=F.get(e.conversationIdKey);console.log("[ChatWidget] Initial load - storedConvId:",x,"key:",e.conversationIdKey),console.log("[ChatWidget] apiPaths.conversations:",e.apiPaths.conversations),x&&(console.log("[ChatWidget] Loading conversation:",x),C.loadConversation(x))},[]),V(()=>{t&&t({isOpen:a,isExpanded:l,debugMode:u,messages:C.messages,conversationId:C.conversationId,isLoading:C.isLoading,error:C.error})},[a,l,u,C.messages,C.conversationId,C.isLoading,C.error]);let D=E(async()=>{if(e.showConversationSidebar){m(!0);try{let x=A.agentKey,Z=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(x)}`,ee=await fetch(Z,O.getFetchOptions({method:"GET"}));if(ee.ok){let Y=await ee.json();h(Y.results||Y)}}catch(x){console.error("[ChatWidget] Failed to load conversations:",x),h([])}finally{m(!1)}}},[e,A,O]),b=E(()=>{let x=!p;r(x),x&&D()},[p,D]),L=E(x=>{x!==C.conversationId&&C.loadConversation(x),r(!1)},[C]),U=E(()=>{C.clearMessages(),r(!1)},[C]),v=E(x=>{C.sendMessage(x,{model:M.selectedModel,thinking:M.thinkingEnabled&&M.supportsThinking(),onAssistantMessage:Z=>{}})},[C,k,M.selectedModel,M.thinkingEnabled,M.supportsThinking]),P=E(x=>{y(x),x==="tasks"&&S.loadTaskList()},[S]);if(V(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:x=>v(x),clearMessages:()=>C.clearMessages(),toggleTTS:()=>$(x=>!x),stopSpeech:()=>j(!1),setAuth:x=>{x.token!==void 0&&J(x.token)},clearAuth:()=>J(null)})},[C,s,v]),!e.embedded&&!a)return _`
|
|
683
|
+
`}function Lt(e,t,n){let[s,a]=T([]),[o,l]=T(!1),[c,d]=T(null),[i,_]=T(()=>n?.get(e.conversationIdKey)||null),[r,p]=T(!1),[h,f]=T(!1),[y,v]=T(0),m=Q(null),k=Q(null);B(()=>{i&&n?.set(e.conversationIdKey,i)},[i,e.conversationIdKey,n]);let $=x(async(w,P,C)=>{m.current&&m.current.close();let M=e.apiPaths.runEvents.replace("{runId}",w),S=`${e.backendUrl}${M}`;P&&(S+=`?anonymous_token=${encodeURIComponent(P)}`);let E=new EventSource(S);m.current=E;let b="";E.addEventListener("assistant.message",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("assistant.message",g.payload);let A=g.payload.content;A&&(b+=A,a(V=>{let X=V[V.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...V.slice(0,-1),{...X,content:b}]:[...V,{id:"assistant-stream-"+Date.now(),role:"assistant",content:b,timestamp:new Date,type:"message"}]}))}catch(g){console.error("[ChatWidget] Parse error:",g)}}),E.addEventListener("tool.call",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("tool.call",g.payload),a(A=>[...A,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${g.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:g.payload.name,arguments:g.payload.arguments,toolCallId:g.payload.id}}])}catch(g){console.error("[ChatWidget] Parse error:",g)}}),E.addEventListener("tool.result",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("tool.result",g.payload);let A=g.payload.result,V=A?.error;a(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:V?`\u274C ${A.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:g.payload.name,result:A,toolCallId:g.payload.tool_call_id}}])}catch(g){console.error("[ChatWidget] Parse error:",g)}}),E.addEventListener("custom",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("custom",g.payload),g.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(g.payload),g.payload?.type==="agent_context"&&a(A=>[...A,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${g.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:g.payload.agent_key,agentName:g.payload.agent_name,action:g.payload.action}}])}catch(g){console.error("[ChatWidget] Parse error:",g)}}),E.addEventListener("sub_agent.start",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("sub_agent.start",g.payload),a(A=>[...A,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${g.payload.agent_name||g.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:g.payload.sub_agent_key,agentName:g.payload.agent_name,invocationMode:g.payload.invocation_mode}}])}catch(g){console.error("[ChatWidget] Parse error:",g)}}),E.addEventListener("sub_agent.end",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("sub_agent.end",g.payload),a(A=>[...A,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${g.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:g.payload.sub_agent_key,agentName:g.payload.agent_name}}])}catch(g){console.error("[ChatWidget] Parse error:",g)}}),E.addEventListener("content.blocks",N=>{try{let g=JSON.parse(N.data);e.onEvent&&e.onEvent("content.blocks",g.payload),a(A=>[...A,{id:"content-blocks-"+Date.now(),role:"assistant",content:"",timestamp:new Date,type:"content_blocks",metadata:{toolName:g.payload.tool_name,toolCallId:g.payload.tool_call_id,blocks:g.payload.blocks}}])}catch(g){console.error("[ChatWidget] Parse error:",g)}});let L=N=>{try{let g=JSON.parse(N.data);if(e.onEvent&&e.onEvent(g.type,g.payload),g.type==="run.failed"){let A=g.payload.error||"Agent run failed";d(A),a(V=>[...V,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${A}`,timestamp:new Date,type:"error"}])}}catch(g){console.error("[ChatWidget] Parse error:",g)}l(!1),E.close(),m.current=null,b&&C&&C(b)};E.addEventListener("run.succeeded",L),E.addEventListener("run.failed",L),E.addEventListener("run.cancelled",L),E.addEventListener("run.timed_out",L),E.onerror=()=>{l(!1),E.close(),m.current=null}},[e]),K=x(async(w,P={},C={})=>{if(!w.trim()||o)return;let M=[],S={};typeof P=="function"?S={onAssistantMessage:P}:Array.isArray(P)?(M=P,S=C):S=P||{};let{model:E,thinking:b,onAssistantMessage:L,supersedeFromMessageIndex:N}=S;l(!0),d(null);let g={id:be(),role:"user",content:w.trim(),timestamp:new Date,type:"message",files:M.length>0?M.map(A=>({name:A.name,size:A.size,type:A.type})):void 0};a(A=>[...A,g]);try{let A=await t.getOrCreateSession(),V;if(M.length>0){let Y=e.apiCaseStyle!=="camel",Ve=ue=>Y?Ke(ue):ue,ne=new FormData;ne.append(Ve("agentKey"),e.agentKey),i&&ne.append(Ve("conversationId"),i),ne.append("messages",JSON.stringify([{role:"user",content:w.trim()}])),ne.append("metadata",JSON.stringify(Y?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),E&&ne.append("model",E),b&&ne.append("thinking","true"),M.forEach(ue=>{ne.append("files",ue)}),V=t.getFetchOptions({method:"POST",body:ne},A)}else{let Y=t.transformRequest({agentKey:e.agentKey,conversationId:i,messages:[{role:"user",content:w.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...E&&{model:E},...b&&{thinking:!0},...N!==void 0&&{supersedeFromMessageIndex:N}});V=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Y)},A)}let X=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,V),I=A;if(X.status===401){t.clearSession();let Y=await t.getOrCreateSession(!0);Y&&(I=Y,M.length>0?V=t.getFetchOptions({method:"POST",body:V.body},Y):V=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:V.body},Y),X=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,V))}if(!X.ok){let Y=await X.json().catch(()=>({}));throw new Error(Y.error||Y.detail||`HTTP ${X.status}`)}let Z=await X.json(),ee=t.transformResponse(Z);k.current=ee.id,!i&&ee.conversationId&&_(ee.conversationId),await $(ee.id,I,L)}catch(A){d(A.message||"Failed to send message"),l(!1)}finally{k.current=null}},[e,t,i,o,$]),j=x(async()=>{let w=k.current;if(!(!w||!o))try{let P=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",w):`${e.apiPaths.runs}${w}/cancel/`;(await fetch(`${e.backendUrl}${P}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(m.current&&(m.current.close(),m.current=null),l(!1),k.current=null,a(M=>[...M,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(P){console.error("[ChatWidget] Failed to cancel run:",P)}},[e,t,o]),D=x(()=>{a([]),_(null),d(null),p(!1),v(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),O=w=>{let P={id:be(),role:w.role,timestamp:w.timestamp?new Date(w.timestamp):new Date};if(w.role==="tool")return{...P,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:w.content,toolCallId:w.toolCallId}};if(w.role==="assistant"&&w.toolCalls&&w.toolCalls.length>0)return w.toolCalls.map(M=>({id:be(),role:"assistant",content:`\u{1F527} ${M.function?.name||M.name||"tool"}`,timestamp:P.timestamp,type:"tool_call",metadata:{toolName:M.function?.name||M.name,arguments:M.function?.arguments||M.arguments,toolCallId:M.id}}));let C=typeof w.content=="string"?w.content:JSON.stringify(w.content);return w.role==="assistant"&&!C?.trim()?null:{...P,content:C,type:"message"}},R=x(async w=>{console.log("[ChatWidget] loadConversation called with:",w),l(!0),a([]),_(w);try{let P=await t.getOrCreateSession(),M=`${e.backendUrl}${e.apiPaths.conversations}${w}/?limit=10&offset=0`;console.log("[ChatWidget] Fetching conversation from:",M);let S=await fetch(M,t.getFetchOptions({method:"GET"},P));if(console.log("[ChatWidget] Response status:",S.status),S.ok){let E=await S.json();console.log("[ChatWidget] Raw conversation:",E);let b=t.transformResponse(E);if(console.log("[ChatWidget] Transformed conversation:",b),b.messages){let L=b.messages.flatMap(O).filter(Boolean);console.log("[ChatWidget] Mapped messages:",L),a(L)}p(b.hasMore||!1),v(b.messages?.length||0)}else S.status===404?(console.log("[ChatWidget] Conversation not found, clearing"),_(null),n?.set(e.conversationIdKey,null)):console.error("[ChatWidget] Unexpected response status:",S.status)}catch(P){console.error("[ChatWidget] Failed to load conversation:",P)}finally{l(!1)}},[e,t,n]),F=x(async()=>{if(!(!i||h||!r)){f(!0);try{let w=await t.getOrCreateSession(),C=`${e.backendUrl}${e.apiPaths.conversations}${i}/?limit=10&offset=${y}`,M=await fetch(C,t.getFetchOptions({method:"GET"},w));if(M.ok){let S=await M.json(),E=t.transformResponse(S);if(E.messages?.length>0){let b=E.messages.flatMap(O).filter(Boolean);a(L=>[...b,...L]),v(L=>L+E.messages.length),p(E.hasMore||!1)}else p(!1)}}catch(w){console.error("[ChatWidget] Failed to load more messages:",w)}finally{f(!1)}}},[e,t,i,y,h,r]),q=x(async(w,P,C={})=>{if(o)return;let M=s[w];if(!M||M.role!=="user")return;let S=s.slice(0,w);a(S),await K(P,{...C,supersedeFromMessageIndex:w})},[s,o,K]),H=x(async(w,P={})=>{if(o)return;let C=s[w];if(!C)return;let M=w,S=C;if(C.role==="assistant"){for(let b=w-1;b>=0;b--)if(s[b].role==="user"){M=b,S=s[b];break}if(S.role!=="user")return}else if(C.role!=="user")return;let E=s.slice(0,M);a(E),await K(S.content,{...P,supersedeFromMessageIndex:M})},[s,o,K]);return B(()=>()=>{m.current&&m.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:i,hasMoreMessages:r,loadingMoreMessages:h,sendMessage:K,cancelRun:j,clearMessages:D,loadConversation:R,loadMoreMessages:F,setConversationId:_,editMessage:q,retryMessage:H}}var Nt="cw_thinking_enabled";function Kt(e,t,n){let[s,a]=T([]),[o,l]=T(null),[c,d]=T(null),[i,_]=T(!1),[r,p]=T(!1);B(()=>{(async()=>{if(e.showModelSelector){_(!0);try{let k=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(k.ok){let $=await k.json(),K=$.models||[];a(K),d($.default);let j=n?.get(e.modelKey);j&&K.some(O=>O.id===j)?l(j):l($.default),n?.get(Nt)==="true"&&p(!0)}}catch(k){console.warn("[ChatWidget] Failed to load models:",k)}finally{_(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let h=x(m=>{l(m),n?.set(e.modelKey,m)},[e.modelKey,n]),f=x(m=>{p(m),n?.set(Nt,m?"true":"false")},[n]),y=x(()=>s.find(m=>m.id===o)||null,[s,o]),v=x(()=>y()?.supports_thinking||!1,[y]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:i,selectModel:h,getSelectedModelInfo:y,thinkingEnabled:r,toggleThinking:f,supportsThinking:v}}function Wt(e,t){let[n,s]=T(null),[a,o]=T(!1),[l,c]=T(null),d=e.apiPaths?.tasks||"/api/agent/tasks/",i=x(async()=>{o(!0),c(null);try{let y=`${e.backendUrl}${d}`,v=await fetch(y,t.getFetchOptions({method:"GET"}));if(v.ok){let m=await v.json();s(m)}else{let m=await v.json().catch(()=>({}));c(m.error||"Failed to load tasks")}}catch(y){console.error("[useTasks] Failed to load task list:",y),c("Failed to load tasks")}finally{o(!1)}},[e.backendUrl,d,t]),_=x(async y=>{if(!n)return null;try{let v=`${e.backendUrl}${d}${n.id}/add_task/`,m=await fetch(v,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}));if(m.ok){let k=await m.json();return await i(),k}else{let k=await m.json().catch(()=>({}));return c(k.error||"Failed to add task"),null}}catch(v){return console.error("[useTasks] Failed to add task:",v),c("Failed to add task"),null}},[e.backendUrl,d,n,t,i]),r=x(async(y,v)=>{if(!n)return null;try{let m=`${e.backendUrl}${d}${n.id}/update_task/${y}/`,k=await fetch(m,t.getFetchOptions({method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)}));if(k.ok){let $=await k.json();return await i(),$}else{let $=await k.json().catch(()=>({}));return c($.error||"Failed to update task"),null}}catch(m){return console.error("[useTasks] Failed to update task:",m),c("Failed to update task"),null}},[e.backendUrl,d,n,t,i]),p=x(async y=>{if(!n)return!1;try{let v=`${e.backendUrl}${d}${n.id}/remove_task/${y}/`,m=await fetch(v,t.getFetchOptions({method:"DELETE"}));if(m.ok)return await i(),!0;{let k=await m.json().catch(()=>({}));return c(k.error||"Failed to remove task"),!1}}catch(v){return console.error("[useTasks] Failed to remove task:",v),c("Failed to remove task"),!1}},[e.backendUrl,d,n,t,i]),h=x(async()=>{if(!n)return!1;try{let y=`${e.backendUrl}${d}${n.id}/clear/`,v=await fetch(y,t.getFetchOptions({method:"POST"}));if(v.ok)return await i(),!0;{let m=await v.json().catch(()=>({}));return c(m.error||"Failed to clear tasks"),!1}}catch(y){return console.error("[useTasks] Failed to clear tasks:",y),c("Failed to clear tasks"),!1}},[e.backendUrl,d,n,t,i]),f=x(()=>c(null),[]);return{taskList:n,tasks:n?.tasks||[],progress:n?.progress||{total:0,completed:0,percent_complete:0},isLoading:a,error:l,loadTaskList:i,addTask:_,updateTask:r,removeTask:p,clearTasks:h,clearError:f}}var Ut="cw_selected_system",Ue="cw_selected_agent",Bt="cw_selected_system_version",Me="cw_selected_agent_version";function Vt(e,t,n){let[s,a]=T([]),[o,l]=T([]),[c,d]=T(null),[i,_]=T(null),[r,p]=T(null),[h,f]=T(null),[y,v]=T(!1),m=x(()=>{if(i)return i;if(c){let D=s.find(O=>O.slug===c);if(D?.entry_agent)return D.entry_agent.slug}return e.agentKey},[i,c,s,e.agentKey]);B(()=>{if(!e.showDevTools)return;(async()=>{v(!0);try{let O=await fetch(`${e.backendUrl}${e.apiPaths.systems}`,t.getFetchOptions({method:"GET"}));if(O.ok){let R=await O.json(),F=R.results||R;a(F);let q=n?.get(Ut);q&&F.some(H=>H.slug===q)?d(q):F.length===1&&d(F[0].slug)}}catch(O){console.warn("[ChatWidget] Failed to load systems:",O)}finally{v(!1)}})()},[e.backendUrl,e.apiPaths.systems,e.showDevTools,t,n]),B(()=>{if(!e.showDevTools)return;(async()=>{try{let O=c?`?system=${encodeURIComponent(c)}`:"",R=await fetch(`${e.backendUrl}${e.apiPaths.agents}${O}`,t.getFetchOptions({method:"GET"}));if(R.ok){let F=await R.json(),q=F.results||F;l(q);let H=n?.get(Ue);if(H&&q.some(P=>P.slug===H))_(H);else if(c){let P=s.find(C=>C.slug===c);P?.entry_agent&&_(P.entry_agent.slug)}let w=n?.get(Me);w&&f(w)}}catch(O){console.warn("[ChatWidget] Failed to load agents:",O)}})()},[e.backendUrl,e.apiPaths.agents,e.showDevTools,c,t,n,s]);let k=x(D=>{d(D),n?.set(Ut,D),_(null),f(null),n?.set(Ue,null),n?.set(Me,null);let R=s.find(F=>F.slug===D)?.active_version||null;p(R),n?.set(Bt,R)},[n,s]),$=x(D=>{_(D),n?.set(Ue,D);let R=o.find(F=>F.slug===D)?.active_version||null;f(R),n?.set(Me,R)},[n,o]),K=x(D=>{p(D),n?.set(Bt,D)},[n]),j=x(D=>{f(D),n?.set(Me,D)},[n]);return{systems:s,agents:o,selectedSystem:c,selectedAgent:i,selectedSystemVersion:r,selectedAgentVersion:h,isLoading:y,selectSystem:k,selectAgent:$,selectSystemVersion:K,selectAgentVersion:j,getEffectiveAgentKey:m}}function jt(e,t,n){let s=_=>!_||typeof _!="object"||e.apiCaseStyle==="camel"?_:ke(_),a=_=>!_||typeof _!="object"||e.apiCaseStyle==="snake"?_:we(_),o=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",l=(_=null)=>{let r=o(),p={},h=_||e.authToken||t().authToken;if(r==="token"&&h){let f=e.authHeader||"Authorization",y=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";p[f]=y?`${y} ${h}`:h}else if(r==="jwt"&&h){let f=e.authHeader||"Authorization",y=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";p[f]=y?`${y} ${h}`:h}else if(r==="anonymous"&&h){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";p[f]=h}if(r==="session"){let f=Ct(e.csrfCookieName);f&&(p["X-CSRFToken"]=f)}return p};return{getAuthStrategy:o,getAuthHeaders:l,getFetchOptions:(_={},r=null)=>{let p=o(),h={..._},f=l(r);return console.log("[ChatWidget] getFetchOptions - strategy:",p,"overrideToken:",r,"authHeaders:",f),h.headers={...h.headers,...f},p==="session"&&(h.credentials="include"),h},getOrCreateSession:async(_=!1)=>{let r=o(),p=t(),h=e.anonymousTokenKey||e.sessionTokenKey;if(r!=="anonymous")return e.authToken||p.authToken;if(!_){if(p.authToken)return p.authToken;let f=p.storage?.get(h);if(f)return n(y=>({...y,authToken:f})),f}try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,y=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(y.ok){let v=await y.json();return n(m=>({...m,authToken:v.token})),p.storage?.set(h,v.token),v.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},clearSession:()=>{let _=e.anonymousTokenKey||e.sessionTokenKey,r=t();n(p=>({...p,authToken:null})),r.storage?.set(_,null)},transformRequest:s,transformResponse:a}}function Jt({config:e,onStateChange:t,markdownParser:n,apiRef:s}){console.log("[ChatWidget] Config:",{showConversationSidebar:e.showConversationSidebar,apiPaths:e.apiPaths});let[a,o]=T(e.embedded||e.forceOpen===!0),[l,c]=T(!1),[d,i]=T(!1),[_,r]=T(!1),[p,h]=T([]),[f,y]=T("chat"),[v,m]=T(!1),[k,$]=T(e.enableTTS),[K,j]=T(!1),[D,O]=T(null);B(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let R=ae(()=>bt(e.containerId),[e.containerId]),[F,q]=T(e.authToken||null),H=ae(()=>jt(e,()=>({authToken:F,storage:R}),ee=>{let Y=ee({authToken:F,storage:R});Y.authToken!==F&&q(Y.authToken)}),[e,F,R]),w=Vt(e,H,R),P=ae(()=>{if(!e.showDevTools)return e;let I=w.getEffectiveAgentKey();return I&&I!==e.agentKey?{...e,agentKey:I}:e},[e,w.getEffectiveAgentKey]),C=Lt(P,H,R),M=Kt(e,H,R),S=Wt(e,H);B(()=>{for(let I=C.messages.length-1;I>=0;I--){let Z=C.messages[I];if(Z.type==="sub_agent_start"){O({key:Z.metadata?.subAgentKey,name:Z.metadata?.agentName});return}if(Z.type==="sub_agent_end"){O(null);return}}},[C.messages]),B(()=>{let I=R.get(e.conversationIdKey);console.log("[ChatWidget] Initial load - storedConvId:",I,"key:",e.conversationIdKey),console.log("[ChatWidget] apiPaths.conversations:",e.apiPaths.conversations),I&&(console.log("[ChatWidget] Loading conversation:",I),C.loadConversation(I))},[]),B(()=>{t&&t({isOpen:a,isExpanded:l,debugMode:d,messages:C.messages,conversationId:C.conversationId,isLoading:C.isLoading,error:C.error})},[a,l,d,C.messages,C.conversationId,C.isLoading,C.error]);let E=x(async()=>{if(e.showConversationSidebar){m(!0);try{let I=P.agentKey,Z=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(I)}`,ee=await fetch(Z,H.getFetchOptions({method:"GET"}));if(ee.ok){let Y=await ee.json();h(Y.results||Y)}}catch(I){console.error("[ChatWidget] Failed to load conversations:",I),h([])}finally{m(!1)}}},[e,P,H]),b=x(()=>{let I=!_;r(I),I&&E()},[_,E]),L=x(I=>{I!==C.conversationId&&C.loadConversation(I),r(!1)},[C]),N=x(()=>{C.clearMessages(),r(!1)},[C]),g=x(I=>{C.sendMessage(I,{model:M.selectedModel,thinking:M.thinkingEnabled&&M.supportsThinking(),onAssistantMessage:Z=>{}})},[C,k,M.selectedModel,M.thinkingEnabled,M.supportsThinking]),A=x(I=>{y(I),I==="tasks"&&S.loadTaskList()},[S]);if(B(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:I=>g(I),clearMessages:()=>C.clearMessages(),toggleTTS:()=>$(I=>!I),stopSpeech:()=>j(!1),setAuth:I=>{I.token!==void 0&&q(I.token)},clearAuth:()=>q(null)})},[C,s,g]),!e.embedded&&!a)return u`
|
|
588
684
|
<button
|
|
589
685
|
class="cw-fab"
|
|
590
686
|
style=${{backgroundColor:e.primaryColor}}
|
|
@@ -594,40 +690,40 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
594
690
|
<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>
|
|
595
691
|
</svg>
|
|
596
692
|
</button>
|
|
597
|
-
`;let
|
|
598
|
-
<div class=${
|
|
599
|
-
${e.showConversationSidebar&&
|
|
600
|
-
<${
|
|
601
|
-
isOpen=${
|
|
602
|
-
conversations=${
|
|
603
|
-
conversationsLoading=${
|
|
693
|
+
`;let V=["cw-widget",l&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" "),X=e.headerTextColor||St(e.primaryColor);return u`
|
|
694
|
+
<div class=${V} style=${{"--cw-primary":e.primaryColor,"--cw-header-text":X}}>
|
|
695
|
+
${e.showConversationSidebar&&u`
|
|
696
|
+
<${Rt}
|
|
697
|
+
isOpen=${_}
|
|
698
|
+
conversations=${p}
|
|
699
|
+
conversationsLoading=${v}
|
|
604
700
|
currentConversationId=${C.conversationId}
|
|
605
701
|
onClose=${()=>r(!1)}
|
|
606
|
-
onNewConversation=${
|
|
702
|
+
onNewConversation=${N}
|
|
607
703
|
onSwitchConversation=${L}
|
|
608
704
|
/>
|
|
609
705
|
`}
|
|
610
706
|
|
|
611
|
-
${e.showHeader!==!1&&
|
|
707
|
+
${e.showHeader!==!1&&u`
|
|
612
708
|
<${Tt}
|
|
613
709
|
config=${e}
|
|
614
|
-
debugMode=${
|
|
710
|
+
debugMode=${d}
|
|
615
711
|
isExpanded=${l}
|
|
616
|
-
isSpeaking=${
|
|
712
|
+
isSpeaking=${K}
|
|
617
713
|
messagesCount=${C.messages.length}
|
|
618
714
|
isLoading=${C.isLoading}
|
|
619
|
-
currentAgent=${
|
|
715
|
+
currentAgent=${D}
|
|
620
716
|
onClose=${()=>o(!1)}
|
|
621
|
-
onToggleExpand=${()=>
|
|
622
|
-
onToggleDebug=${()=>
|
|
717
|
+
onToggleExpand=${()=>c(!l)}
|
|
718
|
+
onToggleDebug=${()=>i(!d)}
|
|
623
719
|
onToggleTTS=${()=>$(!k)}
|
|
624
720
|
onClear=${C.clearMessages}
|
|
625
721
|
onToggleSidebar=${b}
|
|
626
722
|
/>
|
|
627
723
|
`}
|
|
628
724
|
|
|
629
|
-
${e.showDevTools&&
|
|
630
|
-
<${
|
|
725
|
+
${e.showDevTools&&u`
|
|
726
|
+
<${Ht}
|
|
631
727
|
systems=${w.systems}
|
|
632
728
|
agents=${w.agents}
|
|
633
729
|
selectedSystem=${w.selectedSystem}
|
|
@@ -642,27 +738,27 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
642
738
|
/>
|
|
643
739
|
`}
|
|
644
740
|
|
|
645
|
-
${e.showTasksTab!==!1&&
|
|
741
|
+
${e.showTasksTab!==!1&&u`
|
|
646
742
|
<div class="cw-tabs">
|
|
647
743
|
<button
|
|
648
744
|
class=${`cw-tab ${f==="chat"?"cw-tab-active":""}`}
|
|
649
|
-
onClick=${()=>
|
|
745
|
+
onClick=${()=>A("chat")}
|
|
650
746
|
>
|
|
651
747
|
Chat
|
|
652
748
|
</button>
|
|
653
749
|
<button
|
|
654
750
|
class=${`cw-tab ${f==="tasks"?"cw-tab-active":""}`}
|
|
655
|
-
onClick=${()=>
|
|
751
|
+
onClick=${()=>A("tasks")}
|
|
656
752
|
>
|
|
657
|
-
Tasks ${S.progress.total>0?
|
|
753
|
+
Tasks ${S.progress.total>0?u`<span class="cw-tab-badge">${S.progress.completed}/${S.progress.total}</span>`:""}
|
|
658
754
|
</button>
|
|
659
755
|
</div>
|
|
660
756
|
`}
|
|
661
757
|
|
|
662
|
-
${u
|
|
758
|
+
${d&&u`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
|
|
663
759
|
|
|
664
|
-
${f==="chat"?
|
|
665
|
-
<${
|
|
760
|
+
${f==="chat"?u`
|
|
761
|
+
<${Dt}
|
|
666
762
|
messages=${C.messages}
|
|
667
763
|
isLoading=${C.isLoading}
|
|
668
764
|
hasMoreMessages=${C.hasMoreMessages}
|
|
@@ -670,16 +766,16 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
670
766
|
onLoadMore=${C.loadMoreMessages}
|
|
671
767
|
onEditMessage=${C.editMessage}
|
|
672
768
|
onRetryMessage=${C.retryMessage}
|
|
673
|
-
debugMode=${
|
|
769
|
+
debugMode=${d}
|
|
674
770
|
markdownParser=${n}
|
|
675
771
|
emptyStateTitle=${e.emptyStateTitle}
|
|
676
772
|
emptyStateMessage=${e.emptyStateMessage}
|
|
677
773
|
/>
|
|
678
774
|
|
|
679
|
-
${C.error&&
|
|
775
|
+
${C.error&&u`<div class="cw-error-bar">${C.error}</div>`}
|
|
680
776
|
|
|
681
|
-
${e.showModelSelector&&M.availableModels.length>0&&
|
|
682
|
-
<${
|
|
777
|
+
${e.showModelSelector&&M.availableModels.length>0&&u`
|
|
778
|
+
<${Ft}
|
|
683
779
|
availableModels=${M.availableModels}
|
|
684
780
|
selectedModel=${M.selectedModel}
|
|
685
781
|
onSelectModel=${M.selectModel}
|
|
@@ -689,8 +785,8 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
689
785
|
/>
|
|
690
786
|
`}
|
|
691
787
|
|
|
692
|
-
<${
|
|
693
|
-
onSend=${
|
|
788
|
+
<${Pt}
|
|
789
|
+
onSend=${g}
|
|
694
790
|
onCancel=${C.cancelRun}
|
|
695
791
|
isLoading=${C.isLoading}
|
|
696
792
|
placeholder=${e.placeholder}
|
|
@@ -698,8 +794,8 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
698
794
|
enableVoice=${e.enableVoice}
|
|
699
795
|
enableFiles=${e.showFileAttachment!==!1}
|
|
700
796
|
/>
|
|
701
|
-
`:
|
|
702
|
-
<${
|
|
797
|
+
`:u`
|
|
798
|
+
<${Ot}
|
|
703
799
|
tasks=${S.tasks}
|
|
704
800
|
progress=${S.progress}
|
|
705
801
|
isLoading=${S.isLoading}
|
|
@@ -711,9 +807,9 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Jt=Object.getOwnProp
|
|
|
711
807
|
/>
|
|
712
808
|
`}
|
|
713
809
|
</div>
|
|
714
|
-
`}var
|
|
810
|
+
`}var zt={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",headerTextColor:null,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/",systems:"/api/agent-runtime/systems/",agents:"/api/agent-runtime/agents/"},apiCaseStyle:"auto",theme:"light",showHeader:!0,showFileAttachment:!0,showTasksTab:!0,showConversationSidebar:!0,showClearButton:!0,showDebugButton:!0,showTTSButton:!0,showVoiceSettings:!0,showExpandButton:!0,showModelSelector:!1,showDevTools:!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 qt(e){let t={...zt.apiPaths,...e.apiPaths||{}};return{...zt,...e,apiPaths:t}}var Ee=new Map,An=0,W=null,Be=class{constructor(t={}){je(this,"_handleStateChange",t=>{this._state=t});this.instanceId=`cw-${++An}`,this.config=qt(t),this.container=null,this._state={},this._apiRef={current:null},Ee.set(this.instanceId,this)}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._applyTheme(),this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_applyTheme(){this.container&&(this.container.classList.remove("cw-dark","cw-auto"),this.config.theme==="dark"?this.container.classList.add("cw-dark"):this.config.theme==="auto"&&this.container.classList.add("cw-auto"))}_render(t={}){this.container&&ye(u`<${Jt}
|
|
715
811
|
config=${{...this.config,...t}}
|
|
716
812
|
onStateChange=${this._handleStateChange}
|
|
717
|
-
markdownParser=${
|
|
813
|
+
markdownParser=${xe._enhancedMarkdownParser}
|
|
718
814
|
apiRef=${this._apiRef}
|
|
719
|
-
/>`,this.container)}destroy(){this.container&&(
|
|
815
|
+
/>`,this.container)}destroy(){this.container&&(ye(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),Ee.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},"theme"in t&&this._applyTheme(),this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} config updated`)}};function Gt(e={}){return new Be(e).init()}function In(e={}){return W&&W.destroy(),W=Gt(e),W}function Dn(){W&&(W.destroy(),W=null)}function Pn(){W&&W.open()}function Rn(){W&&W.close()}function Fn(e){W&&W.send(e)}function On(){W&&W.clearMessages()}function Hn(){W&&W.toggleTTS()}function Ln(){W&&W.stopSpeech()}function Nn(e){W&&W.setAuth(e)}function Kn(){W&&W.clearAuth()}function Wn(){return W?W.getState():null}function Un(){return W?W.getConfig():null}var xe={createInstance:Gt,getInstance:e=>Ee.get(e),getAllInstances:()=>Array.from(Ee.values()),init:In,destroy:Dn,open:Pn,close:Rn,send:Fn,clearMessages:On,toggleTTS:Hn,stopSpeech:Ln,setAuth:Nn,clearAuth:Kn,getState:Wn,getConfig:Un,_enhancedMarkdownParser:null};var Bn=xe;typeof window<"u"&&(window.ChatWidget=xe);return nn(Vn);})();
|