@rubytech/taskmaster 1.0.67 → 1.0.69
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/agents/memory-search.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/config/zod-schema.agent-runtime.js +3 -1
- package/dist/control-ui/assets/{index-Uo_tQYx1.css → index-BCh3mx9Z.css} +1 -1
- package/dist/control-ui/assets/{index-8pJBjxcK.js → index-D5tMNwub.js} +237 -237
- package/dist/control-ui/assets/index-D5tMNwub.js.map +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/gateway/control-ui.js +31 -11
- package/dist/gateway/public-chat/session.js +16 -27
- package/dist/gateway/server-methods/chat.js +3 -6
- package/dist/gateway/server-methods/memory.js +2 -0
- package/dist/gateway/server-methods/public-chat.js +22 -4
- package/dist/memory/embeddings-gemini.js +55 -23
- package/dist/memory/embeddings.js +13 -16
- package/dist/memory/manager.js +18 -1
- package/package.json +1 -1
- package/taskmaster-docs/USER-GUIDE.md +2 -2
- package/dist/control-ui/assets/index-8pJBjxcK.js.map +0 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
var Mu=Object.defineProperty;var Pu=(e,t,n)=>t in e?Mu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>Pu(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();const Lu="modulepreload",Iu=function(e,t){return new URL(e,t).href},lo={},ne=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let c=function(u){return Promise.all(u.map(f=>Promise.resolve(f).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};const o=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=c(n.map(u=>{if(u=Iu(u,i),u in lo)return;lo[u]=!0;const f=u.endsWith(".css"),d=f?'[rel="stylesheet"]':"";if(i)for(let w=o.length-1;w>=0;w--){const b=o[w];if(b.href===u&&(!f||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${d}`))return;const p=document.createElement("link");if(p.rel=f?"stylesheet":Lu,f||(p.as="script"),p.crossOrigin="",p.href=u,l&&p.setAttribute("nonce",l),document.head.appendChild(p),f)return new Promise((w,b)=>{p.addEventListener("load",w),p.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${u}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return s.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return t().catch(r)})};const qn=globalThis,Xs=qn.ShadowRoot&&(qn.ShadyCSS===void 0||qn.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Zs=Symbol(),co=new WeakMap;let el=class{constructor(t,n,i){if(this._$cssResult$=!0,i!==Zs)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=n}get styleSheet(){let t=this.o;const n=this.t;if(Xs&&t===void 0){const i=n!==void 0&&n.length===1;i&&(t=co.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&co.set(n,t))}return t}toString(){return this.cssText}};const Ru=e=>new el(typeof e=="string"?e:e+"",void 0,Zs),Nu=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((i,s,r)=>i+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[r+1],e[0]);return new el(n,e,Zs)},Du=(e,t)=>{if(Xs)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const i=document.createElement("style"),s=qn.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=n.cssText,e.appendChild(i)}},uo=Xs?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const i of t.cssRules)n+=i.cssText;return Ru(n)})(e):e;const{is:Ou,defineProperty:Bu,getOwnPropertyDescriptor:Fu,getOwnPropertyNames:Uu,getOwnPropertySymbols:Wu,getPrototypeOf:Ku}=Object,Ue=globalThis,po=Ue.trustedTypes,zu=po?po.emptyScript:"",Ki=Ue.reactiveElementPolyfillSupport,Jt=(e,t)=>e,Xn={toAttribute(e,t){switch(t){case Boolean:e=e?zu:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Js=(e,t)=>!Ou(e,t),ho={attribute:!0,type:String,converter:Xn,reflect:!1,useDefault:!1,hasChanged:Js};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Ue.litPropertyMetadata??(Ue.litPropertyMetadata=new WeakMap);let wt=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,n=ho){if(n.state&&(n.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((n=Object.create(n)).wrapped=!0),this.elementProperties.set(t,n),!n.noAccessor){const i=Symbol(),s=this.getPropertyDescriptor(t,i,n);s!==void 0&&Bu(this.prototype,t,s)}}static getPropertyDescriptor(t,n,i){const{get:s,set:r}=Fu(this.prototype,t)??{get(){return this[n]},set(o){this[n]=o}};return{get:s,set(o){const a=s==null?void 0:s.call(this);r==null||r.call(this,o),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??ho}static _$Ei(){if(this.hasOwnProperty(Jt("elementProperties")))return;const t=Ku(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Jt("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Jt("properties"))){const n=this.properties,i=[...Uu(n),...Wu(n)];for(const s of i)this.createProperty(s,n[s])}const t=this[Symbol.metadata];if(t!==null){const n=litPropertyMetadata.get(t);if(n!==void 0)for(const[i,s]of n)this.elementProperties.set(i,s)}this._$Eh=new Map;for(const[n,i]of this.elementProperties){const s=this._$Eu(n,i);s!==void 0&&this._$Eh.set(s,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const n=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const s of i)n.unshift(uo(s))}else t!==void 0&&n.push(uo(t));return n}static _$Eu(t,n){const i=n.attribute;return i===!1?void 0:typeof i=="string"?i:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(n=>n(this))}addController(t){var n;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((n=t.hostConnected)==null||n.call(t))}removeController(t){var n;(n=this._$EO)==null||n.delete(t)}_$E_(){const t=new Map,n=this.constructor.elementProperties;for(const i of n.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Du(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostConnected)==null?void 0:i.call(n)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostDisconnected)==null?void 0:i.call(n)})}attributeChangedCallback(t,n,i){this._$AK(t,i)}_$ET(t,n){var r;const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(s!==void 0&&i.reflect===!0){const o=(((r=i.converter)==null?void 0:r.toAttribute)!==void 0?i.converter:Xn).toAttribute(n,i.type);this._$Em=t,o==null?this.removeAttribute(s):this.setAttribute(s,o),this._$Em=null}}_$AK(t,n){var r,o;const i=this.constructor,s=i._$Eh.get(t);if(s!==void 0&&this._$Em!==s){const a=i.getPropertyOptions(s),l=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)==null?void 0:r.fromAttribute)!==void 0?a.converter:Xn;this._$Em=s;const c=l.fromAttribute(n,a.type);this[s]=c??((o=this._$Ej)==null?void 0:o.get(s))??c,this._$Em=null}}requestUpdate(t,n,i,s=!1,r){var o;if(t!==void 0){const a=this.constructor;if(s===!1&&(r=this[t]),i??(i=a.getPropertyOptions(t)),!((i.hasChanged??Js)(r,n)||i.useDefault&&i.reflect&&r===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,i))))return;this.C(t,n,i)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,n,{useDefault:i,reflect:s,wrapped:r},o){i&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??n??this[t]),r!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||i||(n=void 0),this._$AL.set(t,n)),s===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(n){Promise.reject(n)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[r,o]of s){const{wrapped:a}=o,l=this[r];a!==!0||this._$AL.has(r)||l===void 0||this.C(r,void 0,o,l)}}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(i=this._$EO)==null||i.forEach(s=>{var r;return(r=s.hostUpdate)==null?void 0:r.call(s)}),this.update(n)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(n)}willUpdate(t){}_$AE(t){var n;(n=this._$EO)==null||n.forEach(i=>{var s;return(s=i.hostUpdated)==null?void 0:s.call(i)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(n=>this._$ET(n,this[n]))),this._$EM()}updated(t){}firstUpdated(t){}};wt.elementStyles=[],wt.shadowRootOptions={mode:"open"},wt[Jt("elementProperties")]=new Map,wt[Jt("finalized")]=new Map,Ki==null||Ki({ReactiveElement:wt}),(Ue.reactiveElementVersions??(Ue.reactiveElementVersions=[])).push("2.1.2");const en=globalThis,fo=e=>e,Zn=en.trustedTypes,go=Zn?Zn.createPolicy("lit-html",{createHTML:e=>e}):void 0,tl="$lit$",Fe=`lit$${Math.random().toFixed(9).slice(2)}$`,nl="?"+Fe,ju=`<${nl}>`,tt=document,cn=()=>tt.createComment(""),un=e=>e===null||typeof e!="object"&&typeof e!="function",er=Array.isArray,Hu=e=>er(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",zi=`[
|
|
2
|
-
\f\r]`,Ft=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,
|
|
3
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),vo=/'/g,bo=/"/g,il=/^(?:script|style|textarea|title)$/i,qu=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),h=qu(1),Ke=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),wo=new WeakMap,Ze=tt.createTreeWalker(tt,129);function sl(e,t){if(!er(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return go!==void 0?go.createHTML(t):t}const Vu=(e,t)=>{const n=e.length-1,i=[];let s,r=t===2?"<svg>":t===3?"<math>":"",o=Ft;for(let a=0;a<n;a++){const l=e[a];let c,u,f=-1,d=0;for(;d<l.length&&(o.lastIndex=d,u=o.exec(l),u!==null);)d=o.lastIndex,o===Ft?u[1]==="!--"?o=mo:u[1]!==void 0?o=yo:u[2]!==void 0?(il.test(u[2])&&(s=RegExp("</"+u[2],"g")),o=Qe):u[3]!==void 0&&(o=Qe):o===Qe?u[0]===">"?(o=s??Ft,f=-1):u[1]===void 0?f=-2:(f=o.lastIndex-u[2].length,c=u[1],o=u[3]===void 0?Qe:u[3]==='"'?bo:vo):o===bo||o===vo?o=Qe:o===mo||o===yo?o=Ft:(o=Qe,s=void 0);const p=o===Qe&&e[a+1].startsWith("/>")?" ":"";r+=o===Ft?l+ju:f>=0?(i.push(c),l.slice(0,f)+tl+l.slice(f)+Fe+p):l+Fe+(f===-2?a:p)}return[sl(e,r+(e[n]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),i]};let As=class rl{constructor({strings:t,_$litType$:n},i){let s;this.parts=[];let r=0,o=0;const a=t.length-1,l=this.parts,[c,u]=Vu(t,n);if(this.el=rl.createElement(c,i),Ze.currentNode=this.el.content,n===2||n===3){const f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(s=Ze.nextNode())!==null&&l.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const f of s.getAttributeNames())if(f.endsWith(tl)){const d=u[o++],p=s.getAttribute(f).split(Fe),w=/([.?@])?(.*)/.exec(d);l.push({type:1,index:r,name:w[2],strings:p,ctor:w[1]==="."?Qu:w[1]==="?"?Yu:w[1]==="@"?Xu:vi}),s.removeAttribute(f)}else f.startsWith(Fe)&&(l.push({type:6,index:r}),s.removeAttribute(f));if(il.test(s.tagName)){const f=s.textContent.split(Fe),d=f.length-1;if(d>0){s.textContent=Zn?Zn.emptyScript:"";for(let p=0;p<d;p++)s.append(f[p],cn()),Ze.nextNode(),l.push({type:2,index:++r});s.append(f[d],cn())}}}else if(s.nodeType===8)if(s.data===nl)l.push({type:2,index:r});else{let f=-1;for(;(f=s.data.indexOf(Fe,f+1))!==-1;)l.push({type:7,index:r}),f+=Fe.length-1}r++}}static createElement(t,n){const i=tt.createElement("template");return i.innerHTML=t,i}};function Et(e,t,n=e,i){var o,a;if(t===Ke)return t;let s=i!==void 0?(o=n._$Co)==null?void 0:o[i]:n._$Cl;const r=un(t)?void 0:t._$litDirective$;return(s==null?void 0:s.constructor)!==r&&((a=s==null?void 0:s._$AO)==null||a.call(s,!1),r===void 0?s=void 0:(s=new r(e),s._$AT(e,n,i)),i!==void 0?(n._$Co??(n._$Co=[]))[i]=s:n._$Cl=s),s!==void 0&&(t=Et(e,s._$AS(e,t.values),s,i)),t}class Gu{constructor(t,n){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:n},parts:i}=this._$AD,s=((t==null?void 0:t.creationScope)??tt).importNode(n,!0);Ze.currentNode=s;let r=Ze.nextNode(),o=0,a=0,l=i[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new yi(r,r.nextSibling,this,t):l.type===1?c=new l.ctor(r,l.name,l.strings,this,t):l.type===6&&(c=new Zu(r,this,t)),this._$AV.push(c),l=i[++a]}o!==(l==null?void 0:l.index)&&(r=Ze.nextNode(),o++)}return Ze.currentNode=tt,s}p(t){let n=0;for(const i of this._$AV)i!==void 0&&(i.strings!==void 0?(i._$AI(t,i,n),n+=i.strings.length-2):i._$AI(t[n])),n++}}let yi=class ol{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,n,i,s){this.type=2,this._$AH=k,this._$AN=void 0,this._$AA=t,this._$AB=n,this._$AM=i,this.options=s,this._$Cv=(s==null?void 0:s.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=n.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,n=this){t=Et(this,t,n),un(t)?t===k||t==null||t===""?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==Ke&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):Hu(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==k&&un(this._$AH)?this._$AA.nextSibling.data=t:this.T(tt.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:i}=t,s=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=As.createElement(sl(i.h,i.h[0]),this.options)),i);if(((r=this._$AH)==null?void 0:r._$AD)===s)this._$AH.p(n);else{const o=new Gu(s,this),a=o.u(this.options);o.p(n),this.T(a),this._$AH=o}}_$AC(t){let n=wo.get(t.strings);return n===void 0&&wo.set(t.strings,n=new As(t)),n}k(t){er(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let i,s=0;for(const r of t)s===n.length?n.push(i=new ol(this.O(cn()),this.O(cn()),this,this.options)):i=n[s],i._$AI(r),s++;s<n.length&&(this._$AR(i&&i._$AB.nextSibling,s),n.length=s)}_$AR(t=this._$AA.nextSibling,n){var i;for((i=this._$AP)==null?void 0:i.call(this,!1,!0,n);t!==this._$AB;){const s=fo(t).nextSibling;fo(t).remove(),t=s}}setConnected(t){var n;this._$AM===void 0&&(this._$Cv=t,(n=this._$AP)==null||n.call(this,t))}};class vi{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,n,i,s,r){this.type=1,this._$AH=k,this._$AN=void 0,this.element=t,this.name=n,this._$AM=s,this.options=r,i.length>2||i[0]!==""||i[1]!==""?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=k}_$AI(t,n=this,i,s){const r=this.strings;let o=!1;if(r===void 0)t=Et(this,t,n,0),o=!un(t)||t!==this._$AH&&t!==Ke,o&&(this._$AH=t);else{const a=t;let l,c;for(t=r[0],l=0;l<r.length-1;l++)c=Et(this,a[i+l],n,l),c===Ke&&(c=this._$AH[l]),o||(o=!un(c)||c!==this._$AH[l]),c===k?t=k:t!==k&&(t+=(c??"")+r[l+1]),this._$AH[l]=c}o&&!s&&this.j(t)}j(t){t===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}let Qu=class extends vi{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===k?void 0:t}},Yu=class extends vi{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==k)}},Xu=class extends vi{constructor(t,n,i,s,r){super(t,n,i,s,r),this.type=5}_$AI(t,n=this){if((t=Et(this,t,n,0)??k)===Ke)return;const i=this._$AH,s=t===k&&i!==k||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,r=t!==k&&(i===k||s);s&&this.element.removeEventListener(this.name,this,i),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var n;typeof this._$AH=="function"?this._$AH.call(((n=this.options)==null?void 0:n.host)??this.element,t):this._$AH.handleEvent(t)}},Zu=class{constructor(t,n,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=n,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){Et(this,t)}};const Ju={I:yi},ji=en.litHtmlPolyfillSupport;ji==null||ji(As,yi),(en.litHtmlVersions??(en.litHtmlVersions=[])).push("3.3.2");const ed=(e,t,n)=>{const i=(n==null?void 0:n.renderBefore)??t;let s=i._$litPart$;if(s===void 0){const r=(n==null?void 0:n.renderBefore)??null;i._$litPart$=s=new yi(t.insertBefore(cn(),r),r,void 0,n??{})}return s._$AI(e),s};const et=globalThis;let At=class extends wt{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const t=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=t.firstChild),t}update(t){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=ed(n,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return Ke}};var Ja;At._$litElement$=!0,At.finalized=!0,(Ja=et.litElementHydrateSupport)==null||Ja.call(et,{LitElement:At});const Hi=et.litElementPolyfillSupport;Hi==null||Hi({LitElement:At});(et.litElementVersions??(et.litElementVersions=[])).push("4.2.2");const al=e=>(t,n)=>{n!==void 0?n.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)};const td={attribute:!0,type:String,converter:Xn,reflect:!1,hasChanged:Js},nd=(e=td,t,n)=>{const{kind:i,metadata:s}=n;let r=globalThis.litPropertyMetadata.get(s);if(r===void 0&&globalThis.litPropertyMetadata.set(s,r=new Map),i==="setter"&&((e=Object.create(e)).wrapped=!0),r.set(n.name,e),i==="accessor"){const{name:o}=n;return{set(a){const l=t.get.call(this);t.set.call(this,a),this.requestUpdate(o,l,e,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,e,a),a}}}if(i==="setter"){const{name:o}=n;return function(a){const l=this[o];t.call(this,a),this.requestUpdate(o,l,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function bi(e){return(t,n)=>typeof n=="object"?nd(e,t,n):((i,s,r)=>{const o=s.hasOwnProperty(r);return s.constructor.createProperty(r,i),o?Object.getOwnPropertyDescriptor(s,r):void 0})(e,t,n)}function y(e){return bi({...e,state:!0,attribute:!1})}const id=50,sd=200,rd="Assistant";function ko(e,t){if(typeof e!="string")return;const n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}function $s(e){const t=ko(e==null?void 0:e.name,id)??rd,n=ko((e==null?void 0:e.avatar)??void 0,sd)??null;return{agentId:typeof(e==null?void 0:e.agentId)=="string"&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}function od(){return $s(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const Jn="taskmaster.control.settings.v1",ll="taskmaster.account.settings.";function tn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const bt={gatewayUrl:tn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},Be={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function ad(){try{const e=localStorage.getItem(Jn);if(!e)return{...bt,gatewayUrl:tn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():tn(),token:typeof t.token=="string"?t.token:bt.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:bt.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:bt.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:bt.navGroupsCollapsed}}catch{return{...bt,gatewayUrl:tn()}}}function ld(e){if(!e)return{...Be};try{const t=localStorage.getItem(ll+e);if(!t)return{...Be};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():Be.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||Be.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:Be.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:Be.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:Be.splitRatio}}catch{return{...Be}}}let ei=null;function So(e){ei=e}function qi(){return{...ad(),...ld(ei)}}function cd(e){const t={gatewayUrl:e.gatewayUrl,token:e.token,theme:e.theme,navCollapsed:e.navCollapsed,navGroupsCollapsed:e.navGroupsCollapsed};if(localStorage.setItem(Jn,JSON.stringify(t)),ei){const n={sessionKey:e.sessionKey,lastActiveSessionKey:e.lastActiveSessionKey,chatFocusMode:e.chatFocusMode,chatShowThinking:e.chatShowThinking,splitRatio:e.splitRatio};localStorage.setItem(ll+ei,JSON.stringify(n))}}(function(){try{const t=localStorage.getItem(Jn);if(!t)return;const n=JSON.parse(t);if(!("sessionKey"in n))return;const i={gatewayUrl:typeof n.gatewayUrl=="string"?n.gatewayUrl:tn(),token:typeof n.token=="string"?n.token:"",theme:n.theme==="light"||n.theme==="dark"||n.theme==="system"?n.theme:"system",navCollapsed:typeof n.navCollapsed=="boolean"?n.navCollapsed:!1,navGroupsCollapsed:typeof n.navGroupsCollapsed=="object"&&n.navGroupsCollapsed!==null?n.navGroupsCollapsed:{}};localStorage.setItem(Jn,JSON.stringify(i))}catch{}})();function cl(e){var r;const t=(e??"").trim();if(!t)return null;const n=t.split(":").filter(Boolean);if(n.length<3||n[0]!=="agent")return null;const i=(r=n[1])==null?void 0:r.trim(),s=n.slice(2).join(":");return!i||!s?null:{agentId:i,rest:s}}const ud=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,Pn=/<\s*\/?\s*final\b[^>]*>/gi,Ao=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^>]*>/gi;function dd(e,t){return e.trimStart()}function pd(e,t){if(!e||!ud.test(e))return e;let n=e;Pn.test(n)?(Pn.lastIndex=0,n=n.replace(Pn,"")):Pn.lastIndex=0,Ao.lastIndex=0;let i="",s=0,r=!1;for(const o of n.matchAll(Ao)){const a=o.index??0,l=o[1]==="/";r?l&&(r=!1):(i+=n.slice(s,a),l||(r=!0)),s=a+o[0].length}return i+=n.slice(s),dd(i)}function ul(e){return!e&&e!==0?"n/a":new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"})}function wi(e){if(!e&&e!==0)return"n/a";const t=Date.now()-e;if(t<0){const o=-t,a=Math.round(o/1e3);if(a<60)return`in ${a}s`;const l=Math.round(a/60);if(l<60)return`in ${l}m`;const c=Math.round(l/60);return c<48?`in ${c}h`:`in ${Math.round(c/24)}d`}const n=Math.round(t/1e3);if(n<60)return`${n}s ago`;const i=Math.round(n/60);if(i<60)return`${i}m ago`;const s=Math.round(i/60);return s<48?`${s}h ago`:`${Math.round(s/24)}d ago`}function dl(e){if(!e&&e!==0)return"n/a";if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.round(t/60);if(n<60)return`${n}m`;const i=Math.round(n/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function hd(e,t=120){return e.length<=t?e:`${e.slice(0,Math.max(0,t-1))}…`}function pl(e,t){return e.length<=t?{text:e,truncated:!1,total:e.length}:{text:e.slice(0,Math.max(0,t)),truncated:!0,total:e.length}}function ti(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function Vi(e){return pd(e)}const fd=/^\[([^\]]+)\]\s*/,gd=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],Gi=new WeakMap,Qi=new WeakMap;function md(e){return/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z\b/.test(e)||/\d{4}-\d{2}-\d{2} \d{2}:\d{2}\b/.test(e)?!0:gd.some(t=>e.startsWith(`${t} `))}function Yi(e){const t=e.match(fd);if(!t)return e;const n=t[1]??"";return md(n)?e.slice(t[0].length):e}function nn(e){const t=e,n=typeof t.role=="string"?t.role:"",i=t.content;if(typeof i=="string")return n==="assistant"?Vi(i):Yi(i);if(Array.isArray(i)){const s=i.map(r=>{const o=r;return o.type==="text"&&typeof o.text=="string"?o.text:null}).filter(r=>typeof r=="string");if(s.length>0){const r=s.join(`
|
|
4
|
-
`);return n==="assistant"?Vi(r):Yi(r)}}return typeof t.text=="string"?n==="assistant"?Vi(t.text):Yi(t.text):null}function
|
|
5
|
-
`);const s=
|
|
6
|
-
`):null}function
|
|
7
|
-
`)}return typeof t.text=="string"?t.text:null}function
|
|
8
|
-
`):""}const
|
|
1
|
+
var _u=Object.defineProperty;var Mu=(e,t,n)=>t in e?_u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>Mu(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();const Pu="modulepreload",Lu=function(e,t){return new URL(e,t).href},ao={},ne=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let c=function(d){return Promise.all(d.map(f=>Promise.resolve(f).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};const o=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=c(n.map(d=>{if(d=Lu(d,i),d in ao)return;ao[d]=!0;const f=d.endsWith(".css"),u=f?'[rel="stylesheet"]':"";if(i)for(let b=o.length-1;b>=0;b--){const w=o[b];if(w.href===d&&(!f||w.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${d}"]${u}`))return;const p=document.createElement("link");if(p.rel=f?"stylesheet":Pu,f||(p.as="script"),p.crossOrigin="",p.href=d,l&&p.setAttribute("nonce",l),document.head.appendChild(p),f)return new Promise((b,w)=>{p.addEventListener("load",b),p.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${d}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return s.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return t().catch(r)})};const qn=globalThis,Xs=qn.ShadowRoot&&(qn.ShadyCSS===void 0||qn.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Zs=Symbol(),lo=new WeakMap;let Ja=class{constructor(t,n,i){if(this._$cssResult$=!0,i!==Zs)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=n}get styleSheet(){let t=this.o;const n=this.t;if(Xs&&t===void 0){const i=n!==void 0&&n.length===1;i&&(t=lo.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&lo.set(n,t))}return t}toString(){return this.cssText}};const Iu=e=>new Ja(typeof e=="string"?e:e+"",void 0,Zs),Ru=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((i,s,r)=>i+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[r+1],e[0]);return new Ja(n,e,Zs)},Nu=(e,t)=>{if(Xs)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const i=document.createElement("style"),s=qn.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=n.cssText,e.appendChild(i)}},co=Xs?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const i of t.cssRules)n+=i.cssText;return Iu(n)})(e):e;const{is:Du,defineProperty:Ou,getOwnPropertyDescriptor:Bu,getOwnPropertyNames:Fu,getOwnPropertySymbols:Uu,getPrototypeOf:Wu}=Object,Ue=globalThis,uo=Ue.trustedTypes,Ku=uo?uo.emptyScript:"",Ki=Ue.reactiveElementPolyfillSupport,Jt=(e,t)=>e,Xn={toAttribute(e,t){switch(t){case Boolean:e=e?Ku:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Js=(e,t)=>!Du(e,t),po={attribute:!0,type:String,converter:Xn,reflect:!1,useDefault:!1,hasChanged:Js};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Ue.litPropertyMetadata??(Ue.litPropertyMetadata=new WeakMap);let wt=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,n=po){if(n.state&&(n.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((n=Object.create(n)).wrapped=!0),this.elementProperties.set(t,n),!n.noAccessor){const i=Symbol(),s=this.getPropertyDescriptor(t,i,n);s!==void 0&&Ou(this.prototype,t,s)}}static getPropertyDescriptor(t,n,i){const{get:s,set:r}=Bu(this.prototype,t)??{get(){return this[n]},set(o){this[n]=o}};return{get:s,set(o){const a=s==null?void 0:s.call(this);r==null||r.call(this,o),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??po}static _$Ei(){if(this.hasOwnProperty(Jt("elementProperties")))return;const t=Wu(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Jt("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Jt("properties"))){const n=this.properties,i=[...Fu(n),...Uu(n)];for(const s of i)this.createProperty(s,n[s])}const t=this[Symbol.metadata];if(t!==null){const n=litPropertyMetadata.get(t);if(n!==void 0)for(const[i,s]of n)this.elementProperties.set(i,s)}this._$Eh=new Map;for(const[n,i]of this.elementProperties){const s=this._$Eu(n,i);s!==void 0&&this._$Eh.set(s,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const n=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const s of i)n.unshift(co(s))}else t!==void 0&&n.push(co(t));return n}static _$Eu(t,n){const i=n.attribute;return i===!1?void 0:typeof i=="string"?i:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(n=>n(this))}addController(t){var n;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((n=t.hostConnected)==null||n.call(t))}removeController(t){var n;(n=this._$EO)==null||n.delete(t)}_$E_(){const t=new Map,n=this.constructor.elementProperties;for(const i of n.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Nu(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostConnected)==null?void 0:i.call(n)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostDisconnected)==null?void 0:i.call(n)})}attributeChangedCallback(t,n,i){this._$AK(t,i)}_$ET(t,n){var r;const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(s!==void 0&&i.reflect===!0){const o=(((r=i.converter)==null?void 0:r.toAttribute)!==void 0?i.converter:Xn).toAttribute(n,i.type);this._$Em=t,o==null?this.removeAttribute(s):this.setAttribute(s,o),this._$Em=null}}_$AK(t,n){var r,o;const i=this.constructor,s=i._$Eh.get(t);if(s!==void 0&&this._$Em!==s){const a=i.getPropertyOptions(s),l=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)==null?void 0:r.fromAttribute)!==void 0?a.converter:Xn;this._$Em=s;const c=l.fromAttribute(n,a.type);this[s]=c??((o=this._$Ej)==null?void 0:o.get(s))??c,this._$Em=null}}requestUpdate(t,n,i,s=!1,r){var o;if(t!==void 0){const a=this.constructor;if(s===!1&&(r=this[t]),i??(i=a.getPropertyOptions(t)),!((i.hasChanged??Js)(r,n)||i.useDefault&&i.reflect&&r===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,i))))return;this.C(t,n,i)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,n,{useDefault:i,reflect:s,wrapped:r},o){i&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??n??this[t]),r!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||i||(n=void 0),this._$AL.set(t,n)),s===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(n){Promise.reject(n)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[r,o]of s){const{wrapped:a}=o,l=this[r];a!==!0||this._$AL.has(r)||l===void 0||this.C(r,void 0,o,l)}}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(i=this._$EO)==null||i.forEach(s=>{var r;return(r=s.hostUpdate)==null?void 0:r.call(s)}),this.update(n)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(n)}willUpdate(t){}_$AE(t){var n;(n=this._$EO)==null||n.forEach(i=>{var s;return(s=i.hostUpdated)==null?void 0:s.call(i)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(n=>this._$ET(n,this[n]))),this._$EM()}updated(t){}firstUpdated(t){}};wt.elementStyles=[],wt.shadowRootOptions={mode:"open"},wt[Jt("elementProperties")]=new Map,wt[Jt("finalized")]=new Map,Ki==null||Ki({ReactiveElement:wt}),(Ue.reactiveElementVersions??(Ue.reactiveElementVersions=[])).push("2.1.2");const en=globalThis,ho=e=>e,Zn=en.trustedTypes,fo=Zn?Zn.createPolicy("lit-html",{createHTML:e=>e}):void 0,el="$lit$",Fe=`lit$${Math.random().toFixed(9).slice(2)}$`,tl="?"+Fe,zu=`<${tl}>`,tt=document,cn=()=>tt.createComment(""),un=e=>e===null||typeof e!="object"&&typeof e!="function",er=Array.isArray,ju=e=>er(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",zi=`[
|
|
2
|
+
\f\r]`,Ft=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,go=/-->/g,mo=/>/g,Qe=RegExp(`>|${zi}(?:([^\\s"'>=/]+)(${zi}*=${zi}*(?:[^
|
|
3
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),yo=/'/g,vo=/"/g,nl=/^(?:script|style|textarea|title)$/i,Hu=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),h=Hu(1),Ke=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),bo=new WeakMap,Ze=tt.createTreeWalker(tt,129);function il(e,t){if(!er(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return fo!==void 0?fo.createHTML(t):t}const qu=(e,t)=>{const n=e.length-1,i=[];let s,r=t===2?"<svg>":t===3?"<math>":"",o=Ft;for(let a=0;a<n;a++){const l=e[a];let c,d,f=-1,u=0;for(;u<l.length&&(o.lastIndex=u,d=o.exec(l),d!==null);)u=o.lastIndex,o===Ft?d[1]==="!--"?o=go:d[1]!==void 0?o=mo:d[2]!==void 0?(nl.test(d[2])&&(s=RegExp("</"+d[2],"g")),o=Qe):d[3]!==void 0&&(o=Qe):o===Qe?d[0]===">"?(o=s??Ft,f=-1):d[1]===void 0?f=-2:(f=o.lastIndex-d[2].length,c=d[1],o=d[3]===void 0?Qe:d[3]==='"'?vo:yo):o===vo||o===yo?o=Qe:o===go||o===mo?o=Ft:(o=Qe,s=void 0);const p=o===Qe&&e[a+1].startsWith("/>")?" ":"";r+=o===Ft?l+zu:f>=0?(i.push(c),l.slice(0,f)+el+l.slice(f)+Fe+p):l+Fe+(f===-2?a:p)}return[il(e,r+(e[n]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),i]};let As=class sl{constructor({strings:t,_$litType$:n},i){let s;this.parts=[];let r=0,o=0;const a=t.length-1,l=this.parts,[c,d]=qu(t,n);if(this.el=sl.createElement(c,i),Ze.currentNode=this.el.content,n===2||n===3){const f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(s=Ze.nextNode())!==null&&l.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const f of s.getAttributeNames())if(f.endsWith(el)){const u=d[o++],p=s.getAttribute(f).split(Fe),b=/([.?@])?(.*)/.exec(u);l.push({type:1,index:r,name:b[2],strings:p,ctor:b[1]==="."?Gu:b[1]==="?"?Qu:b[1]==="@"?Yu:vi}),s.removeAttribute(f)}else f.startsWith(Fe)&&(l.push({type:6,index:r}),s.removeAttribute(f));if(nl.test(s.tagName)){const f=s.textContent.split(Fe),u=f.length-1;if(u>0){s.textContent=Zn?Zn.emptyScript:"";for(let p=0;p<u;p++)s.append(f[p],cn()),Ze.nextNode(),l.push({type:2,index:++r});s.append(f[u],cn())}}}else if(s.nodeType===8)if(s.data===tl)l.push({type:2,index:r});else{let f=-1;for(;(f=s.data.indexOf(Fe,f+1))!==-1;)l.push({type:7,index:r}),f+=Fe.length-1}r++}}static createElement(t,n){const i=tt.createElement("template");return i.innerHTML=t,i}};function Et(e,t,n=e,i){var o,a;if(t===Ke)return t;let s=i!==void 0?(o=n._$Co)==null?void 0:o[i]:n._$Cl;const r=un(t)?void 0:t._$litDirective$;return(s==null?void 0:s.constructor)!==r&&((a=s==null?void 0:s._$AO)==null||a.call(s,!1),r===void 0?s=void 0:(s=new r(e),s._$AT(e,n,i)),i!==void 0?(n._$Co??(n._$Co=[]))[i]=s:n._$Cl=s),s!==void 0&&(t=Et(e,s._$AS(e,t.values),s,i)),t}class Vu{constructor(t,n){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:n},parts:i}=this._$AD,s=((t==null?void 0:t.creationScope)??tt).importNode(n,!0);Ze.currentNode=s;let r=Ze.nextNode(),o=0,a=0,l=i[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new yi(r,r.nextSibling,this,t):l.type===1?c=new l.ctor(r,l.name,l.strings,this,t):l.type===6&&(c=new Xu(r,this,t)),this._$AV.push(c),l=i[++a]}o!==(l==null?void 0:l.index)&&(r=Ze.nextNode(),o++)}return Ze.currentNode=tt,s}p(t){let n=0;for(const i of this._$AV)i!==void 0&&(i.strings!==void 0?(i._$AI(t,i,n),n+=i.strings.length-2):i._$AI(t[n])),n++}}let yi=class rl{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,n,i,s){this.type=2,this._$AH=k,this._$AN=void 0,this._$AA=t,this._$AB=n,this._$AM=i,this.options=s,this._$Cv=(s==null?void 0:s.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=n.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,n=this){t=Et(this,t,n),un(t)?t===k||t==null||t===""?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==Ke&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):ju(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==k&&un(this._$AH)?this._$AA.nextSibling.data=t:this.T(tt.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:i}=t,s=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=As.createElement(il(i.h,i.h[0]),this.options)),i);if(((r=this._$AH)==null?void 0:r._$AD)===s)this._$AH.p(n);else{const o=new Vu(s,this),a=o.u(this.options);o.p(n),this.T(a),this._$AH=o}}_$AC(t){let n=bo.get(t.strings);return n===void 0&&bo.set(t.strings,n=new As(t)),n}k(t){er(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let i,s=0;for(const r of t)s===n.length?n.push(i=new rl(this.O(cn()),this.O(cn()),this,this.options)):i=n[s],i._$AI(r),s++;s<n.length&&(this._$AR(i&&i._$AB.nextSibling,s),n.length=s)}_$AR(t=this._$AA.nextSibling,n){var i;for((i=this._$AP)==null?void 0:i.call(this,!1,!0,n);t!==this._$AB;){const s=ho(t).nextSibling;ho(t).remove(),t=s}}setConnected(t){var n;this._$AM===void 0&&(this._$Cv=t,(n=this._$AP)==null||n.call(this,t))}};class vi{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,n,i,s,r){this.type=1,this._$AH=k,this._$AN=void 0,this.element=t,this.name=n,this._$AM=s,this.options=r,i.length>2||i[0]!==""||i[1]!==""?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=k}_$AI(t,n=this,i,s){const r=this.strings;let o=!1;if(r===void 0)t=Et(this,t,n,0),o=!un(t)||t!==this._$AH&&t!==Ke,o&&(this._$AH=t);else{const a=t;let l,c;for(t=r[0],l=0;l<r.length-1;l++)c=Et(this,a[i+l],n,l),c===Ke&&(c=this._$AH[l]),o||(o=!un(c)||c!==this._$AH[l]),c===k?t=k:t!==k&&(t+=(c??"")+r[l+1]),this._$AH[l]=c}o&&!s&&this.j(t)}j(t){t===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}let Gu=class extends vi{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===k?void 0:t}},Qu=class extends vi{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==k)}},Yu=class extends vi{constructor(t,n,i,s,r){super(t,n,i,s,r),this.type=5}_$AI(t,n=this){if((t=Et(this,t,n,0)??k)===Ke)return;const i=this._$AH,s=t===k&&i!==k||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,r=t!==k&&(i===k||s);s&&this.element.removeEventListener(this.name,this,i),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var n;typeof this._$AH=="function"?this._$AH.call(((n=this.options)==null?void 0:n.host)??this.element,t):this._$AH.handleEvent(t)}},Xu=class{constructor(t,n,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=n,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){Et(this,t)}};const Zu={I:yi},ji=en.litHtmlPolyfillSupport;ji==null||ji(As,yi),(en.litHtmlVersions??(en.litHtmlVersions=[])).push("3.3.2");const Ju=(e,t,n)=>{const i=(n==null?void 0:n.renderBefore)??t;let s=i._$litPart$;if(s===void 0){const r=(n==null?void 0:n.renderBefore)??null;i._$litPart$=s=new yi(t.insertBefore(cn(),r),r,void 0,n??{})}return s._$AI(e),s};const et=globalThis;let At=class extends wt{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const t=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=t.firstChild),t}update(t){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=Ju(n,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return Ke}};var Za;At._$litElement$=!0,At.finalized=!0,(Za=et.litElementHydrateSupport)==null||Za.call(et,{LitElement:At});const Hi=et.litElementPolyfillSupport;Hi==null||Hi({LitElement:At});(et.litElementVersions??(et.litElementVersions=[])).push("4.2.2");const ol=e=>(t,n)=>{n!==void 0?n.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)};const ed={attribute:!0,type:String,converter:Xn,reflect:!1,hasChanged:Js},td=(e=ed,t,n)=>{const{kind:i,metadata:s}=n;let r=globalThis.litPropertyMetadata.get(s);if(r===void 0&&globalThis.litPropertyMetadata.set(s,r=new Map),i==="setter"&&((e=Object.create(e)).wrapped=!0),r.set(n.name,e),i==="accessor"){const{name:o}=n;return{set(a){const l=t.get.call(this);t.set.call(this,a),this.requestUpdate(o,l,e,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,e,a),a}}}if(i==="setter"){const{name:o}=n;return function(a){const l=this[o];t.call(this,a),this.requestUpdate(o,l,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function bi(e){return(t,n)=>typeof n=="object"?td(e,t,n):((i,s,r)=>{const o=s.hasOwnProperty(r);return s.constructor.createProperty(r,i),o?Object.getOwnPropertyDescriptor(s,r):void 0})(e,t,n)}function y(e){return bi({...e,state:!0,attribute:!1})}const nd=50,id=200,sd="Assistant";function wo(e,t){if(typeof e!="string")return;const n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}function xs(e){const t=wo(e==null?void 0:e.name,nd)??sd,n=wo((e==null?void 0:e.avatar)??void 0,id)??null;return{agentId:typeof(e==null?void 0:e.agentId)=="string"&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}function rd(){return xs(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const Jn="taskmaster.control.settings.v1",al="taskmaster.account.settings.";function tn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const bt={gatewayUrl:tn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},Be={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function od(){try{const e=localStorage.getItem(Jn);if(!e)return{...bt,gatewayUrl:tn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():tn(),token:typeof t.token=="string"?t.token:bt.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:bt.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:bt.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:bt.navGroupsCollapsed}}catch{return{...bt,gatewayUrl:tn()}}}function ad(e){if(!e)return{...Be};try{const t=localStorage.getItem(al+e);if(!t)return{...Be};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():Be.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||Be.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:Be.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:Be.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:Be.splitRatio}}catch{return{...Be}}}let ei=null;function ko(e){ei=e}function qi(){return{...od(),...ad(ei)}}function ld(e){const t={gatewayUrl:e.gatewayUrl,token:e.token,theme:e.theme,navCollapsed:e.navCollapsed,navGroupsCollapsed:e.navGroupsCollapsed};if(localStorage.setItem(Jn,JSON.stringify(t)),ei){const n={sessionKey:e.sessionKey,lastActiveSessionKey:e.lastActiveSessionKey,chatFocusMode:e.chatFocusMode,chatShowThinking:e.chatShowThinking,splitRatio:e.splitRatio};localStorage.setItem(al+ei,JSON.stringify(n))}}(function(){try{const t=localStorage.getItem(Jn);if(!t)return;const n=JSON.parse(t);if(!("sessionKey"in n))return;const i={gatewayUrl:typeof n.gatewayUrl=="string"?n.gatewayUrl:tn(),token:typeof n.token=="string"?n.token:"",theme:n.theme==="light"||n.theme==="dark"||n.theme==="system"?n.theme:"system",navCollapsed:typeof n.navCollapsed=="boolean"?n.navCollapsed:!1,navGroupsCollapsed:typeof n.navGroupsCollapsed=="object"&&n.navGroupsCollapsed!==null?n.navGroupsCollapsed:{}};localStorage.setItem(Jn,JSON.stringify(i))}catch{}})();function ll(e){var r;const t=(e??"").trim();if(!t)return null;const n=t.split(":").filter(Boolean);if(n.length<3||n[0]!=="agent")return null;const i=(r=n[1])==null?void 0:r.trim(),s=n.slice(2).join(":");return!i||!s?null:{agentId:i,rest:s}}const cd=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,Pn=/<\s*\/?\s*final\b[^>]*>/gi,So=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^>]*>/gi;function ud(e,t){return e.trimStart()}function dd(e,t){if(!e||!cd.test(e))return e;let n=e;Pn.test(n)?(Pn.lastIndex=0,n=n.replace(Pn,"")):Pn.lastIndex=0,So.lastIndex=0;let i="",s=0,r=!1;for(const o of n.matchAll(So)){const a=o.index??0,l=o[1]==="/";r?l&&(r=!1):(i+=n.slice(s,a),l||(r=!0)),s=a+o[0].length}return i+=n.slice(s),ud(i)}function cl(e){return!e&&e!==0?"n/a":new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"})}function wi(e){if(!e&&e!==0)return"n/a";const t=Date.now()-e;if(t<0){const o=-t,a=Math.round(o/1e3);if(a<60)return`in ${a}s`;const l=Math.round(a/60);if(l<60)return`in ${l}m`;const c=Math.round(l/60);return c<48?`in ${c}h`:`in ${Math.round(c/24)}d`}const n=Math.round(t/1e3);if(n<60)return`${n}s ago`;const i=Math.round(n/60);if(i<60)return`${i}m ago`;const s=Math.round(i/60);return s<48?`${s}h ago`:`${Math.round(s/24)}d ago`}function ul(e){if(!e&&e!==0)return"n/a";if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.round(t/60);if(n<60)return`${n}m`;const i=Math.round(n/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function pd(e,t=120){return e.length<=t?e:`${e.slice(0,Math.max(0,t-1))}…`}function dl(e,t){return e.length<=t?{text:e,truncated:!1,total:e.length}:{text:e.slice(0,Math.max(0,t)),truncated:!0,total:e.length}}function ti(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function Vi(e){return dd(e)}const hd=/^\[([^\]]+)\]\s*/,fd=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],Gi=new WeakMap,Qi=new WeakMap;function gd(e){return/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z\b/.test(e)||/\d{4}-\d{2}-\d{2} \d{2}:\d{2}\b/.test(e)?!0:fd.some(t=>e.startsWith(`${t} `))}function Yi(e){const t=e.match(hd);if(!t)return e;const n=t[1]??"";return gd(n)?e.slice(t[0].length):e}function nn(e){const t=e,n=typeof t.role=="string"?t.role:"",i=t.content;if(typeof i=="string")return n==="assistant"?Vi(i):Yi(i);if(Array.isArray(i)){const s=i.map(r=>{const o=r;return o.type==="text"&&typeof o.text=="string"?o.text:null}).filter(r=>typeof r=="string");if(s.length>0){const r=s.join(`
|
|
4
|
+
`);return n==="assistant"?Vi(r):Yi(r)}}return typeof t.text=="string"?n==="assistant"?Vi(t.text):Yi(t.text):null}function pl(e){if(!e||typeof e!="object")return nn(e);const t=e;if(Gi.has(t))return Gi.get(t)??null;const n=nn(e);return Gi.set(t,n),n}function Ao(e){const n=e.content,i=[];if(Array.isArray(n))for(const a of n){const l=a;if(l.type==="thinking"&&typeof l.thinking=="string"){const c=l.thinking.trim();c&&i.push(c)}}if(i.length>0)return i.join(`
|
|
5
|
+
`);const s=yd(e);if(!s)return null;const o=[...s.matchAll(/<\s*think(?:ing)?\s*>([\s\S]*?)<\s*\/\s*think(?:ing)?\s*>/gi)].map(a=>(a[1]??"").trim()).filter(Boolean);return o.length>0?o.join(`
|
|
6
|
+
`):null}function md(e){if(!e||typeof e!="object")return Ao(e);const t=e;if(Qi.has(t))return Qi.get(t)??null;const n=Ao(e);return Qi.set(t,n),n}function yd(e){const t=e,n=t.content;if(typeof n=="string")return n;if(Array.isArray(n)){const i=n.map(s=>{const r=s;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(s=>typeof s=="string");if(i.length>0)return i.join(`
|
|
7
|
+
`)}return typeof t.text=="string"?t.text:null}function vd(e){const t=e.trim();if(!t)return"";const n=t.split(/\r?\n/).map(i=>i.trim()).filter(Boolean).map(i=>`_${i}_`);return n.length?["_Reasoning:_",...n].join(`
|
|
8
|
+
`):""}const bd=/Read HEARTBEAT\.md if it exists|reply HEARTBEAT_OK/i,wd=/^[\s*`_]*HEARTBEAT_OK[\s*`_]*$/i,kd=/^[\s*`_]*NO_REPLY[\s*`_]*$/i,Sd=/^A new session was started via \/new or \/reset\./;function Ad(e){const t=e,n=typeof t.role=="string"?t.role:"";let i="";typeof t.content=="string"?i=t.content:Array.isArray(t.content)?i=t.content.filter(r=>typeof r=="object"&&r!==null).map(r=>r.text??"").join(" "):typeof t.text=="string"&&(i=t.text);const s=i.trim();return s?!!(n==="user"&&bd.test(s)||n==="assistant"&&wd.test(s)||n==="user"&&Sd.test(s)||n==="assistant"&&kd.test(s)):!1}function xd(e){return e.filter(t=>!Ad(t))}function hl(e){const t=e;let n=typeof t.role=="string"?t.role:"unknown";const i=typeof t.toolCallId=="string"||typeof t.tool_call_id=="string",s=t.content,r=Array.isArray(s)?s:null,o=Array.isArray(r)&&r.some(f=>{const p=String(f.type??"").toLowerCase();return p==="toolresult"||p==="tool_result"}),a=typeof t.toolName=="string"||typeof t.tool_name=="string";(i||o||a)&&(n="toolResult");let l=[];typeof t.content=="string"?l=[{type:"text",text:t.content}]:Array.isArray(t.content)?l=t.content.map(f=>({type:f.type||"text",text:f.text,name:f.name,args:f.args||f.arguments})):typeof t.text=="string"&&(l=[{type:"text",text:t.text}]);const c=typeof t.timestamp=="number"?t.timestamp:Date.now(),d=typeof t.id=="string"?t.id:void 0;return{role:n,content:l,timestamp:c,id:d}}function fl(e){const t=e.toLowerCase();return e==="user"||e==="User"?e:e==="assistant"?"assistant":e==="system"?"system":t==="toolresult"||t==="tool_result"||t==="tool"||t==="function"?"tool":e}function gl(e){const t=e,n=typeof t.role=="string"?t.role.toLowerCase():"";return n==="toolresult"||n==="tool_result"}function xo(e){e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,"0");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}function $d(){const e=new Uint8Array(16),t=Date.now();for(let n=0;n<e.length;n++)e[n]=Math.floor(Math.random()*256);return e[0]^=t&255,e[1]^=t>>>8&255,e[2]^=t>>>16&255,e[3]^=t>>>24&255,e}function tr(e=globalThis.crypto){if(e&&typeof e.randomUUID=="function")return e.randomUUID();if(e&&typeof e.getRandomValues=="function"){const t=new Uint8Array(16);return e.getRandomValues(t),xo(t)}return xo($d())}async function Ee(e){if(!(!e.client||!e.connected)){e.chatLoading=!0,e.lastError=null;try{const t=await e.client.request("chat.history",{sessionKey:e.sessionKey,limit:5e3}),n=Array.isArray(t.messages)?t.messages:[];e.chatMessages=xd(n),e.chatThinkingLevel=t.thinkingLevel??null,e.chatModelProvider=typeof t.modelProvider=="string"?t.modelProvider:null,e.chatModel=typeof t.model=="string"?t.model:null,e.chatVerboseLevel=typeof t.verboseLevel=="string"?t.verboseLevel:null,e.chatFillerEnabled=typeof t.fillerEnabled=="boolean"?t.fillerEnabled:null}catch(t){e.lastError=String(t)}finally{e.chatLoading=!1}}}function Ed(e){const t=/^data:([^;]+);base64,(.+)$/.exec(e);return t?{mimeType:t[1],content:t[2]}:null}async function ml(e,t,n){if(e.chatSuggestion=null,!e.client||!e.connected)return!1;const i=t.trim(),s=n&&n.length>0;if(!i&&!s)return!1;const r=Date.now(),o=(n??[]).filter(p=>!p.fileName),a=(n??[]).filter(p=>p.fileName),l=[],c=a.map(p=>p.fileName).filter(Boolean);if(c.length>0){const p=i?`${c.join(", ")}
|
|
9
9
|
|
|
10
|
-
${i}`:c.join(", ");l.push({type:"text",text:p})}else i&&l.push({type:"text",text:i});for(const p of o)l.push({type:"image",source:{type:"base64",media_type:p.mimeType,data:p.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:l,timestamp:r}],e.chatSending=!0,e.lastError=null;const
|
|
10
|
+
${i}`:c.join(", ");l.push({type:"text",text:p})}else i&&l.push({type:"text",text:i});for(const p of o)l.push({type:"image",source:{type:"base64",media_type:p.mimeType,data:p.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:l,timestamp:r}],e.chatSending=!0,e.lastError=null;const d=tr();e.chatRunId=d,e.chatStream="",e.chatStreamStartedAt=r;const f=[...o,...a],u=f.length>0?f.map(p=>{if(p.textContent)return{type:"document",mimeType:p.mimeType||"text/plain",fileName:p.fileName,content:btoa(unescape(encodeURIComponent(p.textContent)))};const b=Ed(p.dataUrl);return b?{type:p.fileName?"document":"image",mimeType:b.mimeType,fileName:p.fileName,content:b.content}:null}).filter(p=>p!==null):void 0;try{return await e.client.request("chat.send",{sessionKey:e.sessionKey,message:i,deliver:!1,idempotencyKey:d,attachments:u}),!0}catch(p){const b=String(p);return e.chatRunId=null,e.chatStream=null,e.chatStreamStartedAt=null,e.lastError=b,e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:"Error: "+b}],timestamp:Date.now()}],!1}finally{e.chatSending=!1}}async function yl(e){if(!e.client||!e.connected)return!1;const t=e.chatRunId;try{return await e.client.request("chat.abort",t?{sessionKey:e.sessionKey,runId:t}:{sessionKey:e.sessionKey}),!0}catch(n){return e.lastError=String(n),!1}}function vl(e,t){var n,i;if(!t||t.sessionKey!==e.sessionKey)return null;if(t.runId&&e.chatRunId&&t.runId!==e.chatRunId)return t.state==="final"?"final":null;if(t.state==="working"){const r=(t.message?(n=nn(t.message))==null?void 0:n.trim():void 0)||((i=e.chatStream)==null?void 0:i.trim());return r&&(e.chatInterimText=e.chatInterimText?`${e.chatInterimText}
|
|
11
11
|
|
|
12
|
-
${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.message);return typeof s=="string"&&s.trim()&&(e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:s.trim()}],timestamp:Date.now(),filler:!0}]),"block"}else if(t.state==="delta"){e.chatSuggestion=null;const s=nn(t.message);if(typeof s=="string"){if(s.trim()==="NO_REPLY")return null;const r=e.chatStream??"";(!r||s.length>=r.length)&&(e.chatStream=s)}}else t.state==="final"||t.state==="aborted"?(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null):t.state==="error"&&(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null,e.lastError=t.errorMessage??"chat error");return t.state}const
|
|
13
|
-
`)}function
|
|
12
|
+
${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.message);return typeof s=="string"&&s.trim()&&(e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:s.trim()}],timestamp:Date.now(),filler:!0}]),"block"}else if(t.state==="delta"){e.chatSuggestion=null;const s=nn(t.message);if(typeof s=="string"){if(s.trim()==="NO_REPLY")return null;const r=e.chatStream??"";(!r||s.length>=r.length)&&(e.chatStream=s)}}else t.state==="final"||t.state==="aborted"?(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null):t.state==="error"&&(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null,e.lastError=t.errorMessage??"chat error");return t.state}const $s=Object.freeze(Object.defineProperty({__proto__:null,abortChatRun:yl,handleChatEvent:vl,loadChatHistory:Ee,sendChatMessage:ml},Symbol.toStringTag,{value:"Module"}));async function nr(e){if(!(!e.client||!e.connected)&&!e.sessionsLoading){e.sessionsLoading=!0,e.sessionsError=null;try{const t={includeGlobal:e.sessionsIncludeGlobal??!0,includeUnknown:e.sessionsIncludeUnknown??!1},n=ti(e.sessionsFilterActive??"",0),i=ti(e.sessionsFilterLimit??"",0);n>0&&(t.activeMinutes=n),i>0&&(t.limit=i);const s=await e.client.request("sessions.list",t);s&&(e.sessionsResult=s)}catch(t){e.sessionsError=String(t)}finally{e.sessionsLoading=!1}}}async function Ln(e,t,n){if(!e.client||!e.connected)return;const i={key:t};"label"in n&&(i.label=n.label),"thinkingLevel"in n&&(i.thinkingLevel=n.thinkingLevel),"verboseLevel"in n&&(i.verboseLevel=n.verboseLevel),"reasoningLevel"in n&&(i.reasoningLevel=n.reasoningLevel),"model"in n&&(i.model=n.model),"fillerEnabled"in n&&(i.fillerEnabled=n.fillerEnabled);try{await e.client.request("sessions.patch",i),await nr(e)}catch(s){e.sessionsError=String(s)}}const $o=50,Cd=80,Td=12e4;function _d(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.text=="string")return t.text;const n=t.content;if(!Array.isArray(n))return null;const i=n.map(s=>{if(!s||typeof s!="object")return null;const r=s;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(s=>!!s);return i.length===0?null:i.join(`
|
|
13
|
+
`)}function Eo(e){if(e==null)return null;if(typeof e=="number"||typeof e=="boolean")return String(e);const t=_d(e);let n;if(typeof e=="string")n=e;else if(t)n=t;else try{n=JSON.stringify(e,null,2)}catch{n=String(e)}const i=dl(n,Td);return i.truncated?`${i.text}
|
|
14
14
|
|
|
15
|
-
… truncated (${i.total} chars, showing first ${i.text.length}).`:i.text}function
|
|
15
|
+
… truncated (${i.total} chars, showing first ${i.text.length}).`:i.text}function Md(e){const t=[];return t.push({type:"toolcall",name:e.name,arguments:e.args??{}}),e.output&&t.push({type:"toolresult",name:e.name,text:e.output}),{role:"assistant",toolCallId:e.toolCallId,runId:e.runId,content:t,timestamp:e.startedAt}}function Pd(e){if(e.toolStreamOrder.length<=$o)return;const t=e.toolStreamOrder.length-$o,n=e.toolStreamOrder.splice(0,t);for(const i of n)e.toolStreamById.delete(i)}function Ld(e){e.chatToolMessages=e.toolStreamOrder.map(t=>{var n;return(n=e.toolStreamById.get(t))==null?void 0:n.message}).filter(t=>!!t)}function Es(e){e.toolStreamSyncTimer!=null&&(clearTimeout(e.toolStreamSyncTimer),e.toolStreamSyncTimer=null),Ld(e)}function Id(e,t=!1){if(t){Es(e);return}e.toolStreamSyncTimer==null&&(e.toolStreamSyncTimer=window.setTimeout(()=>Es(e),Cd))}function ir(e){e.toolStreamById.clear(),e.toolStreamOrder=[],e.chatToolMessages=[],Es(e)}const Rd=5e3;function Nd(e,t){var s;const n=t.data??{},i=typeof n.phase=="string"?n.phase:"";e.compactionClearTimer!=null&&(window.clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null),i==="start"?e.compactionStatus={active:!0,startedAt:Date.now(),completedAt:null}:i==="end"&&(e.compactionStatus={active:!1,startedAt:((s=e.compactionStatus)==null?void 0:s.startedAt)??null,completedAt:Date.now()},e.compactionClearTimer=window.setTimeout(()=>{e.compactionStatus=null,e.compactionClearTimer=null},Rd))}function Dd(e,t){if(!t)return;if(t.stream==="compaction"){Nd(e,t);return}if(t.stream!=="tool")return;const n=typeof t.sessionKey=="string"?t.sessionKey:void 0;if(n&&n!==e.sessionKey||!n&&e.chatRunId&&t.runId!==e.chatRunId||e.chatRunId&&t.runId!==e.chatRunId||!e.chatRunId)return;const i=t.data??{},s=typeof i.toolCallId=="string"?i.toolCallId:"";if(!s)return;const r=typeof i.name=="string"?i.name:"tool",o=typeof i.phase=="string"?i.phase:"",a=o==="start"?i.args:void 0,l=o==="update"?Eo(i.partialResult):o==="result"?Eo(i.result):void 0,c=Date.now();let d=e.toolStreamById.get(s);d?(d.name=r,a!==void 0&&(d.args=a),l!==void 0&&(d.output=l),d.updatedAt=c):(d={toolCallId:s,runId:t.runId,sessionKey:n,name:r,args:a,output:l,startedAt:typeof t.ts=="number"?t.ts:c,updatedAt:c,message:{}},e.toolStreamById.set(s,d),e.toolStreamOrder.push(s)),d.message=Md(d),Pd(e),Id(e,o==="result")}function hn(e,t=!1){e.chatScrollFrame&&cancelAnimationFrame(e.chatScrollFrame),e.chatScrollTimeout!=null&&(clearTimeout(e.chatScrollTimeout),e.chatScrollTimeout=null);const n=()=>{const i=e.querySelector(".chat-thread");if(i){const s=getComputedStyle(i).overflowY;if(s==="auto"||s==="scroll"||i.scrollHeight-i.clientHeight>1)return i}return document.scrollingElement??document.documentElement};e.updateComplete.then(()=>{e.chatScrollFrame=requestAnimationFrame(()=>{e.chatScrollFrame=null;const i=n();if(!i)return;const s=i.scrollHeight-i.scrollTop-i.clientHeight;if(!(t||e.chatUserNearBottom||s<200))return;t&&(e.chatHasAutoScrolled=!0),i.scrollTop=i.scrollHeight,e.chatUserNearBottom=!0;const o=t?150:120;e.chatScrollTimeout=window.setTimeout(()=>{e.chatScrollTimeout=null;const a=n();if(!a)return;const l=a.scrollHeight-a.scrollTop-a.clientHeight;(t||e.chatUserNearBottom||l<200)&&(a.scrollTop=a.scrollHeight,e.chatUserNearBottom=!0)},o)})})}function bl(e,t=!1){e.logsScrollFrame&&cancelAnimationFrame(e.logsScrollFrame),e.updateComplete.then(()=>{e.logsScrollFrame=requestAnimationFrame(()=>{e.logsScrollFrame=null;const n=e.querySelector(".log-stream");!n||!(t||n.scrollTop<80)||(n.scrollTop=0)})})}function Od(e,t){const n=t.currentTarget;if(!n)return;const i=n.scrollHeight-n.scrollTop-n.clientHeight;e.chatUserNearBottom=i<200}function Bd(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function Fd(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function Ud(e){e.chatHasAutoScrolled=!1,e.chatUserNearBottom=!0}function Wd(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
|
|
16
16
|
`)}
|
|
17
|
-
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function
|
|
17
|
+
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function Kd(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
|
|
18
18
|
`)}
|
|
19
|
-
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-session-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function
|
|
20
|
-
`}function kl(e,t,n){if(t.length===0)return;let i=e;for(let r=0;r<t.length-1;r+=1){const o=t[r],a=t[r+1];if(typeof o=="number"){if(!Array.isArray(i))return;i[o]==null&&(i[o]=typeof a=="number"?[]:{}),i=i[o]}else{if(typeof i!="object"||i==null)return;const l=i;l[o]==null&&(l[o]=typeof a=="number"?[]:{}),i=l[o]}}const s=t[t.length-1];if(typeof s=="number"){Array.isArray(i)&&(i[s]=n);return}typeof i=="object"&&i!=null&&(i[s]=n)}async function Te(e){if(!(!e.client||!e.connected)){e.configLoading=!0,e.lastError=null;try{const t=await e.client.request("config.get",{});qd(e,t)}catch(t){e.lastError=String(t)}finally{e.configLoading=!1}}}async function Sl(e){if(!(!e.client||!e.connected)&&!e.configSchemaLoading){e.configSchemaLoading=!0;try{const t=await e.client.request("config.schema",{});Hd(e,t)}catch(t){e.lastError=String(t)}finally{e.configSchemaLoading=!1}}}function Hd(e,t){e.configSchema=t.schema??null,e.configUiHints=t.uiHints??{},e.configSchemaVersion=t.version??null}function qd(e,t){e.configSnapshot=t;const n=typeof t.raw=="string"?t.raw:t.config&&typeof t.config=="object"?nt(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=nt(e.configForm):e.configRaw=n,e.configValid=typeof t.valid=="boolean"?t.valid:null,e.configIssues=Array.isArray(t.issues)?t.issues:[],e.configFormDirty||(e.configForm=ze(t.config??{}),e.configFormOriginal=ze(t.config??{}),e.configRawOriginal=n)}async function Vd(e){var t;if(!(!e.client||!e.connected)){e.configSaving=!0,e.lastError=null;try{const n=e.configFormMode==="form"&&e.configForm?nt(e.configForm):e.configRaw,i=(t=e.configSnapshot)==null?void 0:t.hash;if(!i){e.lastError="Config hash missing; reload and retry.";return}await e.client.request("config.set",{raw:n,baseHash:i}),e.configFormDirty=!1,await Te(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function fn(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("cron.status",{});e.cronStatus=t}catch(t){e.cronError=String(t)}}async function ki(e){if(!(!e.client||!e.connected)&&!e.cronLoading){e.cronLoading=!0,e.cronError=null;try{const t={includeDisabled:!0};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(t.agentIds=e.workspaceAgentIds);const n=await e.client.request("cron.list",t);e.cronJobs=Array.isArray(n.jobs)?n.jobs:[]}catch(t){e.cronError=String(t)}finally{e.cronLoading=!1}}}function Gd(e){if(e.scheduleKind==="at"){const n=Date.parse(e.scheduleAt);if(!Number.isFinite(n))throw new Error("Invalid run time.");return{kind:"at",atMs:n}}if(e.scheduleKind==="every"){const n=ti(e.everyAmount,0);if(n<=0)throw new Error("Invalid interval amount.");const i=e.everyUnit;return{kind:"every",everyMs:n*(i==="minutes"?6e4:i==="hours"?36e5:864e5)}}const t=e.cronExpr.trim();if(!t)throw new Error("Cron expression required.");return{kind:"cron",expr:t,tz:e.cronTz.trim()||void 0}}function Qd(e){if(e.payloadKind==="systemEvent"){const s=e.payloadText.trim();if(!s)throw new Error("System event text required.");return{kind:"systemEvent",text:s}}const t=e.payloadText.trim();if(!t)throw new Error("Agent message required.");const n={kind:"agentTurn",message:t};e.deliver&&(n.deliver=!0),e.channel&&(n.channel=e.channel),e.to.trim()&&(n.to=e.to.trim());const i=ti(e.timeoutSeconds,0);return i>0&&(n.timeoutSeconds=i),n}async function Yd(e){var t;if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=Gd(e.cronForm),i=Qd(e.cronForm),s=e.cronForm.agentId.trim(),r=(t=e.cronForm.accountId)==null?void 0:t.trim(),o={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:s||void 0,accountId:r||void 0,enabled:e.cronForm.enabled,schedule:n,sessionTarget:e.cronForm.sessionTarget,wakeMode:e.cronForm.wakeMode,payload:i,isolation:e.cronForm.postToMainPrefix.trim()&&e.cronForm.sessionTarget==="isolated"?{postToMainPrefix:e.cronForm.postToMainPrefix.trim()}:void 0};if(!o.name)throw new Error("Name required.");await e.client.request("cron.add",o),e.cronForm={...e.cronForm,name:"",description:"",payloadText:""},await ki(e),await fn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Xd(e,t,n){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.update",{id:t.id,patch:{enabled:n}}),await ki(e),await fn(e)}catch(i){e.cronError=String(i)}finally{e.cronBusy=!1}}}async function Zd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.run",{id:t.id,mode:"force"}),await Ts(e,t.id)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Jd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.remove",{id:t.id}),e.cronRunsJobId===t.id&&(e.cronRunsJobId=null,e.cronRuns=[]),await ki(e),await fn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Ts(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("cron.runs",{id:t,limit:50});e.cronRunsJobId=t,e.cronRuns=Array.isArray(n.entries)?n.entries:[]}catch(n){e.cronError=String(n)}}async function q(e,t){if(!(!e.client||!e.connected)&&!e.channelsLoading){e.channelsLoading=!0,e.channelsError=null;try{const n=await e.client.request("channels.status",{probe:t,timeoutMs:8e3});e.channelsSnapshot=n,e.channelsLastSuccess=Date.now()}catch(n){e.channelsError=String(n)}finally{e.channelsLoading=!1}}}async function sr(e,t,n){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0,e.whatsappActiveQrAccountId=n??null;try{const i=await e.client.request("web.login.start",{force:t,timeoutMs:3e4,accountId:n});e.whatsappLoginMessage=i.message??null,e.whatsappLoginQrDataUrl=i.qrDataUrl??null,e.whatsappLoginConnected=null}catch(i){e.whatsappLoginMessage=String(i),e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Al(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{const n=await e.client.request("web.login.wait",{timeoutMs:12e4,accountId:t});e.whatsappLoginMessage=n.message??null,e.whatsappLoginConnected=n.connected??null,n.connected&&(e.whatsappLoginQrDataUrl=null,e.whatsappActiveQrAccountId=null,e.whatsappPairedPhone=n.selfPhone??null)}catch(n){e.whatsappLoginMessage=String(n),e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function $l(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t}),e.whatsappLoginMessage="Logged out.",e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null}catch(n){e.whatsappLoginMessage=String(n)}finally{e.whatsappBusy=!1}}}async function xl(e,t){if(!e.client||!e.connected||e.whatsappAccountSaving)return;const n=t.trim();if(!n){e.whatsappAccountError="Account name is required.";return}const i=n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");if(!i){e.whatsappAccountError="Invalid account name.";return}e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const s=await e.client.request("config.get",{});e.configSnapshot=s;const r=ze(s.config??{});(!r.channels||typeof r.channels!="object")&&(r.channels={});const o=r.channels;(!o.whatsapp||typeof o.whatsapp!="object")&&(o.whatsapp={});const a=o.whatsapp;(!a.accounts||typeof a.accounts!="object")&&(a.accounts={});const l=a.accounts;if(l[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}l[i]={name:n,provider:"baileys"};const c=s.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const u=nt(r);await e.client.request("config.set",{raw:u,baseHash:c}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await q(e,!0),await sr(e,!0,i)}catch(s){e.whatsappAccountError=String(s)}finally{e.whatsappAccountSaving=!1}}async function El(e,t){if(!(!e.client||!e.connected)&&!e.whatsappAccountSaving){e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=ze(n.config??{}),s=i.channels,r=s==null?void 0:s.whatsapp,o=r==null?void 0:r.accounts;if(!o){e.whatsappAccountError="No accounts found in config.";return}if(Object.keys(o).length<=1){e.whatsappAccountError="Cannot remove the last account.";return}if(!o[t]){e.whatsappAccountError=`Account "${t}" not found.`;return}try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t})}catch{}delete o[t],Array.isArray(i.bindings)&&(i.bindings=i.bindings.filter(u=>{const f=u.match;return!f||f.channel!=="whatsapp"?!0:f.accountId!==t}));const l=n.hash;if(!l){e.whatsappAccountError="Config hash missing; reload and retry.";return}const c=nt(i);await e.client.request("config.set",{raw:c,baseHash:l}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await q(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const ep=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:xl,loadChannels:q,logoutWhatsApp:$l,removeWhatsAppAccount:El,startWhatsAppLogin:sr,waitWhatsAppLogin:Al},Symbol.toStringTag,{value:"Module"}));async function rr(e){if(!(!e.client||!e.connected)&&!e.debugLoading){e.debugLoading=!0;try{const[t,n,i,s]=await Promise.all([e.client.request("status",{}),e.client.request("health",{}),e.client.request("models.list",{}),e.client.request("last-heartbeat",{})]);e.debugStatus=t,e.debugHealth=n;const r=i;e.debugModels=Array.isArray(r==null?void 0:r.models)?r==null?void 0:r.models:[],e.debugHeartbeat=s}catch(t){e.debugCallError=String(t)}finally{e.debugLoading=!1}}}const tp=2e3,np=new Set(["trace","debug","info","warn","error","fatal"]);function ip(e){if(typeof e!="string")return null;const t=e.trim();if(!t.startsWith("{")||!t.endsWith("}"))return null;try{const n=JSON.parse(t);return!n||typeof n!="object"?null:n}catch{return null}}function sp(e){if(typeof e!="string")return null;const t=e.toLowerCase();return np.has(t)?t:null}function Tl(e){if(!e.trim())return{raw:e,message:e};try{const t=JSON.parse(e),n=t&&typeof t._meta=="object"&&t._meta!==null?t._meta:null,i=typeof t.time=="string"?t.time:typeof(n==null?void 0:n.date)=="string"?n==null?void 0:n.date:null,s=sp((n==null?void 0:n.logLevelName)??(n==null?void 0:n.level)),r=typeof t[0]=="string"?t[0]:typeof(n==null?void 0:n.name)=="string"?n==null?void 0:n.name:null,o=ip(r);let a=null;o&&(typeof o.subsystem=="string"?a=o.subsystem:typeof o.module=="string"&&(a=o.module)),!a&&r&&r.length<120&&(a=r);let l=null;return typeof t[1]=="string"?l=t[1]:!o&&typeof t[0]=="string"?l=t[0]:typeof t.message=="string"&&(l=t.message),{raw:e,time:i,level:s,subsystem:a,message:l??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function $t(e,t){if(!(!e.client||!e.connected)&&!(e.logsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.logsLoading=!0),e.logsError=null;try{const i=await e.client.request("logs.tail",{cursor:t!=null&&t.reset?void 0:e.logsCursor??void 0,limit:e.logsLimit,maxBytes:e.logsMaxBytes}),r=(Array.isArray(i.lines)?i.lines.filter(a=>typeof a=="string"):[]).map(Tl),o=!!(t!=null&&t.reset||i.reset||e.logsCursor==null);e.logsEntries=o?r:[...e.logsEntries,...r].slice(-tp),typeof i.cursor=="number"&&(e.logsCursor=i.cursor),typeof i.file=="string"&&(e.logsFile=i.file),e.logsTruncated=!!i.truncated,e.logsLastFetchAt=Date.now()}catch(n){e.logsError=String(n)}finally{t!=null&&t.quiet||(e.logsLoading=!1)}}}const rp=Object.freeze(Object.defineProperty({__proto__:null,loadLogs:$t,parseLogLine:Tl},Symbol.toStringTag,{value:"Module"}));const Cl={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:se,n:Vn,Gx:Co,Gy:_o,a:Xi,d:Zi,h:op}=Cl,it=32,or=64,ap=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},Z=(e="")=>{const t=new Error(e);throw ap(t,Z),t},lp=e=>typeof e=="bigint",cp=e=>typeof e=="string",up=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",je=(e,t,n="")=>{const i=up(e),s=e==null?void 0:e.length,r=t!==void 0;if(!i||r&&s!==t){const o=n&&`"${n}" `,a=r?` of length ${t}`:"",l=i?`length=${s}`:`type=${typeof e}`;Z(o+"expected Uint8Array"+a+", got "+l)}return e},Si=e=>new Uint8Array(e),_l=e=>Uint8Array.from(e),Ml=(e,t)=>e.toString(16).padStart(t,"0"),Pl=e=>Array.from(je(e)).map(t=>Ml(t,2)).join(""),Pe={_0:48,_9:57,A:65,F:70,a:97,f:102},Mo=e=>{if(e>=Pe._0&&e<=Pe._9)return e-Pe._0;if(e>=Pe.A&&e<=Pe.F)return e-(Pe.A-10);if(e>=Pe.a&&e<=Pe.f)return e-(Pe.a-10)},Ll=e=>{const t="hex invalid";if(!cp(e))return Z(t);const n=e.length,i=n/2;if(n%2)return Z(t);const s=Si(i);for(let r=0,o=0;r<i;r++,o+=2){const a=Mo(e.charCodeAt(o)),l=Mo(e.charCodeAt(o+1));if(a===void 0||l===void 0)return Z(t);s[r]=a*16+l}return s},Il=()=>globalThis==null?void 0:globalThis.crypto,dp=()=>{var e;return((e=Il())==null?void 0:e.subtle)??Z("crypto.subtle must be defined, consider polyfill")},dn=(...e)=>{const t=Si(e.reduce((i,s)=>i+je(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},pp=(e=it)=>Il().getRandomValues(Si(e)),ni=BigInt,Xe=(e,t,n,i="bad number: out of range")=>lp(e)&&t<=e&&e<n?e:Z(i),M=(e,t=se)=>{const n=e%t;return n>=0n?n:t+n},Rl=e=>M(e,Vn),hp=(e,t)=>{(e===0n||t<=0n)&&Z("no inverse n="+e+" mod="+t);let n=M(e,t),i=t,s=0n,r=1n;for(;n!==0n;){const o=i/n,a=i%n,l=s-r*o;i=n,n=a,s=r,r=l}return i===1n?M(s,t):Z("no inverse")},fp=e=>{const t=Bl[e];return typeof t!="function"&&Z("hashes."+e+" not set"),t},Ji=e=>e instanceof st?e:Z("Point expected"),Cs=2n**256n,xe=class xe{constructor(t,n,i,s){B(this,"X");B(this,"Y");B(this,"Z");B(this,"T");const r=Cs;this.X=Xe(t,0n,r),this.Y=Xe(n,0n,r),this.Z=Xe(i,1n,r),this.T=Xe(s,0n,r),Object.freeze(this)}static CURVE(){return Cl}static fromAffine(t){return new xe(t.x,t.y,1n,M(t.x*t.y))}static fromBytes(t,n=!1){const i=Zi,s=_l(je(t,it)),r=t[31];s[31]=r&-129;const o=Dl(s);Xe(o,0n,n?Cs:se);const l=M(o*o),c=M(l-1n),u=M(i*l+1n);let{isValid:f,value:d}=mp(c,u);f||Z("bad point: y not sqrt");const p=(d&1n)===1n,w=(r&128)!==0;return!n&&d===0n&&w&&Z("bad point: x==0, isLastByteOdd"),w!==p&&(d=M(-d)),new xe(d,o,1n,M(d*o))}static fromHex(t,n){return xe.fromBytes(Ll(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){const t=Xi,n=Zi,i=this;if(i.is0())return Z("bad point: ZERO");const{X:s,Y:r,Z:o,T:a}=i,l=M(s*s),c=M(r*r),u=M(o*o),f=M(u*u),d=M(l*t),p=M(u*M(d+c)),w=M(f+M(n*M(l*c)));if(p!==w)return Z("bad point: equation left != right (1)");const b=M(s*r),S=M(o*a);return b!==S?Z("bad point: equation left != right (2)"):this}equals(t){const{X:n,Y:i,Z:s}=this,{X:r,Y:o,Z:a}=Ji(t),l=M(n*a),c=M(r*s),u=M(i*a),f=M(o*s);return l===c&&u===f}is0(){return this.equals(St)}negate(){return new xe(M(-this.X),this.Y,this.Z,M(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=Xi,r=M(t*t),o=M(n*n),a=M(2n*M(i*i)),l=M(s*r),c=t+n,u=M(M(c*c)-r-o),f=l+o,d=f-a,p=l-o,w=M(u*d),b=M(f*p),S=M(u*p),T=M(d*f);return new xe(w,b,T,S)}add(t){const{X:n,Y:i,Z:s,T:r}=this,{X:o,Y:a,Z:l,T:c}=Ji(t),u=Xi,f=Zi,d=M(n*o),p=M(i*a),w=M(r*f*c),b=M(s*l),S=M((n+i)*(o+a)-d-p),T=M(b-w),$=M(b+w),E=M(p-u*d),C=M(S*T),I=M($*E),U=M(S*E),Q=M(T*$);return new xe(C,I,Q,U)}subtract(t){return this.add(Ji(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return St;if(Xe(t,1n,Vn),t===1n)return this;if(this.equals(rt))return Tp(t).p;let i=St,s=rt;for(let r=this;t>0n;r=r.double(),t>>=1n)t&1n?i=i.add(r):n&&(s=s.add(r));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){const{X:t,Y:n,Z:i}=this;if(this.equals(St))return{x:0n,y:1n};const s=hp(i,se);M(i*s)!==1n&&Z("invalid inverse");const r=M(t*s),o=M(n*s);return{x:r,y:o}}toBytes(){const{x:t,y:n}=this.assertValidity().toAffine(),i=Nl(n);return i[31]|=t&1n?128:0,i}toHex(){return Pl(this.toBytes())}clearCofactor(){return this.multiply(ni(op),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Vn/2n,!1).double();return Vn%2n&&(t=t.add(this)),t.is0()}};B(xe,"BASE"),B(xe,"ZERO");let st=xe;const rt=new st(Co,_o,1n,M(Co*_o)),St=new st(0n,1n,1n,0n);st.BASE=rt;st.ZERO=St;const Nl=e=>Ll(Ml(Xe(e,0n,Cs),or)).reverse(),Dl=e=>ni("0x"+Pl(_l(je(e)).reverse())),ke=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=se;return n},gp=e=>{const n=e*e%se*e%se,i=ke(n,2n)*n%se,s=ke(i,1n)*e%se,r=ke(s,5n)*s%se,o=ke(r,10n)*r%se,a=ke(o,20n)*o%se,l=ke(a,40n)*a%se,c=ke(l,80n)*l%se,u=ke(c,80n)*l%se,f=ke(u,10n)*r%se;return{pow_p_5_8:ke(f,2n)*e%se,b2:n}},Po=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,mp=(e,t)=>{const n=M(t*t*t),i=M(n*n*t),s=gp(e*i).pow_p_5_8;let r=M(e*n*s);const o=M(t*r*r),a=r,l=M(r*Po),c=o===e,u=o===M(-e),f=o===M(-e*Po);return c&&(r=a),(u||f)&&(r=l),(M(r)&1n)===1n&&(r=M(-r)),{isValid:c||u,value:r}},_s=e=>Rl(Dl(e)),ar=(...e)=>Bl.sha512Async(dn(...e)),yp=(...e)=>fp("sha512")(dn(...e)),Ol=e=>{const t=e.slice(0,it);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(it,or),i=_s(t),s=rt.multiply(i),r=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:r}},lr=e=>ar(je(e,it)).then(Ol),vp=e=>Ol(yp(je(e,it))),bp=e=>lr(e).then(t=>t.pointBytes),wp=e=>ar(e.hashable).then(e.finish),kp=(e,t,n)=>{const{pointBytes:i,scalar:s}=e,r=_s(t),o=rt.multiply(r).toBytes();return{hashable:dn(o,i,n),finish:c=>{const u=Rl(r+_s(c)*s);return je(dn(o,Nl(u)),or)}}},Sp=async(e,t)=>{const n=je(e),i=await lr(t),s=await ar(i.prefix,n);return wp(kp(i,s,n))},Bl={sha512Async:async e=>{const t=dp(),n=dn(e);return Si(await t.digest("SHA-512",n.buffer))},sha512:void 0},Ap=(e=pp(it))=>e,$p={getExtendedPublicKeyAsync:lr,getExtendedPublicKey:vp,randomSecretKey:Ap},ii=8,xp=256,Fl=Math.ceil(xp/ii)+1,Ms=2**(ii-1),Ep=()=>{const e=[];let t=rt,n=t;for(let i=0;i<Fl;i++){n=t,e.push(n);for(let s=1;s<Ms;s++)n=n.add(t),e.push(n);t=n.double()}return e};let Lo;const Io=(e,t)=>{const n=t.negate();return e?n:t},Tp=e=>{const t=Lo||(Lo=Ep());let n=St,i=rt;const s=2**ii,r=s,o=ni(s-1),a=ni(ii);for(let l=0;l<Fl;l++){let c=Number(e&o);e>>=a,c>Ms&&(c-=r,e+=1n);const u=l*Ms,f=u,d=u+Math.abs(c)-1,p=l%2!==0,w=c<0;c===0?i=i.add(Io(p,t[f])):n=n.add(Io(w,t[d]))}return e!==0n&&Z("invalid wnaf"),{p:n,f:i}},es="taskmaster-device-identity-v1";function Ps(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function Ul(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),i=atob(n),s=new Uint8Array(i.length);for(let r=0;r<i.length;r+=1)s[r]=i.charCodeAt(r);return s}function Cp(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Wl(e){const t=await crypto.subtle.digest("SHA-256",e);return Cp(new Uint8Array(t))}async function _p(){const e=$p.randomSecretKey(),t=await bp(e);return{deviceId:await Wl(t),publicKey:Ps(t),privateKey:Ps(e)}}async function Mp(){try{const n=localStorage.getItem(es);if(n){const i=JSON.parse(n);if((i==null?void 0:i.version)===1&&typeof i.deviceId=="string"&&typeof i.publicKey=="string"&&typeof i.privateKey=="string"){const s=await Wl(Ul(i.publicKey));if(s!==i.deviceId){const r={...i,deviceId:s};return localStorage.setItem(es,JSON.stringify(r)),{deviceId:s,publicKey:i.publicKey,privateKey:i.privateKey}}return{deviceId:i.deviceId,publicKey:i.publicKey,privateKey:i.privateKey}}}}catch{}const e=await _p(),t={version:1,deviceId:e.deviceId,publicKey:e.publicKey,privateKey:e.privateKey,createdAtMs:Date.now()};return localStorage.setItem(es,JSON.stringify(t)),e}async function Pp(e,t){const n=Ul(e),i=new TextEncoder().encode(t),s=await Sp(i,n);return Ps(s)}const Kl="taskmaster.device.auth.v1";function cr(e){return e.trim()}function Lp(e){if(!Array.isArray(e))return[];const t=new Set;for(const n of e){const i=n.trim();i&&t.add(i)}return[...t].sort()}function ur(){try{const e=window.localStorage.getItem(Kl);if(!e)return null;const t=JSON.parse(e);return!t||t.version!==1||!t.deviceId||typeof t.deviceId!="string"||!t.tokens||typeof t.tokens!="object"?null:t}catch{return null}}function zl(e){try{window.localStorage.setItem(Kl,JSON.stringify(e))}catch{}}function Ip(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return null;const n=cr(e.role),i=t.tokens[n];return!i||typeof i.token!="string"?null:i}function Rp(e){const t=cr(e.role),n={version:1,deviceId:e.deviceId,tokens:{}},i=ur();i&&i.deviceId===e.deviceId&&(n.tokens={...i.tokens});const s={token:e.token,role:t,scopes:Lp(e.scopes),updatedAtMs:Date.now()};return n.tokens[t]=s,zl(n),s}function Np(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return;const n=cr(e.role);if(!t.tokens[n])return;const i={...t,tokens:{...t.tokens}};delete i.tokens[n],zl(i)}async function dr(e,t){if(!(!e.client||!e.connected)&&!e.devicesLoading){e.devicesLoading=!0,t!=null&&t.quiet||(e.devicesError=null);try{const n=await e.client.request("device.pair.list",{});e.devicesList={pending:Array.isArray(n==null?void 0:n.pending)?n.pending:[],paired:Array.isArray(n==null?void 0:n.paired)?n.paired:[]}}catch(n){t!=null&&t.quiet||(e.devicesError=String(n))}finally{e.devicesLoading=!1}}}async function pr(e,t){if(!(!e.client||!e.connected)&&!e.nodesLoading){e.nodesLoading=!0,t!=null&&t.quiet||(e.lastError=null);try{const n=await e.client.request("node.list",{});e.nodes=Array.isArray(n.nodes)?n.nodes:[]}catch(n){t!=null&&t.quiet||(e.lastError=String(n))}finally{e.nodesLoading=!1}}}function Dp(e){return{method:"exec.approvals.get",params:{}}}async function Op(e,t){if(!(!e.client||!e.connected)&&!e.execApprovalsLoading){e.execApprovalsLoading=!0,e.lastError=null;try{const n=Dp(t);if(!n){e.lastError="Select a node before loading exec approvals.";return}const i=await e.client.request(n.method,n.params);Bp(e,i)}catch(n){e.lastError=String(n)}finally{e.execApprovalsLoading=!1}}}function Bp(e,t){e.execApprovalsSnapshot=t,e.execApprovalsDirty||(e.execApprovalsForm=ze(t.file??{}))}async function jl(e){if(!(!e.client||!e.connected)&&!e.presenceLoading){e.presenceLoading=!0,e.presenceError=null,e.presenceStatus=null;try{const t=await e.client.request("system-presence",{});Array.isArray(t)?(e.presenceEntries=t,e.presenceStatus=t.length===0?"No instances yet.":null):(e.presenceEntries=[],e.presenceStatus="No presence payload.")}catch(t){e.presenceError=String(t)}finally{e.presenceLoading=!1}}}function Tt(e,t,n){if(!t.trim())return;const i={...e.skillMessages};n?i[t]=n:delete i[t],e.skillMessages=i}function Ai(e){return e instanceof Error?e.message:String(e)}async function ot(e,t){if(t!=null&&t.clearMessages&&Object.keys(e.skillMessages).length>0&&(e.skillMessages={}),!(!e.client||!e.connected)&&!e.skillsLoading){e.skillsLoading=!0,e.skillsError=null;try{const n=await e.client.request("skills.status",{});n&&(e.skillsReport=n)}catch(n){e.skillsError=Ai(n)}finally{e.skillsLoading=!1}}}function Hl(e,t,n){e.skillEdits={...e.skillEdits,[t]:n}}async function ql(e,t,n){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{await e.client.request("skills.update",{skillKey:t,enabled:n}),await ot(e),Tt(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ai(i);e.skillsError=s,Tt(e,t,{kind:"error",message:s})}finally{e.skillsBusyKey=null}}}async function Vl(e,t){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const n=e.skillEdits[t]??"";await e.client.request("skills.update",{skillKey:t,apiKey:n}),await ot(e),Tt(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ai(n);e.skillsError=i,Tt(e,t,{kind:"error",message:i})}finally{e.skillsBusyKey=null}}}async function Gl(e,t,n,i){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const s=await e.client.request("skills.install",{name:n,installId:i,timeoutMs:12e4});await ot(e),Tt(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const r=Ai(s);e.skillsError=r,Tt(e,t,{kind:"error",message:r})}finally{e.skillsBusyKey=null}}}const Fp=Object.freeze(Object.defineProperty({__proto__:null,installSkill:Gl,loadSkills:ot,saveSkillApiKey:Vl,updateSkillEdit:Hl,updateSkillEnabled:ql},Symbol.toStringTag,{value:"Module"})),Ql={overview:"/overview",channels:"/channels",instances:"/instances",cron:"/cron",skills:"/skills",nodes:"/nodes",chat:"/chat",admins:"/admins",config:"/config",debug:"/debug",logs:"/logs"},Yl=new Map(Object.entries(Ql).map(([e,t])=>[t,e]));function $i(e){if(!e)return"";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t==="/"?"":(t.endsWith("/")&&(t=t.slice(0,-1)),t)}function pn(e){if(!e)return"/";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t}function Up(e,t=""){const n=$i(t),i=Ql[e];return n?`${n}${i}`:i}function Xl(e,t=""){const n=$i(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=pn(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Yl.get(s)??null}function Wp(e){let t=pn(e);if(t.endsWith("/index.html")&&(t=pn(t.slice(0,-11))),t==="/")return"";const n=t.split("/").filter(Boolean);if(n.length===0)return"";for(let i=0;i<n.length;i++){const s=`/${n.slice(i).join("/")}`.toLowerCase();if(Yl.has(s)){const r=n.slice(0,i);return r.length?`/${r.join("/")}`:""}}return`/${n.join("/")}`}function Kp(){return typeof window>"u"||typeof window.matchMedia!="function"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function hr(e){return e==="system"?Kp():e}const In=e=>Number.isNaN(e)?.5:e<=0?0:e>=1?1:e,zp=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches??!1,Rn=e=>{e.classList.remove("theme-transition"),e.style.removeProperty("--theme-switch-x"),e.style.removeProperty("--theme-switch-y")},jp=({nextTheme:e,applyTheme:t,context:n,currentTheme:i})=>{var c;if(i===e)return;const s=globalThis.document??null;if(!s){t();return}const r=s.documentElement,o=s,a=zp();if(!!o.startViewTransition&&!a){let u=.5,f=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")u=In(n.pointerClientX/window.innerWidth),f=In(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const d=n.element.getBoundingClientRect();d.width>0&&d.height>0&&typeof window<"u"&&(u=In((d.left+d.width/2)/window.innerWidth),f=In((d.top+d.height/2)/window.innerHeight))}r.style.setProperty("--theme-switch-x",`${u*100}%`),r.style.setProperty("--theme-switch-y",`${f*100}%`),r.classList.add("theme-transition");try{const d=(c=o.startViewTransition)==null?void 0:c.call(o,()=>{t()});d!=null&&d.finished?d.finished.finally(()=>Rn(r)):Rn(r)}catch{Rn(r),t()}return}t(),Rn(r)},Hp=2e3;async function sn(e,t){if(!(!e.client||!e.connected)&&!(e.sessionLogsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.sessionLogsLoading=!0),e.sessionLogsError=null;try{const n={cursors:t!=null&&t.reset?void 0:e.sessionLogsCursors,limit:500};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(n.agents=e.workspaceAgentIds);const s=await e.client.request("sessions.transcript",n),r=Array.isArray(s.entries)?s.entries:[],o=!!(t!=null&&t.reset||Object.keys(e.sessionLogsCursors).length===0);e.sessionLogsEntries=o?r:[...e.sessionLogsEntries,...r].slice(-Hp),s.cursors&&(e.sessionLogsCursors=s.cursors),Array.isArray(s.agents)&&(e.sessionLogsAgents=s.agents),e.sessionLogsLastFetchAt=Date.now()}catch(n){e.sessionLogsError=String(n)}finally{t!=null&&t.quiet||(e.sessionLogsLoading=!1)}}}const Zl=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:sn},Symbol.toStringTag,{value:"Module"}));async function Jl(e,t){if(!(!e.client||!e.connected))try{const n={},i=await e.client.request("memory.audit",n);i!=null&&i.ok&&(e.auditEntries=i.entries??[])}catch{}}async function qp(e,t){if(!(!e.client||!e.connected))try{const n={};await e.client.request("memory.auditClear",n),e.auditEntries=[]}catch{}}function Re(e){return e instanceof Error?e.message:String(e)}let Nn=null;function gn(e,t){Nn&&clearTimeout(Nn),e.filesMessage={kind:"success",text:t},Nn=setTimeout(()=>{e.filesMessage=null,Nn=null},3e3)}async function mn(e,t){if(!(!e.client||!e.connected)){if(!t){e.filesTree=[],e.filesRoot="";return}if(!e.filesLoading){e.filesLoading=!0,e.filesError=null;try{const n={};t&&(n.agentId=t);const i=await e.client.request("files.tree",n);i!=null&&i.tree&&(e.filesTree=i.tree,e.filesRoot=i.root??"")}catch(n){e.filesError=Re(n)}finally{e.filesLoading=!1}}}}async function Vp(e,t,n){e.filesSelectedPaths=new Set([t]),await ec(e,t,n)}async function Gp(e,t,n){const i=new Set(e.filesSelectedPaths);if(i.has(t)?i.delete(t):i.add(t),e.filesSelectedPaths=i,i.size===1){const s=[...i][0];await ec(e,s,n)}else e.filesSelectedPath=null,e.filesPreviewContent=null,e.filesPreviewSize=null,e.filesPreviewBinary=!1}async function Qp(e,t){if(!e.client||!e.connected)return;const n=[...e.filesSelectedPaths];if(n.length===0)return;let i=0,s="";for(const r of n)try{await tc(e,r,t),i++}catch(o){s=Re(o)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:gn(e,`${i} file${i!==1?"s":""} downloaded`)}async function Yp(e,t,n,i){const s=t.split("/").pop()??t,r=n==="."?s:`${n}/${s}`;r!==t&&await nc(e,t,r,i)}async function ec(e,t,n){if(!(!e.client||!e.connected)){e.filesSelectedPath=t,e.filesPreviewLoading=!0,e.filesPreviewContent=null,e.filesPreviewBinary=!1,e.filesPreviewSize=null;try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.read",i);e.filesPreviewContent=(s==null?void 0:s.content)??null,e.filesPreviewBinary=(s==null?void 0:s.binary)??!1,e.filesPreviewSize=(s==null?void 0:s.size)??null}catch(i){e.filesError=Re(i)}finally{e.filesPreviewLoading=!1}}}async function tc(e,t,n){if(!(!e.client||!e.connected))try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.download",i);if(!(s!=null&&s.base64)){e.filesMessage={kind:"error",text:"Download failed: no data"};return}const r=Uint8Array.from(atob(s.base64),c=>c.charCodeAt(0)),o=new Blob([r]),a=URL.createObjectURL(o),l=document.createElement("a");l.href=a,l.download=s.name??t.split("/").pop()??"download",document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:Re(i)}}}async function Xp(e,t,n,i){if(!e.client||!e.connected)return;e.filesUploadBusy=!0,e.filesMessage=null;let s=0,r="";for(const o of n)try{const a=await o.arrayBuffer(),l=btoa(new Uint8Array(a).reduce((u,f)=>u+String.fromCharCode(f),"")),c={path:t,name:o.name,data:l};i&&(c.agentId=i),await e.client.request("files.upload",c),s++}catch(a){r=Re(a)}e.filesUploadBusy=!1,r?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${r}`:r}:gn(e,`${s} file${s!==1?"s":""} uploaded`),await mn(e,i)}async function Zp(e,t,n){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const i={path:t};n&&(i.agentId=n),await e.client.request("files.delete",i),gn(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await mn(e,n)}catch(i){e.filesMessage={kind:"error",text:Re(i)}}}}async function nc(e,t,n,i){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const s={from:t,to:n};i&&(s.agentId=i),await e.client.request("files.move",s),gn(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await mn(e,i)}catch(s){e.filesMessage={kind:"error",text:Re(s)}}}}async function fr(e,t){if(!(!e.client||!e.connected))try{const n={};t&&(n.agentId=t);const i=await e.client.request("memory.status",n);i!=null&&i.ok&&(e.filesMemoryStatus={dirty:i.dirty??!1,files:i.files??0,chunks:i.chunks??0,model:i.model,embeddingState:i.embeddingState})}catch{}}async function Jp(e,t){if(!(!e.client||!e.connected)&&!e.filesReindexBusy){e.filesReindexBusy=!0,e.filesMessage=null;try{const n={force:!0};t&&(n.agentId=t);const i=await e.client.request("memory.reindex",n),s=(i==null?void 0:i.files)??0,r=(i==null?void 0:i.chunks)??0;gn(e,`Re-indexed: ${s} files, ${r} chunks`),await fr(e,t)}catch(n){e.filesMessage={kind:"error",text:Re(n)}}finally{e.filesReindexBusy=!1}}}function eh(e,t){const n=new Set(e.filesExpandedDirs);n.has(t)?n.delete(t):n.add(t),e.filesExpandedDirs=n}async function th(e,t,n){if(!(!e.client||!e.connected)){if(!t.trim()){e.filesSearchResults=null;return}e.filesSearchLoading=!0,e.filesSearchResults=null;try{const i={query:t.trim(),maxResults:20};n&&(i.agentId=n);const s=await e.client.request("memory.search",i);e.filesSearchResults=(s==null?void 0:s.results)??[]}catch(i){e.filesMessage={kind:"error",text:Re(i)},e.filesSearchResults=null}finally{e.filesSearchLoading=!1}}}function nh(e){e.filesSearchQuery="",e.filesSearchResults=null}function ih(e){e.nodesPollInterval==null&&(e.nodesPollInterval=window.setInterval(()=>{pr(e,{quiet:!0})},5e3))}function sh(e){e.nodesPollInterval!=null&&(clearInterval(e.nodesPollInterval),e.nodesPollInterval=null)}function gr(e){e.logsPollInterval==null&&(e.logsPollInterval=window.setInterval(()=>{e.tab==="logs"&&$t(e,{quiet:!0})},2e3))}function mr(e){e.logsPollInterval!=null&&(clearInterval(e.logsPollInterval),e.logsPollInterval=null)}function yr(e){e.sessionLogsPollInterval==null&&(e.sessionLogsPollInterval=window.setInterval(()=>{!(e.advancedPage?e.advancedTab==="logs":e.tab==="logs")||e.logsSubTab!=="session"||sn(e,{quiet:!0})},2e3))}function vr(e){e.sessionLogsPollInterval!=null&&(clearInterval(e.sessionLogsPollInterval),e.sessionLogsPollInterval=null)}function br(e){e.debugPollInterval==null&&(e.debugPollInterval=window.setInterval(()=>{e.tab==="debug"&&rr(e)},3e3))}function wr(e){e.debugPollInterval!=null&&(clearInterval(e.debugPollInterval),e.debugPollInterval=null)}function rh(e){e.auditPollInterval==null&&(e.auditPollInterval=window.setInterval(()=>{Jl(e)},3e4))}function oh(e){e.auditPollInterval!=null&&(clearInterval(e.auditPollInterval),e.auditPollInterval=null)}function ah(e){e.memoryStatusPollInterval==null&&(e.memoryStatusPollInterval=window.setInterval(()=>{e.tab==="files"&&fr(e)},1e4))}function lh(e){e.memoryStatusPollInterval!=null&&(clearInterval(e.memoryStatusPollInterval),e.memoryStatusPollInterval=null)}function We(e,t){var i;const n={...t,lastActiveSessionKey:((i=t.lastActiveSessionKey)==null?void 0:i.trim())||t.sessionKey.trim()||"main"};e.settings=n,cd(n),t.theme!==e.theme&&(e.theme=t.theme,xi(e,hr(t.theme))),e.applySessionKey=e.settings.lastActiveSessionKey}function ic(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&We(e,{...e.settings,lastActiveSessionKey:n})}function ch(e){if(!window.location.search)return;const t=new URLSearchParams(window.location.search),n=t.get("token"),i=t.get("password"),s=t.get("session"),r=t.get("gatewayUrl");let o=!1;if(n!=null){const l=n.trim();l&&l!==e.settings.token&&We(e,{...e.settings,token:l}),t.delete("token"),o=!0}if(i!=null){const l=i.trim();l&&(e.password=l),t.delete("password"),o=!0}if(s!=null){const l=s.trim();l&&(e.sessionKey=l,We(e,{...e.settings,sessionKey:l,lastActiveSessionKey:l}))}if(r!=null){const l=r.trim();l&&l!==e.settings.gatewayUrl&&We(e,{...e.settings,gatewayUrl:l}),t.delete("gatewayUrl"),o=!0}if(!o)return;const a=new URL(window.location.href);a.search=t.toString(),window.history.replaceState({},"",a.toString())}function uh(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),si(e),rc(e,t,!1)}function dh(e,t,n){jp({nextTheme:t,applyTheme:()=>{e.theme=t,We(e,{...e.settings,theme:t}),xi(e,hr(t))},context:n,currentTheme:e.theme})}async function si(e){if(e.tab==="overview"&&await oc(e),e.tab==="channels"&&await vh(e),e.tab==="instances"&&await jl(e),e.tab==="cron"&&await kr(e),e.tab==="skills"&&await ot(e),e.tab==="nodes"&&(await pr(e),await dr(e),await Te(e),await Op(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await Ah(e),hn(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await Sl(e),await Te(e)),e.tab==="debug"&&(await rr(e),e.eventLog=e.eventLogBuffer),e.tab==="logs"){if(e.logsAtBottom=!0,e.logsSubTab==="session"){const{loadSessionLogs:n}=await ne(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Zl);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await $t(e,{reset:!0});wl(e,!0)}}function ph(){if(typeof window>"u")return"";const e=window.__TASKMASTER_CONTROL_UI_BASE_PATH__;return typeof e=="string"&&e.trim()?$i(e):Wp(window.location.pathname)}function hh(e){e.theme=e.settings.theme??"system",xi(e,hr(e.theme))}function xi(e,t){if(e.themeResolved=t,typeof document>"u")return;const n=document.documentElement;n.dataset.theme=t,n.style.colorScheme=t}function fh(e){if(typeof window>"u"||typeof window.matchMedia!="function")return;if(e.themeMedia=window.matchMedia("(prefers-color-scheme: dark)"),e.themeMediaHandler=n=>{e.theme==="system"&&xi(e,n.matches?"dark":"light")},typeof e.themeMedia.addEventListener=="function"){e.themeMedia.addEventListener("change",e.themeMediaHandler);return}e.themeMedia.addListener(e.themeMediaHandler)}function gh(e){if(!e.themeMedia||!e.themeMediaHandler)return;if(typeof e.themeMedia.removeEventListener=="function"){e.themeMedia.removeEventListener("change",e.themeMediaHandler);return}e.themeMedia.removeListener(e.themeMediaHandler),e.themeMedia=null,e.themeMediaHandler=null}function mh(e,t){if(typeof window>"u")return;const n=Xl(window.location.pathname,e.basePath)??"chat";sc(e,n),rc(e,n,t)}function yh(e){var s;if(typeof window>"u")return;const t=Xl(window.location.pathname,e.basePath);if(!t)return;const i=(s=new URL(window.location.href).searchParams.get("session"))==null?void 0:s.trim();i&&(e.sessionKey=i,We(e,{...e.settings,sessionKey:i,lastActiveSessionKey:i})),sc(e,t)}function sc(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),e.connected&&si(e)}function rc(e,t,n){if(typeof window>"u")return;const i=pn(Up(t,e.basePath)),s=pn(window.location.pathname),r=new URL(window.location.href);t==="chat"&&e.sessionKey?r.searchParams.set("session",e.sessionKey):r.searchParams.delete("session"),s!==i&&(r.pathname=i),n?window.history.replaceState({},"",r.toString()):window.history.pushState({},"",r.toString())}async function oc(e){await Promise.all([q(e,!1),jl(e),nr(e),fn(e),rr(e)])}async function vh(e){await Promise.all([q(e,!0),Sl(e),Te(e)])}async function kr(e){await Promise.all([q(e,!1),fn(e),ki(e)])}function ac(e){return e.chatSending||!!e.chatRunId}function bh(e){const t=e.trim();if(!t)return!1;const n=t.toLowerCase();return n==="/stop"?!0:n==="stop"||n==="esc"||n==="abort"||n==="wait"||n==="exit"}async function lc(e){e.connected&&(e.chatMessage="",await vl(e))}function wh(e,t,n){const i=t.trim(),s=!!(n&&n.length>0);!i&&!s||(e.chatQueue=[...e.chatQueue,{id:tr(),text:i,createdAt:Date.now(),attachments:s?n==null?void 0:n.map(r=>({...r})):void 0}],hn(e))}async function cc(e,t,n){var s,r;ir(e);const i=await yl(e,t,n==null?void 0:n.attachments);return!i&&(n==null?void 0:n.previousDraft)!=null&&(e.chatMessage=n.previousDraft),!i&&(n!=null&&n.previousAttachments)&&(e.chatAttachments=n.previousAttachments),i&&ic(e,e.sessionKey),i&&(n!=null&&n.restoreDraft)&&((s=n.previousDraft)!=null&&s.trim())&&(e.chatMessage=n.previousDraft),i&&(n!=null&&n.restoreAttachments)&&((r=n.previousAttachments)!=null&&r.length)&&(e.chatAttachments=n.previousAttachments),hn(e),i&&!e.chatRunId&&uc(e),i}async function uc(e){if(!e.connected||ac(e))return;const[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n,await cc(e,t.text,{attachments:t.attachments})||(e.chatQueue=[t,...e.chatQueue])}function kh(e,t){e.chatQueue=e.chatQueue.filter(n=>n.id!==t)}async function Sh(e,t,n){if(!e.connected)return;const i=e.chatMessage,s=(t??e.chatMessage).trim(),r=e.chatAttachments??[],o=t==null?r:[],a=o.length>0;if(!(!s&&!a)){if(bh(s)){await lc(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[]),ac(e)){wh(e,s,o);return}await cc(e,s,{previousDraft:t==null?i:void 0,restoreDraft:!!(t&&(n!=null&&n.restoreDraft)),attachments:a?o:void 0,previousAttachments:t==null?r:void 0,restoreAttachments:!!(t&&(n!=null&&n.restoreDraft))})}}async function Ah(e){await Promise.all([Ee(e),nr(e),Ls(e)]),hn(e,!0)}const $h=uc;function xh(e){var s,r,o;const t=cl(e.sessionKey);if(t!=null&&t.agentId)return t.agentId;const n=(s=e.hello)==null?void 0:s.snapshot;return((o=(r=n==null?void 0:n.sessionDefaults)==null?void 0:r.defaultAgentId)==null?void 0:o.trim())||"main"}function Eh(e,t){const n=$i(e),i=encodeURIComponent(t);return n?`${n}/avatar/${i}?meta=1`:`/avatar/${i}?meta=1`}async function Ls(e){if(!e.connected){e.chatAvatarUrl=null;return}const t=xh(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;const n=Eh(e.basePath,t);try{const i=await fetch(n,{method:"GET"});if(!i.ok){e.chatAvatarUrl=null;return}const s=await i.json(),r=typeof s.avatarUrl=="string"?s.avatarUrl.trim():"";e.chatAvatarUrl=r||null}catch{e.chatAvatarUrl=null}}const D={messageSquare:h`<svg viewBox="0 0 24 24"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>`,barChart:h`<svg viewBox="0 0 24 24"><line x1="12" x2="12" y1="20" y2="10"/><line x1="18" x2="18" y1="20" y2="4"/><line x1="6" x2="6" y1="20" y2="16"/></svg>`,link:h`<svg viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>`,radio:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="2"/><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"/></svg>`,fileText:h`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><line x1="16" x2="8" y1="13" y2="13"/><line x1="16" x2="8" y1="17" y2="17"/><line x1="10" x2="8" y1="9" y2="9"/></svg>`,zap:h`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:h`<svg viewBox="0 0 24 24"><rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/></svg>`,settings:h`<svg viewBox="0 0 24 24"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>`,bug:h`<svg viewBox="0 0 24 24"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>`,scrollText:h`<svg viewBox="0 0 24 24"><path d="M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4"/><path d="M19 17V5a2 2 0 0 0-2-2H4"/><path d="M15 8h-5"/><path d="M15 12h-5"/></svg>`,folder:h`<svg viewBox="0 0 24 24"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/></svg>`,users:h`<svg viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>`,menu:h`<svg viewBox="0 0 24 24"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>`,x:h`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:h`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:h`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,search:h`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:h`<svg viewBox="0 0 24 24"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"/><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"/><path d="M3.477 10.896a4 4 0 0 1 .585-.396"/><path d="M19.938 10.5a4 4 0 0 1 .585.396"/><path d="M6 18a4 4 0 0 1-1.967-.516"/><path d="M19.967 17.484A4 4 0 0 1 18 18"/></svg>`,book:h`<svg viewBox="0 0 24 24"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/></svg>`,loader:h`<svg viewBox="0 0 24 24"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>`,rotateCw:h`<svg viewBox="0 0 24 24"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/></svg>`,download:h`<svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/></svg>`,wrench:h`<svg viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`,fileCode:h`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><path d="m10 13-2 2 2 2"/><path d="m14 17 2-2-2-2"/></svg>`,edit:h`<svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>`,penLine:h`<svg viewBox="0 0 24 24"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>`,paperclip:h`<svg viewBox="0 0 24 24"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>`,globe:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg>`,image:h`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/></svg>`,smartphone:h`<svg viewBox="0 0 24 24"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/></svg>`,plug:h`<svg viewBox="0 0 24 24"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/></svg>`,circle:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>`,puzzle:h`<svg viewBox="0 0 24 24"><path d="M19.439 7.85c-.049.322.059.648.289.878l1.568 1.568c.47.47.706 1.087.706 1.704s-.235 1.233-.706 1.704l-1.611 1.611a.98.98 0 0 1-.837.276c-.47-.07-.802-.48-.968-.925a2.501 2.501 0 1 0-3.214 3.214c.446.166.855.497.925.968a.979.979 0 0 1-.276.837l-1.61 1.61a2.404 2.404 0 0 1-1.705.707 2.402 2.402 0 0 1-1.704-.706l-1.568-1.568a1.026 1.026 0 0 0-.877-.29c-.493.074-.84.504-1.02.968a2.5 2.5 0 1 1-3.237-3.237c.464-.18.894-.527.967-1.02a1.026 1.026 0 0 0-.289-.877l-1.568-1.568A2.402 2.402 0 0 1 1.998 12c0-.617.236-1.234.706-1.704L4.23 8.77c.24-.24.581-.353.917-.303.515.076.874.54 1.02 1.02a2.5 2.5 0 1 0 3.237-3.237c-.48-.146-.944-.505-1.02-1.02a.98.98 0 0 1 .303-.917l1.526-1.526A2.402 2.402 0 0 1 11.998 2c.617 0 1.234.236 1.704.706l1.568 1.568c.23.23.556.338.877.29.493-.074.84-.504 1.02-.968a2.5 2.5 0 1 1 3.236 3.236c-.464.18-.894.527-.967 1.02Z"/></svg>`,info:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>`,send:h`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg>`,slidersHorizontal:h`<svg viewBox="0 0 24 24"><line x1="21" x2="14" y1="4" y2="4"/><line x1="10" x2="3" y1="4" y2="4"/><line x1="21" x2="12" y1="12" y2="12"/><line x1="8" x2="3" y1="12" y2="12"/><line x1="21" x2="16" y1="20" y2="20"/><line x1="12" x2="3" y1="20" y2="20"/><line x1="14" x2="14" y1="2" y2="6"/><line x1="8" x2="8" y1="10" y2="14"/><line x1="16" x2="16" y1="18" y2="22"/></svg>`,square:h`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:h`<svg viewBox="0 0 24 24"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg>`,eyeOff:h`<svg viewBox="0 0 24 24"><path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/><path d="M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"/><path d="M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"/><line x1="2" x2="22" y1="2" y2="22"/></svg>`,trash:h`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,chevronDown:h`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:h`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 3v18"/><path d="M3 7.5h4"/><path d="M3 12h18"/><path d="M3 16.5h4"/><path d="M17 3v18"/><path d="M17 7.5h4"/><path d="M17 16.5h4"/></svg>`},Th="Taskmaster",Ch="/taskmaster-icon.png",dc="#00d4ff";let Dn=null;function Ie(){return Dn||(Dn={name:window.__TASKMASTER_BRAND_NAME__||Th,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||Ch,accentColor:window.__TASKMASTER_ACCENT_COLOR__||dc},Dn)}function _h(e){const t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);return t?`${parseInt(t[1],16)}, ${parseInt(t[2],16)}, ${parseInt(t[3],16)}`:null}function Mh(e){if(e===dc)return;const t=_h(e);if(!t)return;const n=document.documentElement;n.style.setProperty("--accent",e),n.style.setProperty("--accent-hover",e),n.style.setProperty("--accent-muted",e),n.style.setProperty("--primary",e),n.style.setProperty("--ring",e),n.style.setProperty("--accent-subtle",`rgba(${t}, 0.15)`),n.style.setProperty("--accent-glow",`rgba(${t}, 0.25)`),n.style.setProperty("--tasker-orange",e),n.style.setProperty("--tasker-orange-hover",e),n.style.setProperty("--tasker-orange-glow",`rgba(${t}, 0.25)`)}const Ph=h`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>`,Lh=h`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>`;let Ro=!1;function Ih(){Ro||(Ro=!0,document.addEventListener("click",e=>{const t=document.getElementById("nav-burger-toggle");if(!(t!=null&&t.checked))return;const n=t.closest(".setup-header");n!=null&&n.contains(e.target)||(t.checked=!1)}))}function ut(e,t){const n=(u,f)=>u===e?h`<span class="sp-page-nav-current">${u}</span>`:h`<a href=${f}>${u}</a>`,i=h`
|
|
19
|
+
`],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-session-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function zd(e){if(typeof ResizeObserver>"u")return;const t=e.querySelector(".topbar");if(!t)return;const n=()=>{const{height:i}=t.getBoundingClientRect();e.style.setProperty("--topbar-height",`${i}px`)};n(),e.topbarObserver=new ResizeObserver(()=>n()),e.topbarObserver.observe(t)}function ze(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function nt(e){return`${JSON.stringify(e,null,2).trimEnd()}
|
|
20
|
+
`}function wl(e,t,n){if(t.length===0)return;let i=e;for(let r=0;r<t.length-1;r+=1){const o=t[r],a=t[r+1];if(typeof o=="number"){if(!Array.isArray(i))return;i[o]==null&&(i[o]=typeof a=="number"?[]:{}),i=i[o]}else{if(typeof i!="object"||i==null)return;const l=i;l[o]==null&&(l[o]=typeof a=="number"?[]:{}),i=l[o]}}const s=t[t.length-1];if(typeof s=="number"){Array.isArray(i)&&(i[s]=n);return}typeof i=="object"&&i!=null&&(i[s]=n)}async function Ce(e){if(!(!e.client||!e.connected)){e.configLoading=!0,e.lastError=null;try{const t=await e.client.request("config.get",{});Hd(e,t)}catch(t){e.lastError=String(t)}finally{e.configLoading=!1}}}async function kl(e){if(!(!e.client||!e.connected)&&!e.configSchemaLoading){e.configSchemaLoading=!0;try{const t=await e.client.request("config.schema",{});jd(e,t)}catch(t){e.lastError=String(t)}finally{e.configSchemaLoading=!1}}}function jd(e,t){e.configSchema=t.schema??null,e.configUiHints=t.uiHints??{},e.configSchemaVersion=t.version??null}function Hd(e,t){e.configSnapshot=t;const n=typeof t.raw=="string"?t.raw:t.config&&typeof t.config=="object"?nt(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=nt(e.configForm):e.configRaw=n,e.configValid=typeof t.valid=="boolean"?t.valid:null,e.configIssues=Array.isArray(t.issues)?t.issues:[],e.configFormDirty||(e.configForm=ze(t.config??{}),e.configFormOriginal=ze(t.config??{}),e.configRawOriginal=n)}async function qd(e){var t;if(!(!e.client||!e.connected)){e.configSaving=!0,e.lastError=null;try{const n=e.configFormMode==="form"&&e.configForm?nt(e.configForm):e.configRaw,i=(t=e.configSnapshot)==null?void 0:t.hash;if(!i){e.lastError="Config hash missing; reload and retry.";return}await e.client.request("config.set",{raw:n,baseHash:i}),e.configFormDirty=!1,await Ce(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function fn(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("cron.status",{});e.cronStatus=t}catch(t){e.cronError=String(t)}}async function ki(e){if(!(!e.client||!e.connected)&&!e.cronLoading){e.cronLoading=!0,e.cronError=null;try{const t={includeDisabled:!0};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(t.agentIds=e.workspaceAgentIds);const n=await e.client.request("cron.list",t);e.cronJobs=Array.isArray(n.jobs)?n.jobs:[]}catch(t){e.cronError=String(t)}finally{e.cronLoading=!1}}}function Vd(e){if(e.scheduleKind==="at"){const n=Date.parse(e.scheduleAt);if(!Number.isFinite(n))throw new Error("Invalid run time.");return{kind:"at",atMs:n}}if(e.scheduleKind==="every"){const n=ti(e.everyAmount,0);if(n<=0)throw new Error("Invalid interval amount.");const i=e.everyUnit;return{kind:"every",everyMs:n*(i==="minutes"?6e4:i==="hours"?36e5:864e5)}}const t=e.cronExpr.trim();if(!t)throw new Error("Cron expression required.");return{kind:"cron",expr:t,tz:e.cronTz.trim()||void 0}}function Gd(e){if(e.payloadKind==="systemEvent"){const s=e.payloadText.trim();if(!s)throw new Error("System event text required.");return{kind:"systemEvent",text:s}}const t=e.payloadText.trim();if(!t)throw new Error("Agent message required.");const n={kind:"agentTurn",message:t};e.deliver&&(n.deliver=!0),e.channel&&(n.channel=e.channel),e.to.trim()&&(n.to=e.to.trim());const i=ti(e.timeoutSeconds,0);return i>0&&(n.timeoutSeconds=i),n}async function Qd(e){var t;if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=Vd(e.cronForm),i=Gd(e.cronForm),s=e.cronForm.agentId.trim(),r=(t=e.cronForm.accountId)==null?void 0:t.trim(),o={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:s||void 0,accountId:r||void 0,enabled:e.cronForm.enabled,schedule:n,sessionTarget:e.cronForm.sessionTarget,wakeMode:e.cronForm.wakeMode,payload:i,isolation:e.cronForm.postToMainPrefix.trim()&&e.cronForm.sessionTarget==="isolated"?{postToMainPrefix:e.cronForm.postToMainPrefix.trim()}:void 0};if(!o.name)throw new Error("Name required.");await e.client.request("cron.add",o),e.cronForm={...e.cronForm,name:"",description:"",payloadText:""},await ki(e),await fn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Yd(e,t,n){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.update",{id:t.id,patch:{enabled:n}}),await ki(e),await fn(e)}catch(i){e.cronError=String(i)}finally{e.cronBusy=!1}}}async function Xd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.run",{id:t.id,mode:"force"}),await Cs(e,t.id)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Zd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.remove",{id:t.id}),e.cronRunsJobId===t.id&&(e.cronRunsJobId=null,e.cronRuns=[]),await ki(e),await fn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Cs(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("cron.runs",{id:t,limit:50});e.cronRunsJobId=t,e.cronRuns=Array.isArray(n.entries)?n.entries:[]}catch(n){e.cronError=String(n)}}async function q(e,t){if(!(!e.client||!e.connected)&&!e.channelsLoading){e.channelsLoading=!0,e.channelsError=null;try{const n=await e.client.request("channels.status",{probe:t,timeoutMs:8e3});e.channelsSnapshot=n,e.channelsLastSuccess=Date.now()}catch(n){e.channelsError=String(n)}finally{e.channelsLoading=!1}}}async function sr(e,t,n){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0,e.whatsappActiveQrAccountId=n??null;try{const i=await e.client.request("web.login.start",{force:t,timeoutMs:3e4,accountId:n});e.whatsappLoginMessage=i.message??null,e.whatsappLoginQrDataUrl=i.qrDataUrl??null,e.whatsappLoginConnected=null}catch(i){e.whatsappLoginMessage=String(i),e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Sl(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{const n=await e.client.request("web.login.wait",{timeoutMs:12e4,accountId:t});e.whatsappLoginMessage=n.message??null,e.whatsappLoginConnected=n.connected??null,n.connected&&(e.whatsappLoginQrDataUrl=null,e.whatsappActiveQrAccountId=null,e.whatsappPairedPhone=n.selfPhone??null)}catch(n){e.whatsappLoginMessage=String(n),e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Al(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t}),e.whatsappLoginMessage="Logged out.",e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null}catch(n){e.whatsappLoginMessage=String(n)}finally{e.whatsappBusy=!1}}}async function xl(e,t){if(!e.client||!e.connected||e.whatsappAccountSaving)return;const n=t.trim();if(!n){e.whatsappAccountError="Account name is required.";return}const i=n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");if(!i){e.whatsappAccountError="Invalid account name.";return}e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const s=await e.client.request("config.get",{});e.configSnapshot=s;const r=ze(s.config??{});(!r.channels||typeof r.channels!="object")&&(r.channels={});const o=r.channels;(!o.whatsapp||typeof o.whatsapp!="object")&&(o.whatsapp={});const a=o.whatsapp;(!a.accounts||typeof a.accounts!="object")&&(a.accounts={});const l=a.accounts;if(l[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}l[i]={name:n,provider:"baileys"};const c=s.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const d=nt(r);await e.client.request("config.set",{raw:d,baseHash:c}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await q(e,!0),await sr(e,!0,i)}catch(s){e.whatsappAccountError=String(s)}finally{e.whatsappAccountSaving=!1}}async function $l(e,t){if(!(!e.client||!e.connected)&&!e.whatsappAccountSaving){e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=ze(n.config??{}),s=i.channels,r=s==null?void 0:s.whatsapp,o=r==null?void 0:r.accounts;if(!o){e.whatsappAccountError="No accounts found in config.";return}if(Object.keys(o).length<=1){e.whatsappAccountError="Cannot remove the last account.";return}if(!o[t]){e.whatsappAccountError=`Account "${t}" not found.`;return}try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t})}catch{}delete o[t],Array.isArray(i.bindings)&&(i.bindings=i.bindings.filter(d=>{const f=d.match;return!f||f.channel!=="whatsapp"?!0:f.accountId!==t}));const l=n.hash;if(!l){e.whatsappAccountError="Config hash missing; reload and retry.";return}const c=nt(i);await e.client.request("config.set",{raw:c,baseHash:l}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await q(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const Jd=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:xl,loadChannels:q,logoutWhatsApp:Al,removeWhatsAppAccount:$l,startWhatsAppLogin:sr,waitWhatsAppLogin:Sl},Symbol.toStringTag,{value:"Module"}));async function rr(e){if(!(!e.client||!e.connected)&&!e.debugLoading){e.debugLoading=!0;try{const[t,n,i,s]=await Promise.all([e.client.request("status",{}),e.client.request("health",{}),e.client.request("models.list",{}),e.client.request("last-heartbeat",{})]);e.debugStatus=t,e.debugHealth=n;const r=i;e.debugModels=Array.isArray(r==null?void 0:r.models)?r==null?void 0:r.models:[],e.debugHeartbeat=s}catch(t){e.debugCallError=String(t)}finally{e.debugLoading=!1}}}const ep=2e3,tp=new Set(["trace","debug","info","warn","error","fatal"]);function np(e){if(typeof e!="string")return null;const t=e.trim();if(!t.startsWith("{")||!t.endsWith("}"))return null;try{const n=JSON.parse(t);return!n||typeof n!="object"?null:n}catch{return null}}function ip(e){if(typeof e!="string")return null;const t=e.toLowerCase();return tp.has(t)?t:null}function El(e){if(!e.trim())return{raw:e,message:e};try{const t=JSON.parse(e),n=t&&typeof t._meta=="object"&&t._meta!==null?t._meta:null,i=typeof t.time=="string"?t.time:typeof(n==null?void 0:n.date)=="string"?n==null?void 0:n.date:null,s=ip((n==null?void 0:n.logLevelName)??(n==null?void 0:n.level)),r=typeof t[0]=="string"?t[0]:typeof(n==null?void 0:n.name)=="string"?n==null?void 0:n.name:null,o=np(r);let a=null;o&&(typeof o.subsystem=="string"?a=o.subsystem:typeof o.module=="string"&&(a=o.module)),!a&&r&&r.length<120&&(a=r);let l=null;return typeof t[1]=="string"?l=t[1]:!o&&typeof t[0]=="string"?l=t[0]:typeof t.message=="string"&&(l=t.message),{raw:e,time:i,level:s,subsystem:a,message:l??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function xt(e,t){if(!(!e.client||!e.connected)&&!(e.logsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.logsLoading=!0),e.logsError=null;try{const i=await e.client.request("logs.tail",{cursor:t!=null&&t.reset?void 0:e.logsCursor??void 0,limit:e.logsLimit,maxBytes:e.logsMaxBytes}),r=(Array.isArray(i.lines)?i.lines.filter(a=>typeof a=="string"):[]).map(El),o=!!(t!=null&&t.reset||i.reset||e.logsCursor==null);e.logsEntries=o?r:[...e.logsEntries,...r].slice(-ep),typeof i.cursor=="number"&&(e.logsCursor=i.cursor),typeof i.file=="string"&&(e.logsFile=i.file),e.logsTruncated=!!i.truncated,e.logsLastFetchAt=Date.now()}catch(n){e.logsError=String(n)}finally{t!=null&&t.quiet||(e.logsLoading=!1)}}}const sp=Object.freeze(Object.defineProperty({__proto__:null,loadLogs:xt,parseLogLine:El},Symbol.toStringTag,{value:"Module"}));const Cl={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:se,n:Vn,Gx:Co,Gy:To,a:Xi,d:Zi,h:rp}=Cl,it=32,or=64,op=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},Z=(e="")=>{const t=new Error(e);throw op(t,Z),t},ap=e=>typeof e=="bigint",lp=e=>typeof e=="string",cp=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",je=(e,t,n="")=>{const i=cp(e),s=e==null?void 0:e.length,r=t!==void 0;if(!i||r&&s!==t){const o=n&&`"${n}" `,a=r?` of length ${t}`:"",l=i?`length=${s}`:`type=${typeof e}`;Z(o+"expected Uint8Array"+a+", got "+l)}return e},Si=e=>new Uint8Array(e),Tl=e=>Uint8Array.from(e),_l=(e,t)=>e.toString(16).padStart(t,"0"),Ml=e=>Array.from(je(e)).map(t=>_l(t,2)).join(""),Pe={_0:48,_9:57,A:65,F:70,a:97,f:102},_o=e=>{if(e>=Pe._0&&e<=Pe._9)return e-Pe._0;if(e>=Pe.A&&e<=Pe.F)return e-(Pe.A-10);if(e>=Pe.a&&e<=Pe.f)return e-(Pe.a-10)},Pl=e=>{const t="hex invalid";if(!lp(e))return Z(t);const n=e.length,i=n/2;if(n%2)return Z(t);const s=Si(i);for(let r=0,o=0;r<i;r++,o+=2){const a=_o(e.charCodeAt(o)),l=_o(e.charCodeAt(o+1));if(a===void 0||l===void 0)return Z(t);s[r]=a*16+l}return s},Ll=()=>globalThis==null?void 0:globalThis.crypto,up=()=>{var e;return((e=Ll())==null?void 0:e.subtle)??Z("crypto.subtle must be defined, consider polyfill")},dn=(...e)=>{const t=Si(e.reduce((i,s)=>i+je(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},dp=(e=it)=>Ll().getRandomValues(Si(e)),ni=BigInt,Xe=(e,t,n,i="bad number: out of range")=>ap(e)&&t<=e&&e<n?e:Z(i),M=(e,t=se)=>{const n=e%t;return n>=0n?n:t+n},Il=e=>M(e,Vn),pp=(e,t)=>{(e===0n||t<=0n)&&Z("no inverse n="+e+" mod="+t);let n=M(e,t),i=t,s=0n,r=1n;for(;n!==0n;){const o=i/n,a=i%n,l=s-r*o;i=n,n=a,s=r,r=l}return i===1n?M(s,t):Z("no inverse")},hp=e=>{const t=Ol[e];return typeof t!="function"&&Z("hashes."+e+" not set"),t},Ji=e=>e instanceof st?e:Z("Point expected"),Ts=2n**256n,$e=class $e{constructor(t,n,i,s){B(this,"X");B(this,"Y");B(this,"Z");B(this,"T");const r=Ts;this.X=Xe(t,0n,r),this.Y=Xe(n,0n,r),this.Z=Xe(i,1n,r),this.T=Xe(s,0n,r),Object.freeze(this)}static CURVE(){return Cl}static fromAffine(t){return new $e(t.x,t.y,1n,M(t.x*t.y))}static fromBytes(t,n=!1){const i=Zi,s=Tl(je(t,it)),r=t[31];s[31]=r&-129;const o=Nl(s);Xe(o,0n,n?Ts:se);const l=M(o*o),c=M(l-1n),d=M(i*l+1n);let{isValid:f,value:u}=gp(c,d);f||Z("bad point: y not sqrt");const p=(u&1n)===1n,b=(r&128)!==0;return!n&&u===0n&&b&&Z("bad point: x==0, isLastByteOdd"),b!==p&&(u=M(-u)),new $e(u,o,1n,M(u*o))}static fromHex(t,n){return $e.fromBytes(Pl(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){const t=Xi,n=Zi,i=this;if(i.is0())return Z("bad point: ZERO");const{X:s,Y:r,Z:o,T:a}=i,l=M(s*s),c=M(r*r),d=M(o*o),f=M(d*d),u=M(l*t),p=M(d*M(u+c)),b=M(f+M(n*M(l*c)));if(p!==b)return Z("bad point: equation left != right (1)");const w=M(s*r),S=M(o*a);return w!==S?Z("bad point: equation left != right (2)"):this}equals(t){const{X:n,Y:i,Z:s}=this,{X:r,Y:o,Z:a}=Ji(t),l=M(n*a),c=M(r*s),d=M(i*a),f=M(o*s);return l===c&&d===f}is0(){return this.equals(St)}negate(){return new $e(M(-this.X),this.Y,this.Z,M(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=Xi,r=M(t*t),o=M(n*n),a=M(2n*M(i*i)),l=M(s*r),c=t+n,d=M(M(c*c)-r-o),f=l+o,u=f-a,p=l-o,b=M(d*u),w=M(f*p),S=M(d*p),C=M(u*f);return new $e(b,w,C,S)}add(t){const{X:n,Y:i,Z:s,T:r}=this,{X:o,Y:a,Z:l,T:c}=Ji(t),d=Xi,f=Zi,u=M(n*o),p=M(i*a),b=M(r*f*c),w=M(s*l),S=M((n+i)*(o+a)-u-p),C=M(w-b),x=M(w+b),E=M(p-d*u),T=M(S*C),I=M(x*E),U=M(S*E),Q=M(C*x);return new $e(T,I,Q,U)}subtract(t){return this.add(Ji(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return St;if(Xe(t,1n,Vn),t===1n)return this;if(this.equals(rt))return Ep(t).p;let i=St,s=rt;for(let r=this;t>0n;r=r.double(),t>>=1n)t&1n?i=i.add(r):n&&(s=s.add(r));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){const{X:t,Y:n,Z:i}=this;if(this.equals(St))return{x:0n,y:1n};const s=pp(i,se);M(i*s)!==1n&&Z("invalid inverse");const r=M(t*s),o=M(n*s);return{x:r,y:o}}toBytes(){const{x:t,y:n}=this.assertValidity().toAffine(),i=Rl(n);return i[31]|=t&1n?128:0,i}toHex(){return Ml(this.toBytes())}clearCofactor(){return this.multiply(ni(rp),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Vn/2n,!1).double();return Vn%2n&&(t=t.add(this)),t.is0()}};B($e,"BASE"),B($e,"ZERO");let st=$e;const rt=new st(Co,To,1n,M(Co*To)),St=new st(0n,1n,1n,0n);st.BASE=rt;st.ZERO=St;const Rl=e=>Pl(_l(Xe(e,0n,Ts),or)).reverse(),Nl=e=>ni("0x"+Ml(Tl(je(e)).reverse())),ke=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=se;return n},fp=e=>{const n=e*e%se*e%se,i=ke(n,2n)*n%se,s=ke(i,1n)*e%se,r=ke(s,5n)*s%se,o=ke(r,10n)*r%se,a=ke(o,20n)*o%se,l=ke(a,40n)*a%se,c=ke(l,80n)*l%se,d=ke(c,80n)*l%se,f=ke(d,10n)*r%se;return{pow_p_5_8:ke(f,2n)*e%se,b2:n}},Mo=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,gp=(e,t)=>{const n=M(t*t*t),i=M(n*n*t),s=fp(e*i).pow_p_5_8;let r=M(e*n*s);const o=M(t*r*r),a=r,l=M(r*Mo),c=o===e,d=o===M(-e),f=o===M(-e*Mo);return c&&(r=a),(d||f)&&(r=l),(M(r)&1n)===1n&&(r=M(-r)),{isValid:c||d,value:r}},_s=e=>Il(Nl(e)),ar=(...e)=>Ol.sha512Async(dn(...e)),mp=(...e)=>hp("sha512")(dn(...e)),Dl=e=>{const t=e.slice(0,it);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(it,or),i=_s(t),s=rt.multiply(i),r=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:r}},lr=e=>ar(je(e,it)).then(Dl),yp=e=>Dl(mp(je(e,it))),vp=e=>lr(e).then(t=>t.pointBytes),bp=e=>ar(e.hashable).then(e.finish),wp=(e,t,n)=>{const{pointBytes:i,scalar:s}=e,r=_s(t),o=rt.multiply(r).toBytes();return{hashable:dn(o,i,n),finish:c=>{const d=Il(r+_s(c)*s);return je(dn(o,Rl(d)),or)}}},kp=async(e,t)=>{const n=je(e),i=await lr(t),s=await ar(i.prefix,n);return bp(wp(i,s,n))},Ol={sha512Async:async e=>{const t=up(),n=dn(e);return Si(await t.digest("SHA-512",n.buffer))},sha512:void 0},Sp=(e=dp(it))=>e,Ap={getExtendedPublicKeyAsync:lr,getExtendedPublicKey:yp,randomSecretKey:Sp},ii=8,xp=256,Bl=Math.ceil(xp/ii)+1,Ms=2**(ii-1),$p=()=>{const e=[];let t=rt,n=t;for(let i=0;i<Bl;i++){n=t,e.push(n);for(let s=1;s<Ms;s++)n=n.add(t),e.push(n);t=n.double()}return e};let Po;const Lo=(e,t)=>{const n=t.negate();return e?n:t},Ep=e=>{const t=Po||(Po=$p());let n=St,i=rt;const s=2**ii,r=s,o=ni(s-1),a=ni(ii);for(let l=0;l<Bl;l++){let c=Number(e&o);e>>=a,c>Ms&&(c-=r,e+=1n);const d=l*Ms,f=d,u=d+Math.abs(c)-1,p=l%2!==0,b=c<0;c===0?i=i.add(Lo(p,t[f])):n=n.add(Lo(b,t[u]))}return e!==0n&&Z("invalid wnaf"),{p:n,f:i}},es="taskmaster-device-identity-v1";function Ps(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function Fl(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),i=atob(n),s=new Uint8Array(i.length);for(let r=0;r<i.length;r+=1)s[r]=i.charCodeAt(r);return s}function Cp(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Ul(e){const t=await crypto.subtle.digest("SHA-256",e);return Cp(new Uint8Array(t))}async function Tp(){const e=Ap.randomSecretKey(),t=await vp(e);return{deviceId:await Ul(t),publicKey:Ps(t),privateKey:Ps(e)}}async function _p(){try{const n=localStorage.getItem(es);if(n){const i=JSON.parse(n);if((i==null?void 0:i.version)===1&&typeof i.deviceId=="string"&&typeof i.publicKey=="string"&&typeof i.privateKey=="string"){const s=await Ul(Fl(i.publicKey));if(s!==i.deviceId){const r={...i,deviceId:s};return localStorage.setItem(es,JSON.stringify(r)),{deviceId:s,publicKey:i.publicKey,privateKey:i.privateKey}}return{deviceId:i.deviceId,publicKey:i.publicKey,privateKey:i.privateKey}}}}catch{}const e=await Tp(),t={version:1,deviceId:e.deviceId,publicKey:e.publicKey,privateKey:e.privateKey,createdAtMs:Date.now()};return localStorage.setItem(es,JSON.stringify(t)),e}async function Mp(e,t){const n=Fl(e),i=new TextEncoder().encode(t),s=await kp(i,n);return Ps(s)}const Wl="taskmaster.device.auth.v1";function cr(e){return e.trim()}function Pp(e){if(!Array.isArray(e))return[];const t=new Set;for(const n of e){const i=n.trim();i&&t.add(i)}return[...t].sort()}function ur(){try{const e=window.localStorage.getItem(Wl);if(!e)return null;const t=JSON.parse(e);return!t||t.version!==1||!t.deviceId||typeof t.deviceId!="string"||!t.tokens||typeof t.tokens!="object"?null:t}catch{return null}}function Kl(e){try{window.localStorage.setItem(Wl,JSON.stringify(e))}catch{}}function Lp(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return null;const n=cr(e.role),i=t.tokens[n];return!i||typeof i.token!="string"?null:i}function Ip(e){const t=cr(e.role),n={version:1,deviceId:e.deviceId,tokens:{}},i=ur();i&&i.deviceId===e.deviceId&&(n.tokens={...i.tokens});const s={token:e.token,role:t,scopes:Pp(e.scopes),updatedAtMs:Date.now()};return n.tokens[t]=s,Kl(n),s}function Rp(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return;const n=cr(e.role);if(!t.tokens[n])return;const i={...t,tokens:{...t.tokens}};delete i.tokens[n],Kl(i)}async function dr(e,t){if(!(!e.client||!e.connected)&&!e.devicesLoading){e.devicesLoading=!0,t!=null&&t.quiet||(e.devicesError=null);try{const n=await e.client.request("device.pair.list",{});e.devicesList={pending:Array.isArray(n==null?void 0:n.pending)?n.pending:[],paired:Array.isArray(n==null?void 0:n.paired)?n.paired:[]}}catch(n){t!=null&&t.quiet||(e.devicesError=String(n))}finally{e.devicesLoading=!1}}}async function pr(e,t){if(!(!e.client||!e.connected)&&!e.nodesLoading){e.nodesLoading=!0,t!=null&&t.quiet||(e.lastError=null);try{const n=await e.client.request("node.list",{});e.nodes=Array.isArray(n.nodes)?n.nodes:[]}catch(n){t!=null&&t.quiet||(e.lastError=String(n))}finally{e.nodesLoading=!1}}}function Np(e){return{method:"exec.approvals.get",params:{}}}async function Dp(e,t){if(!(!e.client||!e.connected)&&!e.execApprovalsLoading){e.execApprovalsLoading=!0,e.lastError=null;try{const n=Np(t);if(!n){e.lastError="Select a node before loading exec approvals.";return}const i=await e.client.request(n.method,n.params);Op(e,i)}catch(n){e.lastError=String(n)}finally{e.execApprovalsLoading=!1}}}function Op(e,t){e.execApprovalsSnapshot=t,e.execApprovalsDirty||(e.execApprovalsForm=ze(t.file??{}))}async function zl(e){if(!(!e.client||!e.connected)&&!e.presenceLoading){e.presenceLoading=!0,e.presenceError=null,e.presenceStatus=null;try{const t=await e.client.request("system-presence",{});Array.isArray(t)?(e.presenceEntries=t,e.presenceStatus=t.length===0?"No instances yet.":null):(e.presenceEntries=[],e.presenceStatus="No presence payload.")}catch(t){e.presenceError=String(t)}finally{e.presenceLoading=!1}}}function Ct(e,t,n){if(!t.trim())return;const i={...e.skillMessages};n?i[t]=n:delete i[t],e.skillMessages=i}function Ai(e){return e instanceof Error?e.message:String(e)}async function ot(e,t){if(t!=null&&t.clearMessages&&Object.keys(e.skillMessages).length>0&&(e.skillMessages={}),!(!e.client||!e.connected)&&!e.skillsLoading){e.skillsLoading=!0,e.skillsError=null;try{const n=await e.client.request("skills.status",{});n&&(e.skillsReport=n)}catch(n){e.skillsError=Ai(n)}finally{e.skillsLoading=!1}}}function jl(e,t,n){e.skillEdits={...e.skillEdits,[t]:n}}async function Hl(e,t,n){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{await e.client.request("skills.update",{skillKey:t,enabled:n}),await ot(e),Ct(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ai(i);e.skillsError=s,Ct(e,t,{kind:"error",message:s})}finally{e.skillsBusyKey=null}}}async function ql(e,t){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const n=e.skillEdits[t]??"";await e.client.request("skills.update",{skillKey:t,apiKey:n}),await ot(e),Ct(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ai(n);e.skillsError=i,Ct(e,t,{kind:"error",message:i})}finally{e.skillsBusyKey=null}}}async function Vl(e,t,n,i){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const s=await e.client.request("skills.install",{name:n,installId:i,timeoutMs:12e4});await ot(e),Ct(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const r=Ai(s);e.skillsError=r,Ct(e,t,{kind:"error",message:r})}finally{e.skillsBusyKey=null}}}const Bp=Object.freeze(Object.defineProperty({__proto__:null,installSkill:Vl,loadSkills:ot,saveSkillApiKey:ql,updateSkillEdit:jl,updateSkillEnabled:Hl},Symbol.toStringTag,{value:"Module"})),Gl={overview:"/overview",channels:"/channels",instances:"/instances",cron:"/cron",skills:"/skills",nodes:"/nodes",chat:"/chat",admins:"/admins",config:"/config",debug:"/debug",logs:"/logs"},Ql=new Map(Object.entries(Gl).map(([e,t])=>[t,e]));function xi(e){if(!e)return"";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t==="/"?"":(t.endsWith("/")&&(t=t.slice(0,-1)),t)}function pn(e){if(!e)return"/";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t}function Fp(e,t=""){const n=xi(t),i=Gl[e];return n?`${n}${i}`:i}function Yl(e,t=""){const n=xi(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=pn(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Ql.get(s)??null}function Up(e){let t=pn(e);if(t.endsWith("/index.html")&&(t=pn(t.slice(0,-11))),t==="/")return"";const n=t.split("/").filter(Boolean);if(n.length===0)return"";for(let i=0;i<n.length;i++){const s=`/${n.slice(i).join("/")}`.toLowerCase();if(Ql.has(s)){const r=n.slice(0,i);return r.length?`/${r.join("/")}`:""}}return`/${n.join("/")}`}function Wp(){return typeof window>"u"||typeof window.matchMedia!="function"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function hr(e){return e==="system"?Wp():e}const In=e=>Number.isNaN(e)?.5:e<=0?0:e>=1?1:e,Kp=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches??!1,Rn=e=>{e.classList.remove("theme-transition"),e.style.removeProperty("--theme-switch-x"),e.style.removeProperty("--theme-switch-y")},zp=({nextTheme:e,applyTheme:t,context:n,currentTheme:i})=>{var c;if(i===e)return;const s=globalThis.document??null;if(!s){t();return}const r=s.documentElement,o=s,a=Kp();if(!!o.startViewTransition&&!a){let d=.5,f=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")d=In(n.pointerClientX/window.innerWidth),f=In(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const u=n.element.getBoundingClientRect();u.width>0&&u.height>0&&typeof window<"u"&&(d=In((u.left+u.width/2)/window.innerWidth),f=In((u.top+u.height/2)/window.innerHeight))}r.style.setProperty("--theme-switch-x",`${d*100}%`),r.style.setProperty("--theme-switch-y",`${f*100}%`),r.classList.add("theme-transition");try{const u=(c=o.startViewTransition)==null?void 0:c.call(o,()=>{t()});u!=null&&u.finished?u.finished.finally(()=>Rn(r)):Rn(r)}catch{Rn(r),t()}return}t(),Rn(r)},jp=2e3;async function sn(e,t){if(!(!e.client||!e.connected)&&!(e.sessionLogsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.sessionLogsLoading=!0),e.sessionLogsError=null;try{const n={cursors:t!=null&&t.reset?void 0:e.sessionLogsCursors,limit:500};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(n.agents=e.workspaceAgentIds);const s=await e.client.request("sessions.transcript",n),r=Array.isArray(s.entries)?s.entries:[],o=!!(t!=null&&t.reset||Object.keys(e.sessionLogsCursors).length===0);e.sessionLogsEntries=o?r:[...e.sessionLogsEntries,...r].slice(-jp),s.cursors&&(e.sessionLogsCursors=s.cursors),Array.isArray(s.agents)&&(e.sessionLogsAgents=s.agents),e.sessionLogsLastFetchAt=Date.now()}catch(n){e.sessionLogsError=String(n)}finally{t!=null&&t.quiet||(e.sessionLogsLoading=!1)}}}const Xl=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:sn},Symbol.toStringTag,{value:"Module"}));async function Zl(e,t){if(!(!e.client||!e.connected))try{const n={},i=await e.client.request("memory.audit",n);i!=null&&i.ok&&(e.auditEntries=i.entries??[])}catch{}}async function Hp(e,t){if(!(!e.client||!e.connected))try{const n={};await e.client.request("memory.auditClear",n),e.auditEntries=[]}catch{}}function Re(e){return e instanceof Error?e.message:String(e)}let Nn=null;function gn(e,t){Nn&&clearTimeout(Nn),e.filesMessage={kind:"success",text:t},Nn=setTimeout(()=>{e.filesMessage=null,Nn=null},3e3)}async function mn(e,t){if(!(!e.client||!e.connected)){if(!t){e.filesTree=[],e.filesRoot="";return}if(!e.filesLoading){e.filesLoading=!0,e.filesError=null;try{const n={};t&&(n.agentId=t);const i=await e.client.request("files.tree",n);i!=null&&i.tree&&(e.filesTree=i.tree,e.filesRoot=i.root??"")}catch(n){e.filesError=Re(n)}finally{e.filesLoading=!1}}}}async function qp(e,t,n){e.filesSelectedPaths=new Set([t]),await Jl(e,t,n)}async function Vp(e,t,n){const i=new Set(e.filesSelectedPaths);if(i.has(t)?i.delete(t):i.add(t),e.filesSelectedPaths=i,i.size===1){const s=[...i][0];await Jl(e,s,n)}else e.filesSelectedPath=null,e.filesPreviewContent=null,e.filesPreviewSize=null,e.filesPreviewBinary=!1}async function Gp(e,t){if(!e.client||!e.connected)return;const n=[...e.filesSelectedPaths];if(n.length===0)return;let i=0,s="";for(const r of n)try{await ec(e,r,t),i++}catch(o){s=Re(o)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:gn(e,`${i} file${i!==1?"s":""} downloaded`)}async function Qp(e,t,n,i){const s=t.split("/").pop()??t,r=n==="."?s:`${n}/${s}`;r!==t&&await tc(e,t,r,i)}async function Jl(e,t,n){if(!(!e.client||!e.connected)){e.filesSelectedPath=t,e.filesPreviewLoading=!0,e.filesPreviewContent=null,e.filesPreviewBinary=!1,e.filesPreviewSize=null;try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.read",i);e.filesPreviewContent=(s==null?void 0:s.content)??null,e.filesPreviewBinary=(s==null?void 0:s.binary)??!1,e.filesPreviewSize=(s==null?void 0:s.size)??null}catch(i){e.filesError=Re(i)}finally{e.filesPreviewLoading=!1}}}async function ec(e,t,n){if(!(!e.client||!e.connected))try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.download",i);if(!(s!=null&&s.base64)){e.filesMessage={kind:"error",text:"Download failed: no data"};return}const r=Uint8Array.from(atob(s.base64),c=>c.charCodeAt(0)),o=new Blob([r]),a=URL.createObjectURL(o),l=document.createElement("a");l.href=a,l.download=s.name??t.split("/").pop()??"download",document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:Re(i)}}}async function Yp(e,t,n,i){if(!e.client||!e.connected)return;e.filesUploadBusy=!0,e.filesMessage=null;let s=0,r="";for(const o of n)try{const a=await o.arrayBuffer(),l=btoa(new Uint8Array(a).reduce((d,f)=>d+String.fromCharCode(f),"")),c={path:t,name:o.name,data:l};i&&(c.agentId=i),await e.client.request("files.upload",c),s++}catch(a){r=Re(a)}e.filesUploadBusy=!1,r?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${r}`:r}:gn(e,`${s} file${s!==1?"s":""} uploaded`),await mn(e,i)}async function Xp(e,t,n){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const i={path:t};n&&(i.agentId=n),await e.client.request("files.delete",i),gn(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await mn(e,n)}catch(i){e.filesMessage={kind:"error",text:Re(i)}}}}async function tc(e,t,n,i){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const s={from:t,to:n};i&&(s.agentId=i),await e.client.request("files.move",s),gn(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await mn(e,i)}catch(s){e.filesMessage={kind:"error",text:Re(s)}}}}async function fr(e,t){if(!(!e.client||!e.connected))try{const n={};t&&(n.agentId=t);const i=await e.client.request("memory.status",n);i!=null&&i.ok&&(e.filesMemoryStatus={dirty:i.dirty??!1,syncing:i.syncing,syncProgress:i.syncProgress,files:i.files??0,chunks:i.chunks??0,model:i.model,embeddingState:i.embeddingState})}catch{}}async function Zp(e,t){if(!(!e.client||!e.connected)&&!e.filesReindexBusy){e.filesReindexBusy=!0,e.filesMessage=null;try{const n={force:!0};t&&(n.agentId=t);const i=await e.client.request("memory.reindex",n),s=(i==null?void 0:i.files)??0,r=(i==null?void 0:i.chunks)??0;gn(e,`Re-indexed: ${s} files, ${r} chunks`),await fr(e,t)}catch(n){e.filesMessage={kind:"error",text:Re(n)}}finally{e.filesReindexBusy=!1}}}function Jp(e,t){const n=new Set(e.filesExpandedDirs);n.has(t)?n.delete(t):n.add(t),e.filesExpandedDirs=n}async function eh(e,t,n){if(!(!e.client||!e.connected)){if(!t.trim()){e.filesSearchResults=null;return}e.filesSearchLoading=!0,e.filesSearchResults=null;try{const i={query:t.trim(),maxResults:20};n&&(i.agentId=n);const s=await e.client.request("memory.search",i);e.filesSearchResults=(s==null?void 0:s.results)??[]}catch(i){e.filesMessage={kind:"error",text:Re(i)},e.filesSearchResults=null}finally{e.filesSearchLoading=!1}}}function th(e){e.filesSearchQuery="",e.filesSearchResults=null}function nh(e){e.nodesPollInterval==null&&(e.nodesPollInterval=window.setInterval(()=>{pr(e,{quiet:!0})},5e3))}function ih(e){e.nodesPollInterval!=null&&(clearInterval(e.nodesPollInterval),e.nodesPollInterval=null)}function gr(e){e.logsPollInterval==null&&(e.logsPollInterval=window.setInterval(()=>{e.tab==="logs"&&xt(e,{quiet:!0})},2e3))}function mr(e){e.logsPollInterval!=null&&(clearInterval(e.logsPollInterval),e.logsPollInterval=null)}function yr(e){e.sessionLogsPollInterval==null&&(e.sessionLogsPollInterval=window.setInterval(()=>{!(e.advancedPage?e.advancedTab==="logs":e.tab==="logs")||e.logsSubTab!=="session"||sn(e,{quiet:!0})},2e3))}function vr(e){e.sessionLogsPollInterval!=null&&(clearInterval(e.sessionLogsPollInterval),e.sessionLogsPollInterval=null)}function br(e){e.debugPollInterval==null&&(e.debugPollInterval=window.setInterval(()=>{e.tab==="debug"&&rr(e)},3e3))}function wr(e){e.debugPollInterval!=null&&(clearInterval(e.debugPollInterval),e.debugPollInterval=null)}function sh(e){e.auditPollInterval==null&&(e.auditPollInterval=window.setInterval(()=>{Zl(e)},3e4))}function rh(e){e.auditPollInterval!=null&&(clearInterval(e.auditPollInterval),e.auditPollInterval=null)}function oh(e){e.memoryStatusPollInterval==null&&(e.memoryStatusPollInterval=window.setInterval(()=>{e.tab==="files"&&fr(e)},3e3))}function ah(e){e.memoryStatusPollInterval!=null&&(clearInterval(e.memoryStatusPollInterval),e.memoryStatusPollInterval=null)}function We(e,t){var i;const n={...t,lastActiveSessionKey:((i=t.lastActiveSessionKey)==null?void 0:i.trim())||t.sessionKey.trim()||"main"};e.settings=n,ld(n),t.theme!==e.theme&&(e.theme=t.theme,$i(e,hr(t.theme))),e.applySessionKey=e.settings.lastActiveSessionKey}function nc(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&We(e,{...e.settings,lastActiveSessionKey:n})}function lh(e){if(!window.location.search)return;const t=new URLSearchParams(window.location.search),n=t.get("token"),i=t.get("password"),s=t.get("session"),r=t.get("gatewayUrl");let o=!1;if(n!=null){const l=n.trim();l&&l!==e.settings.token&&We(e,{...e.settings,token:l}),t.delete("token"),o=!0}if(i!=null){const l=i.trim();l&&(e.password=l),t.delete("password"),o=!0}if(s!=null){const l=s.trim();l&&(e.sessionKey=l,We(e,{...e.settings,sessionKey:l,lastActiveSessionKey:l}))}if(r!=null){const l=r.trim();l&&l!==e.settings.gatewayUrl&&We(e,{...e.settings,gatewayUrl:l}),t.delete("gatewayUrl"),o=!0}if(!o)return;const a=new URL(window.location.href);a.search=t.toString(),window.history.replaceState({},"",a.toString())}function ch(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),si(e),sc(e,t,!1)}function uh(e,t,n){zp({nextTheme:t,applyTheme:()=>{e.theme=t,We(e,{...e.settings,theme:t}),$i(e,hr(t))},context:n,currentTheme:e.theme})}async function si(e){if(e.tab==="overview"&&await rc(e),e.tab==="channels"&&await yh(e),e.tab==="instances"&&await zl(e),e.tab==="cron"&&await kr(e),e.tab==="skills"&&await ot(e),e.tab==="nodes"&&(await pr(e),await dr(e),await Ce(e),await Dp(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await Sh(e),hn(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await kl(e),await Ce(e)),e.tab==="debug"&&(await rr(e),e.eventLog=e.eventLogBuffer),e.tab==="logs"){if(e.logsAtBottom=!0,e.logsSubTab==="session"){const{loadSessionLogs:n}=await ne(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Xl);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await xt(e,{reset:!0});bl(e,!0)}}function dh(){if(typeof window>"u")return"";const e=window.__TASKMASTER_CONTROL_UI_BASE_PATH__;return typeof e=="string"&&e.trim()?xi(e):Up(window.location.pathname)}function ph(e){e.theme=e.settings.theme??"system",$i(e,hr(e.theme))}function $i(e,t){if(e.themeResolved=t,typeof document>"u")return;const n=document.documentElement;n.dataset.theme=t,n.style.colorScheme=t}function hh(e){if(typeof window>"u"||typeof window.matchMedia!="function")return;if(e.themeMedia=window.matchMedia("(prefers-color-scheme: dark)"),e.themeMediaHandler=n=>{e.theme==="system"&&$i(e,n.matches?"dark":"light")},typeof e.themeMedia.addEventListener=="function"){e.themeMedia.addEventListener("change",e.themeMediaHandler);return}e.themeMedia.addListener(e.themeMediaHandler)}function fh(e){if(!e.themeMedia||!e.themeMediaHandler)return;if(typeof e.themeMedia.removeEventListener=="function"){e.themeMedia.removeEventListener("change",e.themeMediaHandler);return}e.themeMedia.removeListener(e.themeMediaHandler),e.themeMedia=null,e.themeMediaHandler=null}function gh(e,t){if(typeof window>"u")return;const n=Yl(window.location.pathname,e.basePath)??"chat";ic(e,n),sc(e,n,t)}function mh(e){var s;if(typeof window>"u")return;const t=Yl(window.location.pathname,e.basePath);if(!t)return;const i=(s=new URL(window.location.href).searchParams.get("session"))==null?void 0:s.trim();i&&(e.sessionKey=i,We(e,{...e.settings,sessionKey:i,lastActiveSessionKey:i})),ic(e,t)}function ic(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),e.connected&&si(e)}function sc(e,t,n){if(typeof window>"u")return;const i=pn(Fp(t,e.basePath)),s=pn(window.location.pathname),r=new URL(window.location.href);t==="chat"&&e.sessionKey?r.searchParams.set("session",e.sessionKey):r.searchParams.delete("session"),s!==i&&(r.pathname=i),n?window.history.replaceState({},"",r.toString()):window.history.pushState({},"",r.toString())}async function rc(e){await Promise.all([q(e,!1),zl(e),nr(e),fn(e),rr(e)])}async function yh(e){await Promise.all([q(e,!0),kl(e),Ce(e)])}async function kr(e){await Promise.all([q(e,!1),fn(e),ki(e)])}function oc(e){return e.chatSending||!!e.chatRunId}function vh(e){const t=e.trim();if(!t)return!1;const n=t.toLowerCase();return n==="/stop"?!0:n==="stop"||n==="esc"||n==="abort"||n==="wait"||n==="exit"}async function ac(e){e.connected&&(e.chatMessage="",await yl(e))}function bh(e,t,n){const i=t.trim(),s=!!(n&&n.length>0);!i&&!s||(e.chatQueue=[...e.chatQueue,{id:tr(),text:i,createdAt:Date.now(),attachments:s?n==null?void 0:n.map(r=>({...r})):void 0}],hn(e))}async function lc(e,t,n){var s,r;ir(e);const i=await ml(e,t,n==null?void 0:n.attachments);return!i&&(n==null?void 0:n.previousDraft)!=null&&(e.chatMessage=n.previousDraft),!i&&(n!=null&&n.previousAttachments)&&(e.chatAttachments=n.previousAttachments),i&&nc(e,e.sessionKey),i&&(n!=null&&n.restoreDraft)&&((s=n.previousDraft)!=null&&s.trim())&&(e.chatMessage=n.previousDraft),i&&(n!=null&&n.restoreAttachments)&&((r=n.previousAttachments)!=null&&r.length)&&(e.chatAttachments=n.previousAttachments),hn(e),i&&!e.chatRunId&&cc(e),i}async function cc(e){if(!e.connected||oc(e))return;const[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n,await lc(e,t.text,{attachments:t.attachments})||(e.chatQueue=[t,...e.chatQueue])}function wh(e,t){e.chatQueue=e.chatQueue.filter(n=>n.id!==t)}async function kh(e,t,n){if(!e.connected)return;const i=e.chatMessage,s=(t??e.chatMessage).trim(),r=e.chatAttachments??[],o=t==null?r:[],a=o.length>0;if(!(!s&&!a)){if(vh(s)){await ac(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[]),oc(e)){bh(e,s,o);return}await lc(e,s,{previousDraft:t==null?i:void 0,restoreDraft:!!(t&&(n!=null&&n.restoreDraft)),attachments:a?o:void 0,previousAttachments:t==null?r:void 0,restoreAttachments:!!(t&&(n!=null&&n.restoreDraft))})}}async function Sh(e){await Promise.all([Ee(e),nr(e),Ls(e)]),hn(e,!0)}const Ah=cc;function xh(e){var s,r,o;const t=ll(e.sessionKey);if(t!=null&&t.agentId)return t.agentId;const n=(s=e.hello)==null?void 0:s.snapshot;return((o=(r=n==null?void 0:n.sessionDefaults)==null?void 0:r.defaultAgentId)==null?void 0:o.trim())||"main"}function $h(e,t){const n=xi(e),i=encodeURIComponent(t);return n?`${n}/avatar/${i}?meta=1`:`/avatar/${i}?meta=1`}async function Ls(e){if(!e.connected){e.chatAvatarUrl=null;return}const t=xh(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;const n=$h(e.basePath,t);try{const i=await fetch(n,{method:"GET"});if(!i.ok){e.chatAvatarUrl=null;return}const s=await i.json(),r=typeof s.avatarUrl=="string"?s.avatarUrl.trim():"";e.chatAvatarUrl=r||null}catch{e.chatAvatarUrl=null}}const D={messageSquare:h`<svg viewBox="0 0 24 24"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>`,barChart:h`<svg viewBox="0 0 24 24"><line x1="12" x2="12" y1="20" y2="10"/><line x1="18" x2="18" y1="20" y2="4"/><line x1="6" x2="6" y1="20" y2="16"/></svg>`,link:h`<svg viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>`,radio:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="2"/><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"/></svg>`,fileText:h`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><line x1="16" x2="8" y1="13" y2="13"/><line x1="16" x2="8" y1="17" y2="17"/><line x1="10" x2="8" y1="9" y2="9"/></svg>`,zap:h`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:h`<svg viewBox="0 0 24 24"><rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/></svg>`,settings:h`<svg viewBox="0 0 24 24"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>`,bug:h`<svg viewBox="0 0 24 24"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>`,scrollText:h`<svg viewBox="0 0 24 24"><path d="M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4"/><path d="M19 17V5a2 2 0 0 0-2-2H4"/><path d="M15 8h-5"/><path d="M15 12h-5"/></svg>`,folder:h`<svg viewBox="0 0 24 24"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/></svg>`,users:h`<svg viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>`,menu:h`<svg viewBox="0 0 24 24"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>`,x:h`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:h`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:h`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,search:h`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:h`<svg viewBox="0 0 24 24"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"/><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"/><path d="M3.477 10.896a4 4 0 0 1 .585-.396"/><path d="M19.938 10.5a4 4 0 0 1 .585.396"/><path d="M6 18a4 4 0 0 1-1.967-.516"/><path d="M19.967 17.484A4 4 0 0 1 18 18"/></svg>`,book:h`<svg viewBox="0 0 24 24"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/></svg>`,loader:h`<svg viewBox="0 0 24 24"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>`,rotateCw:h`<svg viewBox="0 0 24 24"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/></svg>`,download:h`<svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/></svg>`,wrench:h`<svg viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`,fileCode:h`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><path d="m10 13-2 2 2 2"/><path d="m14 17 2-2-2-2"/></svg>`,edit:h`<svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>`,penLine:h`<svg viewBox="0 0 24 24"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>`,paperclip:h`<svg viewBox="0 0 24 24"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>`,globe:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg>`,image:h`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/></svg>`,smartphone:h`<svg viewBox="0 0 24 24"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/></svg>`,plug:h`<svg viewBox="0 0 24 24"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/></svg>`,circle:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>`,puzzle:h`<svg viewBox="0 0 24 24"><path d="M19.439 7.85c-.049.322.059.648.289.878l1.568 1.568c.47.47.706 1.087.706 1.704s-.235 1.233-.706 1.704l-1.611 1.611a.98.98 0 0 1-.837.276c-.47-.07-.802-.48-.968-.925a2.501 2.501 0 1 0-3.214 3.214c.446.166.855.497.925.968a.979.979 0 0 1-.276.837l-1.61 1.61a2.404 2.404 0 0 1-1.705.707 2.402 2.402 0 0 1-1.704-.706l-1.568-1.568a1.026 1.026 0 0 0-.877-.29c-.493.074-.84.504-1.02.968a2.5 2.5 0 1 1-3.237-3.237c.464-.18.894-.527.967-1.02a1.026 1.026 0 0 0-.289-.877l-1.568-1.568A2.402 2.402 0 0 1 1.998 12c0-.617.236-1.234.706-1.704L4.23 8.77c.24-.24.581-.353.917-.303.515.076.874.54 1.02 1.02a2.5 2.5 0 1 0 3.237-3.237c-.48-.146-.944-.505-1.02-1.02a.98.98 0 0 1 .303-.917l1.526-1.526A2.402 2.402 0 0 1 11.998 2c.617 0 1.234.236 1.704.706l1.568 1.568c.23.23.556.338.877.29.493-.074.84-.504 1.02-.968a2.5 2.5 0 1 1 3.236 3.236c-.464.18-.894.527-.967 1.02Z"/></svg>`,info:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>`,send:h`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:h`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg>`,slidersHorizontal:h`<svg viewBox="0 0 24 24"><line x1="21" x2="14" y1="4" y2="4"/><line x1="10" x2="3" y1="4" y2="4"/><line x1="21" x2="12" y1="12" y2="12"/><line x1="8" x2="3" y1="12" y2="12"/><line x1="21" x2="16" y1="20" y2="20"/><line x1="12" x2="3" y1="20" y2="20"/><line x1="14" x2="14" y1="2" y2="6"/><line x1="8" x2="8" y1="10" y2="14"/><line x1="16" x2="16" y1="18" y2="22"/></svg>`,square:h`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:h`<svg viewBox="0 0 24 24"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg>`,eyeOff:h`<svg viewBox="0 0 24 24"><path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/><path d="M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"/><path d="M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"/><line x1="2" x2="22" y1="2" y2="22"/></svg>`,trash:h`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,chevronDown:h`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:h`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 3v18"/><path d="M3 7.5h4"/><path d="M3 12h18"/><path d="M3 16.5h4"/><path d="M17 3v18"/><path d="M17 7.5h4"/><path d="M17 16.5h4"/></svg>`},Eh="Taskmaster",Ch="/taskmaster-icon.png",uc="#00d4ff";let Dn=null;function Ie(){return Dn||(Dn={name:window.__TASKMASTER_BRAND_NAME__||Eh,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||Ch,accentColor:window.__TASKMASTER_ACCENT_COLOR__||uc},Dn)}function Th(e){const t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);return t?`${parseInt(t[1],16)}, ${parseInt(t[2],16)}, ${parseInt(t[3],16)}`:null}function _h(e){if(e===uc)return;const t=Th(e);if(!t)return;const n=document.documentElement;n.style.setProperty("--accent",e),n.style.setProperty("--accent-hover",e),n.style.setProperty("--accent-muted",e),n.style.setProperty("--primary",e),n.style.setProperty("--ring",e),n.style.setProperty("--accent-subtle",`rgba(${t}, 0.15)`),n.style.setProperty("--accent-glow",`rgba(${t}, 0.25)`),n.style.setProperty("--tasker-orange",e),n.style.setProperty("--tasker-orange-hover",e),n.style.setProperty("--tasker-orange-glow",`rgba(${t}, 0.25)`)}const Mh=h`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>`,Ph=h`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>`;let Io=!1;function Lh(){Io||(Io=!0,document.addEventListener("click",e=>{const t=document.getElementById("nav-burger-toggle");if(!(t!=null&&t.checked))return;const n=t.closest(".setup-header");n!=null&&n.contains(e.target)||(t.checked=!1)}))}function ut(e,t){const n=(d,f)=>d===e?h`<span class="sp-page-nav-current">${d}</span>`:h`<a href=${f}>${d}</a>`,i=h`
|
|
21
21
|
${n("Setup","/setup")}
|
|
22
22
|
${n("Chat","/chat")}
|
|
23
23
|
${n("Admins","/admins")}
|
|
@@ -25,10 +25,10 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
25
25
|
${n("Files","/files")}
|
|
26
26
|
${n("Browser","/browser")}
|
|
27
27
|
${n("Advanced","/advanced")}
|
|
28
|
-
`,r=t&&(t.isMaster!==!1||!t.hasPins)?
|
|
29
|
-
${
|
|
28
|
+
`,r=t&&(t.isMaster!==!1||!t.hasPins)?Ih(t):k,o=t!=null&&t.hasPins&&t.onLogout?h`<button class="nav-logout-btn" @click=${t.onLogout} title="Lock">${Mh}</button>`:k,a=(t==null?void 0:t.auditCount)??0,l=a>0&&(t!=null&&t.onAuditClick)?h`<button class="nav-audit-btn" @click=${t.onAuditClick} title="Memory writes to review">
|
|
29
|
+
${Ph}
|
|
30
30
|
<span class="nav-audit-badge">${a>99?"99+":a}</span>
|
|
31
|
-
</button>`:k,c=()=>{const
|
|
31
|
+
</button>`:k,c=()=>{const d=document.getElementById("nav-burger-toggle");d&&(d.checked=!1)};return Lh(),h`
|
|
32
32
|
<div class="setup-header">
|
|
33
33
|
<input type="checkbox" id="nav-burger-toggle" class="nav-burger-checkbox" />
|
|
34
34
|
<div class="setup-header-inner">
|
|
@@ -50,7 +50,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
50
50
|
${i}
|
|
51
51
|
</nav>
|
|
52
52
|
</div>
|
|
53
|
-
`}function
|
|
53
|
+
`}function Ih(e){const{workspaces:t,selectedWorkspace:n,onWorkspaceSelect:i}=e;return h`
|
|
54
54
|
<select
|
|
55
55
|
class="sp-workspace-selector"
|
|
56
56
|
.value=${n??""}
|
|
@@ -64,7 +64,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
64
64
|
<option disabled>───</option>
|
|
65
65
|
<option value="__add__">+ Add Account</option>
|
|
66
66
|
</select>
|
|
67
|
-
`}function
|
|
67
|
+
`}function Rh(e){return e.connected?e.fullscreen&&e.active?h`
|
|
68
68
|
<div class="sp-fullscreen-overlay">
|
|
69
69
|
<div class="sp-fullscreen-toolbar">
|
|
70
70
|
<button
|
|
@@ -196,14 +196,14 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
196
196
|
<p>Connecting to gateway...</p>
|
|
197
197
|
</div>
|
|
198
198
|
</div>
|
|
199
|
-
`}const ri="application/x-taskmaster-file-path";function
|
|
199
|
+
`}const ri="application/x-taskmaster-file-path";function dc(e){return e==null?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function pc(e){const t=e.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Nh(e,t,n){var r,o;e.preventDefault(),e.stopPropagation(),e.currentTarget.classList.remove("sp-drop-target");const i=(r=e.dataTransfer)==null?void 0:r.getData(ri);if(i){pc(i)!==t&&n.onMoveToDir(i,t);return}const s=(o=e.dataTransfer)==null?void 0:o.files;if(s&&s.length>0){const a=Array.from(s).filter(l=>l.name.toLowerCase().endsWith(".md"));a.length>0&&n.onUpload(t,a)}}function hc(e,t,n){const i=e.type==="directory"||e.type==="symlink"&&e.children!=null,s=t.expandedDirs.has(e.path),r=t.selectedPaths.has(e.path),o=n*20+12;return i?h`
|
|
200
200
|
<div
|
|
201
201
|
class="sp-tree-item sp-tree-dir ${s?"expanded":""}"
|
|
202
202
|
style="padding-left: ${o}px;"
|
|
203
203
|
@click=${()=>t.onToggleDir(e.path)}
|
|
204
204
|
@dragover=${a=>{a.preventDefault(),a.stopPropagation(),a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.currentTarget.classList.add("sp-drop-target")}}
|
|
205
205
|
@dragleave=${a=>{a.currentTarget.classList.remove("sp-drop-target")}}
|
|
206
|
-
@drop=${a=>
|
|
206
|
+
@drop=${a=>Nh(a,e.path,t)}
|
|
207
207
|
>
|
|
208
208
|
<span class="sp-tree-chevron">${s?"−":"+"}</span>
|
|
209
209
|
<span class="sp-tree-icon">${D.folder}</span>
|
|
@@ -220,9 +220,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
220
220
|
>
|
|
221
221
|
<span class="sp-tree-icon">${D.fileText}</span>
|
|
222
222
|
<span class="sp-tree-name">${e.name}</span>
|
|
223
|
-
<span class="sp-tree-size">${
|
|
223
|
+
<span class="sp-tree-size">${dc(e.size)}</span>
|
|
224
224
|
</div>
|
|
225
|
-
`}function
|
|
225
|
+
`}function Dh(e){const t=e.selectedPaths.size;return t<2?k:h`
|
|
226
226
|
<div class="sp-bulk-actions">
|
|
227
227
|
<span style="color: var(--tasker-muted-grey); font-size: 13px;">${t} files selected</span>
|
|
228
228
|
<button
|
|
@@ -233,7 +233,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
233
233
|
Download ${t} files
|
|
234
234
|
</button>
|
|
235
235
|
</div>
|
|
236
|
-
`}function
|
|
236
|
+
`}function Oh(e){if(e.selectedPaths.size!==1||!e.selectedPath)return k;if(e.previewLoading)return h`
|
|
237
237
|
<div class="sp-file-preview">
|
|
238
238
|
<div class="setup-spinner" style="width: 32px; height: 32px; margin: 24px auto;"></div>
|
|
239
239
|
</div>
|
|
@@ -243,7 +243,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
243
243
|
<div>
|
|
244
244
|
<strong>${t}</strong>
|
|
245
245
|
<div class="sp-file-preview-meta">
|
|
246
|
-
${e.selectedPath}${e.previewSize!=null?` — ${
|
|
246
|
+
${e.selectedPath}${e.previewSize!=null?` — ${dc(e.previewSize)}`:""}
|
|
247
247
|
</div>
|
|
248
248
|
</div>
|
|
249
249
|
<div class="sp-file-actions">
|
|
@@ -260,7 +260,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
260
260
|
</div>
|
|
261
261
|
${e.previewBinary?h`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">Binary file — use Download to view.</p></div>`:e.previewContent!=null?h`<div class="sp-file-preview-body"><pre class="sp-file-code">${e.previewContent}</pre></div>`:h`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">File too large for preview — use Download.</p></div>`}
|
|
262
262
|
</div>
|
|
263
|
-
`}function
|
|
263
|
+
`}function Bh(e){if(!e.selectedPath)return".";if(e.expandedDirs.has(e.selectedPath))return e.selectedPath;const t=e.selectedPath.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Fh(e){return h`
|
|
264
264
|
<div class="sp-search-bar">
|
|
265
265
|
<input
|
|
266
266
|
type="text"
|
|
@@ -292,7 +292,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
292
292
|
Clear
|
|
293
293
|
</button>`:k}
|
|
294
294
|
</div>
|
|
295
|
-
`}function
|
|
295
|
+
`}function Uh(e){return e.searchResults?e.searchResults.length===0?h`<div class="sp-search-results">
|
|
296
296
|
<div style="padding: 24px; color: var(--tasker-muted-grey); text-align: center;">No results found.</div>
|
|
297
297
|
</div>`:h`
|
|
298
298
|
<div class="sp-search-results">
|
|
@@ -312,7 +312,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
312
312
|
</div>
|
|
313
313
|
`)}
|
|
314
314
|
</div>
|
|
315
|
-
`:k}function
|
|
315
|
+
`:k}function Wh(e){const t=Bh(e);return e.connected?h`
|
|
316
316
|
<div class="setup-container">
|
|
317
317
|
${ut("Files",e.wsProps)}
|
|
318
318
|
<div class="setup-card sp-card-wide">
|
|
@@ -355,9 +355,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
355
355
|
</span>`:h`<span style="display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--tasker-text-grey);">
|
|
356
356
|
<span
|
|
357
357
|
class="setup-status-light"
|
|
358
|
-
style="width: 10px; height: 10px; background: ${e.memoryStatus.dirty?"#ef4444":"#22c55e"}"
|
|
358
|
+
style="width: 10px; height: 10px; background: ${e.memoryStatus.syncing?"#f59e0b":e.memoryStatus.dirty?"#ef4444":"#22c55e"}"
|
|
359
359
|
></span>
|
|
360
|
-
${(()=>{var
|
|
360
|
+
${(()=>{var l;if(e.memoryStatus.syncing&&e.memoryStatus.syncProgress){const{completed:c,total:d,label:f}=e.memoryStatus.syncProgress;return f||(d>0?`Indexing ${c}/${d} files…`:"Indexing…")}const n=e.memoryStatus.files,i=e.memoryStatus.chunks,s=`${n} file${n!==1?"s":""}, ${i} chunks`,r=(l=e.memoryStatus)==null?void 0:l.model;if(!r)return s;const a=(r.includes("/")?r.split("/").pop():r).replace(/[-_]Q\d.*$/i,"").replace(/\.gguf$/i,"");return`${s} · ${a}`})()}
|
|
361
361
|
</span>`:k}
|
|
362
362
|
</div>
|
|
363
363
|
|
|
@@ -369,9 +369,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
369
369
|
|
|
370
370
|
${e.uploadBusy?h`<div style="margin-top: 12px; color: var(--tasker-orange); font-weight: 600; font-size: 14px;">Uploading...</div>`:k}
|
|
371
371
|
|
|
372
|
-
${
|
|
372
|
+
${Fh(e)}
|
|
373
373
|
|
|
374
|
-
${e.searchResults!==null?
|
|
374
|
+
${e.searchResults!==null?Uh(e):h`<div
|
|
375
375
|
class="sp-file-tree"
|
|
376
376
|
@dragover=${n=>{n.preventDefault(),n.dataTransfer&&(n.dataTransfer.dropEffect=n.dataTransfer.types.includes(ri)?"move":"copy")}}
|
|
377
377
|
@drop=${n=>{var r,o;n.preventDefault();const i=(r=n.dataTransfer)==null?void 0:r.getData(ri);if(i){pc(i)!=="."&&e.onMoveToDir(i,".");return}const s=(o=n.dataTransfer)==null?void 0:o.files;if(s&&s.length>0){const a=Array.from(s).filter(l=>l.name.toLowerCase().endsWith(".md"));a.length>0&&e.onUpload(t,a)}}}
|
|
@@ -379,8 +379,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
379
379
|
${e.tree.length===0&&!e.loading?h`<div style="padding: 24px; color: var(--tasker-muted-grey); text-align: center;">No files found. Drop .md files here to upload.</div>`:e.tree.map(n=>hc(n,e,0))}
|
|
380
380
|
</div>`}
|
|
381
381
|
|
|
382
|
+
${Dh(e)}
|
|
382
383
|
${Oh(e)}
|
|
383
|
-
${Bh(e)}
|
|
384
384
|
</div>
|
|
385
385
|
</div>
|
|
386
386
|
`:h`
|
|
@@ -390,7 +390,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
390
390
|
<p>Connecting to gateway...</p>
|
|
391
391
|
</div>
|
|
392
392
|
</div>
|
|
393
|
-
`}const
|
|
393
|
+
`}const Sr="taskmaster_uninstall_done";async function Kh(e){var t,n;if(!(!e.client||!e.connected)&&!e.uninstallBusy){e.uninstallBusy=!0,e.uninstallError=null,(t=e.requestUpdate)==null||t.call(e),zh();try{await e.client.request("system.uninstall",{scopes:["service","state","workspace"],purge:!0})}catch{}e.uninstallBusy=!1,e.uninstallDone=!0,(n=e.requestUpdate)==null||n.call(e)}}function oi(){try{return localStorage.getItem(Sr)==="1"}catch{return!1}}function Ar(){try{localStorage.removeItem(Sr)}catch{}}function zh(){try{localStorage.setItem(Sr,"1")}catch{}}const Ro=Object.freeze(Object.defineProperty({__proto__:null,checkUninstallDone:oi,clearUninstallDone:Ar,runUninstall:Kh},Symbol.toStringTag,{value:"Module"}));function pe(e){return h`
|
|
394
394
|
<span
|
|
395
395
|
class="setup-status-light"
|
|
396
396
|
style="background: ${{good:"#22c55e",bad:"#ef4444",partial:"#eab308",unknown:"#6b7280"}[e]}"
|
|
@@ -403,7 +403,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
403
403
|
>
|
|
404
404
|
${D.info}
|
|
405
405
|
</button>
|
|
406
|
-
`}function
|
|
406
|
+
`}function jh(e){var i;if(!e.infoModalOpen)return k;let t="",n=[];switch(e.infoModalOpen){case"gateway":{const s=typeof window<"u"?window.location.host:"unknown";t="Gateway",n=[{label:"Status",value:e.gatewayHealthy===!1?"Stopped":"Running"},{label:"Address",value:s},{label:"Health",value:e.gatewayHealthMessage||"OK"}];break}case"claude":{const s=e.authExpiresIn;let r="N/A";if(s!=null&&s>0)if(s>60){const o=Math.floor(s/60),a=s%60;r=a>0?`${o}h ${a}m`:`${o}h`}else r=`${s}m`;t="Claude",n=[{label:"Connected",value:e.authConnected?"Yes":"No"},{label:"Token Expiry",value:r},{label:"Renewal",value:"Automatic (tokens refresh on expiry)"},...e.authMessage?[{label:"Message",value:e.authMessage}]:[]];break}case"license":{const s=e.licenseStoredKey?`…${e.licenseStoredKey.slice(-12)}`:"N/A";t="License",n=[{label:"Status",value:e.licenseValid?"Active":"Inactive"},{label:"Key",value:s},{label:"Tier",value:e.licenseTier||"Standard"},{label:"Device ID",value:e.licenseDeviceId||"N/A"}];break}case"whatsapp":{const s=Lt(e),r=s?xr(s,e):null;t="WhatsApp",n=[{label:"Account",value:(r==null?void 0:r.name)||(r==null?void 0:r.accountId)||"Default"},{label:"Phone",value:((i=r==null?void 0:r.self)==null?void 0:i.e164)||"Not paired"},{label:"Connected",value:r!=null&&r.connected?"Yes":"No"},{label:"Linked",value:r!=null&&r.linked?"Yes":"No"},...r!=null&&r.lastError?[{label:"Last Error",value:r.lastError}]:[]];break}case"imessage":{const{thisWsOwns:s}=$r(e);t="iMessage",n=[{label:"Connected",value:s&&e.imessageConnected?"Yes":"No"},{label:"Assigned To",value:e.imessageOwnerWorkspace??"Not assigned"},{label:"Mode",value:"Self-chat only"},...e.imessageLastError?[{label:"Last Error",value:e.imessageLastError}]:[]];break}case"update":{t="Software Update",n=[{label:"Current",value:e.currentVersion?`v${e.currentVersion}`:"Unknown"},{label:"Latest",value:e.latestVersion?`v${e.latestVersion}`:"Unknown"},{label:"Status",value:e.updateAvailable===null?"Not checked":e.updateAvailable?"Update available":"Up to date"},...e.updateMessage?[{label:"Message",value:e.updateMessage}]:[]];break}default:return k}return h`
|
|
407
407
|
<div class="setup-info-overlay" @click=${s=>{s.target.classList.contains("setup-info-overlay")&&e.onInfoModalClose()}}>
|
|
408
408
|
<div class="setup-info-card">
|
|
409
409
|
<h3>${t}</h3>
|
|
@@ -433,7 +433,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
433
433
|
</div>
|
|
434
434
|
`})}
|
|
435
435
|
</div>
|
|
436
|
-
`}function
|
|
436
|
+
`}function No(e){const{licenseKey:t,licenseBusy:n,licenseValid:i,licenseMessage:s,licenseDeviceId:r,onLicenseKeyChange:o,onLicenseActivate:a}=e;return i===!0?h`
|
|
437
437
|
<div class="setup-container">
|
|
438
438
|
<div class="setup-card setup-success">
|
|
439
439
|
${ye("license")}
|
|
@@ -465,7 +465,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
465
465
|
<button
|
|
466
466
|
class="setup-device-id-copy"
|
|
467
467
|
title="Copy Device ID"
|
|
468
|
-
@click=${async l=>{const c=l.currentTarget;try{await navigator.clipboard.writeText(r),c.textContent="Copied!",setTimeout(()=>{c.textContent="Copy"},1500)}catch{const
|
|
468
|
+
@click=${async l=>{const c=l.currentTarget;try{await navigator.clipboard.writeText(r),c.textContent="Copied!",setTimeout(()=>{c.textContent="Copy"},1500)}catch{const d=document.createElement("textarea");d.value=r,d.style.position="fixed",d.style.opacity="0",document.body.appendChild(d),d.select(),document.execCommand("copy"),document.body.removeChild(d),c.textContent="Copied!",setTimeout(()=>{c.textContent="Copy"},1500)}}}
|
|
469
469
|
>Copy</button>
|
|
470
470
|
<p class="setup-hint" style="margin-top: 4px;">
|
|
471
471
|
Send this ID along with your order number to our WhatsApp to receive your license key.
|
|
@@ -502,7 +502,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
502
502
|
</p>
|
|
503
503
|
</div>
|
|
504
504
|
</div>
|
|
505
|
-
`}function
|
|
505
|
+
`}function Hh(e){const{authConnected:t,authBusy:n,authMessage:i,authUrl:s,authCodeInput:r,authExpiresIn:o,onStartAuth:a,onSubmitAuthCode:l,onAuthCodeChange:c,onSkipToWhatsApp:d}=e;return t===!0?h`
|
|
506
506
|
<div class="setup-container">
|
|
507
507
|
<div class="setup-card setup-success">
|
|
508
508
|
${ye("auth")}
|
|
@@ -634,7 +634,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
634
634
|
</p>
|
|
635
635
|
</div>
|
|
636
636
|
</div>
|
|
637
|
-
`}function xr(e,t){const n=new Map(t.whatsappAccounts.map(i=>[i.accountId,i]));return e.whatsappAccountId?n.get(e.whatsappAccountId)??null:e.isDefault&&t.whatsappAccounts.length===1?t.whatsappAccounts[0]??null:null}function Lt(e){var n;const t=(n=e.wsProps)==null?void 0:n.selectedWorkspace;return t?e.workspaces.find(i=>i.name===t)??null:e.workspaces[0]??null}function
|
|
637
|
+
`}function xr(e,t){const n=new Map(t.whatsappAccounts.map(i=>[i.accountId,i]));return e.whatsappAccountId?n.get(e.whatsappAccountId)??null:e.isDefault&&t.whatsappAccounts.length===1?t.whatsappAccounts[0]??null:null}function Lt(e){var n;const t=(n=e.wsProps)==null?void 0:n.selectedWorkspace;return t?e.workspaces.find(i=>i.name===t)??null:e.workspaces[0]??null}function Do(e){const t=Lt(e),n=(t==null?void 0:t.displayName)??(t==null?void 0:t.name)??Ie().name,i=e.whatsappBusy||e.gatewayHealthLoading;if(e.renamingWorkspace&&t){const s=()=>{const r=e.renameWorkspaceName.trim();r&&e.onWorkspaceRename(t.name,r)};return h`
|
|
638
638
|
<div style="display: flex; align-items: center; gap: 6px; margin-bottom: 4px;">
|
|
639
639
|
<input
|
|
640
640
|
type="text"
|
|
@@ -676,7 +676,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
676
676
|
${D.rotateCw}
|
|
677
677
|
</button>
|
|
678
678
|
</div>
|
|
679
|
-
`}function
|
|
679
|
+
`}function Oo(e){return h`
|
|
680
680
|
<div class="setup-status-item">
|
|
681
681
|
${pe(e.gatewayHealthy===!1?"bad":"good")}
|
|
682
682
|
<div class="setup-status-info">
|
|
@@ -693,7 +693,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
693
693
|
${D.rotateCw}
|
|
694
694
|
</button>
|
|
695
695
|
</div>
|
|
696
|
-
`}function
|
|
696
|
+
`}function Bo(e){const t=e.authConnected===!0;return h`
|
|
697
697
|
<div class="setup-status-item">
|
|
698
698
|
${pe(t?"good":"bad")}
|
|
699
699
|
<div class="setup-status-info">
|
|
@@ -722,7 +722,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
722
722
|
</button>
|
|
723
723
|
`}
|
|
724
724
|
</div>
|
|
725
|
-
`}function
|
|
725
|
+
`}function Fo(e){return h`
|
|
726
726
|
<div class="setup-status-item" style="flex-wrap: wrap;">
|
|
727
727
|
${pe("good")}
|
|
728
728
|
<div class="setup-status-info">
|
|
@@ -762,7 +762,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
762
762
|
</div>
|
|
763
763
|
`:k}
|
|
764
764
|
</div>
|
|
765
|
-
`}function
|
|
765
|
+
`}function Uo(e){var f;const t=Lt(e);if(!t)return k;const n=xr(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected),s=(n==null?void 0:n.linked)&&!i,r=!!n,o=i?"good":s?"partial":r?"bad":"unknown",a=i?"Connected":s?"Linked, not connected":r?(n==null?void 0:n.lastError)||"Not connected":"Not paired",l=!(n!=null&&n.provider)||(n==null?void 0:n.provider)==="baileys",c=t.whatsappAccountId??(t.isDefault&&e.whatsappAccounts.length===1?(f=e.whatsappAccounts[0])==null?void 0:f.accountId:void 0),d=c!=null&&e.whatsappActiveQrAccountId===c;return h`
|
|
766
766
|
<div class="setup-status-item" style="flex-wrap: wrap;">
|
|
767
767
|
${pe(o)}
|
|
768
768
|
<div class="setup-status-info">
|
|
@@ -784,7 +784,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
784
784
|
${Pt("whatsapp",e)}
|
|
785
785
|
${l&&c?h`
|
|
786
786
|
<button
|
|
787
|
-
class="setup-status-action ${e.whatsappBusy&&
|
|
787
|
+
class="setup-status-action ${e.whatsappBusy&&d?"spinning":""}"
|
|
788
788
|
?disabled=${e.whatsappBusy}
|
|
789
789
|
@click=${()=>e.onWhatsAppRelink(c)}
|
|
790
790
|
title="${i?"Relink":"Link"} WhatsApp"
|
|
@@ -792,7 +792,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
792
792
|
${D.rotateCw}
|
|
793
793
|
</button>
|
|
794
794
|
`:k}
|
|
795
|
-
${
|
|
795
|
+
${d&&e.whatsappLoginQrDataUrl?h`
|
|
796
796
|
<div style="width: 100%; margin-top: 8px; margin-left: 30px;">
|
|
797
797
|
<div class="setup-qr" style="display: inline-flex;">
|
|
798
798
|
<img
|
|
@@ -805,8 +805,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
805
805
|
</div>
|
|
806
806
|
`:k}
|
|
807
807
|
</div>
|
|
808
|
-
`}const
|
|
809
|
-
<div class="setup-info-overlay" @click=${
|
|
808
|
+
`}const qh=[{id:"claude-opus-4-6",shortName:"Opus"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku"}],Vh="anthropic/claude-sonnet-4-5-20250929",Gh=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function Qh(e){if(!e.whatsappSettingsOpen)return k;const t=Lt(e);if(!t)return k;const n=xr(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected);if(!n||!i)return k;const s=()=>e.onWhatsAppSettingsClose(),r=e.whatsappModelCatalog??[],o=new Set(r.filter(d=>d.provider==="anthropic").map(d=>d.id)),a=qh.filter(d=>o.has(d.id)),l=e.whatsappModel??Vh,c=e.whatsappThinkingLevel??"off";return h`
|
|
809
|
+
<div class="setup-info-overlay" @click=${d=>{d.target.classList.contains("setup-info-overlay")&&s()}}>
|
|
810
810
|
<div class="setup-info-card" style="max-width: 360px;">
|
|
811
811
|
<h3>Public Agent Settings</h3>
|
|
812
812
|
<div style="display: flex; flex-direction: column; gap: 16px; margin-top: 12px;">
|
|
@@ -873,11 +873,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
873
873
|
class="setup-model-select"
|
|
874
874
|
style="flex: 1;"
|
|
875
875
|
.value=${l}
|
|
876
|
-
@change=${
|
|
876
|
+
@change=${d=>{e.onWhatsAppModelChange(d.target.value)}}
|
|
877
877
|
>
|
|
878
|
-
${a.map(
|
|
879
|
-
<option value=${"anthropic/"+
|
|
880
|
-
${
|
|
878
|
+
${a.map(d=>h`
|
|
879
|
+
<option value=${"anthropic/"+d.id} ?selected=${l==="anthropic/"+d.id}>
|
|
880
|
+
${d.shortName}
|
|
881
881
|
</option>
|
|
882
882
|
`)}
|
|
883
883
|
</select>
|
|
@@ -889,11 +889,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
889
889
|
class="setup-model-select"
|
|
890
890
|
style="flex: 1;"
|
|
891
891
|
.value=${c}
|
|
892
|
-
@change=${
|
|
892
|
+
@change=${d=>{e.onWhatsAppThinkingChange(d.target.value)}}
|
|
893
893
|
>
|
|
894
|
-
${
|
|
895
|
-
<option value=${
|
|
896
|
-
${
|
|
894
|
+
${Gh.map(d=>h`
|
|
895
|
+
<option value=${d.value} ?selected=${c===d.value}>
|
|
896
|
+
${d.label}
|
|
897
897
|
</option>
|
|
898
898
|
`)}
|
|
899
899
|
</select>
|
|
@@ -908,7 +908,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
908
908
|
</button>
|
|
909
909
|
</div>
|
|
910
910
|
</div>
|
|
911
|
-
`}function
|
|
911
|
+
`}function $r(e){const t=Lt(e),n=e.imessageOwnerWorkspace,i=!!(t&&n===t.name),s=!!(n&&t&&n!==t.name);return{selectedWs:t,ownerWs:n,thisWsOwns:i,anotherWsOwns:s}}function Wo(e){const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e);let s,r;return i?(s="partial",r=`Connected to ${t}`):n&&e.imessageConnected?(s="good",r="Connected"):n&&e.imessageRunning?(s="partial",r="Running, not connected"):n?(s="bad",r="Not running"):e.imessageConfigured?(s="unknown",r="Not connected"):(s="bad",r="Not configured"),h`
|
|
912
912
|
<div class="setup-status-item" style="flex-wrap: wrap;">
|
|
913
913
|
${pe(s)}
|
|
914
914
|
<div class="setup-status-info">
|
|
@@ -926,7 +926,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
926
926
|
</button>
|
|
927
927
|
${k}
|
|
928
928
|
</div>
|
|
929
|
-
`}function
|
|
929
|
+
`}function Yh(e){if(!e.imessageEnableConfirm)return k;const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e),s=()=>{e.onIMessageEnableCancel()};return n?h`
|
|
930
930
|
<div class="setup-info-overlay" @click=${r=>{r.target.classList.contains("setup-info-overlay")&&s()}}>
|
|
931
931
|
<div class="setup-info-card" style="text-align: center;">
|
|
932
932
|
<h3>iMessage</h3>
|
|
@@ -1002,7 +1002,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1002
1002
|
</button>
|
|
1003
1003
|
</div>
|
|
1004
1004
|
</div>
|
|
1005
|
-
`}function
|
|
1005
|
+
`}function Ko(e){if(!e.isMaster)return k;const n=e.apiKeyProviders.filter(i=>i.hasKey).length;return h`
|
|
1006
1006
|
<div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
|
|
1007
1007
|
<div class="setup-status-item">
|
|
1008
1008
|
${pe(n>0?"good":"bad")}
|
|
@@ -1016,14 +1016,14 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1016
1016
|
>Manage</button>
|
|
1017
1017
|
</div>
|
|
1018
1018
|
</div>
|
|
1019
|
-
${
|
|
1020
|
-
`}function
|
|
1019
|
+
${Xh(e)}
|
|
1020
|
+
`}function Xh(e){if(!e.apiKeyModalOpen)return k;const t=e.apiKeyProviders,n={};for(const c of t)c.key&&(n[c.id]=c.key);const i=(c,d)=>{const f=d==null?void 0:d.closest(".setup-apikey-input"),u=f==null?void 0:f.querySelector("input"),p=u==null?void 0:u.value.trim();!p||p===n[c]||e.onApiKeySave(c,p)},s=c=>{const d=c.currentTarget,f=d.closest(".setup-apikey-input"),u=f==null?void 0:f.querySelector("input");if(!u)return;const p=u.type==="text";u.type=p?"password":"text",d.classList.toggle("active",!p)},r=(c,d)=>{const f=d.target,u=f.closest(".setup-apikey-input"),p=f.value.trim(),b=p.length>0&&p!==n[c],w=u==null?void 0:u.querySelector(".setup-apikey-save");w&&(w.style.display=b?"":"none");const S=u==null?void 0:u.querySelector(".setup-apikey-eye");S&&(S.style.display=p.length>0?"":"none")},o=t.filter(c=>c.primary),a=t.filter(c=>!c.primary),l=c=>{const d=e.apiKeySavingProvider===c.id&&e.apiKeyBusy,f=!e.apiKeyBusy&&e.apiKeySuccess===`${c.id} key saved`,u=!e.apiKeyBusy&&e.apiKeySuccess===`${c.id} key removed`;return h`
|
|
1021
1021
|
<div class="setup-apikey-row">
|
|
1022
1022
|
<div class="setup-apikey-info">
|
|
1023
1023
|
<strong>${c.name}</strong>
|
|
1024
1024
|
<span class="setup-apikey-category">${c.category}</span>
|
|
1025
1025
|
${f?h`<span class="setup-apikey-badge saved">Saved</span>`:k}
|
|
1026
|
-
${
|
|
1026
|
+
${u?h`<span class="setup-apikey-badge removed">Removed</span>`:k}
|
|
1027
1027
|
</div>
|
|
1028
1028
|
<div class="setup-apikey-input">
|
|
1029
1029
|
<input
|
|
@@ -1040,13 +1040,13 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1040
1040
|
title="Toggle visibility"
|
|
1041
1041
|
@click=${s}
|
|
1042
1042
|
>${D.eye}</button>
|
|
1043
|
-
${
|
|
1043
|
+
${d?h`<span class="setup-apikey-badge saving">Saving\u2026</span>`:h`<button
|
|
1044
1044
|
class="setup-apikey-save setup-button"
|
|
1045
1045
|
style="display: none;"
|
|
1046
1046
|
?disabled=${e.apiKeyBusy}
|
|
1047
1047
|
@click=${p=>i(c.id,p.currentTarget)}
|
|
1048
1048
|
>Save</button>`}
|
|
1049
|
-
${c.hasKey&&!
|
|
1049
|
+
${c.hasKey&&!d?h`
|
|
1050
1050
|
<button
|
|
1051
1051
|
class="setup-apikey-icon-btn danger"
|
|
1052
1052
|
title="Remove key"
|
|
@@ -1072,7 +1072,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1072
1072
|
</div>
|
|
1073
1073
|
</div>
|
|
1074
1074
|
</div>
|
|
1075
|
-
`}function
|
|
1075
|
+
`}function zo(e){const t=e.updateAvailable===null?"unknown":e.updateAvailable?"partial":"good",n=e.updateAvailable&&e.latestVersion?`v${e.currentVersion} → v${e.latestVersion}`:e.currentVersion?`v${e.currentVersion}`:"Unknown",i=e.updateChecking||e.updateRunning;return h`
|
|
1076
1076
|
<div class="setup-status-item">
|
|
1077
1077
|
${pe(t)}
|
|
1078
1078
|
<div class="setup-status-info">
|
|
@@ -1100,7 +1100,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1100
1100
|
</button>
|
|
1101
1101
|
`}
|
|
1102
1102
|
</div>
|
|
1103
|
-
`}const
|
|
1103
|
+
`}const Zh={anonymous:"Open access",verified:"WhatsApp OTP",choice:"Visitor chooses"};function jo(e){const t=e.publicChatEnabled,n=t?"good":"unknown",i=Zh[e.publicChatAuthMode]??"Open access";return h`
|
|
1104
1104
|
<div class="setup-status-item">
|
|
1105
1105
|
${pe(n)}
|
|
1106
1106
|
<div class="setup-status-info">
|
|
@@ -1124,7 +1124,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1124
1124
|
@click=${e.onPublicChatToggle}
|
|
1125
1125
|
>${e.publicChatBusy?"...":t?"Disable":"Enable"}</button>
|
|
1126
1126
|
</div>
|
|
1127
|
-
`}function
|
|
1127
|
+
`}function Jh(e){var i,s,r;const t=e.updateRunning,n=e.updateLastResult;if(!t&&!n)return k;if(t)return h`
|
|
1128
1128
|
<div class="setup-info-overlay">
|
|
1129
1129
|
<div class="setup-info-card" style="max-width: 400px;">
|
|
1130
1130
|
<h3>Software Update</h3>
|
|
@@ -1136,7 +1136,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1136
1136
|
${o.status==="running"?h`<span class="setup-update-spinner"></span>`:o.status==="done"?h`<span class="setup-update-icon-ok">${D.check}</span>`:h`<span class="setup-update-icon-fail">${D.x}</span>`}
|
|
1137
1137
|
</span>
|
|
1138
1138
|
<span class="setup-update-step-name">${o.name}</span>
|
|
1139
|
-
${o.durationMs!=null?h`<span class="setup-update-step-time">${
|
|
1139
|
+
${o.durationMs!=null?h`<span class="setup-update-step-time">${Ho(o.durationMs)}</span>`:k}
|
|
1140
1140
|
</div>
|
|
1141
1141
|
`)}
|
|
1142
1142
|
</div>
|
|
@@ -1144,7 +1144,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1144
1144
|
${e.updateMessage?h`<p style="text-align: center; color: var(--tasker-text-grey); font-size: 13px; margin: 12px 0 0;">${e.updateMessage}</p>`:k}
|
|
1145
1145
|
</div>
|
|
1146
1146
|
</div>
|
|
1147
|
-
`;if(n){const o=n.status==="ok";let a;if(o){const c=(i=n.before)==null?void 0:i.version,
|
|
1147
|
+
`;if(n){const o=n.status==="ok";let a;if(o){const c=(i=n.before)==null?void 0:i.version,d=((s=n.after)==null?void 0:s.version)??n.currentVersion;a=c?`v${c} → v${d}`:`Updated to v${d}`}else a=n.reason??((r=n.failedStep)==null?void 0:r.name)??"unknown error";const l=n.durationMs!=null?Ho(n.durationMs):null;return h`
|
|
1148
1148
|
<div class="setup-info-overlay" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onUpdateDismissResult()}}>
|
|
1149
1149
|
<div class="setup-info-card" style="max-width: 360px; text-align: center;">
|
|
1150
1150
|
<div class="setup-update-result-icon ${o?"ok":"fail"}">${o?D.circleCheck:D.circleX}</div>
|
|
@@ -1164,7 +1164,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1164
1164
|
</button>
|
|
1165
1165
|
</div>
|
|
1166
1166
|
</div>
|
|
1167
|
-
`}return k}function
|
|
1167
|
+
`}return k}function Ho(e){if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.floor(t/60),i=t%60;return i>0?`${n}m ${i}s`:`${n}m`}function qo(e){const t=e.accountHasPin;return h`
|
|
1168
1168
|
<div class="setup-status-item">
|
|
1169
1169
|
${pe(t?"good":"bad")}
|
|
1170
1170
|
<div class="setup-status-info">
|
|
@@ -1176,7 +1176,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1176
1176
|
@click=${()=>e.onAccountPinModalOpen()}
|
|
1177
1177
|
>${t?"Change":"Set PIN"}</button>
|
|
1178
1178
|
</div>
|
|
1179
|
-
`}function
|
|
1179
|
+
`}function Vo(e){if(!e.accountPinModalOpen)return k;const t=e.accountHasPin,n=e.accountPinBusy;let i="",s="",r="";const o=c=>d=>{const f=d.target;f.value=f.value.replace(/\D/g,"").slice(0,6),c(f.value)},a=(c,d)=>{var u;let f=c.querySelector(".pin-modal-validation");f||(f=document.createElement("p"),f.className="login-error pin-modal-validation",(u=c.querySelector("button[type=submit]"))==null||u.before(f)),f.textContent=d},l=c=>{c.preventDefault();const d=c.target;if(!n){if(t&&!i){a(d,"Enter your current PIN");return}if(!s){a(d,"Enter a new PIN");return}if(!r){a(d,"Confirm your new PIN");return}if(s!==r){a(d,"PINs do not match");return}if(s.length<4){a(d,"PIN must be 4–6 digits");return}e.onAccountPinSave(t?i:null,s)}};return h`
|
|
1180
1180
|
<div class="setup-info-overlay" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onAccountPinModalClose()}}>
|
|
1181
1181
|
<div class="setup-info-card" style="max-width: 340px;">
|
|
1182
1182
|
<div class="setup-info-header">
|
|
@@ -1233,7 +1233,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1233
1233
|
</form>
|
|
1234
1234
|
</div>
|
|
1235
1235
|
</div>
|
|
1236
|
-
`}function
|
|
1236
|
+
`}function Go(e){if(!e.addingWorkspace)return k;const{workspaceSaving:t}=e;return h`
|
|
1237
1237
|
<div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
|
|
1238
1238
|
<div class="setup-add-account">
|
|
1239
1239
|
<strong>New Account</strong>
|
|
@@ -1286,7 +1286,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1286
1286
|
</div>
|
|
1287
1287
|
</div>
|
|
1288
1288
|
</div>
|
|
1289
|
-
`}function
|
|
1289
|
+
`}function Qo(e){const t=Lt(e);return!t||t.isDefault?k:e.workspaceRemoveConfirm===t.name?h`
|
|
1290
1290
|
<div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 12px;">
|
|
1291
1291
|
<div style="font-size: 13px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
|
|
1292
1292
|
<span style="color: var(--tasker-danger, #ef4444);">Remove "${t.displayName??t.name}" and its WhatsApp account?</span>
|
|
@@ -1315,7 +1315,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1315
1315
|
@click=${i=>{i.preventDefault(),e.onSetWorkspaceRemoveConfirm(t.name)}}
|
|
1316
1316
|
>Remove Account</a>
|
|
1317
1317
|
</p>
|
|
1318
|
-
`}function
|
|
1318
|
+
`}function Yo(e){if(e.uninstallDone)return h`
|
|
1319
1319
|
<div style="margin-top: 24px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
|
|
1320
1320
|
<p style="color: var(--tasker-danger, #ef4444); font-size: 13px; font-weight: 600; margin: 0 0 8px 0;">
|
|
1321
1321
|
Taskmaster has been uninstalled.
|
|
@@ -1370,11 +1370,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1370
1370
|
@click=${t=>{t.preventDefault(),e.onUninstallConfirm()}}
|
|
1371
1371
|
>Uninstall Taskmaster</a>
|
|
1372
1372
|
</p>
|
|
1373
|
-
`}function
|
|
1373
|
+
`}function Xo(){return h`
|
|
1374
1374
|
<p class="setup-hint" style="margin-top: 4px; font-size: 12px; opacity: 0.6;">
|
|
1375
1375
|
Need help? <a href="https://wa.me/447591215452" target="_blank" rel="noopener" style="color: var(--tasker-orange);">Message Dave on WhatsApp</a>
|
|
1376
1376
|
</p>
|
|
1377
|
-
`}function
|
|
1377
|
+
`}function ef(e){const{whatsappBusy:t,whatsappLoginMessage:n,whatsappLoginQrDataUrl:i,whatsappLoginConnected:s,whatsappChannelStatus:r}=e;if(i)return h`
|
|
1378
1378
|
<div class="setup-container">
|
|
1379
1379
|
<div class="setup-card">
|
|
1380
1380
|
<h1>Scan with WhatsApp</h1>
|
|
@@ -1408,51 +1408,51 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1408
1408
|
<p>${n||"Connecting to WhatsApp..."}</p>
|
|
1409
1409
|
</div>
|
|
1410
1410
|
</div>
|
|
1411
|
-
`;const o=(r==null?void 0:r.running)&&(r==null?void 0:r.connected);return r?(e.whatsappAccounts.length>1?e.whatsappAccounts.every(
|
|
1411
|
+
`;const o=(r==null?void 0:r.running)&&(r==null?void 0:r.connected);return r?(e.whatsappAccounts.length>1?e.whatsappAccounts.every(d=>d.running&&d.connected):o)&&e.authConnected?h`
|
|
1412
1412
|
<div class="setup-container">
|
|
1413
1413
|
<div class="setup-card setup-success setup-dashboard-wide">
|
|
1414
|
-
${
|
|
1414
|
+
${Do(e)}
|
|
1415
1415
|
<div class="setup-status-dashboard">
|
|
1416
|
+
${Oo(e)}
|
|
1416
1417
|
${Bo(e)}
|
|
1417
1418
|
${Fo(e)}
|
|
1418
1419
|
${Uo(e)}
|
|
1419
1420
|
${Wo(e)}
|
|
1420
|
-
${
|
|
1421
|
-
${
|
|
1421
|
+
${qo(e)}
|
|
1422
|
+
${zo(e)}
|
|
1422
1423
|
${jo(e)}
|
|
1423
|
-
${Ho(e)}
|
|
1424
1424
|
</div>
|
|
1425
1425
|
|
|
1426
|
+
${Vo(e)}
|
|
1427
|
+
${Ko(e)}
|
|
1426
1428
|
${Go(e)}
|
|
1427
|
-
${zo(e)}
|
|
1428
1429
|
${Qo(e)}
|
|
1429
1430
|
${Yo(e)}
|
|
1430
|
-
${Xo(
|
|
1431
|
-
${Zo()}
|
|
1431
|
+
${Xo()}
|
|
1432
1432
|
${e.workspacesError?h`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
|
|
1433
1433
|
</div>
|
|
1434
1434
|
</div>
|
|
1435
1435
|
`:h`
|
|
1436
1436
|
<div class="setup-container">
|
|
1437
1437
|
<div class="setup-card setup-dashboard-wide">
|
|
1438
|
-
${
|
|
1438
|
+
${Do(e)}
|
|
1439
1439
|
<div class="setup-status-dashboard">
|
|
1440
|
+
${Oo(e)}
|
|
1440
1441
|
${Bo(e)}
|
|
1441
1442
|
${Fo(e)}
|
|
1442
1443
|
${Uo(e)}
|
|
1443
1444
|
${Wo(e)}
|
|
1444
|
-
${
|
|
1445
|
-
${
|
|
1445
|
+
${qo(e)}
|
|
1446
|
+
${zo(e)}
|
|
1446
1447
|
${jo(e)}
|
|
1447
|
-
${Ho(e)}
|
|
1448
1448
|
</div>
|
|
1449
1449
|
|
|
1450
|
+
${Vo(e)}
|
|
1451
|
+
${Ko(e)}
|
|
1450
1452
|
${Go(e)}
|
|
1451
|
-
${zo(e)}
|
|
1452
1453
|
${Qo(e)}
|
|
1453
1454
|
${Yo(e)}
|
|
1454
|
-
${Xo(
|
|
1455
|
-
${Zo()}
|
|
1455
|
+
${Xo()}
|
|
1456
1456
|
${e.workspacesError?h`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
|
|
1457
1457
|
</div>
|
|
1458
1458
|
</div>
|
|
@@ -1497,7 +1497,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1497
1497
|
</button>
|
|
1498
1498
|
</div>
|
|
1499
1499
|
</div>
|
|
1500
|
-
`}function
|
|
1500
|
+
`}function tf(e){const{connected:t,currentStep:n}=e;if(t&&oi()&&Ar(),e.uninstallDone||!t&&oi())return h`
|
|
1501
1501
|
<div class="setup-container">
|
|
1502
1502
|
<div class="setup-card">
|
|
1503
1503
|
<p style="color: var(--tasker-danger, #ef4444); font-size: 16px; font-weight: 600; margin: 0 0 12px 0;">
|
|
@@ -1520,7 +1520,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1520
1520
|
<p>${r?"Restarting gateway after update…":"Connecting to gateway..."}</p>
|
|
1521
1521
|
</div>
|
|
1522
1522
|
</div>
|
|
1523
|
-
`}let i;switch(n){case"license":i=
|
|
1523
|
+
`}let i;switch(n){case"license":i=No(e);break;case"auth":i=Hh(e);break;case"whatsapp":case"complete":i=ef(e);break;default:i=No(e)}const s=ut("Setup",e.wsProps);return h`${i}${jh(e)}${Yh(e)}${Qh(e)}${Jh(e)}${s}`}function nf(e,t){const n=e.paired?"Paired phone (used to link WhatsApp)":"Admin access via WhatsApp DM";return h`
|
|
1524
1524
|
<div class="sp-list-item">
|
|
1525
1525
|
<div class="sp-list-item-main">
|
|
1526
1526
|
<div class="sp-list-item-title">${e.phone}</div>
|
|
@@ -1535,7 +1535,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1535
1535
|
Remove
|
|
1536
1536
|
</button>`}
|
|
1537
1537
|
</div>
|
|
1538
|
-
`}function
|
|
1538
|
+
`}function sf(e){if(!e.connected)return h`
|
|
1539
1539
|
<div class="setup-container">
|
|
1540
1540
|
<div class="setup-card">
|
|
1541
1541
|
<div class="setup-spinner"></div>
|
|
@@ -1584,7 +1584,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1584
1584
|
</form>
|
|
1585
1585
|
|
|
1586
1586
|
<div class="sp-list" style="margin-top: 20px;">
|
|
1587
|
-
${e.phones.length===0?h`<div class="sp-list-empty">No admin phones configured yet.</div>`:e.phones.map(n=>
|
|
1587
|
+
${e.phones.length===0?h`<div class="sp-list-empty">No admin phones configured yet.</div>`:e.phones.map(n=>nf(n,e))}
|
|
1588
1588
|
</div>
|
|
1589
1589
|
|
|
1590
1590
|
<div class="setup-hint" style="margin-top: 20px; padding: 14px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; text-align: left;">
|
|
@@ -1595,7 +1595,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1595
1595
|
|
|
1596
1596
|
</div>
|
|
1597
1597
|
</div>
|
|
1598
|
-
`}function
|
|
1598
|
+
`}function rf(e){return Object.keys(e.fields).length}function of(e,t){const n=Object.entries(e.fields);return h`
|
|
1599
1599
|
<div class="customers-record-fields">
|
|
1600
1600
|
${n.length===0?h`<div style="color: rgba(255,255,255,0.4); font-size: 13px; margin-top: 12px;">No fields yet. Add one below.</div>`:n.map(([i,s])=>h`
|
|
1601
1601
|
<div class="customers-field-row">
|
|
@@ -1642,7 +1642,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1642
1642
|
</button>
|
|
1643
1643
|
</div>
|
|
1644
1644
|
</div>
|
|
1645
|
-
`}function
|
|
1645
|
+
`}function af(e,t){const n=t.editingId===e.id,i=rf(e),s=i===0?"No fields":`${i} field${i>1?"s":""}`;return h`
|
|
1646
1646
|
<div class="customers-record">
|
|
1647
1647
|
<div
|
|
1648
1648
|
class="customers-record-header"
|
|
@@ -1654,9 +1654,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1654
1654
|
</div>
|
|
1655
1655
|
<span class="customers-record-meta">${s}</span>
|
|
1656
1656
|
</div>
|
|
1657
|
-
${n?
|
|
1657
|
+
${n?of(e,t):k}
|
|
1658
1658
|
</div>
|
|
1659
|
-
`}function
|
|
1659
|
+
`}function lf(e){if(!e.connected)return h`
|
|
1660
1660
|
<div class="setup-container">
|
|
1661
1661
|
<div class="setup-card">
|
|
1662
1662
|
<div class="setup-spinner"></div>
|
|
@@ -1752,7 +1752,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1752
1752
|
<div style="margin-top: 16px;">
|
|
1753
1753
|
${e.records.length===0?h`<div class="customers-empty">
|
|
1754
1754
|
${e.searchQuery.trim()?`No records matching "${e.searchQuery}".`:"No customer records yet. Add one to get started."}
|
|
1755
|
-
</div>`:e.records.map(i=>
|
|
1755
|
+
</div>`:e.records.map(i=>af(i,e))}
|
|
1756
1756
|
</div>
|
|
1757
1757
|
|
|
1758
1758
|
<div class="setup-hint" style="margin-top: 20px; padding: 14px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; text-align: left;">
|
|
@@ -1763,33 +1763,33 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
|
|
|
1763
1763
|
</div>
|
|
1764
1764
|
</div>
|
|
1765
1765
|
</div>
|
|
1766
|
-
`}const gc={CHILD:2},mc=e=>(...t)=>({_$litDirective$:e,values:t});let yc=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,n,i){this._$Ct=t,this._$AM=n,this._$Ci=i}_$AS(t,n){return this.update(t,n)}update(t,n){return this.render(...n)}};const{I:uf}=Ju,Jo=e=>e,ea=()=>document.createComment(""),Ut=(e,t,n)=>{var r;const i=e._$AA.parentNode,s=t===void 0?e._$AB:t._$AA;if(n===void 0){const o=i.insertBefore(ea(),s),a=i.insertBefore(ea(),s);n=new uf(o,a,e,e.options)}else{const o=n._$AB.nextSibling,a=n._$AM,l=a!==e;if(l){let c;(r=n._$AQ)==null||r.call(n,e),n._$AM=e,n._$AP!==void 0&&(c=e._$AU)!==a._$AU&&n._$AP(c)}if(o!==s||l){let c=n._$AA;for(;c!==o;){const u=Jo(c).nextSibling;Jo(i).insertBefore(c,s),c=u}}}return n},Ye=(e,t,n=e)=>(e._$AI(t,n),e),df={},pf=(e,t=df)=>e._$AH=t,hf=e=>e._$AH,ts=e=>{e._$AR(),e._$AA.remove()};const ta=(e,t,n)=>{const i=new Map;for(let s=t;s<=n;s++)i.set(e[s],s);return i},ff=mc(class extends yc{constructor(e){if(super(e),e.type!==gc.CHILD)throw Error("repeat() can only be used in text expressions")}dt(e,t,n){let i;n===void 0?n=t:t!==void 0&&(i=t);const s=[],r=[];let o=0;for(const a of e)s[o]=i?i(a,o):o,r[o]=n(a,o),o++;return{values:r,keys:s}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,i]){const s=hf(e),{values:r,keys:o}=this.dt(t,n,i);if(!Array.isArray(s))return this.ut=o,r;const a=this.ut??(this.ut=[]),l=[];let c,u,f=0,d=s.length-1,p=0,w=r.length-1;for(;f<=d&&p<=w;)if(s[f]===null)f++;else if(s[d]===null)d--;else if(a[f]===o[p])l[p]=Ye(s[f],r[p]),f++,p++;else if(a[d]===o[w])l[w]=Ye(s[d],r[w]),d--,w--;else if(a[f]===o[w])l[w]=Ye(s[f],r[w]),Ut(e,l[w+1],s[f]),f++,w--;else if(a[d]===o[p])l[p]=Ye(s[d],r[p]),Ut(e,s[f],s[d]),d--,p++;else if(c===void 0&&(c=ta(o,p,w),u=ta(a,f,d)),c.has(a[f]))if(c.has(a[d])){const b=u.get(o[p]),S=b!==void 0?s[b]:null;if(S===null){const T=Ut(e,s[f]);Ye(T,r[p]),l[p]=T}else l[p]=Ye(S,r[p]),Ut(e,s[f],S),s[b]=null;p++}else ts(s[d]),d--;else ts(s[f]),f++;for(;p<=w;){const b=Ut(e,l[w+1]);Ye(b,r[p]),l[p++]=b}for(;f<=d;){const b=s[f++];b!==null&&ts(b)}return this.ut=o,pf(e,l),Ke}});class Is extends yc{constructor(t){if(super(t),this.it=k,t.type!==gc.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===k||t==null)return this._t=void 0,this.it=t;if(t===Ke)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const n=[t];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}}Is.directiveName="unsafeHTML",Is.resultType=1;const ai=mc(Is);const{entries:vc,setPrototypeOf:na,isFrozen:gf,getPrototypeOf:mf,getOwnPropertyDescriptor:yf}=Object;let{freeze:ce,seal:he,create:Rs}=Object,{apply:Ns,construct:Ds}=typeof Reflect<"u"&&Reflect;ce||(ce=function(t){return t});he||(he=function(t){return t});Ns||(Ns=function(t,n){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r<i;r++)s[r-2]=arguments[r];return t.apply(n,s)});Ds||(Ds=function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return new t(...i)});const On=ue(Array.prototype.forEach),vf=ue(Array.prototype.lastIndexOf),ia=ue(Array.prototype.pop),Wt=ue(Array.prototype.push),bf=ue(Array.prototype.splice),Gn=ue(String.prototype.toLowerCase),ns=ue(String.prototype.toString),is=ue(String.prototype.match),Kt=ue(String.prototype.replace),wf=ue(String.prototype.indexOf),kf=ue(String.prototype.trim),fe=ue(Object.prototype.hasOwnProperty),oe=ue(RegExp.prototype.test),zt=Sf(TypeError);function ue(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return Ns(e,t,i)}}function Sf(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return Ds(e,n)}}function O(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Gn;na&&na(e,null);let i=t.length;for(;i--;){let s=t[i];if(typeof s=="string"){const r=n(s);r!==s&&(gf(t)||(t[i]=r),s=r)}e[s]=!0}return e}function Af(e){for(let t=0;t<e.length;t++)fe(e,t)||(e[t]=null);return e}function Ae(e){const t=Rs(null);for(const[n,i]of vc(e))fe(e,n)&&(Array.isArray(i)?t[n]=Af(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=Ae(i):t[n]=i);return t}function jt(e,t){for(;e!==null;){const i=yf(e,t);if(i){if(i.get)return ue(i.get);if(typeof i.value=="function")return ue(i.value)}e=mf(e)}function n(){return null}return n}const sa=ce(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ss=ce(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),rs=ce(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$f=ce(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),os=ce(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),xf=ce(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ra=ce(["#text"]),oa=ce(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),as=ce(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),aa=ce(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Bn=ce(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Ef=he(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Tf=he(/<%[\w\W]*|[\w\W]*%>/gm),Cf=he(/\$\{[\w\W]*/gm),_f=he(/^data-[\-\w.\u00B7-\uFFFF]+$/),Mf=he(/^aria-[\-\w]+$/),bc=he(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Pf=he(/^(?:\w+script|data):/i),Lf=he(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),wc=he(/^html$/i),If=he(/^[a-z][.\w]*(-[.\w]+)+$/i);var la=Object.freeze({__proto__:null,ARIA_ATTR:Mf,ATTR_WHITESPACE:Lf,CUSTOM_ELEMENT:If,DATA_ATTR:_f,DOCTYPE_NAME:wc,ERB_EXPR:Tf,IS_ALLOWED_URI:bc,IS_SCRIPT_OR_DATA:Pf,MUSTACHE_EXPR:Ef,TMPLIT_EXPR:Cf});const Ht={element:1,text:3,progressingInstruction:7,comment:8,document:9},Rf=function(){return typeof window>"u"?null:window},Nf=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null;const s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(i=n.getAttribute(s));const r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},ca=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function kc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Rf();const t=L=>kc(L);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==Ht.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e;const i=n,s=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:o,Node:a,Element:l,NodeFilter:c,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:f,DOMParser:d,trustedTypes:p}=e,w=l.prototype,b=jt(w,"cloneNode"),S=jt(w,"remove"),T=jt(w,"nextSibling"),$=jt(w,"childNodes"),E=jt(w,"parentNode");if(typeof o=="function"){const L=n.createElement("template");L.content&&L.content.ownerDocument&&(n=L.content.ownerDocument)}let C,I="";const{implementation:U,createNodeIterator:Q,createDocumentFragment:He,getElementsByTagName:Rt}=n,{importNode:bn}=i;let J=ca();t.isSupported=typeof vc=="function"&&typeof E=="function"&&U&&U.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Nt,ERB_EXPR:ht,TMPLIT_EXPR:qe,DATA_ATTR:Mi,ARIA_ATTR:Pi,IS_SCRIPT_OR_DATA:Li,ATTR_WHITESPACE:wn,CUSTOM_ELEMENT:Ii}=la;let{IS_ALLOWED_URI:kn}=la,V=null;const Sn=O({},[...sa,...ss,...rs,...os,...ra]);let G=null;const An=O({},[...oa,...as,...aa,...Bn]);let j=Object.seal(Rs(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ve=null,Dt=null;const De=Object.seal(Rs(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let $n=!0,A=!0,_=!1,R=!0,N=!1,H=!0,K=!1,re=!1,Oe=!1,ft=!1,xn=!1,En=!1,Hr=!0,qr=!1;const Su="user-content-";let Ri=!0,Ot=!1,gt={},be=null;const Ni=O({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Vr=null;const Gr=O({},["audio","video","img","source","image","track"]);let Di=null;const Qr=O({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Tn="http://www.w3.org/1998/Math/MathML",Cn="http://www.w3.org/2000/svg",Ce="http://www.w3.org/1999/xhtml";let mt=Ce,Oi=!1,Bi=null;const Au=O({},[Tn,Cn,Ce],ns);let _n=O({},["mi","mo","mn","ms","mtext"]),Mn=O({},["annotation-xml"]);const $u=O({},["title","style","font","a","script"]);let Bt=null;const xu=["application/xhtml+xml","text/html"],Eu="text/html";let X=null,yt=null;const Tu=n.createElement("form"),Yr=function(v){return v instanceof RegExp||v instanceof Function},Fi=function(){let v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(yt&&yt===v)){if((!v||typeof v!="object")&&(v={}),v=Ae(v),Bt=xu.indexOf(v.PARSER_MEDIA_TYPE)===-1?Eu:v.PARSER_MEDIA_TYPE,X=Bt==="application/xhtml+xml"?ns:Gn,V=fe(v,"ALLOWED_TAGS")?O({},v.ALLOWED_TAGS,X):Sn,G=fe(v,"ALLOWED_ATTR")?O({},v.ALLOWED_ATTR,X):An,Bi=fe(v,"ALLOWED_NAMESPACES")?O({},v.ALLOWED_NAMESPACES,ns):Au,Di=fe(v,"ADD_URI_SAFE_ATTR")?O(Ae(Qr),v.ADD_URI_SAFE_ATTR,X):Qr,Vr=fe(v,"ADD_DATA_URI_TAGS")?O(Ae(Gr),v.ADD_DATA_URI_TAGS,X):Gr,be=fe(v,"FORBID_CONTENTS")?O({},v.FORBID_CONTENTS,X):Ni,Ve=fe(v,"FORBID_TAGS")?O({},v.FORBID_TAGS,X):Ae({}),Dt=fe(v,"FORBID_ATTR")?O({},v.FORBID_ATTR,X):Ae({}),gt=fe(v,"USE_PROFILES")?v.USE_PROFILES:!1,$n=v.ALLOW_ARIA_ATTR!==!1,A=v.ALLOW_DATA_ATTR!==!1,_=v.ALLOW_UNKNOWN_PROTOCOLS||!1,R=v.ALLOW_SELF_CLOSE_IN_ATTR!==!1,N=v.SAFE_FOR_TEMPLATES||!1,H=v.SAFE_FOR_XML!==!1,K=v.WHOLE_DOCUMENT||!1,ft=v.RETURN_DOM||!1,xn=v.RETURN_DOM_FRAGMENT||!1,En=v.RETURN_TRUSTED_TYPE||!1,Oe=v.FORCE_BODY||!1,Hr=v.SANITIZE_DOM!==!1,qr=v.SANITIZE_NAMED_PROPS||!1,Ri=v.KEEP_CONTENT!==!1,Ot=v.IN_PLACE||!1,kn=v.ALLOWED_URI_REGEXP||bc,mt=v.NAMESPACE||Ce,_n=v.MATHML_TEXT_INTEGRATION_POINTS||_n,Mn=v.HTML_INTEGRATION_POINTS||Mn,j=v.CUSTOM_ELEMENT_HANDLING||{},v.CUSTOM_ELEMENT_HANDLING&&Yr(v.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(j.tagNameCheck=v.CUSTOM_ELEMENT_HANDLING.tagNameCheck),v.CUSTOM_ELEMENT_HANDLING&&Yr(v.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(j.attributeNameCheck=v.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),v.CUSTOM_ELEMENT_HANDLING&&typeof v.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(j.allowCustomizedBuiltInElements=v.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),N&&(A=!1),xn&&(ft=!0),gt&&(V=O({},ra),G=[],gt.html===!0&&(O(V,sa),O(G,oa)),gt.svg===!0&&(O(V,ss),O(G,as),O(G,Bn)),gt.svgFilters===!0&&(O(V,rs),O(G,as),O(G,Bn)),gt.mathMl===!0&&(O(V,os),O(G,aa),O(G,Bn))),v.ADD_TAGS&&(typeof v.ADD_TAGS=="function"?De.tagCheck=v.ADD_TAGS:(V===Sn&&(V=Ae(V)),O(V,v.ADD_TAGS,X))),v.ADD_ATTR&&(typeof v.ADD_ATTR=="function"?De.attributeCheck=v.ADD_ATTR:(G===An&&(G=Ae(G)),O(G,v.ADD_ATTR,X))),v.ADD_URI_SAFE_ATTR&&O(Di,v.ADD_URI_SAFE_ATTR,X),v.FORBID_CONTENTS&&(be===Ni&&(be=Ae(be)),O(be,v.FORBID_CONTENTS,X)),v.ADD_FORBID_CONTENTS&&(be===Ni&&(be=Ae(be)),O(be,v.ADD_FORBID_CONTENTS,X)),Ri&&(V["#text"]=!0),K&&O(V,["html","head","body"]),V.table&&(O(V,["tbody"]),delete Ve.tbody),v.TRUSTED_TYPES_POLICY){if(typeof v.TRUSTED_TYPES_POLICY.createHTML!="function")throw zt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof v.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw zt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');C=v.TRUSTED_TYPES_POLICY,I=C.createHTML("")}else C===void 0&&(C=Nf(p,s)),C!==null&&typeof I=="string"&&(I=C.createHTML(""));ce&&ce(v),yt=v}},Xr=O({},[...ss,...rs,...$f]),Zr=O({},[...os,...xf]),Cu=function(v){let x=E(v);(!x||!x.tagName)&&(x={namespaceURI:mt,tagName:"template"});const P=Gn(v.tagName),z=Gn(x.tagName);return Bi[v.namespaceURI]?v.namespaceURI===Cn?x.namespaceURI===Ce?P==="svg":x.namespaceURI===Tn?P==="svg"&&(z==="annotation-xml"||_n[z]):!!Xr[P]:v.namespaceURI===Tn?x.namespaceURI===Ce?P==="math":x.namespaceURI===Cn?P==="math"&&Mn[z]:!!Zr[P]:v.namespaceURI===Ce?x.namespaceURI===Cn&&!Mn[z]||x.namespaceURI===Tn&&!_n[z]?!1:!Zr[P]&&($u[P]||!Xr[P]):!!(Bt==="application/xhtml+xml"&&Bi[v.namespaceURI]):!1},we=function(v){Wt(t.removed,{element:v});try{E(v).removeChild(v)}catch{S(v)}},Ge=function(v,x){try{Wt(t.removed,{attribute:x.getAttributeNode(v),from:x})}catch{Wt(t.removed,{attribute:null,from:x})}if(x.removeAttribute(v),v==="is")if(ft||xn)try{we(x)}catch{}else try{x.setAttribute(v,"")}catch{}},Jr=function(v){let x=null,P=null;if(Oe)v="<remove></remove>"+v;else{const Y=is(v,/^[\r\n\t ]+/);P=Y&&Y[0]}Bt==="application/xhtml+xml"&&mt===Ce&&(v='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+v+"</body></html>");const z=C?C.createHTML(v):v;if(mt===Ce)try{x=new d().parseFromString(z,Bt)}catch{}if(!x||!x.documentElement){x=U.createDocument(mt,"template",null);try{x.documentElement.innerHTML=Oi?I:z}catch{}}const te=x.body||x.documentElement;return v&&P&&te.insertBefore(n.createTextNode(P),te.childNodes[0]||null),mt===Ce?Rt.call(x,K?"html":"body")[0]:K?x.documentElement:te},eo=function(v){return Q.call(v.ownerDocument||v,v,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},Ui=function(v){return v instanceof f&&(typeof v.nodeName!="string"||typeof v.textContent!="string"||typeof v.removeChild!="function"||!(v.attributes instanceof u)||typeof v.removeAttribute!="function"||typeof v.setAttribute!="function"||typeof v.namespaceURI!="string"||typeof v.insertBefore!="function"||typeof v.hasChildNodes!="function")},to=function(v){return typeof a=="function"&&v instanceof a};function _e(L,v,x){On(L,P=>{P.call(t,v,x,yt)})}const no=function(v){let x=null;if(_e(J.beforeSanitizeElements,v,null),Ui(v))return we(v),!0;const P=X(v.nodeName);if(_e(J.uponSanitizeElement,v,{tagName:P,allowedTags:V}),H&&v.hasChildNodes()&&!to(v.firstElementChild)&&oe(/<[/\w!]/g,v.innerHTML)&&oe(/<[/\w!]/g,v.textContent)||v.nodeType===Ht.progressingInstruction||H&&v.nodeType===Ht.comment&&oe(/<[/\w]/g,v.data))return we(v),!0;if(!(De.tagCheck instanceof Function&&De.tagCheck(P))&&(!V[P]||Ve[P])){if(!Ve[P]&&so(P)&&(j.tagNameCheck instanceof RegExp&&oe(j.tagNameCheck,P)||j.tagNameCheck instanceof Function&&j.tagNameCheck(P)))return!1;if(Ri&&!be[P]){const z=E(v)||v.parentNode,te=$(v)||v.childNodes;if(te&&z){const Y=te.length;for(let de=Y-1;de>=0;--de){const Me=b(te[de],!0);Me.__removalCount=(v.__removalCount||0)+1,z.insertBefore(Me,T(v))}}}return we(v),!0}return v instanceof l&&!Cu(v)||(P==="noscript"||P==="noembed"||P==="noframes")&&oe(/<\/no(script|embed|frames)/i,v.innerHTML)?(we(v),!0):(N&&v.nodeType===Ht.text&&(x=v.textContent,On([Nt,ht,qe],z=>{x=Kt(x,z," ")}),v.textContent!==x&&(Wt(t.removed,{element:v.cloneNode()}),v.textContent=x)),_e(J.afterSanitizeElements,v,null),!1)},io=function(v,x,P){if(Hr&&(x==="id"||x==="name")&&(P in n||P in Tu))return!1;if(!(A&&!Dt[x]&&oe(Mi,x))){if(!($n&&oe(Pi,x))){if(!(De.attributeCheck instanceof Function&&De.attributeCheck(x,v))){if(!G[x]||Dt[x]){if(!(so(v)&&(j.tagNameCheck instanceof RegExp&&oe(j.tagNameCheck,v)||j.tagNameCheck instanceof Function&&j.tagNameCheck(v))&&(j.attributeNameCheck instanceof RegExp&&oe(j.attributeNameCheck,x)||j.attributeNameCheck instanceof Function&&j.attributeNameCheck(x,v))||x==="is"&&j.allowCustomizedBuiltInElements&&(j.tagNameCheck instanceof RegExp&&oe(j.tagNameCheck,P)||j.tagNameCheck instanceof Function&&j.tagNameCheck(P))))return!1}else if(!Di[x]){if(!oe(kn,Kt(P,wn,""))){if(!((x==="src"||x==="xlink:href"||x==="href")&&v!=="script"&&wf(P,"data:")===0&&Vr[v])){if(!(_&&!oe(Li,Kt(P,wn,"")))){if(P)return!1}}}}}}}return!0},so=function(v){return v!=="annotation-xml"&&is(v,Ii)},ro=function(v){_e(J.beforeSanitizeAttributes,v,null);const{attributes:x}=v;if(!x||Ui(v))return;const P={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:G,forceKeepAttr:void 0};let z=x.length;for(;z--;){const te=x[z],{name:Y,namespaceURI:de,value:Me}=te,vt=X(Y),Wi=Me;let ee=Y==="value"?Wi:kf(Wi);if(P.attrName=vt,P.attrValue=ee,P.keepAttr=!0,P.forceKeepAttr=void 0,_e(J.uponSanitizeAttribute,v,P),ee=P.attrValue,qr&&(vt==="id"||vt==="name")&&(Ge(Y,v),ee=Su+ee),H&&oe(/((--!?|])>)|<\/(style|title|textarea)/i,ee)){Ge(Y,v);continue}if(vt==="attributename"&&is(ee,"href")){Ge(Y,v);continue}if(P.forceKeepAttr)continue;if(!P.keepAttr){Ge(Y,v);continue}if(!R&&oe(/\/>/i,ee)){Ge(Y,v);continue}N&&On([Nt,ht,qe],ao=>{ee=Kt(ee,ao," ")});const oo=X(v.nodeName);if(!io(oo,vt,ee)){Ge(Y,v);continue}if(C&&typeof p=="object"&&typeof p.getAttributeType=="function"&&!de)switch(p.getAttributeType(oo,vt)){case"TrustedHTML":{ee=C.createHTML(ee);break}case"TrustedScriptURL":{ee=C.createScriptURL(ee);break}}if(ee!==Wi)try{de?v.setAttributeNS(de,Y,ee):v.setAttribute(Y,ee),Ui(v)?we(v):ia(t.removed)}catch{Ge(Y,v)}}_e(J.afterSanitizeAttributes,v,null)},_u=function L(v){let x=null;const P=eo(v);for(_e(J.beforeSanitizeShadowDOM,v,null);x=P.nextNode();)_e(J.uponSanitizeShadowNode,x,null),no(x),ro(x),x.content instanceof r&&L(x.content);_e(J.afterSanitizeShadowDOM,v,null)};return t.sanitize=function(L){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},x=null,P=null,z=null,te=null;if(Oi=!L,Oi&&(L="<!-->"),typeof L!="string"&&!to(L))if(typeof L.toString=="function"){if(L=L.toString(),typeof L!="string")throw zt("dirty is not a string, aborting")}else throw zt("toString is not a function");if(!t.isSupported)return L;if(re||Fi(v),t.removed=[],typeof L=="string"&&(Ot=!1),Ot){if(L.nodeName){const Me=X(L.nodeName);if(!V[Me]||Ve[Me])throw zt("root node is forbidden and cannot be sanitized in-place")}}else if(L instanceof a)x=Jr("<!---->"),P=x.ownerDocument.importNode(L,!0),P.nodeType===Ht.element&&P.nodeName==="BODY"||P.nodeName==="HTML"?x=P:x.appendChild(P);else{if(!ft&&!N&&!K&&L.indexOf("<")===-1)return C&&En?C.createHTML(L):L;if(x=Jr(L),!x)return ft?null:En?I:""}x&&Oe&&we(x.firstChild);const Y=eo(Ot?L:x);for(;z=Y.nextNode();)no(z),ro(z),z.content instanceof r&&_u(z.content);if(Ot)return L;if(ft){if(xn)for(te=He.call(x.ownerDocument);x.firstChild;)te.appendChild(x.firstChild);else te=x;return(G.shadowroot||G.shadowrootmode)&&(te=bn.call(i,te,!0)),te}let de=K?x.outerHTML:x.innerHTML;return K&&V["!doctype"]&&x.ownerDocument&&x.ownerDocument.doctype&&x.ownerDocument.doctype.name&&oe(wc,x.ownerDocument.doctype.name)&&(de="<!DOCTYPE "+x.ownerDocument.doctype.name+`>
|
|
1767
|
-
`+de),N&&On([Nt,ht,qe],Me=>{de=Kt(de,Me," ")}),
|
|
1768
|
-
]`).replace("lheading"
|
|
1766
|
+
`}const fc={CHILD:2},gc=e=>(...t)=>({_$litDirective$:e,values:t});let mc=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,n,i){this._$Ct=t,this._$AM=n,this._$Ci=i}_$AS(t,n){return this.update(t,n)}update(t,n){return this.render(...n)}};const{I:cf}=Zu,Zo=e=>e,Jo=()=>document.createComment(""),Ut=(e,t,n)=>{var r;const i=e._$AA.parentNode,s=t===void 0?e._$AB:t._$AA;if(n===void 0){const o=i.insertBefore(Jo(),s),a=i.insertBefore(Jo(),s);n=new cf(o,a,e,e.options)}else{const o=n._$AB.nextSibling,a=n._$AM,l=a!==e;if(l){let c;(r=n._$AQ)==null||r.call(n,e),n._$AM=e,n._$AP!==void 0&&(c=e._$AU)!==a._$AU&&n._$AP(c)}if(o!==s||l){let c=n._$AA;for(;c!==o;){const d=Zo(c).nextSibling;Zo(i).insertBefore(c,s),c=d}}}return n},Ye=(e,t,n=e)=>(e._$AI(t,n),e),uf={},df=(e,t=uf)=>e._$AH=t,pf=e=>e._$AH,ts=e=>{e._$AR(),e._$AA.remove()};const ea=(e,t,n)=>{const i=new Map;for(let s=t;s<=n;s++)i.set(e[s],s);return i},hf=gc(class extends mc{constructor(e){if(super(e),e.type!==fc.CHILD)throw Error("repeat() can only be used in text expressions")}dt(e,t,n){let i;n===void 0?n=t:t!==void 0&&(i=t);const s=[],r=[];let o=0;for(const a of e)s[o]=i?i(a,o):o,r[o]=n(a,o),o++;return{values:r,keys:s}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,i]){const s=pf(e),{values:r,keys:o}=this.dt(t,n,i);if(!Array.isArray(s))return this.ut=o,r;const a=this.ut??(this.ut=[]),l=[];let c,d,f=0,u=s.length-1,p=0,b=r.length-1;for(;f<=u&&p<=b;)if(s[f]===null)f++;else if(s[u]===null)u--;else if(a[f]===o[p])l[p]=Ye(s[f],r[p]),f++,p++;else if(a[u]===o[b])l[b]=Ye(s[u],r[b]),u--,b--;else if(a[f]===o[b])l[b]=Ye(s[f],r[b]),Ut(e,l[b+1],s[f]),f++,b--;else if(a[u]===o[p])l[p]=Ye(s[u],r[p]),Ut(e,s[f],s[u]),u--,p++;else if(c===void 0&&(c=ea(o,p,b),d=ea(a,f,u)),c.has(a[f]))if(c.has(a[u])){const w=d.get(o[p]),S=w!==void 0?s[w]:null;if(S===null){const C=Ut(e,s[f]);Ye(C,r[p]),l[p]=C}else l[p]=Ye(S,r[p]),Ut(e,s[f],S),s[w]=null;p++}else ts(s[u]),u--;else ts(s[f]),f++;for(;p<=b;){const w=Ut(e,l[b+1]);Ye(w,r[p]),l[p++]=w}for(;f<=u;){const w=s[f++];w!==null&&ts(w)}return this.ut=o,df(e,l),Ke}});class Is extends mc{constructor(t){if(super(t),this.it=k,t.type!==fc.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===k||t==null)return this._t=void 0,this.it=t;if(t===Ke)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const n=[t];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}}Is.directiveName="unsafeHTML",Is.resultType=1;const ai=gc(Is);const{entries:yc,setPrototypeOf:ta,isFrozen:ff,getPrototypeOf:gf,getOwnPropertyDescriptor:mf}=Object;let{freeze:ce,seal:he,create:Rs}=Object,{apply:Ns,construct:Ds}=typeof Reflect<"u"&&Reflect;ce||(ce=function(t){return t});he||(he=function(t){return t});Ns||(Ns=function(t,n){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r<i;r++)s[r-2]=arguments[r];return t.apply(n,s)});Ds||(Ds=function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return new t(...i)});const On=ue(Array.prototype.forEach),yf=ue(Array.prototype.lastIndexOf),na=ue(Array.prototype.pop),Wt=ue(Array.prototype.push),vf=ue(Array.prototype.splice),Gn=ue(String.prototype.toLowerCase),ns=ue(String.prototype.toString),is=ue(String.prototype.match),Kt=ue(String.prototype.replace),bf=ue(String.prototype.indexOf),wf=ue(String.prototype.trim),fe=ue(Object.prototype.hasOwnProperty),oe=ue(RegExp.prototype.test),zt=kf(TypeError);function ue(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return Ns(e,t,i)}}function kf(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return Ds(e,n)}}function O(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Gn;ta&&ta(e,null);let i=t.length;for(;i--;){let s=t[i];if(typeof s=="string"){const r=n(s);r!==s&&(ff(t)||(t[i]=r),s=r)}e[s]=!0}return e}function Sf(e){for(let t=0;t<e.length;t++)fe(e,t)||(e[t]=null);return e}function Ae(e){const t=Rs(null);for(const[n,i]of yc(e))fe(e,n)&&(Array.isArray(i)?t[n]=Sf(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=Ae(i):t[n]=i);return t}function jt(e,t){for(;e!==null;){const i=mf(e,t);if(i){if(i.get)return ue(i.get);if(typeof i.value=="function")return ue(i.value)}e=gf(e)}function n(){return null}return n}const ia=ce(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ss=ce(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),rs=ce(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Af=ce(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),os=ce(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),xf=ce(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),sa=ce(["#text"]),ra=ce(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),as=ce(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),oa=ce(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Bn=ce(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),$f=he(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ef=he(/<%[\w\W]*|[\w\W]*%>/gm),Cf=he(/\$\{[\w\W]*/gm),Tf=he(/^data-[\-\w.\u00B7-\uFFFF]+$/),_f=he(/^aria-[\-\w]+$/),vc=he(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Mf=he(/^(?:\w+script|data):/i),Pf=he(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),bc=he(/^html$/i),Lf=he(/^[a-z][.\w]*(-[.\w]+)+$/i);var aa=Object.freeze({__proto__:null,ARIA_ATTR:_f,ATTR_WHITESPACE:Pf,CUSTOM_ELEMENT:Lf,DATA_ATTR:Tf,DOCTYPE_NAME:bc,ERB_EXPR:Ef,IS_ALLOWED_URI:vc,IS_SCRIPT_OR_DATA:Mf,MUSTACHE_EXPR:$f,TMPLIT_EXPR:Cf});const Ht={element:1,text:3,progressingInstruction:7,comment:8,document:9},If=function(){return typeof window>"u"?null:window},Rf=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null;const s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(i=n.getAttribute(s));const r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},la=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function wc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:If();const t=L=>wc(L);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==Ht.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e;const i=n,s=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:o,Node:a,Element:l,NodeFilter:c,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:f,DOMParser:u,trustedTypes:p}=e,b=l.prototype,w=jt(b,"cloneNode"),S=jt(b,"remove"),C=jt(b,"nextSibling"),x=jt(b,"childNodes"),E=jt(b,"parentNode");if(typeof o=="function"){const L=n.createElement("template");L.content&&L.content.ownerDocument&&(n=L.content.ownerDocument)}let T,I="";const{implementation:U,createNodeIterator:Q,createDocumentFragment:He,getElementsByTagName:Rt}=n,{importNode:bn}=i;let J=la();t.isSupported=typeof yc=="function"&&typeof E=="function"&&U&&U.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Nt,ERB_EXPR:ht,TMPLIT_EXPR:qe,DATA_ATTR:Mi,ARIA_ATTR:Pi,IS_SCRIPT_OR_DATA:Li,ATTR_WHITESPACE:wn,CUSTOM_ELEMENT:Ii}=aa;let{IS_ALLOWED_URI:kn}=aa,V=null;const Sn=O({},[...ia,...ss,...rs,...os,...sa]);let G=null;const An=O({},[...ra,...as,...oa,...Bn]);let j=Object.seal(Rs(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ve=null,Dt=null;const De=Object.seal(Rs(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let xn=!0,A=!0,_=!1,R=!0,N=!1,H=!0,K=!1,re=!1,Oe=!1,ft=!1,$n=!1,En=!1,jr=!0,Hr=!1;const ku="user-content-";let Ri=!0,Ot=!1,gt={},be=null;const Ni=O({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let qr=null;const Vr=O({},["audio","video","img","source","image","track"]);let Di=null;const Gr=O({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cn="http://www.w3.org/1998/Math/MathML",Tn="http://www.w3.org/2000/svg",Te="http://www.w3.org/1999/xhtml";let mt=Te,Oi=!1,Bi=null;const Su=O({},[Cn,Tn,Te],ns);let _n=O({},["mi","mo","mn","ms","mtext"]),Mn=O({},["annotation-xml"]);const Au=O({},["title","style","font","a","script"]);let Bt=null;const xu=["application/xhtml+xml","text/html"],$u="text/html";let X=null,yt=null;const Eu=n.createElement("form"),Qr=function(v){return v instanceof RegExp||v instanceof Function},Fi=function(){let v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(yt&&yt===v)){if((!v||typeof v!="object")&&(v={}),v=Ae(v),Bt=xu.indexOf(v.PARSER_MEDIA_TYPE)===-1?$u:v.PARSER_MEDIA_TYPE,X=Bt==="application/xhtml+xml"?ns:Gn,V=fe(v,"ALLOWED_TAGS")?O({},v.ALLOWED_TAGS,X):Sn,G=fe(v,"ALLOWED_ATTR")?O({},v.ALLOWED_ATTR,X):An,Bi=fe(v,"ALLOWED_NAMESPACES")?O({},v.ALLOWED_NAMESPACES,ns):Su,Di=fe(v,"ADD_URI_SAFE_ATTR")?O(Ae(Gr),v.ADD_URI_SAFE_ATTR,X):Gr,qr=fe(v,"ADD_DATA_URI_TAGS")?O(Ae(Vr),v.ADD_DATA_URI_TAGS,X):Vr,be=fe(v,"FORBID_CONTENTS")?O({},v.FORBID_CONTENTS,X):Ni,Ve=fe(v,"FORBID_TAGS")?O({},v.FORBID_TAGS,X):Ae({}),Dt=fe(v,"FORBID_ATTR")?O({},v.FORBID_ATTR,X):Ae({}),gt=fe(v,"USE_PROFILES")?v.USE_PROFILES:!1,xn=v.ALLOW_ARIA_ATTR!==!1,A=v.ALLOW_DATA_ATTR!==!1,_=v.ALLOW_UNKNOWN_PROTOCOLS||!1,R=v.ALLOW_SELF_CLOSE_IN_ATTR!==!1,N=v.SAFE_FOR_TEMPLATES||!1,H=v.SAFE_FOR_XML!==!1,K=v.WHOLE_DOCUMENT||!1,ft=v.RETURN_DOM||!1,$n=v.RETURN_DOM_FRAGMENT||!1,En=v.RETURN_TRUSTED_TYPE||!1,Oe=v.FORCE_BODY||!1,jr=v.SANITIZE_DOM!==!1,Hr=v.SANITIZE_NAMED_PROPS||!1,Ri=v.KEEP_CONTENT!==!1,Ot=v.IN_PLACE||!1,kn=v.ALLOWED_URI_REGEXP||vc,mt=v.NAMESPACE||Te,_n=v.MATHML_TEXT_INTEGRATION_POINTS||_n,Mn=v.HTML_INTEGRATION_POINTS||Mn,j=v.CUSTOM_ELEMENT_HANDLING||{},v.CUSTOM_ELEMENT_HANDLING&&Qr(v.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(j.tagNameCheck=v.CUSTOM_ELEMENT_HANDLING.tagNameCheck),v.CUSTOM_ELEMENT_HANDLING&&Qr(v.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(j.attributeNameCheck=v.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),v.CUSTOM_ELEMENT_HANDLING&&typeof v.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(j.allowCustomizedBuiltInElements=v.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),N&&(A=!1),$n&&(ft=!0),gt&&(V=O({},sa),G=[],gt.html===!0&&(O(V,ia),O(G,ra)),gt.svg===!0&&(O(V,ss),O(G,as),O(G,Bn)),gt.svgFilters===!0&&(O(V,rs),O(G,as),O(G,Bn)),gt.mathMl===!0&&(O(V,os),O(G,oa),O(G,Bn))),v.ADD_TAGS&&(typeof v.ADD_TAGS=="function"?De.tagCheck=v.ADD_TAGS:(V===Sn&&(V=Ae(V)),O(V,v.ADD_TAGS,X))),v.ADD_ATTR&&(typeof v.ADD_ATTR=="function"?De.attributeCheck=v.ADD_ATTR:(G===An&&(G=Ae(G)),O(G,v.ADD_ATTR,X))),v.ADD_URI_SAFE_ATTR&&O(Di,v.ADD_URI_SAFE_ATTR,X),v.FORBID_CONTENTS&&(be===Ni&&(be=Ae(be)),O(be,v.FORBID_CONTENTS,X)),v.ADD_FORBID_CONTENTS&&(be===Ni&&(be=Ae(be)),O(be,v.ADD_FORBID_CONTENTS,X)),Ri&&(V["#text"]=!0),K&&O(V,["html","head","body"]),V.table&&(O(V,["tbody"]),delete Ve.tbody),v.TRUSTED_TYPES_POLICY){if(typeof v.TRUSTED_TYPES_POLICY.createHTML!="function")throw zt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof v.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw zt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=v.TRUSTED_TYPES_POLICY,I=T.createHTML("")}else T===void 0&&(T=Rf(p,s)),T!==null&&typeof I=="string"&&(I=T.createHTML(""));ce&&ce(v),yt=v}},Yr=O({},[...ss,...rs,...Af]),Xr=O({},[...os,...xf]),Cu=function(v){let $=E(v);(!$||!$.tagName)&&($={namespaceURI:mt,tagName:"template"});const P=Gn(v.tagName),z=Gn($.tagName);return Bi[v.namespaceURI]?v.namespaceURI===Tn?$.namespaceURI===Te?P==="svg":$.namespaceURI===Cn?P==="svg"&&(z==="annotation-xml"||_n[z]):!!Yr[P]:v.namespaceURI===Cn?$.namespaceURI===Te?P==="math":$.namespaceURI===Tn?P==="math"&&Mn[z]:!!Xr[P]:v.namespaceURI===Te?$.namespaceURI===Tn&&!Mn[z]||$.namespaceURI===Cn&&!_n[z]?!1:!Xr[P]&&(Au[P]||!Yr[P]):!!(Bt==="application/xhtml+xml"&&Bi[v.namespaceURI]):!1},we=function(v){Wt(t.removed,{element:v});try{E(v).removeChild(v)}catch{S(v)}},Ge=function(v,$){try{Wt(t.removed,{attribute:$.getAttributeNode(v),from:$})}catch{Wt(t.removed,{attribute:null,from:$})}if($.removeAttribute(v),v==="is")if(ft||$n)try{we($)}catch{}else try{$.setAttribute(v,"")}catch{}},Zr=function(v){let $=null,P=null;if(Oe)v="<remove></remove>"+v;else{const Y=is(v,/^[\r\n\t ]+/);P=Y&&Y[0]}Bt==="application/xhtml+xml"&&mt===Te&&(v='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+v+"</body></html>");const z=T?T.createHTML(v):v;if(mt===Te)try{$=new u().parseFromString(z,Bt)}catch{}if(!$||!$.documentElement){$=U.createDocument(mt,"template",null);try{$.documentElement.innerHTML=Oi?I:z}catch{}}const te=$.body||$.documentElement;return v&&P&&te.insertBefore(n.createTextNode(P),te.childNodes[0]||null),mt===Te?Rt.call($,K?"html":"body")[0]:K?$.documentElement:te},Jr=function(v){return Q.call(v.ownerDocument||v,v,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},Ui=function(v){return v instanceof f&&(typeof v.nodeName!="string"||typeof v.textContent!="string"||typeof v.removeChild!="function"||!(v.attributes instanceof d)||typeof v.removeAttribute!="function"||typeof v.setAttribute!="function"||typeof v.namespaceURI!="string"||typeof v.insertBefore!="function"||typeof v.hasChildNodes!="function")},eo=function(v){return typeof a=="function"&&v instanceof a};function _e(L,v,$){On(L,P=>{P.call(t,v,$,yt)})}const to=function(v){let $=null;if(_e(J.beforeSanitizeElements,v,null),Ui(v))return we(v),!0;const P=X(v.nodeName);if(_e(J.uponSanitizeElement,v,{tagName:P,allowedTags:V}),H&&v.hasChildNodes()&&!eo(v.firstElementChild)&&oe(/<[/\w!]/g,v.innerHTML)&&oe(/<[/\w!]/g,v.textContent)||v.nodeType===Ht.progressingInstruction||H&&v.nodeType===Ht.comment&&oe(/<[/\w]/g,v.data))return we(v),!0;if(!(De.tagCheck instanceof Function&&De.tagCheck(P))&&(!V[P]||Ve[P])){if(!Ve[P]&&io(P)&&(j.tagNameCheck instanceof RegExp&&oe(j.tagNameCheck,P)||j.tagNameCheck instanceof Function&&j.tagNameCheck(P)))return!1;if(Ri&&!be[P]){const z=E(v)||v.parentNode,te=x(v)||v.childNodes;if(te&&z){const Y=te.length;for(let de=Y-1;de>=0;--de){const Me=w(te[de],!0);Me.__removalCount=(v.__removalCount||0)+1,z.insertBefore(Me,C(v))}}}return we(v),!0}return v instanceof l&&!Cu(v)||(P==="noscript"||P==="noembed"||P==="noframes")&&oe(/<\/no(script|embed|frames)/i,v.innerHTML)?(we(v),!0):(N&&v.nodeType===Ht.text&&($=v.textContent,On([Nt,ht,qe],z=>{$=Kt($,z," ")}),v.textContent!==$&&(Wt(t.removed,{element:v.cloneNode()}),v.textContent=$)),_e(J.afterSanitizeElements,v,null),!1)},no=function(v,$,P){if(jr&&($==="id"||$==="name")&&(P in n||P in Eu))return!1;if(!(A&&!Dt[$]&&oe(Mi,$))){if(!(xn&&oe(Pi,$))){if(!(De.attributeCheck instanceof Function&&De.attributeCheck($,v))){if(!G[$]||Dt[$]){if(!(io(v)&&(j.tagNameCheck instanceof RegExp&&oe(j.tagNameCheck,v)||j.tagNameCheck instanceof Function&&j.tagNameCheck(v))&&(j.attributeNameCheck instanceof RegExp&&oe(j.attributeNameCheck,$)||j.attributeNameCheck instanceof Function&&j.attributeNameCheck($,v))||$==="is"&&j.allowCustomizedBuiltInElements&&(j.tagNameCheck instanceof RegExp&&oe(j.tagNameCheck,P)||j.tagNameCheck instanceof Function&&j.tagNameCheck(P))))return!1}else if(!Di[$]){if(!oe(kn,Kt(P,wn,""))){if(!(($==="src"||$==="xlink:href"||$==="href")&&v!=="script"&&bf(P,"data:")===0&&qr[v])){if(!(_&&!oe(Li,Kt(P,wn,"")))){if(P)return!1}}}}}}}return!0},io=function(v){return v!=="annotation-xml"&&is(v,Ii)},so=function(v){_e(J.beforeSanitizeAttributes,v,null);const{attributes:$}=v;if(!$||Ui(v))return;const P={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:G,forceKeepAttr:void 0};let z=$.length;for(;z--;){const te=$[z],{name:Y,namespaceURI:de,value:Me}=te,vt=X(Y),Wi=Me;let ee=Y==="value"?Wi:wf(Wi);if(P.attrName=vt,P.attrValue=ee,P.keepAttr=!0,P.forceKeepAttr=void 0,_e(J.uponSanitizeAttribute,v,P),ee=P.attrValue,Hr&&(vt==="id"||vt==="name")&&(Ge(Y,v),ee=ku+ee),H&&oe(/((--!?|])>)|<\/(style|title|textarea)/i,ee)){Ge(Y,v);continue}if(vt==="attributename"&&is(ee,"href")){Ge(Y,v);continue}if(P.forceKeepAttr)continue;if(!P.keepAttr){Ge(Y,v);continue}if(!R&&oe(/\/>/i,ee)){Ge(Y,v);continue}N&&On([Nt,ht,qe],oo=>{ee=Kt(ee,oo," ")});const ro=X(v.nodeName);if(!no(ro,vt,ee)){Ge(Y,v);continue}if(T&&typeof p=="object"&&typeof p.getAttributeType=="function"&&!de)switch(p.getAttributeType(ro,vt)){case"TrustedHTML":{ee=T.createHTML(ee);break}case"TrustedScriptURL":{ee=T.createScriptURL(ee);break}}if(ee!==Wi)try{de?v.setAttributeNS(de,Y,ee):v.setAttribute(Y,ee),Ui(v)?we(v):na(t.removed)}catch{Ge(Y,v)}}_e(J.afterSanitizeAttributes,v,null)},Tu=function L(v){let $=null;const P=Jr(v);for(_e(J.beforeSanitizeShadowDOM,v,null);$=P.nextNode();)_e(J.uponSanitizeShadowNode,$,null),to($),so($),$.content instanceof r&&L($.content);_e(J.afterSanitizeShadowDOM,v,null)};return t.sanitize=function(L){let v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},$=null,P=null,z=null,te=null;if(Oi=!L,Oi&&(L="<!-->"),typeof L!="string"&&!eo(L))if(typeof L.toString=="function"){if(L=L.toString(),typeof L!="string")throw zt("dirty is not a string, aborting")}else throw zt("toString is not a function");if(!t.isSupported)return L;if(re||Fi(v),t.removed=[],typeof L=="string"&&(Ot=!1),Ot){if(L.nodeName){const Me=X(L.nodeName);if(!V[Me]||Ve[Me])throw zt("root node is forbidden and cannot be sanitized in-place")}}else if(L instanceof a)$=Zr("<!---->"),P=$.ownerDocument.importNode(L,!0),P.nodeType===Ht.element&&P.nodeName==="BODY"||P.nodeName==="HTML"?$=P:$.appendChild(P);else{if(!ft&&!N&&!K&&L.indexOf("<")===-1)return T&&En?T.createHTML(L):L;if($=Zr(L),!$)return ft?null:En?I:""}$&&Oe&&we($.firstChild);const Y=Jr(Ot?L:$);for(;z=Y.nextNode();)to(z),so(z),z.content instanceof r&&Tu(z.content);if(Ot)return L;if(ft){if($n)for(te=He.call($.ownerDocument);$.firstChild;)te.appendChild($.firstChild);else te=$;return(G.shadowroot||G.shadowrootmode)&&(te=bn.call(i,te,!0)),te}let de=K?$.outerHTML:$.innerHTML;return K&&V["!doctype"]&&$.ownerDocument&&$.ownerDocument.doctype&&$.ownerDocument.doctype.name&&oe(bc,$.ownerDocument.doctype.name)&&(de="<!DOCTYPE "+$.ownerDocument.doctype.name+`>
|
|
1767
|
+
`+de),N&&On([Nt,ht,qe],Me=>{de=Kt(de,Me," ")}),T&&En?T.createHTML(de):de},t.setConfig=function(){let L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Fi(L),re=!0},t.clearConfig=function(){yt=null,re=!1},t.isValidAttribute=function(L,v,$){yt||Fi({});const P=X(L),z=X(v);return no(P,z,$)},t.addHook=function(L,v){typeof v=="function"&&Wt(J[L],v)},t.removeHook=function(L,v){if(v!==void 0){const $=yf(J[L],v);return $===-1?void 0:vf(J[L],$,1)[0]}return na(J[L])},t.removeHooks=function(L){J[L]=[]},t.removeAllHooks=function(){J=la()},t}var Os=wc();function Er(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var dt=Er();function kc(e){dt=e}var rn={exec:()=>null};function F(e,t=""){let n=typeof e=="string"?e:e.source,i={replace:(s,r)=>{let o=typeof r=="string"?r:r.source;return o=o.replace(ae.caret,"$1"),n=n.replace(s,o),i},getRegex:()=>new RegExp(n,t)};return i}var Nf=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),ae={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},Df=/^(?:[ \t]*(?:\n|$))+/,Of=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Bf=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,yn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Ff=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Cr=/(?:[*+-]|\d{1,9}[.)])/,Sc=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ac=F(Sc).replace(/bull/g,Cr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Uf=F(Sc).replace(/bull/g,Cr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Tr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Wf=/^[^\n]+/,_r=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Kf=F(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",_r).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),zf=F(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Cr).getRegex(),Ei="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Mr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,jf=F("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Mr).replace("tag",Ei).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),xc=F(Tr).replace("hr",yn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex(),Hf=F(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",xc).getRegex(),Pr={blockquote:Hf,code:Of,def:Kf,fences:Bf,heading:Ff,hr:yn,html:jf,lheading:Ac,list:zf,newline:Df,paragraph:xc,table:rn,text:Wf},ca=F("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",yn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex(),qf={...Pr,lheading:Uf,table:ca,paragraph:F(Tr).replace("hr",yn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ca).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex()},Vf={...Pr,html:F(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Mr).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:rn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:F(Tr).replace("hr",yn).replace("heading",` *#{1,6} *[^
|
|
1768
|
+
]`).replace("lheading",Ac).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Gf=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Qf=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,$c=/^( {2,}|\\)\n(?!\s*$)/,Yf=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ci=/[\p{P}\p{S}]/u,Lr=/[\s\p{P}\p{S}]/u,Ec=/[^\s\p{P}\p{S}]/u,Xf=F(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Lr).getRegex(),Cc=/(?!~)[\p{P}\p{S}]/u,Zf=/(?!~)[\s\p{P}\p{S}]/u,Jf=/(?:[^\s\p{P}\p{S}]|~)/u,eg=F(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Nf?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Tc=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,tg=F(Tc,"u").replace(/punct/g,Ci).getRegex(),ng=F(Tc,"u").replace(/punct/g,Cc).getRegex(),_c="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ig=F(_c,"gu").replace(/notPunctSpace/g,Ec).replace(/punctSpace/g,Lr).replace(/punct/g,Ci).getRegex(),sg=F(_c,"gu").replace(/notPunctSpace/g,Jf).replace(/punctSpace/g,Zf).replace(/punct/g,Cc).getRegex(),rg=F("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ec).replace(/punctSpace/g,Lr).replace(/punct/g,Ci).getRegex(),og=F(/\\(punct)/,"gu").replace(/punct/g,Ci).getRegex(),ag=F(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),lg=F(Mr).replace("(?:-->|$)","-->").getRegex(),cg=F("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",lg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),li=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,ug=F(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",li).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Mc=F(/^!?\[(label)\]\[(ref)\]/).replace("label",li).replace("ref",_r).getRegex(),Pc=F(/^!?\[(ref)\](?:\[\])?/).replace("ref",_r).getRegex(),dg=F("reflink|nolink(?!\\()","g").replace("reflink",Mc).replace("nolink",Pc).getRegex(),ua=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ir={_backpedal:rn,anyPunctuation:og,autolink:ag,blockSkip:eg,br:$c,code:Qf,del:rn,emStrongLDelim:tg,emStrongRDelimAst:ig,emStrongRDelimUnd:rg,escape:Gf,link:ug,nolink:Pc,punctuation:Xf,reflink:Mc,reflinkSearch:dg,tag:cg,text:Yf,url:rn},pg={...Ir,link:F(/^!?\[(label)\]\((.*?)\)/).replace("label",li).getRegex(),reflink:F(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",li).getRegex()},Bs={...Ir,emStrongRDelimAst:sg,emStrongLDelim:ng,url:F(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ua).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:F(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ua).getRegex()},hg={...Bs,br:F($c).replace("{2,}","*").getRegex(),text:F(Bs.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Fn={normal:Pr,gfm:qf,pedantic:Vf},qt={normal:Ir,gfm:Bs,breaks:hg,pedantic:pg},fg={"&":"&","<":"<",">":">",'"':""","'":"'"},da=e=>fg[e];function Le(e,t){if(t){if(ae.escapeTest.test(e))return e.replace(ae.escapeReplace,da)}else if(ae.escapeTestNoEncode.test(e))return e.replace(ae.escapeReplaceNoEncode,da);return e}function pa(e){try{e=encodeURI(e).replace(ae.percentDecode,"%")}catch{return null}return e}function ha(e,t){var r;let n=e.replace(ae.findPipe,(o,a,l)=>{let c=!1,d=a;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),i=n.split(ae.splitPipe),s=0;if(i[0].trim()||i.shift(),i.length>0&&!((r=i.at(-1))!=null&&r.trim())&&i.pop(),t)if(i.length>t)i.splice(t);else for(;i.length<t;)i.push("");for(;s<i.length;s++)i[s]=i[s].trim().replace(ae.slashPipe,"|");return i}function Vt(e,t,n){let i=e.length;if(i===0)return"";let s=0;for(;s<i&&e.charAt(i-s-1)===t;)s++;return e.slice(0,i-s)}function gg(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let i=0;i<e.length;i++)if(e[i]==="\\")i++;else if(e[i]===t[0])n++;else if(e[i]===t[1]&&(n--,n<0))return i;return n>0?-2:-1}function fa(e,t,n,i,s){let r=t.href,o=t.title||null,a=e[1].replace(s.other.outputLinkReplace,"$1");i.state.inLink=!0;let l={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:o,text:a,tokens:i.inlineTokens(a)};return i.state.inLink=!1,l}function mg(e,t,n){let i=e.match(n.other.indentCodeCompensation);if(i===null)return t;let s=i[1];return t.split(`
|
|
1769
1769
|
`).map(r=>{let o=r.match(n.other.beginningSpace);if(o===null)return r;let[a]=o;return a.length>=s.length?r.slice(s.length):r}).join(`
|
|
1770
1770
|
`)}var ci=class{constructor(e){B(this,"options");B(this,"rules");B(this,"lexer");this.options=e||dt}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Vt(n,`
|
|
1771
|
-
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=
|
|
1771
|
+
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=mg(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:i}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let i=Vt(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Vt(t[0],`
|
|
1772
1772
|
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Vt(t[0],`
|
|
1773
1773
|
`).split(`
|
|
1774
1774
|
`),i="",s="",r=[];for(;n.length>0;){let o=!1,a=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))a.push(n[l]),o=!0;else if(!o)a.push(n[l]);else break;n=n.slice(l);let c=a.join(`
|
|
1775
|
-
`),
|
|
1775
|
+
`),d=c.replace(this.rules.other.blockquoteSetextReplace,`
|
|
1776
1776
|
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
|
|
1777
1777
|
${c}`:c,s=s?`${s}
|
|
1778
|
-
${
|
|
1778
|
+
${d}`:d;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,r,!0),this.lexer.state.top=f,n.length===0)break;let u=r.at(-1);if((u==null?void 0:u.type)==="code")break;if((u==null?void 0:u.type)==="blockquote"){let p=u,b=p.raw+`
|
|
1779
1779
|
`+n.join(`
|
|
1780
|
-
`),
|
|
1780
|
+
`),w=this.blockquote(b);r[r.length-1]=w,i=i.substring(0,i.length-p.raw.length)+w.raw,s=s.substring(0,s.length-p.text.length)+w.text;break}else if((u==null?void 0:u.type)==="list"){let p=u,b=p.raw+`
|
|
1781
1781
|
`+n.join(`
|
|
1782
|
-
`),
|
|
1783
|
-
`);continue}}return{type:"blockquote",raw:i,tokens:r,text:s}}}list(e){var n,i;let t=this.rules.block.list.exec(e);if(t){let s=t[1].trim(),r=s.length>1,o={type:"list",raw:"",ordered:r,start:r?+s.slice(0,-1):"",loose:!1,items:[]};s=r?`\\d{1,9}\\${s.slice(-1)}`:`\\${s}`,this.options.pedantic&&(s=r?s:"[*+-]");let a=this.rules.other.listItemRegex(s),l=!1;for(;e;){let
|
|
1784
|
-
`,1)[0].replace(this.rules.other.listReplaceTabs,
|
|
1785
|
-
`,1)[0],
|
|
1786
|
-
`,e=e.substring(
|
|
1787
|
-
`,1)[0],Q;if(
|
|
1788
|
-
`+Q.slice(S);else{if(
|
|
1789
|
-
`+
|
|
1790
|
-
`,e=e.substring(U.length+1),p=Q.slice(S)}}o.loose||(l?o.loose=!0:this.rules.other.doubleBlankLine.test(f)&&(l=!0)),o.items.push({type:"list_item",raw:f,task:!!this.options.gfm&&this.rules.other.listIsTask.test(
|
|
1791
|
-
`):[],r={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let a of i)this.rules.other.tableAlignRight.test(a)?r.align.push("right"):this.rules.other.tableAlignCenter.test(a)?r.align.push("center"):this.rules.other.tableAlignLeft.test(a)?r.align.push("left"):r.align.push(null);for(let a=0;a<n.length;a++)r.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:r.align[a]});for(let a of s)r.rows.push(
|
|
1792
|
-
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=Vt(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=
|
|
1782
|
+
`),w=this.list(b);r[r.length-1]=w,i=i.substring(0,i.length-u.raw.length)+w.raw,s=s.substring(0,s.length-p.raw.length)+w.raw,n=b.substring(r.at(-1).raw.length).split(`
|
|
1783
|
+
`);continue}}return{type:"blockquote",raw:i,tokens:r,text:s}}}list(e){var n,i;let t=this.rules.block.list.exec(e);if(t){let s=t[1].trim(),r=s.length>1,o={type:"list",raw:"",ordered:r,start:r?+s.slice(0,-1):"",loose:!1,items:[]};s=r?`\\d{1,9}\\${s.slice(-1)}`:`\\${s}`,this.options.pedantic&&(s=r?s:"[*+-]");let a=this.rules.other.listItemRegex(s),l=!1;for(;e;){let d=!1,f="",u="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;f=t[0],e=e.substring(f.length);let p=t[2].split(`
|
|
1784
|
+
`,1)[0].replace(this.rules.other.listReplaceTabs,C=>" ".repeat(3*C.length)),b=e.split(`
|
|
1785
|
+
`,1)[0],w=!p.trim(),S=0;if(this.options.pedantic?(S=2,u=p.trimStart()):w?S=t[1].length+1:(S=t[2].search(this.rules.other.nonSpaceChar),S=S>4?1:S,u=p.slice(S),S+=t[1].length),w&&this.rules.other.blankLine.test(b)&&(f+=b+`
|
|
1786
|
+
`,e=e.substring(b.length+1),d=!0),!d){let C=this.rules.other.nextBulletRegex(S),x=this.rules.other.hrRegex(S),E=this.rules.other.fencesBeginRegex(S),T=this.rules.other.headingBeginRegex(S),I=this.rules.other.htmlBeginRegex(S);for(;e;){let U=e.split(`
|
|
1787
|
+
`,1)[0],Q;if(b=U,this.options.pedantic?(b=b.replace(this.rules.other.listReplaceNesting," "),Q=b):Q=b.replace(this.rules.other.tabCharGlobal," "),E.test(b)||T.test(b)||I.test(b)||C.test(b)||x.test(b))break;if(Q.search(this.rules.other.nonSpaceChar)>=S||!b.trim())u+=`
|
|
1788
|
+
`+Q.slice(S);else{if(w||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||E.test(p)||T.test(p)||x.test(p))break;u+=`
|
|
1789
|
+
`+b}!w&&!b.trim()&&(w=!0),f+=U+`
|
|
1790
|
+
`,e=e.substring(U.length+1),p=Q.slice(S)}}o.loose||(l?o.loose=!0:this.rules.other.doubleBlankLine.test(f)&&(l=!0)),o.items.push({type:"list_item",raw:f,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),o.raw+=f}let c=o.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let d of o.items){if(this.lexer.state.top=!1,d.tokens=this.lexer.blockTokens(d.text,[]),d.task){if(d.text=d.text.replace(this.rules.other.listReplaceTask,""),((n=d.tokens[0])==null?void 0:n.type)==="text"||((i=d.tokens[0])==null?void 0:i.type)==="paragraph"){d.tokens[0].raw=d.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),d.tokens[0].text=d.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}}let f=this.rules.other.listTaskCheckbox.exec(d.raw);if(f){let u={type:"checkbox",raw:f[0]+" ",checked:f[0]!=="[ ]"};d.checked=u.checked,o.loose?d.tokens[0]&&["paragraph","text"].includes(d.tokens[0].type)&&"tokens"in d.tokens[0]&&d.tokens[0].tokens?(d.tokens[0].raw=u.raw+d.tokens[0].raw,d.tokens[0].text=u.raw+d.tokens[0].text,d.tokens[0].tokens.unshift(u)):d.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):d.tokens.unshift(u)}}if(!o.loose){let f=d.tokens.filter(p=>p.type==="space"),u=f.length>0&&f.some(p=>this.rules.other.anyLine.test(p.raw));o.loose=u}}if(o.loose)for(let d of o.items){d.loose=!0;for(let f of d.tokens)f.type==="text"&&(f.type="paragraph")}return o}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),i=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:i,title:s}}}table(e){var o;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=ha(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=(o=t[3])!=null&&o.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
1791
|
+
`):[],r={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let a of i)this.rules.other.tableAlignRight.test(a)?r.align.push("right"):this.rules.other.tableAlignCenter.test(a)?r.align.push("center"):this.rules.other.tableAlignLeft.test(a)?r.align.push("left"):r.align.push(null);for(let a=0;a<n.length;a++)r.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:r.align[a]});for(let a of s)r.rows.push(ha(a,r.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:r.align[c]})));return r}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
1792
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=Vt(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=gg(t[2],"()");if(r===-2)return;if(r>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let i=t[2],s="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(i);r&&(i=r[1],s=r[3])}else s=t[3]?t[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),fa(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=t[i.toLowerCase()];if(!s){let r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return fa(n,s,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[2])||!n||this.rules.inline.punctuation.exec(n))){let s=[...i[0]].length-1,r,o,a=s,l=0,c=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(i=c.exec(t))!=null;){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(o=[...r].length,i[3]||i[4]){a+=o;continue}else if((i[5]||i[6])&&s%3&&!((s+o)%3)){l+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+l);let d=[...i[0]][0].length,f=e.slice(0,s+i.index+d+o);if(Math.min(s,o)%2){let p=f.slice(1,-1);return{type:"em",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}let u=f.slice(2,-2);return{type:"strong",raw:f,text:u,tokens:this.lexer.inlineTokens(u)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(n),s=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&s&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,i;return t[2]==="@"?(n=t[1],i="mailto:"+n):(n=t[1],i=n),{type:"link",raw:t[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n;let t;if(t=this.rules.inline.url.exec(e)){let i,s;if(t[2]==="@")i=t[0],s="mailto:"+i;else{let r;do r=t[0],t[0]=((n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])??"";while(r!==t[0]);i=t[0],t[1]==="www."?s="http://"+t[0]:s=t[0]}return{type:"link",raw:t[0],text:i,href:s,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},ge=class Fs{constructor(t){B(this,"tokens");B(this,"options");B(this,"state");B(this,"inlineQueue");B(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||dt,this.options.tokenizer=this.options.tokenizer||new ci,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:ae,block:Fn.normal,inline:qt.normal};this.options.pedantic?(n.block=Fn.pedantic,n.inline=qt.pedantic):this.options.gfm&&(n.block=Fn.gfm,this.options.breaks?n.inline=qt.breaks:n.inline=qt.gfm),this.tokenizer.rules=n}static get rules(){return{block:Fn,inline:qt}}static lex(t,n){return new Fs(n).lex(t)}static lexInline(t,n){return new Fs(n).inlineTokens(t)}lex(t){t=t.replace(ae.carriageReturn,`
|
|
1793
1793
|
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let i=this.inlineQueue[n];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],i=!1){var s,r,o;for(this.options.pedantic&&(t=t.replace(ae.tabCharGlobal," ").replace(ae.spaceLine,""));t;){let a;if((r=(s=this.options.extensions)==null?void 0:s.block)!=null&&r.some(c=>(a=c.call({lexer:this},t,n))?(t=t.substring(a.raw.length),n.push(a),!0):!1))continue;if(a=this.tokenizer.space(t)){t=t.substring(a.raw.length);let c=n.at(-1);a.raw.length===1&&c!==void 0?c.raw+=`
|
|
1794
1794
|
`:n.push(a);continue}if(a=this.tokenizer.code(t)){t=t.substring(a.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(`
|
|
1795
1795
|
`)?"":`
|
|
@@ -1797,13 +1797,13 @@ ${u}`:u;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
1797
1797
|
`+a.text,this.inlineQueue.at(-1).src=c.text):n.push(a);continue}if(a=this.tokenizer.fences(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.heading(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.hr(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.blockquote(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.list(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.html(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.def(t)){t=t.substring(a.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(`
|
|
1798
1798
|
`)?"":`
|
|
1799
1799
|
`)+a.raw,c.text+=`
|
|
1800
|
-
`+a.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[a.tag]||(this.tokens.links[a.tag]={href:a.href,title:a.title},n.push(a));continue}if(a=this.tokenizer.table(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.lheading(t)){t=t.substring(a.raw.length),n.push(a);continue}let l=t;if((o=this.options.extensions)!=null&&o.startBlock){let c=1/0,
|
|
1800
|
+
`+a.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[a.tag]||(this.tokens.links[a.tag]={href:a.href,title:a.title},n.push(a));continue}if(a=this.tokenizer.table(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.lheading(t)){t=t.substring(a.raw.length),n.push(a);continue}let l=t;if((o=this.options.extensions)!=null&&o.startBlock){let c=1/0,d=t.slice(1),f;this.options.extensions.startBlock.forEach(u=>{f=u.call({lexer:this},d),typeof f=="number"&&f>=0&&(c=Math.min(c,f))}),c<1/0&&c>=0&&(l=t.substring(0,c+1))}if(this.state.top&&(a=this.tokenizer.paragraph(l))){let c=n.at(-1);i&&(c==null?void 0:c.type)==="paragraph"?(c.raw+=(c.raw.endsWith(`
|
|
1801
1801
|
`)?"":`
|
|
1802
1802
|
`)+a.raw,c.text+=`
|
|
1803
1803
|
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(a),i=l.length!==t.length,t=t.substring(a.raw.length);continue}if(a=this.tokenizer.text(t)){t=t.substring(a.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(`
|
|
1804
1804
|
`)?"":`
|
|
1805
1805
|
`)+a.raw,c.text+=`
|
|
1806
|
-
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(a);continue}if(t){let c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var l,c,
|
|
1806
|
+
`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(a);continue}if(t){let c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var l,c,d,f,u;let i=t,s=null;if(this.tokens.links){let p=Object.keys(this.tokens.links);if(p.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)p.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(i))!=null;)i=i.slice(0,s.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)r=s[2]?s[2].length:0,i=i.slice(0,s.index+r)+"["+"a".repeat(s[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=((c=(l=this.options.hooks)==null?void 0:l.emStrongMask)==null?void 0:c.call({lexer:this},i))??i;let o=!1,a="";for(;t;){o||(a=""),o=!1;let p;if((f=(d=this.options.extensions)==null?void 0:d.inline)!=null&&f.some(w=>(p=w.call({lexer:this},t,n))?(t=t.substring(p.raw.length),n.push(p),!0):!1))continue;if(p=this.tokenizer.escape(t)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.tag(t)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.link(t)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(p.raw.length);let w=n.at(-1);p.type==="text"&&(w==null?void 0:w.type)==="text"?(w.raw+=p.raw,w.text+=p.text):n.push(p);continue}if(p=this.tokenizer.emStrong(t,i,a)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.codespan(t)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.br(t)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.del(t)){t=t.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.autolink(t)){t=t.substring(p.raw.length),n.push(p);continue}if(!this.state.inLink&&(p=this.tokenizer.url(t))){t=t.substring(p.raw.length),n.push(p);continue}let b=t;if((u=this.options.extensions)!=null&&u.startInline){let w=1/0,S=t.slice(1),C;this.options.extensions.startInline.forEach(x=>{C=x.call({lexer:this},S),typeof C=="number"&&C>=0&&(w=Math.min(w,C))}),w<1/0&&w>=0&&(b=t.substring(0,w+1))}if(p=this.tokenizer.inlineText(b)){t=t.substring(p.raw.length),p.raw.slice(-1)!=="_"&&(a=p.raw.slice(-1)),o=!0;let w=n.at(-1);(w==null?void 0:w.type)==="text"?(w.raw+=p.raw,w.text+=p.text):n.push(p);continue}if(t){let w="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(w);break}else throw new Error(w)}}return n}},ui=class{constructor(e){B(this,"options");B(this,"parser");this.options=e||dt}space(e){return""}code({text:e,lang:t,escaped:n}){var r;let i=(r=(t||"").match(ae.notSpaceStart))==null?void 0:r[0],s=e.replace(ae.endingNewline,"")+`
|
|
1807
1807
|
`;return i?'<pre><code class="language-'+Le(i)+'">'+(n?s:Le(s,!0))+`</code></pre>
|
|
1808
1808
|
`:"<pre><code>"+(n?s:Le(s,!0))+`</code></pre>
|
|
1809
1809
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
@@ -1821,23 +1821,23 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
1821
1821
|
`}tablerow({text:e}){return`<tr>
|
|
1822
1822
|
${e}</tr>
|
|
1823
1823
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
1824
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Le(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let i=this.parser.parseInline(n),s=
|
|
1825
|
-
Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}},at=new
|
|
1824
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Le(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let i=this.parser.parseInline(n),s=pa(e);if(s===null)return i;e=s;let r='<a href="'+e+'"';return t&&(r+=' title="'+Le(t)+'"'),r+=">"+i+"</a>",r}image({href:e,title:t,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let s=pa(e);if(s===null)return Le(n);e=s;let r=`<img src="${e}" alt="${n}"`;return t&&(r+=` title="${Le(t)}"`),r+=">",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Le(e.text)}},Rr=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},me=class Us{constructor(t){B(this,"options");B(this,"renderer");B(this,"textRenderer");this.options=t||dt,this.options.renderer=this.options.renderer||new ui,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Rr}static parse(t,n){return new Us(n).parse(t)}static parseInline(t,n){return new Us(n).parseInline(t)}parse(t){var i,s;let n="";for(let r=0;r<t.length;r++){let o=t[r];if((s=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&s[o.type]){let l=o,c=this.options.extensions.renderers[l.type].call({parser:this},l);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){n+=c||"";continue}}let a=o;switch(a.type){case"space":{n+=this.renderer.space(a);break}case"hr":{n+=this.renderer.hr(a);break}case"heading":{n+=this.renderer.heading(a);break}case"code":{n+=this.renderer.code(a);break}case"table":{n+=this.renderer.table(a);break}case"blockquote":{n+=this.renderer.blockquote(a);break}case"list":{n+=this.renderer.list(a);break}case"checkbox":{n+=this.renderer.checkbox(a);break}case"html":{n+=this.renderer.html(a);break}case"def":{n+=this.renderer.def(a);break}case"paragraph":{n+=this.renderer.paragraph(a);break}case"text":{n+=this.renderer.text(a);break}default:{let l='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}parseInline(t,n=this.renderer){var s,r;let i="";for(let o=0;o<t.length;o++){let a=t[o];if((r=(s=this.options.extensions)==null?void 0:s.renderers)!=null&&r[a.type]){let c=this.options.extensions.renderers[a.type].call({parser:this},a);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){i+=c||"";continue}}let l=a;switch(l.type){case"escape":{i+=n.text(l);break}case"html":{i+=n.html(l);break}case"link":{i+=n.link(l);break}case"image":{i+=n.image(l);break}case"checkbox":{i+=n.checkbox(l);break}case"strong":{i+=n.strong(l);break}case"em":{i+=n.em(l);break}case"codespan":{i+=n.codespan(l);break}case"br":{i+=n.br(l);break}case"del":{i+=n.del(l);break}case"text":{i+=n.text(l);break}default:{let c='Token with "'+l.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return i}},Hn,Yt=(Hn=class{constructor(e){B(this,"options");B(this,"block");this.options=e||dt}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?ge.lex:ge.lexInline}provideParser(){return this.block?me.parse:me.parseInline}},B(Hn,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),B(Hn,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Hn),yg=class{constructor(...e){B(this,"defaults",Er());B(this,"options",this.setOptions);B(this,"parse",this.parseMarkdown(!0));B(this,"parseInline",this.parseMarkdown(!1));B(this,"Parser",me);B(this,"Renderer",ui);B(this,"TextRenderer",Rr);B(this,"Lexer",ge);B(this,"Tokenizer",ci);B(this,"Hooks",Yt);this.use(...e)}walkTokens(e,t){var i,s;let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let o=r;for(let a of o.header)n=n.concat(this.walkTokens(a.tokens,t));for(let a of o.rows)for(let l of a)n=n.concat(this.walkTokens(l.tokens,t));break}case"list":{let o=r;n=n.concat(this.walkTokens(o.items,t));break}default:{let o=r;(s=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&s[o.type]?this.defaults.extensions.childTokens[o.type].forEach(a=>{let l=o[a].flat(1/0);n=n.concat(this.walkTokens(l,t))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let r=t.renderers[s.name];r?t.renderers[s.name]=function(...o){let a=s.renderer.apply(this,o);return a===!1&&(a=r.apply(this,o)),a}:t.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=t[s.level];r?r.unshift(s.tokenizer):t[s.level]=[s.tokenizer],s.start&&(s.level==="block"?t.startBlock?t.startBlock.push(s.start):t.startBlock=[s.start]:s.level==="inline"&&(t.startInline?t.startInline.push(s.start):t.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(t.childTokens[s.name]=s.childTokens)}),i.extensions=t),n.renderer){let s=this.defaults.renderer||new ui(this.defaults);for(let r in n.renderer){if(!(r in s))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let o=r,a=n.renderer[o],l=s[o];s[o]=(...c)=>{let d=a.apply(s,c);return d===!1&&(d=l.apply(s,c)),d||""}}i.renderer=s}if(n.tokenizer){let s=this.defaults.tokenizer||new ci(this.defaults);for(let r in n.tokenizer){if(!(r in s))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let o=r,a=n.tokenizer[o],l=s[o];s[o]=(...c)=>{let d=a.apply(s,c);return d===!1&&(d=l.apply(s,c)),d}}i.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new Yt;for(let r in n.hooks){if(!(r in s))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let o=r,a=n.hooks[o],l=s[o];Yt.passThroughHooks.has(r)?s[o]=c=>{if(this.defaults.async&&Yt.passThroughHooksRespectAsync.has(r))return(async()=>{let f=await a.call(s,c);return l.call(s,f)})();let d=a.call(s,c);return l.call(s,d)}:s[o]=(...c)=>{if(this.defaults.async)return(async()=>{let f=await a.apply(s,c);return f===!1&&(f=await l.apply(s,c)),f})();let d=a.apply(s,c);return d===!1&&(d=l.apply(s,c)),d}}i.hooks=s}if(n.walkTokens){let s=this.defaults.walkTokens,r=n.walkTokens;i.walkTokens=function(o){let a=[];return a.push(r.call(this,o)),s&&(a=a.concat(s.call(this,o))),a}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ge.lex(e,t??this.defaults)}parser(e,t){return me.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let i={...n},s={...this.defaults,...i},r=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(t):t,a=await(s.hooks?await s.hooks.provideLexer():e?ge.lex:ge.lexInline)(o,s),l=s.hooks?await s.hooks.processAllTokens(a):a;s.walkTokens&&await Promise.all(this.walkTokens(l,s.walkTokens));let c=await(s.hooks?await s.hooks.provideParser():e?me.parse:me.parseInline)(l,s);return s.hooks?await s.hooks.postprocess(c):c})().catch(r);try{s.hooks&&(t=s.hooks.preprocess(t));let o=(s.hooks?s.hooks.provideLexer():e?ge.lex:ge.lexInline)(t,s);s.hooks&&(o=s.hooks.processAllTokens(o)),s.walkTokens&&this.walkTokens(o,s.walkTokens);let a=(s.hooks?s.hooks.provideParser():e?me.parse:me.parseInline)(o,s);return s.hooks&&(a=s.hooks.postprocess(a)),a}catch(o){return r(o)}}}onError(e,t){return n=>{if(n.message+=`
|
|
1825
|
+
Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}},at=new yg;function W(e,t){return at.parse(e,t)}W.options=W.setOptions=function(e){return at.setOptions(e),W.defaults=at.defaults,kc(W.defaults),W};W.getDefaults=Er;W.defaults=dt;W.use=function(...e){return at.use(...e),W.defaults=at.defaults,kc(W.defaults),W};W.walkTokens=function(e,t){return at.walkTokens(e,t)};W.parseInline=at.parseInline;W.Parser=me;W.parser=me.parse;W.Renderer=ui;W.TextRenderer=Rr;W.Lexer=ge;W.lexer=ge.lex;W.Tokenizer=ci;W.Hooks=Yt;W.parse=W;W.options;W.setOptions;W.use;W.walkTokens;W.parseInline;me.parse;ge.lex;W.setOptions({gfm:!0,breaks:!0,mangle:!1});const ga=["a","b","blockquote","br","code","del","em","h1","h2","h3","h4","hr","i","li","ol","p","pre","strong","table","tbody","td","th","thead","tr","ul"],ma=["class","href","rel","target","title","start"];let ya=!1;const vg=14e4,bg=4e4,wg=200,ls=5e4,Je=new Map;function kg(e){const t=Je.get(e);return t===void 0?null:(Je.delete(e),Je.set(e,t),t)}function va(e,t){if(Je.set(e,t),Je.size<=wg)return;const n=Je.keys().next().value;n&&Je.delete(n)}function Sg(){ya||(ya=!0,Os.addHook("afterSanitizeAttributes",e=>{!(e instanceof HTMLAnchorElement)||!e.getAttribute("href")||(e.setAttribute("rel","noreferrer noopener"),e.setAttribute("target","_blank"))}))}function di(e){const t=e.trim();if(!t)return"";if(Sg(),t.length<=ls){const o=kg(t);if(o!==null)return o}const n=dl(t,vg),i=n.truncated?`
|
|
1826
1826
|
|
|
1827
|
-
… truncated (${n.total} chars, showing first ${n.text.length}).`:"";if(n.text.length>
|
|
1827
|
+
… truncated (${n.total} chars, showing first ${n.text.length}).`:"";if(n.text.length>bg){const a=`<pre class="code-block">${Ag(`${n.text}${i}`)}</pre>`,l=Os.sanitize(a,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,l),l}const s=W.parse(`${n.text}${i}`),r=Os.sanitize(s,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,r),r}function Ag(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const xg=1500,$g=2e3,Lc="Copy as markdown",Eg="Copied",Cg="Copy failed";async function Tg(e){if(!e)return!1;try{return await navigator.clipboard.writeText(e),!0}catch{try{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const n=document.execCommand("copy");return document.body.removeChild(t),n}catch{return!1}}}function Un(e,t){e.title=t,e.setAttribute("aria-label",t)}function _g(e){const t=e.label??Lc;return h`
|
|
1828
1828
|
<button
|
|
1829
1829
|
class="chat-copy-btn"
|
|
1830
1830
|
type="button"
|
|
1831
1831
|
title=${t}
|
|
1832
1832
|
aria-label=${t}
|
|
1833
|
-
@click=${async n=>{const i=n.currentTarget;if(i==null||i.querySelector(".chat-copy-btn__icon"),!i||i.dataset.copying==="1")return;i.dataset.copying="1",i.setAttribute("aria-busy","true"),i.disabled=!0;const s=await
|
|
1833
|
+
@click=${async n=>{const i=n.currentTarget;if(i==null||i.querySelector(".chat-copy-btn__icon"),!i||i.dataset.copying==="1")return;i.dataset.copying="1",i.setAttribute("aria-busy","true"),i.disabled=!0;const s=await Tg(e.text());if(i.isConnected){if(delete i.dataset.copying,i.removeAttribute("aria-busy"),i.disabled=!1,!s){i.dataset.error="1",Un(i,Cg),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.error,Un(i,t))},$g);return}i.dataset.copied="1",Un(i,Eg),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.copied,Un(i,t))},xg)}}}
|
|
1834
1834
|
>
|
|
1835
1835
|
<span class="chat-copy-btn__icon" aria-hidden="true">
|
|
1836
1836
|
<span class="chat-copy-btn__icon-copy">${D.copy}</span>
|
|
1837
1837
|
<span class="chat-copy-btn__icon-check">${D.check}</span>
|
|
1838
1838
|
</span>
|
|
1839
1839
|
</button>
|
|
1840
|
-
`}function
|
|
1840
|
+
`}function Mg(e){return _g({text:()=>e,label:Lc})}function Pg(e){const t=e,n=Lg(t.content),i=[];for(const s of n){const r=String(s.type??"").toLowerCase();(["toolcall","tool_call","tooluse","tool_use"].includes(r)||typeof s.name=="string"&&s.arguments!=null)&&i.push({kind:"call",name:s.name??"tool",args:Ig(s.arguments??s.args)})}for(const s of n){const r=String(s.type??"").toLowerCase();if(r!=="toolresult"&&r!=="tool_result")continue;const o=Rg(s),a=typeof s.name=="string"?s.name:"tool";i.push({kind:"result",name:a,text:o})}if(gl(e)&&!i.some(s=>s.kind==="result")){const s=typeof t.toolName=="string"&&t.toolName||typeof t.tool_name=="string"&&t.tool_name||"tool",r=pl(e)??void 0;i.push({kind:"result",name:s,text:r})}return i}function Lg(e){return Array.isArray(e)?e.filter(Boolean):[]}function Ig(e){if(typeof e!="string")return e;const t=e.trim();if(!t||!t.startsWith("{")&&!t.startsWith("["))return e;try{return JSON.parse(t)}catch{return e}}function Rg(e){if(typeof e.text=="string")return e.text;if(typeof e.content=="string")return e.content}function Ng(e){var s;const n=e.content,i=[];if(Array.isArray(n))for(const r of n){if(typeof r!="object"||r===null)continue;const o=r;if(o.type==="image")if(((s=o.source)==null?void 0:s.type)==="base64"){const a=o.source,l=a.data,c=a.media_type||"image/png",d=l.startsWith("data:")?l:`data:${c};base64,${l}`;i.push({url:d})}else if(typeof o.data=="string"&&o.data){const a=o.data,l=o.mimeType||o.media_type||"image/png",c=a.startsWith("data:")?a:`data:${l};base64,${a}`;i.push({url:c})}else typeof o.url=="string"&&i.push({url:o.url});else if(o.type==="image_url"){const a=o.image_url;typeof(a==null?void 0:a.url)=="string"&&i.push({url:a.url})}}return i}function Dg(e){return h`
|
|
1841
1841
|
<div class="chat-group assistant">
|
|
1842
1842
|
<div class="chat-group-messages">
|
|
1843
1843
|
<div class="chat-bubble chat-reading-indicator" aria-hidden="true">
|
|
@@ -1847,7 +1847,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
1847
1847
|
</div>
|
|
1848
1848
|
</div>
|
|
1849
1849
|
</div>
|
|
1850
|
-
`}function
|
|
1850
|
+
`}function Og(e){return h`
|
|
1851
1851
|
<div class="chat-group assistant">
|
|
1852
1852
|
<div class="chat-group-messages">
|
|
1853
1853
|
<div class="chat-interim fade-in">
|
|
@@ -1855,22 +1855,22 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
1855
1855
|
</div>
|
|
1856
1856
|
</div>
|
|
1857
1857
|
</div>
|
|
1858
|
-
`}function
|
|
1858
|
+
`}function Bg(e,t,n,i){return h`
|
|
1859
1859
|
<div class="chat-group assistant">
|
|
1860
1860
|
<div class="chat-group-messages">
|
|
1861
|
-
${
|
|
1861
|
+
${Ic({role:"assistant",content:[{type:"text",text:e}],timestamp:t},{isStreaming:!1,showReasoning:!1})}
|
|
1862
1862
|
</div>
|
|
1863
1863
|
</div>
|
|
1864
|
-
`}function
|
|
1864
|
+
`}function Fg(e,t){const n=fl(e.role),i=n==="user"?"user":n==="assistant"?"assistant":"other",s=new Date(e.timestamp).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"});return h`
|
|
1865
1865
|
<div class="chat-group ${i}">
|
|
1866
1866
|
<div class="chat-group-messages">
|
|
1867
|
-
${e.messages.map((r,o)=>
|
|
1867
|
+
${e.messages.map((r,o)=>Ic(r.message,{isStreaming:e.isStreaming&&o===e.messages.length-1,showReasoning:t.showReasoning}))}
|
|
1868
1868
|
<div class="chat-group-footer">
|
|
1869
1869
|
<span class="chat-group-timestamp">${s}</span>
|
|
1870
1870
|
</div>
|
|
1871
1871
|
</div>
|
|
1872
1872
|
</div>
|
|
1873
|
-
`}function
|
|
1873
|
+
`}function Ug(e){return e.length===0?k:h`
|
|
1874
1874
|
<div class="chat-message-images">
|
|
1875
1875
|
${e.map(t=>h`
|
|
1876
1876
|
<img
|
|
@@ -1881,14 +1881,14 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
1881
1881
|
/>
|
|
1882
1882
|
`)}
|
|
1883
1883
|
</div>
|
|
1884
|
-
`}function
|
|
1884
|
+
`}function Ic(e,t,n){const i=e,s=typeof i.role=="string"?i.role:"unknown",r=gl(e)||s.toLowerCase()==="toolresult"||s.toLowerCase()==="tool_result"||typeof i.toolCallId=="string"||typeof i.tool_call_id=="string",a=Pg(e).length>0,l=Ng(e),c=l.length>0,d=pl(e),f=t.showReasoning&&s==="assistant"?md(e):null,u=d!=null&&d.trim()?d:null,p=f?vd(f):null,b=u,w=(s==="assistant"||s==="user")&&!!(b!=null&&b.trim()),S=["chat-bubble",w?"has-copy":"",t.isStreaming?"streaming":"","fade-in"].filter(Boolean).join(" ");return!b&&(a||r)||!b&&!c?k:h`
|
|
1885
1885
|
<div class="${S}">
|
|
1886
|
-
${
|
|
1887
|
-
${
|
|
1886
|
+
${w?Mg(b):k}
|
|
1887
|
+
${Ug(l)}
|
|
1888
1888
|
${p?h`<div class="chat-thinking">${ai(di(p))}</div>`:k}
|
|
1889
|
-
${
|
|
1889
|
+
${b?h`<div class="chat-text">${ai(di(b))}</div>`:k}
|
|
1890
1890
|
</div>
|
|
1891
|
-
`}function
|
|
1891
|
+
`}function Wg(e){return h`
|
|
1892
1892
|
<div class="sidebar-panel">
|
|
1893
1893
|
<div class="sidebar-header">
|
|
1894
1894
|
<div class="sidebar-title">Tool Output</div>
|
|
@@ -1905,7 +1905,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
1905
1905
|
`:e.content?h`<div class="sidebar-markdown">${ai(di(e.content))}</div>`:h`<div class="muted">No content available</div>`}
|
|
1906
1906
|
</div>
|
|
1907
1907
|
</div>
|
|
1908
|
-
`}var
|
|
1908
|
+
`}var Kg=Object.defineProperty,zg=Object.getOwnPropertyDescriptor,Ti=(e,t,n,i)=>{for(var s=i>1?void 0:i?zg(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&Kg(t,n,s),s};let Tt=class extends At{constructor(){super(...arguments),this.splitRatio=.6,this.minRatio=.4,this.maxRatio=.7,this.isDragging=!1,this.startX=0,this.startRatio=0,this.handleMouseDown=e=>{this.isDragging=!0,this.startX=e.clientX,this.startRatio=this.splitRatio,this.classList.add("dragging"),document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),e.preventDefault()},this.handleMouseMove=e=>{if(!this.isDragging)return;const t=this.parentElement;if(!t)return;const n=t.getBoundingClientRect().width,s=(e.clientX-this.startX)/n;let r=this.startRatio+s;r=Math.max(this.minRatio,Math.min(this.maxRatio,r)),this.dispatchEvent(new CustomEvent("resize",{detail:{splitRatio:r},bubbles:!0,composed:!0}))},this.handleMouseUp=()=>{this.isDragging=!1,this.classList.remove("dragging"),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}}render(){return h``}connectedCallback(){super.connectedCallback(),this.addEventListener("mousedown",this.handleMouseDown)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("mousedown",this.handleMouseDown),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}};Tt.styles=Ru`
|
|
1909
1909
|
:host {
|
|
1910
1910
|
width: 4px;
|
|
1911
1911
|
cursor: col-resize;
|
|
@@ -1931,21 +1931,21 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
|
|
|
1931
1931
|
:host(.dragging) {
|
|
1932
1932
|
background: var(--accent, #007bff);
|
|
1933
1933
|
}
|
|
1934
|
-
`;Ci([bi({type:Number})],Ct.prototype,"splitRatio",2);Ci([bi({type:Number})],Ct.prototype,"minRatio",2);Ci([bi({type:Number})],Ct.prototype,"maxRatio",2);Ct=Ci([al("resizable-divider")],Ct);function Wn(e){if(typeof e!="string"||!e)throw new Error("expected a non-empty string, got: "+e)}function cs(e){if(typeof e!="number")throw new Error("expected a number, got: "+e)}const Hg=1,qg=1,pt="emoji",_t="keyvalue",Dr="favorites",Vg="tokens",Nc="tokens",Gg="unicode",Dc="count",Qg="group",Yg="order",Oc="group-order",Ws="eTag",pi="url",wa="skinTone",It="readonly",Or="readwrite",Bc="skinUnicodes",Xg="skinUnicodes",Zg="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",Jg="en";function em(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function ka(e){return em(e,t=>t.unicode)}function tm(e){function t(n,i,s){const r=i?e.createObjectStore(n,{keyPath:i}):e.createObjectStore(n);if(s)for(const[o,[a,l]]of Object.entries(s))r.createIndex(o,a,{multiEntry:l});return r}t(_t),t(pt,Gg,{[Nc]:[Vg,!0],[Oc]:[[Qg,Yg]],[Bc]:[Xg,!0]}),t(Dr,void 0,{[Dc]:[""]})}const Ks={},Qn={},hi={};function Fc(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function nm(e){const t=await new Promise((n,i)=>{const s=indexedDB.open(e,Hg);Ks[e]=s,s.onupgradeneeded=r=>{r.oldVersion<qg&&tm(s.result)},Fc(n,i,s)});return t.onclose=()=>Br(e),t}function im(e){return Qn[e]||(Qn[e]=nm(e)),Qn[e]}function Ne(e,t,n,i){return new Promise((s,r)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a=typeof t=="string"?o.objectStore(t):t.map(c=>o.objectStore(c));let l;i(a,o,c=>{l=c}),o.oncomplete=()=>s(l),o.onerror=()=>r(o.error)})}function Br(e){const t=Ks[e],n=t&&t.result;if(n){n.close();const i=hi[e];if(i)for(const s of i)s()}delete Ks[e],delete Qn[e],delete hi[e]}function sm(e){return new Promise((t,n)=>{Br(e);const i=indexedDB.deleteDatabase(e);Fc(t,n,i)})}function rm(e,t){let n=hi[e];n||(n=hi[e]=[]),n.push(t)}const om=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function xt(e){return e.split(/[\s_]+/).map(t=>!t.match(/\w/)||om.has(t)?t.toLowerCase():t.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const am=2;function Uc(e){return e.filter(Boolean).map(t=>t.toLowerCase()).filter(t=>t.length>=am)}function lm(e){return e.map(({annotation:n,emoticon:i,group:s,order:r,shortcodes:o,skins:a,tags:l,emoji:c,version:u})=>{const f=[...new Set(Uc([...(o||[]).map(xt).flat(),...(l||[]).map(xt).flat(),...xt(n),i]))].sort(),d={annotation:n,group:s,order:r,tags:l,tokens:f,unicode:c,version:u};if(i&&(d.emoticon=i),o&&(d.shortcodes=o),a){d.skinTones=[],d.skinUnicodes=[],d.skinVersions=[];for(const{tone:p,emoji:w,version:b}of a)d.skinTones.push(p),d.skinUnicodes.push(w),d.skinVersions.push(b)}return d})}function Wc(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function lt(e,t,n){Wc(e,"get",t,n)}function Kc(e,t,n){Wc(e,"getAll",t,n)}function Fr(e){e.commit&&e.commit()}function cm(e,t){let n=e[0];for(let i=1;i<e.length;i++){const s=e[i];t(n)>t(s)&&(n=s)}return n}function zc(e,t){const n=cm(e,s=>s.length),i=[];for(const s of n)e.some(r=>r.findIndex(o=>t(o)===t(s))===-1)||i.push(s);return i}async function um(e){return!await Ur(e,_t,pi)}async function dm(e,t,n){const[i,s]=await Promise.all([Ws,pi].map(r=>Ur(e,_t,r)));return i===n&&s===t}async function pm(e,t){return Ne(e,pt,It,(i,s,r)=>{let o;const a=()=>{i.getAll(o&&IDBKeyRange.lowerBound(o,!0),50).onsuccess=l=>{const c=l.target.result;for(const u of c)if(o=u.unicode,t(u))return r(u);if(c.length<50)return r();a()}};a()})}async function jc(e,t,n,i){{const s=lm(t);await Ne(e,[pt,_t],Or,([r,o],a)=>{let l,c,u=0;function f(){++u===2&&d()}function d(){if(!(l===i&&c===n)){r.clear();for(const p of s)r.put(p);o.put(i,Ws),o.put(n,pi),Fr(a)}}lt(o,Ws,p=>{l=p,f()}),lt(o,pi,p=>{c=p,f()})})}}async function hm(e,t){return Ne(e,pt,It,(n,i,s)=>{const r=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);Kc(n.index(Oc),r,s)})}async function Hc(e,t){const n=Uc(xt(t));return n.length?Ne(e,pt,It,(i,s,r)=>{const o=[],a=()=>{o.length===n.length&&l()},l=()=>{const c=zc(o,u=>u.unicode);r(c.sort((u,f)=>u.order<f.order?-1:1))};for(let c=0;c<n.length;c++){const u=n[c],f=c===n.length-1?IDBKeyRange.bound(u,u+"",!1,!0):IDBKeyRange.only(u);Kc(i.index(Nc),f,d=>{o.push(d),a()})}}):[]}async function fm(e,t){const n=await Hc(e,t);return n.length?n.filter(i=>(i.shortcodes||[]).map(r=>r.toLowerCase()).includes(t.toLowerCase()))[0]||null:await pm(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function gm(e,t){return Ne(e,pt,It,(n,i,s)=>lt(n,t,r=>{if(r)return s(r);lt(n.index(Bc),t,o=>s(o||null))}))}function Ur(e,t,n){return Ne(e,t,It,(i,s,r)=>lt(i,n,r))}function mm(e,t,n,i){return Ne(e,t,Or,(s,r)=>{s.put(i,n),Fr(r)})}function ym(e,t){return Ne(e,Dr,Or,(n,i)=>lt(n,t,s=>{n.put((s||0)+1,t),Fr(i)}))}function vm(e,t,n){return n===0?[]:Ne(e,[Dr,pt],It,([i,s],r,o)=>{const a=[];i.index(Dc).openCursor(void 0,"prev").onsuccess=l=>{const c=l.target.result;if(!c)return o(a);function u(p){if(a.push(p),a.length===n)return o(a);c.continue()}const f=c.primaryKey,d=t.byName(f);if(d)return u(d);lt(s,f,p=>{if(p)return u(p);c.continue()})}})}const Kn="";function bm(e,t){const n=new Map;for(const s of e){const r=t(s);for(const o of r){let a=n;for(let c=0;c<o.length;c++){const u=o.charAt(c);let f=a.get(u);f||(f=new Map,a.set(u,f)),a=f}let l=a.get(Kn);l||(l=[],a.set(Kn,l)),l.push(s)}}return(s,r)=>{let o=n;for(let c=0;c<s.length;c++){const u=s.charAt(c),f=o.get(u);if(f)o=f;else return[]}if(r)return o.get(Kn)||[];const a=[],l=[o];for(;l.length;){const u=[...l.shift().entries()].sort((f,d)=>f[0]<d[0]?-1:1);for(const[f,d]of u)f===Kn?a.push(...d):l.push(d)}return a}}const wm=["name","url"];function km(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||wm.some(i=>!(i in e[0])));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function Sa(e){km(e);const t=(d,p)=>d.name.toLowerCase()<p.name.toLowerCase()?-1:1,n=e.sort(t),s=bm(e,d=>{const p=new Set;if(d.shortcodes)for(const w of d.shortcodes)for(const b of xt(w))p.add(b);return p}),r=d=>s(d,!0),o=d=>s(d,!1),a=d=>{const p=xt(d),w=p.map((b,S)=>(S<p.length-1?r:o)(b));return zc(w,b=>b.name).sort(t)},l=new Map,c=new Map;for(const d of e){c.set(d.name.toLowerCase(),d);for(const p of d.shortcodes||[])l.set(p.toLowerCase(),d)}return{all:n,search:a,byShortcode:d=>l.get(d.toLowerCase()),byName:d=>c.get(d.toLowerCase())}}const Sm=typeof wrappedJSObject<"u";function Gt(e){if(!e)return e;if(Sm&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n<t;n++)e.skins[n]={tone:e.skinTones[n],unicode:e.skinUnicodes[n],version:e.skinVersions[n]};delete e.skinTones,delete e.skinUnicodes,delete e.skinVersions}return e}function qc(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const Am=["annotation","emoji","group","order","version"];function $m(e){if(!e||!Array.isArray(e)||!e[0]||typeof e[0]!="object"||Am.some(t=>!(t in e[0])))throw new Error("Emoji data is in the wrong format")}function Vc(e,t){if(Math.floor(e.status/100)!==2)throw new Error("Failed to fetch: "+t+": "+e.status)}async function xm(e){const t=await fetch(e,{method:"HEAD"});Vc(t,e);const n=t.headers.get("etag");return qc(n),n}async function zs(e){const t=await fetch(e);Vc(t,e);const n=t.headers.get("etag");qc(n);const i=await t.json();return $m(i),[n,i]}function Em(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,s=-1;++s<i;)t+=String.fromCharCode(n[s]);return t}function Tm(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),s=-1;++s<t;)i[s]=e.charCodeAt(s);return n}async function Gc(e){const t=JSON.stringify(e);let n=Tm(t);const i=await crypto.subtle.digest("SHA-1",n),s=Em(i);return btoa(s)}async function Cm(e,t){let n,i=await xm(t);if(!i){const s=await zs(t);i=s[0],n=s[1],i||(i=await Gc(n))}await dm(e,t,i)||(n||(n=(await zs(t))[1]),await jc(e,n,t,i))}async function _m(e,t){let[n,i]=await zs(t);n||(n=await Gc(i)),await jc(e,i,t,n)}async function Mm(e,t){try{await Cm(e,t)}catch(n){if(n.name!=="InvalidStateError")throw n}}class Pm{constructor({dataSource:t=Zg,locale:n=Jg,customEmoji:i=[]}={}){this.dataSource=t,this.locale=n,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=Sa(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const t=this._db=await im(this._dbName);rm(this._dbName,this._clear);const n=this.dataSource;await um(t)?await _m(t,n):this._lazyUpdate=Mm(t,n)}async ready(){const t=async()=>(this._ready||(this._ready=this._init()),this._ready);await t(),this._db||await t()}async getEmojiByGroup(t){return cs(t),await this.ready(),ka(await hm(this._db,t)).map(Gt)}async getEmojiBySearchQuery(t){Wn(t),await this.ready();const n=this._custom.search(t),i=ka(await Hc(this._db,t)).map(Gt);return[...n,...i]}async getEmojiByShortcode(t){Wn(t),await this.ready();const n=this._custom.byShortcode(t);return n||Gt(await fm(this._db,t))}async getEmojiByUnicodeOrName(t){Wn(t),await this.ready();const n=this._custom.byName(t);return n||Gt(await gm(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await Ur(this._db,_t,wa)||0}async setPreferredSkinTone(t){return cs(t),await this.ready(),mm(this._db,_t,wa,t)}async incrementFavoriteEmojiCount(t){return Wn(t),await this.ready(),ym(this._db,t)}async getTopFavoriteEmoji(t){return cs(t),await this.ready(),(await vm(this._db,this._custom,t)).map(Gt)}set customEmoji(t){this._custom=Sa(t)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch{}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Br(this._dbName)}async delete(){await this._shutdown(),await sm(this._dbName)}}const js=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([e,t,n])=>({id:e,emoji:t,name:n})),us=js.slice(1),Lm=2,Aa=6,Qc=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function $a(e){return e.unicode.includes("")}const Im={"":17,"":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱♀️":4,"🤣":3,"👁️🗨️":2,"😀":1,"😐️":.7,"😃":.6},Rm=1e3,Nm="🖐️",Dm=8,Om=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Yc='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Bm=(e,t)=>e<t?-1:e>t?1:0,xa=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const i=n.getContext("2d",{willReadFrequently:!0});return i.textBaseline="top",i.font=`100px ${Yc}`,i.fillStyle=t,i.scale(.01,.01),i.fillText(e,0,0),i.getImageData(0,0,1,1).data},Fm=(e,t)=>{const n=[...e].join(","),i=[...t].join(",");return n===i&&!n.startsWith("0,0,0,")};function Um(e){const t=xa(e,"#000"),n=xa(e,"#fff");return t&&n&&Fm(t,n)}function Wm(){const e=Object.entries(Im);try{for(const[t,n]of e)if(Um(t))return n}catch{}return e[0][1]}let ds;const ps=()=>(ds||(ds=new Promise(e=>Qc(()=>e(Wm())))),ds),Hs=new Map,Km="️",zm="\uD83C",jm="",Hm=127995,qm=57339;function Vm(e,t){if(t===0)return e;const n=e.indexOf(jm);return n!==-1?e.substring(0,n)+String.fromCodePoint(Hm+t-1)+e.substring(n):(e.endsWith(Km)&&(e=e.substring(0,e.length-1)),e+zm+String.fromCodePoint(qm+t-1))}function Se(e){e.preventDefault(),e.stopPropagation()}function hs(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function Xc(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function Gm(e,t){const n=i=>{const s={};for(const r of i)typeof r.tone=="number"&&r.version<=t&&(s[r.tone]=r.unicode);return s};return e.map(({unicode:i,skins:s,shortcodes:r,url:o,name:a,category:l,annotation:c})=>({unicode:i,name:a,shortcodes:r,url:o,category:l,annotation:c,id:i||a,skins:s&&n(s)}))}const Yn=requestAnimationFrame;let Qm=typeof ResizeObserver=="function";function Ym(e,t,n){let i;Qm?(i=new ResizeObserver(n),i.observe(e)):Yn(n),t.addEventListener("abort",()=>{i&&i.disconnect()})}function Ea(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let fs;function Xm(e,t,n){let i=!0,s=!1;for(const r of e){const o=n(r);if(!o)continue;const a=Ea(o);a===0&&(s=!0),typeof fs>"u"&&(fs=Ea(t));const l=a/1.8<fs;Hs.set(r.unicode,l),l||(i=!1)}return s&&console.warn(`Emoji support detection failed - emoji character is 0 width.
|
|
1934
|
+
`;Ti([bi({type:Number})],Tt.prototype,"splitRatio",2);Ti([bi({type:Number})],Tt.prototype,"minRatio",2);Ti([bi({type:Number})],Tt.prototype,"maxRatio",2);Tt=Ti([ol("resizable-divider")],Tt);function Wn(e){if(typeof e!="string"||!e)throw new Error("expected a non-empty string, got: "+e)}function cs(e){if(typeof e!="number")throw new Error("expected a number, got: "+e)}const jg=1,Hg=1,pt="emoji",_t="keyvalue",Nr="favorites",qg="tokens",Rc="tokens",Vg="unicode",Nc="count",Gg="group",Qg="order",Dc="group-order",Ws="eTag",pi="url",ba="skinTone",It="readonly",Dr="readwrite",Oc="skinUnicodes",Yg="skinUnicodes",Xg="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",Zg="en";function Jg(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function wa(e){return Jg(e,t=>t.unicode)}function em(e){function t(n,i,s){const r=i?e.createObjectStore(n,{keyPath:i}):e.createObjectStore(n);if(s)for(const[o,[a,l]]of Object.entries(s))r.createIndex(o,a,{multiEntry:l});return r}t(_t),t(pt,Vg,{[Rc]:[qg,!0],[Dc]:[[Gg,Qg]],[Oc]:[Yg,!0]}),t(Nr,void 0,{[Nc]:[""]})}const Ks={},Qn={},hi={};function Bc(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function tm(e){const t=await new Promise((n,i)=>{const s=indexedDB.open(e,jg);Ks[e]=s,s.onupgradeneeded=r=>{r.oldVersion<Hg&&em(s.result)},Bc(n,i,s)});return t.onclose=()=>Or(e),t}function nm(e){return Qn[e]||(Qn[e]=tm(e)),Qn[e]}function Ne(e,t,n,i){return new Promise((s,r)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a=typeof t=="string"?o.objectStore(t):t.map(c=>o.objectStore(c));let l;i(a,o,c=>{l=c}),o.oncomplete=()=>s(l),o.onerror=()=>r(o.error)})}function Or(e){const t=Ks[e],n=t&&t.result;if(n){n.close();const i=hi[e];if(i)for(const s of i)s()}delete Ks[e],delete Qn[e],delete hi[e]}function im(e){return new Promise((t,n)=>{Or(e);const i=indexedDB.deleteDatabase(e);Bc(t,n,i)})}function sm(e,t){let n=hi[e];n||(n=hi[e]=[]),n.push(t)}const rm=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function $t(e){return e.split(/[\s_]+/).map(t=>!t.match(/\w/)||rm.has(t)?t.toLowerCase():t.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const om=2;function Fc(e){return e.filter(Boolean).map(t=>t.toLowerCase()).filter(t=>t.length>=om)}function am(e){return e.map(({annotation:n,emoticon:i,group:s,order:r,shortcodes:o,skins:a,tags:l,emoji:c,version:d})=>{const f=[...new Set(Fc([...(o||[]).map($t).flat(),...(l||[]).map($t).flat(),...$t(n),i]))].sort(),u={annotation:n,group:s,order:r,tags:l,tokens:f,unicode:c,version:d};if(i&&(u.emoticon=i),o&&(u.shortcodes=o),a){u.skinTones=[],u.skinUnicodes=[],u.skinVersions=[];for(const{tone:p,emoji:b,version:w}of a)u.skinTones.push(p),u.skinUnicodes.push(b),u.skinVersions.push(w)}return u})}function Uc(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function lt(e,t,n){Uc(e,"get",t,n)}function Wc(e,t,n){Uc(e,"getAll",t,n)}function Br(e){e.commit&&e.commit()}function lm(e,t){let n=e[0];for(let i=1;i<e.length;i++){const s=e[i];t(n)>t(s)&&(n=s)}return n}function Kc(e,t){const n=lm(e,s=>s.length),i=[];for(const s of n)e.some(r=>r.findIndex(o=>t(o)===t(s))===-1)||i.push(s);return i}async function cm(e){return!await Fr(e,_t,pi)}async function um(e,t,n){const[i,s]=await Promise.all([Ws,pi].map(r=>Fr(e,_t,r)));return i===n&&s===t}async function dm(e,t){return Ne(e,pt,It,(i,s,r)=>{let o;const a=()=>{i.getAll(o&&IDBKeyRange.lowerBound(o,!0),50).onsuccess=l=>{const c=l.target.result;for(const d of c)if(o=d.unicode,t(d))return r(d);if(c.length<50)return r();a()}};a()})}async function zc(e,t,n,i){{const s=am(t);await Ne(e,[pt,_t],Dr,([r,o],a)=>{let l,c,d=0;function f(){++d===2&&u()}function u(){if(!(l===i&&c===n)){r.clear();for(const p of s)r.put(p);o.put(i,Ws),o.put(n,pi),Br(a)}}lt(o,Ws,p=>{l=p,f()}),lt(o,pi,p=>{c=p,f()})})}}async function pm(e,t){return Ne(e,pt,It,(n,i,s)=>{const r=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);Wc(n.index(Dc),r,s)})}async function jc(e,t){const n=Fc($t(t));return n.length?Ne(e,pt,It,(i,s,r)=>{const o=[],a=()=>{o.length===n.length&&l()},l=()=>{const c=Kc(o,d=>d.unicode);r(c.sort((d,f)=>d.order<f.order?-1:1))};for(let c=0;c<n.length;c++){const d=n[c],f=c===n.length-1?IDBKeyRange.bound(d,d+"",!1,!0):IDBKeyRange.only(d);Wc(i.index(Rc),f,u=>{o.push(u),a()})}}):[]}async function hm(e,t){const n=await jc(e,t);return n.length?n.filter(i=>(i.shortcodes||[]).map(r=>r.toLowerCase()).includes(t.toLowerCase()))[0]||null:await dm(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function fm(e,t){return Ne(e,pt,It,(n,i,s)=>lt(n,t,r=>{if(r)return s(r);lt(n.index(Oc),t,o=>s(o||null))}))}function Fr(e,t,n){return Ne(e,t,It,(i,s,r)=>lt(i,n,r))}function gm(e,t,n,i){return Ne(e,t,Dr,(s,r)=>{s.put(i,n),Br(r)})}function mm(e,t){return Ne(e,Nr,Dr,(n,i)=>lt(n,t,s=>{n.put((s||0)+1,t),Br(i)}))}function ym(e,t,n){return n===0?[]:Ne(e,[Nr,pt],It,([i,s],r,o)=>{const a=[];i.index(Nc).openCursor(void 0,"prev").onsuccess=l=>{const c=l.target.result;if(!c)return o(a);function d(p){if(a.push(p),a.length===n)return o(a);c.continue()}const f=c.primaryKey,u=t.byName(f);if(u)return d(u);lt(s,f,p=>{if(p)return d(p);c.continue()})}})}const Kn="";function vm(e,t){const n=new Map;for(const s of e){const r=t(s);for(const o of r){let a=n;for(let c=0;c<o.length;c++){const d=o.charAt(c);let f=a.get(d);f||(f=new Map,a.set(d,f)),a=f}let l=a.get(Kn);l||(l=[],a.set(Kn,l)),l.push(s)}}return(s,r)=>{let o=n;for(let c=0;c<s.length;c++){const d=s.charAt(c),f=o.get(d);if(f)o=f;else return[]}if(r)return o.get(Kn)||[];const a=[],l=[o];for(;l.length;){const d=[...l.shift().entries()].sort((f,u)=>f[0]<u[0]?-1:1);for(const[f,u]of d)f===Kn?a.push(...u):l.push(u)}return a}}const bm=["name","url"];function wm(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||bm.some(i=>!(i in e[0])));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function ka(e){wm(e);const t=(u,p)=>u.name.toLowerCase()<p.name.toLowerCase()?-1:1,n=e.sort(t),s=vm(e,u=>{const p=new Set;if(u.shortcodes)for(const b of u.shortcodes)for(const w of $t(b))p.add(w);return p}),r=u=>s(u,!0),o=u=>s(u,!1),a=u=>{const p=$t(u),b=p.map((w,S)=>(S<p.length-1?r:o)(w));return Kc(b,w=>w.name).sort(t)},l=new Map,c=new Map;for(const u of e){c.set(u.name.toLowerCase(),u);for(const p of u.shortcodes||[])l.set(p.toLowerCase(),u)}return{all:n,search:a,byShortcode:u=>l.get(u.toLowerCase()),byName:u=>c.get(u.toLowerCase())}}const km=typeof wrappedJSObject<"u";function Gt(e){if(!e)return e;if(km&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n<t;n++)e.skins[n]={tone:e.skinTones[n],unicode:e.skinUnicodes[n],version:e.skinVersions[n]};delete e.skinTones,delete e.skinUnicodes,delete e.skinVersions}return e}function Hc(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const Sm=["annotation","emoji","group","order","version"];function Am(e){if(!e||!Array.isArray(e)||!e[0]||typeof e[0]!="object"||Sm.some(t=>!(t in e[0])))throw new Error("Emoji data is in the wrong format")}function qc(e,t){if(Math.floor(e.status/100)!==2)throw new Error("Failed to fetch: "+t+": "+e.status)}async function xm(e){const t=await fetch(e,{method:"HEAD"});qc(t,e);const n=t.headers.get("etag");return Hc(n),n}async function zs(e){const t=await fetch(e);qc(t,e);const n=t.headers.get("etag");Hc(n);const i=await t.json();return Am(i),[n,i]}function $m(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,s=-1;++s<i;)t+=String.fromCharCode(n[s]);return t}function Em(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),s=-1;++s<t;)i[s]=e.charCodeAt(s);return n}async function Vc(e){const t=JSON.stringify(e);let n=Em(t);const i=await crypto.subtle.digest("SHA-1",n),s=$m(i);return btoa(s)}async function Cm(e,t){let n,i=await xm(t);if(!i){const s=await zs(t);i=s[0],n=s[1],i||(i=await Vc(n))}await um(e,t,i)||(n||(n=(await zs(t))[1]),await zc(e,n,t,i))}async function Tm(e,t){let[n,i]=await zs(t);n||(n=await Vc(i)),await zc(e,i,t,n)}async function _m(e,t){try{await Cm(e,t)}catch(n){if(n.name!=="InvalidStateError")throw n}}class Mm{constructor({dataSource:t=Xg,locale:n=Zg,customEmoji:i=[]}={}){this.dataSource=t,this.locale=n,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=ka(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const t=this._db=await nm(this._dbName);sm(this._dbName,this._clear);const n=this.dataSource;await cm(t)?await Tm(t,n):this._lazyUpdate=_m(t,n)}async ready(){const t=async()=>(this._ready||(this._ready=this._init()),this._ready);await t(),this._db||await t()}async getEmojiByGroup(t){return cs(t),await this.ready(),wa(await pm(this._db,t)).map(Gt)}async getEmojiBySearchQuery(t){Wn(t),await this.ready();const n=this._custom.search(t),i=wa(await jc(this._db,t)).map(Gt);return[...n,...i]}async getEmojiByShortcode(t){Wn(t),await this.ready();const n=this._custom.byShortcode(t);return n||Gt(await hm(this._db,t))}async getEmojiByUnicodeOrName(t){Wn(t),await this.ready();const n=this._custom.byName(t);return n||Gt(await fm(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await Fr(this._db,_t,ba)||0}async setPreferredSkinTone(t){return cs(t),await this.ready(),gm(this._db,_t,ba,t)}async incrementFavoriteEmojiCount(t){return Wn(t),await this.ready(),mm(this._db,t)}async getTopFavoriteEmoji(t){return cs(t),await this.ready(),(await ym(this._db,this._custom,t)).map(Gt)}set customEmoji(t){this._custom=ka(t)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch{}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Or(this._dbName)}async delete(){await this._shutdown(),await im(this._dbName)}}const js=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([e,t,n])=>({id:e,emoji:t,name:n})),us=js.slice(1),Pm=2,Sa=6,Gc=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function Aa(e){return e.unicode.includes("")}const Lm={"":17,"":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱♀️":4,"🤣":3,"👁️🗨️":2,"😀":1,"😐️":.7,"😃":.6},Im=1e3,Rm="🖐️",Nm=8,Dm=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Qc='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Om=(e,t)=>e<t?-1:e>t?1:0,xa=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const i=n.getContext("2d",{willReadFrequently:!0});return i.textBaseline="top",i.font=`100px ${Qc}`,i.fillStyle=t,i.scale(.01,.01),i.fillText(e,0,0),i.getImageData(0,0,1,1).data},Bm=(e,t)=>{const n=[...e].join(","),i=[...t].join(",");return n===i&&!n.startsWith("0,0,0,")};function Fm(e){const t=xa(e,"#000"),n=xa(e,"#fff");return t&&n&&Bm(t,n)}function Um(){const e=Object.entries(Lm);try{for(const[t,n]of e)if(Fm(t))return n}catch{}return e[0][1]}let ds;const ps=()=>(ds||(ds=new Promise(e=>Gc(()=>e(Um())))),ds),Hs=new Map,Wm="️",Km="\uD83C",zm="",jm=127995,Hm=57339;function qm(e,t){if(t===0)return e;const n=e.indexOf(zm);return n!==-1?e.substring(0,n)+String.fromCodePoint(jm+t-1)+e.substring(n):(e.endsWith(Wm)&&(e=e.substring(0,e.length-1)),e+Km+String.fromCodePoint(Hm+t-1))}function Se(e){e.preventDefault(),e.stopPropagation()}function hs(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function Yc(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function Vm(e,t){const n=i=>{const s={};for(const r of i)typeof r.tone=="number"&&r.version<=t&&(s[r.tone]=r.unicode);return s};return e.map(({unicode:i,skins:s,shortcodes:r,url:o,name:a,category:l,annotation:c})=>({unicode:i,name:a,shortcodes:r,url:o,category:l,annotation:c,id:i||a,skins:s&&n(s)}))}const Yn=requestAnimationFrame;let Gm=typeof ResizeObserver=="function";function Qm(e,t,n){let i;Gm?(i=new ResizeObserver(n),i.observe(e)):Yn(n),t.addEventListener("abort",()=>{i&&i.disconnect()})}function $a(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let fs;function Ym(e,t,n){let i=!0,s=!1;for(const r of e){const o=n(r);if(!o)continue;const a=$a(o);a===0&&(s=!0),typeof fs>"u"&&(fs=$a(t));const l=a/1.8<fs;Hs.set(r.unicode,l),l||(i=!1)}return s&&console.warn(`Emoji support detection failed - emoji character is 0 width.
|
|
1935
1935
|
This is likely due to using \`display:none\` which is unsupported.
|
|
1936
1936
|
If this is a Jest/Vitest environment, you can ignore this warning.
|
|
1937
|
-
For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function Zm(e){return Xc(e,t=>t)}function Jm(e){e&&(e.scrollTop=0)}function on(e,t,n){let i=e.get(t);return i||(i=n(),e.set(t,i)),i}function Ta(e){return""+e}function ey(e){const t=document.createElement("template");return t.innerHTML=e,t}const ty=new WeakMap,ny=new WeakMap,iy=Symbol("un-keyed"),sy="replaceChildren"in Element.prototype;function ry(e,t){sy?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}function oy(e,t){let n=e.firstChild,i=0;for(;n;){if(t[i]!==n)return!0;n=n.nextSibling,i++}return i!==t.length}function ay(e,t){const{targetNode:n}=t;let{targetParentNode:i}=t,s=!1;i?s=oy(i,e):(s=!0,t.targetNode=void 0,t.targetParentNode=i=n.parentNode),s&&ry(i,e)}function ly(e,t){for(const n of t){const{targetNode:i,currentExpression:s,binding:{expressionIndex:r,attributeName:o,attributeValuePre:a,attributeValuePost:l}}=n,c=e[r];if(s!==c)if(n.currentExpression=c,o)if(c===null)i.removeAttribute(o);else{const u=a+Ta(c)+l;i.setAttribute(o,u)}else{let u;Array.isArray(c)?ay(c,n):c instanceof Element?(u=c,i.replaceWith(u)):i.nodeValue=Ta(c),u&&(n.targetNode=u)}}}function cy(e){let t="",n=!1,i=!1,s=-1;const r=new Map,o=[];let a=0;for(let c=0,u=e.length;c<u;c++){const f=e[c];if(t+=f.slice(a),c===u-1)break;for(let $=0;$<f.length;$++)switch(f.charAt($)){case"<":{f.charAt($+1)==="/"?o.pop():(n=!0,o.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const d=o[o.length-1],p=on(r,d,()=>[]);let w,b,S;if(i){const $=/(\S+)="?([^"=]*)$/.exec(f);w=$[1],b=$[2];const E=/^([^">]*)("?)/.exec(e[c+1]);S=E[1],t=t.slice(0,-1*$[0].length),a=E[0].length}else a=0;const T={attributeName:w,attributeValuePre:b,attributeValuePost:S,expressionIndex:c};p.push(T),!n&&!i&&(t+=" ")}return{template:ey(t),elementsToBindings:r}}function Ca(e,t,n){for(let i=0;i<e.length;i++){const s=e[i],r=s.attributeName?t:t.firstChild,o={binding:s,targetNode:r,targetParentNode:void 0,currentExpression:void 0};n.push(o)}}function uy(e,t){const n=[];let i;if(t.size===1&&(i=t.get(0)))Ca(i,e,n);else{const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let r=e,o=-1;do{const a=t.get(++o);a&&Ca(a,r,n)}while(r=s.nextNode())}return n}function dy(e){const{template:t,elementsToBindings:n}=on(ty,e,()=>cy(e)),i=t.cloneNode(!0).content.firstElementChild,s=uy(i,n);return function(o){return ly(o,s),i}}function py(e){const t=on(ny,e,()=>new Map);let n=iy;function i(r,...o){const a=on(t,r,()=>new Map);return on(a,n,()=>dy(r))(o)}function s(r,o,a){return r.map((l,c)=>{const u=n;n=a(l);try{return o(l,c)}finally{n=u}})}return{map:s,html:i}}function hy(e,t,n,i,s,r,o,a,l){const{labelWithSkin:c,titleForEmoji:u,unicodeWithSkin:f}=n,{html:d,map:p}=py(t);function w($,E,C){return p($,(I,U)=>d`<button role="${E?"option":"menuitem"}" aria-selected="${E?U===t.activeSearchItem:null}" aria-label="${c(I,t.currentSkinTone)}" title="${u(I)}" class="${"emoji"+(E&&U===t.activeSearchItem?" active":"")+(I.unicode?"":" custom-emoji")}" id="${`${C}-${I.id}`}" style="${I.unicode?null:`--custom-emoji-background: url(${JSON.stringify(I.url)})`}">${I.unicode?f(I,t.currentSkinTone):""}</button>`,I=>`${C}-${I.id}`)}const S=d`<section data-ref="rootElement" class="picker" aria-label="${t.i18n.regionLabel}" style="${t.pickerStyle||""}"><div class="pad-top"></div><div class="search-row"><div class="search-wrapper"><input id="search" class="search" type="search" role="combobox" enterkeyhint="search" placeholder="${t.i18n.searchLabel}" autocapitalize="none" autocomplete="off" spellcheck="true" aria-expanded="${!!(t.searchMode&&t.currentEmojis.length)}" aria-controls="search-results" aria-describedby="search-description" aria-autocomplete="list" aria-activedescendant="${t.activeSearchItemId?`emo-${t.activeSearchItemId}`:null}" data-ref="searchElement" data-on-input="onSearchInput" data-on-keydown="onSearchKeydown"><label class="sr-only" for="search">${t.i18n.searchLabel}</label> <span id="search-description" class="sr-only">${t.i18n.searchDescription}</span></div><div class="skintone-button-wrapper ${t.skinTonePickerExpandedAfterAnimation?"expanded":""}"><button id="skintone-button" class="emoji ${t.skinTonePickerExpanded?"hide-focus":""}" aria-label="${t.skinToneButtonLabel}" title="${t.skinToneButtonLabel}" aria-describedby="skintone-description" aria-haspopup="listbox" aria-expanded="${t.skinTonePickerExpanded}" aria-controls="skintone-list" data-on-click="onClickSkinToneButton">${t.skinToneButtonText||""}</button></div><span id="skintone-description" class="sr-only">${t.i18n.skinToneDescription}</span><div data-ref="skinToneDropdown" id="skintone-list" class="skintone-list hide-focus ${t.skinTonePickerExpanded?"":"hidden no-animate"}" style="transform:translateY(${t.skinTonePickerExpanded?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))"})" role="listbox" aria-label="${t.i18n.skinTonesLabel}" aria-activedescendant="skintone-${t.activeSkinTone}" aria-hidden="${!t.skinTonePickerExpanded}" tabIndex="-1" data-on-focusout="onSkinToneOptionsFocusOut" data-on-click="onSkinToneOptionsClick" data-on-keydown="onSkinToneOptionsKeydown" data-on-keyup="onSkinToneOptionsKeyup">${p(t.skinTones,($,E)=>d`<div id="skintone-${E}" class="emoji ${E===t.activeSkinTone?"active":""}" aria-selected="${E===t.activeSkinTone}" role="option" title="${t.i18n.skinTones[E]}" aria-label="${t.i18n.skinTones[E]}">${$}</div>`,$=>$)}</div></div><div class="nav" role="tablist" style="grid-template-columns:repeat(${t.groups.length},1fr)" aria-label="${t.i18n.categoriesLabel}" data-on-keydown="onNavKeydown" data-on-click="onNavClick">${p(t.groups,$=>d`<button role="tab" class="nav-button" aria-controls="tab-${$.id}" aria-label="${t.i18n.categories[$.name]}" aria-selected="${!t.searchMode&&t.currentGroup.id===$.id}" title="${t.i18n.categories[$.name]}" data-group-id="${$.id}"><div class="nav-emoji emoji">${$.emoji}</div></button>`,$=>$.id)}</div><div class="indicator-wrapper"><div class="indicator" style="transform:translateX(${(t.isRtl?-1:1)*t.currentGroupIndex*100}%)"></div></div><div class="message ${t.message?"":"gone"}" role="alert" aria-live="polite">${t.message||""}</div><div data-ref="tabpanelElement" class="tabpanel ${!t.databaseLoaded||t.message?"gone":""}" role="${t.searchMode?"region":"tabpanel"}" aria-label="${t.searchMode?t.i18n.searchResultsLabel:t.i18n.categories[t.currentGroup.name]}" id="${t.searchMode?null:`tab-${t.currentGroup.id}`}" tabIndex="0" data-on-click="onEmojiClick"><div data-action="calculateEmojiGridStyle">${p(t.currentEmojisWithCategories,($,E)=>d`<div><div id="menu-label-${E}" class="category ${t.currentEmojisWithCategories.length===1&&t.currentEmojisWithCategories[0].category===""?"gone":""}" aria-hidden="true">${t.searchMode?t.i18n.searchResultsLabel:$.category?$.category:t.currentEmojisWithCategories.length>1?t.i18n.categories.custom:t.i18n.categories[t.currentGroup.name]}</div><div class="emoji-menu ${E!==0&&!t.searchMode&&t.currentGroup.id===-1?"visibility-auto":""}" style="${`--num-rows: ${Math.ceil($.emojis.length/t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${E}" id="${t.searchMode?"search-results":null}">${w($.emojis,t.searchMode,"emo")}</div></div>`,$=>$.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message?"gone":""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${w(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,T=($,E)=>{for(const C of e.querySelectorAll(`[${$}]`))E(C,C.getAttribute($))};if(l){e.appendChild(S);for(const $ of["click","focusout","input","keydown","keyup"])T(`data-on-${$}`,(E,C)=>{E.addEventListener($,i[C])});T("data-ref",($,E)=>{r[E]=$}),o.addEventListener("abort",()=>{e.removeChild(S)})}T("data-action",($,E)=>{let C=a.get(E);C||a.set(E,C=new WeakSet),C.has($)||(C.add($),s[E]($))})}const fi=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e);function fy(e){let t=!1,n;const i=new Map,s=new Set;let r;const o=()=>{if(t)return;const c=[...s];s.clear();try{for(const u of c)u()}finally{r=!1,s.size&&(r=!0,fi(o))}},a=new Proxy({},{get(c,u){if(n){let f=i.get(u);f||(f=new Set,i.set(u,f)),f.add(n)}return c[u]},set(c,u,f){if(c[u]!==f){c[u]=f;const d=i.get(u);if(d){for(const p of d)s.add(p);r||(r=!0,fi(o))}}return!0}}),l=c=>{const u=()=>{const f=n;n=u;try{return c()}finally{n=f}};return u()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:l}}function gs(e,t,n){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return!1;return!0}const _a=new WeakMap;function gy(e,t,n){{const i=e.closest(".tabpanel");let s=_a.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),_a.set(i,s),t.addEventListener("abort",()=>{s.disconnect()})),s.observe(e)}}const ms=[],{assign:zn}=Object;function my(e,t){const n={},i=new AbortController,s=i.signal,{state:r,createEffect:o}=fy(s),a=new Map;zn(r,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),zn(r,t),zn(r,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:Dm,isRtl:!1,currentGroupIndex:0,groups:us,databaseLoaded:!1,activeSearchItemId:void 0}),o(()=>{r.currentGroup!==r.groups[r.currentGroupIndex]&&(r.currentGroup=r.groups[r.currentGroupIndex])});const l=A=>{e.getElementById(A).focus()},c=A=>e.getElementById(`emo-${A.id}`),u=(A,_)=>{n.rootElement.dispatchEvent(new CustomEvent(A,{detail:_,bubbles:!0,composed:!0}))},f=(A,_)=>A.id===_.id,d=(A,_)=>{const{category:R,emojis:N}=A,{category:H,emojis:K}=_;return R!==H?!1:gs(N,K,f)},p=A=>{gs(r.currentEmojis,A,f)||(r.currentEmojis=A)},w=A=>{r.searchMode!==A&&(r.searchMode=A)},b=A=>{gs(r.currentEmojisWithCategories,A,d)||(r.currentEmojisWithCategories=A)},S=(A,_)=>_&&A.skins&&A.skins[_]||A.unicode,E={labelWithSkin:(A,_)=>Zm([A.name||S(A,_),A.annotation,...A.shortcodes||ms].filter(Boolean)).join(", "),titleForEmoji:A=>A.annotation||(A.shortcodes||ms).join(", "),unicodeWithSkin:S},C={onClickSkinToneButton:j,onEmojiClick:Sn,onNavClick:wn,onNavKeydown:Ii,onSearchKeydown:Li,onSkinToneOptionsClick:An,onSkinToneOptionsFocusOut:De,onSkinToneOptionsKeydown:Ve,onSkinToneOptionsKeyup:Dt,onSearchInput:$n},I={calculateEmojiGridStyle:He,updateOnIntersection:Rt};let U=!0;o(()=>{hy(e,r,E,C,I,n,s,a,U),U=!1}),r.emojiVersion||ps().then(A=>{A||(r.message=r.i18n.emojiUnsupportedMessage)}),o(()=>{async function A(){let _=!1;const R=setTimeout(()=>{_=!0,r.message=r.i18n.loadingMessage},Rm);try{await r.database.ready(),r.databaseLoaded=!0}catch(N){console.error(N),r.message=r.i18n.networkErrorMessage}finally{clearTimeout(R),_&&(_=!1,r.message="")}}r.database&&A()}),o(()=>{r.pickerStyle=`
|
|
1937
|
+
For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function Xm(e){return Yc(e,t=>t)}function Zm(e){e&&(e.scrollTop=0)}function on(e,t,n){let i=e.get(t);return i||(i=n(),e.set(t,i)),i}function Ea(e){return""+e}function Jm(e){const t=document.createElement("template");return t.innerHTML=e,t}const ey=new WeakMap,ty=new WeakMap,ny=Symbol("un-keyed"),iy="replaceChildren"in Element.prototype;function sy(e,t){iy?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}function ry(e,t){let n=e.firstChild,i=0;for(;n;){if(t[i]!==n)return!0;n=n.nextSibling,i++}return i!==t.length}function oy(e,t){const{targetNode:n}=t;let{targetParentNode:i}=t,s=!1;i?s=ry(i,e):(s=!0,t.targetNode=void 0,t.targetParentNode=i=n.parentNode),s&&sy(i,e)}function ay(e,t){for(const n of t){const{targetNode:i,currentExpression:s,binding:{expressionIndex:r,attributeName:o,attributeValuePre:a,attributeValuePost:l}}=n,c=e[r];if(s!==c)if(n.currentExpression=c,o)if(c===null)i.removeAttribute(o);else{const d=a+Ea(c)+l;i.setAttribute(o,d)}else{let d;Array.isArray(c)?oy(c,n):c instanceof Element?(d=c,i.replaceWith(d)):i.nodeValue=Ea(c),d&&(n.targetNode=d)}}}function ly(e){let t="",n=!1,i=!1,s=-1;const r=new Map,o=[];let a=0;for(let c=0,d=e.length;c<d;c++){const f=e[c];if(t+=f.slice(a),c===d-1)break;for(let x=0;x<f.length;x++)switch(f.charAt(x)){case"<":{f.charAt(x+1)==="/"?o.pop():(n=!0,o.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const u=o[o.length-1],p=on(r,u,()=>[]);let b,w,S;if(i){const x=/(\S+)="?([^"=]*)$/.exec(f);b=x[1],w=x[2];const E=/^([^">]*)("?)/.exec(e[c+1]);S=E[1],t=t.slice(0,-1*x[0].length),a=E[0].length}else a=0;const C={attributeName:b,attributeValuePre:w,attributeValuePost:S,expressionIndex:c};p.push(C),!n&&!i&&(t+=" ")}return{template:Jm(t),elementsToBindings:r}}function Ca(e,t,n){for(let i=0;i<e.length;i++){const s=e[i],r=s.attributeName?t:t.firstChild,o={binding:s,targetNode:r,targetParentNode:void 0,currentExpression:void 0};n.push(o)}}function cy(e,t){const n=[];let i;if(t.size===1&&(i=t.get(0)))Ca(i,e,n);else{const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let r=e,o=-1;do{const a=t.get(++o);a&&Ca(a,r,n)}while(r=s.nextNode())}return n}function uy(e){const{template:t,elementsToBindings:n}=on(ey,e,()=>ly(e)),i=t.cloneNode(!0).content.firstElementChild,s=cy(i,n);return function(o){return ay(o,s),i}}function dy(e){const t=on(ty,e,()=>new Map);let n=ny;function i(r,...o){const a=on(t,r,()=>new Map);return on(a,n,()=>uy(r))(o)}function s(r,o,a){return r.map((l,c)=>{const d=n;n=a(l);try{return o(l,c)}finally{n=d}})}return{map:s,html:i}}function py(e,t,n,i,s,r,o,a,l){const{labelWithSkin:c,titleForEmoji:d,unicodeWithSkin:f}=n,{html:u,map:p}=dy(t);function b(x,E,T){return p(x,(I,U)=>u`<button role="${E?"option":"menuitem"}" aria-selected="${E?U===t.activeSearchItem:null}" aria-label="${c(I,t.currentSkinTone)}" title="${d(I)}" class="${"emoji"+(E&&U===t.activeSearchItem?" active":"")+(I.unicode?"":" custom-emoji")}" id="${`${T}-${I.id}`}" style="${I.unicode?null:`--custom-emoji-background: url(${JSON.stringify(I.url)})`}">${I.unicode?f(I,t.currentSkinTone):""}</button>`,I=>`${T}-${I.id}`)}const S=u`<section data-ref="rootElement" class="picker" aria-label="${t.i18n.regionLabel}" style="${t.pickerStyle||""}"><div class="pad-top"></div><div class="search-row"><div class="search-wrapper"><input id="search" class="search" type="search" role="combobox" enterkeyhint="search" placeholder="${t.i18n.searchLabel}" autocapitalize="none" autocomplete="off" spellcheck="true" aria-expanded="${!!(t.searchMode&&t.currentEmojis.length)}" aria-controls="search-results" aria-describedby="search-description" aria-autocomplete="list" aria-activedescendant="${t.activeSearchItemId?`emo-${t.activeSearchItemId}`:null}" data-ref="searchElement" data-on-input="onSearchInput" data-on-keydown="onSearchKeydown"><label class="sr-only" for="search">${t.i18n.searchLabel}</label> <span id="search-description" class="sr-only">${t.i18n.searchDescription}</span></div><div class="skintone-button-wrapper ${t.skinTonePickerExpandedAfterAnimation?"expanded":""}"><button id="skintone-button" class="emoji ${t.skinTonePickerExpanded?"hide-focus":""}" aria-label="${t.skinToneButtonLabel}" title="${t.skinToneButtonLabel}" aria-describedby="skintone-description" aria-haspopup="listbox" aria-expanded="${t.skinTonePickerExpanded}" aria-controls="skintone-list" data-on-click="onClickSkinToneButton">${t.skinToneButtonText||""}</button></div><span id="skintone-description" class="sr-only">${t.i18n.skinToneDescription}</span><div data-ref="skinToneDropdown" id="skintone-list" class="skintone-list hide-focus ${t.skinTonePickerExpanded?"":"hidden no-animate"}" style="transform:translateY(${t.skinTonePickerExpanded?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))"})" role="listbox" aria-label="${t.i18n.skinTonesLabel}" aria-activedescendant="skintone-${t.activeSkinTone}" aria-hidden="${!t.skinTonePickerExpanded}" tabIndex="-1" data-on-focusout="onSkinToneOptionsFocusOut" data-on-click="onSkinToneOptionsClick" data-on-keydown="onSkinToneOptionsKeydown" data-on-keyup="onSkinToneOptionsKeyup">${p(t.skinTones,(x,E)=>u`<div id="skintone-${E}" class="emoji ${E===t.activeSkinTone?"active":""}" aria-selected="${E===t.activeSkinTone}" role="option" title="${t.i18n.skinTones[E]}" aria-label="${t.i18n.skinTones[E]}">${x}</div>`,x=>x)}</div></div><div class="nav" role="tablist" style="grid-template-columns:repeat(${t.groups.length},1fr)" aria-label="${t.i18n.categoriesLabel}" data-on-keydown="onNavKeydown" data-on-click="onNavClick">${p(t.groups,x=>u`<button role="tab" class="nav-button" aria-controls="tab-${x.id}" aria-label="${t.i18n.categories[x.name]}" aria-selected="${!t.searchMode&&t.currentGroup.id===x.id}" title="${t.i18n.categories[x.name]}" data-group-id="${x.id}"><div class="nav-emoji emoji">${x.emoji}</div></button>`,x=>x.id)}</div><div class="indicator-wrapper"><div class="indicator" style="transform:translateX(${(t.isRtl?-1:1)*t.currentGroupIndex*100}%)"></div></div><div class="message ${t.message?"":"gone"}" role="alert" aria-live="polite">${t.message||""}</div><div data-ref="tabpanelElement" class="tabpanel ${!t.databaseLoaded||t.message?"gone":""}" role="${t.searchMode?"region":"tabpanel"}" aria-label="${t.searchMode?t.i18n.searchResultsLabel:t.i18n.categories[t.currentGroup.name]}" id="${t.searchMode?null:`tab-${t.currentGroup.id}`}" tabIndex="0" data-on-click="onEmojiClick"><div data-action="calculateEmojiGridStyle">${p(t.currentEmojisWithCategories,(x,E)=>u`<div><div id="menu-label-${E}" class="category ${t.currentEmojisWithCategories.length===1&&t.currentEmojisWithCategories[0].category===""?"gone":""}" aria-hidden="true">${t.searchMode?t.i18n.searchResultsLabel:x.category?x.category:t.currentEmojisWithCategories.length>1?t.i18n.categories.custom:t.i18n.categories[t.currentGroup.name]}</div><div class="emoji-menu ${E!==0&&!t.searchMode&&t.currentGroup.id===-1?"visibility-auto":""}" style="${`--num-rows: ${Math.ceil(x.emojis.length/t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${E}" id="${t.searchMode?"search-results":null}">${b(x.emojis,t.searchMode,"emo")}</div></div>`,x=>x.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message?"gone":""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${b(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,C=(x,E)=>{for(const T of e.querySelectorAll(`[${x}]`))E(T,T.getAttribute(x))};if(l){e.appendChild(S);for(const x of["click","focusout","input","keydown","keyup"])C(`data-on-${x}`,(E,T)=>{E.addEventListener(x,i[T])});C("data-ref",(x,E)=>{r[E]=x}),o.addEventListener("abort",()=>{e.removeChild(S)})}C("data-action",(x,E)=>{let T=a.get(E);T||a.set(E,T=new WeakSet),T.has(x)||(T.add(x),s[E](x))})}const fi=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e);function hy(e){let t=!1,n;const i=new Map,s=new Set;let r;const o=()=>{if(t)return;const c=[...s];s.clear();try{for(const d of c)d()}finally{r=!1,s.size&&(r=!0,fi(o))}},a=new Proxy({},{get(c,d){if(n){let f=i.get(d);f||(f=new Set,i.set(d,f)),f.add(n)}return c[d]},set(c,d,f){if(c[d]!==f){c[d]=f;const u=i.get(d);if(u){for(const p of u)s.add(p);r||(r=!0,fi(o))}}return!0}}),l=c=>{const d=()=>{const f=n;n=d;try{return c()}finally{n=f}};return d()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:l}}function gs(e,t,n){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return!1;return!0}const Ta=new WeakMap;function fy(e,t,n){{const i=e.closest(".tabpanel");let s=Ta.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),Ta.set(i,s),t.addEventListener("abort",()=>{s.disconnect()})),s.observe(e)}}const ms=[],{assign:zn}=Object;function gy(e,t){const n={},i=new AbortController,s=i.signal,{state:r,createEffect:o}=hy(s),a=new Map;zn(r,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),zn(r,t),zn(r,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:Nm,isRtl:!1,currentGroupIndex:0,groups:us,databaseLoaded:!1,activeSearchItemId:void 0}),o(()=>{r.currentGroup!==r.groups[r.currentGroupIndex]&&(r.currentGroup=r.groups[r.currentGroupIndex])});const l=A=>{e.getElementById(A).focus()},c=A=>e.getElementById(`emo-${A.id}`),d=(A,_)=>{n.rootElement.dispatchEvent(new CustomEvent(A,{detail:_,bubbles:!0,composed:!0}))},f=(A,_)=>A.id===_.id,u=(A,_)=>{const{category:R,emojis:N}=A,{category:H,emojis:K}=_;return R!==H?!1:gs(N,K,f)},p=A=>{gs(r.currentEmojis,A,f)||(r.currentEmojis=A)},b=A=>{r.searchMode!==A&&(r.searchMode=A)},w=A=>{gs(r.currentEmojisWithCategories,A,u)||(r.currentEmojisWithCategories=A)},S=(A,_)=>_&&A.skins&&A.skins[_]||A.unicode,E={labelWithSkin:(A,_)=>Xm([A.name||S(A,_),A.annotation,...A.shortcodes||ms].filter(Boolean)).join(", "),titleForEmoji:A=>A.annotation||(A.shortcodes||ms).join(", "),unicodeWithSkin:S},T={onClickSkinToneButton:j,onEmojiClick:Sn,onNavClick:wn,onNavKeydown:Ii,onSearchKeydown:Li,onSkinToneOptionsClick:An,onSkinToneOptionsFocusOut:De,onSkinToneOptionsKeydown:Ve,onSkinToneOptionsKeyup:Dt,onSearchInput:xn},I={calculateEmojiGridStyle:He,updateOnIntersection:Rt};let U=!0;o(()=>{py(e,r,E,T,I,n,s,a,U),U=!1}),r.emojiVersion||ps().then(A=>{A||(r.message=r.i18n.emojiUnsupportedMessage)}),o(()=>{async function A(){let _=!1;const R=setTimeout(()=>{_=!0,r.message=r.i18n.loadingMessage},Im);try{await r.database.ready(),r.databaseLoaded=!0}catch(N){console.error(N),r.message=r.i18n.networkErrorMessage}finally{clearTimeout(R),_&&(_=!1,r.message="")}}r.database&&A()}),o(()=>{r.pickerStyle=`
|
|
1938
1938
|
--num-groups: ${r.groups.length};
|
|
1939
1939
|
--indicator-opacity: ${r.searchMode?0:1};
|
|
1940
|
-
--num-skintones: ${Aa};`}),o(()=>{r.customEmoji&&r.database&&Q()}),o(()=>{r.customEmoji&&r.customEmoji.length?r.groups!==js&&(r.groups=js):r.groups!==us&&(r.currentGroupIndex&&r.currentGroupIndex--,r.groups=us)}),o(()=>{async function A(){r.databaseLoaded&&(r.currentSkinTone=await r.database.getPreferredSkinTone())}A()}),o(()=>{r.skinTones=Array(Aa).fill().map((A,_)=>Vm(r.skinToneEmoji,_))}),o(()=>{r.skinToneButtonText=r.skinTones[r.currentSkinTone]}),o(()=>{r.skinToneButtonLabel=r.i18n.skinToneLabel.replace("{skinTone}",r.i18n.skinTones[r.currentSkinTone])}),o(()=>{async function A(){const{database:_}=r,R=(await Promise.all(Om.map(N=>_.getEmojiByUnicodeOrName(N)))).filter(Boolean);r.defaultFavoriteEmojis=R}r.databaseLoaded&&A()});function Q(){const{customEmoji:A,database:_}=r,R=A||ms;_.customEmoji!==R&&(_.customEmoji=R)}o(()=>{async function A(){Q();const{database:_,defaultFavoriteEmojis:R,numColumns:N}=r,H=await _.getTopFavoriteEmoji(N),K=await qe(Xc([...H,...R],re=>re.unicode||re.name).slice(0,N));r.currentFavorites=K}r.databaseLoaded&&r.defaultFavoriteEmojis&&A()});function He(A){Ym(A,s,()=>{{const _=getComputedStyle(n.rootElement),R=parseInt(_.getPropertyValue("--num-columns"),10),N=_.getPropertyValue("direction")==="rtl";r.numColumns=R,r.isRtl=N}})}function Rt(A){gy(A,s,_=>{for(const{target:R,isIntersecting:N}of _)R.classList.toggle("onscreen",N)})}o(()=>{async function A(){const{searchText:_,currentGroup:R,databaseLoaded:N,customEmoji:H}=r;if(!N)r.currentEmojis=[],r.searchMode=!1;else if(_.length>=Lm){const K=await Pi(_);r.searchText===_&&(p(K),w(!0))}else{const{id:K}=R;if(K!==-1||H&&H.length){const re=await Mi(K);r.currentGroup.id===K&&(p(re),w(!1))}}}A()});const bn=()=>{Yn(()=>Jm(n.tabpanelElement))};o(()=>{const{currentEmojis:A,emojiVersion:_}=r,R=A.filter(N=>N.unicode).filter(N=>$a(N)&&!Hs.has(N.unicode));if(!_&&R.length)p(A),Yn(()=>J(R));else{const N=_?A:A.filter(Nt);p(N),bn()}});function J(A){Xm(A,n.baselineEmoji,c)?bn():r.currentEmojis=[...r.currentEmojis]}function Nt(A){return!A.unicode||!$a(A)||Hs.get(A.unicode)}async function ht(A){const _=r.emojiVersion||await ps();return A.filter(({version:R})=>!R||R<=_)}async function qe(A){return Gm(A,r.emojiVersion||await ps())}async function Mi(A){const _=A===-1?r.customEmoji:await r.database.getEmojiByGroup(A);return qe(await ht(_))}async function Pi(A){return qe(await ht(await r.database.getEmojiBySearchQuery(A)))}o(()=>{}),o(()=>{function A(){const{searchMode:R,currentEmojis:N}=r;if(R)return[{category:"",emojis:N}];const H=new Map;for(const K of N){const re=K.category||"";let Oe=H.get(re);Oe||(Oe=[],H.set(re,Oe)),Oe.push(K)}return[...H.entries()].map(([K,re])=>({category:K,emojis:re})).sort((K,re)=>r.customCategorySorting(K.category,re.category))}const _=A();b(_)}),o(()=>{r.activeSearchItemId=r.activeSearchItem!==-1&&r.currentEmojis[r.activeSearchItem].id}),o(()=>{const{rawSearchText:A}=r;Qc(()=>{r.searchText=(A||"").trim(),r.activeSearchItem=-1})});function Li(A){if(!r.searchMode||!r.currentEmojis.length)return;const _=R=>{Se(A),r.activeSearchItem=hs(R,r.activeSearchItem,r.currentEmojis)};switch(A.key){case"ArrowDown":return _(!1);case"ArrowUp":return _(!0);case"Enter":if(r.activeSearchItem===-1)r.activeSearchItem=0;else return Se(A),V(r.currentEmojis[r.activeSearchItem].id)}}function wn(A){const{target:_}=A,R=_.closest(".nav-button");if(!R)return;const N=parseInt(R.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(H=>H.id===N)}function Ii(A){const{target:_,key:R}=A,N=H=>{H&&(Se(A),H.focus())};switch(R){case"ArrowLeft":return N(_.previousElementSibling);case"ArrowRight":return N(_.nextElementSibling);case"Home":return N(_.parentElement.firstElementChild);case"End":return N(_.parentElement.lastElementChild)}}async function kn(A){const _=await r.database.getEmojiByUnicodeOrName(A),R=[...r.currentEmojis,...r.currentFavorites].find(H=>H.id===A),N=R.unicode&&S(R,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(A),{emoji:_,skinTone:r.currentSkinTone,...N&&{unicode:N},...R.name&&{name:R.name}}}async function V(A){const _=kn(A);u("emoji-click-sync",_),u("emoji-click",await _)}function Sn(A){const{target:_}=A;if(!_.classList.contains("emoji"))return;Se(A);const R=_.id.substring(4);V(R)}function G(A){r.currentSkinTone=A,r.skinTonePickerExpanded=!1,l("skintone-button"),u("skin-tone-change",{skinTone:A}),r.database.setPreferredSkinTone(A)}function An(A){const{target:{id:_}}=A,R=_&&_.match(/^skintone-(\d)/);if(!R)return;Se(A);const N=parseInt(R[1],10);G(N)}function j(A){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&(Se(A),Yn(()=>l("skintone-list")))}o(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function Ve(A){if(!r.skinTonePickerExpanded)return;const _=async R=>{Se(A),r.activeSkinTone=R};switch(A.key){case"ArrowUp":return _(hs(!0,r.activeSkinTone,r.skinTones));case"ArrowDown":return _(hs(!1,r.activeSkinTone,r.skinTones));case"Home":return _(0);case"End":return _(r.skinTones.length-1);case"Enter":return Se(A),G(r.activeSkinTone);case"Escape":return Se(A),r.skinTonePickerExpanded=!1,l("skintone-button")}}function Dt(A){if(r.skinTonePickerExpanded&&A.key===" ")return Se(A),G(r.activeSkinTone)}async function De(A){const{relatedTarget:_}=A;(!_||_.id!=="skintone-list")&&(r.skinTonePickerExpanded=!1)}function $n(A){r.rawSearchText=A.target.value}return{$set(A){zn(r,A)},$destroy(){i.abort()}}}const yy="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",vy="en";var by={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}},wy=':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}';const Zc=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],ky=`:host{--emoji-font-family:${Yc}}`;class Wr extends HTMLElement{constructor(t){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=wy+ky,this.shadowRoot.appendChild(n),this._ctx={locale:vy,dataSource:yy,skinToneEmoji:Nm,customCategorySorting:Bm,customEmoji:null,i18n:by,emojiVersion:null,...t};for(const i of Zc)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){Ma(this),this._cmp||(this._cmp=my(this.shadowRoot,this._ctx))}disconnectedCallback(){Ma(this),fi(()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:t}=this._ctx;t.close().catch(n=>console.error(n))}})}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(t,n,i){this._set(t.replace(/-([a-z])/g,(s,r)=>r.toUpperCase()),t==="emoji-version"?parseFloat(i):i)}_set(t,n){this._ctx[t]=n,this._cmp&&this._cmp.$set({[t]:n}),["locale","dataSource"].includes(t)&&this._dbFlush()}_dbCreate(){const{locale:t,dataSource:n,database:i}=this._ctx;(!i||i.locale!==t||i.dataSource!==n)&&this._set("database",new Pm({locale:t,dataSource:n}))}_dbFlush(){fi(()=>this._dbCreate())}}const Jc={};for(const e of Zc)Jc[e]={get(){return e==="database"&&this._dbCreate(),this._ctx[e]},set(t){if(e==="database")throw new Error("database is read-only");this._set(e,t)}};Object.defineProperties(Wr.prototype,Jc);function Ma(e){e instanceof Wr||Object.setPrototypeOf(e,customElements.get(e.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",Wr);function Sy(e){e.style.height="0";const t=Math.max(e.scrollHeight,44);e.style.height=`${t}px`,e.style.overflowY=e.scrollHeight>e.offsetHeight?"auto":"hidden"}function Pa(e){e.style.height="44px",e.style.overflowY="hidden"}const Ay=5e3;function $y(e){return e?e.active?h`
|
|
1940
|
+
--num-skintones: ${Sa};`}),o(()=>{r.customEmoji&&r.database&&Q()}),o(()=>{r.customEmoji&&r.customEmoji.length?r.groups!==js&&(r.groups=js):r.groups!==us&&(r.currentGroupIndex&&r.currentGroupIndex--,r.groups=us)}),o(()=>{async function A(){r.databaseLoaded&&(r.currentSkinTone=await r.database.getPreferredSkinTone())}A()}),o(()=>{r.skinTones=Array(Sa).fill().map((A,_)=>qm(r.skinToneEmoji,_))}),o(()=>{r.skinToneButtonText=r.skinTones[r.currentSkinTone]}),o(()=>{r.skinToneButtonLabel=r.i18n.skinToneLabel.replace("{skinTone}",r.i18n.skinTones[r.currentSkinTone])}),o(()=>{async function A(){const{database:_}=r,R=(await Promise.all(Dm.map(N=>_.getEmojiByUnicodeOrName(N)))).filter(Boolean);r.defaultFavoriteEmojis=R}r.databaseLoaded&&A()});function Q(){const{customEmoji:A,database:_}=r,R=A||ms;_.customEmoji!==R&&(_.customEmoji=R)}o(()=>{async function A(){Q();const{database:_,defaultFavoriteEmojis:R,numColumns:N}=r,H=await _.getTopFavoriteEmoji(N),K=await qe(Yc([...H,...R],re=>re.unicode||re.name).slice(0,N));r.currentFavorites=K}r.databaseLoaded&&r.defaultFavoriteEmojis&&A()});function He(A){Qm(A,s,()=>{{const _=getComputedStyle(n.rootElement),R=parseInt(_.getPropertyValue("--num-columns"),10),N=_.getPropertyValue("direction")==="rtl";r.numColumns=R,r.isRtl=N}})}function Rt(A){fy(A,s,_=>{for(const{target:R,isIntersecting:N}of _)R.classList.toggle("onscreen",N)})}o(()=>{async function A(){const{searchText:_,currentGroup:R,databaseLoaded:N,customEmoji:H}=r;if(!N)r.currentEmojis=[],r.searchMode=!1;else if(_.length>=Pm){const K=await Pi(_);r.searchText===_&&(p(K),b(!0))}else{const{id:K}=R;if(K!==-1||H&&H.length){const re=await Mi(K);r.currentGroup.id===K&&(p(re),b(!1))}}}A()});const bn=()=>{Yn(()=>Zm(n.tabpanelElement))};o(()=>{const{currentEmojis:A,emojiVersion:_}=r,R=A.filter(N=>N.unicode).filter(N=>Aa(N)&&!Hs.has(N.unicode));if(!_&&R.length)p(A),Yn(()=>J(R));else{const N=_?A:A.filter(Nt);p(N),bn()}});function J(A){Ym(A,n.baselineEmoji,c)?bn():r.currentEmojis=[...r.currentEmojis]}function Nt(A){return!A.unicode||!Aa(A)||Hs.get(A.unicode)}async function ht(A){const _=r.emojiVersion||await ps();return A.filter(({version:R})=>!R||R<=_)}async function qe(A){return Vm(A,r.emojiVersion||await ps())}async function Mi(A){const _=A===-1?r.customEmoji:await r.database.getEmojiByGroup(A);return qe(await ht(_))}async function Pi(A){return qe(await ht(await r.database.getEmojiBySearchQuery(A)))}o(()=>{}),o(()=>{function A(){const{searchMode:R,currentEmojis:N}=r;if(R)return[{category:"",emojis:N}];const H=new Map;for(const K of N){const re=K.category||"";let Oe=H.get(re);Oe||(Oe=[],H.set(re,Oe)),Oe.push(K)}return[...H.entries()].map(([K,re])=>({category:K,emojis:re})).sort((K,re)=>r.customCategorySorting(K.category,re.category))}const _=A();w(_)}),o(()=>{r.activeSearchItemId=r.activeSearchItem!==-1&&r.currentEmojis[r.activeSearchItem].id}),o(()=>{const{rawSearchText:A}=r;Gc(()=>{r.searchText=(A||"").trim(),r.activeSearchItem=-1})});function Li(A){if(!r.searchMode||!r.currentEmojis.length)return;const _=R=>{Se(A),r.activeSearchItem=hs(R,r.activeSearchItem,r.currentEmojis)};switch(A.key){case"ArrowDown":return _(!1);case"ArrowUp":return _(!0);case"Enter":if(r.activeSearchItem===-1)r.activeSearchItem=0;else return Se(A),V(r.currentEmojis[r.activeSearchItem].id)}}function wn(A){const{target:_}=A,R=_.closest(".nav-button");if(!R)return;const N=parseInt(R.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(H=>H.id===N)}function Ii(A){const{target:_,key:R}=A,N=H=>{H&&(Se(A),H.focus())};switch(R){case"ArrowLeft":return N(_.previousElementSibling);case"ArrowRight":return N(_.nextElementSibling);case"Home":return N(_.parentElement.firstElementChild);case"End":return N(_.parentElement.lastElementChild)}}async function kn(A){const _=await r.database.getEmojiByUnicodeOrName(A),R=[...r.currentEmojis,...r.currentFavorites].find(H=>H.id===A),N=R.unicode&&S(R,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(A),{emoji:_,skinTone:r.currentSkinTone,...N&&{unicode:N},...R.name&&{name:R.name}}}async function V(A){const _=kn(A);d("emoji-click-sync",_),d("emoji-click",await _)}function Sn(A){const{target:_}=A;if(!_.classList.contains("emoji"))return;Se(A);const R=_.id.substring(4);V(R)}function G(A){r.currentSkinTone=A,r.skinTonePickerExpanded=!1,l("skintone-button"),d("skin-tone-change",{skinTone:A}),r.database.setPreferredSkinTone(A)}function An(A){const{target:{id:_}}=A,R=_&&_.match(/^skintone-(\d)/);if(!R)return;Se(A);const N=parseInt(R[1],10);G(N)}function j(A){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&(Se(A),Yn(()=>l("skintone-list")))}o(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function Ve(A){if(!r.skinTonePickerExpanded)return;const _=async R=>{Se(A),r.activeSkinTone=R};switch(A.key){case"ArrowUp":return _(hs(!0,r.activeSkinTone,r.skinTones));case"ArrowDown":return _(hs(!1,r.activeSkinTone,r.skinTones));case"Home":return _(0);case"End":return _(r.skinTones.length-1);case"Enter":return Se(A),G(r.activeSkinTone);case"Escape":return Se(A),r.skinTonePickerExpanded=!1,l("skintone-button")}}function Dt(A){if(r.skinTonePickerExpanded&&A.key===" ")return Se(A),G(r.activeSkinTone)}async function De(A){const{relatedTarget:_}=A;(!_||_.id!=="skintone-list")&&(r.skinTonePickerExpanded=!1)}function xn(A){r.rawSearchText=A.target.value}return{$set(A){zn(r,A)},$destroy(){i.abort()}}}const my="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",yy="en";var vy={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}},by=':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}';const Xc=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],wy=`:host{--emoji-font-family:${Qc}}`;class Ur extends HTMLElement{constructor(t){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=by+wy,this.shadowRoot.appendChild(n),this._ctx={locale:yy,dataSource:my,skinToneEmoji:Rm,customCategorySorting:Om,customEmoji:null,i18n:vy,emojiVersion:null,...t};for(const i of Xc)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){_a(this),this._cmp||(this._cmp=gy(this.shadowRoot,this._ctx))}disconnectedCallback(){_a(this),fi(()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:t}=this._ctx;t.close().catch(n=>console.error(n))}})}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(t,n,i){this._set(t.replace(/-([a-z])/g,(s,r)=>r.toUpperCase()),t==="emoji-version"?parseFloat(i):i)}_set(t,n){this._ctx[t]=n,this._cmp&&this._cmp.$set({[t]:n}),["locale","dataSource"].includes(t)&&this._dbFlush()}_dbCreate(){const{locale:t,dataSource:n,database:i}=this._ctx;(!i||i.locale!==t||i.dataSource!==n)&&this._set("database",new Mm({locale:t,dataSource:n}))}_dbFlush(){fi(()=>this._dbCreate())}}const Zc={};for(const e of Xc)Zc[e]={get(){return e==="database"&&this._dbCreate(),this._ctx[e]},set(t){if(e==="database")throw new Error("database is read-only");this._set(e,t)}};Object.defineProperties(Ur.prototype,Zc);function _a(e){e instanceof Ur||Object.setPrototypeOf(e,customElements.get(e.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",Ur);function ky(e){e.style.height="0";const t=Math.max(e.scrollHeight,44);e.style.height=`${t}px`,e.style.overflowY=e.scrollHeight>e.offsetHeight?"auto":"hidden"}function Ma(e){e.style.height="44px",e.style.overflowY="hidden"}const Sy=5e3;function Ay(e){return e?e.active?h`
|
|
1941
1941
|
<div class="callout info compaction-indicator compaction-indicator--active">
|
|
1942
1942
|
${D.loader} Compacting context...
|
|
1943
1943
|
</div>
|
|
1944
|
-
`:e.completedAt&&Date.now()-e.completedAt<
|
|
1944
|
+
`:e.completedAt&&Date.now()-e.completedAt<Sy?h`
|
|
1945
1945
|
<div class="callout success compaction-indicator compaction-indicator--complete">
|
|
1946
1946
|
${D.check} Context compacted
|
|
1947
1947
|
</div>
|
|
1948
|
-
`:k:k}const Xt=5*1024*1024;function Zt(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function kt(e,t){var i,s,r;let n=(i=e.closest(".chat"))==null?void 0:i.querySelector(".chat-attachment-error");if(!n){n=document.createElement("div"),n.className="callout danger chat-attachment-error",n.style.cssText="margin: 8px 4px; animation: fade-in 200ms ease-out;";const o=(s=e.closest(".chat"))==null?void 0:s.querySelector(".chat-compose");(r=o==null?void 0:o.parentElement)==null||r.insertBefore(n,o)}n.textContent=t,setTimeout(()=>n==null?void 0:n.remove(),4e3)}const xy=/\.(md|txt|csv|json|xml|html|css|js|ts|py|sh|yaml|yml|toml|ini|cfg|log|sql)$/i;function
|
|
1948
|
+
`:k:k}const Xt=5*1024*1024;function Zt(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function kt(e,t){var i,s,r;let n=(i=e.closest(".chat"))==null?void 0:i.querySelector(".chat-attachment-error");if(!n){n=document.createElement("div"),n.className="callout danger chat-attachment-error",n.style.cssText="margin: 8px 4px; animation: fade-in 200ms ease-out;";const o=(s=e.closest(".chat"))==null?void 0:s.querySelector(".chat-compose");(r=o==null?void 0:o.parentElement)==null||r.insertBefore(n,o)}n.textContent=t,setTimeout(()=>n==null?void 0:n.remove(),4e3)}const xy=/\.(md|txt|csv|json|xml|html|css|js|ts|py|sh|yaml|yml|toml|ini|cfg|log|sql)$/i;function $y(e){return e.type.startsWith("image/")||/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(e.name)}function Ey(e){return e.type.startsWith("text/")||e.type==="application/json"||e.type==="application/xml"||xy.test(e.name)}function Cy(e){return e.type==="application/pdf"||/\.pdf$/i.test(e.name)}function Ty(e){return e.type.startsWith("video/")||/\.(mp4|webm|mov|avi|mkv|m4v)$/i.test(e.name)}function _y(e,t){var s;e.preventDefault(),e.stopPropagation();const n=e.currentTarget;n.classList.remove("chat--dragover");const i=(s=e.dataTransfer)==null?void 0:s.files;if(!(!i||i.length===0))for(let r=0;r<i.length;r++){const o=i[r];if($y(o)){if(!t.onAttachmentsChange)continue;if(o.size>Xt){kt(n,`Image too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var f;const l=a.result,c={id:Zt(),dataUrl:l,mimeType:o.type},d=t.attachments??[];(f=t.onAttachmentsChange)==null||f.call(t,[...d,c])},a.readAsDataURL(o)}else if(Ey(o)){if(!t.onAttachmentsChange)continue;if(o.size>Xt){kt(n,`File too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var f;const l=a.result,c={id:Zt(),dataUrl:"",mimeType:o.type||"text/plain",fileName:o.name,textContent:l},d=t.attachments??[];(f=t.onAttachmentsChange)==null||f.call(t,[...d,c])},a.readAsText(o)}else if(Cy(o)){if(!t.onAttachmentsChange)continue;if(o.size>Xt){kt(n,`PDF too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var f;const l=a.result,c={id:Zt(),dataUrl:l,mimeType:"application/pdf",fileName:o.name},d=t.attachments??[];(f=t.onAttachmentsChange)==null||f.call(t,[...d,c])},a.readAsDataURL(o)}else if(Ty(o)){if(!t.onAttachmentsChange)continue;if(o.size>Xt){kt(n,`Video too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var f;const l=a.result,c={id:Zt(),dataUrl:l,mimeType:o.type||"video/mp4",fileName:o.name},d=t.attachments??[];(f=t.onAttachmentsChange)==null||f.call(t,[...d,c])},a.readAsDataURL(o)}else kt(n,`Unsupported file type: ${o.name}. Use the Files page to upload to workspace.`)}}function My(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect="copy"),e.currentTarget.classList.add("chat--dragover")}function Py(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget,n=e.relatedTarget;(!n||!t.contains(n))&&t.classList.remove("chat--dragover")}function Ly(e,t){var s,r,o;const n=(s=e.clipboardData)==null?void 0:s.items;if(!n||!t.onAttachmentsChange)return;const i=[];for(let a=0;a<n.length;a++){const l=n[a];(l.type.startsWith("image/")||l.type.startsWith("video/"))&&i.push(l)}if(i.length!==0){e.preventDefault();for(const a of i){const l=a.getAsFile();if(!l)continue;const c=l.type.startsWith("video/")?"Video":"Image";if(l.size>Xt){const f=((o=(r=e.target)==null?void 0:r.closest)==null?void 0:o.call(r,".chat"))??document.querySelector(".chat");f&&kt(f,`${c} too large (${(l.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const d=new FileReader;d.onload=()=>{var w;const f=d.result,u=l.type.startsWith("video/"),p={id:Zt(),dataUrl:f,mimeType:l.type,fileName:u?l.name||"video.mp4":void 0},b=t.attachments??[];(w=t.onAttachmentsChange)==null||w.call(t,[...b,p])},d.readAsDataURL(l)}}}function Iy(e){const t=e.currentTarget,n=t.closest(".chat-compose"),i=n==null?void 0:n.querySelector(".emoji-picker-popup");if(!i)return;const s=i.classList.toggle("active");if(t.classList.toggle("active",s),s){const r=o=>{i.contains(o.target)||t.contains(o.target)||(i.classList.remove("active"),t.classList.remove("active"),document.removeEventListener("click",r,!0))};requestAnimationFrame(()=>document.addEventListener("click",r,!0))}}function Ry(e,t){const n=e.detail,i=n==null?void 0:n.unicode;if(!i)return;const s=e.currentTarget.closest(".chat-compose"),r=s==null?void 0:s.querySelector("textarea");if(!r)return;const o=r.selectionStart??t.draft.length,a=r.selectionEnd??o,l=t.draft.slice(0,o),c=t.draft.slice(a);t.onDraftChange(l+i+c);const d=s==null?void 0:s.querySelector(".emoji-picker-popup"),f=s==null?void 0:s.querySelector(".chat-compose__emoji");d==null||d.classList.remove("active"),f==null||f.classList.remove("active"),requestAnimationFrame(()=>{r.focus();const u=o+i.length;r.setSelectionRange(u,u)})}function Ny(e){const t=e.attachments??[];return t.length===0?k:h`
|
|
1949
1949
|
<div class="chat-attachments">
|
|
1950
1950
|
${t.map(n=>{var i;return n.fileName?h`
|
|
1951
1951
|
<div class="chat-attachment chat-attachment--file">
|
|
@@ -1978,7 +1978,7 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
1978
1978
|
</div>
|
|
1979
1979
|
`})}
|
|
1980
1980
|
</div>
|
|
1981
|
-
`}function
|
|
1981
|
+
`}function Jc(e){var u,p,b;const t=e.connected,n=e.sending||e.stream!==null,i=!!(e.canAbort&&e.onAbort),s=(p=(u=e.sessions)==null?void 0:u.sessions)==null?void 0:p.find(w=>w.key===e.sessionKey),r=(s==null?void 0:s.reasoningLevel)??"off",o=e.showThinking&&r!=="off";e.assistantName,e.assistantAvatar??e.assistantAvatarUrl;const a=(((b=e.attachments)==null?void 0:b.length)??0)>0,l=e.connected?a?"Add a message...":"Message...":"Connecting…",c=e.splitRatio??.6,d=!!(e.sidebarOpen&&e.onCloseSidebar),f=h`
|
|
1982
1982
|
<div
|
|
1983
1983
|
class="chat-thread"
|
|
1984
1984
|
role="log"
|
|
@@ -1986,20 +1986,20 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
1986
1986
|
@scroll=${e.onChatScroll}
|
|
1987
1987
|
>
|
|
1988
1988
|
${e.loading?h`<div class="muted">Loading chat…</div>`:k}
|
|
1989
|
-
${
|
|
1989
|
+
${hf(Ky(e),w=>w.key,w=>w.kind==="interim"?Og(w.text):w.kind==="reading-indicator"?Dg():w.kind==="stream"?Bg(w.text,w.startedAt,e.onOpenSidebar):w.kind==="group"?Fg(w,{onOpenSidebar:e.onOpenSidebar,showReasoning:o,assistantName:e.assistantName}):k)}
|
|
1990
1990
|
</div>
|
|
1991
1991
|
`;return h`
|
|
1992
1992
|
<section
|
|
1993
1993
|
class="card chat"
|
|
1994
|
-
@drop=${
|
|
1995
|
-
@dragover=${
|
|
1996
|
-
@dragleave=${
|
|
1994
|
+
@drop=${w=>_y(w,e)}
|
|
1995
|
+
@dragover=${My}
|
|
1996
|
+
@dragleave=${Py}
|
|
1997
1997
|
>
|
|
1998
1998
|
${e.disabledReason?h`<div class="callout">${e.disabledReason}</div>`:k}
|
|
1999
1999
|
|
|
2000
2000
|
${e.error?h`<div class="callout danger">${e.error}</div>`:k}
|
|
2001
2001
|
|
|
2002
|
-
${
|
|
2002
|
+
${Ay(e.compactionStatus)}
|
|
2003
2003
|
|
|
2004
2004
|
${e.focusMode?h`
|
|
2005
2005
|
<button
|
|
@@ -2014,18 +2014,18 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
2014
2014
|
`:k}
|
|
2015
2015
|
|
|
2016
2016
|
<div
|
|
2017
|
-
class="chat-split-container ${
|
|
2017
|
+
class="chat-split-container ${d?"chat-split-container--open":""}"
|
|
2018
2018
|
>
|
|
2019
2019
|
<div
|
|
2020
2020
|
class="chat-main"
|
|
2021
|
-
style="flex: ${
|
|
2021
|
+
style="flex: ${d?`0 0 ${c*100}%`:"1 1 100%"}"
|
|
2022
2022
|
>
|
|
2023
2023
|
${f}
|
|
2024
2024
|
${e.nearBottom===!1?h`
|
|
2025
2025
|
<button
|
|
2026
2026
|
class="chat-scroll-bottom"
|
|
2027
2027
|
type="button"
|
|
2028
|
-
@click=${
|
|
2028
|
+
@click=${w=>{const S=w.currentTarget.closest(".chat-main"),C=S==null?void 0:S.querySelector(".chat-thread");C&&C.scrollTo({top:C.scrollHeight,behavior:"smooth"})}}
|
|
2029
2029
|
aria-label="Scroll to bottom"
|
|
2030
2030
|
title="Scroll to bottom"
|
|
2031
2031
|
>
|
|
@@ -2034,13 +2034,13 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
|
|
|
2034
2034
|
`:k}
|
|
2035
2035
|
</div>
|
|
2036
2036
|
|
|
2037
|
-
${
|
|
2037
|
+
${d?h`
|
|
2038
2038
|
<resizable-divider
|
|
2039
2039
|
.splitRatio=${c}
|
|
2040
|
-
@resize=${
|
|
2040
|
+
@resize=${w=>{var S;return(S=e.onSplitRatioChange)==null?void 0:S.call(e,w.detail.splitRatio)}}
|
|
2041
2041
|
></resizable-divider>
|
|
2042
2042
|
<div class="chat-sidebar">
|
|
2043
|
-
${
|
|
2043
|
+
${Wg({content:e.sidebarContent??null,error:e.sidebarError??null,onClose:e.onCloseSidebar,onViewRawText:()=>{!e.sidebarContent||!e.onOpenSidebar||e.onOpenSidebar(`\`\`\`
|
|
2044
2044
|
${e.sidebarContent}
|
|
2045
2045
|
\`\`\``)}})}
|
|
2046
2046
|
</div>
|
|
@@ -2052,7 +2052,7 @@ ${e.sidebarContent}
|
|
|
2052
2052
|
<button
|
|
2053
2053
|
class="chat-suggestion-chip"
|
|
2054
2054
|
type="button"
|
|
2055
|
-
@click=${()=>{var
|
|
2055
|
+
@click=${()=>{var w;return(w=e.onSuggestionClick)==null?void 0:w.call(e,e.suggestion)}}
|
|
2056
2056
|
>
|
|
2057
2057
|
${e.suggestion}
|
|
2058
2058
|
</button>
|
|
@@ -2060,12 +2060,12 @@ ${e.sidebarContent}
|
|
|
2060
2060
|
`:k}
|
|
2061
2061
|
|
|
2062
2062
|
<div class="chat-compose">
|
|
2063
|
-
${
|
|
2063
|
+
${Ny(e)}
|
|
2064
2064
|
<div class="chat-compose__row">
|
|
2065
2065
|
<button
|
|
2066
2066
|
class="chat-compose__emoji"
|
|
2067
2067
|
type="button"
|
|
2068
|
-
@click=${
|
|
2068
|
+
@click=${Iy}
|
|
2069
2069
|
aria-label="Emoji"
|
|
2070
2070
|
title="Emoji"
|
|
2071
2071
|
>
|
|
@@ -2076,9 +2076,9 @@ ${e.sidebarContent}
|
|
|
2076
2076
|
<textarea
|
|
2077
2077
|
.value=${e.draft}
|
|
2078
2078
|
?disabled=${!e.connected}
|
|
2079
|
-
@keydown=${
|
|
2080
|
-
@input=${
|
|
2081
|
-
@paste=${
|
|
2079
|
+
@keydown=${w=>{w.key==="Enter"&&(w.isComposing||w.keyCode===229||w.shiftKey||e.connected&&(w.preventDefault(),t&&(e.onSend(),Ma(w.target))))}}
|
|
2080
|
+
@input=${w=>{const S=w.target;e.onDraftChange(S.value),ky(S)}}
|
|
2081
|
+
@paste=${w=>Ly(w,e)}
|
|
2082
2082
|
placeholder=${l}
|
|
2083
2083
|
></textarea>
|
|
2084
2084
|
</label>
|
|
@@ -2095,7 +2095,7 @@ ${e.sidebarContent}
|
|
|
2095
2095
|
<button
|
|
2096
2096
|
class="btn btn--icon chat-compose__send primary"
|
|
2097
2097
|
?disabled=${!e.connected}
|
|
2098
|
-
@click=${
|
|
2098
|
+
@click=${w=>{var C;e.onSend();const S=(C=w.target.closest(".chat-compose"))==null?void 0:C.querySelector("textarea");S&&Ma(S)}}
|
|
2099
2099
|
aria-label="${n?"Queue":"Send"}"
|
|
2100
2100
|
title="${n?"Queue message":"Send (Enter)"}"
|
|
2101
2101
|
>
|
|
@@ -2104,13 +2104,13 @@ ${e.sidebarContent}
|
|
|
2104
2104
|
</div>
|
|
2105
2105
|
<div class="emoji-picker-popup">
|
|
2106
2106
|
<emoji-picker
|
|
2107
|
-
@emoji-click=${
|
|
2107
|
+
@emoji-click=${w=>Ry(w,e)}
|
|
2108
2108
|
></emoji-picker>
|
|
2109
2109
|
</div>
|
|
2110
|
-
${e.publicMode?k:
|
|
2110
|
+
${e.publicMode?k:Uy(e)}
|
|
2111
2111
|
</div>
|
|
2112
2112
|
</section>
|
|
2113
|
-
`}const
|
|
2113
|
+
`}const Dy=[{id:"claude-opus-4-6",shortName:"Opus",description:"Most capable"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet",description:"Fast & capable"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku",description:"Fastest"}];function Oy(e){const t=new Set(e.filter(n=>n.provider==="anthropic").map(n=>n.id));return Dy.filter(n=>t.has(n.id)).map(n=>({key:`anthropic/${n.id}`,...n}))}const By=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function Fy(e){var s;const t=e.currentTarget,n=(s=t.closest(".chat-model-bar"))==null?void 0:s.querySelector(".chat-settings-menu");if(!n)return;const i=n.classList.contains("active");if(document.querySelectorAll(".chat-settings-menu.active").forEach(r=>r.classList.remove("active")),!i){n.classList.add("active");const r=o=>{!n.contains(o.target)&&o.target!==t&&!t.contains(o.target)&&(n.classList.remove("active"),document.removeEventListener("click",r))};requestAnimationFrame(()=>document.addEventListener("click",r))}}function Uy(e){if(!e.connected)return k;const t=e.modelCatalog??[],n=Oy(t);if(n.length===0)return k;const i=e.modelProvider&&e.model?`${e.modelProvider}/${e.model}`:null,s=e.thinkingLevel??"off",r=e.verboseLevel==="on"||e.verboseLevel==="full",o=e.fillerEnabled===!0;return h`
|
|
2114
2114
|
<div class="chat-model-bar">
|
|
2115
2115
|
<div class="chat-model-bar__select">
|
|
2116
2116
|
<select
|
|
@@ -2131,7 +2131,7 @@ ${e.sidebarContent}
|
|
|
2131
2131
|
.value=${s}
|
|
2132
2132
|
@change=${a=>{const l=a.target.value;e.onThinkingLevelChange&&e.onThinkingLevelChange(l)}}
|
|
2133
2133
|
>
|
|
2134
|
-
${
|
|
2134
|
+
${By.map(a=>h`
|
|
2135
2135
|
<option value=${a.value} ?selected=${a.value===s}>
|
|
2136
2136
|
Thinking: ${a.label}
|
|
2137
2137
|
</option>
|
|
@@ -2141,7 +2141,7 @@ ${e.sidebarContent}
|
|
|
2141
2141
|
<button
|
|
2142
2142
|
class="chat-model-bar__settings-btn"
|
|
2143
2143
|
type="button"
|
|
2144
|
-
@click=${
|
|
2144
|
+
@click=${Fy}
|
|
2145
2145
|
aria-label="Message settings"
|
|
2146
2146
|
title="Message settings"
|
|
2147
2147
|
>
|
|
@@ -2168,23 +2168,30 @@ ${e.sidebarContent}
|
|
|
2168
2168
|
</label>
|
|
2169
2169
|
</div>
|
|
2170
2170
|
</div>
|
|
2171
|
-
`}const
|
|
2171
|
+
`}const Pa=200;function Wy(e){const t=[];let n=null;for(const i of e){if(i.kind!=="message"){n&&(t.push(n),n=null),t.push(i);continue}const s=hl(i.message),r=fl(s.role),o=s.timestamp||Date.now();!n||n.role!==r?(n&&t.push(n),n={kind:"group",key:`group:${r}:${i.key}`,role:r,messages:[{message:i.message,key:i.key}],timestamp:o,isStreaming:!1}):n.messages.push({message:i.message,key:i.key})}return n&&t.push(n),t}function Ky(e){var o;const t=[],n=Array.isArray(e.messages)?e.messages:[],i=Array.isArray(e.toolMessages)?e.toolMessages:[],s=e.showThinking||e.verboseLevel==="on"||e.verboseLevel==="full",r=Math.max(0,n.length-Pa);r>0&&t.push({kind:"message",key:"chat:history:notice",message:{role:"system",content:`Showing last ${Pa} messages (${r} hidden).`,timestamp:Date.now()}});for(let a=r;a<n.length;a++){const l=n[a],c=hl(l);!s&&c.role.toLowerCase()==="toolresult"||t.push({kind:"message",key:La(l,a),message:l})}if(s)for(let a=0;a<i.length;a++)t.push({kind:"message",key:La(i[a],a+n.length),message:i[a]});if(e.interimText&&t.push({kind:"interim",key:"interim:thinking",text:e.interimText}),e.stream!==null){const a=`stream:${e.sessionKey}:${e.streamStartedAt??"live"}`;e.stream.trim().length>0?t.push({kind:"stream",key:a,text:e.stream,startedAt:e.streamStartedAt??Date.now()}):t.push({kind:"reading-indicator",key:a})}for(const a of e.queue){const l=((o=a.attachments)==null?void 0:o.filter(d=>d.fileName).map(d=>d.fileName))??[],c=l.length>0?a.text?`${l.join(", ")}
|
|
2172
2172
|
|
|
2173
|
-
${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,message:{role:"user",content:[{type:"text",text:c}],timestamp:a.createdAt}})}return
|
|
2174
|
-
<div class="setup-container setup-container--full chat-page">
|
|
2175
|
-
${ut("Chat",e.wsProps)}
|
|
2176
|
-
<div class="chat-viewport">
|
|
2177
|
-
${eu(e)}
|
|
2178
|
-
</div>
|
|
2179
|
-
</div>
|
|
2180
|
-
`:h`
|
|
2173
|
+
${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,message:{role:"user",content:[{type:"text",text:c}],timestamp:a.createdAt}})}return Wy(t)}function La(e,t){const n=e,i=typeof n.toolCallId=="string"?n.toolCallId:"";if(i)return`tool:${i}`;const s=typeof n.id=="string"?n.id:"";if(s)return`msg:${s}`;const r=typeof n.messageId=="string"?n.messageId:"";if(r)return`msg:${r}`;const o=typeof n.timestamp=="number"?n.timestamp:null,a=typeof n.role=="string"?n.role:"unknown";return o!=null?`msg:${a}:${o}:${t}`:`msg:${a}:${t}`}const zy=h`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>`;function jy(e){if(!e.connected)return h`
|
|
2181
2174
|
<div class="setup-container">
|
|
2182
2175
|
<div class="setup-card">
|
|
2183
2176
|
<div class="setup-spinner"></div>
|
|
2184
2177
|
<p>Connecting to gateway...</p>
|
|
2185
2178
|
</div>
|
|
2186
2179
|
</div>
|
|
2187
|
-
|
|
2180
|
+
`;const t=e.publicChatEnabled&&e.publicChatAccountId?h`<a
|
|
2181
|
+
class="chat-public-link"
|
|
2182
|
+
href="/public/chat/${e.publicChatAccountId}"
|
|
2183
|
+
target="_blank"
|
|
2184
|
+
rel="noopener"
|
|
2185
|
+
title="Open public chat in new tab"
|
|
2186
|
+
>Public ${zy}</a>`:k;return h`
|
|
2187
|
+
<div class="setup-container setup-container--full chat-page">
|
|
2188
|
+
${ut("Chat",e.wsProps)}
|
|
2189
|
+
${t}
|
|
2190
|
+
<div class="chat-viewport">
|
|
2191
|
+
${Jc(e)}
|
|
2192
|
+
</div>
|
|
2193
|
+
</div>
|
|
2194
|
+
`}function Hy(e){return e?`${cl(e)} (${wi(e)})`:"n/a"}function eu(e){const t=e.state??{},n=t.lastStatus??"n/a",i=t.lastRunAtMs?wi(t.lastRunAtMs):"never";return`${n} · last ${i}`}function tu(e){const t=e.schedule;return t.kind==="at"?`One-time: ${cl(t.atMs)}`:t.kind==="every"?`Every ${ul(t.everyMs)}`:qy(t.expr,t.tz)}function qy(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[i,s,r,o,a]=n,l=t?` (${t.replace(/^.*\//,"").replace(/_/g," ")})`:"",c=(w,S)=>new Date(2e3,0,1,w,S).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),d=/^\d{1,2}$/.test(i)?parseInt(i,10):null,f=Ia(s);if(d===null||!f)return`${e}${t?` (${t})`:""}`;const u=f.map(w=>c(w,d)),p=u.length<=3?u.join(" & "):`${u.slice(0,-1).join(", ")} & ${u[u.length-1]}`,b=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];if(r==="*"&&o==="*"){if(a==="*")return`Daily at ${p}${l}`;if(a==="1-5")return`Weekdays at ${p}${l}`;if(a==="0,6"||a==="6,0")return`Weekends at ${p}${l}`;const w=Ia(a);if(w)return`${w.map(C=>b[C%7]??String(C)).join(", ")} at ${p}${l}`}return`${e}${t?` (${t})`:""}`}function Ia(e){if(e==="*")return null;if(/^\d+(,\d+)*$/.test(e))return e.split(",").map(Number);if(/^\d+-\d+$/.test(e)){const[t,n]=e.split("-").map(Number);if(t>n)return null;const i=[];for(let s=t;s<=n;s++)i.push(s);return i}return null}function Vy(e,t=!0){const n=e.payload;return n.kind==="systemEvent"?`Task: ${t&&n.text.length>60?`${n.text.slice(0,57)}…`:n.text}`:`Message: ${t&&n.message.length>60?`${n.message.slice(0,57)}…`:n.message}`}function Ra(e){const t=e.payload;if(t.kind!=="agentTurn")return null;const n=t.channel??t.provider,i=t.to;if(!i&&!n)return null;const s=[];return i&&s.push(i),n&&n!=="last"&&s.push(`via ${n}`),s.join(" ")||null}function Gy(e){var s;const t=["last",...e.channels.filter(Boolean)],n=(s=e.form.channel)==null?void 0:s.trim();n&&!t.includes(n)&&t.push(n);const i=new Set;return t.filter(r=>i.has(r)?!1:(i.add(r),!0))}function Qy(e,t){var i,s;if(t==="last")return"last";const n=(i=e.channelMeta)==null?void 0:i.find(r=>r.id===t);return n!=null&&n.label?n.label:((s=e.channelLabels)==null?void 0:s[t])??t}function Yy(e){return e||"Default"}const Na=h`<svg viewBox="0 0 24 24"><polygon points="5 3 19 12 5 21 5 3"/></svg>`,Xy=h`<svg viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></svg>`,Zy=h`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,nu=h`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,Jy=h`<svg viewBox="0 0 24 24"><path d="M12 5v14"/><path d="M5 12h14"/></svg>`;function Da(e){const t=e.detailJobId?e.jobs.find(n=>n.id===e.detailJobId)??null:null;return h`
|
|
2188
2195
|
${ev(e)}
|
|
2189
2196
|
${tv(e)}
|
|
2190
2197
|
${e.newEventModalOpen?iv(e):k}
|
|
@@ -2229,12 +2236,12 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2229
2236
|
${e.enabled?"On":"Off"}
|
|
2230
2237
|
</span>
|
|
2231
2238
|
</div>
|
|
2232
|
-
<div class="event-card__schedule">${
|
|
2239
|
+
<div class="event-card__schedule">${tu(e)}</div>
|
|
2233
2240
|
${e.agentId?h`<div class="event-card__agent">${Yy(e.agentId)}</div>`:k}
|
|
2234
|
-
${
|
|
2241
|
+
${Ra(e)?h`<div class="event-card__agent muted" style="font-size: 11px;">\u2192 ${Ra(e)}</div>`:k}
|
|
2235
2242
|
<div class="event-card__footer">
|
|
2236
2243
|
<div class="event-card__status">
|
|
2237
|
-
<span class="muted" style="font-size: 11px;">${
|
|
2244
|
+
<span class="muted" style="font-size: 11px;">${eu(e)}</span>
|
|
2238
2245
|
</div>
|
|
2239
2246
|
<div class="event-card__actions" @click=${n=>n.stopPropagation()}>
|
|
2240
2247
|
<button
|
|
@@ -2243,7 +2250,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2243
2250
|
?disabled=${t.busy}
|
|
2244
2251
|
@click=${()=>t.onToggle(e,!e.enabled)}
|
|
2245
2252
|
>
|
|
2246
|
-
${e.enabled?Xy:
|
|
2253
|
+
${e.enabled?Xy:Na}
|
|
2247
2254
|
</button>
|
|
2248
2255
|
<button
|
|
2249
2256
|
class="btn-icon"
|
|
@@ -2251,7 +2258,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2251
2258
|
?disabled=${t.busy}
|
|
2252
2259
|
@click=${()=>t.onRun(e)}
|
|
2253
2260
|
>
|
|
2254
|
-
${
|
|
2261
|
+
${Na}
|
|
2255
2262
|
</button>
|
|
2256
2263
|
<button
|
|
2257
2264
|
class="btn-icon danger"
|
|
@@ -2270,7 +2277,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2270
2277
|
<div class="event-modal__header">
|
|
2271
2278
|
<div class="event-modal__title">New Event</div>
|
|
2272
2279
|
<button class="event-modal__close" @click=${e.onNewEventModalClose}>
|
|
2273
|
-
${
|
|
2280
|
+
${nu}
|
|
2274
2281
|
</button>
|
|
2275
2282
|
</div>
|
|
2276
2283
|
|
|
@@ -2478,7 +2485,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2478
2485
|
<div class="event-modal__header">
|
|
2479
2486
|
<div class="event-modal__title">${e.name||"Untitled Event"}</div>
|
|
2480
2487
|
<button class="event-modal__close" @click=${t.onDetailClose}>
|
|
2481
|
-
${
|
|
2488
|
+
${nu}
|
|
2482
2489
|
</button>
|
|
2483
2490
|
</div>
|
|
2484
2491
|
|
|
@@ -2495,7 +2502,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2495
2502
|
</div>
|
|
2496
2503
|
<div class="event-detail-row">
|
|
2497
2504
|
<span class="event-detail-label">Schedule</span>
|
|
2498
|
-
<span class="event-detail-value">${
|
|
2505
|
+
<span class="event-detail-value">${tu(e)}</span>
|
|
2499
2506
|
</div>
|
|
2500
2507
|
${e.agentId?h`
|
|
2501
2508
|
<div class="event-detail-row">
|
|
@@ -2542,7 +2549,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2542
2549
|
<div class="event-detail-section">
|
|
2543
2550
|
<div class="event-detail-row">
|
|
2544
2551
|
<span class="event-detail-label">Last run</span>
|
|
2545
|
-
<span class="event-detail-value">${
|
|
2552
|
+
<span class="event-detail-value">${eu(e)}</span>
|
|
2546
2553
|
</div>
|
|
2547
2554
|
${(n=e.state)!=null&&n.nextRunAtMs?h`
|
|
2548
2555
|
<div class="event-detail-row">
|
|
@@ -2595,7 +2602,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2595
2602
|
${e.status}
|
|
2596
2603
|
</span>
|
|
2597
2604
|
<span class="muted" style="font-size: 12px;">${wi(e.ts)}</span>
|
|
2598
|
-
<span class="muted" style="font-size: 12px;">${
|
|
2605
|
+
<span class="muted" style="font-size: 12px;">${ul(e.durationMs)}</span>
|
|
2599
2606
|
</div>
|
|
2600
2607
|
${e.summary?h`<div class="muted" style="font-size: 12px;">${e.summary}</div>`:k}
|
|
2601
2608
|
${e.error?h`
|
|
@@ -2643,7 +2650,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2643
2650
|
<div class="list-title">
|
|
2644
2651
|
${e.emoji?`${e.emoji} `:""}${e.name}
|
|
2645
2652
|
</div>
|
|
2646
|
-
<div class="list-sub">${
|
|
2653
|
+
<div class="list-sub">${pd(e.description,140)}</div>
|
|
2647
2654
|
<div class="chip-row" style="margin-top: 6px;">
|
|
2648
2655
|
<span class="chip">${e.source}</span>
|
|
2649
2656
|
<span class="chip ${e.eligible?"chip-ok":"chip-warn"}">
|
|
@@ -2705,7 +2712,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2705
2712
|
`:k}
|
|
2706
2713
|
</div>
|
|
2707
2714
|
</div>
|
|
2708
|
-
`}const
|
|
2715
|
+
`}const Oa=["user","assistant","tool","thinking","error"],Ba={user:"User",assistant:"Assistant",tool:"Tool",thinking:"Thinking",error:"Error",system:"System"};function uv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function dv(e){return e.split(":").slice(2).join(":")||e}function pv(e,t){return t?[e.content,e.agentId,e.sessionKey,e.sessionId,e.toolName].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function hv(e,t=500){return e.length<=t?e:e.slice(0,t)+"..."}function fv(e){const t=e.filterText.trim().toLowerCase();Oa.some(i=>!e.typeFilters[i]),e.agents.some(i=>!e.agentFilters[i]);const n=e.entries.filter(i=>!e.typeFilters[i.type]||e.agents.length>0&&!(e.agentFilters[i.agentId]??!0)?!1:pv(i,t));return h`
|
|
2709
2716
|
<div>
|
|
2710
2717
|
<div class="filters" style="margin-top: 14px;">
|
|
2711
2718
|
<label class="field" style="min-width: 220px;">
|
|
@@ -2719,14 +2726,14 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2719
2726
|
</div>
|
|
2720
2727
|
|
|
2721
2728
|
<div class="chip-row" style="margin-top: 12px;">
|
|
2722
|
-
${
|
|
2729
|
+
${Oa.map(i=>h`
|
|
2723
2730
|
<label class="chip session-log-chip ${i}">
|
|
2724
2731
|
<input
|
|
2725
2732
|
type="checkbox"
|
|
2726
2733
|
.checked=${e.typeFilters[i]}
|
|
2727
2734
|
@change=${s=>e.onTypeToggle(i,s.target.checked)}
|
|
2728
2735
|
/>
|
|
2729
|
-
<span>${
|
|
2736
|
+
<span>${Ba[i]}</span>
|
|
2730
2737
|
</label>
|
|
2731
2738
|
`)}
|
|
2732
2739
|
</div>
|
|
@@ -2759,7 +2766,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2759
2766
|
<div class="log-row session-entry ${i.type}">
|
|
2760
2767
|
<div class="log-row-header">
|
|
2761
2768
|
<span class="log-time mono">${uv(i.timestamp)}</span>
|
|
2762
|
-
<span class="session-log-type ${i.type}">${
|
|
2769
|
+
<span class="session-log-type ${i.type}">${Ba[i.type]}</span>
|
|
2763
2770
|
<span class="log-subsystem mono">${i.agentId}</span>
|
|
2764
2771
|
<span class="session-label mono">${dv(i.sessionKey)}</span>
|
|
2765
2772
|
${i.toolName?h`<span class="session-tool mono">${i.toolName}</span>`:k}
|
|
@@ -2770,7 +2777,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2770
2777
|
`)}
|
|
2771
2778
|
</div>
|
|
2772
2779
|
</div>
|
|
2773
|
-
`}const qs=["trace","debug","info","warn","error","fatal"];function gv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function
|
|
2780
|
+
`}const qs=["trace","debug","info","warn","error","fatal"];function gv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function iu(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function mv(e){return h`
|
|
2774
2781
|
<section class="card">
|
|
2775
2782
|
<div class="row" style="justify-content: space-between;">
|
|
2776
2783
|
<div>
|
|
@@ -2785,7 +2792,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2785
2792
|
<button
|
|
2786
2793
|
class="btn"
|
|
2787
2794
|
?disabled=${e.entries.length===0}
|
|
2788
|
-
@click=${()=>{const t=e.filterText.trim().toLowerCase(),n=qs.some(r=>!e.levelFilters[r]),i=e.entries.filter(r=>r.level&&!e.levelFilters[r.level]?!1:
|
|
2795
|
+
@click=${()=>{const t=e.filterText.trim().toLowerCase(),n=qs.some(r=>!e.levelFilters[r]),i=e.entries.filter(r=>r.level&&!e.levelFilters[r.level]?!1:iu(r,t)),s=t||n?"filtered":"visible";e.onExport(i.map(r=>r.raw),s)}}
|
|
2789
2796
|
>
|
|
2790
2797
|
Export
|
|
2791
2798
|
</button>
|
|
@@ -2817,7 +2824,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2817
2824
|
|
|
2818
2825
|
${e.logsSubTab==="session"?fv(e.sessionLogsProps):yv(e)}
|
|
2819
2826
|
</section>
|
|
2820
|
-
`}function yv(e){const t=e.filterText.trim().toLowerCase();qs.some(i=>!e.levelFilters[i]);const n=e.entries.filter(i=>i.level&&!e.levelFilters[i.level]?!1:
|
|
2827
|
+
`}function yv(e){const t=e.filterText.trim().toLowerCase();qs.some(i=>!e.levelFilters[i]);const n=e.entries.filter(i=>i.level&&!e.levelFilters[i.level]?!1:iu(i,t));return h`
|
|
2821
2828
|
<div class="filters" style="margin-top: 14px;">
|
|
2822
2829
|
<label class="field" style="min-width: 220px;">
|
|
2823
2830
|
<span>Filter</span>
|
|
@@ -2868,7 +2875,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2868
2875
|
</div>
|
|
2869
2876
|
`)}
|
|
2870
2877
|
</div>
|
|
2871
|
-
`}const vv=[{id:"cron",label:"Events"},{id:"skills",label:"Skills"},{id:"logs",label:"Logs"}];function bv(e){switch(e.activeTab){case"cron":return
|
|
2878
|
+
`}const vv=[{id:"cron",label:"Events"},{id:"skills",label:"Skills"},{id:"logs",label:"Logs"}];function bv(e){switch(e.activeTab){case"cron":return Da(e.cronProps);case"skills":return lv(e.skillsProps);case"logs":return mv(e.logsProps);default:return Da(e.cronProps)}}function wv(e){return e.connected?h`
|
|
2872
2879
|
<div class="setup-container">
|
|
2873
2880
|
${ut("Advanced",e.wsProps)}
|
|
2874
2881
|
<div class="setup-card sp-card-advanced" style="text-align: left;">
|
|
@@ -2893,25 +2900,25 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2893
2900
|
<p>Connecting to gateway...</p>
|
|
2894
2901
|
</div>
|
|
2895
2902
|
</div>
|
|
2896
|
-
`}function
|
|
2903
|
+
`}function Fa(e){if(!e.show)return k;const t=Ie(),n=e.isFirstTime,i=e.changePinMode===!0&&!n,s=e.changePinBusy===!0;let r=e.accounts.length>0?e.accounts[0].id:"";const o=u=>{var b;r=u.target.value;const p=(b=u.target.closest(".login-card"))==null?void 0:b.querySelector(".login-change-pin");p&&(p.style.display=r==="__master__"?"":"none")},a=u=>p=>{const b=p.target;b.value=b.value.replace(/\D/g,"").slice(0,6),u(b.value)},l=!n&&e.accounts.length>1?h`
|
|
2897
2904
|
<select
|
|
2898
2905
|
class="login-account-select"
|
|
2899
2906
|
@change=${o}
|
|
2900
2907
|
?disabled=${e.busy||s}
|
|
2901
2908
|
>
|
|
2902
|
-
${e.accounts.map((
|
|
2903
|
-
<option value=${
|
|
2904
|
-
${
|
|
2909
|
+
${e.accounts.map((u,p)=>h`
|
|
2910
|
+
<option value=${u.id} ?selected=${p===0}>
|
|
2911
|
+
${u.displayName}
|
|
2905
2912
|
</option>
|
|
2906
2913
|
`)}
|
|
2907
2914
|
</select>
|
|
2908
|
-
`:k;if(i){let
|
|
2915
|
+
`:k;if(i){let u="",p="",b="";const w=S=>{var C;S.preventDefault(),!s&&(!u||!p||!b||p===b&&r&&((C=e.onChangePin)==null||C.call(e,r,u,p)))};return h`
|
|
2909
2916
|
<div class="login-overlay">
|
|
2910
2917
|
<div class="login-card">
|
|
2911
2918
|
<img class="login-logo" src="${t.iconUrl}" alt="${t.name}" />
|
|
2912
2919
|
<h2 class="login-title">Change PIN</h2>
|
|
2913
2920
|
<p class="login-subtitle">Enter your current PIN, then choose a new one</p>
|
|
2914
|
-
<form class="login-form" @submit=${
|
|
2921
|
+
<form class="login-form" @submit=${w}>
|
|
2915
2922
|
${l}
|
|
2916
2923
|
<input
|
|
2917
2924
|
class="login-pin-input"
|
|
@@ -2922,7 +2929,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2922
2929
|
maxlength="6"
|
|
2923
2930
|
placeholder="Current PIN"
|
|
2924
2931
|
?disabled=${s}
|
|
2925
|
-
@input=${a(S=>{
|
|
2932
|
+
@input=${a(S=>{u=S})}
|
|
2926
2933
|
autofocus
|
|
2927
2934
|
/>
|
|
2928
2935
|
<input
|
|
@@ -2945,7 +2952,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2945
2952
|
maxlength="6"
|
|
2946
2953
|
placeholder="Confirm new PIN"
|
|
2947
2954
|
?disabled=${s}
|
|
2948
|
-
@input=${a(S=>{
|
|
2955
|
+
@input=${a(S=>{b=S})}
|
|
2949
2956
|
/>
|
|
2950
2957
|
${e.changePinError?h`<p class="login-error">${e.changePinError}</p>`:k}
|
|
2951
2958
|
${e.changePinSuccess?h`<p class="login-success">${e.changePinSuccess}</p>`:k}
|
|
@@ -2959,12 +2966,12 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2959
2966
|
<a
|
|
2960
2967
|
class="login-link"
|
|
2961
2968
|
href="#"
|
|
2962
|
-
@click=${S=>{var
|
|
2969
|
+
@click=${S=>{var C;S.preventDefault(),(C=e.onToggleChangePinMode)==null||C.call(e)}}
|
|
2963
2970
|
>Back to login</a>
|
|
2964
2971
|
</p>
|
|
2965
2972
|
</div>
|
|
2966
2973
|
</div>
|
|
2967
|
-
`}let c="",
|
|
2974
|
+
`}let c="",d="";const f=u=>{if(u.preventDefault(),!e.busy)if(n){if(!c||!d||c!==d)return;e.onSubmit(c)}else{if(!c||!r)return;e.onSubmit(r,c)}};return h`
|
|
2968
2975
|
<div class="login-overlay">
|
|
2969
2976
|
<div class="login-card">
|
|
2970
2977
|
<img class="login-logo" src="${t.iconUrl}" alt="${t.name}" />
|
|
@@ -2983,7 +2990,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2983
2990
|
maxlength="6"
|
|
2984
2991
|
placeholder="${n?"Choose a 4-6 digit PIN":"PIN"}"
|
|
2985
2992
|
?disabled=${e.busy}
|
|
2986
|
-
@input=${a(
|
|
2993
|
+
@input=${a(u=>{c=u})}
|
|
2987
2994
|
autofocus
|
|
2988
2995
|
/>
|
|
2989
2996
|
${n?h`
|
|
@@ -2996,7 +3003,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
2996
3003
|
maxlength="6"
|
|
2997
3004
|
placeholder="Confirm PIN"
|
|
2998
3005
|
?disabled=${e.busy}
|
|
2999
|
-
@input=${a(
|
|
3006
|
+
@input=${a(u=>{d=u})}
|
|
3000
3007
|
/>
|
|
3001
3008
|
`:k}
|
|
3002
3009
|
${e.error?h`<p class="login-error">${e.error}</p>`:k}
|
|
@@ -3008,11 +3015,11 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3008
3015
|
${e.busy?h`<span class="login-spinner"></span>`:n?"Set PIN":"Unlock"}
|
|
3009
3016
|
</button>
|
|
3010
3017
|
</form>
|
|
3011
|
-
${n?h`<p class="login-hint">This PIN protects all accounts on this device. You'll need it every time you open the dashboard.</p>`:e.accounts.some(
|
|
3018
|
+
${n?h`<p class="login-hint">This PIN protects all accounts on this device. You'll need it every time you open the dashboard.</p>`:e.accounts.some(u=>u.id==="__master__")?h`<p class="login-hint login-change-pin" style="margin-top: 16px;${r!=="__master__"?" display: none;":""}">
|
|
3012
3019
|
<a
|
|
3013
3020
|
class="login-link"
|
|
3014
3021
|
href="#"
|
|
3015
|
-
@click=${
|
|
3022
|
+
@click=${u=>{var p;u.preventDefault(),(p=e.onToggleChangePinMode)==null||p.call(e)}}
|
|
3016
3023
|
>Change PIN</a>
|
|
3017
3024
|
</p>`:k}
|
|
3018
3025
|
</div>
|
|
@@ -3024,23 +3031,16 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3024
3031
|
<p>Connecting...</p>
|
|
3025
3032
|
</div>
|
|
3026
3033
|
</div>
|
|
3027
|
-
`;const t={...e,sessions:null,focusMode:!1,showThinking:!1,thinkingLevel:null,publicMode:!0,onToggleFocusMode:()=>{},onSessionKeyChange:()=>{},onNewSession:()=>{}},n=e.assistantName||"Assistant"
|
|
3034
|
+
`;const t={...e,sessions:null,focusMode:!1,showThinking:!1,thinkingLevel:null,publicMode:!0,onToggleFocusMode:()=>{},onSessionKeyChange:()=>{},onNewSession:()=>{}},n=e.assistantName||"Assistant";return h`
|
|
3028
3035
|
<div class="setup-container setup-container--full public-chat-page">
|
|
3029
3036
|
<div class="public-chat-header">
|
|
3030
|
-
${s?h`<img class="public-chat-header__avatar" src=${s} alt=${n} />`:k}
|
|
3031
3037
|
<span class="public-chat-header__name">${n}</span>
|
|
3032
3038
|
</div>
|
|
3033
3039
|
<div class="chat-viewport">
|
|
3034
|
-
${
|
|
3040
|
+
${Jc(t)}
|
|
3035
3041
|
</div>
|
|
3036
3042
|
</div>
|
|
3037
|
-
`}async function Sv(e){if(!(!e.client||!e.connected)&&!e.agentsLoading){e.agentsLoading=!0,e.agentsError=null;try{const t=await e.client.request("agents.list",{});t&&(e.agentsList=t)}catch(t){e.agentsError=String(t)}finally{e.agentsLoading=!1}}}async function vn(e){if(!(!e.client||!e.connected)&&!e.workspacesLoading){e.workspacesLoading=!0,e.workspacesError=null;try{const t=await e.client.request("workspaces.list",{});e.workspaces=t.workspaces}catch(t){e.workspacesError=String(t)}finally{e.workspacesLoading=!1}}}async function Av(e,t){var i,s;if(!e.client||!e.connected||e.workspaceSaving)return;const n=t.name.trim();if(!n){e.workspacesError="Account name is required.";return}e.workspaceSaving=!0,e.workspacesError=null;try{const r=await e.client.request("config.get",{});e.configSnapshot=r;const o=r.hash;if(!o){e.workspacesError="Config hash missing; reload and retry.";return}const a={name:n,baseHash:o,whatsappAccountName:n};(i=t.workspacePath)!=null&&i.trim()&&(a.workspaceDir=t.workspacePath.trim());const l=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await vn(e),(s=t.onCreated)==null||s.call(t,l)}catch(r){e.workspacesError=String(r)}finally{e.workspaceSaving=!1}}async function $v(e,t){if(!(!e.client||!e.connected)&&!e.workspaceSaving){e.workspaceSaving=!0,e.workspacesError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=n.hash;if(!i){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.remove",{name:t,baseHash:i}),e.workspaceRemoveConfirm=null,await vn(e)}catch(n){e.workspacesError=String(n)}finally{e.workspaceSaving=!1}}}async function xv(e,t,n){if(!(!e.client||!e.connected)){e.workspacesError=null;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.hash;if(!s){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.rename",{name:t,displayName:n,baseHash:s}),await vn(e)}catch(i){e.workspacesError=String(i)}}}const jn=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:Av,loadWorkspaces:vn,removeWorkspace:$v,renameWorkspace:xv},Symbol.toStringTag,{value:"Module"})),ru={WEBCHAT_UI:"webchat-ui",CONTROL_UI:"taskmaster-control-ui",SETUP_UI:"setup-ui",WEBCHAT:"webchat",CLI:"cli",GATEWAY_CLIENT:"gateway-client",MACOS_APP:"taskmaster-macos",IOS_APP:"taskmaster-ios",ANDROID_APP:"taskmaster-android",NODE_HOST:"node-host",TEST:"test",FINGERPRINT:"fingerprint",PROBE:"taskmaster-probe",PUBLIC_CHAT:"public-chat"},Wa=ru,Vs={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(ru));new Set(Object.values(Vs));function Ev(e){const t=e.version??(e.nonce?"v2":"v1"),n=e.scopes.join(","),i=e.token??"",s=[t,e.deviceId,e.clientId,e.clientMode,e.role,n,String(e.signedAtMs),i];return t==="v2"&&s.push(e.nonce??""),s.join("|")}const Tv=4008;class Cv{constructor(t){this.opts=t,this.ws=null,this.pending=new Map,this.closed=!1,this.lastSeq=null,this.connectNonce=null,this.connectSent=!1,this.connectTimer=null,this.backoffMs=800}start(){this.closed=!1,this.connect()}stop(){var t;this.closed=!0,(t=this.ws)==null||t.close(),this.ws=null,this.flushPending(new Error("gateway client stopped"))}get connected(){var t;return((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN}connect(){this.closed||(this.ws=new WebSocket(this.opts.url),this.ws.onopen=()=>this.queueConnect(),this.ws.onmessage=t=>this.handleMessage(String(t.data??"")),this.ws.onclose=t=>{var i,s;const n=String(t.reason??"");this.ws=null,this.flushPending(new Error(`gateway closed (${t.code}): ${n}`)),(s=(i=this.opts).onClose)==null||s.call(i,{code:t.code,reason:n}),this.scheduleReconnect()},this.ws.onerror=()=>{})}scheduleReconnect(){if(this.closed)return;const t=this.backoffMs;this.backoffMs=Math.min(this.backoffMs*1.7,15e3),window.setTimeout(()=>this.connect(),t)}flushPending(t){for(const[,n]of this.pending)n.reject(t);this.pending.clear()}async sendConnect(){var f;if(this.connectSent)return;this.connectSent=!0,this.connectTimer!==null&&(window.clearTimeout(this.connectTimer),this.connectTimer=null);const t=this.opts.role??"operator",n=this.opts.scopes??["operator.admin","operator.approvals","operator.pairing"],s=!(t!=="operator")&&typeof crypto<"u"&&!!crypto.subtle;let r=null,o=!1,a=this.opts.token;if(s){r=await Mp();const d=(f=Ip({deviceId:r.deviceId,role:t}))==null?void 0:f.token;a=d??this.opts.token,o=!!(d&&this.opts.token)}const l=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let c;if(s&&r){const d=Date.now(),p=this.connectNonce??void 0,w=Ev({deviceId:r.deviceId,clientId:this.opts.clientName??Wa.CONTROL_UI,clientMode:this.opts.mode??Vs.WEBCHAT,role:t,scopes:n,signedAtMs:d,token:a??null,nonce:p}),b=await Pp(r.privateKey,w);c={id:r.deviceId,publicKey:r.publicKey,signature:b,signedAt:d,nonce:p}}const u={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??Wa.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??Vs.WEBCHAT,instanceId:this.opts.instanceId},role:t,scopes:n,device:c,caps:[],auth:l,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",u).then(d=>{var p,w,b;(p=d==null?void 0:d.auth)!=null&&p.deviceToken&&r&&Rp({deviceId:r.deviceId,role:d.auth.role??t,token:d.auth.deviceToken,scopes:d.auth.scopes??[]}),this.backoffMs=800,(b=(w=this.opts).onHello)==null||b.call(w,d)}).catch(()=>{var d;o&&r&&Np({deviceId:r.deviceId,role:t}),(d=this.ws)==null||d.close(Tv,"connect failed")})}handleMessage(t){var s,r,o,a,l;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const c=n;if(c.event==="connect.challenge"){const f=c.payload,d=f&&typeof f.nonce=="string"?f.nonce:null;d&&(this.connectNonce=d,this.sendConnect());return}const u=typeof c.seq=="number"?c.seq:null;u!==null&&(this.lastSeq!==null&&u>this.lastSeq+1&&((r=(s=this.opts).onGap)==null||r.call(s,{expected:this.lastSeq+1,received:u})),this.lastSeq=u);try{(a=(o=this.opts).onEvent)==null||a.call(o,c)}catch(f){console.error("[gateway] event handler error:",f)}return}if(i.type==="res"){const c=n,u=this.pending.get(c.id);if(!u)return;this.pending.delete(c.id),c.ok?u.resolve(c.payload):u.reject(new Error(((l=c.error)==null?void 0:l.message)??"request failed"));return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const i=tr(),s={type:"req",id:i,method:t,params:n},r=new Promise((o,a)=>{this.pending.set(i,{resolve:l=>o(l),reject:a})});return this.ws.send(JSON.stringify(s)),r}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function Gs(e){return typeof e=="object"&&e!==null}function _v(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!Gs(n))return null;const i=typeof n.command=="string"?n.command.trim():"";if(!i)return null;const s=typeof e.createdAtMs=="number"?e.createdAtMs:0,r=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!s||!r?null:{id:t,request:{command:i,cwd:typeof n.cwd=="string"?n.cwd:null,host:typeof n.host=="string"?n.host:null,security:typeof n.security=="string"?n.security:null,ask:typeof n.ask=="string"?n.ask:null,agentId:typeof n.agentId=="string"?n.agentId:null,resolvedPath:typeof n.resolvedPath=="string"?n.resolvedPath:null,sessionKey:typeof n.sessionKey=="string"?n.sessionKey:null},createdAtMs:s,expiresAtMs:r}}function Mv(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"";return t?{id:t,decision:typeof e.decision=="string"?e.decision:null,resolvedBy:typeof e.resolvedBy=="string"?e.resolvedBy:null,ts:typeof e.ts=="number"?e.ts:null}:null}function ou(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function Pv(e,t){const n=ou(e).filter(i=>i.id!==t.id);return n.push(t),n}function Ka(e,t){return ou(e).filter(n=>n.id!==t)}class Lv{constructor(){this.canvas=null,this.ctx=null,this.img=new Image,this.pendingFrame=null,this.rafId=null,this.deviceWidth=1280,this.deviceHeight=720,this.lastMouseMoveAt=0,this.MOUSE_THROTTLE_MS=30}attach(t){this.canvas=t,this.ctx=t.getContext("2d")}detach(){this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.canvas=null,this.ctx=null,this.pendingFrame=null}updateFrame(t,n){if(n!=null&&n.deviceWidth&&(this.deviceWidth=n.deviceWidth),n!=null&&n.deviceHeight&&(this.deviceHeight=n.deviceHeight),this.pendingFrame=t,!this.canvas){const i=document.getElementById("browser-screencast-canvas");i&&this.attach(i)}this.rafId==null&&(this.rafId=requestAnimationFrame(()=>this.renderFrame()))}renderFrame(){this.rafId=null;const t=this.pendingFrame;!t||!this.canvas||!this.ctx||(this.pendingFrame=null,this.img.onload=()=>{!this.canvas||!this.ctx||((this.canvas.width!==this.img.width||this.canvas.height!==this.img.height)&&(this.canvas.width=this.img.width,this.canvas.height=this.img.height),this.ctx.drawImage(this.img,0,0))},this.img.src=`data:image/jpeg;base64,${t}`)}translateCoordinates(t,n){if(!this.canvas)return{x:t,y:n};const i=this.canvas.getBoundingClientRect(),s=this.canvas.width/i.width,r=this.canvas.height/i.height,o=this.deviceWidth/this.canvas.width,a=this.deviceHeight/this.canvas.height;return{x:Math.round(t*s*o),y:Math.round(n*r*a)}}shouldThrottleMouseMove(){const t=performance.now();return t-this.lastMouseMoveAt<this.MOUSE_THROTTLE_MS?!0:(this.lastMouseMoveAt=t,!1)}getDeviceDimensions(){return{width:this.deviceWidth,height:this.deviceHeight}}}let ys=null;function an(){return ys||(ys=new Lv),ys}function Kr(e){return e instanceof Error?e.message:String(e)}async function Iv(e){if(!e.client){console.error("[browser] startScreencast: no client"),e.browserError="Not connected to gateway";return}if(!e.connected){console.error("[browser] startScreencast: client exists but not connected"),e.browserError="Not connected to gateway";return}console.log("[browser] startScreencast: sending request"),e.browserLoading=!0,e.browserError=null;try{const t=await e.client.request("browser.screencast.start",{quality:60,maxWidth:1280,maxHeight:720});console.log("[browser] startScreencast response:",t),t!=null&&t.ok?e.browserScreencastActive=!0:(console.warn("[browser] startScreencast: response did not have ok=true",t),e.browserError="Screencast start failed (no ok in response)")}catch(t){console.error("[browser] startScreencast error:",t),e.browserError=Kr(t)}finally{e.browserLoading=!1}}async function Rv(e){if(!(!e.client||!e.connected)){e.browserLoading=!0,e.browserFullscreen=!1;try{await e.client.request("browser.screencast.stop",{}),e.browserScreencastActive=!1,e.browserScreencastFrame=null,e.browserScreencastMetadata=null}catch(t){e.browserError=Kr(t)}finally{e.browserLoading=!1}}}async function vs(e,t,n,i,s){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"mouse",action:t,x:n,y:i,button:s??"left",clickCount:t==="mousePressed"?1:0})}catch{}}async function bs(e,t,n,i){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"key",action:t,key:n,...i!=null&&i.text?{text:i.text}:{},...i!=null&&i.code?{code:i.code}:{},...i!=null&&i.modifiers?{modifiers:i.modifiers}:{}})}catch{}}async function Nv(e){if(!(!e.client||!e.connected))try{await e.client.request("browser.handoff.complete",{}),e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}catch(t){e.browserError=Kr(t)}}function Dv(e){e.browserInputMode=!e.browserInputMode}function Ov(e){e.browserFullscreen=!e.browserFullscreen,an().detach()}function Bv(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,an().updateFrame(t.data,t.metadata)}function Fv(e,t){t&&(e.browserHandoffPending=!0,e.browserHandoffReason=t.reason??"Action required",e.browserHandoffId=t.id??null)}function Uv(e){e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}async function Qs(e,t){if(!e.client||!e.connected)return;const n=e.sessionKey.trim(),i=n?{sessionKey:n}:{};try{const s=await e.client.request("agent.identity.get",i);if(!s)return;const r=$s(s);e.assistantName=r.name,e.assistantAvatar=r.avatar,e.assistantAgentId=r.agentId??null}catch{}}async function Ys(e){return(await e.request("apikeys.list")).providers??[]}async function za(e,t,n){await e.request("apikeys.set",{provider:t,apiKey:n})}async function Wv(e,t){await e.request("apikeys.remove",{provider:t})}const gi="taskmaster_update_pending";async function au(e){var t,n;if(!(!e.client||!e.connected)&&!e.updateChecking){e.updateChecking=!0,e.updateMessage=null,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("update.status",{});e.currentVersion=i.current,e.latestVersion=i.latest,e.updateAvailable=i.updateAvailable,e.updateMessage=i.updateAvailable?`v${i.latest} available`:"Up to date"}catch(i){e.updateMessage=`Check failed: ${String(i)}`,e.updateAvailable=null}finally{e.updateChecking=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function Kv(e){var t,n,i,s;if(!(!e.client||e.updateRunning)){e.updateRunning=!0,e.updateMessage="Starting update...",e.updateProgressSteps=[],e.updateLastResult=null,(t=e.requestUpdate)==null||t.call(e);try{localStorage.setItem(gi,String(Date.now())),localStorage.removeItem(zr)}catch{}try{const r=await e.client.request("update.run",{restartDelayMs:2e3,note:"Update from setup page"});if(r.ok&&r.result.status==="ok")e.updateMessage="Updated — restarting gateway...",(n=e.requestUpdate)==null||n.call(e);else if(r.ok&&r.result.status==="skipped")ln(),e.updateMessage=r.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw ln(),new Error(r.result.reason||"Update failed")}catch(r){ln(),e.updateMessage=`Update failed: ${String(r)}`,e.updateRunning=!1,e.updateProgressSteps=[],(s=e.requestUpdate)==null||s.call(e)}}}function zv(e,t){var i,s,r;const n=t.phase;if(n==="step-start"){const o=t.name,a=t.index,l=t.total;e.updateMessage=`Updating: ${o} (${a+1}/${l})`;const c=e.updateProgressSteps.find(u=>u.index===a);c?(c.status="running",c.name=o):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:l,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const o=t.name,a=t.index,l=t.total,c=t.ok,u=t.durationMs,f=e.updateProgressSteps.find(p=>p.index===a);f?(f.status=c?"done":"failed",f.durationMs=u):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:l,status:c?"done":"failed",durationMs:u}];const d=!c&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=c?`Updating: ${o} done (${a+1}/${l})`:`Update step failed: ${o}${d}`,(s=e.requestUpdate)==null||s.call(e)}else if(n==="complete"){if(t.status==="ok")e.updateMessage="Update complete — restarting gateway...";else{const a=t.reason;e.updateMessage=a?`Update failed: ${a}`:"Update failed",e.updateRunning=!1,ln()}(r=e.requestUpdate)==null||r.call(e)}}async function jv(e){var n,i,s,r;if(!e.client||!e.connected)return;const t=qv();ln();try{const o=await e.client.request("update.lastResult",{});if(!o.ok||!o.result)return;const a=5*6e4,l=Date.now()-o.result.ts<a;if(!t&&!l||Vv(o.result.ts))return;e.updateLastResult=o.result;const c=(n=o.result.after)==null?void 0:n.version;if(o.result.status==="ok"&&c&&(e.currentVersion=c),e.updateAvailable=!1,o.result.status==="ok"){const u=(i=o.result.before)==null?void 0:i.version,f=c??o.result.currentVersion;e.updateMessage=u?`Updated: v${u} → v${f}`:`Updated to v${f}`}else{const u=o.result.reason??((s=o.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${u}`}}catch{}finally{e.updateRunning=!1,e.updateProgressSteps=[],(r=e.requestUpdate)==null||r.call(e)}}const zr="taskmaster_update_dismissed";function Hv(e){var t;e.updateLastResult=null,e.updateMessage=null;try{localStorage.setItem(zr,String(Date.now()))}catch{}(t=e.requestUpdate)==null||t.call(e)}function qv(){try{const e=localStorage.getItem(gi);return e?Date.now()-Number(e)>30*6e4?(localStorage.removeItem(gi),!1):!0:!1}catch{return!1}}function ln(){try{localStorage.removeItem(gi)}catch{}}function Vv(e){try{const t=localStorage.getItem(zr);return t?Number(t)>=e:!1}catch{return!1}}function ws(e,t){var a,l,c;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((l=t.mainKey)==null?void 0:l.trim())||"main",r=(c=t.defaultAgentId)==null?void 0:c.trim();return n==="main"||n===s||r&&(n===`agent:${r}:main`||n===`agent:${r}:${s}`)?i:n}function Gv(e,t){if(!(t!=null&&t.mainSessionKey))return;const n=ws(e.sessionKey,t),i=ws(e.settings.sessionKey,t),s=ws(e.settings.lastActiveSessionKey,t),r=n||i||e.sessionKey,o={...e.settings,sessionKey:i||r,lastActiveSessionKey:s||r},a=o.sessionKey!==e.settings.sessionKey||o.lastActiveSessionKey!==e.settings.lastActiveSessionKey;r!==e.sessionKey&&(e.sessionKey=r),a&&We(e,o)}function $e(e){var s;e.lastError=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null;const t=!!e.publicChat,n=e.setup||e.filesPage||e.browserPage||e.chatPage||e.adminsPage||e.customersPage||e.advancedPage,i=t?"public-chat":n?"setup-ui":"taskmaster-control-ui";(s=e.client)==null||s.stop(),e.client=new Cv({url:e.settings.gatewayUrl,token:t?void 0:e.settings.token.trim()?e.settings.token:void 0,password:t?void 0:e.password.trim()?e.password:void 0,clientName:i,mode:"webchat",role:t?"public":void 0,scopes:t?[]:void 0,onHello:r=>{var o;if(e.connected=!0,e.lastError=null,e.hello=r,t){ja(e,r),Qs(e),(((o=e.publicChatConfig)==null?void 0:o.auth)??"anonymous")==="anonymous"&&Jv(e);return}oi()&&($r(),e.uninstallDone=!1),ja(e,r),e.handleAccessCheck(),jv(e).then(()=>{au(e)}),Qs(e),Sv(e),(e.chatPage||e.setup)&&Xv(e),pr(e,{quiet:!0}),dr(e,{quiet:!0}),vn(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),e.setup&&(Te(e),Zv(e)),si(e)},onClose:({code:r,reason:o})=>{e.connected=!1,r!==1012&&(e.lastError=`disconnected (${r}): ${o||"no reason"}`)},onEvent:r=>Qv(e,r),onGap:({expected:r,received:o})=>{console.warn(`[gateway] event gap: expected seq ${r}, got ${o}`),si(e)}}),e.client.start()}function Qv(e,t){try{Yv(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function Yv(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),e.tab==="debug"&&(e.eventLog=e.eventLogBuffer),t.event==="agent"){if(e.onboarding)return;Od(e,t.payload);return}if(t.event==="chat"){const n=t.payload;n!=null&&n.sessionKey&&ic(e,n.sessionKey);const i=bl(e,n);(i==="final"||i==="error"||i==="aborted")&&(ir(e),$h(e)),i==="final"&&Ee(e);return}if(t.event==="suggestions"){const n=t.payload;(n==null?void 0:n.sessionKey)===e.sessionKey&&Array.isArray(n.suggestions)&&n.suggestions.length>0&&(e.chatSuggestion=n.suggestions[0]);return}if(t.event==="presence"){const n=t.payload;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&kr(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&dr(e,{quiet:!0}),t.event==="exec.approval.requested"){const n=_v(t.payload);if(n){e.execApprovalQueue=Pv(e.execApprovalQueue,n),e.execApprovalError=null;const i=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=Ka(e.execApprovalQueue,n.id)},i)}return}if(t.event==="browser.screencast.frame"){Bv(e,t.payload);return}if(t.event==="browser.handoff"){Fv(e,t.payload),e.browserPage||(window.location.href="/browser");return}if(t.event==="browser.handoff.resolved"){Uv(e);return}if(t.event==="exec.approval.resolved"){const n=Mv(t.payload);n&&(e.execApprovalQueue=Ka(e.execApprovalQueue,n.id));return}if(t.event==="update.progress"){zv(e,t.payload);return}}function ja(e,t){const n=t.snapshot;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n!=null&&n.health&&(e.debugHealth=n.health),n!=null&&n.sessionDefaults&&Gv(e,n.sessionDefaults)}async function Xv(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("models.list",{});Array.isArray(t==null?void 0:t.models)&&(e.chatModelCatalog=t.models)}catch{}}async function Zv(e){if(!(!e.client||!e.connected))try{e.apiKeyProviders=await Ys(e.client)}catch{}}const Ha="taskmaster_public_id";function lu(e=30){var s;const t=document.cookie.split(";").map(r=>r.trim()).find(r=>r.startsWith(`${Ha}=`));if(t)return t.split("=")[1];const n=`anon-${((s=crypto.randomUUID)==null?void 0:s.call(crypto))??Math.random().toString(36).slice(2)}`,i=new Date(Date.now()+e*864e5).toUTCString();return document.cookie=`${Ha}=${n}; path=/; expires=${i}; SameSite=Lax`,n}async function Jv(e){var n;if(!e.client||!e.connected)return;const t=lu((n=e.publicChatConfig)==null?void 0:n.cookieTtlDays);try{const i=await e.client.request("public.session",{cookieId:t});i!=null&&i.sessionKey&&(e.publicChatSessionKey=i.sessionKey,e.sessionKey=i.sessionKey,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",Ee(e))}catch(i){console.error("[public-chat] failed to resolve anonymous session:",i),e.lastError="Failed to start chat session"}}let ve=!1,le=null,Mt="",mi="";function cu(){ve=!1,le=null,Mt="",mi=""}async function eb(e){if(!e.client||!e.connected)return;const t=lu(e.cookieTtlDays);try{const n=await e.client.request("public.session",{cookieId:t});n!=null&&n.sessionKey&&e.onAuthenticated(n.sessionKey)}catch(n){le=n instanceof Error?n.message:"Failed to start session"}}async function qa(e){if(!e.client||ve)return;const t=Mt.trim();if(!t){le="Please enter your phone number";return}ve=!0,le=null;try{const n=await e.client.request("public.otp.request",{phone:t,name:mi.trim()||void 0});n!=null&&n.ok?e.onAuthStepChange("otp"):le=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){le=n instanceof Error?n.message:"Failed to send verification code"}finally{ve=!1}}async function Va(e,t){if(!(!e.client||ve)){if(!t.trim()){le="Please enter the verification code";return}ve=!0,le=null;try{const n=await e.client.request("public.otp.verify",{phone:Mt.trim(),code:t.trim()});n!=null&&n.ok&&n.sessionKey?(cu(),e.onAuthenticated(n.sessionKey)):le=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){le=n instanceof Error?n.message:"Verification failed"}finally{ve=!1}}}function ks(e){return e.assistantAvatar?h`
|
|
3038
|
-
<img
|
|
3039
|
-
class="public-auth__avatar"
|
|
3040
|
-
src=${e.assistantAvatar}
|
|
3041
|
-
alt=${e.assistantName}
|
|
3042
|
-
/>
|
|
3043
|
-
`:k}function Ga(e){return h`
|
|
3043
|
+
`}async function Sv(e){if(!(!e.client||!e.connected)&&!e.agentsLoading){e.agentsLoading=!0,e.agentsError=null;try{const t=await e.client.request("agents.list",{});t&&(e.agentsList=t)}catch(t){e.agentsError=String(t)}finally{e.agentsLoading=!1}}}async function vn(e){if(!(!e.client||!e.connected)&&!e.workspacesLoading){e.workspacesLoading=!0,e.workspacesError=null;try{const t=await e.client.request("workspaces.list",{});e.workspaces=t.workspaces}catch(t){e.workspacesError=String(t)}finally{e.workspacesLoading=!1}}}async function Av(e,t){var i,s;if(!e.client||!e.connected||e.workspaceSaving)return;const n=t.name.trim();if(!n){e.workspacesError="Account name is required.";return}e.workspaceSaving=!0,e.workspacesError=null;try{const r=await e.client.request("config.get",{});e.configSnapshot=r;const o=r.hash;if(!o){e.workspacesError="Config hash missing; reload and retry.";return}const a={name:n,baseHash:o,whatsappAccountName:n};(i=t.workspacePath)!=null&&i.trim()&&(a.workspaceDir=t.workspacePath.trim());const l=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await vn(e),(s=t.onCreated)==null||s.call(t,l)}catch(r){e.workspacesError=String(r)}finally{e.workspaceSaving=!1}}async function xv(e,t){if(!(!e.client||!e.connected)&&!e.workspaceSaving){e.workspaceSaving=!0,e.workspacesError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=n.hash;if(!i){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.remove",{name:t,baseHash:i}),e.workspaceRemoveConfirm=null,await vn(e)}catch(n){e.workspacesError=String(n)}finally{e.workspaceSaving=!1}}}async function $v(e,t,n){if(!(!e.client||!e.connected)){e.workspacesError=null;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.hash;if(!s){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.rename",{name:t,displayName:n,baseHash:s}),await vn(e)}catch(i){e.workspacesError=String(i)}}}const jn=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:Av,loadWorkspaces:vn,removeWorkspace:xv,renameWorkspace:$v},Symbol.toStringTag,{value:"Module"})),su={WEBCHAT_UI:"webchat-ui",CONTROL_UI:"taskmaster-control-ui",SETUP_UI:"setup-ui",WEBCHAT:"webchat",CLI:"cli",GATEWAY_CLIENT:"gateway-client",MACOS_APP:"taskmaster-macos",IOS_APP:"taskmaster-ios",ANDROID_APP:"taskmaster-android",NODE_HOST:"node-host",TEST:"test",FINGERPRINT:"fingerprint",PROBE:"taskmaster-probe",PUBLIC_CHAT:"public-chat"},Ua=su,Vs={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(su));new Set(Object.values(Vs));function Ev(e){const t=e.version??(e.nonce?"v2":"v1"),n=e.scopes.join(","),i=e.token??"",s=[t,e.deviceId,e.clientId,e.clientMode,e.role,n,String(e.signedAtMs),i];return t==="v2"&&s.push(e.nonce??""),s.join("|")}const Cv=4008;class Tv{constructor(t){this.opts=t,this.ws=null,this.pending=new Map,this.closed=!1,this.lastSeq=null,this.connectNonce=null,this.connectSent=!1,this.connectTimer=null,this.backoffMs=800}start(){this.closed=!1,this.connect()}stop(){var t;this.closed=!0,(t=this.ws)==null||t.close(),this.ws=null,this.flushPending(new Error("gateway client stopped"))}get connected(){var t;return((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN}connect(){this.closed||(this.ws=new WebSocket(this.opts.url),this.ws.onopen=()=>this.queueConnect(),this.ws.onmessage=t=>this.handleMessage(String(t.data??"")),this.ws.onclose=t=>{var i,s;const n=String(t.reason??"");this.ws=null,this.flushPending(new Error(`gateway closed (${t.code}): ${n}`)),(s=(i=this.opts).onClose)==null||s.call(i,{code:t.code,reason:n}),this.scheduleReconnect()},this.ws.onerror=()=>{})}scheduleReconnect(){if(this.closed)return;const t=this.backoffMs;this.backoffMs=Math.min(this.backoffMs*1.7,15e3),window.setTimeout(()=>this.connect(),t)}flushPending(t){for(const[,n]of this.pending)n.reject(t);this.pending.clear()}async sendConnect(){var f;if(this.connectSent)return;this.connectSent=!0,this.connectTimer!==null&&(window.clearTimeout(this.connectTimer),this.connectTimer=null);const t=this.opts.role??"operator",n=this.opts.scopes??["operator.admin","operator.approvals","operator.pairing"],s=!(t!=="operator")&&typeof crypto<"u"&&!!crypto.subtle;let r=null,o=!1,a=this.opts.token;if(s){r=await _p();const u=(f=Lp({deviceId:r.deviceId,role:t}))==null?void 0:f.token;a=u??this.opts.token,o=!!(u&&this.opts.token)}const l=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let c;if(s&&r){const u=Date.now(),p=this.connectNonce??void 0,b=Ev({deviceId:r.deviceId,clientId:this.opts.clientName??Ua.CONTROL_UI,clientMode:this.opts.mode??Vs.WEBCHAT,role:t,scopes:n,signedAtMs:u,token:a??null,nonce:p}),w=await Mp(r.privateKey,b);c={id:r.deviceId,publicKey:r.publicKey,signature:w,signedAt:u,nonce:p}}const d={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??Ua.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??Vs.WEBCHAT,instanceId:this.opts.instanceId},role:t,scopes:n,device:c,caps:[],auth:l,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",d).then(u=>{var p,b,w;(p=u==null?void 0:u.auth)!=null&&p.deviceToken&&r&&Ip({deviceId:r.deviceId,role:u.auth.role??t,token:u.auth.deviceToken,scopes:u.auth.scopes??[]}),this.backoffMs=800,(w=(b=this.opts).onHello)==null||w.call(b,u)}).catch(()=>{var u;o&&r&&Rp({deviceId:r.deviceId,role:t}),(u=this.ws)==null||u.close(Cv,"connect failed")})}handleMessage(t){var s,r,o,a,l;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const c=n;if(c.event==="connect.challenge"){const f=c.payload,u=f&&typeof f.nonce=="string"?f.nonce:null;u&&(this.connectNonce=u,this.sendConnect());return}const d=typeof c.seq=="number"?c.seq:null;d!==null&&(this.lastSeq!==null&&d>this.lastSeq+1&&((r=(s=this.opts).onGap)==null||r.call(s,{expected:this.lastSeq+1,received:d})),this.lastSeq=d);try{(a=(o=this.opts).onEvent)==null||a.call(o,c)}catch(f){console.error("[gateway] event handler error:",f)}return}if(i.type==="res"){const c=n,d=this.pending.get(c.id);if(!d)return;this.pending.delete(c.id),c.ok?d.resolve(c.payload):d.reject(new Error(((l=c.error)==null?void 0:l.message)??"request failed"));return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const i=tr(),s={type:"req",id:i,method:t,params:n},r=new Promise((o,a)=>{this.pending.set(i,{resolve:l=>o(l),reject:a})});return this.ws.send(JSON.stringify(s)),r}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function Gs(e){return typeof e=="object"&&e!==null}function _v(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!Gs(n))return null;const i=typeof n.command=="string"?n.command.trim():"";if(!i)return null;const s=typeof e.createdAtMs=="number"?e.createdAtMs:0,r=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!s||!r?null:{id:t,request:{command:i,cwd:typeof n.cwd=="string"?n.cwd:null,host:typeof n.host=="string"?n.host:null,security:typeof n.security=="string"?n.security:null,ask:typeof n.ask=="string"?n.ask:null,agentId:typeof n.agentId=="string"?n.agentId:null,resolvedPath:typeof n.resolvedPath=="string"?n.resolvedPath:null,sessionKey:typeof n.sessionKey=="string"?n.sessionKey:null},createdAtMs:s,expiresAtMs:r}}function Mv(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"";return t?{id:t,decision:typeof e.decision=="string"?e.decision:null,resolvedBy:typeof e.resolvedBy=="string"?e.resolvedBy:null,ts:typeof e.ts=="number"?e.ts:null}:null}function ru(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function Pv(e,t){const n=ru(e).filter(i=>i.id!==t.id);return n.push(t),n}function Wa(e,t){return ru(e).filter(n=>n.id!==t)}class Lv{constructor(){this.canvas=null,this.ctx=null,this.img=new Image,this.pendingFrame=null,this.rafId=null,this.deviceWidth=1280,this.deviceHeight=720,this.lastMouseMoveAt=0,this.MOUSE_THROTTLE_MS=30}attach(t){this.canvas=t,this.ctx=t.getContext("2d")}detach(){this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.canvas=null,this.ctx=null,this.pendingFrame=null}updateFrame(t,n){if(n!=null&&n.deviceWidth&&(this.deviceWidth=n.deviceWidth),n!=null&&n.deviceHeight&&(this.deviceHeight=n.deviceHeight),this.pendingFrame=t,!this.canvas){const i=document.getElementById("browser-screencast-canvas");i&&this.attach(i)}this.rafId==null&&(this.rafId=requestAnimationFrame(()=>this.renderFrame()))}renderFrame(){this.rafId=null;const t=this.pendingFrame;!t||!this.canvas||!this.ctx||(this.pendingFrame=null,this.img.onload=()=>{!this.canvas||!this.ctx||((this.canvas.width!==this.img.width||this.canvas.height!==this.img.height)&&(this.canvas.width=this.img.width,this.canvas.height=this.img.height),this.ctx.drawImage(this.img,0,0))},this.img.src=`data:image/jpeg;base64,${t}`)}translateCoordinates(t,n){if(!this.canvas)return{x:t,y:n};const i=this.canvas.getBoundingClientRect(),s=this.canvas.width/i.width,r=this.canvas.height/i.height,o=this.deviceWidth/this.canvas.width,a=this.deviceHeight/this.canvas.height;return{x:Math.round(t*s*o),y:Math.round(n*r*a)}}shouldThrottleMouseMove(){const t=performance.now();return t-this.lastMouseMoveAt<this.MOUSE_THROTTLE_MS?!0:(this.lastMouseMoveAt=t,!1)}getDeviceDimensions(){return{width:this.deviceWidth,height:this.deviceHeight}}}let ys=null;function an(){return ys||(ys=new Lv),ys}function Wr(e){return e instanceof Error?e.message:String(e)}async function Iv(e){if(!e.client){console.error("[browser] startScreencast: no client"),e.browserError="Not connected to gateway";return}if(!e.connected){console.error("[browser] startScreencast: client exists but not connected"),e.browserError="Not connected to gateway";return}console.log("[browser] startScreencast: sending request"),e.browserLoading=!0,e.browserError=null;try{const t=await e.client.request("browser.screencast.start",{quality:60,maxWidth:1280,maxHeight:720});console.log("[browser] startScreencast response:",t),t!=null&&t.ok?e.browserScreencastActive=!0:(console.warn("[browser] startScreencast: response did not have ok=true",t),e.browserError="Screencast start failed (no ok in response)")}catch(t){console.error("[browser] startScreencast error:",t),e.browserError=Wr(t)}finally{e.browserLoading=!1}}async function Rv(e){if(!(!e.client||!e.connected)){e.browserLoading=!0,e.browserFullscreen=!1;try{await e.client.request("browser.screencast.stop",{}),e.browserScreencastActive=!1,e.browserScreencastFrame=null,e.browserScreencastMetadata=null}catch(t){e.browserError=Wr(t)}finally{e.browserLoading=!1}}}async function vs(e,t,n,i,s){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"mouse",action:t,x:n,y:i,button:s??"left",clickCount:t==="mousePressed"?1:0})}catch{}}async function bs(e,t,n,i){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"key",action:t,key:n,...i!=null&&i.text?{text:i.text}:{},...i!=null&&i.code?{code:i.code}:{},...i!=null&&i.modifiers?{modifiers:i.modifiers}:{}})}catch{}}async function Nv(e){if(!(!e.client||!e.connected))try{await e.client.request("browser.handoff.complete",{}),e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}catch(t){e.browserError=Wr(t)}}function Dv(e){e.browserInputMode=!e.browserInputMode}function Ov(e){e.browserFullscreen=!e.browserFullscreen,an().detach()}function Bv(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,an().updateFrame(t.data,t.metadata)}function Fv(e,t){t&&(e.browserHandoffPending=!0,e.browserHandoffReason=t.reason??"Action required",e.browserHandoffId=t.id??null)}function Uv(e){e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}async function Qs(e,t){if(!e.client||!e.connected)return;const n=e.sessionKey.trim(),i=n?{sessionKey:n}:{};try{const s=await e.client.request("agent.identity.get",i);if(!s)return;const r=xs(s);e.assistantName=r.name,e.assistantAvatar=r.avatar,e.assistantAgentId=r.agentId??null}catch{}}async function Ys(e){return(await e.request("apikeys.list")).providers??[]}async function Ka(e,t,n){await e.request("apikeys.set",{provider:t,apiKey:n})}async function Wv(e,t){await e.request("apikeys.remove",{provider:t})}const gi="taskmaster_update_pending";async function ou(e){var t,n;if(!(!e.client||!e.connected)&&!e.updateChecking){e.updateChecking=!0,e.updateMessage=null,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("update.status",{});e.currentVersion=i.current,e.latestVersion=i.latest,e.updateAvailable=i.updateAvailable,e.updateMessage=i.updateAvailable?`v${i.latest} available`:"Up to date"}catch(i){e.updateMessage=`Check failed: ${String(i)}`,e.updateAvailable=null}finally{e.updateChecking=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function Kv(e){var t,n,i,s;if(!(!e.client||e.updateRunning)){e.updateRunning=!0,e.updateMessage="Starting update...",e.updateProgressSteps=[],e.updateLastResult=null,(t=e.requestUpdate)==null||t.call(e);try{localStorage.setItem(gi,String(Date.now())),localStorage.removeItem(Kr)}catch{}try{const r=await e.client.request("update.run",{restartDelayMs:2e3,note:"Update from setup page"});if(r.ok&&r.result.status==="ok")e.updateMessage="Updated — restarting gateway...",(n=e.requestUpdate)==null||n.call(e);else if(r.ok&&r.result.status==="skipped")ln(),e.updateMessage=r.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw ln(),new Error(r.result.reason||"Update failed")}catch(r){ln(),e.updateMessage=`Update failed: ${String(r)}`,e.updateRunning=!1,e.updateProgressSteps=[],(s=e.requestUpdate)==null||s.call(e)}}}function zv(e,t){var i,s,r;const n=t.phase;if(n==="step-start"){const o=t.name,a=t.index,l=t.total;e.updateMessage=`Updating: ${o} (${a+1}/${l})`;const c=e.updateProgressSteps.find(d=>d.index===a);c?(c.status="running",c.name=o):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:l,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const o=t.name,a=t.index,l=t.total,c=t.ok,d=t.durationMs,f=e.updateProgressSteps.find(p=>p.index===a);f?(f.status=c?"done":"failed",f.durationMs=d):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:l,status:c?"done":"failed",durationMs:d}];const u=!c&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=c?`Updating: ${o} done (${a+1}/${l})`:`Update step failed: ${o}${u}`,(s=e.requestUpdate)==null||s.call(e)}else if(n==="complete"){if(t.status==="ok")e.updateMessage="Update complete — restarting gateway...";else{const a=t.reason;e.updateMessage=a?`Update failed: ${a}`:"Update failed",e.updateRunning=!1,ln()}(r=e.requestUpdate)==null||r.call(e)}}async function jv(e){var n,i,s,r;if(!e.client||!e.connected)return;const t=qv();ln();try{const o=await e.client.request("update.lastResult",{});if(!o.ok||!o.result)return;const a=5*6e4,l=Date.now()-o.result.ts<a;if(!t&&!l||Vv(o.result.ts))return;e.updateLastResult=o.result;const c=(n=o.result.after)==null?void 0:n.version;if(o.result.status==="ok"&&c&&(e.currentVersion=c),e.updateAvailable=!1,o.result.status==="ok"){const d=(i=o.result.before)==null?void 0:i.version,f=c??o.result.currentVersion;e.updateMessage=d?`Updated: v${d} → v${f}`:`Updated to v${f}`}else{const d=o.result.reason??((s=o.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${d}`}}catch{}finally{e.updateRunning=!1,e.updateProgressSteps=[],(r=e.requestUpdate)==null||r.call(e)}}const Kr="taskmaster_update_dismissed";function Hv(e){var t;e.updateLastResult=null,e.updateMessage=null;try{localStorage.setItem(Kr,String(Date.now()))}catch{}(t=e.requestUpdate)==null||t.call(e)}function qv(){try{const e=localStorage.getItem(gi);return e?Date.now()-Number(e)>30*6e4?(localStorage.removeItem(gi),!1):!0:!1}catch{return!1}}function ln(){try{localStorage.removeItem(gi)}catch{}}function Vv(e){try{const t=localStorage.getItem(Kr);return t?Number(t)>=e:!1}catch{return!1}}function ws(e,t){var a,l,c;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((l=t.mainKey)==null?void 0:l.trim())||"main",r=(c=t.defaultAgentId)==null?void 0:c.trim();return n==="main"||n===s||r&&(n===`agent:${r}:main`||n===`agent:${r}:${s}`)?i:n}function Gv(e,t){if(!(t!=null&&t.mainSessionKey))return;const n=ws(e.sessionKey,t),i=ws(e.settings.sessionKey,t),s=ws(e.settings.lastActiveSessionKey,t),r=n||i||e.sessionKey,o={...e.settings,sessionKey:i||r,lastActiveSessionKey:s||r},a=o.sessionKey!==e.settings.sessionKey||o.lastActiveSessionKey!==e.settings.lastActiveSessionKey;r!==e.sessionKey&&(e.sessionKey=r),a&&We(e,o)}function xe(e){var s;e.lastError=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null;const t=!!e.publicChat,n=e.setup||e.filesPage||e.browserPage||e.chatPage||e.adminsPage||e.customersPage||e.advancedPage,i=t?"public-chat":n?"setup-ui":"taskmaster-control-ui";(s=e.client)==null||s.stop(),e.client=new Tv({url:e.settings.gatewayUrl,token:t?void 0:e.settings.token.trim()?e.settings.token:void 0,password:t?void 0:e.password.trim()?e.password:void 0,clientName:i,mode:"webchat",role:t?"public":void 0,scopes:t?[]:void 0,onHello:r=>{var o;if(e.connected=!0,e.lastError=null,e.hello=r,t){za(e,r),Qs(e),(((o=e.publicChatConfig)==null?void 0:o.auth)??"anonymous")==="anonymous"&&Jv(e);return}oi()&&(Ar(),e.uninstallDone=!1),za(e,r),e.handleAccessCheck(),jv(e).then(()=>{ou(e)}),Qs(e),Sv(e),(e.chatPage||e.setup)&&Xv(e),pr(e,{quiet:!0}),dr(e,{quiet:!0}),vn(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),(e.setup||e.chatPage)&&Ce(e),e.setup&&Zv(e),si(e)},onClose:({code:r,reason:o})=>{e.connected=!1,r!==1012&&(e.lastError=`disconnected (${r}): ${o||"no reason"}`)},onEvent:r=>Qv(e,r),onGap:({expected:r,received:o})=>{console.warn(`[gateway] event gap: expected seq ${r}, got ${o}`),si(e)}}),e.client.start()}function Qv(e,t){try{Yv(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function Yv(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),e.tab==="debug"&&(e.eventLog=e.eventLogBuffer),t.event==="agent"){if(e.onboarding)return;Dd(e,t.payload);return}if(t.event==="chat"){const n=t.payload;n!=null&&n.sessionKey&&nc(e,n.sessionKey);const i=vl(e,n);(i==="final"||i==="error"||i==="aborted")&&(ir(e),Ah(e)),i==="final"&&Ee(e);return}if(t.event==="suggestions"){const n=t.payload;(n==null?void 0:n.sessionKey)===e.sessionKey&&Array.isArray(n.suggestions)&&n.suggestions.length>0&&(e.chatSuggestion=n.suggestions[0]);return}if(t.event==="presence"){const n=t.payload;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&kr(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&dr(e,{quiet:!0}),t.event==="exec.approval.requested"){const n=_v(t.payload);if(n){e.execApprovalQueue=Pv(e.execApprovalQueue,n),e.execApprovalError=null;const i=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=Wa(e.execApprovalQueue,n.id)},i)}return}if(t.event==="browser.screencast.frame"){Bv(e,t.payload);return}if(t.event==="browser.handoff"){Fv(e,t.payload),e.browserPage||(window.location.href="/browser");return}if(t.event==="browser.handoff.resolved"){Uv(e);return}if(t.event==="exec.approval.resolved"){const n=Mv(t.payload);n&&(e.execApprovalQueue=Wa(e.execApprovalQueue,n.id));return}if(t.event==="update.progress"){zv(e,t.payload);return}}function za(e,t){const n=t.snapshot;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n!=null&&n.health&&(e.debugHealth=n.health),n!=null&&n.sessionDefaults&&Gv(e,n.sessionDefaults)}async function Xv(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("models.list",{});Array.isArray(t==null?void 0:t.models)&&(e.chatModelCatalog=t.models)}catch{}}async function Zv(e){if(!(!e.client||!e.connected))try{e.apiKeyProviders=await Ys(e.client)}catch{}}const ja="taskmaster_public_id";function au(e=30){var s;const t=document.cookie.split(";").map(r=>r.trim()).find(r=>r.startsWith(`${ja}=`));if(t)return t.split("=")[1];const n=`anon-${((s=crypto.randomUUID)==null?void 0:s.call(crypto))??Math.random().toString(36).slice(2)}`,i=new Date(Date.now()+e*864e5).toUTCString();return document.cookie=`${ja}=${n}; path=/; expires=${i}; SameSite=Lax`,n}async function Jv(e){var n,i;if(!e.client||!e.connected)return;const t=au((n=e.publicChatConfig)==null?void 0:n.cookieTtlDays);try{const s=(i=e.publicChatConfig)==null?void 0:i.accountId,r=await e.client.request("public.session",{cookieId:t,accountId:s});r!=null&&r.sessionKey&&(e.publicChatSessionKey=r.sessionKey,e.sessionKey=r.sessionKey,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",Ee(e))}catch(s){console.error("[public-chat] failed to resolve anonymous session:",s),e.lastError="Failed to start chat session"}}let ve=!1,le=null,Mt="",mi="";function lu(){ve=!1,le=null,Mt="",mi=""}async function eb(e){if(!e.client||!e.connected)return;const t=au(e.cookieTtlDays);try{const n=await e.client.request("public.session",{cookieId:t,accountId:e.accountId});n!=null&&n.sessionKey&&e.onAuthenticated(n.sessionKey)}catch(n){le=n instanceof Error?n.message:"Failed to start session"}}async function Ha(e){if(!e.client||ve)return;const t=Mt.trim();if(!t){le="Please enter your phone number";return}ve=!0,le=null;try{const n=await e.client.request("public.otp.request",{phone:t,name:mi.trim()||void 0});n!=null&&n.ok?e.onAuthStepChange("otp"):le=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){le=n instanceof Error?n.message:"Failed to send verification code"}finally{ve=!1}}async function qa(e,t){if(!(!e.client||ve)){if(!t.trim()){le="Please enter the verification code";return}ve=!0,le=null;try{const n=await e.client.request("public.otp.verify",{phone:Mt.trim(),code:t.trim(),accountId:e.accountId});n!=null&&n.ok&&n.sessionKey?(lu(),e.onAuthenticated(n.sessionKey)):le=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){le=n instanceof Error?n.message:"Verification failed"}finally{ve=!1}}}function ks(e){return k}function Va(e){return h`
|
|
3044
3044
|
<div class="public-auth__form">
|
|
3045
3045
|
<label class="field public-auth__field">
|
|
3046
3046
|
<span>Your name (optional)</span>
|
|
@@ -3057,7 +3057,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3057
3057
|
type="tel"
|
|
3058
3058
|
.value=${Mt}
|
|
3059
3059
|
@input=${t=>{Mt=t.target.value}}
|
|
3060
|
-
@keydown=${t=>{t.key==="Enter"&&(t.preventDefault(),
|
|
3060
|
+
@keydown=${t=>{t.key==="Enter"&&(t.preventDefault(),Ha(e))}}
|
|
3061
3061
|
placeholder="+1234567890"
|
|
3062
3062
|
required
|
|
3063
3063
|
/>
|
|
@@ -3066,12 +3066,12 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3066
3066
|
<button
|
|
3067
3067
|
class="btn primary public-auth__btn"
|
|
3068
3068
|
?disabled=${ve}
|
|
3069
|
-
@click=${()=>{
|
|
3069
|
+
@click=${()=>{Ha(e)}}
|
|
3070
3070
|
>
|
|
3071
3071
|
${ve?"Sending...":"Send verification code"}
|
|
3072
3072
|
</button>
|
|
3073
3073
|
</div>
|
|
3074
|
-
`}function
|
|
3074
|
+
`}function Ga(e){let t="";return h`
|
|
3075
3075
|
<div class="public-auth__form">
|
|
3076
3076
|
<p class="public-auth__hint">
|
|
3077
3077
|
We sent a verification code to <strong>${Mt}</strong> via WhatsApp.
|
|
@@ -3083,7 +3083,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3083
3083
|
inputmode="numeric"
|
|
3084
3084
|
maxlength="6"
|
|
3085
3085
|
@input=${n=>{t=n.target.value}}
|
|
3086
|
-
@keydown=${n=>{n.key==="Enter"&&(n.preventDefault(),
|
|
3086
|
+
@keydown=${n=>{n.key==="Enter"&&(n.preventDefault(),qa(e,t))}}
|
|
3087
3087
|
placeholder="123456"
|
|
3088
3088
|
required
|
|
3089
3089
|
/>
|
|
@@ -3092,7 +3092,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3092
3092
|
<button
|
|
3093
3093
|
class="btn primary public-auth__btn"
|
|
3094
3094
|
?disabled=${ve}
|
|
3095
|
-
@click=${()=>{
|
|
3095
|
+
@click=${()=>{qa(e,t)}}
|
|
3096
3096
|
>
|
|
3097
3097
|
${ve?"Verifying...":"Verify"}
|
|
3098
3098
|
</button>
|
|
@@ -3113,25 +3113,25 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3113
3113
|
`:t==="verified"?h`
|
|
3114
3114
|
<div class="setup-container">
|
|
3115
3115
|
<div class="public-auth">
|
|
3116
|
-
${ks(
|
|
3116
|
+
${ks()}
|
|
3117
3117
|
<h2 class="public-auth__title">Chat with ${e.assistantName}</h2>
|
|
3118
3118
|
<p class="public-auth__subtitle">Verify your WhatsApp number to get started.</p>
|
|
3119
|
-
${n==="otp"?
|
|
3119
|
+
${n==="otp"?Ga(e):Va(e)}
|
|
3120
3120
|
</div>
|
|
3121
3121
|
</div>
|
|
3122
3122
|
`:n==="phone"||n==="otp"?h`
|
|
3123
3123
|
<div class="setup-container">
|
|
3124
3124
|
<div class="public-auth">
|
|
3125
|
-
${ks(
|
|
3125
|
+
${ks()}
|
|
3126
3126
|
<h2 class="public-auth__title">Chat with ${e.assistantName}</h2>
|
|
3127
3127
|
<p class="public-auth__subtitle">Verify your WhatsApp number to continue your conversation across devices.</p>
|
|
3128
|
-
${n==="otp"?
|
|
3128
|
+
${n==="otp"?Ga(e):Va(e)}
|
|
3129
3129
|
</div>
|
|
3130
3130
|
</div>
|
|
3131
3131
|
`:h`
|
|
3132
3132
|
<div class="setup-container">
|
|
3133
3133
|
<div class="public-auth">
|
|
3134
|
-
${ks(
|
|
3134
|
+
${ks()}
|
|
3135
3135
|
<h2 class="public-auth__title">Chat with ${e.assistantName}</h2>
|
|
3136
3136
|
<p class="public-auth__subtitle">How would you like to get started?</p>
|
|
3137
3137
|
<div class="public-auth__choices">
|
|
@@ -3143,7 +3143,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3143
3143
|
</button>
|
|
3144
3144
|
<button
|
|
3145
3145
|
class="btn public-auth__btn"
|
|
3146
|
-
@click=${()=>{
|
|
3146
|
+
@click=${()=>{lu(),e.onAuthStepChange("phone")}}
|
|
3147
3147
|
>
|
|
3148
3148
|
Verify with WhatsApp
|
|
3149
3149
|
</button>
|
|
@@ -3153,7 +3153,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3153
3153
|
</p>
|
|
3154
3154
|
</div>
|
|
3155
3155
|
</div>
|
|
3156
|
-
`}const jr="taskmaster-access-session",uu={checked:!1,hasPins:!1,hasMasterPin:!1,authenticated:!1,workspace:null,master:!1,accounts:[],error:null,busy:!1};function du(){try{return localStorage.getItem(jr)}catch{return null}}function pu(e){try{localStorage.setItem(jr,e)}catch{}}function nb(){try{localStorage.removeItem(jr)}catch{}}async function Ya(e){if(e.client)try{const t=du(),n=await e.client.request("access.status",{token:t});e.accessState={...e.accessState,checked:!0,hasPins:n.hasPins,hasMasterPin:n.hasMasterPin,accounts:n.accounts??[],authenticated:n.authenticated,workspace:n.workspace,master:n.master,error:null}}catch{e.accessState={...e.accessState,checked:!0,hasPins:!1,hasMasterPin:!1,accounts:[],authenticated:!0,error:null}}}async function ib(e,t,n){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const i=await e.client.request("access.verify",{account:t,pin:n});i.ok&&i.token?(pu(i.token),e.accessState={...e.accessState,authenticated:!0,workspace:i.workspace??null,master:i.master??!1,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:i.message??"Incorrect PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to verify PIN"}}}}async function sb(e,t){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const n=await e.client.request("access.setMasterPin",{pin:t});n.ok&&n.token?(pu(n.token),e.accessState={...e.accessState,checked:!0,hasPins:!0,hasMasterPin:!0,authenticated:!0,workspace:null,master:!0,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}}}async function rb(e,t,n){if(!e.client)return!1;try{return(await e.client.request("access.setAccountPin",{workspace:t,pin:n})).ok}catch{return!1}}async function ob(e){const t=du();if(e.client&&t)try{await e.client.request("access.logout",{token:t})}catch{}nb(),e.accessState={...uu,checked:!0,hasPins:!0,hasMasterPin:e.accessState.hasMasterPin,accounts:e.accessState.accounts}}function ab(e,t="admin"){var s;if(!e)return[];const n=e.bindings;if(!Array.isArray(n))return[];const i=[];for(const r of n){if(!r||typeof r!="object"||r.agentId!==t&&r.agentId!=="management")continue;const o=r.match;if(!o||typeof o!="object"||(o.channel??"").toLowerCase()!=="whatsapp")continue;const l=o.peer;if(!l||typeof l!="object"||l.kind!=="dm")continue;const c=l.id??"";c&&i.push({phone:c,paired:((s=r.meta)==null?void 0:s.paired)===!0})}return i.sort((r,o)=>r.paired&&!o.paired?-1:!r.paired&&o.paired?1:0),i}function hu(e,t,n="admin",i){const s=c=>c===n||c==="management",r=new Map,o=new Map;for(const c of e){if(!c||typeof c!="object"||!s(c.agentId))continue;const u=c.match;if(!u||typeof u!="object"||(u.channel??"").toLowerCase()!=="whatsapp")continue;const d=u.peer;if(!d||typeof d!="object"||d.kind!=="dm")continue;const p=d.id??"";p&&(c.meta&&r.set(p,c.meta),u.accountId&&o.set(p,u.accountId))}const a=e.filter(c=>{if(!c||typeof c!="object"||!s(c.agentId))return!0;const u=c.match;if(!u||typeof u!="object"||(u.channel??"").toLowerCase()!=="whatsapp")return!0;const d=u.peer;return!d||typeof d!="object"?!0:d.kind!=="dm"}),l=t.map(c=>{const u=i??o.get(c.phone),f={channel:"whatsapp",peer:{kind:"dm",id:c.phone}};u&&(f.accountId=u);const d={agentId:n,match:f},p=r.get(c.phone);return p?d.meta=p:c.paired&&(d.meta={paired:!0}),d});return[...a,...l]}async function _i(e,t){if(!e.client||!e.connected)return;if(!t){e.adminPhones=[];return}if(e.adminsLoading)return;e.adminsLoading=!0,e.adminsError=null;const n=t;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.config;e.configForm=ze(s??{}),e.adminPhones=ab(s,n),e.configFormDirty=!1}catch(i){e.adminsError=String(i)}finally{e.adminsLoading=!1}}async function fu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n;let r=t.replace(/[\s\-\(\)]/g,"");if(!r){e.adminsError="Phone number is required";return}if(r.startsWith("+")||(r="+"+r),!/^\+[1-9]\d{6,14}$/.test(r)){e.adminsError="Invalid phone number. Use international format (e.g., +44 7504 472444)";return}if(e.adminPhones.some(l=>l.phone===r)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const l=ze(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),c=l.bindings??[],u=[...e.adminPhones,{phone:r}],f=hu(c,u,s,i);kl(l,["bindings"],f);const d=(a=e.configSnapshot)==null?void 0:a.hash;if(!d){e.adminsError="Config hash missing; reload and retry.";return}const p=nt(l);await e.client.request("config.set",{raw:p,baseHash:d}),await _i(e,n)}catch(l){e.adminsError=String(l)}finally{e.adminsSaving=!1}}async function gu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n,r=e.adminPhones.find(l=>l.phone===t);if(r!=null&&r.paired){e.adminsError="Cannot remove the paired phone. Unlink WhatsApp first.";return}e.adminsSaving=!0,e.adminsError=null;try{const l=ze(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),c=l.bindings??[],u=e.adminPhones.filter(w=>w.phone!==t),f=hu(c,u,s,i);kl(l,["bindings"],f);const d=(a=e.configSnapshot)==null?void 0:a.hash;if(!d){e.adminsError="Config hash missing; reload and retry.";return}const p=nt(l);await e.client.request("config.set",{raw:p,baseHash:d}),await _i(e,n)}catch(l){e.adminsError=String(l)}finally{e.adminsSaving=!1}}const lb=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:fu,loadAdmins:_i,removeAdmin:gu},Symbol.toStringTag,{value:"Module"}));async function ct(e,t){if(!(!e.client||!e.connected)){if(!t){e.customersRecords=[];return}if(!e.customersLoading){e.customersLoading=!0,e.customersError=null;try{const n=e.customersSearchQuery.trim(),i=n?await e.client.request("records.search",{query:n,workspace:t}):await e.client.request("records.list",{workspace:t});e.customersRecords=i.records??[]}catch(n){e.customersError=String(n)}finally{e.customersLoading=!1}}}}async function mu(e,t,n,i){if(!e.client||!e.connected||e.customersSaving)return;let s=t.replace(/[\s\-\(\)]/g,"");const r=n.trim();if(!s){e.customersError="Phone number is required";return}if(!r){e.customersError="Name is required";return}if(s.startsWith("+")||(s="+"+s),!/^\+[1-9]\d{6,14}$/.test(s)){e.customersError="Invalid phone number. Use international format (e.g., +44 7490 553305)";return}e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.set",{id:s,name:r,fields:{},workspace:i}),e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName="",await ct(e,i)}catch(o){e.customersError=String(o)}finally{e.customersSaving=!1}}async function yu(e,t,n){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.delete",{id:t}),e.customersEditingId===t&&(e.customersEditingId=null),await ct(e,n)}catch(i){e.customersError=String(i)}finally{e.customersSaving=!1}}}async function vu(e,t,n,i,s){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.setField",{id:t,key:n,value:i}),await ct(e,s)}catch(r){e.customersError=String(r)}finally{e.customersSaving=!1}}}async function bu(e,t,n,i){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.deleteField",{id:t,key:n}),await ct(e,i)}catch(s){e.customersError=String(s)}finally{e.customersSaving=!1}}}const cb=Object.freeze(Object.defineProperty({__proto__:null,addCustomer:mu,deleteCustomer:yu,deleteCustomerField:bu,loadCustomers:ct,setCustomerField:vu},Symbol.toStringTag,{value:"Module"}));function Qt(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function ub(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),onAddAccount:()=>{e.addingWorkspace=!0},hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function db(e){const t=ie(e);if(!t)return;const n=t.agents.find(i=>i.id.endsWith("-admin")||i.id==="admin");return n==null?void 0:n.id}function pb(e){const t=ie(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function hb(e){var n;const t=ie(e);if(t)return(n=t.agents[0])==null?void 0:n.id}function fb(e){return e.selectedWorkspace??void 0}function ie(e){return e.selectedWorkspace?e.workspaces.find(t=>t.name===e.selectedWorkspace)??null:null}const gb=/^data:/i,mb=/^https?:\/\//i;function Xa(e){var a,l;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=cl(e.sessionKey),i=(n==null?void 0:n.agentId)??((l=e.agentsList)==null?void 0:l.defaultId)??"main",s=t.find(c=>c.id===i),r=s==null?void 0:s.identity,o=(r==null?void 0:r.avatarUrl)??(r==null?void 0:r.avatar);if(o)return gb.test(o)||mb.test(o)?o:r==null?void 0:r.avatarUrl}function yb(e){var i;if(!e)return null;const t=(i=e.channelAccounts)==null?void 0:i.whatsapp;if(!t||t.length===0)return null;const n=t[0];return{running:n.running??!1,connected:n.connected??!1,linked:n.linked??!1,lastError:n.lastError}}function vb(e){var o;if(!e)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const t=(o=e.channelAccounts)==null?void 0:o.imessage;if(!t||t.length===0)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const n=t[0],i=n.running??!1,s=n.probe,r=s!=null?s.ok===!0:i;return{configured:n.configured??!1,running:i,connected:r,lastError:n.lastError??null,selfChatMode:n.mode==="self-chat"||!!n.selfChatMode,dmPolicy:n.dmPolicy??null,cliPath:n.cliPath??null}}function bb(e){var o;const t=(o=e.configSnapshot)==null?void 0:o.config;if(!t)return null;const n=t.bindings;if(!Array.isArray(n))return null;const i=n.find(a=>{var l,c;return((l=a.match)==null?void 0:l.channel)==="imessage"&&((c=a.meta)==null?void 0:c.imessageOwner)});if(!i)return null;const s=i.agentId;for(const a of e.workspaces)if(a.agents.some(l=>l.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(l=>l.isDefault);return(a==null?void 0:a.name)??null}const r=s.replace(/-(admin|public)$/,"");if(r!==s){const a=e.workspaces.find(l=>l.name===r);return(a==null?void 0:a.name)??null}return null}function wb(e){var t,n,i,s,r,o,a;if(e.embeddingDownloading&&!e.publicChat)return h`
|
|
3156
|
+
`}const zr="taskmaster-access-session",cu={checked:!1,hasPins:!1,hasMasterPin:!1,authenticated:!1,workspace:null,master:!1,accounts:[],error:null,busy:!1};function uu(){try{return localStorage.getItem(zr)}catch{return null}}function du(e){try{localStorage.setItem(zr,e)}catch{}}function nb(){try{localStorage.removeItem(zr)}catch{}}async function Qa(e){if(e.client)try{const t=uu(),n=await e.client.request("access.status",{token:t});e.accessState={...e.accessState,checked:!0,hasPins:n.hasPins,hasMasterPin:n.hasMasterPin,accounts:n.accounts??[],authenticated:n.authenticated,workspace:n.workspace,master:n.master,error:null}}catch{e.accessState={...e.accessState,checked:!0,hasPins:!1,hasMasterPin:!1,accounts:[],authenticated:!0,error:null}}}async function ib(e,t,n){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const i=await e.client.request("access.verify",{account:t,pin:n});i.ok&&i.token?(du(i.token),e.accessState={...e.accessState,authenticated:!0,workspace:i.workspace??null,master:i.master??!1,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:i.message??"Incorrect PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to verify PIN"}}}}async function sb(e,t){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const n=await e.client.request("access.setMasterPin",{pin:t});n.ok&&n.token?(du(n.token),e.accessState={...e.accessState,checked:!0,hasPins:!0,hasMasterPin:!0,authenticated:!0,workspace:null,master:!0,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}}}async function rb(e,t,n){if(!e.client)return!1;try{return(await e.client.request("access.setAccountPin",{workspace:t,pin:n})).ok}catch{return!1}}async function ob(e){const t=uu();if(e.client&&t)try{await e.client.request("access.logout",{token:t})}catch{}nb(),e.accessState={...cu,checked:!0,hasPins:!0,hasMasterPin:e.accessState.hasMasterPin,accounts:e.accessState.accounts}}function ab(e,t="admin"){var s;if(!e)return[];const n=e.bindings;if(!Array.isArray(n))return[];const i=[];for(const r of n){if(!r||typeof r!="object"||r.agentId!==t&&r.agentId!=="management")continue;const o=r.match;if(!o||typeof o!="object"||(o.channel??"").toLowerCase()!=="whatsapp")continue;const l=o.peer;if(!l||typeof l!="object"||l.kind!=="dm")continue;const c=l.id??"";c&&i.push({phone:c,paired:((s=r.meta)==null?void 0:s.paired)===!0})}return i.sort((r,o)=>r.paired&&!o.paired?-1:!r.paired&&o.paired?1:0),i}function pu(e,t,n="admin",i){const s=c=>c===n||c==="management",r=new Map,o=new Map;for(const c of e){if(!c||typeof c!="object"||!s(c.agentId))continue;const d=c.match;if(!d||typeof d!="object"||(d.channel??"").toLowerCase()!=="whatsapp")continue;const u=d.peer;if(!u||typeof u!="object"||u.kind!=="dm")continue;const p=u.id??"";p&&(c.meta&&r.set(p,c.meta),d.accountId&&o.set(p,d.accountId))}const a=e.filter(c=>{if(!c||typeof c!="object"||!s(c.agentId))return!0;const d=c.match;if(!d||typeof d!="object"||(d.channel??"").toLowerCase()!=="whatsapp")return!0;const u=d.peer;return!u||typeof u!="object"?!0:u.kind!=="dm"}),l=t.map(c=>{const d=i??o.get(c.phone),f={channel:"whatsapp",peer:{kind:"dm",id:c.phone}};d&&(f.accountId=d);const u={agentId:n,match:f},p=r.get(c.phone);return p?u.meta=p:c.paired&&(u.meta={paired:!0}),u});return[...a,...l]}async function _i(e,t){if(!e.client||!e.connected)return;if(!t){e.adminPhones=[];return}if(e.adminsLoading)return;e.adminsLoading=!0,e.adminsError=null;const n=t;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.config;e.configForm=ze(s??{}),e.adminPhones=ab(s,n),e.configFormDirty=!1}catch(i){e.adminsError=String(i)}finally{e.adminsLoading=!1}}async function hu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n;let r=t.replace(/[\s\-\(\)]/g,"");if(!r){e.adminsError="Phone number is required";return}if(r.startsWith("+")||(r="+"+r),!/^\+[1-9]\d{6,14}$/.test(r)){e.adminsError="Invalid phone number. Use international format (e.g., +44 7504 472444)";return}if(e.adminPhones.some(l=>l.phone===r)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const l=ze(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),c=l.bindings??[],d=[...e.adminPhones,{phone:r}],f=pu(c,d,s,i);wl(l,["bindings"],f);const u=(a=e.configSnapshot)==null?void 0:a.hash;if(!u){e.adminsError="Config hash missing; reload and retry.";return}const p=nt(l);await e.client.request("config.set",{raw:p,baseHash:u}),await _i(e,n)}catch(l){e.adminsError=String(l)}finally{e.adminsSaving=!1}}async function fu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n,r=e.adminPhones.find(l=>l.phone===t);if(r!=null&&r.paired){e.adminsError="Cannot remove the paired phone. Unlink WhatsApp first.";return}e.adminsSaving=!0,e.adminsError=null;try{const l=ze(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),c=l.bindings??[],d=e.adminPhones.filter(b=>b.phone!==t),f=pu(c,d,s,i);wl(l,["bindings"],f);const u=(a=e.configSnapshot)==null?void 0:a.hash;if(!u){e.adminsError="Config hash missing; reload and retry.";return}const p=nt(l);await e.client.request("config.set",{raw:p,baseHash:u}),await _i(e,n)}catch(l){e.adminsError=String(l)}finally{e.adminsSaving=!1}}const lb=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:hu,loadAdmins:_i,removeAdmin:fu},Symbol.toStringTag,{value:"Module"}));async function ct(e,t){if(!(!e.client||!e.connected)){if(!t){e.customersRecords=[];return}if(!e.customersLoading){e.customersLoading=!0,e.customersError=null;try{const n=e.customersSearchQuery.trim(),i=n?await e.client.request("records.search",{query:n,workspace:t}):await e.client.request("records.list",{workspace:t});e.customersRecords=i.records??[]}catch(n){e.customersError=String(n)}finally{e.customersLoading=!1}}}}async function gu(e,t,n,i){if(!e.client||!e.connected||e.customersSaving)return;let s=t.replace(/[\s\-\(\)]/g,"");const r=n.trim();if(!s){e.customersError="Phone number is required";return}if(!r){e.customersError="Name is required";return}if(s.startsWith("+")||(s="+"+s),!/^\+[1-9]\d{6,14}$/.test(s)){e.customersError="Invalid phone number. Use international format (e.g., +44 7490 553305)";return}e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.set",{id:s,name:r,fields:{},workspace:i}),e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName="",await ct(e,i)}catch(o){e.customersError=String(o)}finally{e.customersSaving=!1}}async function mu(e,t,n){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.delete",{id:t}),e.customersEditingId===t&&(e.customersEditingId=null),await ct(e,n)}catch(i){e.customersError=String(i)}finally{e.customersSaving=!1}}}async function yu(e,t,n,i,s){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.setField",{id:t,key:n,value:i}),await ct(e,s)}catch(r){e.customersError=String(r)}finally{e.customersSaving=!1}}}async function vu(e,t,n,i){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.deleteField",{id:t,key:n}),await ct(e,i)}catch(s){e.customersError=String(s)}finally{e.customersSaving=!1}}}const cb=Object.freeze(Object.defineProperty({__proto__:null,addCustomer:gu,deleteCustomer:mu,deleteCustomerField:vu,loadCustomers:ct,setCustomerField:yu},Symbol.toStringTag,{value:"Module"}));function Qt(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function ub(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),onAddAccount:()=>{e.addingWorkspace=!0},hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function db(e){const t=ie(e);if(!t)return;const n=t.agents.find(i=>i.id.endsWith("-admin")||i.id==="admin");return n==null?void 0:n.id}function pb(e){const t=ie(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function hb(e){var n;const t=ie(e);if(t)return(n=t.agents[0])==null?void 0:n.id}function fb(e){return e.selectedWorkspace??void 0}function ie(e){return e.selectedWorkspace?e.workspaces.find(t=>t.name===e.selectedWorkspace)??null:null}const gb=/^data:/i,mb=/^https?:\/\//i;function Ya(e){var a,l;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=ll(e.sessionKey),i=(n==null?void 0:n.agentId)??((l=e.agentsList)==null?void 0:l.defaultId)??"main",s=t.find(c=>c.id===i),r=s==null?void 0:s.identity,o=(r==null?void 0:r.avatarUrl)??(r==null?void 0:r.avatar);if(o)return gb.test(o)||mb.test(o)?o:r==null?void 0:r.avatarUrl}function yb(e){var i;if(!e)return null;const t=(i=e.channelAccounts)==null?void 0:i.whatsapp;if(!t||t.length===0)return null;const n=t[0];return{running:n.running??!1,connected:n.connected??!1,linked:n.linked??!1,lastError:n.lastError}}function vb(e){var o;if(!e)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const t=(o=e.channelAccounts)==null?void 0:o.imessage;if(!t||t.length===0)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const n=t[0],i=n.running??!1,s=n.probe,r=s!=null?s.ok===!0:i;return{configured:n.configured??!1,running:i,connected:r,lastError:n.lastError??null,selfChatMode:n.mode==="self-chat"||!!n.selfChatMode,dmPolicy:n.dmPolicy??null,cliPath:n.cliPath??null}}function bb(e){var o;const t=(o=e.configSnapshot)==null?void 0:o.config;if(!t)return null;const n=t.bindings;if(!Array.isArray(n))return null;const i=n.find(a=>{var l,c;return((l=a.match)==null?void 0:l.channel)==="imessage"&&((c=a.meta)==null?void 0:c.imessageOwner)});if(!i)return null;const s=i.agentId;for(const a of e.workspaces)if(a.agents.some(l=>l.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(l=>l.isDefault);return(a==null?void 0:a.name)??null}const r=s.replace(/-(admin|public)$/,"");if(r!==s){const a=e.workspaces.find(l=>l.name===r);return(a==null?void 0:a.name)??null}return null}function wb(e){var t,n,i,s,r,o,a;if(e.embeddingDownloading&&!e.publicChat)return h`
|
|
3157
3157
|
<div class="setup-container">
|
|
3158
3158
|
<div class="setup-card" style="text-align:center; max-width:420px;">
|
|
3159
3159
|
<div class="setup-spinner"></div>
|
|
@@ -3167,14 +3167,14 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3167
3167
|
</p>
|
|
3168
3168
|
</div>
|
|
3169
3169
|
</div>
|
|
3170
|
-
`;if(e.publicChat)return e.connected?e.publicChatAuthenticated?kv({connected:e.connected,sessionKey:e.sessionKey,loading:e.chatLoading,sending:e.chatSending,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,assistantAvatarUrl:e.chatAvatarUrl??
|
|
3170
|
+
`;if(e.publicChat)return e.connected?e.publicChatAuthenticated?kv({connected:e.connected,sessionKey:e.sessionKey,loading:e.chatLoading,sending:e.chatSending,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,assistantAvatarUrl:e.chatAvatarUrl??Ya(e)??null,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,canAbort:!!e.chatRunId,disabledReason:e.connected?null:"Disconnected.",error:e.lastError,assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,suggestion:e.chatSuggestion,onSuggestionClick:l=>{e.chatMessage=l,e.chatSuggestion=null,e.handleSendChat()},onRefresh:()=>(e.resetToolStream(),ne(async()=>{const{loadChatHistory:l}=await Promise.resolve().then(()=>$s);return{loadChatHistory:l}},void 0,import.meta.url).then(({loadChatHistory:l})=>{l(e)})),onDraftChange:l=>e.chatMessage=l,attachments:e.chatAttachments,onAttachmentsChange:l=>e.chatAttachments=l,onSend:()=>e.handleSendChat(),onAbort:()=>{e.handleAbortChat()},onQueueRemove:l=>e.removeQueuedMessage(l),onChatScroll:l=>e.handleChatScroll(l),nearBottom:e.chatUserNearBottom}):tb({authMode:e.publicChatConfig.auth??"anonymous",authStep:e.publicChatAuthStep,connected:e.connected,client:e.client,assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,accountId:e.publicChatConfig.accountId,cookieTtlDays:e.publicChatConfig.cookieTtlDays,onAuthenticated:l=>{e.publicChatSessionKey=l,e.sessionKey=l,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",ne(async()=>{const{loadChatHistory:c}=await Promise.resolve().then(()=>$s);return{loadChatHistory:c}},void 0,import.meta.url).then(({loadChatHistory:c})=>{c(e)})},onAuthStepChange:l=>{e.publicChatAuthStep=l}}):h`
|
|
3171
3171
|
<div class="setup-container">
|
|
3172
3172
|
<div class="setup-card">
|
|
3173
3173
|
<div class="setup-spinner"></div>
|
|
3174
3174
|
<p>Connecting...</p>
|
|
3175
3175
|
</div>
|
|
3176
3176
|
</div>
|
|
3177
|
-
`;if(e.connected&&e.accessState.checked){const{accessState:l}=e;if(l.hasPins&&!l.authenticated)return Ua({show:!0,isFirstTime:!1,accounts:l.accounts,error:l.error,busy:l.busy,onSubmit:(c,u)=>{u!=null&&e.handlePinSubmit(c,u)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(c,u,f)=>e.handleChangePin(c,u,f)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return Ua({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:c=>e.handleSetMasterPin(c)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",k}if(e.setup){const l=yb(e.channelsSnapshot),c=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],u=vb(e.channelsSnapshot),f=bb(e);return nf({connected:e.connected,assistantName:e.assistantName,currentStep:e.setupStep,licenseKey:e.licenseKey,licenseBusy:e.licenseBusy,licenseValid:e.licenseValid,licenseMessage:e.licenseMessage,licenseTier:e.licenseTier,licenseDeviceId:e.licenseDeviceId,licenseStoredKey:e.licenseStoredKey,onLicenseKeyChange:d=>e.handleLicenseKeyChange(d),onLicenseActivate:()=>e.handleLicenseActivate(),onLicenseRemove:async()=>{await e.handleLicenseRemove(),e.licenseRemoveConfirm=!1},licenseRemoveConfirm:e.licenseRemoveConfirm,onLicenseRemoveConfirm:()=>{e.licenseRemoveConfirm=!0},onLicenseRemoveCancel:()=>{e.licenseRemoveConfirm=!1},authConnected:e.authConnected,authBusy:e.authBusy,authMessage:e.authMessage,authUrl:e.authUrl,authCodeInput:e.authCodeInput,authExpiresIn:e.authExpiresIn,whatsappBusy:e.whatsappBusy,whatsappLoginMessage:e.whatsappLoginMessage,whatsappLoginQrDataUrl:e.whatsappLoginQrDataUrl,whatsappLoginConnected:e.whatsappLoginConnected,whatsappChannelStatus:l,whatsappAccounts:c,whatsappActiveQrAccountId:e.whatsappActiveQrAccountId,whatsappAccountSaving:e.whatsappAccountSaving,gatewayHealthy:e.gatewayHealthy,gatewayHealthLoading:e.gatewayHealthLoading,gatewayHealthMessage:e.gatewayHealthMessage,gatewayRestartBusy:e.gatewayRestartBusy,updateAvailable:e.updateAvailable,currentVersion:e.currentVersion,latestVersion:e.latestVersion,updateChecking:e.updateChecking,updateRunning:e.updateRunning,updateMessage:e.updateMessage,updateProgressSteps:e.updateProgressSteps,updateLastResult:e.updateLastResult,onUpdateCheck:()=>e.handleUpdateCheck(),onUpdateRun:()=>e.handleUpdateRun(),onUpdateDismissResult:()=>e.handleUpdateDismissResult(),uninstallConfirm:e.uninstallConfirm,uninstallBusy:e.uninstallBusy,uninstallDone:e.uninstallDone,uninstallError:e.uninstallError,uninstallConfirmText:e.uninstallConfirmText,onUninstallConfirm:()=>e.handleUninstallConfirm(),onUninstallCancel:()=>e.handleUninstallCancel(),onUninstallConfirmTextChange:d=>e.handleUninstallConfirmTextChange(d),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:d=>e.handleAuthSubmitCode(d),onAuthCodeChange:d=>e.handleAuthCodeChange(d),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async d=>{await e.handleWhatsAppStart(!0,d),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(d),await q(e,!0),e.requestUpdate())},onWhatsAppReset:async d=>{await e.handleWhatsAppLogout(d),await e.handleWhatsAppStart(!0,d),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(d),await q(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await q(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),q(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:d=>e.handleRemoveWhatsAppAccount(d),workspaces:e.workspaces,workspacesLoading:e.workspacesLoading,workspacesError:e.workspacesError,addingWorkspace:e.addingWorkspace,newWorkspaceName:e.newWorkspaceName,newWorkspacePath:e.newWorkspacePath,workspaceSaving:e.workspaceSaving,workspaceRemoveConfirm:e.workspaceRemoveConfirm,newWorkspacePin:e.newWorkspacePin,onSetNewWorkspacePin:d=>{e.newWorkspacePin=d},onWorkspaceCreate:async(d,p)=>{const w=e.newWorkspacePin;await e.handleWorkspaceCreate(d,p),w.match(/^\d{4,6}$/)&&(await rb(e,d,w),e.newWorkspacePin="")},onWorkspaceRemove:d=>e.handleWorkspaceRemove(d),onSetAddingWorkspace:d=>{e.addingWorkspace=d},onSetNewWorkspaceName:d=>{e.newWorkspaceName=d},onSetNewWorkspacePath:d=>{e.newWorkspacePath=d},onSetWorkspaceRemoveConfirm:d=>{e.workspaceRemoveConfirm=d},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(d,p)=>e.handleWorkspaceRename(d,p),whatsappDmPolicy:(()=>{const d=ie(e),p=d==null?void 0:d.whatsappAccountId,w=p?c.find(b=>b.accountId===p):c[0];return(w==null?void 0:w.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var $;const d=ie(e),p=d==null?void 0:d.whatsappAccountId,w=p?c.find(E=>E.accountId===p):c[0];if(!w)return;const S=w.dmPolicy!=null&&w.dmPolicy!=="disabled"?"disabled":"open",T=S==="open"?{dmPolicy:S,allowFrom:["*"]}:{dmPolicy:S};try{const E=await e.client.request("config.get"),C=E.config,I=($=C==null?void 0:C.channels)==null?void 0:$.whatsapp,Q=((I==null?void 0:I.accounts)??{})[w.accountId]?{channels:{whatsapp:{accounts:{[w.accountId]:T}}}}:{channels:{whatsapp:T}};await e.client.request("config.patch",{raw:JSON.stringify(Q),baseHash:E.hash,note:`WhatsApp DM policy → ${S}`,skipRestart:!0}),await q(e,!1)}catch(E){console.error("DM toggle failed:",E)}},whatsappModel:(()=>{var $,E;const d=ie(e);if(!d)return null;const p=d.agents.find(C=>C.id.endsWith("-public")||C.id==="public");if(!p)return null;const w=($=e.configSnapshot)==null?void 0:$.config,b=(E=w==null?void 0:w.agents)==null?void 0:E.list;if(!Array.isArray(b))return null;const S=b.find(C=>C.id===p.id);if(!(S!=null&&S.model))return null;const T=typeof S.model=="string"?S.model:S.model.primary;return(T==null?void 0:T.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async d=>{const p=ie(e);if(!p)return;const w=p.agents.find(b=>b.id.endsWith("-public")||b.id==="public");if(w)try{const b=await e.client.request("config.get"),S=b.config,T=(S==null?void 0:S.agents)??{},$=Array.isArray(T.list)?[...T.list]:[],E=$.findIndex(I=>I.id===w.id);if(d)E>=0?$[E]={...$[E],model:d}:$.push({id:w.id,model:d});else if(E>=0){const{model:I,...U}=$[E];Object.keys(U).length<=1?$.splice(E,1):$[E]=U}const C=$.length>0?{agents:{list:$}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(C),baseHash:b.hash,note:`Public agent model → ${d||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Model change failed:",b)}},whatsappThinkingLevel:(()=>{var T,$,E;const d=ie(e);if(!d)return null;const p=d.agents.find(C=>C.id.endsWith("-public")||C.id==="public");if(!p)return null;const w=(T=e.configSnapshot)==null?void 0:T.config,b=($=w==null?void 0:w.agents)==null?void 0:$.list;if(!Array.isArray(b))return null;const S=b.find(C=>C.id===p.id);return((E=S==null?void 0:S.thinkingLevel)==null?void 0:E.trim())||null})(),onWhatsAppThinkingChange:async d=>{const p=ie(e);if(!p)return;const w=p.agents.find(b=>b.id.endsWith("-public")||b.id==="public");if(w)try{const b=await e.client.request("config.get"),S=b.config,T=(S==null?void 0:S.agents)??{},$=Array.isArray(T.list)?[...T.list]:[],E=$.findIndex(U=>U.id===w.id),C=d==="off"?void 0:d;if(C)E>=0?$[E]={...$[E],thinkingLevel:C}:$.push({id:w.id,thinkingLevel:C});else if(E>=0){const{thinkingLevel:U,...Q}=$[E];Object.keys(Q).length<=1?$.splice(E,1):$[E]=Q}const I=$.length>0?{agents:{list:$}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(I),baseHash:b.hash,note:`Public agent thinking → ${C||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Thinking change failed:",b)}},whatsappGroupPolicy:(()=>{var E,C;const d=(E=e.configSnapshot)==null?void 0:E.config,p=(C=d==null?void 0:d.channels)==null?void 0:C.whatsapp,w=ie(e),b=w==null?void 0:w.whatsappAccountId,S=(p==null?void 0:p.accounts)??{},T=b?S[b]:void 0;return(T==null?void 0:T.groupPolicy)??(p==null?void 0:p.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var C,I;const d=(C=e.configSnapshot)==null?void 0:C.config,p=(I=d==null?void 0:d.channels)==null?void 0:I.whatsapp,w=ie(e),b=w==null?void 0:w.whatsappAccountId,S=(p==null?void 0:p.accounts)??{},T=b?S[b]:void 0,E=((T==null?void 0:T.groups)??(p==null?void 0:p.groups)??{})["*"];return(E==null?void 0:E.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var w;const d=ie(e),p=d==null?void 0:d.whatsappAccountId;try{const b=await e.client.request("config.get"),S=b.config,T=((w=S==null?void 0:S.channels)==null?void 0:w.whatsapp)??{},$=T.accounts??{},E=p?$[p]:void 0,C=(E==null?void 0:E.groupPolicy)??T.groupPolicy??"allowlist",I=C==="disabled"||C==="allowlist",U=I?"open":"disabled",Q=I?{"*":{}}:void 0,He={groupPolicy:U};Q&&(He.groups=Q);const Rt=E?{channels:{whatsapp:{accounts:{[p]:He}}}}:{channels:{whatsapp:He}};await e.client.request("config.patch",{raw:JSON.stringify(Rt),baseHash:b.hash,note:`WhatsApp groups → ${U}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Group toggle failed:",b)}},onWhatsAppGroupMentionChange:async d=>{var b;const p=ie(e),w=p==null?void 0:p.whatsappAccountId;try{const S=await e.client.request("config.get"),T=S.config,E=(((b=T==null?void 0:T.channels)==null?void 0:b.whatsapp)??{}).accounts??{},C=w?E[w]:void 0,I={"*":{requireMention:d}},U=C?{channels:{whatsapp:{accounts:{[w]:{groups:I}}}}}:{channels:{whatsapp:{groups:I}}};await e.client.request("config.patch",{raw:JSON.stringify(U),baseHash:S.hash,note:`WhatsApp group mention → ${d?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(S){console.error("Group mention change failed:",S)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:u.configured,imessageRunning:u.running,imessageConnected:u.connected,imessageLastError:u.lastError,imessageSelfChatMode:u.selfChatMode,imessageCliPath:u.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:f,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const d=await e.client.request("config.get"),p=d.config,w=(p==null?void 0:p.bindings)??[],b=ie(e),S=b==null?void 0:b.agents.find(I=>I.id.endsWith("-admin")||I.id==="admin"),T=(S==null?void 0:S.id)??"admin",$=w.filter(I=>{var U;return((U=I.match)==null?void 0:U.channel)!=="imessage"}),E=[{agentId:T,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],C=[...$,...E];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:C}),baseHash:d.hash,note:"Enable iMessage (self-chat) for "+((b==null?void 0:b.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([q(e,!0),Te(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await q(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const d=await e.client.request("config.get"),p=d.config,b=((p==null?void 0:p.bindings)??[]).filter(S=>{var T;return((T=S.match)==null?void 0:T.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:b}),baseHash:d.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([q(e,!0),Te(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const d=await e.client.request("config.get"),p=d.config,w=(p==null?void 0:p.bindings)??[],b=ie(e),S=b==null?void 0:b.agents.find(C=>C.id.endsWith("-admin")||C.id==="admin"),T=(S==null?void 0:S.id)??"admin",$=w.filter(C=>{var I;return((I=C.match)==null?void 0:I.channel)!=="imessage"}),E=[{agentId:T,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:[...$,...E]}),baseHash:d.hash,note:"Reassign iMessage to "+((b==null?void 0:b.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([q(e,!0),Te(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:d=>{e.infoModalOpen=d},onInfoModalClose:()=>{e.infoModalOpen=null},isMaster:e.accessState.master,apiKeyProviders:e.apiKeyProviders,apiKeyModalOpen:e.apiKeyModalOpen,apiKeyBusy:e.apiKeyBusy,apiKeyError:e.apiKeyError,apiKeySuccess:e.apiKeySuccess,apiKeySavingProvider:e.apiKeySavingProvider,onApiKeyModalOpen:()=>{e.apiKeyModalOpen=!0,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeyModalClose:()=>{e.apiKeyModalOpen=!1,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeySave:async(d,p)=>{e.apiKeySavingProvider=d,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await za(e.client,d,p);const w=`${d} key saved`;e.apiKeySuccess=w,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}d==="anthropic"&&await e.handleAuthStatusCheck(),setTimeout(()=>{e.apiKeySuccess===w&&(e.apiKeySuccess=null)},2500)}catch(w){e.apiKeyError=w instanceof Error?w.message:"Failed to save key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyRemove:async d=>{e.apiKeySavingProvider=d,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Wv(e.client,d);const p=`${d} key removed`;e.apiKeySuccess=p,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===p&&(e.apiKeySuccess=null)},2500)}catch(p){e.apiKeyError=p instanceof Error?p.message:"Failed to remove key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},authApiKeyMode:e.authApiKeyMode,authApiKeyInput:e.authApiKeyInput,authApiKeyBusy:e.authApiKeyBusy,authApiKeyError:e.authApiKeyError,onAuthApiKeyToggle:()=>{e.authApiKeyMode=!e.authApiKeyMode,e.authApiKeyError=null},onAuthApiKeyChange:d=>{e.authApiKeyInput=d},onAuthApiKeySubmit:async()=>{const d=e.authApiKeyInput.trim();if(d){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await za(e.client,"anthropic",d),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(p){e.authApiKeyError=p instanceof Error?p.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var p;const d=e.selectedWorkspace??((p=e.workspaces[0])==null?void 0:p.name);return d?e.accessState.accounts.some(w=>w.id===d):!1})(),accountPinModalOpen:e.accountPinModalOpen,accountPinBusy:e.accountPinBusy,accountPinError:e.accountPinError,accountPinSuccess:e.accountPinSuccess,onAccountPinModalOpen:()=>{e.accountPinModalOpen=!0,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinModalClose:()=>{e.accountPinModalOpen=!1,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinSave:(d,p)=>{var b;const w=e.selectedWorkspace??((b=e.workspaces[0])==null?void 0:b.name);w&&e.handleAccountPinSave(w,d,p)},publicChatEnabled:(()=>{var w;const d=(w=e.configSnapshot)==null?void 0:w.config,p=d==null?void 0:d.publicChat;return(p==null?void 0:p.enabled)===!0})(),publicChatAuthMode:(()=>{var b;const d=(b=e.configSnapshot)==null?void 0:b.config,p=d==null?void 0:d.publicChat,w=p==null?void 0:p.auth;return w==="verified"||w==="choice"?w:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var d;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const p=await e.client.request("config.get"),w=p.config,b=((d=w==null?void 0:w.publicChat)==null?void 0:d.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!b}}),baseHash:p.hash,note:`Public chat → ${b?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(p){console.error("Public chat toggle failed:",p)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async d=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const p=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:d}}),baseHash:p.hash,note:`Public chat auth → ${d}`}),e.configSnapshot=await e.client.request("config.get")}catch(p){console.error("Public chat auth mode change failed:",p)}finally{e.publicChatToggleBusy=!1}}},wsProps:ub(e)})}if(e.filesPage){const l=hb(e);return Kh({connected:e.connected,wsProps:Qt(e),loading:e.filesLoading,tree:e.filesTree,root:e.filesRoot,error:e.filesError,selectedPath:e.filesSelectedPath,selectedPaths:e.filesSelectedPaths,previewContent:e.filesPreviewContent,previewLoading:e.filesPreviewLoading,previewBinary:e.filesPreviewBinary,previewSize:e.filesPreviewSize,expandedDirs:e.filesExpandedDirs,message:e.filesMessage,uploadBusy:e.filesUploadBusy,reindexBusy:e.filesReindexBusy,memoryStatus:e.filesMemoryStatus,onRefresh:()=>mn(e,l),onReindex:()=>Jp(e,l),onSelectFile:c=>Vp(e,c,l),onToggleSelectFile:c=>Gp(e,c,l),onToggleDir:c=>eh(e,c),onUpload:(c,u)=>Xp(e,c,u,l),onDownload:c=>tc(e,c,l),onBulkDownload:()=>Qp(e,l),onDelete:c=>Zp(e,c,l),onMove:(c,u)=>nc(e,c,u,l),onMoveToDir:(c,u)=>Yp(e,c,u,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:c=>{const u=e.filesSearchAgentId??l;th(e,c,u)},onSearchAgentChange:c=>{e.filesSearchAgentId=c},onSearchClear:()=>{nh(e)},onSearchQueryChange:c=>{e.filesSearchQuery=c}})}if(e.browserPage)return Nh({connected:e.connected,active:e.browserScreencastActive,loading:e.browserLoading,error:e.browserError,inputMode:e.browserInputMode,fullscreen:e.browserFullscreen,handoffPending:e.browserHandoffPending,handoffReason:e.browserHandoffReason,onStart:()=>Iv(e),onStop:()=>Rv(e),onToggleInput:()=>Dv(e),onToggleFullscreen:()=>Ov(e),onCompleteHandoff:()=>Nv(e),onCanvasMouseDown:l=>{const u=l.target.getBoundingClientRect(),d=an().translateCoordinates(l.clientX-u.left,l.clientY-u.top);vs(e,"mousePressed",d.x,d.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const u=l.target.getBoundingClientRect(),d=an().translateCoordinates(l.clientX-u.left,l.clientY-u.top);vs(e,"mouseReleased",d.x,d.y)},onCanvasMouseMove:l=>{const c=an();if(c.shouldThrottleMouseMove())return;const f=l.target.getBoundingClientRect(),d=c.translateCoordinates(l.clientX-f.left,l.clientY-f.top);vs(e,"mouseMoved",d.x,d.y)},onCanvasKeyDown:l=>{let c=0;l.altKey&&(c|=1),l.ctrlKey&&(c|=2),l.metaKey&&(c|=4),l.shiftKey&&(c|=8),bs(e,"keyDown",l.key,{code:l.code,modifiers:c||void 0}),l.key.length===1&&bs(e,"char",l.key,{text:l.key})},onCanvasKeyUp:l=>{bs(e,"keyUp",l.key,{code:l.code})}});if(e.adminsPage){const l=db(e),c=pb(e);return rf({connected:e.connected,wsProps:Qt(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>_i(e,l),onAdd:u=>{fu(e,u,l,c).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:u=>gu(e,u,l,c),onNewPhoneChange:u=>e.handleAdminsNewPhoneChange(u)})}if(e.customersPage){const l=fb(e);return cf({connected:e.connected,wsProps:Qt(e),loading:e.customersLoading,saving:e.customersSaving,records:e.customersRecords,error:e.customersError,searchQuery:e.customersSearchQuery,editingId:e.customersEditingId,showAddForm:e.customersShowAddForm,newRecordPhone:e.customersNewPhone,newRecordName:e.customersNewName,onSearch:c=>e.customersSearchQuery=c,onSearchSubmit:()=>ct(e,l),onAdd:(c,u)=>mu(e,c,u,l),onDelete:c=>yu(e,c,l),onSetField:(c,u,f)=>vu(e,c,u,f,l),onDeleteField:(c,u)=>bu(e,c,u,l),onToggleExpand:c=>{e.customersEditingId=e.customersEditingId===c?null:c},onShowAddForm:()=>e.customersShowAddForm=!0,onCancelAddForm:()=>{e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName=""},onNewRecordPhoneChange:c=>e.handleCustomersNewPhoneChange(c),onNewRecordNameChange:c=>e.handleCustomersNewNameChange(c),onRefresh:()=>ct(e,l)})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",c=Xa(e),u=e.chatAvatarUrl??c??null;return jy({connected:e.connected,wsProps:Qt(e),sessionKey:e.sessionKey,onSessionKeyChange:f=>{e.sessionKey=f,e.chatMessage="",e.chatAttachments=[],e.chatStream=null,e.chatInterimText=null,e.chatSuggestion=null,e.chatStreamStartedAt=null,e.chatRunId=null,e.chatQueue=[],e.resetToolStream(),e.resetChatScroll(),e.applySettings({...e.settings,sessionKey:f,lastActiveSessionKey:f}),e.loadAssistantIdentity(),Ee(e),Ls(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:f=>{Ln(e,e.sessionKey,{model:f}).then(()=>{Ee(e)})},onThinkingLevelChange:f=>{Ln(e,e.sessionKey,{thinkingLevel:f==="off"?null:f}).then(()=>{Ee(e)})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:f=>{e.chatMessage=f,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:f=>{Ln(e,e.sessionKey,{verboseLevel:f==="off"?null:f}).then(()=>{Ee(e)})},onFillerChange:f=>{Ln(e,e.sessionKey,{fillerEnabled:f}).then(()=>{Ee(e)})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:u,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,disabledReason:l,error:e.lastError,sessions:e.sessionsResult,focusMode:!1,onRefresh:()=>(e.resetToolStream(),Promise.all([Ee(e),Ls(e)])),onToggleFocusMode:()=>{},onChatScroll:f=>e.handleChatScroll(f),nearBottom:e.chatUserNearBottom,onDraftChange:f=>e.chatMessage=f,attachments:e.chatAttachments,onAttachmentsChange:f=>e.chatAttachments=f,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:f=>e.removeQueuedMessage(f),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:f=>e.handleOpenSidebar(f),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:f=>e.handleSplitRatioChange(f),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?wv({connected:e.connected,wsProps:Qt(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&ot(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?sn(e,{reset:!0}):$t(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(s=(i=e.channelsSnapshot)==null?void 0:i.channelMeta)!=null&&s.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((r=e.channelsSnapshot)==null?void 0:r.channelOrder)??[],channelLabels:((o=e.channelsSnapshot)==null?void 0:o.channelLabels)??{},channelMeta:((a=e.channelsSnapshot)==null?void 0:a.channelMeta)??[],agentIds:(()=>{var c;const l=ie(e);return((c=l==null?void 0:l.agents)==null?void 0:c.map(u=>u.id))??[]})(),runsJobId:e.cronRunsJobId,runs:e.cronRuns,newEventModalOpen:e.cronNewEventModal,onNewEventModalOpen:()=>{e.cronNewEventModal=!0},onNewEventModalClose:()=>{e.cronNewEventModal=!1},detailJobId:e.cronDetailJobId,onDetailOpen:l=>{e.cronDetailJobId=l.id,Ts(e,l.id)},onDetailClose:()=>{e.cronDetailJobId=null},onFormChange:l=>e.cronForm={...e.cronForm,...l},onRefresh:()=>e.loadCron(),onAdd:()=>{Yd(e).then(()=>{e.cronNewEventModal=!1})},onToggle:(l,c)=>Xd(e,l,c),onRun:l=>Zd(e,l),onRemove:l=>Jd(e,l),onLoadRuns:l=>Ts(e,l)},skillsProps:{loading:e.skillsLoading,report:e.skillsReport,error:e.skillsError,filter:e.skillsFilter,edits:e.skillEdits,messages:e.skillMessages,busyKey:e.skillsBusyKey,onFilterChange:l=>e.skillsFilter=l,onRefresh:()=>ot(e,{clearMessages:!0}),onToggle:(l,c)=>ql(e,l,c),onEdit:(l,c)=>Hl(e,l,c),onSaveKey:l=>Vl(e,l),onInstall:(l,c,u)=>Gl(e,l,c,u)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?sn(e,{reset:!0}):$t(e,{reset:!0})},sessionLogsProps:{loading:e.sessionLogsLoading,error:e.sessionLogsError,entries:e.sessionLogsEntries,agents:e.sessionLogsAgents,filterText:e.sessionLogsFilterText,typeFilters:e.sessionLogsTypeFilters,agentFilters:e.sessionLogsAgentFilters,autoFollow:e.sessionLogsAutoFollow,onFilterTextChange:l=>e.sessionLogsFilterText=l,onTypeToggle:(l,c)=>{const u=e;u.sessionLogsTypeFilters={...u.sessionLogsTypeFilters,[l]:c}},onAgentToggle:(l,c)=>{const u=e;u.sessionLogsAgentFilters={...u.sessionLogsAgentFilters,[l]:c}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onRefresh:()=>{sn(e,{reset:!0})},onExport:(l,c)=>e.exportSessionLogs(l,c),onScroll:l=>e.handleSessionLogsScroll(l)},loading:e.logsLoading,error:e.logsError,file:e.logsFile,entries:e.logsEntries,filterText:e.logsFilterText,levelFilters:e.logsLevelFilters,autoFollow:e.logsAutoFollow,truncated:e.logsTruncated,onFilterTextChange:l=>e.logsFilterText=l,onLevelToggle:(l,c)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:c}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>$t(e,{reset:!0}),onExport:(l,c)=>e.exportSessionLogs(l,c),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),h``)}function kb(e){const t=new Date(e),n=t.toLocaleDateString("en-GB",{day:"2-digit",month:"short"}),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"});return`${n} ${i}`}function Za(e){return e.startsWith("memory/public/")?"public":e.startsWith("memory/shared/")?"shared":"other"}function Sb(e,t,n){return h`
|
|
3177
|
+
`;if(e.connected&&e.accessState.checked){const{accessState:l}=e;if(l.hasPins&&!l.authenticated)return Fa({show:!0,isFirstTime:!1,accounts:l.accounts,error:l.error,busy:l.busy,onSubmit:(c,d)=>{d!=null&&e.handlePinSubmit(c,d)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(c,d,f)=>e.handleChangePin(c,d,f)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return Fa({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:c=>e.handleSetMasterPin(c)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",k}if(e.setup){const l=yb(e.channelsSnapshot),c=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],d=vb(e.channelsSnapshot),f=bb(e);return tf({connected:e.connected,assistantName:e.assistantName,currentStep:e.setupStep,licenseKey:e.licenseKey,licenseBusy:e.licenseBusy,licenseValid:e.licenseValid,licenseMessage:e.licenseMessage,licenseTier:e.licenseTier,licenseDeviceId:e.licenseDeviceId,licenseStoredKey:e.licenseStoredKey,onLicenseKeyChange:u=>e.handleLicenseKeyChange(u),onLicenseActivate:()=>e.handleLicenseActivate(),onLicenseRemove:async()=>{await e.handleLicenseRemove(),e.licenseRemoveConfirm=!1},licenseRemoveConfirm:e.licenseRemoveConfirm,onLicenseRemoveConfirm:()=>{e.licenseRemoveConfirm=!0},onLicenseRemoveCancel:()=>{e.licenseRemoveConfirm=!1},authConnected:e.authConnected,authBusy:e.authBusy,authMessage:e.authMessage,authUrl:e.authUrl,authCodeInput:e.authCodeInput,authExpiresIn:e.authExpiresIn,whatsappBusy:e.whatsappBusy,whatsappLoginMessage:e.whatsappLoginMessage,whatsappLoginQrDataUrl:e.whatsappLoginQrDataUrl,whatsappLoginConnected:e.whatsappLoginConnected,whatsappChannelStatus:l,whatsappAccounts:c,whatsappActiveQrAccountId:e.whatsappActiveQrAccountId,whatsappAccountSaving:e.whatsappAccountSaving,gatewayHealthy:e.gatewayHealthy,gatewayHealthLoading:e.gatewayHealthLoading,gatewayHealthMessage:e.gatewayHealthMessage,gatewayRestartBusy:e.gatewayRestartBusy,updateAvailable:e.updateAvailable,currentVersion:e.currentVersion,latestVersion:e.latestVersion,updateChecking:e.updateChecking,updateRunning:e.updateRunning,updateMessage:e.updateMessage,updateProgressSteps:e.updateProgressSteps,updateLastResult:e.updateLastResult,onUpdateCheck:()=>e.handleUpdateCheck(),onUpdateRun:()=>e.handleUpdateRun(),onUpdateDismissResult:()=>e.handleUpdateDismissResult(),uninstallConfirm:e.uninstallConfirm,uninstallBusy:e.uninstallBusy,uninstallDone:e.uninstallDone,uninstallError:e.uninstallError,uninstallConfirmText:e.uninstallConfirmText,onUninstallConfirm:()=>e.handleUninstallConfirm(),onUninstallCancel:()=>e.handleUninstallCancel(),onUninstallConfirmTextChange:u=>e.handleUninstallConfirmTextChange(u),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:u=>e.handleAuthSubmitCode(u),onAuthCodeChange:u=>e.handleAuthCodeChange(u),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async u=>{await e.handleWhatsAppStart(!0,u),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(u),await q(e,!0),e.requestUpdate())},onWhatsAppReset:async u=>{await e.handleWhatsAppLogout(u),await e.handleWhatsAppStart(!0,u),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(u),await q(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await q(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),q(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:u=>e.handleRemoveWhatsAppAccount(u),workspaces:e.workspaces,workspacesLoading:e.workspacesLoading,workspacesError:e.workspacesError,addingWorkspace:e.addingWorkspace,newWorkspaceName:e.newWorkspaceName,newWorkspacePath:e.newWorkspacePath,workspaceSaving:e.workspaceSaving,workspaceRemoveConfirm:e.workspaceRemoveConfirm,newWorkspacePin:e.newWorkspacePin,onSetNewWorkspacePin:u=>{e.newWorkspacePin=u},onWorkspaceCreate:async(u,p)=>{const b=e.newWorkspacePin;await e.handleWorkspaceCreate(u,p),b.match(/^\d{4,6}$/)&&(await rb(e,u,b),e.newWorkspacePin="")},onWorkspaceRemove:u=>e.handleWorkspaceRemove(u),onSetAddingWorkspace:u=>{e.addingWorkspace=u},onSetNewWorkspaceName:u=>{e.newWorkspaceName=u},onSetNewWorkspacePath:u=>{e.newWorkspacePath=u},onSetWorkspaceRemoveConfirm:u=>{e.workspaceRemoveConfirm=u},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(u,p)=>e.handleWorkspaceRename(u,p),whatsappDmPolicy:(()=>{const u=ie(e),p=u==null?void 0:u.whatsappAccountId,b=p?c.find(w=>w.accountId===p):c[0];return(b==null?void 0:b.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var x;const u=ie(e),p=u==null?void 0:u.whatsappAccountId,b=p?c.find(E=>E.accountId===p):c[0];if(!b)return;const S=b.dmPolicy!=null&&b.dmPolicy!=="disabled"?"disabled":"open",C=S==="open"?{dmPolicy:S,allowFrom:["*"]}:{dmPolicy:S};try{const E=await e.client.request("config.get"),T=E.config,I=(x=T==null?void 0:T.channels)==null?void 0:x.whatsapp,Q=((I==null?void 0:I.accounts)??{})[b.accountId]?{channels:{whatsapp:{accounts:{[b.accountId]:C}}}}:{channels:{whatsapp:C}};await e.client.request("config.patch",{raw:JSON.stringify(Q),baseHash:E.hash,note:`WhatsApp DM policy → ${S}`,skipRestart:!0}),await q(e,!1)}catch(E){console.error("DM toggle failed:",E)}},whatsappModel:(()=>{var x,E;const u=ie(e);if(!u)return null;const p=u.agents.find(T=>T.id.endsWith("-public")||T.id==="public");if(!p)return null;const b=(x=e.configSnapshot)==null?void 0:x.config,w=(E=b==null?void 0:b.agents)==null?void 0:E.list;if(!Array.isArray(w))return null;const S=w.find(T=>T.id===p.id);if(!(S!=null&&S.model))return null;const C=typeof S.model=="string"?S.model:S.model.primary;return(C==null?void 0:C.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async u=>{const p=ie(e);if(!p)return;const b=p.agents.find(w=>w.id.endsWith("-public")||w.id==="public");if(b)try{const w=await e.client.request("config.get"),S=w.config,C=(S==null?void 0:S.agents)??{},x=Array.isArray(C.list)?[...C.list]:[],E=x.findIndex(I=>I.id===b.id);if(u)E>=0?x[E]={...x[E],model:u}:x.push({id:b.id,model:u});else if(E>=0){const{model:I,...U}=x[E];Object.keys(U).length<=1?x.splice(E,1):x[E]=U}const T=x.length>0?{agents:{list:x}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(T),baseHash:w.hash,note:`Public agent model → ${u||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(w){console.error("Model change failed:",w)}},whatsappThinkingLevel:(()=>{var C,x,E;const u=ie(e);if(!u)return null;const p=u.agents.find(T=>T.id.endsWith("-public")||T.id==="public");if(!p)return null;const b=(C=e.configSnapshot)==null?void 0:C.config,w=(x=b==null?void 0:b.agents)==null?void 0:x.list;if(!Array.isArray(w))return null;const S=w.find(T=>T.id===p.id);return((E=S==null?void 0:S.thinkingLevel)==null?void 0:E.trim())||null})(),onWhatsAppThinkingChange:async u=>{const p=ie(e);if(!p)return;const b=p.agents.find(w=>w.id.endsWith("-public")||w.id==="public");if(b)try{const w=await e.client.request("config.get"),S=w.config,C=(S==null?void 0:S.agents)??{},x=Array.isArray(C.list)?[...C.list]:[],E=x.findIndex(U=>U.id===b.id),T=u==="off"?void 0:u;if(T)E>=0?x[E]={...x[E],thinkingLevel:T}:x.push({id:b.id,thinkingLevel:T});else if(E>=0){const{thinkingLevel:U,...Q}=x[E];Object.keys(Q).length<=1?x.splice(E,1):x[E]=Q}const I=x.length>0?{agents:{list:x}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(I),baseHash:w.hash,note:`Public agent thinking → ${T||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(w){console.error("Thinking change failed:",w)}},whatsappGroupPolicy:(()=>{var E,T;const u=(E=e.configSnapshot)==null?void 0:E.config,p=(T=u==null?void 0:u.channels)==null?void 0:T.whatsapp,b=ie(e),w=b==null?void 0:b.whatsappAccountId,S=(p==null?void 0:p.accounts)??{},C=w?S[w]:void 0;return(C==null?void 0:C.groupPolicy)??(p==null?void 0:p.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var T,I;const u=(T=e.configSnapshot)==null?void 0:T.config,p=(I=u==null?void 0:u.channels)==null?void 0:I.whatsapp,b=ie(e),w=b==null?void 0:b.whatsappAccountId,S=(p==null?void 0:p.accounts)??{},C=w?S[w]:void 0,E=((C==null?void 0:C.groups)??(p==null?void 0:p.groups)??{})["*"];return(E==null?void 0:E.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var b;const u=ie(e),p=u==null?void 0:u.whatsappAccountId;try{const w=await e.client.request("config.get"),S=w.config,C=((b=S==null?void 0:S.channels)==null?void 0:b.whatsapp)??{},x=C.accounts??{},E=p?x[p]:void 0,T=(E==null?void 0:E.groupPolicy)??C.groupPolicy??"allowlist",I=T==="disabled"||T==="allowlist",U=I?"open":"disabled",Q=I?{"*":{}}:void 0,He={groupPolicy:U};Q&&(He.groups=Q);const Rt=E?{channels:{whatsapp:{accounts:{[p]:He}}}}:{channels:{whatsapp:He}};await e.client.request("config.patch",{raw:JSON.stringify(Rt),baseHash:w.hash,note:`WhatsApp groups → ${U}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(w){console.error("Group toggle failed:",w)}},onWhatsAppGroupMentionChange:async u=>{var w;const p=ie(e),b=p==null?void 0:p.whatsappAccountId;try{const S=await e.client.request("config.get"),C=S.config,E=(((w=C==null?void 0:C.channels)==null?void 0:w.whatsapp)??{}).accounts??{},T=b?E[b]:void 0,I={"*":{requireMention:u}},U=T?{channels:{whatsapp:{accounts:{[b]:{groups:I}}}}}:{channels:{whatsapp:{groups:I}}};await e.client.request("config.patch",{raw:JSON.stringify(U),baseHash:S.hash,note:`WhatsApp group mention → ${u?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(S){console.error("Group mention change failed:",S)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:d.configured,imessageRunning:d.running,imessageConnected:d.connected,imessageLastError:d.lastError,imessageSelfChatMode:d.selfChatMode,imessageCliPath:d.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:f,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const u=await e.client.request("config.get"),p=u.config,b=(p==null?void 0:p.bindings)??[],w=ie(e),S=w==null?void 0:w.agents.find(I=>I.id.endsWith("-admin")||I.id==="admin"),C=(S==null?void 0:S.id)??"admin",x=b.filter(I=>{var U;return((U=I.match)==null?void 0:U.channel)!=="imessage"}),E=[{agentId:C,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],T=[...x,...E];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:T}),baseHash:u.hash,note:"Enable iMessage (self-chat) for "+((w==null?void 0:w.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([q(e,!0),Ce(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await q(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const u=await e.client.request("config.get"),p=u.config,w=((p==null?void 0:p.bindings)??[]).filter(S=>{var C;return((C=S.match)==null?void 0:C.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:w}),baseHash:u.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([q(e,!0),Ce(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const u=await e.client.request("config.get"),p=u.config,b=(p==null?void 0:p.bindings)??[],w=ie(e),S=w==null?void 0:w.agents.find(T=>T.id.endsWith("-admin")||T.id==="admin"),C=(S==null?void 0:S.id)??"admin",x=b.filter(T=>{var I;return((I=T.match)==null?void 0:I.channel)!=="imessage"}),E=[{agentId:C,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:[...x,...E]}),baseHash:u.hash,note:"Reassign iMessage to "+((w==null?void 0:w.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([q(e,!0),Ce(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:u=>{e.infoModalOpen=u},onInfoModalClose:()=>{e.infoModalOpen=null},isMaster:e.accessState.master,apiKeyProviders:e.apiKeyProviders,apiKeyModalOpen:e.apiKeyModalOpen,apiKeyBusy:e.apiKeyBusy,apiKeyError:e.apiKeyError,apiKeySuccess:e.apiKeySuccess,apiKeySavingProvider:e.apiKeySavingProvider,onApiKeyModalOpen:()=>{e.apiKeyModalOpen=!0,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeyModalClose:()=>{e.apiKeyModalOpen=!1,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeySave:async(u,p)=>{e.apiKeySavingProvider=u,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Ka(e.client,u,p);const b=`${u} key saved`;e.apiKeySuccess=b,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}u==="anthropic"&&await e.handleAuthStatusCheck(),setTimeout(()=>{e.apiKeySuccess===b&&(e.apiKeySuccess=null)},2500)}catch(b){e.apiKeyError=b instanceof Error?b.message:"Failed to save key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyRemove:async u=>{e.apiKeySavingProvider=u,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Wv(e.client,u);const p=`${u} key removed`;e.apiKeySuccess=p,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===p&&(e.apiKeySuccess=null)},2500)}catch(p){e.apiKeyError=p instanceof Error?p.message:"Failed to remove key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},authApiKeyMode:e.authApiKeyMode,authApiKeyInput:e.authApiKeyInput,authApiKeyBusy:e.authApiKeyBusy,authApiKeyError:e.authApiKeyError,onAuthApiKeyToggle:()=>{e.authApiKeyMode=!e.authApiKeyMode,e.authApiKeyError=null},onAuthApiKeyChange:u=>{e.authApiKeyInput=u},onAuthApiKeySubmit:async()=>{const u=e.authApiKeyInput.trim();if(u){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await Ka(e.client,"anthropic",u),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(p){e.authApiKeyError=p instanceof Error?p.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var p;const u=e.selectedWorkspace??((p=e.workspaces[0])==null?void 0:p.name);return u?e.accessState.accounts.some(b=>b.id===u):!1})(),accountPinModalOpen:e.accountPinModalOpen,accountPinBusy:e.accountPinBusy,accountPinError:e.accountPinError,accountPinSuccess:e.accountPinSuccess,onAccountPinModalOpen:()=>{e.accountPinModalOpen=!0,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinModalClose:()=>{e.accountPinModalOpen=!1,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinSave:(u,p)=>{var w;const b=e.selectedWorkspace??((w=e.workspaces[0])==null?void 0:w.name);b&&e.handleAccountPinSave(b,u,p)},publicChatEnabled:(()=>{var b;const u=(b=e.configSnapshot)==null?void 0:b.config,p=u==null?void 0:u.publicChat;return(p==null?void 0:p.enabled)===!0})(),publicChatAuthMode:(()=>{var w;const u=(w=e.configSnapshot)==null?void 0:w.config,p=u==null?void 0:u.publicChat,b=p==null?void 0:p.auth;return b==="verified"||b==="choice"?b:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var u;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const p=await e.client.request("config.get"),b=p.config,w=((u=b==null?void 0:b.publicChat)==null?void 0:u.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!w}}),baseHash:p.hash,note:`Public chat → ${w?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(p){console.error("Public chat toggle failed:",p)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async u=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const p=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:u}}),baseHash:p.hash,note:`Public chat auth → ${u}`}),e.configSnapshot=await e.client.request("config.get")}catch(p){console.error("Public chat auth mode change failed:",p)}finally{e.publicChatToggleBusy=!1}}},wsProps:ub(e)})}if(e.filesPage){const l=hb(e);return Wh({connected:e.connected,wsProps:Qt(e),loading:e.filesLoading,tree:e.filesTree,root:e.filesRoot,error:e.filesError,selectedPath:e.filesSelectedPath,selectedPaths:e.filesSelectedPaths,previewContent:e.filesPreviewContent,previewLoading:e.filesPreviewLoading,previewBinary:e.filesPreviewBinary,previewSize:e.filesPreviewSize,expandedDirs:e.filesExpandedDirs,message:e.filesMessage,uploadBusy:e.filesUploadBusy,reindexBusy:e.filesReindexBusy,memoryStatus:e.filesMemoryStatus,onRefresh:()=>mn(e,l),onReindex:()=>Zp(e,l),onSelectFile:c=>qp(e,c,l),onToggleSelectFile:c=>Vp(e,c,l),onToggleDir:c=>Jp(e,c),onUpload:(c,d)=>Yp(e,c,d,l),onDownload:c=>ec(e,c,l),onBulkDownload:()=>Gp(e,l),onDelete:c=>Xp(e,c,l),onMove:(c,d)=>tc(e,c,d,l),onMoveToDir:(c,d)=>Qp(e,c,d,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:c=>{const d=e.filesSearchAgentId??l;eh(e,c,d)},onSearchAgentChange:c=>{e.filesSearchAgentId=c},onSearchClear:()=>{th(e)},onSearchQueryChange:c=>{e.filesSearchQuery=c}})}if(e.browserPage)return Rh({connected:e.connected,active:e.browserScreencastActive,loading:e.browserLoading,error:e.browserError,inputMode:e.browserInputMode,fullscreen:e.browserFullscreen,handoffPending:e.browserHandoffPending,handoffReason:e.browserHandoffReason,onStart:()=>Iv(e),onStop:()=>Rv(e),onToggleInput:()=>Dv(e),onToggleFullscreen:()=>Ov(e),onCompleteHandoff:()=>Nv(e),onCanvasMouseDown:l=>{const d=l.target.getBoundingClientRect(),u=an().translateCoordinates(l.clientX-d.left,l.clientY-d.top);vs(e,"mousePressed",u.x,u.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const d=l.target.getBoundingClientRect(),u=an().translateCoordinates(l.clientX-d.left,l.clientY-d.top);vs(e,"mouseReleased",u.x,u.y)},onCanvasMouseMove:l=>{const c=an();if(c.shouldThrottleMouseMove())return;const f=l.target.getBoundingClientRect(),u=c.translateCoordinates(l.clientX-f.left,l.clientY-f.top);vs(e,"mouseMoved",u.x,u.y)},onCanvasKeyDown:l=>{let c=0;l.altKey&&(c|=1),l.ctrlKey&&(c|=2),l.metaKey&&(c|=4),l.shiftKey&&(c|=8),bs(e,"keyDown",l.key,{code:l.code,modifiers:c||void 0}),l.key.length===1&&bs(e,"char",l.key,{text:l.key})},onCanvasKeyUp:l=>{bs(e,"keyUp",l.key,{code:l.code})}});if(e.adminsPage){const l=db(e),c=pb(e);return sf({connected:e.connected,wsProps:Qt(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>_i(e,l),onAdd:d=>{hu(e,d,l,c).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:d=>fu(e,d,l,c),onNewPhoneChange:d=>e.handleAdminsNewPhoneChange(d)})}if(e.customersPage){const l=fb(e);return lf({connected:e.connected,wsProps:Qt(e),loading:e.customersLoading,saving:e.customersSaving,records:e.customersRecords,error:e.customersError,searchQuery:e.customersSearchQuery,editingId:e.customersEditingId,showAddForm:e.customersShowAddForm,newRecordPhone:e.customersNewPhone,newRecordName:e.customersNewName,onSearch:c=>e.customersSearchQuery=c,onSearchSubmit:()=>ct(e,l),onAdd:(c,d)=>gu(e,c,d,l),onDelete:c=>mu(e,c,l),onSetField:(c,d,f)=>yu(e,c,d,f,l),onDeleteField:(c,d)=>vu(e,c,d,l),onToggleExpand:c=>{e.customersEditingId=e.customersEditingId===c?null:c},onShowAddForm:()=>e.customersShowAddForm=!0,onCancelAddForm:()=>{e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName=""},onNewRecordPhoneChange:c=>e.handleCustomersNewPhoneChange(c),onNewRecordNameChange:c=>e.handleCustomersNewNameChange(c),onRefresh:()=>ct(e,l)})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",c=Ya(e),d=e.chatAvatarUrl??c??null,f=(()=>{var b;const u=(b=e.configSnapshot)==null?void 0:b.config,p=u==null?void 0:u.publicChat;return(p==null?void 0:p.enabled)===!0})();return jy({connected:e.connected,wsProps:Qt(e),publicChatEnabled:f,publicChatAccountId:e.selectedWorkspace??void 0,sessionKey:e.sessionKey,onSessionKeyChange:u=>{e.sessionKey=u,e.chatMessage="",e.chatAttachments=[],e.chatStream=null,e.chatInterimText=null,e.chatSuggestion=null,e.chatStreamStartedAt=null,e.chatRunId=null,e.chatQueue=[],e.resetToolStream(),e.resetChatScroll(),e.applySettings({...e.settings,sessionKey:u,lastActiveSessionKey:u}),e.loadAssistantIdentity(),Ee(e),Ls(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:u=>{Ln(e,e.sessionKey,{model:u}).then(()=>{Ee(e)})},onThinkingLevelChange:u=>{Ln(e,e.sessionKey,{thinkingLevel:u==="off"?null:u}).then(()=>{Ee(e)})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:u=>{e.chatMessage=u,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:u=>{Ln(e,e.sessionKey,{verboseLevel:u==="off"?null:u}).then(()=>{Ee(e)})},onFillerChange:u=>{Ln(e,e.sessionKey,{fillerEnabled:u}).then(()=>{Ee(e)})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:d,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,disabledReason:l,error:e.lastError,sessions:e.sessionsResult,focusMode:!1,onRefresh:()=>(e.resetToolStream(),Promise.all([Ee(e),Ls(e)])),onToggleFocusMode:()=>{},onChatScroll:u=>e.handleChatScroll(u),nearBottom:e.chatUserNearBottom,onDraftChange:u=>e.chatMessage=u,attachments:e.chatAttachments,onAttachmentsChange:u=>e.chatAttachments=u,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:u=>e.removeQueuedMessage(u),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:u=>e.handleOpenSidebar(u),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:u=>e.handleSplitRatioChange(u),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?wv({connected:e.connected,wsProps:Qt(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&ot(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?sn(e,{reset:!0}):xt(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(s=(i=e.channelsSnapshot)==null?void 0:i.channelMeta)!=null&&s.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((r=e.channelsSnapshot)==null?void 0:r.channelOrder)??[],channelLabels:((o=e.channelsSnapshot)==null?void 0:o.channelLabels)??{},channelMeta:((a=e.channelsSnapshot)==null?void 0:a.channelMeta)??[],agentIds:(()=>{var c;const l=ie(e);return((c=l==null?void 0:l.agents)==null?void 0:c.map(d=>d.id))??[]})(),runsJobId:e.cronRunsJobId,runs:e.cronRuns,newEventModalOpen:e.cronNewEventModal,onNewEventModalOpen:()=>{e.cronNewEventModal=!0},onNewEventModalClose:()=>{e.cronNewEventModal=!1},detailJobId:e.cronDetailJobId,onDetailOpen:l=>{e.cronDetailJobId=l.id,Cs(e,l.id)},onDetailClose:()=>{e.cronDetailJobId=null},onFormChange:l=>e.cronForm={...e.cronForm,...l},onRefresh:()=>e.loadCron(),onAdd:()=>{Qd(e).then(()=>{e.cronNewEventModal=!1})},onToggle:(l,c)=>Yd(e,l,c),onRun:l=>Xd(e,l),onRemove:l=>Zd(e,l),onLoadRuns:l=>Cs(e,l)},skillsProps:{loading:e.skillsLoading,report:e.skillsReport,error:e.skillsError,filter:e.skillsFilter,edits:e.skillEdits,messages:e.skillMessages,busyKey:e.skillsBusyKey,onFilterChange:l=>e.skillsFilter=l,onRefresh:()=>ot(e,{clearMessages:!0}),onToggle:(l,c)=>Hl(e,l,c),onEdit:(l,c)=>jl(e,l,c),onSaveKey:l=>ql(e,l),onInstall:(l,c,d)=>Vl(e,l,c,d)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?sn(e,{reset:!0}):xt(e,{reset:!0})},sessionLogsProps:{loading:e.sessionLogsLoading,error:e.sessionLogsError,entries:e.sessionLogsEntries,agents:e.sessionLogsAgents,filterText:e.sessionLogsFilterText,typeFilters:e.sessionLogsTypeFilters,agentFilters:e.sessionLogsAgentFilters,autoFollow:e.sessionLogsAutoFollow,onFilterTextChange:l=>e.sessionLogsFilterText=l,onTypeToggle:(l,c)=>{const d=e;d.sessionLogsTypeFilters={...d.sessionLogsTypeFilters,[l]:c}},onAgentToggle:(l,c)=>{const d=e;d.sessionLogsAgentFilters={...d.sessionLogsAgentFilters,[l]:c}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onRefresh:()=>{sn(e,{reset:!0})},onExport:(l,c)=>e.exportSessionLogs(l,c),onScroll:l=>e.handleSessionLogsScroll(l)},loading:e.logsLoading,error:e.logsError,file:e.logsFile,entries:e.logsEntries,filterText:e.logsFilterText,levelFilters:e.logsLevelFilters,autoFollow:e.logsAutoFollow,truncated:e.logsTruncated,onFilterTextChange:l=>e.logsFilterText=l,onLevelToggle:(l,c)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:c}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>xt(e,{reset:!0}),onExport:(l,c)=>e.exportSessionLogs(l,c),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),h``)}function kb(e){const t=new Date(e),n=t.toLocaleDateString("en-GB",{day:"2-digit",month:"short"}),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"});return`${n} ${i}`}function Xa(e){return e.startsWith("memory/public/")?"public":e.startsWith("memory/shared/")?"shared":"other"}function Sb(e,t,n){return h`
|
|
3178
3178
|
<div class="audit-modal-overlay" @click=${s=>{s.target.classList.contains("audit-modal-overlay")&&n()}}>
|
|
3179
3179
|
<div class="audit-modal-card">
|
|
3180
3180
|
<div class="audit-modal-header">
|
|
@@ -3190,7 +3190,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3190
3190
|
${e.map(s=>h`
|
|
3191
3191
|
<div class="audit-modal-entry">
|
|
3192
3192
|
<div class="audit-modal-entry-path">
|
|
3193
|
-
<span class="audit-modal-folder audit-modal-folder--${
|
|
3193
|
+
<span class="audit-modal-folder audit-modal-folder--${Xa(s.path)}">${Xa(s.path)}</span>
|
|
3194
3194
|
<a href="/files" class="audit-modal-path-link">${s.path}</a>
|
|
3195
3195
|
</div>
|
|
3196
3196
|
<div class="audit-modal-entry-meta">
|
|
@@ -3206,7 +3206,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
|
|
|
3206
3206
|
`}
|
|
3207
3207
|
</div>
|
|
3208
3208
|
</div>
|
|
3209
|
-
`}const Ab={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},$b={name:"",description:"",agentId:"",enabled:!0,scheduleKind:"every",scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"0 7 * * *",cronTz:"",sessionTarget:"main",wakeMode:"next-heartbeat",payloadKind:"systemEvent",payloadText:"",deliver:!1,channel:"last",to:"",timeoutSeconds:"",postToMainPrefix:""};function xb(e){e.basePath=ph();const t=Ie();if(Mh(t.accentColor),window.scrollTo(0,0),rh(e),e.publicChat){const n=Ie();document.title=`Chat with ${n.name}`,$e(e);return}if(e.setup){document.title=`${t.name} Setup`,$e(e);return}if(e.filesPage){document.title=`${t.name} Files`,ah(e),$e(e);return}if(e.browserPage){document.title=`${t.name} Browser`,$e(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,$e(e);return}if(e.customersPage){document.title=`${t.name} Customers`,$e(e);return}if(e.chatPage){document.title=`${t.name} Chat`,$e(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,$e(e);return}mh(e,!0),hh(e),fh(e),window.addEventListener("popstate",e.popStateHandler),ch(e),$e(e),ih(e),e.tab==="logs"&&(e.logsSubTab==="session"?yr(e):gr(e)),e.tab==="debug"&&br(e)}function Eb(e){jd(e)}function Tb(e){var t;window.removeEventListener("popstate",e.popStateHandler),sh(e),mr(e),vr(e),wr(e),oh(e),lh(e),gh(e),(t=e.topbarObserver)==null||t.disconnect(),e.topbarObserver=null}function Cb(e,t){if(!e.publicChat){if(e.filesPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleFilesLoad&&e.handleFilesLoad(),e.adminsPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdminsLoad&&e.handleAdminsLoad(),e.customersPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleCustomersLoad&&e.handleCustomersLoad(),e.chatPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleChatLoad&&e.handleChatLoad(),e.advancedPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdvancedLoad&&e.handleAdvancedLoad(),e.setup&&e.connected){const n=t.has("connected")&&t.get("connected")===!1;n&&e.handleLicenseStatusCheck&&e.licenseValid===null&&!e.licenseBusy&&e.handleLicenseStatusCheck(),n&&e.handleUpdateCheck&&e.handleUpdateCheck();const i=t.has("setupStep")&&e.setupStep==="auth";(n||i)&&e.setupStep==="auth"&&e.handleAuthStatusCheck&&e.authConnected===null&&!e.authBusy&&e.handleAuthStatusCheck(),e.setupStep==="whatsapp"&&t.has("setupStep")&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(r=>{e.channelsSnapshot=r,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1})),t.has("whatsappLoginConnected")&&e.whatsappLoginConnected===!0&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(s=>{e.channelsSnapshot=s,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1}))}if(e.tab==="chat"&&!e.advancedPage&&(t.has("chatMessages")||t.has("chatToolMessages")||t.has("chatStream")||t.has("chatLoading")||t.has("tab"))){const n=t.has("tab"),i=t.has("chatLoading")&&t.get("chatLoading")===!0&&e.chatLoading===!1;hn(e,n||i||!e.chatHasAutoScrolled)}e.tab==="logs"&&!e.advancedPage&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&wl(e,t.has("tab")||t.has("logsAutoFollow"))}}function _b(e){const t={name:(e==null?void 0:e.name)??"",displayName:(e==null?void 0:e.displayName)??"",about:(e==null?void 0:e.about)??"",picture:(e==null?void 0:e.picture)??"",banner:(e==null?void 0:e.banner)??"",website:(e==null?void 0:e.website)??"",nip05:(e==null?void 0:e.nip05)??"",lud16:(e==null?void 0:e.lud16)??""};return{values:t,original:{...t},saving:!1,importing:!1,error:null,success:null,fieldErrors:{},showAdvanced:!!(e!=null&&e.banner||e!=null&&e.website||e!=null&&e.nip05||e!=null&&e.lud16)}}async function Mb(e,t,n){await sr(e,t,n),await q(e,!0)}async function Pb(e,t){await Al(e,t),await q(e,!0)}async function Lb(e,t){await $l(e,t),await q(e,!0)}async function Ib(e,t){await xl(e,t)}async function Rb(e,t){await El(e,t)}async function Nb(e){await Vd(e),await Te(e),await q(e,!0)}async function Db(e){await Te(e),await q(e,!0)}function Ob(e){if(!Array.isArray(e))return{};const t={};for(const n of e){if(typeof n!="string")continue;const[i,...s]=n.split(":");if(!i||s.length===0)continue;const r=i.trim(),o=s.join(":").trim();r&&o&&(t[r]=o)}return t}function wu(e){var n,i,s;return((s=(((i=(n=e.channelsSnapshot)==null?void 0:n.channelAccounts)==null?void 0:i.nostr)??[])[0])==null?void 0:s.accountId)??e.nostrProfileAccountId??"default"}function ku(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function Bb(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=_b(n??void 0)}function Fb(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function Ub(e,t,n){const i=e.nostrProfileFormState;i&&(e.nostrProfileFormState={...i,values:{...i.values,[t]:n},fieldErrors:{...i.fieldErrors,[t]:""}})}function Wb(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function Kb(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=wu(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const i=await fetch(ku(n),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.values)}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const r=(s==null?void 0:s.error)??`Profile update failed (${i.status})`;e.nostrProfileFormState={...t,saving:!1,error:r,success:null,fieldErrors:Ob(s==null?void 0:s.details)};return}if(!s.persisted){e.nostrProfileFormState={...t,saving:!1,error:"Profile publish failed on all relays.",success:null};return}e.nostrProfileFormState={...t,saving:!1,error:null,success:"Profile published to relays.",fieldErrors:{},original:{...t.values}},await q(e,!0)}catch(i){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(i)}`,success:null}}}async function zb(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=wu(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const i=await fetch(ku(n,"/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoMerge:!0})}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const l=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:l,success:null};return}const r=s.merged??s.imported??null,o=r?{...t.values,...r}:t.values,a=!!(o.banner||o.website||o.nip05||o.lud16);e.nostrProfileFormState={...t,importing:!1,values:o,error:null,success:s.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:a},s.saved&&await q(e,!0)}catch(i){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(i)}`,success:null}}}async function jb(e){if(e.client){e.authBusy=!0,e.authMessage=null;try{const t=await e.client.request("auth.status",{});e.authConnected=t.connected,e.authExpiresIn=t.expiresIn??null,e.authMessage=t.message??null,t.connected&&(e.setupStep="whatsapp")}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to check auth status"}finally{e.authBusy=!1}}}async function Hb(e){if(e.client){e.authBusy=!0,e.authMessage=null,e.authUrl=null,e.authConnected=null;try{const t=await e.client.request("auth.oauth.start",{provider:"anthropic"});e.authUrl=t.authUrl,e.authMessage=t.message??"Sign in with your Claude Pro account"}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to start auth flow"}finally{e.authBusy=!1}}}async function qb(e,t){if(e.client){e.authBusy=!0,e.authMessage="Verifying code...";try{await e.client.request("auth.oauth.code",{code:t});const n=await e.client.request("auth.oauth.wait",{timeoutMs:3e4});n.connected?(e.authConnected=!0,e.authMessage=n.message??"Connected to Claude!",e.authUrl=null,e.authCodeInput=""):e.authMessage=n.message??"Still waiting for authorization..."}catch(n){e.authConnected=!1,e.authMessage=n instanceof Error?n.message:"Verification failed"}finally{e.authBusy=!1}}}function Vb(e,t){e.authCodeInput=t}function Gb(e){e.setupStep="whatsapp"}async function Qb(e){if(e.client){e.licenseBusy=!0,e.licenseMessage=null;try{const t=await e.client.request("license.status",{});e.licenseDeviceId=t.deviceId??null,e.licenseStoredKey=t.key??null,t.licensed?(e.licenseValid=!0,e.licenseTier=t.tier??null,e.setupStep="auth"):(e.licenseValid=null,e.setupStep="license")}catch(t){const n=t instanceof Error?t.message:String(t);n.includes("unknown method")?(e.licenseValid=!0,e.setupStep="auth"):(e.licenseValid=null,e.licenseMessage=n,e.setupStep="license")}finally{e.licenseBusy=!1}}}async function Yb(e){if(e.client&&e.licenseKey.trim()){e.licenseBusy=!0,e.licenseMessage=null,e.licenseValid=null;try{const t=await e.client.request("license.activate",{key:e.licenseKey.trim()});t.valid?(e.licenseValid=!0,e.licenseMessage=t.message??"License activated",e.licenseTier=t.tier??null,setTimeout(()=>{e.setupStep="auth"},1500)):(e.licenseValid=!1,e.licenseMessage=t.message??"Invalid license key")}catch(t){e.licenseValid=!1,e.licenseMessage=t instanceof Error?t.message:"Activation failed"}finally{e.licenseBusy=!1}}}async function Xb(e){if(e.client){e.licenseBusy=!0;try{await e.client.request("license.remove",{}),e.licenseValid=null,e.licenseKey="",e.licenseTier=null,e.licenseMessage=null,e.setupStep="license"}catch(t){e.licenseMessage=t instanceof Error?t.message:"Failed to remove license"}finally{e.licenseBusy=!1}}}function Zb(e,t){e.licenseKey=t}async function Jb(e){var t,n;if(!(!e.client||!e.connected)&&!e.gatewayHealthLoading){e.gatewayHealthLoading=!0,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("health",{probe:!0});e.gatewayHealthy=i.ok===!0,e.gatewayHealthMessage=i.ok?`Healthy${i.durationMs?` (${i.durationMs}ms)`:""}`:"Unhealthy"}catch(i){e.gatewayHealthy=!1,e.gatewayHealthMessage=`Error: ${String(i)}`}finally{e.gatewayHealthLoading=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function ew(e){var t,n,i;if(!(!e.client||e.gatewayRestartBusy)){e.gatewayRestartBusy=!0,e.gatewayHealthMessage="Restarting...",(t=e.requestUpdate)==null||t.call(e);try{const s=await e.client.request("gateway.restart",{reason:"Manual restart from setup page",delayMs:1e3});if(s.ok&&((n=s.restart)!=null&&n.ok))e.gatewayHealthMessage="Restarting...",setTimeout(()=>{window.location.reload()},3e3);else throw new Error("Restart not scheduled")}catch(s){e.gatewayHealthMessage=`Restart failed: ${String(s)}`,e.gatewayRestartBusy=!1,(i=e.requestUpdate)==null||i.call(e)}}}var tw=Object.defineProperty,nw=Object.getOwnPropertyDescriptor,m=(e,t,n,i)=>{for(var s=i>1?void 0:i?nw(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&tw(t,n,s),s};const Ss=od();function iw(){if(!window.location.search)return!1;const t=new URLSearchParams(window.location.search).get("onboarding");if(!t)return!1;const n=t.trim().toLowerCase();return n==="1"||n==="true"||n==="yes"||n==="on"}function sw(){const e=window.location.pathname;if(e==="/setup"||e.endsWith("/setup"))return!0;if(!window.location.search)return!1;const n=new URLSearchParams(window.location.search).get("setup");if(!n)return!1;const i=n.trim().toLowerCase();return i==="1"||i==="true"||i==="yes"||i==="on"}function rw(){const e=window.location.pathname;return e==="/files"||e.endsWith("/files")}function ow(){const e=window.location.pathname;return e==="/browser"||e.endsWith("/browser")}function aw(){const e=window.location.pathname;return e==="/admins"||e.endsWith("/admins")}function lw(){const e=window.location.pathname;return e==="/customers"||e.endsWith("/customers")}function cw(){const e=window.location.pathname;return e==="/chat"||e.endsWith("/chat")}function uw(){const e=window.location.pathname;return e==="/advanced"||e.endsWith("/advanced")}let g=class extends At{constructor(){super(...arguments),this.settings=qi(),this.password="",this.tab="chat",this.onboarding=iw(),this.setup=sw(),this.filesPage=rw(),this.browserPage=ow(),this.adminsPage=aw(),this.customersPage=lw(),this.chatPage=cw(),this.advancedPage=uw(),this.advancedTab="cron",this.publicChat=!!window.__TASKMASTER_PUBLIC_CHAT__,this.publicChatConfig=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__??{},this.publicChatSessionKey=null,this.publicChatAuthenticated=!1,this.publicChatAuthStep="idle",this.connected=!1,this.accessState=uu,this.theme=this.settings.theme??"system",this.themeResolved="dark",this.hello=null,this.lastError=null,this.eventLog=[],this.eventLogBuffer=[],this.toolStreamSyncTimer=null,this.sidebarCloseTimer=null,this.assistantName=Ss.name,this.assistantAvatar=Ss.avatar,this.assistantAgentId=Ss.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatToolMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.compactionStatus=null,this.chatAvatarUrl=null,this.chatThinkingLevel=null,this.chatModelProvider=null,this.chatModel=null,this.chatModelCatalog=[],this.chatVerboseLevel=null,this.chatFillerEnabled=null,this.chatQueue=[],this.chatAttachments=[],this.sidebarOpen=!1,this.sidebarContent=null,this.sidebarError=null,this.splitRatio=this.settings.splitRatio,this.nodesLoading=!1,this.nodes=[],this.devicesLoading=!1,this.devicesError=null,this.devicesList=null,this.execApprovalsLoading=!1,this.execApprovalsSaving=!1,this.execApprovalsDirty=!1,this.execApprovalsSnapshot=null,this.execApprovalsForm=null,this.execApprovalsSelectedAgent=null,this.execApprovalsTarget="gateway",this.execApprovalsTargetNodeId=null,this.execApprovalQueue=[],this.execApprovalBusy=!1,this.execApprovalError=null,this.configLoading=!1,this.configRaw=`{
|
|
3209
|
+
`}const Ab={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},xb={name:"",description:"",agentId:"",enabled:!0,scheduleKind:"every",scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"0 7 * * *",cronTz:"",sessionTarget:"main",wakeMode:"next-heartbeat",payloadKind:"systemEvent",payloadText:"",deliver:!1,channel:"last",to:"",timeoutSeconds:"",postToMainPrefix:""};function $b(e){e.basePath=dh();const t=Ie();if(_h(t.accentColor),window.scrollTo(0,0),sh(e),e.publicChat){const n=Ie();document.title=`Chat with ${n.name}`,xe(e);return}if(e.setup){document.title=`${t.name} Setup`,xe(e);return}if(e.filesPage){document.title=`${t.name} Files`,oh(e),xe(e);return}if(e.browserPage){document.title=`${t.name} Browser`,xe(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,xe(e);return}if(e.customersPage){document.title=`${t.name} Customers`,xe(e);return}if(e.chatPage){document.title=`${t.name} Chat`,xe(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,xe(e);return}gh(e,!0),ph(e),hh(e),window.addEventListener("popstate",e.popStateHandler),lh(e),xe(e),nh(e),e.tab==="logs"&&(e.logsSubTab==="session"?yr(e):gr(e)),e.tab==="debug"&&br(e)}function Eb(e){zd(e)}function Cb(e){var t;window.removeEventListener("popstate",e.popStateHandler),ih(e),mr(e),vr(e),wr(e),rh(e),ah(e),fh(e),(t=e.topbarObserver)==null||t.disconnect(),e.topbarObserver=null}function Tb(e,t){if(!e.publicChat){if(e.filesPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleFilesLoad&&e.handleFilesLoad(),e.adminsPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdminsLoad&&e.handleAdminsLoad(),e.customersPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleCustomersLoad&&e.handleCustomersLoad(),e.chatPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleChatLoad&&e.handleChatLoad(),e.advancedPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdvancedLoad&&e.handleAdvancedLoad(),e.setup&&e.connected){const n=t.has("connected")&&t.get("connected")===!1;n&&e.handleLicenseStatusCheck&&e.licenseValid===null&&!e.licenseBusy&&e.handleLicenseStatusCheck(),n&&e.handleUpdateCheck&&e.handleUpdateCheck();const i=t.has("setupStep")&&e.setupStep==="auth";(n||i)&&e.setupStep==="auth"&&e.handleAuthStatusCheck&&e.authConnected===null&&!e.authBusy&&e.handleAuthStatusCheck(),e.setupStep==="whatsapp"&&t.has("setupStep")&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(r=>{e.channelsSnapshot=r,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1})),t.has("whatsappLoginConnected")&&e.whatsappLoginConnected===!0&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(s=>{e.channelsSnapshot=s,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1}))}if(e.tab==="chat"&&!e.advancedPage&&(t.has("chatMessages")||t.has("chatToolMessages")||t.has("chatStream")||t.has("chatLoading")||t.has("tab"))){const n=t.has("tab"),i=t.has("chatLoading")&&t.get("chatLoading")===!0&&e.chatLoading===!1;hn(e,n||i||!e.chatHasAutoScrolled)}e.tab==="logs"&&!e.advancedPage&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&bl(e,t.has("tab")||t.has("logsAutoFollow"))}}function _b(e){const t={name:(e==null?void 0:e.name)??"",displayName:(e==null?void 0:e.displayName)??"",about:(e==null?void 0:e.about)??"",picture:(e==null?void 0:e.picture)??"",banner:(e==null?void 0:e.banner)??"",website:(e==null?void 0:e.website)??"",nip05:(e==null?void 0:e.nip05)??"",lud16:(e==null?void 0:e.lud16)??""};return{values:t,original:{...t},saving:!1,importing:!1,error:null,success:null,fieldErrors:{},showAdvanced:!!(e!=null&&e.banner||e!=null&&e.website||e!=null&&e.nip05||e!=null&&e.lud16)}}async function Mb(e,t,n){await sr(e,t,n),await q(e,!0)}async function Pb(e,t){await Sl(e,t),await q(e,!0)}async function Lb(e,t){await Al(e,t),await q(e,!0)}async function Ib(e,t){await xl(e,t)}async function Rb(e,t){await $l(e,t)}async function Nb(e){await qd(e),await Ce(e),await q(e,!0)}async function Db(e){await Ce(e),await q(e,!0)}function Ob(e){if(!Array.isArray(e))return{};const t={};for(const n of e){if(typeof n!="string")continue;const[i,...s]=n.split(":");if(!i||s.length===0)continue;const r=i.trim(),o=s.join(":").trim();r&&o&&(t[r]=o)}return t}function bu(e){var n,i,s;return((s=(((i=(n=e.channelsSnapshot)==null?void 0:n.channelAccounts)==null?void 0:i.nostr)??[])[0])==null?void 0:s.accountId)??e.nostrProfileAccountId??"default"}function wu(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function Bb(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=_b(n??void 0)}function Fb(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function Ub(e,t,n){const i=e.nostrProfileFormState;i&&(e.nostrProfileFormState={...i,values:{...i.values,[t]:n},fieldErrors:{...i.fieldErrors,[t]:""}})}function Wb(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function Kb(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=bu(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const i=await fetch(wu(n),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.values)}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const r=(s==null?void 0:s.error)??`Profile update failed (${i.status})`;e.nostrProfileFormState={...t,saving:!1,error:r,success:null,fieldErrors:Ob(s==null?void 0:s.details)};return}if(!s.persisted){e.nostrProfileFormState={...t,saving:!1,error:"Profile publish failed on all relays.",success:null};return}e.nostrProfileFormState={...t,saving:!1,error:null,success:"Profile published to relays.",fieldErrors:{},original:{...t.values}},await q(e,!0)}catch(i){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(i)}`,success:null}}}async function zb(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=bu(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const i=await fetch(wu(n,"/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoMerge:!0})}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const l=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:l,success:null};return}const r=s.merged??s.imported??null,o=r?{...t.values,...r}:t.values,a=!!(o.banner||o.website||o.nip05||o.lud16);e.nostrProfileFormState={...t,importing:!1,values:o,error:null,success:s.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:a},s.saved&&await q(e,!0)}catch(i){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(i)}`,success:null}}}async function jb(e){if(e.client){e.authBusy=!0,e.authMessage=null;try{const t=await e.client.request("auth.status",{});e.authConnected=t.connected,e.authExpiresIn=t.expiresIn??null,e.authMessage=t.message??null,t.connected&&(e.setupStep="whatsapp")}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to check auth status"}finally{e.authBusy=!1}}}async function Hb(e){if(e.client){e.authBusy=!0,e.authMessage=null,e.authUrl=null,e.authConnected=null;try{const t=await e.client.request("auth.oauth.start",{provider:"anthropic"});e.authUrl=t.authUrl,e.authMessage=t.message??"Sign in with your Claude Pro account"}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to start auth flow"}finally{e.authBusy=!1}}}async function qb(e,t){if(e.client){e.authBusy=!0,e.authMessage="Verifying code...";try{await e.client.request("auth.oauth.code",{code:t});const n=await e.client.request("auth.oauth.wait",{timeoutMs:3e4});n.connected?(e.authConnected=!0,e.authMessage=n.message??"Connected to Claude!",e.authUrl=null,e.authCodeInput=""):e.authMessage=n.message??"Still waiting for authorization..."}catch(n){e.authConnected=!1,e.authMessage=n instanceof Error?n.message:"Verification failed"}finally{e.authBusy=!1}}}function Vb(e,t){e.authCodeInput=t}function Gb(e){e.setupStep="whatsapp"}async function Qb(e){if(e.client){e.licenseBusy=!0,e.licenseMessage=null;try{const t=await e.client.request("license.status",{});e.licenseDeviceId=t.deviceId??null,e.licenseStoredKey=t.key??null,t.licensed?(e.licenseValid=!0,e.licenseTier=t.tier??null,e.setupStep="auth"):(e.licenseValid=null,e.setupStep="license")}catch(t){const n=t instanceof Error?t.message:String(t);n.includes("unknown method")?(e.licenseValid=!0,e.setupStep="auth"):(e.licenseValid=null,e.licenseMessage=n,e.setupStep="license")}finally{e.licenseBusy=!1}}}async function Yb(e){if(e.client&&e.licenseKey.trim()){e.licenseBusy=!0,e.licenseMessage=null,e.licenseValid=null;try{const t=await e.client.request("license.activate",{key:e.licenseKey.trim()});t.valid?(e.licenseValid=!0,e.licenseMessage=t.message??"License activated",e.licenseTier=t.tier??null,setTimeout(()=>{e.setupStep="auth"},1500)):(e.licenseValid=!1,e.licenseMessage=t.message??"Invalid license key")}catch(t){e.licenseValid=!1,e.licenseMessage=t instanceof Error?t.message:"Activation failed"}finally{e.licenseBusy=!1}}}async function Xb(e){if(e.client){e.licenseBusy=!0;try{await e.client.request("license.remove",{}),e.licenseValid=null,e.licenseKey="",e.licenseTier=null,e.licenseMessage=null,e.setupStep="license"}catch(t){e.licenseMessage=t instanceof Error?t.message:"Failed to remove license"}finally{e.licenseBusy=!1}}}function Zb(e,t){e.licenseKey=t}async function Jb(e){var t,n;if(!(!e.client||!e.connected)&&!e.gatewayHealthLoading){e.gatewayHealthLoading=!0,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("health",{probe:!0});e.gatewayHealthy=i.ok===!0,e.gatewayHealthMessage=i.ok?`Healthy${i.durationMs?` (${i.durationMs}ms)`:""}`:"Unhealthy"}catch(i){e.gatewayHealthy=!1,e.gatewayHealthMessage=`Error: ${String(i)}`}finally{e.gatewayHealthLoading=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function ew(e){var t,n,i;if(!(!e.client||e.gatewayRestartBusy)){e.gatewayRestartBusy=!0,e.gatewayHealthMessage="Restarting...",(t=e.requestUpdate)==null||t.call(e);try{const s=await e.client.request("gateway.restart",{reason:"Manual restart from setup page",delayMs:1e3});if(s.ok&&((n=s.restart)!=null&&n.ok))e.gatewayHealthMessage="Restarting...",setTimeout(()=>{window.location.reload()},3e3);else throw new Error("Restart not scheduled")}catch(s){e.gatewayHealthMessage=`Restart failed: ${String(s)}`,e.gatewayRestartBusy=!1,(i=e.requestUpdate)==null||i.call(e)}}}var tw=Object.defineProperty,nw=Object.getOwnPropertyDescriptor,m=(e,t,n,i)=>{for(var s=i>1?void 0:i?nw(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&tw(t,n,s),s};const Ss=rd();function iw(){if(!window.location.search)return!1;const t=new URLSearchParams(window.location.search).get("onboarding");if(!t)return!1;const n=t.trim().toLowerCase();return n==="1"||n==="true"||n==="yes"||n==="on"}function sw(){const e=window.location.pathname;if(e==="/setup"||e.endsWith("/setup"))return!0;if(!window.location.search)return!1;const n=new URLSearchParams(window.location.search).get("setup");if(!n)return!1;const i=n.trim().toLowerCase();return i==="1"||i==="true"||i==="yes"||i==="on"}function rw(){const e=window.location.pathname;return e==="/files"||e.endsWith("/files")}function ow(){const e=window.location.pathname;return e==="/browser"||e.endsWith("/browser")}function aw(){const e=window.location.pathname;return e==="/admins"||e.endsWith("/admins")}function lw(){const e=window.location.pathname;return e==="/customers"||e.endsWith("/customers")}function cw(){const e=window.location.pathname;return e==="/chat"||e.endsWith("/chat")}function uw(){const e=window.location.pathname;return e==="/advanced"||e.endsWith("/advanced")}let g=class extends At{constructor(){super(...arguments),this.settings=qi(),this.password="",this.tab="chat",this.onboarding=iw(),this.setup=sw(),this.filesPage=rw(),this.browserPage=ow(),this.adminsPage=aw(),this.customersPage=lw(),this.chatPage=cw(),this.advancedPage=uw(),this.advancedTab="cron",this.publicChat=!!window.__TASKMASTER_PUBLIC_CHAT__,this.publicChatConfig=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__??{},this.publicChatSessionKey=null,this.publicChatAuthenticated=!1,this.publicChatAuthStep="idle",this.connected=!1,this.accessState=cu,this.theme=this.settings.theme??"system",this.themeResolved="dark",this.hello=null,this.lastError=null,this.eventLog=[],this.eventLogBuffer=[],this.toolStreamSyncTimer=null,this.sidebarCloseTimer=null,this.assistantName=Ss.name,this.assistantAvatar=Ss.avatar,this.assistantAgentId=Ss.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatToolMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.compactionStatus=null,this.chatAvatarUrl=null,this.chatThinkingLevel=null,this.chatModelProvider=null,this.chatModel=null,this.chatModelCatalog=[],this.chatVerboseLevel=null,this.chatFillerEnabled=null,this.chatQueue=[],this.chatAttachments=[],this.sidebarOpen=!1,this.sidebarContent=null,this.sidebarError=null,this.splitRatio=this.settings.splitRatio,this.nodesLoading=!1,this.nodes=[],this.devicesLoading=!1,this.devicesError=null,this.devicesList=null,this.execApprovalsLoading=!1,this.execApprovalsSaving=!1,this.execApprovalsDirty=!1,this.execApprovalsSnapshot=null,this.execApprovalsForm=null,this.execApprovalsSelectedAgent=null,this.execApprovalsTarget="gateway",this.execApprovalsTargetNodeId=null,this.execApprovalQueue=[],this.execApprovalBusy=!1,this.execApprovalError=null,this.configLoading=!1,this.configRaw=`{
|
|
3210
3210
|
}
|
|
3211
|
-
`,this.configRawOriginal="",this.configValid=null,this.configIssues=[],this.configSaving=!1,this.configApplying=!1,this.updateRunning=!1,this.applySessionKey=this.settings.lastActiveSessionKey,this.configSnapshot=null,this.configSchema=null,this.configSchemaVersion=null,this.configSchemaLoading=!1,this.configUiHints={},this.configForm=null,this.configFormOriginal=null,this.configFormDirty=!1,this.configFormMode="form",this.configSearchQuery="",this.configActiveSection=null,this.configActiveSubsection=null,this.channelsLoading=!1,this.channelsSnapshot=null,this.channelsError=null,this.channelsLastSuccess=null,this.whatsappLoginMessage=null,this.whatsappLoginQrDataUrl=null,this.whatsappLoginConnected=null,this.whatsappBusy=!1,this.whatsappActiveQrAccountId=null,this.whatsappPairedPhone=null,this.addingWhatsAppAccount=!1,this.newWhatsAppAccountName="",this.whatsappAccountError=null,this.whatsappAccountSaving=!1,this.whatsappSettingsOpen=!1,this.publicChatToggleBusy=!1,this.licenseKey="",this.licenseBusy=!1,this.licenseValid=null,this.licenseMessage=null,this.licenseTier=null,this.licenseDeviceId=null,this.licenseStoredKey=null,this.licenseRemoveConfirm=!1,this.authConnected=null,this.authBusy=!1,this.authMessage=null,this.authUrl=null,this.authCodeInput="",this.authExpiresIn=null,this.setupStep="license",this.gatewayHealthy=null,this.gatewayHealthLoading=!1,this.gatewayHealthMessage=null,this.gatewayRestartBusy=!1,this.updateAvailable=null,this.currentVersion=null,this.latestVersion=null,this.updateChecking=!1,this.updateMessage=null,this.updateProgressSteps=[],this.updateLastResult=null,this.uninstallConfirm=!1,this.uninstallBusy=!1,this.uninstallDone=!1,this.uninstallError=null,this.uninstallConfirmText="",this.nostrProfileFormState=null,this.nostrProfileAccountId=null,this.presenceLoading=!1,this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.sessionsLoading=!1,this.sessionsResult=null,this.sessionsError=null,this.cronLoading=!1,this.cronJobs=[],this.cronStatus=null,this.cronError=null,this.cronForm={...$b},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.cronNewEventModal=!1,this.cronDetailJobId=null,this.browserScreencastActive=!1,this.browserScreencastFrame=null,this.browserScreencastMetadata=null,this.browserHandoffPending=!1,this.browserHandoffReason=null,this.browserHandoffId=null,this.browserInputMode=!1,this.browserFullscreen=!1,this.browserLoading=!1,this.browserError=null,this.filesLoading=!1,this.filesTree=[],this.filesRoot="",this.filesError=null,this.filesSelectedPath=null,this.filesSelectedPaths=new Set,this.filesPreviewContent=null,this.filesPreviewLoading=!1,this.filesPreviewBinary=!1,this.filesPreviewSize=null,this.filesExpandedDirs=new Set,this.filesMessage=null,this.filesUploadBusy=!1,this.filesReindexBusy=!1,this.filesMemoryStatus=null,this.embeddingDownloading=!1,this.embeddingPollTimer=null,this.filesSearchQuery="",this.filesSearchResults=null,this.filesSearchLoading=!1,this.filesSearchAgentId=null,this.auditEntries=[],this.auditLoading=!1,this.auditModalOpen=!1,this.skillsLoading=!1,this.skillsReport=null,this.skillsError=null,this.skillsFilter="",this.skillEdits={},this.skillsBusyKey=null,this.skillMessages={},this.adminsLoading=!1,this.adminPhones=[],this.adminsError=null,this.adminsSaving=!1,this.adminsNewPhone="",this.customersLoading=!1,this.customersSaving=!1,this.customersRecords=[],this.customersError=null,this.customersSearchQuery="",this.customersEditingId=null,this.customersShowAddForm=!1,this.customersNewPhone="",this.customersNewName="",this.imessageEnableConfirm=!1,this.imessageEnabling=!1,this.infoModalOpen=null,this.workspaces=[],this.workspacesLoading=!1,this.workspacesError=null,this.selectedWorkspace=null,this.addingWorkspace=!1,this.newWorkspaceName="",this.newWorkspacePath="",this.newWorkspacePin="",this.accountPinModalOpen=!1,this.accountPinBusy=!1,this.accountPinError=null,this.accountPinSuccess=null,this.apiKeyProviders=[],this.apiKeyModalOpen=!1,this.apiKeyBusy=!1,this.apiKeyError=null,this.apiKeySuccess=null,this.apiKeySavingProvider=null,this.authApiKeyMode=!1,this.authApiKeyInput="",this.authApiKeyBusy=!1,this.authApiKeyError=null,this.pinChanging=null,this.pinChangeBusy=!1,this.pinChangeError=null,this.loginChangePinMode=!1,this.changePinBusy=!1,this.changePinError=null,this.changePinSuccess=null,this.workspaceSaving=!1,this.workspaceRemoveConfirm=null,this.renamingWorkspace=!1,this.renameWorkspaceName="",this.debugLoading=!1,this.debugStatus=null,this.debugHealth=null,this.debugModels=[],this.debugHeartbeat=null,this.debugCallMethod="",this.debugCallParams="{}",this.debugCallResult=null,this.debugCallError=null,this.logsLoading=!1,this.logsError=null,this.logsFile=null,this.logsEntries=[],this.logsFilterText="",this.logsLevelFilters={...Ab},this.logsAutoFollow=!0,this.logsTruncated=!1,this.logsCursor=null,this.logsLastFetchAt=null,this.logsLimit=500,this.logsMaxBytes=25e4,this.logsAtBottom=!0,this.logsSubTab="session",this.sessionLogsLoading=!1,this.sessionLogsError=null,this.sessionLogsEntries=[],this.sessionLogsFilterText="",this.sessionLogsTypeFilters={user:!0,assistant:!0,tool:!0,thinking:!0,error:!0,system:!0},this.sessionLogsAgentFilters={},this.sessionLogsAgents=[],this.sessionLogsAutoFollow=!0,this.sessionLogsCursors={},this.sessionLogsLastFetchAt=null,this.sessionLogsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.nodesPollInterval=null,this.logsPollInterval=null,this.sessionLogsPollInterval=null,this.debugPollInterval=null,this.auditPollInterval=null,this.logsScrollFrame=null,this.toolStreamById=new Map,this.toolStreamOrder=[],this.basePath="",this.popStateHandler=()=>yh(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),xb(this)}firstUpdated(){Eb(this)}disconnectedCallback(){this.stopEmbeddingPoll(),Tb(this),super.disconnectedCallback()}startEmbeddingPoll(){if(this.embeddingPollTimer!=null)return;const e=async()=>{if(!(!this.client||!this.connected)){try{const t=await this.client.request("memory.status",{});if((t==null?void 0:t.embeddingState)==="downloading")this.embeddingDownloading=!0;else{this.embeddingDownloading&&(this.embeddingDownloading=!1),this.stopEmbeddingPoll();return}}catch{this.embeddingDownloading=!1,this.stopEmbeddingPoll();return}this.embeddingPollTimer=window.setTimeout(e,3e3)}};e()}stopEmbeddingPoll(){this.embeddingPollTimer!=null&&(window.clearTimeout(this.embeddingPollTimer),this.embeddingPollTimer=null)}updated(e){Cb(this,e)}connect(){$e(this)}handleChatScroll(e){Bd(this,e)}handleLogsScroll(e){Fd(this,e)}handleSessionLogsScroll(e){Ud(this,e)}exportLogs(e,t){Kd(e,t)}exportSessionLogs(e,t){zd(e,t)}resetToolStream(){ir(this)}resetChatScroll(){Wd(this)}async loadAssistantIdentity(){await Qs(this)}applySettings(e){We(this,e)}setTab(e){uh(this,e)}setTheme(e,t){dh(this,e,t)}async loadOverview(){await oc(this)}async loadCron(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.cronForm={...this.cronForm,accountId:(e==null?void 0:e.whatsappAccountId)??void 0},await kr(this)}async handleAbortChat(){await lc(this)}removeQueuedMessage(e){kh(this,e)}async handleSendChat(e,t){await Sh(this,e,t)}async handleWhatsAppStart(e,t){await Mb(this,e,t)}async handleWhatsAppWait(e){await Pb(this,e)}async handleWhatsAppLogout(e){await Lb(this,e)}async handleAddWhatsAppAccount(e){await Ib(this,e)}async handleRemoveWhatsAppAccount(e){await Rb(this,e)}async handleAccessCheck(){await Ya(this)}async handlePinSubmit(e,t){await ib(this,e,t),this.accessState.authenticated&&this.accessState.workspace&&this.handleWorkspaceSelect(this.accessState.workspace)}async handleSetMasterPin(e){await sb(this,e)}async handleLogout(){await ob(this)}toggleChangePinMode(){this.loginChangePinMode=!this.loginChangePinMode,this.changePinError=null,this.changePinSuccess=null}async handleChangePin(e,t,n){if(this.client){this.changePinBusy=!0,this.changePinError=null,this.changePinSuccess=null;try{const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.changePinError=i.message??"Incorrect current PIN",this.changePinBusy=!1;return}e==="__master__"?await this.client.request("access.setMasterPin",{pin:n}):await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.changePinSuccess="PIN changed successfully",this.changePinBusy=!1,setTimeout(()=>{this.loginChangePinMode=!1,this.changePinSuccess=null},2e3)}catch{this.changePinError="Failed to change PIN",this.changePinBusy=!1}}}async handleAccountPinSave(e,t,n){if(this.client){this.accountPinBusy=!0,this.accountPinError=null,this.accountPinSuccess=null;try{if(t!==null){const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.accountPinError=i.message??"Incorrect current PIN",this.accountPinBusy=!1;return}}await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.accountPinSuccess="PIN saved",this.accountPinBusy=!1,await Ya(this),setTimeout(()=>{this.accountPinModalOpen=!1,this.accountPinSuccess=null,this.accountPinError=null},1500)}catch{this.accountPinError="Failed to save PIN",this.accountPinBusy=!1}}}async handleLicenseStatusCheck(){await Qb(this)}async handleLicenseActivate(){await Yb(this)}async handleLicenseRemove(){await Xb(this)}handleLicenseKeyChange(e){Zb(this,e)}async handleAuthStatusCheck(){await jb(this)}async handleAuthStart(){await Hb(this)}async handleAuthSubmitCode(e){await qb(this,e)}handleAuthCodeChange(e){Vb(this,e)}handleSkipToWhatsApp(){Gb(this)}async handleGatewayHealthCheck(){await Jb(this)}async handleGatewayRestart(){await ew(this)}async handleUpdateCheck(){await au(this)}async handleUpdateRun(){await Kv(this)}handleUpdateDismissResult(){Hv(this)}handleUninstallConfirm(){this.uninstallConfirm=!0,this.uninstallConfirmText=""}handleUninstallCancel(){this.uninstallConfirm=!1,this.uninstallConfirmText="",this.uninstallError=null}handleUninstallConfirmTextChange(e){this.uninstallConfirmText=e}async handleUninstallRun(){const{runUninstall:e}=await ne(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>No);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){ne(async()=>{const{clearUninstallDone:e}=await Promise.resolve().then(()=>No);return{clearUninstallDone:e}},void 0,import.meta.url).then(({clearUninstallDone:e})=>{e()}),this.uninstallDone=!1,this.uninstallConfirm=!1,this.uninstallConfirmText=""}async loadAuditEntries(){await Jl(this)}async clearAudit(){await qp(this),this.auditModalOpen=!1}handleFilesLoad(){var n;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((n=e==null?void 0:e.agents)==null?void 0:n.map(i=>i.id))??void 0;const t=this.resolveFilesAgentId();mn(this,t),fr(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();ne(async()=>{const{loadAdmins:t}=await Promise.resolve().then(()=>lb);return{loadAdmins:t}},void 0,import.meta.url).then(({loadAdmins:t})=>{t(this,e)})}resolveAdminAgentId(){const e=this.getSelectedWorkspaceInfo();if(!e)return;const t=e.agents.find(n=>n.id.endsWith("-admin")||n.id==="admin");return t==null?void 0:t.id}resolveFilesAgentId(){var t;const e=this.getSelectedWorkspaceInfo();if(e)return(t=e.agents[0])==null?void 0:t.id}handleChatLoad(){const e=this.resolveAdminAgentId();if(e){const t=`agent:${e}:main`;t!==this.sessionKey&&(this.sessionKey=t,this.chatMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatRunId=null,this.chatSuggestion=null,this.applySettings({...this.settings,sessionKey:t,lastActiveSessionKey:t}),this.loadAssistantIdentity())}ne(async()=>{const{loadChatHistory:t}=await Promise.resolve().then(()=>xs);return{loadChatHistory:t}},void 0,import.meta.url).then(({loadChatHistory:t})=>{t(this)})}handleAdvancedLoad(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.sessionLogsEntries=[],this.sessionLogsCursors={},this.sessionLogsAgents=[],this.advancedTab==="cron"&&this.loadCron(),this.advancedTab==="logs"&&(this.logsSubTab==="session"?ne(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Zl);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):ne(async()=>{const{loadLogs:n}=await Promise.resolve().then(()=>rp);return{loadLogs:n}},void 0,import.meta.url).then(({loadLogs:n})=>{n(this,{reset:!0})})),this.advancedTab==="skills"&&ne(async()=>{const{loadSkills:n}=await Promise.resolve().then(()=>Fp);return{loadSkills:n}},void 0,import.meta.url).then(({loadSkills:n})=>{n(this,{clearMessages:!0})})}async handleChannelConfigSave(){await Nb(this)}async handleChannelConfigReload(){await Db(this)}handleNostrProfileEdit(e,t){Bb(this,e,t)}handleNostrProfileCancel(){Fb(this)}handleNostrProfileFieldChange(e,t){Ub(this,e,t)}async handleNostrProfileSave(){await Kb(this)}async handleNostrProfileImport(){await zb(this)}handleNostrProfileToggleAdvanced(){Wb(this)}async handleExecApprovalDecision(e){const t=this.execApprovalQueue[0];if(!(!t||!this.client||this.execApprovalBusy)){this.execApprovalBusy=!0,this.execApprovalError=null;try{await this.client.request("exec.approval.resolve",{id:t.id,decision:e}),this.execApprovalQueue=this.execApprovalQueue.filter(n=>n.id!==t.id)}catch(n){this.execApprovalError=`Exec approval failed: ${String(n)}`}finally{this.execApprovalBusy=!1}}}handleOpenSidebar(e){this.sidebarCloseTimer!=null&&(window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=null),this.sidebarContent=e,this.sidebarError=null,this.sidebarOpen=!0}handleCloseSidebar(){this.sidebarOpen=!1,this.sidebarCloseTimer!=null&&window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=window.setTimeout(()=>{this.sidebarOpen||(this.sidebarContent=null,this.sidebarError=null,this.sidebarCloseTimer=null)},200)}handleSplitRatioChange(e){const t=Math.max(.4,Math.min(.7,e));this.splitRatio=t,this.applySettings({...this.settings,splitRatio:t})}handleAdminsNewPhoneChange(e){this.adminsNewPhone=e,this.adminsError&&(this.adminsError=null)}handleCustomersLoad(){const e=this.selectedWorkspace??void 0;ne(async()=>{const{loadCustomers:t}=await Promise.resolve().then(()=>cb);return{loadCustomers:t}},void 0,import.meta.url).then(({loadCustomers:t})=>{t(this,e)})}handleCustomersNewPhoneChange(e){this.customersNewPhone=e,this.customersError&&(this.customersError=null)}handleCustomersNewNameChange(e){this.customersNewName=e,this.customersError&&(this.customersError=null)}async handleWorkspacesLoad(){const{loadWorkspaces:e}=await ne(async()=>{const{loadWorkspaces:t}=await Promise.resolve().then(()=>jn);return{loadWorkspaces:t}},void 0,import.meta.url);await e(this)}async handleWorkspaceCreate(e,t){const{createWorkspace:n}=await ne(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>jn);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await ne(async()=>{const{loadChannels:s}=await Promise.resolve().then(()=>ep);return{loadChannels:s}},void 0,import.meta.url);await n(this,{name:e,workspacePath:t,onCreated:s=>{if(!s.whatsappAccountId)return;const r=s.whatsappAccountId;this.handleWorkspaceSelect(e),setTimeout(async()=>{try{await i(this,!0),await this.handleWhatsAppStart(!0,r),this.whatsappLoginQrDataUrl&&(await this.handleWhatsAppWait(r),await i(this,!0),await this.handleWorkspacesLoad())}catch{}this.requestUpdate()},3e3)}})}async handleWorkspaceRemove(e){const{removeWorkspace:t}=await ne(async()=>{const{removeWorkspace:n}=await Promise.resolve().then(()=>jn);return{removeWorkspace:n}},void 0,import.meta.url);await t(this,e)}handleWorkspaceRenameStart(){const e=this.getSelectedWorkspaceInfo();this.renameWorkspaceName=(e==null?void 0:e.displayName)??(e==null?void 0:e.name)??"",this.renamingWorkspace=!0}handleWorkspaceRenameCancel(){this.renamingWorkspace=!1,this.renameWorkspaceName=""}async handleWorkspaceRename(e,t){const{renameWorkspace:n}=await ne(async()=>{const{renameWorkspace:i}=await Promise.resolve().then(()=>jn);return{renameWorkspace:i}},void 0,import.meta.url);await n(this,e,t),this.renamingWorkspace=!1,this.renameWorkspaceName=""}handleWorkspaceSelect(e){this.selectedWorkspace=e,localStorage.setItem("taskmaster-selected-workspace",e),So(e),this.settings=qi(),this.chatMessage="",this.chatAttachments=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.chatQueue=[],this.lastError=null,this.reloadCurrentPageData()}getSelectedWorkspaceInfo(){return this.selectedWorkspace?this.workspaces.find(e=>e.name===this.selectedWorkspace)??null:null}reloadCurrentPageData(){this.loadAuditEntries(),this.adminsPage?this.handleAdminsLoad():this.customersPage?this.handleCustomersLoad():this.filesPage?this.handleFilesLoad():this.chatPage?this.handleChatLoad():this.advancedPage&&this.handleAdvancedLoad()}initWorkspaceSelection(){if(this.workspaces.length===0){this.reloadCurrentPageData();return}const e=localStorage.getItem("taskmaster-selected-workspace"),t=e?this.workspaces.find(n=>n.name===e):null;if(t)this.selectedWorkspace=t.name;else{const n=this.workspaces.find(i=>i.isDefault)??this.workspaces[0];this.selectedWorkspace=n.name,localStorage.setItem("taskmaster-selected-workspace",n.name)}So(this.selectedWorkspace),this.settings=qi(),this.reloadCurrentPageData()}render(){return h`${wb(this)}${this.auditModalOpen?Sb(this.auditEntries,()=>this.clearAudit(),()=>{this.auditModalOpen=!1}):k}`}};m([y()],g.prototype,"settings",2);m([y()],g.prototype,"password",2);m([y()],g.prototype,"tab",2);m([y()],g.prototype,"onboarding",2);m([y()],g.prototype,"setup",2);m([y()],g.prototype,"filesPage",2);m([y()],g.prototype,"browserPage",2);m([y()],g.prototype,"adminsPage",2);m([y()],g.prototype,"customersPage",2);m([y()],g.prototype,"chatPage",2);m([y()],g.prototype,"advancedPage",2);m([y()],g.prototype,"advancedTab",2);m([y()],g.prototype,"publicChat",2);m([y()],g.prototype,"publicChatConfig",2);m([y()],g.prototype,"publicChatSessionKey",2);m([y()],g.prototype,"publicChatAuthenticated",2);m([y()],g.prototype,"publicChatAuthStep",2);m([y()],g.prototype,"connected",2);m([y()],g.prototype,"accessState",2);m([y()],g.prototype,"theme",2);m([y()],g.prototype,"themeResolved",2);m([y()],g.prototype,"hello",2);m([y()],g.prototype,"lastError",2);m([y()],g.prototype,"eventLog",2);m([y()],g.prototype,"assistantName",2);m([y()],g.prototype,"assistantAvatar",2);m([y()],g.prototype,"assistantAgentId",2);m([y()],g.prototype,"sessionKey",2);m([y()],g.prototype,"chatLoading",2);m([y()],g.prototype,"chatSending",2);m([y()],g.prototype,"chatMessage",2);m([y()],g.prototype,"chatMessages",2);m([y()],g.prototype,"chatToolMessages",2);m([y()],g.prototype,"chatStream",2);m([y()],g.prototype,"chatInterimText",2);m([y()],g.prototype,"chatSuggestion",2);m([y()],g.prototype,"chatStreamStartedAt",2);m([y()],g.prototype,"chatRunId",2);m([y()],g.prototype,"compactionStatus",2);m([y()],g.prototype,"chatAvatarUrl",2);m([y()],g.prototype,"chatThinkingLevel",2);m([y()],g.prototype,"chatModelProvider",2);m([y()],g.prototype,"chatModel",2);m([y()],g.prototype,"chatModelCatalog",2);m([y()],g.prototype,"chatVerboseLevel",2);m([y()],g.prototype,"chatFillerEnabled",2);m([y()],g.prototype,"chatQueue",2);m([y()],g.prototype,"chatAttachments",2);m([y()],g.prototype,"sidebarOpen",2);m([y()],g.prototype,"sidebarContent",2);m([y()],g.prototype,"sidebarError",2);m([y()],g.prototype,"splitRatio",2);m([y()],g.prototype,"nodesLoading",2);m([y()],g.prototype,"nodes",2);m([y()],g.prototype,"devicesLoading",2);m([y()],g.prototype,"devicesError",2);m([y()],g.prototype,"devicesList",2);m([y()],g.prototype,"execApprovalsLoading",2);m([y()],g.prototype,"execApprovalsSaving",2);m([y()],g.prototype,"execApprovalsDirty",2);m([y()],g.prototype,"execApprovalsSnapshot",2);m([y()],g.prototype,"execApprovalsForm",2);m([y()],g.prototype,"execApprovalsSelectedAgent",2);m([y()],g.prototype,"execApprovalsTarget",2);m([y()],g.prototype,"execApprovalsTargetNodeId",2);m([y()],g.prototype,"execApprovalQueue",2);m([y()],g.prototype,"execApprovalBusy",2);m([y()],g.prototype,"execApprovalError",2);m([y()],g.prototype,"configLoading",2);m([y()],g.prototype,"configRaw",2);m([y()],g.prototype,"configRawOriginal",2);m([y()],g.prototype,"configValid",2);m([y()],g.prototype,"configIssues",2);m([y()],g.prototype,"configSaving",2);m([y()],g.prototype,"configApplying",2);m([y()],g.prototype,"updateRunning",2);m([y()],g.prototype,"applySessionKey",2);m([y()],g.prototype,"configSnapshot",2);m([y()],g.prototype,"configSchema",2);m([y()],g.prototype,"configSchemaVersion",2);m([y()],g.prototype,"configSchemaLoading",2);m([y()],g.prototype,"configUiHints",2);m([y()],g.prototype,"configForm",2);m([y()],g.prototype,"configFormOriginal",2);m([y()],g.prototype,"configFormDirty",2);m([y()],g.prototype,"configFormMode",2);m([y()],g.prototype,"configSearchQuery",2);m([y()],g.prototype,"configActiveSection",2);m([y()],g.prototype,"configActiveSubsection",2);m([y()],g.prototype,"channelsLoading",2);m([y()],g.prototype,"channelsSnapshot",2);m([y()],g.prototype,"channelsError",2);m([y()],g.prototype,"channelsLastSuccess",2);m([y()],g.prototype,"whatsappLoginMessage",2);m([y()],g.prototype,"whatsappLoginQrDataUrl",2);m([y()],g.prototype,"whatsappLoginConnected",2);m([y()],g.prototype,"whatsappBusy",2);m([y()],g.prototype,"whatsappActiveQrAccountId",2);m([y()],g.prototype,"whatsappPairedPhone",2);m([y()],g.prototype,"addingWhatsAppAccount",2);m([y()],g.prototype,"newWhatsAppAccountName",2);m([y()],g.prototype,"whatsappAccountError",2);m([y()],g.prototype,"whatsappAccountSaving",2);m([y()],g.prototype,"whatsappSettingsOpen",2);m([y()],g.prototype,"publicChatToggleBusy",2);m([y()],g.prototype,"licenseKey",2);m([y()],g.prototype,"licenseBusy",2);m([y()],g.prototype,"licenseValid",2);m([y()],g.prototype,"licenseMessage",2);m([y()],g.prototype,"licenseTier",2);m([y()],g.prototype,"licenseDeviceId",2);m([y()],g.prototype,"licenseStoredKey",2);m([y()],g.prototype,"licenseRemoveConfirm",2);m([y()],g.prototype,"authConnected",2);m([y()],g.prototype,"authBusy",2);m([y()],g.prototype,"authMessage",2);m([y()],g.prototype,"authUrl",2);m([y()],g.prototype,"authCodeInput",2);m([y()],g.prototype,"authExpiresIn",2);m([y()],g.prototype,"setupStep",2);m([y()],g.prototype,"gatewayHealthy",2);m([y()],g.prototype,"gatewayHealthLoading",2);m([y()],g.prototype,"gatewayHealthMessage",2);m([y()],g.prototype,"gatewayRestartBusy",2);m([y()],g.prototype,"updateAvailable",2);m([y()],g.prototype,"currentVersion",2);m([y()],g.prototype,"latestVersion",2);m([y()],g.prototype,"updateChecking",2);m([y()],g.prototype,"updateMessage",2);m([y()],g.prototype,"updateProgressSteps",2);m([y()],g.prototype,"updateLastResult",2);m([y()],g.prototype,"uninstallConfirm",2);m([y()],g.prototype,"uninstallBusy",2);m([y()],g.prototype,"uninstallDone",2);m([y()],g.prototype,"uninstallError",2);m([y()],g.prototype,"uninstallConfirmText",2);m([y()],g.prototype,"nostrProfileFormState",2);m([y()],g.prototype,"nostrProfileAccountId",2);m([y()],g.prototype,"presenceLoading",2);m([y()],g.prototype,"presenceEntries",2);m([y()],g.prototype,"presenceError",2);m([y()],g.prototype,"presenceStatus",2);m([y()],g.prototype,"agentsLoading",2);m([y()],g.prototype,"agentsList",2);m([y()],g.prototype,"agentsError",2);m([y()],g.prototype,"sessionsLoading",2);m([y()],g.prototype,"sessionsResult",2);m([y()],g.prototype,"sessionsError",2);m([y()],g.prototype,"cronLoading",2);m([y()],g.prototype,"cronJobs",2);m([y()],g.prototype,"cronStatus",2);m([y()],g.prototype,"cronError",2);m([y()],g.prototype,"cronForm",2);m([y()],g.prototype,"cronRunsJobId",2);m([y()],g.prototype,"cronRuns",2);m([y()],g.prototype,"cronBusy",2);m([y()],g.prototype,"cronNewEventModal",2);m([y()],g.prototype,"cronDetailJobId",2);m([y()],g.prototype,"browserScreencastActive",2);m([y()],g.prototype,"browserScreencastFrame",2);m([y()],g.prototype,"browserScreencastMetadata",2);m([y()],g.prototype,"browserHandoffPending",2);m([y()],g.prototype,"browserHandoffReason",2);m([y()],g.prototype,"browserHandoffId",2);m([y()],g.prototype,"browserInputMode",2);m([y()],g.prototype,"browserFullscreen",2);m([y()],g.prototype,"browserLoading",2);m([y()],g.prototype,"browserError",2);m([y()],g.prototype,"filesLoading",2);m([y()],g.prototype,"filesTree",2);m([y()],g.prototype,"filesRoot",2);m([y()],g.prototype,"filesError",2);m([y()],g.prototype,"filesSelectedPath",2);m([y()],g.prototype,"filesSelectedPaths",2);m([y()],g.prototype,"filesPreviewContent",2);m([y()],g.prototype,"filesPreviewLoading",2);m([y()],g.prototype,"filesPreviewBinary",2);m([y()],g.prototype,"filesPreviewSize",2);m([y()],g.prototype,"filesExpandedDirs",2);m([y()],g.prototype,"filesMessage",2);m([y()],g.prototype,"filesUploadBusy",2);m([y()],g.prototype,"filesReindexBusy",2);m([y()],g.prototype,"filesMemoryStatus",2);m([y()],g.prototype,"embeddingDownloading",2);m([y()],g.prototype,"filesSearchQuery",2);m([y()],g.prototype,"filesSearchResults",2);m([y()],g.prototype,"filesSearchLoading",2);m([y()],g.prototype,"filesSearchAgentId",2);m([y()],g.prototype,"auditEntries",2);m([y()],g.prototype,"auditLoading",2);m([y()],g.prototype,"auditModalOpen",2);m([y()],g.prototype,"skillsLoading",2);m([y()],g.prototype,"skillsReport",2);m([y()],g.prototype,"skillsError",2);m([y()],g.prototype,"skillsFilter",2);m([y()],g.prototype,"skillEdits",2);m([y()],g.prototype,"skillsBusyKey",2);m([y()],g.prototype,"skillMessages",2);m([y()],g.prototype,"adminsLoading",2);m([y()],g.prototype,"adminPhones",2);m([y()],g.prototype,"adminsError",2);m([y()],g.prototype,"adminsSaving",2);m([y()],g.prototype,"adminsNewPhone",2);m([y()],g.prototype,"customersLoading",2);m([y()],g.prototype,"customersSaving",2);m([y()],g.prototype,"customersRecords",2);m([y()],g.prototype,"customersError",2);m([y()],g.prototype,"customersSearchQuery",2);m([y()],g.prototype,"customersEditingId",2);m([y()],g.prototype,"customersShowAddForm",2);m([y()],g.prototype,"customersNewPhone",2);m([y()],g.prototype,"customersNewName",2);m([y()],g.prototype,"imessageEnableConfirm",2);m([y()],g.prototype,"imessageEnabling",2);m([y()],g.prototype,"infoModalOpen",2);m([y()],g.prototype,"workspaces",2);m([y()],g.prototype,"workspacesLoading",2);m([y()],g.prototype,"workspacesError",2);m([y()],g.prototype,"selectedWorkspace",2);m([y()],g.prototype,"addingWorkspace",2);m([y()],g.prototype,"newWorkspaceName",2);m([y()],g.prototype,"newWorkspacePath",2);m([y()],g.prototype,"newWorkspacePin",2);m([y()],g.prototype,"accountPinModalOpen",2);m([y()],g.prototype,"accountPinBusy",2);m([y()],g.prototype,"accountPinError",2);m([y()],g.prototype,"accountPinSuccess",2);m([y()],g.prototype,"apiKeyProviders",2);m([y()],g.prototype,"apiKeyModalOpen",2);m([y()],g.prototype,"apiKeyBusy",2);m([y()],g.prototype,"apiKeyError",2);m([y()],g.prototype,"apiKeySuccess",2);m([y()],g.prototype,"apiKeySavingProvider",2);m([y()],g.prototype,"authApiKeyMode",2);m([y()],g.prototype,"authApiKeyInput",2);m([y()],g.prototype,"authApiKeyBusy",2);m([y()],g.prototype,"authApiKeyError",2);m([y()],g.prototype,"pinChanging",2);m([y()],g.prototype,"pinChangeBusy",2);m([y()],g.prototype,"pinChangeError",2);m([y()],g.prototype,"loginChangePinMode",2);m([y()],g.prototype,"changePinBusy",2);m([y()],g.prototype,"changePinError",2);m([y()],g.prototype,"changePinSuccess",2);m([y()],g.prototype,"workspaceSaving",2);m([y()],g.prototype,"workspaceRemoveConfirm",2);m([y()],g.prototype,"renamingWorkspace",2);m([y()],g.prototype,"renameWorkspaceName",2);m([y()],g.prototype,"debugLoading",2);m([y()],g.prototype,"debugStatus",2);m([y()],g.prototype,"debugHealth",2);m([y()],g.prototype,"debugModels",2);m([y()],g.prototype,"debugHeartbeat",2);m([y()],g.prototype,"debugCallMethod",2);m([y()],g.prototype,"debugCallParams",2);m([y()],g.prototype,"debugCallResult",2);m([y()],g.prototype,"debugCallError",2);m([y()],g.prototype,"logsLoading",2);m([y()],g.prototype,"logsError",2);m([y()],g.prototype,"logsFile",2);m([y()],g.prototype,"logsEntries",2);m([y()],g.prototype,"logsFilterText",2);m([y()],g.prototype,"logsLevelFilters",2);m([y()],g.prototype,"logsAutoFollow",2);m([y()],g.prototype,"logsTruncated",2);m([y()],g.prototype,"logsCursor",2);m([y()],g.prototype,"logsLastFetchAt",2);m([y()],g.prototype,"logsLimit",2);m([y()],g.prototype,"logsMaxBytes",2);m([y()],g.prototype,"logsAtBottom",2);m([y()],g.prototype,"logsSubTab",2);m([y()],g.prototype,"sessionLogsLoading",2);m([y()],g.prototype,"sessionLogsError",2);m([y()],g.prototype,"sessionLogsEntries",2);m([y()],g.prototype,"sessionLogsFilterText",2);m([y()],g.prototype,"sessionLogsTypeFilters",2);m([y()],g.prototype,"sessionLogsAgentFilters",2);m([y()],g.prototype,"sessionLogsAgents",2);m([y()],g.prototype,"sessionLogsAutoFollow",2);m([y()],g.prototype,"sessionLogsCursors",2);m([y()],g.prototype,"sessionLogsLastFetchAt",2);m([y()],g.prototype,"sessionLogsAtBottom",2);m([y()],g.prototype,"chatUserNearBottom",2);g=m([al("taskmaster-app")],g);
|
|
3212
|
-
//# sourceMappingURL=index-
|
|
3211
|
+
`,this.configRawOriginal="",this.configValid=null,this.configIssues=[],this.configSaving=!1,this.configApplying=!1,this.updateRunning=!1,this.applySessionKey=this.settings.lastActiveSessionKey,this.configSnapshot=null,this.configSchema=null,this.configSchemaVersion=null,this.configSchemaLoading=!1,this.configUiHints={},this.configForm=null,this.configFormOriginal=null,this.configFormDirty=!1,this.configFormMode="form",this.configSearchQuery="",this.configActiveSection=null,this.configActiveSubsection=null,this.channelsLoading=!1,this.channelsSnapshot=null,this.channelsError=null,this.channelsLastSuccess=null,this.whatsappLoginMessage=null,this.whatsappLoginQrDataUrl=null,this.whatsappLoginConnected=null,this.whatsappBusy=!1,this.whatsappActiveQrAccountId=null,this.whatsappPairedPhone=null,this.addingWhatsAppAccount=!1,this.newWhatsAppAccountName="",this.whatsappAccountError=null,this.whatsappAccountSaving=!1,this.whatsappSettingsOpen=!1,this.publicChatToggleBusy=!1,this.licenseKey="",this.licenseBusy=!1,this.licenseValid=null,this.licenseMessage=null,this.licenseTier=null,this.licenseDeviceId=null,this.licenseStoredKey=null,this.licenseRemoveConfirm=!1,this.authConnected=null,this.authBusy=!1,this.authMessage=null,this.authUrl=null,this.authCodeInput="",this.authExpiresIn=null,this.setupStep="license",this.gatewayHealthy=null,this.gatewayHealthLoading=!1,this.gatewayHealthMessage=null,this.gatewayRestartBusy=!1,this.updateAvailable=null,this.currentVersion=null,this.latestVersion=null,this.updateChecking=!1,this.updateMessage=null,this.updateProgressSteps=[],this.updateLastResult=null,this.uninstallConfirm=!1,this.uninstallBusy=!1,this.uninstallDone=!1,this.uninstallError=null,this.uninstallConfirmText="",this.nostrProfileFormState=null,this.nostrProfileAccountId=null,this.presenceLoading=!1,this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.sessionsLoading=!1,this.sessionsResult=null,this.sessionsError=null,this.cronLoading=!1,this.cronJobs=[],this.cronStatus=null,this.cronError=null,this.cronForm={...xb},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.cronNewEventModal=!1,this.cronDetailJobId=null,this.browserScreencastActive=!1,this.browserScreencastFrame=null,this.browserScreencastMetadata=null,this.browserHandoffPending=!1,this.browserHandoffReason=null,this.browserHandoffId=null,this.browserInputMode=!1,this.browserFullscreen=!1,this.browserLoading=!1,this.browserError=null,this.filesLoading=!1,this.filesTree=[],this.filesRoot="",this.filesError=null,this.filesSelectedPath=null,this.filesSelectedPaths=new Set,this.filesPreviewContent=null,this.filesPreviewLoading=!1,this.filesPreviewBinary=!1,this.filesPreviewSize=null,this.filesExpandedDirs=new Set,this.filesMessage=null,this.filesUploadBusy=!1,this.filesReindexBusy=!1,this.filesMemoryStatus=null,this.embeddingDownloading=!1,this.embeddingPollTimer=null,this.filesSearchQuery="",this.filesSearchResults=null,this.filesSearchLoading=!1,this.filesSearchAgentId=null,this.auditEntries=[],this.auditLoading=!1,this.auditModalOpen=!1,this.skillsLoading=!1,this.skillsReport=null,this.skillsError=null,this.skillsFilter="",this.skillEdits={},this.skillsBusyKey=null,this.skillMessages={},this.adminsLoading=!1,this.adminPhones=[],this.adminsError=null,this.adminsSaving=!1,this.adminsNewPhone="",this.customersLoading=!1,this.customersSaving=!1,this.customersRecords=[],this.customersError=null,this.customersSearchQuery="",this.customersEditingId=null,this.customersShowAddForm=!1,this.customersNewPhone="",this.customersNewName="",this.imessageEnableConfirm=!1,this.imessageEnabling=!1,this.infoModalOpen=null,this.workspaces=[],this.workspacesLoading=!1,this.workspacesError=null,this.selectedWorkspace=null,this.addingWorkspace=!1,this.newWorkspaceName="",this.newWorkspacePath="",this.newWorkspacePin="",this.accountPinModalOpen=!1,this.accountPinBusy=!1,this.accountPinError=null,this.accountPinSuccess=null,this.apiKeyProviders=[],this.apiKeyModalOpen=!1,this.apiKeyBusy=!1,this.apiKeyError=null,this.apiKeySuccess=null,this.apiKeySavingProvider=null,this.authApiKeyMode=!1,this.authApiKeyInput="",this.authApiKeyBusy=!1,this.authApiKeyError=null,this.pinChanging=null,this.pinChangeBusy=!1,this.pinChangeError=null,this.loginChangePinMode=!1,this.changePinBusy=!1,this.changePinError=null,this.changePinSuccess=null,this.workspaceSaving=!1,this.workspaceRemoveConfirm=null,this.renamingWorkspace=!1,this.renameWorkspaceName="",this.debugLoading=!1,this.debugStatus=null,this.debugHealth=null,this.debugModels=[],this.debugHeartbeat=null,this.debugCallMethod="",this.debugCallParams="{}",this.debugCallResult=null,this.debugCallError=null,this.logsLoading=!1,this.logsError=null,this.logsFile=null,this.logsEntries=[],this.logsFilterText="",this.logsLevelFilters={...Ab},this.logsAutoFollow=!0,this.logsTruncated=!1,this.logsCursor=null,this.logsLastFetchAt=null,this.logsLimit=500,this.logsMaxBytes=25e4,this.logsAtBottom=!0,this.logsSubTab="session",this.sessionLogsLoading=!1,this.sessionLogsError=null,this.sessionLogsEntries=[],this.sessionLogsFilterText="",this.sessionLogsTypeFilters={user:!0,assistant:!0,tool:!0,thinking:!0,error:!0,system:!0},this.sessionLogsAgentFilters={},this.sessionLogsAgents=[],this.sessionLogsAutoFollow=!0,this.sessionLogsCursors={},this.sessionLogsLastFetchAt=null,this.sessionLogsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.nodesPollInterval=null,this.logsPollInterval=null,this.sessionLogsPollInterval=null,this.debugPollInterval=null,this.auditPollInterval=null,this.logsScrollFrame=null,this.toolStreamById=new Map,this.toolStreamOrder=[],this.basePath="",this.popStateHandler=()=>mh(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),$b(this)}firstUpdated(){Eb(this)}disconnectedCallback(){this.stopEmbeddingPoll(),Cb(this),super.disconnectedCallback()}startEmbeddingPoll(){if(this.embeddingPollTimer!=null)return;const e=async()=>{if(!(!this.client||!this.connected)){try{const t=await this.client.request("memory.status",{});if((t==null?void 0:t.embeddingState)==="downloading")this.embeddingDownloading=!0;else{this.embeddingDownloading&&(this.embeddingDownloading=!1),this.stopEmbeddingPoll();return}}catch{this.embeddingDownloading=!1,this.stopEmbeddingPoll();return}this.embeddingPollTimer=window.setTimeout(e,3e3)}};e()}stopEmbeddingPoll(){this.embeddingPollTimer!=null&&(window.clearTimeout(this.embeddingPollTimer),this.embeddingPollTimer=null)}updated(e){Tb(this,e)}connect(){xe(this)}handleChatScroll(e){Od(this,e)}handleLogsScroll(e){Bd(this,e)}handleSessionLogsScroll(e){Fd(this,e)}exportLogs(e,t){Wd(e,t)}exportSessionLogs(e,t){Kd(e,t)}resetToolStream(){ir(this)}resetChatScroll(){Ud(this)}async loadAssistantIdentity(){await Qs(this)}applySettings(e){We(this,e)}setTab(e){ch(this,e)}setTheme(e,t){uh(this,e,t)}async loadOverview(){await rc(this)}async loadCron(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.cronForm={...this.cronForm,accountId:(e==null?void 0:e.whatsappAccountId)??void 0},await kr(this)}async handleAbortChat(){await ac(this)}removeQueuedMessage(e){wh(this,e)}async handleSendChat(e,t){await kh(this,e,t)}async handleWhatsAppStart(e,t){await Mb(this,e,t)}async handleWhatsAppWait(e){await Pb(this,e)}async handleWhatsAppLogout(e){await Lb(this,e)}async handleAddWhatsAppAccount(e){await Ib(this,e)}async handleRemoveWhatsAppAccount(e){await Rb(this,e)}async handleAccessCheck(){await Qa(this)}async handlePinSubmit(e,t){await ib(this,e,t),this.accessState.authenticated&&this.accessState.workspace&&this.handleWorkspaceSelect(this.accessState.workspace)}async handleSetMasterPin(e){await sb(this,e)}async handleLogout(){await ob(this)}toggleChangePinMode(){this.loginChangePinMode=!this.loginChangePinMode,this.changePinError=null,this.changePinSuccess=null}async handleChangePin(e,t,n){if(this.client){this.changePinBusy=!0,this.changePinError=null,this.changePinSuccess=null;try{const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.changePinError=i.message??"Incorrect current PIN",this.changePinBusy=!1;return}e==="__master__"?await this.client.request("access.setMasterPin",{pin:n}):await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.changePinSuccess="PIN changed successfully",this.changePinBusy=!1,setTimeout(()=>{this.loginChangePinMode=!1,this.changePinSuccess=null},2e3)}catch{this.changePinError="Failed to change PIN",this.changePinBusy=!1}}}async handleAccountPinSave(e,t,n){if(this.client){this.accountPinBusy=!0,this.accountPinError=null,this.accountPinSuccess=null;try{if(t!==null){const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.accountPinError=i.message??"Incorrect current PIN",this.accountPinBusy=!1;return}}await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.accountPinSuccess="PIN saved",this.accountPinBusy=!1,await Qa(this),setTimeout(()=>{this.accountPinModalOpen=!1,this.accountPinSuccess=null,this.accountPinError=null},1500)}catch{this.accountPinError="Failed to save PIN",this.accountPinBusy=!1}}}async handleLicenseStatusCheck(){await Qb(this)}async handleLicenseActivate(){await Yb(this)}async handleLicenseRemove(){await Xb(this)}handleLicenseKeyChange(e){Zb(this,e)}async handleAuthStatusCheck(){await jb(this)}async handleAuthStart(){await Hb(this)}async handleAuthSubmitCode(e){await qb(this,e)}handleAuthCodeChange(e){Vb(this,e)}handleSkipToWhatsApp(){Gb(this)}async handleGatewayHealthCheck(){await Jb(this)}async handleGatewayRestart(){await ew(this)}async handleUpdateCheck(){await ou(this)}async handleUpdateRun(){await Kv(this)}handleUpdateDismissResult(){Hv(this)}handleUninstallConfirm(){this.uninstallConfirm=!0,this.uninstallConfirmText=""}handleUninstallCancel(){this.uninstallConfirm=!1,this.uninstallConfirmText="",this.uninstallError=null}handleUninstallConfirmTextChange(e){this.uninstallConfirmText=e}async handleUninstallRun(){const{runUninstall:e}=await ne(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>Ro);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){ne(async()=>{const{clearUninstallDone:e}=await Promise.resolve().then(()=>Ro);return{clearUninstallDone:e}},void 0,import.meta.url).then(({clearUninstallDone:e})=>{e()}),this.uninstallDone=!1,this.uninstallConfirm=!1,this.uninstallConfirmText=""}async loadAuditEntries(){await Zl(this)}async clearAudit(){await Hp(this),this.auditModalOpen=!1}handleFilesLoad(){var n;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((n=e==null?void 0:e.agents)==null?void 0:n.map(i=>i.id))??void 0;const t=this.resolveFilesAgentId();mn(this,t),fr(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();ne(async()=>{const{loadAdmins:t}=await Promise.resolve().then(()=>lb);return{loadAdmins:t}},void 0,import.meta.url).then(({loadAdmins:t})=>{t(this,e)})}resolveAdminAgentId(){const e=this.getSelectedWorkspaceInfo();if(!e)return;const t=e.agents.find(n=>n.id.endsWith("-admin")||n.id==="admin");return t==null?void 0:t.id}resolveFilesAgentId(){var t;const e=this.getSelectedWorkspaceInfo();if(e)return(t=e.agents[0])==null?void 0:t.id}handleChatLoad(){const e=this.resolveAdminAgentId();if(e){const t=`agent:${e}:main`;t!==this.sessionKey&&(this.sessionKey=t,this.chatMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatRunId=null,this.chatSuggestion=null,this.applySettings({...this.settings,sessionKey:t,lastActiveSessionKey:t}),this.loadAssistantIdentity())}ne(async()=>{const{loadChatHistory:t}=await Promise.resolve().then(()=>$s);return{loadChatHistory:t}},void 0,import.meta.url).then(({loadChatHistory:t})=>{t(this)})}handleAdvancedLoad(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.sessionLogsEntries=[],this.sessionLogsCursors={},this.sessionLogsAgents=[],this.advancedTab==="cron"&&this.loadCron(),this.advancedTab==="logs"&&(this.logsSubTab==="session"?ne(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Xl);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):ne(async()=>{const{loadLogs:n}=await Promise.resolve().then(()=>sp);return{loadLogs:n}},void 0,import.meta.url).then(({loadLogs:n})=>{n(this,{reset:!0})})),this.advancedTab==="skills"&&ne(async()=>{const{loadSkills:n}=await Promise.resolve().then(()=>Bp);return{loadSkills:n}},void 0,import.meta.url).then(({loadSkills:n})=>{n(this,{clearMessages:!0})})}async handleChannelConfigSave(){await Nb(this)}async handleChannelConfigReload(){await Db(this)}handleNostrProfileEdit(e,t){Bb(this,e,t)}handleNostrProfileCancel(){Fb(this)}handleNostrProfileFieldChange(e,t){Ub(this,e,t)}async handleNostrProfileSave(){await Kb(this)}async handleNostrProfileImport(){await zb(this)}handleNostrProfileToggleAdvanced(){Wb(this)}async handleExecApprovalDecision(e){const t=this.execApprovalQueue[0];if(!(!t||!this.client||this.execApprovalBusy)){this.execApprovalBusy=!0,this.execApprovalError=null;try{await this.client.request("exec.approval.resolve",{id:t.id,decision:e}),this.execApprovalQueue=this.execApprovalQueue.filter(n=>n.id!==t.id)}catch(n){this.execApprovalError=`Exec approval failed: ${String(n)}`}finally{this.execApprovalBusy=!1}}}handleOpenSidebar(e){this.sidebarCloseTimer!=null&&(window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=null),this.sidebarContent=e,this.sidebarError=null,this.sidebarOpen=!0}handleCloseSidebar(){this.sidebarOpen=!1,this.sidebarCloseTimer!=null&&window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=window.setTimeout(()=>{this.sidebarOpen||(this.sidebarContent=null,this.sidebarError=null,this.sidebarCloseTimer=null)},200)}handleSplitRatioChange(e){const t=Math.max(.4,Math.min(.7,e));this.splitRatio=t,this.applySettings({...this.settings,splitRatio:t})}handleAdminsNewPhoneChange(e){this.adminsNewPhone=e,this.adminsError&&(this.adminsError=null)}handleCustomersLoad(){const e=this.selectedWorkspace??void 0;ne(async()=>{const{loadCustomers:t}=await Promise.resolve().then(()=>cb);return{loadCustomers:t}},void 0,import.meta.url).then(({loadCustomers:t})=>{t(this,e)})}handleCustomersNewPhoneChange(e){this.customersNewPhone=e,this.customersError&&(this.customersError=null)}handleCustomersNewNameChange(e){this.customersNewName=e,this.customersError&&(this.customersError=null)}async handleWorkspacesLoad(){const{loadWorkspaces:e}=await ne(async()=>{const{loadWorkspaces:t}=await Promise.resolve().then(()=>jn);return{loadWorkspaces:t}},void 0,import.meta.url);await e(this)}async handleWorkspaceCreate(e,t){const{createWorkspace:n}=await ne(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>jn);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await ne(async()=>{const{loadChannels:s}=await Promise.resolve().then(()=>Jd);return{loadChannels:s}},void 0,import.meta.url);await n(this,{name:e,workspacePath:t,onCreated:s=>{if(!s.whatsappAccountId)return;const r=s.whatsappAccountId;this.handleWorkspaceSelect(e),setTimeout(async()=>{try{await i(this,!0),await this.handleWhatsAppStart(!0,r),this.whatsappLoginQrDataUrl&&(await this.handleWhatsAppWait(r),await i(this,!0),await this.handleWorkspacesLoad())}catch{}this.requestUpdate()},3e3)}})}async handleWorkspaceRemove(e){const{removeWorkspace:t}=await ne(async()=>{const{removeWorkspace:n}=await Promise.resolve().then(()=>jn);return{removeWorkspace:n}},void 0,import.meta.url);await t(this,e)}handleWorkspaceRenameStart(){const e=this.getSelectedWorkspaceInfo();this.renameWorkspaceName=(e==null?void 0:e.displayName)??(e==null?void 0:e.name)??"",this.renamingWorkspace=!0}handleWorkspaceRenameCancel(){this.renamingWorkspace=!1,this.renameWorkspaceName=""}async handleWorkspaceRename(e,t){const{renameWorkspace:n}=await ne(async()=>{const{renameWorkspace:i}=await Promise.resolve().then(()=>jn);return{renameWorkspace:i}},void 0,import.meta.url);await n(this,e,t),this.renamingWorkspace=!1,this.renameWorkspaceName=""}handleWorkspaceSelect(e){this.selectedWorkspace=e,localStorage.setItem("taskmaster-selected-workspace",e),ko(e),this.settings=qi(),this.chatMessage="",this.chatAttachments=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.chatQueue=[],this.lastError=null,this.reloadCurrentPageData()}getSelectedWorkspaceInfo(){return this.selectedWorkspace?this.workspaces.find(e=>e.name===this.selectedWorkspace)??null:null}reloadCurrentPageData(){this.loadAuditEntries(),this.adminsPage?this.handleAdminsLoad():this.customersPage?this.handleCustomersLoad():this.filesPage?this.handleFilesLoad():this.chatPage?this.handleChatLoad():this.advancedPage&&this.handleAdvancedLoad()}initWorkspaceSelection(){if(this.workspaces.length===0){this.reloadCurrentPageData();return}const e=localStorage.getItem("taskmaster-selected-workspace"),t=e?this.workspaces.find(n=>n.name===e):null;if(t)this.selectedWorkspace=t.name;else{const n=this.workspaces.find(i=>i.isDefault)??this.workspaces[0];this.selectedWorkspace=n.name,localStorage.setItem("taskmaster-selected-workspace",n.name)}ko(this.selectedWorkspace),this.settings=qi(),this.reloadCurrentPageData()}render(){return h`${wb(this)}${this.auditModalOpen?Sb(this.auditEntries,()=>this.clearAudit(),()=>{this.auditModalOpen=!1}):k}`}};m([y()],g.prototype,"settings",2);m([y()],g.prototype,"password",2);m([y()],g.prototype,"tab",2);m([y()],g.prototype,"onboarding",2);m([y()],g.prototype,"setup",2);m([y()],g.prototype,"filesPage",2);m([y()],g.prototype,"browserPage",2);m([y()],g.prototype,"adminsPage",2);m([y()],g.prototype,"customersPage",2);m([y()],g.prototype,"chatPage",2);m([y()],g.prototype,"advancedPage",2);m([y()],g.prototype,"advancedTab",2);m([y()],g.prototype,"publicChat",2);m([y()],g.prototype,"publicChatConfig",2);m([y()],g.prototype,"publicChatSessionKey",2);m([y()],g.prototype,"publicChatAuthenticated",2);m([y()],g.prototype,"publicChatAuthStep",2);m([y()],g.prototype,"connected",2);m([y()],g.prototype,"accessState",2);m([y()],g.prototype,"theme",2);m([y()],g.prototype,"themeResolved",2);m([y()],g.prototype,"hello",2);m([y()],g.prototype,"lastError",2);m([y()],g.prototype,"eventLog",2);m([y()],g.prototype,"assistantName",2);m([y()],g.prototype,"assistantAvatar",2);m([y()],g.prototype,"assistantAgentId",2);m([y()],g.prototype,"sessionKey",2);m([y()],g.prototype,"chatLoading",2);m([y()],g.prototype,"chatSending",2);m([y()],g.prototype,"chatMessage",2);m([y()],g.prototype,"chatMessages",2);m([y()],g.prototype,"chatToolMessages",2);m([y()],g.prototype,"chatStream",2);m([y()],g.prototype,"chatInterimText",2);m([y()],g.prototype,"chatSuggestion",2);m([y()],g.prototype,"chatStreamStartedAt",2);m([y()],g.prototype,"chatRunId",2);m([y()],g.prototype,"compactionStatus",2);m([y()],g.prototype,"chatAvatarUrl",2);m([y()],g.prototype,"chatThinkingLevel",2);m([y()],g.prototype,"chatModelProvider",2);m([y()],g.prototype,"chatModel",2);m([y()],g.prototype,"chatModelCatalog",2);m([y()],g.prototype,"chatVerboseLevel",2);m([y()],g.prototype,"chatFillerEnabled",2);m([y()],g.prototype,"chatQueue",2);m([y()],g.prototype,"chatAttachments",2);m([y()],g.prototype,"sidebarOpen",2);m([y()],g.prototype,"sidebarContent",2);m([y()],g.prototype,"sidebarError",2);m([y()],g.prototype,"splitRatio",2);m([y()],g.prototype,"nodesLoading",2);m([y()],g.prototype,"nodes",2);m([y()],g.prototype,"devicesLoading",2);m([y()],g.prototype,"devicesError",2);m([y()],g.prototype,"devicesList",2);m([y()],g.prototype,"execApprovalsLoading",2);m([y()],g.prototype,"execApprovalsSaving",2);m([y()],g.prototype,"execApprovalsDirty",2);m([y()],g.prototype,"execApprovalsSnapshot",2);m([y()],g.prototype,"execApprovalsForm",2);m([y()],g.prototype,"execApprovalsSelectedAgent",2);m([y()],g.prototype,"execApprovalsTarget",2);m([y()],g.prototype,"execApprovalsTargetNodeId",2);m([y()],g.prototype,"execApprovalQueue",2);m([y()],g.prototype,"execApprovalBusy",2);m([y()],g.prototype,"execApprovalError",2);m([y()],g.prototype,"configLoading",2);m([y()],g.prototype,"configRaw",2);m([y()],g.prototype,"configRawOriginal",2);m([y()],g.prototype,"configValid",2);m([y()],g.prototype,"configIssues",2);m([y()],g.prototype,"configSaving",2);m([y()],g.prototype,"configApplying",2);m([y()],g.prototype,"updateRunning",2);m([y()],g.prototype,"applySessionKey",2);m([y()],g.prototype,"configSnapshot",2);m([y()],g.prototype,"configSchema",2);m([y()],g.prototype,"configSchemaVersion",2);m([y()],g.prototype,"configSchemaLoading",2);m([y()],g.prototype,"configUiHints",2);m([y()],g.prototype,"configForm",2);m([y()],g.prototype,"configFormOriginal",2);m([y()],g.prototype,"configFormDirty",2);m([y()],g.prototype,"configFormMode",2);m([y()],g.prototype,"configSearchQuery",2);m([y()],g.prototype,"configActiveSection",2);m([y()],g.prototype,"configActiveSubsection",2);m([y()],g.prototype,"channelsLoading",2);m([y()],g.prototype,"channelsSnapshot",2);m([y()],g.prototype,"channelsError",2);m([y()],g.prototype,"channelsLastSuccess",2);m([y()],g.prototype,"whatsappLoginMessage",2);m([y()],g.prototype,"whatsappLoginQrDataUrl",2);m([y()],g.prototype,"whatsappLoginConnected",2);m([y()],g.prototype,"whatsappBusy",2);m([y()],g.prototype,"whatsappActiveQrAccountId",2);m([y()],g.prototype,"whatsappPairedPhone",2);m([y()],g.prototype,"addingWhatsAppAccount",2);m([y()],g.prototype,"newWhatsAppAccountName",2);m([y()],g.prototype,"whatsappAccountError",2);m([y()],g.prototype,"whatsappAccountSaving",2);m([y()],g.prototype,"whatsappSettingsOpen",2);m([y()],g.prototype,"publicChatToggleBusy",2);m([y()],g.prototype,"licenseKey",2);m([y()],g.prototype,"licenseBusy",2);m([y()],g.prototype,"licenseValid",2);m([y()],g.prototype,"licenseMessage",2);m([y()],g.prototype,"licenseTier",2);m([y()],g.prototype,"licenseDeviceId",2);m([y()],g.prototype,"licenseStoredKey",2);m([y()],g.prototype,"licenseRemoveConfirm",2);m([y()],g.prototype,"authConnected",2);m([y()],g.prototype,"authBusy",2);m([y()],g.prototype,"authMessage",2);m([y()],g.prototype,"authUrl",2);m([y()],g.prototype,"authCodeInput",2);m([y()],g.prototype,"authExpiresIn",2);m([y()],g.prototype,"setupStep",2);m([y()],g.prototype,"gatewayHealthy",2);m([y()],g.prototype,"gatewayHealthLoading",2);m([y()],g.prototype,"gatewayHealthMessage",2);m([y()],g.prototype,"gatewayRestartBusy",2);m([y()],g.prototype,"updateAvailable",2);m([y()],g.prototype,"currentVersion",2);m([y()],g.prototype,"latestVersion",2);m([y()],g.prototype,"updateChecking",2);m([y()],g.prototype,"updateMessage",2);m([y()],g.prototype,"updateProgressSteps",2);m([y()],g.prototype,"updateLastResult",2);m([y()],g.prototype,"uninstallConfirm",2);m([y()],g.prototype,"uninstallBusy",2);m([y()],g.prototype,"uninstallDone",2);m([y()],g.prototype,"uninstallError",2);m([y()],g.prototype,"uninstallConfirmText",2);m([y()],g.prototype,"nostrProfileFormState",2);m([y()],g.prototype,"nostrProfileAccountId",2);m([y()],g.prototype,"presenceLoading",2);m([y()],g.prototype,"presenceEntries",2);m([y()],g.prototype,"presenceError",2);m([y()],g.prototype,"presenceStatus",2);m([y()],g.prototype,"agentsLoading",2);m([y()],g.prototype,"agentsList",2);m([y()],g.prototype,"agentsError",2);m([y()],g.prototype,"sessionsLoading",2);m([y()],g.prototype,"sessionsResult",2);m([y()],g.prototype,"sessionsError",2);m([y()],g.prototype,"cronLoading",2);m([y()],g.prototype,"cronJobs",2);m([y()],g.prototype,"cronStatus",2);m([y()],g.prototype,"cronError",2);m([y()],g.prototype,"cronForm",2);m([y()],g.prototype,"cronRunsJobId",2);m([y()],g.prototype,"cronRuns",2);m([y()],g.prototype,"cronBusy",2);m([y()],g.prototype,"cronNewEventModal",2);m([y()],g.prototype,"cronDetailJobId",2);m([y()],g.prototype,"browserScreencastActive",2);m([y()],g.prototype,"browserScreencastFrame",2);m([y()],g.prototype,"browserScreencastMetadata",2);m([y()],g.prototype,"browserHandoffPending",2);m([y()],g.prototype,"browserHandoffReason",2);m([y()],g.prototype,"browserHandoffId",2);m([y()],g.prototype,"browserInputMode",2);m([y()],g.prototype,"browserFullscreen",2);m([y()],g.prototype,"browserLoading",2);m([y()],g.prototype,"browserError",2);m([y()],g.prototype,"filesLoading",2);m([y()],g.prototype,"filesTree",2);m([y()],g.prototype,"filesRoot",2);m([y()],g.prototype,"filesError",2);m([y()],g.prototype,"filesSelectedPath",2);m([y()],g.prototype,"filesSelectedPaths",2);m([y()],g.prototype,"filesPreviewContent",2);m([y()],g.prototype,"filesPreviewLoading",2);m([y()],g.prototype,"filesPreviewBinary",2);m([y()],g.prototype,"filesPreviewSize",2);m([y()],g.prototype,"filesExpandedDirs",2);m([y()],g.prototype,"filesMessage",2);m([y()],g.prototype,"filesUploadBusy",2);m([y()],g.prototype,"filesReindexBusy",2);m([y()],g.prototype,"filesMemoryStatus",2);m([y()],g.prototype,"embeddingDownloading",2);m([y()],g.prototype,"filesSearchQuery",2);m([y()],g.prototype,"filesSearchResults",2);m([y()],g.prototype,"filesSearchLoading",2);m([y()],g.prototype,"filesSearchAgentId",2);m([y()],g.prototype,"auditEntries",2);m([y()],g.prototype,"auditLoading",2);m([y()],g.prototype,"auditModalOpen",2);m([y()],g.prototype,"skillsLoading",2);m([y()],g.prototype,"skillsReport",2);m([y()],g.prototype,"skillsError",2);m([y()],g.prototype,"skillsFilter",2);m([y()],g.prototype,"skillEdits",2);m([y()],g.prototype,"skillsBusyKey",2);m([y()],g.prototype,"skillMessages",2);m([y()],g.prototype,"adminsLoading",2);m([y()],g.prototype,"adminPhones",2);m([y()],g.prototype,"adminsError",2);m([y()],g.prototype,"adminsSaving",2);m([y()],g.prototype,"adminsNewPhone",2);m([y()],g.prototype,"customersLoading",2);m([y()],g.prototype,"customersSaving",2);m([y()],g.prototype,"customersRecords",2);m([y()],g.prototype,"customersError",2);m([y()],g.prototype,"customersSearchQuery",2);m([y()],g.prototype,"customersEditingId",2);m([y()],g.prototype,"customersShowAddForm",2);m([y()],g.prototype,"customersNewPhone",2);m([y()],g.prototype,"customersNewName",2);m([y()],g.prototype,"imessageEnableConfirm",2);m([y()],g.prototype,"imessageEnabling",2);m([y()],g.prototype,"infoModalOpen",2);m([y()],g.prototype,"workspaces",2);m([y()],g.prototype,"workspacesLoading",2);m([y()],g.prototype,"workspacesError",2);m([y()],g.prototype,"selectedWorkspace",2);m([y()],g.prototype,"addingWorkspace",2);m([y()],g.prototype,"newWorkspaceName",2);m([y()],g.prototype,"newWorkspacePath",2);m([y()],g.prototype,"newWorkspacePin",2);m([y()],g.prototype,"accountPinModalOpen",2);m([y()],g.prototype,"accountPinBusy",2);m([y()],g.prototype,"accountPinError",2);m([y()],g.prototype,"accountPinSuccess",2);m([y()],g.prototype,"apiKeyProviders",2);m([y()],g.prototype,"apiKeyModalOpen",2);m([y()],g.prototype,"apiKeyBusy",2);m([y()],g.prototype,"apiKeyError",2);m([y()],g.prototype,"apiKeySuccess",2);m([y()],g.prototype,"apiKeySavingProvider",2);m([y()],g.prototype,"authApiKeyMode",2);m([y()],g.prototype,"authApiKeyInput",2);m([y()],g.prototype,"authApiKeyBusy",2);m([y()],g.prototype,"authApiKeyError",2);m([y()],g.prototype,"pinChanging",2);m([y()],g.prototype,"pinChangeBusy",2);m([y()],g.prototype,"pinChangeError",2);m([y()],g.prototype,"loginChangePinMode",2);m([y()],g.prototype,"changePinBusy",2);m([y()],g.prototype,"changePinError",2);m([y()],g.prototype,"changePinSuccess",2);m([y()],g.prototype,"workspaceSaving",2);m([y()],g.prototype,"workspaceRemoveConfirm",2);m([y()],g.prototype,"renamingWorkspace",2);m([y()],g.prototype,"renameWorkspaceName",2);m([y()],g.prototype,"debugLoading",2);m([y()],g.prototype,"debugStatus",2);m([y()],g.prototype,"debugHealth",2);m([y()],g.prototype,"debugModels",2);m([y()],g.prototype,"debugHeartbeat",2);m([y()],g.prototype,"debugCallMethod",2);m([y()],g.prototype,"debugCallParams",2);m([y()],g.prototype,"debugCallResult",2);m([y()],g.prototype,"debugCallError",2);m([y()],g.prototype,"logsLoading",2);m([y()],g.prototype,"logsError",2);m([y()],g.prototype,"logsFile",2);m([y()],g.prototype,"logsEntries",2);m([y()],g.prototype,"logsFilterText",2);m([y()],g.prototype,"logsLevelFilters",2);m([y()],g.prototype,"logsAutoFollow",2);m([y()],g.prototype,"logsTruncated",2);m([y()],g.prototype,"logsCursor",2);m([y()],g.prototype,"logsLastFetchAt",2);m([y()],g.prototype,"logsLimit",2);m([y()],g.prototype,"logsMaxBytes",2);m([y()],g.prototype,"logsAtBottom",2);m([y()],g.prototype,"logsSubTab",2);m([y()],g.prototype,"sessionLogsLoading",2);m([y()],g.prototype,"sessionLogsError",2);m([y()],g.prototype,"sessionLogsEntries",2);m([y()],g.prototype,"sessionLogsFilterText",2);m([y()],g.prototype,"sessionLogsTypeFilters",2);m([y()],g.prototype,"sessionLogsAgentFilters",2);m([y()],g.prototype,"sessionLogsAgents",2);m([y()],g.prototype,"sessionLogsAutoFollow",2);m([y()],g.prototype,"sessionLogsCursors",2);m([y()],g.prototype,"sessionLogsLastFetchAt",2);m([y()],g.prototype,"sessionLogsAtBottom",2);m([y()],g.prototype,"chatUserNearBottom",2);g=m([ol("taskmaster-app")],g);
|
|
3212
|
+
//# sourceMappingURL=index-D5tMNwub.js.map
|