@makemore/agent-frontend 2.11.0 → 2.11.1
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 +233 -231
- package/dist/chat-widget.esm.js +267 -265
- package/dist/chat-widget.js +207 -205
- package/dist/react.cjs.js +233 -231
- package/dist/react.esm.js +267 -265
- package/package.json +1 -1
- package/src/components/ChatWidget.js +1 -0
- package/src/components/Message.js +6 -3
- package/src/components/MessageList.js +2 -0
package/dist/chat-widget.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
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"?(
|
|
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,u,p){var r,_,h,f,b,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&&(_=h.__i==-1?le:k[h.__i]||le,h.__i=r,v=Fe(e,h,_,a,o,l,c,d,u,p),f=h.__e,h.ref&&_.ref!=h.ref&&(_.ref&&Oe(_.ref,null,h),p.push(h.ref,h.__c||f,h)),b==null&&f!=null&&(b=f),(m=!!(4&h.__u))||_.__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=b,d}function rn(e,t,n,s,a){var o,l,c,d,u,p=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+_,l.__=e,l.__b=e.__b+1,c=null,(u=l.__i=ln(l,n,d,r))!=-1&&(r--,(c=n[u])&&(c.__u|=2)),c==null||c.__v==null?(u==-1&&(a>p?_--:a<p&&_++),typeof l.type!="function"&&(l.__u|=4)):u!=d&&(u==d-1?_--:u==d+1?_++:(u>d?_--:_++,l.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<p;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,u=t[n],p=u!=null&&(2&u.__u)==0;if(u===null&&c==null||p&&c==u.key&&d==u.type)return n;if(s>(p?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((u=t[l=a>=0?a--:o++])!=null&&!(2&u.__u)&&c==u.key&&d==u.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,u){var p,r,_,h,f,b,v,m,k,$,O,q,P,H,F,L,j,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),o=[c=t.__e=n.__e]),(p=U.__b)&&p(t);e:if(typeof N=="function")try{if(m=t.props,k="prototype"in N&&N.prototype.render,$=(p=N.contextType)&&s[p.__c],O=p?$?$.props.value:p.__:s,n.__c?v=(r=t.__c=n.__c).__=r.__E:(k?t.__c=r=new N(m,O):(t.__c=r=new re(m,O),r.constructor=N,r.render=un),$&&$.sub(r),r.state||(r.state={}),r.__n=s,_=r.__d=!0,r.__h=[],r._sb=[]),k&&r.__s==null&&(r.__s=r.state),k&&N.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=te({},r.__s)),te(r.__s,N.getDerivedStateFromProps(m,r.__s))),h=r.props,f=r.state,r.__v=t,_)k&&N.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),k&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(k&&N.getDerivedStateFromProps==null&&m!==h&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(m,O),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(m,r.__s,O)===!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)}),q=0;q<r._sb.length;q++)r.__h.push(r._sb[q]);r._sb=[],r.__h.length&&l.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(m,r.__s,O),k&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(h,f,b)})}if(r.context=O,r.props=m,r.__P=e,r.__e=!1,P=U.__r,H=0,k){for(r.state=r.__s,r.__d=!1,P&&P(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,P&&P(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&&!_&&r.getSnapshotBeforeUpdate!=null&&(b=r.getSnapshotBeforeUpdate(h,f)),L=p,p!=null&&p.type===ve&&p.key==null&&(L=at(p.props.children)),c=nt(e,me(L)?L:[L],t,n,s,a,o,l,c,d,u),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(j=o.length;j--;)Re(o[j]);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,u);return(p=U.diffed)&&p(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 u,p,r,_,h,f,b,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(u=0;u<o.length;u++)if((h=o[u])&&"setAttribute"in h==!!k&&(k?h.localName==k:h.nodeType==3)){e=h,o[u]=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={},u=0;u<e.attributes.length;u++)v[(h=e.attributes[u]).name]=h.value;for(u in v)if(h=v[u],u!="children"){if(u=="dangerouslySetInnerHTML")r=h;else if(!(u in m)){if(u=="value"&&"defaultValue"in m||u=="checked"&&"defaultChecked"in m)continue;pe(e,u,null,h,a)}}for(u in m)h=m[u],u=="children"?_=h:u=="dangerouslySetInnerHTML"?p=h:u=="value"?f=h:u=="checked"?b=h:c&&typeof h!="function"||v[u]===h||pe(e,u,h,v[u],a);if(p)c||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(_)?_:[_],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(u=o.length;u--;)Re(o[u]);c||(u="value",k=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[u]||k=="progress"&&!f||k=="option"&&f!=v[u])&&pe(e,u,f,v[u],a),u="checked",b!=null&&b!=e[u]&&pe(e,u,b,v[u],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],u=function(_){o===1&&(_||(l=l.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,_,l):o===3&&(_||l)?(d.push(3,_,l),o=2):o===2&&l==="..."&&_?d.push(4,_,0):o===2&&l&&!_?d.push(5,0,!0,l):o>=5&&((l||!_&&o===5)&&(d.push(o,0,l,a),o=6),_&&(d.push(o,_,0,a),o=6)),l=""},p=0;p<n.length;p++){p&&(o===1&&u(),u(p));for(var r=0;r<n[p].length;r++)s=n[p][r],o===1?s==="<"?(u(),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===">"?(u(),o=1):o&&(s==="="?(o=5,a=l,l=""):s==="/"&&(o<5||n[p][r+1]===">")?(u(),o===3&&(d=d[0]),o=d,(d=d[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
|
|
2
|
+
`||s==="\r"?(u(),o=2):l+=s),o===3&&l==="!--"&&(o=4,d=d[0])}return u(),d}(e)),t),arguments,[])).length>1?t:t[0]}var i=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 S(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],u=s.t(d,c);d!==u&&(s.__N=[u,s.__[1]],s.__c.setState({}))}],s.__c=J,!J.__f)){var a=function(c,d,u){if(!s.__c.__H)return!0;var p=s.__c.__H.__.filter(function(_){return!!_.__c});if(p.every(function(_){return!_.__N}))return!o||o.call(this,c,d,u);var r=s.__c.props!==c;return p.forEach(function(_){if(_.__N){var h=_.__[0];_.__=_.__N,_.__N=void 0,h!==_.__[0]&&(r=!0)}}),o&&o.call(this,c,d,u)||r};J.__f=!0;var o=J.shouldComponentUpdate,l=J.componentWillUpdate;J.componentWillUpdate=function(c,d,u){if(this.__e){var p=o;o=void 0,a(c,d,u),o=p}l&&l.call(this,c,d,u)},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:u,onToggleTTS:p,onClear:r,onToggleSidebar:_}){let{title:h,primaryColor:f,embedded:b,showConversationSidebar:v,showClearButton:m,showDebugButton:k,enableDebugMode:$,showTTSButton:O,showExpandButton:q,enableTTS:P,elevenLabsApiKey:H,ttsProxyUrl:F}=e,L=H||F;return i`
|
|
3
3
|
<div class="cw-header" style=${{backgroundColor:f}}>
|
|
4
|
-
${v&&
|
|
4
|
+
${v&&i`
|
|
5
5
|
<button
|
|
6
6
|
class="cw-header-btn cw-hamburger"
|
|
7
|
-
onClick=${
|
|
7
|
+
onClick=${_}
|
|
8
8
|
title="Conversations"
|
|
9
9
|
>
|
|
10
10
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16">
|
|
@@ -17,7 +17,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
17
17
|
|
|
18
18
|
<div class="cw-title-container">
|
|
19
19
|
<span class="cw-title">${z(h)}</span>
|
|
20
|
-
${l&&
|
|
20
|
+
${l&&i`
|
|
21
21
|
<span class="cw-current-agent" title="Currently active agent">
|
|
22
22
|
<span class="cw-agent-indicator">🤖</span>
|
|
23
23
|
<span class="cw-agent-name">${z(l.name||l.key)}</span>
|
|
@@ -26,7 +26,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="cw-header-actions">
|
|
29
|
-
${m&&
|
|
29
|
+
${m&&i`
|
|
30
30
|
<button
|
|
31
31
|
class="cw-header-btn"
|
|
32
32
|
onClick=${r}
|
|
@@ -35,23 +35,23 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
35
35
|
>🗑️</button>
|
|
36
36
|
`}
|
|
37
37
|
|
|
38
|
-
${k&&$&&
|
|
38
|
+
${k&&$&&i`
|
|
39
39
|
<button
|
|
40
40
|
class="cw-header-btn ${t?"cw-btn-active":""}"
|
|
41
|
-
onClick=${
|
|
41
|
+
onClick=${u}
|
|
42
42
|
title="Debug"
|
|
43
43
|
>🐛</button>
|
|
44
44
|
`}
|
|
45
45
|
|
|
46
|
-
${
|
|
46
|
+
${O&&L&&i`
|
|
47
47
|
<button
|
|
48
|
-
class="cw-header-btn ${
|
|
49
|
-
onClick=${
|
|
48
|
+
class="cw-header-btn ${P?"cw-btn-active":""}"
|
|
49
|
+
onClick=${p}
|
|
50
50
|
title="TTS"
|
|
51
|
-
>${
|
|
51
|
+
>${P?"\u{1F50A}":"\u{1F507}"}</button>
|
|
52
52
|
`}
|
|
53
53
|
|
|
54
|
-
${
|
|
54
|
+
${q&&!b&&i`
|
|
55
55
|
<button
|
|
56
56
|
class="cw-header-btn"
|
|
57
57
|
onClick=${d}
|
|
@@ -59,7 +59,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
59
59
|
>${n?"\u2296":"\u2295"}</button>
|
|
60
60
|
`}
|
|
61
61
|
|
|
62
|
-
${!
|
|
62
|
+
${!b&&i`
|
|
63
63
|
<button
|
|
64
64
|
class="cw-header-btn"
|
|
65
65
|
onClick=${c}
|
|
@@ -68,107 +68,107 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
68
68
|
`}
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
71
|
-
`}function Mt({block:e,onAction:t,markdownParser:n}){return
|
|
71
|
+
`}function Mt({block:e,onAction:t,markdownParser:n}){return i`
|
|
72
72
|
<div class="cw-block-card">
|
|
73
|
-
${e.image&&
|
|
73
|
+
${e.image&&i`<img class="cw-block-card-image" src=${e.image} alt=${e.title||""} />`}
|
|
74
74
|
<div class="cw-block-card-body">
|
|
75
|
-
${e.badge&&
|
|
76
|
-
${e.title&&
|
|
77
|
-
${e.subtitle&&
|
|
78
|
-
${e.metadata&&e.metadata.length>0&&
|
|
75
|
+
${e.badge&&i`<span class="cw-block-card-badge">${e.badge}</span>`}
|
|
76
|
+
${e.title&&i`<div class="cw-block-card-title">${e.title}</div>`}
|
|
77
|
+
${e.subtitle&&i`<div class="cw-block-card-subtitle">${e.subtitle}</div>`}
|
|
78
|
+
${e.metadata&&e.metadata.length>0&&i`
|
|
79
79
|
<div class="cw-block-card-meta">
|
|
80
|
-
${e.metadata.map(s=>
|
|
80
|
+
${e.metadata.map(s=>i`
|
|
81
81
|
<span class="cw-block-meta-pair">
|
|
82
82
|
<span class="cw-block-meta-label">${s.label}:</span> ${s.value}
|
|
83
83
|
</span>
|
|
84
84
|
`)}
|
|
85
85
|
</div>
|
|
86
86
|
`}
|
|
87
|
-
${e.actions&&e.actions.length>0&&
|
|
87
|
+
${e.actions&&e.actions.length>0&&i`
|
|
88
88
|
<div class="cw-block-card-actions">
|
|
89
|
-
${e.actions.map(s=>
|
|
89
|
+
${e.actions.map(s=>i`<${Et} action=${s} onAction=${t} />`)}
|
|
90
90
|
</div>
|
|
91
91
|
`}
|
|
92
92
|
</div>
|
|
93
93
|
</div>
|
|
94
|
-
`}function mn({block:e,onAction:t,markdownParser:n}){let s=e.layout||"vertical";return
|
|
94
|
+
`}function mn({block:e,onAction:t,markdownParser:n}){let s=e.layout||"vertical";return i`
|
|
95
95
|
<div class="cw-block-card-list cw-block-card-list-${s}">
|
|
96
|
-
${(e.items||[]).map(a=>
|
|
96
|
+
${(e.items||[]).map(a=>i`
|
|
97
97
|
<${Mt} block=${{type:"card",...a}} onAction=${t} markdownParser=${n} />
|
|
98
98
|
`)}
|
|
99
99
|
</div>
|
|
100
|
-
`}function Et({action:e,onAction:t}){let n=e.style||"primary",s=()=>{t&&t(e)};return e.type==="link"?
|
|
100
|
+
`}function Et({action:e,onAction:t}){let n=e.style||"primary",s=()=>{t&&t(e)};return e.type==="link"?i`<a class="cw-block-btn cw-block-btn-${n}" href=${e.url} target="_blank" rel="noopener">${e.label}</a>`:i`<button class="cw-block-btn cw-block-btn-${n}" onClick=${s}>${e.label}</button>`}function gn({block:e,onAction:t}){return i`
|
|
101
101
|
<div class="cw-block-action-buttons">
|
|
102
|
-
${(e.buttons||[]).map(n=>
|
|
102
|
+
${(e.buttons||[]).map(n=>i`<${Et} action=${n} onAction=${t} />`)}
|
|
103
103
|
</div>
|
|
104
|
-
`}function vn({block:e}){let t=e.style||"info";return
|
|
104
|
+
`}function vn({block:e}){let t=e.style||"info";return i`
|
|
105
105
|
<div class="cw-block-callout cw-block-callout-${t}">
|
|
106
106
|
<span class="cw-block-callout-icon">${{info:"\u2139\uFE0F",success:"\u2705",warning:"\u26A0\uFE0F"}[t]||"\u2139\uFE0F"}</span>
|
|
107
107
|
<div class="cw-block-callout-content">
|
|
108
|
-
${e.title&&
|
|
109
|
-
${e.body&&
|
|
108
|
+
${e.title&&i`<strong>${e.title}</strong>`}
|
|
109
|
+
${e.body&&i`<span>${e.body}</span>`}
|
|
110
110
|
</div>
|
|
111
111
|
</div>
|
|
112
|
-
`}function yn({block:e}){return
|
|
112
|
+
`}function yn({block:e}){return i`
|
|
113
113
|
<figure class="cw-block-image">
|
|
114
114
|
<img src=${e.url} alt=${e.alt||""} />
|
|
115
|
-
${e.caption&&
|
|
115
|
+
${e.caption&&i`<figcaption>${e.caption}</figcaption>`}
|
|
116
116
|
</figure>
|
|
117
|
-
`}function $n(){return
|
|
117
|
+
`}function $n(){return i`<hr class="cw-block-divider" />`}function wn({block:e}){return i`
|
|
118
118
|
<div class="cw-block-table-wrapper">
|
|
119
119
|
<table class="cw-block-table">
|
|
120
|
-
${e.headers&&e.headers.length>0&&
|
|
121
|
-
<thead><tr>${e.headers.map(t=>
|
|
120
|
+
${e.headers&&e.headers.length>0&&i`
|
|
121
|
+
<thead><tr>${e.headers.map(t=>i`<th>${t}</th>`)}</tr></thead>
|
|
122
122
|
`}
|
|
123
123
|
<tbody>
|
|
124
|
-
${(e.rows||[]).map(t=>
|
|
125
|
-
<tr>${t.map(n=>
|
|
124
|
+
${(e.rows||[]).map(t=>i`
|
|
125
|
+
<tr>${t.map(n=>i`<td>${n}</td>`)}</tr>
|
|
126
126
|
`)}
|
|
127
127
|
</tbody>
|
|
128
128
|
</table>
|
|
129
129
|
</div>
|
|
130
|
-
`}function kn({block:e}){let[t,n]=
|
|
130
|
+
`}function kn({block:e}){let[t,n]=S(!1),s=()=>{navigator.clipboard.writeText(e.code).then(()=>{n(!0),setTimeout(()=>n(!1),1500)})};return i`
|
|
131
131
|
<div class="cw-block-code">
|
|
132
|
-
${e.filename&&
|
|
132
|
+
${e.filename&&i`<div class="cw-block-code-filename">${e.filename}</div>`}
|
|
133
133
|
<pre><code>${z(e.code)}</code></pre>
|
|
134
|
-
${e.copyable!==!1&&
|
|
134
|
+
${e.copyable!==!1&&i`
|
|
135
135
|
<button class="cw-block-code-copy" onClick=${s}>${t?"\u2713":"\u2398"}</button>
|
|
136
136
|
`}
|
|
137
137
|
</div>
|
|
138
|
-
`}function bn({block:e}){let[t,n]=
|
|
138
|
+
`}function bn({block:e}){let[t,n]=S(e.defaultOpen||!1);return i`
|
|
139
139
|
<details class="cw-block-collapsible" open=${t} onClick=${s=>{s.preventDefault(),n(!t)}}>
|
|
140
140
|
<summary>${e.title}</summary>
|
|
141
141
|
<div class="cw-block-collapsible-body">${e.body}</div>
|
|
142
142
|
</details>
|
|
143
|
-
`}function Cn({block:e}){let t={loading:"\u23F3",success:"\u2705",error:"\u274C",warning:"\u26A0\uFE0F",info:"\u2139\uFE0F"};return
|
|
143
|
+
`}function Cn({block:e}){let t={loading:"\u23F3",success:"\u2705",error:"\u274C",warning:"\u26A0\uFE0F",info:"\u2139\uFE0F"};return i`
|
|
144
144
|
<div class="cw-block-status cw-block-status-${e.state||"info"}">
|
|
145
145
|
<span class="cw-block-status-icon">${t[e.state]||"\u2139\uFE0F"}</span>
|
|
146
146
|
<div>
|
|
147
147
|
<strong>${e.title}</strong>
|
|
148
|
-
${e.body&&
|
|
149
|
-
${e.progress!=null&&
|
|
148
|
+
${e.body&&i`<div>${e.body}</div>`}
|
|
149
|
+
${e.progress!=null&&i`
|
|
150
150
|
<div class="cw-block-progress"><div class="cw-block-progress-bar" style=${{width:`${e.progress*100}%`}}></div></div>
|
|
151
151
|
`}
|
|
152
152
|
</div>
|
|
153
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:
|
|
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:i`
|
|
155
155
|
<div class="cw-content-blocks">
|
|
156
|
-
${e.map((s,a)=>{let o=Sn[s.type];return o?
|
|
156
|
+
${e.map((s,a)=>{let o=Sn[s.type];return o?i`<${o} key=${a} block=${s} onAction=${t} markdownParser=${n} />`:null})}
|
|
157
157
|
</div>
|
|
158
|
-
`}function Te({msg:e,show:t,onToggle:n}){return t?
|
|
158
|
+
`}function Te({msg:e,show:t,onToggle:n}){return t?i`
|
|
159
159
|
<div class="cw-debug-payload">
|
|
160
160
|
<button class="cw-debug-payload-close" onClick=${n}>×</button>
|
|
161
161
|
<pre class="cw-debug-payload-content">${JSON.stringify(e,null,2)}</pre>
|
|
162
162
|
</div>
|
|
163
|
-
`:
|
|
163
|
+
`:i`
|
|
164
164
|
<button
|
|
165
165
|
class="cw-debug-payload-btn"
|
|
166
166
|
onClick=${n}
|
|
167
167
|
title="Show message payload"
|
|
168
168
|
>{ }</button>
|
|
169
|
-
`}function At({onEdit:e,onRetry:t,isLoading:n,position:s,showEdit:a=!0}){return n?null:
|
|
169
|
+
`}function At({onEdit:e,onRetry:t,isLoading:n,position:s,showEdit:a=!0}){return n?null:i`
|
|
170
170
|
<div class="cw-message-actions cw-message-actions-${s||"left"}">
|
|
171
|
-
${a&&
|
|
171
|
+
${a&&i`
|
|
172
172
|
<button
|
|
173
173
|
class="cw-message-action-btn"
|
|
174
174
|
onClick=${e}
|
|
@@ -192,7 +192,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
192
192
|
</svg>
|
|
193
193
|
</button>
|
|
194
194
|
</div>
|
|
195
|
-
`}function Tn({initialContent:e,onSave:t,onCancel:n}){let[s,a]=
|
|
195
|
+
`}function Tn({initialContent:e,onSave:t,onCancel:n}){let[s,a]=S(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")},[]),i`
|
|
196
196
|
<div class="cw-inline-edit">
|
|
197
197
|
<textarea
|
|
198
198
|
ref=${o}
|
|
@@ -216,120 +216,121 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
216
216
|
>Save & Send</button>
|
|
217
217
|
</div>
|
|
218
218
|
</div>
|
|
219
|
-
`}function It({msg:e,debugMode:t,markdownParser:n,onEdit:s,onRetry:a,
|
|
220
|
-
<div class="cw-agent-context ${
|
|
221
|
-
<span class="cw-agent-context-icon">${
|
|
219
|
+
`}function It({msg:e,debugMode:t,markdownParser:n,onEdit:s,onRetry:a,onSendMessage:o,isLoading:l,messageIndex:c}){let[d,u]=S(!1),[p,r]=S(!1),[_,h]=S(!1),f=e.role==="user",b=e.role==="system",v=e.type==="tool_call",m=e.type==="tool_result",k=e.type==="error",$=e.type==="sub_agent_start",O=e.type==="sub_agent_end",q=e.type==="agent_context";if(b&&!t)return null;if($||O||q)return i`
|
|
220
|
+
<div class="cw-agent-context ${$?"cw-agent-delegating":""} ${O?"cw-agent-returned":""}" style="position: relative;">
|
|
221
|
+
<span class="cw-agent-context-icon">${$?"\u{1F517}":O?"\u2713":"\u{1F916}"}</span>
|
|
222
222
|
<span class="cw-agent-context-text">${e.content}</span>
|
|
223
|
-
${e.metadata?.agentName&&
|
|
223
|
+
${e.metadata?.agentName&&i`
|
|
224
224
|
<span class="cw-agent-context-name">${e.metadata.agentName}</span>
|
|
225
225
|
`}
|
|
226
|
-
${t&&
|
|
226
|
+
${t&&i`<${Te} msg=${e} show=${p} onToggle=${()=>r(!p)} />`}
|
|
227
227
|
</div>
|
|
228
|
-
`;if(e.type==="content_blocks"&&e.metadata?.blocks){let
|
|
228
|
+
`;if(e.type==="content_blocks"&&e.metadata?.blocks){let T=y=>{y.type==="message"&&o&&o(y.message),y.type==="callback"&&e._onCallback&&e._onCallback(y.callbackId),y.type==="link"&&y.url&&window.open(y.url,"_blank","noopener")};return i`
|
|
229
229
|
<div class="cw-message-row" style="position: relative;">
|
|
230
230
|
<${xt}
|
|
231
231
|
blocks=${e.metadata.blocks}
|
|
232
|
-
onAction=${
|
|
232
|
+
onAction=${T}
|
|
233
233
|
markdownParser=${n}
|
|
234
234
|
/>
|
|
235
|
-
${t&&
|
|
235
|
+
${t&&i`<${Te} msg=${e} show=${p} onToggle=${()=>r(!p)} />`}
|
|
236
236
|
</div>
|
|
237
|
-
`}if(
|
|
238
|
-
<div class="cw-tool-message ${
|
|
239
|
-
<span class="cw-tool-label" onClick=${()=>
|
|
237
|
+
`}if(v||m){let T=e.metadata?.arguments||e.metadata?.result,y=R=>{if(typeof R=="string")try{return JSON.stringify(JSON.parse(R),null,2)}catch{return R}return JSON.stringify(R,null,2)};return i`
|
|
238
|
+
<div class="cw-tool-message ${m?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
|
|
239
|
+
<span class="cw-tool-label" onClick=${()=>T&&u(!d)}>
|
|
240
240
|
${e.content}
|
|
241
|
-
${
|
|
241
|
+
${T&&i`<span class="cw-tool-expand">${d?"\u25BC":"\u25B6"}</span>`}
|
|
242
242
|
</span>
|
|
243
|
-
${
|
|
244
|
-
<pre class="cw-tool-details">${z(
|
|
243
|
+
${d&&T&&i`
|
|
244
|
+
<pre class="cw-tool-details">${z(y(v?e.metadata.arguments:e.metadata.result))}</pre>
|
|
245
245
|
`}
|
|
246
|
-
${t&&
|
|
246
|
+
${t&&i`<${Te} msg=${e} show=${p} onToggle=${()=>r(!p)} />`}
|
|
247
247
|
</div>
|
|
248
|
-
`}let
|
|
248
|
+
`}let P=["cw-message",f&&"cw-message-user",k&&"cw-message-error"].filter(Boolean).join(" "),H=`cw-message-row ${f?"cw-message-row-user":""}`,F=e.role==="assistant"?kt(e.content,n):z(e.content),L=e.files&&e.files.length>0,j=()=>L?i`
|
|
249
249
|
<div class="cw-message-attachments">
|
|
250
|
-
${e.files.map(
|
|
251
|
-
<a class="cw-attachment-thumbnail" href=${
|
|
252
|
-
<img src=${
|
|
250
|
+
${e.files.map(T=>T.type&&T.type.startsWith("image/")?i`
|
|
251
|
+
<a class="cw-attachment-thumbnail" href=${T.url} target="_blank" title=${T.name}>
|
|
252
|
+
<img src=${T.url} alt=${T.name} />
|
|
253
253
|
</a>
|
|
254
|
-
`:
|
|
255
|
-
<a class="cw-attachment-file" href=${
|
|
256
|
-
<span class="cw-attachment-icon">${Se(
|
|
254
|
+
`:i`
|
|
255
|
+
<a class="cw-attachment-file" href=${T.url} target="_blank" title=${T.name}>
|
|
256
|
+
<span class="cw-attachment-icon">${Se(T.type)}</span>
|
|
257
257
|
<span class="cw-attachment-info">
|
|
258
|
-
<span class="cw-attachment-name">${
|
|
259
|
-
<span class="cw-attachment-size">${Ce(
|
|
258
|
+
<span class="cw-attachment-name">${T.name}</span>
|
|
259
|
+
<span class="cw-attachment-size">${Ce(T.size)}</span>
|
|
260
260
|
</span>
|
|
261
261
|
</a>
|
|
262
262
|
`)}
|
|
263
263
|
</div>
|
|
264
|
-
`:null,
|
|
265
|
-
<div class=${
|
|
266
|
-
${
|
|
264
|
+
`:null,N=T=>{h(!1),s&&s(c,T)},w=()=>{a&&a(c)};if(f&&_)return i`
|
|
265
|
+
<div class=${H} style="position: relative;">
|
|
266
|
+
${j()}
|
|
267
267
|
<${Tn}
|
|
268
268
|
initialContent=${e.content}
|
|
269
|
-
onSave=${
|
|
270
|
-
onCancel=${()=>
|
|
269
|
+
onSave=${N}
|
|
270
|
+
onCancel=${()=>h(!1)}
|
|
271
271
|
/>
|
|
272
272
|
</div>
|
|
273
|
-
`;let
|
|
274
|
-
<div class="${
|
|
275
|
-
${
|
|
276
|
-
${
|
|
273
|
+
`;let E=f&&s&&a,M=e.role==="assistant"&&a&&!l;return i`
|
|
274
|
+
<div class="${H} ${E||M?"cw-message-row-with-actions":""}">
|
|
275
|
+
${j()}
|
|
276
|
+
${E&&i`
|
|
277
277
|
<div class="cw-user-actions-wrapper">
|
|
278
278
|
<${At}
|
|
279
|
-
onEdit=${()=>
|
|
280
|
-
onRetry=${
|
|
281
|
-
isLoading=${
|
|
279
|
+
onEdit=${()=>h(!0)}
|
|
280
|
+
onRetry=${w}
|
|
281
|
+
isLoading=${l}
|
|
282
282
|
position="left"
|
|
283
283
|
showEdit=${!0}
|
|
284
284
|
/>
|
|
285
|
-
<div class=${
|
|
285
|
+
<div class=${P} dangerouslySetInnerHTML=${{__html:F}} />
|
|
286
286
|
</div>
|
|
287
287
|
`}
|
|
288
|
-
${!
|
|
289
|
-
<div class=${
|
|
288
|
+
${!E&&i`
|
|
289
|
+
<div class=${P} dangerouslySetInnerHTML=${{__html:F}} />
|
|
290
290
|
`}
|
|
291
|
-
${
|
|
291
|
+
${M&&i`
|
|
292
292
|
<${At}
|
|
293
|
-
onRetry=${
|
|
294
|
-
isLoading=${
|
|
293
|
+
onRetry=${w}
|
|
294
|
+
isLoading=${l}
|
|
295
295
|
position="right"
|
|
296
296
|
showEdit=${!1}
|
|
297
297
|
/>
|
|
298
298
|
`}
|
|
299
|
-
${t&&
|
|
299
|
+
${t&&i`<${Te} msg=${e} show=${p} onToggle=${()=>r(!p)} />`}
|
|
300
300
|
</div>
|
|
301
|
-
`}function Dt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,onEditMessage:o,onRetryMessage:l,
|
|
302
|
-
<div class="cw-messages" ref=${
|
|
303
|
-
${
|
|
301
|
+
`}function Dt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,onEditMessage:o,onRetryMessage:l,onSendMessage:c,debugMode:d,markdownParser:u,emptyStateTitle:p,emptyStateMessage:r}){let _=Q(null),h=Q(!0),f=v=>{let m=v.target,k=m.scrollHeight-m.scrollTop-m.clientHeight<100;if(h.current=k,m.scrollTop<50&&n&&!s){let $=m.scrollHeight;a().then(()=>{let O=m.scrollHeight;m.scrollTop=O-$+m.scrollTop})}};B(()=>{let v=_.current;v&&h.current&&requestAnimationFrame(()=>{v.scrollTop=v.scrollHeight})},[e,t]),B(()=>{let v=_.current;v&&e.length<=2&&(h.current=!0,requestAnimationFrame(()=>{v.scrollTop=v.scrollHeight}))},[e.length]);let b=e.length===0;return i`
|
|
302
|
+
<div class="cw-messages" ref=${_} onScroll=${f}>
|
|
303
|
+
${b&&i`
|
|
304
304
|
<div class="cw-empty-state">
|
|
305
305
|
<svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
306
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>
|
|
307
307
|
</svg>
|
|
308
|
-
<h3>${z(
|
|
309
|
-
<p>${z(
|
|
308
|
+
<h3>${z(p)}</h3>
|
|
309
|
+
<p>${z(r)}</p>
|
|
310
310
|
</div>
|
|
311
311
|
`}
|
|
312
312
|
|
|
313
|
-
${!
|
|
313
|
+
${!b&&n&&i`
|
|
314
314
|
<div class="cw-load-more" onClick=${a}>
|
|
315
|
-
${s?
|
|
315
|
+
${s?i`<span class="cw-spinner"></span><span>Loading...</span>`:i`<span>↑ Scroll up or click to load older messages</span>`}
|
|
316
316
|
</div>
|
|
317
317
|
`}
|
|
318
318
|
|
|
319
|
-
${e.map((
|
|
319
|
+
${e.map((v,m)=>i`
|
|
320
320
|
<${It}
|
|
321
|
-
key=${
|
|
322
|
-
msg=${
|
|
323
|
-
messageIndex=${
|
|
324
|
-
debugMode=${
|
|
325
|
-
markdownParser=${
|
|
321
|
+
key=${v.id}
|
|
322
|
+
msg=${v}
|
|
323
|
+
messageIndex=${m}
|
|
324
|
+
debugMode=${d}
|
|
325
|
+
markdownParser=${u}
|
|
326
326
|
onEdit=${o}
|
|
327
327
|
onRetry=${l}
|
|
328
|
+
onSendMessage=${c}
|
|
328
329
|
isLoading=${t}
|
|
329
330
|
/>
|
|
330
331
|
`)}
|
|
331
332
|
|
|
332
|
-
${t&&
|
|
333
|
+
${t&&i`
|
|
333
334
|
<div class="cw-message-row">
|
|
334
335
|
<div class="cw-typing">
|
|
335
336
|
<span class="cw-spinner"></span>
|
|
@@ -338,41 +339,41 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
338
339
|
</div>
|
|
339
340
|
`}
|
|
340
341
|
</div>
|
|
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]=
|
|
342
|
+
`}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]=S(""),[u,p]=S([]),[r,_]=S(!1),[h,f]=S(!1),[b]=S(()=>!!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 O=y=>{y.preventDefault(),(c.trim()||u.length>0)&&!n&&(e(c,u),d(""),p([]),v.current&&(v.current.style.height="auto"),m.current&&(m.current.value=""))},q=y=>{let R=Array.from(y.target.files||[]);R.length>0&&p(K=>[...K,...R])},P=y=>{p(R=>R.filter((K,g)=>g!==y))},H=y=>{y.preventDefault(),m.current&&!n&&m.current.click()},F=y=>{y.key==="Enter"&&!y.shiftKey&&(y.preventDefault(),O(y))},L=y=>{n&&t&&(y.preventDefault(),t())},j=()=>{if(!We||n)return;$.current=!0;let y=new We;y.continuous=!0,y.interimResults=!0,y.lang=navigator.language||"en-US";let R=c,K="";y.onstart=()=>{f(!0)},y.onresult=g=>{K="";for(let A=g.resultIndex;A<g.results.length;A++){let V=g.results[A][0].transcript;g.results[A].isFinal?R+=(R?" ":"")+V:K+=V}d(R+(K?" "+K:""))},y.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(R||c)},y.onend=()=>{if($.current){console.log("[ChatWidget] Recognition paused, restarting...");try{y.start();return}catch(g){console.warn("[ChatWidget] Could not restart recognition:",g)}}f(!1),R&&d(R),k.current=null},k.current=y,y.start()},N=()=>{$.current=!1,k.current&&k.current.stop()},w=y=>{y.preventDefault(),h?N():j()},E=i`
|
|
342
343
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
|
|
343
344
|
<rect x="2" y="2" width="10" height="10" rx="1" />
|
|
344
345
|
</svg>
|
|
345
|
-
`,C=
|
|
346
|
+
`,C=i`
|
|
346
347
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
347
348
|
<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
|
|
348
349
|
<path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
|
|
349
350
|
<line x1="12" y1="19" x2="12" y2="23"></line>
|
|
350
351
|
<line x1="8" y1="23" x2="16" y2="23"></line>
|
|
351
352
|
</svg>
|
|
352
|
-
`,M=
|
|
353
|
+
`,M=i`
|
|
353
354
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
354
355
|
<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>
|
|
355
356
|
</svg>
|
|
356
|
-
`,
|
|
357
|
-
<form class="cw-input-form" onSubmit=${
|
|
357
|
+
`,I=o&&b,T=l;return i`
|
|
358
|
+
<form class="cw-input-form" onSubmit=${O}>
|
|
358
359
|
<input
|
|
359
360
|
type="file"
|
|
360
361
|
ref=${m}
|
|
361
362
|
style="display: none"
|
|
362
363
|
multiple
|
|
363
|
-
onChange=${
|
|
364
|
+
onChange=${q}
|
|
364
365
|
/>
|
|
365
|
-
${
|
|
366
|
+
${u.length>0&&i`
|
|
366
367
|
<div class="cw-file-chips">
|
|
367
|
-
${
|
|
368
|
-
<div class="cw-file-chip" key=${
|
|
369
|
-
<span class="cw-file-chip-icon">${Se(
|
|
370
|
-
<span class="cw-file-chip-name" title=${
|
|
371
|
-
<span class="cw-file-chip-size">(${Ce(
|
|
368
|
+
${u.map((y,R)=>i`
|
|
369
|
+
<div class="cw-file-chip" key=${R}>
|
|
370
|
+
<span class="cw-file-chip-icon">${Se(y.type)}</span>
|
|
371
|
+
<span class="cw-file-chip-name" title=${y.name}>${y.name.length>20?y.name.substring(0,17)+"...":y.name}</span>
|
|
372
|
+
<span class="cw-file-chip-size">(${Ce(y.size)})</span>
|
|
372
373
|
<button
|
|
373
374
|
type="button"
|
|
374
375
|
class="cw-file-chip-remove"
|
|
375
|
-
onClick=${()=>
|
|
376
|
+
onClick=${()=>P(R)}
|
|
376
377
|
title="Remove file"
|
|
377
378
|
>×</button>
|
|
378
379
|
</div>
|
|
@@ -384,23 +385,23 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
384
385
|
class="cw-input"
|
|
385
386
|
placeholder=${z(s)}
|
|
386
387
|
value=${c}
|
|
387
|
-
onInput=${
|
|
388
|
-
onKeyDown=${
|
|
388
|
+
onInput=${y=>d(y.target.value)}
|
|
389
|
+
onKeyDown=${F}
|
|
389
390
|
disabled=${n}
|
|
390
391
|
rows="1"
|
|
391
392
|
/>
|
|
392
|
-
${
|
|
393
|
+
${T&&i`
|
|
393
394
|
<button
|
|
394
395
|
type="button"
|
|
395
396
|
class="cw-attach-btn"
|
|
396
|
-
onClick=${
|
|
397
|
+
onClick=${H}
|
|
397
398
|
disabled=${n}
|
|
398
399
|
title="Attach files"
|
|
399
400
|
>
|
|
400
401
|
${M}
|
|
401
402
|
</button>
|
|
402
403
|
`}
|
|
403
|
-
${
|
|
404
|
+
${I&&i`
|
|
404
405
|
<button
|
|
405
406
|
type="button"
|
|
406
407
|
class=${`cw-voice-btn ${h?"cw-voice-btn-recording":""}`}
|
|
@@ -415,15 +416,15 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
415
416
|
type=${n?"button":"submit"}
|
|
416
417
|
class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&r?"cw-send-btn-stop":""}`}
|
|
417
418
|
style=${{backgroundColor:n&&r?"#dc2626":a}}
|
|
418
|
-
onClick=${
|
|
419
|
-
onMouseEnter=${()=>
|
|
420
|
-
onMouseLeave=${()=>
|
|
419
|
+
onClick=${L}
|
|
420
|
+
onMouseEnter=${()=>_(!0)}
|
|
421
|
+
onMouseLeave=${()=>_(!1)}
|
|
421
422
|
title=${n?"Stop":"Send"}
|
|
422
423
|
>
|
|
423
|
-
${n?r?
|
|
424
|
+
${n?r?E:i`<span class="cw-spinner"></span>`:"\u27A4"}
|
|
424
425
|
</button>
|
|
425
426
|
</form>
|
|
426
|
-
`}function Rt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:l}){return
|
|
427
|
+
`}function Rt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:l}){return i`
|
|
427
428
|
<div class="cw-sidebar ${e?"cw-sidebar-open":""}">
|
|
428
429
|
<div class="cw-sidebar-header">
|
|
429
430
|
<span>Conversations</span>
|
|
@@ -435,17 +436,17 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
435
436
|
</button>
|
|
436
437
|
|
|
437
438
|
<div class="cw-conversation-list">
|
|
438
|
-
${n&&
|
|
439
|
+
${n&&i`
|
|
439
440
|
<div class="cw-sidebar-loading">
|
|
440
441
|
<span class="cw-spinner"></span>
|
|
441
442
|
</div>
|
|
442
443
|
`}
|
|
443
444
|
|
|
444
|
-
${!n&&t.length===0&&
|
|
445
|
+
${!n&&t.length===0&&i`
|
|
445
446
|
<div class="cw-sidebar-empty">No conversations yet</div>
|
|
446
447
|
`}
|
|
447
448
|
|
|
448
|
-
${t.map(c=>
|
|
449
|
+
${t.map(c=>i`
|
|
449
450
|
<div
|
|
450
451
|
key=${c.id}
|
|
451
452
|
class="cw-conversation-item ${c.id===s?"cw-conversation-active":""}"
|
|
@@ -462,7 +463,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
462
463
|
class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
|
|
463
464
|
onClick=${a}
|
|
464
465
|
/>
|
|
465
|
-
`}function Ft({availableModels:e,selectedModel:t,onSelectModel:n,thinkingEnabled:s,onToggleThinking:a,disabled:o}){let[l,c]=
|
|
466
|
+
`}function Ft({availableModels:e,selectedModel:t,onSelectModel:n,thinkingEnabled:s,onToggleThinking:a,disabled:o}){let[l,c]=S(!1);if(!e||e.length===0)return null;let d=e.find(f=>f.id===t),u=d?.name||"Select Model",p=d?.supports_thinking||!1,r=()=>{o||c(!l)},_=f=>{n(f),c(!1)},h=f=>{f.stopPropagation(),a&&p&&a(!s)};return i`
|
|
466
467
|
<div class="cw-model-selector">
|
|
467
468
|
<button
|
|
468
469
|
class="cw-model-btn"
|
|
@@ -471,11 +472,11 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
471
472
|
title="Select Model"
|
|
472
473
|
>
|
|
473
474
|
<span class="cw-model-icon">🤖</span>
|
|
474
|
-
<span class="cw-model-name">${z(
|
|
475
|
+
<span class="cw-model-name">${z(u)}</span>
|
|
475
476
|
<span class="cw-model-chevron">${l?"\u25B2":"\u25BC"}</span>
|
|
476
477
|
</button>
|
|
477
478
|
|
|
478
|
-
${
|
|
479
|
+
${p&&a&&i`
|
|
479
480
|
<button
|
|
480
481
|
class="cw-thinking-toggle ${s?"cw-thinking-enabled":""}"
|
|
481
482
|
onClick=${h}
|
|
@@ -486,20 +487,20 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
486
487
|
</button>
|
|
487
488
|
`}
|
|
488
489
|
|
|
489
|
-
${l&&
|
|
490
|
+
${l&&i`
|
|
490
491
|
<div class="cw-model-dropdown">
|
|
491
|
-
${e.map(f=>
|
|
492
|
+
${e.map(f=>i`
|
|
492
493
|
<button
|
|
493
494
|
key=${f.id}
|
|
494
495
|
class="cw-model-option ${f.id===t?"cw-model-option-selected":""}"
|
|
495
|
-
onClick=${()=>
|
|
496
|
+
onClick=${()=>_(f.id)}
|
|
496
497
|
>
|
|
497
498
|
<span class="cw-model-option-name">
|
|
498
499
|
${z(f.name)}
|
|
499
|
-
${f.supports_thinking&&
|
|
500
|
+
${f.supports_thinking&&i`<span class="cw-thinking-badge" title="Supports extended thinking">🧠</span>`}
|
|
500
501
|
</span>
|
|
501
502
|
<span class="cw-model-option-provider">${z(f.provider)}</span>
|
|
502
|
-
${f.description&&
|
|
503
|
+
${f.description&&i`
|
|
503
504
|
<span class="cw-model-option-desc">${z(f.description)}</span>
|
|
504
505
|
`}
|
|
505
506
|
</button>
|
|
@@ -507,7 +508,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
507
508
|
</div>
|
|
508
509
|
`}
|
|
509
510
|
</div>
|
|
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]=
|
|
511
|
+
`}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]=S(!1),[l,c]=S(e.name),d=x(()=>{let _={not_started:"in_progress",in_progress:"complete",complete:"not_started",cancelled:"not_started"};t(e.id,{state:_[e.state]||"not_started"})},[e,t]),u=x(()=>{l.trim()&&l!==e.name&&t(e.id,{name:l.trim()}),o(!1)},[e,l,t]),p=x(_=>{_.key==="Enter"&&u(),_.key==="Escape"&&(c(e.name),o(!1))},[u,e.name]),r=`cw-task-state-${e.state.replace("_","-")}`;return i`
|
|
511
512
|
<div class="cw-task-item ${r}" style=${{paddingLeft:`${s*16+8}px`}}>
|
|
512
513
|
<button
|
|
513
514
|
class="cw-task-state-btn"
|
|
@@ -517,17 +518,17 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
517
518
|
${Mn[e.state]}
|
|
518
519
|
</button>
|
|
519
520
|
|
|
520
|
-
${a?
|
|
521
|
+
${a?i`
|
|
521
522
|
<input
|
|
522
523
|
type="text"
|
|
523
524
|
class="cw-task-edit-input"
|
|
524
525
|
value=${l}
|
|
525
|
-
onInput=${
|
|
526
|
-
onBlur=${
|
|
527
|
-
onKeyDown=${
|
|
526
|
+
onInput=${_=>c(_.target.value)}
|
|
527
|
+
onBlur=${u}
|
|
528
|
+
onKeyDown=${p}
|
|
528
529
|
autoFocus
|
|
529
530
|
/>
|
|
530
|
-
`:
|
|
531
|
+
`:i`
|
|
531
532
|
<span
|
|
532
533
|
class="cw-task-name"
|
|
533
534
|
onClick=${()=>o(!0)}
|
|
@@ -545,16 +546,16 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
545
546
|
×
|
|
546
547
|
</button>
|
|
547
548
|
</div>
|
|
548
|
-
`}function Ot({tasks:e,progress:t,isLoading:n,error:s,onUpdate:a,onRemove:o,onClear:l,onRefresh:c}){let d=x(r=>{let
|
|
549
|
+
`}function Ot({tasks:e,progress:t,isLoading:n,error:s,onUpdate:a,onRemove:o,onClear:l,onRefresh:c}){let d=x(r=>{let _=new Map,h=[];return r.forEach(f=>{_.set(f.id,{...f,children:[]})}),r.forEach(f=>{let b=_.get(f.id);f.parent_id&&_.has(f.parent_id)?_.get(f.parent_id).children.push(b):h.push(b)}),h},[]),u=x((r,_=0)=>i`
|
|
549
550
|
<${xn}
|
|
550
551
|
key=${r.id}
|
|
551
552
|
task=${r}
|
|
552
|
-
depth=${
|
|
553
|
+
depth=${_}
|
|
553
554
|
onUpdate=${a}
|
|
554
555
|
onRemove=${o}
|
|
555
556
|
/>
|
|
556
|
-
${r.children?.map(h=>
|
|
557
|
-
`,[a,o]),
|
|
557
|
+
${r.children?.map(h=>u(h,_+1))}
|
|
558
|
+
`,[a,o]),p=d(e);return n&&e.length===0?i`<div class="cw-tasks-loading">Loading tasks...</div>`:i`
|
|
558
559
|
<div class="cw-tasks-container">
|
|
559
560
|
<div class="cw-tasks-header">
|
|
560
561
|
<div class="cw-tasks-progress">
|
|
@@ -570,24 +571,24 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
570
571
|
</div>
|
|
571
572
|
<div class="cw-tasks-actions">
|
|
572
573
|
<button class="cw-tasks-action-btn" onClick=${c} title="Refresh">↻</button>
|
|
573
|
-
${e.length>0&&
|
|
574
|
+
${e.length>0&&i`
|
|
574
575
|
<button class="cw-tasks-action-btn" onClick=${l} title="Clear all">🗑</button>
|
|
575
576
|
`}
|
|
576
577
|
</div>
|
|
577
578
|
</div>
|
|
578
579
|
|
|
579
|
-
${s&&
|
|
580
|
+
${s&&i`<div class="cw-tasks-error">${s}</div>`}
|
|
580
581
|
|
|
581
582
|
<div class="cw-tasks-list">
|
|
582
|
-
${
|
|
583
|
+
${p.length===0?i`
|
|
583
584
|
<div class="cw-tasks-empty">
|
|
584
585
|
<p>No tasks yet</p>
|
|
585
586
|
<p class="cw-tasks-empty-hint">Tasks will appear here when the agent creates them</p>
|
|
586
587
|
</div>
|
|
587
|
-
`:
|
|
588
|
+
`:p.map(r=>u(r))}
|
|
588
589
|
</div>
|
|
589
590
|
</div>
|
|
590
|
-
`}function Ht({systems:e,agents:t,selectedSystem:n,selectedAgent:s,selectedSystemVersion:a,selectedAgentVersion:o,onSelectSystem:l,onSelectAgent:c,onSelectSystemVersion:d,onSelectAgentVersion:
|
|
591
|
+
`}function Ht({systems:e,agents:t,selectedSystem:n,selectedAgent:s,selectedSystemVersion:a,selectedAgentVersion:o,onSelectSystem:l,onSelectAgent:c,onSelectSystemVersion:d,onSelectAgentVersion:u,disabled:p}){let r=e.find($=>$.slug===n),_=t.find($=>$.slug===s),h=r?.versions||[],f=_?.versions||[];if(e.length===0&&t.length===0)return null;let b=e.length>1,v=t.length>1,m=h.length>1,k=f.length>1;return i`
|
|
591
592
|
<div class="cw-dev-toolbar">
|
|
592
593
|
<div class="cw-dev-toolbar-label">
|
|
593
594
|
<span class="cw-dev-toolbar-icon">🛠️</span>
|
|
@@ -598,20 +599,20 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
598
599
|
<!-- System -->
|
|
599
600
|
<div class="cw-dev-select-group">
|
|
600
601
|
<label class="cw-dev-label">System</label>
|
|
601
|
-
${
|
|
602
|
+
${b?i`
|
|
602
603
|
<select
|
|
603
604
|
class="cw-dev-select"
|
|
604
605
|
value=${n||""}
|
|
605
606
|
onChange=${$=>l($.target.value)}
|
|
606
|
-
disabled=${
|
|
607
|
+
disabled=${p}
|
|
607
608
|
>
|
|
608
|
-
${e.map($=>
|
|
609
|
+
${e.map($=>i`
|
|
609
610
|
<option key=${$.slug} value=${$.slug}>
|
|
610
611
|
${$.name}
|
|
611
612
|
</option>
|
|
612
613
|
`)}
|
|
613
614
|
</select>
|
|
614
|
-
`:
|
|
615
|
+
`:i`
|
|
615
616
|
<span class="cw-dev-badge">${r?.name||"\u2014"}</span>
|
|
616
617
|
`}
|
|
617
618
|
</div>
|
|
@@ -619,20 +620,20 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
619
620
|
<!-- System Version -->
|
|
620
621
|
<div class="cw-dev-select-group">
|
|
621
622
|
<label class="cw-dev-label">Sys Ver</label>
|
|
622
|
-
${m?
|
|
623
|
+
${m?i`
|
|
623
624
|
<select
|
|
624
625
|
class="cw-dev-select"
|
|
625
626
|
value=${a||""}
|
|
626
627
|
onChange=${$=>d($.target.value||null)}
|
|
627
|
-
disabled=${
|
|
628
|
+
disabled=${p}
|
|
628
629
|
>
|
|
629
|
-
${h.map($=>
|
|
630
|
+
${h.map($=>i`
|
|
630
631
|
<option key=${$.version} value=${$.version}>
|
|
631
632
|
${$.version}${$.is_active?" \u2713":""}${$.is_draft?" (draft)":""}
|
|
632
633
|
</option>
|
|
633
634
|
`)}
|
|
634
635
|
</select>
|
|
635
|
-
`:
|
|
636
|
+
`:i`
|
|
636
637
|
<span class="cw-dev-badge">${h.length===1?h[0].version:"none"}</span>
|
|
637
638
|
`}
|
|
638
639
|
</div>
|
|
@@ -640,47 +641,47 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
640
641
|
<!-- Agent -->
|
|
641
642
|
<div class="cw-dev-select-group">
|
|
642
643
|
<label class="cw-dev-label">Agent</label>
|
|
643
|
-
${v?
|
|
644
|
+
${v?i`
|
|
644
645
|
<select
|
|
645
646
|
class="cw-dev-select"
|
|
646
647
|
value=${s||""}
|
|
647
648
|
onChange=${$=>c($.target.value)}
|
|
648
|
-
disabled=${
|
|
649
|
+
disabled=${p}
|
|
649
650
|
>
|
|
650
|
-
${t.map($=>
|
|
651
|
+
${t.map($=>i`
|
|
651
652
|
<option key=${$.slug} value=${$.slug}>
|
|
652
653
|
${$.name}${r?.entry_agent?.slug===$.slug?" \u2605":""}
|
|
653
654
|
</option>
|
|
654
655
|
`)}
|
|
655
656
|
</select>
|
|
656
|
-
`:
|
|
657
|
-
<span class="cw-dev-badge">${
|
|
657
|
+
`:i`
|
|
658
|
+
<span class="cw-dev-badge">${_?.name||t[0]?.name||"\u2014"}${r?.entry_agent?.slug===(_?.slug||t[0]?.slug)?" \u2605":""}</span>
|
|
658
659
|
`}
|
|
659
660
|
</div>
|
|
660
661
|
|
|
661
662
|
<!-- Agent Version -->
|
|
662
663
|
<div class="cw-dev-select-group">
|
|
663
664
|
<label class="cw-dev-label">Agent Ver</label>
|
|
664
|
-
${k?
|
|
665
|
+
${k?i`
|
|
665
666
|
<select
|
|
666
667
|
class="cw-dev-select"
|
|
667
668
|
value=${o||""}
|
|
668
|
-
onChange=${$=>
|
|
669
|
-
disabled=${
|
|
669
|
+
onChange=${$=>u($.target.value||null)}
|
|
670
|
+
disabled=${p}
|
|
670
671
|
>
|
|
671
|
-
${f.map($=>
|
|
672
|
+
${f.map($=>i`
|
|
672
673
|
<option key=${$.version} value=${$.version}>
|
|
673
674
|
${$.version}${$.is_active?" \u2713":""}${$.is_draft?" (draft)":""}
|
|
674
675
|
</option>
|
|
675
676
|
`)}
|
|
676
677
|
</select>
|
|
677
|
-
`:
|
|
678
|
-
<span class="cw-dev-badge">${f.length===1?f[0].version:
|
|
678
|
+
`:i`
|
|
679
|
+
<span class="cw-dev-badge">${f.length===1?f[0].version:_?.active_version||"\u2014"}</span>
|
|
679
680
|
`}
|
|
680
681
|
</div>
|
|
681
682
|
</div>
|
|
682
683
|
</div>
|
|
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`
|
|
684
|
+
`}function Lt(e,t,n){let[s,a]=S([]),[o,l]=S(!1),[c,d]=S(null),[u,p]=S(()=>n?.get(e.conversationIdKey)||null),[r,_]=S(!1),[h,f]=S(!1),[b,v]=S(0),m=Q(null),k=Q(null);B(()=>{u&&n?.set(e.conversationIdKey,u)},[u,e.conversationIdKey,n]);let $=x(async(w,E,C)=>{m.current&&m.current.close();let M=e.apiPaths.runEvents.replace("{runId}",w),I=`${e.backendUrl}${M}`;E&&(I+=`?anonymous_token=${encodeURIComponent(E)}`);let T=new EventSource(I);m.current=T;let y="";T.addEventListener("assistant.message",K=>{try{let g=JSON.parse(K.data);e.onEvent&&e.onEvent("assistant.message",g.payload);let A=g.payload.content;A&&(y+=A,a(V=>{let X=V[V.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...V.slice(0,-1),{...X,content:y}]:[...V,{id:"assistant-stream-"+Date.now(),role:"assistant",content:y,timestamp:new Date,type:"message"}]}))}catch(g){console.error("[ChatWidget] Parse error:",g)}}),T.addEventListener("tool.call",K=>{try{let g=JSON.parse(K.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)}}),T.addEventListener("tool.result",K=>{try{let g=JSON.parse(K.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)}}),T.addEventListener("custom",K=>{try{let g=JSON.parse(K.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)}}),T.addEventListener("sub_agent.start",K=>{try{let g=JSON.parse(K.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)}}),T.addEventListener("sub_agent.end",K=>{try{let g=JSON.parse(K.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)}}),T.addEventListener("content.blocks",K=>{try{let g=JSON.parse(K.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 R=K=>{try{let g=JSON.parse(K.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),T.close(),m.current=null,y&&C&&C(y)};T.addEventListener("run.succeeded",R),T.addEventListener("run.failed",R),T.addEventListener("run.cancelled",R),T.addEventListener("run.timed_out",R),T.onerror=()=>{l(!1),T.close(),m.current=null}},[e]),O=x(async(w,E={},C={})=>{if(!w.trim()||o)return;let M=[],I={};typeof E=="function"?I={onAssistantMessage:E}:Array.isArray(E)?(M=E,I=C):I=E||{};let{model:T,thinking:y,onAssistantMessage:R,supersedeFromMessageIndex:K}=I;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),u&&ne.append(Ve("conversationId"),u),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})),T&&ne.append("model",T),y&&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:u,messages:[{role:"user",content:w.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...T&&{model:T},...y&&{thinking:!0},...K!==void 0&&{supersedeFromMessageIndex:K}});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),D=A;if(X.status===401){t.clearSession();let Y=await t.getOrCreateSession(!0);Y&&(D=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,!u&&ee.conversationId&&p(ee.conversationId),await $(ee.id,D,R)}catch(A){d(A.message||"Failed to send message"),l(!1)}finally{k.current=null}},[e,t,u,o,$]),q=x(async()=>{let w=k.current;if(!(!w||!o))try{let E=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",w):`${e.apiPaths.runs}${w}/cancel/`;(await fetch(`${e.backendUrl}${E}`,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(E){console.error("[ChatWidget] Failed to cancel run:",E)}},[e,t,o]),P=x(()=>{a([]),p(null),d(null),_(!1),v(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),H=w=>{let E={id:be(),role:w.role,timestamp:w.timestamp?new Date(w.timestamp):new Date};if(w.role==="tool")return{...E,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:E.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:{...E,content:C,type:"message"}},F=x(async w=>{console.log("[ChatWidget] loadConversation called with:",w),l(!0),a([]),p(w);try{let E=await t.getOrCreateSession(),M=`${e.backendUrl}${e.apiPaths.conversations}${w}/?limit=10&offset=0`;console.log("[ChatWidget] Fetching conversation from:",M);let I=await fetch(M,t.getFetchOptions({method:"GET"},E));if(console.log("[ChatWidget] Response status:",I.status),I.ok){let T=await I.json();console.log("[ChatWidget] Raw conversation:",T);let y=t.transformResponse(T);if(console.log("[ChatWidget] Transformed conversation:",y),y.messages){let R=y.messages.flatMap(H).filter(Boolean);console.log("[ChatWidget] Mapped messages:",R),a(R)}_(y.hasMore||!1),v(y.messages?.length||0)}else I.status===404?(console.log("[ChatWidget] Conversation not found, clearing"),p(null),n?.set(e.conversationIdKey,null)):console.error("[ChatWidget] Unexpected response status:",I.status)}catch(E){console.error("[ChatWidget] Failed to load conversation:",E)}finally{l(!1)}},[e,t,n]),L=x(async()=>{if(!(!u||h||!r)){f(!0);try{let w=await t.getOrCreateSession(),C=`${e.backendUrl}${e.apiPaths.conversations}${u}/?limit=10&offset=${b}`,M=await fetch(C,t.getFetchOptions({method:"GET"},w));if(M.ok){let I=await M.json(),T=t.transformResponse(I);if(T.messages?.length>0){let y=T.messages.flatMap(H).filter(Boolean);a(R=>[...y,...R]),v(R=>R+T.messages.length),_(T.hasMore||!1)}else _(!1)}}catch(w){console.error("[ChatWidget] Failed to load more messages:",w)}finally{f(!1)}}},[e,t,u,b,h,r]),j=x(async(w,E,C={})=>{if(o)return;let M=s[w];if(!M||M.role!=="user")return;let I=s.slice(0,w);a(I),await O(E,{...C,supersedeFromMessageIndex:w})},[s,o,O]),N=x(async(w,E={})=>{if(o)return;let C=s[w];if(!C)return;let M=w,I=C;if(C.role==="assistant"){for(let y=w-1;y>=0;y--)if(s[y].role==="user"){M=y,I=s[y];break}if(I.role!=="user")return}else if(C.role!=="user")return;let T=s.slice(0,M);a(T),await O(I.content,{...E,supersedeFromMessageIndex:M})},[s,o,O]);return B(()=>()=>{m.current&&m.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:u,hasMoreMessages:r,loadingMoreMessages:h,sendMessage:O,cancelRun:q,clearMessages:P,loadConversation:F,loadMoreMessages:L,setConversationId:p,editMessage:j,retryMessage:N}}var Nt="cw_thinking_enabled";function Kt(e,t,n){let[s,a]=S([]),[o,l]=S(null),[c,d]=S(null),[u,p]=S(!1),[r,_]=S(!1);B(()=>{(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(),O=$.models||[];a(O),d($.default);let q=n?.get(e.modelKey);q&&O.some(H=>H.id===q)?l(q):l($.default),n?.get(Nt)==="true"&&_(!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=x(m=>{l(m),n?.set(e.modelKey,m)},[e.modelKey,n]),f=x(m=>{_(m),n?.set(Nt,m?"true":"false")},[n]),b=x(()=>s.find(m=>m.id===o)||null,[s,o]),v=x(()=>b()?.supports_thinking||!1,[b]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:u,selectModel:h,getSelectedModelInfo:b,thinkingEnabled:r,toggleThinking:f,supportsThinking:v}}function Wt(e,t){let[n,s]=S(null),[a,o]=S(!1),[l,c]=S(null),d=e.apiPaths?.tasks||"/api/agent/tasks/",u=x(async()=>{o(!0),c(null);try{let b=`${e.backendUrl}${d}`,v=await fetch(b,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(b){console.error("[useTasks] Failed to load task list:",b),c("Failed to load tasks")}finally{o(!1)}},[e.backendUrl,d,t]),p=x(async b=>{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(b)}));if(m.ok){let k=await m.json();return await u(),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,u]),r=x(async(b,v)=>{if(!n)return null;try{let m=`${e.backendUrl}${d}${n.id}/update_task/${b}/`,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 u(),$}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,u]),_=x(async b=>{if(!n)return!1;try{let v=`${e.backendUrl}${d}${n.id}/remove_task/${b}/`,m=await fetch(v,t.getFetchOptions({method:"DELETE"}));if(m.ok)return await u(),!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,u]),h=x(async()=>{if(!n)return!1;try{let b=`${e.backendUrl}${d}${n.id}/clear/`,v=await fetch(b,t.getFetchOptions({method:"POST"}));if(v.ok)return await u(),!0;{let m=await v.json().catch(()=>({}));return c(m.error||"Failed to clear tasks"),!1}}catch(b){return console.error("[useTasks] Failed to clear tasks:",b),c("Failed to clear tasks"),!1}},[e.backendUrl,d,n,t,u]),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:u,addTask:p,updateTask:r,removeTask:_,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]=S([]),[o,l]=S([]),[c,d]=S(null),[u,p]=S(null),[r,_]=S(null),[h,f]=S(null),[b,v]=S(!1),m=x(()=>{if(u)return u;if(c){let P=s.find(H=>H.slug===c);if(P?.entry_agent)return P.entry_agent.slug}return e.agentKey},[u,c,s,e.agentKey]);B(()=>{if(!e.showDevTools)return;(async()=>{v(!0);try{let H=await fetch(`${e.backendUrl}${e.apiPaths.systems}`,t.getFetchOptions({method:"GET"}));if(H.ok){let F=await H.json(),L=F.results||F;a(L);let j=n?.get(Ut);j&&L.some(N=>N.slug===j)?d(j):L.length===1&&d(L[0].slug)}}catch(H){console.warn("[ChatWidget] Failed to load systems:",H)}finally{v(!1)}})()},[e.backendUrl,e.apiPaths.systems,e.showDevTools,t,n]),B(()=>{if(!e.showDevTools)return;(async()=>{try{let H=c?`?system=${encodeURIComponent(c)}`:"",F=await fetch(`${e.backendUrl}${e.apiPaths.agents}${H}`,t.getFetchOptions({method:"GET"}));if(F.ok){let L=await F.json(),j=L.results||L;l(j);let N=n?.get(Ue);if(N&&j.some(E=>E.slug===N))p(N);else if(c){let E=s.find(C=>C.slug===c);E?.entry_agent&&p(E.entry_agent.slug)}let w=n?.get(Me);w&&f(w)}}catch(H){console.warn("[ChatWidget] Failed to load agents:",H)}})()},[e.backendUrl,e.apiPaths.agents,e.showDevTools,c,t,n,s]);let k=x(P=>{d(P),n?.set(Ut,P),p(null),f(null),n?.set(Ue,null),n?.set(Me,null);let F=s.find(L=>L.slug===P)?.active_version||null;_(F),n?.set(Bt,F)},[n,s]),$=x(P=>{p(P),n?.set(Ue,P);let F=o.find(L=>L.slug===P)?.active_version||null;f(F),n?.set(Me,F)},[n,o]),O=x(P=>{_(P),n?.set(Bt,P)},[n]),q=x(P=>{f(P),n?.set(Me,P)},[n]);return{systems:s,agents:o,selectedSystem:c,selectedAgent:u,selectedSystemVersion:r,selectedAgentVersion:h,isLoading:b,selectSystem:k,selectAgent:$,selectSystemVersion:O,selectAgentVersion:q,getEffectiveAgentKey:m}}function jt(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(),_={},h=p||e.authToken||t().authToken;if(r==="token"&&h){let f=e.authHeader||"Authorization",b=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";_[f]=b?`${b} ${h}`:h}else if(r==="jwt"&&h){let f=e.authHeader||"Authorization",b=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";_[f]=b?`${b} ${h}`:h}else if(r==="anonymous"&&h){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";_[f]=h}if(r==="session"){let f=Ct(e.csrfCookieName);f&&(_["X-CSRFToken"]=f)}return _};return{getAuthStrategy:o,getAuthHeaders:l,getFetchOptions:(p={},r=null)=>{let _=o(),h={...p},f=l(r);return console.log("[ChatWidget] getFetchOptions - strategy:",_,"overrideToken:",r,"authHeaders:",f),h.headers={...h.headers,...f},_==="session"&&(h.credentials="include"),h},getOrCreateSession:async(p=!1)=>{let r=o(),_=t(),h=e.anonymousTokenKey||e.sessionTokenKey;if(r!=="anonymous")return e.authToken||_.authToken;if(!p){if(_.authToken)return _.authToken;let f=_.storage?.get(h);if(f)return n(b=>({...b,authToken:f})),f}try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,b=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(b.ok){let v=await b.json();return n(m=>({...m,authToken:v.token})),_.storage?.set(h,v.token),v.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},clearSession:()=>{let p=e.anonymousTokenKey||e.sessionTokenKey,r=t();n(_=>({..._,authToken:null})),r.storage?.set(p,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]=S(e.embedded||e.forceOpen===!0),[l,c]=S(!1),[d,u]=S(!1),[p,r]=S(!1),[_,h]=S([]),[f,b]=S("chat"),[v,m]=S(!1),[k,$]=S(e.enableTTS),[O,q]=S(!1),[P,H]=S(null);B(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let F=ae(()=>bt(e.containerId),[e.containerId]),[L,j]=S(e.authToken||null),N=ae(()=>jt(e,()=>({authToken:L,storage:F}),ee=>{let Y=ee({authToken:L,storage:F});Y.authToken!==L&&j(Y.authToken)}),[e,L,F]),w=Vt(e,N,F),E=ae(()=>{if(!e.showDevTools)return e;let D=w.getEffectiveAgentKey();return D&&D!==e.agentKey?{...e,agentKey:D}:e},[e,w.getEffectiveAgentKey]),C=Lt(E,N,F),M=Kt(e,N,F),I=Wt(e,N);B(()=>{for(let D=C.messages.length-1;D>=0;D--){let Z=C.messages[D];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]),B(()=>{let D=F.get(e.conversationIdKey);console.log("[ChatWidget] Initial load - storedConvId:",D,"key:",e.conversationIdKey),console.log("[ChatWidget] apiPaths.conversations:",e.apiPaths.conversations),D&&(console.log("[ChatWidget] Loading conversation:",D),C.loadConversation(D))},[]),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 T=x(async()=>{if(e.showConversationSidebar){m(!0);try{let D=E.agentKey,Z=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(D)}`,ee=await fetch(Z,N.getFetchOptions({method:"GET"}));if(ee.ok){let Y=await ee.json();h(Y.results||Y)}}catch(D){console.error("[ChatWidget] Failed to load conversations:",D),h([])}finally{m(!1)}}},[e,E,N]),y=x(()=>{let D=!p;r(D),D&&T()},[p,T]),R=x(D=>{D!==C.conversationId&&C.loadConversation(D),r(!1)},[C]),K=x(()=>{C.clearMessages(),r(!1)},[C]),g=x(D=>{C.sendMessage(D,{model:M.selectedModel,thinking:M.thinkingEnabled&&M.supportsThinking(),onAssistantMessage:Z=>{}})},[C,k,M.selectedModel,M.thinkingEnabled,M.supportsThinking]),A=x(D=>{b(D),D==="tasks"&&I.loadTaskList()},[I]);if(B(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:D=>g(D),clearMessages:()=>C.clearMessages(),toggleTTS:()=>$(D=>!D),stopSpeech:()=>q(!1),setAuth:D=>{D.token!==void 0&&j(D.token)},clearAuth:()=>j(null)})},[C,s,g]),!e.embedded&&!a)return i`
|
|
684
685
|
<button
|
|
685
686
|
class="cw-fab"
|
|
686
687
|
style=${{backgroundColor:e.primaryColor}}
|
|
@@ -690,39 +691,39 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
690
691
|
<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>
|
|
691
692
|
</svg>
|
|
692
693
|
</button>
|
|
693
|
-
`;let V=["cw-widget",l&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" "),X=e.headerTextColor||St(e.primaryColor);return
|
|
694
|
+
`;let V=["cw-widget",l&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" "),X=e.headerTextColor||St(e.primaryColor);return i`
|
|
694
695
|
<div class=${V} style=${{"--cw-primary":e.primaryColor,"--cw-header-text":X}}>
|
|
695
|
-
${e.showConversationSidebar&&
|
|
696
|
+
${e.showConversationSidebar&&i`
|
|
696
697
|
<${Rt}
|
|
697
|
-
isOpen=${
|
|
698
|
-
conversations=${
|
|
698
|
+
isOpen=${p}
|
|
699
|
+
conversations=${_}
|
|
699
700
|
conversationsLoading=${v}
|
|
700
701
|
currentConversationId=${C.conversationId}
|
|
701
702
|
onClose=${()=>r(!1)}
|
|
702
|
-
onNewConversation=${
|
|
703
|
-
onSwitchConversation=${
|
|
703
|
+
onNewConversation=${K}
|
|
704
|
+
onSwitchConversation=${R}
|
|
704
705
|
/>
|
|
705
706
|
`}
|
|
706
707
|
|
|
707
|
-
${e.showHeader!==!1&&
|
|
708
|
+
${e.showHeader!==!1&&i`
|
|
708
709
|
<${Tt}
|
|
709
710
|
config=${e}
|
|
710
711
|
debugMode=${d}
|
|
711
712
|
isExpanded=${l}
|
|
712
|
-
isSpeaking=${
|
|
713
|
+
isSpeaking=${O}
|
|
713
714
|
messagesCount=${C.messages.length}
|
|
714
715
|
isLoading=${C.isLoading}
|
|
715
|
-
currentAgent=${
|
|
716
|
+
currentAgent=${P}
|
|
716
717
|
onClose=${()=>o(!1)}
|
|
717
718
|
onToggleExpand=${()=>c(!l)}
|
|
718
|
-
onToggleDebug=${()=>
|
|
719
|
+
onToggleDebug=${()=>u(!d)}
|
|
719
720
|
onToggleTTS=${()=>$(!k)}
|
|
720
721
|
onClear=${C.clearMessages}
|
|
721
|
-
onToggleSidebar=${
|
|
722
|
+
onToggleSidebar=${y}
|
|
722
723
|
/>
|
|
723
724
|
`}
|
|
724
725
|
|
|
725
|
-
${e.showDevTools&&
|
|
726
|
+
${e.showDevTools&&i`
|
|
726
727
|
<${Ht}
|
|
727
728
|
systems=${w.systems}
|
|
728
729
|
agents=${w.agents}
|
|
@@ -738,7 +739,7 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
738
739
|
/>
|
|
739
740
|
`}
|
|
740
741
|
|
|
741
|
-
${e.showTasksTab!==!1&&
|
|
742
|
+
${e.showTasksTab!==!1&&i`
|
|
742
743
|
<div class="cw-tabs">
|
|
743
744
|
<button
|
|
744
745
|
class=${`cw-tab ${f==="chat"?"cw-tab-active":""}`}
|
|
@@ -750,14 +751,14 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
750
751
|
class=${`cw-tab ${f==="tasks"?"cw-tab-active":""}`}
|
|
751
752
|
onClick=${()=>A("tasks")}
|
|
752
753
|
>
|
|
753
|
-
Tasks ${
|
|
754
|
+
Tasks ${I.progress.total>0?i`<span class="cw-tab-badge">${I.progress.completed}/${I.progress.total}</span>`:""}
|
|
754
755
|
</button>
|
|
755
756
|
</div>
|
|
756
757
|
`}
|
|
757
758
|
|
|
758
|
-
${d&&
|
|
759
|
+
${d&&i`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
|
|
759
760
|
|
|
760
|
-
${f==="chat"?
|
|
761
|
+
${f==="chat"?i`
|
|
761
762
|
<${Dt}
|
|
762
763
|
messages=${C.messages}
|
|
763
764
|
isLoading=${C.isLoading}
|
|
@@ -766,15 +767,16 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
766
767
|
onLoadMore=${C.loadMoreMessages}
|
|
767
768
|
onEditMessage=${C.editMessage}
|
|
768
769
|
onRetryMessage=${C.retryMessage}
|
|
770
|
+
onSendMessage=${g}
|
|
769
771
|
debugMode=${d}
|
|
770
772
|
markdownParser=${n}
|
|
771
773
|
emptyStateTitle=${e.emptyStateTitle}
|
|
772
774
|
emptyStateMessage=${e.emptyStateMessage}
|
|
773
775
|
/>
|
|
774
776
|
|
|
775
|
-
${C.error&&
|
|
777
|
+
${C.error&&i`<div class="cw-error-bar">${C.error}</div>`}
|
|
776
778
|
|
|
777
|
-
${e.showModelSelector&&M.availableModels.length>0&&
|
|
779
|
+
${e.showModelSelector&&M.availableModels.length>0&&i`
|
|
778
780
|
<${Ft}
|
|
779
781
|
availableModels=${M.availableModels}
|
|
780
782
|
selectedModel=${M.selectedModel}
|
|
@@ -794,20 +796,20 @@ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Yt=Object.getOwnProp
|
|
|
794
796
|
enableVoice=${e.enableVoice}
|
|
795
797
|
enableFiles=${e.showFileAttachment!==!1}
|
|
796
798
|
/>
|
|
797
|
-
`:
|
|
799
|
+
`:i`
|
|
798
800
|
<${Ot}
|
|
799
|
-
tasks=${
|
|
800
|
-
progress=${
|
|
801
|
-
isLoading=${
|
|
802
|
-
error=${
|
|
803
|
-
onUpdate=${
|
|
804
|
-
onRemove=${
|
|
805
|
-
onClear=${
|
|
806
|
-
onRefresh=${
|
|
801
|
+
tasks=${I.tasks}
|
|
802
|
+
progress=${I.progress}
|
|
803
|
+
isLoading=${I.isLoading}
|
|
804
|
+
error=${I.error}
|
|
805
|
+
onUpdate=${I.updateTask}
|
|
806
|
+
onRemove=${I.removeTask}
|
|
807
|
+
onClear=${I.clearTasks}
|
|
808
|
+
onRefresh=${I.loadTaskList}
|
|
807
809
|
/>
|
|
808
810
|
`}
|
|
809
811
|
</div>
|
|
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(
|
|
812
|
+
`}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(i`<${Jt}
|
|
811
813
|
config=${{...this.config,...t}}
|
|
812
814
|
onStateChange=${this._handleStateChange}
|
|
813
815
|
markdownParser=${xe._enhancedMarkdownParser}
|