@rubytech/taskmaster 1.0.69 → 1.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,23 @@
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(`
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 U=(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},ao={},ie=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let u=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const o=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=u(n.map(l=>{if(l=Iu(l,i),l in ao)return;ao[l]=!0;const d=l.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(i)for(let y=o.length-1;y>=0;y--){const b=o[y];if(b.href===l&&(!d||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${h}`))return;const v=document.createElement("link");if(v.rel=d?"stylesheet":Lu,d||(v.as="script"),v.crossOrigin="",v.href=l,c&&v.setAttribute("nonce",c),document.head.appendChild(v),d)return new Promise((y,b)=>{v.addEventListener("load",y),v.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${l}`)))})}))}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 Ru=e=>new Ja(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 Ja(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)}},co=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,Ke=globalThis,uo=Ke.trustedTypes,zu=uo?uo.emptyScript:"",Ki=Ke.reactiveElementPolyfillSupport,en=(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),po={attribute:!0,type:String,converter:Xn,reflect:!1,useDefault:!1,hasChanged:Js};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Ke.litPropertyMetadata??(Ke.litPropertyMetadata=new WeakMap);let St=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&&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)??po}static _$Ei(){if(this.hasOwnProperty(en("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(en("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(en("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(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 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),c=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)==null?void 0:r.fromAttribute)!==void 0?a.converter:Xn;this._$Em=s;const u=c.fromAttribute(n,a.type);this[s]=u??((o=this._$Ej)==null?void 0:o.get(s))??u,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,c=this[r];a!==!0||this._$AL.has(r)||c===void 0||this.C(r,void 0,o,c)}}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){}};St.elementStyles=[],St.shadowRootOptions={mode:"open"},St[en("elementProperties")]=new Map,St[en("finalized")]=new Map,Ki==null||Ki({ReactiveElement:St}),(Ke.reactiveElementVersions??(Ke.reactiveElementVersions=[])).push("2.1.2");const tn=globalThis,ho=e=>e,Zn=tn.trustedTypes,fo=Zn?Zn.createPolicy("lit-html",{createHTML:e=>e}):void 0,el="$lit$",We=`lit$${Math.random().toFixed(9).slice(2)}$`,tl="?"+We,ju=`<${tl}>`,it=document,un=()=>it.createComment(""),dn=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]`,Ut=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,go=/-->/g,mo=/>/g,Xe=RegExp(`>|${zi}(?:([^\\s"'>=/]+)(${zi}*=${zi}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),yo=/'/g,vo=/"/g,nl=/^(?:script|style|textarea|title)$/i,qu=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),p=qu(1),je=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),bo=new WeakMap,et=it.createTreeWalker(it,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 Vu=(e,t)=>{const n=e.length-1,i=[];let s,r=t===2?"<svg>":t===3?"<math>":"",o=Ut;for(let a=0;a<n;a++){const c=e[a];let u,l,d=-1,h=0;for(;h<c.length&&(o.lastIndex=h,l=o.exec(c),l!==null);)h=o.lastIndex,o===Ut?l[1]==="!--"?o=go:l[1]!==void 0?o=mo:l[2]!==void 0?(nl.test(l[2])&&(s=RegExp("</"+l[2],"g")),o=Xe):l[3]!==void 0&&(o=Xe):o===Xe?l[0]===">"?(o=s??Ut,d=-1):l[1]===void 0?d=-2:(d=o.lastIndex-l[2].length,u=l[1],o=l[3]===void 0?Xe:l[3]==='"'?vo:yo):o===vo||o===yo?o=Xe:o===go||o===mo?o=Ut:(o=Xe,s=void 0);const v=o===Xe&&e[a+1].startsWith("/>")?" ":"";r+=o===Ut?c+ju:d>=0?(i.push(u),c.slice(0,d)+el+c.slice(d)+We+v):c+We+(d===-2?a:v)}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,c=this.parts,[u,l]=Vu(t,n);if(this.el=sl.createElement(u,i),et.currentNode=this.el.content,n===2||n===3){const d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(s=et.nextNode())!==null&&c.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const d of s.getAttributeNames())if(d.endsWith(el)){const h=l[o++],v=s.getAttribute(d).split(We),y=/([.?@])?(.*)/.exec(h);c.push({type:1,index:r,name:y[2],strings:v,ctor:y[1]==="."?Qu:y[1]==="?"?Yu:y[1]==="@"?Xu:vi}),s.removeAttribute(d)}else d.startsWith(We)&&(c.push({type:6,index:r}),s.removeAttribute(d));if(nl.test(s.tagName)){const d=s.textContent.split(We),h=d.length-1;if(h>0){s.textContent=Zn?Zn.emptyScript:"";for(let v=0;v<h;v++)s.append(d[v],un()),et.nextNode(),c.push({type:2,index:++r});s.append(d[h],un())}}}else if(s.nodeType===8)if(s.data===tl)c.push({type:2,index:r});else{let d=-1;for(;(d=s.data.indexOf(We,d+1))!==-1;)c.push({type:7,index:r}),d+=We.length-1}r++}}static createElement(t,n){const i=it.createElement("template");return i.innerHTML=t,i}};function Tt(e,t,n=e,i){var o,a;if(t===je)return t;let s=i!==void 0?(o=n._$Co)==null?void 0:o[i]:n._$Cl;const r=dn(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=Tt(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)??it).importNode(n,!0);et.currentNode=s;let r=et.nextNode(),o=0,a=0,c=i[0];for(;c!==void 0;){if(o===c.index){let u;c.type===2?u=new yi(r,r.nextSibling,this,t):c.type===1?u=new c.ctor(r,c.name,c.strings,this,t):c.type===6&&(u=new Zu(r,this,t)),this._$AV.push(u),c=i[++a]}o!==(c==null?void 0:c.index)&&(r=et.nextNode(),o++)}return et.currentNode=it,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=Tt(this,t,n),dn(t)?t===k||t==null||t===""?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==je&&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&&dn(this._$AH)?this._$AA.nextSibling.data=t:this.T(it.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 Gu(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(un()),this.O(un()),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=Tt(this,t,n,0),o=!dn(t)||t!==this._$AH&&t!==je,o&&(this._$AH=t);else{const a=t;let c,u;for(t=r[0],c=0;c<r.length-1;c++)u=Tt(this,a[i+c],n,c),u===je&&(u=this._$AH[c]),o||(o=!dn(u)||u!==this._$AH[c]),u===k?t=k:t!==k&&(t+=(u??"")+r[c+1]),this._$AH[c]=u}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=Tt(this,t,n,0)??k)===je)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){Tt(this,t)}};const Ju={I:yi},ji=tn.litHtmlPolyfillSupport;ji==null||ji(As,yi),(tn.litHtmlVersions??(tn.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(un(),r),r,void 0,n??{})}return s._$AI(e),s};const nt=globalThis;let $t=class extends St{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 je}};var Za;$t._$litElement$=!0,$t.finalized=!0,(Za=nt.litElementHydrateSupport)==null||Za.call(nt,{LitElement:$t});const Hi=nt.litElementPolyfillSupport;Hi==null||Hi({LitElement:$t});(nt.litElementVersions??(nt.litElementVersions=[])).push("4.2.2");const ol=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 c=t.get.call(this);t.set.call(this,a),this.requestUpdate(o,c,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 c=this[o];t.call(this,a),this.requestUpdate(o,c,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 m(e){return bi({...e,state:!0,attribute:!1})}const id=50,sd=200,rd="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,id)??rd,n=wo((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 al(){return xs(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const Jn="taskmaster.control.settings.v1",ll="taskmaster.account.settings.";function nn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const kt={gatewayUrl:nn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},Ue={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function od(){try{const e=localStorage.getItem(Jn);if(!e)return{...kt,gatewayUrl:nn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():nn(),token:typeof t.token=="string"?t.token:kt.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:kt.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:kt.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:kt.navGroupsCollapsed}}catch{return{...kt,gatewayUrl:nn()}}}function ad(e){if(!e)return{...Ue};try{const t=localStorage.getItem(ll+e);if(!t)return{...Ue};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():Ue.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||Ue.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:Ue.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:Ue.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:Ue.splitRatio}}catch{return{...Ue}}}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(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:nn(),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 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,c=o[1]==="/";r?c&&(r=!1):(i+=n.slice(s,a),c||(r=!0)),s=a+o[0].length}return i+=n.slice(s),ud(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 c=Math.round(a/60);if(c<60)return`in ${c}m`;const u=Math.round(c/60);return u<48?`in ${u}h`:`in ${Math.round(u/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 pd(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 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 sn(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 hl(e){if(!e||typeof e!="object")return sn(e);const t=e;if(Gi.has(t))return Gi.get(t)??null;const n=sn(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 c=a;if(c.type==="thinking"&&typeof c.thinking=="string"){const u=c.thinking.trim();u&&i.push(u)}}if(i.length>0)return i.join(`
5
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
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
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(", ")}
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 fl(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(d=>{const v=String(d.type??"").toLowerCase();return v==="toolresult"||v==="tool_result"}),a=typeof t.toolName=="string"||typeof t.tool_name=="string";(i||o||a)&&(n="toolResult");let c=[];typeof t.content=="string"?c=[{type:"text",text:t.content}]:Array.isArray(t.content)?c=t.content.map(d=>({type:d.type||"text",text:d.text,name:d.name,args:d.args||d.arguments})):typeof t.text=="string"&&(c=[{type:"text",text:t.text}]);const u=typeof t.timestamp=="number"?t.timestamp:Date.now(),l=typeof t.id=="string"?t.id:void 0;return{role:n,content:c,timestamp:u,id:l}}function gl(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 ml(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 Te(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 yl(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(v=>!v.fileName),a=(n??[]).filter(v=>v.fileName),c=[],u=a.map(v=>v.fileName).filter(Boolean);if(u.length>0){const v=i?`${u.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 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}
10
+ ${i}`:u.join(", ");c.push({type:"text",text:v})}else i&&c.push({type:"text",text:i});for(const v of o)c.push({type:"image",source:{type:"base64",media_type:v.mimeType,data:v.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:c,timestamp:r}],e.chatSending=!0,e.lastError=null;const l=tr();e.chatRunId=l,e.chatStream="",e.chatStreamStartedAt=r;const d=[...o,...a],h=d.length>0?d.map(v=>{if(v.textContent)return{type:"document",mimeType:v.mimeType||"text/plain",fileName:v.fileName,content:btoa(unescape(encodeURIComponent(v.textContent)))};const y=Ed(v.dataUrl);return y?{type:v.fileName?"document":"image",mimeType:y.mimeType,fileName:v.fileName,content:y.content}:null}).filter(v=>v!==null):void 0;try{return await e.client.request("chat.send",{sessionKey:e.sessionKey,message:i,deliver:!1,idempotencyKey:l,attachments:h}),!0}catch(v){const y=String(v);return e.chatRunId=null,e.chatStream=null,e.chatStreamStartedAt=null,e.lastError=y,e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:"Error: "+y}],timestamp:Date.now()}],!1}finally{e.chatSending=!1}}async function vl(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 bl(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=sn(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 $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}
12
+ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(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=sn(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:vl,handleChatEvent:bl,loadChatHistory:Te,sendChatMessage:yl},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=pl(n,Td);return i.truncated?`${i.text}
14
14
 
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(`
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,c=o==="update"?Eo(i.partialResult):o==="result"?Eo(i.result):void 0,u=Date.now();let l=e.toolStreamById.get(s);l?(l.name=r,a!==void 0&&(l.args=a),c!==void 0&&(l.output=c),l.updatedAt=u):(l={toolCallId:s,runId:t.runId,sessionKey:n,name:r,args:a,output:c,startedAt:typeof t.ts=="number"?t.ts:u,updatedAt:u,message:{}},e.toolStreamById.set(s,l),e.toolStreamOrder.push(s)),l.message=Md(l),Pd(e),Id(e,o==="result")}function fn(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 c=a.scrollHeight-a.scrollTop-a.clientHeight;(t||e.chatUserNearBottom||c<200)&&(a.scrollTop=a.scrollHeight,e.chatUserNearBottom=!0)},o)})})}function wl(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
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 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`
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 He(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function st(e){return`${JSON.stringify(e,null,2).trimEnd()}
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 c=i;c[o]==null&&(c[o]=typeof a=="number"?[]:{}),i=c[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 _e(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 Sl(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"?st(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=st(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=He(t.config??{}),e.configFormOriginal=He(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?st(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 _e(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function gn(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 gn(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 gn(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 gn(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 V(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 xl(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 $l(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=He(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 c=a.accounts;if(c[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}c[i]={name:n,provider:"baileys"};const u=s.hash;if(!u){e.whatsappAccountError="Config hash missing; reload and retry.";return}const l=st(r);await e.client.request("config.set",{raw:l,baseHash:u}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await V(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=He(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(l=>{const d=l.match;return!d||d.channel!=="whatsapp"?!0:d.accountId!==t}));const c=n.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const u=st(i);await e.client.request("config.set",{raw:u,baseHash:c}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await V(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const Jd=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:$l,loadChannels:V,logoutWhatsApp:xl,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 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 Cl(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 c=null;return typeof t[1]=="string"?c=t[1]:!o&&typeof t[0]=="string"?c=t[0]:typeof t.message=="string"&&(c=t.message),{raw:e,time:i,level:s,subsystem:a,message:c??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function Et(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(Cl),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:Et,parseLogLine:Cl},Symbol.toStringTag,{value:"Module"}));const Tl={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:re,n:Vn,Gx:Co,Gy:To,a:Xi,d:Zi,h:rp}=Tl,rt=32,or=64,op=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},ee=(e="")=>{const t=new Error(e);throw op(t,ee),t},ap=e=>typeof e=="bigint",lp=e=>typeof e=="string",cp=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",Ve=(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}`:"",c=i?`length=${s}`:`type=${typeof e}`;ee(o+"expected Uint8Array"+a+", got "+c)}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(Ve(e)).map(t=>Ml(t,2)).join(""),Ie={_0:48,_9:57,A:65,F:70,a:97,f:102},_o=e=>{if(e>=Ie._0&&e<=Ie._9)return e-Ie._0;if(e>=Ie.A&&e<=Ie.F)return e-(Ie.A-10);if(e>=Ie.a&&e<=Ie.f)return e-(Ie.a-10)},Ll=e=>{const t="hex invalid";if(!lp(e))return ee(t);const n=e.length,i=n/2;if(n%2)return ee(t);const s=Si(i);for(let r=0,o=0;r<i;r++,o+=2){const a=_o(e.charCodeAt(o)),c=_o(e.charCodeAt(o+1));if(a===void 0||c===void 0)return ee(t);s[r]=a*16+c}return s},Il=()=>globalThis==null?void 0:globalThis.crypto,up=()=>{var e;return((e=Il())==null?void 0:e.subtle)??ee("crypto.subtle must be defined, consider polyfill")},pn=(...e)=>{const t=Si(e.reduce((i,s)=>i+Ve(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},dp=(e=rt)=>Il().getRandomValues(Si(e)),ni=BigInt,Je=(e,t,n,i="bad number: out of range")=>ap(e)&&t<=e&&e<n?e:ee(i),P=(e,t=re)=>{const n=e%t;return n>=0n?n:t+n},Rl=e=>P(e,Vn),pp=(e,t)=>{(e===0n||t<=0n)&&ee("no inverse n="+e+" mod="+t);let n=P(e,t),i=t,s=0n,r=1n;for(;n!==0n;){const o=i/n,a=i%n,c=s-r*o;i=n,n=a,s=r,r=c}return i===1n?P(s,t):ee("no inverse")},hp=e=>{const t=Bl[e];return typeof t!="function"&&ee("hashes."+e+" not set"),t},Ji=e=>e instanceof ot?e:ee("Point expected"),Ts=2n**256n,Ce=class Ce{constructor(t,n,i,s){U(this,"X");U(this,"Y");U(this,"Z");U(this,"T");const r=Ts;this.X=Je(t,0n,r),this.Y=Je(n,0n,r),this.Z=Je(i,1n,r),this.T=Je(s,0n,r),Object.freeze(this)}static CURVE(){return Tl}static fromAffine(t){return new Ce(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){const i=Zi,s=_l(Ve(t,rt)),r=t[31];s[31]=r&-129;const o=Dl(s);Je(o,0n,n?Ts:re);const c=P(o*o),u=P(c-1n),l=P(i*c+1n);let{isValid:d,value:h}=gp(u,l);d||ee("bad point: y not sqrt");const v=(h&1n)===1n,y=(r&128)!==0;return!n&&h===0n&&y&&ee("bad point: x==0, isLastByteOdd"),y!==v&&(h=P(-h)),new Ce(h,o,1n,P(h*o))}static fromHex(t,n){return Ce.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 ee("bad point: ZERO");const{X:s,Y:r,Z:o,T:a}=i,c=P(s*s),u=P(r*r),l=P(o*o),d=P(l*l),h=P(c*t),v=P(l*P(h+u)),y=P(d+P(n*P(c*u)));if(v!==y)return ee("bad point: equation left != right (1)");const b=P(s*r),S=P(o*a);return b!==S?ee("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),c=P(n*a),u=P(r*s),l=P(i*a),d=P(o*s);return c===u&&l===d}is0(){return this.equals(xt)}negate(){return new Ce(P(-this.X),this.Y,this.Z,P(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=Xi,r=P(t*t),o=P(n*n),a=P(2n*P(i*i)),c=P(s*r),u=t+n,l=P(P(u*u)-r-o),d=c+o,h=d-a,v=c-o,y=P(l*h),b=P(d*v),S=P(l*v),x=P(h*d);return new Ce(y,b,x,S)}add(t){const{X:n,Y:i,Z:s,T:r}=this,{X:o,Y:a,Z:c,T:u}=Ji(t),l=Xi,d=Zi,h=P(n*o),v=P(i*a),y=P(r*d*u),b=P(s*c),S=P((n+i)*(o+a)-h-v),x=P(b-y),$=P(b+y),C=P(v-l*h),T=P(S*x),M=P($*C),R=P(S*C),B=P(x*$);return new Ce(T,M,B,R)}subtract(t){return this.add(Ji(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return xt;if(Je(t,1n,Vn),t===1n)return this;if(this.equals(at))return Ep(t).p;let i=xt,s=at;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(xt))return{x:0n,y:1n};const s=pp(i,re);P(i*s)!==1n&&ee("invalid inverse");const r=P(t*s),o=P(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(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()}};U(Ce,"BASE"),U(Ce,"ZERO");let ot=Ce;const at=new ot(Co,To,1n,P(Co*To)),xt=new ot(0n,1n,1n,0n);ot.BASE=at;ot.ZERO=xt;const Nl=e=>Ll(Ml(Je(e,0n,Ts),or)).reverse(),Dl=e=>ni("0x"+Pl(_l(Ve(e)).reverse())),Ae=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=re;return n},fp=e=>{const n=e*e%re*e%re,i=Ae(n,2n)*n%re,s=Ae(i,1n)*e%re,r=Ae(s,5n)*s%re,o=Ae(r,10n)*r%re,a=Ae(o,20n)*o%re,c=Ae(a,40n)*a%re,u=Ae(c,80n)*c%re,l=Ae(u,80n)*c%re,d=Ae(l,10n)*r%re;return{pow_p_5_8:Ae(d,2n)*e%re,b2:n}},Mo=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,gp=(e,t)=>{const n=P(t*t*t),i=P(n*n*t),s=fp(e*i).pow_p_5_8;let r=P(e*n*s);const o=P(t*r*r),a=r,c=P(r*Mo),u=o===e,l=o===P(-e),d=o===P(-e*Mo);return u&&(r=a),(l||d)&&(r=c),(P(r)&1n)===1n&&(r=P(-r)),{isValid:u||l,value:r}},_s=e=>Rl(Dl(e)),ar=(...e)=>Bl.sha512Async(pn(...e)),mp=(...e)=>hp("sha512")(pn(...e)),Ol=e=>{const t=e.slice(0,rt);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(rt,or),i=_s(t),s=at.multiply(i),r=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:r}},lr=e=>ar(Ve(e,rt)).then(Ol),yp=e=>Ol(mp(Ve(e,rt))),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=at.multiply(r).toBytes();return{hashable:pn(o,i,n),finish:u=>{const l=Rl(r+_s(u)*s);return Ve(pn(o,Nl(l)),or)}}},kp=async(e,t)=>{const n=Ve(e),i=await lr(t),s=await ar(i.prefix,n);return bp(wp(i,s,n))},Bl={sha512Async:async e=>{const t=up(),n=pn(e);return Si(await t.digest("SHA-512",n.buffer))},sha512:void 0},Sp=(e=dp(rt))=>e,Ap={getExtendedPublicKeyAsync:lr,getExtendedPublicKey:yp,randomSecretKey:Sp},ii=8,xp=256,Fl=Math.ceil(xp/ii)+1,Ms=2**(ii-1),$p=()=>{const e=[];let t=at,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 Po;const Lo=(e,t)=>{const n=t.negate();return e?n:t},Ep=e=>{const t=Po||(Po=$p());let n=xt,i=at;const s=2**ii,r=s,o=ni(s-1),a=ni(ii);for(let c=0;c<Fl;c++){let u=Number(e&o);e>>=a,u>Ms&&(u-=r,e+=1n);const l=c*Ms,d=l,h=l+Math.abs(u)-1,v=c%2!==0,y=u<0;u===0?i=i.add(Lo(v,t[d])):n=n.add(Lo(y,t[h]))}return e!==0n&&ee("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 Tp(){const e=Ap.randomSecretKey(),t=await vp(e);return{deviceId:await Wl(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 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 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=Ul(e),i=new TextEncoder().encode(t),s=await kp(i,n);return Ps(s)}const Kl="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(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 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,zl(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],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 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=He(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 _t(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 lt(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 lt(e),_t(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ai(i);e.skillsError=s,_t(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 lt(e),_t(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ai(n);e.skillsError=i,_t(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 lt(e),_t(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const r=Ai(s);e.skillsError=r,_t(e,t,{kind:"error",message:r})}finally{e.skillsBusyKey=null}}}const Bp=Object.freeze(Object.defineProperty({__proto__:null,installSkill:Gl,loadSkills:lt,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 xi(e){if(!e)return"";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t==="/"?"":(t.endsWith("/")&&(t=t.slice(0,-1)),t)}function hn(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=Ql[e];return n?`${n}${i}`:i}function Xl(e,t=""){const n=xi(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=hn(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Yl.get(s)??null}function Up(e){let t=hn(e);if(t.endsWith("/index.html")&&(t=hn(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 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 u;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 l=.5,d=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")l=In(n.pointerClientX/window.innerWidth),d=In(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const h=n.element.getBoundingClientRect();h.width>0&&h.height>0&&typeof window<"u"&&(l=In((h.left+h.width/2)/window.innerWidth),d=In((h.top+h.height/2)/window.innerHeight))}r.style.setProperty("--theme-switch-x",`${l*100}%`),r.style.setProperty("--theme-switch-y",`${d*100}%`),r.classList.add("theme-transition");try{const h=(u=o.startViewTransition)==null?void 0:u.call(o,()=>{t()});h!=null&&h.finished?h.finished.finally(()=>Rn(r)):Rn(r)}catch{Rn(r),t()}return}t(),Rn(r)},jp=2e3;async function rn(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 Zl=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:rn},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 Hp(e,t){if(!(!e.client||!e.connected))try{const n={};await e.client.request("memory.auditClear",n),e.auditEntries=[]}catch{}}function Ne(e){return e instanceof Error?e.message:String(e)}let Nn=null;function mn(e,t){Nn&&clearTimeout(Nn),e.filesMessage={kind:"success",text:t},Nn=setTimeout(()=>{e.filesMessage=null,Nn=null},3e3)}async function yn(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=Ne(n)}finally{e.filesLoading=!1}}}}async function qp(e,t,n){e.filesSelectedPaths=new Set([t]),await ec(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 ec(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 tc(e,r,t),i++}catch(o){s=Ne(o)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:mn(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 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=Ne(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),u=>u.charCodeAt(0)),o=new Blob([r]),a=URL.createObjectURL(o),c=document.createElement("a");c.href=a,c.download=s.name??t.split("/").pop()??"download",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:Ne(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(),c=btoa(new Uint8Array(a).reduce((l,d)=>l+String.fromCharCode(d),"")),u={path:t,name:o.name,data:c};i&&(u.agentId=i),await e.client.request("files.upload",u),s++}catch(a){r=Ne(a)}e.filesUploadBusy=!1,r?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${r}`:r}:mn(e,`${s} file${s!==1?"s":""} uploaded`),await yn(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),mn(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await yn(e,n)}catch(i){e.filesMessage={kind:"error",text:Ne(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),mn(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await yn(e,i)}catch(s){e.filesMessage={kind:"error",text:Ne(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;mn(e,`Re-indexed: ${s} files, ${r} chunks`),await fr(e,t)}catch(n){e.filesMessage={kind:"error",text:Ne(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:Ne(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"&&Et(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"||rn(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(()=>{Jl(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 ze(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 ic(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&ze(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 c=n.trim();c&&c!==e.settings.token&&ze(e,{...e.settings,token:c}),t.delete("token"),o=!0}if(i!=null){const c=i.trim();c&&(e.password=c),t.delete("password"),o=!0}if(s!=null){const c=s.trim();c&&(e.sessionKey=c,ze(e,{...e.settings,sessionKey:c,lastActiveSessionKey:c}))}if(r!=null){const c=r.trim();c&&c!==e.settings.gatewayUrl&&ze(e,{...e.settings,gatewayUrl:c}),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),rc(e,t,!1)}function uh(e,t,n){zp({nextTheme:t,applyTheme:()=>{e.theme=t,ze(e,{...e.settings,theme:t}),$i(e,hr(t))},context:n,currentTheme:e.theme})}async function si(e){if(e.tab==="overview"&&await oc(e),e.tab==="channels"&&await yh(e),e.tab==="instances"&&await jl(e),e.tab==="cron"&&await kr(e),e.tab==="skills"&&await lt(e),e.tab==="nodes"&&(await pr(e),await dr(e),await _e(e),await Dp(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await Sh(e),fn(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await Sl(e),await _e(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 ie(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Zl);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await Et(e,{reset:!0});wl(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=Xl(window.location.pathname,e.basePath)??"chat";sc(e,n),rc(e,n,t)}function mh(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,ze(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=hn(Fp(t,e.basePath)),s=hn(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([V(e,!1),jl(e),nr(e),gn(e),rr(e)])}async function yh(e){await Promise.all([V(e,!0),Sl(e),_e(e)])}async function kr(e){await Promise.all([V(e,!1),gn(e),ki(e)])}function ac(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 lc(e){e.connected&&(e.chatMessage="",await vl(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}],fn(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),fn(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 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 lc(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[]),ac(e)){bh(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 Sh(e){await Promise.all([Te(e),nr(e),Ls(e)]),fn(e,!0)}const Ah=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 $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 O={messageSquare:p`<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:p`<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:p`<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:p`<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:p`<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:p`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:p`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:p`<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:p`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<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:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:p`<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:p`<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:p`<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:p`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:p`<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:p`<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:p`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:p`<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:p`<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:p`<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:p`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:p`<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",dc="#00d4ff";let Dn=null;function qe(){return Dn||(Dn={name:window.__TASKMASTER_BRAND_NAME__||Eh,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||Ch,accentColor:window.__TASKMASTER_ACCENT_COLOR__||dc},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===dc)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=p`<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=p`<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 pt(e,t){const n=(l,d)=>l===e?p`<span class="sp-page-nav-current">${l}</span>`:p`<a href=${d}>${l}</a>`,i=p`
21
21
  ${n("Setup","/setup")}
22
22
  ${n("Chat","/chat")}
23
23
  ${n("Admins","/admins")}
@@ -25,38 +25,38 @@ ${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)?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">
28
+ `,r=t&&(t.isMaster!==!1||!t.hasPins)?Ih(t):k,o=t!=null&&t.hasPins&&t.onLogout?p`<button class="nav-logout-btn" @click=${t.onLogout} title="Lock">${Mh}</button>`:k,a=(t==null?void 0:t.auditCount)??0,c=a>0&&(t!=null&&t.onAuditClick)?p`<button class="nav-audit-btn" @click=${t.onAuditClick} title="Memory writes to review">
29
29
  ${Ph}
30
30
  <span class="nav-audit-badge">${a>99?"99+":a}</span>
31
- </button>`:k,c=()=>{const d=document.getElementById("nav-burger-toggle");d&&(d.checked=!1)};return Lh(),h`
31
+ </button>`:k,u=()=>{const l=document.getElementById("nav-burger-toggle");l&&(l.checked=!1)};return Lh(),p`
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">
35
- <img class="setup-header-logo" src="${Ie().iconUrl}" alt="${Ie().name}" />
35
+ <img class="setup-header-logo" src="${qe().iconUrl}" alt="${qe().name}" />
36
36
  <nav class="setup-header-nav">
37
37
  ${i}
38
38
  </nav>
39
39
  <div class="setup-header-right">
40
- ${r!==k?h`<span class="nav-selector-inline">${r}</span>`:k}
41
- ${l}
40
+ ${r!==k?p`<span class="nav-selector-inline">${r}</span>`:k}
41
+ ${c}
42
42
  ${o}
43
43
  <label for="nav-burger-toggle" class="nav-burger-button" aria-label="Toggle menu">
44
44
  <span class="nav-burger-icon"></span>
45
45
  </label>
46
46
  </div>
47
47
  </div>
48
- <nav class="setup-header-dropdown" @click=${c}>
49
- ${r!==k?h`<div class="nav-selector-mobile">${r}</div>`:k}
48
+ <nav class="setup-header-dropdown" @click=${u}>
49
+ ${r!==k?p`<div class="nav-selector-mobile">${r}</div>`:k}
50
50
  ${i}
51
51
  </nav>
52
52
  </div>
53
- `}function Ih(e){const{workspaces:t,selectedWorkspace:n,onWorkspaceSelect:i}=e;return h`
53
+ `}function Ih(e){const{workspaces:t,selectedWorkspace:n,onWorkspaceSelect:i}=e;return p`
54
54
  <select
55
55
  class="sp-workspace-selector"
56
56
  .value=${n??""}
57
57
  @change=${r=>{const o=r.target,a=o.value;if(a==="__add__"){o.value=n??"",e.onAddAccount?e.onAddAccount():window.location.href="/setup";return}i(a)}}
58
58
  >
59
- ${t.map(r=>h`
59
+ ${t.map(r=>p`
60
60
  <option value=${r.name} ?selected=${r.name===n}>
61
61
  ${r.displayName??r.name}
62
62
  </option>
@@ -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 Rh(e){return e.connected?e.fullscreen&&e.active?h`
67
+ `}function Rh(e){return e.connected?e.fullscreen&&e.active?p`
68
68
  <div class="sp-fullscreen-overlay">
69
69
  <div class="sp-fullscreen-toolbar">
70
70
  <button
@@ -104,15 +104,15 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
104
104
  ></canvas>
105
105
  </div>
106
106
  </div>
107
- `:h`
107
+ `:p`
108
108
  <div class="setup-container">
109
- ${ut("Browser")}
109
+ ${pt("Browser")}
110
110
  <div class="setup-card sp-card-wide">
111
111
  <h1>Remote Browser</h1>
112
112
  <p style="margin-bottom: 16px;">Live view of the headless Chrome instance.</p>
113
113
 
114
114
  <div class="sp-toolbar">
115
- ${e.active?h`
115
+ ${e.active?p`
116
116
  <button
117
117
  class="setup-button ${e.inputMode?"primary":"secondary"}"
118
118
  style="padding: 10px 20px; font-size: 14px;"
@@ -135,7 +135,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
135
135
  >
136
136
  Stop
137
137
  </button>
138
- `:h`
138
+ `:p`
139
139
  <button
140
140
  class="setup-button primary"
141
141
  style="padding: 10px 20px; font-size: 14px;"
@@ -147,9 +147,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
147
147
  `}
148
148
  </div>
149
149
 
150
- ${e.error?h`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
150
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
151
151
 
152
- ${e.handoffPending?h`
152
+ ${e.handoffPending?p`
153
153
  <div class="setup-warning" style="margin-top: 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left;">
154
154
  <div>
155
155
  <strong>Action required:</strong> ${e.handoffReason??"The agent needs you to complete an action in the browser."}
@@ -161,7 +161,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
161
161
  `:k}
162
162
 
163
163
  <div class="sp-canvas-area" style="margin-top: 16px;">
164
- ${e.active?h`
164
+ ${e.active?p`
165
165
  <div class="sp-canvas-wrap ${e.inputMode?"sp-input-active":""}">
166
166
  <canvas
167
167
  id="browser-screencast-canvas"
@@ -175,28 +175,28 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
175
175
  @contextmenu=${t=>t.preventDefault()}
176
176
  ></canvas>
177
177
  </div>
178
- `:h`
178
+ `:p`
179
179
  <div class="sp-canvas-placeholder">
180
- <div class="sp-canvas-placeholder-icon">${D.globe}</div>
180
+ <div class="sp-canvas-placeholder-icon">${O.globe}</div>
181
181
  <p>Click Start to begin streaming the Chrome viewport.</p>
182
182
  </div>
183
183
  `}
184
184
  </div>
185
185
 
186
- ${e.active&&e.inputMode?h`<p class="setup-hint" style="margin-top: 12px;">
186
+ ${e.active&&e.inputMode?p`<p class="setup-hint" style="margin-top: 12px;">
187
187
  Click the canvas to focus, then interact with the browser. Mouse and keyboard input are forwarded.
188
188
  </p>`:k}
189
189
 
190
190
  </div>
191
191
  </div>
192
- `:h`
192
+ `:p`
193
193
  <div class="setup-container">
194
194
  <div class="setup-card">
195
195
  <div class="setup-spinner"></div>
196
196
  <p>Connecting to gateway...</p>
197
197
  </div>
198
198
  </div>
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`
199
+ `}const ri="application/x-taskmaster-file-path";function pc(e){return e==null?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function hc(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){hc(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(c=>c.name.toLowerCase().endsWith(".md"));a.length>0&&n.onUpload(t,a)}}function fc(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?p`
200
200
  <div
201
201
  class="sp-tree-item sp-tree-dir ${s?"expanded":""}"
202
202
  style="padding-left: ${o}px;"
@@ -206,11 +206,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
206
206
  @drop=${a=>Nh(a,e.path,t)}
207
207
  >
208
208
  <span class="sp-tree-chevron">${s?"−":"+"}</span>
209
- <span class="sp-tree-icon">${D.folder}</span>
209
+ <span class="sp-tree-icon">${O.folder}</span>
210
210
  <span class="sp-tree-name">${e.name}</span>
211
211
  </div>
212
- ${s&&e.children?e.children.map(a=>hc(a,t,n+1)):k}
213
- `:h`
212
+ ${s&&e.children?e.children.map(a=>fc(a,t,n+1)):k}
213
+ `:p`
214
214
  <div
215
215
  class="sp-tree-item sp-tree-file ${r?"selected":""}"
216
216
  style="padding-left: ${o}px;"
@@ -218,11 +218,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
218
218
  @click=${a=>{a.metaKey||a.ctrlKey?t.onToggleSelectFile(e.path):t.onSelectFile(e.path)}}
219
219
  @dragstart=${a=>{a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData(ri,e.path),a.dataTransfer.setData("text/plain",e.name))}}
220
220
  >
221
- <span class="sp-tree-icon">${D.fileText}</span>
221
+ <span class="sp-tree-icon">${O.fileText}</span>
222
222
  <span class="sp-tree-name">${e.name}</span>
223
- <span class="sp-tree-size">${dc(e.size)}</span>
223
+ <span class="sp-tree-size">${pc(e.size)}</span>
224
224
  </div>
225
- `}function Dh(e){const t=e.selectedPaths.size;return t<2?k:h`
225
+ `}function Dh(e){const t=e.selectedPaths.size;return t<2?k:p`
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,17 +233,17 @@ ${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 Oh(e){if(e.selectedPaths.size!==1||!e.selectedPath)return k;if(e.previewLoading)return h`
236
+ `}function Oh(e){if(e.selectedPaths.size!==1||!e.selectedPath)return k;if(e.previewLoading)return p`
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>
240
- `;const t=e.selectedPath.split("/").pop()??e.selectedPath;return h`
240
+ `;const t=e.selectedPath.split("/").pop()??e.selectedPath;return p`
241
241
  <div class="sp-file-preview">
242
242
  <div class="sp-file-preview-header">
243
243
  <div>
244
244
  <strong>${t}</strong>
245
245
  <div class="sp-file-preview-meta">
246
- ${e.selectedPath}${e.previewSize!=null?` — ${dc(e.previewSize)}`:""}
246
+ ${e.selectedPath}${e.previewSize!=null?` — ${pc(e.previewSize)}`:""}
247
247
  </div>
248
248
  </div>
249
249
  <div class="sp-file-actions">
@@ -258,9 +258,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
258
258
  </button>
259
259
  </div>
260
260
  </div>
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>`}
261
+ ${e.previewBinary?p`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">Binary file — use Download to view.</p></div>`:e.previewContent!=null?p`<div class="sp-file-preview-body"><pre class="sp-file-code">${e.previewContent}</pre></div>`:p`<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 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`
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 p`
264
264
  <div class="sp-search-bar">
265
265
  <input
266
266
  type="text"
@@ -270,11 +270,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
270
270
  @input=${t=>e.onSearchQueryChange(t.target.value)}
271
271
  @keydown=${t=>{t.key==="Enter"&&e.onSearch(e.searchQuery)}}
272
272
  />
273
- ${e.agentIds.length>1?h`<select
273
+ ${e.agentIds.length>1?p`<select
274
274
  class="sp-search-agent-select"
275
275
  @change=${t=>e.onSearchAgentChange(t.target.value)}
276
276
  >
277
- ${e.agentIds.map(t=>h`<option value=${t} ?selected=${t===e.searchAgentId}>${t}</option>`)}
277
+ ${e.agentIds.map(t=>p`<option value=${t} ?selected=${t===e.searchAgentId}>${t}</option>`)}
278
278
  </select>`:k}
279
279
  <button
280
280
  class="setup-button secondary"
@@ -284,7 +284,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
284
284
  >
285
285
  ${e.searchLoading?"Searching...":"Search"}
286
286
  </button>
287
- ${e.searchResults!==null?h`<button
287
+ ${e.searchResults!==null?p`<button
288
288
  class="setup-button secondary"
289
289
  style="padding: 8px 16px; font-size: 13px;"
290
290
  @click=${e.onSearchClear}
@@ -292,11 +292,11 @@ ${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 Uh(e){return e.searchResults?e.searchResults.length===0?h`<div class="sp-search-results">
295
+ `}function Uh(e){return e.searchResults?e.searchResults.length===0?p`<div class="sp-search-results">
296
296
  <div style="padding: 24px; color: var(--tasker-muted-grey); text-align: center;">No results found.</div>
297
- </div>`:h`
297
+ </div>`:p`
298
298
  <div class="sp-search-results">
299
- ${e.searchResults.map(t=>h`
299
+ ${e.searchResults.map(t=>p`
300
300
  <div
301
301
  class="sp-search-result ${e.selectedPath===t.path?"selected":""}"
302
302
  @click=${()=>e.onSelectFile(t.path)}
@@ -312,9 +312,9 @@ ${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 Wh(e){const t=Bh(e);return e.connected?h`
315
+ `:k}function Wh(e){const t=Bh(e);return e.connected?p`
316
316
  <div class="setup-container">
317
- ${ut("Files",e.wsProps)}
317
+ ${pt("Files",e.wsProps)}
318
318
  <div class="setup-card sp-card-wide">
319
319
  <h1>Workspace Files</h1>
320
320
  <p style="margin-bottom: 16px;">Browse, upload, and manage files in your workspace. Drag files between folders to move them.</p>
@@ -346,68 +346,68 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
346
346
  >
347
347
  ${e.reindexBusy?"Re-indexing...":"Re-index"}
348
348
  </button>
349
- ${e.memoryStatus?e.memoryStatus.embeddingState==="downloading"?h`<span style="display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--tasker-orange, #f59e0b);">
349
+ ${e.memoryStatus?e.memoryStatus.embeddingState==="downloading"?p`<span style="display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--tasker-orange, #f59e0b);">
350
350
  <span
351
351
  class="setup-status-light"
352
352
  style="width: 10px; height: 10px; background: #f59e0b"
353
353
  ></span>
354
354
  Downloading embedding model\u2026
355
- </span>`:h`<span style="display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--tasker-text-grey);">
355
+ </span>`:p`<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
358
  style="width: 10px; height: 10px; background: ${e.memoryStatus.syncing?"#f59e0b":e.memoryStatus.dirty?"#ef4444":"#22c55e"}"
359
359
  ></span>
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}`})()}
360
+ ${(()=>{var c;if(e.memoryStatus.syncing&&e.memoryStatus.syncProgress){const{completed:u,total:l,label:d}=e.memoryStatus.syncProgress;return d||(l>0?`Indexing ${u}/${l} files…`:"Indexing…")}const n=e.memoryStatus.files,i=e.memoryStatus.chunks,s=`${n} file${n!==1?"s":""}, ${i} chunks`,r=(c=e.memoryStatus)==null?void 0:c.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
 
364
- ${e.error?h`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
364
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
365
365
 
366
- ${e.message?h`<div class="${e.message.kind==="error"?"setup-error":"setup-success-message"}" style="margin-top: 12px;">
366
+ ${e.message?p`<div class="${e.message.kind==="error"?"setup-error":"setup-success-message"}" style="margin-top: 12px;">
367
367
  ${e.message.text}
368
368
  </div>`:k}
369
369
 
370
- ${e.uploadBusy?h`<div style="margin-top: 12px; color: var(--tasker-orange); font-weight: 600; font-size: 14px;">Uploading...</div>`:k}
370
+ ${e.uploadBusy?p`<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?Uh(e):h`<div
374
+ ${e.searchResults!==null?Uh(e):p`<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
- @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)}}}
377
+ @drop=${n=>{var r,o;n.preventDefault();const i=(r=n.dataTransfer)==null?void 0:r.getData(ri);if(i){hc(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(c=>c.name.toLowerCase().endsWith(".md"));a.length>0&&e.onUpload(t,a)}}}
378
378
  >
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))}
379
+ ${e.tree.length===0&&!e.loading?p`<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=>fc(n,e,0))}
380
380
  </div>`}
381
381
 
382
382
  ${Dh(e)}
383
383
  ${Oh(e)}
384
384
  </div>
385
385
  </div>
386
- `:h`
386
+ `:p`
387
387
  <div class="setup-container">
388
388
  <div class="setup-card">
389
389
  <div class="setup-spinner"></div>
390
390
  <p>Connecting to gateway...</p>
391
391
  </div>
392
392
  </div>
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`
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 he(e){return p`
394
394
  <span
395
395
  class="setup-status-light"
396
396
  style="background: ${{good:"#22c55e",bad:"#ef4444",partial:"#eab308",unknown:"#6b7280"}[e]}"
397
397
  ></span>
398
- `}function Pt(e,t){return h`
398
+ `}function It(e,t){return p`
399
399
  <button
400
400
  class="setup-info-btn"
401
401
  @click=${()=>t.onInfoModalOpen(e)}
402
402
  title="Details"
403
403
  >
404
- ${D.info}
404
+ ${O.info}
405
405
  </button>
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`
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=Rt(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 p`
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>
410
- ${n.map(s=>h`
410
+ ${n.map(s=>p`
411
411
  <div class="setup-info-row">
412
412
  <span class="setup-info-label">${s.label}</span>
413
413
  <span class="setup-info-value">${s.value}</span>
@@ -422,9 +422,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
422
422
  </button>
423
423
  </div>
424
424
  </div>
425
- `}function ye(e){const t=[{id:"license",label:"1. Activate License"},{id:"auth",label:"2. Connect Claude"},{id:"whatsapp",label:"3. Link WhatsApp"}],n=["license","auth","whatsapp","complete"],i=n.indexOf(e);return h`
425
+ `}function be(e){const t=[{id:"license",label:"1. Activate License"},{id:"auth",label:"2. Connect Claude"},{id:"whatsapp",label:"3. Link WhatsApp"}],n=["license","auth","whatsapp","complete"],i=n.indexOf(e);return p`
426
426
  <div class="setup-steps">
427
- ${t.map(s=>{const r=n.indexOf(s.id),o=e===s.id,a=i>r;return h`
427
+ ${t.map(s=>{const r=n.indexOf(s.id),o=e===s.id,a=i>r;return p`
428
428
  <div
429
429
  class="setup-step ${o?"active":""} ${a?"completed":""}"
430
430
  >
@@ -433,39 +433,39 @@ ${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 No(e){const{licenseKey:t,licenseBusy:n,licenseValid:i,licenseMessage:s,licenseDeviceId:r,onLicenseKeyChange:o,onLicenseActivate:a}=e;return i===!0?h`
436
+ `}function No(e){const{licenseKey:t,licenseBusy:n,licenseValid:i,licenseMessage:s,licenseDeviceId:r,onLicenseKeyChange:o,onLicenseActivate:a}=e;return i===!0?p`
437
437
  <div class="setup-container">
438
438
  <div class="setup-card setup-success">
439
- ${ye("license")}
439
+ ${be("license")}
440
440
  <div class="setup-status-row">
441
- ${pe("good")}
441
+ ${he("good")}
442
442
  <span>License Activated</span>
443
443
  </div>
444
444
  <p>${s??"Your license is active."}</p>
445
445
  </div>
446
446
  </div>
447
- `:n&&!t?h`
447
+ `:n&&!t?p`
448
448
  <div class="setup-container">
449
449
  <div class="setup-card">
450
- ${ye("license")}
450
+ ${be("license")}
451
451
  <div class="setup-spinner"></div>
452
452
  <p>Checking license...</p>
453
453
  </div>
454
454
  </div>
455
- `:h`
455
+ `:p`
456
456
  <div class="setup-container">
457
457
  <div class="setup-card">
458
- ${ye("license")}
458
+ ${be("license")}
459
459
  <h1>Activate License</h1>
460
460
  <p>Enter your license key to get started.</p>
461
- ${r?h`
461
+ ${r?p`
462
462
  <div class="setup-device-id">
463
463
  <span class="setup-device-id-label">Your Device ID</span>
464
464
  <code class="setup-device-id-value">${r}</code>
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 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)}}}
468
+ @click=${async c=>{const u=c.currentTarget;try{await navigator.clipboard.writeText(r),u.textContent="Copied!",setTimeout(()=>{u.textContent="Copy"},1500)}catch{const l=document.createElement("textarea");l.value=r,l.style.position="fixed",l.style.opacity="0",document.body.appendChild(l),l.select(),document.execCommand("copy"),document.body.removeChild(l),u.textContent="Copied!",setTimeout(()=>{u.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.
@@ -477,8 +477,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
477
477
  type="text"
478
478
  placeholder="Paste your license key here"
479
479
  .value=${t}
480
- @input=${l=>o(l.target.value)}
481
- @keydown=${l=>{l.key==="Enter"&&t.trim()&&a()}}
480
+ @input=${c=>o(c.target.value)}
481
+ @keydown=${c=>{c.key==="Enter"&&t.trim()&&a()}}
482
482
  />
483
483
  <button
484
484
  class="setup-button"
@@ -488,9 +488,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
488
488
  ${n?"Activating...":"Activate"}
489
489
  </button>
490
490
  </div>
491
- ${i===!1&&s?h`
491
+ ${i===!1&&s?p`
492
492
  <div class="setup-status-row" style="margin-top: 12px;">
493
- ${pe("bad")}
493
+ ${he("bad")}
494
494
  <span class="setup-error">${s}</span>
495
495
  </div>
496
496
  `:k}
@@ -502,17 +502,17 @@ ${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 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`
505
+ `}function Hh(e){const{authConnected:t,authBusy:n,authMessage:i,authUrl:s,authCodeInput:r,authExpiresIn:o,onStartAuth:a,onSubmitAuthCode:c,onAuthCodeChange:u,onSkipToWhatsApp:l}=e;return t===!0?p`
506
506
  <div class="setup-container">
507
507
  <div class="setup-card setup-success">
508
- ${ye("auth")}
508
+ ${be("auth")}
509
509
  <div class="setup-status-row">
510
- ${pe("good")}
510
+ ${he("good")}
511
511
  <span>Claude Connected</span>
512
512
  </div>
513
513
  <p>
514
514
  Your Claude Pro subscription is linked.
515
- ${o?h`<br /><span class="setup-hint"
515
+ ${o?p`<br /><span class="setup-hint"
516
516
  >Expires in ${o} minutes</span
517
517
  >`:k}
518
518
  </p>
@@ -524,18 +524,18 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
524
524
  </a>
525
525
  </div>
526
526
  </div>
527
- `:n&&!s?h`
527
+ `:n&&!s?p`
528
528
  <div class="setup-container">
529
529
  <div class="setup-card">
530
- ${ye("auth")}
530
+ ${be("auth")}
531
531
  <div class="setup-spinner"></div>
532
532
  <p>Starting Claude connection...</p>
533
533
  </div>
534
534
  </div>
535
- `:s?h`
535
+ `:s?p`
536
536
  <div class="setup-container">
537
537
  <div class="setup-card">
538
- ${ye("auth")}
538
+ ${be("auth")}
539
539
  <h1>Connect to Claude</h1>
540
540
  <p>Click the button below to sign in with your Claude Pro account.</p>
541
541
  <a
@@ -554,29 +554,29 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
554
554
  type="text"
555
555
  placeholder="Enter authorization code"
556
556
  .value=${r}
557
- @input=${f=>c(f.target.value)}
558
- @keydown=${f=>{f.key==="Enter"&&r.trim()&&l(r.trim())}}
557
+ @input=${d=>u(d.target.value)}
558
+ @keydown=${d=>{d.key==="Enter"&&r.trim()&&c(r.trim())}}
559
559
  />
560
560
  <button
561
561
  class="setup-button"
562
562
  ?disabled=${!r.trim()||n}
563
- @click=${()=>l(r.trim())}
563
+ @click=${()=>c(r.trim())}
564
564
  >
565
565
  ${n?"Verifying...":"Submit"}
566
566
  </button>
567
567
  </div>
568
- ${i?h`<p class="setup-hint">${i}</p>`:k}
568
+ ${i?p`<p class="setup-hint">${i}</p>`:k}
569
569
  <p class="setup-hint" style="margin-top: 16px;">
570
- <a href="#" class="setup-link" @click=${f=>{f.preventDefault(),e.onAuthApiKeyToggle()}}>
570
+ <a href="#" class="setup-link" @click=${d=>{d.preventDefault(),e.onAuthApiKeyToggle()}}>
571
571
  Or use an API key instead
572
572
  </a>
573
573
  </p>
574
574
  </div>
575
575
  </div>
576
- `:e.authApiKeyMode?h`
576
+ `:e.authApiKeyMode?p`
577
577
  <div class="setup-container">
578
578
  <div class="setup-card">
579
- ${ye("auth")}
579
+ ${be("auth")}
580
580
  <h1>Enter API Key</h1>
581
581
  <p>Paste your Anthropic API key below.</p>
582
582
  <div class="setup-code-input">
@@ -584,8 +584,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
584
584
  type="password"
585
585
  placeholder="sk-ant-..."
586
586
  .value=${e.authApiKeyInput}
587
- @input=${f=>e.onAuthApiKeyChange(f.target.value)}
588
- @keydown=${f=>{f.key==="Enter"&&e.authApiKeyInput.trim()&&e.onAuthApiKeySubmit()}}
587
+ @input=${d=>e.onAuthApiKeyChange(d.target.value)}
588
+ @keydown=${d=>{d.key==="Enter"&&e.authApiKeyInput.trim()&&e.onAuthApiKeySubmit()}}
589
589
  ?disabled=${e.authApiKeyBusy}
590
590
  autofocus
591
591
  />
@@ -595,9 +595,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
595
595
  @click=${()=>e.onAuthApiKeySubmit()}
596
596
  >${e.authApiKeyBusy?"Saving...":"Save"}</button>
597
597
  </div>
598
- ${e.authApiKeyError?h`<p class="setup-error">${e.authApiKeyError}</p>`:k}
598
+ ${e.authApiKeyError?p`<p class="setup-error">${e.authApiKeyError}</p>`:k}
599
599
  <p class="setup-hint" style="margin-top: 16px;">
600
- <a href="#" class="setup-link" @click=${f=>{f.preventDefault(),e.onAuthApiKeyToggle()}}>
600
+ <a href="#" class="setup-link" @click=${d=>{d.preventDefault(),e.onAuthApiKeyToggle()}}>
601
601
  Use OAuth instead
602
602
  </a>
603
603
  </p>
@@ -609,12 +609,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
609
609
  </p>
610
610
  </div>
611
611
  </div>
612
- `:h`
612
+ `:p`
613
613
  <div class="setup-container">
614
614
  <div class="setup-card">
615
- ${ye("auth")}
615
+ ${be("auth")}
616
616
  <h1>Connect to Claude</h1>
617
- ${t===!1&&i?h`<p class="setup-error">${i}</p>`:h`<p>
617
+ ${t===!1&&i?p`<p class="setup-error">${i}</p>`:p`<p>
618
618
  First, let's connect your Claude Pro subscription.<br />
619
619
  This powers your AI assistant.
620
620
  </p>`}
@@ -622,7 +622,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
622
622
  Connect to Claude →
623
623
  </button>
624
624
  <p class="setup-hint" style="margin-top: 8px;">
625
- <a href="#" class="setup-link" @click=${f=>{f.preventDefault(),e.onAuthApiKeyToggle()}}>
625
+ <a href="#" class="setup-link" @click=${d=>{d.preventDefault(),e.onAuthApiKeyToggle()}}>
626
626
  Or enter your API key
627
627
  </a>
628
628
  </p>
@@ -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 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`
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 Rt(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=Rt(e),n=(t==null?void 0:t.displayName)??(t==null?void 0:t.name)??qe().name,i=e.whatsappBusy||e.gatewayHealthLoading;if(e.renamingWorkspace&&t){const s=()=>{const r=e.renameWorkspaceName.trim();r&&e.onWorkspaceRename(t.name,r)};return p`
638
638
  <div style="display: flex; align-items: center; gap: 6px; margin-bottom: 4px;">
639
639
  <input
640
640
  type="text"
@@ -649,14 +649,14 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
649
649
  @click=${s}
650
650
  title="Save"
651
651
  style="color: #22c55e;"
652
- >${D.check}</button>
652
+ >${O.check}</button>
653
653
  <button
654
654
  class="setup-status-action"
655
655
  @click=${e.onWorkspaceRenameCancel}
656
656
  title="Cancel"
657
- >${D.x}</button>
657
+ >${O.x}</button>
658
658
  </div>
659
- `}return h`
659
+ `}return p`
660
660
  <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px;">
661
661
  <div style="display: flex; align-items: center; gap: 6px;">
662
662
  <h2 style="margin: 0; font-size: 20px; font-weight: 600; color: var(--tasker-white);">${n}</h2>
@@ -665,7 +665,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
665
665
  @click=${e.onWorkspaceRenameStart}
666
666
  title="Rename"
667
667
  style="opacity: 0.5; transform: scale(0.8);"
668
- >${D.edit}</button>
668
+ >${O.edit}</button>
669
669
  </div>
670
670
  <button
671
671
  class="setup-status-action ${i?"spinning":""}"
@@ -673,74 +673,74 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
673
673
  @click=${e.onRefreshStatus}
674
674
  title="Refresh Status"
675
675
  >
676
- ${D.rotateCw}
676
+ ${O.rotateCw}
677
677
  </button>
678
678
  </div>
679
- `}function Oo(e){return h`
679
+ `}function Oo(e){return p`
680
680
  <div class="setup-status-item">
681
- ${pe(e.gatewayHealthy===!1?"bad":"good")}
681
+ ${he(e.gatewayHealthy===!1?"bad":"good")}
682
682
  <div class="setup-status-info">
683
683
  <strong>Gateway</strong>
684
684
  <span>${e.gatewayHealthMessage||"Running"}</span>
685
685
  </div>
686
- ${Pt("gateway",e)}
686
+ ${It("gateway",e)}
687
687
  <button
688
688
  class="setup-status-action ${e.gatewayRestartBusy?"spinning":""}"
689
689
  ?disabled=${e.gatewayRestartBusy}
690
690
  @click=${e.onRestartGateway}
691
691
  title="Restart Gateway"
692
692
  >
693
- ${D.rotateCw}
693
+ ${O.rotateCw}
694
694
  </button>
695
695
  </div>
696
- `}function Bo(e){const t=e.authConnected===!0;return h`
696
+ `}function Bo(e){const t=e.authConnected===!0;return p`
697
697
  <div class="setup-status-item">
698
- ${pe(t?"good":"bad")}
698
+ ${he(t?"good":"bad")}
699
699
  <div class="setup-status-info">
700
700
  <strong>Claude</strong>
701
701
  <span>
702
- ${t?"Connected":"Not connected"}${t&&e.authExpiresIn?h` <span style="color: var(--tasker-text-grey); font-size: 12px;">(${e.authExpiresIn>60?`${Math.floor(e.authExpiresIn/60)}h ${e.authExpiresIn%60}m`:`${e.authExpiresIn}m`})</span>`:k}
702
+ ${t?"Connected":"Not connected"}${t&&e.authExpiresIn?p` <span style="color: var(--tasker-text-grey); font-size: 12px;">(${e.authExpiresIn>60?`${Math.floor(e.authExpiresIn/60)}h ${e.authExpiresIn%60}m`:`${e.authExpiresIn}m`})</span>`:k}
703
703
  </span>
704
704
  </div>
705
- ${Pt("claude",e)}
706
- ${t?h`
705
+ ${It("claude",e)}
706
+ ${t?p`
707
707
  <button
708
708
  class="setup-status-action ${e.authBusy?"spinning":""}"
709
709
  ?disabled=${e.authBusy}
710
710
  @click=${e.onStartAuth}
711
711
  title="Refresh Token"
712
712
  >
713
- ${D.rotateCw}
713
+ ${O.rotateCw}
714
714
  </button>
715
- `:h`
715
+ `:p`
716
716
  <button
717
717
  class="setup-status-action"
718
718
  @click=${e.onStartAuth}
719
719
  title="Connect Claude"
720
720
  >
721
- ${D.rotateCw}
721
+ ${O.rotateCw}
722
722
  </button>
723
723
  `}
724
724
  </div>
725
- `}function Fo(e){return h`
725
+ `}function Fo(e){return p`
726
726
  <div class="setup-status-item" style="flex-wrap: wrap;">
727
- ${pe("good")}
727
+ ${he("good")}
728
728
  <div class="setup-status-info">
729
729
  <strong>License</strong>
730
730
  <span>Active</span>
731
731
  </div>
732
- ${Pt("license",e)}
732
+ ${It("license",e)}
733
733
  <button
734
734
  class="setup-status-action"
735
735
  @click=${()=>{e.licenseRemoveConfirm?e.onLicenseRemoveCancel():e.onLicenseRemoveConfirm()}}
736
736
  title="Manage License"
737
737
  >
738
- ${D.rotateCw}
738
+ ${O.rotateCw}
739
739
  </button>
740
- ${e.licenseRemoveConfirm?h`
740
+ ${e.licenseRemoveConfirm?p`
741
741
  <div style="width: 100%; margin-top: 8px; margin-left: 30px;">
742
742
  <p style="color: var(--tasker-text-grey); font-size: 13px; margin: 0 0 8px;">
743
- Removing your license will disable ${Ie().name} until you enter a new key.
743
+ Removing your license will disable ${qe().name} until you enter a new key.
744
744
  </p>
745
745
  <div style="display: flex; gap: 8px;">
746
746
  <button
@@ -762,37 +762,37 @@ ${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 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`
765
+ `}function Uo(e){var d;const t=Rt(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",c=!(n!=null&&n.provider)||(n==null?void 0:n.provider)==="baileys",u=t.whatsappAccountId??(t.isDefault&&e.whatsappAccounts.length===1?(d=e.whatsappAccounts[0])==null?void 0:d.accountId:void 0),l=u!=null&&e.whatsappActiveQrAccountId===u;return p`
766
766
  <div class="setup-status-item" style="flex-wrap: wrap;">
767
- ${pe(o)}
767
+ ${he(o)}
768
768
  <div class="setup-status-info">
769
769
  <div style="display: flex; align-items: center; gap: 4px;">
770
770
  <strong>WhatsApp</strong>
771
- ${r&&i?h`
771
+ ${r&&i?p`
772
772
  <button
773
773
  class="setup-status-action"
774
774
  @click=${e.onWhatsAppSettingsOpen}
775
775
  title="WhatsApp Settings"
776
776
  style="opacity: 0.5; transform: scale(0.75);"
777
777
  >
778
- ${D.settings}
778
+ ${O.settings}
779
779
  </button>
780
780
  `:k}
781
781
  </div>
782
782
  <span>${a}</span>
783
783
  </div>
784
- ${Pt("whatsapp",e)}
785
- ${l&&c?h`
784
+ ${It("whatsapp",e)}
785
+ ${c&&u?p`
786
786
  <button
787
- class="setup-status-action ${e.whatsappBusy&&d?"spinning":""}"
787
+ class="setup-status-action ${e.whatsappBusy&&l?"spinning":""}"
788
788
  ?disabled=${e.whatsappBusy}
789
- @click=${()=>e.onWhatsAppRelink(c)}
789
+ @click=${()=>e.onWhatsAppRelink(u)}
790
790
  title="${i?"Relink":"Link"} WhatsApp"
791
791
  >
792
- ${D.rotateCw}
792
+ ${O.rotateCw}
793
793
  </button>
794
794
  `:k}
795
- ${d&&e.whatsappLoginQrDataUrl?h`
795
+ ${l&&e.whatsappLoginQrDataUrl?p`
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
@@ -801,12 +801,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
801
801
  style="width: 140px; height: 140px;"
802
802
  />
803
803
  </div>
804
- ${e.whatsappLoginMessage?h`<p class="setup-hint" style="margin-top: 4px;">${e.whatsappLoginMessage}</p>`:k}
804
+ ${e.whatsappLoginMessage?p`<p class="setup-hint" style="margin-top: 4px;">${e.whatsappLoginMessage}</p>`:k}
805
805
  </div>
806
806
  `:k}
807
807
  </div>
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()}}>
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=Rt(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(l=>l.provider==="anthropic").map(l=>l.id)),a=qh.filter(l=>o.has(l.id)),c=e.whatsappModel??Vh,u=e.whatsappThinkingLevel??"off";return p`
809
+ <div class="setup-info-overlay" @click=${l=>{l.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;">
@@ -835,7 +835,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
835
835
  <div style="font-size: 12px; color: var(--tasker-text-grey); opacity: 0.7;">Agent responds in WhatsApp groups</div>
836
836
  </div>
837
837
  </label>
838
- ${e.whatsappGroupPolicy==="open"?h`
838
+ ${e.whatsappGroupPolicy==="open"?p`
839
839
  <div style="display: flex; flex-direction: column; gap: 6px; padding-left: 24px;">
840
840
  <label style="display: flex; align-items: center; gap: 8px; cursor: pointer;">
841
841
  <input
@@ -866,18 +866,18 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
866
866
  </div>
867
867
  `:k}
868
868
  <div style="border-top: 1px solid rgba(255,255,255,0.08); margin: 4px 0;"></div>
869
- ${a.length>0?h`
869
+ ${a.length>0?p`
870
870
  <div style="display: flex; align-items: center; gap: 8px;">
871
871
  <div style="font-size: 13px; color: var(--tasker-text-grey); min-width: 60px;">Model</div>
872
872
  <select
873
873
  class="setup-model-select"
874
874
  style="flex: 1;"
875
- .value=${l}
876
- @change=${d=>{e.onWhatsAppModelChange(d.target.value)}}
875
+ .value=${c}
876
+ @change=${l=>{e.onWhatsAppModelChange(l.target.value)}}
877
877
  >
878
- ${a.map(d=>h`
879
- <option value=${"anthropic/"+d.id} ?selected=${l==="anthropic/"+d.id}>
880
- ${d.shortName}
878
+ ${a.map(l=>p`
879
+ <option value=${"anthropic/"+l.id} ?selected=${c==="anthropic/"+l.id}>
880
+ ${l.shortName}
881
881
  </option>
882
882
  `)}
883
883
  </select>
@@ -888,12 +888,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
888
888
  <select
889
889
  class="setup-model-select"
890
890
  style="flex: 1;"
891
- .value=${c}
892
- @change=${d=>{e.onWhatsAppThinkingChange(d.target.value)}}
891
+ .value=${u}
892
+ @change=${l=>{e.onWhatsAppThinkingChange(l.target.value)}}
893
893
  >
894
- ${Gh.map(d=>h`
895
- <option value=${d.value} ?selected=${c===d.value}>
896
- ${d.label}
894
+ ${Gh.map(l=>p`
895
+ <option value=${l.value} ?selected=${u===l.value}>
896
+ ${l.label}
897
897
  </option>
898
898
  `)}
899
899
  </select>
@@ -908,25 +908,25 @@ ${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 $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`
911
+ `}function $r(e){const t=Rt(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"),p`
912
912
  <div class="setup-status-item" style="flex-wrap: wrap;">
913
- ${pe(s)}
913
+ ${he(s)}
914
914
  <div class="setup-status-info">
915
915
  <strong>iMessage</strong>
916
916
  <span>${r}</span>
917
917
  </div>
918
- ${Pt("imessage",e)}
918
+ ${It("imessage",e)}
919
919
  <button
920
920
  class="setup-status-action ${e.imessageEnabling?"spinning":""}"
921
921
  ?disabled=${e.imessageEnabling}
922
922
  @click=${e.onIMessageEnable}
923
923
  title="${n?"Manage iMessage":"Connect iMessage"}"
924
924
  >
925
- ${D.rotateCw}
925
+ ${O.rotateCw}
926
926
  </button>
927
927
  ${k}
928
928
  </div>
929
- `}function Yh(e){if(!e.imessageEnableConfirm)return k;const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e),s=()=>{e.onIMessageEnableCancel()};return n?h`
929
+ `}function Yh(e){if(!e.imessageEnableConfirm)return k;const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e),s=()=>{e.onIMessageEnableCancel()};return n?p`
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>
@@ -953,7 +953,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
953
953
  </button>
954
954
  </div>
955
955
  </div>
956
- `:i?h`
956
+ `:i?p`
957
957
  <div class="setup-info-overlay" @click=${r=>{r.target.classList.contains("setup-info-overlay")&&s()}}>
958
958
  <div class="setup-info-card" style="text-align: center;">
959
959
  <h3>Connect iMessage</h3>
@@ -978,12 +978,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
978
978
  </button>
979
979
  </div>
980
980
  </div>
981
- `:h`
981
+ `:p`
982
982
  <div class="setup-info-overlay" @click=${r=>{r.target.classList.contains("setup-info-overlay")&&s()}}>
983
983
  <div class="setup-info-card" style="text-align: center;">
984
984
  <h3>Enable iMessage</h3>
985
985
  <p style="color: var(--tasker-text-grey); font-size: 13px; margin: 8px 0 16px;">
986
- ${Ie().name} will respond to messages in Messages.app for this business.
986
+ ${qe().name} will respond to messages in Messages.app for this business.
987
987
  </p>
988
988
  <button
989
989
  class="setup-button primary"
@@ -1002,10 +1002,10 @@ ${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 Ko(e){if(!e.isMaster)return k;const n=e.apiKeyProviders.filter(i=>i.hasKey).length;return h`
1005
+ `}function Ko(e){if(!e.isMaster)return k;const n=e.apiKeyProviders.filter(i=>i.hasKey).length;return p`
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
- ${pe(n>0?"good":"bad")}
1008
+ ${he(n>0?"good":"bad")}
1009
1009
  <div class="setup-status-info">
1010
1010
  <strong>API Keys</strong>
1011
1011
  <span>${n} configured</span>
@@ -1017,97 +1017,97 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1017
1017
  </div>
1018
1018
  </div>
1019
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`
1020
+ `}function Xh(e){if(!e.apiKeyModalOpen)return k;const t=e.apiKeyProviders,n={};for(const u of t)u.key&&(n[u.id]=u.key);const i=(u,l)=>{const d=l==null?void 0:l.closest(".setup-apikey-input"),h=d==null?void 0:d.querySelector("input"),v=h==null?void 0:h.value.trim();!v||v===n[u]||e.onApiKeySave(u,v)},s=u=>{const l=u.currentTarget,d=l.closest(".setup-apikey-input"),h=d==null?void 0:d.querySelector("input");if(!h)return;const v=h.type==="text";h.type=v?"password":"text",l.classList.toggle("active",!v)},r=(u,l)=>{const d=l.target,h=d.closest(".setup-apikey-input"),v=d.value.trim(),y=v.length>0&&v!==n[u],b=h==null?void 0:h.querySelector(".setup-apikey-save");b&&(b.style.display=y?"":"none");const S=h==null?void 0:h.querySelector(".setup-apikey-eye");S&&(S.style.display=v.length>0?"":"none")},o=t.filter(u=>u.primary),a=t.filter(u=>!u.primary),c=u=>{const l=e.apiKeySavingProvider===u.id&&e.apiKeyBusy,d=!e.apiKeyBusy&&e.apiKeySuccess===`${u.id} key saved`,h=!e.apiKeyBusy&&e.apiKeySuccess===`${u.id} key removed`;return p`
1021
1021
  <div class="setup-apikey-row">
1022
1022
  <div class="setup-apikey-info">
1023
- <strong>${c.name}</strong>
1024
- <span class="setup-apikey-category">${c.category}</span>
1025
- ${f?h`<span class="setup-apikey-badge saved">Saved</span>`:k}
1026
- ${u?h`<span class="setup-apikey-badge removed">Removed</span>`:k}
1023
+ <strong>${u.name}</strong>
1024
+ <span class="setup-apikey-category">${u.category}</span>
1025
+ ${d?p`<span class="setup-apikey-badge saved">Saved</span>`:k}
1026
+ ${h?p`<span class="setup-apikey-badge removed">Removed</span>`:k}
1027
1027
  </div>
1028
1028
  <div class="setup-apikey-input">
1029
1029
  <input
1030
1030
  type="password"
1031
- .value=${c.key??""}
1031
+ .value=${u.key??""}
1032
1032
  placeholder="Enter key"
1033
1033
  ?disabled=${e.apiKeyBusy}
1034
- @input=${p=>r(c.id,p)}
1035
- @keydown=${p=>{p.key==="Enter"&&i(c.id,p.target)}}
1034
+ @input=${v=>r(u.id,v)}
1035
+ @keydown=${v=>{v.key==="Enter"&&i(u.id,v.target)}}
1036
1036
  />
1037
1037
  <button
1038
1038
  class="setup-apikey-icon-btn setup-apikey-eye"
1039
- style=${c.hasKey?"":"display: none;"}
1039
+ style=${u.hasKey?"":"display: none;"}
1040
1040
  title="Toggle visibility"
1041
1041
  @click=${s}
1042
- >${D.eye}</button>
1043
- ${d?h`<span class="setup-apikey-badge saving">Saving\u2026</span>`:h`<button
1042
+ >${O.eye}</button>
1043
+ ${l?p`<span class="setup-apikey-badge saving">Saving\u2026</span>`:p`<button
1044
1044
  class="setup-apikey-save setup-button"
1045
1045
  style="display: none;"
1046
1046
  ?disabled=${e.apiKeyBusy}
1047
- @click=${p=>i(c.id,p.currentTarget)}
1047
+ @click=${v=>i(u.id,v.currentTarget)}
1048
1048
  >Save</button>`}
1049
- ${c.hasKey&&!d?h`
1049
+ ${u.hasKey&&!l?p`
1050
1050
  <button
1051
1051
  class="setup-apikey-icon-btn danger"
1052
1052
  title="Remove key"
1053
1053
  ?disabled=${e.apiKeyBusy}
1054
- @click=${()=>e.onApiKeyRemove(c.id)}
1055
- >${D.trash}</button>
1054
+ @click=${()=>e.onApiKeyRemove(u.id)}
1055
+ >${O.trash}</button>
1056
1056
  `:k}
1057
1057
  </div>
1058
1058
  </div>
1059
- `};return h`
1060
- <div class="setup-info-overlay" style="align-items: flex-start; padding-top: 72px;" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onApiKeyModalClose()}}>
1059
+ `};return p`
1060
+ <div class="setup-info-overlay" style="align-items: flex-start; padding-top: 72px;" @click=${u=>{u.target.classList.contains("setup-info-overlay")&&e.onApiKeyModalClose()}}>
1061
1061
  <div class="setup-info-card" style="max-width: 480px;">
1062
1062
  <h3 style="margin: 0 0 4px; text-align: center;">API Keys</h3>
1063
1063
  <div class="setup-apikey-list">
1064
- ${e.apiKeyError?h`<p class="setup-error" style="margin: 0;">${e.apiKeyError}</p>`:k}
1065
- ${o.map(l)}
1066
- ${a.length>0?h`
1064
+ ${e.apiKeyError?p`<p class="setup-error" style="margin: 0;">${e.apiKeyError}</p>`:k}
1065
+ ${o.map(c)}
1066
+ ${a.length>0?p`
1067
1067
  <details class="setup-apikey-advanced">
1068
1068
  <summary>Additional keys</summary>
1069
- ${a.map(l)}
1069
+ ${a.map(c)}
1070
1070
  </details>
1071
1071
  `:k}
1072
1072
  </div>
1073
1073
  </div>
1074
1074
  </div>
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`
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 p`
1076
1076
  <div class="setup-status-item">
1077
- ${pe(t)}
1077
+ ${he(t)}
1078
1078
  <div class="setup-status-info">
1079
1079
  <strong>Software</strong>
1080
1080
  <span>${n}</span>
1081
1081
  </div>
1082
- ${Pt("update",e)}
1083
- ${e.updateAvailable?h`
1082
+ ${It("update",e)}
1083
+ ${e.updateAvailable?p`
1084
1084
  <button
1085
1085
  class="setup-status-action ${i?"spinning":""}"
1086
1086
  ?disabled=${i}
1087
1087
  @click=${e.onUpdateRun}
1088
1088
  title="Update Now"
1089
1089
  >
1090
- ${D.download}
1090
+ ${O.download}
1091
1091
  </button>
1092
- `:h`
1092
+ `:p`
1093
1093
  <button
1094
1094
  class="setup-status-action ${i?"spinning":""}"
1095
1095
  ?disabled=${i}
1096
1096
  @click=${e.onUpdateCheck}
1097
1097
  title="Check for Updates"
1098
1098
  >
1099
- ${D.rotateCw}
1099
+ ${O.rotateCw}
1100
1100
  </button>
1101
1101
  `}
1102
1102
  </div>
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`
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 p`
1104
1104
  <div class="setup-status-item">
1105
- ${pe(n)}
1105
+ ${he(n)}
1106
1106
  <div class="setup-status-info">
1107
1107
  <strong>Public Chat</strong>
1108
1108
  <span>${t?i:"Disabled"}</span>
1109
1109
  </div>
1110
- ${t?h`
1110
+ ${t?p`
1111
1111
  <select
1112
1112
  class="setup-select-sm"
1113
1113
  ?disabled=${e.publicChatBusy}
@@ -1124,37 +1124,37 @@ ${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 Jh(e){var i,s,r;const t=e.updateRunning,n=e.updateLastResult;if(!t&&!n)return k;if(t)return h`
1127
+ `}function Jh(e){var i,s,r;const t=e.updateRunning,n=e.updateLastResult;if(!t&&!n)return k;if(t)return p`
1128
1128
  <div class="setup-info-overlay">
1129
1129
  <div class="setup-info-card" style="max-width: 400px;">
1130
1130
  <h3>Software Update</h3>
1131
- ${e.updateProgressSteps.length>0?h`
1131
+ ${e.updateProgressSteps.length>0?p`
1132
1132
  <div class="setup-update-progress">
1133
- ${e.updateProgressSteps.map(o=>h`
1133
+ ${e.updateProgressSteps.map(o=>p`
1134
1134
  <div class="setup-update-step ${o.status}">
1135
1135
  <span class="setup-update-step-icon">
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>`}
1136
+ ${o.status==="running"?p`<span class="setup-update-spinner"></span>`:o.status==="done"?p`<span class="setup-update-icon-ok">${O.check}</span>`:p`<span class="setup-update-icon-fail">${O.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">${Ho(o.durationMs)}</span>`:k}
1139
+ ${o.durationMs!=null?p`<span class="setup-update-step-time">${Ho(o.durationMs)}</span>`:k}
1140
1140
  </div>
1141
1141
  `)}
1142
1142
  </div>
1143
- `:h`<div class="setup-spinner" style="margin: 16px auto;"></div>`}
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}
1143
+ `:p`<div class="setup-spinner" style="margin: 16px auto;"></div>`}
1144
+ ${e.updateMessage?p`<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,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
- <div class="setup-info-overlay" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onUpdateDismissResult()}}>
1147
+ `;if(n){const o=n.status==="ok";let a;if(o){const u=(i=n.before)==null?void 0:i.version,l=((s=n.after)==null?void 0:s.version)??n.currentVersion;a=u?`v${u} → v${l}`:`Updated to v${l}`}else a=n.reason??((r=n.failedStep)==null?void 0:r.name)??"unknown error";const c=n.durationMs!=null?Ho(n.durationMs):null;return p`
1148
+ <div class="setup-info-overlay" @click=${u=>{u.target.classList.contains("setup-info-overlay")&&e.onUpdateDismissResult()}}>
1149
1149
  <div class="setup-info-card" style="max-width: 360px; text-align: center;">
1150
- <div class="setup-update-result-icon ${o?"ok":"fail"}">${o?D.circleCheck:D.circleX}</div>
1150
+ <div class="setup-update-result-icon ${o?"ok":"fail"}">${o?O.circleCheck:O.circleX}</div>
1151
1151
  <h3 style="color: ${o?"#22c55e":"#ef4444"};">
1152
1152
  ${o?"Update Complete":"Update Failed"}
1153
1153
  </h3>
1154
1154
  <p style="color: var(--tasker-text-grey); font-size: 14px; margin: 8px 0;">
1155
1155
  ${a}
1156
1156
  </p>
1157
- ${l?h`<p style="color: rgba(255,255,255,0.3); font-size: 12px; margin: 4px 0 0;">${l}</p>`:k}
1157
+ ${c?p`<p style="color: rgba(255,255,255,0.3); font-size: 12px; margin: 4px 0 0;">${c}</p>`:k}
1158
1158
  <button
1159
1159
  class="setup-button secondary"
1160
1160
  style="margin-top: 20px; width: 100%; padding: 10px;"
@@ -1164,9 +1164,9 @@ ${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 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`
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 p`
1168
1168
  <div class="setup-status-item">
1169
- ${pe(t?"good":"bad")}
1169
+ ${he(t?"good":"bad")}
1170
1170
  <div class="setup-status-info">
1171
1171
  <strong>Account PIN</strong>
1172
1172
  <span>${t?"Set":"Not set"}</span>
@@ -1176,17 +1176,17 @@ ${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 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
- <div class="setup-info-overlay" @click=${c=>{c.target.classList.contains("setup-info-overlay")&&e.onAccountPinModalClose()}}>
1179
+ `}function Vo(e){if(!e.accountPinModalOpen)return k;const t=e.accountHasPin,n=e.accountPinBusy;let i="",s="",r="";const o=u=>l=>{const d=l.target;d.value=d.value.replace(/\D/g,"").slice(0,6),u(d.value)},a=(u,l)=>{var h;let d=u.querySelector(".pin-modal-validation");d||(d=document.createElement("p"),d.className="login-error pin-modal-validation",(h=u.querySelector("button[type=submit]"))==null||h.before(d)),d.textContent=l},c=u=>{u.preventDefault();const l=u.target;if(!n){if(t&&!i){a(l,"Enter your current PIN");return}if(!s){a(l,"Enter a new PIN");return}if(!r){a(l,"Confirm your new PIN");return}if(s!==r){a(l,"PINs do not match");return}if(s.length<4){a(l,"PIN must be 4–6 digits");return}e.onAccountPinSave(t?i:null,s)}};return p`
1180
+ <div class="setup-info-overlay" @click=${u=>{u.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">
1183
1183
  <h3>${t?"Change Account PIN":"Set Account PIN"}</h3>
1184
1184
  <button class="setup-info-close" @click=${()=>e.onAccountPinModalClose()}>
1185
- ${D.close}
1185
+ ${O.close}
1186
1186
  </button>
1187
1187
  </div>
1188
- <form @submit=${l} style="display: flex; flex-direction: column; gap: 12px; padding: 16px 0 8px;">
1189
- ${t?h`
1188
+ <form @submit=${c} style="display: flex; flex-direction: column; gap: 12px; padding: 16px 0 8px;">
1189
+ ${t?p`
1190
1190
  <input
1191
1191
  class="login-pin-input"
1192
1192
  type="password"
@@ -1196,7 +1196,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1196
1196
  maxlength="6"
1197
1197
  placeholder="Current PIN"
1198
1198
  ?disabled=${n}
1199
- @input=${o(c=>{i=c})}
1199
+ @input=${o(u=>{i=u})}
1200
1200
  autofocus
1201
1201
  />
1202
1202
  `:k}
@@ -1209,8 +1209,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1209
1209
  maxlength="6"
1210
1210
  placeholder="New PIN (4–6 digits)"
1211
1211
  ?disabled=${n}
1212
- @input=${o(c=>{s=c})}
1213
- ${t?k:h`autofocus`}
1212
+ @input=${o(u=>{s=u})}
1213
+ ${t?k:p`autofocus`}
1214
1214
  />
1215
1215
  <input
1216
1216
  class="login-pin-input"
@@ -1221,19 +1221,19 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1221
1221
  maxlength="6"
1222
1222
  placeholder="Confirm PIN"
1223
1223
  ?disabled=${n}
1224
- @input=${o(c=>{r=c})}
1224
+ @input=${o(u=>{r=u})}
1225
1225
  />
1226
- ${e.accountPinError?h`<p class="login-error">${e.accountPinError}</p>`:k}
1227
- ${e.accountPinSuccess?h`<p class="login-success">${e.accountPinSuccess}</p>`:k}
1226
+ ${e.accountPinError?p`<p class="login-error">${e.accountPinError}</p>`:k}
1227
+ ${e.accountPinSuccess?p`<p class="login-success">${e.accountPinSuccess}</p>`:k}
1228
1228
  <button
1229
1229
  class="login-submit"
1230
1230
  type="submit"
1231
1231
  ?disabled=${n}
1232
- >${n?h`<span class="login-spinner"></span>`:t?"Change PIN":"Set PIN"}</button>
1232
+ >${n?p`<span class="login-spinner"></span>`:t?"Change PIN":"Set PIN"}</button>
1233
1233
  </form>
1234
1234
  </div>
1235
1235
  </div>
1236
- `}function Go(e){if(!e.addingWorkspace)return k;const{workspaceSaving:t}=e;return h`
1236
+ `}function Go(e){if(!e.addingWorkspace)return k;const{workspaceSaving:t}=e;return p`
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 Qo(e){const t=Lt(e);return!t||t.isDefault?k:e.workspaceRemoveConfirm===t.name?h`
1289
+ `}function Qo(e){const t=Rt(e);return!t||t.isDefault?k:e.workspaceRemoveConfirm===t.name?p`
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>
@@ -1307,7 +1307,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1307
1307
  </button>
1308
1308
  </div>
1309
1309
  </div>
1310
- `:h`
1310
+ `:p`
1311
1311
  <p class="setup-hint" style="margin-top: 12px;">
1312
1312
  <a
1313
1313
  href="#"
@@ -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 Yo(e){if(e.uninstallDone)return h`
1318
+ `}function Yo(e){if(e.uninstallDone)return p`
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.
@@ -1325,7 +1325,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1325
1325
  <code style="font-size: 11px; background: rgba(255,255,255,0.06); padding: 2px 6px; border-radius: 3px;">sudo npm uninstall -g @rubytech/taskmaster</code>
1326
1326
  </p>
1327
1327
  </div>
1328
- `;if(e.uninstallConfirm){const t=e.uninstallConfirmText==="UNINSTALL";return h`
1328
+ `;if(e.uninstallConfirm){const t=e.uninstallConfirmText==="UNINSTALL";return p`
1329
1329
  <div style="margin-top: 24px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
1330
1330
  <p style="color: var(--tasker-danger, #ef4444); font-size: 13px; font-weight: 600; margin: 0 0 8px 0;">
1331
1331
  Uninstall Taskmaster
@@ -1360,9 +1360,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1360
1360
  Cancel
1361
1361
  </button>
1362
1362
  </div>
1363
- ${e.uninstallError?h`<p class="setup-error" style="margin-top: 8px; font-size: 12px;">${e.uninstallError}</p>`:k}
1363
+ ${e.uninstallError?p`<p class="setup-error" style="margin-top: 8px; font-size: 12px;">${e.uninstallError}</p>`:k}
1364
1364
  </div>
1365
- `}return h`
1365
+ `}return p`
1366
1366
  <p class="setup-hint" style="margin-top: 8px;">
1367
1367
  <a
1368
1368
  href="#"
@@ -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 Xo(){return h`
1373
+ `}function Xo(){return p`
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 ef(e){const{whatsappBusy:t,whatsappLoginMessage:n,whatsappLoginQrDataUrl:i,whatsappLoginConnected:s,whatsappChannelStatus:r}=e;if(i)return h`
1377
+ `}function ef(e){const{whatsappBusy:t,whatsappLoginMessage:n,whatsappLoginQrDataUrl:i,whatsappLoginConnected:s,whatsappChannelStatus:r}=e;if(i)return p`
1378
1378
  <div class="setup-container">
1379
1379
  <div class="setup-card">
1380
1380
  <h1>Scan with WhatsApp</h1>
@@ -1384,11 +1384,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1384
1384
  <div class="setup-qr">
1385
1385
  <img src=${i} alt="WhatsApp QR Code" />
1386
1386
  </div>
1387
- ${t?h`<p class="setup-waiting">Waiting for scan...</p>`:h`<p class="setup-hint">
1387
+ ${t?p`<p class="setup-waiting">Waiting for scan...</p>`:p`<p class="setup-hint">
1388
1388
  Scan the code above with your phone
1389
1389
  </p>`}
1390
1390
  <p class="setup-hint" style="margin-top: 16px;">
1391
- <strong>Important:</strong> If you see "${Ie().name}" in your Linked
1391
+ <strong>Important:</strong> If you see "${qe().name}" in your Linked
1392
1392
  Devices, remove it first before scanning.
1393
1393
  </p>
1394
1394
  <div class="setup-actions" style="margin-top: 24px;">
@@ -1401,14 +1401,14 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1401
1401
  </div>
1402
1402
  </div>
1403
1403
  </div>
1404
- `;if(t)return h`
1404
+ `;if(t)return p`
1405
1405
  <div class="setup-container">
1406
1406
  <div class="setup-card">
1407
1407
  <div class="setup-spinner"></div>
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(d=>d.running&&d.connected):o)&&e.authConnected?h`
1411
+ `;const o=(r==null?void 0:r.running)&&(r==null?void 0:r.connected);return r?(e.whatsappAccounts.length>1?e.whatsappAccounts.every(l=>l.running&&l.connected):o)&&e.authConnected?p`
1412
1412
  <div class="setup-container">
1413
1413
  <div class="setup-card setup-success setup-dashboard-wide">
1414
1414
  ${Do(e)}
@@ -1417,7 +1417,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1417
1417
  ${Bo(e)}
1418
1418
  ${Fo(e)}
1419
1419
  ${Uo(e)}
1420
- ${Wo(e)}
1420
+ ${e.serverPlatform==="darwin"?Wo(e):k}
1421
1421
  ${qo(e)}
1422
1422
  ${zo(e)}
1423
1423
  ${jo(e)}
@@ -1429,10 +1429,10 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1429
1429
  ${Qo(e)}
1430
1430
  ${Yo(e)}
1431
1431
  ${Xo()}
1432
- ${e.workspacesError?h`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
1432
+ ${e.workspacesError?p`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
1433
1433
  </div>
1434
1434
  </div>
1435
- `:h`
1435
+ `:p`
1436
1436
  <div class="setup-container">
1437
1437
  <div class="setup-card setup-dashboard-wide">
1438
1438
  ${Do(e)}
@@ -1441,7 +1441,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1441
1441
  ${Bo(e)}
1442
1442
  ${Fo(e)}
1443
1443
  ${Uo(e)}
1444
- ${Wo(e)}
1444
+ ${e.serverPlatform==="darwin"?Wo(e):k}
1445
1445
  ${qo(e)}
1446
1446
  ${zo(e)}
1447
1447
  ${jo(e)}
@@ -1453,15 +1453,15 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1453
1453
  ${Qo(e)}
1454
1454
  ${Yo(e)}
1455
1455
  ${Xo()}
1456
- ${e.workspacesError?h`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
1456
+ ${e.workspacesError?p`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
1457
1457
  </div>
1458
1458
  </div>
1459
- `:r?s===!1&&n&&!t?h`
1459
+ `:r?s===!1&&n&&!t?p`
1460
1460
  <div class="setup-container">
1461
1461
  <div class="setup-card">
1462
- ${ye("whatsapp")}
1462
+ ${be("whatsapp")}
1463
1463
  <div class="setup-status-row">
1464
- ${pe("bad")}
1464
+ ${he("bad")}
1465
1465
  <span>Connection Failed</span>
1466
1466
  </div>
1467
1467
  <p class="setup-error">${n}</p>
@@ -1474,18 +1474,18 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1474
1474
  </button>
1475
1475
  </div>
1476
1476
  </div>
1477
- `:h`
1477
+ `:p`
1478
1478
  <div class="setup-container">
1479
1479
  <div class="setup-card">
1480
- ${ye("whatsapp")}
1481
- ${n?h`<p class="setup-error">${n}</p>`:h`<div class="setup-spinner"></div>
1480
+ ${be("whatsapp")}
1481
+ ${n?p`<p class="setup-error">${n}</p>`:p`<div class="setup-spinner"></div>
1482
1482
  <p>Preparing...</p>`}
1483
1483
  </div>
1484
1484
  </div>
1485
- `:h`
1485
+ `:p`
1486
1486
  <div class="setup-container">
1487
1487
  <div class="setup-card">
1488
- ${ye("whatsapp")}
1488
+ ${be("whatsapp")}
1489
1489
  <div class="setup-spinner"></div>
1490
1490
  <p>Checking connection status...</p>
1491
1491
  <button
@@ -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 tf(e){const{connected:t,currentStep:n}=e;if(t&&oi()&&Ar(),e.uninstallDone||!t&&oi())return h`
1500
+ `}function tf(e){const{connected:t,currentStep:n}=e;if(t&&oi()&&Ar(),e.uninstallDone||!t&&oi())return p`
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;">
@@ -1513,20 +1513,20 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1513
1513
  <p style="font-size: 12px; color: var(--tasker-text-grey); margin: 0;">You can close this tab.</p>
1514
1514
  </div>
1515
1515
  </div>
1516
- `;if(!t){const r=e.updateRunning;return h`
1516
+ `;if(!t){const r=e.updateRunning;return p`
1517
1517
  <div class="setup-container">
1518
1518
  <div class="setup-card">
1519
1519
  <div class="setup-spinner"></div>
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=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`
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=pt("Setup",e.wsProps);return p`${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 p`
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>
1527
1527
  <div class="sp-list-item-sub">${n}</div>
1528
1528
  </div>
1529
- ${e.paired?h`<span style="color: var(--tasker-orange); font-size: 13px; padding: 8px 16px;">Primary</span>`:h`<button
1529
+ ${e.paired?p`<span style="color: var(--tasker-orange); font-size: 13px; padding: 8px 16px;">Primary</span>`:p`<button
1530
1530
  class="setup-button danger"
1531
1531
  style="padding: 8px 16px; font-size: 13px;"
1532
1532
  ?disabled=${t.saving}
@@ -1535,16 +1535,16 @@ ${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 sf(e){if(!e.connected)return h`
1538
+ `}function sf(e){if(!e.connected)return p`
1539
1539
  <div class="setup-container">
1540
1540
  <div class="setup-card">
1541
1541
  <div class="setup-spinner"></div>
1542
1542
  <p>Connecting to gateway...</p>
1543
1543
  </div>
1544
1544
  </div>
1545
- `;const t=n=>{n.preventDefault(),e.newPhone.trim()&&e.onAdd(e.newPhone)};return h`
1545
+ `;const t=n=>{n.preventDefault(),e.newPhone.trim()&&e.onAdd(e.newPhone)};return p`
1546
1546
  <div class="setup-container">
1547
- ${ut("Admins",e.wsProps)}
1547
+ ${pt("Admins",e.wsProps)}
1548
1548
  <div class="setup-card" style="max-width: 520px;">
1549
1549
  <h1>Admin Phones</h1>
1550
1550
  <p style="margin-bottom: 16px;">
@@ -1562,7 +1562,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1562
1562
  </button>
1563
1563
  </div>
1564
1564
 
1565
- ${e.error?h`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
1565
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
1566
1566
 
1567
1567
  <form style="display: flex; flex-direction: row; gap: 12px; margin-top: 20px; align-items: stretch;" @submit=${t}>
1568
1568
  <input
@@ -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=>nf(n,e))}
1587
+ ${e.phones.length===0?p`<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,9 +1595,9 @@ ${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 rf(e){return Object.keys(e.fields).length}function of(e,t){const n=Object.entries(e.fields);return h`
1598
+ `}function rf(e){return Object.keys(e.fields).length}function of(e,t){const n=Object.entries(e.fields);return p`
1599
1599
  <div class="customers-record-fields">
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`
1600
+ ${n.length===0?p`<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])=>p`
1601
1601
  <div class="customers-field-row">
1602
1602
  <input
1603
1603
  class="field-key"
@@ -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 af(e,t){const n=t.editingId===e.id,i=rf(e),s=i===0?"No fields":`${i} field${i>1?"s":""}`;return h`
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 p`
1646
1646
  <div class="customers-record">
1647
1647
  <div
1648
1648
  class="customers-record-header"
@@ -1656,16 +1656,16 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1656
1656
  </div>
1657
1657
  ${n?of(e,t):k}
1658
1658
  </div>
1659
- `}function lf(e){if(!e.connected)return h`
1659
+ `}function lf(e){if(!e.connected)return p`
1660
1660
  <div class="setup-container">
1661
1661
  <div class="setup-card">
1662
1662
  <div class="setup-spinner"></div>
1663
1663
  <p>Connecting to gateway...</p>
1664
1664
  </div>
1665
1665
  </div>
1666
- `;const t=i=>{i.preventDefault(),e.onSearchSubmit()},n=i=>{i.preventDefault(),e.newRecordPhone.trim()&&e.newRecordName.trim()&&e.onAdd(e.newRecordPhone,e.newRecordName)};return h`
1666
+ `;const t=i=>{i.preventDefault(),e.onSearchSubmit()},n=i=>{i.preventDefault(),e.newRecordPhone.trim()&&e.newRecordName.trim()&&e.onAdd(e.newRecordPhone,e.newRecordName)};return p`
1667
1667
  <div class="setup-container">
1668
- ${ut("Customers",e.wsProps)}
1668
+ ${pt("Customers",e.wsProps)}
1669
1669
  <div class="setup-card" style="max-width: 620px;">
1670
1670
  <h1>Customer Records</h1>
1671
1671
  <p style="margin-bottom: 16px;">
@@ -1690,9 +1690,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1690
1690
  </button>
1691
1691
  </div>
1692
1692
 
1693
- ${e.error?h`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
1693
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
1694
1694
 
1695
- ${e.showAddForm?h`
1695
+ ${e.showAddForm?p`
1696
1696
  <form class="customers-add-form" @submit=${n}>
1697
1697
  <input
1698
1698
  type="tel"
@@ -1750,7 +1750,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=nn(t.messa
1750
1750
  </form>
1751
1751
 
1752
1752
  <div style="margin-top: 16px;">
1753
- ${e.records.length===0?h`<div class="customers-empty">
1753
+ ${e.records.length===0?p`<div class="customers-empty">
1754
1754
  ${e.searchQuery.trim()?`No records matching "${e.searchQuery}".`:"No customer records yet. Add one to get started."}
1755
1755
  </div>`:e.records.map(i=>af(i,e))}
1756
1756
  </div>
@@ -1763,49 +1763,49 @@ ${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 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={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},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(`
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:cf}=Ju,Zo=e=>e,Jo=()=>document.createComment(""),Wt=(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,c=a!==e;if(c){let u;(r=n._$AQ)==null||r.call(n,e),n._$AM=e,n._$AP!==void 0&&(u=e._$AU)!==a._$AU&&n._$AP(u)}if(o!==s||c){let u=n._$AA;for(;u!==o;){const l=Zo(u).nextSibling;Zo(i).insertBefore(u,s),u=l}}}return n},Ze=(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=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=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=[]),c=[];let u,l,d=0,h=s.length-1,v=0,y=r.length-1;for(;d<=h&&v<=y;)if(s[d]===null)d++;else if(s[h]===null)h--;else if(a[d]===o[v])c[v]=Ze(s[d],r[v]),d++,v++;else if(a[h]===o[y])c[y]=Ze(s[h],r[y]),h--,y--;else if(a[d]===o[y])c[y]=Ze(s[d],r[y]),Wt(e,c[y+1],s[d]),d++,y--;else if(a[h]===o[v])c[v]=Ze(s[h],r[v]),Wt(e,s[d],s[h]),h--,v++;else if(u===void 0&&(u=ea(o,v,y),l=ea(a,d,h)),u.has(a[d]))if(u.has(a[h])){const b=l.get(o[v]),S=b!==void 0?s[b]:null;if(S===null){const x=Wt(e,s[d]);Ze(x,r[v]),c[v]=x}else c[v]=Ze(S,r[v]),Wt(e,s[d],S),s[b]=null;v++}else ts(s[h]),h--;else ts(s[d]),d++;for(;v<=y;){const b=Wt(e,c[y+1]);Ze(b,r[v]),c[v++]=b}for(;d<=h;){const b=s[d++];b!==null&&ts(b)}return this.ut=o,df(e,c),je}});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===je)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:ta,isFrozen:ff,getPrototypeOf:gf,getOwnPropertyDescriptor:mf}=Object;let{freeze:ue,seal:fe,create:Rs}=Object,{apply:Ns,construct:Ds}=typeof Reflect<"u"&&Reflect;ue||(ue=function(t){return t});fe||(fe=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=de(Array.prototype.forEach),yf=de(Array.prototype.lastIndexOf),na=de(Array.prototype.pop),Kt=de(Array.prototype.push),vf=de(Array.prototype.splice),Gn=de(String.prototype.toLowerCase),ns=de(String.prototype.toString),is=de(String.prototype.match),zt=de(String.prototype.replace),bf=de(String.prototype.indexOf),wf=de(String.prototype.trim),me=de(Object.prototype.hasOwnProperty),ae=de(RegExp.prototype.test),jt=kf(TypeError);function de(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 F(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++)me(e,t)||(e[t]=null);return e}function $e(e){const t=Rs(null);for(const[n,i]of vc(e))me(e,n)&&(Array.isArray(i)?t[n]=Sf(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=$e(i):t[n]=i);return t}function Ht(e,t){for(;e!==null;){const i=mf(e,t);if(i){if(i.get)return de(i.get);if(typeof i.value=="function")return de(i.value)}e=gf(e)}function n(){return null}return n}const ia=ue(["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=ue(["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=ue(["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=ue(["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=ue(["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=ue(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),sa=ue(["#text"]),ra=ue(["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=ue(["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=ue(["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=ue(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),$f=fe(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ef=fe(/<%[\w\W]*|[\w\W]*%>/gm),Cf=fe(/\$\{[\w\W]*/gm),Tf=fe(/^data-[\-\w.\u00B7-\uFFFF]+$/),_f=fe(/^aria-[\-\w]+$/),bc=fe(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Mf=fe(/^(?:\w+script|data):/i),Pf=fe(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),wc=fe(/^html$/i),Lf=fe(/^[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:wc,ERB_EXPR:Ef,IS_ALLOWED_URI:bc,IS_SCRIPT_OR_DATA:Mf,MUSTACHE_EXPR:$f,TMPLIT_EXPR:Cf});const qt={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 kc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:If();const t=I=>kc(I);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==qt.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:c,NodeFilter:u,NamedNodeMap:l=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:h,trustedTypes:v}=e,y=c.prototype,b=Ht(y,"cloneNode"),S=Ht(y,"remove"),x=Ht(y,"nextSibling"),$=Ht(y,"childNodes"),C=Ht(y,"parentNode");if(typeof o=="function"){const I=n.createElement("template");I.content&&I.content.ownerDocument&&(n=I.content.ownerDocument)}let T,M="";const{implementation:R,createNodeIterator:B,createDocumentFragment:J,getElementsByTagName:ge}=n,{importNode:Oe}=i;let X=la();t.isSupported=typeof vc=="function"&&typeof C=="function"&&R&&R.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Dt,ERB_EXPR:gt,TMPLIT_EXPR:Ge,DATA_ATTR:Mi,ARIA_ATTR:Pi,IS_SCRIPT_OR_DATA:Li,ATTR_WHITESPACE:wn,CUSTOM_ELEMENT:Ii}=aa;let{IS_ALLOWED_URI:kn}=aa,G=null;const Sn=F({},[...ia,...ss,...rs,...os,...sa]);let Q=null;const An=F({},[...ra,...as,...oa,...Bn]);let H=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}})),Qe=null,Ot=null;const Be=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,N=!0,D=!1,q=!0,z=!1,oe=!1,Fe=!1,mt=!1,$n=!1,En=!1,jr=!0,Hr=!1;const Su="user-content-";let Ri=!0,Bt=!1,yt={},ke=null;const Ni=F({},["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=F({},["audio","video","img","source","image","track"]);let Di=null;const Gr=F({},["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",Me="http://www.w3.org/1999/xhtml";let vt=Me,Oi=!1,Bi=null;const Au=F({},[Cn,Tn,Me],ns);let _n=F({},["mi","mo","mn","ms","mtext"]),Mn=F({},["annotation-xml"]);const xu=F({},["title","style","font","a","script"]);let Ft=null;const $u=["application/xhtml+xml","text/html"],Eu="text/html";let Z=null,bt=null;const Cu=n.createElement("form"),Qr=function(w){return w instanceof RegExp||w instanceof Function},Fi=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(bt&&bt===w)){if((!w||typeof w!="object")&&(w={}),w=$e(w),Ft=$u.indexOf(w.PARSER_MEDIA_TYPE)===-1?Eu:w.PARSER_MEDIA_TYPE,Z=Ft==="application/xhtml+xml"?ns:Gn,G=me(w,"ALLOWED_TAGS")?F({},w.ALLOWED_TAGS,Z):Sn,Q=me(w,"ALLOWED_ATTR")?F({},w.ALLOWED_ATTR,Z):An,Bi=me(w,"ALLOWED_NAMESPACES")?F({},w.ALLOWED_NAMESPACES,ns):Au,Di=me(w,"ADD_URI_SAFE_ATTR")?F($e(Gr),w.ADD_URI_SAFE_ATTR,Z):Gr,qr=me(w,"ADD_DATA_URI_TAGS")?F($e(Vr),w.ADD_DATA_URI_TAGS,Z):Vr,ke=me(w,"FORBID_CONTENTS")?F({},w.FORBID_CONTENTS,Z):Ni,Qe=me(w,"FORBID_TAGS")?F({},w.FORBID_TAGS,Z):$e({}),Ot=me(w,"FORBID_ATTR")?F({},w.FORBID_ATTR,Z):$e({}),yt=me(w,"USE_PROFILES")?w.USE_PROFILES:!1,xn=w.ALLOW_ARIA_ATTR!==!1,A=w.ALLOW_DATA_ATTR!==!1,_=w.ALLOW_UNKNOWN_PROTOCOLS||!1,N=w.ALLOW_SELF_CLOSE_IN_ATTR!==!1,D=w.SAFE_FOR_TEMPLATES||!1,q=w.SAFE_FOR_XML!==!1,z=w.WHOLE_DOCUMENT||!1,mt=w.RETURN_DOM||!1,$n=w.RETURN_DOM_FRAGMENT||!1,En=w.RETURN_TRUSTED_TYPE||!1,Fe=w.FORCE_BODY||!1,jr=w.SANITIZE_DOM!==!1,Hr=w.SANITIZE_NAMED_PROPS||!1,Ri=w.KEEP_CONTENT!==!1,Bt=w.IN_PLACE||!1,kn=w.ALLOWED_URI_REGEXP||bc,vt=w.NAMESPACE||Me,_n=w.MATHML_TEXT_INTEGRATION_POINTS||_n,Mn=w.HTML_INTEGRATION_POINTS||Mn,H=w.CUSTOM_ELEMENT_HANDLING||{},w.CUSTOM_ELEMENT_HANDLING&&Qr(w.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(H.tagNameCheck=w.CUSTOM_ELEMENT_HANDLING.tagNameCheck),w.CUSTOM_ELEMENT_HANDLING&&Qr(w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(H.attributeNameCheck=w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),w.CUSTOM_ELEMENT_HANDLING&&typeof w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(H.allowCustomizedBuiltInElements=w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),D&&(A=!1),$n&&(mt=!0),yt&&(G=F({},sa),Q=[],yt.html===!0&&(F(G,ia),F(Q,ra)),yt.svg===!0&&(F(G,ss),F(Q,as),F(Q,Bn)),yt.svgFilters===!0&&(F(G,rs),F(Q,as),F(Q,Bn)),yt.mathMl===!0&&(F(G,os),F(Q,oa),F(Q,Bn))),w.ADD_TAGS&&(typeof w.ADD_TAGS=="function"?Be.tagCheck=w.ADD_TAGS:(G===Sn&&(G=$e(G)),F(G,w.ADD_TAGS,Z))),w.ADD_ATTR&&(typeof w.ADD_ATTR=="function"?Be.attributeCheck=w.ADD_ATTR:(Q===An&&(Q=$e(Q)),F(Q,w.ADD_ATTR,Z))),w.ADD_URI_SAFE_ATTR&&F(Di,w.ADD_URI_SAFE_ATTR,Z),w.FORBID_CONTENTS&&(ke===Ni&&(ke=$e(ke)),F(ke,w.FORBID_CONTENTS,Z)),w.ADD_FORBID_CONTENTS&&(ke===Ni&&(ke=$e(ke)),F(ke,w.ADD_FORBID_CONTENTS,Z)),Ri&&(G["#text"]=!0),z&&F(G,["html","head","body"]),G.table&&(F(G,["tbody"]),delete Qe.tbody),w.TRUSTED_TYPES_POLICY){if(typeof w.TRUSTED_TYPES_POLICY.createHTML!="function")throw jt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof w.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw jt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=w.TRUSTED_TYPES_POLICY,M=T.createHTML("")}else T===void 0&&(T=Rf(v,s)),T!==null&&typeof M=="string"&&(M=T.createHTML(""));ue&&ue(w),bt=w}},Yr=F({},[...ss,...rs,...Af]),Xr=F({},[...os,...xf]),Tu=function(w){let E=C(w);(!E||!E.tagName)&&(E={namespaceURI:vt,tagName:"template"});const L=Gn(w.tagName),j=Gn(E.tagName);return Bi[w.namespaceURI]?w.namespaceURI===Tn?E.namespaceURI===Me?L==="svg":E.namespaceURI===Cn?L==="svg"&&(j==="annotation-xml"||_n[j]):!!Yr[L]:w.namespaceURI===Cn?E.namespaceURI===Me?L==="math":E.namespaceURI===Tn?L==="math"&&Mn[j]:!!Xr[L]:w.namespaceURI===Me?E.namespaceURI===Tn&&!Mn[j]||E.namespaceURI===Cn&&!_n[j]?!1:!Xr[L]&&(xu[L]||!Yr[L]):!!(Ft==="application/xhtml+xml"&&Bi[w.namespaceURI]):!1},Se=function(w){Kt(t.removed,{element:w});try{C(w).removeChild(w)}catch{S(w)}},Ye=function(w,E){try{Kt(t.removed,{attribute:E.getAttributeNode(w),from:E})}catch{Kt(t.removed,{attribute:null,from:E})}if(E.removeAttribute(w),w==="is")if(mt||$n)try{Se(E)}catch{}else try{E.setAttribute(w,"")}catch{}},Zr=function(w){let E=null,L=null;if(Fe)w="<remove></remove>"+w;else{const Y=is(w,/^[\r\n\t ]+/);L=Y&&Y[0]}Ft==="application/xhtml+xml"&&vt===Me&&(w='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+w+"</body></html>");const j=T?T.createHTML(w):w;if(vt===Me)try{E=new h().parseFromString(j,Ft)}catch{}if(!E||!E.documentElement){E=R.createDocument(vt,"template",null);try{E.documentElement.innerHTML=Oi?M:j}catch{}}const ne=E.body||E.documentElement;return w&&L&&ne.insertBefore(n.createTextNode(L),ne.childNodes[0]||null),vt===Me?ge.call(E,z?"html":"body")[0]:z?E.documentElement:ne},Jr=function(w){return B.call(w.ownerDocument||w,w,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Ui=function(w){return w instanceof d&&(typeof w.nodeName!="string"||typeof w.textContent!="string"||typeof w.removeChild!="function"||!(w.attributes instanceof l)||typeof w.removeAttribute!="function"||typeof w.setAttribute!="function"||typeof w.namespaceURI!="string"||typeof w.insertBefore!="function"||typeof w.hasChildNodes!="function")},eo=function(w){return typeof a=="function"&&w instanceof a};function Pe(I,w,E){On(I,L=>{L.call(t,w,E,bt)})}const to=function(w){let E=null;if(Pe(X.beforeSanitizeElements,w,null),Ui(w))return Se(w),!0;const L=Z(w.nodeName);if(Pe(X.uponSanitizeElement,w,{tagName:L,allowedTags:G}),q&&w.hasChildNodes()&&!eo(w.firstElementChild)&&ae(/<[/\w!]/g,w.innerHTML)&&ae(/<[/\w!]/g,w.textContent)||w.nodeType===qt.progressingInstruction||q&&w.nodeType===qt.comment&&ae(/<[/\w]/g,w.data))return Se(w),!0;if(!(Be.tagCheck instanceof Function&&Be.tagCheck(L))&&(!G[L]||Qe[L])){if(!Qe[L]&&io(L)&&(H.tagNameCheck instanceof RegExp&&ae(H.tagNameCheck,L)||H.tagNameCheck instanceof Function&&H.tagNameCheck(L)))return!1;if(Ri&&!ke[L]){const j=C(w)||w.parentNode,ne=$(w)||w.childNodes;if(ne&&j){const Y=ne.length;for(let pe=Y-1;pe>=0;--pe){const Le=b(ne[pe],!0);Le.__removalCount=(w.__removalCount||0)+1,j.insertBefore(Le,x(w))}}}return Se(w),!0}return w instanceof c&&!Tu(w)||(L==="noscript"||L==="noembed"||L==="noframes")&&ae(/<\/no(script|embed|frames)/i,w.innerHTML)?(Se(w),!0):(D&&w.nodeType===qt.text&&(E=w.textContent,On([Dt,gt,Ge],j=>{E=zt(E,j," ")}),w.textContent!==E&&(Kt(t.removed,{element:w.cloneNode()}),w.textContent=E)),Pe(X.afterSanitizeElements,w,null),!1)},no=function(w,E,L){if(jr&&(E==="id"||E==="name")&&(L in n||L in Cu))return!1;if(!(A&&!Ot[E]&&ae(Mi,E))){if(!(xn&&ae(Pi,E))){if(!(Be.attributeCheck instanceof Function&&Be.attributeCheck(E,w))){if(!Q[E]||Ot[E]){if(!(io(w)&&(H.tagNameCheck instanceof RegExp&&ae(H.tagNameCheck,w)||H.tagNameCheck instanceof Function&&H.tagNameCheck(w))&&(H.attributeNameCheck instanceof RegExp&&ae(H.attributeNameCheck,E)||H.attributeNameCheck instanceof Function&&H.attributeNameCheck(E,w))||E==="is"&&H.allowCustomizedBuiltInElements&&(H.tagNameCheck instanceof RegExp&&ae(H.tagNameCheck,L)||H.tagNameCheck instanceof Function&&H.tagNameCheck(L))))return!1}else if(!Di[E]){if(!ae(kn,zt(L,wn,""))){if(!((E==="src"||E==="xlink:href"||E==="href")&&w!=="script"&&bf(L,"data:")===0&&qr[w])){if(!(_&&!ae(Li,zt(L,wn,"")))){if(L)return!1}}}}}}}return!0},io=function(w){return w!=="annotation-xml"&&is(w,Ii)},so=function(w){Pe(X.beforeSanitizeAttributes,w,null);const{attributes:E}=w;if(!E||Ui(w))return;const L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Q,forceKeepAttr:void 0};let j=E.length;for(;j--;){const ne=E[j],{name:Y,namespaceURI:pe,value:Le}=ne,wt=Z(Y),Wi=Le;let te=Y==="value"?Wi:wf(Wi);if(L.attrName=wt,L.attrValue=te,L.keepAttr=!0,L.forceKeepAttr=void 0,Pe(X.uponSanitizeAttribute,w,L),te=L.attrValue,Hr&&(wt==="id"||wt==="name")&&(Ye(Y,w),te=Su+te),q&&ae(/((--!?|])>)|<\/(style|title|textarea)/i,te)){Ye(Y,w);continue}if(wt==="attributename"&&is(te,"href")){Ye(Y,w);continue}if(L.forceKeepAttr)continue;if(!L.keepAttr){Ye(Y,w);continue}if(!N&&ae(/\/>/i,te)){Ye(Y,w);continue}D&&On([Dt,gt,Ge],oo=>{te=zt(te,oo," ")});const ro=Z(w.nodeName);if(!no(ro,wt,te)){Ye(Y,w);continue}if(T&&typeof v=="object"&&typeof v.getAttributeType=="function"&&!pe)switch(v.getAttributeType(ro,wt)){case"TrustedHTML":{te=T.createHTML(te);break}case"TrustedScriptURL":{te=T.createScriptURL(te);break}}if(te!==Wi)try{pe?w.setAttributeNS(pe,Y,te):w.setAttribute(Y,te),Ui(w)?Se(w):na(t.removed)}catch{Ye(Y,w)}}Pe(X.afterSanitizeAttributes,w,null)},_u=function I(w){let E=null;const L=Jr(w);for(Pe(X.beforeSanitizeShadowDOM,w,null);E=L.nextNode();)Pe(X.uponSanitizeShadowNode,E,null),to(E),so(E),E.content instanceof r&&I(E.content);Pe(X.afterSanitizeShadowDOM,w,null)};return t.sanitize=function(I){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},E=null,L=null,j=null,ne=null;if(Oi=!I,Oi&&(I="<!-->"),typeof I!="string"&&!eo(I))if(typeof I.toString=="function"){if(I=I.toString(),typeof I!="string")throw jt("dirty is not a string, aborting")}else throw jt("toString is not a function");if(!t.isSupported)return I;if(oe||Fi(w),t.removed=[],typeof I=="string"&&(Bt=!1),Bt){if(I.nodeName){const Le=Z(I.nodeName);if(!G[Le]||Qe[Le])throw jt("root node is forbidden and cannot be sanitized in-place")}}else if(I instanceof a)E=Zr("<!---->"),L=E.ownerDocument.importNode(I,!0),L.nodeType===qt.element&&L.nodeName==="BODY"||L.nodeName==="HTML"?E=L:E.appendChild(L);else{if(!mt&&!D&&!z&&I.indexOf("<")===-1)return T&&En?T.createHTML(I):I;if(E=Zr(I),!E)return mt?null:En?M:""}E&&Fe&&Se(E.firstChild);const Y=Jr(Bt?I:E);for(;j=Y.nextNode();)to(j),so(j),j.content instanceof r&&_u(j.content);if(Bt)return I;if(mt){if($n)for(ne=J.call(E.ownerDocument);E.firstChild;)ne.appendChild(E.firstChild);else ne=E;return(Q.shadowroot||Q.shadowrootmode)&&(ne=Oe.call(i,ne,!0)),ne}let pe=z?E.outerHTML:E.innerHTML;return z&&G["!doctype"]&&E.ownerDocument&&E.ownerDocument.doctype&&E.ownerDocument.doctype.name&&ae(wc,E.ownerDocument.doctype.name)&&(pe="<!DOCTYPE "+E.ownerDocument.doctype.name+`>
1767
+ `+pe),D&&On([Dt,gt,Ge],Le=>{pe=zt(pe,Le," ")}),T&&En?T.createHTML(pe):pe},t.setConfig=function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Fi(I),oe=!0},t.clearConfig=function(){bt=null,oe=!1},t.isValidAttribute=function(I,w,E){bt||Fi({});const L=Z(I),j=Z(w);return no(L,j,E)},t.addHook=function(I,w){typeof w=="function"&&Kt(X[I],w)},t.removeHook=function(I,w){if(w!==void 0){const E=yf(X[I],w);return E===-1?void 0:vf(X[I],E,1)[0]}return na(X[I])},t.removeHooks=function(I){X[I]=[]},t.removeAllHooks=function(){X=la()},t}var Os=kc();function Er(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ht=Er();function Sc(e){ht=e}var on={exec:()=>null};function W(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(le.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}})(),le={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|$)|$)/,vn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Ff=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Cr=/(?:[*+-]|\d{1,9}[.)])/,Ac=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,xc=W(Ac).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=W(Ac).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=W(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",_r).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),zf=W(/^( {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=W("^ {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(),$c=W(Tr).replace("hr",vn).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=W(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",$c).getRegex(),Pr={blockquote:Hf,code:Of,def:Kf,fences:Bf,heading:Ff,hr:vn,html:jf,lheading:xc,list:zf,newline:Df,paragraph:$c,table:on,text:Wf},ca=W("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vn).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:W(Tr).replace("hr",vn).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:W(`^ *(?: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:on,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:W(Tr).replace("hr",vn).replace("heading",` *#{1,6} *[^
1768
+ ]`).replace("lheading",xc).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Gf=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Qf=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ec=/^( {2,}|\\)\n(?!\s*$)/,Yf=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ci=/[\p{P}\p{S}]/u,Lr=/[\s\p{P}\p{S}]/u,Cc=/[^\s\p{P}\p{S}]/u,Xf=W(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Lr).getRegex(),Tc=/(?!~)[\p{P}\p{S}]/u,Zf=/(?!~)[\s\p{P}\p{S}]/u,Jf=/(?:[^\s\p{P}\p{S}]|~)/u,eg=W(/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(),_c=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,tg=W(_c,"u").replace(/punct/g,Ci).getRegex(),ng=W(_c,"u").replace(/punct/g,Tc).getRegex(),Mc="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ig=W(Mc,"gu").replace(/notPunctSpace/g,Cc).replace(/punctSpace/g,Lr).replace(/punct/g,Ci).getRegex(),sg=W(Mc,"gu").replace(/notPunctSpace/g,Jf).replace(/punctSpace/g,Zf).replace(/punct/g,Tc).getRegex(),rg=W("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Cc).replace(/punctSpace/g,Lr).replace(/punct/g,Ci).getRegex(),og=W(/\\(punct)/,"gu").replace(/punct/g,Ci).getRegex(),ag=W(/^<(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=W(Mr).replace("(?:-->|$)","-->").getRegex(),cg=W("^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=W(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",li).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Pc=W(/^!?\[(label)\]\[(ref)\]/).replace("label",li).replace("ref",_r).getRegex(),Lc=W(/^!?\[(ref)\](?:\[\])?/).replace("ref",_r).getRegex(),dg=W("reflink|nolink(?!\\()","g").replace("reflink",Pc).replace("nolink",Lc).getRegex(),ua=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ir={_backpedal:on,anyPunctuation:og,autolink:ag,blockSkip:eg,br:Ec,code:Qf,del:on,emStrongLDelim:tg,emStrongRDelimAst:ig,emStrongRDelimUnd:rg,escape:Gf,link:ug,nolink:Lc,punctuation:Xf,reflink:Pc,reflinkSearch:dg,tag:cg,text:Yf,url:on},pg={...Ir,link:W(/^!?\[(label)\]\((.*?)\)/).replace("label",li).getRegex(),reflink:W(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",li).getRegex()},Bs={...Ir,emStrongRDelimAst:sg,emStrongLDelim:ng,url:W(/^((?: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:W(/^([`~]+|[^`~])(?:(?= {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:W(Ec).replace("{2,}","*").getRegex(),text:W(Bs.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Fn={normal:Pr,gfm:qf,pedantic:Vf},Vt={normal:Ir,gfm:Bs,breaks:hg,pedantic:pg},fg={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},da=e=>fg[e];function Re(e,t){if(t){if(le.escapeTest.test(e))return e.replace(le.escapeReplace,da)}else if(le.escapeTestNoEncode.test(e))return e.replace(le.escapeReplaceNoEncode,da);return e}function pa(e){try{e=encodeURI(e).replace(le.percentDecode,"%")}catch{return null}return e}function ha(e,t){var r;let n=e.replace(le.findPipe,(o,a,c)=>{let u=!1,l=a;for(;--l>=0&&c[l]==="\\";)u=!u;return u?"|":" |"}),i=n.split(le.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(le.slashPipe,"|");return i}function Gt(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 c={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:o,text:a,tokens:i.inlineTokens(a)};return i.state.inLink=!1,c}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
- `)}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=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
- `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Vt(t[0],`
1770
+ `)}var ci=class{constructor(e){U(this,"options");U(this,"rules");U(this,"lexer");this.options=e||ht}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:Gt(n,`
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=Gt(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:Gt(t[0],`
1772
+ `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Gt(t[0],`
1773
1773
  `).split(`
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
- `),d=c.replace(this.rules.other.blockquoteSetextReplace,`
1774
+ `),i="",s="",r=[];for(;n.length>0;){let o=!1,a=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))a.push(n[c]),o=!0;else if(!o)a.push(n[c]);else break;n=n.slice(c);let u=a.join(`
1775
+ `),l=u.replace(this.rules.other.blockquoteSetextReplace,`
1776
1776
  $1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
1777
- ${c}`:c,s=s?`${s}
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+`
1777
+ ${u}`:u,s=s?`${s}
1778
+ ${l}`:l;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,r,!0),this.lexer.state.top=d,n.length===0)break;let h=r.at(-1);if((h==null?void 0:h.type)==="code")break;if((h==null?void 0:h.type)==="blockquote"){let v=h,y=v.raw+`
1779
1779
  `+n.join(`
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+`
1780
+ `),b=this.blockquote(y);r[r.length-1]=b,i=i.substring(0,i.length-v.raw.length)+b.raw,s=s.substring(0,s.length-v.text.length)+b.text;break}else if((h==null?void 0:h.type)==="list"){let v=h,y=v.raw+`
1781
1781
  `+n.join(`
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
- `),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
- `: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(`
1782
+ `),b=this.list(y);r[r.length-1]=b,i=i.substring(0,i.length-h.raw.length)+b.raw,s=s.substring(0,s.length-v.raw.length)+b.raw,n=y.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),c=!1;for(;e;){let l=!1,d="",h="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let v=t[2].split(`
1784
+ `,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),y=e.split(`
1785
+ `,1)[0],b=!v.trim(),S=0;if(this.options.pedantic?(S=2,h=v.trimStart()):b?S=t[1].length+1:(S=t[2].search(this.rules.other.nonSpaceChar),S=S>4?1:S,h=v.slice(S),S+=t[1].length),b&&this.rules.other.blankLine.test(y)&&(d+=y+`
1786
+ `,e=e.substring(y.length+1),l=!0),!l){let x=this.rules.other.nextBulletRegex(S),$=this.rules.other.hrRegex(S),C=this.rules.other.fencesBeginRegex(S),T=this.rules.other.headingBeginRegex(S),M=this.rules.other.htmlBeginRegex(S);for(;e;){let R=e.split(`
1787
+ `,1)[0],B;if(y=R,this.options.pedantic?(y=y.replace(this.rules.other.listReplaceNesting," "),B=y):B=y.replace(this.rules.other.tabCharGlobal," "),C.test(y)||T.test(y)||M.test(y)||x.test(y)||$.test(y))break;if(B.search(this.rules.other.nonSpaceChar)>=S||!y.trim())h+=`
1788
+ `+B.slice(S);else{if(b||v.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||C.test(v)||T.test(v)||$.test(v))break;h+=`
1789
+ `+y}!b&&!y.trim()&&(b=!0),d+=R+`
1790
+ `,e=e.substring(R.length+1),v=B.slice(S)}}o.loose||(c?o.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(c=!0)),o.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),o.raw+=d}let u=o.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let l of o.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,""),((n=l.tokens[0])==null?void 0:n.type)==="text"||((i=l.tokens[0])==null?void 0:i.type)==="paragraph"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,o.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}if(!o.loose){let d=l.tokens.filter(v=>v.type==="space"),h=d.length>0&&d.some(v=>this.rules.other.anyLine.test(v.raw));o.loose=h}}if(o.loose)for(let l of o.items){l.loose=!0;for(let d of l.tokens)d.type==="text"&&(d.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((c,u)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:r.align[u]})));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=Gt(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,c=0,u=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+s);(i=u.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)){c+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+c);let l=[...i[0]][0].length,d=e.slice(0,s+i.index+l+o);if(Math.min(s,o)%2){let v=d.slice(1,-1);return{type:"em",raw:d,text:v,tokens:this.lexer.inlineTokens(v)}}let h=d.slice(2,-2);return{type:"strong",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}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}}}},ye=class Fs{constructor(t){U(this,"tokens");U(this,"options");U(this,"state");U(this,"inlineQueue");U(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||ht,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:le,block:Fn.normal,inline:Vt.normal};this.options.pedantic?(n.block=Fn.pedantic,n.inline=Vt.pedantic):this.options.gfm&&(n.block=Fn.gfm,this.options.breaks?n.inline=Vt.breaks:n.inline=Vt.gfm),this.tokenizer.rules=n}static get rules(){return{block:Fn,inline:Vt}}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(le.carriageReturn,`
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(le.tabCharGlobal," ").replace(le.spaceLine,""));t;){let a;if((r=(s=this.options.extensions)==null?void 0:s.block)!=null&&r.some(u=>(a=u.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 u=n.at(-1);a.raw.length===1&&u!==void 0?u.raw+=`
1794
+ `:n.push(a);continue}if(a=this.tokenizer.code(t)){t=t.substring(a.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="paragraph"||(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(`
1795
1795
  `)?"":`
1796
- `)+a.raw,c.text+=`
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(`
1796
+ `)+a.raw,u.text+=`
1797
+ `+a.text,this.inlineQueue.at(-1).src=u.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 u=n.at(-1);(u==null?void 0:u.type)==="paragraph"||(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(`
1798
1798
  `)?"":`
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,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(`
1799
+ `)+a.raw,u.text+=`
1800
+ `+a.raw,this.inlineQueue.at(-1).src=u.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 c=t;if((o=this.options.extensions)!=null&&o.startBlock){let u=1/0,l=t.slice(1),d;this.options.extensions.startBlock.forEach(h=>{d=h.call({lexer:this},l),typeof d=="number"&&d>=0&&(u=Math.min(u,d))}),u<1/0&&u>=0&&(c=t.substring(0,u+1))}if(this.state.top&&(a=this.tokenizer.paragraph(c))){let u=n.at(-1);i&&(u==null?void 0:u.type)==="paragraph"?(u.raw+=(u.raw.endsWith(`
1801
1801
  `)?"":`
1802
- `)+a.raw,c.text+=`
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(`
1802
+ `)+a.raw,u.text+=`
1803
+ `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(a),i=c.length!==t.length,t=t.substring(a.raw.length);continue}if(a=this.tokenizer.text(t)){t=t.substring(a.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(`
1804
1804
  `)?"":`
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,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
- `;return i?'<pre><code class="language-'+Le(i)+'">'+(n?s:Le(s,!0))+`</code></pre>
1808
- `:"<pre><code>"+(n?s:Le(s,!0))+`</code></pre>
1805
+ `)+a.raw,u.text+=`
1806
+ `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(a);continue}if(t){let u="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var c,u,l,d,h;let i=t,s=null;if(this.tokens.links){let v=Object.keys(this.tokens.links);if(v.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)v.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=((u=(c=this.options.hooks)==null?void 0:c.emStrongMask)==null?void 0:u.call({lexer:this},i))??i;let o=!1,a="";for(;t;){o||(a=""),o=!1;let v;if((d=(l=this.options.extensions)==null?void 0:l.inline)!=null&&d.some(b=>(v=b.call({lexer:this},t,n))?(t=t.substring(v.raw.length),n.push(v),!0):!1))continue;if(v=this.tokenizer.escape(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.tag(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.link(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(v.raw.length);let b=n.at(-1);v.type==="text"&&(b==null?void 0:b.type)==="text"?(b.raw+=v.raw,b.text+=v.text):n.push(v);continue}if(v=this.tokenizer.emStrong(t,i,a)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.codespan(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.br(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.del(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.autolink(t)){t=t.substring(v.raw.length),n.push(v);continue}if(!this.state.inLink&&(v=this.tokenizer.url(t))){t=t.substring(v.raw.length),n.push(v);continue}let y=t;if((h=this.options.extensions)!=null&&h.startInline){let b=1/0,S=t.slice(1),x;this.options.extensions.startInline.forEach($=>{x=$.call({lexer:this},S),typeof x=="number"&&x>=0&&(b=Math.min(b,x))}),b<1/0&&b>=0&&(y=t.substring(0,b+1))}if(v=this.tokenizer.inlineText(y)){t=t.substring(v.raw.length),v.raw.slice(-1)!=="_"&&(a=v.raw.slice(-1)),o=!0;let b=n.at(-1);(b==null?void 0:b.type)==="text"?(b.raw+=v.raw,b.text+=v.text):n.push(v);continue}if(t){let b="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(b);break}else throw new Error(b)}}return n}},ui=class{constructor(e){U(this,"options");U(this,"parser");this.options=e||ht}space(e){return""}code({text:e,lang:t,escaped:n}){var r;let i=(r=(t||"").match(le.notSpaceStart))==null?void 0:r[0],s=e.replace(le.endingNewline,"")+`
1807
+ `;return i?'<pre><code class="language-'+Re(i)+'">'+(n?s:Re(s,!0))+`</code></pre>
1808
+ `:"<pre><code>"+(n?s:Re(s,!0))+`</code></pre>
1809
1809
  `}blockquote({tokens:e}){return`<blockquote>
1810
1810
  ${this.parser.parse(e)}</blockquote>
1811
1811
  `}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
@@ -1821,10 +1821,10 @@ ${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=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?`
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>${Re(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="'+Re(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 Re(n);e=s;let r=`<img src="${e}" alt="${n}"`;return t&&(r+=` title="${Re(t)}"`),r+=">",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Re(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}},ve=class Us{constructor(t){U(this,"options");U(this,"renderer");U(this,"textRenderer");this.options=t||ht,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 c=o,u=this.options.extensions.renderers[c.type].call({parser:this},c);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(c.type)){n+=u||"";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 c='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}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 u=this.options.extensions.renderers[a.type].call({parser:this},a);if(u!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){i+=u||"";continue}}let c=a;switch(c.type){case"escape":{i+=n.text(c);break}case"html":{i+=n.html(c);break}case"link":{i+=n.link(c);break}case"image":{i+=n.image(c);break}case"checkbox":{i+=n.checkbox(c);break}case"strong":{i+=n.strong(c);break}case"em":{i+=n.em(c);break}case"codespan":{i+=n.codespan(c);break}case"br":{i+=n.br(c);break}case"del":{i+=n.del(c);break}case"text":{i+=n.text(c);break}default:{let u='Token with "'+c.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return i}},Hn,Xt=(Hn=class{constructor(e){U(this,"options");U(this,"block");this.options=e||ht}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?ye.lex:ye.lexInline}provideParser(){return this.block?ve.parse:ve.parseInline}},U(Hn,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),U(Hn,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Hn),yg=class{constructor(...e){U(this,"defaults",Er());U(this,"options",this.setOptions);U(this,"parse",this.parseMarkdown(!0));U(this,"parseInline",this.parseMarkdown(!1));U(this,"Parser",ve);U(this,"Renderer",ui);U(this,"TextRenderer",Rr);U(this,"Lexer",ye);U(this,"Tokenizer",ci);U(this,"Hooks",Xt);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 c of a)n=n.concat(this.walkTokens(c.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 c=o[a].flat(1/0);n=n.concat(this.walkTokens(c,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],c=s[o];s[o]=(...u)=>{let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l||""}}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],c=s[o];s[o]=(...u)=>{let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l}}i.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new Xt;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],c=s[o];Xt.passThroughHooks.has(r)?s[o]=u=>{if(this.defaults.async&&Xt.passThroughHooksRespectAsync.has(r))return(async()=>{let d=await a.call(s,u);return c.call(s,d)})();let l=a.call(s,u);return c.call(s,l)}:s[o]=(...u)=>{if(this.defaults.async)return(async()=>{let d=await a.apply(s,u);return d===!1&&(d=await c.apply(s,u)),d})();let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l}}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 ye.lex(e,t??this.defaults)}parser(e,t){return ve.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?ye.lex:ye.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(a):a;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let u=await(s.hooks?await s.hooks.provideParser():e?ve.parse:ve.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(u):u})().catch(r);try{s.hooks&&(t=s.hooks.preprocess(t));let o=(s.hooks?s.hooks.provideLexer():e?ye.lex:ye.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?ve.parse:ve.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>"+Re(n.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}},ct=new yg;function K(e,t){return ct.parse(e,t)}K.options=K.setOptions=function(e){return ct.setOptions(e),K.defaults=ct.defaults,Sc(K.defaults),K};K.getDefaults=Er;K.defaults=ht;K.use=function(...e){return ct.use(...e),K.defaults=ct.defaults,Sc(K.defaults),K};K.walkTokens=function(e,t){return ct.walkTokens(e,t)};K.parseInline=ct.parseInline;K.Parser=ve;K.parser=ve.parse;K.Renderer=ui;K.TextRenderer=Rr;K.Lexer=ye;K.lexer=ye.lex;K.Tokenizer=ci;K.Hooks=Xt;K.parse=K;K.options;K.setOptions;K.use;K.walkTokens;K.parseInline;ve.parse;ye.lex;K.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,tt=new Map;function kg(e){const t=tt.get(e);return t===void 0?null:(tt.delete(e),tt.set(e,t),t)}function va(e,t){if(tt.set(e,t),tt.size<=wg)return;const n=tt.keys().next().value;n&&tt.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=pl(t,vg),i=n.truncated?`
1826
1826
 
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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}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`
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>`,c=Os.sanitize(a,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,c),c}const s=K.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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}const xg=1500,$g=2e3,Ic="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??Ic;return p`
1828
1828
  <button
1829
1829
  class="chat-copy-btn"
1830
1830
  type="button"
@@ -1833,11 +1833,11 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1833
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
- <span class="chat-copy-btn__icon-copy">${D.copy}</span>
1837
- <span class="chat-copy-btn__icon-check">${D.check}</span>
1836
+ <span class="chat-copy-btn__icon-copy">${O.copy}</span>
1837
+ <span class="chat-copy-btn__icon-check">${O.check}</span>
1838
1838
  </span>
1839
1839
  </button>
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`
1840
+ `}function Mg(e){return _g({text:()=>e,label:Ic})}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(ml(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=hl(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,c=a.data,u=a.media_type||"image/png",l=c.startsWith("data:")?c:`data:${u};base64,${c}`;i.push({url:l})}else if(typeof o.data=="string"&&o.data){const a=o.data,c=o.mimeType||o.media_type||"image/png",u=a.startsWith("data:")?a:`data:${c};base64,${a}`;i.push({url:u})}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 p`
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 Og(e){return h`
1850
+ `}function Og(e){return p`
1851
1851
  <div class="chat-group assistant">
1852
1852
  <div class="chat-group-messages">
1853
1853
  <div class="chat-interim fade-in">
@@ -1855,24 +1855,24 @@ 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 Bg(e,t,n,i){return h`
1858
+ `}function Bg(e,t,n,i){return p`
1859
1859
  <div class="chat-group assistant">
1860
1860
  <div class="chat-group-messages">
1861
- ${Ic({role:"assistant",content:[{type:"text",text:e}],timestamp:t},{isStreaming:!1,showReasoning:!1})}
1861
+ ${Rc({role:"assistant",content:[{type:"text",text:e}],timestamp:t},{isStreaming:!1,showReasoning:!1})}
1862
1862
  </div>
1863
1863
  </div>
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`
1864
+ `}function Fg(e,t){const n=gl(e.role),i=n==="user"?"user":n==="assistant"?"assistant":"other",s=new Date(e.timestamp).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"});return p`
1865
1865
  <div class="chat-group ${i}">
1866
1866
  <div class="chat-group-messages">
1867
- ${e.messages.map((r,o)=>Ic(r.message,{isStreaming:e.isStreaming&&o===e.messages.length-1,showReasoning:t.showReasoning}))}
1867
+ ${e.messages.map((r,o)=>Rc(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 Ug(e){return e.length===0?k:h`
1873
+ `}function Ug(e){return e.length===0?k:p`
1874
1874
  <div class="chat-message-images">
1875
- ${e.map(t=>h`
1875
+ ${e.map(t=>p`
1876
1876
  <img
1877
1877
  src=${t.url}
1878
1878
  alt=${t.alt??"Attached image"}
@@ -1881,31 +1881,31 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1881
1881
  />
1882
1882
  `)}
1883
1883
  </div>
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`
1884
+ `}function Rc(e,t,n){const i=e,s=typeof i.role=="string"?i.role:"unknown",r=ml(e)||s.toLowerCase()==="toolresult"||s.toLowerCase()==="tool_result"||typeof i.toolCallId=="string"||typeof i.tool_call_id=="string",a=Pg(e).length>0,c=Ng(e),u=c.length>0,l=hl(e),d=t.showReasoning&&s==="assistant"?md(e):null,h=l!=null&&l.trim()?l:null,v=d?vd(d):null,y=h,b=(s==="assistant"||s==="user")&&!!(y!=null&&y.trim()),S=["chat-bubble",b?"has-copy":"",t.isStreaming?"streaming":"","fade-in"].filter(Boolean).join(" ");return!y&&(a||r)||!y&&!u?k:p`
1885
1885
  <div class="${S}">
1886
- ${w?Mg(b):k}
1887
- ${Ug(l)}
1888
- ${p?h`<div class="chat-thinking">${ai(di(p))}</div>`:k}
1889
- ${b?h`<div class="chat-text">${ai(di(b))}</div>`:k}
1886
+ ${b?Mg(y):k}
1887
+ ${Ug(c)}
1888
+ ${v?p`<div class="chat-thinking">${ai(di(v))}</div>`:k}
1889
+ ${y?p`<div class="chat-text">${ai(di(y))}</div>`:k}
1890
1890
  </div>
1891
- `}function Wg(e){return h`
1891
+ `}function Wg(e){return p`
1892
1892
  <div class="sidebar-panel">
1893
1893
  <div class="sidebar-header">
1894
1894
  <div class="sidebar-title">Tool Output</div>
1895
1895
  <button @click=${e.onClose} class="btn" title="Close sidebar">
1896
- ${D.x}
1896
+ ${O.x}
1897
1897
  </button>
1898
1898
  </div>
1899
1899
  <div class="sidebar-content">
1900
- ${e.error?h`
1900
+ ${e.error?p`
1901
1901
  <div class="callout danger">${e.error}</div>
1902
1902
  <button @click=${e.onViewRawText} class="btn" style="margin-top: 12px;">
1903
1903
  View Raw Text
1904
1904
  </button>
1905
- `:e.content?h`<div class="sidebar-markdown">${ai(di(e.content))}</div>`:h`<div class="muted">No content available</div>`}
1905
+ `:e.content?p`<div class="sidebar-markdown">${ai(di(e.content))}</div>`:p`<div class="muted">No content available</div>`}
1906
1906
  </div>
1907
1907
  </div>
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`
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 Mt=class extends $t{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 p``}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)}};Mt.styles=Nu`
1909
1909
  :host {
1910
1910
  width: 4px;
1911
1911
  cursor: col-resize;
@@ -1931,25 +1931,25 @@ 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
- `;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.
1934
+ `;Ti([bi({type:Number})],Mt.prototype,"splitRatio",2);Ti([bi({type:Number})],Mt.prototype,"minRatio",2);Ti([bi({type:Number})],Mt.prototype,"maxRatio",2);Mt=Ti([ol("resizable-divider")],Mt);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,ft="emoji",Pt="keyvalue",Nr="favorites",qg="tokens",Nc="tokens",Vg="unicode",Dc="count",Gg="group",Qg="order",Oc="group-order",Ws="eTag",pi="url",ba="skinTone",Nt="readonly",Dr="readwrite",Bc="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,c]]of Object.entries(s))r.createIndex(o,a,{multiEntry:c});return r}t(Pt),t(ft,Vg,{[Nc]:[qg,!0],[Oc]:[[Gg,Qg]],[Bc]:[Yg,!0]}),t(Nr,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 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)},Fc(n,i,s)});return t.onclose=()=>Or(e),t}function nm(e){return Qn[e]||(Qn[e]=tm(e)),Qn[e]}function De(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(u=>o.objectStore(u));let c;i(a,o,u=>{c=u}),o.oncomplete=()=>s(c),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);Fc(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 Ct(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 Uc(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:c,emoji:u,version:l})=>{const d=[...new Set(Uc([...(o||[]).map(Ct).flat(),...(c||[]).map(Ct).flat(),...Ct(n),i]))].sort(),h={annotation:n,group:s,order:r,tags:c,tokens:d,unicode:u,version:l};if(i&&(h.emoticon=i),o&&(h.shortcodes=o),a){h.skinTones=[],h.skinUnicodes=[],h.skinVersions=[];for(const{tone:v,emoji:y,version:b}of a)h.skinTones.push(v),h.skinUnicodes.push(y),h.skinVersions.push(b)}return h})}function Wc(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function ut(e,t,n){Wc(e,"get",t,n)}function Kc(e,t,n){Wc(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 zc(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,Pt,pi)}async function um(e,t,n){const[i,s]=await Promise.all([Ws,pi].map(r=>Fr(e,Pt,r)));return i===n&&s===t}async function dm(e,t){return De(e,ft,Nt,(i,s,r)=>{let o;const a=()=>{i.getAll(o&&IDBKeyRange.lowerBound(o,!0),50).onsuccess=c=>{const u=c.target.result;for(const l of u)if(o=l.unicode,t(l))return r(l);if(u.length<50)return r();a()}};a()})}async function jc(e,t,n,i){{const s=am(t);await De(e,[ft,Pt],Dr,([r,o],a)=>{let c,u,l=0;function d(){++l===2&&h()}function h(){if(!(c===i&&u===n)){r.clear();for(const v of s)r.put(v);o.put(i,Ws),o.put(n,pi),Br(a)}}ut(o,Ws,v=>{c=v,d()}),ut(o,pi,v=>{u=v,d()})})}}async function pm(e,t){return De(e,ft,Nt,(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(Ct(t));return n.length?De(e,ft,Nt,(i,s,r)=>{const o=[],a=()=>{o.length===n.length&&c()},c=()=>{const u=zc(o,l=>l.unicode);r(u.sort((l,d)=>l.order<d.order?-1:1))};for(let u=0;u<n.length;u++){const l=n[u],d=u===n.length-1?IDBKeyRange.bound(l,l+"￿",!1,!0):IDBKeyRange.only(l);Kc(i.index(Nc),d,h=>{o.push(h),a()})}}):[]}async function hm(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 dm(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function fm(e,t){return De(e,ft,Nt,(n,i,s)=>ut(n,t,r=>{if(r)return s(r);ut(n.index(Bc),t,o=>s(o||null))}))}function Fr(e,t,n){return De(e,t,Nt,(i,s,r)=>ut(i,n,r))}function gm(e,t,n,i){return De(e,t,Dr,(s,r)=>{s.put(i,n),Br(r)})}function mm(e,t){return De(e,Nr,Dr,(n,i)=>ut(n,t,s=>{n.put((s||0)+1,t),Br(i)}))}function ym(e,t,n){return n===0?[]:De(e,[Nr,ft],Nt,([i,s],r,o)=>{const a=[];i.index(Dc).openCursor(void 0,"prev").onsuccess=c=>{const u=c.target.result;if(!u)return o(a);function l(v){if(a.push(v),a.length===n)return o(a);u.continue()}const d=u.primaryKey,h=t.byName(d);if(h)return l(h);ut(s,d,v=>{if(v)return l(v);u.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 u=0;u<o.length;u++){const l=o.charAt(u);let d=a.get(l);d||(d=new Map,a.set(l,d)),a=d}let c=a.get(Kn);c||(c=[],a.set(Kn,c)),c.push(s)}}return(s,r)=>{let o=n;for(let u=0;u<s.length;u++){const l=s.charAt(u),d=o.get(l);if(d)o=d;else return[]}if(r)return o.get(Kn)||[];const a=[],c=[o];for(;c.length;){const l=[...c.shift().entries()].sort((d,h)=>d[0]<h[0]?-1:1);for(const[d,h]of l)d===Kn?a.push(...h):c.push(h)}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=(h,v)=>h.name.toLowerCase()<v.name.toLowerCase()?-1:1,n=e.sort(t),s=vm(e,h=>{const v=new Set;if(h.shortcodes)for(const y of h.shortcodes)for(const b of Ct(y))v.add(b);return v}),r=h=>s(h,!0),o=h=>s(h,!1),a=h=>{const v=Ct(h),y=v.map((b,S)=>(S<v.length-1?r:o)(b));return zc(y,b=>b.name).sort(t)},c=new Map,u=new Map;for(const h of e){u.set(h.name.toLowerCase(),h);for(const v of h.shortcodes||[])c.set(v.toLowerCase(),h)}return{all:n,search:a,byShortcode:h=>c.get(h.toLowerCase()),byName:h=>u.get(h.toLowerCase())}}const km=typeof wrappedJSObject<"u";function Qt(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 qc(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 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 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 Gc(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 Gc(n))}await um(e,t,i)||(n||(n=(await zs(t))[1]),await jc(e,n,t,i))}async function Tm(e,t){let[n,i]=await zs(t);n||(n=await Gc(i)),await jc(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(Qt)}async getEmojiBySearchQuery(t){Wn(t),await this.ready();const n=this._custom.search(t),i=wa(await Hc(this._db,t)).map(Qt);return[...n,...i]}async getEmojiByShortcode(t){Wn(t),await this.ready();const n=this._custom.byShortcode(t);return n||Qt(await hm(this._db,t))}async getEmojiByUnicodeOrName(t){Wn(t),await this.ready();const n=this._custom.byName(t);return n||Qt(await fm(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await Fr(this._db,Pt,ba)||0}async setPreferredSkinTone(t){return cs(t),await this.ready(),gm(this._db,Pt,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(Qt)}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,Qc=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=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Yc='"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 ${Yc}`,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=>Qc(()=>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 xe(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 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:c,annotation:u})=>({unicode:i,name:a,shortcodes:r,url:o,category:c,annotation:u,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 c=a/1.8<fs;Hs.set(r.unicode,c),c||(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 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=`
1937
+ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function Xm(e){return Xc(e,t=>t)}function Zm(e){e&&(e.scrollTop=0)}function an(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:c}}=n,u=e[r];if(s!==u)if(n.currentExpression=u,o)if(u===null)i.removeAttribute(o);else{const l=a+Ea(u)+c;i.setAttribute(o,l)}else{let l;Array.isArray(u)?oy(u,n):u instanceof Element?(l=u,i.replaceWith(l)):i.nodeValue=Ea(u),l&&(n.targetNode=l)}}}function ly(e){let t="",n=!1,i=!1,s=-1;const r=new Map,o=[];let a=0;for(let u=0,l=e.length;u<l;u++){const d=e[u];if(t+=d.slice(a),u===l-1)break;for(let $=0;$<d.length;$++)switch(d.charAt($)){case"<":{d.charAt($+1)==="/"?o.pop():(n=!0,o.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const h=o[o.length-1],v=an(r,h,()=>[]);let y,b,S;if(i){const $=/(\S+)="?([^"=]*)$/.exec(d);y=$[1],b=$[2];const C=/^([^">]*)("?)/.exec(e[u+1]);S=C[1],t=t.slice(0,-1*$[0].length),a=C[0].length}else a=0;const x={attributeName:y,attributeValuePre:b,attributeValuePost:S,expressionIndex:u};v.push(x),!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}=an(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=an(ty,e,()=>new Map);let n=ny;function i(r,...o){const a=an(t,r,()=>new Map);return an(a,n,()=>uy(r))(o)}function s(r,o,a){return r.map((c,u)=>{const l=n;n=a(c);try{return o(c,u)}finally{n=l}})}return{map:s,html:i}}function py(e,t,n,i,s,r,o,a,c){const{labelWithSkin:u,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:v}=dy(t);function y($,C,T){return v($,(M,R)=>h`<button role="${C?"option":"menuitem"}" aria-selected="${C?R===t.activeSearchItem:null}" aria-label="${u(M,t.currentSkinTone)}" title="${l(M)}" class="${"emoji"+(C&&R===t.activeSearchItem?" active":"")+(M.unicode?"":" custom-emoji")}" id="${`${T}-${M.id}`}" style="${M.unicode?null:`--custom-emoji-background: url(${JSON.stringify(M.url)})`}">${M.unicode?d(M,t.currentSkinTone):""}</button>`,M=>`${T}-${M.id}`)}const S=h`<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">${v(t.skinTones,($,C)=>h`<div id="skintone-${C}" class="emoji ${C===t.activeSkinTone?"active":""}" aria-selected="${C===t.activeSkinTone}" role="option" title="${t.i18n.skinTones[C]}" aria-label="${t.i18n.skinTones[C]}">${$}</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">${v(t.groups,$=>h`<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">${v(t.currentEmojisWithCategories,($,C)=>h`<div><div id="menu-label-${C}" 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 ${C!==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-${C}" id="${t.searchMode?"search-results":null}">${y($.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">${y(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,x=($,C)=>{for(const T of e.querySelectorAll(`[${$}]`))C(T,T.getAttribute($))};if(c){e.appendChild(S);for(const $ of["click","focusout","input","keydown","keyup"])x(`data-on-${$}`,(C,T)=>{C.addEventListener($,i[T])});x("data-ref",($,C)=>{r[C]=$}),o.addEventListener("abort",()=>{e.removeChild(S)})}x("data-action",($,C)=>{let T=a.get(C);T||a.set(C,T=new WeakSet),T.has($)||(T.add($),s[C]($))})}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 u=[...s];s.clear();try{for(const l of u)l()}finally{r=!1,s.size&&(r=!0,fi(o))}},a=new Proxy({},{get(u,l){if(n){let d=i.get(l);d||(d=new Set,i.set(l,d)),d.add(n)}return u[l]},set(u,l,d){if(u[l]!==d){u[l]=d;const h=i.get(l);if(h){for(const v of h)s.add(v);r||(r=!0,fi(o))}}return!0}}),c=u=>{const l=()=>{const d=n;n=l;try{return u()}finally{n=d}};return l()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:c}}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 c=A=>{e.getElementById(A).focus()},u=A=>e.getElementById(`emo-${A.id}`),l=(A,_)=>{n.rootElement.dispatchEvent(new CustomEvent(A,{detail:_,bubbles:!0,composed:!0}))},d=(A,_)=>A.id===_.id,h=(A,_)=>{const{category:N,emojis:D}=A,{category:q,emojis:z}=_;return N!==q?!1:gs(D,z,d)},v=A=>{gs(r.currentEmojis,A,d)||(r.currentEmojis=A)},y=A=>{r.searchMode!==A&&(r.searchMode=A)},b=A=>{gs(r.currentEmojisWithCategories,A,h)||(r.currentEmojisWithCategories=A)},S=(A,_)=>_&&A.skins&&A.skins[_]||A.unicode,C={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:H,onEmojiClick:Sn,onNavClick:wn,onNavKeydown:Ii,onSearchKeydown:Li,onSkinToneOptionsClick:An,onSkinToneOptionsFocusOut:Be,onSkinToneOptionsKeydown:Qe,onSkinToneOptionsKeyup:Ot,onSearchInput:xn},M={calculateEmojiGridStyle:J,updateOnIntersection:ge};let R=!0;o(()=>{py(e,r,C,T,M,n,s,a,R),R=!1}),r.emojiVersion||ps().then(A=>{A||(r.message=r.i18n.emojiUnsupportedMessage)}),o(()=>{async function A(){let _=!1;const N=setTimeout(()=>{_=!0,r.message=r.i18n.loadingMessage},Im);try{await r.database.ready(),r.databaseLoaded=!0}catch(D){console.error(D),r.message=r.i18n.networkErrorMessage}finally{clearTimeout(N),_&&(_=!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: ${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`
1940
+ --num-skintones: ${Sa};`}),o(()=>{r.customEmoji&&r.database&&B()}),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,N=(await Promise.all(Dm.map(D=>_.getEmojiByUnicodeOrName(D)))).filter(Boolean);r.defaultFavoriteEmojis=N}r.databaseLoaded&&A()});function B(){const{customEmoji:A,database:_}=r,N=A||ms;_.customEmoji!==N&&(_.customEmoji=N)}o(()=>{async function A(){B();const{database:_,defaultFavoriteEmojis:N,numColumns:D}=r,q=await _.getTopFavoriteEmoji(D),z=await Ge(Xc([...q,...N],oe=>oe.unicode||oe.name).slice(0,D));r.currentFavorites=z}r.databaseLoaded&&r.defaultFavoriteEmojis&&A()});function J(A){Qm(A,s,()=>{{const _=getComputedStyle(n.rootElement),N=parseInt(_.getPropertyValue("--num-columns"),10),D=_.getPropertyValue("direction")==="rtl";r.numColumns=N,r.isRtl=D}})}function ge(A){fy(A,s,_=>{for(const{target:N,isIntersecting:D}of _)N.classList.toggle("onscreen",D)})}o(()=>{async function A(){const{searchText:_,currentGroup:N,databaseLoaded:D,customEmoji:q}=r;if(!D)r.currentEmojis=[],r.searchMode=!1;else if(_.length>=Pm){const z=await Pi(_);r.searchText===_&&(v(z),y(!0))}else{const{id:z}=N;if(z!==-1||q&&q.length){const oe=await Mi(z);r.currentGroup.id===z&&(v(oe),y(!1))}}}A()});const Oe=()=>{Yn(()=>Zm(n.tabpanelElement))};o(()=>{const{currentEmojis:A,emojiVersion:_}=r,N=A.filter(D=>D.unicode).filter(D=>Aa(D)&&!Hs.has(D.unicode));if(!_&&N.length)v(A),Yn(()=>X(N));else{const D=_?A:A.filter(Dt);v(D),Oe()}});function X(A){Ym(A,n.baselineEmoji,u)?Oe():r.currentEmojis=[...r.currentEmojis]}function Dt(A){return!A.unicode||!Aa(A)||Hs.get(A.unicode)}async function gt(A){const _=r.emojiVersion||await ps();return A.filter(({version:N})=>!N||N<=_)}async function Ge(A){return Vm(A,r.emojiVersion||await ps())}async function Mi(A){const _=A===-1?r.customEmoji:await r.database.getEmojiByGroup(A);return Ge(await gt(_))}async function Pi(A){return Ge(await gt(await r.database.getEmojiBySearchQuery(A)))}o(()=>{}),o(()=>{function A(){const{searchMode:N,currentEmojis:D}=r;if(N)return[{category:"",emojis:D}];const q=new Map;for(const z of D){const oe=z.category||"";let Fe=q.get(oe);Fe||(Fe=[],q.set(oe,Fe)),Fe.push(z)}return[...q.entries()].map(([z,oe])=>({category:z,emojis:oe})).sort((z,oe)=>r.customCategorySorting(z.category,oe.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 _=N=>{xe(A),r.activeSearchItem=hs(N,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 xe(A),G(r.currentEmojis[r.activeSearchItem].id)}}function wn(A){const{target:_}=A,N=_.closest(".nav-button");if(!N)return;const D=parseInt(N.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(q=>q.id===D)}function Ii(A){const{target:_,key:N}=A,D=q=>{q&&(xe(A),q.focus())};switch(N){case"ArrowLeft":return D(_.previousElementSibling);case"ArrowRight":return D(_.nextElementSibling);case"Home":return D(_.parentElement.firstElementChild);case"End":return D(_.parentElement.lastElementChild)}}async function kn(A){const _=await r.database.getEmojiByUnicodeOrName(A),N=[...r.currentEmojis,...r.currentFavorites].find(q=>q.id===A),D=N.unicode&&S(N,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(A),{emoji:_,skinTone:r.currentSkinTone,...D&&{unicode:D},...N.name&&{name:N.name}}}async function G(A){const _=kn(A);l("emoji-click-sync",_),l("emoji-click",await _)}function Sn(A){const{target:_}=A;if(!_.classList.contains("emoji"))return;xe(A);const N=_.id.substring(4);G(N)}function Q(A){r.currentSkinTone=A,r.skinTonePickerExpanded=!1,c("skintone-button"),l("skin-tone-change",{skinTone:A}),r.database.setPreferredSkinTone(A)}function An(A){const{target:{id:_}}=A,N=_&&_.match(/^skintone-(\d)/);if(!N)return;xe(A);const D=parseInt(N[1],10);Q(D)}function H(A){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&(xe(A),Yn(()=>c("skintone-list")))}o(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function Qe(A){if(!r.skinTonePickerExpanded)return;const _=async N=>{xe(A),r.activeSkinTone=N};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 xe(A),Q(r.activeSkinTone);case"Escape":return xe(A),r.skinTonePickerExpanded=!1,c("skintone-button")}}function Ot(A){if(r.skinTonePickerExpanded&&A.key===" ")return xe(A),Q(r.activeSkinTone)}async function Be(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 Zc=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],wy=`:host{--emoji-font-family:${Yc}}`;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 Zc)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 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(Ur.prototype,Jc);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?p`
1941
1941
  <div class="callout info compaction-indicator compaction-indicator--active">
1942
- ${D.loader} Compacting context...
1942
+ ${O.loader} Compacting context...
1943
1943
  </div>
1944
- `:e.completedAt&&Date.now()-e.completedAt<Sy?h`
1944
+ `:e.completedAt&&Date.now()-e.completedAt<Sy?p`
1945
1945
  <div class="callout success compaction-indicator compaction-indicator--complete">
1946
- ${D.check} Context compacted
1946
+ ${O.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 $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`
1948
+ `:k:k}const Zt=5*1024*1024;function Jt(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function At(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>Zt){At(n,`Image too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:o.type},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else if(Ey(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`File too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:"",mimeType:o.type||"text/plain",fileName:o.name,textContent:c},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsText(o)}else if(Cy(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`PDF too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:"application/pdf",fileName:o.name},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else if(Ty(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`Video too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:o.type||"video/mp4",fileName:o.name},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else At(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 c=n[a];(c.type.startsWith("image/")||c.type.startsWith("video/"))&&i.push(c)}if(i.length!==0){e.preventDefault();for(const a of i){const c=a.getAsFile();if(!c)continue;const u=c.type.startsWith("video/")?"Video":"Image";if(c.size>Zt){const d=((o=(r=e.target)==null?void 0:r.closest)==null?void 0:o.call(r,".chat"))??document.querySelector(".chat");d&&At(d,`${u} too large (${(c.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const l=new FileReader;l.onload=()=>{var b;const d=l.result,h=c.type.startsWith("video/"),v={id:Jt(),dataUrl:d,mimeType:c.type,fileName:h?c.name||"video.mp4":void 0},y=t.attachments??[];(b=t.onAttachmentsChange)==null||b.call(t,[...y,v])},l.readAsDataURL(c)}}}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,c=t.draft.slice(0,o),u=t.draft.slice(a);t.onDraftChange(c+i+u);const l=s==null?void 0:s.querySelector(".emoji-picker-popup"),d=s==null?void 0:s.querySelector(".chat-compose__emoji");l==null||l.classList.remove("active"),d==null||d.classList.remove("active"),requestAnimationFrame(()=>{r.focus();const h=o+i.length;r.setSelectionRange(h,h)})}function Ny(e){const t=e.attachments??[];return t.length===0?k:p`
1949
1949
  <div class="chat-attachments">
1950
- ${t.map(n=>{var i;return n.fileName?h`
1950
+ ${t.map(n=>{var i;return n.fileName?p`
1951
1951
  <div class="chat-attachment chat-attachment--file">
1952
- <span class="chat-attachment__icon">${(i=n.mimeType)!=null&&i.startsWith("video/")?D.film:D.fileText}</span>
1952
+ <span class="chat-attachment__icon">${(i=n.mimeType)!=null&&i.startsWith("video/")?O.film:O.fileText}</span>
1953
1953
  <span class="chat-attachment__name" title=${n.fileName}>${n.fileName}</span>
1954
1954
  <button
1955
1955
  class="chat-attachment__remove chat-attachment__remove--file"
@@ -1957,10 +1957,10 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
1957
1957
  aria-label="Remove attachment"
1958
1958
  @click=${()=>{var r;const s=(e.attachments??[]).filter(o=>o.id!==n.id);(r=e.onAttachmentsChange)==null||r.call(e,s)}}
1959
1959
  >
1960
- ${D.x}
1960
+ ${O.x}
1961
1961
  </button>
1962
1962
  </div>
1963
- `:h`
1963
+ `:p`
1964
1964
  <div class="chat-attachment">
1965
1965
  <img
1966
1966
  src=${n.dataUrl}
@@ -1973,35 +1973,35 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
1973
1973
  aria-label="Remove attachment"
1974
1974
  @click=${()=>{var r;const s=(e.attachments??[]).filter(o=>o.id!==n.id);(r=e.onAttachmentsChange)==null||r.call(e,s)}}
1975
1975
  >
1976
- ${D.x}
1976
+ ${O.x}
1977
1977
  </button>
1978
1978
  </div>
1979
1979
  `})}
1980
1980
  </div>
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`
1981
+ `}function eu(e){var h,v,y;const t=e.connected,n=e.sending||e.stream!==null,i=!!(e.canAbort&&e.onAbort),s=(v=(h=e.sessions)==null?void 0:h.sessions)==null?void 0:v.find(b=>b.key===e.sessionKey),r=(s==null?void 0:s.reasoningLevel)??"off",o=e.showThinking&&r!=="off";e.assistantName,e.assistantAvatar??e.assistantAvatarUrl;const a=(((y=e.attachments)==null?void 0:y.length)??0)>0,c=e.connected?a?"Add a message...":"Message...":"Connecting…",u=e.splitRatio??.6,l=!!(e.sidebarOpen&&e.onCloseSidebar),d=p`
1982
1982
  <div
1983
1983
  class="chat-thread"
1984
1984
  role="log"
1985
1985
  aria-live="polite"
1986
1986
  @scroll=${e.onChatScroll}
1987
1987
  >
1988
- ${e.loading?h`<div class="muted">Loading chat…</div>`:k}
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)}
1988
+ ${e.loading?p`<div class="muted">Loading chat…</div>`:k}
1989
+ ${hf(Ky(e),b=>b.key,b=>b.kind==="interim"?Og(b.text):b.kind==="reading-indicator"?Dg():b.kind==="stream"?Bg(b.text,b.startedAt,e.onOpenSidebar):b.kind==="group"?Fg(b,{onOpenSidebar:e.onOpenSidebar,showReasoning:o,assistantName:e.assistantName}):k)}
1990
1990
  </div>
1991
- `;return h`
1991
+ `;return p`
1992
1992
  <section
1993
1993
  class="card chat"
1994
- @drop=${w=>_y(w,e)}
1994
+ @drop=${b=>_y(b,e)}
1995
1995
  @dragover=${My}
1996
1996
  @dragleave=${Py}
1997
1997
  >
1998
- ${e.disabledReason?h`<div class="callout">${e.disabledReason}</div>`:k}
1998
+ ${e.disabledReason?p`<div class="callout">${e.disabledReason}</div>`:k}
1999
1999
 
2000
- ${e.error?h`<div class="callout danger">${e.error}</div>`:k}
2000
+ ${e.error?p`<div class="callout danger">${e.error}</div>`:k}
2001
2001
 
2002
2002
  ${Ay(e.compactionStatus)}
2003
2003
 
2004
- ${e.focusMode?h`
2004
+ ${e.focusMode?p`
2005
2005
  <button
2006
2006
  class="chat-focus-exit"
2007
2007
  type="button"
@@ -2009,35 +2009,35 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
2009
2009
  aria-label="Exit focus mode"
2010
2010
  title="Exit focus mode"
2011
2011
  >
2012
- ${D.x}
2012
+ ${O.x}
2013
2013
  </button>
2014
2014
  `:k}
2015
2015
 
2016
2016
  <div
2017
- class="chat-split-container ${d?"chat-split-container--open":""}"
2017
+ class="chat-split-container ${l?"chat-split-container--open":""}"
2018
2018
  >
2019
2019
  <div
2020
2020
  class="chat-main"
2021
- style="flex: ${d?`0 0 ${c*100}%`:"1 1 100%"}"
2021
+ style="flex: ${l?`0 0 ${u*100}%`:"1 1 100%"}"
2022
2022
  >
2023
- ${f}
2024
- ${e.nearBottom===!1?h`
2023
+ ${d}
2024
+ ${e.nearBottom===!1?p`
2025
2025
  <button
2026
2026
  class="chat-scroll-bottom"
2027
2027
  type="button"
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"})}}
2028
+ @click=${b=>{const S=b.currentTarget.closest(".chat-main"),x=S==null?void 0:S.querySelector(".chat-thread");x&&x.scrollTo({top:x.scrollHeight,behavior:"smooth"})}}
2029
2029
  aria-label="Scroll to bottom"
2030
2030
  title="Scroll to bottom"
2031
2031
  >
2032
- ${D.chevronDown}
2032
+ ${O.chevronDown}
2033
2033
  </button>
2034
2034
  `:k}
2035
2035
  </div>
2036
2036
 
2037
- ${d?h`
2037
+ ${l?p`
2038
2038
  <resizable-divider
2039
- .splitRatio=${c}
2040
- @resize=${w=>{var S;return(S=e.onSplitRatioChange)==null?void 0:S.call(e,w.detail.splitRatio)}}
2039
+ .splitRatio=${u}
2040
+ @resize=${b=>{var S;return(S=e.onSplitRatioChange)==null?void 0:S.call(e,b.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(`\`\`\`
@@ -2047,12 +2047,12 @@ ${e.sidebarContent}
2047
2047
  `:k}
2048
2048
  </div>
2049
2049
 
2050
- ${e.suggestion?h`
2050
+ ${e.suggestion?p`
2051
2051
  <div class="chat-suggestions">
2052
2052
  <button
2053
2053
  class="chat-suggestion-chip"
2054
2054
  type="button"
2055
- @click=${()=>{var w;return(w=e.onSuggestionClick)==null?void 0:w.call(e,e.suggestion)}}
2055
+ @click=${()=>{var b;return(b=e.onSuggestionClick)==null?void 0:b.call(e,e.suggestion)}}
2056
2056
  >
2057
2057
  ${e.suggestion}
2058
2058
  </button>
@@ -2069,56 +2069,56 @@ ${e.sidebarContent}
2069
2069
  aria-label="Emoji"
2070
2070
  title="Emoji"
2071
2071
  >
2072
- ${D.smile}
2072
+ ${O.smile}
2073
2073
  </button>
2074
2074
  <label class="field chat-compose__field">
2075
2075
  <span>Message</span>
2076
2076
  <textarea
2077
2077
  .value=${e.draft}
2078
2078
  ?disabled=${!e.connected}
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
- placeholder=${l}
2079
+ @keydown=${b=>{b.key==="Enter"&&(b.isComposing||b.keyCode===229||b.shiftKey||e.connected&&(b.preventDefault(),t&&(e.onSend(),Ma(b.target))))}}
2080
+ @input=${b=>{const S=b.target;e.onDraftChange(S.value),ky(S)}}
2081
+ @paste=${b=>Ly(b,e)}
2082
+ placeholder=${c}
2083
2083
  ></textarea>
2084
2084
  </label>
2085
- ${i?h`
2085
+ ${i?p`
2086
2086
  <button
2087
2087
  class="btn btn--icon chat-compose__send"
2088
2088
  @click=${e.onAbort}
2089
2089
  aria-label="Stop"
2090
2090
  title="Stop generating"
2091
2091
  >
2092
- ${D.square}
2092
+ ${O.square}
2093
2093
  </button>
2094
2094
  `:k}
2095
2095
  <button
2096
2096
  class="btn btn--icon chat-compose__send primary"
2097
2097
  ?disabled=${!e.connected}
2098
- @click=${w=>{var C;e.onSend();const S=(C=w.target.closest(".chat-compose"))==null?void 0:C.querySelector("textarea");S&&Ma(S)}}
2098
+ @click=${b=>{var x;e.onSend();const S=(x=b.target.closest(".chat-compose"))==null?void 0:x.querySelector("textarea");S&&Ma(S)}}
2099
2099
  aria-label="${n?"Queue":"Send"}"
2100
2100
  title="${n?"Queue message":"Send (Enter)"}"
2101
2101
  >
2102
- ${D.send}
2102
+ ${O.send}
2103
2103
  </button>
2104
2104
  </div>
2105
2105
  <div class="emoji-picker-popup">
2106
2106
  <emoji-picker
2107
- @emoji-click=${w=>Ry(w,e)}
2107
+ @emoji-click=${b=>Ry(b,e)}
2108
2108
  ></emoji-picker>
2109
2109
  </div>
2110
2110
  ${e.publicMode?k:Uy(e)}
2111
2111
  </div>
2112
2112
  </section>
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`
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 p`
2114
2114
  <div class="chat-model-bar">
2115
2115
  <div class="chat-model-bar__select">
2116
2116
  <select
2117
2117
  class="chat-model-bar__dropdown"
2118
2118
  .value=${i??""}
2119
- @change=${a=>{const l=a.target.value;l&&e.onModelChange&&e.onModelChange(l)}}
2119
+ @change=${a=>{const c=a.target.value;c&&e.onModelChange&&e.onModelChange(c)}}
2120
2120
  >
2121
- ${n.map(a=>h`
2121
+ ${n.map(a=>p`
2122
2122
  <option value=${a.key} ?selected=${a.key===i}>
2123
2123
  ${a.shortName} — ${a.description}
2124
2124
  </option>
@@ -2129,9 +2129,9 @@ ${e.sidebarContent}
2129
2129
  <select
2130
2130
  class="chat-model-bar__dropdown"
2131
2131
  .value=${s}
2132
- @change=${a=>{const l=a.target.value;e.onThinkingLevelChange&&e.onThinkingLevelChange(l)}}
2132
+ @change=${a=>{const c=a.target.value;e.onThinkingLevelChange&&e.onThinkingLevelChange(c)}}
2133
2133
  >
2134
- ${By.map(a=>h`
2134
+ ${By.map(a=>p`
2135
2135
  <option value=${a.value} ?selected=${a.value===s}>
2136
2136
  Thinking: ${a.label}
2137
2137
  </option>
@@ -2145,14 +2145,14 @@ ${e.sidebarContent}
2145
2145
  aria-label="Message settings"
2146
2146
  title="Message settings"
2147
2147
  >
2148
- ${D.slidersHorizontal}
2148
+ ${O.slidersHorizontal}
2149
2149
  </button>
2150
2150
  <div class="chat-settings-menu">
2151
2151
  <label class="chat-settings-menu__item">
2152
2152
  <input
2153
2153
  type="checkbox"
2154
2154
  .checked=${r}
2155
- @change=${a=>{const l=a.target.checked;e.onVerboseChange&&e.onVerboseChange(l?"on":"off")}}
2155
+ @change=${a=>{const c=a.target.checked;e.onVerboseChange&&e.onVerboseChange(c?"on":"off")}}
2156
2156
  />
2157
2157
  <span>Verbose</span>
2158
2158
  <span class="chat-settings-menu__hint">Detailed responses</span>
@@ -2161,49 +2161,49 @@ ${e.sidebarContent}
2161
2161
  <input
2162
2162
  type="checkbox"
2163
2163
  .checked=${o}
2164
- @change=${a=>{const l=a.target.checked;e.onFillerChange&&e.onFillerChange(l)}}
2164
+ @change=${a=>{const c=a.target.checked;e.onFillerChange&&e.onFillerChange(c)}}
2165
2165
  />
2166
2166
  <span>Filler</span>
2167
2167
  <span class="chat-settings-menu__hint">Quick acks while thinking</span>
2168
2168
  </label>
2169
2169
  </div>
2170
2170
  </div>
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(", ")}
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=fl(i.message),r=gl(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 c=n[a],u=fl(c);!s&&u.role.toLowerCase()==="toolresult"||t.push({kind:"message",key:La(c,a),message:c})}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 c=((o=a.attachments)==null?void 0:o.filter(l=>l.fileName).map(l=>l.fileName))??[],u=c.length>0?a.text?`${c.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 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`
2173
+ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,message:{role:"user",content:[{type:"text",text:u}],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=p`<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 p`
2174
2174
  <div class="setup-container">
2175
2175
  <div class="setup-card">
2176
2176
  <div class="setup-spinner"></div>
2177
2177
  <p>Connecting to gateway...</p>
2178
2178
  </div>
2179
2179
  </div>
2180
- `;const t=e.publicChatEnabled&&e.publicChatAccountId?h`<a
2180
+ `;const t=e.publicChatEnabled&&e.publicChatAccountId?p`<a
2181
2181
  class="chat-public-link"
2182
2182
  href="/public/chat/${e.publicChatAccountId}"
2183
2183
  target="_blank"
2184
2184
  rel="noopener"
2185
2185
  title="Open public chat in new tab"
2186
- >Public ${zy}</a>`:k;return h`
2186
+ >Public ${zy}</a>`:k;return p`
2187
2187
  <div class="setup-container setup-container--full chat-page">
2188
- ${ut("Chat",e.wsProps)}
2188
+ ${pt("Chat",e.wsProps)}
2189
2189
  ${t}
2190
2190
  <div class="chat-viewport">
2191
- ${Jc(e)}
2191
+ ${eu(e)}
2192
2192
  </div>
2193
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`
2194
+ `}function Hy(e){return e?`${ul(e)} (${wi(e)})`:"n/a"}function tu(e){const t=e.state??{},n=t.lastStatus??"n/a",i=t.lastRunAtMs?wi(t.lastRunAtMs):"never";return`${n} · last ${i}`}function nu(e){const t=e.schedule;return t.kind==="at"?`One-time: ${ul(t.atMs)}`:t.kind==="every"?`Every ${dl(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,c=t?` (${t.replace(/^.*\//,"").replace(/_/g," ")})`:"",u=(b,S)=>new Date(2e3,0,1,b,S).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),l=/^\d{1,2}$/.test(i)?parseInt(i,10):null,d=Ia(s);if(l===null||!d)return`${e}${t?` (${t})`:""}`;const h=d.map(b=>u(b,l)),v=h.length<=3?h.join(" & "):`${h.slice(0,-1).join(", ")} & ${h[h.length-1]}`,y=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];if(r==="*"&&o==="*"){if(a==="*")return`Daily at ${v}${c}`;if(a==="1-5")return`Weekdays at ${v}${c}`;if(a==="0,6"||a==="6,0")return`Weekends at ${v}${c}`;const b=Ia(a);if(b)return`${b.map(x=>y[x%7]??String(x)).join(", ")} at ${v}${c}`}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=p`<svg viewBox="0 0 24 24"><polygon points="5 3 19 12 5 21 5 3"/></svg>`,Xy=p`<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=p`<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>`,iu=p`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,Jy=p`<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 p`
2195
2195
  ${ev(e)}
2196
2196
  ${tv(e)}
2197
2197
  ${e.newEventModalOpen?iv(e):k}
2198
2198
  ${t?rv(t,e):k}
2199
- `}function ev(e){const t=e.status,n=(t==null?void 0:t.enabled)??!1,i=(t==null?void 0:t.jobs)??0,s=t==null?void 0:t.nextWakeAtMs;return h`
2199
+ `}function ev(e){const t=e.status,n=(t==null?void 0:t.enabled)??!1,i=(t==null?void 0:t.jobs)??0,s=t==null?void 0:t.nextWakeAtMs;return p`
2200
2200
  <div class="event-status-bar">
2201
2201
  <div class="event-status-bar__info">
2202
2202
  <span class="statusDot ${n?"ok":""}"></span>
2203
2203
  <span>${n?"Active":"Inactive"}</span>
2204
2204
  <span class="event-status-bar__sep">\u00b7</span>
2205
2205
  <span>${i} event${i!==1?"s":""}</span>
2206
- ${s?h`
2206
+ ${s?p`
2207
2207
  <span class="event-status-bar__sep">\u00b7</span>
2208
2208
  <span>Next: ${wi(s)}</span>
2209
2209
  `:k}
@@ -2215,17 +2215,17 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2215
2215
  >
2216
2216
  ${e.loading?"Refreshing…":"Refresh"}
2217
2217
  </button>
2218
- ${e.error?h`<span class="muted">${e.error}</span>`:k}
2218
+ ${e.error?p`<span class="muted">${e.error}</span>`:k}
2219
2219
  </div>
2220
2220
  <button class="btn primary btn--sm" @click=${e.onNewEventModalOpen}>
2221
2221
  ${Jy} New Event
2222
2222
  </button>
2223
2223
  </div>
2224
- `}function tv(e){return e.jobs.length===0?h`<div class="muted" style="padding: 20px 0;">No events yet. Create one to get started.</div>`:h`
2224
+ `}function tv(e){return e.jobs.length===0?p`<div class="muted" style="padding: 20px 0;">No events yet. Create one to get started.</div>`:p`
2225
2225
  <div class="event-grid">
2226
2226
  ${e.jobs.map(t=>nv(t,e))}
2227
2227
  </div>
2228
- `}function nv(e,t){return h`
2228
+ `}function nv(e,t){return p`
2229
2229
  <div
2230
2230
  class="event-card ${e.enabled?"":"disabled"}"
2231
2231
  @click=${()=>t.onDetailOpen(e)}
@@ -2236,12 +2236,12 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2236
2236
  ${e.enabled?"On":"Off"}
2237
2237
  </span>
2238
2238
  </div>
2239
- <div class="event-card__schedule">${tu(e)}</div>
2240
- ${e.agentId?h`<div class="event-card__agent">${Yy(e.agentId)}</div>`:k}
2241
- ${Ra(e)?h`<div class="event-card__agent muted" style="font-size: 11px;">\u2192 ${Ra(e)}</div>`:k}
2239
+ <div class="event-card__schedule">${nu(e)}</div>
2240
+ ${e.agentId?p`<div class="event-card__agent">${Yy(e.agentId)}</div>`:k}
2241
+ ${Ra(e)?p`<div class="event-card__agent muted" style="font-size: 11px;">\u2192 ${Ra(e)}</div>`:k}
2242
2242
  <div class="event-card__footer">
2243
2243
  <div class="event-card__status">
2244
- <span class="muted" style="font-size: 11px;">${eu(e)}</span>
2244
+ <span class="muted" style="font-size: 11px;">${tu(e)}</span>
2245
2245
  </div>
2246
2246
  <div class="event-card__actions" @click=${n=>n.stopPropagation()}>
2247
2247
  <button
@@ -2271,13 +2271,13 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2271
2271
  </div>
2272
2272
  </div>
2273
2273
  </div>
2274
- `}function iv(e){const t=Gy(e);return h`
2274
+ `}function iv(e){const t=Gy(e);return p`
2275
2275
  <div class="event-modal-overlay" @click=${e.onNewEventModalClose}>
2276
2276
  <div class="event-modal" @click=${n=>n.stopPropagation()}>
2277
2277
  <div class="event-modal__header">
2278
2278
  <div class="event-modal__title">New Event</div>
2279
2279
  <button class="event-modal__close" @click=${e.onNewEventModalClose}>
2280
- ${nu}
2280
+ ${iu}
2281
2281
  </button>
2282
2282
  </div>
2283
2283
 
@@ -2305,7 +2305,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2305
2305
  @change=${n=>e.onFormChange({agentId:n.target.value})}
2306
2306
  >
2307
2307
  <option value="">Default</option>
2308
- ${e.agentIds.map(n=>h`<option value=${n}>${n}</option>`)}
2308
+ ${e.agentIds.map(n=>p`<option value=${n}>${n}</option>`)}
2309
2309
  </select>
2310
2310
  </label>
2311
2311
  <label class="field checkbox">
@@ -2374,7 +2374,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2374
2374
  ></textarea>
2375
2375
  </label>
2376
2376
 
2377
- ${e.form.payloadKind==="agentTurn"?h`
2377
+ ${e.form.payloadKind==="agentTurn"?p`
2378
2378
  <div class="form-grid" style="margin-top: 12px;">
2379
2379
  <label class="field checkbox">
2380
2380
  <span>Deliver response</span>
@@ -2390,7 +2390,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2390
2390
  .value=${e.form.channel||"last"}
2391
2391
  @change=${n=>e.onFormChange({channel:n.target.value})}
2392
2392
  >
2393
- ${t.map(n=>h`<option value=${n}>
2393
+ ${t.map(n=>p`<option value=${n}>
2394
2394
  ${Qy(e,n)}
2395
2395
  </option>`)}
2396
2396
  </select>
@@ -2410,7 +2410,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2410
2410
  @input=${n=>e.onFormChange({timeoutSeconds:n.target.value})}
2411
2411
  />
2412
2412
  </label>
2413
- ${e.form.sessionTarget==="isolated"?h`
2413
+ ${e.form.sessionTarget==="isolated"?p`
2414
2414
  <label class="field">
2415
2415
  <span>Summary prefix</span>
2416
2416
  <input
@@ -2430,7 +2430,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2430
2430
  </div>
2431
2431
  </div>
2432
2432
  </div>
2433
- `}function sv(e){const t=e.form;return t.scheduleKind==="at"?h`
2433
+ `}function sv(e){const t=e.form;return t.scheduleKind==="at"?p`
2434
2434
  <label class="field" style="margin-top: 12px;">
2435
2435
  <span>Run at</span>
2436
2436
  <input
@@ -2439,7 +2439,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2439
2439
  @input=${n=>e.onFormChange({scheduleAt:n.target.value})}
2440
2440
  />
2441
2441
  </label>
2442
- `:t.scheduleKind==="every"?h`
2442
+ `:t.scheduleKind==="every"?p`
2443
2443
  <div class="form-grid" style="margin-top: 12px;">
2444
2444
  <label class="field">
2445
2445
  <span>Repeat every</span>
@@ -2460,7 +2460,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2460
2460
  </select>
2461
2461
  </label>
2462
2462
  </div>
2463
- `:h`
2463
+ `:p`
2464
2464
  <div class="form-grid" style="margin-top: 12px;">
2465
2465
  <label class="field">
2466
2466
  <span>Cron expression</span>
@@ -2479,17 +2479,17 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2479
2479
  />
2480
2480
  </label>
2481
2481
  </div>
2482
- `}function rv(e,t){var n;return h`
2482
+ `}function rv(e,t){var n;return p`
2483
2483
  <div class="event-modal-overlay" @click=${t.onDetailClose}>
2484
2484
  <div class="event-modal" @click=${i=>i.stopPropagation()}>
2485
2485
  <div class="event-modal__header">
2486
2486
  <div class="event-modal__title">${e.name||"Untitled Event"}</div>
2487
2487
  <button class="event-modal__close" @click=${t.onDetailClose}>
2488
- ${nu}
2488
+ ${iu}
2489
2489
  </button>
2490
2490
  </div>
2491
2491
 
2492
- ${e.description?h`<div style="color: var(--muted); font-size: 13px; margin-bottom: 16px;">${e.description}</div>`:k}
2492
+ ${e.description?p`<div style="color: var(--muted); font-size: 13px; margin-bottom: 16px;">${e.description}</div>`:k}
2493
2493
 
2494
2494
  <div class="event-detail-section">
2495
2495
  <div class="event-detail-row">
@@ -2502,9 +2502,9 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2502
2502
  </div>
2503
2503
  <div class="event-detail-row">
2504
2504
  <span class="event-detail-label">Schedule</span>
2505
- <span class="event-detail-value">${tu(e)}</span>
2505
+ <span class="event-detail-value">${nu(e)}</span>
2506
2506
  </div>
2507
- ${e.agentId?h`
2507
+ ${e.agentId?p`
2508
2508
  <div class="event-detail-row">
2509
2509
  <span class="event-detail-label">Agent</span>
2510
2510
  <span class="event-detail-value mono">${e.agentId}</span>
@@ -2526,19 +2526,19 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2526
2526
  <span class="event-detail-label">Action</span>
2527
2527
  <span class="event-detail-value" style="text-align: left; white-space: pre-wrap; font-size: 12px; color: var(--muted); line-height: 1.5;">${Vy(e,!1)}</span>
2528
2528
  </div>
2529
- ${e.payload.kind==="agentTurn"&&e.payload.to?h`
2529
+ ${e.payload.kind==="agentTurn"&&e.payload.to?p`
2530
2530
  <div class="event-detail-row">
2531
2531
  <span class="event-detail-label">Send to</span>
2532
2532
  <span class="event-detail-value mono">${e.payload.to}</span>
2533
2533
  </div>
2534
2534
  `:k}
2535
- ${e.payload.kind==="agentTurn"&&(e.payload.channel??e.payload.provider)?h`
2535
+ ${e.payload.kind==="agentTurn"&&(e.payload.channel??e.payload.provider)?p`
2536
2536
  <div class="event-detail-row">
2537
2537
  <span class="event-detail-label">Channel</span>
2538
2538
  <span class="event-detail-value">${e.payload.channel??e.payload.provider}</span>
2539
2539
  </div>
2540
2540
  `:k}
2541
- ${e.payload.kind==="agentTurn"?h`
2541
+ ${e.payload.kind==="agentTurn"?p`
2542
2542
  <div class="event-detail-row">
2543
2543
  <span class="event-detail-label">Auto-deliver</span>
2544
2544
  <span class="event-detail-value">${e.payload.deliver?"Yes":"No"}</span>
@@ -2549,9 +2549,9 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2549
2549
  <div class="event-detail-section">
2550
2550
  <div class="event-detail-row">
2551
2551
  <span class="event-detail-label">Last run</span>
2552
- <span class="event-detail-value">${eu(e)}</span>
2552
+ <span class="event-detail-value">${tu(e)}</span>
2553
2553
  </div>
2554
- ${(n=e.state)!=null&&n.nextRunAtMs?h`
2554
+ ${(n=e.state)!=null&&n.nextRunAtMs?p`
2555
2555
  <div class="event-detail-row">
2556
2556
  <span class="event-detail-label">Next run</span>
2557
2557
  <span class="event-detail-value">${Hy(e.state.nextRunAtMs)}</span>
@@ -2563,7 +2563,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2563
2563
  <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px;">
2564
2564
  <span class="event-detail-label" style="font-size: 14px;">Recent Activity</span>
2565
2565
  </div>
2566
- ${t.runs.length===0?h`<div class="muted" style="font-size: 13px;">No runs recorded yet.</div>`:h`
2566
+ ${t.runs.length===0?p`<div class="muted" style="font-size: 13px;">No runs recorded yet.</div>`:p`
2567
2567
  <div class="list">
2568
2568
  ${[...t.runs].sort((i,s)=>s.ts-i.ts).map(i=>av(i))}
2569
2569
  </div>
@@ -2595,24 +2595,24 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2595
2595
  </div>
2596
2596
  </div>
2597
2597
  </div>
2598
- `}function ov(e){const t=e.toLowerCase();return t==="ok"||t==="success"?"chip chip-ok":t==="error"||t==="fail"||t==="failed"?"chip chip-warn":"chip"}function av(e){return h`
2598
+ `}function ov(e){const t=e.toLowerCase();return t==="ok"||t==="success"?"chip chip-ok":t==="error"||t==="fail"||t==="failed"?"chip chip-warn":"chip"}function av(e){return p`
2599
2599
  <div class="list-item" style="grid-template-columns: 1fr; gap: 6px;">
2600
2600
  <div style="display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
2601
2601
  <span class=${ov(e.status)} style="font-size: 11px; padding: 2px 8px;">
2602
2602
  ${e.status}
2603
2603
  </span>
2604
2604
  <span class="muted" style="font-size: 12px;">${wi(e.ts)}</span>
2605
- <span class="muted" style="font-size: 12px;">${ul(e.durationMs)}</span>
2605
+ <span class="muted" style="font-size: 12px;">${dl(e.durationMs)}</span>
2606
2606
  </div>
2607
- ${e.summary?h`<div class="muted" style="font-size: 12px;">${e.summary}</div>`:k}
2608
- ${e.error?h`
2607
+ ${e.summary?p`<div class="muted" style="font-size: 12px;">${e.summary}</div>`:k}
2608
+ ${e.error?p`
2609
2609
  <details style="margin-top: 2px;">
2610
2610
  <summary class="muted" style="cursor: pointer; font-size: 12px;">Error details</summary>
2611
2611
  <div class="muted" style="margin-top: 4px; white-space: pre-wrap; font-size: 12px;">${e.error}</div>
2612
2612
  </details>
2613
2613
  `:k}
2614
2614
  </div>
2615
- `}function lv(e){var s;const t=((s=e.report)==null?void 0:s.skills)??[],n=e.filter.trim().toLowerCase(),i=n?t.filter(r=>[r.name,r.description,r.source].join(" ").toLowerCase().includes(n)):t;return h`
2615
+ `}function lv(e){var s;const t=((s=e.report)==null?void 0:s.skills)??[],n=e.filter.trim().toLowerCase(),i=n?t.filter(r=>[r.name,r.description,r.source].join(" ").toLowerCase().includes(n)):t;return p`
2616
2616
  <section class="card">
2617
2617
  <div class="row" style="justify-content: space-between;">
2618
2618
  <div>
@@ -2636,15 +2636,15 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2636
2636
  <div class="muted">${i.length} shown</div>
2637
2637
  </div>
2638
2638
 
2639
- ${e.error?h`<div class="callout danger" style="margin-top: 12px;">${e.error}</div>`:k}
2639
+ ${e.error?p`<div class="callout danger" style="margin-top: 12px;">${e.error}</div>`:k}
2640
2640
 
2641
- ${i.length===0?h`<div class="muted" style="margin-top: 16px;">No skills found.</div>`:h`
2641
+ ${i.length===0?p`<div class="muted" style="margin-top: 16px;">No skills found.</div>`:p`
2642
2642
  <div class="list" style="margin-top: 16px;">
2643
2643
  ${i.map(r=>cv(r,e))}
2644
2644
  </div>
2645
2645
  `}
2646
2646
  </section>
2647
- `}function cv(e,t){const n=t.busyKey===e.skillKey,i=t.edits[e.skillKey]??"",s=t.messages[e.skillKey]??null,r=e.install.length>0&&e.missing.bins.length>0,o=[...e.missing.bins.map(l=>`bin:${l}`),...e.missing.env.map(l=>`env:${l}`),...e.missing.config.map(l=>`config:${l}`),...e.missing.os.map(l=>`os:${l}`)],a=[];return e.disabled&&a.push("disabled"),e.blockedByAllowlist&&a.push("blocked by allowlist"),h`
2647
+ `}function cv(e,t){const n=t.busyKey===e.skillKey,i=t.edits[e.skillKey]??"",s=t.messages[e.skillKey]??null,r=e.install.length>0&&e.missing.bins.length>0,o=[...e.missing.bins.map(c=>`bin:${c}`),...e.missing.env.map(c=>`env:${c}`),...e.missing.config.map(c=>`config:${c}`),...e.missing.os.map(c=>`os:${c}`)],a=[];return e.disabled&&a.push("disabled"),e.blockedByAllowlist&&a.push("blocked by allowlist"),p`
2648
2648
  <div class="list-item">
2649
2649
  <div class="list-main">
2650
2650
  <div class="list-title">
@@ -2656,14 +2656,14 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2656
2656
  <span class="chip ${e.eligible?"chip-ok":"chip-warn"}">
2657
2657
  ${e.eligible?"eligible":"blocked"}
2658
2658
  </span>
2659
- ${e.disabled?h`<span class="chip chip-warn">disabled</span>`:k}
2659
+ ${e.disabled?p`<span class="chip chip-warn">disabled</span>`:k}
2660
2660
  </div>
2661
- ${o.length>0?h`
2661
+ ${o.length>0?p`
2662
2662
  <div class="muted" style="margin-top: 6px;">
2663
2663
  Missing: ${o.join(", ")}
2664
2664
  </div>
2665
2665
  `:k}
2666
- ${a.length>0?h`
2666
+ ${a.length>0?p`
2667
2667
  <div class="muted" style="margin-top: 6px;">
2668
2668
  Reason: ${a.join(", ")}
2669
2669
  </div>
@@ -2678,7 +2678,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2678
2678
  >
2679
2679
  ${e.disabled?"Enable":"Disable"}
2680
2680
  </button>
2681
- ${r?h`<button
2681
+ ${r?p`<button
2682
2682
  class="btn"
2683
2683
  ?disabled=${n}
2684
2684
  @click=${()=>t.onInstall(e.skillKey,e.name,e.install[0].id)}
@@ -2686,19 +2686,19 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2686
2686
  ${n?"Installing…":e.install[0].label}
2687
2687
  </button>`:k}
2688
2688
  </div>
2689
- ${s?h`<div
2689
+ ${s?p`<div
2690
2690
  class="muted"
2691
2691
  style="margin-top: 8px; color: ${s.kind==="error"?"var(--danger-color, #d14343)":"var(--success-color, #0a7f5a)"};"
2692
2692
  >
2693
2693
  ${s.message}
2694
2694
  </div>`:k}
2695
- ${e.primaryEnv?h`
2695
+ ${e.primaryEnv?p`
2696
2696
  <div class="field" style="margin-top: 10px;">
2697
2697
  <span>API key</span>
2698
2698
  <input
2699
2699
  type="password"
2700
2700
  .value=${i}
2701
- @input=${l=>t.onEdit(e.skillKey,l.target.value)}
2701
+ @input=${c=>t.onEdit(e.skillKey,c.target.value)}
2702
2702
  />
2703
2703
  </div>
2704
2704
  <button
@@ -2712,7 +2712,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2712
2712
  `:k}
2713
2713
  </div>
2714
2714
  </div>
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`
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 p`
2716
2716
  <div>
2717
2717
  <div class="filters" style="margin-top: 14px;">
2718
2718
  <label class="field" style="min-width: 220px;">
@@ -2726,7 +2726,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2726
2726
  </div>
2727
2727
 
2728
2728
  <div class="chip-row" style="margin-top: 12px;">
2729
- ${Oa.map(i=>h`
2729
+ ${Oa.map(i=>p`
2730
2730
  <label class="chip session-log-chip ${i}">
2731
2731
  <input
2732
2732
  type="checkbox"
@@ -2739,7 +2739,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2739
2739
  </div>
2740
2740
 
2741
2741
  <div class="chip-row" style="margin-top: 8px; align-items: center;">
2742
- ${e.agents.map(i=>h`
2742
+ ${e.agents.map(i=>p`
2743
2743
  <label class="chip agent-chip">
2744
2744
  <input
2745
2745
  type="checkbox"
@@ -2759,25 +2759,25 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2759
2759
  </label>
2760
2760
  </div>
2761
2761
 
2762
- ${e.error?h`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
2762
+ ${e.error?p`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
2763
2763
 
2764
2764
  <div class="log-stream" style="margin-top: 12px;" @scroll=${e.onScroll}>
2765
- ${n.length===0?h`<div class="muted" style="padding: 12px;">No session log entries.</div>`:n.map(i=>h`
2765
+ ${n.length===0?p`<div class="muted" style="padding: 12px;">No session log entries.</div>`:n.map(i=>p`
2766
2766
  <div class="log-row session-entry ${i.type}">
2767
2767
  <div class="log-row-header">
2768
2768
  <span class="log-time mono">${uv(i.timestamp)}</span>
2769
2769
  <span class="session-log-type ${i.type}">${Ba[i.type]}</span>
2770
2770
  <span class="log-subsystem mono">${i.agentId}</span>
2771
2771
  <span class="session-label mono">${dv(i.sessionKey)}</span>
2772
- ${i.toolName?h`<span class="session-tool mono">${i.toolName}</span>`:k}
2773
- ${i.model?h`<span class="session-model mono">${i.model}</span>`:k}
2772
+ ${i.toolName?p`<span class="session-tool mono">${i.toolName}</span>`:k}
2773
+ ${i.model?p`<span class="session-model mono">${i.model}</span>`:k}
2774
2774
  </div>
2775
2775
  <div class="log-message mono">${hv(i.content)}</div>
2776
2776
  </div>
2777
2777
  `)}
2778
2778
  </div>
2779
2779
  </div>
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`
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 su(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function mv(e){return p`
2781
2781
  <section class="card">
2782
2782
  <div class="row" style="justify-content: space-between;">
2783
2783
  <div>
@@ -2785,18 +2785,18 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2785
2785
  <div class="card-sub">Session transcripts and system logs.</div>
2786
2786
  </div>
2787
2787
  <div class="row" style="gap: 8px;">
2788
- ${e.logsSubTab==="system"?h`
2788
+ ${e.logsSubTab==="system"?p`
2789
2789
  <button class="btn" ?disabled=${e.loading} @click=${e.onRefresh}>
2790
2790
  ${e.loading?"Loading…":"Refresh"}
2791
2791
  </button>
2792
2792
  <button
2793
2793
  class="btn"
2794
2794
  ?disabled=${e.entries.length===0}
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)}}
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:su(r,t)),s=t||n?"filtered":"visible";e.onExport(i.map(r=>r.raw),s)}}
2796
2796
  >
2797
2797
  Export
2798
2798
  </button>
2799
- `:h`
2799
+ `:p`
2800
2800
  <button class="btn" ?disabled=${e.sessionLogsProps.loading} @click=${e.sessionLogsProps.onRefresh}>
2801
2801
  ${e.sessionLogsProps.loading?"Loading…":"Refresh"}
2802
2802
  </button>
@@ -2824,7 +2824,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2824
2824
 
2825
2825
  ${e.logsSubTab==="session"?fv(e.sessionLogsProps):yv(e)}
2826
2826
  </section>
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`
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:su(i,t));return p`
2828
2828
  <div class="filters" style="margin-top: 14px;">
2829
2829
  <label class="field" style="min-width: 220px;">
2830
2830
  <span>Filter</span>
@@ -2845,7 +2845,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2845
2845
  </div>
2846
2846
 
2847
2847
  <div class="chip-row" style="margin-top: 12px;">
2848
- ${qs.map(i=>h`
2848
+ ${qs.map(i=>p`
2849
2849
  <label class="chip log-chip ${i}">
2850
2850
  <input
2851
2851
  type="checkbox"
@@ -2857,14 +2857,14 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2857
2857
  `)}
2858
2858
  </div>
2859
2859
 
2860
- ${e.file?h`<div class="muted" style="margin-top: 10px;">File: ${e.file}</div>`:k}
2861
- ${e.truncated?h`<div class="callout" style="margin-top: 10px;">
2860
+ ${e.file?p`<div class="muted" style="margin-top: 10px;">File: ${e.file}</div>`:k}
2861
+ ${e.truncated?p`<div class="callout" style="margin-top: 10px;">
2862
2862
  Log output truncated; showing latest chunk.
2863
2863
  </div>`:k}
2864
- ${e.error?h`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
2864
+ ${e.error?p`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
2865
2865
 
2866
2866
  <div class="log-stream" style="margin-top: 12px;" @scroll=${e.onScroll}>
2867
- ${n.length===0?h`<div class="muted" style="padding: 12px;">No log entries.</div>`:[...n].reverse().map(i=>h`
2867
+ ${n.length===0?p`<div class="muted" style="padding: 12px;">No log entries.</div>`:[...n].reverse().map(i=>p`
2868
2868
  <div class="log-row">
2869
2869
  <div class="log-row-header">
2870
2870
  <span class="log-time mono">${gv(i.time)}</span>
@@ -2875,13 +2875,13 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2875
2875
  </div>
2876
2876
  `)}
2877
2877
  </div>
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`
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?p`
2879
2879
  <div class="setup-container">
2880
- ${ut("Advanced",e.wsProps)}
2880
+ ${pt("Advanced",e.wsProps)}
2881
2881
  <div class="setup-card sp-card-advanced" style="text-align: left;">
2882
2882
  <h1>Advanced</h1>
2883
2883
  <div class="sp-tabs">
2884
- ${vv.map(t=>h`
2884
+ ${vv.map(t=>p`
2885
2885
  <button
2886
2886
  class="sp-tab ${e.activeTab===t.id?"active":""}"
2887
2887
  @click=${()=>e.onTabChange(t.id)}
@@ -2893,33 +2893,33 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2893
2893
  ${bv(e)}
2894
2894
  </div>
2895
2895
  </div>
2896
- `:h`
2896
+ `:p`
2897
2897
  <div class="setup-container">
2898
2898
  <div class="setup-card">
2899
2899
  <div class="setup-spinner"></div>
2900
2900
  <p>Connecting to gateway...</p>
2901
2901
  </div>
2902
2902
  </div>
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`
2903
+ `}function Fa(e){if(!e.show)return k;const t=qe(),n=e.isFirstTime,i=e.changePinMode===!0&&!n,s=e.changePinBusy===!0;let r=e.accounts.length>0?e.accounts[0].id:"";const o=h=>{var y;r=h.target.value;const v=(y=h.target.closest(".login-card"))==null?void 0:y.querySelector(".login-change-pin");v&&(v.style.display=r==="__master__"?"":"none")},a=h=>v=>{const y=v.target;y.value=y.value.replace(/\D/g,"").slice(0,6),h(y.value)},c=!n&&e.accounts.length>1?p`
2904
2904
  <select
2905
2905
  class="login-account-select"
2906
2906
  @change=${o}
2907
2907
  ?disabled=${e.busy||s}
2908
2908
  >
2909
- ${e.accounts.map((u,p)=>h`
2910
- <option value=${u.id} ?selected=${p===0}>
2911
- ${u.displayName}
2909
+ ${e.accounts.map((h,v)=>p`
2910
+ <option value=${h.id} ?selected=${v===0}>
2911
+ ${h.displayName}
2912
2912
  </option>
2913
2913
  `)}
2914
2914
  </select>
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`
2915
+ `:k;if(i){let h="",v="",y="";const b=S=>{var x;S.preventDefault(),!s&&(!h||!v||!y||v===y&&r&&((x=e.onChangePin)==null||x.call(e,r,h,v)))};return p`
2916
2916
  <div class="login-overlay">
2917
2917
  <div class="login-card">
2918
2918
  <img class="login-logo" src="${t.iconUrl}" alt="${t.name}" />
2919
2919
  <h2 class="login-title">Change PIN</h2>
2920
2920
  <p class="login-subtitle">Enter your current PIN, then choose a new one</p>
2921
- <form class="login-form" @submit=${w}>
2922
- ${l}
2921
+ <form class="login-form" @submit=${b}>
2922
+ ${c}
2923
2923
  <input
2924
2924
  class="login-pin-input"
2925
2925
  type="password"
@@ -2929,7 +2929,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2929
2929
  maxlength="6"
2930
2930
  placeholder="Current PIN"
2931
2931
  ?disabled=${s}
2932
- @input=${a(S=>{u=S})}
2932
+ @input=${a(S=>{h=S})}
2933
2933
  autofocus
2934
2934
  />
2935
2935
  <input
@@ -2941,7 +2941,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2941
2941
  maxlength="6"
2942
2942
  placeholder="New PIN (4-6 digits)"
2943
2943
  ?disabled=${s}
2944
- @input=${a(S=>{p=S})}
2944
+ @input=${a(S=>{v=S})}
2945
2945
  />
2946
2946
  <input
2947
2947
  class="login-pin-input"
@@ -2952,26 +2952,26 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2952
2952
  maxlength="6"
2953
2953
  placeholder="Confirm new PIN"
2954
2954
  ?disabled=${s}
2955
- @input=${a(S=>{b=S})}
2955
+ @input=${a(S=>{y=S})}
2956
2956
  />
2957
- ${e.changePinError?h`<p class="login-error">${e.changePinError}</p>`:k}
2958
- ${e.changePinSuccess?h`<p class="login-success">${e.changePinSuccess}</p>`:k}
2957
+ ${e.changePinError?p`<p class="login-error">${e.changePinError}</p>`:k}
2958
+ ${e.changePinSuccess?p`<p class="login-success">${e.changePinSuccess}</p>`:k}
2959
2959
  <button
2960
2960
  class="login-submit"
2961
2961
  type="submit"
2962
2962
  ?disabled=${s}
2963
- >${s?h`<span class="login-spinner"></span>`:"Change PIN"}</button>
2963
+ >${s?p`<span class="login-spinner"></span>`:"Change PIN"}</button>
2964
2964
  </form>
2965
2965
  <p class="login-hint" style="margin-top: 16px;">
2966
2966
  <a
2967
2967
  class="login-link"
2968
2968
  href="#"
2969
- @click=${S=>{var C;S.preventDefault(),(C=e.onToggleChangePinMode)==null||C.call(e)}}
2969
+ @click=${S=>{var x;S.preventDefault(),(x=e.onToggleChangePinMode)==null||x.call(e)}}
2970
2970
  >Back to login</a>
2971
2971
  </p>
2972
2972
  </div>
2973
2973
  </div>
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`
2974
+ `}let u="",l="";const d=h=>{if(h.preventDefault(),!e.busy)if(n){if(!u||!l||u!==l)return;e.onSubmit(u)}else{if(!u||!r)return;e.onSubmit(r,u)}};return p`
2975
2975
  <div class="login-overlay">
2976
2976
  <div class="login-card">
2977
2977
  <img class="login-logo" src="${t.iconUrl}" alt="${t.name}" />
@@ -2979,8 +2979,8 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2979
2979
  <p class="login-subtitle">
2980
2980
  ${n?"Set a PIN to protect this device":"Enter your PIN to continue"}
2981
2981
  </p>
2982
- <form class="login-form" @submit=${f}>
2983
- ${l}
2982
+ <form class="login-form" @submit=${d}>
2983
+ ${c}
2984
2984
  <input
2985
2985
  class="login-pin-input"
2986
2986
  type="password"
@@ -2990,10 +2990,10 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2990
2990
  maxlength="6"
2991
2991
  placeholder="${n?"Choose a 4-6 digit PIN":"PIN"}"
2992
2992
  ?disabled=${e.busy}
2993
- @input=${a(u=>{c=u})}
2993
+ @input=${a(h=>{u=h})}
2994
2994
  autofocus
2995
2995
  />
2996
- ${n?h`
2996
+ ${n?p`
2997
2997
  <input
2998
2998
  class="login-pin-input"
2999
2999
  type="password"
@@ -3003,44 +3003,44 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3003
3003
  maxlength="6"
3004
3004
  placeholder="Confirm PIN"
3005
3005
  ?disabled=${e.busy}
3006
- @input=${a(u=>{d=u})}
3006
+ @input=${a(h=>{l=h})}
3007
3007
  />
3008
3008
  `:k}
3009
- ${e.error?h`<p class="login-error">${e.error}</p>`:k}
3009
+ ${e.error?p`<p class="login-error">${e.error}</p>`:k}
3010
3010
  <button
3011
3011
  class="login-submit"
3012
3012
  type="submit"
3013
3013
  ?disabled=${e.busy}
3014
3014
  >
3015
- ${e.busy?h`<span class="login-spinner"></span>`:n?"Set PIN":"Unlock"}
3015
+ ${e.busy?p`<span class="login-spinner"></span>`:n?"Set PIN":"Unlock"}
3016
3016
  </button>
3017
3017
  </form>
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;":""}">
3018
+ ${n?p`<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(h=>h.id==="__master__")?p`<p class="login-hint login-change-pin" style="margin-top: 16px;${r!=="__master__"?" display: none;":""}">
3019
3019
  <a
3020
3020
  class="login-link"
3021
3021
  href="#"
3022
- @click=${u=>{var p;u.preventDefault(),(p=e.onToggleChangePinMode)==null||p.call(e)}}
3022
+ @click=${h=>{var v;h.preventDefault(),(v=e.onToggleChangePinMode)==null||v.call(e)}}
3023
3023
  >Change PIN</a>
3024
3024
  </p>`:k}
3025
3025
  </div>
3026
3026
  </div>
3027
- `}function kv(e){if(!e.connected)return h`
3027
+ `}function kv(e){if(!e.connected)return p`
3028
3028
  <div class="setup-container">
3029
3029
  <div class="setup-card">
3030
3030
  <div class="setup-spinner"></div>
3031
3031
  <p>Connecting...</p>
3032
3032
  </div>
3033
3033
  </div>
3034
- `;const t={...e,sessions:null,focusMode:!1,showThinking:!1,thinkingLevel:null,publicMode:!0,onToggleFocusMode:()=>{},onSessionKeyChange:()=>{},onNewSession:()=>{}},n=e.assistantName||"Assistant";return h`
3034
+ `;const t={...e,sessions:null,focusMode:!1,showThinking:!1,thinkingLevel:null,publicMode:!0,onToggleFocusMode:()=>{},onSessionKeyChange:()=>{},onNewSession:()=>{}},n=e.assistantName||"Assistant";return p`
3035
3035
  <div class="setup-container setup-container--full public-chat-page">
3036
3036
  <div class="public-chat-header">
3037
3037
  <span class="public-chat-header__name">${n}</span>
3038
3038
  </div>
3039
3039
  <div class="chat-viewport">
3040
- ${Jc(t)}
3040
+ ${eu(t)}
3041
3041
  </div>
3042
3042
  </div>
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`
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 bn(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 c=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await bn(e),(s=t.onCreated)==null||s.call(t,c)}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 bn(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 bn(e)}catch(i){e.workspacesError=String(i)}}}const jn=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:Av,loadWorkspaces:bn,removeWorkspace:xv,renameWorkspace:$v},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"},Ua=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 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 d;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 h=(d=Lp({deviceId:r.deviceId,role:t}))==null?void 0:d.token;a=h??this.opts.token,o=!!(h&&this.opts.token)}const c=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let u;if(s&&r){const h=Date.now(),v=this.connectNonce??void 0,y=Ev({deviceId:r.deviceId,clientId:this.opts.clientName??Ua.CONTROL_UI,clientMode:this.opts.mode??Vs.WEBCHAT,role:t,scopes:n,signedAtMs:h,token:a??null,nonce:v}),b=await Mp(r.privateKey,y);u={id:r.deviceId,publicKey:r.publicKey,signature:b,signedAt:h,nonce:v}}const l={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:u,caps:[],auth:c,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",l).then(h=>{var v,y,b;(v=h==null?void 0:h.auth)!=null&&v.deviceToken&&r&&Ip({deviceId:r.deviceId,role:h.auth.role??t,token:h.auth.deviceToken,scopes:h.auth.scopes??[]}),this.backoffMs=800,(b=(y=this.opts).onHello)==null||b.call(y,h)}).catch(()=>{var h;o&&r&&Rp({deviceId:r.deviceId,role:t}),(h=this.ws)==null||h.close(Cv,"connect failed")})}handleMessage(t){var s,r,o,a,c;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const u=n;if(u.event==="connect.challenge"){const d=u.payload,h=d&&typeof d.nonce=="string"?d.nonce:null;h&&(this.connectNonce=h,this.sendConnect());return}const l=typeof u.seq=="number"?u.seq:null;l!==null&&(this.lastSeq!==null&&l>this.lastSeq+1&&((r=(s=this.opts).onGap)==null||r.call(s,{expected:this.lastSeq+1,received:l})),this.lastSeq=l);try{(a=(o=this.opts).onEvent)==null||a.call(o,u)}catch(d){console.error("[gateway] event handler error:",d)}return}if(i.type==="res"){const u=n,l=this.pending.get(u.id);if(!l)return;this.pending.delete(u.id),u.ok?l.resolve(u.payload):l.reject(new Error(((c=u.error)==null?void 0:c.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:c=>o(c),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 Wa(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 ln(){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,ln().detach()}function Bv(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,ln().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 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(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")cn(),e.updateMessage=r.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw cn(),new Error(r.result.reason||"Update failed")}catch(r){cn(),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,c=t.total;e.updateMessage=`Updating: ${o} (${a+1}/${c})`;const u=e.updateProgressSteps.find(l=>l.index===a);u?(u.status="running",u.name=o):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:c,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const o=t.name,a=t.index,c=t.total,u=t.ok,l=t.durationMs,d=e.updateProgressSteps.find(v=>v.index===a);d?(d.status=u?"done":"failed",d.durationMs=l):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:c,status:u?"done":"failed",durationMs:l}];const h=!u&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=u?`Updating: ${o} done (${a+1}/${c})`:`Update step failed: ${o}${h}`,(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,cn()}(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();cn();try{const o=await e.client.request("update.lastResult",{});if(!o.ok||!o.result)return;const a=5*6e4,c=Date.now()-o.result.ts<a;if(!t&&!c||Vv(o.result.ts))return;e.updateLastResult=o.result;const u=(n=o.result.after)==null?void 0:n.version;if(o.result.status==="ok"&&u&&(e.currentVersion=u),e.updateAvailable=!1,o.result.status==="ok"){const l=(i=o.result.before)==null?void 0:i.version,d=u??o.result.currentVersion;e.updateMessage=l?`Updated: v${l} → v${d}`:`Updated to v${d}`}else{const l=o.result.reason??((s=o.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${l}`}}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 cn(){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,c,u;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((c=t.mainKey)==null?void 0:c.trim())||"main",r=(u=t.defaultAgentId)==null?void 0:u.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&&ze(e,o)}function Ee(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(()=>{au(e)}),Qs(e),Sv(e),(e.chatPage||e.setup)&&Xv(e),pr(e,{quiet:!0}),dr(e,{quiet:!0}),bn(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),(e.setup||e.chatPage)&&_e(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&&ic(e,n.sessionKey);const i=bl(e,n);(i==="final"||i==="error"||i==="aborted")&&(ir(e),Ah(e)),i==="final"&&Te(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 lu(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=lu((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",Te(e))}catch(s){console.error("[public-chat] failed to resolve anonymous session:",s),e.lastError="Failed to start chat session"}}let we=!1,ce=null,Lt="",mi="";function cu(){we=!1,ce=null,Lt="",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,accountId:e.accountId});n!=null&&n.sessionKey&&e.onAuthenticated(n.sessionKey)}catch(n){ce=n instanceof Error?n.message:"Failed to start session"}}async function Ha(e){if(!e.client||we)return;const t=Lt.trim();if(!t){ce="Please enter your phone number";return}we=!0,ce=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"):ce=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){ce=n instanceof Error?n.message:"Failed to send verification code"}finally{we=!1}}async function qa(e,t){if(!(!e.client||we)){if(!t.trim()){ce="Please enter the verification code";return}we=!0,ce=null;try{const n=await e.client.request("public.otp.verify",{phone:Lt.trim(),code:t.trim(),accountId:e.accountId});n!=null&&n.ok&&n.sessionKey?(cu(),e.onAuthenticated(n.sessionKey)):ce=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){ce=n instanceof Error?n.message:"Verification failed"}finally{we=!1}}}function ks(e){return k}function Va(e){return p`
3044
3044
  <div class="public-auth__form">
3045
3045
  <label class="field public-auth__field">
3046
3046
  <span>Your name (optional)</span>
@@ -3055,26 +3055,26 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3055
3055
  <span>WhatsApp number</span>
3056
3056
  <input
3057
3057
  type="tel"
3058
- .value=${Mt}
3059
- @input=${t=>{Mt=t.target.value}}
3058
+ .value=${Lt}
3059
+ @input=${t=>{Lt=t.target.value}}
3060
3060
  @keydown=${t=>{t.key==="Enter"&&(t.preventDefault(),Ha(e))}}
3061
3061
  placeholder="+1234567890"
3062
3062
  required
3063
3063
  />
3064
3064
  </label>
3065
- ${le?h`<div class="public-auth__error">${le}</div>`:k}
3065
+ ${ce?p`<div class="public-auth__error">${ce}</div>`:k}
3066
3066
  <button
3067
3067
  class="btn primary public-auth__btn"
3068
- ?disabled=${ve}
3068
+ ?disabled=${we}
3069
3069
  @click=${()=>{Ha(e)}}
3070
3070
  >
3071
- ${ve?"Sending...":"Send verification code"}
3071
+ ${we?"Sending...":"Send verification code"}
3072
3072
  </button>
3073
3073
  </div>
3074
- `}function Ga(e){let t="";return h`
3074
+ `}function Ga(e){let t="";return p`
3075
3075
  <div class="public-auth__form">
3076
3076
  <p class="public-auth__hint">
3077
- We sent a verification code to <strong>${Mt}</strong> via WhatsApp.
3077
+ We sent a verification code to <strong>${Lt}</strong> via WhatsApp.
3078
3078
  </p>
3079
3079
  <label class="field public-auth__field">
3080
3080
  <span>Verification code</span>
@@ -3088,29 +3088,29 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3088
3088
  required
3089
3089
  />
3090
3090
  </label>
3091
- ${le?h`<div class="public-auth__error">${le}</div>`:k}
3091
+ ${ce?p`<div class="public-auth__error">${ce}</div>`:k}
3092
3092
  <button
3093
3093
  class="btn primary public-auth__btn"
3094
- ?disabled=${ve}
3094
+ ?disabled=${we}
3095
3095
  @click=${()=>{qa(e,t)}}
3096
3096
  >
3097
- ${ve?"Verifying...":"Verify"}
3097
+ ${we?"Verifying...":"Verify"}
3098
3098
  </button>
3099
3099
  <button
3100
3100
  class="btn public-auth__btn public-auth__btn--link"
3101
- @click=${()=>{le=null,e.onAuthStepChange("phone")}}
3101
+ @click=${()=>{ce=null,e.onAuthStepChange("phone")}}
3102
3102
  >
3103
3103
  Use a different number
3104
3104
  </button>
3105
3105
  </div>
3106
- `}function tb(e){const{authMode:t,authStep:n}=e;return t==="anonymous"?h`
3106
+ `}function tb(e){const{authMode:t,authStep:n}=e;return t==="anonymous"?p`
3107
3107
  <div class="setup-container">
3108
3108
  <div class="setup-card">
3109
3109
  <div class="setup-spinner"></div>
3110
3110
  <p>Starting chat...</p>
3111
3111
  </div>
3112
3112
  </div>
3113
- `:t==="verified"?h`
3113
+ `:t==="verified"?p`
3114
3114
  <div class="setup-container">
3115
3115
  <div class="public-auth">
3116
3116
  ${ks()}
@@ -3119,7 +3119,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3119
3119
  ${n==="otp"?Ga(e):Va(e)}
3120
3120
  </div>
3121
3121
  </div>
3122
- `:n==="phone"||n==="otp"?h`
3122
+ `:n==="phone"||n==="otp"?p`
3123
3123
  <div class="setup-container">
3124
3124
  <div class="public-auth">
3125
3125
  ${ks()}
@@ -3128,7 +3128,7 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3128
3128
  ${n==="otp"?Ga(e):Va(e)}
3129
3129
  </div>
3130
3130
  </div>
3131
- `:h`
3131
+ `:p`
3132
3132
  <div class="setup-container">
3133
3133
  <div class="public-auth">
3134
3134
  ${ks()}
@@ -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=${()=>{lu(),e.onAuthStepChange("phone")}}
3146
+ @click=${()=>{cu(),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 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`
3156
+ `}const zr="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(zr)}catch{return null}}function pu(e){try{localStorage.setItem(zr,e)}catch{}}function nb(){try{localStorage.removeItem(zr)}catch{}}async function Qa(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 c=o.peer;if(!c||typeof c!="object"||c.kind!=="dm")continue;const u=c.id??"";u&&i.push({phone:u,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=u=>u===n||u==="management",r=new Map,o=new Map;for(const u of e){if(!u||typeof u!="object"||!s(u.agentId))continue;const l=u.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")continue;const h=l.peer;if(!h||typeof h!="object"||h.kind!=="dm")continue;const v=h.id??"";v&&(u.meta&&r.set(v,u.meta),l.accountId&&o.set(v,l.accountId))}const a=e.filter(u=>{if(!u||typeof u!="object"||!s(u.agentId))return!0;const l=u.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")return!0;const h=l.peer;return!h||typeof h!="object"?!0:h.kind!=="dm"}),c=t.map(u=>{const l=i??o.get(u.phone),d={channel:"whatsapp",peer:{kind:"dm",id:u.phone}};l&&(d.accountId=l);const h={agentId:n,match:d},v=r.get(u.phone);return v?h.meta=v:u.paired&&(h.meta={paired:!0}),h});return[...a,...c]}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=He(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(c=>c.phone===r)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const c=He(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),u=c.bindings??[],l=[...e.adminPhones,{phone:r}],d=hu(u,l,s,i);kl(c,["bindings"],d);const h=(a=e.configSnapshot)==null?void 0:a.hash;if(!h){e.adminsError="Config hash missing; reload and retry.";return}const v=st(c);await e.client.request("config.set",{raw:v,baseHash:h}),await _i(e,n)}catch(c){e.adminsError=String(c)}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(c=>c.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 c=He(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),u=c.bindings??[],l=e.adminPhones.filter(y=>y.phone!==t),d=hu(u,l,s,i);kl(c,["bindings"],d);const h=(a=e.configSnapshot)==null?void 0:a.hash;if(!h){e.adminsError="Config hash missing; reload and retry.";return}const v=st(c);await e.client.request("config.set",{raw:v,baseHash:h}),await _i(e,n)}catch(c){e.adminsError=String(c)}finally{e.adminsSaving=!1}}const lb=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:fu,loadAdmins:_i,removeAdmin:gu},Symbol.toStringTag,{value:"Module"}));async function dt(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 dt(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 dt(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 dt(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 dt(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:dt,setCustomerField:vu},Symbol.toStringTag,{value:"Module"}));function Yt(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=se(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=se(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function hb(e){var n;const t=se(e);if(t)return(n=t.agents[0])==null?void 0:n.id}function fb(e){return e.selectedWorkspace??void 0}function se(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,c;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=cl(e.sessionKey),i=(n==null?void 0:n.agentId)??((c=e.agentsList)==null?void 0:c.defaultId)??"main",s=t.find(u=>u.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 c,u;return((c=a.match)==null?void 0:c.channel)==="imessage"&&((u=a.meta)==null?void 0:u.imessageOwner)});if(!i)return null;const s=i.agentId;for(const a of e.workspaces)if(a.agents.some(c=>c.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(c=>c.isDefault);return(a==null?void 0:a.name)??null}const r=s.replace(/-(admin|public)$/,"");if(r!==s){const a=e.workspaces.find(c=>c.name===r);return(a==null?void 0:a.name)??null}return null}function wb(e){var t,n,i,s,r,o,a,c,u;if(e.embeddingDownloading&&!e.publicChat)return p`
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??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`
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(),ie(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",ie(async()=>{const{loadChatHistory:d}=await Promise.resolve().then(()=>$s);return{loadChatHistory:d}},void 0,import.meta.url).then(({loadChatHistory:d})=>{d(e)})},onAuthStepChange:l=>{e.publicChatAuthStep=l}}):p`
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 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`
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:(d,h)=>{h!=null&&e.handlePinSubmit(d,h)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(d,h,v)=>e.handleChangePin(d,h,v)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return Fa({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:d=>e.handleSetMasterPin(d)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",k}if(e.setup){const l=yb(e.channelsSnapshot),d=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],h=vb(e.channelsSnapshot),v=bb(e);return tf({connected:e.connected,serverPlatform:((s=(i=e.hello)==null?void 0:i.server)==null?void 0:s.platform)??null,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:y=>e.handleLicenseKeyChange(y),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:d,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:y=>e.handleUninstallConfirmTextChange(y),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:y=>e.handleAuthSubmitCode(y),onAuthCodeChange:y=>e.handleAuthCodeChange(y),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async y=>{await e.handleWhatsAppStart(!0,y),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(y),await V(e,!0),e.requestUpdate())},onWhatsAppReset:async y=>{await e.handleWhatsAppLogout(y),await e.handleWhatsAppStart(!0,y),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(y),await V(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await V(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),V(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:y=>e.handleRemoveWhatsAppAccount(y),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:y=>{e.newWorkspacePin=y},onWorkspaceCreate:async(y,b)=>{const S=e.newWorkspacePin;await e.handleWorkspaceCreate(y,b),S.match(/^\d{4,6}$/)&&(await rb(e,y,S),e.newWorkspacePin="")},onWorkspaceRemove:y=>e.handleWorkspaceRemove(y),onSetAddingWorkspace:y=>{e.addingWorkspace=y},onSetNewWorkspaceName:y=>{e.newWorkspaceName=y},onSetNewWorkspacePath:y=>{e.newWorkspacePath=y},onSetWorkspaceRemoveConfirm:y=>{e.workspaceRemoveConfirm=y},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(y,b)=>e.handleWorkspaceRename(y,b),whatsappDmPolicy:(()=>{const y=se(e),b=y==null?void 0:y.whatsappAccountId,S=b?d.find(x=>x.accountId===b):d[0];return(S==null?void 0:S.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var T;const y=se(e),b=y==null?void 0:y.whatsappAccountId,S=b?d.find(M=>M.accountId===b):d[0];if(!S)return;const $=S.dmPolicy!=null&&S.dmPolicy!=="disabled"?"disabled":"open",C=$==="open"?{dmPolicy:$,allowFrom:["*"]}:{dmPolicy:$};try{const M=await e.client.request("config.get"),R=M.config,B=(T=R==null?void 0:R.channels)==null?void 0:T.whatsapp,ge=((B==null?void 0:B.accounts)??{})[S.accountId]?{channels:{whatsapp:{accounts:{[S.accountId]:C}}}}:{channels:{whatsapp:C}};await e.client.request("config.patch",{raw:JSON.stringify(ge),baseHash:M.hash,note:`WhatsApp DM policy → ${$}`,skipRestart:!0}),await V(e,!1)}catch(M){console.error("DM toggle failed:",M)}},whatsappModel:(()=>{var T,M;const y=se(e);if(!y)return null;const b=y.agents.find(R=>R.id.endsWith("-public")||R.id==="public");if(!b)return null;const S=(T=e.configSnapshot)==null?void 0:T.config,x=(M=S==null?void 0:S.agents)==null?void 0:M.list;if(!Array.isArray(x))return null;const $=x.find(R=>R.id===b.id);if(!($!=null&&$.model))return null;const C=typeof $.model=="string"?$.model:$.model.primary;return(C==null?void 0:C.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async y=>{const b=se(e);if(!b)return;const S=b.agents.find(x=>x.id.endsWith("-public")||x.id==="public");if(S)try{const x=await e.client.request("config.get"),$=x.config,C=($==null?void 0:$.agents)??{},T=Array.isArray(C.list)?[...C.list]:[],M=T.findIndex(B=>B.id===S.id);if(y)M>=0?T[M]={...T[M],model:y}:T.push({id:S.id,model:y});else if(M>=0){const{model:B,...J}=T[M];Object.keys(J).length<=1?T.splice(M,1):T[M]=J}const R=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(R),baseHash:x.hash,note:`Public agent model → ${y||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Model change failed:",x)}},whatsappThinkingLevel:(()=>{var C,T,M;const y=se(e);if(!y)return null;const b=y.agents.find(R=>R.id.endsWith("-public")||R.id==="public");if(!b)return null;const S=(C=e.configSnapshot)==null?void 0:C.config,x=(T=S==null?void 0:S.agents)==null?void 0:T.list;if(!Array.isArray(x))return null;const $=x.find(R=>R.id===b.id);return((M=$==null?void 0:$.thinkingLevel)==null?void 0:M.trim())||null})(),onWhatsAppThinkingChange:async y=>{const b=se(e);if(!b)return;const S=b.agents.find(x=>x.id.endsWith("-public")||x.id==="public");if(S)try{const x=await e.client.request("config.get"),$=x.config,C=($==null?void 0:$.agents)??{},T=Array.isArray(C.list)?[...C.list]:[],M=T.findIndex(J=>J.id===S.id),R=y==="off"?void 0:y;if(R)M>=0?T[M]={...T[M],thinkingLevel:R}:T.push({id:S.id,thinkingLevel:R});else if(M>=0){const{thinkingLevel:J,...ge}=T[M];Object.keys(ge).length<=1?T.splice(M,1):T[M]=ge}const B=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(B),baseHash:x.hash,note:`Public agent thinking → ${R||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Thinking change failed:",x)}},whatsappGroupPolicy:(()=>{var M,R;const y=(M=e.configSnapshot)==null?void 0:M.config,b=(R=y==null?void 0:y.channels)==null?void 0:R.whatsapp,S=se(e),x=S==null?void 0:S.whatsappAccountId,$=(b==null?void 0:b.accounts)??{},C=x?$[x]:void 0;return(C==null?void 0:C.groupPolicy)??(b==null?void 0:b.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var R,B;const y=(R=e.configSnapshot)==null?void 0:R.config,b=(B=y==null?void 0:y.channels)==null?void 0:B.whatsapp,S=se(e),x=S==null?void 0:S.whatsappAccountId,$=(b==null?void 0:b.accounts)??{},C=x?$[x]:void 0,M=((C==null?void 0:C.groups)??(b==null?void 0:b.groups)??{})["*"];return(M==null?void 0:M.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var S;const y=se(e),b=y==null?void 0:y.whatsappAccountId;try{const x=await e.client.request("config.get"),$=x.config,C=((S=$==null?void 0:$.channels)==null?void 0:S.whatsapp)??{},T=C.accounts??{},M=b?T[b]:void 0,R=(M==null?void 0:M.groupPolicy)??C.groupPolicy??"allowlist",B=R==="disabled"||R==="allowlist",J=B?"open":"disabled",ge=B?{"*":{}}:void 0,Oe={groupPolicy:J};ge&&(Oe.groups=ge);const X=M?{channels:{whatsapp:{accounts:{[b]:Oe}}}}:{channels:{whatsapp:Oe}};await e.client.request("config.patch",{raw:JSON.stringify(X),baseHash:x.hash,note:`WhatsApp groups → ${J}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Group toggle failed:",x)}},onWhatsAppGroupMentionChange:async y=>{var x;const b=se(e),S=b==null?void 0:b.whatsappAccountId;try{const $=await e.client.request("config.get"),C=$.config,M=(((x=C==null?void 0:C.channels)==null?void 0:x.whatsapp)??{}).accounts??{},R=S?M[S]:void 0,B={"*":{requireMention:y}},J=R?{channels:{whatsapp:{accounts:{[S]:{groups:B}}}}}:{channels:{whatsapp:{groups:B}}};await e.client.request("config.patch",{raw:JSON.stringify(J),baseHash:$.hash,note:`WhatsApp group mention → ${y?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Group mention change failed:",$)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:h.configured,imessageRunning:h.running,imessageConnected:h.connected,imessageLastError:h.lastError,imessageSelfChatMode:h.selfChatMode,imessageCliPath:h.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:v,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const y=await e.client.request("config.get"),b=y.config,S=(b==null?void 0:b.bindings)??[],x=se(e),$=x==null?void 0:x.agents.find(B=>B.id.endsWith("-admin")||B.id==="admin"),C=($==null?void 0:$.id)??"admin",T=S.filter(B=>{var J;return((J=B.match)==null?void 0:J.channel)!=="imessage"}),M=[{agentId:C,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],R=[...T,...M];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:R}),baseHash:y.hash,note:"Enable iMessage (self-chat) for "+((x==null?void 0:x.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),_e(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await V(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const y=await e.client.request("config.get"),b=y.config,x=((b==null?void 0:b.bindings)??[]).filter($=>{var C;return((C=$.match)==null?void 0:C.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:x}),baseHash:y.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),_e(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const y=await e.client.request("config.get"),b=y.config,S=(b==null?void 0:b.bindings)??[],x=se(e),$=x==null?void 0:x.agents.find(R=>R.id.endsWith("-admin")||R.id==="admin"),C=($==null?void 0:$.id)??"admin",T=S.filter(R=>{var B;return((B=R.match)==null?void 0:B.channel)!=="imessage"}),M=[{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:[...T,...M]}),baseHash:y.hash,note:"Reassign iMessage to "+((x==null?void 0:x.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),_e(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:y=>{e.infoModalOpen=y},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(y,b)=>{e.apiKeySavingProvider=y,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Ka(e.client,y,b);const S=`${y} key saved`;e.apiKeySuccess=S,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}y==="anthropic"&&await e.handleAuthStatusCheck(),setTimeout(()=>{e.apiKeySuccess===S&&(e.apiKeySuccess=null)},2500)}catch(S){e.apiKeyError=S instanceof Error?S.message:"Failed to save key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyRemove:async y=>{e.apiKeySavingProvider=y,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Wv(e.client,y);const b=`${y} key removed`;e.apiKeySuccess=b,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===b&&(e.apiKeySuccess=null)},2500)}catch(b){e.apiKeyError=b instanceof Error?b.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:y=>{e.authApiKeyInput=y},onAuthApiKeySubmit:async()=>{const y=e.authApiKeyInput.trim();if(y){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await Ka(e.client,"anthropic",y),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(b){e.authApiKeyError=b instanceof Error?b.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var b;const y=e.selectedWorkspace??((b=e.workspaces[0])==null?void 0:b.name);return y?e.accessState.accounts.some(S=>S.id===y):!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:(y,b)=>{var x;const S=e.selectedWorkspace??((x=e.workspaces[0])==null?void 0:x.name);S&&e.handleAccountPinSave(S,y,b)},publicChatEnabled:(()=>{var S;const y=(S=e.configSnapshot)==null?void 0:S.config,b=y==null?void 0:y.publicChat;return(b==null?void 0:b.enabled)===!0})(),publicChatAuthMode:(()=>{var x;const y=(x=e.configSnapshot)==null?void 0:x.config,b=y==null?void 0:y.publicChat,S=b==null?void 0:b.auth;return S==="verified"||S==="choice"?S:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var y;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const b=await e.client.request("config.get"),S=b.config,x=((y=S==null?void 0:S.publicChat)==null?void 0:y.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!x}}),baseHash:b.hash,note:`Public chat → ${x?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Public chat toggle failed:",b)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async y=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const b=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:y}}),baseHash:b.hash,note:`Public chat auth → ${y}`}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Public chat auth mode change failed:",b)}finally{e.publicChatToggleBusy=!1}}},wsProps:ub(e)})}if(e.filesPage){const l=hb(e);return Wh({connected:e.connected,wsProps:Yt(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:()=>yn(e,l),onReindex:()=>Zp(e,l),onSelectFile:d=>qp(e,d,l),onToggleSelectFile:d=>Vp(e,d,l),onToggleDir:d=>Jp(e,d),onUpload:(d,h)=>Yp(e,d,h,l),onDownload:d=>tc(e,d,l),onBulkDownload:()=>Gp(e,l),onDelete:d=>Xp(e,d,l),onMove:(d,h)=>nc(e,d,h,l),onMoveToDir:(d,h)=>Qp(e,d,h,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:d=>{const h=e.filesSearchAgentId??l;eh(e,d,h)},onSearchAgentChange:d=>{e.filesSearchAgentId=d},onSearchClear:()=>{th(e)},onSearchQueryChange:d=>{e.filesSearchQuery=d}})}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 h=l.target.getBoundingClientRect(),y=ln().translateCoordinates(l.clientX-h.left,l.clientY-h.top);vs(e,"mousePressed",y.x,y.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const h=l.target.getBoundingClientRect(),y=ln().translateCoordinates(l.clientX-h.left,l.clientY-h.top);vs(e,"mouseReleased",y.x,y.y)},onCanvasMouseMove:l=>{const d=ln();if(d.shouldThrottleMouseMove())return;const v=l.target.getBoundingClientRect(),y=d.translateCoordinates(l.clientX-v.left,l.clientY-v.top);vs(e,"mouseMoved",y.x,y.y)},onCanvasKeyDown:l=>{let d=0;l.altKey&&(d|=1),l.ctrlKey&&(d|=2),l.metaKey&&(d|=4),l.shiftKey&&(d|=8),bs(e,"keyDown",l.key,{code:l.code,modifiers:d||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),d=pb(e);return sf({connected:e.connected,wsProps:Yt(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>_i(e,l),onAdd:h=>{fu(e,h,l,d).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:h=>gu(e,h,l,d),onNewPhoneChange:h=>e.handleAdminsNewPhoneChange(h)})}if(e.customersPage){const l=fb(e);return lf({connected:e.connected,wsProps:Yt(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:d=>e.customersSearchQuery=d,onSearchSubmit:()=>dt(e,l),onAdd:(d,h)=>mu(e,d,h,l),onDelete:d=>yu(e,d,l),onSetField:(d,h,v)=>vu(e,d,h,v,l),onDeleteField:(d,h)=>bu(e,d,h,l),onToggleExpand:d=>{e.customersEditingId=e.customersEditingId===d?null:d},onShowAddForm:()=>e.customersShowAddForm=!0,onCancelAddForm:()=>{e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName=""},onNewRecordPhoneChange:d=>e.handleCustomersNewPhoneChange(d),onNewRecordNameChange:d=>e.handleCustomersNewNameChange(d),onRefresh:()=>dt(e,l)})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",d=Ya(e),h=e.chatAvatarUrl??d??null,v=(()=>{var S;const y=(S=e.configSnapshot)==null?void 0:S.config,b=y==null?void 0:y.publicChat;return(b==null?void 0:b.enabled)===!0})();return jy({connected:e.connected,wsProps:Yt(e),publicChatEnabled:v,publicChatAccountId:e.selectedWorkspace??void 0,sessionKey:e.sessionKey,onSessionKeyChange:y=>{e.sessionKey=y,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:y,lastActiveSessionKey:y}),e.loadAssistantIdentity(),Te(e),Ls(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:y=>{Ln(e,e.sessionKey,{model:y}).then(()=>{Te(e)})},onThinkingLevelChange:y=>{Ln(e,e.sessionKey,{thinkingLevel:y==="off"?null:y}).then(()=>{Te(e)})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:y=>{e.chatMessage=y,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:y=>{Ln(e,e.sessionKey,{verboseLevel:y==="off"?null:y}).then(()=>{Te(e)})},onFillerChange:y=>{Ln(e,e.sessionKey,{fillerEnabled:y}).then(()=>{Te(e)})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:h,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([Te(e),Ls(e)])),onToggleFocusMode:()=>{},onChatScroll:y=>e.handleChatScroll(y),nearBottom:e.chatUserNearBottom,onDraftChange:y=>e.chatMessage=y,attachments:e.chatAttachments,onAttachmentsChange:y=>e.chatAttachments=y,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:y=>e.removeQueuedMessage(y),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:y=>e.handleOpenSidebar(y),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:y=>e.handleSplitRatioChange(y),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?wv({connected:e.connected,wsProps:Yt(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&lt(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?rn(e,{reset:!0}):Et(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(o=(r=e.channelsSnapshot)==null?void 0:r.channelMeta)!=null&&o.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((a=e.channelsSnapshot)==null?void 0:a.channelOrder)??[],channelLabels:((c=e.channelsSnapshot)==null?void 0:c.channelLabels)??{},channelMeta:((u=e.channelsSnapshot)==null?void 0:u.channelMeta)??[],agentIds:(()=>{var d;const l=se(e);return((d=l==null?void 0:l.agents)==null?void 0:d.map(h=>h.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,d)=>Yd(e,l,d),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:()=>lt(e,{clearMessages:!0}),onToggle:(l,d)=>ql(e,l,d),onEdit:(l,d)=>Hl(e,l,d),onSaveKey:l=>Vl(e,l),onInstall:(l,d,h)=>Gl(e,l,d,h)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?rn(e,{reset:!0}):Et(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,d)=>{const h=e;h.sessionLogsTypeFilters={...h.sessionLogsTypeFilters,[l]:d}},onAgentToggle:(l,d)=>{const h=e;h.sessionLogsAgentFilters={...h.sessionLogsAgentFilters,[l]:d}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onRefresh:()=>{rn(e,{reset:!0})},onExport:(l,d)=>e.exportSessionLogs(l,d),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,d)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:d}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>Et(e,{reset:!0}),onExport:(l,d)=>e.exportSessionLogs(l,d),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),p``)}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 p`
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">
@@ -3185,9 +3185,9 @@ ${a.text}`:l.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3185
3185
  These files were written to shared or public folders by the agent.
3186
3186
  Review to ensure no sensitive data was misplaced.
3187
3187
  </p>
3188
- ${e.length===0?h`<p class="audit-modal-empty">No unreviewed writes.</p>`:h`
3188
+ ${e.length===0?p`<p class="audit-modal-empty">No unreviewed writes.</p>`:p`
3189
3189
  <div class="audit-modal-list">
3190
- ${e.map(s=>h`
3190
+ ${e.map(s=>p`
3191
3191
  <div class="audit-modal-entry">
3192
3192
  <div class="audit-modal-entry-path">
3193
3193
  <span class="audit-modal-folder audit-modal-folder--${Xa(s.path)}">${Xa(s.path)}</span>
@@ -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},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=`{
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=qe();if(_h(t.accentColor),window.scrollTo(0,0),sh(e),e.publicChat){const n=al();document.title=`Chat with ${n.name}`,Ee(e);return}if(e.setup){document.title=`${t.name} Setup`,Ee(e);return}if(e.filesPage){document.title=`${t.name} Files`,oh(e),Ee(e);return}if(e.browserPage){document.title=`${t.name} Browser`,Ee(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,Ee(e);return}if(e.customersPage){document.title=`${t.name} Customers`,Ee(e);return}if(e.chatPage){document.title=`${t.name} Chat`,Ee(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,Ee(e);return}gh(e,!0),ph(e),hh(e),window.addEventListener("popstate",e.popStateHandler),lh(e),Ee(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;fn(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 V(e,!0)}async function Pb(e,t){await Al(e,t),await V(e,!0)}async function Lb(e,t){await xl(e,t),await V(e,!0)}async function Ib(e,t){await $l(e,t)}async function Rb(e,t){await El(e,t)}async function Nb(e){await qd(e),await _e(e),await V(e,!0)}async function Db(e){await _e(e),await V(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 V(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 c=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:c,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 V(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,g=(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=al();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 f=class extends $t{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=`{
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={...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
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(){Ee(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){ze(this,e)}setTab(e){ch(this,e)}setTheme(e,t){uh(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){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 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 ie(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>Ro);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){ie(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 Jl(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();yn(this,t),fr(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();ie(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())}ie(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"?ie(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Zl);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):ie(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"&&ie(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;ie(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 ie(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 ie(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>jn);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await ie(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 ie(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 ie(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 p`${wb(this)}${this.auditModalOpen?Sb(this.auditEntries,()=>this.clearAudit(),()=>{this.auditModalOpen=!1}):k}`}};g([m()],f.prototype,"settings",2);g([m()],f.prototype,"password",2);g([m()],f.prototype,"tab",2);g([m()],f.prototype,"onboarding",2);g([m()],f.prototype,"setup",2);g([m()],f.prototype,"filesPage",2);g([m()],f.prototype,"browserPage",2);g([m()],f.prototype,"adminsPage",2);g([m()],f.prototype,"customersPage",2);g([m()],f.prototype,"chatPage",2);g([m()],f.prototype,"advancedPage",2);g([m()],f.prototype,"advancedTab",2);g([m()],f.prototype,"publicChat",2);g([m()],f.prototype,"publicChatConfig",2);g([m()],f.prototype,"publicChatSessionKey",2);g([m()],f.prototype,"publicChatAuthenticated",2);g([m()],f.prototype,"publicChatAuthStep",2);g([m()],f.prototype,"connected",2);g([m()],f.prototype,"accessState",2);g([m()],f.prototype,"theme",2);g([m()],f.prototype,"themeResolved",2);g([m()],f.prototype,"hello",2);g([m()],f.prototype,"lastError",2);g([m()],f.prototype,"eventLog",2);g([m()],f.prototype,"assistantName",2);g([m()],f.prototype,"assistantAvatar",2);g([m()],f.prototype,"assistantAgentId",2);g([m()],f.prototype,"sessionKey",2);g([m()],f.prototype,"chatLoading",2);g([m()],f.prototype,"chatSending",2);g([m()],f.prototype,"chatMessage",2);g([m()],f.prototype,"chatMessages",2);g([m()],f.prototype,"chatToolMessages",2);g([m()],f.prototype,"chatStream",2);g([m()],f.prototype,"chatInterimText",2);g([m()],f.prototype,"chatSuggestion",2);g([m()],f.prototype,"chatStreamStartedAt",2);g([m()],f.prototype,"chatRunId",2);g([m()],f.prototype,"compactionStatus",2);g([m()],f.prototype,"chatAvatarUrl",2);g([m()],f.prototype,"chatThinkingLevel",2);g([m()],f.prototype,"chatModelProvider",2);g([m()],f.prototype,"chatModel",2);g([m()],f.prototype,"chatModelCatalog",2);g([m()],f.prototype,"chatVerboseLevel",2);g([m()],f.prototype,"chatFillerEnabled",2);g([m()],f.prototype,"chatQueue",2);g([m()],f.prototype,"chatAttachments",2);g([m()],f.prototype,"sidebarOpen",2);g([m()],f.prototype,"sidebarContent",2);g([m()],f.prototype,"sidebarError",2);g([m()],f.prototype,"splitRatio",2);g([m()],f.prototype,"nodesLoading",2);g([m()],f.prototype,"nodes",2);g([m()],f.prototype,"devicesLoading",2);g([m()],f.prototype,"devicesError",2);g([m()],f.prototype,"devicesList",2);g([m()],f.prototype,"execApprovalsLoading",2);g([m()],f.prototype,"execApprovalsSaving",2);g([m()],f.prototype,"execApprovalsDirty",2);g([m()],f.prototype,"execApprovalsSnapshot",2);g([m()],f.prototype,"execApprovalsForm",2);g([m()],f.prototype,"execApprovalsSelectedAgent",2);g([m()],f.prototype,"execApprovalsTarget",2);g([m()],f.prototype,"execApprovalsTargetNodeId",2);g([m()],f.prototype,"execApprovalQueue",2);g([m()],f.prototype,"execApprovalBusy",2);g([m()],f.prototype,"execApprovalError",2);g([m()],f.prototype,"configLoading",2);g([m()],f.prototype,"configRaw",2);g([m()],f.prototype,"configRawOriginal",2);g([m()],f.prototype,"configValid",2);g([m()],f.prototype,"configIssues",2);g([m()],f.prototype,"configSaving",2);g([m()],f.prototype,"configApplying",2);g([m()],f.prototype,"updateRunning",2);g([m()],f.prototype,"applySessionKey",2);g([m()],f.prototype,"configSnapshot",2);g([m()],f.prototype,"configSchema",2);g([m()],f.prototype,"configSchemaVersion",2);g([m()],f.prototype,"configSchemaLoading",2);g([m()],f.prototype,"configUiHints",2);g([m()],f.prototype,"configForm",2);g([m()],f.prototype,"configFormOriginal",2);g([m()],f.prototype,"configFormDirty",2);g([m()],f.prototype,"configFormMode",2);g([m()],f.prototype,"configSearchQuery",2);g([m()],f.prototype,"configActiveSection",2);g([m()],f.prototype,"configActiveSubsection",2);g([m()],f.prototype,"channelsLoading",2);g([m()],f.prototype,"channelsSnapshot",2);g([m()],f.prototype,"channelsError",2);g([m()],f.prototype,"channelsLastSuccess",2);g([m()],f.prototype,"whatsappLoginMessage",2);g([m()],f.prototype,"whatsappLoginQrDataUrl",2);g([m()],f.prototype,"whatsappLoginConnected",2);g([m()],f.prototype,"whatsappBusy",2);g([m()],f.prototype,"whatsappActiveQrAccountId",2);g([m()],f.prototype,"whatsappPairedPhone",2);g([m()],f.prototype,"addingWhatsAppAccount",2);g([m()],f.prototype,"newWhatsAppAccountName",2);g([m()],f.prototype,"whatsappAccountError",2);g([m()],f.prototype,"whatsappAccountSaving",2);g([m()],f.prototype,"whatsappSettingsOpen",2);g([m()],f.prototype,"publicChatToggleBusy",2);g([m()],f.prototype,"licenseKey",2);g([m()],f.prototype,"licenseBusy",2);g([m()],f.prototype,"licenseValid",2);g([m()],f.prototype,"licenseMessage",2);g([m()],f.prototype,"licenseTier",2);g([m()],f.prototype,"licenseDeviceId",2);g([m()],f.prototype,"licenseStoredKey",2);g([m()],f.prototype,"licenseRemoveConfirm",2);g([m()],f.prototype,"authConnected",2);g([m()],f.prototype,"authBusy",2);g([m()],f.prototype,"authMessage",2);g([m()],f.prototype,"authUrl",2);g([m()],f.prototype,"authCodeInput",2);g([m()],f.prototype,"authExpiresIn",2);g([m()],f.prototype,"setupStep",2);g([m()],f.prototype,"gatewayHealthy",2);g([m()],f.prototype,"gatewayHealthLoading",2);g([m()],f.prototype,"gatewayHealthMessage",2);g([m()],f.prototype,"gatewayRestartBusy",2);g([m()],f.prototype,"updateAvailable",2);g([m()],f.prototype,"currentVersion",2);g([m()],f.prototype,"latestVersion",2);g([m()],f.prototype,"updateChecking",2);g([m()],f.prototype,"updateMessage",2);g([m()],f.prototype,"updateProgressSteps",2);g([m()],f.prototype,"updateLastResult",2);g([m()],f.prototype,"uninstallConfirm",2);g([m()],f.prototype,"uninstallBusy",2);g([m()],f.prototype,"uninstallDone",2);g([m()],f.prototype,"uninstallError",2);g([m()],f.prototype,"uninstallConfirmText",2);g([m()],f.prototype,"nostrProfileFormState",2);g([m()],f.prototype,"nostrProfileAccountId",2);g([m()],f.prototype,"presenceLoading",2);g([m()],f.prototype,"presenceEntries",2);g([m()],f.prototype,"presenceError",2);g([m()],f.prototype,"presenceStatus",2);g([m()],f.prototype,"agentsLoading",2);g([m()],f.prototype,"agentsList",2);g([m()],f.prototype,"agentsError",2);g([m()],f.prototype,"sessionsLoading",2);g([m()],f.prototype,"sessionsResult",2);g([m()],f.prototype,"sessionsError",2);g([m()],f.prototype,"cronLoading",2);g([m()],f.prototype,"cronJobs",2);g([m()],f.prototype,"cronStatus",2);g([m()],f.prototype,"cronError",2);g([m()],f.prototype,"cronForm",2);g([m()],f.prototype,"cronRunsJobId",2);g([m()],f.prototype,"cronRuns",2);g([m()],f.prototype,"cronBusy",2);g([m()],f.prototype,"cronNewEventModal",2);g([m()],f.prototype,"cronDetailJobId",2);g([m()],f.prototype,"browserScreencastActive",2);g([m()],f.prototype,"browserScreencastFrame",2);g([m()],f.prototype,"browserScreencastMetadata",2);g([m()],f.prototype,"browserHandoffPending",2);g([m()],f.prototype,"browserHandoffReason",2);g([m()],f.prototype,"browserHandoffId",2);g([m()],f.prototype,"browserInputMode",2);g([m()],f.prototype,"browserFullscreen",2);g([m()],f.prototype,"browserLoading",2);g([m()],f.prototype,"browserError",2);g([m()],f.prototype,"filesLoading",2);g([m()],f.prototype,"filesTree",2);g([m()],f.prototype,"filesRoot",2);g([m()],f.prototype,"filesError",2);g([m()],f.prototype,"filesSelectedPath",2);g([m()],f.prototype,"filesSelectedPaths",2);g([m()],f.prototype,"filesPreviewContent",2);g([m()],f.prototype,"filesPreviewLoading",2);g([m()],f.prototype,"filesPreviewBinary",2);g([m()],f.prototype,"filesPreviewSize",2);g([m()],f.prototype,"filesExpandedDirs",2);g([m()],f.prototype,"filesMessage",2);g([m()],f.prototype,"filesUploadBusy",2);g([m()],f.prototype,"filesReindexBusy",2);g([m()],f.prototype,"filesMemoryStatus",2);g([m()],f.prototype,"embeddingDownloading",2);g([m()],f.prototype,"filesSearchQuery",2);g([m()],f.prototype,"filesSearchResults",2);g([m()],f.prototype,"filesSearchLoading",2);g([m()],f.prototype,"filesSearchAgentId",2);g([m()],f.prototype,"auditEntries",2);g([m()],f.prototype,"auditLoading",2);g([m()],f.prototype,"auditModalOpen",2);g([m()],f.prototype,"skillsLoading",2);g([m()],f.prototype,"skillsReport",2);g([m()],f.prototype,"skillsError",2);g([m()],f.prototype,"skillsFilter",2);g([m()],f.prototype,"skillEdits",2);g([m()],f.prototype,"skillsBusyKey",2);g([m()],f.prototype,"skillMessages",2);g([m()],f.prototype,"adminsLoading",2);g([m()],f.prototype,"adminPhones",2);g([m()],f.prototype,"adminsError",2);g([m()],f.prototype,"adminsSaving",2);g([m()],f.prototype,"adminsNewPhone",2);g([m()],f.prototype,"customersLoading",2);g([m()],f.prototype,"customersSaving",2);g([m()],f.prototype,"customersRecords",2);g([m()],f.prototype,"customersError",2);g([m()],f.prototype,"customersSearchQuery",2);g([m()],f.prototype,"customersEditingId",2);g([m()],f.prototype,"customersShowAddForm",2);g([m()],f.prototype,"customersNewPhone",2);g([m()],f.prototype,"customersNewName",2);g([m()],f.prototype,"imessageEnableConfirm",2);g([m()],f.prototype,"imessageEnabling",2);g([m()],f.prototype,"infoModalOpen",2);g([m()],f.prototype,"workspaces",2);g([m()],f.prototype,"workspacesLoading",2);g([m()],f.prototype,"workspacesError",2);g([m()],f.prototype,"selectedWorkspace",2);g([m()],f.prototype,"addingWorkspace",2);g([m()],f.prototype,"newWorkspaceName",2);g([m()],f.prototype,"newWorkspacePath",2);g([m()],f.prototype,"newWorkspacePin",2);g([m()],f.prototype,"accountPinModalOpen",2);g([m()],f.prototype,"accountPinBusy",2);g([m()],f.prototype,"accountPinError",2);g([m()],f.prototype,"accountPinSuccess",2);g([m()],f.prototype,"apiKeyProviders",2);g([m()],f.prototype,"apiKeyModalOpen",2);g([m()],f.prototype,"apiKeyBusy",2);g([m()],f.prototype,"apiKeyError",2);g([m()],f.prototype,"apiKeySuccess",2);g([m()],f.prototype,"apiKeySavingProvider",2);g([m()],f.prototype,"authApiKeyMode",2);g([m()],f.prototype,"authApiKeyInput",2);g([m()],f.prototype,"authApiKeyBusy",2);g([m()],f.prototype,"authApiKeyError",2);g([m()],f.prototype,"pinChanging",2);g([m()],f.prototype,"pinChangeBusy",2);g([m()],f.prototype,"pinChangeError",2);g([m()],f.prototype,"loginChangePinMode",2);g([m()],f.prototype,"changePinBusy",2);g([m()],f.prototype,"changePinError",2);g([m()],f.prototype,"changePinSuccess",2);g([m()],f.prototype,"workspaceSaving",2);g([m()],f.prototype,"workspaceRemoveConfirm",2);g([m()],f.prototype,"renamingWorkspace",2);g([m()],f.prototype,"renameWorkspaceName",2);g([m()],f.prototype,"debugLoading",2);g([m()],f.prototype,"debugStatus",2);g([m()],f.prototype,"debugHealth",2);g([m()],f.prototype,"debugModels",2);g([m()],f.prototype,"debugHeartbeat",2);g([m()],f.prototype,"debugCallMethod",2);g([m()],f.prototype,"debugCallParams",2);g([m()],f.prototype,"debugCallResult",2);g([m()],f.prototype,"debugCallError",2);g([m()],f.prototype,"logsLoading",2);g([m()],f.prototype,"logsError",2);g([m()],f.prototype,"logsFile",2);g([m()],f.prototype,"logsEntries",2);g([m()],f.prototype,"logsFilterText",2);g([m()],f.prototype,"logsLevelFilters",2);g([m()],f.prototype,"logsAutoFollow",2);g([m()],f.prototype,"logsTruncated",2);g([m()],f.prototype,"logsCursor",2);g([m()],f.prototype,"logsLastFetchAt",2);g([m()],f.prototype,"logsLimit",2);g([m()],f.prototype,"logsMaxBytes",2);g([m()],f.prototype,"logsAtBottom",2);g([m()],f.prototype,"logsSubTab",2);g([m()],f.prototype,"sessionLogsLoading",2);g([m()],f.prototype,"sessionLogsError",2);g([m()],f.prototype,"sessionLogsEntries",2);g([m()],f.prototype,"sessionLogsFilterText",2);g([m()],f.prototype,"sessionLogsTypeFilters",2);g([m()],f.prototype,"sessionLogsAgentFilters",2);g([m()],f.prototype,"sessionLogsAgents",2);g([m()],f.prototype,"sessionLogsAutoFollow",2);g([m()],f.prototype,"sessionLogsCursors",2);g([m()],f.prototype,"sessionLogsLastFetchAt",2);g([m()],f.prototype,"sessionLogsAtBottom",2);g([m()],f.prototype,"chatUserNearBottom",2);f=g([ol("taskmaster-app")],f);
3212
+ //# sourceMappingURL=index-lEyZ7hzB.js.map